基于最小均方差(维纳)滤波的图像去模糊
程序员文章站
2022-06-07 18:23:18
...
逆滤波容易受到噪声的影响。最小均方差滤波,该方法建立在图像和噪声都是随机变量的基础上,找出未污染图像
假设噪声和图像不相关,其中一个或另一个有零均值,且估计中的灰度级是退化图像中灰度级的线性函数。误差函数的最小值在频率域表示:
一个复向量与其共轭的乘积等于该复数量幅度的平方。维纳滤波。
当我们处理白噪声时,谱
PSNR是最普遍和使用最为广泛的一种图像客观评价指标,然而它是基于对应像素点间的误差,即基于误差敏感的图像质量评价。由于并未考虑到人眼的视觉特性(人眼对空间频率较低的对比差异敏感度较高,人眼对亮度对比差异的敏感度较色度高,人眼对一个区域的感知结果会受到其周围邻近区域的影响等),因而经常出现评价结果与人的主观感觉不一致的情况。
MSE表示当前图像X和参考图像Y的均方误差(Mean Square Error),H、W分别为图像的高度和宽度:
PSNR的单位是dB,数值越大表示失真越小。n为每像素的比特数,一般的灰度图像取8,即像素灰阶数为256.
%Read image
I = imread('1.jpg');
[d1,d2,d3] = size(I);
if(d3 > 1)
I = rgb2gray(I);
end
I = im2double(I);
%I = im2double(imread('cameraman.tif'));
figure,subplot(2,3,1),imshow(I);
title('Original Image ');
%Simulate a motion blur
LEN = 100;
THETA = 11;
PSF = fspecial('motion', LEN, THETA);
blurred = imfilter(I, PSF, 'conv', 'circular');
subplot(2,3,2),imshow(blurred);
PSNRblurr=psnr(I,blurred);
title('blurred');
%Restore the blurred image
wnr1 = deconvwnr(blurred, PSF, 0);
subplot(2,3,3),imshow(wnr1);
PSNR1=psnr(I,wnr1);
title('Restored Image');
%Simulate blur and noise
noise_mean = 0;
noise_var = 0.0001;
blurred_noisy = imnoise(blurred, 'gaussian', ...
noise_mean, noise_var);
subplot(2,3,4),imshow(blurred_noisy)
title('Simulate Blur and Noise')
PSNRnoise=psnr(I,blurred_noisy);
%Restore the blurred and noisy image:First attempt
wnr2 = deconvwnr(blurred_noisy, PSF, 0);
subplot(2,3,5);imshow(wnr2);title('Restoration of Blurred, Noisy Image Using NSR = 0')
PSNR2=psnr(I,wnr2);
%Restore the Blurred and Noisy Image: Second Attempt
signal_var = var(I(:));
wnr3 = deconvwnr(blurred_noisy, PSF, noise_var / signal_var);
subplot(2,3,6),imshow(wnr3)
PSNR3=psnr(I,wnr3);
title('Restoration of Blurred, Noisy Image Using Estimated NSR');
J = deconvwnr(I,PSF,NSR)
NSR噪声和信号比,显著影响计算结果,计算结果可以用PSNR来度量。
http://blog.csdn.net/zjyruobing/article/details/49908979
http://blog.csdn.net/bluecol/article/details/46242355