基于DCT-FFT的图像去噪滤波算法
1. 基于FFT(DFT)的滤波
· 原理:使用离散傅里叶变换(DFT) 将图像从空域变换到频域。FFT是计算DFT的一种高效算法。
· 频域表示:DFT变换后的结果是复数域的,包含了幅度谱(各频率成分的强度)和相位谱(各频率成分的位置信息)。图像的结构信息主要由相位谱决定。
· 常用滤波器:
· 理想低通滤波器 (ILPF):粗暴地“切断”所有高于阈值D₀的高频成分。
· 缺点:会产生严重的振铃效应(Ringing Artifact),因为它在频域的陡峭截止对应于空域的一个Sinc函数,会与图像卷积产生波纹。
· 巴特沃斯低通滤波器 (BLPF):在截止频率处提供平滑的过渡。通过阶数n来控制衰减的陡度。阶数越高越接近理想滤波器,振铃效应越明显;阶数越低越平滑,振铃效应越弱,但可能会过度模糊。
· 高斯低通滤波器 (GLPF):具有高斯函数形式的平滑过渡。它是不会产生振铃效应的最优选择,因为高斯函数的傅里叶变换仍是高斯函数。
步骤:
1. 对图像进行零填充(防止缠绕错误)。
2. 计算图像的DFT(使用FFT算法),得到频域表示 F(u, v)。
3. 将 F(u, v) 与一个滤波器函数 H(u, v)(如高斯低通)相乘:G(u, v) = F(u, v) * H(u, v)。
4. 对 G(u, v) 进行逆DFT(IDFT),回到空域。
5. 取结果的实部,并裁剪掉零填充的部分,得到去噪后的图像。
2. 基于DCT的滤波
· 原理:使用离散余弦变换(DCT) 将图像从空域变换到频域。DCT的本质是将图像表示为一系列不同频率的余弦波的叠加。
· 频域表示:DCT变换后的结果是实数域的,称为DCT系数。图像的左上角是低频系数(能量集中于此),右下角是高频系数。
· 核心优势 - 能量压缩:DCT具有卓越的能量压缩特性。对于自然图像,大部分能量都集中在少数几个低频DCT系数上,而高频系数(包含噪声和细节)的幅值很小。这使得它非常适合用于压缩和去噪。
· 常用方法 - 系数阈值化: 这是DCT去噪最常用且有效的方法,而非传统的滤波器函数。
· 硬阈值 (Hard Thresholding):设定一个阈值 T。将所有绝对值小于 T 的DCT系数置为0,保留大于 T 的系数。 Y(u, v) = X(u, v) if |X(u, v)| > T, else 0
· 软阈值 (Soft Thresholding):同样设定阈值 T。不仅将小于 T 的系数置0,还将大于 T 的系数向零收缩。 Y(u, v) = sign(X(u, v)) * (|X(u, v)| - T) if |X(u, v)| > T, else 0 软阈值处理通常能获得比硬阈值更平滑的结果。
· 步骤(以分块DCT为例,这是最常用的方式):
1. 将图像分割成小的块(例如 8x8 或 16x16)。
2. 对每一个图像块单独进行DCT变换。
3. 对每一块的DCT系数进行阈值处理(硬阈值或软阈值)。阈值的确定是关键,通常与噪声方差有关。
4. 对阈值化后的DCT系数进行逆DCT变换(IDCT),回到空域。
5. 将所有处理后的图像块拼接起来,形成最终的去噪图像。