I am plotting random circles using the plot function on a white background, how to convert this plot to a binary matrix?
4 views (last 30 days)
Show older comments
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??
5 Comments
Image Analyst
on 2 Feb 2019
You can try my shape recognition code where I put up random shapes. Adapt the attached code as needed.
Accepted Answer
More Answers (1)
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.
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!