【ISP】对于ISP的关键算法补充
本篇是对于ISP的关键算法进行补充说明, 后面我们将开始逐渐深入讨论ISP的pipeline
1. 非局部均值(NLM, Non-Local Means)
原理
非局部均值(NLM)是一种基于 块匹配(Patch Matching) 的去噪算法,它利用了图像的 自相似性(Self-Similarity)来进行降噪。核心思想是:
一幅图像中的某个像素,其最佳去噪值可能不是简单地来自邻域均值,而是来自整幅图像中与它相似的区域。
数学公式
给定一幅带噪图像 (I(x)),NLM 计算去噪后的像素值 (I_{\text{NLM}}(x)) 为:
[
I_{\text{NLM}}(x) = \sum_{y \in \Omega} w(x, y) I(y)
]
其中:
-
( x ) 是当前像素点,( y ) 是搜索窗口内的像素点;
-
( w(x, y) ) 是相似性权重,基于 高斯核 计算:
[
w(x, y) = \frac{1}{Z(x)} \exp \left( -\frac{| P(x) - P(y) |2}{h2} \right)
]- ( P(x) ) 和 ( P(y) ) 是以 ( x ) 和 ( y ) 为中心的局部 patch(通常是 ( 7 \times 7 ) 或 ( 5 \times 5 ));
- ( h ) 是滤波参数,控制降噪强度;
- ( Z(x) ) 是归一化因子。
特点
- 能有效保留边缘和纹理(因为利用了整幅图像的冗余信息)。
- 计算量大,复杂度为 ( O(N^2) ),需要优化(如 快速 NLM,FFT 加速)。
- 适用于自然图像降噪。
2. BM3D(Block Matching and 3D Filtering)
原理
BM3D(块匹配和 3D 变换域滤波)是一种更先进的降噪算法,它扩展了 NLM 的思想,通过 分组(Grouping)、变换(Transform)和阈值(Thresholding) 实现高效降噪。
步骤
-
分组(Grouping):
- 对于每个小块(通常为 ( 8 \times 8 )),在整幅图像中寻找相似的块。
- 这些相似块组成一个 3D 立方体(Stack)。
-
3D 变换(Transform):
- 对 3D 立方体进行 离散余弦变换(DCT)或小波变换。
-
阈值滤波(Thresholding):
- 在变换域内进行软阈值处理(Soft Thresholding),去除噪声成分。
-
反变换(Inverse Transform):
- 将去噪后的数据反变换回时域,并进行块重叠加权。
-
重建(Aggregation):
- 通过加权平均,将多个重叠块合并,得到最终的去噪图像。
特点
- 比 NLM 更强大,能更好地去噪并保留细节。
- 计算量大,但可以使用 GPU 加速。
- 适用于医学图像、遥感、低光环境下的降噪。
3. TNR(Temporal Noise Reduction,时域降噪)
原理
TNR 主要用于视频降噪,它利用视频帧之间的 时间相关性 来降低噪声,同时避免运动模糊。基本思路是:
- 在静止区域,使用多帧平均(Frame Averaging)。
- 在运动区域,进行运动补偿(Motion Compensation)以避免鬼影。
主要方法
(1) 帧融合(Frame Blending)
-
对当前帧 ( I_t ) 和过去几帧 ( I_{t-1}, I_{t-2}, \dots ) 进行加权平均:
[
I_{\text{TNR}}(x) = \alpha I_t(x) + (1 - \alpha) I_{t-1}(x)
]其中 ( \alpha ) 是一个时间平滑参数。
(2) 运动补偿(Motion Compensation)
- 计算 光流(Optical Flow) 来估计物体运动:
- 若光流稳定,则认为区域是静止的,进行时域降噪。
- 若光流大,则认为是运动区域,减少时域滤波力度。
应用
- 夜间视频降噪
- 安防监控
- HDR 视频
4. 光流(Optical Flow)
原理
光流是计算图像序列中像素的运动向量,在 TNR、目标跟踪、视频增强等领域非常重要。
主流方法
(1) 经典方法
- Lucas-Kanade 方法:
- 通过对局部窗口进行梯度计算,估计小范围光流。
- Horn-Schunck 方法:
- 通过全局优化方法求解稠密光流场。
(2) 现代方法
- DeepFlow、RAFT、PWC-Net:基于深度学习,精度高但计算量大。
应用
- 视频稳定
- 目标跟踪
- 自动驾驶(计算运动物体的轨迹)
5. Retinex 算法(用于增强和去雾)
原理
Retinex 是 人眼视觉模型 的一种模拟,它认为图像的颜色信息和亮度信息是分离的,并试图恢复真实场景的对比度。
数学模型
[
R(x) = \frac{I(x)}{L(x)}
]
其中:
- ( I(x) ) 是输入图像,
- ( L(x) ) 是估计的光照分量,
- ( R(x) ) 是恢复的图像。
主要方法
- 单尺度 Retinex(SSR)
- 多尺度 Retinex(MSR)
- 带颜色恢复的 MSRCR
应用
- 图像增强
- 去雾
- 低光照增强
6. USM(Unsharp Masking,反锐化掩膜)
原理
USM 通过增强边缘对比度来实现锐化,基本思想是:
- 计算高斯模糊图像 ( I_{\text{blur}}(x) )。
- 计算锐化增强量:
[
S(x) = I(x) - I_{\text{blur}}(x)
] - 计算锐化图像:
[
I_{\text{sharp}}(x) = I(x) + k S(x)
]
其中 ( k ) 控制锐化强度。
应用
- 照片后期处理
- 计算机视觉前处理
总结
算法 | 主要功能 | 适用场景 |
---|---|---|
NLM | 非局部去噪 | 细节保留降噪 |
BM3D | 3D 变换去噪 | 高质量去噪 |
TNR | 视频降噪 | 夜间监控 |
光流 | 运动估计 | 目标跟踪 |
Retinex | 去雾、增强 | 低光图像 |
USM | 锐化 | 细节增强 |