双目摄像头总结 第1篇
从上文测距实现过程来看,从模型建立到立体匹配都有了成熟的理论支撑,那横亘在童星成名路上的阻碍必是工程实现了,下文总结一二。
(1)双目相机的立体匹配是个复杂的世界难题,而解决这个世界难题又需要用到复杂的并行处理算法。同时为了保证在误差存在情况下立体匹配的鲁棒性,算法复杂度又急剧提升。基于开源代码加上自己的注释便宣称掌握全栈解决方案的套路不管用了,这是需要大量真金白银对的投入、旷日持久的研发,才能获得的技能。
(2)双目相机的立体匹配算法包含大量乘法、除法、开方等复杂并行计算,且算法还在不断优化。通用型的GPU不是特别适合作为主处理芯片,算法定型之后,ASIC是最优解,但在算法没有定型的今天,可硬件编程的FPGA芯片无疑是最佳的选择。而基于硬件编程语言对FPGA编程的难度,又是中小型创业公司难以逾越的鸿沟。Veoneer第四代双目相机产品就是使用了Xilinx(Zynq UltraScale+ MPSoC)的FPGA做处理器;
(3)光照敏感是依赖自然光传感器的通病。想象一下,你迎着光和逆光拍摄同一物体,然后让机器去匹配两张图片上对应像素点,人脑都有点困难,如何敢要求“机脑”呢。而现实世界中,因为光照角度原因,确实会导致左右相机成像明暗相差较大,这在一定程度上增加了立体匹配的难度,增大了立体匹配的误差;
(4)被测物体单调的纹理又是双目相机另外一个软肋,针对颜色一致的货车车厢、颜色一致的墙面,左相机的一个像素点可能有极线上大部分像素点都匹配,双目相机算法工程师不得不再次跪在立体匹配的难度与误差上。
所以只有克服上述困难后,你才会拥有一个结构简单、成本美丽、测距能力优秀、测距精度适中的深度测量法器。而上述困难没有现成的开源方案任君选择,也不是简单招几个算法工程师研究三个月、半年就可以搞定的事情,需要的是庞大研发队伍旷日持久的投入。所以我们看到修炼这件法器的基本都是乡绅土豪。国外有Veoneer、博世、大陆、电装、日立等,国内中科慧眼、华为、大疆等,而能驾驭这件法器也都非富即贵,国外有斯巴鲁、奔驰、丰田、本田等,国内有吉利、红旗等。
小结
不知道元戎启行的媒体稿是怎么通过内部评审的,这里也不去妄议,也有可能是我的理解有误。只想感慨一句:自动驾驶领域,宣传的文章,路演的视频,CXO口中的万亿市场可能与工程师正在修复的低级BUG是平行世界两条不想交的直线。保持谦卑,追求落地,或许是自动驾驶由年少轻狂走向成熟的标志。
双目摄像头总结 第2篇
相机成像的过程实际是将真实世界的三维物体映射到成像平面二维图像的过程,为确定真实世界三维物体表面某点与其在成像平面二维图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数(内参、外参、畸变参数)。而相机参数通常需要通过实验与计算才能得到,求解相机参数的过程称之为相机标定。
而双目相机标定其实就是分别获取每个相机的参数,从而获得两个相机的相对位置关系,为图像校正等提供位置依据。因此首先介绍单目相机的几何模型及标定原理。根据透镜成像原理建立的单目相机理想几何模型如下图所示,涉及四大坐标系,世界坐标系、相机坐标系、图像坐标系和像素坐标系。
双目摄像头总结 第3篇
由于理解逻辑需要,图像校正放在第三小节介绍,但其实图像校正是标定工作的一部分。图像矫正的目的就是将现实世界中光轴不平行的两个成像平面重新投影到一个光轴平行的成像平面,这样两个相机的极线便平行了,左相机成像平面中的像素点只需要沿着水平的极线方向在右相机成像平面中进行匹配搜索就可以了。
但是实际操作过程中由于标定、计算过程中的误差,左成像平面上的一个像素点,并不总是恰好在右成像平面极线上,而是在极线附近。同时,在进行单个像素点搜索匹配的时候,由于光照等原因,匹配的鲁棒性会比较差。针对这两种问题,出现了基于滑动窗口匹配以及基于能量优化的匹配方法,具体实现就不展开介绍,总之知道至此就能实现双目准确的测距功能。
双目摄像头总结 第4篇
从相机坐标系到图像坐标系是一个三维到二维的投影变化过程,相机坐标系下的一点C(Xc,Yc,Zc)与其在图像坐标中投影点i(x,y),利用相似三角形原理可得到如下关系。
从图像坐标系到像素坐标系是同一平面不同坐标系原点,不同坐标系单位的转换。图像坐标系的原点在图像传感器的中心,像素坐标系的原点在图像传感器的左上角,图像坐标系的单位是m,像素坐标系的单位是像素。当图像坐标系的原点oi在像素坐标系下的坐标为(uo,vo),一个像素点在x轴,y轴方向的尺寸为dx,dy时,则图像坐标系下I点在像素坐标系下P点坐标如下。
因此,相机坐标系下的一点C(Xc,Yc,Zc)与其投影在像素坐标系下P(u,v)的完整数学关系如下。
双目摄像头总结 第5篇
按照常规思维,为了在右图像中匹配左图像的一个像素点,我从0到N开始逐个匹配,对于像素10万的相机来说,匹配的工作量勉强可以接受。如果像素为100万、200万、甚至800万呢?为了提高匹配的效率,一部分高质量人类提出了极线约束的解决方案。
被测点C1和左相机光心Oc1和右相机光心Oc2三点构成的平面称为极平面,极平面与成像平面相交的两条直线称为极线。而对于理想双目相机模型来说,空间点C1在左相机成像平面的投影点,对应于右相机成像平面上的投影点,一定在右相机的极线上,这也就是著名的极线约束原理。将二维搜索变为一位搜索,高质量人类的高质量贡献。
这是基于最理想的双目相机模型设计出来的方法,但是现实情况可能由于装配误差、安装误差等原因,导致左右相机光轴不平行,成像平面不重合,结果就是左右极线不平行,不共面,如下图所示。极线约束方法是不是没法使用,别慌,针对这种情况,只需提前进行图像校正就可以。