Reputation: 623
I'm new in MATLAB and using it for some medical analysis. I have a matrix which contains a circular shape in it. Here is a sample:
0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 1 0 1 1 0 0 0
0 0 1 0 0 0 0 1 0 0
0 1 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0
0 0 1 1 0 1 1 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
This matrix has been computed by this line:
egslbr= edge(slbr,'log');
Where slbr is my image. By merging the egslbr with my slbr I get the image bellow.
I want to cancel all the color pixel outside the greenish circle. Is there any way to do this?
Upvotes: 1
Views: 68
Reputation: 4768
You should be able to create a mask from your circle (assuming it's a complete circle -- the sample matrix you gave has a gap in it which makes this much more difficult, but I'm going to assume that was a mistake). Here's a simple way of doing it:
mask = ~cumsum(egslbr) | ~cumsum(egslbr,'reverse');
slbr(mask) = 0;
This should set every pixel outside the circle (not including the edge of the circle though) to zero.
Upvotes: 3