Suite-Détection De La Plaque D'Immatriculation Du Véhicule
poursuivant sur ce fil:
Quels sont les bons algorithmes pour la détection des plaques d'immatriculation des véhicules?
j'ai développé mes techniques de manipulation d'image pour souligner la plaque d'immatriculation autant que possible, et dans l'ensemble je suis heureux avec elle, voici deux échantillons.
vient maintenant le plus partie difficile, en fait détecter la plaque d'immatriculation. Je sais qu'il y a quelques méthodes de détection de bord, mais mes maths sont assez pauvres, donc je suis incapable de traduire certaines des formules complexes en code.
mon idée jusqu'à présent est de boucler à travers chaque pixel dans l'image (pour boucle basée sur img largeur & hauteur) de ce comparer chaque pixel par rapport à une liste de couleurs, à partir de cela un algorithme est vérifié pour voir si les couleurs continuent de différencier entre la plaque d'immatriculation blanc, et le le noir du texte. Si cela est vrai, ces pixels sont intégrés dans un nouveau bitmap dans la mémoire, alors une analyse OCR est effectuée une fois que ce motif a cessé d'être détecté.
j'apprécierais des commentaires sur cette idée car elle pourrait être erronée, trop lente ou intensive.
Merci
3 réponses
Votre méthode de "voir si les couleurs de garder la différenciation entre la plaque d'immatriculation blanc, et le noir du texte" est essentiellement la recherche de zones où le pixel changements de l'intensité du noir au blanc et vice-versa plusieurs fois. Détection de bord accomplir essentiellement la même chose. Cependant, mettre en œuvre vos propres méthodes est toujours une bonne idée parce que vous apprendrez beaucoup dans le processus. Diable, pourquoi ne pas faire les deux et de comparer la sortie de votre méthode avec celle de certains prêts bord de l'algorithme de détection?
à un moment donné, vous voudrez avoir une image binaire, par exemple avec des pixels noirs correspondant à l'étiquette" non-a-character", et des pixels blancs correspondant à l'étiquette" is-a-character". La façon la plus simple de le faire est peut-être d'utiliser une fonction de battage. Mais cela ne fonctionnera que si les caractères ont déjà été soulignés d'une manière ou d'une autre.
comme quelqu'un mentionné dans votre autre fil, vous pouvez le faire en utilisant le noir opérateur de chapeau, ce qui donne quelque chose comme ceci:
si vous démarquez L'image ci-dessus avec, disons, la méthode D'Otsu (qui détermine automatiquement un seuil global), vous obtenez ceci:
il y a plusieurs façons de nettoyer cette image. Par exemple, vous pouvez trouver les composants connectés et jeter ceux qui sont trop petits, trop grands, trop large ou trop haut pour être un personnage:
puisque les caractères dans votre image sont relativement grands et entièrement connectés cette méthode fonctionne bien.
ensuite, vous pouvez filtrer les composants restants en fonction des propriétés des voisins jusqu'à ce que vous ayez le nombre désiré de composants (= nombre de caractères). Si vous voulez reconnaître le caractère, vous pouvez alors calculer les caractéristiques de chaque caractère et d'entrée à un classificateur, qui est généralement construit avec l'apprentissage supervisé.
Toutes les étapes ci-dessus sont juste une façon de le faire, bien sûr.
soit dit en passant, J'ai généré les images ci-dessus en utilisant OpenCV + Python, qui est une excellente combinaison pour la vision informatique.
, aussi belle soit-elle, présente un certain nombre de défis en matière d'ombrage et de luminosité. Cela dépend vraiment de combien vous voulez le rendre robuste, mais les cas du monde réel ont à traiter de telles questions.
j'ai fait des recherches sur les images de route (voir ma page de profil et regarder ici pour exemple ) et j'ai constaté que les images de route du monde réel est extrêmement bruyant en termes de conditions de lumière et vos couleurs peuvent changer du brun au blanc pour un dos jaune-numéro de la plaque.
la plupart des algorithmes utilisent la détection de ligne et tentent de trouver une boîte avec un rapport d'aspect dans une plage acceptable.
je vous suggère de faire une revue de littérature sur le sujet mais cela a été réalisé en 1993 (si je me souviens bien) donc il y aura des milliers d'articles.
c'est un domaine assez scientifique donc juste un algorithme ne le résoudra pas et vous aurez besoin de nombreux pré / post traitement étape.
en résumé, je suggère D'utiliser Hough transform pour trouver des lignes et ensuite essayer de chercher des rectangles qui pourraient créer un rapport d'aspect acceptable.
La détection des caractéristiquesHarris pourrait fournir des bords importants, mais si la voiture est de couleur claire, cela ne fonctionnera pas.
si vous avez beaucoup d'échantillons, vous pouvez essayer de vérifier la méthode de détection de visage développé par Paul Viola et Michael Jones. C'est bon pour la détection faciale, peut-être que ça ira très bien avec la détection de plaque d'immatriculation (surtout si combiné avec une autre méthode)