Measure distance between two object with same color automatically
显示 更早的评论
how do I measure distances in object which has the same colors from this image, for example the distance between "red" and "red. Thanks for your help.

1 个评论
darova
2019-10-6
YOu should group object with the same color i think
回答(1 个)
Image Analyst
2019-10-6
0 个投票
First you need to segment the image to find all the "red" regions. I have some demos for color segmentation in my File Exchange. Or you could use the Color Thresholder app on the apps tab of the tool ribbon.
Once you have a mask of the red regions, you can ask regionprops() for the centroids.
Then, with the centroids, you can use pdist2(), in the Statistics and Machine Learning Toolbox, to find the distance of every blob to every other blob.
5 个评论
bimo prasetyo
2019-10-7
Image Analyst
2019-10-7
Explain what "connect" means to you. Do you want to draw a line between the two centroids?
bimo prasetyo
2019-10-8
Image Analyst
2019-10-10
编辑:Image Analyst
2020-1-22
Use the Color Thresholder app on the Apps tab of the tool ribbon to create a mask. Then call regionprops(mask, 'Centroid') to get the centroids. Then use plot() or line() to draw a line between each pair of centroids. Can you try this?
props = regionprops(mask, 'Centroid');
allCentroidsXY = vertcat(props.Centroid);
numBlobs = length(props);
hold on; % Don't let lines blow away image.
for k1 = 1 : (numBlobs - 1)
x1 = allCentroidsXY(k1, 1);
y1 = allCentroidsXY(k1, 2);
for k2 = (k1 + 1) : numBlobs
x2 = allCentroidsXY(k2, 1);
y2 = allCentroidsXY(k2, 2);
line([x1, x2], [y1, y2], 'Color', 'r', 'LineWidth', 2)
end
end
Hend Tayeb
2020-1-22
I tried it and its working! thank you
类别
在 帮助中心 和 File Exchange 中查找有关 Image Thresholding 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!