当我在不同的计算机(MATLAB)上执行以下代码来计算均方误差时,我得到了不同的答案。有没有人知道为什么会这样?
function [mse,psnr] = mse_psnr(im1,im2)
N = size(im1);
acc = 0;
for k1=1:N(1)
for k2=1:N(2)
acc = acc+ ( im1(k1,k2) - im2(k1,k2) )^2;
end
end
mse = acc/(N(1)*N(2));
psnr = 10*log10((255^2)/mse);发布于 2013-07-23 13:25:56
请尝试并向量化代码以删除嵌套循环:
function [mse psnr] = mse_psnr( im1, im2 )
% make sure input data type is double
im1 = double(im1);
im2 = double(im2);
acc = sum( (im1(:)-im2(:)).^2 ); % instead of nested loop...
mse = acc / numel(im1);
psnr = 10*log10( (255^2)/mse );https://stackoverflow.com/questions/17801516
复制相似问题