Calculating the RMSE value between two images

59 ビュー (過去 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 件)

Community Treasure Hunt

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

Start Hunting!

Translated by