作者 | Misaka 编辑 | 汽车人
原文链接:https://zhuanlan.zhihu.com/p/626913010
点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
点击进入→自动驾驶之心技术交流群
本文只做学术分享,如有侵权,联系删文
1:相机模型
坐标系
相机模型中存在4种坐标系,像素坐标系,图像坐标系,相机坐标系,世界坐标系;相机坐标系一般以相机光心作为原点 ,光心在成像平面的投影即图像坐标系的中心,也就是图像坐标系的原点 o ,连接图像坐标系原点和光心形成光轴 。
![87ac2a2f6d981c32db4a2138ea1c745d.png](https://i-blog.csdnimg.cn/blog_migrate/e84942ba445608ad3047d8cf6c97ea1d.png)
世界坐标系转换为相机坐标系:通过坐标系旋转平移实现,世界坐标系分别绕X/Y/Z三轴旋转,再平移。
以绕Z轴旋转为例:
![e3dc9ab878d02b688e324658901271da.png](https://i-blog.csdnimg.cn/blog_migrate/4a5085652072188aecafa578f4f7cc2d.png)
![1affba1ca1e7ebd3435838edc1dc7504.png](https://i-blog.csdnimg.cn/blog_migrate/329791d3842ab9db20f2a863ca978fd7.png)
可得绕 Z 轴旋转 :
![6e2342bba3acfa8fa32d05f8d7b6ed9f.png](https://i-blog.csdnimg.cn/blog_migrate/20f8ecae57e9d749b81ba4f5ec9efe8a.png)
同理绕 Y 轴旋转 :
![d45c9fd05b802c3da52dc795ab29778e.png](https://i-blog.csdnimg.cn/blog_migrate/0cffd6b2f58004290b1fa9b57b913098.png)
同理绕 X 轴旋转 :
![8fbb0c9338f2c8528c752297d27c1f51.png](https://i-blog.csdnimg.cn/blog_migrate/6b53f7b4fdea885e629f9884f2cda5a0.png)
旋转矩阵:R=
![566cf876b2682c606069decf1c22336f.png](https://i-blog.csdnimg.cn/blog_migrate/865408fc8f7c25948a5cfce1e519d0c1.png)
![51c687dd72b0f8459a7c4dfeda2e5c97.png](https://i-blog.csdnimg.cn/blog_migrate/033c4b9e495bd01833442e308aeb7145.png)
相机坐标系转换为图像坐标系:相似三角形原理。
![1a2820b568296090da2c92a34d9c9024.png](https://i-blog.csdnimg.cn/blog_migrate/e253f896dd8bc2474066b7ef364dda1a.png)
其中:f表示相机焦距
![6d9b52578baf5e2406d8b2f471c2952a.png](https://i-blog.csdnimg.cn/blog_migrate/b7385606f72aa2c364bd404d8d4326fe.png)
图像坐标系转换为像素坐标系:图像坐标系单位mm,坐标系原点在光轴和成像平面交点,但像素坐标系是度量单位pixel,原点在左上角顶点。
![bb7318707c658759f230b51458b57a3f.png](https://i-blog.csdnimg.cn/blog_migrate/317ebb97d8bd0a453a83e217d95149a8.png)
式中:和 分别表示一个pixel分别在 x 和 y 轴方向代表多少mm。
综上所述,像素坐标系和世界坐标系转换总公式:
![1910145cbfd168179641c8e3c78e2247.png](https://i-blog.csdnimg.cn/blog_migrate/74ac2d32cf8b542ec30c0bf0fa7bbd5b.png)
![d40169487cbae33e97d30c7f554fce7b.png](https://i-blog.csdnimg.cn/blog_migrate/a7c1fed5c3186e475f42b430b14618b3.png)
相机内参影响从相机坐标系到像素坐标系的转换,相机外参影响世界坐标系到相机坐标系的转换。从上述公式可知,在不选定基准平面的前提下,单目相机无法将像素坐标系二维点转换到世界坐标系三维点,因为 值不知道, 值是从三维点逆推获得的,单如果假定点在基准平面上,可以从二维点获得三维点。
1:单目测距
本质上单目测距利用的是相似三角形,查阅资料得到以下两种常见的方法,以下两种方法都有设定基准平面,在相机标定时,棋盘格是放置在水平面,如下图所示:
![6e04e989d74b395f21f8725f399453c3.png](https://i-blog.csdnimg.cn/blog_migrate/bc54c7c86a51661ebd0d61e663f64346.png)
方法1
![714453018eca032b4f231159a01ae542.png](https://i-blog.csdnimg.cn/blog_migrate/3a52502635e6bd6a95df6c65a962fa3c.png)
![17edd726861bbc3709c3e3994b4dab29.png](https://i-blog.csdnimg.cn/blog_migrate/1e6b8c9623c029feac68f9ac1563343b.png)
![ec98de491d38a58cf5d85f9258ad31ee.png](https://i-blog.csdnimg.cn/blog_migrate/a5b5a7769854416f4d0ae43bf025c173.png)
方法2
![e50fd301b9e66c899dad6db8d9852dde.png](https://i-blog.csdnimg.cn/blog_migrate/a8ae7d5bb95f35d63b7d320569441b14.png)
![e9e1712d9fba87382e5a080e61221afe.png](https://i-blog.csdnimg.cn/blog_migrate/3d4dcad1eacc8737e20b57788baccfdb.png)
![e446c623cf783dea59db76a6cd2ddbc9.png](https://i-blog.csdnimg.cn/blog_migrate/6024843f2631b16468d979e491dd4a6b.png)
3:思考
在工作中遇到一个问题,在一张图像中,假设检测器只能检测到人的脑袋,如何根据脑袋位置大致估算出脚在图像中的位置,除了简单的按照人头和人身体的先验比例,探讨用相机模型的方法是否可以实现。开始的想法是先将人头检测框上边线中点坐标还原到世界坐标系,选地面作为基准坐标系,粗略的认为在世界坐标系中,头和脚的和 是一致的,脚在地面,=0这样就可以通过公式将脚还原到图像坐标系,但通过前面2节的分析发现,就算指定地面为基准平面,相机的内参和外参,相机架设高度,架设角度全部知道,也无法通过人头位置还原出人脚位置,因为像素坐标系人头顶的位置无法还原到世界坐标系,除非给人设定一个先验身高。
如果给定一个先验身高,人头顶点的 就可以计算出来,三个未知数,三个方程,就可以解出三维点坐标。
或者按照单目测距相似三角形方法,如上图所示,abc平面为图像坐标系平面,问题转化为求ac,b为光点在成像平面投影,相机内参已知是可以确定的,a点可以确定,因此:
![8a53b4ea4ae45aa43969cae9058eca65.png](https://i-blog.csdnimg.cn/blog_migrate/7576ca2c2a34c0d0b0d787f9d5bc8bfa.png)
![16a9678283300beb0b22d437eaf3299e.png](https://i-blog.csdnimg.cn/blog_migrate/9745ee1d162662cdfe1a96accc14ad57.png)
如果不使用相机模型:根据人头顶点像素点坐标(x,y)和人体高度的先验数据,拟合出 y 和人体高度的关系曲线,大家有好的方法欢迎留言讨论!!
① 全网独家视频课程
BEV感知、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、协同感知、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码学习)
![44d57edb438b72880fc32a82d302c142.png](https://i-blog.csdnimg.cn/blog_migrate/f798a291fbf4fc8b616316de541b7fc8.png)
② 国内首个自动驾驶学习社区
近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!
![475aa83019ad6321632eb82ad11b0717.png](https://i-blog.csdnimg.cn/blog_migrate/958997f84c6ab22176d40332061c0a86.png)
③【自动驾驶之心】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
④【自动驾驶之心】平台矩阵,欢迎联系我们!