2. 摄像头成像原理:小孔成像模型、透镜畸变、数字图像传感器(CMOS/CCD)工作原理

做多摄像头融合感知,第一件事是什么?不是调算法,不是标定,而是先把摄像头本身吃透。你想想看,如果连传感器怎么成像的都不清楚,后面那些复杂的融合逻辑就是空中楼阁。

这一章,我们就从最基础的物理原理讲起。我会结合自己这些年踩过的坑,把成像这件事掰开了揉碎了讲清楚。

2.1 小孔成像模型:一切的基础

先说小孔成像。这是所有摄像头模型的鼻祖,说白了就是初中物理课本里那个暗箱实验。

光线从物体表面反射,穿过一个小孔,在后面的平面上形成倒立的像。这个模型简单到令人发指,但它抓住了成像的本质——透视投影

核心公式:

X_image = f * (X_world / Z_world)
Y_image = f * (Y_world / Z_world)

其中 f 是焦距,Z_world 是物体到相机的距离。

这个公式告诉我们一个关键事实:物体越远,成像越小。这就是为什么远处的车在图像里只有几个像素,近处的车能占满整个画面。

我个人习惯把这个模型当作「理想情况」。实际摄像头不可能用一个小孔,因为进光量太少,曝光时间太长,根本没法用。所以就有了透镜。

2.2 透镜畸变:理想很丰满,现实很骨感

加了透镜之后,进光量上去了,但问题也来了——畸变。

我记得刚入行时,第一次做车道线检测,发现算法在图像边缘总是把直线识别成弯的。排查了半天,最后发现是摄像头畸变没校正。嗯,这个坑我替你们踩过了。

畸变主要分两种:

  • 径向畸变:光线经过透镜边缘时弯曲程度不同,导致图像边缘向内或向外扭曲。向内叫桶形畸变,向外叫枕形畸变。
  • 切向畸变:透镜和成像平面不平行,导致图像倾斜。这个在量产摄像头里比较常见,因为装配公差很难完全消除。

避坑指南:

我曾经在一个项目中,因为赶进度,跳过了畸变校正这一步。结果融合后的鸟瞰图在边缘区域出现了严重的拼接错位。后来花了整整两天重新标定,才把问题解决。所以,畸变校正不是可选项,是必选项

畸变校正的数学模型长这样:

// 径向畸变
x_distorted = x * (1 + k1*r^2 + k2*r^4 + k3*r^6)
y_distorted = y * (1 + k1*r^2 + k2*r^4 + k3*r^6)

// 切向畸变
x_distorted = x + (2*p1*x*y + p2*(r^2 + 2*x^2))
y_distorted = y + (p1*(r^2 + 2*y^2) + 2*p2*x*y)

其中 k1、k2、k3 是径向畸变系数,p1、p2 是切向畸变系数。这些参数需要通过标定来获取。

2.3 数字图像传感器:CMOS vs CCD

光线穿过透镜,打到传感器上,这时候就该数字图像传感器上场了。

目前主流就两种:CMOS 和 CCD。我直接说结论:自动驾驶领域几乎全是 CMOS。为什么?往下看。

特性 CMOS CCD
功耗 低(约 CCD 的 1/10)
读出速度 快(支持高帧率)
噪声 较高(但近年改善明显)
集成度 高(可集成 ADC、ISP)
成本

你看,CMOS 在功耗、速度、集成度、成本上全面占优。虽然噪声比 CCD 大一点,但现在的降噪算法已经能处理得很好了。

我建议你在选型时重点关注这几个参数:

  • 分辨率:不是越高越好。分辨率高了,数据量大了,处理带宽跟不上的话反而会拖累系统。
  • 帧率:自动驾驶至少需要 30fps,高速场景建议 60fps。
  • 动态范围:这个很关键。隧道出入口那种场景,动态范围不够的话,要么一片黑要么一片白。
  • 全局快门 vs 卷帘快门:做多摄像头融合,我强烈建议用全局快门。卷帘快门在高速运动时会产生果冻效应,融合时对不齐。

注意:

我曾经在一个项目中用了卷帘快门的摄像头做前向感知。车速 80km/h 时,图像里的车道线都是歪的。后来换成全局快门,问题立刻解决。这个教训让我记住了:运动场景下,全局快门是刚需

2.4 从光子到像素:传感器的工作流程

传感器是怎么把光变成数字信号的?我简单梳理一下流程:

  1. 光电转换:每个像素上的光电二极管把光子转换成电子。光子越多,电子越多。
  2. 电荷积累:在曝光时间内,电子不断积累。曝光时间越长,积累的电子越多。
  3. 读出:CMOS 是每个像素独立读出,CCD 是逐行转移读出。
  4. 模数转换:把模拟电压转换成数字值,通常是 8bit、10bit 或 12bit。
  5. ISP 处理:去噪、白平衡、色彩校正、伽马校正等。

这里有个概念很重要——量子效率。它表示传感器把光子转换成电子的效率。效率越高,弱光下表现越好。

我一般会关注传感器的量子效率曲线,看看它在可见光波段的表现。有些传感器在近红外波段效率也不错,这对夜间辅助照明很有帮助。

2.5 多摄像头融合中的传感器考量

做多摄像头融合,传感器层面有几个坑要特别注意:

  • 传感器型号要统一:不同型号的传感器,响应曲线、噪声特性都不一样,融合时很难对齐。
  • 曝光时间要同步:多个摄像头如果曝光时间不一致,同一时刻拍到的场景亮度不同,融合后会出现明显的拼接痕迹。
  • 白平衡要一致:这个容易被忽略。不同摄像头的白平衡算法如果独立运行,同一块区域的颜色会不一样。

我的做法:

在项目中,我会把所有摄像头配置成相同的曝光参数和白平衡模式,然后用硬件触发信号让它们同时曝光。这样采集到的图像在时间上和亮度上都是对齐的,后续融合就省了很多麻烦。

好了,这一章的内容就到这里。从物理原理到工程实践,我把摄像头成像的各个环节都过了一遍。下一章我们会讲标定,那是把理论变成可操作数据的关键一步。

记住一句话:理解传感器,是做好感知的第一步