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