1. AF系统概述:自动对焦技术发展史、AF在手机与安防领域的应用、核心评价指标

各位同学好,我是你们这趟AF算法之旅的向导。做了十来年图像处理,从功能机时代一路摸爬滚打到今天,对焦这事儿,我自认还有点发言权。今天咱们先不急着写代码,先把AF的“前世今生”和“江湖地位”聊透。

你想想看,一张照片糊了,像素再高有什么用?自动对焦,说白了就是让镜头自己找到最清晰的那个位置。这背后,是一套精密的搜索与控制逻辑。

1.1 自动对焦技术发展史:从手动到智能

AF技术不是一天建成的。我刚开始入行那会儿,用的还是纯手动对焦,拧镜头拧得手指头疼。后来技术演进,大致经历了这么几个阶段:

阶段 核心技术 代表产品 我的评价
被动式AF(1980s) 反差检测(CDAF) 早期卡片机 慢,但准。光线好还行,暗处就抓瞎。
主动式AF(1990s) 红外/超声波测距 部分傻瓜机 不怕黑,但隔着玻璃就废了。
相位检测AF(2000s) PDAF(专用像素) 单反相机 快!但需要专用硬件,成本高。
混合AF(2010s至今) PDAF + CDAF + AI 智能手机、安防球机 又快又准,但算法复杂度上去了。

这里有个关键转折点——智能手机的爆发。手机内部空间就那么点,塞不下单反那套复杂的相位检测模块。于是,反差检测(CDAF) 成了主流。说白了,就是让马达带着镜头走一遍,找到图像对比度最高的那个点。

核心逻辑: 反差检测的本质是一个“爬山”过程。图像越清晰,相邻像素的亮度差异越大,这个差异值就是我们的评价函数。AF算法要做的,就是找到这个函数的峰值。

但CDAF有个天生的毛病——它不知道方向。它只知道当前点是不是比上一个点好,但不知道“好”的方向在哪。所以早期的手机对焦,经常能看到画面“拉风箱”——来回搜索,犹豫不决。

后来,索尼把PDAF像素集成到了CMOS上,手机AF才真正快起来。我2015年做第一款双摄项目时,就吃过这个亏——当时只用了纯CDAF,结果在暗光下对焦慢得像蜗牛,被客户骂得狗血淋头。嗯,从那以后,我对混合AF的敬畏心就刻在骨子里了。

1.2 AF在手机与安防领域的应用

同样是AF,手机和安防的需求完全是两码事。我分别说说。

手机领域:快、准、稳

  • 场景: 拍人、拍物、拍风景,随时切换。
  • 痛点: 用户手抖、物体移动、光线突变。
  • 常用方案: 双核对焦(Dual Pixel)、全像素八核对焦、激光辅助AF。
  • 我的经验: 手机AF最怕的是“微距”和“暗光”。微距时景深极浅,马达稍微多走一步就糊了;暗光下反差信号弱,评价函数曲线太平,算法容易陷入局部最优。我建议在微距场景下,强制限制搜索步长,宁慢勿错。

安防领域:远、稳、全天候

  • 场景: 监控、人脸抓拍、车牌识别,镜头通常不动。
  • 痛点: 变焦后重对焦、雨雾天气、夜间红外切换。
  • 常用方案: 步进电机+高精度霍尔传感器、预置位对焦、温度补偿。
  • 避坑指南: 我曾经做过一个安防项目,镜头在白天对焦好好的,一到晚上切换红外滤光片后,画面就虚了。查了三天才发现,是红外光波长不同导致焦平面偏移了。后来我们加了一个温度-焦距补偿表,才彻底解决。这个坑,你们以后大概率也会遇到。

小提示: 手机AF追求的是“快”,安防AF追求的是“稳”和“可重复性”。设计算法时,一定要先搞清楚应用场景,再决定搜索策略。

1.3 核心评价指标:速度、精度、鲁棒性

评价一个AF算法好不好,就看这三个指标。它们之间是互相制约的,你不可能同时做到极致。

指标 定义 典型要求 我的调优心得
速度 从启动到合焦的总时间 手机:<200ms;安防:<1s 粗搜用大步长,细搜用小步长。别在平坦区浪费步数。
精度 合焦位置与真实焦点的偏差 手机:<1个景深;安防:<0.5个景深 精度受限于马达步长和评价函数灵敏度。别盲目追求高精度,够用就行。
鲁棒性 在不同场景下都能稳定合焦 低照度、低对比度、运动场景 这是最难调的。我建议加一个“置信度”判断,如果评价函数曲线太乱,就切换到慢速模式。

注意: 速度与精度是一对天生的矛盾。你搜得快,可能错过峰值;你搜得细,时间就长。实际工程中,我们通常用“粗搜+细搜”的两步法来平衡。先大步快速找到峰值附近,再小步精确锁定。

下面这张图,是我自己总结的AF算法知识体系。你可以把它当成我们这门课的地图。

AF算法知识体系总览 AF系统概述 评价函数设计 搜索策略 马达控制 Tenengrad / Laplacian 爬山法 / 全局搜索 步进电机 / VCM 核心逻辑:评价函数提供“清晰度”的度量 → 搜索策略决定“怎么找” → 马达控制执行“怎么动” 三者环环相扣,任何一个环节出问题,最终画面都会糊。

这张图把AF系统拆成了三个核心模块:评价函数、搜索策略、马达控制。我们这门课,就是围绕这三个模块展开的。评价函数告诉你“清不清楚”,搜索策略告诉你“往哪走”,马达控制告诉你“怎么走”。

好了,第一章就到这里。内容不多,但都是基础。后面的章节,我们会一个一个模块地深入进去。记住我今天说的:理解场景,比理解算法更重要。