How to connect non-continuous boundary and fill the object in binary image

6 vues (au cours des 30 derniers jours)
AniCnx
AniCnx le 1 Mar 2019
Commenté : AniCnx le 2 Mar 2019
I have a binary image that contains the boundary of the object. The plots of boundary are not continuous, how can I connect those points? Moreover, how can I fill value in this object?
m.png

Réponse acceptée

KSSV
KSSV le 1 Mar 2019
Modifié(e) : KSSV le 1 Mar 2019
An vague attempt....it can be further refined or a more legant solution would be possible.
I = imread('m.png') ;
I1 = rgb2gray(I) ;
I1 = imcrop(I1) ;
[y,x] = find(I1) ;
imshow(I1) ;
hold on
% plot(x,y,'.r')
[nx,ny] = size(I1) ;
P1 = [x(x<=nx/2) y(x<=nx/2)] ;
P2 = [x(x>nx/2) y(x>nx/2)] ;
P = P1'; % coordinates / points
c = mean(P,2); % mean/ central point
d = P-c ; % vectors connecting the central point and the given points
th = atan2(d(2,:),d(1,:)); % angle above x axis
[th, idx] = sort(th); % sorting the angles
P = P(:,idx); % sorting the given points
P = [P P(:,1)]; % add the first at the end to close the polygon
plot( P(1,:), P(2,:), 'r');
P = P2'; % coordinates / points
c = mean(P,2); % mean/ central point
d = P-c ; % vectors connecting the central point and the given points
th = atan2(d(2,:),d(1,:)); % angle above x axis
[th, idx] = sort(th); % sorting the angles
P = P(:,idx); % sorting the given points
P = [P P(:,1)]; % add the first at the end to close the polygon
plot( P(1,:), P(2,:), 'b');
  3 commentaires
KSSV
KSSV le 1 Mar 2019
YOu need not to use boundary.......edited the code.
AniCnx
AniCnx le 2 Mar 2019
Thank you very much. I sorted it out.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by