Traitement de l’image D etection de droite - ROGER...

35
51, rue Barth´ el ´ emy de Laffemas 26 901 Valence Cedex 9 ZA Les Gouvernaux II 26 120 Chabeuil Traitement de l’image etection de droite Rapport de Stage ROGER Mathieu Ma ˆ ıtre de stage : Professeur tuteur : M. Duccini Ann´ ee universitaire 2006-2007 Rapport r´ ealis´ e avec L A T E X

Transcript of Traitement de l’image D etection de droite - ROGER...

51, rue Barthelemy de Laffemas

26 901 Valence Cedex 9

ZA Les Gouvernaux II

26 120 Chabeuil

Traitement de l’imageDetection de droite

Rapport de Stage

ROGER Mathieu

Maıtre de stage :

Professeur tuteur : M. Duccini

Annee universitaire 2006-2007Rapport realise avec LATEX

Note de confidentialite

La diffusion de ce document ainsi que de ses annexes est limitee aux respon-sables du stage. Sa consultation par d’autres personnes est soumise a l’autorisationde l’entreprise CREATIME.

Remerciement

Je tiens a remercier :

M. ASTIC pour m’avoir pris en stage dans son entreprise.

M. DUCCINI pour son aide lors de sa visite et surtout pour ses cours de C

M. HILLAIRE ET M. BASSET pour leurs aides en programmation et elec-

tronique.

Table des matieres

Introduction 6

1 L’entreprise 7

1.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.2 Domaines d’activites . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.3 Le personnel et les clients . . . . . . . . . . . . . . . . . . . . . . 9

2 Traitement de l’image 11

2.1 Choix du materiel et du systeme . . . . . . . . . . . . . . . . . . . 11

2.2 Installation du systeme et utilisation des entrees/sorties . . . . . . 12

2.3 Interfacage de la webcam . . . . . . . . . . . . . . . . . . . . . . . 13

2.4 La bibliotheque graphique . . . . . . . . . . . . . . . . . . . . . . 15

2.5 La transformee de Hough . . . . . . . . . . . . . . . . . . . . . . . 18

2.6 Les interfaces visuelles . . . . . . . . . . . . . . . . . . . . . . . . 20

3 Travaux annexes 23

3.1 Le site Web de l’entreprise . . . . . . . . . . . . . . . . . . . . . . 23

3.1.1 Creation du design . . . . . . . . . . . . . . . . . . . . . . 23

3.1.2 La bibliotheque de generation XHTML . . . . . . . . . . . 25

3.1.3 Le formulaire d’envoie de mails . . . . . . . . . . . . . . . 25

3.1.4 L’ajout de produits . . . . . . . . . . . . . . . . . . . . . . 26

3.2 Moteur de recherche des circuits . . . . . . . . . . . . . . . . . . . 27

3.3 Le cablage du reseau telephonique et informatique . . . . . . . . . 27

3.3.1 la topologie du reseau . . . . . . . . . . . . . . . . . . . . 28

3.3.2 Le cablage des elements . . . . . . . . . . . . . . . . . . . 29

Conclusion 32

Bibliographie 33

Glossaire 34

Table des figures

1.1 Telecommande 433MHz pour treuil forestier plus recepteur (portee 100m). 9

1.2 Boıtier de commande de phare haute puissance pour aeronautique . . 9

1.3 Pyramides en bois massif incluant une electronique de gestion du temps.

Utilise pour la medecine Reiki . . . . . . . . . . . . . . . . . . . . . 9

1.4 Terminal Marketing Support (TMS), support permettant d’effectuer des

sondages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.1 Image rendu par la camera en YUV . . . . . . . . . . . . . . . . . . 14

2.2 Image en RVB a partir de celle en YUV . . . . . . . . . . . . . . . . 14

2.3 Traitement 1 : Suppression de la partie du haut de l’image . . . . . . 15

2.4 Traitement 2 : Suppression de la composante bleu . . . . . . . . . . 16

2.5 Traitement 3 : Seuillage de l’image . . . . . . . . . . . . . . . . . . 17

2.6 Traitement 4 : Seuillage sur les trois composantes . . . . . . . . . . . 17

2.7 Exemple de tableau accumulateur, en x sont present les ρ, en y les θ, et

en z l’accumulation . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.8 Graphe representant trois point dans le plan polaire, le point commun

est la droite ou ils se coupent . . . . . . . . . . . . . . . . . . . . . 19

2.9 Interface de test des differentes fonctions . . . . . . . . . . . . . . . 20

2.10 Interface graphique avec affichage de l’etat pour le client . . . . . . . 22

3.1 Nouveau site web de l’entreprise . . . . . . . . . . . . . . . . . . . . 24

3.2 Site Web avec les decoupes marquees en bleu et rouge . . . . . . . . 24

3.3 Topologie des reseaux de CREATIME . . . . . . . . . . . . . . . . . 29

3.4 Representation de la baie de brassage . . . . . . . . . . . . . . . . . 30

3.5 Cablage d’une prise, partie 1/3 : Les differents elements . . . . . . . . 30

3.6 Cablage d’une prise, partie 2/3 : L’insertion des fils . . . . . . . . . . 30

3.7 Cablage d’une prise, partie 3/3 : Le clippage de l’ensemble . . . . . . 30

3.8 Baie de brassage de CREATIME . . . . . . . . . . . . . . . . . . . 31

Introduction

Etant en fin de cycle de DUT Reseaux et Telecommunications a l’IUT Pierre-

Mendes-France de Valence, j’ai ete amene a effectuer un stage de fin de deuxieme

annee, pour finaliser ma formation. J’ai effectue celui-ci a l’entreprise CREATIME

a Chabeuil. CREATIME est un bureau d’etude en Informatique, Mecanique et

Electronique, celle-ci travaille beaucoup dans l’informatique embarquee grace au

microcontroleur PIC. De plus, CREATIME est en pleine expansion car un nou-

veau batiment est en cours de construction.

Le sujet de mon stage etait la refonte du site Web et le cablage du reseau du

nouveau batiment. La construction de celui-ci etant plus lente que prevu, j’ai donc

travaille sur un autre projet : un systeme de reconnaissance d’images, ce systeme

doit etre capable de detecter des jeunes pousses de maıs (50 cm au maximum)

parmi les mauvaises herbes, grace a un ordinateur et une webcam embarques sur

un tracteur, de maniere a pouvoir passer la bineuse avec une autocorrection de la

trajectoire en cas de deviation.

Mon rapport va donc se derouler en trois parties : tout d’abord nous verrons

la presentation de l’entreprise, ses clients, ses produits,... Ensuite nous nous pen-

cherons sur le systeme de reconnaissance d’images : analyse des besoins materiels,

analyse des besoins logiciels, methodes utilisees pour la reconnaissance,... Et enfin

nous terminerons par tous les travaux annexes que j’ai effectue : refonte du site

Web, creation d’un moteur de recherche, cablage du reseau du nouveau batiment.

1. L’entreprise

1.1 Historique

Fondee en 1994, l’entreprise CREATIME (Creations Realisations Etudes Au-

tomatismes Techniques Informatique Mecanique Electronique) fut creee sous le

nom d’ERIME (Etudes Realisations Informatique Mecanique Electronique). Celle-

ci dut changer de nom car une entreprise se nommait ERIM, elle opta donc pour

le nom que l’on connait actuellement. A ce jour l’entreprise emploie 9 salaries et

est une SARL au capital de 30490 e.

Le directeur, M. Astic, possede une double competence : un DUT Informa-

tique ainsi qu’un DUT Mecanique & Productique, l’electronique ne possedant

quasiment plus aucun secret pour lui. Celui-ci crea ERIME dans le sous-sol de sa

maison. Lors de sa creation, l’activite principale de l’entreprise etait la realisation

de bancs de test in-situ principalement pour l’entreprise Crouzet. Au bout de 6

ans les entreprises n’investissant plus beaucoup dans ces produits, CREATIME

augmenta son domaine d’activites en fabriquant ses propres cartes electroniques

pour differents usages tels que les telecommandes forestieres (telecommandes per-

mettant de controler un treuil) . Cette meme annee, en aout 2000, celle-ci investit

dans des locaux de 100m2 qu’elle occupe encore actuellement.

Lors du premier semestre 2007, CREATIME fait construire un deuxieme bati-

ment de 200m2 accole au premier. De maniere a reduire les couts, M. Astic ainsi

que les stagiaires et employes ont beaucoup participe a la realisation d’ouvrages

notamment pour les travaux d’interieur (peinture, pose de plastique protecteur

au sol, . . .) et pour ma part au cablage des reseaux informatique et telephonique

(tracage des cables, poses des prises, . . .). Ces locaux devraient etre fonctionnels

d’ici la fin du mois de Juin 2007.

1. L’entreprise 8

1.2 Domaines d’activites

L’entreprise CREATIME est specialisee dans les etudes et realisations infor-

matique, electronique et mecanique :

– Dans le domaine de la mecanique, CREATIME produit des dessins indus-

triels ou encore des ensembles de precision tels que des cartes de test ou les

picots viennent faire contact sur une pastille precise situee sur la carte ou

encore des solutions pneumatiques, comme une presse a decouper le papier.

– En matiere d’informatique embarquee ou non, l’entreprise developpe des lo-

giciels principalement pour microcontroleur PIC1 tels que des circuits de

commande de vannes pour l’agriculture ou encore des balises au sol tele-

commandees pour l’armee.

– L’entreprise est aussi specialisee dans la conception electronique, elle deve-

loppe donc toute l’electronique necessaire autour des PICs. Elle realise aussi

l’implantation des composants sur des cartes mono ou multicouches, de la

conception a la realisation, c’est-a-dire que celle-ci effectue grace a des logi-

ciels de CAO2 le routage des cartes ainsi que le soudage des composants sur

la carte une fois celle-ci realisee physiquement.

CREATIME propose un large pannel de prestations : etude de faisabilite, crea-

tion du cahier des charges, developpement, prototypage, homologation et produc-

tion. Ainsi elle propose aux entreprises la realisation d’un produit du cahier des

charges, en prenant en compte toutes les contraintes, et ainsi fournir des docu-

ments techniques de la realisation finale, voire s’occuper de la production.

1. L’entreprise 9

Voici quelques produits de l’entreprise :

Fig. 1.1 – Telecommande 433MHz

pour treuil forestier plus recepteur (por-

tee 100m).

Fig. 1.2 – Boıtier de commande de

phare haute puissance pour aeronau-

tique

Fig. 1.3 – Pyramides en bois massif

incluant une electronique de gestion du

temps. Utilise pour la medecine Reiki

Fig. 1.4 – Terminal Marketing Sup-

port (TMS), support permettant d’ef-

fectuer des sondages

1.3 Le personnel et les clients

CREATIME est une entreprise qui emploie 8 personnes :

– M. Olivier ASTIC : Directeur de l’entreprise, il s’occupe principalement des

etudes mecaniques, et supervise en meme temps les differents projets, il

possede de fortes connaissances dans de nombreux domaines.

– M. Michel BROUX : Il se consacre essentiellement a l’aspect commercial des

etudes realisees par la societe. Il apporte une grande experience sur le plan

electronique a l’entreprise.

1. L’entreprise 10

– Mme. Marie GIRONDEL et Mme Marise BRUNEL : Elles realisent tous les

montages et cablages, aussi bien en electronique qu’en mecanique, et gerent

la programmation des microcontroleurs.

– M. Serge BASSET et M. Nicolas HILAIRE : Techniciens en informatique

et en electronique, ils interviennent dans le developpement de nombreux

projets.

– M. Vincent WATEAU : Analyste programmeur maıtrisant plusieurs langages

dont C, C++, turbo pascal. . .et s’occupe egalement du routage des cartes.

– Mme. Fabienne ARU : Elle se charge de l’administration et du secretariat

de la societe.

CREATIME possede de nombreux clients, voici une liste non exhaustive :

– AERO-CONSULTING : Cette societe est implantee sur l’aeroport de Cha-

beuil. Elle est specialisee dans les systemes de vision nocturne pour les ae-

ronefs (helicopteres, avions, drones).

– CROUZET APPLIANCE CONTROLS : Cette societe est le 3eme construc-

teur europeen pour la conception et la production de programmateurs hy-

brides, lesquels combinent les meilleurs elements des programmateurs elec-

tromecanique et des timers electronique.

– EUROCOPTER : C’est l’un des 3 plus grands groupes aerospatiaux du

monde, forme en 1992 a partir de la fusion des divisions helicoptere du

francais Aerospatiale Matra et de l’allemand DaimlerChrysler Aerospace

AG (DASA).

– THALES Avionics : Le groupe THALES Avionics est leader europeen de

l’electronique civile et militaire. S’appuyant sur la dualite civile/militaire

de ses technologies, le groupe sert trois grands marche : l’aeronautique, la

defense, et les technologies de l’information.

– Autres references : LUXALP, IAR Roumanie, MFA, MTL, SAFI, SIFEL-

MET, SPIT, TAKOSAN Electronics, USITEC.

2. Traitement de l’image

Lors de mon stage, ma tache principale fut de creer un systeme de traitement

d’images. Celui-ci a pour objectif d’etre embarque dans un tracteur agricole et

permettra de deplacer la bineuse3 a droite ou a gauche de maniere a ce qu’elle ne

fauche pas une partie de la recolte sur plusieurs metres. Le systeme que j’ai dut

developper ”regarde” par l’intermediaire d’une webcam les raies de plants proche

et deplace, si necessaire, la bineuse via des verins pour la replacer correctement.

2.1 Choix du materiel et du systeme

Le module destine a etre embarque sur un tracteur doit :

– etre de taille reduite,

– consommer le moins possible du point de vue electrique,

– etre capable de resister a l’environnement (champs agricoles),

Pour repondre a cette premiere contrainte, l’entreprise avait opte pour un for-

mat de carte mere nommee PC/104, ces cartes possedent l’avantage d’etre de

taille tres reduite (90 x 95 mm), les inconvenients de ces cartes sont leur faible

puissance de calculs ainsi que leur prix (260 epour 333Mhz). Avec mon aide, nous

avons decide d’opter pour une carte mere mini-ITX (170 x 170 cm), certes la carte

est nettement plus grande, mais la puissance aussi : 1Ghz, avec 6 ports COM4 et

interface DIO que nous aborderons plus tard. Le prix de ces cartes meres est aussi

nettement moins cher : 180 e pour 1Ghz.

Leur second avantage est que ces cartes ont ete concues a la base pour l’in-

formatique embarquee et notamment dans les voitures pour servir de lecteur vi-

deo/audio et divertissement. De ce fait, beaucoup d’accessoires automobiles sont

disponibles pour ces cartes tels que des alimentations acceptant les tensions de la

batterie (c’est a dire de 6 a 24V), ou encore des boitiers dedies a cette utilisation.

2. Traitement de l’image 12

La gamme de cartes meres ITX etant relativement large, nous avons opte pour

une carte mere possedant un lecteur de carte Compact Flash5 relie directement

au bus IDE6, cela permet de nous detacher de la contrainte mecanique des disques

dur : ceux-ci n’auraient pas supportes longtemps les vibrations et chocs du aux

deplacements du tracteur dans le champ.

Enfin pour un traitement le plus fiable possible, une interface d’acquisition

d’image de qualite est necessaire, il faut aussi qu’elle ne soit pas trop complexe

a utiliser pour eviter de ralentir le PC, nous avons donc opte pour un Webcam

Logitech QuickCam Pro 4000, son avantage est qu’elle travaille en 640x480 pixels

ce qui est relativement eleve pour une webcam.

2.2 Installation du systeme et utilisation des en-

trees/sorties

Apres avoir fait le choix du materiel, plusieurs contraintes logicielles sont ap-

parues. La principale etant le choix du systeme d’exploitation : le disque dur etant

remplace par une carte Compact Flash celle-ci possede donc un nombre de cycles

d’ecriture limites, c’est a dire que l’on puisse effacer/reecrire chaque bits de la

carte qu’un certain nombre de fois, celui-ci devient ensuite inutilisable. Le nombre

de cycles d’ecriture est donne par le constructeur, et est en general compris entre

200 000 et 300 000. Cela parait beaucoup mais c’est en fait tres peu, si l’on compte

que chaque systeme d’exploitation stocke constamment des donnees sur le disque

dur en quasi-permanence. Il m’a donc fallu trouver un systeme d’exploitation n’ac-

cedant que tres peu a cet espace. J’ai donc decide d’opter pour une distribution

SLAX (linux), en version Live-CD7 que j’ai installe sur la carte memoire, cela

permet donc de charger tous les modules en memoire vive et de ne travailler que

dans celle-ci a l’instar des distributions Live-CD classiques.

La premiere tache que j’ai du accomplir sur cette machine, fut de reussir a

faire sortir des donnees sur les ports DIO (Digital Input Output), en effet, nous

2. Traitement de l’image 13

avons remarque la presence d’un connecteur sur la carte mere, qui possede 3

pins de sortie, 3 pins d’entree, 2 pins de masse. Ces ports nous permettrons de

commander directement les verins, sans passer par le port serie couple a un PIC,

qui decode les trames emises dessus afin de savoir comment bouger les verins, avec

de simples transistors, entre les sorties DIO du PC et les verins, pour amplifier

le signal et eviter de provoquer un court-circuit sur la carte mere. Comme aucun

driver n’est disponible pour ces ports DIO, il m’a donc fallut apprendre a ecrire

directement dans l’adresse memoire associee a ces ports, un programme exemple

est disponible en annexe.

2.3 Interfacage de la webcam

Apres l’achat de tout le materiel necessaire, il a fallu tout interfacer. La plus

grosse difficulte que j’ai eu fut de reussir a faire fonctionner la Webcam, il m’a

tout d’abord fallu reussir a trouver un driver compatible avec celle-ci, car Logi-

tech, bien qu’etant une tres bonne marque, ne fait principalement que des drivers

proprietaire, c’est-a-dire qu’il faut obligatoirement le logiciel de Logitech pour que

le materiel marche, malheureusement la marque a fait le choix de ne pas les deve-

lopper pour les distributions de linux. Comme chacune de leur Webcam necessite

un driver different, il m’a fallu trouver en beaucoup de differents, qui etaient

plus ou moins compatible avec la puce presente a l’interieur (de marque Phillips).

Apres l’essai de plusieurs drivers j’ai reussi a en trouver un qui etait totalement

compatible avec la camera et qui ne prenait pas trop de temps pour acquerir une

image : une bonne partie n’acquerait que l’image dans une resolution de 320 par

240 alors que celle-ci supporte le 640 par 480 ou prenait plus d’une demi seconde

pour prendre une image.

Il m’a ensuite fallu me plonger dans la documentation du driver pour savoir

toutes les fonctions a utiliser pour configurer et prendre une photo. Sachant qu’il

fallait a tout prix que l’image soit en 640 par 480 pour avoir la meilleure precision

possible, ainsi que garder la balance des blancs automatique pour que la camera

gere la luminosite automatiquement en cas de changement brusque de lumiere.

2. Traitement de l’image 14

De plus, nous nous sommes rendu compte que la camera ne nous rendait pas

une image en RGB mais en YUV 4 :2 :0p. Le RGB est la methode la plus commune

et la plus simple de gestion des images : pour chaque pixel les trois composantes

lumineuses (rouge, vert, bleu) sont separee chacune sur un octet. Le probleme est

que la camera nous rend l’image en YUV 4 :2 :0p car il est assez difficile de faire des

capteurs rouge, vert et bleu, de ce fait les fabriquant font un capteur de luminance

(somme des trois composantes, nommee Y), U et V sont les chrominances obtenue

en soustrayant la luminance du signal bleu pour le U et la luminance du signal

rouge pour le V. Le 4 :2 :0 signifie que pour quatre informations de luminance,

nous avons deux informations de chrominance U, suivit de quatre informations de

luminance, suivit encore de deux informations de chrominance V. Le P quand a

lui signifie ”planar”, c’est-a-dire que les zones Y, U et V sont separee, celle-ci ne

sont pas mises comme elle devrait l’etre dans le cas d’une image classique. Pour

vous illustrer ce qu’est le ”planar”, voici ci-dessous l’image que me rend la webcam

lors de l’acquisition d’une image ainsi que celle en RGB.

Fig. 2.1 – Image rendu par la camera

en YUV

Fig. 2.2 – Image en RVB a partir de

celle en YUV

Comme vous pouvez le voir les trois premieres zones du haut representent l’image

en luminance, suivit des six zones suivantes en dessous etant la chrominance U,

suivit d’encore six zone de chrominance V. Il nous a donc fallu developper une

fonction permettant de passer du YUV 4 :2 :0p au RGB, apres de nombreux

2. Traitement de l’image 15

essais sans resultats corrects, nous avons decide de chercher une fonction per-

mettant d’executer cette tache. Cependant, nous en avons trouve une seulement

apres plusieurs jour de recherche. Nous avons tente de la comprendre mais celle-ci

etaient tellement complexe que nous avons vite abandonne, ce qui nous interessait

reellement, c’est que celle-ci marche.

2.4 La bibliotheque graphique

Apres avoir reussi a configurer tout le materiel correctement, et avoir eu une

image en couleur de la part de la camera, nous avons commence a nous interes-

ser plus profondement a comment est-ce que le pourrait reussir a ne laisser sur

l’image que ce qui correspond plus ou moins a des herbes. Nous avons developpe

une multitude de fonctions de traitement de l’image, je ne parlerais que de celles

qui nous sont reellement utile pour notre application.

Nous avons tout d’abord mis au point une fonction qui nous permet de sup-

primer l’horizon, on supprime le tiers de l’image dans la partie haute. L’horizon

contenant souvent des arbres ou de la forte lumiere, il contient donc beaucoup

de lumiere verte qui risquerait de nuire au traitement car le programme pourrait

croire que ce sont des plants.

Fig. 2.3 – Traitement 1 : Suppression de la partie du haut de l’image

2. Traitement de l’image 16

J’ai ensuite developpe une fonction permettant de supprimer une composante

de l’image, cela permet de ne garder que les couleurs qui nous interesse, par

exemple nous avons remarque qu’il n’y avait quasiment pas de bleu dans la cou-

leur des plants, nous supprimons donc totalement la composante bleu de l’image,

pour cela nous parcourrons l’image et mettons tous les octets concernant la com-

posante bleu a zero.

Fig. 2.4 – Traitement 2 : Suppression de la composante bleu

Ensuite j’ai developpe une fonction de seuillage. Cette fonction permet de

mettre a zero la composante si celle-ci est inferieur a la valeur de seuillage ou a

255 (maximum), si celle-ci est superieure a la valeur. Si on prend l’exemple sur la

composante verte, cela va mettre le vert au maximum si sa valeur est assez forte,

ou a zero si elle est faible. On effectue cette fonction sur les deux composantes

restantes, on passe donc a une image a quatre couleurs (deux couleurs pour le

rouge, et deux pour le vert).

2. Traitement de l’image 17

Fig. 2.5 – Traitement 3 : Seuillage de l’image

Pour finir j’effectue un seuillage sur les trois composantes, dans notre cas l’on

veut que si le pixel contient du vert sans contenir ni de rouge, ni de bleu, on le

met en blanc (les trois composante a 255 en decimal), sinon on met le pixel noir

(les trois composante a zero). Notre image etant deja seuillee et la composante

bleue supprimee, on a trois types de couleur possible a l’ecran : noir, rouge, vert,

jaune (rouge plus vert). Cette fonction fera que seuls les pixels ne contenant que

du vert seront marque en blanc le reste en noir, on obtient grace a cela beaucoup

de points blanc sur l’image que nous supposons etre des plantes.

Fig. 2.6 – Traitement 4 : Seuillage sur les trois composantes

2. Traitement de l’image 18

Vous pouvez ainsi remarquer sur cette derniere image qu’il nous reste a la

sortie une image monochrome, on se rend compte tres facilement que les points

blanc correspondent aux herbes et plants present sur l’image. Le gros probleme

est maintenant la detection des droites pour pouvoir calcule leurs ordonnees a

l’origine et ainsi pouvoir savoir si nous sommes bien places ou non et corriger le

tracteur en fonction de cela.

J’ai aussi developpe de nombreuses autres fonctions pour les tests et pour

trouver quelle sequence correspond le mieux ainsi j’ai cree des filtres (moyenneur,

median), des mecanismes d’erosion ou de dilatation des couleurs, une methode de

squelettisation de l’image qui permet d’obtenir grossierement la forme d’un objet,

et bien d’autre fonction plus ou moins usuelles comme une fonction pour lire la

composante de l’image, pour remplacer sa valeur, pour mettre l’image en negatifs,

. . .

2.5 La transformee de Hough

Le plus gros probleme rencontre lors du developpement du programme a ete

la facon dont nous pourrions trouver des droites a partir des points que nous

obtenons. Nous avons cherche de nombreuses techniques de detection de zone et

de droite. Apres de multiple recherche nous avons decouvert la transformee de

Hough. (se prononce ”OUF”). Cette technique permet de reconnaıtre des formes,

mais est surtout utilise pour la detection de lignes.

Cette transformee part du principe que pour un point donne, il existe une

infinite de droite passant par celui-ci, la seul chose qui change entre chaque droite

est son angle. Le but de la transformee est de trouver les lignes potentiels se

rapprochant le plus de ce que l’on attend. Pour determiner si plusieurs points

sont approximativement sur une meme droite, il faut faire une representation de

la droite et des points dans un repere permettant cette comparaison : le repaire

complexe.

2. Traitement de l’image 19

Dans le repere complexe, chaque ligne est un vecteur de coordonnees para-

metriques, ρ etant la norme du vecteur et θ son angle. Si l’on trace toutes les

lignes possible caracterisant ce point, en calculant donc le ρ et le θ de chacune des

possibilites, on obtient une sinusoıde unique appelee espace de Hough. Comme les

possibilites sont infinies, on stocke ces valeurs dans un tableau que l’on appelle ac-

cumulateur : ce tableau a deux entrees (ρ et θ), est un ensemble d’intervalles de ρ

et de θ. Une fois le parcours de tous les points effectue, on prend la case contenant

la plus grande valeur, et ainsi on obtient la droite qui passe approximativement

par le plus de points de l’image.

Fig. 2.7 – Exemple de tableau accu-

mulateur, en x sont present les ρ, en y

les θ, et en z l’accumulation

Fig. 2.8 – Graphe representant trois

point dans le plan polaire, le point com-

mun est la droite ou ils se coupent

On remarque dans le graphe ci-dessus que les trois courbes se coupent au meme

point. Si l’on recupere les coordonnees polaire du point on pourra les transformer

en coordonnees classiques, et nous obtiendrons les valeurs de a et b de la courbe

notee y=ax+b. A ce stade du developpement nous avons rencontre divers pro-

blemes venant du fait que le programme nous tracait souvent des droites d’angle

inferieur a 45 , car trop de mauvaises herbes etaient presentes, nous avons donc

decider d’effectuer un traitement, juste avant de chercher la valeur maximum pre-

sente dans l’accumulateur, qui consiste a supprimer toutes les valeurs des angles

(θ) inferieur a 45 . Nous nous sommes ensuite rendu compte que notre programme

n’etait pas assez precis : il quantifiait les ρ et le θ en 20 intervalles differents, nous

avons monte cette valeur a 50, ce qui a considerablement augmente la precision.

2. Traitement de l’image 20

Ensuite pour des raisons d’esthetique et de representation, nous avons decide

de tracer les droites a l’ecran en vert si celles-ci sont bien placees, en orange si on

a eu du mal a les trouver : valeurs dans l’accumulateur trop proche des autres ; en

rouge si celle-ci n’est pas correctement placee. Ensuite, on affiche un carre en vert

dans l’angle en haut a droite de l’image si tout est correct : c’est-a-dire que l’on

n’a pas besoin de deplacer la bineuse, en orange si l’on doit deplacer la bineuse,

ou en rouge si l’on a trouve aucune droite.

2.6 Les interfaces visuelles

J’ai developpe deux interfaces visuelles, celles-ci ont ete creees grace a la biblio-

theque graphique GTK, qui est une bibliotheque tres utilise sur les plateformes

linux. La premiere interface est l’interface de developpement, dans laquelle j’im-

plantais au fur et a mesure les fonctions que j’ecrivais, nous nous sommes servis

de celle-ci pour tester les differentes fonctions et ainsi voir ce qui pouvait nous

faire ressortir le plus possible les plants par rapport au reste.

Fig. 2.9 – Interface de test des differentes fonctions

Comme vous pouvez le voir, celle-ci est divise en plusieurs parties, en haut a

gauche et a droite sont les images sur lesquelles nous travaillons, celle de gauche

2. Traitement de l’image 21

est l’image d’origine, avec ou sans les trais, alors que l’autre et celle sur laquelle

nous effectuons les fonctions. Sous la premiere image nous avons l’historique des

actions effectuees, alors que sous l’autre nous avons la liste des fonctions possibles.

Entre les deux nous avons plusieurs boutons permettant d’importer une image a

partir d’un fichier, ou de la webcam, ainsi qu’un bouton permettant d’annuler la

derniere action, un autre pour selectionner la ou les composantes de couleurs a

traiter et enfin un dernier pour faire passer l’image de gauche dans la zone de

droite.

Cette interface tres complete nous a permis d’effectuer tous les tests et ainsi

de decomposer chaque traitement pour le corriger, l’optimiser et/ou l’ameliorer.

Celle-ci ma aussi permis de voir ce que faisait chaque fonction, car n’ayant ja-

mais fait de traitement de l’image auparavant je n’avais pas la moindre idee de ce

qu’etait un seuillage ou un filtre moyenneur.

La deuxieme interface quand a elle est beaucoup plus simple, celle-ci n’affiche

que l’image traitee, en fait celle-ci gere tout le programme, car pour eviter des

problemes au niveau du temps accorde a chaque processus, j’ai ajoute a la boucle

evenementielle de GTK, ma fonction de traitement de l’image qui modifie l’image

puis applique la transformee de Hough et marque les droites et carres de couleur

dessus. La boucle evenementielle est une boucle sans fin dans laquelle tourne le

programme en attente de toute action tels que le clic sur un bouton ou encore la

pression sur une touche, comme aucun materiel de saisie ne sera installe sur la

machine (ni clavier, ni souris), GTK ne fera rien dans sa boucle evenementielle

a part attendre, en mettant ma fonction dans cette boucle, cela a pour effet de

dire a GTK que des qu’il a du temps libre il effectue mes traitements, celui-ci

les effectues donc constamment a par quand il a besoin d’un peu de temps pour

mettre a jour son affichage.

2. Traitement de l’image 22

Fig. 2.10 – Interface graphique avec affichage de l’etat pour le client

Parmi toutes mes taches, ce projet a donc ete le principal, j’ai passe environ

8 a 9 semaines dessus, entre la recherche du materiel, la mise en œuvre et la

documentation necessaire. Celui-ci m’a appris beaucoup de choses tant au niveau

de la programmation et la manipulation de grosses donnees (l’image en memoire

pese environ 900 kilo-octets), mais aussi au niveau du traitement de l’image : les

differents filtres et techniques utilises pour aboutir a l’image recherchee et pouvoir

effectuer la transformee de Hough.

3. Travaux annexes

En parallele au travail sur le traitement de l’image, j’ai effectue plusieurs

autres taches. J’ai tout d’abord travaille sur la refonte du site web de l’entre-

prise, en creant un systeme de fonctions permettant de generer de l’xHTML8

simplement.J’ai ensuite travaille sur un moteur de recherche qui permet de trou-

ver des circuits en fonction de mots clefs.Enfin, j’ai effectue le cablage des reseaux

informatique et telephonique de l’entreprise.

3.1 Le site Web de l’entreprise

Ma premiere tache lors de mon arrivee a CREATIME fut de refaire leur site

Web, la mise en page de celui-ci avait deja ete effectuee sous forme d’image, mais

le contenu du site n’avait toujours pas ete decide. Il m’a donc fallu adapter le

design sous forme de page Web. J’ai du ainsi mettre au point un procede simple

qui puisse permettre a l’entreprise de modifier aisement le contenu de leur site.

3.1.1 Creation du design

Lors de mon arrivee, la mise en forme avait deja ete realisee, par M. Serge

BASSET. J’ai donc du decouper celui-ci suivant des zones precise de maniere a

ce que le chargement de la page soit optimise. Pour expliquer plus en detail, Les

grandes zones de couleurs sur la page seront interpretees en xHTML par le navi-

gateur, plutot que d’avoir recours a une image. De cette maniere, on peut gagner

un temps de chargement de la page considerable !

Le site a ete realise avec le couple xHTML/CSS9. J’ai donc utilise le xHTML

pour la definition des elements et le CSS pour la mise en forme (couleurs, pla-

cements, . . .). Je vous propose maintenant le site tel qu’il apparaıt a l’ecran, en

prenant soin de mettre en avant les differentes decoupes qui on ete effectuees.

3. Travaux annexes 24

Fig. 3.1 – Nouveau site web de l’entreprise

Fig. 3.2 – Site Web avec les decoupes marquees en bleu et rouge

3. Travaux annexes 25

3.1.2 La bibliotheque de generation XHTML

Le plus gros du travail concernant ce site Web a ete de realiser un systeme

permettant de modifier le site rapidement et en deux langues. J’ai donc opte pour

un fichier de langue charge a l’arrivee sur une page en francais, choix par defaut,

ou en anglais si l’utilisateur a deja choisi sa langue. J’ai donc cree deux fichier, un

pour chaque langue disponible, contiennent tous les differents textes du site. Si

jamais il y a une modification a faire sur le site, il y a de tres fortes chances qu’il

s’agisse de la modification/remplacement d’une phrase presente dans ce fichier.

J’ai donc cree une bibliotheque de fonction PHP10 qui contient tout une liste de

fonction permettant de formater du texte : le mettre en couleur, le souligner, le

transformer en lien hypertexte,. . .Ensuite, chaque page web est un script PHP qui

inclut le fichier de langue, et appelle, a partir de ceux-ci, les fonctions de mises en

page.

Ces fonctions existent, le plus souvent, en deux exemplaires, c’est-a-dire une

version qui ecrit directement le code xHTML, l’autre qui le retourne, cela permet

notamment de chaıner les fonctions. Par exemple, si on veut un texte en gras et

rouge on utilisera la commande red(gras r(”le texte en question”)). Cette technique

a deux avantages : si l’on veut modifier juste le texte, on ne touche que le fichier

de langue, alors que si l’on veut modifier la presentation l’on touche le fichier de

la page correspondante. Pour mieux comprendre le fonctionnement de ce systeme,

j’ai cree une documentation de cette librairie (celle-ci se trouve disponible en

annexe).

3.1.3 Le formulaire d’envoie de mails

La partie la plus complexe du site a ete le formulaire d’envoi de mail car c’etait

la partie possedant le plus de contraintes. Ce formulaire permet aux utilisateurs

de contacter l’entreprise.La contrainte principale est dans le cas d’un oubli de sai-

sie ; le formulaire devait etre reaffiche, avec les donnees deja saisies, ainsi que les

champs oublies, en rouge, afin de signaler a l’utilisateur ses oublis. Dans le cas ou

l’on retourne sur la page du formulaire de langue ou que l’on veuille changer de

3. Travaux annexes 26

langue, les donnees deja inscrites restent presentes dans le formulaire. J’ai ainsi

utilise les sessions PHP qui stockent les donnees sur le serveur et les reconnaıt

grace a un cookie place sur la machine cliente.

J’ai ensuite dut modifier legerement ce script pour qu’il puisse fonctionner

sur le site gongtimers.com qui est le site de l’un des produits cree par CREA-

TIME. Cependant, ce site n’utilisait pas les fichiers de langues, mais stockait les

informations du produit, disponible dans cinq langues, a l’interieur d’une base

de donnees. Il a donc fallu que je reprenne tous les textes presents dans mon

script, pour m’adapter aux contraintes deja existantes en ajoutant les textes de

mes fichiers dans cette base de donnees.

3.1.4 L’ajout de produits

La deuxieme demande au sujet du site etait que l’on puisse administrer les pro-

duits vendu par l’entreprise assez facilement : les rajouter, en supprimer certains,

modifier leur ordre . . .Sachant qu’il n’y aurait pas beaucoup de produits differents

presents sur le site, j’ai opte pour un systeme base sur des fichiers, c’est a dire

qu’il y a un fichier produits.txt qui contient la liste des produits, chaque ligne cor-

respond a un produits et cinq champs sont present separe par des points-virgules.

Ces champs sont : le nom en francais, le nom en anglais, l’image du produit, le

lien vers la page du produit en francais et le lien vers la page du produit en anglais.

Pour ajouter un nouveau produit, il faut donc juste rajouter une ligne dans ce

fichier, et les fichiers correspondants. Pour modifier l’ordre des produits il suffit de

changer l’ordre dans le fichier. Il est a noter que l’on peut utiliser dans les pages

correspondantes au produits la bibliotheque de fonctions que j’ai cree car cette

page ne contient que les informations sur le produits, le menu du site ainsi que la

mise en page sont dans un autre fichier ; mon script inclue donc les deux fichiers

pour que tout s’assemble correctement.

3. Travaux annexes 27

3.2 Moteur de recherche des circuits

Ce moteur de recherche a pour but de permettre la recherche d’un circuit elec-

tronique present dans une liste de livres, lors de la saisie de mots clefs dans le

champ de recherche. Le moteur nous repond une liste de circuits correspondant

plus ou moins a ce que l’on cherche, en nous donnant le livre et la page dans

laquelle trouver le circuits. Avant de commencer a coder le moteur de recherche

il a dont fallu saisir la totalite des sommaires dans une base de donnees (environ

3000 entrees).

Certains schemas comportant des mots peu communs, il y a de fortes chances

que l’on fasse une faute de frappe lors de la saisie ou de la recherche, mon moteur

de recherche genere donc une liste de mots a rechercher, creee a partir du ou des

mots tapes, qui contient chaque mot, mais avec la possibilite qu’un caractere ait

ete oublie ou rajoute, de cette maniere si l’on tape alimenatation ou alimntation

on trouvera tout les montages correspondants aux alimentations.

Dans certains cas beaucoup de montages ne sont en fait pas interessants, et

donc tres peu utiles dans les resultats d’une recherches. J”ai donc rajoute un bou-

ton qui permet de donner ou d’enlever des points au montage correspondant, les

montages etant affiches par score decroissant. Ainsi, les montages possedant le plus

de points sont donc les premiers visibles a l’ecran, puisque ce sont, theoriquement,

ceux qui ont le plus de chance de nous interesser.

3.3 Le cablage du reseau telephonique et infor-

matique

Lorsque la construction du nouveau batiment a ete suffisamment avancee, nous

avons effectue le cablage de la baie de brassage, les cables ont ete passes dans

les goulottes au debut du stage. Nous avons donc retouche les plans du cablage

du reseaux pour une meilleure optimisation et defini les besoins materiel : les

connecteurs (categorie 5E11 ou 612) ainsi que le nombre de tableaux a connecteurs

3. Travaux annexes 28

necessaires. Nous avons ensuite commence la realisation de la baie de brassage.

La principale originalite du reseau est que chaque prise murale, n’a pas d’ob-

jectifs propre, c’est-a-dire que bien que le cable soit de la categorie 6, la prise

peut etre utilisee en tant que prise reseau, ou bien en tant que prise telephonique

(numerique ou analogique) grace a des cordons fait a la main comprenant d’un

cote une prise RJ4513 et de l’autre une prise RJ1214. Le type de la prise sera donc

decide dans la baie de brassage et pourra etre change a tout moment.

3.3.1 la topologie du reseau

Chaque prise murale comporte en fait deux prises : les cables ont ete passes

par paire, de maniere a avoir par defaut une prise pour le reseau Ethernet et une

autre pour le reseau telephonique, bien que l’on puisse a tout moment changer le

type de la prise dans la baie de brassage. Pour des soucis de proprete les reseaux

du rez-de-chaussee et de l’etage ont ete separes.

En ce qui concerne le reseau informatique tous les equipements du rez-de-

chaussee (imprimantes, ordinateurs,. . .) sont relies a un switch, il en est de meme

pour les equipements de l’etage qui sont relies a un autre switch. Ces deux switch

etant relies a un routeur qui est connecte a Internet. Cela permet de separer

physiquement les deux reseaux mais de pouvoir quand meme effectuer des com-

munications entre eux.

La partie telephonie numerique est elle aussi separer en deux a sont arrive dans

la baie de brassage, mais elle est ensuite centralise vers des ports qui sont connecte

directement au PABX. En ce qui concerne la partie telephonie analogique, un etage

entier de la baie de brassage est consacre a l’arrivee de la ligne analogique ou toutes

les prises sont reliees ensemble. Ces prises sont notamment utilisees pour le fax

ou encore pour le routeur car ces equipements ne transportant pas de la voix ne

sont pas connectable sur un PABX classique.

3. Travaux annexes 29

Voici une simplification de la topologie des reseaux :

Fig. 3.3 – Topologie des reseaux de CREATIME

3.3.2 Le cablage des elements

Le cablage des elements, bien que simple a realiser, fut relativement long a

effectuer, dut au tres grand nombre de prises murale et d’embases presente dans

la baie de brassage. Il a donc fallu cabler en premier la totalite des prises murales,

une fois cette tache terminee, nous avons commence la baie de brassage, il a fallu

reflechir a la maniere de placer les differents elements pour que l’on puisse changer

le type d’une prise (Ethernet, telephonie numerique ou analogique) sans que des

cables traversent la baie de brassage de part en part.

Pour cela nous avons separe la baie de brassage en deux zones : l’etage et

le rez-de-chaussee. Nous avons aussi separe chaque double-prise en deux lors de

l’arrive sur la baie (voir diagramme ci-dessous). Cela permet d’avoir le moins de

cable possible qui passent par-dessus un etage de la baie, theoriquement tant que

la prise sert pour du reseau ou de la telephonie numerique celle-ci est relie direc-

tement a l’etage du dessus ou du dessous dans la baie de brassage.

3. Travaux annexes 30

Fig. 3.4 – Representation de la baie de brassage

Le type de connecteur pour les prises murales, et la baie de brassage sont

identiques, seul les supports changent. Le cablage de ceux-ci est tres simple, il

suffit de faire passer les huit fils du cable dans un petit boıtier en respectant les

couleurs (voir photo), puis de prendre le connecteur et de clipper l’ensemble.

Fig. 3.5 – Cablage d’une

prise, partie 1/3 : Les dif-

ferents elements

Fig. 3.6 – Cablage d’une

prise, partie 2/3 : L’inser-

tion des fils

Fig. 3.7 – Cablage d’une

prise, partie 3/3 : Le clip-

page de l’ensemble

3. Travaux annexes 31

La baie de brassage une fois terminee :

Fig. 3.8 – Baie de brassage de CREATIME

Conclusion

Les differents projets que j’ai effectues ont tous ete mene a termes : le site Web

bien qu’il ne soit pas encore en ligne est termine, la baie de brassage est complete,

seul le projet sur le traitement d’image n’a pas tout a fait ete termine car nous

n’avons pas eu le temps de le tester sur le terrain. Les seuls tests que celui-ci a

fait est avec des photos.

Je pense que les differents projets que j’ai realise correspondent parfaitement a

la formation Reseaux et Telecoms car j’ai fait du cablage reseau et telephonique,

de la programmation Web, ainsi que de la programmation classique. J’ai aussi

appris beaucoup de notions supplementaires sur l’electronique analogique et nu-

merique.

L’ambiance de l’entreprise est tres chaleureuse, je me suis integre tres rapide-

ment au sein de celle-ci. Leurs conseils m’ont ete tres profitable, surtout du point

de vue de l’electronique, domaine dans lequel je ne savais faire que des filtres, alors

que maintenant je sais utiliser des regulateurs de tensions, transistors, . . .

Bibliographie

Wikipedia (http ://fr.wikipedia.org) : Encyclopedie en ligne. Utilisee pour dif-

ferents renseignement qui ne sont pas trop technique.

PHP.net (http ://www.php.net) : Documentation de PHP, utilise pour cher-

cher des fonctions ou des renseignements sur des fonctions.

Transformee de Hough (http ://matmatic.free.fr/index.php ?url=sources/tim/Projet/TIM-

Projet presentation.ppt) Fichier PowerPoint sur la transformee de Hough.

Transformee de Hough (http ://ltswww.epfl.ch/˜coursrf/article-graf-espic.pdf)

Document presentant la transformee de Hough ainsi que son utilisation.

GTK (http ://www.gtk-fr.org) : Site francais de GTK, un tres bon cours ainsi

qu’un forum tres reactif sont present.

Devellopez (www.developpez.com) : Communaute tres performante sur la pro-

grammation : cours et forums tres complet.

GLOSSAIRE 34

Glossaire

1Microcontroleur PIC : puce electronique programmable, celle-ci contient un processeur, de

la memoire, . . .et est utilisable pour effectuer des montages electroniques ntelligents.2CAO : Conception Assistee par Ordinateur.3Bineuse : charrue composee de dents passant entre les raies des plants et permettant de

retourner la terre de maniere a detruire les mauvaises herbes.4Ports COM : ports de communication present sur la grande majorite des PC, ceux-ci sont

aussi appele ports Serie.5Compact Flash : format de carte tres souvent utilise en tant que disque dur grace a leur

fiabilite et leur rapidite.6Bus IDE : interface commune des PC de communications avec les disques dur, lecteurs CD,

...7Live-CD : Systeme d’exploitation, le plus souvent linux, n’ayant pas besoin de disque dur,

toutes les composantes sont chargees en memoire au demarrage a partir du support.8xHTML : Langage de balise permettant de structurer un site Internet et de rediger son

contenu, l’acronyme signifie XML HyperText Markup Language.9CSS : Cascading Style Sheet : methode permettant de placer et de mettre en forme les

differents elements d’un site Internet.10PHP est un acronyme recursif pour dire ”PHP : Hypertext Preprocessor”, c’est un langage

de programmation execute cote serveur.11Cable categorie 5E : cable compose de 4 paires non blindee, que l’on utilise pour le reseaux.12Cable categorie 6 : Identique au cable categorie 5 a la seul difference qu’un blindage est

present garantissant une meilleure qualite de la liaison.13RJ45 : type de connecteur utilise pour le reseau.14RJ12 : type de connecteur utilise pour la telephonie.

L’œil et le cerveau humain forment un couple d’une capacité énorme en termes de

reconnaissance de l’environnement : une chose toute simple à voir pour nous telle

qu’une droite reliant trois points, nécessite un traitement mathématique complexe

pour un ordinateur. Dans ce rapport vous trouverez des informations concernant la

transformée de Hough : méthode mathématique permettant la détection de droites.

Vous trouverez aussi des informations concernant la réalisation d’un site web de son

design à sa conception PHP .Ainsi que la mise en place d’un réseau et plus

précisément de la baie de brassage.

Mots-clefs : image, traitement, transformée de Hough, réseaux, site Web, filtre,

webcam

The eye and the human brain make a couple with an enormous capacity in terms of

recognition of the environment: a thing very simple to see for us such as a line

connecting three points requires a complexe mathematical treatment for a computer.

In this report you will find informations concerning the Hough transform:

mathematical method allowing detection of lines.

You will find also informations concerning the realization of a Website of it design to

it design PHP. As well as the installation of a network, more precisely the bay of

mixing.

Keywords: pictures, treatment, transform of Hough, network, Website, filter, webcam