
065、AF的"爬山算法局限性"——为什么纯对比度AF在弱光下会来回拉风箱,结合PDAF与激光的混合对焦状态机设计从一台夜视仪一样的样机说起去年Q3接手一个安防枪机项目,客户反馈夜间模式对焦像抽风——画面先糊成一片,然后慢慢变清晰,突然又糊回去,来回折腾三四秒才稳住,偶尔干脆停在最糊的位置不动了。我拿到样机第一件事不是看代码,是拿手电筒照了下镜头前面的IR-CUT切换机构,确认没卡住。然后接上串口log,盯着AF的lens position曲线,发现一个典型现象:马达在某个区间内来回震荡,幅度越来越小,最后停在一个明显不是最佳焦点的位置。这不是硬件问题,是纯对比度AF在低信噪比场景下的经典失效模式。爬山算法的本质:你以为在爬山,其实在摸黑走台阶对比度AF的核心逻辑不复杂——把镜头移到某个位置,抓一帧图,算一个评价函数值(通常是高频能量或梯度统计量),然后朝评价函数增大的方向移动镜头,直到找到峰值。这本质是一个无约束优化问题,用的是最朴素的坐标上升法。问题在于,这个"山"的形状在弱光下会变得极其恶劣。白天光线充足时,评价函数曲线是光滑的单峰,梯度方向明确,步长可以设得比较大,几步就爬到顶。到了夜间, sensor增益拉到很高,噪声被放大,评价函数曲线变成一条布满毛刺的锯齿线——真实信号叠加了随机噪声,局部极大值点密密麻麻。爬山算法有个致命前提:它假设评价函数是局部单调的,即"当前点比前一个点高,就继续朝这个方向走"。但在噪声主导的区域,这个假设不成立。你测到"变高了",可能只是噪声的随机波动,于是镜头继续朝错误方向走,走到某个位置发现"变低了",又回头,来回震