4. 自动对焦核心算法
自动对焦(AF)是相机3A中与用户体感最直接相关的环节。曝光偏一点用户未必立刻察觉,白平衡偏一点可能被当作风格,但对焦一旦拉风箱、反复犹豫或对到背景,用户会立即判定“这台相机不行”。高通平台的AF调优,核心是把PDAF的相位信息、对比度搜索的可靠性、场景识别与区域选择策略组合成一条稳定的决策链。
一、PDAF原理:用“相位差”直接测距
PDAF(Phase Detection Auto Focus)的本质,是在传感器像素中嵌入成对的遮光像素,分别只接收来自镜头左右(或上下)侧的光线。当被摄物合焦时,左右两路信号在像素上的分布一致;离焦时,两路信号会出现横向错位,这个错位量就是相位差(PD值)。PD值的大小反映离焦量,正负号反映离焦方向——这是PDAF相比纯对比度AF最大的优势:它能一次性判断“往哪边调、大概调多少”。
高通平台通常把PD信息以Defocus(离焦量)形式输出,单位可换算为镜头步数。调优时最关键的三个参数是:PD置信度(confidence)、PD线性度(linearity)和PD噪声底。置信度低时不能强行相信PD,否则会出现“对到一半突然跳走”;线性度差时,PD换算的步数会失真,需要分段标定;噪声底决定最小可信离焦量,低于该值应转入精细搜索。
二、AF搜索策略:先PD粗定位,再CDAF精修
高通AF框架通常采用“PD优先、CDAF兜底”的混合策略。一次完整的AF流程可拆为四步:
- PD粗定位:读取当前帧PD,若置信度足够,直接按Defocus换算镜头步数,一步跳到接近合焦的位置,通常可覆盖80%以上离焦量。
- CDAF精修:在PD落点附近做小范围爬山搜索,用FV(Focus Value,通常为高频能量)找精确峰值,补偿PD线性度误差。
- 合焦确认:检查FV是否超过阈值、PD是否落入死区、连续多帧是否稳定,三者满足才锁定。
- 失焦重触发:若FV下降或PD重新变大,按场景决定是否重新进入搜索。
三、爬山算法:FV曲线的搜索逻辑
爬山算法是CDAF的核心。它从当前位置出发,按固定步长向FV增大的方向移动,直到FV开始下降,再反向缩小步长逼近峰值。关键参数包括:
- 粗调步长:决定搜索速度,过大容易跨过峰值,过小则拉风箱。
- 细调步长:决定最终精度,一般取粗调步长的1/4~1/2。
- FV阈值:低于阈值认为场景无纹理,应放弃CDAF或转PD。
- 最大搜索范围:防止在低纹理场景无限搜索。
典型AF参数片段(示意):
af_pd_confidence_threshold = 0.6
af_pd_dead_zone_steps = 8
af_coarse_step = 32
af_fine_step = 8
af_fv_threshold = 120
af_max_search_range = 400
af_face_roi_weight = 0.75
af_motion_pd_weight = 0.85
四、场景识别与对焦区域选择
同一套AF参数不可能适配所有场景。高通平台通常结合人脸检测、运动检测、亮度统计与PD分布,把场景粗分为人脸/人眼、近景微距、风景远景、运动弱光四类,再动态调整ROI与权重。
| 场景 | ROI策略 | PD权重 | 搜索范围 | 典型风险 |
|---|---|---|---|---|
| 人脸/人眼 | 人眼小框优先 | 高 | 小 | 侧脸漏检 |
| 近景微距 | 中心+多点 | 中 | 受限 | 拉风箱 |
| 风景远景 | 全屏/大区域 | 高 | 大 | 对到近处前景 |
| 运动弱光 | 中心跟踪 | 高 | 中 | 噪声误判 |
五、案例与复盘:一次“对到背景”的排障
某项目在逆光人像下频繁对到背景。日志显示PD置信度正常,但人脸ROI权重被场景分类器判为“风景”,导致ROI切到全屏,背景高对比边缘抢占了FV峰值。复盘结论有三点:
- 场景分类器的人脸置信度阈值偏高,逆光下人脸偏暗被漏检;
- ROI切换缺少迟滞(hysteresis),一帧误判就切走;
- PD权重在风景模式下过高,未对人脸区域做局部加权。
总结来看,PDAF提供方向与距离,CDAF提供精度兜底,爬山算法决定搜索效率,场景识别与区域选择决定“对哪里”。四者不是并列关系,而是一条从测距到决策、从决策到执行的完整链路。调优的核心,是让每一环的置信度与阈值互相匹配,而不是单独把某一环调到极致。