# I am plotting random circles using the plot function on a white background, how to convert this plot to a binary matrix?

3 views (last 30 days)
Mark Lepage on 1 Feb 2019
Commented: Roger Pool on 2 Feb 2019
So I am trying to simulate some random circles on an image.
I am creating a white background of the appropriate resolution by:
%Create blank white image
xres = 2304;
yres = 3456;
img = ones(xres,yres);
%plot
figure, imshow(img);
hold on
Then generating a bunch of random circles using a custom function by:
%% Generate random bubble, based on above distribution
randomDiam = lognrnd(mu,sigma,nBubbles);
randomX = yres*rand(nBubbles,1);
randomY = xres*rand(nBubbles,1);
for ii = 1:nBubbles
generateCircle(randomX(ii),randomY(ii),randomDiam(ii));
end
My generateCircle function simply uses plot to plot the cricles:
function generateCircle(x,y,d)
%Resolution of circle set by 0.01 right now
theta = 0:0.01:2*pi;
%convert to circle plot
xp = (d/2)*cos(theta);
yp = (d/2)*sin(theta);
%plot
plot(x+xp,y+yp,'k');
end
This works great and creates the following:
However, I need to do further analysis on this. How do I convert this to an actual logical matrix?
The way I'm doing it now, the circles don't actually register in my img matrix.
Any ideas??
Roger Pool on 2 Feb 2019
Thank you.

Mark Lepage on 2 Feb 2019
Hey everyone,
I got around this by using
imageOut = insertShape(img,'FilledCircle',M,'Color','black','Opacity',1);
where img is the white background I created, and M is an [x,y,r] matrix for the circles position and radii.
Thanks

Image Analyst on 2 Feb 2019
If you want solid circles, you can use poly2mask() to burn each circle into a binary image. Then OR that binary image from that one circle into your "master" image that contains ALL the circles.