carl
carl

Reputation: 623

How to use a matrix with a circle as a mask?

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.

enter image description here

I want to cancel all the color pixel outside the greenish circle. Is there any way to do this?

Upvotes: 1

Views: 68

Answers (1)

MrAzzaman
MrAzzaman

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

Related Questions