how can i count the number of circles with random centers and fixed diameters.
2 次查看(过去 30 天)
显示 更早的评论
I want to get a plot of size of circles(pixels) vs. their numbers. Example 10 of 20 pixels, 15 of 10 pixels size etc.. the background should be contrast of intensity of the circles..
3 个评论
Image Analyst
2012-12-3
Someone added this as a tag. It's not appropriate for a tag so I'm moving it here: http://www.mathworks.com/matlabcentral/answers/24609-counting-the-pixels-within-a-circle-detected-in-an-image
采纳的回答
Image Analyst
2012-12-3
编辑:Image Analyst
2012-12-4
See my Image Segmentation Tutorial. It determines the size distribution of circles (coins). http://www.mathworks.com/matlabcentral/fileexchange/25157-image-segmentation-tutorial-blobsdemo You just need to call bar() to display them.
You might also try imfindcircles() in the Image Processing Toolbox, or see Brett's demo: http://www.mathworks.com/matlabcentral/fileexchange/34365-findcirclesgui
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables.
workspace; % Make sure the workspace panel is showing.
format longg;
format compact;
fontSize = 20;
% Get centroid via bwboundaries and incorrect method.
rgbImage = imread('D:\Temporary stuff\welcome-green-circles-layout.jpg');
subplot(2, 2, 1);
imshow(rgbImage);
title('Original Image', 'FontSize', fontSize);
% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
% Get centroid correctly via regionprops
binaryImage = rgbImage(:,:,1) < 200;
subplot(2, 2, 2);
imshow(binaryImage);
title('Binary Image with Centroids', 'FontSize', fontSize);
hold on;
measurements = regionprops(binaryImage, 'Centroid', 'Area');
numberOfCircles = length(measurements);
allAreas = [measurements.Area]
for k = 1 : numberOfCircles
centroid = [measurements(k).Centroid];
xCenter = centroid(1);
yCenter = centroid(2);
plot(xCenter, yCenter, 'b+');
end
[counts values] = hist(allAreas);
subplot(2, 2, 3);
bar(values, counts);
grid on;
title('Histogram of Areas (the size distribution)', 'FontSize', fontSize);
message = sprintf('The number of circles is %d', numberOfCircles);
msgbox(message);
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!