4. 对焦窗口选择:全局窗口与局部窗口、中心权重窗口、多区域窗口(九宫格)、基于人脸/物体检测的自适应窗口、窗口大小对精度的影响
对焦窗口怎么选?这个问题,我当年刚入行时也纠结过很久。
说白了,窗口选得好,对焦就成功了一半。窗口选得不好,哪怕你的算法再牛,也白搭。你想想看,如果窗口里同时包含了前景和背景,对比度评价函数算出来的值就会很混乱,镜头不知道该听谁的。
4.1 全局窗口 vs 局部窗口
全局窗口,就是把整张图像的所有像素都参与计算。听起来很公平对吧?但实际用起来问题不少。
- 优点:信息量大,不容易漏掉细节
- 缺点:计算量大,容易受背景干扰
我在项目中遇到过这样一个场景:拍一张白纸上的黑色文字,全局窗口效果很好。但换成拍窗外的风景,背景里的天空和远处的山全进来了,对焦结果飘忽不定。为什么会这样?因为全局窗口把低对比度的天空也算进去了,拉低了整体的评价值。
局部窗口,只取图像中间一小块区域。这是最经典的做法,也是很多手机摄像头默认的方案。
- 优点:计算快,抗干扰能力强
- 缺点:如果主体不在画面中央,就完蛋了
嗯,这里要注意:局部窗口的大小不是随便定的。我见过有人把窗口设成10x10像素,结果稍微有点噪声,评价值就剧烈抖动。太小了不行,太大了又失去局部意义。
我的经验:窗口大小一般取图像总像素的1/16到1/8比较稳妥。比如1080p的图像,窗口取120x68左右,效果不错。
4.2 中心权重窗口
中心权重窗口,说白了就是给图像不同位置分配不同的权重。中心区域权重高,边缘区域权重低。这是一种折中方案。
我记得有一次做安防摄像头的项目,场景里经常有人从画面边缘走进来。如果用纯局部窗口,人没到中心区域时对焦就不管了。用全局窗口呢,背景里的树叶晃动又干扰很大。最后我用了中心权重窗口,效果好了很多。
权重分配方式有很多种,我常用的有两种:
| 权重类型 | 分配方式 | 适用场景 |
|---|---|---|
| 高斯权重 | 中心权重最高,向四周平滑衰减 | 一般拍摄场景 |
| 阶梯权重 | 中心区域权重1.0,中间区域0.6,边缘0.2 | 需要快速计算的场景 |
小技巧:权重窗口的系数最好归一化,不然不同窗口大小下的评价值范围不一致,会影响后续的爬山算法判断。
4.3 多区域窗口(九宫格)
九宫格窗口,就是把画面分成3x3的网格,每个格子独立计算对比度,然后综合判断。这种方法在相机领域用得很多。
我曾经踩过一个坑:九宫格每个格子都算一遍对比度,然后取最大值作为最终评价值。结果呢?画面里有个强光源,那个格子的对比度特别高,镜头就对着光源对焦了,主体反而模糊了。
正确的做法应该是:
- 计算每个格子的对比度评价值
- 剔除异常值(比如过亮或过暗的格子)
- 对剩余格子加权平均
- 权重可以根据场景动态调整
九宫格的好处很明显:它能覆盖画面的大部分区域,同时又保留了局部信息。但坏处也明显——计算量是单窗口的9倍。在嵌入式平台上,这可不是闹着玩的。
避坑指南:我曾经在低端平台上硬上九宫格,结果帧率直接掉了一半。后来改成先粗筛,只对对比度高的几个格子做精细计算,才把性能拉回来。
4.4 基于人脸/物体检测的自适应窗口
这才是现代智能对焦的核心。先检测出人脸或物体,然后窗口跟着目标走。
自适应窗口的流程大概是这样的:
1. 运行检测算法(人脸检测、物体检测等)
2. 获取目标区域的边界框(Bounding Box)
3. 将边界框略微扩大(一般扩20%-30%)
4. 以此区域作为对焦窗口
5. 如果目标移动,窗口跟着移动
我做过一个项目,需要在会议摄像头上实现人脸跟踪对焦。一开始直接用检测框作为窗口,结果发现人脸稍微侧一下,检测框变小了,对焦就飘了。后来我把检测框固定扩大1.5倍,稳定性好了很多。
这里有个关键点:检测算法的帧率和稳定性。如果检测算法本身就不稳定,窗口忽大忽小,对焦就会来回跳动。我建议检测算法至少跑在15fps以上,并且要做时间上的平滑滤波。
我的建议:自适应窗口不要完全依赖检测结果。最好加一个fallback机制——检测不到目标时,自动切换回中心权重窗口或九宫格窗口。
4.5 窗口大小对精度的影响
窗口大小这个问题,我花了好几年才真正吃透。它直接影响三个东西:
- 精度:窗口越大,对比度曲线的峰值越平缓,精度下降
- 稳定性:窗口越小,噪声影响越大,评价值抖动越厉害
- 速度:窗口越大,计算量越大,对焦速度变慢
你想想看,这是一个三角关系。你不可能三个都做到最好,必须做取舍。
我整理了一个经验表格,供你参考:
| 窗口大小(占图像比例) | 精度 | 稳定性 | 速度 | 推荐场景 |
|---|---|---|---|---|
| 1/32 | 高 | 低 | 快 | 微距、文字拍摄 |
| 1/16 | 较高 | 中 | 较快 | 一般拍摄 |
| 1/8 | 中 | 高 | 中 | 运动场景 |
| 1/4 | 低 | 很高 | 慢 | 低光照、高噪声 |
我记得有一次做低光照场景的优化,窗口太小了,噪声把对比度信号完全淹没了。后来我把窗口扩大到1/4图像大小,虽然精度下降了,但至少能对上焦。在低光照下,能对上焦比精度高更重要。
实用技巧:可以在粗对焦阶段用大窗口(快速找到大致位置),细对焦阶段用小窗口(精确定位)。这叫多尺度对焦策略,效果很好。
4.6 本章知识体系
下面这张图总结了各种对焦窗口的特点和适用场景,你可以快速回顾:
最后说一句:没有最好的窗口,只有最适合的窗口。不同场景、不同硬件平台,窗口策略都要调整。我做了这么多年,每次换项目都要重新调窗口参数。这很正常,别指望一套方案打天下。
总结:对焦窗口的选择,本质上是在精度、稳定性和速度之间做权衡。理解每种窗口的优缺点,结合你的实际场景,才能做出最优选择。
公众号:蓝海资料掘金营,微信deep3321