TELNET

201 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
201
Sur SlideShare
0
Issues des intégrations
0
Intégrations
13
Actions
Partages
0
Téléchargements
13
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

TELNET

  1. 1. Ministère de l’Enseignement Supérieur et de la Recherche Scientifique    Université de Carthage    Institut National des Sciences Appliquées et de Technologie Année Universitaire: 2015/2016 Projet de Fin d’Etudes Pour l’obtention du Diplôme National d’Ingénieur En Sciences Appliquées et en Technologie Filière : Informatique Industrielle et Automatique Sujet : Réalisation d’un logiciel de reconnaissance de formes dédiées aux tests d’afficheurs LCDs Réalisé par : Karim BEN ALAYA Entreprise d’accueil : Soutenu le 20/06/2016 Président du jury : M. Nejemeddine SIFI Examinateur : Mme. Salma BEN SAID Responsable a l’entreprise : M. Haythem BELMABROUK Responsable à l’INSAT : M. Mohamed Ali HAMDI
  2. 2. Ministère de l’Enseignement Supérieur et de la Recherche Scientifique    Université de Carthage    Institut National des Sciences Appliquées et de Technologie Année Universitaire: 2015/2016 Projet de Fin d’Etudes Pour l’obtention du Diplôme National d’Ingénieur En Sciences Appliquées et en Technologie Filière : Informatique Industrielle et Automatique Sujet : Réalisation d’un logiciel de reconnaissance de formes dédiées aux tests d’afficheurs LCDs Réalisé par : Karim BEN ALAYA Entreprise d’accueil : Soutenu le 20/06/2016 Responsable à l’Entreprise : Prénom et NOM : Haythem BELMABROUK Senior Project Manager Responsable à l’INSAT : Prénom et NOM : Mohamed Ali HAMDI Maître-assistant à l’INSAT
  3. 3. Dédicaces Au Dieu tout puissant notre créateur. A ma mère, ma raison d’être, ma raison de vivre, la lanterne qui éclaire mon chemin et m’illumine de douceur et d’amour. A mon père, pour ses valeureux conseils et pour ses énormes efforts pour que je suis la bonne voie. A mon frère, pour ses supports et encouragements illimités. A tous mes enseignants durant mon parcours scolaires et universitaires, pourl’éducation et les sciences qu’ils m’ont transmis. A mes amis, et à tous mes proches.
  4. 4. Remerciements Suite à l’évènement de ce Projet de Fin d'Etudes a TELNET au centre urbain nord, je tiens à remercier toutes celles et tous ceux qui ont contribué à rendre cette expérience possible et si enrichissante. Je tien à présenter mes reconnaissances et remerciements à Mr Mohamed Ali HAMDI, maitre- assistant à l’INSAT, pour le temps consacré à la lecture et aux réunions qui ont rythmé les différentes étapes de ce projet. Les discussions que nous avons partagées ont permis d’orienter mon travail d’une manière pertinente. Je le remercie aussi pour sa disponibilité pour encadrer ce travail à travers ses critiques et ses propositions d’amélioration. J’exprime ma reconnaissance et gratitude à Mr Haythem BELMABROUK, chef de projets et manager (Solutions et produits) a TELNET pour ses conseils et son valeureux soutien. Ma très grande reconnaissance est exprimée à Mr Ahmed MEHDI, ingénieur développement embarqué à TELNET pour m’avoir suivis, conseillés et aidés. Je remercie aussi Mr Haithem KRIFA, mon collègue dans la réalisation de ce projet et ingénieur informaticien de l’ENISO, pour ses conseils et sa disponibilité. Je suis très reconnaissant à Mr le chef du jury pour avoir assisté à ma mémoire malgré ses nombreuses obligations. J’exprime vivement ma gratitude envers Mr le rapporteur pour sa participation à mon jury de mémoire. Enfin, je ne saurai terminer sans adresser un mot de reconnaissance à ma famille pour leur soutien sans faille et sans limite.
  5. 5. Table des matières Introduction générale ................................................................................................................................... 1 Chapitre 1 : Centre d’accueil et étude du besoin ......................................................................................... 3 Introduction .............................................................................................................................................. 3 1. Présentation de l’entreprise d’accueil ................................................................................................. 3 1.1. Présentation générale.................................................................................................................... 3 1.2. Historique de l’entreprise ............................................................................................................. 3 1.3. Principales activités du groupe ..................................................................................................... 5 2. Etude de l’existant ................................................................................................................................ 7 2.1. Descriptif de l’existant .................................................................................................................. 7 2.2. Critique de l’existant ..................................................................................................................... 8 3. Analyse du besoin ................................................................................................................................ 8 3.1. Les besoins fonctionnels ............................................................................................................... 8 3.2. Les besoins non-fonctionnels ........................................................................................................ 9 4. Exemples de solutions disponibles sur le marché ................................................................................ 9 4.1. Uracode ......................................................................................................................................... 9 4.1.1. Présentation générale d’Uracode ....................................................................................... 9 4.1.2. Caractéristiques et spécifications techniques .................................................................. 10 4.1.3. Principe général de l’intégration d’Uracode ..................................................................... 11 4.1.4. Exemple d’utilisation d’Uracode ....................................................................................... 12 4.2. Intellicheck .................................................................................................................................. 12 4.2.1. Présentation générale d’Intellicheck ................................................................................ 12 4.2.2. Caractéristiques et spécifications techniques .................................................................. 13 4.2.3. Principales fonctions du logiciel ....................................................................................... 13 4.2.4. Principales applications d’Intellicheck .............................................................................. 14 Conclusion .............................................................................................................................................. 14 Chapitre 2 : Traitement de l’image et outils de travail .............................................................................. 15 Introduction ............................................................................................................................................ 15 1. Rappel sur les notions fondamentales du traitement d’image .......................................................... 15
  6. 6. 1.1. Codage des couleurs ................................................................................................................... 15 1.1.1. Le système RVB ................................................................................................................. 15 1.1.2. Le cube des couleurs ......................................................................................................... 16 1.2. Les formats d’images .................................................................................................................. 17 1.2.1. Images matricielles (ou images bitmap)............................................................................ 17 1.2.2. Images vectorielle ............................................................................................................. 18 1.3. Quelques opérations sur les images ........................................................................................... 19 1.3.1. Le négatif .......................................................................................................................... 19 1.3.2. Le rouge ............................................................................................................................ 19 1.3.3. Le niveau de gris ............................................................................................................... 19 1.3.4. Le seuillage ........................................................................................................................ 20 1.3.5. Le lissage ........................................................................................................................... 21 1.3.6. L’accentuation .................................................................................................................. 21 1.3.7. La pixellisation .................................................................................................................. 22 1.3.8. Le filtre médian ................................................................................................................. 22 2. Choix des outils du développement de la solution ............................................................................ 23 2.1. Environnement de traitement d’images ..................................................................................... 23 2.1.1. MATLAB ............................................................................................................................ 23 2.1.2. AFORGE ............................................................................................................................. 25 2.1.3. OpenCV ............................................................................................................................. 25 2.2. Environnement de développement de l’interface graphique ..................................................... 27 2.2.1. QT ...................................................................................................................................... 27 2.2.2. wxWidgets ........................................................................................................................ 28 2.3. Algorithmes de reconnaissance de formes ................................................................................. 28 2.3.1. K-plus proche voisins ........................................................................................................ 28 2.3.2. Machines à vecteurs supports .......................................................................................... 32 2.4. Les méthodes utilisées ................................................................................................................ 34 Conclusion .............................................................................................................................................. 34 Chapitre 3 : Conception et réalisation de la solution ................................................................................. 35 Introduction ............................................................................................................................................ 35 1. Conception de la solution .................................................................................................................. 35 1.1. Diagramme des cas d’utilisation système ................................................................................... 35
  7. 7. 1.2. Raffinement du Diagramme des cas d’utilisation système ......................................................... 36 1.2.1. Etude du cas "Contrôle de la camera"............................................................................... 36 1.2.2. Etude du cas "Modification des paramètres".................................................................... 36 1.3. Diagramme de classe .................................................................................................................. 37 1.4. Diagramme de séquence ............................................................................................................ 38 1.4.1 Diagramme de séquence "Contrôle de la camera" ............................................................ 39 1.4.2 Diagramme de séquence "Modification les paramètres de traitement vidéo" ................. 40 2. Réalisation de la solution ................................................................................................................... 40 2.1. Les principales fonctions de base du code source ...................................................................... 40 2.1.1. SetSettings()....................................................................................................................... 40 2.1.2. Retrieve_default_LCD() ..................................................................................................... 42 2.1.3. FindmyLCD_AUTO() ........................................................................................................... 42 2.1.4. Findmychars(x, y, width, height, im, Blur, Thresh_V1, Thresh_ V2, dilat_erode)............. 43 2.2. La génération de la bibliothèque des caractères ........................................................................ 50 2.3. Compilation, tests et résultats obtenus (version Béta du logiciel).............................................. 51 Conclusion .............................................................................................................................................. 54 Conclusion générale et perspectives ......................................................................................................... 55 Sitographie.................................................................................................................................................. 57
  8. 8. Liste des figures Figure 1 : Organigramme du groupe par pole de métier (année 2014) .....................................................5 Figure 2 : Principaux partenaires du groupe Telnet......................................................................................7 Figure 3 : Les indicateurs des compteurs électriques intelligents................................................................7 Figure 4 : Interface utilisateur du logiciel Uracode .....................................................................................10 Figure 5 : Codage RVB ..................................................................................................................................16 Figure 6 : Cube des couleurs .........................................................................................................................16 Figure 7 : Image matricielle imprimé ...........................................................................................................17 Figure 8 : Le négatif de l’image Lena ...........................................................................................................19 Figure 9 : Le rouge de l’image Lena .............................................................................................................19 Figure 10 : Le niveau de gris de l’image Lena .............................................................................................20 Figure 11 : Le seuillage d’une image niveau de gris de Lena ....................................................................20 Figure 12 : Le seuillage d’une image couleur de Lena ...............................................................................21 Figure 13 : Le lissage de l’image Lena .........................................................................................................21 Figure 14 : L’accentuation de l’image Lena .................................................................................................22 Figure 15 : La pixellisation de l’image Lena ................................................................................................22 Figure 16 : L’élimination du bruit dans l’image Lena ................................................................................23 Figure 17 : Liste des fonctions disponible sous la ToolBox de MATLAB .............................................24 Figure 18 : Exemple d’application de l’algorithme KNN .........................................................................29 Figure 19 : Organigramme de l’algorithme des K-plus proche voisins....................................................31 Figure 20 : hyperplan séparateur optimal ....................................................................................................33 Figure 21 : Diagramme des cas d’utilisation système..................................................................................35 Figure 22 : Diagramme du cas contrôle de la camera.................................................................................36 Figure 23 : Diagramme du cas modification des paramètres.....................................................................37 Figure 24 : Diagramme de classe du logiciel................................................................................................38 Figure 25 : Représentation générale de la solution proposée....................................................................39 Figure 26 : Diagramme de séquence "Contrôle de la camera"..................................................................39 Figure 27 : Diagramme de séquence "Contrôle de la camera"..................................................................40 Figure 28 : Organigramme de la fonction SetSettings() .............................................................................41 Figure 29 : Organigramme de la fonction FindmyLCD_AUTO()...........................................................43 Figure 30 : Organigramme de la fonction Findmychars()..........................................................................44
  9. 9. Figure 31 : Génération de la bibliothèque des caractères...........................................................................51 Figure 32 : Image de test du logiciel..............................................................................................................51 Figure 33 : Résultat de la compilation de la solution..................................................................................52 Figure 34 : Résultat obtenu pour une configuration optimale ..................................................................53 Figure 35 : Résultat obtenu pour une configuration non-optimale..........................................................54
  10. 10. Liste d’abréviations CMMI: Capability Maturity Model Integration ISO: International Organization for Standardization MENA: Middle East & North Africa IEEE: Institute of Electrical and Electronics Engineers LCD: Liquid Crystal Display FPS: Frame Per Second IHM: Interface Homme Machine GUI: Graphical User Interface RVB: Rouge Vert Bleu MATLAB: MATrix LABoratory KNN: K-Nearest Neighbor SVM: Support Vector Machines
  11. 11. 1 Introduction générale es applications de vision industrielle sont aujourd’hui nombreuses et se sont ouvertes à tous les secteurs de l'industrie. En effet, les progrès techniques tant au niveau des caméras et des systèmes d’éclairage que des systèmes informatiques ont permis un élargissement considérable du champ d'application de la vision industrielle. Dans ce cadre, la lecture automatique sur les écrans LCD des compteurs électriques représente un enjeu majeur. En effet, l’implémentation d’une telle solution requiert d’une part une profonde compréhension du domaine du traitement d’image (à savoir : le passage du RGB au niveau de gris, le lissage, le seuillage, la détection de contours, la reconnaissance de forme) et d’autre part une excellente maitrise de l’outil informatique (comme : Microsoft Visual Studio, Algorithmique, Python, etc.). C’est dans cet état de l’art que la bibliothèque de fonctions graphique OpenCV fut créé il y a plus de 17 ans (1999) et qui regroupe aujourd’hui des milliers de classes et fonctions et plus de 500 algorithme optimisé et mis à jour régulièrement. L’entreprise TELNET HOLDING, dans laquelle j’ai effectué mon stage, s’est fixé pour objectif le développement d’un Software permettant avant tout la lecture du contenu des écrans LCD de ses compteurs électriques et la mémorisation des données extraites dans un fichier log. Puis, dans un deuxième temps, ce software devra extraire les données venant des trames transportant l’information qui doit être a priori affiché sur l’écran du compteur. Enfin, la comparaison entre les deux flux d’information devra trancher sur le bon fonctionnement de l’appareil électrique. Ma mission au cours de ce stage a consisté à réaliser la première partie du travail qui porte à concevoir un logiciel permettant de capter les différentes formes affiché sur l’écran LCD, d’analyser les données et d’en déduire leurs significations avant de stocker le résultat dans la mémoire de l’ordinateur. Le présent rapport fait état de ce travail et s’articule autour de trois chapitres. Le premier chapitre intitulé « Centre d’accueil et analyse du besoin » est une présentation générale de l’entreprise d’accueil et une étude de l’existant pour mieux définir les besoins et les fonctions de notre application conduisant à la rédaction du cahier decharge.
  12. 12. 2 Le deuxième chapitre intitulé « Traitement de l’image et environnement informatique utilisé » consiste à rappeler tout d’abord les notions fondamentales utilisées dans ce domaine, puis de proposer différentes variantes de développement afin de conclure sur l’outil final avec lequel la solution sera réalisée. Enfin, le troisième chapitre intitulé « Conception et réalisation de la solution » sera consacrée à la conception de l'application : il s'agit d'une phase de modélisation théorique de l'application. Et aussi une description détaillée des outils utilisés pour développer l’application de vision industrielle, l’architecture du système et le matériel de déploiement de l’application. Nous concluons ce rapport par un récapitulatif des travaux effectués au cours de ce projet et par des perspectives en vue d’améliorer et d’enrichir cetravail.
  13. 13. 3 Chapitre 1 : Centre d’accueil et analyse du besoin Introduction Dans ce chapitre nous allons tous d’abord faire la présentation de l’entreprise ainsi qu’une étude de l’existant. Ensuite nous allons définir convenablement notre besoin avant de terminer avec l’énumération de quelques solutions déjà présente sur le marché. 1. Présentation de l’entreprise d’accueil 1.1. Présentation générale Telnet [1] est un groupe tunisien de sociétés d’ingénierie et de conseil, fondé en 1994 pour répondre à une demande croissante de développement des logiciels dans le secteur des hautes technologies offrant ses services en mode offshore et nearshore. Avec ses multiples filiales situées en Tunisie et en France, le groupe œuvre pour plusieurs domaines liés au secteur technologique, en proposant un éventail de compétences considérables, à savoir dans le domaine de la télécommunication, le multimédia, l’électronique, l’automobile, le domaine de la monétique et carte à puces, sécurité, défense et avionique ainsi que les systèmes d’informations. Telnet dispose d’un centre de développement qui a été certifié CMMI niveau 5 en 2006 et ISO 9001 version 2008 ce qui lui permet de garantir la sécurité, la confidentialité et la propriété intellectuelle de ses prestations. Telnet a cherché depuis sa création à élargir ses champs de compétences ainsi que ses activités que ce soit dans le développement logiciel consacré au domaine des technologies de l’information, de l’informatique scientifique et technique, des systèmes embarqués temps réel et des tests unitaires pour les applications critiques couvrant pratiquement l’ensemble des domaines d’activités. En février 2013, au canada, le groupe Telnet à travers sa filiale DataBox, s’est vu décerné par l’équipementier Polycom le prix <> pour la région MENA (Middle East & North Africa) pour ses performances exceptionnelles durant l’année 2012 en termes de développement des solutions innovantes et de communication unifiées et de collaboration du constructeur Polycom sur le marché tunisien et africain. 1.2. Historique de l’entreprise - Dès 1995 [1], TELNET obtient son premier contrat avec un groupe international. Celui-ci sera son principal vecteur de développement.
  14. 14. 4 - Depuis 1997, TELNET se spécialise dans les développements offshores au profit de grands groupes internationaux. - En 1998, TELNET est certifié ISO 9001. Depuis début 2002, TELNET adopte le référentiel ISO 9001 version 2000 pour son système de management de la qualité. - En 2000, TELNET dépasse la barre des 50 ingénieurs. - En 2002, TELNET déménage dans ses propres locaux situés au Centre Urbain Nord à Tunis. - En 2004, mise en route de la certification CMMi niveau 5. - En 2004, ouverture de la première filiale de TELNET en France : TELNET Consulting. - En 2004, TELNET célèbre son 10ème anniversaire. - En 2006, TELNET a obtenu le niveau 5 selon le modèle CMMi. - Depuis novembre 2007, TELNET opère à partir de quatre sites différents, trois sites en Tunisie et un en France. - En juillet 2008, création d’une Joint-venture entre le Groupe ALTRAN et le Groupe TELNET. - En novembre 2008, signature d’un Mémorandum d’entente entre Patton Electronics et le groupe TELNET. - En février 2009, signature d’un accord de coopération industrielle entre le Groupe SAFRAN et le Groupe TELNET dans les domaines de l’aéronautique, de la sécurité et des cartes à puces. - En juin 2009, TELNET et Dassault Systèmes signent une convention cadre <<PLM pour l’économie numérique en Tunisie >> au salon de l’Aéronautique et de l’Espace 2009 du Bourget. - En juin 2009, Teuchos, Safran Aerospace India et TELNET s’allient pour étendre leur offre de service dans le domaine des équipements et systèmes embarqués au Salon de l’Aéronautique et de l’Espace 2009 du Bourget. - En juillet 2009, TELNET obtient la certification ISO 9001 version2008. - En septembre 2009, le groupe inaugure son nouveau site : le TELNET TECHNOCENTRE aux Berges du Lac de Tunis. - Avril 2010, TELNET devient membre de l’IEEE <<Institute of Electrical and Electronics Engineers>>. - Aout 2010, signature d’un accord de collaboration entre le Commissariat à l’Energie Atomique et aux Energies Alternatives (CEA) et TELNET pour la création d’une plateforme commune de recherche et de développement le LINKLAB.
  15. 15. 5 - Septembre 2010, Création du Conseil Scientifique d’Innovation, un comité composé d’éminents professeurs et chercheurs d’universités et de laboratoires tunisiens et européens, il joue le rôle de support en expertise multi-domaines pour orienter et superviser les activités de recherches et d’innovations du groupe TELNET en France et en Tunisie. - En décembre 2010, TELNET compte plus de 500 employés dont plus de 420 ingénieurs. La figure suivante représente l’organigramme du groupe par pole de métier (année 2014) : Figure 1 : Organigramme du groupe par pole de métier (année 2014) [1] 1.3. Principales activités du groupe Telnet [1] propose des compétences multiples dans le domaine des télécommunications, elle opère dans le développement embarqué notamment pour les passerelles d’entreprise voix / données et les
  16. 16. 6 routeurs commutateurs multi protocole, et développe des activités de validations, de qualification et de test pour les technologies ADSL – WIFI (modems et passerelles résidentielles XDSL) et les technologies GSM (mobiles 3G, tests d’interopérabilité opérateurs). Elle opère aussi dans le développement, la qualification, la validation et les tests des plateformes DECT. Par ailleurs, Telnet a acquis une forte expérience de 15 ans dans le domaine automobile. Elle intervient sur des projets innovants touchant différentes fonctionnalités du véhicule. Les interventions dans le secteur de l’automobile portent essentiellement sur le développement des softs embarqués pour les calculateurs de contrôle moteur, les calculateurs de direction à assistance 7 variable ainsi que les calculateurs de suspension. Elle apporte en outre son savoir-faire sur des projets de veille technologique portant sur le développement de l’électro-mobilité et des véhicules à très faible consommation. Telnet œuvre aussi bien dans le domaine du multimédia grand public tels que les écrans LCD/DLP, les décodeurs IP, les récepteurs et les imprimantes photo, que pour le compte des opérateurs à travers les encodeurs CBR/VBR, les multiplexeurs, les modulateurs ou encore les serveurs vidéos. Ce groupe développe sur mesure des produits à base d’électronique numérique ou analogique.Leur prestation peut couvrir les domaines suivants : étude de faisabilité, définition du cahier des charges et spécifications du système, identification des composants, développement de la carte électronique, réalisation du routage et fichiers gerber, réalisation duprototype. Elle prend en compte dès la conception de toutes les spécificités liées au métier et aux contraintes d’utilisation (CEM, humidité, température, etc.) et la conception pour la production DFM (contraintes de fabrication des cartes et packaging de produits) et du design pour la testabilité, DFT Les principaux partenaires du groupe Telnet sont :
  17. 17. 7 Figure 2 : Principaux partenaires du groupe Telnet [1] 2. Etude de l’existant 2.1. Descriptif de l’existant La vérification des écrans des compteurs LCD étant manuelle avant l’élaboration de ce projet, nécessitait la forte présence physique et mentales des techniciens pendant des heures voir des jours entiers (dépendant de la durée de test). Les techniciens avaient pour tâche principale de prendre les valeurs affichées sur les différents compteurs à des intervalles de temps régulier et de les enregistrer dans un fichier Excel en veillant à bien indiqué la date exacte de chaque mesure. Figure 3 : Les indicateurs des compteurs électriques intelligents
  18. 18. 8 2.2. Critique de l’existant Ce travail primitif et ennuyeux avait à mainte reprise présenté ses limites et le risque qu’il portait pour l’image de l’entreprise derrière la possibilité de commettre certaine erreurs de lecture ou d’enregistrement. 3. Analyse du besoin Cette partie va servir à poser les bases du recueil des besoins du système à réaliser. Pour pouvoir clarifier les besoins des utilisateurs de notre application, nous allons présenter les besoins fonctionnels ainsi que les besoins non fonctionnels. Voici donc en premier temps les besoins fonctionnels : 3.1. Les besoins fonctionnels Il s'agit des fonctionnalités du système. Ce sont les besoins spécifiant un comportement d'entrée / sortie du Système. Le système à concevoir doit permettre à l’utilisateur d’effectuer les opérations suivantes :  Gestion des variables soft : l’application devra permettre de manipuler convenablement les variables critiques du logiciel : modifier les valeurs des variables, suggérer des valeurs par défaut, sauvegarder les variables utilisés comme variables par défaut,etc.  Détection de l’écran LCD : le logiciel permet de détecter la position de l’écran LCD avec une précision et une fiabilité élevé.  Gestion de la fréquence d’exécution : l’application devra permettre de gérer la fréquence d’exécution via l’FPS donné par l’utilisateur qui devra trancher sur le nombre d’image acquise et traité par seconde.  Extraction des données affichées : le logiciel devra identifier correctement les valeurs affichées des différents champs du compteurélectrique.  Sauvegarde des informations retenues : après chaque traitement de données, l’application doit enregistrer les résultats dans la mémoire du calculateur sous forme de fichier log afin d’en restituer l’intégralité à la fin du programme.
  19. 19. 9 3.2. Les besoins non-fonctionnels Les besoins non fonctionnels concernent les contraintes à prendre en considération pour mettre en place une solution adéquate aux attentes des concepteurs des architecturesdynamiques. Notre application doit nécessairement assurer ces besoins :  L’extensibilité : dans le cadre de ce travail, l’application devra être extensible, c’est-à-dire qu’il pourra y avoir une possibilité d’ajouter ou de modifier de nouvelles fonctionnalités.  L’interface : avoir une application qui respecte les principes des interfaces Hommes/Machines (IHM) tels que l’ergonomie et la fiabilité.  La performance : l’application devra être performante c’est-à-dire que le système doit réagir dans un délai précis, quelques soit l’action de l’utilisateur.  La convivialité : l’application doit être simple et facile à manipuler même par des non-experts.  L’ergonomie : le thème adopté par l’application doit être inspiré des couleurs et du logo type de l’entreprise d’accueil. 4. Exemples de solutions disponibles sur le marché Différents logicielle de reconnaissance automatique de formes peuvent être utilisé pour résoudre cette problématique, néanmoins on cite les deux suivant : 4.1. Uracode 4.1.1. Présentation générale d’Uracode Conçu pour être utilisé de façon intuitive, immédiate et transparente, Uracode [2] simplifie à l’extrême la création d’applications de reconnaissance de formes complexes en dégageant l’utilisateur des contraintes classiques de la vision industrielle : les variations d’aspect dans l’image d’un objet. Uracode supporte le test le plus difficile à satisfaire en Vision : l’épreuve dynamique. Ce test consiste à déplacer un objet devant une caméra, à le retirer du champ de vision, à le remplacer par un autre, le ramener dans le champ de vision, l’incliner, lui faire subir des rotations, des occultations, éteindre la lumière, provoquer des reflets, etc. Il est donc le premier logiciel du marché à réussir cette épreuve, qui confère à un système de vision des qualités comparables à celles de la vision humaine.
  20. 20. 10 La figure ci-dessous représente la fenêtre principale lors de l’ouverture de la version démo du logiciel : Figure 4 : Interface utilisateur du logiciel Uracode [2] 4.1.2. Caractéristiques et spécifications techniques Les caractéristiques générales d’Uracode sont :  Robustesse  Mobilité objets + caméra  Précision spatiale (1/16èmede pixel)  Précision angulaire (0,04° à 0,2°)
  21. 21. 11  Temps réel vidéo (25 Hz)  Objets complexes (sans limitation)  Recalage en translation/rotation  Résistance aux occultations, aux variations d’aspects et de lumière  Simplicité d’utilisation Alors que les spécifications minimales hardware et software requise sont :  Processeur 1Ghz (temps réel)  Au moins 32Mb de RAM  Projets complets pour Borland C++ Builder, MS Visual C++, MS Visual Basic…  SDK accepte toutes entrées vidéo (USB, FireWire, PCI, séquences Bitmaps, JPEG, …)  Windows XP, 98, 98SE, ME 4.1.3. Principe général de l’intégration d’Uracode L’intégration d’Uracode dans une application se fait de façon très simple : Uracode s’interface aisément avec toutes les sources vidéo (USB, FireWire, PCI, AVI, fichiers JPG, BMP,…) et il se programme rapidement en quelques lignes. Uracode met en œuvre les fonctionnalités suivantes :  Apprentissage  Identification  Localisation  Suivi d’objets  Gestion base d’objets  Mode objets simultanés  Fonctionnalités avancées
  22. 22. 12 Les sorties d’Uracode offrent de nombreux résultats (obtenus jusqu’à 30 fois par seconde): coordonnées de recalage, images recalées, niveaux d’identification, probabilités de présence, informations de bas niveau : contours, etc., faciles à exploiter pour concevoir des applications de vision des plus simples aux plus complexes. 4.1.4. Exemple d’utilisation d’Uracode Uracode est idéal pour la navigation automatisée en environnement confiné ou en milieu perturbé: milieu urbain pour la sécurité automobile, milieu naturel pour la navigation ou la surveillance des drones, milieu difficile pour les robots d’intervention sous-marins. Uracode permet de travailler avec les contraintes et le respect des normes en milieu industriel, pour des applications telles que l’inspection métrologique, la détection de défauts, mais aussi pour des applications plus dynamiques comme le guidage ou le recalage de robots. Uracode sait traiter n’importe quel type d’objet quel que soit son environnement et peut le reconnaître, le suivre, et ce, même s’il est occulté ou si les conditions d’éclairage et d’aspects changent. Uracode permet la surveillance automatique du trafic ou des intrusions dans les zones à risques avec ses sorties temps réel qui fournissent des données dynamiques sur tous les mobiles : trajectoire, comptage, … 4.2. Intellicheck 4.2.1. Présentation générale d’Intellicheck Intellicheck [3] est un logiciel ouvert et convivial de contrôle par caméras. Il a été particulièrement conçu pour répondre aux exigences et aux contraintes de la production industrielle, mais sa polyvalence et ses fonctionnalités le rendent accessible à de multiples applications. Intellicheck est bâti autour d'une architecture client/serveur modulaire et ouverte. En effet, plusieurs tâches peuvent communiquer entre elles en réseau ou non afin de réaliser les applications les plus complexes. Les différentes tâches réalisent l'acquisition, l'analyse et la visualisation des images et des résultats des contrôles associés. Une base de données est intégrée au système afin de contenir les différents paramètres : pièces, réglages caméras, ambiances lumineuses et contrôles pour chaque pièce. Cette
  23. 23. 13 base enregistre également les informations sur les pièces en défauts à travers des outils conviviaux et facilement accessibles en production. Intellicheck a été entièrement conçu pour la production et la maintenance industrielle. Il permet, entre autre, de visualiser les images et de modifier les contrôles sans arrêter le process, d'afficher alarmes et défauts, de réaliser des "passe travers" en cas de défauts, de réaliser des statistiques… 4.2.2. Caractéristiques et spécifications techniques Les interfaces matérielles d’Intellicheck peuvent être présentées comme suit :  Souplesse et facilité d'installation des caméras.  Pilotage des éclairages et des lasers, création d'ambiances.  Interfaçage avec un grand nombre de caméras analogiques et numériques.  Supporte des caméras pilotables (zoom, iris, balance des blancs) afin d'affiner et multiplier les contrôles et réduire ainsi le coût du système.  Communication avec tout type d'interface industrielle (automatismes, capteurs, robots), supporte les protocoles mobus, Jbus, Profibus, TOR, etc. Alors que d’un point de vue logicielle, l’application se caractérise par :  Intégration d'un grand nombre de fonctions de traitement et de manipulation d'images développées par ADDS CONCEPT.  L'architecture d'Intellicheck est complètement ouverte et a également été conçue pour accueillir des bibliothèques standards.  Créations de scénarios et de scripts de contrôles (opérations logiques, prises de décision, etc.).  Exportation des résultats vers des logiciels standards (Excel, base de données, etc.).  Création d'interfaces graphiques personnalisées. 4.2.3. Principales fonctions du logiciel Intellicheck peut être directement embarqué dans une caméra intelligente (Matrix) et ainsi fonctionner de façon complètement autonome. Une ouverture est toujours possible avec un PC portable afin de récupérer des informations diverses (images, défauts, statistiques, etc.).
  24. 24. 14 La fonction principale demeure l’aide à la production et à la maintenance industrielle qui peut être réalisé selon les avantages suivants :  Gestion avancée des défauts, traçabilité.  Base de données d'images et de résultats.  Statistiques et graphiques d'évolution des résultats.  Outils d'aide à l'amélioration des performances du système.  Interface de suivi de production dédiée et spécifique à chaque client.  Mode simulation, pour rejouer des séquences d'analyse sur un répertoire d'imagedonné.  Simplicité d'utilisation : le client est autonome sur le système après une formation de 3jours. 4.2.4. Principales applications d’Intellicheck Les principaux domaines d’utilisation peuvent être énumérés sont les suivants : contrôle de conformité, identification, mesure, guidage robot (2D, 3D), tri et comptage, analyse de particules, présence/absence, suivi de contour (contrôle soudure, joint, colle, etc.), lecture Datamatrix, code barre, LCD, colorimétrie, contrôle d'aspect, etc. Conclusion Les solutions déjà présentes sur le marché sont extrêmement fiables et performantes, néanmoins, elles sont très généralisé et incorporent plusieurs fonctions inutiles face à nos besoins. A part cela il faut aussi prendre en considération le cout de la licence d’exploitation, qui dans la plus part des cas dépasse le seuil du budget alloué par la société.
  25. 25. 15 Chapitre 2 : Traitement de l’image et outils de travail Introduction Après avoir fait une étude de l’existant et une spécification du besoin, il sera primordiale de faire un rappel des notions les plus importantes dans le domaine du traitement de l’image puis énumérer et bien étudier les différents outils de développement afin de trancher sur les moyens optimaux qu’on va utiliser pour résoudre ce problème. 1. Rappel sur les notions fondamentales du traitement d’image 1.1. Codage des couleurs Il existe plusieurs façons de coder les couleurs mais nous n’en présenterons ici que le système RVB car c’est le système avec lequel tous nos codes seront écrits ultérieurement. D’autres systèmes comme le système CMJN sont utilisé pour l’impression, tandis que le système RVB est utilisé pour la lumière (écran, projecteurs, …) [4]. 1.1.1. Le système RVB Il existe plusieurs façons de décrire les couleurs en informatique. Nous présentons ici une des plus utilisées : le codage RVB, qui est utilisé notamment dans les formats d’image JPEG et TIFF. Rouge vert bleu, abrégé RVB (ou RGB de l’anglais red, green, blue), est un format de codage des couleurs. Ces trois couleurs sont les couleurs primaires en synthèse additive. Elles correspondent en fait à peu près aux trois longueurs d’ondes auxquelles répondent les trois types de cônes de l’œil humain (voir trichromie). L’addition des trois donnes du blanc pour l’œil humain. Elles sont utilisées en éclairage afin d’obtenir toutes les couleurs visibles par l’homme. Elles sont aujourd’hui utilisées en vidéo, pour l’affichage sur les écrans, et dans les logiciels d’imagerie. C’est sur ce principe que fonctionnent les téléviseurs couleur. Si vous regardez un écran de télévision couleur avec une loupe, vous allez voir apparaître des groupes de trois points lumineux : un rouge, un vert et un bleu. La combinaison de ces trois points donne un point lumineux (un pixel) d’une certaine couleur. Le système RVB est une des façons de décrire une couleur en informatique. Ainsi le triplet {255, 255, 255} donnera du blanc, {255, 0, 0} un rouge pur, {100, 100, 100} un gris, etc. Le premier nombre donne la composante rouge, le deuxième la composante verte et le dernier la composante bleue.
  26. 26. 16 Figure 5 : Codage RVB [4] 1.1.2. Le cube des couleurs On peut représenter chacune de ces couleurs comme un point d'un cube de l'espace de dimension trois en considérant un repère orthonormé dont les trois axes r, g, b représentent les intensités de rouge, de vert et de bleu. L'origine représente ainsi le noir (r=g=b=0) et le point opposé (r=g=b=255) le blanc. Les trois sommets (255,0,0), (0,255,0) et (0,0,255) représentent les trois couleurs de base (rouge, vert, bleu) et les trois sommets opposés, (0,255,255), (255,0,255) et (255,255,0), le cyan, le magenta et le jaune. La grande diagonale de ce cube joignant le noir et le blanc est l'axe achromatique, i.e. l'axe des niveaux de gris. Figure 6 : Cube des couleurs [4]
  27. 27. 17 1.2. Les formats d’images On désigne sous le terme d'image numérique toute image acquise, créée, traitée ou stockée sous forme binaire (suite de 0 et de 1). 1.2.1. Images matricielles (ou images bitmap) Elles sont composées, comme leur nom l'indique, d'une matrice (tableau) de points colorés. Dans le cas des images à deux dimensions (le plus courant), les points sont appelés pixels. Ce type d'image s'adapte bien à l'affichage sur écran informatique ; il est en revanche peu adapté pour l'impression, car la résolution des écrans informatiques, généralement de 72 à 96 ppp (« points par pouce », en anglais dots per inch ou dpi) est bien inférieure à celle atteinte par les imprimantes, au moins 600 ppp aujourd'hui. L'image imprimée, si elle n'a pas une haute résolution, sera donc plus ou moins floue ou laissera apparaître des pixels carrés visibles. Figure 7 : Image matricielle imprimé [4] Les formats d'images matricielles les plus courants sont jpeg, gif, png, tiff, bmp.  Définition et résolution : La définition d'une image matricielle est donnée par le nombre de points la composant. En image numérique, cela correspond au nombre de pixels qui composent l'image en hauteur (axe vertical) et en largeur (axe horizontal) : 200 pixels x 450 pixels par exemple. La résolution d'une image matricielle est donnée par un nombre de pixels par unité de longueur (classiquement en ppp). Ce paramètre est défini lors de la numérisation (passage de l'image sous forme binaire), et dépend principalement des caractéristiques du matériel utilisé lors de la numérisation. Plus le nombre de pixels par unité de longueur de la structure à numériser est élevé, plus la quantité
  28. 28. 18 d'information qui décrit cette structure est importante et plus la résolution est élevée. La résolution d'une image numérique définit donc le degré de détail de l'image. Ainsi, plus la résolution est élevée, meilleure est la restitution. Cependant, pour une même dimension d'image, plus la résolution est élevée, plus le nombre de pixels composant l'image est grand. Le nombre de pixels est proportionnel au carré de la résolution, étant donné le caractère bidimensionnel de l'image : si la résolution est multipliée par deux, le nombre de pixels est multiplié par quatre. Augmenter la résolution peut entraîner des temps de visualisation et d'impression plus longs, et conduire à une taille trop importante du fichier contenant l'image et à de la place excessive occupée en mémoire. 1.2.2. Images vectorielle Le principe des images vectorielles est de représenter les données de l'image par des formules géométriques qui vont pouvoir être décrites d'un point de vue mathématique. Cela signifie qu'au lieu de mémoriser une mosaïque de points élémentaires, on stocke la succession d'opérations conduisant au tracé. Par exemple, un dessin peut être mémorisé par l'ordinateur comme « une droite tracée entre les points (x1, y1) et (x2, y2) », puis « un cercle tracé de centre (x3, y3) et de rayon 30 de couleur rouge ». C'est le processeur qui sera chargé de traduire ces formes en informations interprétables par la carte graphique. L'avantage de ce type d'image est la possibilité de l'agrandir indéfiniment sans perdre la qualité initiale, ainsi qu'un faible encombrement. L'usage de prédilection des images vectorielles concerne les schémas générés avec certains logiciels de DAO (Dessin Assisté par Ordinateur) comme AutoCAD. Ce type d'image est aussi utilisé pour les animations Flash. Étant donné que les moyens de visualisation d'images actuels comme les moniteurs d'ordinateur reposent essentiellement sur des images matricielles, les descriptions vectorielles (Fichiers) doivent préalablement être converties en descriptions matricielles avant d'être affichées comme images. Quelques formats d'images vectorielles : ai (Adobe Illustrator), eps (encapsulated postscript), pdf (portable document format), svg (scalable vector graphics), swf (flash).
  29. 29. 19 1.3. Quelques opérations sur les images 1.3.1. Le négatif Obtenir le négatif d'une image est très simple : toutes les composantes x de tous les pixels de l'image sont remplacées par 255−x. Figure 8 : Le négatif de l’image Lena [4] 1.3.2. Le rouge Chaque pixel de l'image est une combinaison de rouge, de vert et de bleu. En assignant la valeur 0 aux composantes verte et bleue, on obtient l'image de droite. Figure 9 : Le rouge de l’image Lena [4] 1.3.3. Le niveau de gris Dans une image en niveaux de gris, chaque pixel est noir, blanc, ou à un niveau de gris entre les deux. Cela signifie que les trois composantes ont la même valeur. L'œil est plus sensible à certaines couleurs qu'à d'autres. Le vert (pur), par exemple, paraît plus clair que le bleu (pur). Pour tenir compte de cette sensibilité dans la transformation d'une image couleur en une image en niveaux de gris, on ne prend généralement pas la moyenne arithmétique des intensités de couleurs fondamentales, mais une moyenne pondérée.
  30. 30. 20 La formule standard donnant le niveau de gris en fonction des trois composantes est : gris = int(round(0.299·rouge + 0.587·vert + 0.114·bleu)) Figure 10 : Le niveau de gris de l’image Lena [4] 1.3.4. Le seuillage Le seuillage d'image est la méthode la plus simple de segmentation d'image. À partir d'une image en niveau de gris, le seuillage d'image peut être utilisé pour créer une image comportant uniquement deux valeurs, noir ou blanc (monochrome). On remplace un à un les pixels d’une image par rapport à une valeur seuil fixée (par exemple 123). Ainsi, si un pixel à une valeur supérieure au seuil (par exemple 150), il prendra la valeur 255 (blanc), et si sa valeur est inférieure (par exemple 100), il prendra la valeur 0 (noir). Figure 11 : Le seuillage d’une image niveau de gris de Lena [4] Avec une image en couleur, on fera de même avec les trois composantes rouge, vert et bleu. Il y aura ainsi huit couleurs possibles pour chaque pixel : blanc, noir, rouge, vert, bleu, magenta, jaune et cyan.
  31. 31. 21 Figure 12 : Le seuillage d’une image couleur de Lena [4] 1.3.5. Le lissage Un filtre est une transformation mathématique (appelée produit de convolution) permettant de modifier la valeur d'un pixel en fonction des valeurs des pixels avoisinants, affectées de coefficients. Les calculs sont faits pour chacune des trois composantes de couleur. Le filtre est représenté par un tableau (une matrice), caractérisé par ses dimensions et ses coefficients, dont le centre correspond au pixel concerné. La somme des coefficients doit faire 1. Le tableau ci-dessous rend l'image plus floue. On dit que c'est un filtre passe-bas. Appliquer ce tableau revient en fait à remplacer la valeur de chaque pixel par la moyenne des 9 pixels formant un carré. 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 Figure 13 : Le lissage de l’image Lena [4] 1.3.6. L’accentuation À l'inverse, le tableau ci-après rendra l'image plus nette. C'est un filtre passe-haut.
  32. 32. 22 Attention ! Il peut arriver que la nouvelle valeur ne soit plus comprise entre 0 et 255. Il faudra donc toujours prendre min(x, 255) et max(x, 0), où x est la nouvelle valeur. 0 -0.5 0 -0.5 3 -0.5 0 -0.5 0 Figure 14 : L’accentuation de l’image Lena [4] 1.3.7. La pixellisation L'image est divisée en rectangles de la taille spécifiée (dans notre exemple 10x10 pixels). Chaque rectangle est ensuite rempli avec la couleur moyenne de la zone. Figure 15 : La pixellisation de l’image Lena [4] 1.3.8. Le filtre médian La technique de filtre médian est largement utilisée en traitement d'images numériques, car il permet de réduire le bruit tout en conservant les contours de l'image. L'idée principale du filtre médian est de remplacer chaque pixel par la valeur médiane de son voisinage. Considérons neuf pixels en niveaux de gris, dont une valeur est aberrante (ici 255) :
  33. 33. 23 2 4 12 2 255 3 7 9 3 Le filtre médian va d'abord trier ces valeurs par ordre croissant : 2, 2, 3, 3, 4, 7, 9, 12, 255 et prendre la valeur médiane (la cinquième valeur), ici la valeur 4. La sortie du filtre donnera : 2 4 12 2 4 3 7 9 3 Figure 16 : L’élimination du bruit dans l’image Lena [4] 2. Choix des outils du développement de la solution Actuellement, il existe plusieurs environnements de traitement d’image dont les plus invoqué sont : MATLAB, AForge et OpenCV comme il existe aussi plusieurs environnement de développement GUI comme : Qt et wxWidgets et bien entendu différents algorithmes de reconnaissances de forme dont les plus utilisés sont : KNN et SVM. Il est important de bien comprendre ces outils pour pouvoir faire le bon choix afin de répondre au maximum aux exigences et à la spécificité de notre logiciel. 2.1. Environnement de traitement d’images 2.1.1. MATLAB Une image Matlab est une matrice bidimensionnelle de valeurs entières ou réelles. Les principales fonctions de traitement d’images sous Matlab se trouvent dans la boîte à outils (toolbox) image
  34. 34. 24 processing (traitement d’images). L’aide sur cette boîte à outils est obtenue en tapant help images en ligne de commande de Matlab. Ensuite, l'aide sur une commande particulière est obtenue en tapant help suivi du nom de la commande, par exemple help edge. Figure 17 : Liste des fonctions disponible sous la ToolBox de MATLAB
  35. 35. 25 Comme on peut le constater, la boîte à outils images de Matlab contient de nombreuses fonctions qui permettent le développement facile et rapide d'algorithmes en fonction du problème à traiter. C'est un très bon outil pour la validation de méthodes de traitement d'images appliquées à un problème particulier. 2.1.2. AFORGE AForge.NET est un Framework C# open-source spécialement conçu pour les chercheurs et développeurs des domaines de la vision industrielle et de l’intelligence artificielle, traitement d’image, réseaux de neurones, algorithmes génétiques, logiques flous, apprentissage machines, robotique …etc. Le Framework [5] est constitué par l'ensemble des bibliothèques et des exemples d'applications, qui démontrent leurs caractéristiques:  AForge.Imaging : librairie avec des routines et filtres de traitementd’image  AForge.Vision : bibliothèque de vision parordinateur  AForge.Video : ensemble de librairie pour le traitementvidéo  AForge.Neuro : librairie de calcul par réseaux deneurones  AForge.Genetic : bibliothèque de programmationévoluée  AForge.Fuzzy : librairie de calcul par logiqueflou  AForge.Robotics : bibliothèque d’assistance pour les kits du domaine de larobotique  AForge.MachineLearning : librairie d’apprentissagemachine  etc. 2.1.3. OpenCV OpenCV est une bibliothèque open source de traitement d'image et vision par ordinateur, initialement développé par Intel et maintenant soutenue par Willow Garage [6]. Il est gratuit pour une utilisation commerciale et non commerciale. Il est donc pas obligatoire pour vos applications OpenCV d'être open source ou gratuite.
  36. 36. 26 C’est une bibliothèque de fonctions principalement destinées à un traitement d'image en temps réel. Actuellement, il dispose de plusieurs centaines d’algorithmes de traitement d'image et vision par ordinateur qui font du développement des applications avancés de vision par ordinateur quelque chose de facile et efficace. Parmis les caractéristiques de OpenCV on peut citer :  Optimisé pour le traitement en temps réel des images informatiques et des applications de vision.  Interface principale en C++  On peut aussi choisir des interfaces en C, Python etJava.  Les applications OpenCV sont compatible Windows, Android, Linux, Mac etiOS.  OpenCV est optimisé pour les processeursINTEL. OpenCV a une structure modulaire. Les principaux modules d’OpenCV sont énumérés ci-dessous :  core : Ceci est le module de base d’OpenCV. Il comprend les structures de base des données (Exemple : la structure de la matrice) et les fonctions de base de traitement d'image. Ce module est aussi largement utilisé par d'autres modules comme highgui,etc.  highgui : Ce module fournit des fonctions simples d'interface utilisateur, plusieurs codecs image et vidéo, des capacités de capture image et vidéo, la manipulation des fenêtres d'image, la manipulation des barres de piste et des événements de la souris, etc. Si vous désirez des interfaces utilisateur plus avancées, vous devez faire appel a d’autre Framework comme Qt, WinForms, etc…  imgproc : Ce module comprend des algorithmes de base de traitement d'image, y compris le filtrage d'image, transformations de l'image, les conversions d'espace couleur etc.
  37. 37. 27  video : Ceci est un module d'analyse vidéo qui inclut des algorithmes de suivi d'objets, des algorithmes de soustraction de fond etc.  objdetect : Cela comprend la détection de l'objet et les algorithmes de reconnaissance pour les objets standards. 2.2. Environnement de développement de l’interface graphique 2.2.1. QT Qt est une bibliothèque multi-plateforme pour créer des GUI (programme sous forme de fenêtre) [7]. Qt est écrite en C++ et est faite pour être utilisée à la base en C++, mais il est aujourd'hui possible de l'utiliser dans d'autres langages comme Java, Python, etc. Parmi les modules de Qt on peut citer :  Module GUI : il contient tous pour créer les fenêtres.  Module OpenGL : Qt peut ouvrir une fenêtre contenant de la 3D gérée parOpenGL.  Module de dessin : pour dessiner dans des fenêtres (en 2D).  Module réseau : Qt fournit une batterie d'outils pour accéder au réseau, que ce soit pour créer un logiciel de Chat, un client FTP, un client Bittorent, un lecteur de fluxRSS...  Module SVG : possibilité de créer des images et animations vectorielles, à la manière de Flash.  Module de script : Qt supporte le Javascript (ou ECMAScript), que vous pouvez réutiliser dans vos applications pour ajouter des fonctionnalités, sous forme de plugins parexemple.  Module XML : pour ceux qui connaissent le XML, c'est un moyen très pratique d'échanger des données avec des fichiers formés à l'aide de balises, un peu comme leXHTML.  Module SQL : permet un accès aux bases de données (MySQL, Oracle,PostgreSQL...).
  38. 38. 28 2.2.2. wxWidgets wxWidgets (au départ, connue sous le nom wxWindows) est une bibliothèque de développement multi-plateforme. Elle a à l'origine été créée pour permettre le développement d'applications en utilisant le même code sous Windows et Unix, et a ensuite été enrichie pour être compatible avec Linux, Mac, Windows CE, et bien d'autres systèmes d'exploitation [8]. Elle a l'avantage d'offrir une réduction des temps de programmation nécessaires pour qu'une application puisse être compilée et tourner sur tous ces systèmes d'exploitation. Il est possible de l'utiliser en passant, bien sûr, par le C++, mais également Python, Perl, C#, … De plus, elle contient un grand nombre de classes simplifiant l'utilisation de nombreux contrôles. Pour ce qui est de l'interface graphique, wxWidgets utilise, pour chaque plateforme, les API natives. Ce qui fait qu'une application aura, sous Windows, le look Windows, et sous Linux, le look Linux, etc… 2.3. Algorithmes de reconnaissance de formes 2.3.1. K-plus proche voisins Le data mining emploie des techniques et des algorithmes issus de disciplines scientifiques diverses telles que les statistiques, l‘intelligence artificielle ou l‘informatique, pour construire des modèles à partir des données. Parmi les techniques utilisées, il y a la méthode de k plus proche voisin. La méthode des k plus proches voisins est une méthode d’apprentissage supervisé dédiée à la classification [9]. En abrégé k-NN ou KNN, de l'anglais k-nearest neighbor, l’algorithme KNN figure parmi les plus simples algorithmes d’apprentissage artificiel. Son objectif est de classer les exemples non étiquetés sur la base de leur similarité avec les exemples de la base d’apprentissage. L’algorithme KNN est utilisé dans de nombreux domaines :  La reconnaissance deformes.  La recherche de nouveaux biomarqueurs pour lediagnostic.  Algorithmes de compression.  Analyse d’image satellite  Marketing ciblé
  39. 39. 29 Le principe de cet algorithme de classification est très simple. On lui fournit:  Un ensemble de données d’apprentissage D  Une fonction de distance  Un entier k Pour tout nouveau point de test x, pour lequel il doit prendre une décision, l’algorithme recherche dans D les k points les plus proches de x au sens de la distance d, et attribue x à la classe qui est la plus fréquente parmi ces k voisins.  Exemple : Dans l’exemple suivant, on a 3 classes et le but est de trouver la valeur de la classe de l’exemple inconnu x. On prend la distance Euclidienne et k=5 voisins. Des 5 plus proches voisins, 4 appartiennent à ω1 et 1 appartient à ω3, donc x est affecté à ω1, la classe majoritaire. Figure 18 : Exemple d’application de l’algorithme KNN [9]  Choix de la valeur de K : Généralement on prend K=1 pour les frontières des classes très complexes. Cependant, on aura les conséquences suivantes sur l’algorithme : - Très sensible aux fluctuations des données (varianceélevée).
  40. 40. 30 - Risque de sur-ajustement. - Résiste mal aux données bruitées. Par contre on prend K=n pour les frontières rigides avec les conséquences qui suivent : - Moins sensible au bruit - Plus la valeur de k est grande plus le résultat d’affectation est bienréalisée  Mesures de distances : Pour ce qui est des distances dist(xi, xj), on peut utiliser une des formules qui suivent : - La distance Euclidienne: qui calcule la racine carrée de la somme des différences carrées entre les coordonnées de deux points : 𝑑(𝑥, 𝑦) = √∑ (𝑥𝑖 − 𝑦𝑖)2𝑛 𝑖=1 Equation 1 - La distance de Manhattan: qui calcule la somme des valeurs absolues des différences entre les coordonnées de deux points : 𝑑(𝑥, 𝑦) = ∑ |𝑥𝑖 − 𝑦𝑖|𝑛 𝑖=1 Equation 2 - La distance de Minkowski: qui est une métrique de distancegénérale : 𝑑(𝑥, 𝑦) = √∑ |𝑥𝑖 − 𝑦𝑖| 𝑞𝑛 𝑖=1 𝑞 Equation 3  Exécution de l’algorithme : Soit D = {(x′, c), c ∈ C} l’ensemble d’apprentissage et soit x l’exemple dont on souhaite déterminer la classe. L’algorithme à exécuter peut être modélisé suivant l’organigramme suivant :
  41. 41. 31 Début de l algorithme Calcul de la la distance dist(x, x) Existe t-il encore un (x, c) D ? Compter le nombre d occurrence de chaque classe Existe t-il encore x kppv(x) ? Fin de l algorithme Attribuer à x la classe la plus fréquente Figure 19 : Organigramme de l’algorithme des K-plus proche voisins  Avantages et inconvénients : Les avantages de l’algorithme KNN sont principalement :
  42. 42. 32 - Apprentissagerapide - Méthode facile à comprendre - Adapté aux domaines où chaque classe est représentée par plusieurs prototypes et où les frontières sont irrégulières (ex. Reconnaissance de chiffre manuscrits ou d'imagessatellite Alors que les inconvénients peuvent être cités comme suit : - prédiction lente car il faut revoir tous les exemples à chaquefois. - méthode gourmande en place mémoire - sensible aux attributs non pertinents etcorrélés - particulièrement vulnérable au fléau de ladimensionnalité 2.3.2. Machines à vecteurs supports SVM (Support Vector Machines) ou Machines à vecteurs supports sont des classifieurs faisant partie des techniques d’apprentissage supervisé. Introduits par Vapnik (1995) pour résoudre des problèmes de classification, ils ont connu depuis un grand succès car utilisés massivement dans divers domaines : reconnaissance de formes, OCR, bioinformatique… L’usage s’est également répandu vers la résolution des problèmes de régression, aussi bien gérés que les classifications [9]. Cette technique fait appel à un jeu de données dit « d'apprentissage » dont les instances contiennent une valeur cible (target) également appelée « étiquette de classe » ainsi que plusieurs attributs (attributes) représentant l’ensemble des variables observées, et ce pour produire un modèle permettant de prédire les valeurs cibles d’un autre ensemble dit « de test », en ne fournissant à ce modèle-là que les attributs des données de test. En d’autres termes, si on considère un jeu de données divisé en deux groupes : un groupe pour les exemples connus et un autre pour les exemples non connus, le but des SVM est d’apprendre une fonction qui traduit le comportement des exemples connus pour prédire les cibles des exemples inconnus. Les SVM sont également appelés « classifieurs à vaste marge » car leur objectif est de trouver l’hyperplan séparateur optimal qui maximise la marge entre les classes dans un espace de grande dimension. La marge est la distance entre la frontière de séparation et les échantillons les plus proches, ces derniers sont appelés vecteurs supports. Une marge maximale permet d’obtenir une plus petite dimension de VC (Vapnik-Chervonenkis, « Théorie statistique de l'apprentissage »,1990), ce qui assure de bonnes performances en généralisation.
  43. 43. 33 Figure 20 : hyperplan séparateur optimal [9] En considérant un jeu de données d’apprentissage avec des exemples (xi; yi); i = 1,……l, où xi ϵ Rn et y ϵ {-1, +1} l, les SVM (Boser et al. 1992; Cortes et Vapnik, 1995) requièrent la résolution du problème d’optimisation suivant : min 𝑤,𝑏,𝜀 1 2 𝑤 𝑇 𝑤 + 𝐶 ∑ 𝜀𝑖𝑙 𝑖=1 Equation 4 subject to 𝑦𝑖(𝑤 𝑇 𝜑(𝑥𝑖) + 𝑏) ≥ 1 − 𝜀𝑖1 𝜀𝑖 ≥ 0.  Avantages et inconvénients : Les SVM sont considéré plus faciles à utiliser que les réseaux de neurones. Leur avantage principal est leur performance remarquable en généralisation avec des données de grandes dimensions. On leur reproche cependant d’être lents en convergence et gourmands en mémoire dès qu’il s’agit de traiter des jeux de données volumineux. En fait, entrainer un jeu de données d’une taille n, revient à résoudre un problème de programmation quadratique (QP) de taille n2, qui prend un temps de l’ordre O(n3 ). Cependant plusieurs recherches allant dans ce sens ont permis d’améliorer les temps d’exécutionvers O(n2 ).
  44. 44. 34 2.4. Les méthodes utilisées MATLAB est le plus facile pour traiter des images, mais cependant il est de loin le moins optimisé. OpenCV par contre est juste le contraire : il est extrêmement efficace vu son excessive optimisation mais il est le plus difficile à implémenter. AForge est finalement située entre les deux. OpenCV n’est devenu plus difficile que parce qu'il n'y a pas de documentation et de codes de gestion des erreurs appropriées. Mais OpenCV a beaucoup de fonctions de base de traitement d'image de sorte que ceux qui veulent apprendre la vision par ordinateur peuvent développer leurs applications par le biais d’une bonne compréhension de ce qu'ils font. Finalement, on convient qu'il est plus digne d'apprendre la vision par ordinateur avec OpenCV. Par conséquent, tout notre travail futur sera réalisé sous cet environnement. Pour ce qui est de l’algorithme a utilisé, on convient de choisir l’algorithme KNN vu que les dimensions de l’espace de travail serons assez petites et que le nombre de formes à détecter sera assez important. Enfin, pour ce qui est de la partie graphique, on convient d’utiliser le pyQt de Qt vu son large utilisation par la communauté internet et par suite la disponibilité d’une assistance considérable. Conclusion Dans ce chapitre, nous avons tous d’abord rappelé les notions élémentaires de la science des images. Après quoi, nous avons évoqué et discuté des différents environnements de traitement d’image, de création de GUI ainsi que des différents algorithmes de reconnaissance de forme. Ainsi, nous nous sommes parvenu à choisir convenablement nos outils de travail selon les exigences du future produis. Maintenant que tous est bien défini, il nous reste plus qu’à passer à la conception et la réalisation de la solution, chose que nous ferons dans le chapitre suivant.
  45. 45. 35 Chapitre 3 : Conception et réalisation de la solution Introduction La phase de la conception est la phase initiale de la création et de la mise en œuvre de notre projet. En fait, elle représente une étape importante de réflexion dans le cycle de développement logiciel après la phase de l’analyse et de spécification. Dans ce chapitre, nous allons présenter en détails la conception du projet à travers les diagrammes UML suivants : les diagrammes des cas d’utilisation, le diagramme de classes et les diagrammes de séquence. Ensuite, nous passerons à décrire la réalisation de notre projet à travers la description des principales fonctions du code source et les résultats obtenu pour différentes exécutions. 1. Conception de la solution 1.1. Diagramme des cas d’utilisation système Le diagramme de cas d’utilisation décrit les utilisations requises d’un système, ou ce qu’un système est supposé faire. Les principaux concepts de ce diagramme sont les acteurs, cas d’utilisation et sujets. Un sujet représente un système avec lequel les acteurs et autres sujets interagissent. La représentation du diagramme des cas d’utilisation de notre logiciel peut être modélisée comme indiqué sur la figure suivante : Figure 21 : Diagramme des cas d’utilisation système
  46. 46. 36 1.2.Raffinement du Diagramme des cas d’utilisation système 1.2.1. Etude du cas "Contrôle de la camera" Avant de lancer la caméra, L’utilisateur doit d’abord sélectionner le type de la camera à utiliser c’est à dire qu’il doit choisir le type de la liaison que soit par câble USB ou par protocole TCP/IP. Ensuite, il peut ouvrir la camera pour faire appel au module permettant de reconnaitre les différents champs de l’LCD à tester. La figure ci-dessous représente le diagramme du cas contrôle de la camera : Figure 22 : Diagramme du cas contrôle de la camera 1.2.2. Etude du cas "Modification des paramètres" Pour bien détecter les formes, l’utilisateur doit varier les valeurs des filtres appliquées aux images capturés et fixer la valeur du FPS selon le besoin. En effet, cette phase est très importante dans la mesure où la contrainte de temps et la précision de la détection des contours est indispensable. Le diagramme suivant décrit le cas de modification des paramètres :
  47. 47. 37 Figure 23 : Diagramme du cas modification des paramètres 1.3.Diagramme de classe Le diagramme de classes est considéré comme le plus important de la modélisation orientée objet, il est le seul obligatoire lors d'une telle modélisation. Alors que le diagramme de cas d'utilisation montre un système du point de vue des acteurs, le diagramme de classes en montre la structure interne. Il permet de fournir une représentation abstraite des objets du système qui vont interagir pour réaliser les cas d'utilisation. Il est important de noter qu'un même objet peut très bien intervenir dans la réalisation de plusieurs cas d'utilisation. Les cas d'utilisation ne réalisent donc pas une partition des classes du diagramme de classes. Un diagramme de classes n'est donc pas adapté (sauf cas particulier) pour détailler, décomposer, ou illustrer la réalisation d'un cas d'utilisation particulier. Après la phase de l’étude de l’organigramme et la réalisation des différents diagrammes des cas d’utilisation, on a pu dégager les principales classes illustrés dans la figure ci-dessous pour avoir une vue globale de notre système.
  48. 48. 38 Figure 24 : Diagramme de classe du logiciel 1.4. Diagramme de séquence Les diagrammes de séquence présentent la coopération entre différents objets. Les objets sont définis et leur coopération est représentée par une séquence de messages entre eux. Une représentation générale de notre solution peut être définit comme dans la figure ci-dessous :
  49. 49. 39 Figure 25 : Représentation générale de la solution proposée 2.4.1 Diagramme de séquence "Contrôle de la camera" Le diagramme de séquence "Contrôle de la camera" est comme suit : Figure 26 : Diagramme de séquence "Contrôle de la camera"
  50. 50. 40 2.4.2 Diagramme de séquence "Modification les paramètres de traitement vidéo" Le diagramme de séquence "Modification les paramètres de traitement vidéo" est comme ci- dessous : Figure 27 : Diagramme de séquence "Contrôle de la camera" 2. Réalisation de la solution 2.1. Les principales fonctions de base du code source 2.1.1. SetSettings() La fonction SetSettings() permet, comme son nom l’indique, d’initialiser les paramètres d’exécution configurable du logiciel à savoir les valeurs suivantes :  Blur  Thresh_ V1  Thresh_ V2  dilat_erode Ces valeurs, permettent de contrôler les degrés du Blur, du Threshold, de la dilatation et de l’érosion lors de l’exécution de la fonction Findmychars() permettant de dégager les valeurs des différents champs de l’écran du compteur électrique.
  51. 51. 41 Organigramme de la fonction SetSettings() : L’organigramme de cette fonction peut être défini comme suit : Chargement des paramètres par défauts Saisie des paramètres souhaité par l utilisateur Paramètres saisie correctes ? Enregistrementdes paramètres comme paramètres par défauts ? Chargement des paramètres saisie et enregistrement de ces paramètres comme paramètres par défauts Chargement des paramètres saisie et NON- enregistrement de ces paramètres comme paramètres par défauts Début dela fonction SetSettings() Fin de la fonction SetSettings() Utilisation des paramétres par défauts ? Figure 28 : Organigramme de la fonction SetSettings() Remarque : Les paramètres par défauts sont enregistrés dans un fichier DLL moyennant un double cryptage.
  52. 52. 42 2.1.2. Retrieve_default_LCD() La fonction Retrieve_default_LCD() va permettre de récupérer la position de l’écran LCD dans le cas où il n’y a pas eu de changement dans les positions du compteur et de la caméra dans la dernière série de mesure. Cette fonction consiste à lire le contenu du fichier DLL doublement crypté (LCD_pos.dll) puis de restituer les valeurs des variables suivantes :  x  y  width  height Ces valeurs sont indispensable pour que la fonction Findmychars() puisse travailler dans l’espace correcte. Remarque : Dans tous les cas, si ces valeurs s’avèrent fausses, le logiciel ne pourra en aucun cas fournir les données exactes affiché sur l’écran du compteur intelligent ! 2.1.3. FindmyLCD_AUTO() La fonction FindmyLCD_AUTO() est la fonction la plus délicate dans le logiciel, en effet tous repose sur le fait que l’application de l’algorithme KNN dans Findmychars() soit dans le domaine d’espace CORRECT dont le résultat provient de cette fonction. Cette fonction, comme Retrieve_default_LCD(), permet d’instancier les valeurs x, y, width et height qui définissent la portion de l’image ou se fera le déploiement de la fonction Findmychars(). La dénomination FindmyLCD_AUTO() vient du fait que cette fonction retrouve automatiquement et sans aucune assistance externe le cadre du compteur intelligent. Deux autres fonctions FindmyLCD_MANUAL() et FindmyLCD_SEMI-AUTO() furent aussi développé au début du projet mais ont été finalement abandonné vue la nécessité d’une intervention de l’opérateur et la non possibilité de migrer cette solution ultérieurement sur une DSP. La détection de l’écran du compteur LCD est expliquée selon l’organigramme suivant :
  53. 53. 43 Début dela fonction FindmyLCD_AUTO() Capture d une image Transformation de l image coloréen niveau de gris Application du filtre Gaussian-Blur Détection des contours Identification et tri des contours Sélection des contours rectangulaires Elimination des contours rectangulaires non-conformes au coefficient de proportionnalité des deux cotes du rectangle Déduction du contour recherché Fin de la fonction FindmyLCD_AUTO() Figure 29 : Organigramme de la fonction FindmyLCD_AUTO() 2.1.4. Findmychars(x, y, width, height, im, Blur, Thresh_V1, Thresh_ V2, dilat_erode) C’est la fonction cœur du logiciel de vision réalisé ! Une fois lancé, elle permet de balayer la zone spécifié par le rectangle de paramètre (x, y, width, height) et de dégager les différentes valeurs affiché sur le compteur intelligent. Le traitement de l’image extraite se fait comme suit : Niveau de gris -> Blur -> Noir et blanc -> dilatation + érosion La dilatation et l’érosion est une étape très importante dans le traitement de l’image car ça va permettre de ‘souder’ les différents segments constituant un caractère/un symbole et vue que l’algorithme KNN ne peut être exploité que sur les blocs continu et non-espacé.
  54. 54. 44 L’organigramme de cette fonction peut être défini comme ci-dessous : Début dela fonction Findmychars() Capture d une image Appel a la bibliothèque des formes réalisé précédemment Instantiation de l object KNN Extraction de l image de l écran du compteur Traitement de l image extraite Dégagement des informations affiché moyennant l algorithme KNN Restitution et sauvegarde des résultats obtenus Fin de la fonction Findmychars() Figure 30 : Organigramme de la fonction Findmychars() Pour ce qui est de la sous-fonction de dégagement des informations affiché moyennant l’algorithme KNN, le principe se repose sur un système de codage (voir tableau suivant) permettant d’attribuer à chaque forme un code déterminé (caractère) puis d’ajouter ce code dans une des chaines de caractères en fonction de l’emplacement de la forme détecté.
  55. 55. 45 Enfin, la somme de ces chaines constitue le HASH code (clé) de l’image traité. Caractère affiché : Code attribué : Appartenance aux indicateurs : 0 indicator_1 / indicator_16 1 indicator_1 / indicator_16 2 indicator_1 / indicator_16 3 indicator_1 / indicator_16 4 indicator_1 / indicator_16 5 indicator_1 / indicator_16 6 indicator_1 / indicator_16 7 indicator_1 / indicator_16 8 indicator_1 / indicator_16 / indicator_9
  56. 56. 46 9 indicator_1 / indicator_16 A indicator_1 / indicator_16 b indicator_1 / indicator_16 P indicator_1 / indicator_16 K indicator_16 h indicator_1 / indicator_16 T indicator_9 r indicator_1 / indicator_16 o indicator_1 / indicator_16 c indicator_1 / indicator_16 C indicator_1 / indicator_16
  57. 57. 47 H indicator_1 / indicator_16 R indicator_16 d indicator_1 / indicator_16 * indicator_16 L indicator_1 / indicator_16 E indicator_1 / indicator_16 F indicator_1 / indicator_16 u indicator_1 / indicator_16 U indicator_1 / indicator_16 q indicator_1 / indicator_16 J indicator_1 / indicator_16
  58. 58. 48 t indicator_1 / indicator_16 y indicator_1 / indicator_16 n indicator_1 / indicator_16 e indicator_1 / indicator_16 + indicator_1 / indicator_16 B indicator_4 D indicator_10 m indicator_5 O indicator_8 Q indicator_14 V indicator_13 a indicator_15 S indicator_11
  59. 59. 49 ! indicator_6 Z indicator_3 P indicator_2 G indicator_2 I indicator_2 l indicator_2 = indicator_2 M indicator_2 N indicator_2 $ indicator_7 f indicator_7 g indicator_7 s indicator_7 _ indicator_16 - indicator_1 / indicator_16 i indicator_1 / indicator_16 . indicator_1 / indicator_16
  60. 60. 50 K indicator_12 X indicator_12 Y indicator_12 x indicator_12 & indicator_12 z indicator_12 Remarques : - Après la reconnaissance des indications affiché sur l’écran du compteur, les informations sont tous d’abord sauvegardé dans un tableau dynamique d’instance de la classe image ayant comme attribut les valeurs des différent indicateurs de l’écran puis sauvegardé dans un fichier LOG. - A part les valeurs des champs, on est aussi capable de connaitre l’emplacement exact des zones défectueuses de l’écran puisqu’on sauvegarde aussi l’endroit où chaque symbole/caractère a été trouvé. 2.2. La génération de la bibliothèque des caractères La génération de la bibliothèque est obtenu moyennant le module GenData_CHAR.py qui n’est pas inclus dans le logiciel mais qui fuit réalisé dès le début pour obtenir les fichiers classifications.txt et flattened_images.txt contenant les dimensions vectorielles des caractères/symboles à reconnaitre. Ce module est aussi basé sur l’algorithme KNN et il permet d’obtenir les fichiers cités précédemment on faisant l’apprentissage des caractères/symboles à reconnaitre à partir d’une image de référence donné.
  61. 61. 51 Figure 31 : Génération de la bibliothèque des caractères 2.3. Compilation, tests et résultats obtenus (version Béta du logiciel) On se propose de tester la version béta de notre solution moyennant l’image ci-dessous : Figure 32 : Image de test du logiciel
  62. 62. 52 La compilation de la solution sous Visual studio 2015 se passe sans problème majeur et les fichiers .pyc sont générés. Figure 33 : Résultat de la compilation de la solution On va maintenant montrer les résultats obtenu pour deux séries de paramètres, une optimal et une autre très mal choisie pour démontrer l’importance de la configuration correcte du logiciel par l’ingénieur responsable des tests.  Paramètres optimaux : Par expérience, nous avons constaté que les meilleurs résultats pour l’image en question sont obtenus avec la configuration suivante : • Blur = 5 • Thresh_ V1 = 17 • Thresh_ V2 = 5 • dilat_erode = 5
  63. 63. 53 Les résultats obtenus sont correctes et très fidèle à la réalité : Figure 34 : Résultat obtenu pour une configuration optimale  Paramètres non-optimaux : On va maintenant refaire le test avec les valeurs des paramètres mentionnées ci-dessous : • Blur = 5 • Thresh_ V1 = 17 • Thresh_ V2 = 5 • dilat_erode = 1 On remarque que la valeur mal choisi du coefficient des deux fonctions de dilatation et d’érosion nous a permis d’avoir des valeurs partiellement correctes. En effet, ce coefficient étant indispensable pour lier les espaces assez proche afin de former une morphologie continu, d’où ce sont les indicateurs dont les symboles/caractères sont à dimensions assez grandes qui ont été le plus touché par cette incorrecte configuration.
  64. 64. 54 Figure 35 : Résultat obtenu pour une configuration non-optimale Conclusion Dans ce chapitre, nous avons pu faire la conception et la réalisation de notre logiciel de reconnaissance de forme dédiée aux tests des écrans LCD des compteurs intelligents. Néanmoins, plusieurs optimisations peuvent être introduites dans notre solution afin de la rendre encore plus performante. L’une des plus intéressantes de ces optimisations est de rendre la configuration des paramètres totalement automatique. En effet, cela est d’une importance capitale car la suite de ce projet est de pouvoir intégrer le programme sur une DSP.
  65. 65. 55 Conclusion générale et perspectives ’automatisation des tests sur les écrans LCD des compteurs intelligent représente un enjeu majeur pour l’entreprise. En effet, cela permet de réduire considérablement le risque d’erreur de lecture lié à l’imperfection humaine à part le gain économique et logistique. Dans un premier temps, une étude du besoin ainsi que la découverte de quelques exemples d’application nous a permis de dégager les grand traits du logiciel. Ensuite l’énumération des différents outils pouvant être utilisé pour créer la solution, nous a permis de concrétiser d’avantage notre idée et de passer à la phase de conception. Avant d’entamer la réalisation du software, on fut confronté à produire une librairie contenant les données nécessaire à la reconnaissance de forme utilisé après. Cette librairie fut aisément produite grâce au même algorithme KNN utilisé dans la reconnaissance. Plusieurs problèmes et défit nous ont rencontré, aussi bien dans la phase de réalisation que dans la phase de test du logiciel, dont le plus important est incontestablement le choix juste des paramètres optimaux et la façon de les déterminer. Ainsi on a pensé à automatiser la gestion de ces paramètres dans les versions future du software. Malheureusement, pour des contraintes de temps, on n’a pu que tester la version béta du soft, pas très bien optimisé et exécutable sur MSDOS uniquement [15 FPS maximum], mais qui est déjà assez remarquable). Plusieurs perspectives existent dans ce projet très ambitieux dans les plus importantes sont : - Une plus grande optimisation du code source. - L’introduction de la notion modulaire pour pouvoir étendre l’application du logiciel (sur PC) à la reconnaissance et au traitement d’autres types d’écran. - Le développement d’une version optimale pour exécution sur DSP. Enfin, je voudrais signaler que plus on élabore de nouvelle fonctionnalité et outils de reconnaissance, et plus notre produit s’approche des rivaux européens citée dans le premier chapitre tel qu’Uracode et Intellicheck.
  66. 66. 56 Le plus ultime de ce projet à long terme et non-pas le développement d’une solution prête à être déployé dans notre cas d’utilisation spécifique mais un produit standard capable de résoudre une multitude de problème et pouvant même être commercialisé.
  67. 67. 57 Sitographie (S1) http://www.groupe-telnet.net (visité le 20/02/2016) (S2) http://www.uratek.fr (visité le 02/03/2016) (S3) http://www.visionic.fr (visité le 03/03/2016) (S4) http://www.nymphomath.ch (visité le 05/03/2016) (S5) http://www.aforgenet.com (visité le 05/03/2016) (S6) http://opencv.org (visité le 30/05/2016) (S7) https://www.qt.io (visité le 30/05/2016) (S8) https://www.wxwidgets.org (visité le 05/03/2016) (S9) http://docs.opencv.org (visité le 30/05/2016)
  68. 68. ‫السائل‬ ‫الكريستال‬ ‫شاشات‬ ‫إلختبارات‬ ‫المخصص‬ ‫األشكال‬ ‫على‬ ‫التعرف‬ ‫برنامج‬ ‫إصدار‬ : ‫العنوان‬ ‫ص‬ّ‫خ‬‫مل‬:‫يتمثل‬‫هدف‬‫مشروع‬‫التخرج‬‫هذا‬‫فى‬،‫دراسة‬‫تصميم‬‫و‬‫إنجاز‬‫برنامج‬‫التعرف‬‫على‬‫األشكال‬‫المخصص‬‫إلخ‬‫تبارات‬ ‫شاشات‬‫الكريستال‬‫السائل‬.‫الصلة‬‫من‬‫وراء‬‫ذلك‬‫أتمتة‬‫برامج‬‫تحققات‬‫عدادات‬‫الكهرباء‬‫األلكترونية‬‫من‬‫أجل‬‫رب‬‫ح‬‫الوقت‬ ‫وتحسين‬‫األعتمادية‬.‫سيمكننا‬‫البرنامج‬‫إذا‬‫من‬‫إلتقاط‬‫الصور‬‫على‬‫شاشة‬،‫العداء‬‫إدراك‬‫ما‬‫يتم‬‫عرضه‬‫و‬‫إتاحة‬‫هذه‬‫ا‬‫لبيانات‬ ‫في‬‫اٱلن‬‫ذاته‬‫ليتم‬‫استخدامها‬‫من‬‫قبل‬‫سيناريوات‬‫الكمبيوتر‬‫التلقائية‬.‫ستكون‬‫لغة‬‫البرمجة‬‫بايثون‬2.7.11،‫سيتم‬‫تنشأة‬‫واجهة‬ ‫المستخدم‬‫بإستعمال‬‫بايكوتى‬‫من‬‫كوتى‬5.6.0‫كما‬‫سيتطلب‬‫علينا‬‫األمر‬‫إنشاد‬‫مكتبة‬‫الوظائف‬‫الرسومية‬‫أوبن‬‫سيفي‬3.1.0 ‫ا‬‫كانن‬ ،‫ستوديو‬ ‫فيزوال‬ ،‫بايكوتي‬ ،‫بايثون‬ ،‫سيفي‬ ‫أوبن‬ : ‫لمفاتيح‬ TITRE: Réalisation d’un logiciel de reconnaissance de formes dédiées aux tests d’afficheurs LCDs Résumé : Ce projet de fin d’études a pour but l’étude, la conception et la réalisation d’un logiciel de reconnaissance de formes dédiées aux tests d’afficheurs LCDs. L’objectif étant d’automatiser les compagnes de validations logicielles des compteurs électroniques d’électricité afin de gagner en temps et en fiabilité. Le logiciel permettra donc de capter l’image sur l’afficheur du compteur, reconnaitre les éléments affichés sur l’écran et mettre à disposition ces données en temps réel pour être exploitées par les scripts de tests automatique. Le langage de programmation du logiciel sera python 2.7.11, l’interface graphique sera construite moyennant pyQt de Qt 5.6.0 et on aura à faire appel à la bibliothèque des fonctions graphique OpenCV3.1.0. Mots-clés: OpenCV, Python, PyQt, Visual Studio, KNN TITLE: Building a pattern recognition software dedicated to the tests of LCD displays Resume: This graduation project deals with the study, design and implementation of a pattern recognition software dedicated to the tests of LCD displays. The objective is to automate the companions of software validations of electronic electricity meters in order to gain time and improve reliability. The software will therefore capture the image on the meter’s display, recognize what is displayed on the screen and make this data available in real time to be used by the automatic test scripts. The software programming language would be Python 2.7.11, the graphical user interface will be build using pyQt of Qt 5.6.0 and we would also have to call for the graphical functions library OpenCV 3.1.0. Key Word: OpenCV, Python, PyQt, Visual Studio, KNN Intitule et adresse complète de l’entreprise : Entreprise : TELNET HOLDING Adresse : TELNET TECHNOCENTRE, Rue du Lac Léman, 1053, Les berges du Lac, Tunis- Tunisie Tél. : 71 860 233 Fax : 71 860 069 Email : info@groupe-telnet.net

×