Problem on 'bitand' method
2 次查看(过去 30 天)
显示 更早的评论
Hi friends,
I have problem on 'bitand' method when create marker image using mask.
I2 = im2bw(I1,0.8); %%Thresholding image(Create a mask)
I2Cmp = ~ I2; %%Invert the mask
marker=bitand(1,I2Cmp); %%Create marker image
There is an error when creating marker.
??? Error using ==> bitand Inputs must be non-negative integers.
How would I apply bitand for creating a maker ????
2 个评论
David Young
2011-4-7
Could you explain what the marker image should be? It's not clear why you would want to use bitand at all in this context, and I wonder if you need something completely different. I2 and I2Cmp are logical arrays, so there is only one bit of information per pixel anyway.
采纳的回答
Laura Proctor
2011-4-7
I don't think that you actually need to use BITAND. I think what you would like to do is create marker that consists of all ones and zeros. To do this, just use the following code to create a logical array:
marker = I2Cmp > 0;
Then, to overlay this on I1, simply use element-wise multiplication:
Iresult = I1.*marker;
1 个评论
Steve Eddins
2011-4-7
I2Cmp is already logical, so the first line of code in this answer is not necessary.
更多回答(3 个)
Steve Eddins
2011-4-7
The general answer is to use the elementwise logical operators &, |, and ~ instead of bitand and bitor to do this sort of manipulation with binary images.
To "overlay the inverted image of I2 on I1," as you say, you would do this:
marker = I1 | ~I2;
2 个评论
Steve Eddins
2011-4-7
Here's a different kind of overlay:
Iresult = I1;
Iresult(ICmp) = 255; % assuming I1 is uint8
This version turns all the marker pixels white and leaves the others alone.
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!