1、HDR成像基础:什么是高动态范围、多帧HDR合成原理、噪声的来源与分类
各位同学好,我是你们这门课的老朋友。在图像处理这行摸爬滚打了十几年,我见过太多因为噪声处理不当而翻车的HDR项目。今天咱们就从最基础的东西聊起——先把HDR成像的底子打牢,后面讲噪声抑制你才能听得明白。
1.1 什么是高动态范围?
说白了,动态范围就是一张图像能同时记录的最亮和最暗区域的亮度比值。你想想看,人眼在同一个场景里,能同时看清窗外的蓝天和室内的阴影细节。但普通相机呢?要么天空过曝一片死白,要么暗部欠曝一团漆黑。
这就是动态范围的差距。人眼的瞬时动态范围大概在10^5:1左右,而普通8-bit JPEG图像只有256:1。我当年第一次用单反拍逆光人像,背景天空一片惨白,人脸却黑得像剪影——那时候我就意识到,单帧成像的瓶颈太明显了。
高动态范围成像,就是要突破普通传感器的物理限制,把场景的真实亮度范围尽可能完整地记录下来。这里有个关键概念——场景动态范围和显示动态范围是两码事。前者是真实世界的亮度跨度,后者是显示器能呈现的范围。我们做HDR合成,本质上是在做“场景→显示”的映射优化。
1.2 多帧HDR合成原理
既然单帧搞不定,那就多拍几张呗。多帧HDR合成的核心思路很简单:用不同曝光时间的多张图像,各自捕捉场景的不同亮度区间,然后合成一张高动态范围的图像。
具体流程我画了张图,你看一眼就明白了:
流程看起来不复杂,对吧?但每个环节都有坑。我重点说说权重融合这一步——它直接决定了最终HDR图像的信噪比表现。
常见的权重函数有三种:
| 权重类型 | 公式 | 特点 | 适用场景 |
|---|---|---|---|
| 均匀权重 | w = 1/N | 简单粗暴,噪声平均效果最好 | 静态场景、低噪声环境 |
| 高斯权重 | w ∝ exp(-(I-0.5)²/σ²) | 中间亮度区域权重高,两端压低 | 一般场景,平衡细节与噪声 |
| 信噪比权重 | w ∝ SNR(I) | 根据像素的信噪比动态分配权重 | 高噪声场景,需要自适应处理 |
1.3 噪声的来源与分类
好了,终于到今天的重头戏了。噪声这东西,你躲不开,只能学会跟它共处。我当年做手机HDR算法时,被噪声折磨得够呛——白天还好,一到夜景模式,那噪点简直像雪花一样。
噪声主要分两大类:光子散粒噪声和读出噪声。前者是物理极限,后者是电路缺陷。
1.3.1 光子散粒噪声
光本身就是离散的光子,到达传感器的数量服从泊松分布。这意味着,即使场景亮度完全均匀,每个像素接收到的光子数也会有随机波动。这个波动就是散粒噪声。
它的特点是:信号越强,噪声越大。但别慌,信噪比是随着信号强度增加的——信号翻倍,噪声只增加√2倍,所以亮部信噪比高,暗部信噪比低。
1.3.2 读出噪声
读出噪声是传感器在将电荷转换为电压、再经过模拟前端放大和ADC量化过程中引入的噪声。它跟信号强度无关,是一个固定底噪。我见过最夸张的一次,某款传感器的读出噪声高达12个电子——这意味着暗部细节完全被噪声淹没了。
读出噪声的主要成分包括:
- 复位噪声(kTC噪声): 像素复位时电容热噪声,约√(kT/C)
- 1/f噪声: 晶体管低频噪声,在慢速读出时尤其明显
- ADC量化噪声: 模数转换的量化误差,LSB的±0.5
1.3.3 多帧HDR中的噪声特性
在多帧HDR合成中,不同曝光帧的噪声特性完全不同。我整理了一张表,方便你对比:
| 曝光帧 | 主要噪声类型 | 信噪比特点 | 对合成结果的影响 |
|---|---|---|---|
| 欠曝帧 (-2EV) | 读出噪声占主导 | 暗部SNR极低,< 10 dB | 暗部噪点放大,出现彩色噪斑 |
| 正常帧 (0EV) | 散粒噪声 + 读出噪声 | 中间亮度SNR约30-40 dB | 整体噪声水平适中 |
| 过曝帧 (+2EV) | 散粒噪声占主导 | 亮部SNR高,> 45 dB | 暗部细节好,但亮部可能饱和 |
1.4 噪声与HDR合成的矛盾
这里有个核心矛盾,我特别想强调一下:HDR合成需要多帧融合,但融合过程本身可能放大噪声。
你想想看,欠曝帧的暗部信噪比低,过曝帧的亮部信噪比高。如果我们简单地把它们加权平均,欠曝帧的噪声就会污染整个暗区。更麻烦的是,色调映射环节会把暗部提亮——这一提亮,噪声也跟着被放大了。
所以,多帧HDR合成中的噪声抑制,本质上是在做三件事:
- 帧间降噪: 利用多帧冗余信息,通过时域滤波降低随机噪声
- 自适应权重: 根据每帧的信噪比动态分配融合权重,压低噪声帧的贡献
- 后处理降噪: 在色调映射之后,对暗部做针对性降噪
这三件事说起来简单,做起来全是细节。后面的章节我会一个一个拆开来讲。今天先把基础概念理清楚——动态范围是什么、多帧合成怎么玩、噪声从哪里来。这些搞明白了,后面讲具体算法你才不会晕。