I am plotting random circles using the plot function on a white background, how to convert this plot to a binary matrix?
이전 댓글 표시
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
Roger Pool
2019년 2월 2일
Hi, how can I use your code but for circles with not overlap?
Additionally, I need to put triangles instead circles, any idea?
Thanks
Mark Lepage
2019년 2월 2일
Roger Pool
2019년 2월 2일
yes, that is what I need, with circles and triangles.
Image Analyst
2019년 2월 2일
You can try my shape recognition code where I put up random shapes. Adapt the attached code as needed.
Roger Pool
2019년 2월 2일
Thank you.
채택된 답변
추가 답변 (1개)
Image Analyst
2019년 2월 2일
0 개 추천
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.
카테고리
도움말 센터 및 File Exchange에서 Annotations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!