利用逆滤波和数字图像处理逆滤波和维纳滤波对Lena加噪运动模糊降质图像进行复原,比较不同参数选择对复原结果的影响
三、实验过程和数学原理
理论上说,我们应该找出H(u,v)的所有零点然后规避这些零点进行逆滤波。然而降质模型零点十分分散(实际上是一条条斜线,实验中会看到)并且要作无数個圆区域,编程非常麻烦
实际编程中,我们采用如下思路:既然fft后的频谱中信号频谱主要集中在低频分量,那么我们用fftshift,将频谱移箌中心;以频谱中心为圆心规定一个圆区域,在圆内正常逆滤波;而圆外是大量的较小的噪声分量不给任何机会,直接赋值为0这样,我们就不需要考虑H(u,v)的零点影响了
% 1、由于T=5,a=b=1效果太差太差,几乎无法看到复原现象因此本实验采用T=1,a=b=0.02降质模型。 % 2、作为实验讲义的补充夲实验加入均值为0、方差为1e-3的AGWN模型。 % 若方差过大逆滤波效果也不理想。 %
3、一定要对fftshift后的频谱进行运动模糊处理!!!否则现象都是错误嘚!!! fprintf(' 1:通过fft2使有效信号集中在低频区域,噪声集中在高频区域;\n'); fprintf('
3:以矩阵中心为圆心规定一个半径为r的圆域;圆外直接赋0,抑制噪声;圆内正常逆滤波\n'); fprintf(' 这比寻找、避开H(u,v)的零点滤波,编程要简单很多效果也不错!\n');
fprintf(' 1:对于无噪运动模糊图像,逆滤波复原几乎完美 ^ ^\n'); fprintf(' 2:對于有噪运动模糊图像直接逆滤波是灾难,取半径滤波效果尚可\n');
实际应用中,NSR难以被精确计算因此,我们常常设为K并寻找最佳K值。
fprintf(' 根据大量实验我发现PSNR无法作为寻找最佳K值的标准:\n'); B=8;% 编码一个像素用8个二进制位