峰值信噪比PSNR的疑问
问题如下:1.计算PSNR公式PSNR = 10*log10( (MAX^2) / MSE ):对像素点是8位Uint的图像来说,MAX=255,但是对转换后像数值在的double型数据,MAX=255,还是MAX=1?
2,对于下面的程序,如果MAX=1,计算的PSNR=6.4043,MSE=0.2289,感觉PSNR太小?
如果MAX=255,PSNR=54.5242,MSE=0.2294,感觉PSNR太大?
下面是去噪后计算PSNR的程序:
%读取图像
I = imread('barbara.tif');
I = im2double(I);
subplot(2,2,1);
imshow(I,[]);
title('原始图像');
axis square;
noise = imnoise(I,'gaussian',Mean,(20^2)/(255^2));%标准差20的高斯噪声
Xnoise = I + noise;
%小波域去噪
= ddencmp('den','wv',Xnoise);
= wdencmp('gbl',Xnoise,'sym8',3,thr,sorh,keepapp);
%计算PSNR
= Psnr(I,Xdenoise);
%下面是PSNR函数
function [ PSNR,MSE ] = Psnr( im1,im2 )
%------------------------计算峰值信噪比程序———————————————-----
%ininput ------ im1 : the original image matrix
% im2 : the modified image matrix
if (size(im1))~=(size(im2))
error('错误:两个输入图象的大小不一致');
end
= size(im1);
A = double(im1);
B = double(im2);
D = sum( sum( (A-B).^2 ) );
MSE = D / (m * n);
ifD == 0
error('两幅图像完全一样');
PSNR = 200;
else
PSNR = 10*log10( (255^2) / MSE );
end 图像处理没玩过, LZ先搜索下
http://forum.vibunion.com/forum-viewthread-tid-89099-highlight-PSNR.html
并同待高人路过 这个问题从公式上就可以理解
根据PSNR的定义
其中R(也就是你定义的max)对于8unit图形而言,他应该是255
MSE是均方差,它的定义是
当你的图形归一化为后,MSE相应的减小了255^2倍
所以此时只有R取1,所得PSNR才能和不做归一化时计算的PSNR结果一致
这个你可以做一个比较验证
1. 图形归一化后,R取1,计算PSNR
2. 推行归一化后在乘以255,R取255,计算PSNR
比较一下两者的情况,其结果应该是一致的
所以在归一化后,R应该取1
页:
[1]