2、传感器基础(一):摄像头工作原理、摄像头分类、摄像头标定基础、摄像头数据特点
各位同学,欢迎来到感知融合的第一站。今天咱们聊聊摄像头——这个在自动驾驶里最像人眼的传感器。
说实话,我入行那会儿,第一个接触的传感器就是摄像头。当时觉得这东西太简单了,不就是个相机吗?后来在项目里被现实狠狠教育了一顿,才发现里面的门道比想象中多得多。
2.1 摄像头工作原理
摄像头的工作原理,说白了就是「光变电,电变数」。光线通过镜头,打到感光元件上,感光元件把光信号转成电信号,再经过模数转换,变成我们能处理的数字图像。
这里有个关键元件——CMOS(互补金属氧化物半导体)。现在市面上99%的车载摄像头都用它。为什么?功耗低、成本低、集成度高。我早期用过CCD的摄像头,画质确实好,但发热量感人,在车里夏天根本扛不住。
具体流程是这样的:
- 光线进入:通过镜头组,聚焦到感光面
- 光电转换:每个像素点的光电二极管,把光子转成电子
- 读出电路:一行一行地把电荷读出来,转成电压信号
- ADC转换:模拟电压转成数字值(0-255或0-1023)
- ISP处理:图像信号处理器做白平衡、去噪、锐化等
- 输出:最终得到一张YUV或RGB格式的图像
核心要点:帧率、分辨率、动态范围是摄像头三大核心指标。帧率决定你能捕捉多快的运动,分辨率决定你能看清多小的物体,动态范围决定你在强光暗光下能不能都看得见。
嗯,这里要注意——ISP处理虽然让图像更好看,但也会引入延迟和失真。我在做车道线检测时,发现某些ISP的锐化算法会把路面裂缝误识别成车道线,后来不得不关掉部分ISP功能。
2.2 摄像头分类
车载摄像头主要分三类:单目、双目、鱼眼。每种都有它的脾气。
| 类型 | 视角 | 测距方式 | 典型应用 | 我的评价 |
|---|---|---|---|---|
| 单目 | 30°-60° | 几何模型推算 | 前视ADAS、车道保持 | 成本最低,但测距精度依赖模型 |
| 双目 | 30°-45° | 视差三角测量 | 障碍物测距、深度估计 | 精度高,但标定麻烦,计算量大 |
| 鱼眼 | 120°-220° | 无直接测距 | 环视、泊车、近场感知 | 视野广,但畸变严重,需要校正 |
2.2.1 单目摄像头
单目摄像头,就是只有一个眼睛。它怎么测距?靠的是「假设地面是平的」。通过已知的安装高度和俯仰角,利用小孔成像原理,把图像上的像素位置映射到世界坐标系中。
我做过一个项目,单目测距在平地上误差能控制在5%以内。但车一上坡或者下坡,地面假设就失效了,测距误差直接飙到30%以上。后来我们加了IMU做俯仰角补偿,才把这个问题压下去。
2.2.2 双目摄像头
双目摄像头模仿人的双眼。两个摄像头之间有个固定距离(基线),通过计算左右图像中同一个点的位置差(视差),就能算出距离。
公式很简单:距离 = (焦距 × 基线) / 视差
你想想看,视差越大,物体越近。这个原理很直观。但实际做起来,最难的是「匹配」——怎么在左右两张图里找到同一个点?我踩过最大的坑就是纹理稀疏区域(比如白墙),匹配算法直接崩溃,输出一堆噪点。
我的经验:双目摄像头对光照一致性要求极高。左右镜头曝光参数必须严格同步,否则匹配质量断崖式下降。建议用硬件触发同步,别依赖软件同步。
2.2.3 鱼眼摄像头
鱼眼摄像头,视角能到220度,几乎能看到半个球。代价是什么?畸变。图像边缘的物体被严重拉伸,直线变成曲线。
我曾经在环视系统里用鱼眼,发现车旁边的行人被拉成了「面条人」。后来做了畸变校正,才恢复正常。但校正后的图像边缘分辨率会下降,这是物理限制,没办法。
2.3 摄像头标定基础
标定,就是给摄像头「量尺寸」。你要知道它的焦距、主点、畸变参数,才能把图像坐标和真实世界坐标对应起来。
标定分两步:
- 内参标定:确定焦距、主点、畸变系数
- 外参标定:确定摄像头在车上的位置和朝向
内参标定常用张正友标定法。拿一个棋盘格,拍十几张不同角度的照片,算法自动算出内参。我建议拍的时候,棋盘格要占画面1/3以上,角度变化要大(俯仰、偏航、滚转都要有),否则标定结果不稳定。
外参标定更麻烦。你需要知道摄像头相对于车体坐标系的位置。我在量产项目里用过的方法:把车停在标定间,用已知尺寸的标定物,通过PNP算法解算外参。
注意:标定不是一次性的。摄像头在车上会受到振动、温度变化影响,外参会慢慢漂移。我建议每3-6个月做一次外参校验。曾经有个项目,跑了半年后车道线投影偏差了20厘米,就是因为外参漂了。
2.4 摄像头数据特点
摄像头数据有什么特点?我总结了四点:
- 信息丰富:一张图里有颜色、纹理、形状、语义信息。这是激光雷达和毫米波雷达比不了的。
- 受光照影响大:逆光、夜间、隧道出入口,摄像头直接「瞎」掉。我做过统计,夜间摄像头有效检测距离只有白天的40%。
- 缺乏直接深度:单目没有深度信息,双目虽然有但精度有限。这是摄像头最大的短板。
- 数据量大:1080p@30fps的摄像头,每秒数据量约150MB。对计算和存储都是压力。
为什么会这样?因为摄像头是被动传感器,它依赖环境光。没有光,它就没办法。这也是为什么感知融合系统一定要把摄像头和激光雷达、毫米波雷达结合起来——取长补短。
我个人习惯,在项目初期先跑一遍摄像头数据,看看哪些场景下检测失效。比如隧道出口的「白洞效应」、雨天的反光、夜晚的远光灯直射。这些场景都要单独处理。
一句话总结:摄像头是感知系统的「眼睛」,但它有近视、夜盲、怕强光。标定是让它「戴对眼镜」,融合是让它「配个拐杖」。