作者 | Misaka 编辑 | 汽车人
原文链接:https://zhuanlan.zhihu.com/p/626913010
点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
点击进入→自动驾驶之心技术交流群
本文只做学术分享,如有侵权,联系删文
1:相机模型
坐标系
相机模型中存在4种坐标系,像素坐标系,图像坐标系,相机坐标系,世界坐标系;相机坐标系一般以相机光心作为原点 ,光心在成像平面的投影即图像坐标系的中心,也就是图像坐标系的原点 o ,连接图像坐标系原点和光心形成光轴 。

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


可得绕 Z 轴旋转 :

同理绕 Y 轴旋转 :

同理绕 X 轴旋转 :

旋转矩阵:R=


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

其中:f表示相机焦距

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

式中:和 分别表示一个pixel分别在 x 和 y 轴方向代表多少mm。
综上所述,像素坐标系和世界坐标系转换总公式:


相机内参影响从相机坐标系到像素坐标系的转换,相机外参影响世界坐标系到相机坐标系的转换。从上述公式可知,在不选定基准平面的前提下,单目相机无法将像素坐标系二维点转换到世界坐标系三维点,因为 值不知道, 值是从三维点逆推获得的,单如果假定点在基准平面上,可以从二维点获得三维点。
1:单目测距
本质上单目测距利用的是相似三角形,查阅资料得到以下两种常见的方法,以下两种方法都有设定基准平面,在相机标定时,棋盘格是放置在水平面,如下图所示:

方法1



方法2



3:思考
在工作中遇到一个问题,在一张图像中,假设检测器只能检测到人的脑袋,如何根据脑袋位置大致估算出脚在图像中的位置,除了简单的按照人头和人身体的先验比例,探讨用相机模型的方法是否可以实现。开始的想法是先将人头检测框上边线中点坐标还原到世界坐标系,选地面作为基准坐标系,粗略的认为在世界坐标系中,头和脚的和 是一致的,脚在地面,=0这样就可以通过公式将脚还原到图像坐标系,但通过前面2节的分析发现,就算指定地面为基准平面,相机的内参和外参,相机架设高度,架设角度全部知道,也无法通过人头位置还原出人脚位置,因为像素坐标系人头顶的位置无法还原到世界坐标系,除非给人设定一个先验身高。
如果给定一个先验身高,人头顶点的 就可以计算出来,三个未知数,三个方程,就可以解出三维点坐标。
或者按照单目测距相似三角形方法,如上图所示,abc平面为图像坐标系平面,问题转化为求ac,b为光点在成像平面投影,相机内参已知是可以确定的,a点可以确定,因此:


如果不使用相机模型:根据人头顶点像素点坐标(x,y)和人体高度的先验数据,拟合出 y 和人体高度的关系曲线,大家有好的方法欢迎留言讨论!!
① 全网独家视频课程
BEV感知、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、协同感知、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码学习)

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

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