Subtracting two numbers gives 0 as answer
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Kostantinos Thanasis
el 30 de Oct. de 2020
Comentada: Ameer Hamza
el 30 de Oct. de 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 comentarios
Respuesta aceptada
Ameer Hamza
el 30 de Oct. de 2020
Editada: Ameer Hamza
el 30 de Oct. de 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 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Get Started with MATLAB en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!