2017-03-18 2 views
0

J'ai une matrice 2D 50x50 constituée d'un trou de '1' (un disque) et les valeurs restantes sont nulles. (la matrice est binaire). Je voudrais juste retourner les positions dans la matrice du contour de l'objet comme indiqué dans la figure ci-dessous. J'ai essayé la commande "imcontour" (puisque mon cas est aussi une image binaire). C'est bien mais certaines des positions données du contour sont au dessus de la taille de la matrice, ce qui signifie qu'elle donne peut-être la position en pixels non index de la matrice. J'ai aussi essayé "contour" et "limite" mais en vain. Des idées?
enter image description hereRenvoyer les positions d'un contour dans une matrice 2D, dans matlab?

+0

'imcontour' devrait fonctionner, vous avez certainement une erreur dans votre code. Veuillez fournir un exemple minimal de code. – Ratbert

Répondre

1

Si je me trompe pas, essayez [x, y] = find (M) pour extraire les positions et essayer ind = trouver (M) pour extraire les numéros d'index des valeurs non-zéros dans votre matrice.

+0

A l'intérieur du cercle il y a '1' et extérieur '0'. La figure est juste le contour. –

+0

Ensuite, vous cherchez la limite. Utilisez simplement la fonction bwperim. [x, y] = find (bwperim (M)) – Ozcan

+0

Merci beaucoup! c'est ce que je cherchais. J'ai trouvé une autre solution qui est "edge", mais "bwperim" est meilleur. –