资源描述
图像复原方面的实验:
1、最小二乘类约束复原:
程序:
I1=imread('lena.bmp'); %读取原始图像
I=rgb2gray(I1);
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(' lena ')
%用真实的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')
得到的结果如下:
原图:
“motion”复原图像:
“Gaussian”复原图像
2、维纳滤波
程序:
I1=imread('lena.bmp'); %读取原始图像
I=rgb2gray(I1);
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');
figure,
imshow(I)
title(' lena ')
%用真实的PSF函数作为参数进行图像复原
reg1=deconvwnr(Blurred1,PSF1);
reg2=deconvwnr(Blurred1,PSF2);
figure;
imshow(reg1);
title('Restored1 with NP')
figure;
imshow(reg2);
title('Restored2 with NP')
得到的结果如下:
原图:
“Motion”复原图:
“guassian”复原图:
在上述程序的基础上做一些改动,如下:
%用真实的PSF函数和噪声强度作为参数进行图像复原
reg1=deconvwnr(Blurred1,PSF1);
reg2=deconvwnr(Blurred1,fspecial('motion',2*LEN,THETA));
reg3=deconvwnr(Blurred1,fspecial('motion',LEN,2*THETA));
figure;
imshow(reg1);
title('Restored1 with NP')
figure;
imshow(reg2);
title('Restored2 with NP')
figure;
imshow(reg3);
得到如下结果:
过大的模糊距离参数:
过大的模糊运动方向角度参数:
3、Lucy_Richardson滤波复原
程序:
I1=imread('lena.bmp');
I=rgb2gray(I1);
% I=I(50+[1:256],2+[1:256],:);
figure;imshow(I);title('Original Image');
PSF=fspecial('gaussian',5,5);
Blurred=imfilter(I,PSF,'symmetric','conv');
V=.002;
BlurredNoisy=imnoise(Blurred,'gaussian',0,V);
figure;imshow(BlurredNoisy);title('Blurred & Noisy');
luc1=deconvlucy(BlurredNoisy,PSF,5);
figure;imshow(luc1);title('Restored Image,NUMIT=5');
得到的结果图:
模糊加噪
复原图像:
4、盲解卷积复原
程序:
I1=imread('lena.bmp');
>> I=rgb2gray(I1);
>> PSF=fspecial('motion',13,45);
>> figure,imshow(PSF,[]);
>> Blurred=imfilter(I,PSF,'circ','conv');
>> figure,imshow(Blurred);
>> INITPSF=ones(size(PSF));
>> [J P]=deconvblind(Blurred,INITPSF,30);
真实PSF图像:
模糊后的图像:
初步复原的图像:
初步重建使用的PSF:
权值矩阵:
图像复原:
图像复原使用的PSF:
展开阅读全文