1. 程式人生 > >MATLAB中PSF函式進行影象復原

MATLAB中PSF函式進行影象復原

今天來介紹一下在MATLAB中如何用真實的PSF函式和噪聲強度作為引數進行影象復原,具體如下:

1、首先開啟MATLAB,在其主介面的編輯器中寫入下列程式碼:

I=imread('G:\MATLAB\bm.bmp'); %讀取原始影象
LEN=31;
%影象的模糊化
THETA=11;
PSF1=fspecial('motion',LEN,THETA);
PSF2=fspecial('gaussian',10,5);
Blurred1=imfilter(I,PSF1,'circular','conv');
Blurred2=imfilter(I,PSF2,'conv');
%模糊化影象加噪
V=.002;
BlurredNoisy1=imnoise(Blurred1,'gaussian',0,V);
BlurredNoisy2=imnoise(Blurred2,'gaussian',0,V);
figure,
subplot(1,3,1);imshow(I)
title(' yunhe ')
%用真實的PSF函式和噪聲強度作為引數進行影象復原
NP=V*prod(size(I));
reg1=deconvreg(BlurredNoisy1,PSF1,NP);
reg2=deconvreg(BlurredNoisy2,PSF2,NP);
figure;
subplot(1,3,2);imshow(reg1);
title('Restored1 with NP')
figure;
subplot(1,3,3) ;imshow(reg2);
title('Restored2 with NP')

2、將程式碼儲存在自定義路徑下,點選執行按鈕,結果如下:

從圖中可以看出,影象復原後還是帶有一些噪聲,但是基本樣貌還是類似的,至此,關於用真實的PSF函式和噪聲強度作為引數進行影象復原的基本介紹完畢,請大家繼續關注!!