信号处理领域的信噪比即SNR--Singal to Noise Ration,又称讯噪比,即放大器的输出信号的电压与同时输出的噪声电压的比,常常用分贝数表示。
设备的信噪比越高表明它产生的杂音越少。一般来说,信噪比越大,说明混在信号里的噪声越小,声音回放的音质量越高,否则相反。
图像的信噪比应该等于信号与噪声的功率谱之比,但通常功率谱难以计算, 有一种方法可以近似估计图像信噪比,即信号与噪声的方差之比。首先计算图像所有象素的局部方差,将局部方差的最大值认为是信号方差,最小值是噪声方差,求出它们的比值,再转成dB数,最后用经验公式修正。
峰值信噪比经常用作 图像压缩等领域中信号重建质量的测量方法,它常简单地通过 均方差( MSE)进行定义。两个 m× n单色图像 I和 K,如果一个为另外一个的噪声近似,那么它们的的 均方差定义为:
峰值信噪比定义为:
其中, MAXI是表示图像点颜色的最大数值,如果每个采样点用 8 位表示,那么就是 255。更为通用的表示是,如果每个采样点用 B 位线性 脉冲编码调制表示,那么 MAXI 就是
对于每点有RGB三个值的彩色图像来说峰值信噪比的定义类似,只是均方差是所有方差之和除以图像尺寸再除以 3。
图像压缩中典型的峰值信噪比值在 30 到 40dB 之间,愈高愈好。
%%%%%%%%%%%%%%%%%
(I 是原图像,K是滤波后的图像,默认原图无噪声,测试那种滤波效果好)
video=mmreader('che2.AVI');
I1=read(video,590);
I1=rgb2gray(I1);
[m,n]=size(I1);
J=imnoise(I1,'gaussian',0,0.002); %加入高斯噪声
%进行均值滤波
h=fspecial('average',3); %fspecial函数用于产生预定义滤波器
I2=uint8(round(filter2(h,I1))); %filter2函数用于图像滤波,此处h是滤波参数(均值),I1是要处理的图像
%进行中值滤波
I3=medfilt2(J,[3,3]); %medfilt2函数用于图像的中值滤波
%进行维纳滤波
I4=wiener2(J,[3,3]);%进行一次维纳滤波
I5=wiener2(I4,[3,3]);%进行二次维纳滤波
subplot(2,3,1),imshow(I1),title('原图象')
subplot(2,3,2),imshow(J),title('加噪声图象')
subplot(2,3,3),imshow(I2),title('均值滤波后图象')
subplot(2,3,4),imshow(I3),title('中值滤波后图象')
subplot(2,3,5),imshow(I4),title('维纳滤波后图象')
I1=double(I1);
I2=double(I2);
I3=double(I3);
I4=double(I4);
I5=double(I5);
s2=0;
s2=double(s2);
s3=0;
s3=double(s3);
s4=0;
s4=double(s4);
s5=0;
s5=double(s5);
for i=1:m
for j=1:n
s2=s2+(I1(i,j)-I2(i,j))^2;
s3=s3+(I1(i,j)-I3(i,j))^2;
s4=s4+(I1(i,j)-I4(i,j))^2;
s5=s5+(I1(i,j)-I5(i,j))^2;
end
end
MSE2=s2/(m*n)
MSE3=s3/(m*n)
MSE4=s4/(m*n)
MSE5=s5/(m*n)
PSNR2=10*log10(double(255^2/MSE2))
PSNR3=10*log10(double(255^2/MSE3))
PSNR4=10*log10(double(255^2/MSE4))
PSNR5=10*log10(double(255^2/MSE5))
PSNR2 =
33.6596
PSNR3 =
32.6051
PSNR4 =
33.8043
PSNR5 =
34.3825
一般情况,信噪比越大越好。