1. Camera系统概述:从光子到数字图像
做摄像头调优这些年,我最大的感受是:不懂硬件原理,调优就是瞎蒙。你连传感器怎么输出数据的都不知道,遇到偏色、噪点、拖影这些问题,根本无从下手。
这一章,咱们先把Camera系统的底裤扒干净。从光子怎么变成数字信号,到ISP内部干了什么,再到模组接口怎么选——把这些搞明白,后面30章你才能站得稳。
1.1 摄像头工作原理:光信号→电信号→数字信号
说白了,摄像头就是个光电转换器。光线通过镜头,打在传感器上,传感器把光强转换成电压,再经过ADC(模数转换器)变成数字值。
整个过程分三步:
- 曝光:快门打开,光线进入,传感器上的像素开始积累电荷
- 读出:快门关闭,每个像素的电荷被读出,转换成电压
- 量化:ADC把模拟电压转成数字值(通常是10bit或12bit)
关键指标:曝光时间、增益、帧率三者互相制约。你调高了增益,噪点就上来了;你降低了帧率,运动物体就糊了。这就是为什么调优永远在做权衡。
我记得刚入行时,有个项目在暗光下拍出来的画面全是雪花。我当时拼命调ISP的降噪参数,效果一直不理想。后来才发现——传感器增益设得太高了,信号还没进ISP就已经被噪声淹没了。嗯,从那以后我养成了习惯:先查传感器原始数据,再动ISP参数。
1.2 图像传感器:CMOS vs CCD
现在市面上99%的摄像头都用CMOS传感器。CCD基本退出了消费市场,只在一些工业、科研领域还能见到。
为什么CMOS成了主流?我列个表你就明白了:
| 对比项 | CMOS | CCD |
|---|---|---|
| 功耗 | 低(单电源供电) | 高(需要多路电压) |
| 读出速度 | 快(每个像素独立放大) | 慢(串行读出) |
| 噪声 | 较高(像素内放大器引入) | 低(读出电路简单) |
| 成本 | 低(标准CMOS工艺) | 高(专用工艺) |
| 集成度 | 高(可集成ADC、DSP) | 低(需要外部支持芯片) |
| 应用场景 | 手机、安防、车载、IoT | 天文、医疗、工业检测 |
我的经验:做消费电子项目,闭着眼睛选CMOS。但如果你做的是高精度工业检测,CCD在低噪声和均匀性上确实有优势。我曾经在一个医疗内窥镜项目里试过CMOS,暗光下的固定噪声怎么都消不掉,最后换了CCD才过标。
1.3 ISP图像信号处理器架构
ISP(Image Signal Processor)是摄像头的大脑。传感器输出的Raw数据,经过ISP一系列处理,才能变成你屏幕上看到的样子。
典型的ISP流水线长这样:
你可能会问:这些模块的顺序能调吗?能,但别乱调。比如降噪必须放在锐化之前,否则锐化会把噪声放大。白平衡必须在色彩校正之前,因为CCM矩阵依赖正确的白平衡系数。
避坑指南:我曾经在一个项目里,为了赶进度,把Gamma校正放在了白平衡前面。结果画面偏色怎么都调不正,折腾了两天才发现是流水线顺序搞反了。ISP的每个模块都有严格的依赖关系,顺序错了,神仙也救不了。
1.4 Camera模组组成与接口类型
一个完整的Camera模组,远不止传感器和镜头这么简单。我拆开给你看:
- 镜头(Lens):决定进光量和视场角。F值越小,进光越多
- 红外滤光片(IR Filter):截止红外光,防止偏色
- 传感器(Sensor):光电转换核心
- 软排线/基板(FPC/Substrate):电气连接
- 连接器(Connector):与主板对接
接口方面,目前主流就三种:
| 接口类型 | 带宽 | 传输距离 | 典型应用 | 我踩过的坑 |
|---|---|---|---|---|
| MIPI CSI | 最高 4.5 Gbps/Lane | 短(< 30cm) | 手机、平板、嵌入式 | 差分线等长没做好,画面出现条纹 |
| USB | USB 2.0: 480 Mbps USB 3.0: 5 Gbps |
中(< 5m) | PC摄像头、工业相机 | UVC协议兼容性问题,掉帧 |
| Parallel | 通常 8-16bit,几十MHz | 极短(< 10cm) | 低端MCU、老平台 | 信号串扰严重,分辨率上不去 |
个人建议:新项目能选MIPI就别选Parallel。MIPI的差分信号抗干扰能力强,而且带宽高,未来升级分辨率不用换接口。USB接口适合做即插即用的产品,但延迟和带宽稳定性不如MIPI。
说到接口,我记得有个血泪教训。一个车载项目,摄像头通过长FPC连接到主板,MIPI信号线没做等长处理。结果画面时不时出现水平条纹,查了三天,最后用示波器一看——数据线和时钟线的skew超过了MIPI规范允许的0.15UI。重新Layout后问题消失。
所以,硬件设计上的问题,软件调优是补不回来的。这也是为什么我把Camera系统概述放在第一章——你连硬件怎么工作的都不知道,后面调ISP参数就是在碰运气。