matlab盲去卷积图像复原程序
Tag:个人编写的小程序,原始发布位置在matlab盲去卷积图像复原程序
07年根据老研学论坛上一个网友贴出的文献所写,只具有基本功能,其中paddedsize
是dipum
函数,如有转载,请注明出处。
——by realasking
代码
function image=bldconv(g)
%Blind-deconv example
%Created by realasking
%Welcome to visit my blog: hi.baidu.com/realasking
%finish time:5-22-2007
a1=0.1;
a2=0.01;
PQ=paddedsize(size(g));
G=fft2(g,PQ(1),PQ(2));
[y x]=size(G);
htemp=ones(3);
h0=freqz2(htemp,PQ(1),PQ(2));
R=Rcreat(y,x);
H=h0;
for k=1:10 %计算IMG和psf
iMG=(conj(H).*G)./((conj(H).*H)+a1*R);
H=conj(iMG).*G./((conj(iMG).*iMG)+a2*R);
end
IMG=mat2gray(real(ifft2(iMG)));
image=IMG(1:size(g,1),1:size(g,2));
imwrite(image,'testfile.tif')
imshow(image,[]);
hold on;
end
%===========================
%计算R矩阵的函数Rcreat
%===========================
function R=Rcreat(y,x)
%R矩阵生成子函数
%by Realasking
%为bdeconv.m编制
i=1:y
j=1:x
RI=zeros(y,x);
RJ=zeros(y,x);
R=zeros(y,x);
for k=1:y %向量化代码生成R的矩阵
RI(k,i)=-2*cos(2*pi*i./y);
end
for k=1:x
RJ(j,k)=-2*cos(2*pi*j'./x);
end
R=4+RI+RJ;
end