图像复原
实验目的
利用反向滤波和维纳滤波进行降质图像复原,比较不同参数选择对复原结果的影响。
实验内容
利用反向滤波方法进行图像复原;利用维纳滤波方法进行图像复原。
实验原理
1.逆滤波图像复原
逆滤波(反向滤波)图像复原是最简单的线性滤波复原方法。在已知降质系统的传递函数 和降至图像的傅里叶变换后,可以用下式求得复原图像的傅里叶变换估计。
复原图像的估计可通过傅里叶反变换求得:
在实际使用逆滤波进行图像复原时,要考虑零点的影响。如果在平面上有一些点或区域的,即出现了零点,就会导致不定解。
2.维拉滤波图像复原
维纳滤波图像复原的目的是寻找一个理想图像的估计值,使它们之间的均方误差最小。如果不知道噪声的统计性质,即和未知时,误差函数的最小值在频域中用下式计算:
式中K是噪声对信号的频谱密度之比,近似为一常数。
实验结果与分析
(1)输入图像采用实验1所获取的图像,对输入图像采用运动降质模型,如下式所示:
与降质图像相关的参数是:。
答:首先读入图像lena512color.png并将其转换为灰度图,然后根据运动降质模型的表达式构造,需注意当时,。将原始灰度图进行傅里叶变换和移位变换得到,与运动降质模型相乘,然后再进行移位反变换和傅里叶反变换即可得到运动降质后的图像。原图像和运动模糊后的图像分别如下图左右所示:
实验的源代码如下所示:
clear();
lena=imread("lena512color.png");
lena_gray = rgb2gray(lena);
figure;
subplot(1,2,1)
imshow(lena_gray)
title("原始输入");
T=1;
a=0.02;
b=0.02;
N=512;
H=T*ones(N,N);
for u=-N/2:N/2-1
for v=-N/2:N/2-1
if(a*u+b*v)~=0
H(u+N/2+1,v+N/2+1)=T/(pi*(a*u+b*v))*sin(pi*(a*u+b*v))*exp(-1j*pi*(a*u+b*v));
end
end
end
%% (1)
F = fftshift(fft2(double(lena_gray)));
G = F .* H;
blurred_image_no_noise=real(ifft2(ifftshift(G)));
subplot(1,2,2)
imshow(uint8(blurred_image_no_noise))
title("运动模糊图像");
(2)没有噪声的情况下,对降质后的图像进行反向滤波和维纳滤波操作,得到复原图像。
答:根据逆滤波图像复原公式和维纳滤波函数复原公式,将(1)中得到的分别使用两种复原公式得到,再将进行移位反变换和傅里叶反变换即可得到滤波后的图像。反向滤波和维纳滤波后得到的图像分别如下图左右所示:
实验的源代码如下所示:
%% (2)
figure
inverse_filtered_F=G ./ H;
inverse_filtered_image = real(ifft2(ifftshift(inverse_filtered_F)));
subplot(1,2,1)
imshow(uint8(inverse_filtered_image))
title("反向滤波复原");
K=0;
wiener_filter_F=conj(H)./(abs(H).^2+K).*G;
wiener_filtered_image=real(ifft2(ifftshift(wiener_filter_F)));
subplot(1,2,2)
imshow(uint8(wiener_filtered_image))
title("维纳滤波复原");
(3)对降质后的图像施加均值为 0,方差为 10 的高斯噪声,对降质后的图像进行反向滤波和维纳滤波操作,得到复原图像。
答:首先生成均值为0,方差为10的高斯噪声,然后将噪声先进行傅里叶变换再进行移位变换,加到(1)中得到的上。然后按照和(2)中同样的方法进行反向滤波和维纳滤波操作,得到复原图像。添加噪声后的降质图像、反向滤波操作后的图像、维纳滤波操作后的图像分别如下图左、中、右所示:
实验的源代码如下图所示:
%% (3)
figure;
noise = 10*randn(N,N);
Fnoise=fftshift(fft2(noise));
noisy_G=G+Fnoise;
blurred_image_with_noise=real(ifft2(ifftshift(noisy_G)));
subplot(1,3,1)
imshow(uint8(blurred_image_with_noise))
title("降质加噪");
PSNR_noise=psnr(uint8(blurred_image_with_noise),lena_gray);
inverse_filtered_noise_F=noisy_G ./ H;
inverse_filtered_noise_image = real(ifft2(ifftshift(inverse_filtered_noise_F)));
subplot(1,3,2)
imshow((inverse_filtered_noise_image),[])
title("反向滤波复原");
K=0.01;
wiener_filter_noise_F=conj(H)./(abs(H).^2+K).*noisy_G;
wiener_filtered_noise_image=real(ifft2(ifftshift(wiener_filter_noise_F)));
subplot(1,3,3)
imshow((wiener_filtered_noise_image),[])
title("维纳滤波复原");
(4)在加噪声的情况下,对每一种方法通过计算复原出来的图像的峰值信噪比,进行最优参数的选择,包括反向滤波方法中进行复原的区域半径(这里指恢复频谱边缘到图像中心的像素点距离,实验时统一用像素个数/图像宽高像素数)、维纳方法中的噪声对信号的频谱密度比值
标签:PSNR,image,滤波,图像复原,noise,图像,filtered From: https://www.cnblogs.com/Silverplan/p/17977323