3、图像传感器:CCD与CMOS区别、像素结构与对焦采样窗口、帧率与对焦速度的关系
做自动对焦系统,第一个绕不开的硬件就是图像传感器。说白了,传感器就是相机的「眼睛」。你算法写得再漂亮,传感器不给力,一切都是白搭。这一节我跟你聊聊传感器选型里那些跟对焦强相关的门道。
3.1 CCD与CMOS:老江湖与新势力的对决
先说说CCD和CMOS的区别。很多教科书会告诉你CCD噪声低、CMOS功耗小。嗯,这些都对,但站在自动对焦的角度,我更关心的是——谁更适合做快速、精准的对焦采样。
CCD(电荷耦合器件):
- 全局快门,所有像素同时曝光。这对高速运动物体的抓拍很友好。
- 读出速度慢。我早年做工业相机项目时用过CCD,帧率撑死30fps,再高就烫得不行。
- 功耗高,发热大。发热会带来暗电流噪声,影响对焦评价函数的稳定性。
CMOS(互补金属氧化物半导体):
- 卷帘快门居多,逐行曝光。高速运动时会有果冻效应,但对焦采样通常不受影响。
- 读出速度快。现在手机上的CMOS轻松跑到120fps甚至240fps。
- 功耗低,发热小。适合长时间运行。
我的建议:除非你做的是天文摄影或者极低光照场景,否则自动对焦系统首选CMOS。原因很简单——帧率高,对焦才能快。我最近做的一个激光雷达项目,用的就是全局快门CMOS,兼顾了速度和噪声。
| 特性 | CCD | CMOS |
|---|---|---|
| 快门类型 | 全局快门 | 卷帘快门(部分有全局) |
| 读出速度 | 慢(≤30fps) | 快(可达数百fps) |
| 功耗 | 高 | 低 |
| 噪声 | 低(读出噪声小) | 较高(但近年改善明显) |
| 对焦适用性 | 适合静态场景 | 适合动态/实时对焦 |
3.2 像素结构与对焦采样窗口
像素结构这事,很多人觉得跟对焦没关系。其实关系大了去了。
像素的基本结构:
- 微透镜:把光线汇聚到感光区域。角度越大,边缘画质越差。
- 滤色片(Bayer阵列):RGGB排列。对焦时通常只取绿色通道,因为人眼对绿光最敏感。
- 光电二极管:把光信号转成电信号。填充因子越大,灵敏度越高。
这里有个关键点——对焦采样窗口。你不可能把整个传感器的几千万像素全拿来算对焦,那样太慢了。我一般会在传感器上划出一个或多个矩形区域,只读取这些区域的像素数据。
实战技巧:采样窗口的位置和大小直接影响对焦精度。我习惯把窗口放在画面中央偏下一点的位置——因为大多数拍摄主体的眼睛或脸部都在这个区域。窗口大小建议是总像素的5%~10%,太小了容易受噪声影响,太大了计算量吃不消。
举个例子,一个2000万像素的传感器(5184×3888),我通常会取一个640×480的窗口,大概30万像素。这个量级用MCU算对比度检测,一帧内就能搞定。
3.3 帧率与对焦速度的关系
帧率,就是传感器每秒能输出多少帧图像。对焦速度,就是镜头从起点移动到合焦位置需要的时间。这两者之间是什么关系?
核心公式:
对焦总时间 = 帧率延迟 + 镜头移动时间 + 算法处理时间
帧率决定了你「看」到画面的刷新速度。假设帧率是30fps,那么两帧之间的间隔是33ms。如果镜头移动一步需要10ms,那你每走一步都要等33ms才能看到结果。这33ms就是「盲区」——你不知道镜头现在的位置到底合焦了没有。
我做过一个对比实验:
- 30fps下,从最近端到合焦,大概需要15步,总耗时约500ms。
- 120fps下,同样15步,总耗时约200ms。
你看,帧率翻4倍,对焦速度提升了2.5倍。为什么不是4倍?因为镜头移动时间占了很大比重。
注意:帧率不是越高越好。帧率高了,每帧的曝光时间就短,信噪比会下降。我曾经在一个暗光项目中把帧率从60fps提到120fps,结果对焦评价函数的曲线全是毛刺,根本找不到峰值。后来我学乖了——动态调整帧率,亮场景用高帧率,暗场景降帧率保画质。
3.4 知识体系总览
下面这张图是我自己画的,把传感器相关的对焦要素串在了一起。你一看就明白。
3.5 避坑指南
最后分享几个我踩过的坑:
- 别迷信高像素:对焦采样不需要全像素。我见过有人用4800万像素全尺寸算对焦,结果帧率掉到5fps,对焦慢得像蜗牛。
- 注意Binning模式:很多CMOS支持像素合并(binning),可以提升帧率和灵敏度。但binning后的图像分辨率降低,对焦精度会受影响。我一般只在暗光场景下用2×2 binning。
- 卷帘快门与LED频闪:如果你在室内用CMOS做对焦,LED灯的100Hz/120Hz频闪会在图像上产生明暗条纹。这会导致对焦评价函数出现周期性波动。解决办法是让曝光时间等于频闪周期的整数倍。
一句话总结:选CMOS,开采样窗口,帧率往高了调,但别忘了信噪比。这就是传感器层面做好自动对焦的三大法宝。