反卷积复原算法Word格式文档下载.docx
《反卷积复原算法Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《反卷积复原算法Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。
E:
\'
);
%彩色图像的像素为512*512
I1=rgb2gray(I);
%灰度图像的像素为512*512
%figure,imshow(I),title('
Originalcolorimage'
%figure,imshow(I1),title('
Originalgrayimage'
I2=I1(1:
2:
end,1:
end);
%图像的像素设置为256*256
figure,imshow(I2),title('
GrayImage256*256'
PSF=fspecial('
gaussian'
5,5);
%点扩散函数
Blurred=imfilter(I2,PSF,'
symmetric'
'
conv'
figure;
imshow(Blurred);
title('
GaussianBlurred'
V=;
BlurredNoisy=imnoise(Blurred,'
0,V);
imshow(BlurredNoisy);
Blurred&
Noisy'
K=size(I2);
WT=zeros(K);
WT(5:
end-4,5:
end-4)=1;
J1=deconvlucy(BlurredNoisy,PSF);
%H1=deconvlucy(BlurredNoisy,PSF,5);
%迭代5次
%H1_cell=deconvlucy({BlurredNoisy},PSF,5);
%H2_cell=deconvlucy(H1_cell,PSF);
%H2=im2uint8(H2_cell{2});
J2=deconvlucy(BlurredNoisy,PSF,5,im2uint8(3*sqrt(V)));
J3=deconvlucy(BlurredNoisy,PSF,15,im2uint8(3*sqrt(V)));
%迭代15次
J4=deconvlucy(BlurredNoisy,PSF,25,im2uint8(3*sqrt(V)));
%迭代25次
J5=deconvlucy(BlurredNoisy,PSF,40,im2uint8(3*sqrt(V)));
%迭代40次
J6=deconvlucy(BlurredNoisy,PSF,20,im2uint8(3*sqrt(V)),WT);
%迭代20次,加WT
J7=deconvlucy(BlurredNoisy,PSF,40,im2uint8(3*sqrt(V)),WT);
%迭代40次,加WT
%
figure,imshow(J1);
J1:
deconvlucy(A,PSF)'
%figure,imshow(H1);
title('
H1:
RestoredImageNUMIT=5'
%figure,imshow(H2),title('
H2:
RestoredImageNUMIT=15'
figure,imshow(J2);
J2:
deconvlucy(A,PSF,NUMIT=5,DAMPAR)'
figure,imshow(J3);
J3:
deconvlucy(A,PSF,NUMIT=15,DAMPAR)'
figure,imshow(J4);
J4:
deconvlucy(A,PSF,NUMIT=25,DAMPAR)'
figure,imshow(J5);
J5:
deconvlucy(A,PSF,NUMIT=40,DAMPAR)'
figure,imshow(J6),
J6:
deconvlucy(A,PSF,NUMIT=20,DAMPAR,WEIGHT)'
figure,imshow(J7),
J7:
deconvlucy(A,PSF,NUMIT=40,DAMPAR,WEIGHT)'
二、维纳滤波
维纳滤波法是由Wiener首先提出的,在图像复原领域,由于维纳滤波计算量小,复原效果好,从而得到了广泛的应用和发展。
维纳滤波最开始主要应用在一维信号处理里,取得了比较不错的效果。
之后,维纳滤波法也用于二维信号处理中,也取得了比较好的效果。
维纳滤波器寻找一个统计误差函数:
最小的估计
。
E是期望值操作符,
是未退化的图像。
该表达式在频域可表示为
其中,
表示退化函数
表示
的复共轭
表示噪声的功率谱
表示未退化图像的功率谱
比率
称为信噪功率比。
在IPT中维纳滤波使用函数deconvwnr来实现的。
维纳滤波能最佳复原的条件是要求已知模糊的系统函数,噪声功率谱密(或其自相关函数),原图像功率谱密度(或其自相关函数)。
但实际上,原图像功率谱密度(或其自相关函数)一般难以获知,再加上维纳滤波是将图像假设为平稳随机场的前提下的最佳滤波,而实际的图像通常不能满足此前提。
因此维纳滤波复原算法在实际中只能获得次最佳实施,它更多的是具有理论价值,被用作度量其他算法性能优劣的标杆。
维纳滤波复原函数deconvwnr()的调用格式:
J=deconvwnr(I,PSF,NCORR,ICORR)
其中,I表示输入图像,PSF表示点扩散函数,NSR(默认值为0)、NCORR和ICORR都是可选参数,分别表示信噪比、噪声的自相关函数、原始图像的自相关函数。
输出参数J表示复原后的图像。
维纳滤波复原源代码:
%维纳滤波在图像复原中的应用
'
%原始图像
noise=5*randn(size(I));
%randn(1,lx)表示生成1*lx的矩阵,矩阵的每个元素都是随机数
noise=noise-min(min(noise));
%randn(size(I))是返回一个和A有同样维数大小的随机数组
J=double(I)+noise;
R1=wiener2(J,[1010]);
%未知噪声
R2=wiener2(J,[1010],noise);
%已知噪声分布
figure
subplot(2,2,1),imshow(uint8(I));
原始图像'
subplot(2,2,2),imshow(uint8(J));
退化图像'
subplot(2,2,3),imshow(uint8(R1));
盲复原'
subplot(2,2,4),imshow(uint8(R2));
非盲复原'
三、正则滤波
另一个线性复原的方法称为约束的最小二乘方滤波,在IPT中称为正则滤波,并且通过函数deconvreg来实现。
在最小二乘复原处理中,常常需要附加某种约束条件。
例如令Q为f的线性算子,那么最小二乘方复原的问题可以看成使形式为
的函数,服从约束条件
的最小化问题,这种有附加条件的极值问题可以用拉格朗日乘数法来处理。
寻找一个
,使下述准则函数为最小:
式中
叫拉格朗日系数。
通过指定不同的Q,可以得到不同的复原目标。
实验结果如下:
正则滤波所用的源代码:
subplot(321),imshow(I),title('
OriginalImage'
subplot(322),imshow(I1),title('
GrayImage'
PSF=fspecial('
7,10);
V=.01;
H=imfilter(I1,PSF);
BlurredNoisy=imnoise(H,'
NOISEPOWER=V*prod(size(I1));
[J,LAGRA]=deconvreg(BlurredNoisy,PSF,NOISEPOWER);
K=deconvreg(BlurredNoisy,PSF,[],LAGRA/10);
K0=deconvreg(BlurredNoisy,PSF,[],LAGRA*10);
subplot(323),imshow(BlurredNoisy);
A=BlurredandNoisy'
subplot(324),imshow(J);
[JLAGRA]=deconvreg(A,PSF,NP)'
subplot(325);
imshow(K);
deconvreg(A,PSF,[],*LAGRA)'
subplot(326);
imshow(K0);
deconvreg(A,PSF,[],10*LAGRA)'
四、盲反卷积
在图像复原过程中,最困难的问题之一是,如何获得PSF的恰当估计。
那些不以PSF为基础的图像复原方法统称为盲去卷积。
它以MLE为基础的,即一种用被随机噪声所干扰的量进行估计的最优化策略。
工具箱通过函数deconvblind来执行盲区卷积。
实验如下:
%%盲反卷积图像复原
subplot(321),imshow(I),title('
I=rgb2gray(I);
subplot(322),imshow(I),title('
%PSF=7x7
V=.0001;
BlurredNoisy=imnoise(imfilter(I,PSF),'
BlurredNoisy=double(BlurredNoisy);
WT=zeros(size(I));
%从第五行到倒数第五行,第五列到倒数第五列全部置为1
INITPSF=ones(size(PSF));
%INITPSF=ones(7x7)
FUN=inline('
PSF+P1'
PSF'
P1'
[J,P]=deconvblind(BlurredNoisy,INITPSF,5,10*sqrt(V),WT,FUN,0);
[K,P]=deconvblind(BlurredNoisy,INITPSF,10,10*sqrt(V),WT,FUN,0);
%迭代10次
[L,P]=deconvblind(BlurredNoisy,INITPSF,20,10*sqrt(V),WT,FUN,0);
%迭代20次
subplot(323);
imshow(mat2gray(BlurredNoisy));
subplot(324);
imshow(mat2gray(J));
TruePSF'
imshow(mat2gray(K));
DebluredImage'
imshow(mat2gray(L));
RecoveredPSF'