La mise en œuvre de 8-Connectivité Connecté-l'Étiquetage de Composants en Python
Juste pour les fins de l'enseignement, je suis en train de faire une lettre-et-symbole de la reconnaissance du programme en Python, et j'ai rencontré quelques difficultés avec la région de la séparation. J'ai fait un travail connecté-l'étiquetage de composants de la fonction en utilisant les informations ici:
Mais j'ai besoin de l'un avec la précision d'un 8-connectivité, qui la mentionne, mais ne fournit pas d'informations. Il a un schéma sur le côté droit, ce qui montre que, pour les vérifier, au nord-ouest et Nord-est de pixels doivent être inclus, mais je n'ai aucune idée de comment faire et je ne trouve aucune information sur elle. Je ne demande pas de code, mais quelqu'un peut-il familier avec cette méthode décrit la manière d'incorporer ces?
Vous devez vous connecter pour publier un commentaire.
8-la connectivité n'est pas plus précis, et, dans la pratique, il est adapté uniquement pour certaines applications. Il est plus courant d'utiliser 4-connectivité, en particulier pour le "naturel" des images plutôt que des images créées dans le laboratoire. 8 connectés à la région comprendra des damiers et en zigzag de bruit. 4-connecté au premier plan des rendements de 8 relié arrière-plan.
Vous pouvez creuser dans le code source de la fonction OpenCV cvFindContours(). Il y a OpenCV liaisons Python.
http://opencv.willowgarage.com/documentation/python/structural_analysis_and_shape_descriptors.html
http://opencv.willowgarage.com/wiki/PythonInterface
Je recommande d'abord la mise en œuvre d'un 4-connecté algorithme. Vous pouvez trouver de pseudo dans les livres comme suit:
Dans la 3e édition, voir la section 6.3, "l'Objet de l'Étiquetage et de Comptage"
Voir la section 9.5.3 "Extraction de Composantes connexes"
La présentation est moins clair, mais c'est un tout-en-un manuel pour le traitement de l'image. La section sur le seuil de binarisation est bon. Une édition internationale coûte environ $35.
De la Vision par ordinateur par Ballard et Brown sont assez bon marché. Dans ce livre, l'Algorithme 5.1 est appelé Blob Coloration.
http://books.google.com/books?id=UM_GCfJe88sC&q=region+labeling+algorithm#v=snippet&q=region%20labeling%20algorithm&f=false
Pour l'OCR, il est courant de chercher sombre connecté régions (blobs) sur un fond clair. Notre binarized image sera un noir au premier plan (0) sur fond blanc (1), 1 bit de l'image.
Pour un 4-connecté algorithme vous pourrez utiliser les éléments de structure comme celles montrées ci-dessous (que vous aurez aussi le voir dans la Bovik livre). Une fois que vous avez bricolé avec 4-connectivité, l'extension à 8-connectivité devrait être évident.
Nous l'analyse de chaque ligne de pixels dans l'image de gauche à droite, et toutes les lignes de haut en bas. Pour tout pixel (x,y), sa voisine de gauche (x - 1, y) et de voisin en haut (x, y - 1) ont déjà été analysés, afin que nous puissions vérifier si un numéro de région a déjà été attribué à un ou deux de ces voisins. Par exemple, si le pixel (x, y-1) est étiqueté de la région 8, et si (x,y) est aussi un premier plan de pixel, puis nous affecter la région 8 de (x,y). Si le pixel (x,y) est l'un de premier plan de pixels, mais la gauche, et en haut voisins sont des pixels du fond, nous attribuer un nouveau numéro de région de (x,y).
Je recommande le Bovik de référence, mais voici une vue d'ensemble rapide de l'algorithme.
La réduction des équivalences est la partie la plus délicate. Dans l'image ci-dessous, les régions ont été correctement étiquetés en fonction de l'algorithme. L'image montre une couleur différente pour chaque numéro de région. Les trois de toucher les régions doivent être réduits à un seul, connectés à la région.
Votre code d'analyse de l'équivalence de la structure de données afin de réaffecter 2 (rouge) et 3 (bleu foncé) pour le plus petit numéro de la région, qui est de 1 (jaune). Une fois le numéro de la région de la réaffectation est complète, de la région d'étiquetage est complète.
Il y a un passage des algorithmes qui permettent d'éviter le besoin d'une équivalence de vérifier au total, bien que de tels algorithmes sont un peu plus difficiles à mettre en œuvre. Je recommande d'abord la mise en œuvre de la traditionnelle 4-connecté algorithme de résolution de ses problèmes, et ensuite d'introduire une option pour utiliser 8-la connectivité à la place. (Cette option est commun dans les bibliothèques de traitement d'images.) Une fois que vous avez 4 et 8 connectés à la région de l'étiquetage de travail, vous aurez un bon algorithme qui permettra de trouver de nombreuses utilisations. Dans la recherche de documents académiques sur le sujet, vérifier pour la région de "étiquetage", des "blobs," "contours" et "la connectivité."
Pour les niveaux de gris des algorithmes qui doivent être binarized, votre seuil algorithme va probablement devenir un point faible dans votre chaîne d'algorithmes. Pour obtenir de l'aide avec seuillage, d'obtenir une copie de l'Gonzalez et Woods livre. Pour l'OCR, consultez le livre de la Reconnaissance de Caractères Systèmes par Cheriet, Karma, Liu, et Suen.
Je propose la mise en œuvre de la 8-cclabeling, posté sur Github.