Subtracting two numbers gives 0 as answer
3 ビュー (過去 30 日間)
古いコメントを表示
I have two matrices that represent a picture in the gray scale. Values 0-255.
I want to calculate a metric called MSE which uses the formula
The problem is that,let's say for the first iteration the p1(w,h) = 156 and the p2(w,h) = 169. When i subtract them i do not get -13. I get 0.
May be this is a silly question but im new to this and have been trying to solve this for hours.
ΝΟΤΕ: I was always getting a 0 in return so i did one operation per line to find the issue.

0 件のコメント
採用された回答
Ameer Hamza
2020 年 10 月 30 日
編集済み: Ameer Hamza
2020 年 10 月 30 日
You are getting zero because the images are probably in uint8 format and negative results are given a value of zero in that case
>> uint8(10)-uint8(1)
ans =
uint8
9
>> uint8(1)-uint8(10)
ans =
uint8
0
The solution is to convert the matrices to double() before subtraction. At beginning of your function, add the lines
startingImage = double(startingImage);
compressedImage = double(compressedImage);
mse = 0; ...
...
Also note that you can do these things without loop.
startingImage = double(startingImage);
compressedImage = double(compressedImage);
mse = mean((startingImage-compressedImage).^2, 'all')
or if you are using an older version of MATLAB
mse = mean((startingImage(:)-compressedImage(:)).^2)
2 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Get Started with MATLAB についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!