车载双目相机,老兵的二次出征

汽车安全 3年前 (2021) admin
1,166 0 0

车载双目相机,老兵的二次出征

 
自动驾驶的感知武器库里,有一款模拟人的双眼感知原理而设计的产品。带着神童的光环诞生,却一度湮没在简单即复杂的自动驾驶生存法则里。而今,退掉青涩,带着风雨中洗礼后的成熟,重新出现在自动驾驶感知的主战场。车载双目相机,一位老兵的二次出征,自动驾驶圈黑话第八期的主角。

车载双目相机,老兵的二次出征
概述


早在90年代未,意大利帕尔马大学视觉实验室VisLab就利用双目相机在高速公路完成了2000公里的长距离自动驾驶试验,无人驾驶占比94%,而车速达到了112km/h。这一成就,即使放在今天,也足以让竞争对手汗颜。但是后来的故事没有按照俗套的剧本演绎,故事的主人公也一度变成了双目相机的弟弟单目相机。

单目相机在今天的自动驾驶领域混的风生水起、妇孺皆知。前有传统豪门Mobileye的一见钟情,中有车中贵族特斯拉的情有独钟,后有遍地开花自动驾驶企业的万千恩宠。单目相机,俨然一幅修炼辟邪剑谱后,睥睨武林的不可一世。

然而单目相机的测距,高度依赖深度学习。而目前深度学习视觉感知框架下,需要先进行目标识别,才能进行下一步的距离探测。如果单目相机无法识别出目标,则会认为前方没有障碍物,规划不会选择变道,控制不会选择减速,结果可能就是新闻中特斯拉的“视而不见,目中无物”。提高深度学习视觉感知目标识别率的方法就是加大训练数据集,穷尽自动驾驶车辆路上可能遇见的一切目标。但对于“人不能两次踏进同一条河流”的变化世界来说,穷尽本身就是伪前提。

而双目相机通过左右两个相机从不同角度同时对被测物体成像,并基于视差原理计算图像对应点的位置偏差,从而获得被测物体的距离信息,结合相机的内外参数,可以最终得到带有空间三维坐标的点云数据。这意味着,双目相机无须识别出目标,也能进行目标距离的探测。且测距准确度远高于单目相机通过深度学习估算的距离。

这么好的仿生产品,一位出道即成名的童星,后来为何未能在自动驾驶领域得到大规模的应用?原因很多,有算法实现的复杂、处理芯片的高门槛、效益的无法平衡等。下文就从双目测距原理、结构原理上剖析,看看是否能找到部分答案。

车载双目相机,老兵的二次出征


车载双目相机,老兵的二次出征
工作原理


双目相机测距过程包括相机标定、图像校正,立体匹配等步骤。整个过程涉及矩阵变换、三角相似等矩阵运算、代数相关的数学知识。但在焦虑、烦躁、不安弥漫的打工人之中,公式意味着阅读的终结。为了避免这种尴尬,作者先通过一张测距原理示意图,概括性介绍整个测距原理,而后再详述每个过程。

车载双目相机,老兵的二次出征


对于上图左边行人和汽车,从左右相机成像的结果上看,同一物体在左图像和右图像中的位置是不同的,而同一物体的同一像素点在两个相机中的位置差称为视差。从上图右半部分可以看出,近处行人视差大,远处汽车视差小,车载双目相机正是基于这样的视差原理(近视差大、远视差小),来实现物体深度的测量。

一、双目相机标定

相机成像的过程实际是将真实世界的三维物体映射到成像平面二维图像的过程,为确定真实世界三维物体表面某点与其在成像平面二维图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数(内参、外参、畸变参数)。而相机参数通常需要通过实验与计算才能得到,求解相机参数的过程称之为相机标定。

而双目相机标定其实就是分别获取每个相机的参数,从而获得两个相机的相对位置关系,为图像校正等提供位置依据。因此首先介绍单目相机的几何模型及标定原理。根据透镜成像原理建立的单目相机理想几何模型如下图所示,涉及四大坐标系,世界坐标系、相机坐标系、图像坐标系和像素坐标系。

车载双目相机,老兵的二次出征


世界坐标系(Xw,Yw,Zw):以外界某个参考点Ow建立的三维坐标系,用于描述物体(包含相机、被测物等)在真实世界中的位置,单位是m。

相机坐标系(Xc,Yc,Zc):以光心Oc为原点,光轴Zc指向相机正前方的三维坐标系,用于从相机的角度描述真实世界中物体的位置,单位是m。

图像坐标系(x,y):以光轴Zc与成像平面的焦点oi为原点建立的二维坐标系,用于描述成像过程中物体从相机坐标系到图像坐标系的投影关系,单位是m。

像素坐标系(u,v):以图像平面左上角o为坐标原点的二维坐标系,用于描述每个像素在图像平面上的相对位置,也是用户最终看到的,单位为像素。

但是为了相机模型数学描述上的方便,我们一般将成像平面(图像坐标系xy平面重合的面)以相机坐标系xy平面为对称面对称到另一边,如下图所示,这也是市面上介绍相机标定文章中最终看到相机模型的模样。

车载双目相机,老兵的二次出征

 

单目相机标定主要包含两个过程(1)世界坐标系到相机坐标系的几何关系参数,由于参数只与世界坐标系的外部位置有关,也称为外参标定。(2)相机坐标系到像素坐标系之间的投影几何关系参数,这部分参数与相机的焦距、像素尺寸等相机内部参数有关,简称为内参标定。

(1)外参标定

从世界坐标系到相机坐标系的变换是一个刚体变换,通过旋转和平移即可将世界坐标系下物体的W(Xw,Yw,Zw)点转换为相机坐标系下的C(Xc,Yc,Zc)点,用旋转矩阵R和平移矩阵T可表示为如下关系。

车载双目相机,老兵的二次出征


(2)内参标定

从相机坐标系到图像坐标系是一个三维到二维的投影变化过程,相机坐标系下的一点C(Xc,Yc,Zc)与其在图像坐标中投影点i(x,y),利用相似三角形原理可得到如下关系。

车载双目相机,老兵的二次出征


从图像坐标系到像素坐标系是同一平面不同坐标系原点,不同坐标系单位的转换。图像坐标系的原点在图像传感器的中心,像素坐标系的原点在图像传感器的左上角,图像坐标系的单位是m,像素坐标系的单位是像素。当图像坐标系的原点oi在像素坐标系下的坐标为(uo,vo),一个像素点在x轴,y轴方向的尺寸为dx,dy时,则图像坐标系下I点在像素坐标系下P点坐标如下。

车载双目相机,老兵的二次出征


车载双目相机,老兵的二次出征


因此,相机坐标系下的一点C(Xc,Yc,Zc)与其投影在像素坐标系下P(u,v)的完整数学关系如下。

车载双目相机,老兵的二次出征


二、立体匹配

(1)双目理想成像模型

单目相机模型理解透了,双目相机模型无非是两个相机的叠加。为了便于理论分析,我们首先建立光轴平行,焦距相等,左、右相机坐标系x轴正方向重合的双目相机理想成像模型,其示意图如下。

 

车载双目相机,老兵的二次出征


左右相机光心之间的距离b称为基线距离,为了便于求出被测点C的深度值Zc,将C点投影在相机坐标系的xz平面,投影示意图如下。

 车载双目相机,老兵的二次出征


由三角形相似原理可最终求得点C的三维坐标值如下,由公式看出,要想得到C点的深度值及三维坐标值,需要知道(1)相机焦距f和基线长度b,这个在上一步标定过程已经获得(2)xr和xl的差值,也就是视差值。

车载双目相机,老兵的二次出征


所谓视差,是指被测点在不同位置相机中成像位置的差异。为了计算视差,我们必须为左边图像中的每个像素,匹配到其与右边图像中的对应像素,这就双目相机立体匹配的问题,也是双目相机的核心问题之一。

(2)极线约束

按照常规思维,为了在右图像中匹配左图像的一个像素点,我从0到N开始逐个匹配,对于像素10万的相机来说,匹配的工作量勉强可以接受。如果像素为100万、200万、甚至800万呢?为了提高匹配的效率,一部分高质量人类提出了极线约束的解决方案。

被测点C1和左相机光心Oc1和右相机光心Oc2三点构成的平面称为极平面,极平面与成像平面相交的两条直线称为极线。而对于理想双目相机模型来说,空间点C1在左相机成像平面的投影点,对应于右相机成像平面上的投影点,一定在右相机的极线上,这也就是著名的极线约束原理。将二维搜索变为一位搜索,高质量人类的高质量贡献。

车载双目相机,老兵的二次出征


这是基于最理想的双目相机模型设计出来的方法,但是现实情况可能由于装配误差、安装误差等原因,导致左右相机光轴不平行,成像平面不重合,结果就是左右极线不平行,不共面,如下图所示。极线约束方法是不是没法使用,别慌,针对这种情况,只需提前进行图像校正就可以。

车载双目相机,老兵的二次出征


三、图像校正

由于理解逻辑需要,图像校正放在第三小节介绍,但其实图像校正是标定工作的一部分。图像矫正的目的就是将现实世界中光轴不平行的两个成像平面重新投影到一个光轴平行的成像平面,这样两个相机的极线便平行了,左相机成像平面中的像素点只需要沿着水平的极线方向在右相机成像平面中进行匹配搜索就可以了。

但是实际操作过程中由于标定、计算过程中的误差,左成像平面上的一个像素点,并不总是恰好在右成像平面极线上,而是在极线附近。同时,在进行单个像素点搜索匹配的时候,由于光照等原因,匹配的鲁棒性会比较差。针对这两种问题,出现了基于滑动窗口匹配以及基于能量优化的匹配方法,具体实现就不展开介绍,总之知道至此就能实现双目准确的测距功能。

车载双目相机,老兵的二次出征
关键性能


作为一款以深度值测量为杀手锏的武器,其深度值的测量能力以及测量精度无疑是双目相机至关重要的能力。由前文推导的公式可知,双目相机的深度值由基线距离b、焦距f、视差值决定。

车载双目相机,老兵的二次出征

 
从公式中可以比较直观的得到如下关于精度的结论(1)用于计算视差的算法偏差越小,精度越高,这是算法层面;(2)基线越长、焦距越大,精度越高,这是硬件层面;(3)测量目标越近,精度越高,这是被测物距离层面。

而测距能力和基线关系很大。基线越大,测距范围越大;基线越小,测距范围越小。所以基线在一定程度上决定了双目相机的测距能力。

车载双目相机,老兵的二次出征
成名路上的阻碍


从上文测距实现过程来看,从模型建立到立体匹配都有了成熟的理论支撑,那横亘在童星成名路上的阻碍必是工程实现了,下文总结一二。

(1)双目相机的立体匹配是个复杂的世界难题,而解决这个世界难题又需要用到复杂的并行处理算法。同时为了保证在误差存在情况下立体匹配的鲁棒性,算法复杂度又急剧提升。基于开源代码加上自己的注释便宣称掌握全栈解决方案的套路不管用了,这是需要大量真金白银对的投入、旷日持久的研发,才能获得的技能。

(2)双目相机的立体匹配算法包含大量乘法、除法、开方等复杂并行计算,且算法还在不断优化。通用型的GPU不是特别适合作为主处理芯片,算法定型之后,ASIC是最优解,但在算法没有定型的今天,可硬件编程的FPGA芯片无疑是最佳的选择。而基于硬件编程语言对FPGA编程的难度,又是中小型创业公司难以逾越的鸿沟。Veoneer第四代双目相机产品就是使用了Xilinx(Zynq UltraScale+ MPSoC)的FPGA做处理器;

(3)光照敏感是依赖自然光传感器的通病。想象一下,你迎着光和逆光拍摄同一物体,然后让机器去匹配两张图片上对应像素点,人脑都有点困难,如何敢要求“机脑”呢。而现实世界中,因为光照角度原因,确实会导致左右相机成像明暗相差较大,这在一定程度上增加了立体匹配的难度,增大了立体匹配的误差;

(4)被测物体单调的纹理又是双目相机另外一个软肋,针对颜色一致的货车车厢、颜色一致的墙面,左相机的一个像素点可能有极线上大部分像素点都匹配,双目相机算法工程师不得不再次跪在立体匹配的难度与误差上。

所以只有克服上述困难后,你才会拥有一个结构简单、成本美丽、测距能力优秀、测距精度适中的深度测量法器。而上述困难没有现成的开源方案任君选择,也不是简单招几个算法工程师研究三个月、半年就可以搞定的事情,需要的是庞大研发队伍旷日持久的投入。所以我们看到修炼这件法器的基本都是乡绅土豪。国外有Veoneer、博世、大陆、电装、日立等,国内中科慧眼、华为、大疆等,而能驾驭这件法器也都非富即贵,国外有斯巴鲁、奔驰、丰田、本田等,国内有吉利、红旗等。

车载双目相机,老兵的二次出征
小结


结尾一贯的跑题,元戎启行在2021年12月8日发布了成本控制在1万美元的自动驾驶解决方案,媒体开始鼓吹中国版的”特斯拉FSD”。细看其配置,速腾和一径的当家花旦悉数到场,应该是降本的最大功臣。而宣传中另一降本功臣,则是计算单元,采用NVDIA“入门级显卡”,看到这五个字时,我多年选择性的信号不好差点就被治好了。消费级显卡用在工业场景,NVDIA是保留追责权利的,NVDIA是可以养肥了再宰的。

不知道元戎启行的媒体稿是怎么通过内部评审的,这里也不去妄议,也有可能是我的理解有误。只想感慨一句:自动驾驶领域,宣传的文章,路演的视频,CXO口中的万亿市场可能与工程师正在修复的低级BUG是平行世界两条不想交的直线。保持谦卑,追求落地,或许是自动驾驶由年少轻狂走向成熟的标志。


作者 | 11号线人
初心 | 记录生而为人的证据,分享工农阶层原创作品,聚焦智能网联与人情冷暖。
声明 | 本文部分文字及图片资料取自网络,如有侵权,请联系平台进行修改或删除;文章属于作者本人,仅代表个人观点,不代表平台立场,如有不妥,也请联系平台修改或删除;本文不作任何商业用途。

原文始发于微信公众号(十一号组织):车载双目相机,老兵的二次出征

版权声明:admin 发表于 2021年12月11日 上午1:10。
转载请注明:车载双目相机,老兵的二次出征 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...