基于维纳滤波的图像复原算法

来源:互联网 发布:用python写网络爬虫 书 编辑:程序博客网 时间:2024/05/21 05:06

维纳滤波也称最小均方误差滤波,它能处理被退化函数退化和噪声污染的图像。该滤波方法建立在图像和噪声都是随机变量的基础之上,目标是找到未污染图像I(x,y)的一个估计。

clear all;clc;I = imread('Lena.tif');I=im2double(I);noise = 0.1*randn(size(I));% PSF = fspecial('motion',21,11);PSF = fspecial('gaussian',[5,5],0.05);Blurred = imfilter(I,PSF,'circular');BlurredNoisy = Blurred + noise;%求NSR方法一%NSR = sum(noise(:).^2)/sum(I(:).^2);% 噪声功率比NP = abs(fftn(noise)).^2;%噪声功率NCORR = fftshift(real(ifftn(NP)));% 噪声自相关(噪声功率谱)IP = abs(fftn(I)).^2;% 原始图像的功率ICORR = fftshift(real(ifftn(IP)));%图像自相关(图像功率谱)NPOW = sum(NP(:))/prod(size(noise));IPOW = sum(IP(:))/prod(size(I));%求NSR方法二NSR = NPOW/IPOW;ICORR1 = ICORR(:,ceil(size(I,1)/2));subplot(221);imshow(BlurredNoisy,[]);title('A = Blurred and Noisy');subplot(222);imshow(deconvwnr(BlurredNoisy,PSF,NSR),[]);title('deconvwnr(A,PSF,NSR)');subplot(223);imshow(deconvwnr(BlurredNoisy,PSF,NCORR,ICORR),[]);title('deconvwnr(A,PSF,NCORR,ICORR)');subplot(224);imshow(deconvwnr(BlurredNoisy,PSF,NPOW,ICORR1),[]);title('deconvwnr(A,PSF,NPOW,ICORR_1_D)');

这里写图片描述