099、HDR+的"对齐vs融合"——Google HDR+的对齐策略与暴力融合的差异,以及多帧对齐的精度对最终画质的影响去年年底在帮一家方案商调他们的多帧HDR算法,场景是手持夜景,三帧合成,曝光比是-2/0/+2。他们自研的对齐模块用的是全局仿射变换,跑在DSP上,单帧耗时控制在8毫秒以内,当时觉得性能指标挺漂亮。结果实拍样张一出来,暗部细节全糊,高光边缘有鬼影,最要命的是天空部分出现了那种“果冻状”的纹理扭曲——不是运动模糊,是那种对齐错位后融合产生的结构性伪影。我当时盯着屏幕看了半天,第一反应是融合权重出了问题,把debug工具打开,把三帧的亮度差、运动矢量场、融合权重全部dump出来,最后才发现问题出在对齐精度上——全局仿射模型根本扛不住手持拍摄的视差变化,尤其是近景树叶和远景建筑之间的深度差异,一个矩阵参数根本没法同时补偿两套运动。这件事让我重新把Google HDR+的论文和开源代码翻出来过了一遍,发现一个很有意思的现象:HDR+的“对齐”和“融合”其实是两个完全独立的设计决策,但很多人把它们混为一谈。HDR+用的是“粗对齐+细融合”的路线,对齐阶段只做全局平移估计,精度到亚像素级别就停,然后融合阶段用空间变化的权重去“容忍”剩余的对齐误差。而很多国产方案走的是“精对齐+暴力融合”的路线,对齐阶段恨不得做到逐像素光流,融合阶段却用固定的权重表,结果就是对齐误差被融合过程放大,反而比HDR+那种“对齐不完美但融合聪明”的方案更容易出问题。先说说HDR+的对齐策略。它把参考帧选为中间曝光的那一帧,然后对另外两帧做全局平移估计,用的是金字塔下采样+归一化互相关,精度大概在1/4像素左右。这个精度放在今天看并不高,但HDR+的聪明之处在于它