ISP 图像降噪 (Denoise) 模块技术文档
一、概述
图像降噪是 ISP Pipeline 中最复杂、调参工作量最大的模块之一。降噪本质是一个病态逆问题(Ill-posed Inverse Problem)—— 在去除噪声的同时必须尽可能保留真实信号(细节、纹理、边缘)。
一个好的降噪模块是在 噪声、细节、伪影 三者之间找到最优平衡。
二、噪声基础
2.1 噪声来源
| 来源 | 描述 | 特性 |
|---|---|---|
| 光子散粒噪声 (Photon Shot Noise) | 光子到达的随机性 | 泊松分布,信号越强噪声越强 |
| 读出噪声 (Read Noise) | Sensor 读出电路的热噪声 | 高斯分布,与信号无关 |
| 暗电流噪声 (Dark Current Noise) | 热激发产生的电子 | 随温度和时间增加 |
| 固定模式噪声 (FPN) | 像素间响应不一致 | 空间固定,可标定消除 |
| 量化噪声 (Quantization Noise) | ADC 量化误差 | 均匀分布 |
| 放大噪声 (Amplifier Noise) | 模拟增益放大 | 与增益成正比 |
2.2 噪声模型
I_observed = I_true + I_true^γ · N_shot + N_read
简化模型(常用工程近似):
σ_total² = K · S + σ_read²
其中:
S= 信号强度K= 散粒噪声系数(与 sensor 量子效率相关)σ_read= 读出噪声标准差
2.3 噪声特性总结
| 特性 | 描述 |
|---|---|
| 异方差性 | 噪声方差随信号强度变化(亮区噪声更大) |
| 色度噪声 | 低光下颜色通道的噪声更明显(由于 AWB 增益放大) |
| 相关性 | 经过 demosaic/CCM 后噪声变得有空间和通道相关性 |
| 非平稳性 | 不同亮度区域噪声特性不同 |
三、ISP Pipeline 中的降噪架构
典型的 ISP 采用 多级降噪 + 分域处理 策略:
RAW Domain → [NR1: RAW降噪] → Demosaic → RGB Domain → [NR2: RGB降噪] → YUV Domain → [NR3: YUV降噪]
3.1 三级降噪策略
| 阶段 | 位置 | 网格/域 | 主要目标 | 处理对象 |
|---|---|---|---|---|
| NR1 | Demosaic 前 | RAW Bayer | 去除 RAW 域噪声,防止 demosaic 放大噪声 | 各 Bayer 通道独立 |
| NR2 | Demosaic 后 / CCM 前 | RGB | 去除颜色校正后放大的噪声 | R/G/B 三通道联合 |
| NR3 | YUV 转换后 | YUV | 亮度和色度分离降噪 | Y(亮度)、Cb/Cr(色度) |
3.2 为何需要三级降噪
RAW 域噪声 (σ)
│
├── Demosaic 放大约 1.5~2×
├── AWB Gain 放大 (B 通道可达 2~4×)
├── CCM 放大 (矩阵运算放大噪声约 1.2~2×)
├── Gamma 在暗部放大噪声
└── Sharpening 进一步放大噪声
→ 噪声经 pipeline 逐级放大,因此需要在前端(RAW 域)尽早去除。
四、降噪算法分类
4.1 空域滤波 (Spatial Domain)
4.1.1 高斯滤波 (Gaussian Blur)
G(x,y) = (1 / 2πσ²) · exp(-(x²+y²) / 2σ²)
| 优点 | 缺点 |
|---|---|
| 计算量极低 | 各向同性,不保边缘 |
| 实现简单 | 边缘和细节同时被模糊 |
4.1.2 双边滤波 (Bilateral Filter)
BF 在高斯滤波基础上加入像素值差异权重:
BF[I]_p = (1/W_p) · Σ G_s(||p-q||) · G_r(|I_p - I_q|) · I_q
其中:
G_s= 空间域高斯核 (σ_spatial)G_r= 值域高斯核 (σ_range)W_p= 归一化因子
效果:距离近且像素值接近的像素贡献大 → 边缘保留
调参关键:
| 参数 | 说明 |
|---|---|
| σ_spatial | 空间滤波半径,越大越模糊 |
| σ_range | 像素值差异容忍度,越大边缘保护越弱 |
4.1.3 引导滤波 (Guided Filter)
使用引导图(通常就是原图自身)对图像进行滤波,假设引导图和输出之间存在局部线性关系。
q_i = a_k · I_i + b_k 对每个窗口 ω_k
优点:边缘保护强于 BF,计算可优化到 O(N)(box filter 加速),无梯度反转伪影。
4.1.4 非局部均值滤波 (Non-Local Means, NLM)
基于图像的自相似性假设,搜索全图中相似的 patch 做加权平均:
NLM[I]_p = Σ w(p,q) · I_q
w(p,q) = exp(-||Patch(p) - Patch(q)||² / h²)
| 优点 | 缺点 |
|---|---|
| 去噪效果极好,保留纹理 | 计算量极大 (O(N·W²·P²)) |
| 能保留重复纹理 | 搜索窗口大小与性能正反比 |
工程优化:限定搜索窗口、FFT 加速、patch 预选(积分图)。
4.2 变换域滤波
4.2.1 小波降噪 (Wavelet Denoising)
流程:
- DWT 分解 → 得到低频(LL) + 高频(LH/HL/HH) 子带
- 对高频子带做阈值收缩(Soft/Hard Thresholding)
- IDWT 重构
Soft Threshold: W_out = sign(W) · max(|W| - λ, 0)
Hard Threshold: W_out = W · (|W| > λ)
| 参数 | 说明 |
|---|---|
| 分解层数 | 越多频率细分越细,但层间相关性损失 |
| 阈值 λ | 与噪声标准差 σ 成正比 |
| 阈值类型 | Soft(平滑)/ Hard(保留边缘更锐利) |
| 小波基 | Haar(简单)/ Daubechies(平滑更好) |
4.2.2 BM3D (Block-Matching and 3D Filtering)
黄金标准降噪算法,NLM + 变换域 的结合:
1. Block-matching → 找相似 patch 堆叠成 3D 组
2. 3D 变换 → 对 3D 组做 3D DCT/Wavelet
3. 协同滤波 → 在变换域做阈值收缩
4. 聚合 → 加权平均重建
| 优点 | 缺点 |
|---|---|
| 目前单帧降噪效果最好的算法之一 | 计算量极大,实时难以实现 |
| 能有效保留精细纹理 | 对极端噪声效果下降明显 |
4.3 时域/多帧降噪 (Temporal / Multi-Frame NR)
利用相邻帧之间的冗余信息进行降噪,是 视频降噪的核心。
4.3.1 帧平均法
I_out(t) = α · I_current + (1-α) · I_out(t-1)
| 参数 | 说明 |
|---|---|
| α | 融合系数,α 越小时域平滑越强,但运动拖影越严重 |
| 固定 α | 实现简单,运动场景不适用 |
| 自适应 α | 根据运动检测结果动态调整 |
4.3.2 运动补偿时域滤波 (MC-TNR)
1. ME (Motion Estimation) → 计算当前帧与参考帧之间的运动矢量
2. MC (Motion Compensation) → 根据 MV 对齐参考帧
3. Temporal Fusion → 对齐后的像素做加权融合
4. 运动掩码生成 → 运动区域降低/关闭时域融合
运动估计算法:
| 算法 | 精度 | 计算量 |
|---|---|---|
| 块匹配 (Block Matching) | 中 | 中 |
| 光流法 (Optical Flow) | 高 | 高 |
| 分级搜索 (Hierarchical) | 中高 | 中 |
调试关键参数:
| 参数 | 说明 |
|---|---|
| 搜索范围 (Search Range) | ±4 ~ ±64 pixel |
| 块大小 (Block Size) | 8×8 ~ 32×32 |
| 运动阈值 (Motion Threshold) | 判断像素/块是否运动 |
| 时间权重 (Temporal Weight) | 运动区域降至 0,静止区域接近 1 |
| Kalman 增益 | 自适应融合帧间信息 |
4.4 深度学习降噪 (AI Denoise)
现代 ISP(如高通、联发科旗舰平台)广泛应用 CNN/Transformer 降噪。
代表性网络结构:
| 模型 | 特点 |
|---|---|
| DNCNN | 残差学习,直接预测噪声图 |
| FFDNet | 可调噪声水平 map,灵活控制降噪强度 |
| CBDNet | 非盲降噪 + 噪声估计子网络 |
| U-Net / RIDNet | Encoder-Decoder 结构,多尺度特征融合 |
| SwinIR / Restormer | Transformer 结构,全局自注意力 |
AI 降噪的工程挑战:
- 大量训练数据需求(配对 clean / noisy 数据)
- 推理延迟与功耗(NPU/DSP 部署)
- 泛化性(训练域 ≠ 推理域的噪声特征)
- 可控性(ISP 调参需要暴露强度参数)
混合方案:传统 + AI 结合,AI 用于最难处理的中低光场景,传统算法用于高光场景。
五、各域降噪详解
5.1 RAW 域降噪 (NR1)
5.1.1 Bayer 域的特性处理
Bayer RAW 是单通道数据(R/Gr/Gb/B 交替排列),降噪需考虑:
- 像素值差异不完全是噪声,可能是真实的颜色差异
- 不能直接做跨通道滤波(否则引入伪色)
5.1.2 常用 RAW 域降噪算法
Bayer 双边滤波:
- 只在相同颜色通道的像素之间做双边滤波
- 搜索区域 = 同色位置(如 R at (0,0) 只查 (0,0), (2,0), (0,2), (2,2) → 步长为 2)
Bayer NLM:
- 同色通道 patch 匹配
- patch 定义为相同 Bayer 模式的区域
Line-based Denoise(低功耗方案):
- 按 sensor 读出行的方向做 1D 滤波
- 配合行缓存做 2D
5.1.3 NR1 调参指南
| 参数 | 说明 | 典型范围 |
|---|---|---|
| σ_spatial (NR1) | RAW 域空间滤波半径 | 1.0 ~ 5.0 |
| σ_range (NR1) | RAW 域像素值容忍度 | 10 ~ 100 (12bit) |
| 通道独立 vs 联合 | R/Gr/Gb/B 是否用同一组参数 | 通常通道独立 |
| 暗部增强降噪因子 | 暗区噪声更明显,需更强降噪 | 1.0~3.0 |
| ISO 分档阈值 | 不同增益下切换参数 | 每档 2x gain |
5.1.4 NR1 对后续模块的影响
NR1 过强 → 细节丢失 → Demosaic 边缘模糊 → Sharpening 难恢复
NR1 过弱 → 噪声残留 → Demosaic 放大伪色 → CCM 放大噪声 → NR2 难以收拾
5.2 RGB 域降噪 (NR2)
5.2.1 为何 RGB 域需额外降噪
经过 AWB 增益 + CCM 后:
- 噪声被放大(尤其是 B 通道)
- 噪声变得有通道相关性
- 出现色度噪声
5.2.2 RGB 域算法
联合双边滤波:
- 引导图 = G 通道(绿通道信噪比最高)
- 对 R/B 通道使用 G 通道的边缘信息引导滤波
R_out(x) = (1/W) · Σ G_s(||x-y||) · G_r(|G(x)-G(y)|) · R_in(y)
色度噪声分离:
- 将 RGB 转为 YUV 空间
- 只对 U/V 做强降噪(人眼对色度细节不敏感)
- Y 通道做轻度降噪
5.3 YUV 域降噪 (NR3)
YUV 域降噪是 ISP 最成熟的降噪环节,几乎所有硬件 ISP 都支持。
5.3.1 Luma (Y) 降噪
算法选择:
- 硬件平台:双边滤波、guided filter、IIR 时域滤波
- 软件平台:NLM、BM3D、AI
调试参数:
| 参数 | 说明 | 调试要点 |
|---|---|---|
| Luma NR Strength | 降噪强度 | ISO 分档 |
| Edge Threshold | 边缘保护阈值 | 低阈值 → 更多细节保留,但噪声残留多 |
| Coring Threshold | 小幅度抑制 | 防止把细微纹理当成噪声 |
| Filter Window Size | 滤波窗口 | 5×5 ~ 17×17,大窗口降噪强但资源消耗大 |
| Texture Preservation | 纹理保留强度 | 高频区域降低 NR 强度 |
5.3.2 Chroma (Cb/Cr) 降噪
特点:
- 人眼对色度分辨率不敏感 → 可以做较强的降噪
- 色度噪声表现为彩色斑点 → 需特殊处理
调试参数:
| 参数 | 说明 | 典型值 |
|---|---|---|
| Chroma NR Strength | 色度降噪强度 | 比 Luma 高 2~4× |
| Cb/Cr 独立强度 | Cb/Cr 通道可分别设 | Cr (R偏) 噪声通常更大 |
| Y 值相关权重 | 低 Y 值时增强 Chroma NR | 按 Y 曲线插值 |
| Chroma 边缘保护 | 彩色边缘的保护强度 | 较低,防彩色渗色 |
5.3.3 3D 时域降噪 (3DNR)
核心流程:
Frame N-1 (Reference)
│ (Motion Estimation)
▼
Frame N (Current) → Motion Compensation → Temporal Fusion → Output
│
└→ Motion Mask → Spatial NR Fallback
关键算法模块:
a) 运动估计 (ME)
- 块匹配:SAD / SSD 代价函数
- 分级搜索(Hierarchical):下采样粗搜 → 原图精搜
- 子像素精度:1/2 ~ 1/4 pixel
b) 运动补偿 (MC)
- 根据 ME 计算的 MV 对参考帧 warp
- 使用双线性/双三次插值
c) 运动掩码 (Motion Mask)
motion_weight = f(SAD_block, threshold_low, threshold_high)
if SAD < th_low: motion_weight = 1.0 (静止)
if SAD > th_high: motion_weight = 0.0 (运动)
else: motion_weight = linear interpolation
d) 时域融合
I_out(t) = W_temporal · I_mc(t-1) + W_spatial · I_in(t)
其中 W_temporal + W_spatial = 1
| 场景 | 融合策略 |
|---|---|
| 静止区域 | 强时域融合 (W_temporal=0.9) |
| 慢速运动 | 中等时域融合 (W_temporal=0.5) |
| 快速运动 | 关闭时域融合 (W_temporal=0.0) |
3DNR 调参核心参数:
| 参数 | 说明 | 影响 |
|---|---|---|
| ME 搜索范围 | ±S pixels | 大范围 → 大运动场景好,但计算量倍增 |
| ME 块大小 | B×B | 大块 → 运动估计鲁棒但不够精细 |
| SAD 运动阈值 | th_low / th_high | 决定运动/静止判断灵敏度 |
| 时域融合系数 α | 静止帧的更新率 | α 小 → 降噪强但 convergence 慢 |
| 场景切换检测 | 整帧 SAD 阈值 | 快速切换场景时 reset 参考帧 |
六、降噪强度与 ISO 的映射关系
降噪参数必须随 ISO(增益)动态调节,这是调参工作的核心。
6.1 ISO 分档策略
ISO 50 → NR OFF 或极弱
ISO 100 → NR Level 1
ISO 200 → NR Level 2
ISO 400 → NR Level 3
ISO 800 → NR Level 4
ISO 1600 → NR Level 5
ISO 3200 → NR Level 6
ISO 6400+ → NR Level 7 (最大强度)
6.2 参数插值
参数不是离散跳变的,而是在相邻 ISO 档位之间线性/非线性插值:
param(ISO) = lerp(param(ISO_i), param(ISO_{i+1}), (ISO - ISO_i) / (ISO_{i+1} - ISO_i))
6.3 ISO 分档时各参数变化趋势
| 参数 | ISO 低 → 高 变化趋势 |
|---|---|
| σ_spatial (降噪半径) | 增大(1→7) |
| σ_range (值域容忍度) | 增大(去噪更强,边缘牺牲更多) |
| Edge Threshold | 降低(更多边缘被保护,但噪声残留增加) |
| Temporal Weight | 增大(多帧融合更强) |
| Motion Threshold | 降低(对运动更敏感,防止拖影) |
| Chroma NR Strength | 大幅增大 |
| Sharpening Strength | 降低(高 ISO 降低或关闭锐化) |
七、降噪模块调试流程
7.1 标准化调试流程
Step 1: 噪声特性测量
├── 测量 Sensor 噪声模型 (σ vs S 曲线)
├── 测量 RAW 域各通道噪声水平
├── 测量各 ISO 档位的噪声方差
└── 确定噪声的频谱特性
Step 2: NR1 (RAW 域) 调试
├── 固定 ISO,调整 σ_spatial / σ_range
├── 验证 demosaic 后伪色是否被抑制
├── 检查细节保留情况
└── 重复所有 ISO 档位
Step 3: NR2 (RGB 域) 调试
├── 调整 RGB 域联合双边滤波参数
├── 验证 CCM 后的噪声放大是否被补偿
└── 检查色度噪声
Step 4: NR3 (YUV 域) 调试
├── Luma NR 参数调优
├── Chroma NR 参数调优
├── 3DNR (时域) 参数调优
└── 验证运动场景
Step 5: 联合调优
├── NR1 + NR2 + NR3 联合验证
├── 确认各 NR 模块的分配是否合理
├── 噪声/细节/伪影三角平衡
└── 批量场景测试
7.2 典型调试场景
| 场景 | 照明条件 | ISO | 调试重点 |
|---|---|---|---|
| 户外阳光 | 10000+ lux | 50-100 | 降噪最弱,主要做 Luma 细节保留 |
| 户外阴天 | 1000-3000 lux | 200-400 | 轻度降噪,重点是边缘保护 |
| 室内灯光 | 100-500 lux | 400-800 | 中级降噪,Luma + Chroma 兼顾 |
| 室内暗光 | 10-50 lux | 1600-3200 | 强降噪,Chroma NR 优先 |
| 极限暗光 | < 5 lux | 6400+ | 最大强度降噪,牺牲细节保证可用性 |
| 运动场景 | 任意 | 任意 | 降低/关闭 3DNR,提高 spatial NR |
八、降噪质量评估
8.1 客观指标
| 指标 | 计算方式 | 说明 |
|---|---|---|
| PSNR | MSE 的对数表示 | 像素级误差,对噪声敏感但不能完全反映视觉质量 |
| SSIM | 亮度/对比度/结构相似性 | 与人眼感知相关性好 |
| MSSSIM | 多尺度 SSIM | 更好的感知相关性 |
| VIF | Visual Information Fidelity | 全参考,感知质量评估 |
| NIQE | Natural Image Quality Evaluator | 无参考,基于自然场景统计 |
| BRISQUE | Blind/Referenceless Image Spatial Quality | 无参考 |
| MTF50 保持率 | 降噪前后的 MTF50 比值 | 衡量细节保留能力 |
8.2 主观评估
| 评估项目 | 方法 | 关注点 |
|---|---|---|
| Flat Region Noise | 均匀区域(天空、墙壁) | 噪声颗粒是否细腻,是否有色斑 |
| Edge Preservation | 倾斜边缘(SFR 测试图) | MTF50 下降量、边缘振铃 |
| Texture Retention | Dead Leaves / 纹理图 | 纹理细节保留比例 |
| Motion Artifacts | 运动场景视频 | 拖影长度、闪烁程度 |
| Color Noise | 暗部色块 | 色度噪声残留、伪色 |
| Temporal Flicker | 静止场景视频 | 像素级闪烁、亮暗跳动 |
8.3 噪声图谱分析
使用 Noise Profile 分析工具:
- 拍摄均匀灰卡在不同 ISO 下
- 计算每个亮度级的噪声方差
- 绘制 σ-Luminance 曲线
- 对比降噪前后的曲线变化
降噪前: σ_total = √(K·S + σ_read²)
降噪后: σ_denoised = f(σ_total) 理想的 f 应在所有亮度级上都显著降低 σ
九、降噪相关的常见画质问题
9.1 问题排查表
| 问题表现 | 可能原因 | 解决方案 |
|---|---|---|
| 水彩化 / Watercolor Effect | NR 过强,尤其 Chroma NR | 降低 Chroma NR 强度,提高边缘保护阈值 |
| 塑料感 / Plastic Look | Luma NR 过强,纹理细节全失 | 降低 Luma NR σ_range,提高纹理保留参数 |
| 暗部彩色斑点 | Chroma NR 在暗部不够强 | 增大 Y 值相关的 Chroma NR 权重曲线 |
| 亮部噪声残留 | NR 统一参数,不平坦区域 NR 不足 | 降低 NR 对 Y 值的依赖;使用 adaptive NR |
| 运动拖影 / Ghosting | 3DNR 运动检测不敏感 | 降低运动阈值,增大运动区域 spatial NR 权重 |
| 闪烁 / Flickering | 时域融合速度匹配不当 | 增大 α(时域融合系数),或降低 3DNR 强度 |
| 边缘模糊 | σ_range 太大,边缘未保护 | 降低 σ_range,启用 edge-preserving 模式 |
| 摩尔纹 / Aliasing | Demosaic + NR 组合不当 | 加强 demosaic 后 anti-alias 滤波 |
| 降噪后振铃 (Ringing) | 变换域降噪阈值硬截断 | 改用 soft thresholding |
| Patch 伪影 / 块效应 | 块匹配类算法 + 空域不均匀 | 增大 overlap,或使用聚合权重优化 |
十、工程实现要点
10.1 硬件降噪 vs 软件降噪
| 维度 | 硬件 ISP | 软件 (CPU/GPU/NPU) |
|---|---|---|
| 实时性 | 30~60fps @ 4K | 取决于算力 |
| 功耗 | 几十 mW | 数百 mW ~ 几 W |
| 算法复杂度 | 低~中(BF, Guided, IIR) | 高(NLM, BM3D, AI) |
| 灵活性 | 寄存器参数可调,算法固定 | 算法可任意替换 |
| 位宽 | 12~14bit pipe | 16~32bit float |
| 内存带宽 | line buffer 级别 | 帧 buffer 级别 |
10.2 降噪效率优化技巧
空域降噪优化:
- 分离式滤波:2D Gauss → XY 方向分离计算 → O(N) 替代 O(N²)
- 积分图加速:box filter / guided filter 用积分图 O(1) 计算
- 降采样 + 上采样:在缩略图上算 NR map → 上采样到原图
- 去中心化:只对每像素的高频部分做引导(输出叠加到原图)
时域降噪优化:
- 子采样运动估计:在降采样帧上做 ME → 减少计算量
- 运动矢量预测:利用上一帧 MV 做预测,缩小搜索范围
- 分块自适应:静止块跳帧 ME,只对运动块做 ME
- 多参考帧存储管理:环形 buffer + 帧压缩
10.3 数据流注意事项
NR1 需要:
└── line buffer (Bayer pattern 对齐)
NR2 需要:
└── full frame buffer (RGB 3 通道)
NR3 (2D) 需要:
└── line buffer (YUV 420/422)
NR3 (3D) 需要:
└── 1~N 帧参考帧 buffer + MV buffer + motion mask buffer
十一、降噪参数速查表
11.1 NR1 (RAW Domain)
┌──────────────────┬────────────────────┬──────────┬────────────┐
│ Parameter │ Description │ Range │ ISO Trend │
├──────────────────┼────────────────────┼──────────┼────────────┤
│ nr1_spatial_sigma│ 空域 σ │ 0.5~5.0 │ ↗ │
│ nr1_range_sigma │ 值域 σ │ 10~200 │ ↗ │
│ nr1_r_gain │ CH-R 强度偏移 │ 0.5~2.0 │ — │
│ nr1_gr_gain │ CH-Gr 强度偏移 │ 0.5~2.0 │ — │
│ nr1_gb_gain │ CH-Gb 强度偏移 │ 0.5~2.0 │ — │
│ nr1_b_gain │ CH-B 强度偏移 │ 0.5~2.0 │ ↗ │
│ nr1_dark_boost │ 暗部增强倍数 │ 1.0~4.0 │ ↗ │
│ nr1_edge_protect │ 边缘保护阈值 │ 0~255 │ ↘ │
└──────────────────┴────────────────────┴──────────┴────────────┘
11.2 NR3 Luma (Y Domain)
┌─────────────────────┬──────────────────────┬──────────┬────────────┐
│ Parameter │ Description │ Range │ ISO Trend │
├─────────────────────┼──────────────────────┼──────────┼────────────┤
│ nr3_luma_strength │ 亮度降噪强度 │ 0~255 │ ↗ │
│ nr3_luma_edge_th │ 边缘保护阈值 │ 0~255 │ ↘ │
│ nr3_luma_coring │ 小幅度抑制阈值 │ 0~64 │ ↗ │
│ nr3_luma_window │ 滤波窗口大小 │ 3~17 │ ↗ │
│ nr3_luma_texture_k │ 纹理保留增益 │ 0~1.0 │ ↘ │
└─────────────────────┴──────────────────────┴──────────┴────────────┘
11.3 NR3 Chroma (UV Domain)
┌──────────────────────┬──────────────────────┬──────────┬────────────┐
│ Parameter │ Description │ Range │ ISO Trend │
├──────────────────────┼──────────────────────┼──────────┼────────────┤
│ nr3_chroma_strength │ 色度降噪强度 │ 0~255 │ ↗↗ │
│ nr3_chroma_cb_weight │ Cb 通道权重 │ 0.5~2.0 │ — │
│ nr3_chroma_cr_weight │ Cr 通道权重 │ 0.5~2.0 │ — │
│ nr3_chroma_y_weight │ Y 相关权重曲线 │ LUT │ — │
│ nr3_chroma_edge_th │ 色度边缘保护阈值 │ 0~255 │ ↘ │
└──────────────────────┴──────────────────────┴──────────┴────────────┘
11.4 3DNR (Temporal)
┌──────────────────────┬──────────────────────────┬──────────┬────────────┐
│ Parameter │ Description │ Range │ ISO Trend │
├──────────────────────┼──────────────────────────┼──────────┼────────────┤
│ me_search_range │ 运动估计搜索范围 │ 4~64 │ — │
│ me_block_size │ 运动估计块大小 │ 8~32 │ ↗ │
│ me_sad_th_low │ 静止 SAD 阈值 │ 100~1000 │ ↘ │
│ me_sad_th_high │ 运动 SAD 阈值 │ 500~5000 │ ↘ │
│ temporal_alpha │ 时域融合系数 (静止) │ 0.1~0.5 │ ↘ │
│ temporal_beta │ 时域融合系数 (运动) │ 0.8~1.0 │ — │
│ scene_change_th │ 场景切换检测阈值 │ 10~100 │ — │
│ ref_frame_count │ 参考帧数量 │ 1~5 │ ↗ │
└──────────────────────┴──────────────────────────┴──────────┴────────────┘
十二、降噪调参经验法则
-
先搞定静态(单帧),再做动态(多帧)
- 单帧降噪是基础,3DNR 是锦上添花
- 3DNR 无法完全弥补单帧降噪的问题
-
Chroma NR 加强,Luma NR 克制
- 色度噪声人眼敏感但色度细节不敏感 → Chroma NR 可大胆做
- 亮度噪声人眼敏感,但亮度细节也同样敏感 → Luma NR 需有节制
-
暗部用强 NR,亮部用弱 NR
- 暗部 SNR 低但人眼对暗部细节不敏感
- 亮部 SNR 高但人眼对亮部细节最敏感
-
降噪强度 ≤ 锐化强度
- 降噪过度导致的模糊无法被锐化完全恢复
- 锐化会放大噪声残留 → 应先降噪再锐化
-
每个 ISO 独立调优,不可只调一两档就线性外推
- 不同 ISO 下噪声特性(的分布/频谱/相关性)可能完全不同
- 高 ISO 时 chroma NR 和 luma NR 的比例应大幅变化
-
NR 参数与 AE/AWB 耦合
- 曝光时间越长 → 噪声越多 → 需要更强 NR
- AWB 增益越极端(如暖色灯下 B 通道 gain 大)→ B 通道需要更强 NR
-
降噪不是越强越好
- 降噪过度的图像看起来"不真实"(塑料感)
- 保留一定程度的细微噪声(Grain)反而给人更自然的印象
- 胶片质感的保留是高端影像的重要特征
-
全局降噪 + 局部自适应
- 全局统一参数无法适应场景内容变化
- 基于纹理复杂度 / 边缘强度 / 亮度级做局部自适应 NR
十三、总结
降噪是 ISP 整个 Pipeline 中最核心也最耗时的调参模块。一个好的降噪方案需要:
正确的噪声模型 + 合适的算法选择 + 精细的 ISO 分档 + 多级分工协同
- 了解 Sensor 噪声特性是调参的基础
- NR1/NR2/NR3 分工协作,各司其职
- 降噪的参数在不同 ISO 之间平滑过渡
- 降噪与细节保留的动态平衡是画质竞争的核心差距来源
- 运动场景下时域降噪的鲁棒性是视频画质的关键
- 深度学习的引入正在改变传统降噪范式
最终目标:在任何光照条件下,获得视觉上纯净、自然、细节丰富的图像,同时保证实时性和功耗约束。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)