matlab盲去卷积图像复原程序
Tag:个人编写的小程序,原始发布位置在matlab盲去卷积图像复原程序
07年根据老研学论坛上一个网友贴出的文献所写,只具有基本功能,其中paddedsize
是dipum
函数,如有转载,请注明出处。
——by realasking
代码
matlab 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