Subtracting two numbers gives 0 as answer
6 views (last 30 days)
Show older comments
Kostantinos Thanasis
on 30 Oct 2020
Commented: Ameer Hamza
on 30 Oct 2020
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 Comments
Accepted Answer
Ameer Hamza
on 30 Oct 2020
Edited: Ameer Hamza
on 30 Oct 2020
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 Comments
More Answers (0)
See Also
Categories
Find more on Get Started with MATLAB in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!