1. 摄像头成像原理:从光子到数字信号
做图像质量调优,第一件事就是搞清楚——你手里的图像到底是怎么来的。很多人一上来就调参数,结果越调越乱。说白了,你得先理解从光子到数字信号这条流水线,才知道每个旋钮是干什么的。
我个人习惯把成像过程分成三段:光子捕获 → 电荷转换 → 数字输出。每一段都有坑,咱们一个一个说。
1.1 光子到电子:CMOS 传感器在干什么?
你想想看,镜头把光线聚到传感器上,传感器表面有上千万个像素点。每个像素点其实就是一个光电二极管。光子打上去,产生电子——这叫光电效应。
嗯,这里要注意:产生的电子数量跟光子数量成正比。光越强,电子越多。但有个上限,叫满阱容量(Full Well Capacity)。一旦电子装满了,再多光子也没用,图像就“过曝”了。
核心概念:CMOS 传感器每个像素输出的不是“亮度值”,而是“电子数量”。这个电子数量经过一系列处理,才变成你看到的数字图像。
我在项目中遇到过一个问题:某款传感器在强光下拍出来的高光区域发紫。查了半天,原来是像素的满阱容量不够,电子溢出到相邻像素了。这就是 blooming(溢出现象)。后来换了更大阱容的传感器才解决。
1.2 从模拟到数字:ADC 转换
电子信号是模拟量,计算机只认数字。所以每个像素的电压值要经过模数转换器(ADC)变成数字码。
ADC 的位数决定了图像的量化精度:
| ADC 位数 | 灰度等级 | 常见应用 |
|---|---|---|
| 8-bit | 256 级 | 老式摄像头、低端安防 |
| 10-bit | 1024 级 | 主流手机摄像头 |
| 12-bit | 4096 级 | 专业相机、车载摄像头 |
| 14-bit 以上 | 16384+ 级 | 工业检测、医疗影像 |
我曾经踩过一个坑:某项目用 10-bit ADC,但 ISP 流水线里有个模块只支持 8-bit 输入。结果每次处理完,暗部细节全丢了。后来我强制要求所有模块对齐位宽,才把问题解决。
避坑指南:ADC 位数越高,动态范围越大,但数据量也越大。调优时一定要确认 ISP 流水线各模块的位宽是否一致。我曾经因为位宽不匹配,浪费了整整两周排查暗部噪声问题。
1.3 ISP 流水线:从 RAW 到 YUV
传感器输出的 RAW 数据,说白了就是一堆“灰蒙蒙”的像素值。它既不是彩色图像,也不符合人眼视觉习惯。这时候就需要 ISP(图像信号处理器) 上场了。
ISP 流水线通常包含以下模块:
- 黑电平校正(BLC)——去掉传感器暗电流带来的固定偏移
- 镜头阴影校正(LSC)——补偿镜头边缘亮度衰减
- 坏点校正(DPC)——修复传感器上的死像素
- 去马赛克(Demosaic)——从 Bayer 模式恢复全彩色
- 白平衡(AWB)——让白色在不同光源下看起来都是白的
- 色彩校正矩阵(CCM)——把传感器色彩空间映射到标准色域
- 伽马校正(Gamma)——调整亮度响应曲线,适配显示设备
- 降噪(NR)——去除传感器和电路引入的噪声
- 锐化(Sharpening)——增强边缘细节
你想想看,这 9 个模块串在一起,任何一个参数调不好,最终图像都会出问题。我见过有人把锐化拉满,结果图像全是振铃效应——边缘像长了毛刺一样。
个人经验:调 ISP 参数时,我习惯从后往前调。先调降噪和锐化,再调色彩和伽马。因为后面的模块对前面的结果有放大作用。顺序搞反了,前面调得再好,后面一处理又乱了。
1.4 知识结构总览
下面这张图把整个成像流水线串起来了。我建议你保存下来,以后调参时对照着看。
1.5 几个你必须记住的关键指标
做图像质量调优,有些数字你得烂熟于心。我列了个表,建议你贴在工位上:
| 指标 | 含义 | 典型值 | 调优影响 |
|---|---|---|---|
| 动态范围 | 最亮与最暗区域的比值 | 60-80 dB | 高动态范围保留更多细节 |
| 信噪比(SNR) | 信号与噪声的比值 | > 40 dB | SNR 越低,图像越“脏” |
| 量子效率(QE) | 光子转化为电子的效率 | 50-80% | QE 越高,暗光性能越好 |
| 读出噪声 | 传感器读出电路引入的噪声 | < 5 e- | 噪声越低,暗部越干净 |
| 帧率 | 每秒输出图像数量 | 30-120 fps | 帧率越高,运动越流畅 |
一个小技巧:拿到新传感器,我第一件事就是看它的动态范围和读出噪声。这两个指标基本决定了这颗传感器的底子好不好。如果动态范围不到 60 dB,后期调优再努力也救不回来。
1.6 本章小结
从光子到数字信号,这条流水线看起来复杂,但核心就三件事:光电转换、模数转换、ISP 处理。你只要把这三段的原理和关键参数搞明白,后面调优时就知道每个参数在动什么。