0
Matlab如何计算免疫?我想找到两张图像之间的mse。根据how to measure he similarity between two 2D complex fields in matlab?,对于参考图像Y1和比较图像Y,immse与MSE=mean((abs(Y(:))-abs(Y1(:))).^2)
相同。同样,我可以将MSE计算为求和平方误差除以行数* cols。当我在其中一个演示图像上运行时,这些不同的方法不会给出与免疫相同的答案。MATLAB如何计算免疫?
下面是示例代码中的两个MSE方法。该图像来自Matlab免费演示,并且免疫给出了MSE = 340。其他两个代码给出了MSE = 2.5左右。
注意:代码是示例代码,我没有在同一个脚本中使用相同的函数名两次。我明白如果你想抱怨使用大小(图像),但这是一个细节。我更担心我的理解中存在的基本缺陷,即给我带来数量级差异。非常感谢。
n01 = imread('pout.tif');
n02 = imnoise(n01,'salt & pepper', 0.02);
mse = mymse(n02,n01);
mlmse = immse(n02,n01);
function this = mymse(icomp, ibase)
[X Y nchan] = size(ibase);
diff = (icomp - ibase);
this = sum(sum(diff.*diff))/(X*Y*nchan);
end
function this = mymse(icomp, ibase)
this = mean ((abs(ibase(:)) - abs(icomp(:))).^2);
end
非常感谢。这非常有帮助。 – tlturton