Problem on 'bitand' method
4 ビュー (過去 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!