How to find minimum distance between two cylindrical objects from binary image?

Hello,
I have this binary image
in which I have two cylindrical objects and I want to find out the minimum distance between these. How to do that? I have read this answer but I cannot understand this. Can anyone help to calculate minimum distance in a more simple way? Thanks.

 채택된 답변

By using bwperim, regionprops and pdist2 functions, you can obtain the minimum distance and corresponding points on each object, like:
% Import your image and binarize
I = imread('aa.jpg');
BW = imbinarize(rgb2gray(I));
% Measure the minimum distance
BW2 = bwperim(BW,8);
stats = struct2table(regionprops(BW2,'PixelList'));
dist = pdist2(stats.PixelList{1},stats.PixelList{2});
[dmin,idx] = min(dist(:));
[r,c] = ind2sub(size(dist),idx);
pt1 = stats.PixelList{1}(r,:);
pt2 = stats.PixelList{2}(c,:);
% Show the result
imshow(BW)
hold on
plot([pt1(1) pt2(1)],[pt1(2) pt2(2)],'r-o','LineWidth',2)
disp(sprintf('Min. distance: %f [pixel]',dmin))
The minimum distance in pixel was measured to be:
Min. distance: 476.822818 [pixel]

댓글 수: 4

Sir while I run above program it shows error
Undefined function 'imbinarize' for input arguments of type 'uint8'
because I have 2014b version while imbinarize was added from 2016a version. Is there any alternative for the same?
Thanks @Akira Agata. I used
threshold = graythresh(I);
BW=im2bw(I,threshold);
instead of imbinarize and it works fine.
Sir, pls tell what modification is required in your code in case the distances between more than two objects are needed in an image..
If your image has N objects, the minimum distance and corresponding points between i th and j th objects can be calculated by modifying the code as follows (note: 1 <= i,j <= N and i ~= j).
dist = pdist2(stats.PixelList{i},stats.PixelList{j});
[dmin,idx] = min(dist(:));
[r,c] = ind2sub(size(dist),idx);
pt1 = stats.PixelList{i}(r,:);
pt2 = stats.PixelList{j}(c,:);

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

질문:

2017년 12월 13일

댓글:

2018년 5월 6일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by