图像去噪(高斯低通滤波器)

问题一:

对给定图像lena_noise.bmp进行图像的频率域去噪处理,期望去噪后的输出结果尽量接近无噪声的原图lena.bmp。画出原图及有噪声图像的傅里叶谱图像F(需要中心化以及对数变换),分析两幅图像傅里叶谱图像F的不同(显示时建议使用imshow(I,[])命令,I为要显示的图像)。

代码:

clear all;

close all;

clc;

image1 = imread('lena.bmp');

img1 = im2double(image1);

%傅里叶变换

img1 = fft2(img1);

%中心化

img1 = fftshift(img1);

%对数变换

img1 = log(1+abs(img1));

image2 = imread('lena_noise.bmp');

img2 = im2double(image2);

img2 = fft2(img2);

img2 = fftshift(img2);

img2 = log(1+abs(img2));

subplot(221); imshow(image1);title("原图");

subplot(223); imshow(img1,[]);title("原图傅里叶频谱图");

subplot(222); imshow(image2);title("噪声图");

subplot(224); imshow(img2,[]);title("噪声图傅里叶频谱图");

运行结果:

分析:

相较于原图,噪声图像的噪声信息十分有规律,这个特点体现在频谱图上就是在原点周围有一圈亮点。

问题二:

噪声图lena_noise.bmp 的傅里叶谱图像中的高亮点对应着噪声,选择合适的频率域滤波器进行操作,给出选择频率域滤波器类型的原因。画出频率域滤波器H,以及H*F。频率域操作后,进行傅里叶反变换(记得去中心化和取实部),画出滤波后空域图的效果(去噪以后的图像)。

代码(选用高斯低通滤波器):

clear all;

close all;

clc;

img = imread("lena_noise.bmp");

subplot(221);imshow(img);title("噪声图");

img1 = im2double(img);

F = fsd(img1);

H = GaussianLowpass(img1,80);

subplot(222);imshow(H);title("频域滤波器");

G = F.*H;

subplot(223);imshow(G);title("H*F");

G = real(ifft2(ifftshift(G)));

G = G(1:size(img,1),1:size(img,2));

subplot(224); imshow(G);title("去噪后图像,D0=80");

%傅里叶频谱

function F = fsd(img)

[m,n] = size(img);

%傅里叶变换

F = fft2(img,m*2,n*2);

%中心化

F = fftshift(F);

end

% Butterworth滤波器

function H = Bfilter(img, D0)

N = 2;

[m,n] = size(img);

P = m*2;

Q = n*2;

H = zeros(P, Q);

a = D0^(2 * N);

for u = 1 : P

for v = 1 : Q

d = (u-m)^2 + (v-n)^2;

H(u, v) = 1 / (1 + (d^N) / a);

end

end

end

%高斯低通滤波器

function H = GaussianLowpass(img,D0)

[M,N] = size(img);

H = zeros(2*M,2*N);

for u = 1:2*M

for v = 1:2*N

D_square = (u-M) * (u-M) + (v-N) * (v-N);

H(u,v) = exp(-D_square/(2*D0*D0));

end

end

end

%理想低通滤波器函数

function H = ILPF(img,D0)

[m,n]=size(img);

P = 2*m;

Q = 2*n;

H = zeros(P,Q);

for u = 1:P

for v = 1:Q

D = ((u-m) * (u-m) + (v-n) * (v-n))^0.5;

if D <= D0

H(u,v) = 1;

else

H(u,v) = 0;

end

end

end

end

运行结果:

选择该频率域滤波器的原因:

理想低通滤波器有明显的振铃现象,故弃之不用高斯低通滤波器和Butterworth滤波器差别不大,选用高斯低通滤波器,下面为二者对比图:

lena.bmp

lena_noise.bmp

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: