imcomplement for binary image doesn't replace 1.000 with 0.000
Show older comments
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 Comment
Jan
on 14 Jul 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*.
Answers (1)
Friedrich
on 14 Jul 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 Comments
Jan
on 14 Jul 2011
+1. It seems to be another floating point problem.
Andrei Bobrov
on 14 Jul 2011
double(int8([1 0 1.12e-14]))
Categories
Find more on Region and Image Properties 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!