TP N°3 : LECTURE CODES BARRES 2.1 Principe du dispositif
Transcription
TP N°3 : LECTURE CODES BARRES 2.1 Principe du dispositif
UNIVERSITE DE LA ROCHELLE – MASTER IMA 1ère année - Vision par ordinateur 1 1.1 TP N°3 : LECTURE CODES BARRES 1 OBJECTIF Cette séance de TP a pour but de mettre en place un processus de reconnaissance de codes barres dans un environnement réel. Il s’agit de localiser le code sur des produits grand public, d’extraire les informations codées et de vérifier le codage avec le code alphanumérique disponible juste en dessous du code à barres. Pour simplifier l’approche, on ne traitera ici que les codes à barres de type EAN13 qui se trouvent sur la plupart des produits en grande distribution. Un lot d’images dans des contextes d’acquisition différents permettra de vérifier l’efficacité du processus de reconnaissance. L’usage de ce type de codage permet d’éviter l’utilisation d’un classifieur. La classification sera abordée lors du TP 6 2 CONTEXTE DE L’ETUDE Nous disposons d’un ensemble d’images dans laquelle se trouvent les codes barres à reconnaître …. Mais également bien d’autres choses. D’un point de vue acquisition, les images sont acquises dans n’importe quel sens comme le montre l’exemple ci-dessous. Cette contrainte n’est pas forte puisque le code utilisé EAN13 permet une lecture bidirectionnelle. Nous avons simplifié le problème en restant à une résolution quasi identique d’une image à l’autre. 2.1 Principe du dispositif Ces quelques lignes n’ont que pour but de vous donner des pistes vous permettant d’atteindre l’objectif. Vous pouvez envisager un autre séquencement des opérations. Le processus peut se décomposer en 4 phases. 1 • La localisation du code : Cette localisation est possible sur la base de deux constatations. Tout d’abord, il est à noter que les codes sont toujours sur un fond blanc homogène. D’autre part, l’image est centrée sur le code barre. En effet, le processus de lecture est continu permettant à l’opérateur de déplacer l’objet devant le dispositif d’acquisition jusqu’à ce que le code barre soit au centre de l’image … jusqu’à ce que la reconnaissance ait lieu. Attention : les barres ne sont pas nécessairement noirs alors que le fond sera estimé comme toujours blanc. Une segmentation par région sur la base d’un quadtree (ou d’un pavage) peut être envisagé. Il convient ici de définir un critère d’homogénéité pouvant porter sur les caractéristiques présentées ci-dessus. A partir de cette segmentation, un filtrage des éléments indésirables est fortement conseillé pour la suite du processus. • Détection de l’orientation : La détection de l’orientation consiste à retrouver l’angle de lecture du code. Cette orientation est importante puisqu’elle conditionne les espaces interbarres qui caractérisent le codage. Plusieurs techniques de recherche des orientations peuvent être envisagées : recherche d’alignements, de directions privilégiées, maximisation des transitions, maximisation des projections …. Dans ces différentes approches, soit la direction est trouvée par un calcul global sur l’image (attention aux résidus d’image pouvant être encore présents sur les pourtours), soit en appliquant des sondes ou des rotations d’images suivant un pas connu a priori. Dans ce dernier cas, de proche en proche, on tente de maximiser un critère permettant de connaître l’orientation … et la rotation nécessaire de l’image. Suivant la technique utilisée, des filtrages de l’image peuvent être nécessaires au préalable. • Extraction du code : L’extraction du code vise à retrouver les espaces au sens du codage présenté ci-après. Le code à barres disposant d’une redondance d’information (alignement des barres sur une certaine longueur), il est indispensable de vérifier que vous retrouvez le même code sur plusieurs lectures à des endroits différents. Certaines images disposent volontairement de défauts de marquage. Un principe de fusion de l’information sera donc nécessaire. D’autre part, une vérification de l’alignement des barres peut dans certains contextes être nécessaire. • Lecture du code : Cette dernière étape porte sur l’association des espaces extraits et le codage EAN13. Les tables ci-jointes vous donnent les informations nécessaires pour ce décodage de l’information. 3 LE CODE A BARRES 3.1 Présentation Le code barre est un code permettant de représenter des caractères sous forme d’une suite de barres parallèles, d’épaisseur et d’intervalles variables (espaces). Cette succession de barres et d’espaces contient : les caractères du code barre, les bornages, les marges début et fin de lecture et un caractère de contrôle suivant le code barre utilisé. Le code barre est lisible automatiquement par un dispositif de lecture optique (douchette,scanner,...) balayant transversalement le symbole. Un code barre contient rarement des données descriptives (nom, adresse, prix article...), et permet simplement la lecture automatique d’un code auquel sont liées des informations contenues dans une base. Le code barre est une clef qui permet d’automatiser une identification rapide des produits tout en supprimant les erreurs. Par exemple, les codes barres que l’on trouve sur les produits alimentaires ne contiennent ni le prix, ni le nom de l’article mais un code produit. Lorsque le code barre est lu par un lecteur de code barre (douchette,scanner,..) puis transmis à l’ordinateur, celui-ci recherche dans un fichier de données l’article lié à ce code produit. Les différentes informations (prix, 2 nom du fournisseur, etc...) sont stockées dans ce fichier. Il existe plus de 200 codes barres différents dans le monde, que l’on peut classer en deux catégories. Tout d’abord les code barres linéaires : Certains sont uniquement numériques (UPC, EAN, 2/5 entrelacé ). D’autres sont alphanumériques (Code 39, Code 128). La deuxième catégorie de code barre concerne les codes 2D : Code 49, PDF 417. La troisième catégorie concerne les codes barres matriciels (Code 1, Datamatrix, QR code). les code barres de cette dernière catégorie ne sont plus codés avec des barres et des espaces mais avec des points (carré, hexagonal selon le code barre). Chaque point représentant, selon qu’il est blanc ou noir, un bit d’information. De plus le symbole inclut également un graphisme caractéristique, permettant au lecteur (douchette,...) d’identifier le type de symbole ainsi que sa position. 3.2 Structure 3.3 Historique L’origine des code barres remonte à 1949. Ce premier système de codage fut inventé par Norman Woodland et Bernard Silver. Ce symbole surnommé Bull’eye est composé de cercles concentriques (voir photo ci-dessous). Ce premier code barre ne sera jamais utilisé en pratique. En 1970, est crée au Etats-Unis un comité ayant pour but de définir une codification adaptée aux problèmes de la grande distribution. Mais ce n’est qu'en 1973 que l’association américaine des professionnels de la distribution, adopte le code barre linéaire et omnidirectionnel à 12 chiffres. Ce code barre inventé par George Laurer, ingénieur chez IBM se nomme UPC (Universal Product Code). Entre temps d’autres codes barres furent inventés. en 1971 Monarch invente le Codabar (dit également code Monarch), le code 2/5 entrelacé fut inventé par le docteur Allais. En 1974, le code 39 premier code barre alphanumérique, est inventé. En 1977, les européens adoptent la structure de codification EAN 13 (European Article Number), qui est la version internationale de l’UPC. Enfin de nouveaux code barres plus denses, pouvant coder tous les caractères de la table ASCII sont inventés. Parmi eux le code 128, et plus récemment, une nouvelle génération de code barre à étages extrêmement denses comme le code 49 ou le PDF 417. 3.4 Avantages Le code barre présente des avantages par rapport à d’autres techniques d’identification : . La redondance : Dans un code barre, la même information existe sur toute la hauteur des barres. Même si le code barre est détruit sur une certaine hauteur, il restera le plus souvent lisible. Cette redondance de l’information sur toute la hauteur facilite la lecture face aux défauts d’impression et aux conditions d’utilisation. 3 . La rapidité et la fiabilité de la lecture : Le code barre est un moyen d’identification très rapide. Le décodage d’un code barre s’effectue par définition bien plus rapidement et avec un risque d’erreur très infime qu’une saisie clavier d’un code par un opérateur (probabilité d’erreur : 2 à 3%). . Faible coût de revient 4 LA LECTURE DES CODES A BARRES 4.1 Principe de fonctionnement des lecteurs Un lecteur (douchette, scanner,...) de code barre se décompose en 3 éléments : L’organe de saisie, qui est la partie optique du lecteur. Les codes barres sont encodés par une série de barres sombres qui absorbent la lumière, et des espaces clairs qui la réfléchissent. Les lecteurs, douchette de code barre doivent possèder un organe de saisie leur permettant de reconnaître les barres et les espaces, ainsi que leur épaisseur. L’organe de saisie est un capteur optoélectronique dont le rôle est de convertir les séquences de blancs et noirs en signaux électriques par balayage du code barres. Exemple de saisie : Barres et espacements théoriques Signal perçu par l’organe de saisie Signal après traitement Le balayage peut être effectué de trois manières différentes : - manuellement (crayons). - automatiquement (à partir d’un faisceau laser, douchette CCD) - capture optique (caméras). Pour être saisi, un code barre doit nécessairement être éclairé. L’éclairage peut être réalisé soit par une diode (Lumière visible ou infrarouge), soit par un laser (Lumière visible ou infrarouge) soit encore par un éclairage ordinaire ou halogène (Caméras). La lumière est réfléchie par les blancs. Enfin le signal lumineux obtenu est transformé en signal électrique qui est l’image des barres et des espaces du code barre. Ce signal électrique est obtenu grâce à un système à base de phototransistor qui transforme le signal analogique en signal numérique. - Le décodage, est la partie logique du système. Le décodeur convertit le signal électrique en provenance de l’organe de saisie en signal compatible avec le système de traitement de données. Par exemple il transforme le signal numérique en caractère ASCII pouvant être transmis directement à un ordinateur ou à un terminal. Le décodeur est une unité dont le rôle est d’extraire l’information codée optiquement pour la rendre compatible avec une interface ordinateur classique. 4 D’une manière générale, l’opération de décodage effectuée par le lecteur peut se décomposer comme suit : - Réglage de la symbologie du code lu (EAN 13, Code 39 etc...).- Vérification que l’ensemble du code barre respecte la symbologie utilisée.- Réalisation du décodage par recherche du caractère dans une table en correspondance avec la séquence de barres mémorisée à la lecture.- Interprétation du sens de lecture et inversion de l’ordre des caractère si nécessaire.- Vérification des zones de silence à chaque extrémité du code barre. - L’interfaçage. Un système de codes barre nécessite un lien ou une interface vers l’ordinateur. L’interfaçage est l’opération qui détermine la méthode de communication : directe, modem, etc… .L’ordinateur nécessite un protocole de communication déterminé. Remarque : Certains appareils de lecture (douchette,scanner,...) regroupent deux ou trois de ces éléments dans un même boîtier. 4.2 Différents types de lecteurs Il existe trois technologies fondamentales de lecture : - Cameras.- Laser.- CCD. . Les caméras n’emettent pas de lumière, ceci implique la présence d’un éclairage classique (lampe halogène). . Le lecteur laser utilise une émission laser, soit par tube Hélium Néon (lumière rouge visible), soit par diode laser (lumière infrarouge). Le faisceau laser, qu’il soit émis par une diode ou un tube, est focalisé par un dispostif optique, tandis qu’un dispositif mécanique permet au faisceau de balayer une ligne (lecteurs monotrames), ou une surface (lecteur multitrames) ou dans plusieurs directions (lecteurs omnidirectionnels). . Le lecteur CCD est muni d’une série de faisceaux LED avec des détecteurs de lumière CCD pour la réflexion de la lumière. 5 LES CODE BARRES EAN8 ET EAN13 Le code barre EAN13 est le code barre le plus utilisé dans le monde. Son nom peut être différent selon le pays. Il s’appelle UPC aux Etats-Unis, JAN au Japon, mais son principe de fonctionnement reste identique. En France , ce code barre est attribué par le la société Gencod EAN France(société nationale de codification pour la France) pour les applications de la grande distribution, la presse. L’EAN 8 et 13 sont des code barres numériques (Chiffre de 0 à 9), bidirectionnels. Cela signifie qu’ils sont lus horizontalement, de gauche à droite ou inversement. Leur longueur est fixe, 8 caractère pour l’EAN 8 et 13 caractères pour l’EAN 13 dont les deux premiers caractères (ou les trois premiers selon le pays) correspondent au numéro du pays (exemple : 30-37 pour la France, 49 pour le Japon, 00-13 pour les USA), les cinq caractères suivants concernent le numéro de l’entreprise qui est attribué par la société nationale de codification du pays ou le code barre est utilisé (le Gencod pour la France). Ensuite les cinq autres caractères correspondent au code du produit qui est délivré par l’entreprise. Enfin le dernier est la clé de contrôle du code barre. Chaque caractère est encodé par 2 barres et 2 espaces, sur 7 modules, chaque barre et chaque espace ayant une épaisseur allant de 1 à 4 modules. Exemple de code barre EAN13 5 Table de vérité: L’EAN 8 et 13 possèdent 3 jeux de caractères, le jeu A qui est le négatif du jeu C, le jeu B qui est le symétrique du jeu C et le jeu C. Les barres sont représentées par des 1 binaires tandis que les espaces sont représentés par des 0 binaires. Exemple : Codage du chiffre 2 avec le jeu A. source : http://www.atscan.com 6