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