登录论坛

查看完整版本 : [求助]如何计算图像压缩后的MSE和PSNR?


qinyonglyz
2009-01-01, 14:41
对一幅图压缩后,如何用Matlab编程计算压缩恢复后的图片与原始图片比对的MSE(均方差)和PSNR(峰值信噪比)?
MSE = E( (img-Eimg)^2 ) = SUM((img-Eimg)^2)/(M*N);
PSNR=10log10(255^2/MSE);

283044290
2009-01-03, 10:06
function PSNR = psnr(f1, f2)
%计算两幅图像的峰值信噪比

k = 8; %k为图像是表示地个像素点所用的二进制位数,即位深。
fmax = 2.^k - 1;
a = fmax.^2;
e = double(f1) - double(f2);
[m, n] = size(e);
b = sum(e(:).^2);
PSNR = 10*log(m*n*a/b);

function ERMS = erms(f1, f2)
%计算f1和f2均方根误差

e = double(f1) - double(f2);
[m, n] = size(e);
ERMS = sqrt(sum(e(:).^2)/(m*n));

283044290
2009-01-03, 10:07
%k为图像中表示一个像素点所用的二进制位数,即位深。

bjxiaohua
2009-03-09, 17:57
这条语句e = double(f1) - double(f2);是表明f1和f2大小必须相等吗?

silas_xue
2009-03-10, 00:42
lz 你的"表明f1和f2大小必须相等吗?"是什么意思 如果两者相等了 还计算什么e啊 PSNR就是无穷大了 你的压缩就是现在最先进的了 O(∩_∩)O~