1. 摄像头基础与选型:从原理到实战
做嵌入式视觉这几年,我经手过的摄像头模组少说也有几十种。从手机上的小模组,到车载的GMSL相机,再到工业检测用的全局快门相机……说实话,选型这件事,看着简单,坑却不少。
这一章,咱们就把摄像头的基础掰开揉碎。你搞懂了原理,选型才不会翻车。
1.1 摄像头工作原理:光是怎么变成数字信号的?
摄像头的工作,说白了就是「光电转换」四个字。
光通过镜头,落在传感器上。传感器上的每个像素点,把光信号转成电信号。再经过ADC(模数转换器)变成数字值。最后通过ISP(图像信号处理器)输出你看到的画面。
核心流程: 镜头 → 传感器(光电转换)→ ADC(模数转换)→ ISP(图像处理)→ 输出
我在一个工业检测项目里遇到过一个问题:画面总是有条纹。排查了半天,发现是ADC的采样时钟和LED照明频率没对齐。嗯,这种坑,没踩过的人根本想不到。
1.2 传感器类型:CCD vs CMOS
现在市面上99%的摄像头都是CMOS。CCD基本退出了消费和工业市场,只在一些特殊科研领域还能见到。
| 对比项 | CCD | CMOS |
|---|---|---|
| 读出方式 | 逐行转移,统一输出 | 每个像素独立读出 |
| 噪声 | 低 | 较高(但现代工艺已改善) |
| 功耗 | 高(需要多组电压) | 低(单电压供电) |
| 速度 | 慢 | 快(可做到上千帧) |
| 成本 | 高 | 低 |
| 适用场景 | 科研、天文、医疗 | 消费电子、工业、车载、安防 |
我的建议: 除非你有特殊需求(比如极低噪声、高动态范围),否则直接选CMOS。省电、便宜、速度快,生态也成熟。
1.3 分辨率与帧率:鱼和熊掌不可兼得
分辨率决定你「看得多清楚」,帧率决定你「看得多流畅」。
但这两者之间有个硬约束——带宽。
带宽 = 分辨率 × 帧率 × 像素位深
举个例子:
- 1080p(1920×1080)@ 30fps,8bit RAW:1920×1080×30×8 ≈ 497Mbps
- 4K(3840×2160)@ 30fps,8bit RAW:3840×2160×30×8 ≈ 1.99Gbps
你看,分辨率翻4倍,带宽翻了4倍。接口跟不上,你就得降帧率或者压缩。
避坑指南: 我曾经在一个项目里选了200万像素的传感器,想着帧率跑60fps没问题。结果接口是USB 2.0,理论带宽480Mbps,实际能跑到的也就200Mbps左右。最后只能降到15fps。选型时一定要算接口的实际有效带宽,别被理论值忽悠了。
1.4 镜头焦距与视场角:你看到的世界有多大?
镜头决定了摄像头能「看到」的范围和距离。
焦距越短,视场角越大,看到的范围越广,但远处的物体越小。
焦距越长,视场角越小,看到的范围越窄,但远处的物体越大。
| 焦距 | 视场角(近似) | 典型应用 |
|---|---|---|
| 2.8mm | 约100° | 全景监控、大范围场景 |
| 6mm | 约50° | 人脸识别、门禁 |
| 12mm | 约30° | 车牌识别、远距离监控 |
| 25mm | 约15° | 工业检测、长距离观察 |
这里有个公式:
视场角(水平) = 2 × arctan(传感器宽度 / (2 × 焦距))
你想想看,同样的焦距,放在1/3英寸传感器和1/2英寸传感器上,视场角是不一样的。选镜头时一定要匹配传感器靶面尺寸。
个人经验: 做车牌识别项目时,我一开始选了6mm镜头,结果车牌在画面里太小,识别率上不去。换成12mm后,车牌占画面比例大了,识别率直接从70%飙到95%。镜头选型,别光看视场角,得算算你的目标物体在画面里占多少像素。
1.5 接口类型:USB、MIPI、GMSL怎么选?
接口决定了数据传输的带宽、距离和稳定性。我按场景给你捋一捋。
USB接口
- 优点: 即插即用,生态好,开发简单
- 缺点: 传输距离短(一般5米以内),带宽共享,延迟不稳定
- 适用: 原型验证、桌面应用、低端工业
MIPI接口
- 优点: 带宽高(单lane可达2.5Gbps),延迟低,功耗低
- 缺点: 传输距离极短(一般30cm以内),需要专用处理器
- 适用: 手机、嵌入式板载摄像头、AI开发板
GMSL接口
- 优点: 传输距离远(可达15米以上),抗干扰强,支持同轴供电
- 缺点: 成本高,需要专用串行器/解串器
- 适用: 车载环视、远程监控、工业长距离传输
一句话总结: 桌面原型用USB,嵌入式板载用MIPI,车载和远距离用GMSL。
1.6 知识体系总览
下面这张图,把摄像头选型的核心要素串起来了。你对照着看,思路会清晰很多。
1.7 选型实战清单
最后,给你一份我平时做选型时用的检查清单。照着走一遍,基本不会漏东西。
- 明确场景: 室内还是室外?白天还是夜晚?运动还是静止?
- 算分辨率: 目标物体在画面里至少占多少像素?
- 定帧率: 运动速度多快?需要捕捉瞬间还是连续跟踪?
- 选传感器: CMOS够用吗?需要全局快门吗?
- 配镜头: 焦距算出来了吗?靶面匹配了吗?
- 定接口: 传输距离多远?带宽够吗?
- 算总带宽: 分辨率×帧率×位深,接口能扛住吗?
最后提醒一句: 别只看datasheet上的理论值。实际带宽、实际帧率、实际光照条件,都会打折扣。我习惯在选型阶段留出30%的余量。这样到了现场,心里不慌。