回 帖 发 新 帖 刷新版面

主题:高手帮忙看一下我的psnr程序有什么问题,急!!!

高手帮忙看一下我的psnr程序有什么问题,为什么得出的数都特别大,好像是正常值的2倍。经常得出50多,70多的数值。谢谢了!

function PSNR=psnr(f,g)
A=im2double(f);
B=im2double(g);
temp=0;
for i=1:512
    for j=1:512
        temp=temp+(A(i,j)-B(i,j))*(A(i,j)-B(i,j));
    end
end

mse=temp/(512*512)
x=(255*255)/mse;
psnr=10*log10(x)
end

回复列表 (共3个回复)

沙发


d = mean( mean( (x(:)-y(:)).^2 ) );
m1 = max( abs(x(:)) );
m2 = max( abs(y(:)) );
m = max(m1,m2);
p = 10*log10( m^2/d );

板凳

首先非常感谢你回答我的问题。
运行时出现错误??? Function 'log2' is not defined for values of class 'uint8'.
我把图像变换为double型,但还得10.7453。(这是把加噪0.3的lena图像作为x,把中值滤波作为y.)这是为什么啊?

3 楼


我又把原图像作为x算了一下,这回结果的23.69。比较的两个图像不是加噪的,而是没加噪的原图和滤波后的比,对吧?

我来回复

您尚未登录,请登录后再回复。点此登录或注册