How can I find the centroid of this circle of objects?
12 次查看(过去 30 天)
显示 更早的评论
Is it possible to find the center of this circle of unconnected objects?
I have tried using regionprops, however, it does not give me a centroid in the center.
Thank you
0 个评论
回答(1 个)
Rik
2020-5-29
There are at least two options here. The first is to take the average of the x coordinates and y coordinates of the white pixels.
The second in a bit more involved. You can define a cost function (e.g. the sum of all the distances from the centroid to each point) and fit a value to that function. The performance would probably improve if you skeletonize your image first.
1 个评论
Ameer Hamza
2020-5-29
This code follows the Rik's idea
img = imbinarize(rgb2gray(im2double(imread('image.jpeg'))));
rgs = regionprops(img);
[~,idx] = max([rgs.Area]);
rgs(idx) = [];
center = vertcat(rgs.Centroid);
[xc, yc, R] = circfit(center(:,1), center(:,2));
imshow(img);
hold on
plot(xc, yc, 'r+', 'LineWidth', 2)
images.roi.Circle(gca,'Center',[xc yc],'Radius',R,'Color','r');
circfit() is used from here: https://www.mathworks.com/matlabcentral/fileexchange/5557-circle-fit
The fit looks quite accurate.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Segmentation and Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!