2011-02-07 2 views
5

Disons que j'ai une forme comme ceci:trouver les coordonnées des points à la frontière d'une forme

enter image description here

Après toutes les blagues de me vouloir attirer les haricots sont épuisés, je veux trouver les points à la frontière de la forme. Je sais qu'il peut y en avoir beaucoup, donc une bonne distance entre eux est acceptée.

Existe-t-il un algorithme pour un tel besoin? Ou un logiciel? Toutes les solutions que j'ai trouvées impliquent beaucoup de travail manuel, surtout si je veux dessiner une forme légèrement différente.

Stackoverflow sagesse, s'il vous plaît aider.

Répondre

6

Vous pouvez simplement balayer les pixels horizontalement et verticalement pour trouver les frontières de couleur, ou, si vous voulez une solution plus sophistiquée et générale, vous pouvez par exemple utiliser le gradient method pour détecter les bords:

enter image description here

Édition

En répondant à votre commentaire, l'image est juste un tableau bidimensionnel, contenant des valeurs de pixel. Vous pouvez tester chaque pixel et sélectionner ceux ayant une couleur spécifique. Comme ceci:

enter image description here

Et le résultat sont vos pixels de bord:

{{35, 107}, {35, 108}, {35, 109}, {35, 110}, {35, 111}, 
{35, 112}, {35, 113}, {35, 114}, {35, 115}, {35, 116}, 
{35, 117}, {35, 118}, {35, 119}, {35, 120}, {35, 121}, 
{36, 103}, {36, 104}, {36, 105}, {36, 106}, {36, 107}, etc.... 
+0

Je ne sais pas comment vous avez fait cela, mais pour clarifier: je besoin d'une liste de coordonnées, et non l'image résultante. – Tudorizer

+1

@Tudorizer L'image est une matrice. La liste des coordonnées est la liste sur (ligne, colonne) où les pixels sont blancs! –

+0

Comment avez-vous généré cette image? – Tudorizer

2

On dirait que vous êtes à la recherche pour "vectorisation", ou plus précisément "vectorisation bitmap". Si vous vectorisez votre bitmap, vous obtiendrez une version vectorielle de votre forme, qui vous donnera toutes les coordonnées de la frontière.

Si oui, il y a un certain nombre de solutions disponibles, y compris AutoTrace: http://autotrace.sourceforge.net/

+0

Cela semble intéressant. Pour clarifier, j'ai besoin des coordonnées des points. Une liste/tableau d'eux. – Tudorizer

Questions connexes