Tag:个人编写的小程序,原始发布位置在matlab盲去卷积图像复原程序

07年根据老研学论坛上一个网友贴出的文献所写,只具有基本功能,其中paddedsizedipum函数,如有转载,请注明出处。

——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