2013-10-07 3 views

Répondre

5

Je suppose ici que vous avez déjà le Canny edge detection implemented basé sur la façon dont la question est formulée -

Vous pouvez utiliser une approche such as this (écrit en Java, mais devrait être assez facile à traduire en JavaScript) et/ou peut-être quelques-uns utilisation limitée de line-fitting approaches (statistique).

L'essentiel est que vous deviez déterminer quels pixels sont connectés et créer vous-même des objets/tableaux de polygones en fonction du résultat de la détection de contour. Une fois que vous avez les pixels connectés, vous pouvez utiliser des algorithmes de réduction ponctuelle tels que l'algorithme Ramer–Douglas–Peucker (JavaScript implementation here) pour éviter que les polygones ne contiennent tous les points de lignes inclinées similaires et ainsi de suite. Vous rencontrerez de nombreux défis, tels que de courtes lignes segmentées dues à trop de bruit dans l'image originale ou des "lignes faibles", des groupes de "lignes" qui rendent difficile de trouver comment les connecter. polygones.

0

Je ne sais pas de toutes les bibliothèques pour cela, mais vous pouvez:

  • Utilisez getImageData() pour accéder à un octet [] de données de pixels
  • Mettre en oeuvre votre propre filtre de convolution au-dessus de ces données (des exemples pour cela peut exister en ligne)

de cette façon, vous trouverez des zones de contraste élevé (bords.)

EDIT Je suis d'accord avec Ken - j'ai peut-être mal lu la question. En plus de la réponse de Ken, si vous connaissez le type de formes que vous cherchez, vous pouvez regarder le Hough Transform qui est bien adapté pour détecter des lignes, des ellipses et d'autres formes qui peuvent être définies géométriquement en utilisant seulement quelques paramètres.

Questions connexes