061、HDR融合算法:多曝光合成中的鬼影消除与细节保留
061、HDR融合算法:多曝光合成中的鬼影消除与细节保留一、凌晨三点的调试噩梦去年夏天,某旗舰机项目的夜景HDR调试,我在实验室盯着屏幕到凌晨三点。场景很简单:一个行人举着发光气球走过路灯下。三帧曝光——EV-2、EV0、EV+2——合成后,气球边缘出现了半透明的“幽灵”,行人的手臂像被撕裂成三段。更糟的是,暗部细节要么被鬼影区域的运动补偿抹成一片模糊,要么因为过度保留细节而让噪声炸裂。产品经理站在身后:“用户拍夜景人像,鬼影比噪点更致命。” 这句话我记到现在。HDR融合从来不是简单的加权平均,鬼影消除和细节保留是一对天生的冤家,你压下去一头,另一头就翘起来。二、多曝光合成的底层逻辑先理清基本盘。三帧或多帧不同曝光的图像,目的是扩展动态范围。但运动物体在不同帧里的位置不同,直接融合就会出现鬼影——同一个物体在最终图像里出现多个半透明副本。传统做法分两类:基于像素的融合和基于块的融合。像素级简单粗暴,对每个像素位置计算权重,亮部取短曝光,暗部取长曝光。但遇到运动区域就崩了——短曝光帧里行人的位置和长曝光帧里不一样,融合后行人边缘出现重影。基于块的融合稍微聪明点,把图像分成8x8或16x16的块,对每个块检测运动,运动块单独处理。但块边界会出现接缝,而且块大小选择本身就是个坑——块太大,小物体运动检测不到;块太小,噪声和纹理被误判为运动。三、鬼影消除的核心:运动检测与补偿我踩过最大的坑,是把运动检测做得太“干净”