1. HDR成像基础:什么是高动态范围、HDR vs SDR对比、相机响应曲线(CRF)原理

1.1 什么是高动态范围?

先问大家一个问题:你站在窗边拍照,窗外阳光明媚,室内光线昏暗。普通手机拍出来,窗外一片死白,室内一团漆黑。但人眼却能同时看清窗外和室内的细节。为什么?

因为人眼的动态范围大约在 1000000:1 左右,而普通显示器和相机传感器只有 1000:1 到 2000:1。这个差距,就是我们要用 HDR 技术来填补的。

动态范围,说白了就是场景中最亮和最暗区域的亮度比值。用公式表示:

DR = L_max / L_min

其中 L_max 是场景最大亮度,L_min 是场景最小亮度。单位通常用 f-stop(档)或 dB 表示。

关键指标:1 f-stop = 2倍亮度变化。人眼约 20 f-stops,普通相机约 10-12 f-stops,HDR 成像目标 16-20 f-stops。

我在项目中遇到过最极端的场景——逆光下的车牌识别。白天强光直射,车牌反光到 10000 cd/m²,而车底阴影只有 0.1 cd/m²。普通相机根本拍不清车牌号。这就是典型的 HDR 刚需场景。

1.2 HDR vs SDR:差距到底有多大?

直接上对比表,大家感受一下:

对比维度 SDR(标准动态范围) HDR(高动态范围)
亮度范围 0.1 - 100 cd/m² 0.0005 - 10000 cd/m²
色深 8-bit(256级) 10/12-bit(1024/4096级)
色域 BT.709(约35%可见色域) BT.2020(约75%可见色域)
典型场景 室内、阴天、均匀光照 逆光、夜景、强光+阴影
存储格式 JPEG(8-bit) EXR/TIFF(16-bit float)

嗯,这里要注意:SDR 的 8-bit 意味着每个通道只有 256 个灰度级。而 HDR 的 10-bit 有 1024 级,12-bit 有 4096 级。你想想看,在暗部区域,8-bit 可能只有 10 个灰度级来描述从黑到深灰的过渡,而 12-bit 有 160 级。这就是为什么 HDR 画面暗部细节更丰富、过渡更平滑。

我的经验:在嵌入式平台上做 HDR 融合时,我建议优先保证 10-bit 数据通路。8-bit 做 HDR 融合,量化误差会直接吃掉暗部细节,得不偿失。

1.3 相机响应曲线(CRF)原理

为什么需要 CRF?因为相机传感器是线性器件,但人眼对亮度的感知是非线性的。更麻烦的是,相机内部的 ISP 管线会对原始数据进行各种非线性变换——伽马校正、色调映射、去马赛克等等。

结果就是:像素值和场景亮度之间不是简单的线性关系。这个映射关系,就是 CRF(Camera Response Function)。

用数学表达:

I = f(E * t)

其中:

  • I:最终像素值(0-255 或 0-1023)
  • E:场景辐照度(场景真实亮度)
  • t:曝光时间
  • f(·):CRF 函数(非线性映射)

我曾经踩过一个坑:直接用线性模型做多曝光融合,结果融合出来的图像颜色怪异、对比度失真。后来才意识到,必须先把不同曝光的图像通过 CRF 逆变换映射到辐照度域,在辐照度域做融合,再通过 CRF 正变换映射回像素域。

避坑指南:千万不要在不同曝光图像之间直接做像素值加权平均!因为 CRF 是非线性的,不同曝光下的像素值不能直接比较。我曾经见过有人把 1/30s 和 1/1000s 的两张图直接平均,结果暗部偏紫、亮部偏绿——这就是 CRF 非线性导致的色偏。

1.4 CRF 的数学建模与标定

实际工程中,我们常用两种方式处理 CRF:

  1. Debevec 方法:基于多曝光图像对,通过最小二乘法拟合 CRF 曲线。精度高,但需要多张不同曝光的图像。
  2. Gamma 模型:用 f(x) = x^(1/γ) 近似 CRF。简单快速,但精度有限,γ 通常取 2.2。

Debevec 方法的核心公式:

g(Z_ij) = ln(E_i) + ln(t_j)

其中:
- Z_ij:第 i 个像素在第 j 张曝光图像中的像素值
- g(·):CRF 的逆函数(我们要拟合的目标)
- E_i:第 i 个像素的辐照度
- t_j:第 j 张图像的曝光时间

我个人习惯用 Debevec 方法做离线标定,Gamma 模型做在线快速处理。在嵌入式平台上,Gamma 模型只需要一个 LUT(查找表),计算量几乎为零。

1.5 本章知识体系

下面这张图总结了 HDR 成像的核心概念和它们之间的关系:

HDR成像基础 - 知识体系 HDR成像基础 - 知识体系 高动态范围成像 动态范围定义 DR = L_max / L_min HDR vs SDR 亮度 / 色深 / 色域 CRF原理 I = f(E · t) 关键指标 人眼:~20 f-stops 相机:10-12 f-stops HDR目标:16-20 f-stops 核心差异 SDR:8-bit / BT.709 HDR:10/12-bit / BT.2020 亮度范围差100倍 工程方法 Debevec:高精度离线 Gamma模型:在线快速 LUT实现,零计算量 核心目标:在辐照度域融合,再映射回像素域 避免直接在像素域做加权平均

1.6 小结

这一章我们讲了三个核心概念:

  • 动态范围:场景最亮和最暗的比值,HDR 的目标是逼近人眼的感知能力。
  • HDR vs SDR:亮度范围差两个数量级,色深和色域也全面碾压。嵌入式平台上要优先保证 10-bit 数据通路。
  • CRF 原理:相机像素值和场景亮度之间的非线性映射。记住一句话——在辐照度域做融合,再映射回像素域。