imcomplement for binary image doesn't replace 1.000 with 0.000
Afficher commentaires plus anciens
I have a binary image that I am certain has only values of 0.0000 and 1.0000. I need the complement of this image, but when I use imcomplement, all the values that are 1.0000 become very small nonzero numbers (eg 1.0245e-16) and this ruins the rest of my program b/c I need to use bwdist later. Am I doing something wrong?
1 commentaire
Jan
le 14 Juil 2011
Usually a binary image can be stored as LOGICAL or UINT8 array to save memory. This would solve the floating point problems implicitely. Therefore it is called *binary*.
Réponses (1)
Friedrich
le 14 Juil 2011
Hi,
are you sure that your value is really 1.0? Because:
imcomplement(.9999999999999994)
ans =
5.5511e-016
>> .9999999999999994
ans =
1.0000
For varifying you can round your values and take a look at the result:
imcomplement(round(.9999999999999994))
ans =
0
2 commentaires
Jan
le 14 Juil 2011
+1. It seems to be another floating point problem.
Andrei Bobrov
le 14 Juil 2011
double(int8([1 0 1.12e-14]))
Catégories
En savoir plus sur Region and Image Properties dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!