3、多帧对齐的必要性:手持拍摄的抖动问题、运动物体的鬼影现象、对齐失败导致的伪影
好,我们直接进入正题。上一章讲了多帧HDR的基本原理,说白了就是拍多张不同曝光的照片,然后合成一张高动态范围的图。但这里有个大前提——这些照片得是对齐的。
你想想看,手持拍摄时手会抖,场景里可能有车在动、人在走。如果直接把这几张图叠在一起,结果会怎样?我刚开始做HDR那会儿,第一次合成手持拍摄的夜景,出来的图边缘全是重影,亮的地方像糊了一层虚影。当时我就意识到:不对齐,HDR就是空中楼阁。
这一节,我们就来掰扯清楚:为什么非要对齐?不对齐会出哪些幺蛾子?
3.1 手持拍摄的抖动问题
手持拍摄,手抖是常态。哪怕你屏住呼吸,按快门的瞬间也会产生微小的位移。对于单张照片,这点抖动可能不明显。但对于多帧HDR,问题就大了。
我们拍三张照片:欠曝、正常、过曝。假设第一张和第三张之间,相机向右偏移了2个像素。那么,同一个物体在两张照片里的位置就不同了。合成时,这个物体的边缘就会出现错位。
我做过一个测试:用三脚架拍了一组,又手持拍了一组。三脚架那组合成后细节锐利,手持那组边缘全是锯齿状的伪影。你看,这就是抖动的代价。
关键点:手持抖动导致的像素偏移,通常在1-5个像素之间。别小看这几个像素,在HDR合成中,它们足以毁掉整张图的清晰度。
那怎么办?对齐算法就是干这个的。它会把每张图都“拉”到同一个坐标系下,让同一个像素点对应场景中的同一个位置。
3.2 运动物体的鬼影现象
抖动问题还算好解决,毕竟相机整体移动,是个全局变换。真正头疼的是运动物体。
想象一下这个场景:你站在街边拍HDR,第一张欠曝时,一辆自行车从左边骑过来。第二张正常曝光时,自行车骑到了中间。第三张过曝时,自行车已经到右边了。
合成时,这三张图里自行车的位置都不一样。算法如果强行对齐,就会把三辆不同位置的自行车叠在一起——这就是鬼影。
鬼影长什么样?像半透明的幽灵,边缘模糊,颜色混杂。我见过最夸张的一个案例,是有人在拍日落时,一只鸟飞过画面。合成后,那只鸟变成了三只重叠的“幻影鸟”,整个画面瞬间就废了。
注意:鬼影是HDR合成中最难处理的伪影之一。它不像抖动那样可以用全局变换解决,因为运动物体只占画面的一部分,而且运动轨迹复杂。
为什么会这样?因为HDR合成假设所有帧的静态背景是对齐的,但运动物体破坏了这一假设。算法需要区分哪些区域是静态的,哪些是动态的,然后只对静态区域做融合,动态区域则要特殊处理——比如只取其中一帧的数据。
3.3 对齐失败导致的伪影
就算我们用了对齐算法,也不能保证100%成功。对齐失败时,会产生各种奇奇怪怪的伪影。我总结了几种常见的:
- 边缘重影:物体边缘出现双线或模糊,像没戴眼镜看东西。这通常是因为对齐精度不够,或者场景中有细小的纹理。
- 颜色溢出:过曝帧的亮部颜色“染”到了欠曝帧的暗部区域。比如天空的蓝色渗到了树枝上,看起来很不自然。
- 结构断裂:原本连续的线条(比如电线、栏杆)在合成后断成了几截。这往往是因为对齐算法在纹理稀疏的区域失效了。
- 块状伪影:图像上出现一块一块的色斑,像马赛克。这通常是基于块匹配的对齐算法在运动边界处搞砸了。
我曾经处理过一组室内HDR照片,场景里有百叶窗。百叶窗的条纹很细,对齐算法死活对不准。合成后,百叶窗变成了一团糊状,完全看不出原来的纹理。后来我换了一种基于光流的对齐方法,才勉强搞定。
我的经验:对齐失败往往发生在纹理重复、运动剧烈、或者曝光差异过大的区域。遇到这种情况,不要死磕一种算法,试试不同的对齐策略,或者干脆手动标记运动区域。
下面这张图,展示了从输入到对齐失败再到最终伪影的完整链路。你可以直观地看到问题出在哪。
从这张图可以看得很清楚:手持抖动和运动物体是两大“元凶”。它们让对齐算法压力山大,一旦扛不住,伪影就出来了。
3.4 为什么不能跳过对齐?
有人可能会问:我拍的时候用三脚架,场景里也没运动物体,是不是就不用对齐了?
嗯,理论上可以。但现实中,即使三脚架也会被风吹动,地面震动也会导致微位移。而且,不同曝光帧的镜头畸变、色差也不一样,这些都需要对齐来校正。
我个人的习惯是:不管什么场景,对齐这一步绝不省略。哪怕只是做一次简单的全局配准,也能避免90%以上的伪影问题。省掉这一步,后面修图的时间可能是对齐时间的十倍。
一句话总结:多帧对齐不是可选项,而是HDR重建的必选项。它解决的是“多张图如何变成一张好图”这个核心问题。