Effacer les filtres
Effacer les filtres

Why am i getting two different MSE, while using formula and syntax immse?

2 vues (au cours des 30 derniers jours)
IS there any mistake in the formula applied for mean squarred error?
moving_img= imread("AT3_1m4_02.tif");
fixed_img= imread("AT3_1m4_03.tif");
crp_mv_img=imcrop(moving_img, [235, 210, 100, 100]);
crp_fx_img=imcrop(fixed_img, [235, 210, 100, 100]);
mse_1=immse(crp_fx_img,crp_mv_img)
mse_1 = 979.2353
[r,c]=size(crp_fx_img);
mse_2= sum((crp_mv_img-crp_fx_img).^2,"all")/(r*c)
mse_2 = 44.0342
Is mse_2 wrong?

Réponse acceptée

DGM
DGM le 22 Jan 2022
Modifié(e) : DGM le 22 Jan 2022
The reason is that the two images are integer-class. The difference and square may result in data truncation.
moving_img = imread("AT3_1m4_02.tif");
fixed_img = imread("AT3_1m4_03.tif");
crp_mv_img = imcrop(moving_img, [235, 210, 100, 100]);
crp_fx_img = imcrop(fixed_img, [235, 210, 100, 100]);
mse_1 = immse(crp_fx_img,crp_mv_img)
mse_1 = 979.2353
[r,c] = size(crp_fx_img);
se = (double(crp_mv_img)-double(crp_fx_img)).^2; % square error
[min(se(:)) max(se(:))] % values are outside of range for uint8
ans = 1×2
0 27225
mse_2 = sum(se,"all")/(r*c)
mse_2 = 979.2353

Plus de réponses (0)

Catégories

En savoir plus sur Geometric Transformation and Image Registration dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by