什么是相机模型?又如何实现单目测距?详细公式推导!

作者 | Misaka  编辑 | 汽车人

原文链接:https://zhuanlan.zhihu.com/p/626913010

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心技术交流群

本文只做学术分享,如有侵权,联系删文

1:相机模型

坐标系

相机模型中存在4种坐标系,像素坐标系,图像坐标系,相机坐标系,世界坐标系;相机坐标系一般以相机光心作为原点 ,光心在成像平面的投影即图像坐标系的中心,也就是图像坐标系的原点 o ,连接图像坐标系原点和光心形成光轴 。

87ac2a2f6d981c32db4a2138ea1c745d.png
图片出处:https://blog.csdn.net/qq_32335687/article/details/100130861

世界坐标系转换为相机坐标系:通过坐标系旋转平移实现,世界坐标系分别绕X/Y/Z三轴旋转,再平移。

以绕Z轴旋转为例:

e3dc9ab878d02b688e324658901271da.png
图片出处:https://blog.csdn.net/LINEAR1024/article/details/104956774
1affba1ca1e7ebd3435838edc1dc7504.png

可得绕 Z 轴旋转 :

6e2342bba3acfa8fa32d05f8d7b6ed9f.png
图片出处:https://blog.csdn.net/weixin_38842821/article/details/125933604

同理绕 Y 轴旋转 :

d45c9fd05b802c3da52dc795ab29778e.png
图片出处:https://blog.csdn.net/weixin_38842821/article/details/125933604

同理绕 X 轴旋转 :

8fbb0c9338f2c8528c752297d27c1f51.png
图片出处:https://blog.csdn.net/weixin_38842821/article/details/125933604

旋转矩阵:R=

566cf876b2682c606069decf1c22336f.png 51c687dd72b0f8459a7c4dfeda2e5c97.png
图片出处:https://blog.csdn.net/weixin_38842821/article/details/125933604

相机坐标系转换为图像坐标系:相似三角形原理。

1a2820b568296090da2c92a34d9c9024.png
图片出处:https://blog.csdn.net/weixin_38842821/article/details/125933604

其中:f表示相机焦距

6d9b52578baf5e2406d8b2f471c2952a.png
图片出处:https://blog.csdn.net/weixin_38842821/article/details/125933604

图像坐标系转换为像素坐标系:图像坐标系单位mm,坐标系原点在光轴和成像平面交点,但像素坐标系是度量单位pixel,原点在左上角顶点。

bb7318707c658759f230b51458b57a3f.png
图片出处:https://blog.csdn.net/weixin_38842821/article/details/125933604

式中:和 分别表示一个pixel分别在 x 和 y 轴方向代表多少mm。

综上所述,像素坐标系和世界坐标系转换总公式:

1910145cbfd168179641c8e3c78e2247.png
图片出处:https://blog.csdn.net/qq_32335687/article/details/100130861
d40169487cbae33e97d30c7f554fce7b.png

相机内参影响从相机坐标系到像素坐标系的转换,相机外参影响世界坐标系到相机坐标系的转换。从上述公式可知,在不选定基准平面的前提下,单目相机无法将像素坐标系二维点转换到世界坐标系三维点,因为 值不知道,  值是从三维点逆推获得的,单如果假定点在基准平面上,可以从二维点获得三维点。

1:单目测距

本质上单目测距利用的是相似三角形,查阅资料得到以下两种常见的方法,以下两种方法都有设定基准平面,在相机标定时,棋盘格是放置在水平面,如下图所示:

6e04e989d74b395f21f8725f399453c3.png
图片来源:《Vision-based Vehicle Speed Estimation: ASurvey》

方法1

714453018eca032b4f231159a01ae542.png
图片来源:《Robust Range Estimation with a Monocular Camera forVision-Based Forward Collision Warning System》
17edd726861bbc3709c3e3994b4dab29.png ec98de491d38a58cf5d85f9258ad31ee.png

方法2

e50fd301b9e66c899dad6db8d9852dde.png
图片来源:https://avoid.overfit.cn/post/2b0cf726ab524a23bea492f08ae9b3d6
e9e1712d9fba87382e5a080e61221afe.png e446c623cf783dea59db76a6cd2ddbc9.png

3:思考

在工作中遇到一个问题,在一张图像中,假设检测器只能检测到人的脑袋,如何根据脑袋位置大致估算出脚在图像中的位置,除了简单的按照人头和人身体的先验比例,探讨用相机模型的方法是否可以实现。开始的想法是先将人头检测框上边线中点坐标还原到世界坐标系,选地面作为基准坐标系,粗略的认为在世界坐标系中,头和脚的和 是一致的,脚在地面,=0这样就可以通过公式将脚还原到图像坐标系,但通过前面2节的分析发现,就算指定地面为基准平面,相机的内参和外参,相机架设高度,架设角度全部知道,也无法通过人头位置还原出人脚位置,因为像素坐标系人头顶的位置无法还原到世界坐标系,除非给人设定一个先验身高。

如果给定一个先验身高,人头顶点的 就可以计算出来,三个未知数,三个方程,就可以解出三维点坐标。

或者按照单目测距相似三角形方法,如上图所示,abc平面为图像坐标系平面,问题转化为求ac,b为光点在成像平面投影,相机内参已知是可以确定的,a点可以确定,因此:

8a53b4ea4ae45aa43969cae9058eca65.png
简易建模
16a9678283300beb0b22d437eaf3299e.png

如果不使用相机模型:根据人头顶点像素点坐标(x,y)和人体高度的先验数据,拟合出 y 和人体高度的关系曲线,大家有好的方法欢迎留言讨论!!

① 全网独家视频课程

BEV感知、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、协同感知、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码学习)

44d57edb438b72880fc32a82d302c142.png 视频官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

475aa83019ad6321632eb82ad11b0717.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

16b0ab7d42b5639930410f82394e5d92.jpeg

④【自动驾驶之心】平台矩阵,欢迎联系我们!

49f6cd36596ef070f0cc2ee4fae5a485.jpeg

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Yolo相机测距是一种利用深度学习算法进行距离估计的方法。Yolo(You Only Look Once)是一种目标检测算法,通过识别图像中的物体来实现距离测量。 Yolo相机测距的基本原理是利用相机获取场景图像,然后通过深度学习算法对图像中的目标进行识别。由于每个目标的尺寸在图像中是已知的,我们可以通过目标在图像中的大小估计目标与相机之间的距离。 实际操作中,我们需要通过预先标定相机的内外参数,来建立相机的坐标系。然后,通过获取目标在图像中的像素尺寸,结合相机的参数,可以计算出目标与相机之间的距离。 Yolo相机测距方法有一定的优势。首先,它只需要使用一台相机就可以实现距离测量,无需使用多个相机或其他传感器。其次,利用深度学习算法,可以实现实时的目标检测和距离测量。此外,Yolo算法具有较好的准确性和鲁棒性,能够适应不同场景的测距需求。 然而,Yolo相机测距方法也存在一些局限性。首先,测距误差会受到图像分辨率、目标姿态以及相机标定精度等因素的影响。其次,对于特别远距离或特别小目标的测距,可能会比较困难。此外,由于目标尺寸在图像中的变化可能较大,因此在不同距离下的目标识别和距离测量会存在一定的挑战。 总的来说,Yolo相机测距方法在一般场景下具有较好的表现,可以实现实时的距离测量。但在特殊场景和特殊要求下,可能需要采用其他更精确的测距方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值