1. Sensor 基础与选型:从光子到像素的硬核之旅
做嵌入式视觉这几年,我接触过不下二十种图像传感器。从最早的黑白 CCD 到现在的全局快门 CMOS,每次选型都像在走钢丝——参数摆在那,但真正决定成败的往往是那些「不起眼」的细节。
这一章,咱们就把 Sensor 的底裤扒干净。从工作原理到选型实战,我会把踩过的坑、流过的泪一并倒出来。
1.1 图像传感器工作原理:CCD vs CMOS
先说个最基础的问题:光子是怎么变成数字信号的?
简单来说,每个像素就是一个光电二极管。光子打进来,产生电子-空穴对,电子被收集、转移、放大、量化,最后变成你看到的像素值。
但 CCD 和 CMOS 的「搬运」方式完全不同。
| 对比项 | CCD | CMOS |
|---|---|---|
| 电荷读出方式 | 逐行转移,统一输出 | 每个像素独立读出 |
| 噪声水平 | 低(读出噪声约 2-3 e⁻) | 较高(约 5-10 e⁻) |
| 功耗 | 高(约 500 mW) | 低(约 100 mW) |
| 速度 | 慢(帧率受限) | 快(可做到 1000+ fps) |
| 成本 | 高 | 低 |
| 典型应用 | 天文、科研、医疗 | 消费电子、工业、车载 |
核心结论:现在 90% 以上的嵌入式视觉项目都用 CMOS。CCD 只在极低噪声、高动态范围场景下还有优势。我个人已经五年没在项目里用过 CCD 了。
为什么会这样?因为 CMOS 工艺进步太快了。背照式(BSI)、堆叠式(Stacked)技术把 CMOS 的噪声压到了接近 CCD 的水平,同时保留了低功耗、高帧率的优势。
1.2 关键参数:别被 datasheet 忽悠了
Datasheet 上的参数,说白了都是「实验室理想值」。真正落地时,你得知道哪些参数能信,哪些只能参考。
1.2.1 分辨率与帧率
分辨率好理解——像素阵列的宽×高。但帧率呢?它受限于两个东西:像素时钟和读出架构。
举个例子,一个 1920×1080 的 Sensor,像素时钟 72 MHz,理论上最大帧率是:
帧率 = 像素时钟 / (行像素数 × 列像素数 × 开销系数)
= 72e6 / (1920 × 1080 × 1.2)
≈ 29 fps
我的经验:实际帧率通常比理论值低 10-20%。因为还有 blanking、曝光时间、ISP 处理延迟。选型时留 30% 余量比较稳妥。
1.2.2 动态范围
动态范围(DR)是 Sensor 能同时记录的最亮和最暗区域的比值。单位是 dB。
公式很简单:
DR = 20 × log10(满阱容量 / 读出噪声)
比如满阱容量 10000 e⁻,读出噪声 5 e⁻,那 DR ≈ 66 dB。
但注意!高动态范围往往意味着低灵敏度。你想想看,满阱容量大了,每个光子产生的电压变化就小了。这是个 trade-off。
避坑指南:我曾经在一个户外监控项目里选了高动态范围的 Sensor,结果暗光下噪点满天飞。后来才发现,动态范围高是因为满阱大,但量子效率低,弱光信号根本填不满。所以 DR 和 QE 要一起看。
1.2.3 信噪比与量子效率
信噪比(SNR)决定了图像的「干净程度」。量子效率(QE)决定了 Sensor 对光的「敏感程度」。
这两个参数是孪生兄弟。QE 高了,同样光照下信号更强,SNR 自然就上去了。
我习惯用这个公式估算 SNR:
SNR = 20 × log10(信号电子数 / √(信号电子数 + 暗噪声²))
注意,分母里有个「信号电子数」的平方根——这是散粒噪声,物理极限,躲不掉的。
1.3 选型方法论:五步走,不翻车
选 Sensor 就像相亲——参数对得上只是第一步,真正过日子才知道合不合适。我总结了一套五步法:
- 明确应用场景——室内/室外?白天/黑夜?静止/运动?
- 确定核心参数——分辨率、帧率、DR、SNR 的底线是多少?
- 筛选候选型号——从 Sony、OmniVision、Onsemi 等主流厂商里挑 3-5 款。
- 评估接口与驱动——MIPI、LVDS、并行?驱动难度如何?
- 打样实测——别信 datasheet,自己上板子测。
我的铁律:第五步不能省。我见过太多「datasheet 完美,实测翻车」的案例。比如某款 Sensor 标称 120 dB 动态范围,实际在 60°C 高温下直接缩水到 80 dB。
1.4 实战案例:一个车载环视项目的选型复盘
去年我做了一个车载环视项目,要求 4 路 100 万像素、30 fps、动态范围 > 100 dB、工作温度 -40°C ~ 85°C。
当时候选了三款 Sensor:
| 型号 | 分辨率 | 帧率 | DR | 温度范围 | 价格 |
|---|---|---|---|---|---|
| Sensor A | 1280×960 | 30 fps | 110 dB | -40~85°C | $8.5 |
| Sensor B | 1280×800 | 45 fps | 95 dB | -30~80°C | $6.2 |
| Sensor C | 1920×1080 | 30 fps | 105 dB | -40~85°C | $12.0 |
Sensor B 价格最低,但 DR 和温度范围都不达标,直接 pass。Sensor C 参数最好,但价格太高,4 路下来成本吃不消。
最后选了 Sensor A。为什么?因为它的 DR 实测能到 108 dB,而且我们之前用过同系列的 Sensor,驱动代码可以直接复用,省了至少两周开发时间。
选型心得:驱动复用性往往比参数更重要。一个新 Sensor 的驱动调试,从零开始至少 2-4 周。如果项目周期紧,优先选熟悉的平台。
1.5 知识体系:一张图看懂 Sensor 选型
下面这张图是我自己整理的 Sensor 选型知识框架。每次做新项目前,我都会对着它过一遍。
嗯,这张图基本覆盖了本章的核心内容。从工作原理到实战案例,每个分支都对应一个选型决策点。你下次做选型时,可以照着这个框架走一遍,至少能避开 80% 的坑。