FR 3038432 A1 20170106 FR 1501405 A 20150702 1 Procédé de rectification d'une image et d'extraction d'éléments d'information issus de cette image Description La présente invention concerne un procédé de rectification d'une image et d'extraction d'éléments d'information issus de cette image. Il existe diverses techniques de rectification d'image afin d'obtenir une image rectangulaire à partir d'un quadrangle quelconque contenu dans une image. Une telle méthode est décrite dans la demande US 8503813. Une telle technique utilise des outils classiques en traitement d'image, à savoir : - L'application d'un filtre de Canny à l'image permettant d'extraire les points de contour des formes contenues dans les images. - La transformée de Hough appliquée aux points obtenus qui permet d'extraire les droites contenant ces points. La sélection d'un quadrangle basé sur ces droites. - Le calcul d'une matrice de transformation homographique du quadrangle sélectionné en un rectangle. - La rectification de l'image correspondant à ce quadrangle. Cette méthode permet d'extraire et de rectifier des images mais présente certains inconvénients en termes de temps de traitement de l'information et donc, de mobilité, notamment au niveau de la transformée de Hough. Fonctionnement : La présente invention est un procédé permettant d'acquérir une image et d'en extraire des informations et/ou des portions d'image rectifiées ainsi que le produit programme d'ordinateur associé à ce procédé. La figure 1 représente une variante de réalisation de l'invention. La figure 2 représente une autre variante de réalisation de l'invention. La première étape du procédé consiste à acquérir ou choisir une image d'origine contenant des informations à extraire (IMGO) qui sera la base de travail. Cette image peut être acquise via une caméra / un appareil photo intégré au dispositif exécutant le procédé ou lue depuis un support amovible tel qu'un CD, DVD ou une clé USB. Suivant le format d'image chargé (PNG, Jpeg, Bitmap, etc...), celle-ci est décodée afin d'obtenir une image au format Bitmap. Une fois l'image IMGO acquise, une nouvelle image IMG1 de dimensions égales ou inférieures à celles de l'image IMGO va être générée. L'image IMG1 est une réduction de cette image IMGO avec pour facteur d'échelle À. Ce facteur d'échelle À >= 1 3038432 2 permettra de diminuer le temps de calcul des opérations suivantes en réduisant le nombre de pixels d'intérêt. L'image IMG1 peut ensuite être traitée afin de réduire le temps de calcul ultérieurement. La présence de bruit sur l'image IMG1 va en effet provoquer des 5 fausses détections lors de la détection de contours. Il est donc préférable de réduire le bruit de luminance par application d'un filtre de flou (de type gaussien par exemple). L'étape suivante consiste à appliquer un algorithme de détection de contours (tel qu'un filtre de Canny ou de Sobel) à notre image afin de mettre en évidence les principaux contours. Une liste de points correspondants aux contours est obtenue. 10 Nous appliquerons ensuite une transformée de Hough modifiée a cette liste de points au cours de l'étape suivante : 1) 15 2) 3) 20 4) 5) 25 6) 30 7) 35 Un angle 0 est choisi qui correspondra à la direction dans laquelle on recherche des segments de droite. Avantageusement, le procédé sera répété pour un nombre limité de valeurs d'angle 0 afin d'effectuer un ou plusieurs balayages. Cette restriction permet de diminuer le temps de traitement en évitant de couvrir les zones a priori inutiles. Une taille maximale de nombre de points LEN correspondant à la diagonale de l'image IMG1 est calculée. Cette taille permet d'affecter la mémoire aux points stockés dans le tableau de coordonnées Txy (tableau de dimensions LENx180) et donc d'accélérer la vitesse de traitement. Un tableau P nul de dimension LEN est créé. Une première passe est effectuée sur la liste de points de contours. Pour chaque point, la distance à la droite d'angle 0 passant par le point est calculée. Cette distance p est arrondie à l'entier. L'indice p du tableau P est incrémenté de 1 et les coordonnées du point sont stockées dans le tableau Txy dans une case vide de la ligne p. Par application d'un seuil Si aux éléments du tableau P, on détecte les valeurs de p correspondant à des droites d'angle 0. Pour chaque p détecté ainsi, on groupe les points correspondants du tableau Txy en calculant la distance entre deux points successifs. Si pour deux points cette distance est supérieure à un seuil 52, les deux points seront dans deux groupes différents. On obtient ainsi des groupes de points correspondant à des segments de contours. On peut avantageusement supprimer les groupes contenant un nombre de points inférieur à un seuil S3. Une étape facultative permet d'éliminer les segments redondants lorsque le balayage d'angle 0 est terminé. En regroupant par groupes les segments obtenus au cours des précédentes étapes. Des segments possédant des extrémités similaires sont regroupés, puis comparés deux à deux dans un même groupe afin de conserver le 3038432 3 meilleur candidat. La taille du segment est un bon critère pour déterminer ce candidat. Le meilleur candidat de chaque groupe est ensuite retenu. Dans un autre mode de réalisation, les segments extraits peuvent être rallongés de deux fois la taille de la diagonale de l'image afin d'augmenter le nombre de zones à 5 traiter. L'étape suivante est la détermination des quadrangles générés par l'intersection des segments retenus. Ces quadrangles peuvent être filtrés selon des critères tels que : - Leur dimension Leur ratio (défini par le rapport entre les moyennes des côtés opposés du 10 quadrangle) - Leur forme (Les angles trop aigus ou obtus peuvent être un critère de disqualification) - Le nombre de points dans les segments les formant Dans un autre mode de réalisation, cette étape peut être remplacée par une étape de 15 sélection d'un ou plusieurs groupes de quatre points d'entrée afin de laisser l'utilisateur définir un ou plusieurs quadrangles manuellement. Une fois les quadrangles obtenus, un sous-groupe d'entre eux va être frontalisé, c'est-à-dire subir une homothétie qui transforme le quadrangle quelconque en rectangle, de façon à corriger la perspective. Ce sous-groupe est soit choisi par l'utilisateur, soit une 20 sélection automatique basée sur des critères paramétrables (ratios). Pour cela, on utilise un système d'inversion homographique. Un exemple d'un tel système et sa mise en oeuvre sont fournis en annexe. Chacun des quadrangles obtenus peut être enregistré sous forme d'image au format souhaité. 25 On obtient donc une série d'images rectangulaires prêtes à être analysées pour en extraire l'information recherchée. Cette information peut être du texte, un code barre, une couleur, une image, des formes ou points spécifiques ou tout autre information extractible d'une image numérique. Pour chaque type d'information recherché on appliquera la méthode adaptée. Par exemple, un algorithme de reconnaissance de 30 caractères pour extraire du texte, ou encore un algorithme de reconnaissance de formes préenregistrées (SURF, réseau de neurones, classifieur linéaire, etc...). Dans un mode de réalisation, on peut définir un modèle pour chaque quadrangle rectifié afin d'affecter des zones d'information spécifiques. Ceci permet de réduire la zone d'analyse et d'extraire différents types d'information d'une seule zone. 35 L'invention peut être utilisée à plusieurs fins, dont : - Copie numérique d'un document papier 3038432 4 - Conversion d'une photo physique en photo numérique - Reconnaissance d'un ou plusieurs objets quandrangulaire dans une image (livres, DVD, pochettes, etc...) - Recherche d'un code barre ou d'un datamatrix dans une image (par exemple 5 dans une chaine de production) Le produit programme d'ordinateur correspondant au procédé peut être exécuté sur un ordinateur ou un Ordiphone ou tout autre dispositif muni d'au moins un processeur et d'au moins une caméra, ou d'au moins un support de lecture de données ou d'au moins un moyen d'acquisition de données. 10 3038432 5 Annexes Détermination du système d'inversion homographique à partir des 4 points d'entrée P={ pl, p2, p3, p4} var system:Array = new Array( 8); var sx:Number = (P[0].x-P[1].x)+(P[2].x-P[3].x); var sy:Number = (P[0].y-P[1].y)+(P[2].y-P[3].y); var dxl:Number = P[1].x-P[2].x; var dx2:Number = P[3].x-P[2].x; var dyl:Number = P[1].y-P[2].y; var dy2:Number = P[3].y-P[2].y; var z:Number = (dx1*dy2)-(dyl*dx2); var g:Number = ((sx*dy2)-(sy*dx2))/z; var h:Number = ((sy*dx1)-(sx*dy1))/z; system_0=P[1].x-P[0].x+g*P[1].x; system_1=P[3].x-P[0].x+h*P[3].x; system_2=P[0].x; system_3=P[1].y-P[0].y+g*P[1].y; system_4=P[3].y-P[0].y-i-h*P[3].y; system_5=P[0].y; system_6=g; system_7=h; 3038432 6 Inversion de la portion d'image correspondant aux points d'entrée var target:BitmapData = new BitmapData(destWidth, destHeight, false, 0); var inv_H:Number = 1/ destHeight; var inv_W:Number = 1 / destWidth; 5 var bmdpWidth:int = bmpd.rect.width; for ( i = 0; i REVENDICATIONS1 - Procédé d'extraction d'éléments d'informations issus d'une image, basé sur la reconnaissance d'une ou plusieurs zones dans cette image contenant les informations recherchées caractérisé en ce qu'il comprend : - Une étape d'acquisition d'une image brute IMGO englobant au moins une zone contenant des informations à extraire Une étape de génération d'une image de travail IMG1 de dimension inférieure ou égale à l'image de base - Une étape de génération d'une liste des points de contour de l'image de travail - Une étape d'extraction d'une liste de segments à partir de l'image des contours - Une extraction des zones quadrangulaires formées par les intersections entre ces segments principaux - La frontalisation d'un sous-groupe de ces zones quadrangulaires 2- Procédé selon la revendication 1 caractérisé en ce que l'étape d'acquisition peut être remplacée avantageusement par le chargement d'une image existante. 3- Procédé selon l'une des revendications précédentes caractérisé en ce que chaque zone quadrangulaire frontalisée peut être enregistrée sous forme d'image au format souhaité. 4- Procédé selon l'une des revendications précédentes caractérisé en ce que chaque zone quadrangulaire peut être analysée avec un ou plusieurs algorithmes au choix afin d'extraire des informations de cette zone. 5- Procédé selon l'une des revendications précédentes caractérisé en ce que les segments extraits peuvent être rallongés de deux fois la taille de la diagonale de l'image afin d'augmenter le nombre de zones à traiter. 6- Procédé selon l'une des revendications précédentes caractérisé en ce que l'extraction des zones quadrangulaires peut être automatique ou manuelle. 7- Procédé selon l'une des revendications précédentes caractérisé en ce que chaque zone quadrangulaire peut être découpée selon un modèle afin de cibler la ou les zones à analyser de cette zone quadrangulaire. 8- Procédé selon l'une des revendications précédentes caractérisé en ce que les données à extraire sont du texte, une image, un élément de type code-barres. 9- Procédé selon l'une des revendications précédentes caractérisé en ce que l'image IMG1 subit une étape de prétraitement suite à sa création. 10- Produit programme d'ordinateur destiné à exécuter le procédé décrit dans les revendications précédentes lorsqu'il est mis en oeuvre par un processeur.