2、HDR成像原理:多帧曝光HDR、单帧HDR(DOL/HDR)、HDR合成中的噪声问题

聊HDR处理,绕不开成像原理。很多同学一上来就调算法参数,结果噪声和细节两头都抓不住。说白了,你得先知道HDR是怎么拍出来的,才知道噪声从哪来。

2.1 多帧曝光HDR:最朴实的方案

多帧曝光HDR,也叫时序HDR。做法很简单:连续拍几张不同曝光时间的帧,然后合成。

  • 短曝光帧:保留高光细节,但暗部全是噪声。
  • 长曝光帧:暗部信噪比高,但高光容易过曝。
  • 中间帧:负责过渡,衔接亮部和暗部。

我在项目中遇到过一个问题:手持拍摄时,三帧之间会有微小的位移。如果不做对齐,合成出来的图像边缘会有重影。嗯,这个坑我踩过好几次。

核心公式(简化版):

I_HDR(x,y) = w_short * I_short(x,y) + w_mid * I_mid(x,y) + w_long * I_long(x,y)

权重w由像素的曝光质量和置信度决定。高光区域w_short大,暗部区域w_long大。

多帧HDR的优点很明显:动态范围大,画质好。但缺点也致命——运动物体容易鬼影。你想想看,拍夜景时有人走过,三帧里人的位置不一样,合成出来就是半透明的幽灵。

2.2 单帧HDR(DOL/HDR):像素级骚操作

单帧HDR,也叫DOL(Digital Overlap)HDR。它不靠多帧,而是靠像素内分割曝光。

具体怎么做?每个像素内部拆成两个子像素:一个用短曝光,一个用长曝光。一次快门,同时读出亮部和暗部信息。

特性 多帧HDR 单帧DOL/HDR
帧数 2~3帧 1帧
运动鬼影 严重 无
动态范围 高(>120dB) 中等(80~100dB)
噪声水平 低(可多帧降噪) 高(单帧无法降噪)
硬件成本 低(普通传感器即可) 高(需要特殊像素设计)

我个人的习惯是:如果场景里有运动物体,优先选DOL/HDR。但你要做好心理准备——它的噪声比多帧HDR大得多。

避坑指南:我曾经在安防监控项目里用了DOL/HDR,结果夜间场景的暗部噪声大到无法接受。后来不得不加一个时域滤波模块,用前后帧的信息来降噪。所以,DOL/HDR不是万能的,噪声问题必须提前规划。

2.3 HDR合成中的噪声问题

不管用哪种HDR方案,合成阶段都会遇到噪声。我把它归纳为三类:

  1. 短帧噪声:曝光时间短,光子数少,散粒噪声占主导。信噪比低,暗部尤其明显。
  2. 长帧噪声:曝光时间长,热噪声和固定模式噪声积累。虽然信号强,但噪声值也大。
  3. 合成噪声:多帧融合时,权重切换区域会出现噪声突变。比如亮部和暗部的交界处,噪声水平不一致,看起来像一条噪声带。

为什么会这样?我给你画个图就明白了。

HDR合成噪声来源示意图 短曝光帧(高噪声) 中曝光帧(中等噪声) 长曝光帧(低噪声) 权重融合 + 对齐 噪声突变带 暗部噪声放大 高光区噪声残留 噪声问题根源 1. 短帧噪声在暗部被放大(因为增益高) 2. 长帧噪声在亮部被压缩(但仍有残留) 3. 权重切换区噪声不连续,形成视觉瑕疵

你看,噪声不是均匀分布的。它在暗部最严重,在亮部最轻微,在过渡区最突兀。这就是为什么HDR去噪不能用一个全局滤波器搞定。

我的经验:处理HDR噪声,我习惯分区域处理。暗部用强降噪,亮部用弱降噪,过渡区做平滑渐变。这样既能压住噪声,又不会把高光细节磨掉。

2.4 噪声与细节的第一次交锋

HDR合成阶段,噪声和细节就开始打架了。你想想看:

  • 为了压制短帧噪声,你加大降噪强度 → 结果短帧里的高光细节被磨平了。
  • 为了保留长帧细节,你降低降噪强度 → 结果长帧的热噪声全带进来了。
  • 为了平滑过渡区,你做了空间滤波 → 结果边缘模糊了。

这就是去噪与细节权衡的起点。在RAW域,这个矛盾更尖锐——因为RAW数据还没经过任何处理,噪声和信号混在一起,你很难分清哪些是细节、哪些是噪声。

我记得有一次做手机HDR算法,客户要求暗部信噪比提升6dB,同时不能损失任何高光纹理。我试了十几种方案,最后发现:必须在合成阶段就引入噪声模型,而不是等合成完了再降噪。

关键结论:

  • 多帧HDR:噪声低,但运动场景难处理。
  • 单帧DOL/HDR:无鬼影,但噪声高。
  • 合成噪声:不是均匀的,需要分区处理。
  • 噪声与细节的权衡:从合成阶段就开始了,别等到后处理才想。