盲反捲積與維納濾波圖像復原的對比

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進行逆濾波)');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章