Introduction à l’ANPR
Reconnaissance automatique de plaques Numériques (ANPR), également connu sous le nom : Reconnaissance Automatique du licence des plaques (ALPR), Identification automatique des véhicules (AVI) ou Reconnaissance des plaques d’immatriculation (CPR), est une méthode de surveillance qui utilise la reconnaissance optique des caractères (OCR) et d’autres méthodes telles que les segmentations et la détection pour lire les plaques d’immatriculation. Les meilleurs résultats dans un système ANPR peuvent être obtenus avec une caméra infrarouge (IR), car les étapes de segmentation pour la détection et la segmentation OCR sont faciles, propres et minimisent les erreurs. Cela est dû aux lois de la lumière, la base étant que l’angle d’incidence est égal à l’angle de réflexion; Nous pouvons voir cette réflexion de base quand nous voyons une surface lisse comme un miroir plan. La réflexion sur les surfaces rugueuses telles que le papier conduit à un type de réflexion connu sous le nom de réflexion diffuse ou de dispersion. La plupart des plaques d’immatriculation ont une caractéristique spéciale appelée rétroréflexion, la surface de la plaque est faite avec un matériau qui est recouvert des milliers des minuscules hémisphères qui font réfléchir la lumière à la source comme nous pouvons le voir dans la Figure suivante: Figure II.1 Schéma de la réflexion, dispersion et la rétroflexion Si nous utilisons une caméra avec un filtre couplé à un projecteur infrarouge structuré, nous pouvons récupérer uniquement la lumière infrarouge, puis nous avons une image de très haute qualité pour segmenter et ensuite détecter et reconnaître le nombre de plaque qui est indépendante de toute lumière comme le montre la figure suivante: Chaque pays a des différentes tailles et spécifications de la plaque d’immatriculation;
Il est utile de connaître ces spécifications afin d’obtenir les meilleurs résultats et de réduire les erreurs. Les algorithmes utilisés dans ce chapitre sont destinés à expliquer les bases de l’ANPR et les spécifications pour les plaques d’immatriculation de l’Espagne, mais nous pouvons les étendre à n’importe quel pays ou spécification. Dans ce chapitre, nous travaillerons avec les plaques d’immatriculation de l’Espagne. En Espagne, il existe trois tailles et formes différentes de plaques d’immatriculation; Nous n’utiliserons que la plus commune (grande) plaque d’immatriculation qui est de 520 x 110 mm. Deux groupes de caractères sont séparés par un espace de 41 mm, puis une largeur de 14 mm sépare chaque caractère individuel. Le premier groupe de caractères comporte quatre chiffres et le second groupe comporte trois lettres sans les voyelles A, E, I, O, U, ni les lettres Ñ ou Q; Tous les caractères ont des dimensions de 45 x 77 mm. Ces données sont importantes pour la segmentation des caractères car nous pouvons vérifier le caractère et les espaces pour vérifier que nous obtenons un caractère et aucun autre segment d’image. Voici une figure d’une telle plaque d’immatriculation: ANRP
Segmentation
La segmentation est le processus de division d’une image en plusieurs segments. Ce processus consiste à simplifier l’image, à analyser et à faciliter l’extraction des fonctions. Une caractéristique importante de la segmentation des plaques est le nombre élevé des bords verticaux dans une plaque d’immatriculation en supposant que l’image a été prise à l’avant et que la plaque n’est pas tournée et qu’elle ne présente pas de distorsion de perspective. Cette fonctionnalité peut être exploitée lors de la première étape de segmentation pour éliminer les régions qui n’ont pas de bords verticaux. Avant de trouver des arêtes verticaaux, nous devons convertir l’image couleur en image en niveaux de gris (car la couleur ne peut pas nous aider dans cette tâche) et supprimer le bruit possible généré par la caméra ou autre bruit ambiant. Nous allons appliquer un flou gaussien de 5 x 5 et supprimer le bruit. Si nous n’appliquons pas une méthode de suppression du bruit, nous pouvons obtenir beaucoup de bords qui produisent une fausse détection. // convertir l’image en gris Mat img_gray; cvtColor(input, img_gray, CV_BGR2GRAY); blur(img_gray, img_gray, Size(5,5)); Pour trouver les bords verticaux, nous utiliserons un filtre de Sobel et trouver la première dérivée horizontale.
La dérivée est une fonction mathématique qui nous permet de trouver les bords verticaux sur une image. La définition d’une fonction Sobel dans OpenCV est: void Sobel(InputArray src, OutputArray dst, int ddepth, int xorder, int yorder, int ksize=3, double scale=1, double delta=0, int borderType=BORDER_DEFAULT ) Ici, ddepth est la profondeur de l’image de destination, xorder est l’ordre de la dérivée par x, yorder est l’ordre de la dérivée par y, ksize est la taille du noyau de 1, 3, 5 ou 7, scale est un facteur facultatif pour les valeurs dérivées calculées, delta est une valeur optionnelle ajoutée au résultat, et borderType est la méthode d’interpolation des pixels. Pour notre cas, nous pouvons utiliser un xorder = 1, yorder = 0, et un ksize = 3: // Trouver des lignes verticaux. Les plaques de voiture ont une densité élevée de lignes verticaux. Mat img_sobel; Sobel(img_gray, img_sobel, CV_8U, 1, 0, 3, 1, 0); Après un filtre de Sobel, nous appliquons un filtre de seuil pour obtenir une image binaire avec une valeur de seuil obtenue par la méthode d’Otsu. L’algorithme d’Otsu a besoin d’une image d’entrée de 8 bits et la méthode d’Otsu détermine automatiquement la valeur de seuil optimale: // image de seuil. Mat img_threshold; threshold(img_sobel, img_threshold, 0, 255, CV_THRESH_OTSU+CV_THRESH_ BINARY);
Pour définir la méthode d’Otsu dans la fonction de seuil, si nous combinons le paramètre de type avec la valeur CV_THRESH_OTSU, le paramètre de valeur de seuil est ignoré. Lorsque la valeur de CV_THRESH_OTSU est définie, la fonction de seuil renvoie la valeur de seuil optimale obtenue par l’algorithme d’Otsu. En appliquant une opération morphologique étroite, nous pouvons supprimer des espaces vides entre chaque ligne de bordure verticale, et relier toutes les régions qui ont un grand nombre de bords. Dans cette étape, nous avons les régions possibles qui peuvent contenir des plaques. D’abord nous définissons notre élément structural à utiliser dans notre opération morphologique. Nous utiliserons la fonction getStructuringElement pour définir un élément rectangulaire structurel avec une taille de dimension 17 x 3 dans notre cas; Cela peut être différent dans d’autres tailles d’image. Mat element = getStructuringElement(MORPH_RECT, Size(17, 3)); Et utiliser cet élément structurel dans une opération morphologique étroite en utilisant la fonction morphology Ex. morphologyEx(img_threshold, img_threshold, CV_MOP_CLOSE, element); Après l’application de ces fonctions, nous avons des régions dans l’image qui pourraient contenir une plaque; Toutefois, la plupart des régions ne contiendront pas de plaques d’immatriculation. Ces régions peuvent être divisées par une analyse de composants connectés ou en utilisant la fonction findContours. Cette dernière fonction récupère les contours d’une image binaire avec différentes méthodes et résultats. Nous avons seulement besoin d’obtenir les contours externes avec n’importe quelle relation hiérarchique et tout résultat d’approximation polygonale.
Mon projet intitulé «Reconnaissance d’une plaque d’immatriculation via un Smartphone Android» consiste à la conception et la réalisation d’une application de reconnaissance automatique des plaques d’immatriculation nommée ANPR. ANPR est divisée en deux parties principales : la détection de la plaque et la reconnaissance de la plaque. La détection a pour but de détecter la position de la plaque dans tout le cadre de la caméra. Quand une plaque sera détectée sur une image, le segment contenant cette plaque est passé à une seconde étape de reconnaissance qui utilise l’algorithme OCR pour déterminer les caractères alphanumériques de la plaque. J’ai choisi ce thème pour l’intérêt qu’il porte dans le domaine des réseaux informatiques et aussi pour enrichir ma connaissance dans l’espoir de l’appliquer dans la vie. Durant ma recherche, j’ai remarqué que ce projet n’est pas riche en documentation. Sa préparation m’a beaucoup appris, puisqu’elle a permis de valider les connaissances acquises.
Ce mémoire est donc composé de trois parties. Dans la première, j’ai décrit les Smartphones, leurs systèmes d’exploitation et plus particulièrement le système Android. Puis, j’ai présenté les étapes nécessaires à la création d’une application pour la reconnaissance automatique des plaques d’immatriculation. Finalement, j’ai décrit la conception et l’implémentation du système ANPR. Le champ d’action de mon sujet, étant très vaste, je n’ai pas la prétention de l’avoir totalement épuisé, mais j’espère avoir répondu aux questions que j’ai en train de me poser, dans le temps et dans l’espace, laissant l’occasion à d’autres personnes pouvant traiter les autres aspects de la question. Enfin, ce travail s’inscrit dans le cadre des projets innovants et a un impact socioéconomique développé au sein de la Faculté de Technologies, Université de Tlemcen. En perspective, mon application peut être améliorée en la rendant utilisable pour une large gamme de pays dont les dimensions de la plaque seront introduites au début suivant le choix du pays pour lequel s’applique cette application.
Remerciement |