Why am i getting two different MSE, while using formula and syntax immse?
조회 수: 3 (최근 30일)
이전 댓글 표시
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)
[r,c]=size(crp_fx_img);
mse_2= sum((crp_mv_img-crp_fx_img).^2,"all")/(r*c)
Is mse_2 wrong?
댓글 수: 0
채택된 답변
DGM
2022년 1월 22일
편집: DGM
2022년 1월 22일
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)
[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
mse_2 = sum(se,"all")/(r*c)
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!