Vous êtes sur la page 1sur 117

U

UNNIIV
VEER
RSSIIT
TEESSiiddii MMoohhaam meeddBBeennA Abbddeellllaah
h
F
Faculté Des Sciences Et Techniques Fèèss
a c u l t é D e s S c ie n c e s E t T e ch n iq u e s F
DDééppaarrtteemmeen ntt d
d’’IIn
nffo
orrmmaattiiq
quuee

Projet de Fin d’Etudes


MMaasstteer
rS Sc ciieen
ncceess eett T
Teec
chhn
niiq
qu ueess
S
Syyssttèèm
meess IIn
ntteelllliig
geen
nttss &
&RRéésseeaauuxx

CCoonncceeppttiio
onn eett r
rééa alliis
saattiio
onnd
d’’u
unnee a
apppplliic
caattiio
onn
d
dee r
reec
coon nnna aiis
sssaan
nc cee ddeessc co od
dees
s--b
baar
rrreesss soouuss lla
a
pplla
atteeffoor rmmee AAnnd
drrooiid
d

Lieu de stage : Laboratoire systèmes intelligents et applications

Réalisé par : BOUZIANE Ayoub & Nasri Abdelbar

Soutenu le : 22 Juin 2012

Encadré par : Devant le jury composé de :

Mr A.Benabbou Président:
Mr J.kharroubi  Mr M. Ouzarf
Examinateurs:
 Mr A.Benabbou
 Mme I.Chaker
 Mr A.Mansouri

Année Universitaire 2011-2012


Dédicaces
Comme symbole d'une profonde reconnaissance et d'une
gratitude égale, nous dédions ce modeste travail :

A NOS PLUS CHERS ETRES

Nos parents, qui nous ont accordé toute l'aide et le soutien voulu,
qui nous ont garanti un amour que nul n'oublie et nous ont guidé avec
leurs conseils intangibles dans la conception de notre personnalité.

A NOS FRERES ET SOEURS

Nous vous dédions ce travail comme une promesse d’avenir,


pour que nous ne soyons jamais plus sépares

A TOUS NOS AMIS

Avec lesquels nous avons formé une équipe solide, efficace et


particulièrement, liée par une amitié confiante que nous n'aurions
garde d'oublier.

A TOUS NOS PROFESSEURS

A qui nous devons tout respect et hommage d'avoir contribué à


notre solide formation.
Remerciement
Il nous est agréable de nous acquitter d’une dette de reconnaissance

auprès de toutes les personnes, dont l’intervention au cours de ce

projet, a favorisé son aboutissement.

Nous tenons à remercier toute personne qui a participée de prés ou

de loin à la réussite de ce modeste travail et à la tête de ces personnes

notre encadrant Mr. A.BENABBOU qui nous a encadré d'une

manière permanente jusqu'à la fin de ce travail et nous a donné le

temps suffisant et les conseils favorisants afin de mener à bien ce

travail, Sa sympathie et sa modestie nous font la plus grande estime.

Nos remerciements s’adressent également à Mr K .ZENKOUAR,

pour avoir été toujours à l’écoute, et pour leurs conseils et

éclaircissements.

Finalement, Nous tenons à remercier les membres du jury pour

avoir eu l'extrême gentillesse de bien vouloir évaluer notre projet de

fin d’études.
Résumé
L'Internet des objets représente l'extension d'Internet à des choses et à des lieux dans le
monde physique. En effet, il a pour but d‟étendre l‟internet au monde réel en associant des
étiquettes munies de codes, de puces RFID (radio frequency identification) ou d'URLs aux
objets ou aux lieux, ensuite, ces étiquettes pourront être lues par des dispositifs mobiles sans
fil.

Dans cette perspective, nous avons développé une application de reconnaissance des
codes-barres EAN 13 librement accessible et à la fois léger et assez rapide pour l'utilisation
sur les téléphones portables équipés d‟un appareil photo.

Le système est divisé en deux blocs: le bloc de localisation et le bloc de décodage. Au


niveau du premier bloc, nous présentons une méthode inspirée de l'approche de Gallo et
Munduchi [42], robuste pour la localisation des codes-barres dans des scènes complexes et
ne stipule aucune condition sur l‟orientation ou la position du code à barres. En ce qui
concerne l'étape de décodage, nous exposerons dans ce manuscrit une nouvelle méthode de
détection des barres de garde du code à barres et une approche de reconnaissance du code-
barres. Le système a été testé sur des centaines d'images avec une précision de plus de 98%.

Mots-clés: Internet des objets, des codes à barres EAN-13 code à barres, localisation, de
reconnaissance de codes-barres.

1
Abstract
The Internet of Things represents the extension of the Internet for things and places
in the physical world. Indeed, it aims to extend the Internet to the real world by associating
labels bearing codes, RFID tags or URLs to objects or places, then, these labels can be read
by mobile wireless devices.

From this perspective, we have developed a freely available EAN-13 bar code
recognition that is both lightweight and fast enough for the use on camera-equipped mobile
phones.

The system is divided into two blocs: the localization bloc and the decoding block;
for the first bloc, we present a method inspired from the approach of Gallo and Munduchi
[42], robust for the localization in complex scenes and does not stipulate any conditions on
the orientation or the position of the barcode. Concerning the decoding step, we will show
in this manuscript a new method for detecting the guard bars of the barcode and an
approach of barcode recognition. The system was tested on hundreds of images with an
accuracy of over 98%.

Keywords: Internet of things, EAN-13 barcodes, Barcode Localization, Barcode


Recognition.

‫ملخص‬
‫ إنه ٌهدف الى توسٌع‬،‫ٌمثل أنترنت األشٌاء امتدادا لألنترنت على مستوى األشٌاء واألمكنة فً العالم المادي بالفعل‬
‫ رقائق التعرف بترددات الرادٌو‬،‫نطاق شبكة اإلنترنت إلى العالم الحقٌقً من خالل ربط األشٌاءأواألمكنة بملصقات مزودة برموز‬
.‫ ثم ٌتم قراءة هذه العالمات بواسطة األجهزة الالسلكٌة المحمولة‬،‫أومحددات مواقع المعلومات‬

)EAN-13 ‫ قمنا بتطوٌر برنامج مفتوح المصدر للقراءة اآللٌة لرموز الخطوط المتوازٌة (باركود‬،‫من هذا المنظور‬
.‫خفٌف وسرٌع بما فٌه الكفاٌة لالستخدام فً الهواتف المحمولة المجهزة بالكامٌرا‬

‫ فٌما ٌهدف الجزء الثانً إلى‬،‫ الجزء األول ٌقوم بتوطٌن الترمٌز داخل الصورة‬: ‫ٌنقسم هدا البرنامج إلى جزأٌن رئٌسٌٌن‬
‫ تتمٌز‬،Gallo Manduchi [42] ‫ بالنسبة للجزء األول سوف نقدم فً هذا العمل وسٌلة مستوحاة من مقاربة‬.‫فك تشفٌر الترمٌز‬
‫ أما فٌما‬.‫بقدرة عالٌة على توطٌن الترمٌز فً المشاهد المعقدة وال تضع أي شروط بخصوص اتجاه أو مكان الترمٌز فً الصورة‬
‫ التجارب التً قمنا بها‬.‫ سنستعرض طرٌقة جدٌدة لتحدٌد أعمدة البداٌة والنهاٌة للترمٌز وفك تشفٌر االعمدة‬،ً‫ٌتعلق بالجزء الثان‬
.٪98 ‫على مئات الصور تشٌر الى نجاح البرنامج بأكثر من‬

‫ التعرف اآللً على‬،‫ توطٌن رموز الخطوط المتوازٌة‬،EAN-13‫ أنظمة الترمٌز بالخطوط‬،‫ شبكات األشٌاء‬: ‫الكلمات الرئٌسٌة‬
. ‫رموز الخطوط المتوازٌة‬

2
Sommaire
Liste des figures...............................................................................................................................6
Introduction générale .....................................................................................................................9
Chapitre1 : Les codes-barres ...................................................................................................... 11
I. Introduction ............................................................................................................................... 12
II. Les codes à barres ...................................................................................................................... 12
1. Choix de la taille du code à barres ......................................................................................... 13
2. Les familles des codes-barres ................................................................................................ 13
a. Les codes-barres unidimensionnels ou linéaires ............................................................... 13
b. Les codes-barres linéaires empilés .................................................................................... 14
c. Les codes-barres à deux dimensions ................................................................................. 14
3. Les clés de contrôles .............................................................................................................. 15
III. Les codes-barres EAN-13 ....................................................................................................... 15
IV. Les lecteurs de codes à barres ............................................................................................... 20
1. Les Lecteurs Laser .................................................................................................................. 20
2. Les lecteurs basés sur le traitement d’image (Imager).......................................................... 21
V. Conclusion.................................................................................................................................. 21
Chapitre 2 : Etat de l’art en traitement d’image pour la reconnaissance de code-barres .... 22
I. Introduction ............................................................................................................................... 23
II. La localisation de code à barres ................................................................................................. 23
1. Méthodes basées sur l’analyse multi-caractéristique des sous-régions de l’image.............. 25
2. Méthodes basées sur le calcul du gradient de l’image .......................................................... 27
3. Méthodes basées sur les opérations morphologiques et transformée de Hough ................ 31
4. Méthodes basées sur des filtres de détection des lignes particuliers ................................... 33
5. Méthodes basées sur la transformée en ondelettes et les opérations morphologiques ..... 34
6. Méthodes de localisation des codes à barres dans des scènes complexes........................... 36
III. Processus de décodage .......................................................................................................... 37
1. Méthodes basées sur le calcul des largeurs des barres......................................................... 38
a. Réseaux Bayésiennes ......................................................................................................... 38

3
b. Méthode basée sur des probabilités a priori ..................................................................... 41
c. Méthode basée sur des modèles déformables ................................................................. 41
d. Méthode de Clustring : K-means. ...................................................................................... 42
e. Méthodes de décodage simple sur la base des largeurs des barres et espaces : ............. 44
f. Méthodes de restauration et amélioration du code-barres :............................................ 48
2. Méthodes basées sur la déconvolution du signal d’intensité d’une ligne d’analyse du code-
barres ............................................................................................................................................. 49
IV. Applications Existants ............................................................................................................ 51
V. Conclusion :................................................................................................................................ 52
Chapitre 3 :Méthode proposée ................................................................................................... 53
I. Introduction ............................................................................................................................... 54
II. Prétraitement ............................................................................................................................ 55
III. Localisation des codes à barres ............................................................................................. 56
IV. Décodage du code à barres ................................................................................................... 66
1. Prétraitement ........................................................................................................................ 66
2. Classification des chiffres....................................................................................................... 70
3. La recherche du code barre le plus probable ........................................................................ 76
V. Expériences et résultats ............................................................................................................. 77
VI. Conclusion.............................................................................................................................. 78
Chapitre 4 : Implémentation de la méthode proposée sous la plateforme Android ............ 80
I. Présentation de la plateforme Android ..................................................................................... 81
II. Finalité attendue du projet ........................................................................................................ 83
III. Réalisation.............................................................................................................................. 83
1. Capture des besoins............................................................................................................... 83
a. Identification des acteurs .................................................................................................. 83
b. Besoin fonctionnels ........................................................................................................... 84
c. Besoin non fonctionnels .................................................................................................... 84
d. Diagramme de cas d’utilisation ......................................................................................... 84
2. Analyse des cas d’utilisations................................................................................................. 85
a. Cas d’utilisation : scanner un code à barre ........................................................................ 86
b. Cas d’utilisation : Récupérer les informations des produits .............................................. 87
3. Conception des cas d’utilisations........................................................................................... 87

4
c. Diagrammes d’activités...................................................................................................... 88
d. Diagrammes des classes .................................................................................................... 89
4. Implémentation ..................................................................................................................... 98
a. Environnement matériel .................................................................................................... 98
b. Technologies et bibliothèques ........................................................................................... 99
c. Protocoles et formats de données .................................................................................. 100
d. Architecture logiciel ......................................................................................................... 102
e. Environnement de développement ................................................................................. 103
IV. Conclusion et perspectives : ................................................................................................ 104

Références ........................................................................................................................................ 106

5
Liste des figures
Figure 1 : Identification automatique des articles dans les supermarchés à l’aide des codes-barres ................12
Figure 2 : CODE 39 ...........................................................................................................................................14
Figure 3 : PDF 417 ............................................................................................................................................14
Figure 4 : DATAMATRIX ..................................................................................................................................14
Figure 5 La structure des codes-barres EAN-13 ..................................................................................................15
Figure 6 Les Barres de Garde .............................................................................................................................16
Figure 7 La structure du code EAN13 ................................................................................................................17
Figure 8 Représentation graphique du chiffre 6 .................................................................................................17
Figure 9 les deux principales étapes d’un lecteur de code-barres. .....................................................................23
Figure 10 Deux échantillons de l'image d'entrée................................................................................................25
Figure 11 La représentation binaire des blocs X1 et X2. .....................................................................................26
Figure 12 Les Blocs X1 et X2 après la squelettisation. ........................................................................................26
Figure 13 (a) 5 composants connectés dans le bloc X1, et 6 composants connectés (b) dans le bloc X2. ..........26
Figure 14 La région du code-barres segmenté. ..................................................................................................27
Figure 15 Exemple de la localisation : (a) image originale (1152*864, JPEG compressé), (b) La carte lissée Is
(n) avec son maximum marquée par un carré noir, (c) binarisation par seuillage de Is (n), (d) Le segment
résultant (carré noir), avec la ligne de scan sélectionnée l(n), les points d'intersection iL et iR, et les points
d'extrémité OL et OR. ........................................................................................................................................28
Figure 16 Une bande horizontale de l'image après la division ...........................................................................30
Figure 17 Localiser le code-barres sur une bouteille ..........................................................................................30
Figure 18 processus de localisation du code-barres ...........................................................................................32
Figure 19 Localisation du code à barres .............................................................................................................32
Figure 20 Transformation du code à barres .......................................................................................................33
Figure 21 Transformation du code-barres ..........................................................................................................33
Figure 22 Filtre de détection des lignes. .............................................................................................................33
Figure 23 Localisation du code à barres par le filtre de détection des lignes .....................................................34
Figure 24 la transformée en ondelettes d’une mage .........................................................................................35
Figure 25 Les 2 premiers niveaux d'une décomposition pyramidale en ondelettes ...........................................35
Figure 26 La structure pyramidale de l'image en ondelettes. ............................................................................35
Figure 27 L'image en ondelettes d'une image de code à barres après la décomposition en ondelettes sur 3-
niveau .................................................................................................................................................................36
Figure 28 Le Framework de localisation du code à barres ...............................................................................37
Figure 29 les contours fixes des codes à barres représenté par les lignes rouges en pointillées.
Les étiquettes en bas désignent les régions de Garde et les 12 régions des chiffres compris entre les contours
fixes. ...................................................................................................................................................................39
Figure 30 Graphe facteur utilisé dans le modèle 1 et 2. Les variables sont représentés par des cercles et les
facteurs (interactions entre les variables) par des boîtes. Les facteurs appliquant des contraintes
géométriques sont dessinés en rouge et les facteurs incorporant des informations des contours de lignes de
scan sont dessinés en vert. .................................................................................................................................40
Figure 31 les modèles de classes de l’alphabet de la norme EAN-13. ................................................................42
Figure 32 Un échantillon de profil d'intensité dans une ligne de balayage (ligne bleue). ..................................42

6
Figure 33: Système de décodage des codes à barres .........................................................................................43
Figure 34: structure de processus de reconnaissance ........................................................................................43
Figure 35 Calcul du seuil dynamique pour la binarisation. .................................................................................45
Figure 36 L'espace des paramètres de Hough ....................................................................................................46
Figure 37 line à travers les barres ......................................................................................................................47
Figure 38 line à travers les barres ......................................................................................................................47
Figure 39 Une image à faible résolution d’un code à barres très déformée et bruitées et La séquence
d'intensité d'une ligne sélectionnée de cette image ...........................................................................................47
Figure 40: récupération du signal idéal u (recouvert par une ligne pointillée) à partir du signal floue et bruitée
u0par la minimisation de la variation totale d’énergie. .....................................................................................49
Figure 41 l’effet du floue sur les codes-barres ....................................................................................................50
Figure 42 Le traitement effectué par l’algorithme de Yahyanejad et Strom pour acquérir le code barre
d'origine .............................................................................................................................................................50
Figure 43 le lecteur de codes barres visuel dans toute sa simplicité. .................................................................54
Figure 44 Conversion de l’image d’entrée en niveaux de gris ............................................................................56
Figure 45 Le processus de localisation du code à barres ....................................................................................57
Figure 46 Application du gradient de sobel sur des images de codes-barres dans les trois directions principaux,
l’image originale à gauche, l’ampleur du gradient au milieu est l’histogramme de direction du gradient. ......59
Figure 47 Elimination des pixels parasite entourant le code barres, le contour de l’image originale est
représenté à gauche l’image a droite représente ce même contour après l’élimination des pixels parasite et le
code-barres est situé au sein du rectangle rouge. ..............................................................................................60
Figure 48 Lissage du contour de l’image et sélection du pixel d’intensité maximale .........................................61
Figure 49 Binarisation des images a l’aide de la méthode d’otsu. .....................................................................62
Figure 50 Extraction des blocs à partir de l’image origine .................................................................................62
Figure 51 Mise en rotation du bloc en sens inverse de l’angle déterminé ..........................................................63
Figure 52 Détection de contours de l’image d’origine ........................................................................................63
Figure 53 Lissage et binarisation des contours...................................................................................................63
Figure 54 résultats de la localisation (Gallo et Maunduchi) ...............................................................................64
Figure 55 Suppression des pixels qui n’ont pas la même orientation du code-barres et lissage de l’image
résultante ...........................................................................................................................................................64
Figure 56 Détection de contours de l’image d’origine .......................................................................................64
Figure 57 Binarisation de l’image lissé et la sélection du blob du code-barres ..................................................65
Figure 58 Exemples des résultats de localisation des codes-barres par la méthode de Gallo et Manduchi (à
gauche) et notre contribution à cette méthode (à droite). ................................................................................65
Figure 59 Echantillon d’un code-barres ..............................................................................................................67
Figure 60 Les différentes étapes de prétraitement ............................................................................................67
Figure 61 La dérivée première de la ligne d’analyse arraché le l’image précédente ..........................................67
Figure 62 La dérivée première de la ligne d’analyse après l’élimination des faibles minimums et maximums .68
Figure 63 Les largeurs des différents traits noirs et blancs ................................................................................69
Figure 64 Le résultat de détection du début des barres de garde du code-barres .............................................70
Figure 65 Tableau de symbologie de la norme EAN ...........................................................................................71
Figure 66 calcul des largeurs de simples, doubles, triples et quadruples modules noirs, ici en supposant une
image sombre où w1 <m1 <B1 ...........................................................................................................................73
Figure 67 calcul des largeurs de simples, doubles, triples et quadruples modules blancs, ici en supposant une
image sombre où w1 <m1 <B1 ...........................................................................................................................73
Figure 68 La représentation graphique de l’ensemble des alphabets du code-barres .......................................75

7
Figure 69 Exemple de classification d’un chiffre.................................................................................................75
Figure 70 Calcul du chiffre de parité ...................................................................................................................76
Figure 71 Prototype générale du processus de décodage ................................................................................79
Figure 72: Diagramme de cas d'utilisation général ............................................................................................85
Figure 73: Diagramme d'activité du cas d'utilisation 'scanner' ..........................................................................88
Figure 74: Diagramme d'activité du cas d'utilisation 'Interroger WS SIASCAN' .................................................89
Figure 75 Diagramme de classe du package com.siascan.barcode.gui .............................................................90
Figure 76 Interface: Animation au début de l'application ..................................................................................91
Figure 77 Interface : les déférents modes de scan .............................................................................................91
Figure 78 Mode de reconnaissance à l’aide d’un aperçu d’une ligne au sein de la camera. ..............................92
Figure 79: Localisation et décodage d'un code à barres en temps réel ..............................................................92
Figure 80 Localisation et décodage d'une image capturé par la caméra ...........................................................93
Figure 81 Localisation et décodage des images sélectionné a partit la galerie .................................................93
Figure 84 Interface: résultat du scan ..................................................................................................................94
Figure 85 Interface rechercher dans Prixing .......................................................................................................94
Figure 86 rechercher dans Google ......................................................................................................................94
Figure 87 Interface: Récupérer des informations du produit scanné .................................................................95
Figure 88 Ajouter un produit au panier ..............................................................................................................95
Figure 89 Interface: Panier des produits à commander .....................................................................................96
Figure 90: Architecture matériel ........................................................................................................................99
Figure 91 Schéma généraliste d'un web service .............................................................................................. 100
Figure 92 Structure d'une enveloppe soap ...................................................................................................... 101
Figure 93 Architecture 3-tiers du point de vue technologie .......................................................................... 103

8
Introduction générale
L‟internet arrive à un tournant décisif de son développement ; après l‟avènement
respectif de l‟internet et de l‟internet sur mobile dans les années 90 et 2000, nous
nous dirigeons vers une nouvelle évolution majeure : l‟internet des objets. Il s‟agit
d‟évoluer d‟un réseau d‟ordinateurs interconnectés vers un réseau d‟objets
interconnectés tels que les voitures, les appareils électriques ou les produits.

L‟internet des objets fait partie intégrante de l‟internet du futur et peut être
défini comme une infrastructure de réseau globale et dynamique basée sur des
protocoles de communication interopérable où les objets réels et virtuels ont une
identité qui par le biais d‟interfaces intelligentes sont parfaitement intégrés dans un
réseau d‟information. En fait, c‟est une évolution majeure de nos systèmes d‟information et
de communication qu‟entrainera l‟internet des objets.

A l‟origine, l‟Internet des Objets est un concept dans lequel on identifie des objets
de façon unique et on les relie au monde virtuel. Ces identifiants sont inscrits sur des codes
à barres, des tags RFID (radio frequency identification), NFC (Near field communication),
etc, qui sont apposés sur les objets physiques. Lors de leurs cycles de vie d‟objets, des
lectures d‟évènements sont faites via des technologies sensorielles : capteurs, caméras,
positionneurs GPS, GSM ou Wi-Fi, saisies manuelles, etc.

Une des implémentations de ce concept est la lecture des codes-barres qui permet de
relier tout article dans le monde à leur correspondant virtuel au niveau du réseau internet, en
fait cette implémentation a bouleversé le domaine de logistique par leur nombreuses
avantages: l‟échange de données sur les produits, la gestion intelligente des stocks, la
vérification automatique des entrées/sorties des produits. Ce qui se traduit pour les
entreprises par une meilleure productivité, une accélération des tâches et une réduction des
coûts d‟exploitation.

Auparavant, le code à barres ne délivre aucune information au consommateur.


Aujourd‟hui, avec la révolution des téléphones mobiles et technologie informatique le
même code à barres est devenu une passerelle pour obtenir les informations détaillées sur un
produit, les supermarchés les plus proches de vous qui vendent ce produit et une
comparaison entre les différents prix proposés.

C'est dans cette perspective ambitieuse que s'inscrit notre projet de fin d'études,
effectué au sein de l‟équipe SCTC (Systèmes de Communication et Traitement de
Connaissances) du laboratoire SIA (Systèmes Intelligents et Applications) .En effet, le but

9
de notre projet est de concevoir et réaliser une application mobile intelligente de localisation
et reconnaissance des codes-barres sous la plateforme Android.

Au niveau de la localisation on va présenter notre première contribution dans ce


thème de recherche, en améliorant la méthode de localisation présenté l‟année dernière par
Gallo et Manduchi [42], en fait, cette approche présente des limitations dans certains scènes
complexes et stipule que le code-barres doit être orienté précédemment de telle façon que
les barres doivent être parallèle à l‟axe des y. Après notre contribution, la méthode devient
plus robuste et performante et ne fait aucune condition sur l‟orientation du code-barres et
permet en plus de détecter l‟orientation du code-barres.

En ce qui concerne le décodage, nous proposons une nouvelle méthode basé sur le
calcul des largeurs des barres et espaces d‟une ligne extraite du code-barres, en effet, la
nouveauté de notre approche réside au niveau de la détection des barres de garde du code-
barres et la classification des chiffres du code-barres.

Le présent manuscrit est organisé autour de quatre chapitres, de la manière suivante :

Tout d‟abord, nous présentons dans le premier chapitre la synthèse d‟une étude
détaillée sur les différentes familles des codes-barres et essentiellement sur la norme EAN-
13.

Le deuxième chapitre est consacré à l‟exposition de l‟état de l‟art de la localisation


et reconnaissance des codes-barres d‟une seule dimension. Ce chapitre n'a pas pour finalité
de décrire tous les approches de reconnaissance des codes-barres car cet objectif ne serait
pas réaliste, mais nous présenterons les méthodes qui ont marqué ce domaine.

Dans le troisième chapitre nous présentons notre approche et nos contributions au


processus de localisation et de décodage des codes-barres. Une validation sur une base de
données de centaines d‟image de cette approche sera faite dans la dernière partie de ce
chapitre.

Le quatrième chapitre se consacrera aux différentes étapes de l‟implémentation de


notre approche sous la plateforme Android, ainsi que la réalisation d‟une application pour
l‟acquisition des informations des différents articles scannés.

Et finalement, nous achèverons ce document en exposant une conclusion sur les


différents travaux que nous avons présentés. Après avoir rappelé les grandes lignes de notre
approche, nous présentons les améliorations possibles ainsi que les pistes qui nous semblent
intéressant de suivre comme perspectives de ce travail.

10
 Chapitre 1 :

Les codes-barres
Ce chapitre met en
lumière la technologie du
code à barres et ces
différentes familles, et se
focalise essentiellement sur
la norme EAN-13 (European
Article Numbering), qui fait
l'objet de notre étude.

11
I. Introduction
Huit milliards de bips chaque jour dans le monde. C'est le nombre de produits scannés et
vendus après la lecture du fameux code à barres. Ce petit pictogramme fait à présent partie
du quotidien et sert en réalité à bien plus qu'au simple affichage du prix de vente en caisse.

Il est imprimé au moment de la production des marchandises et utilisé essentiellement


pour automatiser les activités des supermarchés au points de ventes en s‟appuyant sur les
techniques d'identification et de saisie des données automatiques (Automatic identification
and data capture), ce qui facilite la gestion des flux de marchandises et permet de diminuer
les erreurs de saisies comme les délais d‟attente aux caisses engendrés par des opérations
manuelles longues et souvent fastidieuses, ce qui le rend indispensable pour la gestion des
magasins et l‟approvisionnement des produits.

Figure 1 : Identification automatique des articles dans les supermarchés à l’aide des codes-barres

II. Les codes à barres


Apres son lancement en 1973 par George Laurer, et en seulement 25 ans le code à
barres est entré dans nos vies. Il y a des petits codes-barres, des gros codes-barres, des
codes-barres fins, des grands codes-barres, il y a des codes-barres internationaux (UPC) et
des codes-barres postaux, il y a le code barre 2-D et autres. Que ce soit pour des cigarettes
ou de la viande, des lettres ou des boissons, ces produits sont tous habillés par un Code-
barres.

Destinés à automatiser l'acquisition d'une information généralement numérique, ils


trouvent leurs applications dans des domaines aussi variés que la gestion des prêts d'une
bibliothèque, les caisses enregistreuses à lecture optique, ou le contrôle de la production
dans l'industrie, etc.

12
Un code à barres, souvent appelé " code-barres ", représente la codification
graphique d'une donnée numérique ou alphanumérique. Variant selon la symbologie et les
algorithmes de codage, cette codification est optimisée selon les besoins pour encoder du
texte, des chiffres, des caractères de ponctuation ou encore une combinaison de ses derniers.

Il existe plusieurs types de symbologies parmi lesquelles l‟utilisateur devra faire son
choix en fonction de contraintes internes ou externes :

 La place disponible sur l‟objet à marquer ;

 La nature de l‟information à symboliser (numérique ou alphanumérique);

 La distance de lecture : s‟agit-il de lire un symbole sur une palette stockée en


hauteur dans un Entrepôt ou de lire celui d‟un produit passant à une caisse de
supermarché.

1. Choix de la taille du code à barres

La taille d‟un code à barres varie dans certaines limites selon les conditions
d‟impression: technique d‟impression, qualité du support, caractéristiques de l‟imprimante,
etc.
C‟est donc l‟imprimeur qui indiquera la taille minimale que le responsable du
graphisme de l‟emballage doit respecter. Les marges claires à droite et à gauche du code à
barres doivent impérativement être respectées. Elles sont indispensables pour la
reconnaissance du code par le lecteur.

2. Les familles des codes-barres


Il existe 3 grandes familles de codes-barres : les codes-barres unidimensionnels ou
linéaires, les codes-barres linéaires empilés et les codes-barres à deux dimensions,
renfermant chacune des dizaines de types, chaque code utilise un protocole de codification
différent, créé pour répondre aux contraintes d'utilisation, de normalisation ou de
sécurisation.

a. Les codes-barres unidimensionnels ou linéaires

Les plus anciens, constitués de barres sombres et d'espaces vides, disposés à la verticale.

 Types de codes-barres unidimensionnels : EAN, CODE 11, CODE 39,


CODE 93, CODE 128, INTERLEAVED 2of5, NW7, CODE NAIN...

13
Figure 2 : CODE 39

b. Les codes-barres linéaires empilés


Ils sont constitués de plusieurs codes-barres linéaires empilés les uns sur les autres. Ils sont
lus verticalement avec un lecteur à balayage automatique.

 Types de codes-barres linéaires empilés : PDF 417, IE POSTNET, CODE


16K, CODE 49, PLANET...

Figure 3 : PDF 417

c. Les codes-barres à deux dimensions

Ainsi nommés car ils sont codés et lus horizontalement et verticalement, les barres et
les espaces sont remplacés par de petits carrés ou points. Ils permettent donc de coder un
plus grand nombre de données sur une même surface. Les normes bidimensionnelles sont
réputées pour leurs hautes densités, pouvant stocker beaucoup d'informations.

 Types de codes 2D : CODE AZTEC, DATAMATRIX, MAXICODE, QR


CODE...

Figure 4 : DATAMATRIX

14
3. Les clés de contrôles
Les clés de contrôles, communément appelées check digit, permettent d'assurer la
validité d'un code barre et d'éviter ainsi les erreurs de lecture.

Lorsqu'un code barre est lu, la clé de contrôle est recalculée. Si le résultat du calcul
effectué est identique à la lecture qui a été faite de la clé de contrôle, la lecture du code
barre est correcte. S'il y a une différence, la lecture est considérée comme erronée. Cette
technique permet notamment d'éviter les erreurs de lectures dues à une mauvaise qualité
d'impression.

III. Les codes-barres EAN-13


EAN (European Article Numbering) est un système global de codification des articles
développé à partir du code américain UPC pour les besoins spécifiques du commerce
européen et destiné à l'identification univoque d'objets, il est géré mondialement par GS11.
Les numéros EAN (EAN-13, EAN-8, EAN+5, EAN+2, UCC-E, gencode, GTIN) identifient
les articles ou les unités logistiques de façon unique, ce sont les empreintes digitales des
articles. Ce symbole est lisible automatiquement par des appareils de lecture et permet la
saisie automatique des données à chaque mouvement de marchandise.

Les codes EAN 13 (European Article Numbering à 13 chiffres) sont les codes à barres
les plus utilisés dans le monde entier sur l'ensemble de produits de grande consommation
(On utilise parfois le code EAN 8 pour les objets de petite taille).

 Anatomie du code EAN-13

Figure 5 La structure des codes-barres EAN-13

1
GS1 est un organisme mondial actif dans le domaine de la normalisation des méthodes de codage utilisées
dans la chaîne logistique, son objectif de GS1 est d'établir des standards et des solutions permettant
l'échange de biens de consommation sur la planète, visant ainsi toute la chaîne de distribution du producteur
au consommateur.
15
Ils comportent 13 chiffres dont la signification varie suivant le type du produit et se
décompose des éléments suivants :

 Les Barres de Garde :

Les barres de garde sont localisées au début, au milieu et à la fin. La barre de début et
de fin sont toutes deux encodées « barre, espace, barre » ou 101. La barre du milieu est
encodée tel que « espace, barre, espace, barre, espace » ou 01010. Les barres de garde disent
à l‟ordinateur quand la série de numéros du Code Fabricant et du Code Produit
commencent et terminent.

Figure 6 Les Barres de Garde

 Le Code du Fabricant :

C‟est un code composé en 5 ou 6 nombres, qui s‟adressent uniquement au Fabricant du


Produit. Chaque produit que le fabricant fait est signé par le même Code Fabricant sur tous
les codes-barres.

 Le Code du Produit :

C‟est aussi un code fait en 5 ou 6 nombres spécifiquement assigné par le fabricant d‟un
produit particulier. Tous les produits différents, cela inclut aussi les différences de taille ou
d‟emballage, ont un numéro de Code Produit différent.

 La clé de contrôle :

La clé de contrôle : est une manière informatique de vérifier si le code-barres est


authentique ou pas.

 Encodage des caractères EAN-13


16
Le processus de codage d'un code à barres EAN-13 est relativement simple. Un code
EAN-13 exige 12 chiffres de données à être présents pour l'encodage alors que le 13éme
chiffre (le chiffre de parité) sera calculé à partir des six premiers chiffres.

Les symboles EAN-13 sont faits d'une succession d'espaces clairs et de barres foncées,
Le terme barre désigne le rectangle représenté par la couleur du premier plan tandis que le
terme espace désigne l'intervalle spatiale, qui sépare deux barres successives, portant la
couleur du fond. Habituellement, la couleur de premier plan est en noir et la couleur de fond
est blanche. Les barres et les espaces sont souvent notée éléments.

Chaque chiffre est codé à l'aide de 7 bits (voir Tableau 2), les bits sont représenté
graphiquement par des unités de même largeur, chaque unité peut être représenté par une
barre pleine "1" ou bien un espace vide "0", De plus, tous les chiffres, sauf le premier, se
composent de deux barres noires et deux espaces blanches ( le plus mince barre / espace
représente une unité tandis que le plus épais barre / espace représente quatre unités ).

De ce fait, l'épaisseur des barres noires et les espaces blanches par rapport aux autres
détermine les chiffres qu'ils représentent.

Le premier caractère du code-barres n'est pas codé mais il détermine l'alternance des Set
A et B à utiliser pour le codage des 6 caractères situés à gauche du séparateur central.

Figure 7 La structure du code EAN13

Par exemple, le chiffre 6 est composé de 7 unités et on l‟écrit 0101111 ou alors espace,
barre, espace, barre, barre, barre, barre :

Figure 8 Représentation graphique du chiffre 6

17
Le code doit être lisible de la gauche vers la droite et de la droite vers la gauche, celui-ci
a donc été divisé en deux parties par un séparateur. On trouve 01010 entre les parties droite
et gauche du code et 101 aux extrémités du code, on notera que les séparateurs ont des
barres plus hautes que les barres qu‟ils encadrent (voir Figure 7).

Les chiffres situés à gauche du Séparateur Central du symbole EAN 13 utilisent deux
jeux de codification nommés Set A et Set B. Ceux situés à droite utilisent le jeu de
codification nommé Set C.

 Table de codage des caractères EAN 13

Une table qui indique comment codifier chaque caractère d'un EAN 13 selon qu'il se
trouve à gauche ou à droite du Séparateur Central.

Les chiffres de gauche utilisant le Set A ou B en fonction de la valeur du premier chiffre


du code-barres.

Gauche Droite

A B C

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

Tableau 1 : Table de codage des caractères EAN 13

18
 Les codes des jeux A et B commencent tous par 0 et finissent tous par 1.
Inversement, les codes du jeu C commencent tous par 1 et finissent tous par 0.
Le codage d'un chiffre n'implique donc que 5 bits sur 7.

 Table de parité du code EAN13:

La table suivante indique le Set avec lequel chaque caractère de la partie gauche de
l'EAN doit être codé. L'alternance des Set A et B est déterminée par la valeur du 1er
caractère de l'EAN-13.

Chiffre Set à utiliser


de parité Premier Second Troisième Quatrième Cinquième Seizième
chiffre chiffre chiffre chiffre chiffre chiffre
0 A A A A A A
1 A A B A B B
2 A A B B A B
3 A A B B B A
4 A B A A B B
5 A B B A A B
6 A B B B A A
7 A B A B A B
8 A B B A B A
9 A B B A B A
Tableau 2 Table de parité de la norme EAN13

 Le second caractère du Préfixe est toujours codé en Set A.

 Un code UPC-A commençant toujours par un zéro, on utilise donc uniquement


le Set A. En fait tout EAN-13 dont le premier caractère est un 0 est un UPC-A et
non pas un EAN-13.

 Tout EAN-13 (ne commençant pas par zéro) comprend toujours 3 caractères en
Set A et 3 caractères en Set B.

 Le caractère de contrôle

Après le décodage du code-barres, l'exactitude des données transcrites peut être vérifiée
à travers le calcul de la clé de contrôle, En se basant sur les formules suivantes:

∑ ∑ , ,

Où Z représente la clé de contrôle.

19
Si Z est égal à C, le résultat de reconnaissance est correct, sinon, il n'est pas.

 Exemple :

Voici un exemple de calcul du caractère de contrôle d'un code EAN 13. Pour un code
EAN 8, la procédure est la même, il y a seulement moins de chiffres à prendre en compte.

Code EAN : 4 007630 00011X


Chiffres : 400763000011
Multiplier par 1 3 1 3 1 3 1 3 1 3 1 4 0 0 21 6 9 0 0 0 0 1 3
3:
Somme : 4+ 0 + 0 + 21 + 6 + 9 + 0 + 0 + 0 + 0 + 1 + 3 = 44
Division par 10 : 44 / 10 = 4 reste 4
Caractère de contrôle : 10 - reste = 6 (Si le reste de la division vaut 0,
alors le caractère de contrôle vaut également 0).

Le code EAN final est donc dans ce cas 4 007630 000116.

IV. Les lecteurs de codes à barres


Comme leur nom l‟indique, les lecteurs lisent le code à barres afin d‟obtenir les données
qu‟il renferme. Ces données sont ensuite affichées pour l‟opérateur sur l‟écran d‟un appareil
relié au lecteur, par exemple, un ordinateur mobile ou une caisse enregistreuse, et peuvent
aussi être envoyées à une base de données centralisées pour y être stockées.

Il existe deux moyens courants de lire les codes-barres. Le premier est basé sur la
lecture optique qui consiste à envoyer sur le code-barres un faisceau lumineux (souvent un
laser de très faible puissance) et analyser la lumière réfléchie, tandis que le deuxième est
basé sur le traitement de l‟image capturé du code-barres.

1. Les Lecteurs Laser


Tous les lecteurs laser de codes-barres exploitent une propriété bien connue de la
lumière : elle est réfléchie par les surfaces claires et absorbée par les surfaces foncées. Le
balayage d‟une surface constituée d‟une alternance de barres foncées et d‟espaces clairs par
un faisceau lumineux va donc permettre de générer un signal électrique dont la variation en
amplitude et en fréquence pourra être rapportée à un symbole donné, et par conséquent, à
une information ou à un message.

Le photodétecteur transforme ensuite le faisceau laser réfléchi en signal analogique


électrique, avant de convertir ce dernier en données numériques. Ensuite, le décodeur du
lecteur traite ces données et fait appel à un algorithme de symbologie en vue de leur
interprétation.

20
2. Les lecteurs basés sur le traitement d’image (Imager)
Il s‟agit, en fait, d‟un lecteur basé sur des techniques de vision automatique, ce type de
lecteur capture l‟image en deux dimensions de la zone visée. Cette image est conservée en
mémoire et des algorithmes dédiés localisent le code-barres dans l‟image et le décodent par
la suite.

Actuellement, les scanners de codes à barres largement utilisés dans les supermarchés
sont fabriqués à partir de la méthode de reconnaissance opto-électrique. Bien que cette
technologie est mature et facile, la zone de code à barres doit être localisée par le manuel à
numériser, et il faut de très bonne qualité des codes à barres imprimés. S‟il existe une
fragmentation, salissures, ou autre chose, le scanner de code à barres ne peut pas lire
correctement les informations portées par le code à barres. En outre, un scanner laser de
code-barres ne peut pas lire les codes à barres de deux dimensions, qui sont utilisés de plus
en plus largement.

Par contre, en utilisant la méthode de traitement d'image numérique, la qualité de


l'image peut être améliorée, et le lecteur code à barres peut lire non seulement les codes à
barres d'une dimension, mais aussi des codes à barres a deux dimensions. C‟est pourquoi la
méthode de reconnaissance des codes-barres devient la direction inévitable en
développement dans le domaine des lecteurs de codes à barres.

V. Conclusion
L‟évolution de ces technologies est constantes et reste assez récente ce qui nous amène à
penser que ces lecteurs sont plein d‟avenir même si de nouvelles techniques comme le
RFID (Radio Frequency IDentification) apparaissent. Cependant, La rapidité et la fiabilité
de lecture ainsi que le faible cout du code-barres par rapport à cette nouvelle technologie lui
permet de conserver sa place comme un outil incontournable pour l‟identification et saisie
automatique des données.

21
 Chapitre 2:

Etat de l’art en
traitement d’image pour Après une brève
description de l‟anatomie des
la reconnaissance de codes à barres EAN13, ce
chapitre aborde
code-barres principalement
principales approches et
les

techniques de localisation et
de reconnaissance de codes à
barres utilisées jusqu'à
présent dans ce domaine.
Elle constitue la partie la
plus théorique et fait l'objet
de la plus grande part des
articles dédiés à ce problème
durant les trois dernières
décennies (1980-2010).

22
I. Introduction
Le problème de localisation et de reconnaissance des codes à barres a attiré l'attention
des chercheurs depuis quelques décennies, et restent encore et toujours un sujet de
recherche attractif et très ouvert. Beaucoup de connaissances dans les domaines de la
reconnaissance des formes, du traitement d'images et des statistiques ont été appliquées au
domaine de la reconnaissance et lecture des codes à barres.

Dans le but d'accroître la performance du système et diminuer le temps de calcul, le


problème de reconnaissance des codes à barres est généralement divisé dans la littérature en
deux parties : la localisation du code à barres et le décodage. La première partie du système
recherche l'emplacement du code à barres et la deuxième consiste à décoder l‟information
incorporée dans le code à barres.

• Une sorte de problème de Décodage


segmentation d'image ,visant
à localiser l‟emplacement du • Une technique de décodage des
code-barres dans l‟image. informations incorporées dans
la representation graphique du
code à barres.
Localisation

Figure 9 les deux principales étapes d’un lecteur de code-barres.

Dans la littérature, une partie des travaux considère simplement la localisation des codes
à barres, certains ne considèrent que le décodage et les autres considèrent l'ensemble du
problème.

Nous aborderons premièrement la question de la localisation, et nous passerons


également en revue quelques algorithmes et techniques de décodage du code-barres localisé.
Enfin, nous terminerons ce survol en présentant les différentes applications commerciales
existantes sur le marché.

II. La localisation de code à barres


Cette partie présente un survol des différentes méthodes et techniques de localisation de
code à barres dans la littérature, et met en exergue les approches les plus importantes, ainsi
que ses limitations et inconvénients.

23
La première étape d‟un lecteur de code à barres est la localisation de la zone du code à
barres dans l'image. Une multitude d‟applications existantes exigent que l'utilisateur doive
déplacer la caméra vers le code à barres de manière à maximiser son largeur apparente dans
l'image. Bien que bénéfique à la résolution, cette procédure peut être gênante pour
l'utilisateur.

Durant les trois dernières décennies, plusieurs méthodes de localisation ont été
proposées à savoir, les méthodes basées sur la transformée de Hough [6, 72, 74,75],
l'histogramme d'orientation des contours [5], les opérateurs morphologiques [2,23], les
transformées en ondelettes [33, 59], les filtres de Gabor [9]. D'autres approches [8,4]
suppose que le centre de l'image fait partie de la zone du code-barres, ce qui simplifier
grandement le problème. Ohbuchi et al [8] réduit le problème à trouver l'orientation
angulaire des barres, tandis que Wachenfeld et al [4] extraient une ligne d‟analyse supposée
le centre de l'image et la binariser avec un seuil adaptatif, les points de terminaison sont
localisés en comptant le nombre de barres détecté.

D'autres algorithmes de détection des codes-barres [2, 16, 71] présentent une approche
basée sur l‟analyse multi-caractéristique des sous-régions de l‟image, par exemple, Chai et
Hock [2] proposent une méthode basé sur l'extraction des régions connectés à textures
mono-orientés.

Divers filtres morphologiques et des réseaux d'auto-apprentissage ont également été


essayés dans [21].

Un inconvénient commun de ces algorithmes est qu'ils consomment beaucoup de temps


et nécessitent des serveurs externes pour le traitement de l'image.

Le travail de Coughlan, Manduchi et Shen [48] introduit un algorithme rapide et robuste


de lecture de code à barres 1-D, pour la binarisation des images ils ont utilisé une version de
l'algorithme de Niblack, il est vrai que c‟est un algorithme très rapide, toutefois, il a un
point faible: il repose entièrement sur la binarisation en luminosité correcte, Ainsi, par
exemple, une binarisation médiocre peut mal joindre trois barres consécutives en une seule
(généralement en raison de flou) ou de diviser une barre en trois (typiquement à cause du
bruit).

Dans le contexte du binarisation des codes à barres, Albertelli, David Ii et Kung ont
décrit dans [26] un procédé particulier pour la binarisaton des codes-barres, en présence de
bruit. Similairement, dans [49] un groupe de chercheurs ont présenté une comparaison
entre différents algorithmes de binarisation d'image.

Alexander Tropf [3] propose une méthode pour localiser des codes à barres dans le
domaine DCT (Discrete Cosine Transform), avec une condition préalable stipule que le

24
code à barres doit occuper au moins 10 pour cent de l'image entière, mais la robustesse du
résultat n'est pas bonne.

Fan Yongfa utilise dans [13] une méthode en 3 étapes, y compris l'érosion de l'image, le
filtrage médian, et l'appariement de modèle. Cette méthode est facile à comprendre, mais il
est très gourmand en temps. Et dans [14], He et Fan ont calculé l'angle d'inclinaison à l'aide
des moments invariants.

Après avoir fait une vue d'ensemble des approches de localisation des codes à barres,
nous allons présenter dans le reste de cette partie les méthodes qui ont apporté une
contribution assurément précieuse dans ce problème.

1. Méthodes basées sur l’analyse multi-caractéristique des


sous-régions de l’image
Comme leur nom l‟indique, ces méthodes s‟articulent sur la segmentation des images en
sous-régions de même taille, et la sélection de l‟ensemble de sous-régions adjacentes qui ont
des propriétés similaires à celles des codes à barres.

Douglas Chai [2] a divisé l'image en sous petits blocs de 32-32 pixels, puis calcule
l'angle de chaque bloc. Les blocs avec les mêmes angles sont choisis pour former la zone du
code à barres.

Premièrement, après une étape de prétraitement comprenant la normalisation et la


conversion de l‟image couleur en une image en niveaux de gris, l'image d'entrée est divisée
en blocs non chevauchés de taille égale. La figure 10 montre deux blocs de taille 32×32
pixels de l'image d'entrée. Le bloc désigné X1 (a) représente une partie du code à barres,
tandis que le bloc désigné par X2 est une partie des textes autour le code à barres.

Figure 10 Deux échantillons de l'image d'entrée

Ensuite, chaque bloc sera l‟objet d‟une opération de binarisation à l‟aide de la technique
de seuillage d‟Otsu [7]. Le résultat de ce traitement sur les blocs X1 et X2 est illustré à la
figure suivante :

25
Figure 11 La représentation binaire des blocs X1 et X2.

Par la suite, l‟opération morphologique de squelettisation [40] est effectuée sur chaque
bloc de données binaires (la figure 15).

Figure 12 Les Blocs X1 et X2 après la squelettisation.

Après, chacun des composants connectés dans chaque bloc est extrait et étiqueté. Par
exemple, 5 régions connectées ont été identifiés dans le bloc X1, et 6 au bloc X2 :

Figure 13 (a) 5 composants connectés dans le bloc X1, et 6 composants connectés (b) dans le bloc X2.

Finalement, l'orientation de chaque région marquée au sein de chaque bloc est calculée
et comparée afin de tester la propriété du parallélisme des barres. L'orientation est mesurée
par l'angle entre l'axe des x et l'axe majeur de l'ellipse qui a le même second moment que la
région. Les angles de chacune des régions marquées pour les blocs de X1 et X2 sont donnés
dans le tableau 1. Si tous les angles dans chaque bloc ont des valeurs similaires, ce bloc est
considéré comme ayant une configuration de lignes parallèles, et l'orientation du motif de
ligne est définie par l'angle moyen.

26
Tableau 3 Orientation de chaque région marquée au sein de blocsX1 et X2. [2]

En se basant sur cette information, la région du code à barres peut être extraite à partir
de l‟image origine, comme illustré à la figure 5.

Figure 14 La région du code-barres segmenté.

L'algorithme de localisation est simple dans l‟idée, et permet de déterminer également


l'angle de rotation de l'image entière au moment de la localisation. Cependant, cette
méthode est bonne seulement pour les codes-barres d‟une seule dimension, il n'est pas
efficace pour certains autres cas.

2. Méthodes basées sur le calcul du gradient de l’image


Ces approches sont fondées sur la propriété des changements brusques d'intensité au
niveau de la région du code à barres.

Dans cette optique, Gallo et Manduchi ont présenté dans [42] un algorithme de
localisation, qui considère que l'image du code à barres est capturée avec un appareil orienté
de sorte que son axe vertical est sensiblement parallèle aux barres. Par conséquent, la région
du code à barres sera caractérisée par de forts gradients horizontaux et faibles gradients
verticaux.

Tout d‟abord ils calculent les dérivés horizontaux et verticaux Ix (n) et Iy (n) à chaque
pixel n, en les combinant de la manière suivante :

Ie(n)=| Ix (n)|-| Iy (n)|

27
Dans le but d‟obtenir l‟image lissée Is(n) du gradient de l‟image d‟entrée, Ie est
parcouru par un filtre médiane de taille 31*31. La taille du filtre a été choisie en fonction de
la gamme de la taille des images d'entrée et la taille minimale du code à barres lisible par la
méthode. Ensuite, Is(n) est binarisé avec un seuil unique, choisi selon la méthode proposée
par Otsu [7].

En conséquence du seuillage, la carte Is(n) peut contenir plus d'un bloc. Plutôt que de
calculer les composantes connexes de la carte seuillée, ils ont sélectionné le pixel n0 qui
maximise Is (n), sous l'hypothèse que le bloc contenant ce pixel est celui qui correspond au
code à barres.

Figure 15 Exemple de la localisation : (a) image originale (1152*864, JPEG compressé), (b) La carte lissée Is
(n) avec son maximum marquée par un carré noir, (c) binarisation par seuillage de Is (n), (d) Le segment
résultant (carré noir), avec la ligne de scan sélectionnée l(n), les points d'intersection iL et iR, et les points
d'extrémité OL et OR.

En dernier lieu, dans l'intention de déterminer les frontières du code à barres, les deux
lignes, verticale et horizontale, passantes par n0 sont dessinés et la zone du code-barres est
formée du rectangle dont les côtés sont parallèles aux axes de l'image et contenant les
intersections de ces lignes avec le bord du bloc. La ligne horizontale l(n) qui passe par le
centre de ce rectangle est choisi comme une ligne d‟analyse pour l‟étape de décodage.

En vue de détecter précisément les points d'extrémité OR et OL du code à barres, Gallo


et Manduchi ont d'abord déterminé les intersections IL et IR de la ligne de scan l (n) avec le
rectangle, puisque le rectangle étant plus grand que le code-barres actuel, ils procèdent vers
l'intérieur de chaque bout et ils s‟arrêtent lorsque ils trouvent une valeur qui est inférieure à
85% du moyenne de la luminance des points situées entre le point d'intersection et le pixel
courant:

∑ ( ) ∑ ( )
( ) Et ( )

28
Dans le même contexte, Shams Ramtin développe dans [10] une méthode de
localisation basée sur le calcul des directions de gradient de l‟image et la recherche des
blocs où la direction du gradient est cohérente.

Le traitement commence par l‟acquisition de l‟image, sa conversion en une image de


niveaux de gris et sa normalisation. Ensuite, la nature directionnelle de codes à barres 1D
est utilisé pour la localisation du code-barres par le calcul du gradient de l'image d'entrée et
la sélection des zones où la phase du gradient présente certaines caractéristiques
directionnelles.

L'amplitude et la phase du gradient de l‟image sont calculées en utilisant les masques de


Sobel :

[ ] , [ ] , ,

Où Sh et Sv, sont respectivement le masque horizontal et vertical de sobel, et et ,


le gradient horizontal et vertical.

De ce fait, l‟ampleur et la phase du gradient peuvent être exprimées par la


formule suivante :

, - √ , - , -

, -
, -
, -

, - , -

Où , - et , - sont respectivement les éléments de et de .

La région d‟intérêt est formée par le parcours de l'image avec un bloc de taille fixe et le
raccordement des blocs adjacents qui présentent un histogramme de gradient fortement
modale dans une certaine direction.

Similairement, WU Xin-sheng, QIAO Lian-zhi et DENG Jun ont exposé dans [43] une
autre méthode basée sur la division de l‟image en bandes et la sélection de la bande qui
contient le centre des contours de l‟image, qui va être à son tour l‟objet d‟un ensemble de
techniques de traitement d‟image visant à déterminer l‟orientation du code à barres.

Apres une étape d‟amélioration de la qualité de l'image par des techniques de traitement
d'images essayant d‟éliminer les effets néfastes sur l'image, tels que l‟éclairage non
uniforme, le flou, l'inclinaison de code à barres, le bruit, et ainsi de suite. Les images

29
capturées sous format RGB sont normalisées à une taille de 480*640 pixels et converties en
niveaux de gris.

Ensuite, le contour de l‟image est calculé en faisant appel à la technique du gradient de


sobel. Afin de faciliter le calcul et sur la base du fait que si une image de gris est divisé en
plusieurs bandes horizontales du même taille, il y aura au moins une bande contenant une
section parfaite du code à barres, l‟image de 480*640 pixels est divisée en seize bandes de
30*640 pixels.

Figure 16 Une bande horizontale de l'image après la division

Ultérieurement, le centre des contours de l‟image est calculé sous l'hypothèse qu‟il
correspond à un point du code-barres :

∑ ̅ ∑ ̅ ∑
( ) ( ) ( )

Où R représente les pixels de fixées dans l'image de contours détectés; A représente la


zone région qui est égal au nombre total de pixels égales à "1". Le point central calculé
( ̅ ̅) peut être considéré comme la position moyenne de pixels ayant une valeur "1".

En dernier ressort, la bande dans laquelle se situe le point central des contours de
l'image est présenté à un bloc de traitement visant à déterminer l‟angle des lignes du code-
barres (n‟est pas détaillé ici pour des raisons de concision). Si l'angle calculé est de 90
degrés, seule l'image de la bande de départ est nécessaire pour la localisation du code à
barres. Si l'angle n'est pas 90 degrés, le code à barres a un angle d'inclinaison et dans ce cas,
d‟autres bandes sont nécessaires pour la reconnaissance du code à barres.

Figure 17 Localiser le code-barres sur une bouteille

30
3. Méthodes basées sur les opérations morphologiques et
transformée de Hough
La transformation de Hough (HT) a été appliquée dans plusieurs problèmes de
segmentation telle que la détection des lignes et des formes régulières. Dans [6], Muniz,
Junco et Otero ont également appliqué la transformation de Hough à la localisation des
codes à barres. Après une opération de détection des contours, tous les pixels de bord non
nuls sont mappés au plan de Hough en utilisant l'équation d‟une droite.

L'idée de base de cette technique est de trouver des courbes qui peuvent être
paramétrées comme des lignes droites, des polynômes ou des cercles dans un espace des
paramètres appropriés. Bien que la transformation puisse être utilisée dans des dimensions
supérieures, l'utilisation principale est en deux dimensions pour trouver, par exemple, les
lignes droites, les centres des cercles avec un rayon fixe, paraboles, etc.

A titre d'exemple, considérons la détection de lignes droites dans une image. Pour être
en mesure de détecter les lignes verticales, l'équation de la droite est habituellement donnée
dans sa forme normale par :

( ) ( )

Où est sa distance algébrique de l'origine et l'angle de sa normale.

Si nous limitons à l‟intervalle [0,π], chaque ligne dans le plan correspond à un


point unique dans le plan .

Avec cette formulation, les points colinéaires allongés sur une ligne, sont représenté par
des courbes sinusoïdales qui se croisent au point ( ) dans l'espace de Hough, et par
conséquent les lignes dans le plan x-y sont les points les plus marquées dans le plan de
Hough.

Le problème de localisation des codes à barres devient donc un problème de détection


des lignes.

Muniz et. Al. [13] suppose que tous les barres du code à barres sont orientées
verticalement. Ainsi, le plan de Hough est examiné et la zone du code à barres est détectée
comme une région de lignes verticales. Le point faible de cette approche est qu‟elle est
gourmande en temps de calcul.

31
Dans [23] Janapriya, Kularatne, Pannipitiya, Gamakumara,
de Silva et Wickramarachchi ont proposé un processus en trois
étapes, d'abord la région du code à barres est localisée à partir
du fond encombré, en utilisant une combinaison d'opérateurs de
gradient et morphologie. Ensuite la région d'intérêt (ROI) est
extraite après l'application d‟une transformation en utilisant la
méthode de Hough pour la détection de l‟angle de rotation des
lignes du code à barres [6].

Le processus de localisation est basé sur les deux opérateurs


fondamentaux de la morphologie mathématique : l'érosion et la
dilatation, leur impact sur l‟image dépend du choix de
l‟élément structurant.

Dans cette approche, comme indiqué dans la figure


suivante, le contour de l'image est tout d'abord déterminé à
partir de l‟image d'origine. Puis, la dilatation est appliquée en
prenant comme élément structurant une ligne en quatre angles
différents, 0o, 45o, 90o et 135o.

Considérant la différence de deux images dilatées dont les


éléments structurants ayant un décalage angulaire de 90o, deux
Figure 18 processus de
images peuvent être prises à l'étape suivante. À partir de ces
localisation du code-barres
deux images une peut être sélectionnée, qui a la réponse la plus
élevée.

Ensuite, la dilatation et l'érosion sont appliquées à cette image sélectionnée à l'aide des
éléments structurants respectifs. À partir cette image, le bloc qui correspond à la zone code
à barres est sélectionné.

Figure 19 Localisation du code à barres

Après, la région donnée par le localisateur de code à barres se transforme en plan de


Hough. Maintenant, tous les lignes candidats possibles dans la région de code à barres sont
converties en points ayant thêta et un rho correspondante.
32
Ces points sont extraits par seuillage de l'image transformée
en prenant un seuil approprié. A partir de points extraits, un
angle est sélectionné qui a la portée maximale.

Après la détection de l'orientation, l'ensemble de l'image est


mis en rotation en sens inverse par l'angle déterminé ci-dessus.
Si nécessaire, d'autres transformations telles que mise à l'échelle
sont appliquées à l'image.

Figure 20 Transformation du code à barres

Figure 21 Transformation du
code-barres

4. Méthodes basées sur des filtres de détection des lignes


particuliers
Kulyukin et Kutiyanawala ont fondé leur approche de
localisation des codes à barres sur le fait qu‟un code à barres
n‟est rien d‟autre qu‟une région homogène composée des lignes
alternatives, en essayant de détecter ces lignes avec la mise en
place d‟un filtre inspiré du celui utilisé dans [45].

Apres l‟utilisation du filtre de Gabor dans ses travaux


précédents [16] pour la détection des lignes, ils ont implémenté
dans [38] un filtre de détection de lignes, inspiré du celui
présenté dans [45], beaucoup plus efficace et étendu à une
matrice de 13*3 avec la diminution des coefficients le long de
l'axe des y pour le rendre moins sensible au bruit dans l'image. Étant donné une matrice
m*n, ce filtre peut être généré comme suit:
Figure 22 Filtre de détection
des lignes.
( | |)
, -, -
| |) | |)
{ ( (

33
Tel que :

Etant donné que les lignes du codes à barres passent à travers ce filtre avec des lignes
verticaux produites par d'autres graphiques et du texte qui peuvent être présents dans
l'image, l‟image est filtré par un autre filtre 2*1 afin d‟éliminer ces lignes et d'isoler les
zones qui ont une continuité verticale.

Figure 23 Localisation du code à barres par le filtre de détection des lignes

5. Méthodes basées sur la transformée en ondelettes et les


opérations morphologiques

La transformée en ondelettes (TO) décompose le signal d'entrée sur une série de


fonctions ou sous-bandes d'ondelettes qui dérivent d'une fonction mère donnée par des
opérations de dilatation et de translation. Les coefficients d'ondelette résultant contiennent
des informations concernant le signal étudié à différentes échelles. Le principal avantage de
la TO par rapport à la transformée de Fourier est la localisation dans le domaine temps-
échelle.

Avec la transformée en ondelettes, une image est décomposable en quatre parties


distinctes (Fig. 24), chacune de ces sous images contient une partie de l'information de
l'image de départ. Les blocs LH, HL et HH contiennent tous des détails de l'image, ou
informations hautes fréquences. L'image est analysée dans différentes directions, les détails
horizontaux sont contenus dans LH, les détails verticaux dans HL et les détails diagonaux
dans HH. Le bloc LL contient une image de plus basse résolution (4 fois moins de pixels
que l'image initiale) dont les détails dans différentes directions ont été soustrait (principe de
la multi résolution).

34
L'observation de la figure suivante, permet d'illustrer les transformations subies par
l'image lors de l'application de la transformée en ondelettes.

Figure 24 la transformée en ondelettes d’une mage

Pour obtenir la prochaine échelle des coefficients d'ondelettes plus grossière, la sous-
bande LL1 peut être décomposée pour obtenir quatre autres sous-bandes à l'échelle plus
grossière (un sous-bande basse fréquence LL2 et trois sous-bandes de haute fréquence LH2,
HL2 et HH2 comme indiquées à la figure 25 (b).

(a) une décomposition de niveau 1 (b) une décomposition de niveau 2


Figure 25 Les 2 premiers niveaux d'une décomposition pyramidale en ondelettes

De l'agencement de coefficients d'ondelettes de l'image, à la même région spatiale de


l'image, chaque coefficient à une échelle grossière correspond à quatre coefficients voisins à
l'échelle plus fine suivante (voir Fig. 26). La structure de données pyramide construite à
partir des correspondants à haute fréquence des coefficients est normalement appelé un
arbre pyramides.

Figure 26 La structure pyramidale de l'image en ondelettes.

35
En résumé, la transformée en ondelettes peut fournir une représentation multi résolution
compacte de l'image, et les sous-bandes d'ondelettes espacées dans les hautes fréquences ont
une forte compétence de sélection directionnelle.

Une multitude de méthodes de localisation du code à barres par la transformation en


ondelettes ont été proposées dans la littérature, On peut citer notamment la méthode de
Wang et Zou [33], qui se fonde sur le fait que la région de code à barres doit être dominée
par des textures verticales, en essayant de déterminer dans les différentes sous-bandes de
l'image en ondelettes la région où les coefficients de sous-bandes HL sont beaucoup plus
grande que celle des sous-bandes LH ou sous-bandes HH (voir Fig. 27).

(a) L’image originale du code-barres (b) la décomposition de l’image sur 3 niveaux

Figure 27 L'image en ondelettes d'une image de code à barres après la décomposition en ondelettes sur 3-
niveau

Similairement, Oktem propose dans [55, 56] une solution moins complexe, l'image
originale est mise en correspondance d'ondelettes en utilisant la technique de transformée en
ondelettes de sorte que les caractéristiques verticales, horizontales et diagonales sont
obtenues.

6. Méthodes de localisation des codes à barres dans des


scènes complexes
Dans [5], Chunhui propose une méthode pour localiser automatiquement le code à
barres dans des scènes complexes. Tout d'abord, l'image est réduite dans la résolution, puis
l'analyse à base de région est appliquée pour localiser le code à barres. Après cela, l'image
originale est utilisée pour extraire le code à barres.

La première étape est l'estimation de l'orientation principale de l‟image à partir des


directions des contours.

La deuxième étape est la localisation du code à barres à l‟aide d‟un calcul précis de
l‟orientation et une projection de code à barres le long de l'axe des x et l'axe de code
respectivement (Fig. 28).

36
Figure 28: Le Framework de localisation du code à barres [5]

III. Processus de décodage


Dans cette description de l'état de l'art de la deuxième partie et vu le grand nombre de
méthodes appliquées à la reconnaissance du code à barres, la citation de la totalité des
approches et des méthodes ne peut être complète. Nous nous sommes donc intéressés à
décrire les grandes méthodes classiques et les approches qui ont apporté une vraie
originalité et une avancée sensible dans le domaine. Dans la première section, nous
commencerons par un résumé de l‟ensemble des algorithmes et méthodes liés au
reconnaissance et décodage des codes à barres ainsi que les résultats qui ont été publiés.
Dans la deuxième partie, nous nous focaliserons sur les méthodes les plus populaires dans
ce champ.

Avec le téléphone mobile, et surtout les Smartphones, chaque usager a en main un


lecteur de code-barres potentiel. Cependant ces terminaux n'ont pas été conçus pour cette
fonction, d'où la nécessité des algorithmes adaptés aux capacités limitées des téléphones.

Une partie des chercheurs se sont concentrés sur l'amélioration de la robustesse de la


lecture aux perturbations causé par le bruit, l‟éclairage non uniforme et les distorsions [18,
19], d‟autres visent la rapidité du traitement [20, 21].

Dans l‟étape de décodage des informations de code à barres, la résolution a un rôle clé
dans cette étape. Certains chercheurs ont supposé que la qualité et la résolution du code à
barres sont suffisamment élevées dans [28, 74, 6]. D‟autres ont utilisé des techniques de
super résolution pour obtenir des codes à barres de haute qualité à partir des images de
basse résolution [79, 47].

La majorité des méthodes de décodage des codes-barres se fondent sur le calcul des
largeurs des barres et espaces du code à barres. Ces largeurs peuvent être calculées par une
opération de binarisation globale ou local [6], cependant, sur la base des implémentations de

37
ces méthodes qu‟on a faites sous Matlab, on peut dire que ces méthodes sont limitées face
aux images dont l‟éclairage est non uniforme. Aussi, elles peuvent être déterminées par le
calcul des passages par 0 de la dérivée seconde de la forme en ondelettes du code-barres.

Joseph et Pavlidis [82, 28] présentent un algorithme qui se base sur le calcul des
emplacements des pics de la forme en ondelettes du code à barres.

D‟autres recherches ont adopté des techniques basées sur la déconvolution aveugle de la
forme en ondelettes de la ligne d‟analyse du code-barres souvent bruitée et la forme précise
du noyau de convolution du bruit est inconnue. Dans cette optique, Esedoglu [82] présente
une méthode pour la déconvolution de signaux de codes à barres en minimisant la variation
totale, le flou est modélisé avec un noyau gaussien, et un algorithme itératif ajuste les
paramètres du noyau flou. Une mise en œuvre de cette approche par Wittman [50] traite
chaque image en six minutes dans MatLab sur un Celeron à 2,4 GHz fréquence d'horloge,
ce qui indique que cette méthode n'est pas directement utilisable pour une application
interactive mobile.

Oktem a donné dans [47] une définition mathématique d'un code à barres et un
algorithme itératif pour la reconnaissance de codes à barres. Toutefois, les barres ne sont
souvent pas reconnaissables en raison de flou, et dans [46] une manière générale de
reconnaissance des codes barre est montré.

Les réseaux de neurones sont également utilisés pour le décodage dans [74, 72].
Cependant, la performance de ces méthodes dépend fortement de la qualité de l'image.

Dans notre étude nous allons diviser ces travaux en deux catégories principaux, la
première catégorie rassemble les approches basées sur les largeurs des barres, et l‟autre
englobe les recherches qui ont suivi le chemin de la déconvolution de la forme en ondelettes
des codes à barres.

1. Méthodes basées sur le calcul des largeurs des barres


a. Réseaux Bayésiennes
Les réseaux bayésiens sont des modèles probabilistes graphiques permettant d‟acquérir,
de capitaliser et d‟exploiter des connaissances, ce sont les successeurs et héritiers naturels
des approches symboliques, connexionnistes et statistiques de l‟intelligence artificielle et du
DataMining, ils sont utilisés dans de nombreuses applications d‟apprentissage et de
reconnaissance.

Dans le cadre de la reconnaissance des codes à barres, Tekin et Coughlan [3] ont
proposé un modèle bayésien pour la lecture de code à barres, qui combine une connaissance
préalable de la géométrie des codes à barres et les emplacements des contours des barres, et
également renforcée par l'exploitation de l'information de contrôle intégrée dans le code à

38
barres, ce qui limite les valeurs des chiffres codés et permet de détecter et de corriger les
erreurs.

En premier lieu, ils ont décrit un modèle pour une seule ligne d‟analyse S, traversant le
code à barres de gauche à droite, et après ils ont l„étendu aux plusieurs lignes d‟analyses.
Chaque ligne est définit par les intensités des pixels appartenant à cette ligne I(x).

Les maximums et minimums locaux de la dérivée de l‟intensité e(x) = dI/dx définissent


les emplacements des contours dans la ligne d‟analyse, la première et la dernière pointe sont
utilisées pour estimer la largeur d‟une unité Δ blanc ou noir du code à barres, et la séquence
X=(x1, x2,…, xN) désigne l‟emplacement de tous les contours du code à barres (N = 60),
qui peuvent être des contours fixes (voir la figure suivante) ou bien des contours
variables Xv de sorte que X = ( , ). Les chiffres inconnus sont désignés par la séquence
D = (d1, d2,…, d12) tel que di {0,1, . . . ,9.

Figure 29 les contours fixes des codes à barres représenté par les lignes rouges en pointillées.
Les étiquettes en bas désignent les régions de Garde et les 12 régions des chiffres compris entre les
contours fixes.

Le modèle de base, P (X, D | S), peut être décrit comme un graphe facteur (un type
particulier de modèle graphique, utilisé dans les applications d'inférence bayésienne, il
permet le calcul efficace des distributions marginales, voir Fig.30) de la forme suivante :

( ) ( )
( | )

Avec L(X, S) est le terme de vraisemblance qui récompense les emplacements des
contours se trouvant sur des parties de fort gradient de la ligne d‟analyse et G(X, D) est le
terme géométrique qui applique les relations spatiales entre les différents contours étant
donné la séquence des chiffres.

39
Figure 30 Graphe facteur utilisé dans le modèle 1 et 2. Les variables sont représentés par des cercles et les
facteurs (interactions entre les variables) par des boîtes. Les facteurs appliquant des contraintes
géométriques sont dessinés en rouge et les facteurs incorporant des informations des contours des lignes
d’analyse sont dessinés en vert.

D'abord, la probabilité L(X, S) est définit comme suit:

( ) ∑ ( )

Et peut-être décrit par deux termes, un contenant les bords fixes et l‟autre les bords
variables : L (X, S) = Lf (Xf, S) + Lv (Xv, S), elle impose la contrainte de polarité du contour
xi, en effet, chaque contour doit respecter la polarité (-1) i. Pour déterminer la forme précise
de Li, Tekin et Coughlan ont extraie les bords du codes à barres Y = (y1, y2, ... yM)
représentés par les minimums et maximums locaux de e(x), en effet cette séquence définit
l'ensemble des contours possibles, c‟est-à-dire les valeurs autorisées du xi (M ≥ N, signifie
que nous avons observé au moins autant d'arêtes que nécessaire dans le code-barres),
ensuite ils ont défini les éléments de preuve pour chaque contour comme ( )
| ( )| ( ( )( ) ) , qui impose la nécessité de xi d'avoir la bonne polarité. En dernier
lieu, ils ont décrit le terme géométrie G (X, D) par la formule suivante:

( ) ( ) ( )

Le premier terme, Gf ( ), renforce l'espacement approprié entre les bords fixes, par
exemple, nous nous attendons à ce que x2-x1 ≈ Δ. Cette distance de séparation attendue est
exprimée par le terme quadratique suivant :

( ) ( ) ( )

Où H (x) est une fonction qui est égal à un pour les valeurs positives de x et ∞ sinon, ce
qui assure le fait que les bords consécutifs sont classés de gauche à droite au lieu de droite à
gauche et βf est une constante positive.

40
En outre, étant donné que chaque région d‟un chiffre englobe une largeur de 7Δ, nous
appliquons cette propriété avec le terme suivant:

( ) ( ) ( )

Pour le premier chiffre, et similairement pour les autres chiffres.

Le second terme, ( ) renforce les espacements appropriés entre les bords


variables qui encodent les valeurs des chiffres. Chaque valeur du chiffre (0-9) correspond à
une séquence de quatre largeurs: (3, 2, 1, 1), (2, 2, 2, 1), (2, 1, 2, 2), (1, 4, 1, 1), (1, 1, 3, 2),
(1, 2, 3, 1), (1, 1, 1, 4), (1, 3, 1, 2), (1, 2, 1, 3), (3, 1, 1, 2).

Ces espacements sont imposé par des fonctions d'énergie telle que :

( ) ( ( )) ( )

Où ( ) est la première largeur correspondant au chiffre d1 (et βv est une constante


positive).

b. Méthode basée sur des probabilités a priori

Janapriya et al ont proposé dans [2] une méthode de décodage, appuyé sur des
probabilités a priori et se compose en deux parties, la première partie concerne la génération
de la forme en ondelettes du code-barres et le calcul des largeurs des différentes
combinaisons barre-barre, tandis que la deuxième partie vise à récupérer les valeurs des
différentes chiffres du code-barres en se basant sur les largeurs normalisé déterminées
précédemment et sur des probabilités a priori affectées aux différentes combinaisons barre-
barre possibles pour chaque largeur normalisée.

c. Méthode basée sur des modèles déformables

La technique présentée dans [42] par Gallo et Manduchi repose sur la comparaison des
modèles des douze chiffres du code-barres avec l‟ensemble des modèles déformables des
différentes classes de la norme EAN-13.

Premièrement, après le positionnement des points d'extrémité du code-barres dans la


partie de la localisation, la position spatiale de chaque chiffre du code-barres peut être
déterminée. Ensuite, pour chaque chiffre des douze chiffres du code-barres, le segment du
vecteur d'intensité correspondant est comparé avec les modèles binaires Mi de l‟alphabet de
la norme EAN-13 :

41
Figure 31 les modèles de classes de l’alphabet de la norme EAN-13.

Afin de tenir compte de l'inexactitude de la localisation de l'étendue spatiale de chaque


de chiffre, ces modèles sont susceptibles de se déplacer et s‟évoluer dans la direction
horizontale.

Figure 32 Un échantillon de profil d'intensité dans une ligne de balayage (ligne bleue).

La stratégie de décodage consiste à rechercher le modèle décalé et mise à l'échelle qui


explique le mieux le segment d‟intensité de chaque chiffre.

d. Méthode de Clustring : K-means.


Dans [61], Wang et al ont proposé un système statistique de reconnaissance des codes à
barres englobant deux étapes principaux : une étape d‟apprentissage hors ligne et une autre
en ligne.

42
La première étape d‟apprentissage hors ligne cherche à déterminer les vecteurs de
référence des classes et une matrice permettant de calculer le vecteur caractéristique de
chaque chiffre de la ligne d‟analyse.

Figure 33: Système de décodage des codes à barres

Dans le bloc de reconnaissance en ligne il y a 12 vecteurs d‟entrées, correspondant aux


12 caractères , i=1, 2, …, 12. Chaque vecteur d‟entrées passe par trois étapes,
prétraitement, extraction des caractéristiques et classification, puis une étape de post-
traitement.

Figure 34: structure de processus de reconnaissance

Les modèles d‟entrée ne peuvent pas être utilisés directement dans l‟extraction des
caractéristiques et la reconnaissance car la langueur des vecteurs d‟entrée n‟est pas
constante, par conséquent une normalisation est nécessaire. Ensuite, les caractéristiques x
sont extraits à partir de la vecteur d‟entrée y et une matrice Ψ (obtenu dans la phase
d‟apprentissage hors ligne par la méthode GLVQ (generalized Learning vector
quantization) :

43
Le classifieur utilisé est basé sur la distance entre le vecteur d'entrée normalisé et les
vecteurs de référence des classes de la norme EAN-13:

( ) * | +Tel que ( ) ( ) ( ) ( )

Avec est le k ème vecteur de référence de la jème classe.

Le résultat de la reconnaissance est la combinaison respectant les contraintes de la


norme qui a la plus petite distance additionné.

e. Méthodes de décodage simple sur la base des largeurs des


barres et espaces :
Le problème de reconnaissance des codes-barres est formulé en un problème de
classification, en mettant en place une fonction de probabilité comme critère de
classification.

Dans ce contexte, Wachenfeld, Terlunen et Jiang [4,84] ont présenté une approche basée
sur la génération des classes de l‟alphabet des codes EAN-13 à partir des largeurs des barres
et espaces et la recherche de la classe la plus similaire à chaque chiffre du code-barres.

Au préalable, après une étape de binarisation adaptative de la ligne d‟analyse en


fonction des minimums et maximums locaux(voir la figure ci-dessous), suivi d‟une étape de
détection des extrémités du code-barres basé sur le calcul des barres et espaces détectés à
partir du centre du code barre en prenant en considération que le nombres des barres et
espaces dans un code-barres EAN-13 est 59.Ensuite, Wachenfeld et son équipe ont calculé
pour chaque classe ck (l‟ensemble des représentations graphiques permettant de coder un
4
chiffre du code-barres) un modèle rk basé sur les largeurs des barres et espaces du
codes-barres .

Par la suite, l‟ensemble des chiffres s du code à barres sont ensuite présentés à un
classificateur fondé sur la distance quadratique d(rk, rs) entre le modèle rk correspondant au
classe ck et le modèle rs correspondant au chiffre s, ce classificateur attribue des valeurs de
similarité normalisées p(ck, s) entre le chiffre s et chaque classes ck :
( ) ( )
( ) Où ( )
∑ ( ) ( ( ))

En dernier ressort, sur la base du fait que les probabilités de similarités des chiffres s
sont indépendants les uns des autres, la probabilité d‟une hypothèse ( ( ) ( )
) est :

( ) ( ) ( ) ( ) () ()
( | ) ∏ ( | )

44
Figure 35 Calcul du seuil dynamique pour la binarisation.

Pareillement, Kutiyanawala, Kulyukin et Nicholson [36] ont présenté un algorithme de


décodage se compose de trois procédures principales : la génération des bandes, le
traitement et décodage des bandes.

Apres l‟extraction de la ligne d‟analyse, qui incorpore les largeurs des barres, dans la
première, la deuxième étape vise à converti cette ligne en un vecteur qui représente chaque
unité des barres par un seul pixel, cette conversion est réalisée au moyen des trois méthodes
suivantes : une méthode basée sur la luminance LM de la ligne d‟analyse, une méthode basé
sur les informations binaire de la ligne d‟analyse obtenues après une étape de binarisation
adaptative, et la dernière est une combinaison entre les deux.

En fin de compte, le vecteur obtenu est converti en une représentation des largeurs W=
{ ,…, ,…, }, par exemple , Pour illustrer ce qui vient d'être dit, si le vecteur est
S={255 ,0,0,0,255,0,0,…} la ligne des largeurs W={1,3,1,2,…} avec C={1,0,1,0,…}, et par
une simple indexation dans un tableau qui contient les largeurs des dix chiffres chaque
chiffre du code-barres, représenté par quatre largeurs, peut être décoder facilement, dans
notre exemple le chiffre associé à W1={1,3,1,2} est : 7.

De la même façon, Liyanage a présenté dans [62] un algorithme basé sur la ligne
d‟analyse et la détection des contours pour localiser les bords des barres, renforcé par
l‟utilisation d‟un ensemble de lignes, en combinant les résultats de ces lignes d'une manière
à compenser les distorsions et le bruit.

45
Cet algorithme fonctionne en quatre étapes, primitivement, les barres noires et blanches
alternées dans l'image doivent être identifiés en utilisant la détection des contours (Sobel),
ensuite, les largeurs des barres sont calculées, et en dernier ressort les chiffres peuvent être
décodés à l‟aide de l‟algorithme suivant:

 Trier les largeurs des barres en ordre croissant, , -


 Calculer une nouvelle liste Z,
( )
, -
 Calculer une nouvelle liste AvgW, tel que
( )
, -
 Trier la liste AvgW en prenant Z comme clés pour la trier dans l‟ordre décroissant.
 Finalement, considérer les trois premiers éléments de la liste AvgW comme seuil globale pour
classer les largeurs des barres de telle sort que :
 For each width w in W
If ( ) Then elseif ( ) then
elseif ( ) then else End

D‟un autre côté, Jeffrey Adair [35] a converti l‟image après la localisation en un vecteur
des niveaux de gris en utilisant une variation de la transformation de Hough classique pour
trouver les lignes.

Figure 36 L'espace des paramètres de Hough

Par la suite, ce vecteur représenté par une forme en ondelettes est décodé en extrayant
les largeurs des barres et espaces par le calcul des passages par zéro de la dérivée seconde
de la forme en ondelettes, et en fin de compte, chaque caractère est caractérisé par les deux
valeurs suivantes : T1=W0+W1 et T2=W1+W2, où W0, W1, W2 sont respectivement les
trois premier largeurs des barres/espaces représentant ce caractère.

Par ailleurs, dans l'intention de calculer les largeurs des barres, Chai et Hock [5] ont
utilisé tout simplement une opération de binarisation en prenant comme seuil la moyenne
des intensités de la ligne de scan.

46
Figure 37 line à travers les barres

Figure 38 line à travers les barres

En outre, dans l'intention de reconnaitre les codes-barres dans des images fortement
bruitées à basse résolution(Fig.41), Shams et Sadeghi [10] ont proposé un algorithme de
reconnaissance qui convertit en premier lieu le segment d'image du code-barres en une
séquence discrète d‟une seule dimension et crée un ensemble de vecteurs caractéristiques
* + pour chaque chiffre Ck de la ligne d‟analyse, en se basant sur les
emplacements des contours des barres et un ensemble d‟opérations de binarisaton
adaptatives (ne sont pas détaillé ici pour des raisons de concision).

Figure 39 Une image à faible résolution d’un code à barres très déformée et bruitées et La séquence
d'intensité d'une ligne sélectionnée de cette image

En dernier lieu, le problème de décodage peut être défini comme la recherche d'un
symbole idéal d‟un chiffre, dont le vecteur des caractéristiques ̂ satisfait.

‖ ̂‖ , -

47
Certes, cette méthode permet de reconnaitre les codes à barres dans des mauvaises
conditions, en termes de résolution, d‟éclairage et de bruit. Cependant, elle est très
gourmande en temps, ce qui implique qu‟elle est inutilisable pour les applications mobile en
temps réel où les capacités des processeurs et mémoires sont limitées.

f. Méthodes de restauration et amélioration du code-barres :


La restauration des images est un processus qui tente de reconstruire une image qui a été
dégradée par le bruit. Cette restauration est dite aveugle lorsque la fonction de dégradation
est inconnue. Dans le but d‟améliorer la qualité des images et de reconnaitre les codes-
barres 1D, Zamberletti et al [63] ont proposé une méthode de restauration basée sur les
réseaux de neurones, permettant d‟augmenter la performance de l‟open source Zxing
développé par Google (une version modifié de l‟algorithme développé par adelman et al
[72,73]) :

Nécessaire: sélectionner un ensemble de lignes H à décodé


Nécessaire: sélectionner un nombre de rotation R à appliquer sur l'image d'entrée.
Pour r R faire
Pour y H faire
Sélectionner l‟image de la ligne
Convertir de RGB en niveau des gris
Appliquer a un filtre stimuler-haute (Gonsalez et Woods, 2001) avec un
filtre [-1 4 -1].
Appliquer un seuillage adaptatif sur
Si decode( ) est réussi faire
Break;
End if
End pour
End pour

Le réseau de neurones utilisé dans cette approche se base sur le modèle du perceptron
multicouche et comporte cinq neurones d‟entrées, cinq neurones de sortie et trois couches
cachées ayant deux neurones dans chaque couche.

Avec la contribution de Zamberletti et al, l‟algorithme décrit précédemment est plus


puissant, en remplaçant les lignes 5 et 6, respectivement par un processus de restauration et
d‟une autre technique de binarisation basée sur un seuillage adaptatif.

48
2. Méthodes basées sur la déconvolution du signal
d’intensité d’une ligne d’analyse du code-barres
D‟un autre côté, Todd Wittman [50] a essayé de modéliser le signal d‟intensité d‟une
ligne d‟analyse du code-barres u0 par la formule suivante: où n est le
bruit et est une gaussienne de l'amplitude a et de largeur w, dans le but de récupérer le
signal idéal u du code à barres par la minimisation de la variation totale (TV) de l'énergie :

, | - ∫| | ∫| |

Le premier terme mesure la fidélité ou la «vérité» de la fonction bruité et floue de u. Le


second terme surveille la variation totale du signal reconstruit „u‟. Le paramètre „a‟ varie
entre les deux termes et doit être réglé d‟une manière expérimentale.

Figure 40: récupération du signal idéal u (recouvert par une ligne pointillée) à partir du signal
floue et bruitée u0par la minimisation de la variation totale d’énergie.

Bien qu'il soit malheureusement aussi trop lent pour être pratique, cette approche est
prometteuse et pourrait se révéler utile pour les applications dans lesquelles le signal a des
niveaux élevés de flou et la vitesse n'est pas un facteur important. Pour nos besoins, le code-
barres doit être reconnu en temps réel.

De même, Yahyanejad et Strom [83] ont présenté une approche de décodage basée sur
la modélisation de l‟image d‟entrée B, par un noyau K représentant l‟effet du floue :

( ) ∑∑ ( ) ( )

La modélisation est suivie d‟une étape de conversion de l'image bidimensionnelle en un


vecteur unidimensionnelle en prenant la moyenne des colonnes:

49
( ) ∑ ( )

Ce qui permet de réduire le bruit et la complexité, et par conséquent, le noyau


deviendra également en fonction d‟une seule dimension et peut être déterminé selon leur
approche à partir de l‟histogramme de l‟image du code barre :

( ) ∑ ( )

Et en fin de compte, le code à barres est récupéré en utilisant l‟algorithme de


déconvolution de Wiener:

̂ ( )

Figure 41 l’effet du floue sur les codes-barres

Figure 42 Le traitement effectué par l’algorithme de Yahyanejad et Strom pour acquérir le code barre
d'origine

50
IV. Applications Existantes
À la fin des années 90, la reconnaissance des codes à barres par les techniques de
traitement d‟image connaît un grand essor avec la révolution des téléphones et le
développement de nouvelles approches et de nouveaux algorithmes, permettant ainsi de
passer du domaine de la recherche à la commercialisation.

Nous présentons dans ce qui suit un échantillon des différentes applications


commerciaux existantes sur le marché :

 Zxing : est une bibliothèque de traitement d‟image open-source et multi-format pour


(1D et 2D) code-barres, développer en JAVA. Elle contient également des modules
supplémentaires pour C/C++, C#, etc.

 ShopSavvy : est un assistant de shopping développé pour la plate-forme Android de


Google téléphone mobile. Utilise la bibliothèque Zxing pour décoder les codes à
barres. A une reconnaissance rapide et possède un taux de réussite élevé. Utilisé
comme un support en ligne pour comparer les prix et les caractéristiques des
produits.

 PDAbar library : Logiciel pour la lecture des codes à barres pour les PDA, il
reconnait plusieurs types de code à barres y compris EAN-13 et Code39, il a été
disponible depuis 2005. Il supporte les plate- forme suivantes Android, PocketPC,
Windows Mobile, Symbian et plus récemment (Java). Ce décodeur nécessite un
appareil photo avec autocorrection ou d‟une macro pour réduire le flou de l‟image.

 ItemShelf : est une application open-source pour iPhone qui reconnait les codes à
barres par une caméra intégré. Il utilise la bibliothèque ZBar développé par
Brown(2009). Cette application utilise le Web Service d‟Amazon pour reconnaitre
les produits.

 ZBar : est une suite de logiciels open source pour la lecture des codes à barres à
partir de sources diverses, telles que le flux vidéo, les fichiers image et les capteurs
d'intensité. Il supporte de nombreux types de symbologies les plus répandues (des
codes à barres), y compris EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, 2
parmi 5 entrelacé et QR Code.

 Prixing: un lecteur de code-barres permettant de fournir les informations clé des


produits scannés : descriptif, composition, additifs alimentaires, photos, avis
consommateurs, comparaison de prix avec d‟autres produits.

51
V. Conclusion :
Ce chapitre nous a permis de tirer un certain nombre d‟enseignements du
processus de reconnaissance des codes à barres. En effet, après le développement de la
totalité du problème, nous avons présenté les principales techniques proposées à ce jour
au niveau de la localisation des code-barres , ensuite nous avons exposé les deux grandes
approches de décodage des codes-barres à savoir, les méthodes basées sur les largeurs des
barres et les approches fondées sur la déconvolution de la forme en ondelettes des code-
barres, et finalement on a terminé ce chapitre par un échantillon des principaux applications
commerciaux existants dans le marché.

52
 Chapitre 3:

Méthode proposée
Dans ce chapitre nous
présentons notre approche
de reconnaissance des
codes-barres et nos
contributions au processus
de localisation et décodage
des codes-barres.

53
I. Introduction
Les codes à barres sont très populaires et se voient sur presque tous les produits de
consommation, et fournissent un outil fiable et rapide pour la saisie et le stockage dans un
système informatique. De cette manière, la description des prix et de produits peuvent être
obtenus très rapidement.

Traditionnellement, un lecteur de code à barres laser est utilisé pour lire le code
embarqué. Cependant, récemment, des systèmes de lecture de codes à barres à base de
traitement d'image intégrés dans les Smartphones mobiles ont commencé à prendre de
l'importance avec la révolution des téléphones mobiles, puisqu‟ils permettent de localiser et
de reconnaitre le code à barres et de donner en même temps plus d'informations sur les
produits, telles que le prix, la description du produit et la comparaison de prix entre
différents produits.

Dans ce travail nous proposons une approche de localisation et reconnaissance de codes-


barres en se focalisant sur les codes-barres unidimensionnels et plus particulièrement la
norme EAN13 (le système peut être généralisé pour l‟ensemble des codes-barres d‟une
seule dimension, puisqu‟ils ont le même concept de traitement, ils se différentient seulement
dans la symbologie est les algorithmes de codage).

Le schéma fonctionnel de ce système est illustré en vue d‟ensemble à la figure suivante :

8480010092271

Décodage

Localisation

Prétraitement

Figure 43 le lecteur de codes-barres visuel dans toute sa simplicité.

54
L‟image capturée par la caméra est traitée par le système, et en fin du traitement,
l'interprétation du code à barres dans l'image est présentée comme une chaîne de chiffres
lisibles par l‟ordinateur ou le téléphone. En vue d‟accroitre la performance du système nous
avons le divisé en deux parties principales. La première partie est la localisation du code à
barres et la seconde partie est le décodage de l'information noyée dans le code à barres.

Dans l‟étape de localisation on va présenter notre première contribution dans ce thème


de recherche, en présentant une méthode de localisation inspirée de l‟approche présentée
l‟année dernière par Gallo et Manduchi [42]. En fait, cette approche stipule que le code-
barres doit être orienté précédemment de telle façon que les barres doivent être parallèles à
l‟axe des y et présente des limitations dans certaines situations complexes, par exemple, le
cas où le code-barres est entouré par des textures ou bien des écritures. Par contre, notre
méthode présente une robustesse et une meilleure performance et ne fait aucune condition
sur l‟orientation du code-barres et permet en plus de détecter l‟orientation du code-barres.

Au niveau du décodage, vu l‟inutilité des approches de décodages basés sur la


déconvolution de la forme en ondelettes du code-barres pour les applications mobiles dont
les capacités en terme de processeurs et mémoires sont limités, notre approche est basée sur
le calcul des largeurs des barres et espaces en se basant sur une ligne extraite du code-
barres, en fait, notre approche s‟inspire de l‟approche [4] présenté en 2008 par Wachenfeld,
Terlunen et Jiang.

II. Prétraitement
Tout d‟abord, après l‟acquisition de l‟image couleur par la camera et dans l‟intention de
réduire le temps de traitement, les grandes images sont sous-échantillonnées en une image
de taille 600*480.

Comme cette application a pour but de trouver et de décoder des codes à barres, où le
contraste et la forme sont les caractéristiques les plus importantes, toutes les informations
utiles dans l'image sont présentes dans une représentation en niveaux de gris. Par suite,
l‟image couleur est convertie en une image de niveaux de gris en gardant toutes les
informations intéressantes de l‟image dans l‟intensité.

Habituellement, dans les images couleurs, l‟espace des couleurs est représenté par trois
rayonnements monochromatiques de couleurs : le rouge, le vert et le bleu, et chaque image
est représentée par trois composantes de couleurs où chaque composante est stockée dans
une matrice de deux dimensions. L‟image résultante est alors organisée comme une matrice
de deux dimensions, où la valeur de chaque point est égal à : Y (i, j) = 0.3R + 0.59G +
0.11B, où R, G et B sont respectivement les composantes rouge, vert et bleu de la couleur
de l'image.

55
Figure 44 Conversion de l’image d’entrée en niveaux de gris

III. Localisation des codes à barres


Apres la première étape de prétraitement de l‟image d„entrée, une image normalisée en
niveaux de gris contenant un code-barres est présentée à l‟étape de localisation du code à
barre dans l‟intention de localiser et d‟extraire la représentation graphique du code-barres.
Le problème de la localisation du code à barres peut être considéré comme un problème de
segmentation, où une zone d'intérêt particulière doit être extraite.

La direction du code à barres n'est pas connue dans la plupart des cas, donc le système
doit être en mesure de localiser la zone du code à barres dans n'importe quelle orientation.
Ainsi, pour être en mesure de déterminer où est le code à barres dans une image, il faut
premièrement préciser ce qui est un code à barres et ce qui est spécial dans sa représentation
graphique. En effet, les codes à barres linéaires sont constitués de barres foncées et des
espaces lumineux ayant un contraste très élevé.

Cela signifie que les zones de fort contraste contenant de nombreuses lignes parallèles
sont considérées comme très intéressantes et retenus pour être des régions d‟intérêt. Bien à
l'opposé, les zones de niveaux de gris uniformes sont considérés comme d'intérêt faible et
devrait donc être ignorés.

Tel que discuté dans le chapitre précédent, de nombreuses méthodes ont été appliquées
pour atteindre cet objectif et la majorité de ces méthodes se fondent sur la détection des
contours de l‟image.

Dans cette optique, nous présentons dans ce travail une méthode de localisation, robuste
et ne fait aucune condition sur la position et l‟orientation du code-barres, inspirée
principalement de l‟article publié l‟année dernière par des chercheurs de l‟université de
California Santa Cruz [42].

56
En effet, Gallo et Manduchi ont fondé leur méthode sur la propriété de fort contraste du
code à barres en stipulant que l‟orientation du code à barres est connue précédemment de
telle façon que les barres soient parallèles à l‟axe des y, d'une manière approchante, dans
notre méthode on a pris en considération cette propriété auquel on a ajouté la propriété du
parallélisme des barres du code-barres.

Les étapes principales de notre approche sont illustrées dans la figure ci-dessous, donc
après la détection des contours de l‟image par le calcul de la dérivée première de la fonction
d‟intensité de l'image en utilisant la technique du gradient de sobel, l‟orientation principale
de l‟image est déterminée par l‟angle qui maximise l‟histogramme de la direction du
gradient de l‟image. Ensuite, les pixels des contours qui n‟ont pas une orientation égale à
l‟orientation principale sont mis à 0. Puis, l‟image est parcouru par un filtre médiane afin
d‟affaiblir l‟intensité des pixels parasites qui n‟appartient pas au code-barres. Après, on
sélectionne le pixel d‟intensité maximale sous l‟hypothèse que ce point pointe sur le code-
barres (toutes les expériences qui ont été faites montrent que ce point correspond toujours à
un point du code-barres), et en fin, après une étape de binarisation de l‟image, le code-
barres est localisé au sein du bloc qui contient le pixel déterminé dans l‟étape précédente.

Détection des Élimination des pixels


contours: Estimation de des contours dont
l'orientation principale l'orientation est
magnitude et de l'image différente de
orientation l'orientation principale

Sélection du pixel
Binarisation Lissage de l'image
d'intensité maximale
résultante
dans l'image

Sélection du bloc
pointé par le pixel Mise en rotation du
d‟intensité maximale bloc en sens inverse
déterminé par l'angle déterminé
précédemment
Figure 45 Le processus de localisation du code à barres

57
 Détection des contours et estimation de l’orientation principale :

Le but de la détection de contours est de repérer les points d'une image numérique qui
correspondent à un changement brutal de l'intensité lumineuse et de transformer cette image
en une autre dans laquelle les contours apparaissent par convention en blanc sur fond noir.
Ces changements de propriétés de l'image traduisent en général des événements importants
ou des changements dans les propriétés du monde.

Il existe de nombreuses méthodes de détection des contours à savoir les méthodes


basées sur la détermination des extremums de la dérivée première (Prewitt, Sobel, canny)
ou les zéros de la dérivée seconde de la fonction d‟intensité de l‟image, et les méthodes basé
sur des opérations morphologiques, dans notre approche on a choisi la méthode de sobel
pour sa simplicité et pour ses résultats corrects.

En bref, l‟opérateur de sobel calcule le gradient de l'intensité de chaque pixel. Ceci


indique la direction de la plus forte variation du clair au sombre, ainsi que le taux de
changement dans cette direction. On connaît alors les points de changement soudain de
luminosité, correspondant probablement à des bords, ainsi que l'orientation de ces bords.

L'opérateur utilise des matrices de convolution. Un filtre (généralement de taille 3×3)


subit une convolution avec l'image pour calculer des approximations des dérivées
horizontale et verticale. Soit A l'image source, Gx et Gy deux images qui en chaque point
contiennent des approximations respectivement de la dérivée horizontale et verticale. Ces
images sont calculées comme suit:

En chaque point, les approximations des gradients horizontaux et verticaux peuvent être
combinées comme suit pour obtenir une approximation de la norme du gradient:

On peut également calculer la direction du gradient comme suit :

Pour notre approche, la formule du calcul de la direction du gardient ci-dessus n‟a pas
donné les résultats souhaités, c‟est pour cela que nous avons utilisé la formule suivante :

58
( ) (( ( ) ( )) ( ( ) ( )

Avec n et m sont les indices des valeurs d‟intensités de l‟image G.

De ce fait, on peut donc calculer l‟orientation principale de l‟image par le calcul de la


valeur modale de l‟histogramme de direction du gradient de l‟image, sous l‟hypothèse que
cette direction est la direction du code-barres (voir la figure ci-dessous). En effet, toutes les
expériences qu‟on a faites sur la base des images ont permet de valider cette hypothèse. Au
début, nous avons pensé à segmenter l‟image en différents blocs et déterminer l‟orientation
du code-barres en prenant la direction du bloc qui a le gradient de direction le plus mono-
orienté, mais après les expériences qu‟on a faites, nous avons conclu que cette procédure
n‟ajoute pas grand-chose au résultat de localisation et augmente le temps de calcul.

Figure 46 Application du gradient de sobel sur des images de codes-barres dans les trois directions
principaux, l’image originale à gauche, l’ampleur du gradient au milieu est l’histogramme de direction du
gradient.

59
 Élimination des pixels des contours dont l'orientation est différente de
l'orientation principale

Après le calcul d‟une estimation approchante de l‟orientation du code-barres, l‟étape


suivante est d‟éliminer les pixels des contours des autres objets de l‟image, qui n‟ont pas la
même orientation que le code-barres. En bref, cette étape permet d‟éliminer les objets
parasites entourant le code-barres et contribuent à la perturbation de la localisation du code
barre.

Figure 47 Elimination des pixels parasites entourant le code-barres, le contour de l’image originale est
représenté à droite, l’image à gauche représente la même image après l’élimination des pixels parasites.

Certes, ce traitement ne permet pas de supprimer tous les pixels parasites entourant le
code-barres, néanmoins il permet de diminuer leurs densité dans les régions voisins du
code-barres, et conséquemment, collaborer à bien localiser le code-barres.

 Lissage de l'image résultante et sélection du pixel d'intensité maximale


dans l'image

Le lissage des images est une opération importante en traitement d'images, utilisée pour
atténuer un bruit qui corrompt l'information ou les aspérités et petits détails dans une image.

Cette opération consiste le plus souvent à appliquer sur l'image un filtre linéaire passe-
bas numérique. L'effet du lissage est de mélanger les niveaux de gris dans un voisinage de
telle façon que la valeur d‟un pixel est relativement similaire à celle de ses voisins. Ce
mélangement augmente avec la taille du masque et se manifeste spécialement dans les
zones à forte variation de niveaux de gris.

L‟utilité de cette opération dans notre approche est d‟affaiblir l‟intensité des bruits et de
former des blocs des pixels d‟intensités similaires comprenant les régions de forte variation
d‟intensité, y compris la région du code barre.

60
Dans notre cas, nous avons utilisé un filtre linéaire moyenneur de taille 22*22, En
revanche, Gallo et Manduchi ont pris un filtre de taille 31*31, en effet cette taille permet de
bien disperser les intensités des pixels des régions parasites entourant le code-barres,
cependant un filtre de grande taille peut fusionner le bloc du code à barres avec d‟autres
blocs voisins.

Ensuite, on détermine le bloc représentant le code-barres par la sélection du bloc


contenant le pixel qui maximise la matrice d‟intensité de l‟image lissée, Bien entendu, les
expériences appliquées sur notre base de données permettent de valider ce fait.

Figure 48 Lissage du contour de l’image et sélection du pixel d’intensité maximale

 Binarisation :

Apres la dispersion des intensités des pixels sur les voisins, l‟étape suivante est de
binariser l‟image et la segmenter en deux classes et ne préservant dans l‟une de ces classes
que les blocs qui ont des très fortes variations d‟intensités. En fait, La binarisation est une
opération de segmentation de l‟image en deux classes de pixels, en général, les pixels dont
le niveau de gris est en dessous du seuil deviennent noirs, et ceux au-dessus deviennent
blancs. En traitement d‟images, plusieurs méthodes ont été présentées pour la détermination
de ce seuil, à savoir les méthodes globales, locales et hystérésis, dans notre cas, nous avons
choisi la méthode d‟Otsu pour sa robustesse.

La méthode D‟Otsu est une méthode incontournable du calcul automatique du seuil pour
la binarisation. En Otsu assimile le problème de détermination d‟un seuil pertinent T pour la
binarisation de l‟image à un problème de meilleure classification des pixels en deux sous-
groupes C1 et C2, une de ces classes contient toujours le fond, et l‟autre les objets de
l‟image.

La classification consiste à trouver la frontière qui d‟une part maximise la variance


interclasses de manière à séparer les classes, et d‟autre part qui minimise la variance intra-
classes de manière à regrouper les niveaux de gris de chaque classe autour de sa moyenne

61
Figure 49 Binarisation des images a l’aide de la méthode d’otsu.

 Sélection du bloc pointé par le pixel d’intensité maximale déterminé


précédemment

Finalement, après l‟étape de binarisation l‟emplacement du code-barres est très clair, il


suffit maintenant de l‟extraire à partir de l‟image origine :

Figure 50 Extraction des blocs à partir de l’image origine

 Mise en rotation du bloc en sens inverse par l'angle déterminé

62
Dans le cas oe le code barres est orienté par un angle different de 0, le bloc du code-
barres est mis en rotation en sens inverse par l'angle déterminé.

Figure 51 Mise en rotation du bloc en sens inverse de l’angle déterminé

Notre solution au problème de localisation des codes à barres est examinée et testé et
elle a approuvé sa performance et sa supériorité sur l'approche de Gallo et Manduchi dans
des situations complexes, par exemple le cas où le code-barres est entouré par des textures
et écritures.

Les figures suivantes montrent les traitements effectués dans l‟approche de Gallo et
Maunduchi :

Figure 52 Détection de contours de l’image d’origine

Figure 53 Lissage et binarisation des contours

63
Figure 54 résultats de la localisation (Gallo et Maunduchi)

Le résultat obtenu montre clairement l‟imperfection et la limitation de l‟approche


d‟Gallo et Manduchi, en fait, la forte densité des contours des objets voisins du code-barres
favorise le chevauchement et la fusion des blocs représentants ces objets d‟une part et le
bloc du code-barres d‟une autre part. Toutefois, la contribution que nous avons proposée
précédemment permet de surmonter ces situations par la suppression des pixels des contours
des objets parasites qui n‟ont pas la même orientation du code-barres, ce qui contribue
largement à l‟affaiblissement de leur densité autour le code-barres, et par suite, a leurs
suppression après l‟étape de lissage et de binarisation :

Figure 56 Détection de contours de l’image d’origine

Figure 55 Suppression des pixels qui n’ont pas la même orientation du code-barres et lissage de
l’image résultante
64
Figure 57 Binarisation de l’image lissé et la sélection du blob du code-barres

Les deux images suivantes présentent une comparaison de l‟approche de Gallo Maunduchi
avant et après notre contribution :

Figure 58 Exemples des résultats de localisation des codes-barres par la méthode de Gallo et Manduchi (à
gauche) et notre contribution à cette méthode (à droite).
65
Certes, la contribution que nous avons proposée permet d‟augmenter un peu le temps de
calcul, néanmoins, avec cette augmentation nous avons éliminé la condition faite sur
l‟orientation du code-barres et on a également amélioré la performance de la méthode de
Gallo et Manduchi [42].

Le but essentiel de la localisation du code à barres est de trouver une ligne droite qui
coupe toutes les barres. Il ne doit pas forcément être perpendiculaire aux barres, il suffit
qu‟il traverse tout le code à barres. Une solution possible est d'afficher cette ligne au milieu
d'un aperçu caméra en direct et obligent l'utilisateur à déplacer la caméra et / ou de la cible
jusqu'à ce que la ligne coupe toutes les barres du codes à barres. En fait, Cette approche
présente plusieurs avantages et permet d‟omettre l‟étape de localisation et par suite
augmenter la rapidité de la reconnaissance, pour cette raison nous avons doté notre
application Android d'une option permettant d‟utiliser cette approche.

IV. Décodage du code à barres

L'étape de décodage du code à barres est constituée de trois blocs principaux. D'abord le
bloc de prétraitement et d‟extraction de l‟information pertinente dans la forme en ondelette,
suivi par le bloc de classification des chiffres du code-barres, et enfin le bloc de recherche
du code-barres le plus probable.

En premier lieu, la ligne d‟analyse prise du code à barres est traitée dans le bloc de
prétraitement pour éliminer l'information non pertinente et déterminer les largeurs des
barres et espaces du code-barres permettant de décoder le code-barres. Ensuite, le bloc de
classification des chiffres vise à classifier chaque combinaison de deux barres noires et deux
autres blanches (représentation graphique d‟un seul chiffre de code-barres) aux classes ck de
l‟alphabet de la norme EAN13 en se basant sur les largeurs normalisées des barres et
espaces du code à barres. Et en fin, le bloc de recherche combine tous les résultats de bloc
prédécesseur pour déterminer le code-barres valide le plus probable.

1. Prétraitement
L‟objectif de cette étape est d‟extraire les informations pertinentes noyées dans une
ligne traversant la totalité du code-barres dans le but de les décoder en chiffres dans étapes
ultérieures. En effet, les informations pertinentes sont les largeurs des traits noirs et blancs
du code-barres.

La première opération dans l‟étape de prétraitement est l‟extraction de la ligne


d‟analyse qui est une ligne de pixels représentées par I = {i1, i2, ..., i3}, où i représente
l'intensité ou le niveau de gris du jème pixel de la ligne d‟analyse et 0 ≤ i ≤ 255. Il s'agit de la
ligne centrale dans la première tentative ou peut être une ligne au-dessus ou au-dessous dans
une tentative ultérieure.

66
Ensuite, dans l‟intention de segmenter cette Localisation
ligne en un ensemble de traits blancs et noirs
en fonction des valeurs d‟intensités de pixels, la
dérivée première de la ligne de scan est
calculée pour déterminer les variations
brusques d‟intensité de la ligne d‟analyse qui Extraction de la ligne
d'analyse
permettent de positionner les points de contact
entre les traits noirs et les traits blancs.

En effet, les minimums et maximums Detection des pics et


locaux ou bien les pics et les vallées de la vallées de la derivé
premiere de la ligne de
dérivée première précisent l‟emplacement de scan
ces variations, à l‟exception de certains
minimums et maximums résultants du bruit ou
Elimination des pics et
du flou (voir la figure 61). vallées resultantes du
bruits

Calcul des largeurs


des traits noirs et
blancs

Determiner les
extremités et le
Figure 59 Echantillon d’un code-barres separateur central du
code barres

Figure 60 Les différentes étapes de


prétraitement

Figure 61 La dérivée première de la ligne d’analyse arraché le l’image précédente

67
Afin d‟exclure les faibles minimums et maximums locaux issus du bruit, nous éliminons
tous les minimums (respectivement maximums) supérieur (respectivement inferieur) à un
certain seuil déterminé en fonction de la valeur des maximums et minimums globaux :

Figure 62 La dérivée première de la ligne d’analyse après l’élimination des faibles minimums et maximums

Après le rejet des faibles minimums et maximums locaux issus du bruit, on remarque
l‟existence de certains minimums et maximums parasites aux voisins des autres minimums
et maximums locaux, qui sont natifs généralement du flou, donc dans le traitement suivant ,
nous les éliminons en ne gardant pour chaque série de minimums(respectivement
maximums) successifs que le plus minimal (respectivement maximal):

68
Et finalement les largeurs traits noirs et blancs peuvent être calculées à partir les pics et
les vallées déterminées. En effet, la largeur d‟un trait est la différence entre deux extremums
successifs, par exemple, la largeur du premier trait noir est la différence entre le premier
minimum et le maximum qui le suit, et après le calcul des largeurs de tous les traits, la ligne
d‟analyse peut être représenté de la façon suivant :

Figure 63 Les largeurs des différents traits noirs et blancs

 Détermination des barres de garde du code-barres :

Apres la localisation, la zone du code à barres obtenue ne contient pas seulement le


code-barres, elle peut contenir d‟autres objets en plus du code-barres, d‟où la nécessite de
déterminer les extrémités du code-barres.

La détermination des extrémités du code-barres est une étape cruciale dans la lecture des
codes-barres, En effet, une erreur dans la détermination des emplacements des barres de
garde implique l‟échec de l‟opération de décodage. Pour cela, tel que discuté dans le
chapitre précédent, plusieurs propositions ont été présenté pour ce but, à savoir la
proposition de Gallo et Maunduchi [42] et celle de Wachenfeld et Terlunen [4]. En fait, la
méthode de Gallo et Manduchi dépends fortement de la taille du code-barres dans l‟image
tandis que celle de Wachenfeld et Terlunen stipule que le code-barres doit être au centre de
l‟image.

En revanche, notre proposition peut détecter les extrémités du code-barres dans


n‟importe quelle taille, et n‟importe quelle position, qu‟il sera à droite ou bien à gauche de
l‟image. Elle se fonde tout simplement sur le fait que la barre de début du code barre est
noire et que tous les barres de garde ont la même largeur, donc par une formulation
mathématique de ces faits, les barres de garde sont les traits blancs et noirs qui respectent un
certain ordre précisé par la symbologie de la norme EAN13, et dont les largeurs présentent
une variance minimale (voir l‟algorithme ci-après):

Les expériences qu‟on a faites sur des images complexes prouvent la performance et
la robustesse de la méthode, prenant par exemple le cas de l‟image suivante où le code-
barres est entouré par des textures et écritures :

69
Figure 64 Le résultat de détection du début des barres de garde du code-barres

Entrée: BarsWidths : un vecteur contenant les largeurs des barres.


BarsColor : un vecteur contenant les couleurs de ces traits.
function [StripStart]=FindStartBarcode(BarsWidths,BarsColor)

( )

minimumVariance=variance;
barStart=1;

for i=2:length(BarWidths)-59
if(BarWidth(i)==0)

( )

if (currentVar< minimumVariance),
barStart =i;
minimumVariance = currentVar; end
end
end
end

2. Classification des chiffres

Aprés l‟evaluation des largeurs des traits noirs et blancs et la determination des barres
de garde du codebarres, ce dernier peut etre decrit par un seul vecteur W = {w1, w2 ... w59}
d‟une seul dimension et de taille 59 contenant les largeurs des 59 barres et espaces cryptants
le code-barres.En effet, tel que discuté dans le deuxieme chapitre, Un code à barres EAN13

70
se compose de 12 chiffres, disposés en deux groupes de six chiffres comme suit:
DXXXXXXMXXXXXXF, où D représente le motif de départ, M représente le motif du
milieu, F représente le motif de fin et X représente un chiffre. Ainsi que chaque chiffre est
codé par une combinaison de deux barres noires et deux barres blanches de différentes
largeurs reparties sur 4 classes (simple module, double, triple ou quadruple) comme indiqué
dans le tableau ci-dessous, donc le nombre total de barres et espaces d‟un code EAN13 est:
3(motif de début) + 4 (par chiffre) × 12 (chiffres) + 5 (barres de garde centrales) + 3 (barres
de garde de fin) = 59 bars.

Gauche Droite

A B A

0 0001101 3211 0100111 1123 1110010 3211

1 0011001 2221 0110011 1222 1100110 2221

2 0010011 2122 0011011 2212 1101100 2122

3 0111101 1411 0100001 1411 1000010 1411

4 0100011 1132 0011101 2311 1011100 1132

5 0110001 1231 0111001 1321 1001110 1231

6 0101111 1114 0000101 4111 1010000 1114

7 0111011 1312 0010001 2131 1000100 1312

8 0110111 1213 0001001 3121 1001000 1213

9 0001011 3112 0010111 2113 1110100 3112

Figure 65 Tableau de symbologie de la norme EAN

Pour pouvoir décoder le code à barres, les largeurs des barres et espaces doivent être
classifiés en quatre classes, pour ce faire nous devons premièrement estimer la largeur de
chaque classe par le calcul de la largeur d‟un seul module en prenant en considération les
erreurs due à l‟éclairage de l‟image, en effet, il faut noter que, contrairement à ce qu'on
pourrait attendre, la zone d'un module double n'est pas deux fois plus grande que la surface
d'un seul module. En outre, la largeur d'un seul module noir est différente de la largeur d‟un
autre blanc et n'est pas la largeur totale du code à barres divisé par 95, donc, l‟estimation
des largeurs des classes doit reflète l‟erreur due à l'éclairage.

71
Au préalable nous déterminons la largeur des simples modules noirs et blancs , en
analysant les barres de garde à gauche, à droite et ainsi que les barres de garde centrale. Car
nous savons que la largeur de chaque barre de garde est égale à un simple module:

| | | | | | | | | | | |

| | | | | | | | | |

De la largeur des modules simples, nous pouvons calculer ensuite la largeur des
doubles, triples et quadruples modules.

Grâce à un éclairage plus lumineux ou plus sombre, la largeur moyenne des modules
noirs et celle des modules blancs seront différente de m1, les figures ci-après illustrent les
effets de l‟éclairage sur le début et la fin des zones blanches et noires. Ce qui permet
d'examiner les différences suivantes :

Avec m1 la moyenne des largeurs des différentes barres et espaces du code-barres :

∑ | | ∑ | |

Ces différences peuvent être interprétées comme des erreurs et doivent être pris en
compte lors du calcul des largeurs des doubles, triples, quadruples modules :

La largeur d’un double, triple et La largeur du double, triple et quadruple


quadruple module noir module blanc

72
Figure 66 calcul des largeurs de simples, doubles, triples et quadruples modules noirs, ici en supposant une
image sombre où w1 <m1 <B1

Figure 67 calcul des largeurs de simples, doubles, triples et quadruples modules blancs, ici en supposant
une image sombre où w1 <m1 <B1

73
De ce fait, les largeurs des différentes barres et espaces du code-barres calculés
précédemment peuvent être classifiés, en effet, la totalité des approches présentés dans la
littérature classifient ces largeurs en quatre classes, c'est-à-dire que chaque largeur wi doit
être appartient à un seul classe.

En fait, cette classification peut être fausse et peut éliminer des informations
intéressantes à la reconnaissance du code-barres, par exemple, si la largeur d‟une barre noire
est 3 et les largeurs du double et triple module sont respectivement 2 et 3.9, une simple
classification de cette barre lui affecte la classe des triples modules , ce qui n‟est pas juste,
car on a éliminé le fait que le barre est bruité et qu‟elle est de la classe 2 des doubles
module.

Dans notre approche, nous n‟avons pas classifié les largeurs en quatre classes, nous
avons tout simplement quantifié la largeur de chaque barre par une valeur comprise entre 1
et 4, si nous prenons l‟exemple précédant, la barre noire sera quantifiée par la valeur 2.52.
L‟algorithme suivant montre comment calculer cette valeur pour une barre noire, et les
barres blanches sont calculées de la même façon :

Entrée: blackBarWidth, la largeur de la barre noire.


Sortie : blackBarClass, Une valeur comprise entre 1 et 4, permettant
de présenter une approximation de la classe du blackBarWidth.

if(blackBar<=b1), blackBarClass =1;end


if(b1 < blackBarWidth)&&( blackBarWidth <=b2),
blackBarClass =1+(( blackBarWidth -b1)/( b2-b1));end
if(b < blackBarWidth)&&( blackBarWidth <= b3),
2

blackBarClass =2+(( blackBarWidth -b2)/(b3-b2));end


if(b < blackBarWidth)&&( blackBarWidth <=b4),
3

blackBarClass =3+(( blackBarWidth - b3)/(b4-b3));end


if(blackBarWidth> b4), blackBarClass =4;end

Étant donné que chaque chiffre est codé par deux barres et deux espaces, un modèle
de référence sera déterminé pour chaque chiffre du code-barres à partir du vecteur
C des largeurs quantifiées des barres et espaces du code-barres.

Pour les six premiers chiffres du code-barres, le jéme chiffre peut maintenant être trouvée
comme suit:

( (( ) ) (( ) ) (( ) ) (( )
))

Et pour les six autres chiffres (l‟ajout du 5 pour le motif intermédiaire):

74
( (( ) ) (( ) ) (( ) ) (( )
))

En fin de compte, le décodage d‟un chiffre dj revient à chercher dans le tableau de


symbologie le chiffre qui a le modèle le plus similaire a .

Figure 68 La représentation graphique de l’ensemble des alphabets du code-barres

Donc, chaque chiffre s du code-barres est ensuite présenté à un classificateur, basé sur la
distance entre le modèle de référence du chiffre et les modèles de référence des alphabets du
code-barres, qui attribuent des probabilités de ressemblance ( ) pour toutes les
classes .

Figure 69 Exemple de classification d’un chiffre

75
La probabilité ( ) est basé sur le carré de la distance ( )entre le motif
correspondant et le modèle de la classe et :

( ) ( ( ))

Où est la distance maximale tolérable, si la distance entre un chiffre s et une


classe ck supérieur ou égale cette valeur, donc la probabilité de ressemblance entre eux est
nulle.

3. La recherche du code barre le plus probable


Nous avons maintenant les valeurs de similarité pour chaque s chiffres à chaque classe
ck et notre objectif est de déterminer le code à barres le plus probable qui est valide. En
combinant les résultats des douze chiffres codés s1, s1, . . ., s12, nous pouvons générer
successivement des hypothèses du code (m, h1, h2, ..., h12), où m est le chiffre de parité qui
peut être calculé à partir des six premiers chiffres (voir chapitre 2).

Figure 70 Calcul du chiffre de parité

Si l'on considère que les probabilités des chiffres sont indépendants les uns des autres, la
probabilité d'une hypothèse ( ) est:

( | ) ∏ ( | )

Pour les images de bonne qualité, l'hypothèse correcte est normalement celui résultant
des classes les plus similaires pour les treize chiffres du code-barres. En cas de fortes
déformations ou des erreurs locales, on génère successivement des hypothèses de
probabilités décroissantes.

 Détection et corrections des erreurs :

76
Et finalement, Pour s‟assurer de la validité du résultat, la clé de contrôle calculé à partir
des douze premiers chiffres y compris le chiffre de parité doit être égale au treizième
chiffre.

∑ ∑ , ,

Où Z représente la clé de contrôle.

Si Z est égal à C, le résultat de reconnaissance est correct, sinon, il n'est pas.

Si le chiffre de parité calculé et le chiffre reconnu ne sont pas identiques on génère


successivement d‟autres hypothèses de probabilités décroissantes.

V. Expériences et résultats
Ce système a été évalué sur une base de données de 200 images et les résultats obtenus
sont les suivantes :

Nombre des Nombre des Nombre des Nombre des codes à


images de test codes à barres codes à barres barres non reconnus
reconnus correctement Taux de reconnaissance
reconnus
200 199 196 1 98 %
Segmentation correct Segmentation Taux de segmentation
incorrect
199 1 99.5%

La performance de notre système a été évaluée en termes de Précision (P) et Rappel


(R):

Où correct est le nombre de codes à barres correctement reconnus par le système, actual
est le nombre total de codes à barres reconnus par le système, et possible est le nombre total
de codes à barres testés.

Au niveau de la segmentation des codes-barres, notre système présente un excellent taux


de reconnaissance, puisqu‟il permet de localiser presque la totalité des images à l‟exception
d‟une image où l‟orientation du code-barres n'est pas déterminée correctement.

En ce qui concerne le décodage, le taux de reconnaissance a été assez bon. En fait, les
échecs de notre système sont dus généralement du flou des images.

77
les résultats obtenus montrent un taux de réussite Assez bon (localisation et lecture) sur
une très large plage de variation des paramètres d'acquisition, notamment l‟éclairage et le
flou qui est introduit par un défaut de mise au point dû à la variation du positionnement de
l'objet.

VI. Conclusion
En guise de conclusion, nous terminons ce chapitre par un prototype général du
processus de décodage du code-barres, Après la localisation du code-barres, le vecteur des
largeurs des traits noirs et blancs de la ligne d‟analyse est calculé dans l‟intention de
déterminer les barres et espaces qui représentent le code-barres, ensuite un test est fait sur la
taille de ce vecteur. Si la taille est inferieur a cinquante-neuf, c‟est-à-dire, le code-barres
n‟est pas bien localisé ou n‟est pas capturé complètement, donc l‟étape de localisation est
doit être refaite. Sinon, si elle est supérieur à cinquante-neuf, autrement dit, le nombre des
barres et espaces est supérieur à celui nécessaire pour représenter un code-barres, nous
devons donc extraire les barres qui représente le code-barres. Si la taille égale à cinquante-
neuf, on continue le processus sous l‟hypothèse que ce vecteur représente les largeurs des
barres et espaces du code-barres.

A la prochaine étape, on calcule les valeurs quantifiées permettant de donner une


estimation approchante des classes des largeurs des cinquante-neuf barres et espaces
calculées précédemment, et on examine les classes des barres de garde, s‟ils sont identiques,
on s‟assure que nous sommes sur le bon chemin, sinon, on déduit qu‟il y a une erreur au
niveau de la localisation et on recommence le processus depuis le début.

Ensuite, un modèle de référence pour chaque chiffre est extrait à partir du vecteur des
largeurs quantifiées des barres et espaces du code-barres, afin de déterminer les chiffres de
l‟alphabet de la norme EAN13 qui ont des modèles de référence similaires à celui de ce
chiffre.

Subséquemment, on établit sur la base des résultats de décodage de chaque chiffre,


l‟hypothèse des chiffres la plus probable d‟être vraie et on déduit le chiffre de parité à partir
des six premiers chiffres, ensuite on s‟assure de la validité de cette hypothèse par le calcul
de la clé de contrôle. Si elle est n‟est valide, on génère successivement d‟autres hypothèses
de probabilités décroissantes.

Et en dernier lieu, dans le cas où l‟algorithme n‟arrive pas décoder le code-barres, ou si


il y a des barres sur la ligne d‟analyse qui sont sales, occlus ou affectées par de fortes
réflexions, nous réitérons notre algorithme en utilisant des lignes d'analyses suppléants ci-
dessus et ci-dessous.

78
Figure 71 Prototype général du processus de décodage

79
 Chapitre 4:

Implémentation de la
méthode proposée sous la Le présent chapitre
plateforme Android expose les différentes étapes
de l’implémentation de notre
approche sous la plateforme
android, ainsi que la
conception et la réalisation
d’une petite application pour
l’acquisition des
informations des articles
scannés.

80
I. Présentation de la plateforme Android
Android est un OS pour téléphone mobile et tablette tactile, promu par Google et l‟Open
Handset Alliance qui comprend plus de 35 constructeurs, fournisseurs de logiciel, et
opérateurs. Il concurrence des plateformes telles que l‟iOS d‟Apple, Windows Mobile de
Microsoft, RIM OS intégré dans les BlackBerry de Research In Motion, WebOS d‟HP Bada
de Samsung, ou encore Symbian et MeeGo de Nokia.

La plateforme Android est un OS basé sur GNU/Linux entièrement gratuit, sous licence
open source Apache 2. Le kit de développement (SDK) et le code source d‟Android sont
disponibles depuis novembre 2007 en version 1.0. La version actuelle des sources est la
version 4.0.4 (Ice Cream Sandwich) qui est sortir en 1 juin 2012.

Au niveau du développement d‟applications, Android utilise un Framework Java et


propose un environnement de développement complet comprenant un émulateur, un
débogueur et un analyseur de mémoire et de performance. De plus Android est intégré
plusieurs services de Google pour accéder rapidement aux services d‟internet comme
Gmail, YouTube, Google Talk, Google Calendar et Google Maps.

Pour bien comprendre la plateforme Android, nous détaillons par la suite l‟architecture
de ce système. En fait, l‟architecture d'Android se compose de 4 couches : le noyau
Linux, les bibliothèques , le moteur d'exécution, le cadre de l‟application et la couche des
applications.

81
 LINUX KERNEL :

Android est basé sur le noyau Linux (2.6.24). Alors, il y a plusieurs


avantages comme grand mémoire, gestion de processus, modèle de sécurité, soutien
de bibliothèque partagé, etc. il fournit les drivers pour communiquer entre les hardwares et
leurs logiciels. De plus il y a les parties d‟augmentation comme la gestion d„énergie.

 LIBRARIES :

C‟est une collections de plusieurs bibliothèques qui basé sur C /C++ comme :

o Bionic : C‟est une bibliothèque qui implémente la bibliothèque Libc -


Bibliothèque de la fonctionnalité : WebKit navigateur pour web
navigateur ; Media Framework pour soutenir vidéo, audio normal ;
SQLite pour stoker de données, etc.
o HAL : (Hardware Abstraction Libraries) pour séparer entre le
hardware et la plateforme logique.
 MOTEUR D’EXECUTION D’ANDROID (ANDROID RUNTIME) :

Moteur d‟exécution d‟Android c‟est une collection de plusieurs bibliothèques du cœur


et la machine virtuelle Dalvik. Les bibliothèques du cœur pour Java fournissent des
puissances et des facilités pour développer la plateforme. La machine virtuelle Dalvik
fournit un environnement de développement proche de java SE, adapté au mobile qui peut

fonctionner sur un CPU limité et dans les situations de faible énergie. Il utilise le
format du fichier .DEX (Dalvik Executable) pour optimiser les ressources comme CPU,
RAM, et pour l‟application portable. Pour les fichiers .jar, le système utilise un outil intégré
pour convertir “byte code” .jar en .dex.

 APPLICATION FRAMEWORKS

82
Carde de l‟application (Application Framework) fournit les services principaux
pour la plateforme Android et les services principaux pour accéder à API du hardware au
bas niveau.

II. Finalité attendue du projet


Le but de ce projet est de concevoir et réaliser une application intelligente de
localisation et reconnaissance des codes à barres sous la plateforme Android pour les
téléphones mobiles. Pour cela nous avons établi certains principes fondamentaux à étudier:

 Installation, configuration et apprentissage des différents outils de


développement,

 Développement d'une interface à la fois simple, conviviale, ergonomique et


fonctionnelle,

 Implémentation d'un système de localisation de code à barres,

 La mise en œuvre d‟un système de reconnaissance de code à barres,

 La mise en place d‟un webservice SOAP pour l‟interrogation du serveur de


données à partir du téléphone mobile.

 La mise en contact avec un comparateur des prix.

 Internationalisation de l‟application (AR, FR, EN).

III. Réalisation
1. Capture des besoins
Après avoir présenté la finalité du projet, nous allons identifier dans cette partie les
différentes fonctionnalités de notre futur système pour chaque type d‟utilisateur, et ceci en
dénombrant les besoins fonctionnels et en capturant la liste des exigences traduites par les
besoins non fonctionnels.

Ceci se fera par l‟identification des acteurs et la définition de tous les besoins qui seront
modélisés par le diagramme de cas d‟utilisation général.

a. Identification des acteurs


Dans cette application, on distingue principalement deux types d‟utilisateur :

Client : un utilisateur simple de l‟application SiaScan.

Vendeur : qui est aussi un client de l‟application avec d‟autres avantages.

83
b. Besoin fonctionnels
Le futur système doit permettre à l‟utilisateur (Client) de:

 Scanner des codes à barres,


 Lister les vendeurs du produit scanné.
 Interroger la base SIASCAN.
 Rechercher sur google par le code scanné.
 Consulter le comparateur de prix : Prixing.
 Ajouter un produit au panier.
 S‟identifier
 Commander le produit en ligne.

Pour l‟utilisateur (Vendeur), l‟application offre toutes les fonctionnalités d‟un acteur
Client avec les fonctionnalités suivantes:

 Ajouter, modifier ou supprimer un produit de la base.

 Valider une commande.

c. Besoin non fonctionnels

 Contraints ergonomiques :
o L‟application doit être dotée d‟une interface conviviale et bien animé.
o L‟interface de l‟application doit respecter la charte graphique d‟une
application Android.
o L‟utilisateur doit être guidé lors de la saisie de certaines informations,
afin de respecter les formats des champs de notre base de données.
 Contraints techniques :
o L‟accès à la base de données doit être souple et rapide,
o Le Web Service doit être toujours fonctionnel,
o L‟application doit détecter la présence d‟une connexion internet,
o Temps de réponse minimum,
o Communication des données entre environnements hétérogènes :
Protocole de communication, format des données...

d. Diagramme de cas d’utilisation


Le diagramme de cas d‟utilisation décrit l‟interaction entre le système et l‟acteur en
déterminant les besoins de l‟utilisateur et toutes les fonctionnalités du système :

84
Figure 72: Diagramme de cas d'utilisation général

2. Analyse des cas d’utilisations


Dans cette partie, nous présentons une analyse détaillée des principaux cas d‟utilisations, qui
sert de base pour le passage à l‟étape de la conception :

85
a. Cas d’utilisation : scanner un code à barre
SOMMAIRE D’IDENTIFICATION

Titre : scanner un code à barres

But : Localiser et décoder un code à barres par la caméra du


téléphone
Résumé : L‟acteur scanne le code-barres en utilisant la caméra en mode streaming à
l‟aide d‟un aperçu d‟une ligne au milieu de la camera ou bien la localisation et
reconnaissance du code à barres en temps réel, il peut également scanner une
image capturé par l‟appareil photo ou la sélectionné à partir de la galerie.
Acteur : Client et vendeur

DESCRIPTION DES ENCHAINEMENTS

Pré conditions Post conditions

- L‟acteur a choisi un mode de scan - Le début et la fin du code à barres


doivent être inclus dans l‟image.
SCENARIO NORMAL

1-l‟acteur choisi un mode de reconnaissance (mode streaming à l‟aide d‟un aperçu


d‟une ligne au milieu de la camera, localisation et reconnaissance en temps réel, mode
capture).
2- l‟acteur déplace la camera et/ou le code barre de telle façon que le code-barres soit
entièrement inclut dans la camera.
3- le système exécute le processus de reconnaissance du code à barres.
4- une fois le processus de reconnaissance est terminé le système affiche les chiffres
du code à barres décodé.
SCENARIO ALTERNATIF

1-l‟acteur choisi un mode de reconnaissance (mode streaming à l‟aide d‟un aperçu


d‟une ligne au milieu de la camera, localisation et reconnaissance en temps réel, mode
capture).
2- l‟acteur déplace la camera et/ou le code barre de telle façon que le code-barres soit
entièrement inclut dans la camera.
3- le code-barres n‟est pas détecté entièrement dans la camera, ou bien le système ne
peut pas reconnaitre le code-barres à cause du bruit ou flou très fort.
4- le scénario reprend de 2.
le système exécute le processus de reconnaissance du code à barres.
5- une fois le processus de reconnaissance est terminé le système affiche les chiffres
du code à barres décodé.

86
b. Cas d’utilisation : Récupérer les informations des produits
SOMMAIRE D’IDENTIFICATION

Titre : Récupérer les informations des produits

But : Récupérer des informations détaillées sur un produit scanné


concernant le prix, les ingrédients, les conseils d‟utilisation, etc.
Résumé : Le système utilise le résultat du processus de reconnaissance
du code-barres pour interroger le serveur de base de données dans
l‟intention de récupérer les informations d‟un produit.
Acteur : Client et Vendeur

DESCRIPTION DES ENCHAINEMENTS

Pré conditions Post conditions

Code EAN13 Bon fonctionnement du serveur de


Connexion internet base de données.
SCENARIO NORMAL

1 - après le succès de l‟étape de reconnaissance du code-barres, l‟utilisateur demande


des informations sur le produit.
2 - le système interroge la base de données via le service web et retourne les
informations concernant le produit spécifié par le code-barres reconnu.
SCENARIO ALTERNATIF

1 - après le succès de l‟étape de reconnaissance du code-barres, l‟utilisateur demande


des informations sur le produit.
2 - le système interroge la base de données via le service web pour obtenir les
informations concernant le produit spécifié par le code-barres reconnu.
3 - le produit n‟existe pas dans la base de données.
4 - le système avertisse l‟utilisateur que le produit n‟existe pas dans la base de
données et transmet la requête au moteur de recherche Google, et affiche le résultat au
client.

Comme nous pouvons le constater cette étape d‟analyse a permis de livrer une
spécification des besoins principales issus du diagramme de cas d‟utilisation, de les
structurer sous une forme qui facilite la compréhension et qui simplifie l‟étape de
conception.

3. Conception des cas d’utilisations


Dans cette partie, nous avons abordé la conception des cas d‟utilisation que nous venons
d‟analyser dans l‟étape précédent.

87
c. Diagrammes d’activités
Un diagramme d'activités permet de modéliser un processus interactif, global ou partiel
pour un système donné (logiciel, système d'information). Il est recommandable pour
exprimer une dimension temporelle sur une partie du modèle, à partir de diagrammes de
classes ou de cas d'utilisation, par exemple.

Le diagramme d'activités est une représentation proche de l'organigramme, la


description d'un cas d'utilisation par un diagramme d'activités correspond à sa traduction
algorithmique. Une activité est l'exécution d'une partie du cas d'utilisation.

Dans ce qui suit, nous présentons les diagrammes d‟activités des deux cas d‟utilisation
abordés dans l‟étape d‟analyse.

i. Diagramme d’activités de cas d’utilisation ‘scanner’


Le processus de scan peut être résumé dans le diagramme d‟activités suivant :

Figure 73: Diagramme d'activité du cas d'utilisation 'scanner'

88
ii. Diagramme d’activités de cas d’utilisation : Récupérer les
informations des produits
La récupération des informations des produits se fait via un web service, la
communication entre notre application et le web service peut être résumé dans le
diagramme d‟activités suivant :

Figure 74: Diagramme d'activité du cas d'utilisation 'Interroger WS SIASCAN'

d. Diagrammes des classes


Un diagramme de classes dans le langage de modélisation unifié (UML) est un type de
diagramme de structure statique qui décrit la structure d'un système en montrant le système
de classes , leurs attributs, les opérations (ou) les méthodes et les relations entre les classes.

i. Diagramme de classe du package com.siascan.barcode.gui


Ce package contient les différentes interfaces graphiques de l‟application, et représente
La vue par laquelle l'utilisateur interagit avec le système :

89
onCreat()

onDestroy()

onPause()

Figure 75 Diagramme de classe du package com.siascan.barcode.gui

Sous Android, nous pouvons décrire nos interfaces utilisateur de deux façons
différentes: avec une description déclarative XML ou directement dans le code d‟une
activité en utilisant les classes adéquates. La façon la plus simple de réaliser une interface

90
est d‟utiliser la méthode déclarative XML via la création d‟un fichier XML que nous
placerons dans le dossier /res/layout de notre projet.

Dans ce qui suit, on fait un petit survol sur les principales interfaces présentées dans le
diagramme de classe précédant :

 StartActivity :

C'est l'écran de démarrage de l'application, elle affiche une animation du logo de


l‟application et redirige l‟utilisateur automatiquement vers le menu général (l‟activité
SIAscanTabActivity).

Figure 76 Interface: Animation au début de l'application

 SIAscanTabActivity :

C‟est le menu général de notre application, elle affiche les différentes fonctionnalités de
l‟application sous forme des onglets.

 HomeScanActivity :

Représente l‟activité principale de la reconnaissance de codes-barres, elle affiche les


différents modes de reconnaissance :

Figure 77 Interface : les déférents modes de scan

91
Elle propose au client 4 mode de reconaissance défirents : reconaissance en temps reel
(ScanStreamingIntent), decodage à l‟aide d‟une ligne au milieu de la camera
(CameraPreview), et reconaissance le capture d‟une image (TakePictureActivity) bien sa
selection à partir la galerie (SelectPicture) :

 CameraPreview :

C‟est le mode de reconnaissance le plus utilisée dans tous les applications commerciaux,
elle permet de lancer la caméra avec un aperçu d‟une ligne rouge au milieu.

Figure 78 Mode de reconnaissance à l’aide d’un aperçu d’une ligne au sein de la camera.

 ScanStreamingIntent :

Permet de lancer à la caméra en mode streaming pour localiser et décoder les codes-
barres en temps réel.

Figure 79: Localisation et décodage d'un code à barres en temps réel

92
 TakePictureActivity :

Permet de localiser et décoder les codes à barres d‟une image capturée par l‟appareil
photo.

Figure 80 Localisation et décodage d'une image capturé par la caméra

 SelectPicture :

Offre la possibilité de reconnaitre les codes à barres d‟une image sélectionnée à partir la
galerie :

Figure 81 Localisation et décodage des images sélectionné a partit la galerie

 ResultScan :

Cette activité a pour but d‟afficher les chiffres du code à barres scanné et les différents
chemins pour récupérer les informations du produit reconnu : La base de

93
données(SearchActivity), Google (Figure 82) et un comparateur de prix (Figure 83), elle
permet également d‟ajouter le produit au panier.

Figure 84 Interface: résultat du scan

Figure 85 Interface rechercher dans Prixing Figure 86 rechercher dans Google

 SearchActivity :

Offre la possibilité de la recherche d‟un produit dans la base de données de SiaScan par
son code ou son nom.

94
Figure 87 Interface: Récupérer des informations du produit scanné

 AddToPanier :

Affiche un formulaire pour ajouter un produit au panier, si le produit existe déjà dans le
panier l‟application met à jour sa quantité.

Figure 88 Ajouter un produit au panier

Les produits ajoutés au panier sont enregistrés à la base de données SQLite.

 PanierActivity :

Affiche la liste des produits ajoutés au panier et le montant total du panier.

95
Figure 89 Interface: Panier des produits à commander

ii. Diagramme de classe de Package com.siascan.barcode.reader


Ce package rassemble tous les traitements appliqués sur la ligne d‟analyse du code-
barres pour extraire les informations pertinente pour la reconnaissance du code-barres.

96
iii. Diagramme de classe de package com.siascan.reader.EAN13

97
iv. Diagramme de classe de package com.sia.siascan.metier.Sqlite
Ce package regroupe les différents classes utilisées pour créer et gérer la base de donnée
SQLite, contient:

 la classe MaBaseSQLite : permet de créer une base de données sqlite pour


enregistrer les articles d'un panier dans une session d'installation.

 la classe panierBDD : définie les méthodes utilisées pour gérer le panier.

4. Implémentation
Dans cette partie nous présentons l'architecture sur laquelle nous avons développé notre
application, les différents outils utilisés ainsi que les composantes applicatives réalisées.

a.Environnement matériel
i. Architecture matérielle
Siascan est une application mobile pour décoder les codes à barres, qui se connecte à un
serveur de bases de données distant via un service web afin de récupérer informations des
produits. Donc l‟architecture de notre application est à 3 niveaux (architecture 3-tiers), elle
est partagée entre:

 Le client Android : l‟application Siascan.

98
 Le serveur Web : gérer la communication entre le client Android et le
serveur de base de données

 Le serveur de base de données : fournis les données au serveur web.

Figure 90: Architecture matériel

ii. Matériels utilises


Pour la réalisation du projet, nous avons utilisé :
 Un pc portable pour le développement ayant les caractéristiques
suivantes :
o Processeur Intel Core 2 Duo 2.3 GHz,
o 4 Go de mémoire vive,
o Disque dur de capacité 320 Go,
o Système d‟exploitation Microsoft Windows 7.
 Portable Samsung Galaxy, pour les tests.

b. Technologies et bibliothèques
i. Technologies
Ci-dessous une liste représentant les différentes technologies utilisées dans notre
application :

 Android : Système d'exploitation open source pour Smartphones, PDA et


terminaux mobiles.

 JAVA : Est un langage de programmation informatique orienté objet. La


particularité principale de Java est que les logiciels écrits dans ce langage
sont très facilement portables sur plusieurs systèmes d‟exploitation tels
qu‟UNIX, Windows, Mac OS ou GNU/Linux.

 PHP : Langage de scripts libre, utilisé principalement pour produire des


pages Web dynamiques.

 MYSQL : Système de gestion de base de données (SGBD).

99
 Web Service : Un service web est un programme informatique permettant la
communication et l'échange de données entre applications et systèmes
hétérogènes dans des environnements distribués.

Dans sa présentation la plus générale, un service web se concrétise par un agent, réalise
selon une technologie informatique précise, par un fournisseur du service. Un demandeur, a
l'aide d'un agent de requête, utilise ce service. Fournisseur et demandeur partagent une
même sémantique du service web, tandis qu'agent et agent de requête partagent une même
description du service pour coordonner les messages qu'ils échangent.

Figure 91 Schéma généraliste d'un web service

Un web service s'appuie sur deux technologies pour faire fonctionner ce schéma. D'une
part il y a SOAP (Simple Object Access Protocol) pour l'échange de message, d'autre part il
y a WSDL (Web Services Description Language, base sur XML) pour définir comment
communiqué pour utiliser le web service.

ii. Bibliothèques
 KSOAP2 : une bibliothèque pour les environnements java tels que Android et
J2ME, permet de créer des clients web service et la gestion des requêtes soap et
la connexion TCP,...

 OpenCV : (pour Open Computer Vision) une bibliothèque graphique libre,


initialement développée par Intel, spécialisée dans le traitement d'images.

 SQLite : une bibliothèque écrite en C qui propose un moteur de bases de données


relationnelles accessibles par le langage SQL.

c. Protocoles et formats de données

 SOAP :

100
Il permet la transmission de messages entre objets distants, ce qui veut dire qu'il
autorise un objet à invoquer des méthodes d'objets physiquement situent sur un autre
serveur. Le transfert se fait le plus souvent à l'aide du protocole HTTP, mais peut également
se faire par un autre protocole, comme SMTP. Le protocole SOAP est composé de deux
parties :

 une enveloppe, contenant des informations sur le message lui-même afin de


permettre son acheminement et son traitement,

 un modèle de données, définissant le format du message, c'est-à-dire les


informations à transmettre.

SOAP est en fait un format d'échange de messages base sur XML. Sa structure est la
Suivante :

Figure 92 Structure d'une enveloppe soap

Le WSDL décrit une Interface publique d'accès à un Service Web, notamment dans le
cadre d'architectures de type SOA (Service Oriented Architecture).

Le WSDL sert à décrire le Protocole de communication (SOAP RPC ou SOAP oriente


message), le format de messages requis pour communiquer avec ce service, les méthodes
que le client peut invoquer ainsi que la localisation du service.

 JSON (JavaScript Object Notation)

Est un format de données textuel, générique, dérivé de la notation des objets du langage
ECMAScript. Il permet de représenter des informations structurées. Le principal avantage
de l‟utilisation de JSON, dans notre application, est qu‟il est simple à mettre en œuvre,
facile à apprendre, car sa syntaxe est réduite et non-extensible, ses types de données sont
connus et simples à décrire, peu verbeux et léger, ce qui le rend bien adapté aux terminaux
mobiles au contraire au langage XML qui est très verbeux

101
d. Architecture logiciel
La méthode la plus répandue de se connecter à une base de données MySQL à distance
à partir d'un appareil Android, est de mettre une sorte de service dans le milieu. MySQL est
habituellement utilisé avec PHP, donc la façon la plus simple et le plus évident est d'écrire
des scripts PHP pour gérer la base de données et exécuter ces scripts en utilisant le
protocole HTTP du système Android.

Nous avons codé les données dans le format JSON1, afin de communiquer les données
entre PHP et Android, en exploitant les options facile à utiliser construit dans les fonctions
JSON dans les deux langages.

Si nous parlons de l'architecture 3-tiers de point de vue technologie, le client est la


plateforme Android, le serveur web est le PHP et le serveur de bases de données est le
MySQL.

 Serveur base de données MYSQL

Nous avons créé une base de données de test établit à partir de données trouvées sur le
web, afin d'alimenter le web service.

Cette base de données est utilisée au niveau du serveur PHP. Celui-ci définit toute la
partie traitement du web service. Il est compose d'un ensemble de fonctions qui définissent
la réponse à apporter a une requête de type SOAP. Le message de retour envoyé dans le
message SOAP est sous le format JSON, pour une plus grande souplesse d'utilisation.

 Serveur de Script PHP :

Nous avons créé 2 fichiers pour faire fonctionner notre web service:

 WSproducts.php : serveur SOAP en PHP, décrit un ensemble de fonctions pour :

 Récupérer des informations sur un produit getProducts


($CodeEAN13).

 Lister tous les produit (getAllProducts()).

 Commander ($CodeEAN13,$Quantite,$ID_Vendeur).

 Description du web service : WSproducts.wsdl :

Le web service étant fonctionnel après une étape de test à l‟aide d‟un client PHP, nous
nous sommes intéresse à l'utiliser dans l'application. Ceci passe par plusieurs étapes :

 Envoi d'une requête SOAP,

102
 Réception de la réponse,

 Traitement du message reçu,

 Affichage des données dans l'interface.

Figure 93 Architecture 3-tiers du point de vue technologie

e. Environnement de développement

 Eclipse :

Est un environnement de développement intégré libre extensible, universel et


polyvalent, permettant de créer des projets de développement mettant en œuvre n'importe
quel langage de programmation. Eclipse IDE est principalement écrit en Java (à l'aide de la
bibliothèque graphique SWT, d'IBM), et ce langage, grâce à des bibliothèques spécifiques,
est également utilisé pour écrire des extensions.

La spécificité d'Eclipse IDE vient du fait de son architecture totalement développée


autour de la notion de plugin : toutes les fonctionnalités de cet atelier logiciel sont
développées en tant que plug-in.

103
Dans le cadre de notre projet, nous avons utilisé la version Eclipse Indego, avec le
plugin ADT de Google.

 Android Development Tools, ou ADT

Est très complet et surtout très pratique : conception graphique d‟interfaces utilisateur,
deug distant sur un téléphone, gestion de l‟architecture de fichiers d‟une application etc.

 SDK Android :

Un petit logiciel permet d‟abord de télécharger les différentes versions du SDK (une
version du SDK par version d‟Android : 1.4, 1.5, 1.6, 2.0 etc.). Il permet également de
télécharger les différentes versions des Google APIs (APIs pour intégrer des fonctionnalités
liées aux services Google tels que Maps etc.) ou de la documentation JavaDoc. Son
fonctionnement est similaire aux gestionnaires de paquets de Linux.

IV. Conclusion :
Notre objectif principal dans ce projet est de concevoir et réaliser une application de
reconnaissance des codes à barres. Toutefois, nous avons doté cette application par une
fonctionnalité de récupération des informations des produits scannées.

En fait, nous n‟avons développé une application d‟achat en ligne ou bien un


comparateur de prix, l‟application donne seulement une idée sur ce qu‟on peut faire avec ce
lecteur de codes-barres.

104
Conclusion et perspectives
Dans ce mémoire, nous avons conçu et réalisé un système de localisation automatique et
reconnaissance de codes-barres EAN-13. Sachant que l'objectif de ce système est
l‟extraction de l‟information noyée dans la représentation graphique des codes-barres, nous
avons également développé une application de récupération des informations des différents
produits scannés.

Afin d'augmenter la robustesse et de diminuer la complexité de temps du système de


lecture code à barres, le système a été divisé en trois parties: le prétraitement, la localisation
automatique de la région du code-barres et le décodage du code-barres localisé. Tout
d'abord, l‟étape de prétraitement vise à préparer l‟image d‟entrée aux étapes ultérieures de
traitement en sous-échantillonnant les grandes images et extrayant l‟information pertinente
pour la reconnaissance du code-barres. Ensuite, l‟étape de localisation cherche à
positionner, d‟une manière automatique, le code-barres au sein d‟une image contenant
d‟autres objets. Et finalement, l‟étape de décodage déchiffre la représentation graphique du
code-barres en un ensemble de chiffres en se basant sur les largeurs des barres et espaces du
code-barres.

Les contributions de ce mémoire peuvent être résumées de la façon suivante : tout


d'abord, au niveau de la localisation automatique du code-barres, une amélioration de la
méthode de Gallo et Manduchi [42] a été exposée, en effet notre contribution permet de
surmonter des situations où la méthode de Gallo et Manduchi montre sa déficience. De plus,
notre méthode ne pose aucune condition sur l‟orientation du code-barres. En ce qui
concerne le décodage du code-barres, nous avons présenté une nouvelle technique de
détection des barres de garde du code-barres et une nouvelle approche de décodage basée
sur la normalisation des largeurs des barres et des espaces.

Les perspectives concernant ce mémoire sont multiples. Elles consistent, tout


d‟abord, à tester la performance de notre système en le comparant avec d‟autres systèmes
existants sur le marché (wokbench). Ensuite, nous envisageons de généraliser le système
pour toutes les normes des codes-barres unidimensionnels et en le dotant d‟une propriété de
différenciation entre les différentes normes. La dernière perspective concerne la mise en
œuvre d‟une solution de lecture des codes-barres de deux dimensionnels qui ne cessent pas
de se répandre jour après jour.

105
Références
[1] T.Pavlidis, J. Swartz, and Y. Wang. Fundamentals of bar code information theory.
Computer, 23(4):74–86, 1990.

[2] D. Chai, F. Hock: Locating and Decoding EAN-13 Barcodes from Images Captured by
Digital Cameras. 5th Int. Conf. on Information, Communications and Signal Processing,
1595–1599, 2005.

[3] A. Tropf and D. Chai. Locating 1-D bar codes in DCT-domain.In2006 IEEE International
Conference on Acoustics, Speech and Signal Processing, 2006.ICASSP 2006 Proceedings,
volume 2, 2006.

[4] S. Wachenfeld, S. Terlunen, and X. Jiang. Robust 1-D Barcode Recognition on Camera
Phones and Mobile Product Information Display, Mobile Multimedia Processing, Pages 53-
69, Springer-Verlag Berlin, Heidelberg , Germany, 2010, ISBN: 978-3-642-123488-1.

[5] C. Zhang, J. Wang, S. Han, M. Yi, and Z. Zhang. Automatic real-time barcode localization
in complex scenes. In International Conference of Image Processing, pages 497–500, 2006.

[6] R. Muniz, L. Junco, and A. Otero.A robust software barcode reader using the Hough
transform. Information Intelligence and Systems, 1999.Proceedings. 1999 International
Conference on, pages 313–319, 1999.

[7] N. Otsu. A threshold selection method from gray-level histograms. IEEE Transactions on
Systems, Man, and Cybernetics, 9(1):62–6, 1979.

[8] E. Ohbuchi, H. Hanaizumi, and L. Hock. Barcode readers using the camera device in
mobile phones. In Proceedings of the Third International Conference on Cyber worlds
(CW’04), volume 00, pages260–265, Los Alamitos, CA, USA, 2004.IEEE Computer Society.

[9] A. K. Jain and Y. Chen, Bar Code Localization Using Texture Analysis, Proceedings of the
Second IEEE International Conference on Document Analysis and Recognition, Tsukuba
City, Japan, pp.41-44, 1993.

[10] R. Shams and P. Sadeghi, Bar code recognition in highly distorted and low-resolution
images, IEEE International Conference on Acoustics, Speech and Signal, Honolulu, Hawai’i,
USA., pp.I-737-I-740, 2007.

*11+ Hong Shan Neoh, Asher Hazanchuk, “Adaptive Edge Detection for Real-Time Video

106
Processing using FPGAs”, IEEE International Conference on Intelligent and Advanced
Systems (ICIAS), 15-17 June 2010.

[12] Y. hu, J. Huang and Z. Ma, A Low Cost Barcode Recognition Method, The 6th
International Symposium on Instrumentation and Control Technology , Beijing, vol. 6357,
pp.63572W-1-63572W-5, Oct. 2006.

[13] J. Yao, Y. F. Fan and S. G. Pan, Segmentation of bar code image with complex
background based on template matching, Journal of Hohai University Changzhou, vol. 17,
no. 4, pp. 24-27,67, Dec. 2003.

[14] H. Z. He and Y. F. Fan, Study of Application of Moment-invariants in Bar Code


Identification System, Journal of Hohai University Changzhou,vol. 17, no. 2, pp. 23-26, Jun.
2003.

[15] S. X. Zhao and G. Song, Research on EAN-13 bar code recognition algorithm based on
image processing method, Jinan: Shandong University,2005.

[16] N. Z. Liu, Detection and Localization of Bar Code in Complicated Background, Journal
of Nanjing University of Aeronautics & Astronautics,vol.37, no. 1, pp. 65-69, Feb. 2005.

[17] Y. P. Guo and H. B. Zhou, The Application of Digital Image Processing Technology in
Barcode Identification, Journal of Hohai University Changzhou, vol. 16, no. 3, pp. 15-18,
Sept. 2002.

[18] R. C. Gonzalez, R. E. Woods and S. L. Eddins. Digital Image Processing Using MATLAB.
Beijing: Publishing House of Electronics Industry, 2005.

[19] H. Xue. Bar code Technology and commercial automation system .Beijing: China Light
Industry Press, 2007.

[20] V. Kulyukin, and A. Kutiyanawala, Eyes-free barcode localization and decoding for
visually impaired mobile phone users, Proceedings of the 2010 International
Conference on Image Processing, Computer Vision, and Pattern Recognition, 2010.

[21] Arnould S., Awcock G. J., and Thomas R., Remote Bar-code Localization Using
Mathematical Morphology., Image Processing and its Applications, Vol. 2, No.465, pp. 642-
646, 1999.

[22] Kutiyanawala A., Qi X., Tian J. A Simple and Efficient Approach to Barcode
Localization.7th International Conference on Information, Communication and Signal
Processing, Macau 2009

107
[23] Ruwan Janapriya, LasanthaKularatne, Kosala Pannipitiya, Anuruddha Gamakumara,
Chathura de Silva and NalinWickramarachchi.An Intelligent Algorithm for Utilizing a Low
Cost Camera as an Inexpensive Barcode Reader. Proceedings of first Annual Session of the
Sri Lanka Association for Artificial Intelligence (SLAAI), 16thSeptember 2003.

*24+ EmreBAŞARAN, Özgür ULUÇAY and SarpERTÜRK.READING BARCODES USING DIGITAL


CAMERAS THROUGH IMAGE PROCESSING.Proceedings of 5th International Symposium on
Intelligent Manufacturing Systems, May 29-31, 2006.

[24] BARCODE ISLAND WEBSITE, General and technical information about bar codes,
symbologies, and scanning technology, http://www.barcodeisland.com/.

[26] L.E. Albertelli, L. David Ii, N. Kung, System and Method for Fast Binarization of Bar
Codes in the Presence of Noise,WO 03/083762 Patent, Application No. PCT/US03/067 19,
2003.Also as US2003/0178490 A1 Patent.

[27] Y. Chen, Z. Yang, Z. Bai, and J. Wu, Simultaneous Real-Time Segmentation of


Diversified Barcode Symbolsin Complex Background, in Intelligent Networks and Intelligent
Systems, 2008. ICINIS’08. First International Workshop on, 2008, pp. 527–530.

[28] E. Joseph and T.Pavlidis, Barcode waveform recognition using peak locations,
IEEETrans. Pattern Analysis and Machine Intelligence, vol. 16, no. 6, pp. 630-640, June
1994.

[29] S.-C. J. Li, J.Xu, and T.Pavlidis, A Window Based Barcode Acquisition System, Proc.
SPIE, vol. 2181, pp.125-132, 1994.

[30] H.-Y.Liao, S.-J. Liu,L.-H. Chen, and H.-R.Tyan, A Barcode Recognition System Using Back
propagation Neural Networks, Engineering Applications of Artificial Intelligence, vol.8,
no.1,pp.81-90, 1995.

[31] S. X. Zhao and G. Song, Research on EAN-13 bar code recognition algorithm based on
image processing method, Jinan: Shandong University,2005.

[32] Q. F. Li, Z. L. Fu and Q. Liu, An effective skew image correction method, Computer
Engineering, vol. 32, no. 21, pp. 194-196, Nov. 2006.

[33] K. Wang, Y. Zou, and H. Wang.1D bar code reading on camera phones. International
Journal of Image and Graphics, 7(3):529–550, July 2007.

[34] QiaoLian-zhi, Deng Jun .A New Method for Bar Code Localization and Recognition.
Image and Signal Processing, 2009.CISP '09. 2nd International Congress on, 17-19 Oct.
2009.
108
[35] Jeffrey Adair. Locating, Tracking and Interpreting Ean-13 Barcode Waveforms in a
Two-Dimensional Video Stream. Technical Symposium on Computer Science Education,
SIGCSE, 2007.

[36]Kutiyanawala, A., Kulyukin, V., and Nicholson, J. (2011).Toward Real Time Eyes-Free
Barcode Scanning on Smartphones in Video Mode. In Proceedings of the 2011
Rehabilitation Engineering and Assistive Technology Society of North America Conference
(RESNA 2011), Toronto, Canada.

[37]Kutiyanawala, A. and Kulyukin, V. (2010).An Eyes-Free Vision-Based UPC and MSI Barcode
Localization and Decoding Algorithm for Mobile Phones. In Proceedings of Envision 2010, San
Antonio, Texas.

[38]Kulyukin, V., and Kutiyanawala, A. (2010).Eyes-Free Barcode Localization and Decoding for
Visually Impaired Mobile Phone Users. Proceedings of the 2010 International Conference on
Image Processing, Computer Vision, & Pattern Recognition (IPCV 2010), Vol. 1, pp. 130-
135.July 12-15, 2010, Las Vegas, NV. CSREA Press.

[39] A. Burian, M. Vehvilainen, M. Trimeche, J. Saarinen, “Document Image Binarization


Using the Camera Device in Mobile Phones”, IEEE International Conference on Image
Processing ICIP2005 , Vol. II, pp.546--549, September 2005, Genova, Italy.

[40] R. C. Gonzalez and R. E. Woods, Digital Image Processing, Second Edition, Prentice-
Hall, Upper Saddle River, New Jersey, 2002.

[41] M. Sonka, V. Hlavac, and R. Boyl, Image Processing, Analysis, and Machine Vision,
Second Edition, ISBN 0-534-95393-X

[42] Gallo, O. , Manduchi, R., Reading 1-D Barcodes with Mobile Phones Using Deformable
Templates, Pattern Analysis and Machine Intelligence, IEEE Transactions on, Volume: 33,
Issue: 9 , On Page(s): 1834 – 1843, Sept. 2011.

[43] Wu Xin-sheng ,QiaoLian-zhiand Deng Jun , A New Method for Bar Code Localization
and Recognition, Image and Signal Processing, 2009. CISP '09. 2nd International Congress
on, 17-19 Oct. 2009.

[44] Kutiyanawala A., Qi X., Tian J. A Simple and Efficient Approach to Barcode
Localization.7 th International Conference on Information, Communication and Signal
Processing, Macau 2009.

[45] Fisher R., Perkins S., Walker A. and Wolfart E. Line Detection.

109
[46] Klaus-Werner Jörg, TorstenGattung, Joachim Weber: Supporting Mobile Robot
Localization by Visual Bar Code Recognition. The International Association of Science and
Technology for Development Conference on Robotics and Applications (RA'99) Santa
Barbara, California, USA October 28-30, 1999

[47] RusenOktem, LeventOktem: A Super solution Approach for Bar Code Reading.

The European Signal Processing Conference 2005, Antalya, TURKEY.

[48] James Coughlan, Roberto Manduchi, and HuiyingShen: Cell Phone-based Wayfinding
for the Visually Impaired. International Workshop on Mobile Vision, in conjunction with
European Conference on Computer Vision 2006. Graz, Austria. May2006.

[49] Basilios Gatos, IoannisPratikakis, and Stavros J. Perantonis: An Adaptive Binarization


Technique for Low Quality Historical Documents. S. Marinai and A. Dengel (Eds.): DAS 2004
(Workshop on Document Analysis Systems), LNCS 3163, pp. 102-113, 2004. Springer-
Verlag Berlin Heidelberg 2004

[50] Todd Wittman: Lost in the supermarket: Decoding blurry barcodes. SIAM (Society for
Industrial and Applied Mathematics) News, Volume 37, Number 7, September 2004.

[51] Kuroki M., Yoneoka T., Satou T., Takagi Y., Kitamura T., Kayamori N.: Bar-code
recognition system using image processing.6th International Conference on Emerging
Technologies and Factory Automation, pp. 568-572, 9-12 September 1997.

[52] S. Shellhammer, D. Goren, and T. Pavlidis.Novel signal-processing techniques in


barcode scanning. IEEE Robotics & Automation Magazine, 6(1):57–65, Mar. 1999. ISSN
1070-9932. Doi: 10.1109/100.755815.

[53] P. Hough. Method and means for recognizing complex patterns. U.S. Patent
3,069,654, Dec.1962.

[54] R. O. Duda and P. E. Hart. Use of the Hough transformation to detect lines and curves
in pictures. Commun. ACM, 15(1):11–15, 1972. ISSN 0001-0782. doi:
http://doi.acm.org/10.1145/361237.361242.

*55+ Öktem, R., “Barcode Localization Algorithm Using Binary Morphology in Wavelet
Domain, SIU2004, 28-30 April 2004.

[56] Öktem, R., Çetin, A. E., Barcode Localization By Image Processing, SIU2005, 16-18 May
2005.

110
*57+ Li H., Lavin M. A., and Le Master R. J., “Fast Hough Transform: A hierarchical
approach”, CVGIP, Vol. 36, pp. 139-161, 1986.

*58+ Zapata, N., Guil, J. Villalba, “A fast Hough transform for segment detection”, IEEE
Trans. Image Process., Vol. 4, no. 11, pp. 1541-1548, 1995.

[59]Kongqiao Wang, YanmingZou, and Hao Wang, Bar code reading from images captured
by camera phones, Mobile Technology, Applications and Systems, 2nd IEEE International
Conference on, 15-17 Nov. 2005.

[60] N. Takahashi, M. Iwasaki, T. Kunieda, et al., "Image retrieval using spatial intensity
features," Signal Processing: Image Communication, 16(1, 2): 45 57, 2000.

[61] Kongqiao Wang, YanmingZou, and HaoWang: Bar code reading from images captured
by camera phones, Nokia Research Center, China.

[62] J.P.LiyanageEfficient Decoding of Blurred, Pitched, and Scratched Barcode Images

[63] A.Zamberletti, I. Gallo, M.Carullo and E.Binaghi: Neural image restoration for decoding
1-D barcodes using common common camera phonesUniversitadeglistudidell’Insubria, via
Ravasi2, Valese, Italy.

[64] Ender Tekin and James Coughlan: A Bayesian Algorithm for Reading 1D Barcodes

[65] Ender Tekin and James Coughlan: An Algorithm Enabling Blind Users to Find and Read
Barcodes.

[66] Emre BASARAN et al: Reading Barcodes using Digital cameras through image
processing

[67] Mobile Multimedia Processing: Fundamentals, Methods, and Applications

Par Xiaoyi Jiang, Matthew Y. Ma, Chang Wen Chen (Broché - 14 avril 2010).

[68] A. K. Jain and F. Farrokhnia. Unsupervised Texture Segmentation Using Gabor Filters.
Pattern Recognition, 24(12):1167 - 1186, 1991.

*68+ Hough, P. V. C., “A Method and Means for Recognizing Complex Patterns“, U.S. Patent
No. 3,069,654, 1962

[69] G.M. Davis ET A. Nosratinia, "Wavelet-based Image Coding: An Overview" Document


pdf, site Internet: http://www.geoffdavis.net/

*70+ Daubechies, “Orthonormal bases of compactly supported wavelets,” Commun. Pure

111
Appl. Math41, 909–996 (1988)

[71] Ando S., and Hontanj H., Automatic Visual Searching and Reading of Barcodes in 3-D
Scene, In Proceedings of the IEEE Int. Conf. on Vehicle Electronics. No 25-28, pp. 49-54,
September 2001.

[72] Sherin M. Youssef, Rana M. Salem: Automated barcode recognition for smart
identification and inspection automation

[73] Adelmann, R., Langheinrich, M., and Floerkemeier, C. (2006a). A toolkit for bar-code-
recognition and -resolving on camera phones – jump starting the internet of things. In
Proceedings of the workshop on Mobile and Embedded Interactive Systems (MEIS’06) at
Informatik 2006. GI Lecture Notes in Informatics Series (LNI), Dresden, Germany.

[73] Adelmann, R., Langheinrich, M., and Floerkemeier, C. (2006b). Toolkit for bar code
recognition and resolving on camera phones - jump starting the internet of things. In
Hochberger, C. and Liskowsky, R., editors, GI Jahrestagung (2), volume 94 of LNI, pages
366–373. GI.

[74] Hong-Yuan Liao ; Liang-Hua Chen ; Hsiao-Rong Tyan ; Jun-Wei Hsieh , Camera-based
bar code recognition system using neural net , Neural Networks, 1993. IJCNN '93-Nagoya.
Proceedings of 1993 International Joint Conference on, 25-29 Oct. 1993

[74] Youssef, S. M. and Salem, R. M. (2007). Automated bar-code recognition for smart
identification and inspection automation. Expert Syst. Appl., 33(4):968–977.

[75] Basaran, E., zgr Uluay, and Erturk, S. (2006). Reading bar-code using digital cameras
through image processing. In Proceedings of 5th International Symposium on Intelligent
Manufacturing Systems.

[76] Wikipedia, the free encyclopedia. Available at: http://en.wikipedia.org/wiki/Barcode.

[77] J. Nicholson, V. Kulyukin and D. Coster, “ShopTalk: independent blind shopping


through verbal route directions and barcode scans”, The Open Rehabilitation Journal, ISSN:
1874-9437 Volume 2, 2009, pp. 11-23, DOI 10.2174/1874943700902010011.

[78] Occipital, LLC. Red Laser http://redlaser.com/

[79] The Zebra Crossing Barcode Decoding Library. http://code.google.com/p/zxing/

[79] D. G. Bailey, “Super-resolution of bar codes”, Institute of Information Sciences and


Technology, Massey University, New Zealand. Journal of Electronic Imaging / January 2001
/ Vol. 10(1)/213.

112
[80] Selim Esedoglu: Blind déconvolution of bar co de signals. Inverse Problems. 20 (2004),
pp. 121-135. November 2003

[81] -J. Lu, G.-L. Fan and Y.-K. Wang. A robust barcode reading method based on image
analysis of a hierarchical feature classification. In Intelligent Robots and Systems, 2006
IEEE/RSJ International Conference, pages 3358–3362, Beijing, China, Oct. 2006. ISBN 1-
4244-0258-1. Doi: 10.1109/IROS.2006.282512.

[82] Joseph and T. Pavlidis. Peak classifier for bar code waveforms. In11th IAPR
International Conf. Pattern Recognition Methodology and Systems, volume 2, pages 238–
241, Sept. 1992. ISBN 0-8186-2915-0. Doi: 10.1109/ICPR.1992.201763.

[83] Yahyanejad, S , Str m, J. Removing motion blur from barcode images, Computer
Vision and Pattern Recognition Workshops (CVPRW), 2010 IEEE Computer Society
Conference on, 13-18 June 2010.

[84] S. Wachenfeld, S. Terlunen, and X. Jiang. Robust recognition of 1-D barcodes using
camera phones. In International Conference of Pattern Recognition, pages 1–4, 2008.

[85] On the connection between RFID and the Internet of things, sec LU Y. ct alii (cds.), Tire
Internet of Things: From RFID to the Next-Generation Pervasive Networked Systems
(Witclcss Networks and Mobil: Communications), Boca Ramon: Aucrbach Publ., 2008.

[86] Sec C. FLOERKEMEIR ct alli eds., The Internet of Things: First International Conference,
IOT 2008, Zurich, Switzctland, March 26-28, 2008, Proceedings, Berlin: Springer, 2008; T.
IGOE, Making Things Talk: Practical Methods for Connecting Physical Objects, London:
Make Books, 2007.

[87] Rob Barrett and Paul P. Maglio. Informative things: how to attach information to the
real world. In UIST ‟98: Proceedings of the 11th annual ACM symposium on User interface
software and technology, pages 81–88, New York, NY, USA, 1998. ACM Press.

[88] Ari Juels. RFID Privacy: A Technical Primer for the Non-Technical Reader. In
Katherine Strandburg and Daniela Stan Raicu, editors, Privacy and Technologies of
Identity: A Cross-Disciplinary Conversation. Springer,2005.

[89] Tim Kindberg, John Barton, Jeff Morgan, Gene Becker, Debbie Caswell, Philippe
Debaty, Gita Gopal, Marcos Frid, Venky Krishnan, Howard Morris, John Schettino, Bill
Serra, and Mirjana Spasojevic. People, places, things: web presence for the real world.
Mobile Networks and Applications, 7(5):365–376, 2002.

113
[90] Michael Rohs. Real-World Interaction with Camera-Phones. In 2nd International
Symposium on Ubiquitous Computing Systems (UCS 2004), pages 39–48, Tokyo, Japan,
November 2004.

[91] RoyWant, Kenneth P. Fishkin, Anuj Gujar, and Beverly L. Harrison. Bridging physical
and virtual worlds with electronic tags. In CHI ‟99: Proceedings of the SIGCHI conference
on Human factors in computing systems, pages 370–377, New York, NY, USA, 1999.
ACM Press.

[92] ‫أنيس قوبعة‬," ‫ "من شبكات البيانات الرقمية إلى شبكات األشياء وأنظمة الحوسبة المادية‬, Communications
of the Arab Computer Society, Vol. 4 No.1, August, 2011

114

Vous aimerez peut-être aussi