Calculating the RMSE value between two images

조회 수: 35 (최근 30일)
Shourya
Shourya 2022년 9월 19일
댓글: Image Analyst 2022년 9월 20일
I calculated the RMSE value between two images of size 128 x 128 in .jpg format and I am getting the result above 1. I want the range to be between 0-1. I tried applying imadjust to normalize but it did not help. How can I normalize the image and get the required result between 0-1. I also tried to save the images in .mat file and normalize it but I am getting error as the image is being saved as type struct and not double. Please help.Thank you in advance.
I used the following line to calculate rmse:
rmse_val = sqrt(mean((ref(:)-a(:)).^2))

채택된 답변

Image Analyst
Image Analyst 2022년 9월 19일
You forgot to attach your variables. I don't know if you can subtract structures like that so I think ref and (the badly-named) a are actually numerical arrays, not structures. If they are uint8 gray scale images, you should convert to double before subtracting, and use the rms function:
a = imread('cameraman.tif');
ref = a + 10;
% First method is to use rms on the difference array.
diffImage = double(ref) - double(a);
r = rms(diffImage(:))
r = 9.9975
% Alternate way is to use rmse
re = rmse(double(ref(:)), double(a(:)))
re = 9.9975
  댓글 수: 4
Shourya
Shourya 2022년 9월 20일
This is what I will get 5.69/255=0.0219. Is this right?
Image Analyst
Image Analyst 2022년 9월 20일
Yes

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Image Processing Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by