盲反卷积与维纳滤波图像复原的对比
clc;
clf;
clear;
close all;
%% 维纳滤波图像复原


% 1.使用函数fspecial创建退化滤波器PSF,然后调用imfilter对图像进行卷积运算,就可以
% 得到一幅运动退化图像,观察并记录结果。


I=imread('cameraman.tif');      % 读入图像
LEN=31;
THETA=11;
PSF=fspecial('motion',LEN,THETA);     % 生成退化函数
blurred=imfilter(I,PSF, 'circular','conv');
figure,imshow(I);title('1.原图像');
figure,imshow(blurred);title('2.运动退化图像');


% 2.使用imnoise函数对图像添加随机噪声,观察并记录结果。
fnblurred =imnoise(blurred, 'gaussian',0,0.0001);       % 产生高斯随机噪声图像
figure, imshow(fnblurred);title('3.加噪之后');


% 3.使用函数deconvwnr对无噪声的运动模糊图像进行复原,观察并记录结果。同时采用不同的
% LEN和THETA参数,进行实验,体会一下退化函数PSF的重要性,观察并记录结果。
LEN=31;
THETA=11;
PSF=fspecial('motion',LEN,THETA);
wnr1=deconvwnr(blurred,PSF);
wnr2=deconvwnr(blurred, fspecial('motion',2*LEN,THETA));
wnr3=deconvwnr(blurred, fspecial('motion', LEN, 2*THETA));
figure,imshow(wnr1);title('4.1 无噪运动模糊图像复原1');
figure,imshow(wnr2);title('4.2 无噪运动模糊图像复原2');
figure,imshow(wnr3);title('4.3 无噪运动模糊图像复原3');




% 4.使用函数deconvwnr对一幅有噪声的运动模糊图像进行维纳滤波复原,观察并记录结果。
wnr4=deconvwnr(fnblurred,PSF);
figure,imshow(wnr4);title('5.维纳滤波复原');


%% 盲反卷积图像复原


% 为了使维纳滤波复原的效果变好,必须使用deconvwnr函数的可选参数NSR、NCORR和ICORR,
% 通过改变参数获得不同的复原效果,观察并记录结果。
% 使用deconvblind函数进行盲目去卷积,采用不同的退化函数,观察并记录结果。
PSF=fspecial('gaussian',7,10);
blurred01=imfilter(I,PSF, 'circular', 'conv');%图像退化
UNDERPSF=ones(size(PSF)-4);
[J1,P1]= deconvblind(blurred01, UNDERPSF);        % 使用较小的PSF进行逆滤波
OVERPSF=padarray(UNDERPSF,[4 4], 'replicate', 'both'); 
[J2,P2]= deconvblind(blurred01, OVERPSF);   % 使用较大的PSF进行逆滤波
INITPSF=padarray(UNDERPSF,[2 2], 'replicate', 'both'); 
[J3,P3]= deconvblind(blurred01, INITPSF);     % 使用真实的PSF进行逆滤波

figure, imshow(blurred01);title('21 图像退化');
figure, imshow(J1); title('2.2 盲反卷积(使用较小的PSF进行逆滤波)');
figure, imshow(J2); title('2.3 盲反卷积(使用较大的PSF进行逆滤波)');
figure, imshow(J3); title('2.4 盲反卷积(使用真实的PSF进行逆滤波)');
阅读更多
个人分类: MATLAB
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

盲反卷积与维纳滤波图像复原的对比

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭