071、自动对焦(AF)技术演进:从CDAF到PDAF再到双像素对焦的实战对比
071、自动对焦AF技术演进从CDAF到PDAF再到双像素对焦的实战对比去年在调试某款旗舰手机的前置摄像头时遇到一个让人抓狂的问题用户在暗光下自拍画面总是来回“拉风箱”对焦速度慢得像蜗牛。我盯着示波器上的AF驱动波形发现镜头在来回震荡就是锁不住焦点。当时用的是传统的反差对焦CDAF在低照度场景下对比度信息太弱算法根本找不到峰值。后来换成相位对焦PDAF问题解决了大半但边缘画质又出现了微妙的模糊。最后逼得我们上了双像素对焦Dual Pixel才算彻底搞定。今天就把这些年和AF死磕的经验掰开揉碎讲清楚。从CDAF说起那个“拉风箱”的年代CDAF的原理很简单——通过图像传感器捕捉的画面计算相邻像素的亮度差异差异最大的位置就是焦点。听起来很直观但实际调试时全是坑。坑1搜索策略的陷阱早期代码里常见这种写法// 别这样写会死循环while(contrastthreshold){move_lens(step);contrastcalculate_contrast();}这里踩过坑如果场景是纯色墙壁contrast永远达不到threshold镜头会一直跑到物理限位。正确做法是加超时保护和反向搜索机制。我习惯在驱动层设置一个最大步数计数器超过就强制回退到初始位置。坑2低照度下的信噪比灾难暗光下CDAF的表现堪称灾难。因为对比度计算依赖像素间的亮度梯度噪声会淹没真实信号。实测数据在10 lux照度下CDAF的对比度峰值信噪比PSNR从正常光照的35dB骤降到12dB算法基本失效。这时候PDAF的优势就体现出来了。PDAF的实战相位差检测的利与弊PDAF通过在传感器上集成专门的相位检测像素通常占2%-5%直接测量光线入射角度差一次计算就能知道镜头该往哪个方向移动多少距离。速度比CDAF快一个数量级。关键参数相位差与离焦量的映射关系// 这里踩过坑不同模组的映射曲线差异巨大floatphase_to_defocus(intphase_diff){// 别硬编码系数每个模组都要标定floatkget_calibration_value(sensor_id);returnphase_diff*k;}实际调试中发现同一批次的模组因为微透镜对准误差k值可能偏差20%以上。所以量产时必须在产线做逐颗标定否则会出现“一半手机对焦快一半对焦慢”的诡异现象。PDAF的致命伤像素牺牲与画质损失相位检测像素因为需要遮挡一半感光区域导致这些像素的灵敏度比普通像素低30%-50%。在暗光下这些像素会变成明显的“坏点”必须做插值补偿。补偿算法写不好照片上就会出现网格状伪影。我们曾经在某个项目里因为补偿参数没调好被用户投诉“照片有马赛克”。双像素对焦每个像素都是相位检测器双像素技术把每个像素都分成左右两个光电二极管相当于整个传感器都变成了相位检测阵列。这解决了PDAF的两个核心痛点像素覆盖率100%且没有灵敏度损失。调试中的意外发现第一次拿到双像素sensor的样片时我习惯性地用PDAF那套标定流程。结果发现相位差曲线异常平滑线性度比传统PDAF好太多。传统PDAF因为只有稀疏的检测点相位差计算容易受局部纹理影响而双像素是全像素参与统计稳定性大幅提升。但双像素也有坑微透镜串扰左右像素分离后微透镜的聚焦精度要求更高。如果模组组装有偏差左右像素会互相串扰导致相位差计算偏移。我们曾遇到一个案例某批次模组在高温下微透镜膨胀串扰率从1%飙升到8%对焦直接偏焦。算法复杂度双像素产生的是全分辨率相位图数据量是传统PDAF的20倍以上。ISP的带宽和算力必须跟上否则帧率会掉。在某个低端平台项目里我们被迫降采样相位图结果对焦精度又打折扣。实战对比三种方案在典型场景下的表现场景1室内正常光照300 luxCDAF0.8秒成功率95%PDAF0.15秒成功率99%双像素0.1秒成功率99.5%差距不大但CDAF的“拉风箱”概率明显更高。场景2暗光10 luxCDAF2.5秒成功率40%经常失败PDAF0.3秒成功率85%但边缘画质下降双像素0.2秒成功率98%画质无损失双像素在暗光下的优势是碾压级的。场景3运动物体行人快速走过CDAF基本失效PDAF0.2秒但容易跟丢双像素0.08秒配合预测算法能稳定跟踪这里有个技巧双像素的相位图可以做运动矢量估计提前预判物体运动方向比单纯靠AF算法更准。个人经验性建议别迷信“全像素对焦”双像素虽然好但成本高、功耗大。对于中低端机型优化好的PDAF配合CDAF混合方案性价比更高。我见过太多项目为了“双像素”噱头把BOM成本拉高20%实际体验提升不到5%。标定是AF的灵魂无论哪种方案模组标定都是最关键的环节。我要求产线必须做三温标定-20℃、25℃、60℃因为温度对微透镜和驱动马达的影响远超预期。曾经有个项目常温下标定完美冬天在哈尔滨直接对焦失败就是因为没做低温标定。算法要“因地制宜”同一个AF算法在手机和车载上的表现天差地别。车载场景要求极低延迟50ms和高可靠性手机则更注重平滑度和功耗。别把手机那套直接搬到车载上否则会出安全事故。留好调试接口量产后的AF问题排查90%靠log。我习惯在驱动层保留原始相位差数据、马达位置、温度、光照度等关键信息的输出接口。线上出问题时能快速回放现场而不是靠猜。双像素的终极形态是“计算摄影”现在的高端方案已经开始用双像素做深度估计、散景模拟、甚至3D重建。AF只是它的基础功能未来潜力远不止于此。最后说句实在话AF技术发展到今天硬件层面的差异已经越来越小真正的壁垒在算法和调试经验。多花时间在标定流程和场景覆盖上比追逐最新硬件参数更有价值。