自动驾驶摄像头要如何做标定?

描述

[首发于智驾最前沿微信公众号]有些时候,我们在用一些手机拍照,手机拍出来的画面与真实世界看起来会不太一样,直接会有些弯曲,物体看起来距离也会更远,之所以会出现这个问题,是因为镜头有畸变、焦距和光心位置不够准确等原因导致的。这一问题在拍照时影响并不大,但是对于自动驾驶摄像头来说,如果出现这些问题,就会让自动驾驶汽车无法看懂世界,无法判断距离,使得小偏差变成大问题。

为什么自动驾驶摄像头需要标定?

自动驾驶车辆靠多个摄像头、激光雷达、毫米波雷达、惯性测量单元(IMU)等传感器一起“看世界”和定位。摄像头拿到的是二维图像,机器要靠这些图像去识别车道线、行人、障碍物,同时还要判断它们的三维空间位置。这个过程中必须把摄像头拍到的每一个像素点,正确地映射到真实三维空间坐标上。如果这个映射不准确,机器感知出的物体位置就可能是错的,进而影响车辆决策与控制。为了做到准确的映射,就必须要进行摄像头标定。

摄像头标定,简而言之就是找出摄像头内部和外部的一系列参数,让摄像头拍出来的图像能对应真实世界的物理坐标,这样自动驾驶系统才有靠谱的感知基础。

摄像头标定包含什么?

自动驾驶汽车上的摄像头,其实就是一个把三维世界投影到二维图像的机器,这个过程中有两个参数非常关键,即内参数和外参数。

内参数是摄像头“自身的性格”,包括焦距、光心(像素坐标里的中心点)、镜头畸变这些东西。镜头的焦距决定物体成像放大还是缩小,镜头畸变会让直线看起来弯曲。这些属性取决于镜头本身和生产制造精度。我们要通过标定找出一组具体的数值来描述它。

外参数则描述摄像头在车辆坐标系里的位置和朝向。自动驾驶汽车装了不只有一个摄像头,可能前视、侧视、后视等多个视角都有摄像头,甚至还有激光雷达、毫米波雷达这样的传感器。每个传感器的坐标系都不一样,要让摄像头的数据跟其他传感器的数据融合,就必须知道每个摄像头的位置、朝向,即它们与车辆坐标系之间的三维旋转和平移关系。

简单理解这两个概念,内参数像是“透镜自己的性格描述”,而外参数像是“这个镜头装在车上什么位置、朝哪个方向”,对于摄像头的标定就是要找出这些参数。

摄像头的标定要怎么做?

在自动驾驶开发中,一般会使用两种方式来做摄像头标定,一种是在受控环境下静态完成,另一种是在车辆行驶过程中动态优化。

静态标定会在实验室或标定场地里完成。标定前需准备一个有已知几何结构的标定板,上面会有棋盘格、圆点阵列等规则的平面图案,然后在摄像头前多角度、不同位置拍很多张照片。通过这些照片中棋盘格角点在图像中的位置变化,算法就能反推出摄像头的内参数和外参数,并校正镜头畸变等影响。经典的标定方法之一是以张正友标定法为代表的相机标定算法,它就是利用拍摄了不同角度的已知标定板图像来求解这些参数。

静态标定的精度比较高,尤其内参数能通过专门设计的标定软件和场景得到较精确的估计。外参数在静态环境下也能测出一个初始值。静态标定适合在制造或装配完毕后、车辆上路之前先做一次。

动态标定则是在车辆行驶状态下进行的优化,车辆在路上跑的时候,摄像头不断采集图像,同时配合IMU、GPS等定位数据,或者是检测到路边的特征、车道线等信息,通过连续运动模型和传感器数据来进一步优化摄像头的外参数甚至某些内参数(如果车辆结构轻微改变)。动态标定的好处是能让标定结果更贴近真实驾驶场景,能够适应安装误差、振动等因素带来的变化。

很多自动驾驶系统会先做一个静态标定,然后在实际路测中通过动态标定持续优化,这样可以让摄像头始终保持较高的感知准确性。

标定过程里的关键步骤

不管是静态标定还是动态标定,大体步骤都包含数据采集、特征提取、求解摄像头模型及验证几个核心内容。

对于静态标定,需要拍摄很多标定板的照片,要求棋盘格或圆点阵列遍布镜头视野的各个角落,角度要变化多样,这样算法才能充分约束内参数和畸变项。很多成熟的标定工具至少要几十张图片,才能覆盖整个视场。

特征提取时,标定算法会根据这些图像自动识别棋盘格的角点或圆点的中心点,这些特征点在真实世界中的坐标是已知的,通过图像里这些点的像素坐标和实际三维坐标之间的对应关系,算法可以开始求解摄像头参数。

在求解摄像头模型时,会把提取出来的点对作为输入,根据如透视投影模型和镜头畸变模型等摄像机成像物理模型,通过数学优化去拟合出一组内参数、外参数和畸变系数。这个过程背后常用的优化方法包括最小二乘、非线性优化等,有时也会利用如BA算法(bundle adjustment)这样更复杂的全局优化来提高精度。

摄像头标定完成后,还要用一些独立的数据或者图像来验证标定结果,如通过重新投影误差看预测点和真实图像点之间的偏差多大。误差越小,说明标定越准确。通过这种方式可以判断标定是否达到自动驾驶所需的精度。验证还还包括检查多相机系统之间的一致性,如会检查左右摄像头的外参数是否符合实际的安装结构等。

标定在自动驾驶中有什么具体要求?

在自动驾驶种系统里,标定不能只是简单“做一次就完了”,而是要贯穿到自动驾驶汽车使用的整个周期。

摄像头出厂本身就会有如镜头组装位置不精确、镜头畸变不一致等一定的制造误差,装到车上时车体结构也会带来偏差。这些都需要通过标定去校正,否则摄像头的感知数据就会带偏。

车辆行驶过程中还会受到振动、热胀冷缩、甚至碰撞等因素的影响,这些都会改变摄像头的外参数。如果标定结果不能跟上这些变化,感知精度会逐渐变差。尤其对于自动驾驶这种对精度要求高的系统来说,定期检查和动态标定是非常必要的。

单个摄像头虽然能做基本的检测和跟踪,但是要实现高精度的三维定位、障碍物检测和传感器融合,就必须让摄像头与激光雷达、毫米波雷达、IMU等传感器的数据在同一坐标系下统一。这就对外参数精度提出了更高的要求,这其中就需要联合标定或全局优化的策略。

当然,自动驾驶汽车上不仅仅会安装一个相机,因此,不仅要标定每个摄像头自身的内参数,还要标定多个摄像头之间的外参数,以及与车体坐标系的关系。这些参数一旦有小误差,就会在传感器融合、深度计算、障碍物定位等环节被放大,从而影响整个感知系统的可靠性。

最后的话

摄像头标定是自动驾驶感知系统里非常基础但又极其关键的一步工作。做好标定,自动驾驶系统才能在真实道路场景里可靠地感知路况、确定物体位置,进而提高安全性和鲁棒性。虽然其中涉及的数学和算法看起来有些复杂,但理解标定的基本思想和流程,对自动驾驶工程师来说是非常重要的基础技能。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分