在数字图像处理中,去噪是一个经常进行的操作。
除了在空域上进行去噪,比如使用均值滤波、中值滤波等等滤波器外,利用傅里叶变换在频域上进行操作也是一种非常有效的方式。
使用傅里叶变换进行图像去噪的原理如下:
我们知道,图像中的噪声往往代表着图像上灰度值的突变,从而对应着高频部分,而图像中的其他大部分内容则主要集中在低频部分。
因此,通过将空间图像进行傅里叶变换后,转化到频域上,我们可以得到这个图像每个像素的相位和幅度值。
对于相位而言,代表着图像中的位置形状信息,一般情况下我们不对其做处理,否则可能就无法恢复出原始图像的形状。
而幅度值则主要代表着能量的大小,也就是每一个频率上的能量大小。我们只要将高频部分的能量值置为0,就可以去除噪声。
需要注意的是,在进行傅里叶变换(fft2)后,低频部分集中分布在四个角落,通过移位(fftshift)之后,将其集中到图像的中心,这只是为了便于处理。
当我们对幅值进行处理后,再进行反移位(ifftshift)恢复到原始的分布情况,之后结合相位计算出每个像素对应的值。
对其进行傅里叶反变换(ifft)后,就可以恢复出时域图像,此时图像上的噪声就可以去除了。
一个具体例子如下所示:
代码:
clear;
clc;
F = imread('C:\Users\asus1\Desktop\IMG_20170708_090611.jpg');
F1 = rgb2gray(F