图像复原方法逆录波器和改进逆滤波器比较

逆滤波法图像复原简介

图像复原方法逆录波器和改进逆滤波器比较_第1张图片

 

图5.2 逆滤波器复原模型

复原由退化函数H退化的图像最直接的方法是直接逆滤波。在方法中,用退化函数除以退化图像的傅立叶变换来计算原始图像的傅立叶变换。

                

 全逆滤波器简简介

如果退化图像为 g(x, y),原始图像为 f (x, y),在不考虑噪声的情况下,由傅立叶变换的卷积定理可知有下式成立 G(u, v) = H(u, v) ∗ F (u, v)。由此可见,如果已知退化图像的傅里叶变换和系统的冲击响应函数 G(u, v),则可以求出原图像的傅里叶变换 H(u, v),之后使用傅里叶逆变换即可得到原图像。这就是全逆滤波的主要思想。

matlab代码

a=imread('lena.bmp');
LEN=30; THETA=39;
PSF=fspecial('motion',LEN,THETA);
e=imfilter(a,PSF,'circular','conv'); 
H=deconvwnr (ones(size(e)), PSF ) ;
b=imnoise(e,'gaussian',0.05);%高斯噪声
w1=deconvwnr(e,PSF);
w2=deconvwnr(b,PSF);
H1=deconvwnr (ones(size(b)), PSF) ;
[m,n]=size(H);
D=40;
[m1,n1]=size(H1);
for i=1:m-1
    for j=1:n-1
        if (sqrt(i ^2+j^2)>D)
        H(i,j)=0;
        end
    end
end
Y=fft2(e);F=H.*Y;
f=real(ifft2(F));
D=100;
for i=1:m1-1
    for j=1:n1-1
        if (sqrt(i ^2+j^2)>D)
        H(i,j)=0;
        end
    end
end
Y1=fft2(b);F=H.*Y;
f1=real(ifft2(F));
subplot(2,4,1),imshow(a); title('原图') 
subplot(2,4,2),imshow(e); title('运动模糊图') 
subplot(2,4,3),imshow(b);title('运动模糊图+高斯')  
subplot(2,4,4),imshow(w1); title('运动模糊图逆滤波器复原') 
subplot(2,4,5),imshow(w2); title('运动模糊图+高斯逆滤波器复原') 
subplot(2,4,6),imshow(f,[]); title('运动模糊图r=40逆滤波器复原')
subplot(2,4,7),imshow(f1,[]); title('运动模糊图+高斯r=100逆滤波器复原')

结果分析;

分析:逆滤波器复原方法数学表达式简单,且物理意义明确,但是当噪声不为零时,而且H (u,v)很小或者为零时,噪声会被放大,即会对逆滤波复原产生巨大影响。因此逆滤波复原方法时存在病态的问题,即在频谱域中对图像信号的那些频谱点上,若:H(u, v)=0,而噪声N(u, v)≠0,则N(u, v)/H(u, v)>>F(u, v),面目全非,这种恢复会出现病态性。解决病态问题的唯一方法就是避开的零点,即小数值的1.在附近,人为地仔细设置使之对传递函数影响变小。2.使具有低通滤波性质。常采用第二种方法如上图结果所示添加了高斯噪声使用改进逆滤波进行复原能够恢复出原图的样子,不至于像全逆滤波那样放大噪声。

 

你可能感兴趣的:(算法,matlab)