自动驾驶汽车如何依靠摄像头判断距离?

点击展示全部

[首发于智驾最前沿微信公众号]车载摄像头在自动驾驶中,就像是“看见世界”的眼睛,其主要任务是把外界的光学信息转换成计算机能理解的像素数据,再通过一系列算法,从这些像素中提炼出“有什么物体、在什么位置、如何运动、可能想做什么”这类高层信息。作为一个感觉硬件车载摄像头是如何感知距离的?

车载摄像头 图片源自网络

车载摄像头的基本架构与信号处理流程

摄像头的核心是一块光电传感器,现在普遍用的是CMOS传感器。光线从镜头进入,经过光圈、滤光片,最后投射到传感器表面。传感器把接收到的光转换成电荷,模数转换器再把这些电荷转成数字值,这些数值就组成了一帧图像。

镜头决定了视角和成像会不会畸变,光圈和快门控制着进光量和运动模糊程度,传感器像素的大小则决定了单位面积捕捉光子的能力。

随后,ISP(图像信号处理器)会对原始数据做去噪、白平衡、伽玛校正、去畸变和压缩等处理,最终输出给机器学习或视觉算法直接使用的图像流。

车载摄像头和普通相机的不同,主要在于工程上的要求更苛刻。它必须能应对高动态范围(比如白天强光和进入隧道后的黑暗)、温度变化、机械振动、雨雪和灰尘。

为了适应这些场景,车载系统通常会配备自动曝光、短时HDR(高动态范围合成)功能,并在全局快门和滚动快门之间权衡(滚动快门成本低,但在快速运动下会产生变形)。有时还会在镜头前加装电热丝来防雾,或在夜间用红外/近红外补光。

摄像头模组需要经过精确标定,包括内参(焦距、主点、畸变系数)和外参(相对于车体坐标以及其他传感器的位置和姿态),这对后续的距离估计和多传感器融合非常关键。

车载摄像头 图片源自网络

在自动驾驶系统中,摄像头数据需要与车辆总线、IMU(惯性测量单元)、车轮里程计、激光雷达等同步。时间戳是否精确、帧率高低以及延迟大小,都会直接影响车辆对动态目标(比如行人、摩托车)的反应能力。

分辨率和帧率之间也常常需要权衡,更高分辨率有助于识别远处的小物体,但处理和传输的负担更重;更高帧率能减少运动模糊、提升响应速度,但可能导致光学信号变暗,并且更消耗算力。

摄像头在自动驾驶系统中的作用

之所以把摄像头比作“眼睛”很形象,是因为它擅长提供颜色、纹理、形状这类信息给计算机识别。

其具体任务包括检测和定位车辆、行人、骑行者、交通标志、交通灯、车道线等,进行语义分割(在像素级别识别出道路、行人、自行车道等),以及预测目标的行为(比如行人是否要横穿马路)。

在识别语义信息时,摄像头通常比激光雷达更有优势,颜色能帮助识别信号灯和标志,纹理信息有助于更精细地辨别物体类别。

但摄像头也有明显的局限。

它本身不会直接测量距离(不像激光雷达那样直接给出点云);在强逆光、夜间光线不足、雨雪雾霾等环境下,性能也会大幅下降;对于光学遮挡、反光、玻璃后的物体,识别起来也比较困难。

此外,摄像头的成像会受到镜头畸变、颜色偏差和压缩伪影的影响,需要软件算法来进行补偿和增强。

因此车载摄像头是一个“语义能力强,但几何能力弱”的传感器,往往会和激光雷达、毫米波雷达或超声波传感器配合使用,取长补短。

用摄像头识别物体距离的几种方法

既然车载摄像头没有办法探测距离,那有些使用纯视觉方案的自动驾驶系统是如何感知距离的?

其实依托摄像头判断距离的方法有很多,核心思路可以分为带基线的立体几何法、基于运动或结构恢复的单目方法、基于学习的深度估计,以及利用视觉和先验信息的尺度估计等几类。

立体视觉是最直观的几何方法。

在车上固定安装两个同型号的摄像头,两个镜头之间保持已知的基线距离。

它们同时对同一场景拍摄,得到左右两张图像。通过在这两张图像里寻找对应点(也就是“匹配”),可以得到一个叫“视差”的值,即同一物体在左右图像中水平位置的差值。

根据三角测量原理,物体到摄像头的深度Z,与焦距f、基线B、视差d的关系可以近似表示为:Z = f * B / d。这个公式计算简单,在短中距离(几米到几十米)效果很好。

车载摄像头 图片源自网络

举个例子来具体计算一下:假设摄像头等效焦距是800像素,基线是0.2米,某个物体在左右图像的视差是40像素。代入公式:Z = f * B / d。先算f * B:800 * 0.2 = 160。然后160除以40:160 / 40 = 4。结果就是Z = 4米。实际工程中,需要注意视差的亚像素精确化、立体对齐以及纹理不足区域可能匹配失败的问题。

立体方法的优点是物理原理直观、可解释性强,而且没有尺度歧义(因为基线和焦距已知),对近中距离物体精度较高。

其缺点也很突出,需要两个摄像头精确标定和稳定安装;基线太小会导致远处深度精度差(视差太小容易受噪声影响);纹理稀疏或重复的图案会造成匹配错误。

车载立体系统通常需要对视差进行后处理、滤波和一致性检测,来抑制错误。

那单目摄像头方案是否可以探测距离?其实单目摄像头本身不直接提供深度,需要借助其他线索来恢复三维信息。

基于多帧的结构从运动(SfM)或视觉里程计(VO)

基本思路是利用车辆移动时连续拍摄的多帧图像,跟踪特征点,结合相机的运动(可以从车辆里程计或IMU估计)和特征点在图像中的运动,来恢复三维点云和深度。

这本质也是三角测量,只不过基线来自摄像头的运动而非固定物理基线。

这个方法的优点是硬件要求低,缺点是对场景自身运动、光照变化敏感,且恢复的深度存在尺度不确定性(除非有外部尺度信息)。

物体尺寸先验法

利用已知物体的典型尺寸来估算距离。比如,我们知道一般轿车的高度大约1.5米,如果在图像中检测到车辆并量出它的像素高度是h,那么可以用相机内参和三角关系估算距离:Z≈ f * H_real / h。其中H_real是物体真实高度,f是焦距(像素单位)。

举例说明:假设f=800像素,H_real=1.5米,检测到图像中车高h=200像素,那么Z ≈ (800 * 1.5) / 200。先算800 * 1.5 = 1200,然后1200 / 200 = 6,得出大约6米。

这种方法非常依赖物体的真实尺寸是否符合先验假设,遇到不同车型或车辆姿态(如上下坡、倾斜)时误差会变大。

图片源自网络

深度学习法

训练卷积神经网络直接从单张图像预测深度图,或者从左右图像预测视差图。

训练可以是监督学习(需要大量带深度真值的数据,通常来自激光雷达或结构光),也可以是自监督学习(利用立体对或连续帧之间的重投影一致性作为训练信号)。

深度学习方法的优点是能在纹理弱的区域给出估计,并能利用上下文语义信息弥补几何匹配的失败,在特定训练数据分布上效果很好。

缺点是容易受训练数据分布影响,泛化能力是个挑战,而且单目深度估计通常存在尺度模糊问题,尤其在自监督训练中会更为明显。

时间轴上的信息也常用来辅助判断。比如通过光流和相机运动,可以估计碰撞时间或相对速度,这对判断危险很有用。它不直接给出绝对距离,但对决策(例如紧急刹车)至关重要。

还有一些更少用但可能有效的方法,比如从散焦恢复深度,或从焦点变化恢复深度。

这些方法利用镜头的焦平面和景深信息,通常需要可控的光学系统或多张不同焦距的图像,在车载环境下实现比较复杂,应用会相对受限。

现在最常见且最稳妥的方法还是混合方法,也就是把摄像头和其他传感器融合起来,摄像头提供语义和边界框,激光雷达提供稠密准确的距离,毫米波雷达负责在恶劣天气下稳定检测远距离大物体,IMU/里程计则提供尺度信息和运动补偿。

真正可靠的距离感知,往往来自于多传感器的融合,而不是只依赖某一种方法。

误差来源与常见应对策略

在工程实践中,要实现准确稳定的摄像头深度感知,不只是选对算法那么简单,还有很多细节都会影响最终效果。

视差噪声和远距离不稳定性是立体系统的常见问题。视差越小,深度估计对视差误差越敏感,误差会被放大。可以通过增加基线、提高相机分辨率、进行亚像素视差估计、加入时间平滑等方式来改善。

但基线不能无限增大,受限于车上安装位置,而且外参容易因震动和热变形而变化。因此,很多系统会在前向中距离使用双目,远距离则依靠长焦单目摄像头或毫米波雷达来补充。

光照和天气是摄像头的主要挑战。

强逆光会让物体变成剪影,夜间信噪比会下降,雨雾会导致对比度和纹理消失。

对于这个问题常采用的策略包括用HDR成像、低噪声传感器、更大尺寸的像素、红外补光,以及学习型的去雾和图像增强模块。

但这些方法会增加延迟和算力消耗,在极端天气下性能仍难保证。所以系统设计必须包含降级策略,当摄像头置信度低时,应切换到更保守的控制模式或依赖其他传感器。

标定与时钟同步的重要性常被低估,但至关重要。摄像头的内外参如果有偏差,距离计算就会系统性地出错。外参变化可能来自热变形、碰撞后的轻微位移或长期的机械松动。

为了保证精度,在生产和维护阶段需要有严格的标定流程,在运行时也可以利用在线标定或视觉-惯性联合标定来动态校正。

在时间同步方面,图像帧的时间戳必须与车辆控制指令以及其他传感器数据精确对齐,否则基于运动的估计会出错。

车载摄像头 图片源自网络

算法层面的鲁棒性设计也很关键。无论是传统立体匹配还是深度学习模型,都需要对错误的匹配或异常的输出进行置信度评估。

置信度低的区域,应该由其他传感器替代,或者进行平滑处理并降低其在决策中的权重。模型更新和数据闭环也不能忽视,可以把实际车辆在真实场景中遇到的失败样本回收进训练集,持续提升模型应对边界情况的能力。

还有就是算力与功耗的平衡。高分辨率、高帧率和复杂网络会消耗大量算力,这在车载环境下直接关系到成本和热管理。

因此要在感知管线里做分级处理,用快速、轻量的模型做实时预筛选,复杂的模型则在感知服务器或有空闲算力时进行精细化处理。硬件上会采用专用的视觉加速器或神经处理单元来平衡性能与功耗。

最后的话

摄像头是自动驾驶中比较重要的传感器之一,能完成目标识别、语义分割、行为预测等大量对决策至关重要的任务。但摄像头天生不直接携带距离信息,需要借助几何三角、运动基线或基于学习的方法来恢复深度。

立体视觉利用物理基线进行三角测量,简洁明了但对纹理和基线要求高;单目方法依赖运动或先验信息,更灵活但可能存在尺度模糊;深度学习能在复杂场景下给出估计,但泛化性和可靠性需要大量工程数据和校验来保障。

现在最稳健的做法还是多传感器融合,让摄像头负责“看清楚是什么”,让激光雷达或毫米波雷达负责“告诉我这东西离我多远”,两者结合才能既识别得准又定位得稳。

声明:本文由太平洋号作者撰写,观点仅代表个人,不代表太平洋汽车。文中部分图片来源网络,感谢原作者。
27
02-19
分享
发表您的看法…
半价购
分享