Traitement d images - Rapport de projet

Documents pareils
Traitement bas-niveau

Opérations de base sur ImageJ

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Fête de la science Initiation au traitement des images

Analyse de la vidéo. Chapitre La modélisation pour le suivi d objet. 10 mars Chapitre La modélisation d objet 1 / 57

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

L analyse d images regroupe plusieurs disciplines que l on classe en deux catégories :

Utilisation du logiciel ImageJ gratuit

Géométrie discrète Chapitre V

Master IMA - UMPC Paris 6 RDMM - Année Fiche de TP

Projet de traitement d'image - SI 381 reconstitution 3D d'intérieur à partir de photographies

TP SIN Traitement d image

SudoClick Reconnaissance de grilles de sudoku pour téléphones portables

Infolettre #18 : Les graphiques avec Excel 2010

Traitement d un AVI avec Iris

Tp_chemins..doc. Dans la barre "arche 2" couleur claire 1/5 21/01/13

Initiation à linfographie

Formats d images. 1 Introduction

Cours de numérisation sur Epson Perfection

Analyse d images. Edmond.Boyer@imag.fr. Edmond Boyer UFRIMA 1

Adobe Illustrator Logiciel de dessin vectoriel et de Cartographie Assistée par Ordinateur

Chap17 - CORRECTİON DES EXERCİCES

2013 Pearson France Adobe Illustrator CC Adobe Press

Dans l idéal, ceci devrait être fait en amont pour chaque image envoyée sur l espace de stockage de votre site internet.

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

Algorithme des fourmis appliqué à la détection et au suivi de contours dans une image

Indications pour une progression au CM1 et au CM2

Projet Matlab : un logiciel de cryptage

Nom : Groupe : Date : 1. Quels sont les deux types de dessins les plus utilisés en technologie?

2013 Pearson France Photoshop Elements 12 pour les photographes du numérique Loïc Olive

EXCEL TUTORIEL 2012/2013

Premiers Pas avec OneNote 2013

Comment insérer une image de fond?

7. Exemples de tests pour détecter les différents troubles de la vision.

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

KIP 770 Solution Multifonction Exceptionnelle

Création d une SIGNATURE ANIMÉE avec PHOTOFILTRE 7

Projet de Traitement du Signal Segmentation d images SAR

Manuel de formation Spaceman 1 ère journée


Projet Matlab/Octave : segmentation d'un ballon de couleur dans une image couleur et insertion d'un logo

Dr FOUGERAIS Guillaume, formateur Génération Implant, Nantes.

Hiver 2013 IMN 259. Introduction à l analyse d images. Par Pierre-Marc Jodoin

Guide de démarrage rapide. (pour la version 5.0.)

COPY. Picture Style Editor Ver. 1.4 MODE D EMPLOI. Logiciel de création de fichiers de style d image. Contenu de ce mode d emploi

PR OC E D U RE S D E B A S E

Le traitement du 5ème concours A.I.P. pour l objet SH2-155 de Franck JOBARD

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Les bases de l étalonnage avec Adobe Premiere Pro Formation de Duduf

RECOPLUS LOGICIEL DE GESTION DES RECOMMANDES NOTICE D UTILISATION DE RECOPLUS RESEAU. N de série

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Conversion d un entier. Méthode par soustraction

Pop-Art façon Roy Liechtenstein

Q6 : Comment calcule t-on l intensité sonore à partir du niveau d intensité?

Dossier 03 Périphériques d acquisition

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Créer le schéma relationnel d une base de données ACCESS

Chapitre 13 Numérisation de l information

C.F.A.O. : Conception et Fabrication Assistées par Ordinateur.

Traitement numérique de l'image. Raphaël Isdant

Fonctions de plusieurs variables

Initiation à LabView : Les exemples d applications :

Comment optimiser dans ImageReady?

GUIDE Excel (version débutante) Version 2013

Transmission d informations sur le réseau électrique

Mini_guide_Isis_v6.doc le 10/02/2005 Page 1/15

Celestia. 1. Introduction à Celestia (2/7) 1. Introduction à Celestia (1/7) Université du Temps Libre - 08 avril 2008

Manuel d'utilisation de la maquette

WinBooks Logistics 5.0

EPSON Scan Server & EPSON TWAIN Pro Network

GUIDE DE PRISE EN MAIN

Franck VAUTIER, Jean-Pierre TOUMAZET, Erwan ROUSSEL, Marlène FAURE, Mohamed ABADI, Marta FLOREZ, Bertrand DOUSTEYSSIER

UNE TECHNIQUE ÉPROUVÉE : LE ZONE SYSTEM

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Direction générale statistique et information économique. Manuel d usage : l application web pour l enquête sur la structure des entreprises

Utiliser le logiciel Photofiltre Sommaire

Représentation des Nombres

Documentation. Manuel Utilisateur. E-Shop

La Clé informatique. Formation Excel XP Aide-mémoire

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

«Manuel Pratique» Gestion budgétaire

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

Chapitre 22 Optimisation pour diffusion à l'écran, pour le web

ENCASTREZ UN EVIER ET POSEZ UN MITIGEUR A DOUCHETTE

Activité 4. Tour de cartes Détection et correction des erreurs. Résumé. Liens pédagogiques. Compétences. Âge. Matériels

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

Comment utiliser FileMaker Pro avec Microsoft Office

1AN. e n 19" FicheS Techniques. PLV - Dynamique. caractéristiques techniques. dimensions dela structure

GESTION DU LOGO. 1. Comment gérer votre logo? Format de l image Dimensions de l image Taille de l image 9

Support de formation pour l'installation d'un logiciel gratuit de retouche d'images et gestion de la qualité, taille et format des images :

Les algorithmes de base du graphisme

LES TOUT PREMIERS PAS

Support de formation Notebook

C f tracée ci- contre est la représentation graphique d une

Module 1 : Tableau de bord Excel * 2010 incl.*

Infos. Indicateurs analogiques encastrables pour installation à courants forts. Série M W/P/ LSP BWQ BGQ TP TG WQ /0S WQ /2S FQ /2 W BI BIW DFQ

Championnat de France de Grilles Logiques Finale 7 juin Livret d'instructions

Transcription:

Traitement d images - Rapport de projet Félix Abecassis - Julien Marquegnies Résumé: Ce rapport présente le travail effectué dans la cadre du cours de traitement d images dispensé à l EPITA. L objectif du projet a été le développement d un algorithme permettant la localisation, l extraction puis la lecture de codes barre dans des photos naturelles. Auteurs : Félix Abecassis - felix.abecassis@epita.fr Julien Marquegnies - julien.marquegnies@epita.fr Date : Dimanche, 15 janvier 2012

Table des matières 1 Introduction 3 2 Localisation des codes barre 4 2.1 Pré-traitement..................................... 6 2.2 Extraction des codes barre............................... 8 3 Fonctionnement des codes barres 11 3.1 Code-barres EAN-13.................................. 11 3.2 Fonctionnement de l EAN-13............................. 12 4 Implémentation du décodage 15 4.1 Principe général.................................... 15 4.2 Extraction du code barres............................... 15 4.3 Prétraitement...................................... 16 4.4 Lecture des chiffres................................... 16 4.5 Vérification....................................... 17

Table des figures 2.1 Chaîne de traitements.................................. 5 2.2 Image d entrée convertie en niveau de gris....................... 6 2.3 Image résultante après l application d un Top-Hat Black............... 7 2.4 Image résultante après la binarisation......................... 7 2.5 Boîtes englobantes restantes à l issue du premier filtrage............... 8 2.6 Axes principaux (en vert) des différentes boîtes englobantes............. 9 2.7 Code barres trouvé à l issue de l étape de segmentation (non encore validé).... 10 3.1 Motif de garde sur un code barres EAN-13...................... 12 3.2 Resumé du fonctionnement de l EAN-13........................ 14 4.1 Ligne de scan d un code barres............................ 15 4.2 Résultat du décodage.................................. 17

CHAPITRE 1. INTRODUCTION Chapitre 1 Introduction L objectif de ce projet consiste en l établissement et l implantation d un algorithme permettant la détection, l extraction puis la lecture de codes barre dans des photographies naturelles. Le projet est réalisé en C++ et utilise la bibliothèque de traitement d images OpenCV afin de bénéficier de primitives de base pour la manipulation d images. Ce rapport se décompose ainsi en deux parties. La première présente l algorithme qui a été développé pour la localisation et l extraction, le cas échant, des codes barre présents dans l image. La second introduit l algorithme utilisé pour la lecture et la validation des codes barre. 3

CHAPITRE 2. LOCALISATION DES CODES BARRE Chapitre 2 Localisation des codes barre L étape de localisation des codes barre implique deux phases principales. La première consiste à mettre en avant les éléments qui sont potentiellement des codes barre en repérant les zones à fort contraste. La seconde étape a pour objectif d étudier les différents éléments récupérés lors de la première phase afin de déterminer par l intermédiaire de critères géométriques (proximité, parallélisme,... ) les différents éléments qui sont suceptibles d être des codes barre. Ci-après se trouve la chaîne de traitements pour la localisation et l extraction des codes barre dans l image. 4

CHAPITRE 2. LOCALISATION DES CODES BARRE Figure 2.1 Chaîne de traitements. 5

Epita Promotion 2012 CHAPITRE 2. LOCALISATION DES CODES BARRE 2.1. Pre -traitement Afin de pre parer l e tape de localisation des codes barre, l image couleur d entre e est dans un premier temps convertie en image en niveau de gris. Un re haussement des contrastes peut e galement e tre applique afin de renforcer la distinction entre les objets clairs et fonce s. Les codes barre posse dent diverses caracte ristiques qui leur permettent d e tre diffe rencie s des autres e le ments pre sents dans l image. L une d entre elles est la pre sence d un fort contraste entre les barres composant le code et le fond sur lequel il est imprime. De s lors, afin de mettre en e vidence ces zones de fort contraste, un filtrage morphologique de type Top-Hat Black est applique sur l image en niveau de gris. Le Top-Hat Black est de fini comme e tant la fermeture de l image a laquelle est soustraite l image originale. Etant donne que la fermeture de l image tend a e tendre les zones blanches de l image sans pour autant alte rer de fac on significative ces zones, il re sulte de la soustraction de l image originale les zones a l origine noires entoure es de blanc, ce qui met en avant les codes barre. L application du Top-Hat Black a e te re alise e avec un e le ment structurant carre de taille 25 25, ce qui est suffisant pour bien faire ressortir les codes barre. Un seuillage global de l image avec l algorithme d Otsu est finalement applique afin de binariser l image. Figure 2.2 Image d entre e convertie en niveau de gris. 6

Epita Promotion 2012 CHAPITRE 2. LOCALISATION DES CODES BARRE Figure 2.3 Image re sultante apre s l application d un Top-Hat Black. Figure 2.4 Image re sultante apre s la binarisation. 7

CHAPITRE 2. LOCALISATION DES CODES BARRE 2.2. Extraction des codes barre La localisation et l extraction des codes barre à partir de l image pré-traitée se déroule en 5 étapes. Dans un premier temps les contours des différentes composantes présentes dans l image binaire sont extraits. Ceci permet ainsi de déduire la boîte englobante orientée de chacune des composantes. Un premier filtrage sur les composantes peut donc être effectué. En effet, les barres composant un code barres sont toutes allongées, i.e une de leur dimensions (largeur ou longueur) est bien plus grande que la seconde. Ainsi le premier filtrage effectué tient compte des dimensions, largeur et longueur, de chacune des boîtes englobantes. Ainsi, pour qu un composante soit gardée pour le reste du traitement, les deux conditions suivantes doivent être satisfaites : max(largeur, longueur) 20 max(largeur, longueur) min(largeur, longueur) A l issue de ce premier filtrage, un grand nombre de composantes ont pu être retirées, considérées comme ne pouvant être une partie d un code barres. Figure 2.5 Boîtes englobantes restantes à l issue du premier filtrage. 8

CHAPITRE 2. LOCALISATION DES CODES BARRE Dès lors que le premier filtrage a été appliqué, un algorithme de K-Plus-Proches Voisins est appliqué sur la composantes restantes. Les barres d un code barres étant particulièrement rapprochée, l application de cet algorithme permet de trouver, pour chaque barre, un voisin à sa gauche et un à sa droite. Dans notre algorithme nous avons fixé K = 5, ce qui permet de récupérer suffisamment d information sans trop s éloigner de la zone initiale de recherche. Une fermeture est dès lors appliquée à l aide des voisins récupérés à l étape précédente afin de former les codes barres. Un certain nombre de critères ont été définis afin que deux composantes dans un même voisinage puissent être liées entre elles. Pour chacune des composantes de l image, les moments d inertie sur les axes x et y sont calculés. Pour que deux composantes soit liées entre elles il est donc nécessaire dans un premier temps que l intensité de leurs moments d inertie sur chaque axes soient du même ordre. Si la composante c1 tend à être allongée horizontalement (moment d inertie important selon l axe x), il doit en être de même pour la composante c2. Parmi les critères utilisés se trouvent également des critères géométriques qui nécessitent la mise en place d un segment virtuel dans la boîte englobante, qui correspond à l axe principal de celle-ci, comme illustré dans la Figure 2.6. Figure 2.6 Axes principaux (en vert) des différentes boîtes englobantes. Dès lors, il est possible de calculer l angle formé par les axes des composantes c1 et c2. Les deux composantes peuvent alors être liées si ce dernier est inférieur à π 8. De plus, une projection des deux points limitants le segment de l axe principale de la composante c2 sont projetés orthogonalement sur l axe principal de la composante c1. Les deux composantes ne peuvent alors être liées que si il y a chevauchement de l axe principal de c1 et du projeté de c2. Enfin, la distance entre c1 et c2 est calculée avant la fusion des deux composantes. Si cette distance est supérieure à 3 fois l espacement moyen entre les composantes du code barres en 9

Epita Promotion 2012 CHAPITRE 2. LOCALISATION DES CODES BARRE formation, la fusion entre c1 et c2 est rejete e. L e tape de fermeture termine e, un certain nombre de codes barres ont e te forme s a partir de l image binaire. Cependant, un certain nombre dentre eux sont des faux positifs. Pour exemple, il est impossible qu un code barres ne soit constitue que de 4 composantes, soit 4 barres. C est pourquoi, un filtrage final est applique afin de supprimer au maximum le nombre de faux positifs trouve s avant la phase de lecture des codes qui, elle, certifiera ou non la validite des codes barres extraits par l algorithme de segmentation. Parmi tous les codes barre forme s, seuls ceux posse dant plus de 2 composantes et donc l espacement moyen des composantes est infe rieur a 8 fois la taille moyenne des composantes du code barres sont garde s. On de finit la taille d une composante comme e tant le minimum entre sa largeur et sa longueur. Enfin, une tentative de fusion de codes barres est e galement re alise e. En effet, il peut arriver que certains codes barres se retrouvent coupe s a l issue de l e tape de segmentation. Une recherche d intersection entre boı tes englobantes est effectue e et une fusion est de s lors envisage e. Pour que la fusion puisse e tre re alise e il est ne cessaire que l orientation des deux codes barre soit la me me ainsi que celle des e le ments qui les composent. Figure 2.7 Code barres trouve a l issue de l e tape de segmentation (non encore valide ). 10

Chapitre 3 Fonctionnement des codes barres 3.1. Code-barres EAN-13 Dans le cadre de ce projet, nous nous sommes limités à la gestion des codes barres de type EAN, et plus particulièrement EAN-13 puisque ce format est quasiment omniprésent sur tous les produits de grande consommation en France (le type d encodage utilisé peut varier selon le pays). EAN-13 dérive directement du système d encodage UPC (Universal Product Code), qui fût le premier type de code barres existant, inventé par George Laurer, ancien ingénieur chez IBM. Comme son nom l indique, un code EAN-13 est composé de 13 chiffres, soit seulement un de plus que le système original UPC. Les codes barres sont faits pour être lus par des lecteurs lasers, le système d encodage a donc été concu avec comme objectif la simplicité et la robustesse. Les chiffres écrits en dessous sont seulement présents pour permettre une saisie humaine en cas de problème (barres fortement endommagées, défaillance de la douchette laser, etc.). Lire des chiffres est d ailleurs une tâche impossible pour un lecteur laser et difficile pour un appareil photo ou une caméra. Un classifieur statistique est nécessaire et donc les temps de calculs sont généralement beaucoup plus importants. Au contraire, un décodeur se basant sur les barres peut atteindre des performances largement temps réel (jusqu à 90 codes par seconde), il est aussi important de noter que certains code barres ne présentent pas de chiffres en dessous, ceux si sont optionnels.

CHAPITRE 3. FONCTIONNEMENT DES CODES BARRES 3.2. Fonctionnement de l EAN-13 Sur chaque code barres nous pouvons tout d abord observer qu il y a toujours une large zone blanche à gauche et à droite du code barre, ceci peut s observer très bien sur la dernière image de la partie détection (la couverture de livre d une couleur plus sombre que le code barres). Cette zone se nomme la quiet zone (zone de silence). La taille de cette zone doit être au moins égale à 10 fois la largeur de la plus petite barre du code. Cette zone existe afin de faciliter la détection, mais elle n a aucun interêt pour le décodage. Nous pouvons ensuite observer la triple occurrence d un motif semblable à gauche, à droite et enfin au milieu du code barres. Les barres de ce motif sont généralement plus hautes pour marquer la séparation mais ce n est pas systématique. Ce motif est appelé motif de garde et les trois occurrences de ce motif sont appelées S, M et E (Start, Middle et End). S et E sont constitués du motif noir-blanc-noir (3 barres) et M est constitué du motif blanc-noir-blanc-noirblanc (5 barres). Figure 3.1 Motif de garde sur un code barres EAN-13. Dans un code barres EAN-13, les chiffres sont separés en trois groupes : le premier chiffre, les 6 chiffres de gauche (entre S et M) et les 6 chiffres de droite (entre M et E). Chaque chiffre est encodé en binaire selon une table parmi 3 au total : L, G et R. La notion de bit pour un code barres correspond à la valeur d une barre de taille élémentaire. La largeur d une barre élémentaire est donnée par la lecture des gardes : les barres noires et blanches sont forcément de taille élémentaire. Les motifs de garde servent donc à calibrer le lecteur de codes barres. Une barre élémentaire noire correspond à un bit de valeur 1 et une barre élémentaire blanche correspond à un bit de valeur 0. Chaque chiffre est encodé sur 7 bits, S et E sur 3 bits et M sur 5 bits. Les chiffres de gauche peuvent être encodés par 2 tables différentes, le schéma d alternance entre ces tables est determiné par la valeur du premier chiffre du code barres comme montré dans la table suivante. 12

CHAPITRE 3. FONCTIONNEMENT DES CODES BARRES Premier chiffre Encodage chiffres de gauche 0 LLLLLL 1 LLGLGG 2 LLGGLG 3 LLGGGL 4 LGLLGG 5 LGGLLG 6 LGGGLL 7 LGLGLG 8 LGLGGL 9 LLGLGL Pour les chiffres de droite, l encodage de type R est toujours utilisé. L encodage L est le complément bit à bit de l encodage R. Les tables d encodage pour L, G et R sont presentées dans le tableau suivant : Chiffre L G R 0 0001101 0100111 1110010 1 0011001 0110011 1100110 2 0010011 0011011 1101100 3 0111101 0100001 1000010 4 0100011 0011101 1011100 5 0110001 0111001 1001110 6 0101111 0000101 1010000 7 0111011 0010001 1000100 8 0110111 0001001 1001000 9 0001011 0010111 1110100 Les encodages G et R étant symétrique, lire un code de type R à l envers donne un code de type L et inversement. Cependant un code de type L lu à l envers est invalide, ceci permet de déterminer si un code est en train d être lu à l envers. Le dernier chiffre est une clé de contrôle calculée à partir des autres chiffres (un checksum). Cette clé est calculée en calculant la somme ponderée des autres chiffres puis en prenant le complément à 10 du chiffre des unités. Les poids utilisés dans la somme sont alternativement 1 et 3. 13

CHAPITRE 3. FONCTIONNEMENT DES CODES BARRES Le principe de fonctionnement de l EAN-13 est resumé sur ce graphique provenant de Wikimedia Commons : Figure 3.2 Resumé du fonctionnement de l EAN-13. 14

Chapitre 4 Implémentation du décodage 4.1. Principe général Les codes barres EAN-13 sont des codes à une seule dimension, la hauteur importante du code barre n est présente que pour servir de mécanisme de redondance contre le bruit qui peut survenir dans l image. Le décodage du code barres peut donc se réaliser en ne prenant en compte qu une seule ligne de l image. Il faut donc ensuite parcourir cette ligne dans un sens et trouver successivement quels sont les chiffres qui correspondent aux alternances de blanc et de noir rencontrées. Figure 4.1 Ligne de scan d un code barres Comme nous l avons vu, les codes barres possédent un double mécanisme de redondance : le codage du chiffre gauche dépend du premier chiffre ce qui diminue les risques d erreurs, de plus le dernier chiffre est un checksum calculé à partir des autres chiffres. De plus décodage est un processus rapide qui ne demande qu un parcours horizontal de l image. Pour ces raisons, la segmentation peut très bien extraire des images qui ne sont en fait pas des codes barres puisque ces images seront rejetées lors du décodage : le code ne sera pas valide. 4.2. Extraction du code barres Il est d abord nécessaire d extraire le code barres depuis l image originale. Grâce à l étape précédente nous avons une ou plusieurs boîtes englobantes par image, l orientation des codes barres est indéterminée : ils peuvent être horizontaux, verticaux ou orientés à 45 degrés. La première étape du décodage est donc d isoler chaque boite englobante et d effectuer la rotation nécéssaire pour obtenir des code barres dans le sens horizontal (le code barres peut toujours être à l envers par contre, ce cas est geré plus tard dans notre algorithme).

CHAPITRE 4. IMPLÉMENTATION DU DÉCODAGE 4.3. Prétraitement Pour arriver à une bonne résistance au bruit et aux variations d illumination, il est indispensable d utiliser une binarisation efficace, sinon des barres vont tout simplement être perdues lors de cette phase. En effet lorsque le code barres est endommagé la différence d intensité lumineuse entre une barre blanche et une barre noire peut être faible. La luminosité peut également grandement varier au sein d un même code barre, nous avons donc besoin d utiliser un algorithme de binarisation robuste. Nous avons expérimenté plusieurs algorithmes différents. Certains articles proposaient de calculer tout d abord une moyenne élaguée de chaque pixel sur une hauteur de 10. Cependant cette méthode ne fonctionne pas du tout lorsque les barres présentent une forte distorsion, c est par exemple le cas lorsque que le code se trouve sur une surface facilement maléable (par exemple une feuille de papier ou encore un sac plastique). Nous avons ensuite essayé un seuillage global selon la ligne de scan : en prenant la valeur moyenne ou médiane de cette ligne. Nous avons également testé l algorithme d Otsu sur toute l image du code barres. Ces deux méthodes n ont pas donné des résultats satisfaisants. Finalement nous nous sommes orientés vers des techniques de seuillage local (ou seuillage adaptatif). Ces méthodes calculent une valeur de seuil selon le voisinage proche du pixel courant. La taille de ce voisinage et la méthode d accumulation utilisée peut varier (par exemple moyenne, médiane, moyenne ponderée). Après experiméntation, nous en avons conclu que la meilleure technique est d utiliser comme seuil local la moyenne ponderée par un noyau gaussien. Ainsi les points les plus proches sont favorisés pour le calcul de la valeur du seuil. La taille de la fenêtre (glissante) pour le calcul du seuil est environ la largeur d un chiffre du code (soit la largeur de l image divisée par 12). 4.4. Lecture des chiffres Maintenant que l image est binarisée nous pouvons lire les chiffres. Chaque moitiée du code barre est seuillé et lue indépendamment. Initialement, les gardes étaient utilisées pour trouver la largeur élémentaire des barres blanches et des barres noires, c est à dire que les gardes étaient utilisées pour leur fonction initiale de calibrage. Nous multiplions ensuite ces valeurs dans les 3 tables d encodage pour les faire correspondre à l échelle de notre code barres. Un chiffre est toujours encodé par l alternance blancnoir-blanc-noir, il suffit donc de lire la largeur de chacune de ces 4 barres en avancant dans la ligne de scan. Nous calculons ensuite la distance entre le code trouvé et tous les codes de référence. Nous prenons ensuite le chiffre dont le code avait la plus faible distance. Cependant, cette méthode ne s est pas revelée être la plus efficace. Au lieu de faire correspondre les tables d encodage aux observations, nous faisons l inverse. Les tables ne sont pas modifiées mais à la place la largeur du code est normalisé pour obtenir une norme L1 (la somme) de taille 7. 16

CHAPITRE 4. IMPLÉMENTATION DU DÉCODAGE 4.5. Vérification Lors du décodage de la partie gauche nous ne modifions pas notre algorithme en fonction de la valeur du premier chiffre puisque la valeur de celui ci pourrait avoir été mal lue. Ce mécanisme sert à la place de contrôle : nous vérifions si le premier chiffre correspond bien à l encodage trouvé pour les chiffres suivants. Nous calculons ensuite le checksum et le comparons par rapport au dernier chiffre. Si le premier ou le dernier chiffre est invalide, le code est erroné, nous essayons quand même de sauver ce code en remplacant le chiffre qui avait la plus petite différence entre le premier et le deuxième résultat. Lorsqu une ligne donne un code invalide, nous essayons sur une autre ligne plus bas, jusqu à que 6 lignes soient testées avant de rejeter le code. Dans notre programme, les codes barres valides sont entourés d un rectangle vert et le code est inscrit à l intérieur du rectangle. Les détections rejetées sont elles entourées d un rectangle rouge. Figure 4.2 Résultat du décodage. 17