系列文章目录
前言
一、时域去噪
时域去噪(Time Domain Denoising)是指在时间域中对信号进行处理,去除其中的噪声,以保留或增强信号的有用部分。与频域去噪不同,时域去噪是直接在信号的时间序列上进行处理,而不是先转换到频域(如傅里叶变换)再处理。
时域去噪的方法有很多,常见的包括:
1. 均值滤波(Moving Average Filter)
这是最简单的时域去噪方法之一。其原理是对当前时刻的信号值与前后若干个时刻的信号值取平均,从而平滑掉高频噪声。这种方法对平稳信号效果较好,但对快速变化的信号可能会导致失真。
2. 中值滤波(Median Filter)
中值滤波是一种非线性滤波技术,它通过对信号的局部邻域内的数据排序,并取中间值,来去除噪声。中值滤波在去除脉冲噪声(如盐和胡椒噪声)或尖锐噪声时效果显著,同时不会像均值滤波那样模糊边缘。
3. 卡尔曼滤波(Kalman Filter)
卡尔曼滤波是一种递归估计技术,适用于动态系统。它通过最小化噪声的均方误差(MSE),在实时应用中特别有效,如运动跟踪和导航。卡尔曼滤波能够处理带有随机噪声的时序信号,提供对当前时刻信号的最优估计。
4. 自适应滤波(Adaptive Filtering)
自适应滤波器根据输入信号的统计特性,动态调整滤波器的系数,从而实现去噪。典型的自适应滤波器有LMS(最小均方)和RLS(递归最小二乘)滤波器。这些方法在噪声信号特性未知或变化时尤为有效。
5. 维纳滤波(Wiener Filter)
维纳滤波通过最小化信号与噪声之间的均方误差来进行去噪。它假设信号和噪声是线性高斯过程,能够对已知噪声特性(如白噪声)的情况下实现最佳线性去噪。
6. 小波去噪(Wavelet Denoising)
尽管小波变换常用于频域处理,但它可以通过多尺度分解的方式在时域进行去噪。小波去噪是通过对信号的小波分解,对不相关的小波系数进行压缩或阈值处理,从而消除噪声。
7. 低通滤波(Low-Pass Filter)
低通滤波器可以消除信号中的高频噪声,只保留低频成分。这种方法对于噪声频率高于信号频率的情况非常有效,但在一些情况下,可能也会削弱信号中的某些有用部分。
时域去噪的优缺点
优点:
直接在时间序列上处理,便于理解和实现。
不需要进行频域转换,计算复杂度相对较低。
对实时信号处理(如语音处理、医学信号处理)非常有效。
缺点:
某些时域方法(如均值滤波)可能会造成信号细节的丢失或模糊。
对于频率较为复杂的信号,时域去噪的效果可能不如频域方法。
二、空域去噪
空域滤波(Spatial Domain Filtering)是图像处理中的一种重要技术,它直接在图像的像素值上进行操作,以实现去噪、边缘检测、平滑等效果。与频域滤波不同,空域滤波是在图像的空间域上进行,而不是在图像的频域上通过傅里叶变换进行操作。
空域滤波通常是通过卷积操作来实现的,即将一个滤波器(或称为卷积核、掩膜)与图像的局部像素进行卷积计算,输出处理后的新像素值。不同的滤波器设计用于不同的任务,如去噪、增强细节或检测边缘。
常见的空域滤波器分类
空域滤波器可以分为线性滤波器和非线性滤波器两大类。
1. 线性滤波器
线性滤波器的输出是输入像素的线性加权和,通常用于平滑图像或去噪。
常见的线性滤波器:
均值滤波器(Mean Filter) 通过对当前像素和它邻域内像素取均值来进行平滑。均值滤波可以有效去除高频噪声,但也会模糊图像细节。
高斯滤波器(Gaussian Filter) 高斯滤波器是一种特殊的均值滤波器,其权重按照高斯分布分配给邻域像素。与简单的均值滤波相比,高斯滤波器对图像的模糊程度更加平滑、自然,常用于去除高斯噪声。
拉普拉斯滤波器(Laplacian Filter) 主要用于边缘检测。它通过计算图像梯度(即像素值变化的速度)来突出图像中的边缘。
2. 非线性滤波器
非线性滤波器根据像素值之间的非线性关系来进行处理,通常用于去除某些特定类型的噪声,如椒盐噪声,同时保留图像的边缘和细节。
常见的非线性滤波器:
中值滤波器(Median Filter) 中值滤波器通过对邻域像素值排序,取其中值作为新的像素值。它特别适合去除图像中的脉冲噪声或椒盐噪声,能够在去噪的同时较好地保留边缘。
最大/最小滤波器(Max/Min Filter) 这种滤波器选取局部邻域的最大值或最小值作为当前像素值,用于突出或削弱图像的某些特征,适合处理特殊类型的噪声或增强图像特定部分。
双边滤波器(Bilateral Filter) 双边滤波器是一种保边滤波器,它在空间距离和像素值强度上同时进行加权,能够平滑噪声而不会显著模糊图像中的边缘,是一种较为先进的滤波方法。
空域滤波器的具体应用
-
去噪(Denoising) 在图像中去除噪声时,常用平滑滤波器,如均值滤波和高斯滤波。中值滤波器则适合处理椒盐噪声,能在去噪的同时保留图像的锐利边缘。
-
平滑(Smoothing) 空域滤波中的平滑操作(如均值滤波、高斯滤波)可减少图像中的细节,常用于降低图像中的细小波动,使图像看起来更加均匀和柔和。
-
边缘检测(Edge Detection) 边缘检测是计算机视觉中的一个重要任务,通过计算图像中像素值的快速变化来提取边缘。拉普拉斯滤波、索贝尔滤波(Sobel Filter)等线性滤波器常用于边缘检测任务。
-
锐化(Sharpening) 图像锐化的目的是增强图像中的细节,使边缘和纹理更加清晰。常见的方法包括拉普拉斯滤波器以及基于高通滤波的锐化方法。
空域滤波的优势与局限
优点:
操作简单,直观,容易实现。
适用于各种图像增强、去噪等任务。
滤波器的设计灵活,可以根据需要选择不同的卷积核。
局限:
对于某些复杂的噪声类型(如周期性噪声)效果较差,可能需要转到频域去处理。
线性滤波器(如均值滤波)可能会导致图像模糊,失去细节信息。
计算效率较低,尤其是当卷积核较大时,对大图像的处理会比较耗时。
三 时域和空域去噪具体应用
时域降噪:对参考帧及其前后多帧共同进行分析计算达到降噪的目的
空域降噪:对参考帧单帧进行分析计算达到降噪目的。
时域降噪对静止部分降噪效果好,空域则是对全部部分进行处理。时域会分析多帧画面,对画面中运动较少的部分处理比较好,先使用时域降噪得到一个较为优秀的画面,就可以减少空域降噪中的投入。
可以先使用及时域降噪,后使用空域降噪。如果画面中没用运动物体,那时域降噪独立可以完成降噪,通常情况下降噪用在第一个节点或者最后一个节点,会先降噪再调颜色。
第一个节点,即在调色前应用降噪,效果平滑,但会使画面中边缘细节变得过于柔化。
最后一个节点,即调色结尾应用降噪:应用了降噪部分没有那么平滑,边缘细节更加锐利,画面锐利度高。
四、时域和空域融合具体方案
针对 Bayer 格式的原始图像数据(即未经处理的传感器输出)。结合了多种降噪技术,包括空间域和时域降噪,特别适用于多帧图像序列的去噪处理。下面是该算法的总结与介绍。
Bayer 格式简介
Bayer 格式是一种彩色滤光阵列,用于数码相机的图像传感器中。它通过红(R)、绿(G)、蓝(B)三个颜色通道排列成特定的矩阵(如 RGGB、GRBG 等)来捕捉图像。
由于 Bayer 原始图像没有经过任何后期处理,通常包含大量的噪声,尤其是在低光照条件下。因此,图像去噪是图像处理中的重要步骤。
主要去噪方法
空间域降噪:
高斯模糊(Gaussian Blur):通过使用二维高斯卷积核对图像进行模糊处理,减少图像中高频噪声。高斯模糊能够有效去除随机噪声,但可能会导致边缘模糊。
双边滤波(Bilateral Filtering):与高斯模糊不同,双边滤波不仅考虑空间上相邻像素的距离,还会根据像素值的相似性进行加权。它可以在去噪的同时保留边缘细节。
非局部均值降噪(Non-Local Means Denoising, NLM):这是一种先进的去噪方法,通过比较图像中多个相似的区域来减少噪声,同时保持图像细节。它在处理纹理复杂的图像时效果较好。
时域降噪(Temporal Noise Reduction, TNR):
该算法通过多帧图像序列之间的对比来去除噪声。具体来说,它比较连续的图像帧,通过检测帧与帧之间的差异来识别运动和噪声,并在此基础上进行降噪。
IIR 过滤器(Infinite Impulse Response Filter):在时域降噪中,IIR 过滤器用于递归更新每帧图像的噪声模型,从而逐渐减少噪声。
运动检测(Motion Detection):通过计算连续帧之间的差异,该方法能够区分运动物体和静态背景。在进行降噪时,保留运动区域的细节,防止过度模糊。
噪声模型的构建:
通过计算图像的亮度和噪声模型中的参数(如曝光时间、传感器噪声),生成 噪声方差图 和 噪声标准差图,这些图反映了图像中不同区域的噪声水平。
不同曝光条件下的噪声水平由一系列曲线 (k_l, b_l, k_m, b_m 等) 决定,这些参数会根据图像的亮度动态调整,进而生成精确的噪声估计。
多轮降噪迭代:
该算法会多次迭代处理图像序列。在每一轮中,它会更新时域噪声模型,并生成更加干净的图像序列。多轮迭代有助于进一步消除残留噪声,同时保留更多的图像细节。
运动阈值调整:
运动检测中设置了多个阈值(如 mot_thresh_x 和 mot_thresh_y),这些阈值决定了如何根据运动量调整降噪强度。通过自定义不同的阈值,算法可以针对不同场景(如静态场景或动态场景)自适应地进行降噪。
算法的总体工作流程
加载 Bayer 原始图像数据:首先从指定的文件夹中读取 Bayer 格式的原始图像序列。
初始降噪:使用高斯模糊等空间域降噪方法对图像进行初步降噪,降低随机噪声。
时域降噪:通过比较多帧图像,检测帧间运动并应用时域降噪方法(TNR),递归更新噪声模型,减少噪声。
多轮迭代:重复执行降噪和运动检测,逐步优化图像质量。
输出处理结果:保存运动图、降噪后的图像、IIR 过滤后的图像等中间结果和最终降噪结果。
时域和空域降噪的融合主要通过 时域去噪(TNR) 和 空域滤波(如高斯模糊和双边滤波) 两部分结合来完成。这种融合的实现方式可以从算法的具体步骤和代码结构中看出。
具体的融合方式:
1. 空域降噪:高斯模糊和双边滤波
在你的代码中,空域降噪是通过高斯模糊(raw_gaussian_blur 方法)和双边滤波(raw_bila 方法)来实现的。
高斯模糊:用于平滑图像中的噪声,特别是高频噪声。这是在单帧图像内部进行的,主要针对像素的局部相关性,起到去除随机噪声的作用。
双边滤波:保持边缘细节的同时进行降噪,主要用于进一步减少空间噪声,避免对图像边缘造成模糊。
空域去噪的作用:这些空域滤波操作通常先行处理,能够在每一帧内部减少高频噪声,为后续的时域降噪提供更加干净的图像输入。
在代码中,你调用了 raw_gaussian_blur 来处理不同 Bayer 通道的噪声(如红、绿、蓝通道分别处理),这部分空域去噪操作减少了每帧图像中的随机噪声。
diff_abs_r = self.raw_gaussian_blur(diff_abs[0::2,0::2], kernel_size=self.kernel_size, spatial_sigma=self.spatial_sigma)
- 时域降噪:帧间运动检测和递归更新
时域降噪 是通过帧间的运动检测和递归更新(tnr_proc 方法)来完成的。
该部分通过比较前后两帧(raw_ref 和 raw_cur)之间的差异(diff_abs),检测运动区域,然后对运动区域和静态区域分别应用不同的处理。
使用了 运动检测(diff2mot 方法),通过对帧间差异进行检测,得到运动区域,然后在运动区域应用特殊的降噪处理。
递归滤波:代码通过 tnr_calc 方法递归更新噪声模型,从而不断改善降噪效果。
(mot_single_trns, raw_tnr, iir_update, diff_abs, _) = self.tnr_proc(raw_ref, raw_cur, iir_ref)
时域去噪的作用:时域去噪通过多帧图像之间的相似性,利用递归滤波来减少图像中的动态噪声,尤其是静态区域中的噪声。
-
时域与空域的融合:
-
先进行空域去噪,再进行时域去噪:
先对图像进行了空域处理(如 raw_gaussian_blur),减少图像内部的高频噪声,然后再在时域中进行多帧的运动检测和递归滤波(tnr_proc 和 diff2mot 方法)。这种顺序保证了在进入时域处理之前,每一帧的噪声已经被初步降低,从而可以更精确地检测帧间运动。 -
运动检测决定降噪的权重:
时域去噪的 diff2mot 方法检测了帧间的运动,并使用运动检测结果来决定在每个像素上应该应用多少时域降噪和多少空域降噪。在静态区域,时域信息占主导;而在运动区域,空域降噪权重大一些,以避免时域去噪带来的运动模糊。
mot_single = self.diff2mot(diff_abs) # 检测运动区域
mot_single_kron = np.kron(mot_single, [[1,1],[1,1]])
(mot_single_trns, thresh_map) = self.mot_convert(mot_single_kron, raw_cur)
递归滤波与运动检测相结合:
在时域处理中,递归滤波结合运动检测来处理运动区域和静态区域。递归滤波会通过 IIR(tnr_calc 方法)不断更新噪声模型,在静态区域通过多帧平均去除噪声,而在运动区域则通过加权方式避免细节丢失。
iir_update = (iir + motion) / (iir + 1.0) # 递归更新噪声模型
tnr = (iir_update * raw) + ((1.0 - iir_update) * tnr)
多轮迭代处理:
时域和空域的融合通过多轮处理来进一步优化。每一轮时域降噪后,图像被再次输入到时域和空域降噪的流程中。每一轮都使用前一轮的输出作为下一轮的输入,逐步去除噪声,同时保持更多的细节。
- 空域降噪先行:通过高斯模糊和双边滤波等空域处理技术,降低每一帧图像中的高频噪声。
- 时域降噪递归处理:使用时域的运动检测和递归滤波方法,在多帧图像中检测静态和运动区域。
- 静态区域多帧平均降噪,运动区域根据运动情况调整降噪强度。
- 加权融合:根据运动检测结果,动态调整时域和空域降噪的权重。静态区域以时域降噪为主,运动区域以空域降噪为主。
- 多轮迭代优化:通过多次时域和空域降噪的迭代,逐步优化图像的噪声水平,最终获得干净的图像。
这种时域与空域的融合能够有效去除静态区域中的噪声,同时保持运动区域的细节和清晰度。
总结
在降噪算法中主要使用了空间域和时域相结合的方法。首先,对图像进行空间域降噪,如使用高斯模糊去除高频噪声,然后使用双边滤波保持边缘细节。对于更复杂的纹理噪声,我采用了非局部均值降噪算法,它能在去噪的同时保留更多的图像细节。
同时,为了进一步提高降噪效果,结合了时域降噪,通过处理多帧图像序列来减少图像中的动态噪声。通过帧间差异检测运动,并动态调整不同运动区域的降噪强度,这样能够有效避免静态场景中过度模糊,同时保留运动物体的细节。
在整个过程中,还使用了自适应的噪声模型生成方法,并通过多轮迭代来不断优化降噪效果,确保图像的细节得以最大程度保留。