32
MASTER__GE | ENSET __ RABAT Page 1 Implémentation d’un algorithme de détection de la couleur sous FPGA Sommaire Introduction & Présentation .......................................................................... 3 I. AR DRONE .................................................................................................. 4 1. Définition............................................................................................................................................... 4 2. Classification: ........................................................................................................................................ 5 3. Formules de VTOL-MAV exixtantes:...................................................................................................... 5 4. Les cellules a voilures tournantes ......................................................................................................... 6 5. PL’environnement du drone ................................................................................................................. 8 5.1) Diagramme de bloc interne de l’AR Drone ............................................................................... 9 5.2) Moteurs et énergie ................................................................................................................... 9 II. Généralités sur la carte FPGA ...................................................................10 1. Présentation de la carte Spartan 3E : .................................................................................................. 10 2. Circuit FPGA :....................................................................................................................................... 11 a) Programmation de la carte ......................................................................................................... 12 b) Horloge ....................................................................................................................................... 13 c) Les entrée/sorties ....................................................................................................................... 13 d) Port VGA ..................................................................................................................................... 14 e) La mémoire de la carte ............................................................................................................... 14 3. Les limites de Spartan 3E .................................................................................................................... 15 III. Détection d'objet dans une image ...........................................................16 1. Généralités .......................................................................................................................................... 16 1.1) Structure d’une image ............................................................................................................ 16 1.2) Pixellisation ............................................................................................................................. 16 1.3) Taille de l’image ...................................................................................................................... 17 2. Codages des couleurs .......................................................................................................................... 17 2.1) Image couleur .................................................................................... Erreur ! Signet non défini. 3. Format d’image ................................................................................................................................... 19 4. Détection de couleur:.......................................................................................................................... 20 4.1) Binarisation de l’image obtenue en HSV ................................................................................. 20 IV. Implémentation de l'algorithme sous FPGA ............................................21 1. Etapes de l’algorithme ............................................................................................................................. 21 2. Binairisation de l’image, à l’aide de MATLAB........................................................................................... 22 3. Création d’une mémoire IP ...................................................................................................................... 23 4. Sous-programme de l’algorithme ............................................................................................................ 24 5. Programme principal de l’algorithme ...................................................................................................... 26 6. Simulation du programme ....................................................................................................................... 28 Conclusion ....................................................................................................31 Références ....................................................................................................32

Detection de Couleur Par FPGA Cas de l AR DRONE

Embed Size (px)

DESCRIPTION

detection de couleur sous FPGA cas de l AR DRONE

Citation preview

Page 1: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 1

Implémentation d’un algorithme de détection de la couleur sous FPGA

Sommaire

Introduction & Présentation .......................................................................... 3

I. AR DRONE .................................................................................................. 4 1. Définition............................................................................................................................................... 4 2. Classification: ........................................................................................................................................ 5 3. Formules de VTOL-MAV exixtantes:...................................................................................................... 5 4. Les cellules a voilures tournantes ......................................................................................................... 6 5. PL’environnement du drone ................................................................................................................. 8 5.1) Diagramme de bloc interne de l’AR Drone ............................................................................... 9 5.2) Moteurs et énergie ................................................................................................................... 9

II. Généralités sur la carte FPGA ................................................................... 10

1. Présentation de la carte Spartan 3E : .................................................................................................. 10 2. Circuit FPGA :....................................................................................................................................... 11 a) Programmation de la carte ......................................................................................................... 12 b) Horloge ....................................................................................................................................... 13 c) Les entrée/sorties ....................................................................................................................... 13 d) Port VGA ..................................................................................................................................... 14 e) La mémoire de la carte ............................................................................................................... 14 3. Les limites de Spartan 3E .................................................................................................................... 15

III. Détection d'objet dans une image ........................................................... 16 1. Généralités .......................................................................................................................................... 16 1.1) Structure d’une image ............................................................................................................ 16 1.2) Pixellisation ............................................................................................................................. 16 1.3) Taille de l’image ...................................................................................................................... 17 2. Codages des couleurs .......................................................................................................................... 17 2.1) Image couleur .................................................................................... Erreur ! Signet non défini. 3. Format d’image ................................................................................................................................... 19 4. Détection de couleur:.......................................................................................................................... 20 4.1) Binarisation de l’image obtenue en HSV ................................................................................. 20

IV. Implémentation de l'algorithme sous FPGA ............................................ 21

1. Etapes de l’algorithme ............................................................................................................................. 21 2. Binairisation de l’image, à l’aide de MATLAB........................................................................................... 22 3. Création d’une mémoire IP ...................................................................................................................... 23 4. Sous-programme de l’algorithme ............................................................................................................ 24 5. Programme principal de l’algorithme ...................................................................................................... 26 6. Simulation du programme ....................................................................................................................... 28

Conclusion .................................................................................................... 31

Références .................................................................................................... 32

Page 2: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 2

Implémentation d’un algorithme de détection de la couleur sous FPGA

Page 3: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 3

Implémentation d’un algorithme de détection de la couleur sous FPGA

Introduction & Présentation

Les applications de l'Intelligence Artificielle à des agents en interaction physique avec

le monde réel sont confrontées au besoin de planifier des actions avec information incomplète

par rapport à l'état du monde. Les applications visées dans nos travaux sont des missions de

robotique aérienne en environnement incertain. Dans ces problèmes, la perception est un

moyen d'acquérir de l'information sur l'environnement afin de mieux agir pour atteindre le but

de la mission, mais elle nécessite aussi des décisions et actions spécifiques de perception dans

le but de recueillir l'information. Il s'agit donc de décider pour percevoir et de percevoir pour

décider.

Dans ce rapport, nous allons voir quels étaient les objectifs du mini-projet qui ont été

fixé, son environnement et ses étapes pour sa réalisation. Ainsi, l’objectif de ce projet est de

permettre à l’AR drone de suivre, de façon autonome de détecter la couleur rouge dans une

image donnée, il devra s’arrêter en allumant une LED. Pour cela, il faut définir quel sera le

système adapté pour acquérir des images, et appliquer des algorithmes de traitement d’image

sur la carte, Ceci défini les objectifs de ce projet.

Page 4: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 4

Implémentation d’un algorithme de détection de la couleur sous FPGA

I AR Drone

1. Définitions

Il est intéressant de lire ce que retiennent les dictionnaires pour définir un drone. Le Petit

Robert nous apprend que le mot drone est apparu dans la langue française en 1954, il vient de

l’anglais signifiant “Faux bourdon”. L’autre définition du Petit Robert indique que c’est un

petit avion de reconnaissance, sans pilote, télécommandé ou programmé. L’encyclopédie

Universalis propose une définition un peu plus générale. Elle indique qu’un drone (en anglais

U.A.V. pour Unmanned Aerial Vehicle) est un véhicule aérien sans pilote. Il peut donc faire

appel au concept de l’avion, de l’hélicoptère voir de la fusée. Il sert, d’une façon générale,

pour des missions de surveillance du champ de bataille, d’acquisition du renseignement ou de

combat. Si le drone est d’abord apparu pour répondre à des besoins militaires, il est aussi

désormais envisagé pour des applications civiles comme dans le domaine de la surveillance de

zones et d’installations, dans l’agriculture, etc...

Toujours selon les dictionnaires un drone est un aéronef disposant d’une ou plusieurs charges

utiles nécessaires à l’observation ou destinées au combat (missiles, bombes). Généralement, il

est contrôlé et piloté à partir de stations au sol, avec ou sans le relais des satellites, mais il peut

aussi effectuer des missions de manière autonome. Dans l’avenir, il est prévu d’assister les

drones par des systèmes de contrôle disposés sur des aéronefs (poste de commandement

volant ou avion de combat). Chargés dans leur majorité de l’acquisition de renseignements,

les drones disposent de différents capteurs opérant dans différentes longueurs d’ondes

(domaines du visible, de l’infrarouge ou des ondes radars). Ils peuvent aussi être équipés de

moyens d’écoute électronique et de brouillage.

Aujourd’hui lorsque l’on parle de drone et de leur mise en œuvre il est plus juste de parler de

système de drone. En effet, le drone fait partie d’un système qui est composé d’un ou

plusieurs vecteurs aériens, d’une ou plusieurs stations sol de commande ainsi que de liaisons

de données entre le vecteur et la partie sol. Il peut y avoir des drones terrestres, marins, sous-

marins et aériens. On voit donc que la définition s’étend progressivement et englobe les

nombreux systèmes autonomes. Si on se restreint aux drones aériens on peut les classer en

différentes catégories en fonction de leurs tailles aujourd’hui très variées : de quelques

centimètres à plusieurs mètres. Leurs formes également, tout comme leurs types de propulsion

: certains sont équipés de réacteurs, d’autres d’hélices, d’autres encore utilisent des rotors, à

l’instar des drones hélicoptères par exemple.

Page 5: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 5

Implémentation d’un algorithme de détection de la couleur sous FPGA

2. Classification

La classification des drones est un exercice très difficile, dans la mesure où elle est différente

selon les pays. Cependant les drones aériens peuvent être classés selon trois critères que sont

l’altitude de croisière, l’endurance en termes de temps de vol et leur dimension principale.

Dans ce cadre, le domaine opérationnel des drones peut se décomposer en trois segments :

les drones tactiques ;

les drones de moyenne altitude et longue endurance (MALE) permettant d’utiliser une

charge utile de l’ordre de 100 kg ;

les drones de haute altitude et longue endurance (HALE).

Le segment tactique se décompose lui-même en six segments :

Les micro-drones (Micro Air Vehicule ou MAV), pouvant être contenu dans une

sphère de 30 cm ;

Les mini-drones (Mini Air Vehicule ou MAV également), pouvant être contenu dans

une sphère de 70 cm ;

Les drones de très courte portée (TCP) ;

Les drones moyenne portée lents (multicharges multimissions ou MCMM lents) ;

Les drones rapides basse altitude (MCMM rapides) ;

Les drones maritimes tactiques (DMT).

Cela peut surprendre de distinguer en deux segments les micro-drones et les mini-drones,

mais la différence d’échelle entre les deux impose aujourd’hui encore des contraintes fortes

pour le choix des matériaux des capteurs et des systèmes embarqués. Par conséquent ces deux

familles sont fortement différenciées par l’autonomie en vol et la qualité des contrôles,

cependant la miniaturisation des cartes électroniques jointe à l’augmentation des capacités de

calculs des mini-systèmes embarqués tend à réduire ces écarts.

3. Formules de VTOL-MAV existantes

Deux grandes familles de machines volantes ont d’abord vu le jour : celles à voilures fixes, où

la vitesse relative résulte du mouvement du véhicule (elles répondent au besoin de vol en

translation rapide) et celles à voilures tournantes, où la vitesse relative résulte de la mise en

rotation des pales par rapport à un corps qui lui, reste immobile dans l’air (elles répondent au

besoin de vol stationnaire). Aujourd’hui, un besoin émergeant dans le monde des mini-drones,

celui imposant à une même cellule d’avoir des qualités de vol stationnaire et de vol en

translation rapide économique, impose une modification de ce classement.

Page 6: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 6

Implémentation d’un algorithme de détection de la couleur sous FPGA

Nous devons pour cela rappeler la notion de convertibilité appliquée aux mini-drones. Nous

parlerons alors de deux familles de convertibles, ceux dont la convertibilité découle d’une

déformation mécanique (rotor basculant, tête basculante...) et ceux dont la convertibilité

apparaît par le basculement totale ou partiel de la cellule (”Tail-sitter”). Nous voyons alors

que si nous présentons des drones capables de vol en translation rapide et de vol stationnaire

nous pouvons remplacer la famille des cellules à voilure fixe qui sera englobée par les

convertibles. Dans la suite de ce chapitre nous présenterons donc les concepts les plus

pertinents de mini drones classifiés dans les deux familles de cellules à voilures tournantes et

de cellules convertibles. En préalable à ce qui va suivre, on présente sur la figure 2.1 les noms

et conventions d’axes de rotations qui seront utilisés.

4. Les cellules à voilures tournantes

Les cellules à voilures tournante ont toutes au moins une caractéristique commune :

Ce sont des objets volant à décollage et à atterrissage vertical, capable de faire du vol

stationnaire. Ils utilisent un (ou des) rotors(s) pour se sustenter et se propulser. Nous

établissons un classement des cellules `a voilures tournantes en 4 catégories :

Monorotor

Birotors contrarotatifs

Trirotor

Quadrirotor (notre cas)

Les axes de rotation

Page 7: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 7

Implémentation d’un algorithme de détection de la couleur sous FPGA

4.1 Les Quadrirotors

Principe : Un quadrirotor consiste en une armature en croix symétrique avec des moteurs et

des rotors aux extrémités de chaque tige. Les rotors diamétralement opposés tournent dans le

même sens (fig. 2.8). Les rotors sont généralement non articulés.

Translation Verticale : Le contrôle vertical se fait par variation de la vitesse de rotation des

rotors. Pour un vol stationnaire, la vitesse de rotation est la même que pour les 4 rotors, de

façon à ce que la poussée globale des quatre rotors compense le poids de l’appareil. Pour

changer l’altitude, on fait varier identiquement la vitesse de rotation des 4 rotors.

Translation horizontale : On fait varier l’assiette de l’appareil, ce qui permet de modifier le

vecteur translation en grandeur et en direction de chaque rotor.

Lacet : Le lacet s’obtient par la différence de couple de frottement créée au niveau des rotors.

Il suffit donc d’augmenter la vitesse de rotation de deux moteurs diamétralement opposés et

diminuer la vitesse des deux autres moteurs. Ainsi la poussée globale est maintenue, mais il y

a apparition d’un couple résultant.

Roulis & tangage : Le roulis et le tangage à altitude constante sont obtenus de la façon

suivante : il faut faire varier la vitesse des moteurs des rotors diamétralement opposés. On

augmente la vitesse de l’un et on diminue la vitesse de l’autre (On conserve la force globale

opposée au poids). Le quadrirotor s’incline du côté où l’on a ralenti la vitesse du moteur et

part dans cette direction.

Page 8: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 8

Implémentation d’un algorithme de détection de la couleur sous FPGA

5. L’environnement du Drone :

Mouvement du drone en fonction de la vitesse des rotors

Page 9: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 9

Implémentation d’un algorithme de détection de la couleur sous FPGA

5.1 Diagramme de bloc interne de l'AR. Drone

5.2 Moteurs et énergie

4 moteurs brushless : (35 000 tr/min, puissance : 15 W pour le 2.0) et (28 500 tr/min,

puissance : 14,5 W pour la première génération)

Batterie Lithium‐polymère (trois cellules, 11,1 V, 1 000 mAh)

Capacité de décharge : 10 C

Temps de rechargement de la batterie : 90 minutes

L'autonomie est de maximum 12 à 15 minutes pour les deux drones.

Page 10: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 10

Implémentation d’un algorithme de détection de la couleur sous FPGA

II Généralité sur la carte FPGA

1) Présentation de la carte Spartan 3E :

La carte de développement Nexys2 de Digilent utilise le FPGA Spartan 3E (XC3S1200E ou

XC3S500E) de Xilinx. Cette carte offre un environnement de conception très adapté pour le

prototypage d’applications variées dont celles des systèmes numériques à usage général et des

systèmes embarqués. Cette carte est de plus idéale pour les applications de traitement vidéo et

de traitement de signal en général.

La carte Nexys2 regroupe entre autre un FPGA XC3S500E Spartan 3E, un accès USB2 pour

la configuration et le transfert de données rapide, une mémoire externe RAM de 128Mbit et

une mémoire externe ROM de 128Mbit, un port PS/2, un port VGA, un port RS-232, un port

de configuration USB, deux convertisseurs de données, un oscillateur à 50 MHz, un

connecteur d’expansion Hirose FX2 permettant 60 entrées/sorties génériques, 8 Led, 4

boutons poussoir et 8 commutateurs (Switch).

Page 11: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 11

Implémentation d’un algorithme de détection de la couleur sous FPGA

2) Circuit FPGA :

Field Programmable Gate Array (FPGA): circuit programmable composé d’un réseau de blocs

logiques, de cellules d’entrée-sortie et de ressources d’interconnexion totalement flexibles,

ce circuit, qui nécessite un outil de placement-routage, est caractérisé par son architecture,

sa technologie de programmation et les éléments de base de ses blocs logiques.

Le FPGA est une version plus évoluée et offrant plus de flexibilité que les PLD. Ainsi

souvent utilisé pour créer un circuit intégré prototype dans la phase préliminaire du

développement d'un ASIC, et ceci en raison de sa facilité de programmation ce qui nous fait

gagner le temps de développement.

Les FPGA sont composés des cellules programmables, les IOB et les CLB. Les IOB (Input

Output Blocs) servent comme tampons aux entrées/sorties du FPGA. Les CLB (Control Logic

Blocs) sont des cellules programmables qui réalisent les fonctions combinatoires et

séquentielles de notre architecture à implanter.

La carte supporte trois modes de configuration à la mise sous tension :

Mode Master-Slave utilisant le PROM 4 Mbit,

Un mode SPI utilisant la mémoire Flash sériel

Un mode BPI utilisant la mémoire Flash parallèle.

La carte peut aussi être programmée directement à l’aide d’un port JTAG lorsqu’elle

est sous tension.

Page 12: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 12

Implémentation d’un algorithme de détection de la couleur sous FPGA

a) Programmation de la carte

Le FPGA peut être programmé de deux façons: directement à partir d'un PC en utilisant le

port USB, et à partir de la Flash ROM (la Flash ROM est également programmable par

l'utilisateur via le Port USB). Un cavalier sur la carte Nexys2 détermine la source (PC ou

ROM) du FPGA à utiliser pour charger sa configuration. Le FPGA peut automatiquement

charger une configuration à partir de la Platform du Flash ROM à la mise sous tension si le

cavalier de mode de configuration est réglé sur "Master série ". Si le cavalier Mode est réglé

sur "JTAG", le FPGA attendra la programmation à partir du PC (via le câble USB). C’est

cette configuration qu’on adopte pendant le déroulement des TP . Les cavaliers sur les cartes

sont normalement dans les bonnes configurations.

Le logiciel Adept peut être utilisé pour configurer le FPGA via le câble USB avec n'importe

quel fichier binaire sélectionné approprié stocké sur l'ordinateur.

Alors le FPGA est configuré, il le restera ainsi jusqu'à ce qu'il soit remis à zéro par une

rupture d'alimentation ou par une pression sur le bouton de réinitialisation du FPGA (BTNR).

La Flash ROM conservera le fichier binaire jusqu'à ce qu'elle soit reprogrammée,

indépendamment de la mise sous tension.

Mode de programmation

Page 13: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 13

Implémentation d’un algorithme de détection de la couleur sous FPGA

b) Horloge :

La carte possède un oscillateur de 50MHz et une prise pour un seconde oscillateur la carte

donne la possibilité de diviser cette fréquence pour définir la phase de retard précis et les

relations entre divers signaux d'horloge.

c) Les entrées /sorties :

Cette carte possède aussi un nombre très important de ports d’entrées sorties :

75 E/S du FPGA acheminées vers les connecteurs d'extension (un connecteur Hirose FX2 à

grande vitesse avec 43 signaux et quatre connecteurs Pmod 2x6)

• Tous les signaux d'E/S sont protégés contre les décharges électrostatiques et les court

circuits, assurant une longue durée de vie dans n'importe quel environnement

• Les E/S intégrées comprennent huit DEL, un affichage à 7 segments et 4 chiffres, quatre

boutons-poussoirs, huit interrupteurs à glissière

l’oscillateur de la carte

les entrées/sorties

Page 14: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 14

Implémentation d’un algorithme de détection de la couleur sous FPGA

d) Port VGA :

La carte contient un port VGA pour l’affichage sur un écran externe, ce port comporte 10

signaux :

8 signaux pour les couleurs :

3 signaux pour le rouge et trois pour le vert

2 signaux pour le bleu

2 signaux pour la synchronisation verticale et horizontale

e) La mémoire de la carte :

La mémoire est un élément très déterminant dans le choix des cartes FPGA, dans le cas

de notre carte les performances de la mémoire sont les suivantes :

Une mémoire externe de type RAM de 128Mbits type MICROn M45W8MW16 cellulaire

pseudo-statique organisée en 16bits x 8Mbytes, fonctionne comme une SRAM asynchrone

avec 70 ns de temps de cycle lecture/écriture. Ou en tant que mémoire synchrone avec un bus

de 80MHz.

La ROM externe est un périphérique Intel 128Mbit organisé comme 8Mbytes x 16bits.

En interne, il contient 128 blocs qui peuvent être individuellement effacés, et elle a les

temps de cycle de 110ns en lecture, et 25ns en mode page pour les blocs. Il dispose d'un

tampon d'écriture interne de 32 octets qui peut écrire avec des temps de cycle 70 ns, et la

mémoire tampon 32-octet peut être transférée à la matrice de flash dans 218us (typique). Les

deux circuits partagent le même bus de 16 bits de données et le bus d'adresse de 24 bits.

Le tableau suivant décrit la répartition

de la mémoire selon les bus d’adresse

et les bus de données.

Gestion de la mémoire

Page 15: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 15

Implémentation d’un algorithme de détection de la couleur sous FPGA

3) Les limites de Spartan 3E

Ce qui va limiter nos applications VGA ce sont les limites du circuit Spartan 3E de la carte.

En effet, pour une application graphique VGA pleine capacité, il faudrait 480x640x3 octets de

mémoire par image soient 921600 octets ou 900K octets pour une image en 17 millions de

couleurs. Or le circuit Spartan ne dispose que d’un maximum de 64 kilo -bits (8 kilo-octets) et

il n’y a pas de mémoire externe sur la carte. En conséquence, il est absolument nécessaire de

limiter les performances escomptées et donc les ressources.

Comme dans notre cas on a limité les dimensions de l’image et même le nombre de bits

correspondant aux codes couleurs des pixels composants notre image. Le passage en 256

couleurs divisés par trois la mémorisation d’une image mais 300Koctets est encore beaucoup

trop important. Travailler en 2 couleurs (couleur sur fond blanc ou noir et blanc etc..) réduit à

un seul bit l’information pixel, on arrive alors à 307200 bits soient 37 Kilo-octets, il sera

suffisant mais on va dégrader la qualité de l’image. Les applications les plus économes sont

celles qui n’obligent pas à mémoriser toute l’image mais seulement certains objets sur fond

constant.

Page 16: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 16

Implémentation d’un algorithme de détection de la couleur sous FPGA

III Détection d’objet dans une image

1- Généralités

Une image numérique est une image dont le support est stocké sous forme binaire dans un

fichier informatique. Celle-ci peut être obtenue soit à partir de capteurs optiques

(appareil photo, caméra, scanner…) ou créée à partir de logiciels (Paintbrush, libreoffice…).

1.1- Structure d’une image

Une image est la représentation d’un être ou d’une chose obtenue par exemple par la

photographie, la vidéo ou l’utilisation d’un logiciel spécialisé. Elle est dite numérique lorsque

sa sauvegarde est obtenue sous forme binaire. Donc image numérique fait appel à

l’informatique.

Chaque image numérique est constituée d’un nombre donné de lignes. Chaque ligne comporte

un nombre de point donnés. L’ensemble constitue une matrice. Ces points sont

dénommés pixel (de l’anglais picture element et noté souvent px). Chaque « case » de cette

matrice contient des nombres caractéristiques à la couleur attribuée au pixel.

1.2- Pixellisation

La pixellisation d’une image, appelée aussi définition, est le nombre de points la composant.

Ainsi, toute image est constituée de la juxtaposition de points. Sur notre image ‘fleur’, nous

avons 800 lignes comportant chacune 600 points soit un total de 480 000 points ayant chacun

une couleur pour la représenter.

Image "fleur" Zoom de l'image 'fleur'

Page 17: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 17

Implémentation d’un algorithme de détection de la couleur sous FPGA

En grossissant l’image du fichier ‘fleur’ avec un logiciel de dessin (paintbrush), on

peut mettre facilement en évidence la pixellisation de l’image

1.3- Taille de l’image

La résolution de l’image influe directement sur la taille du fichier de sauvegarde de celle -ci.

Par exemple, dans le cadre de la télévision, on a :

la télévision à définition standard SD 576 a 768 pixels par ligne et 576 lignes

par image soit un total de 442 368 pixels par image ;

la télévision haute définition HD 1080 a 1920 pixels par ligne et 1080 lignes

par image soit un total de 2 073 600 pixels par image.

Ainsi si la résolution est environ multipliée par 2, les nombre de pixels l’est par 4 (structure

bidimensionnelle de l’image) ce qui peut engendrer un temps de traitement plus long. Il faut

donc trouver un compromis entre la qualité attendue de l’image en termes de résolution et la

taille de son fichier de sauvegarde.

2- Codages des couleurs

Nous l’avons vu une image apparait comme une matrice où chaque case contient des nombres

associés à une couleur. Usuellement on distingue 3 grands types de couleurs pour une image

numérique :

Le noir et blanc ;

Les niveaux de gris ;

La couleur.

Ces types sont généralement à choisir lors d’une numérisation par scanner ou lors de la

configuration d’un appareil photographique.

2.1- Image couleur

2.1.1 Principe

La couleur d’un pixel est obtenue, comme le ferait un peintre, par le mélange de couleurs

fondamentales. Il ne s’agit pas ici de décrire toutes les techniques utilisées. Nous allons

décrire un des principes les plus couramment utilisé qui est celui de la synthèse additive .

Page 18: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 18

Implémentation d’un algorithme de détection de la couleur sous FPGA

2.1.2 Codage RVB

Le principe consiste à mélanger les 3 couleurs : rouge, vert et bleu (noté RVB ou RGB en

anglais). A l’aide de ces 3 couleurs, on obtient toute une palette de nuances allant du noir au

blanc. A chaque couleur est associé un octet (donc 256 niveaux de luminosité) de chacune des

couleurs fondamentales.

Un pixel ‘couleur’ est alors codé avec 3 octets et on a alors la possibilité d’obtenir

possibilités de couleurs soit de l’ordre de 16 millions de couleurs différentes.

On dit que les images obtenues sont en couleurs « vraies ». La qualité colorimétrique obtenue

est celle d’une photographie argentique couleur

Principe codage de la couleur

Valeurs RGB d'un pixel

Page 19: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 19

Implémentation d’un algorithme de détection de la couleur sous FPGA

Ainsi le pixel de coordonnées (54, 51) (en haut à gauche de l’image « dans le ciel ») a pour

valeurs RVB respectivement (77, 118, 239).

Il existe d’autres formats de codage de la couleur (image à palette 256 couleurs,

mode HAM…) pour lesquels on pourra se reporter utilement à leur description en ligne sur

Internet.

3- Formats d’image

Lors de son enregistrement une image est stockée suivant un format d’image précis. Ce

format doit permettre de stocker l’information de l’image avec un minimum de perte

d’informations. Il existe ainsi différents formats qui pourront favoriser soit la conservation de

la qualité soit la diminution de la taille du fichier informatique.

Le tableau suivant donne les principales caractéristiques des principaux standards utilisés

Principaux

formats

Page 20: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 20

Implémentation d’un algorithme de détection de la couleur sous FPGA

4- Détection de la couleur

La couleur est quelquefois utile dans certaines applications. On peut penser qu'une

application effectue un contrôle de qualité au niveau de l'intensité de couleur sur un produit.

On pourrait aussi utiliser la couleur pour permettre à un robot de s'arrêter lorsqu'il arrive à un

panneau de couleur rouge.

Pour ce faire, on convertit l'image d'un format « BGR » en format « HSV » ou format

« BINAIRE ». On est plus intéressé ici à travailler avec les valeurs des teintes et de la

saturation qui nous permet d'obtenir la quantité d'une certaine couleur contenu dans un objet.

4.1- Binarisation de l'image obtenu en HSV

Cette étape est très similaire à celle qu’on a programmé pour binariser une image en ton de

gris. On obtient ainsi une image noir et blanc où les pixels des objets désirés étaient en blanc

et le reste en noir. L'étape que nous allons faire ici pour traiter l'image en HSV est

exactement la même à la différence que maintenant nous binarisons les pixels qui se trouvent

dans un certain intervalle de couleur.

Malheureusement, à moins d'avoir une étendue de pixel dont la couleur est uniforme, ce qui

est rarement le cas surtout si l'image provient d'un dispositif de capture comme une caméra, la

binarisation ne donnera pas un bon résultat si on utilise la technique du seuil.

On rappele que dans cette technique, le seuil est une valeur qui nous permet de départager les

pixels selon la relation suivante :

Pixel < Valeur du Seuil alors Pixel = 0

Pixel >= Valeur du Seuil alors Pixel = 255

Pour la couleur, il faut plutôt se donner un intervalle dans lequel le seuil se situera. Ainsi la

relation est plutôt la suivante :

H – tolérance <= Hpixel < H + tolérance && S - tolérance <= Spixel < S + tolérance.

Où H : valeur de la teinte (Hue)

S : Valeur de la saturation (Saturation)

La valeur de tolérance nous permet d'obtenir cet intervalle dont nous parlions précédemment.

La valeur pour la teinte et la saturation dépend de la couleur que l'on veut rechercher.

Page 21: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 21

Implémentation d’un algorithme de détection de la couleur sous FPGA

IV Implémentation de l'algorithme sous FPGA

1) Étapes de l'algorithme

• Acquisition des images (trames de la video)

– Le principe du tout traitement vidéo est de procéder à une analyse du flux image

par image.

• Conversion

– On doit convertir l'image (trame) qui est en BGR en HSV (Hue, Saturation, Value).

– La représentation en HSV nous permettra de se baser sur un canal ou deux :

la teinte et la saturation de la couleur, sans prendre en compte la brillance (V value), se qui

permet alors d'éliminer les problèmes liés à l'éclairage.

• Binarisation

– La binarisation consiste à placer les pixels de l'image dans deux classes

distinctes, généralement représentées par deux couleurs, le blanc et le noir.

– la première classe correspondra à la couleur à isoler, la seconde à toutes les

autres couleurs

Page 22: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 22

Implémentation d’un algorithme de détection de la couleur sous FPGA

– Ainsi, si la couleur de l'objet sélectionné est le rouge, nous verrons sur notre

image binarisée tous les éléments rouges apparaître en blanc sur un fond noir.

• Le Masque

– Créer un masque pour sélectionner les pixels qui peuvent appartenir à l'objet en se

basant uniquement sur leurs valeurs HSV.

– Théoriquement, nous devons mettre en blanc tous les pixels ayant les mêmes

valeurs HSV que notre couleur. Pratiquement, le résultat ne serait pas très

convaincant et nous ne récupérerions que quelques pixels.

– Il faut rechercher les pixels qui se situent dans un intervalle autour de cette couleur,

nous utiliserons alors une valeur de tolérance pour les valeur de teinte et de

saturation uniquement.

2) Binairasation de l’image, à l’aide de MATLAB

Le bloc « Mémoire » et déjà préexisté comme une IP (propriété intellectuelle)

sur le logiciel Xilinix, alors il suffisait juste de choisir quel type de mémoire on va utiliser,

dans notre cas c’est une mémoire ROM de taille 40 000 cases mémoire (selon la taille de

l’image qu’on va stocker), dont chaque case mémoire contient 8 bits (8 bits c’est la valeur

dont il est codé chaque pixel RVB).

Donc la taille globale de notre mémoire sera de 200x200x8 bits = 320 Kbits.

Notre image est de forme matricielle de taille 200x200 de trois plan R, V et B,

pour la stocker dans la mémoire de la carte FPGA nous étions obligés de passer par

l’outil MATLAB, afin de convertir l’image sous une forme vectorielle.

Page 23: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 23

Implémentation d’un algorithme de détection de la couleur sous FPGA

3) Création d’une mémoire IP

Dans cette partie on va voir l’insertion d’IP et choix de la mémoire :

Sélectionner « Single Port ROM » puis « Next » , on créera une mémoire de 8 x 40001,« Next

» à l’étape 4, sélectionner, dans Load File, le fichier « valeur.coe » Puis « Next » jusqu’à

l’étape 6, choisir « Generate »

Page 24: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 24

Implémentation d’un algorithme de détection de la couleur sous FPGA

4) Sous-programmes de l’algorithme

Page 25: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 25

Implémentation d’un algorithme de détection de la couleur sous FPGA

Page 26: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 26

Implémentation d’un algorithme de détection de la couleur sous FPGA

5) Programme principal de l’algorithme

1ère Solution:

Programme du Montage global (en utilisant la fonction portmap):

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use IEEE.STD_LOGIC_ARITH.ALL; entity portmap is Port ( clock : in STD_LOGIC; pix_out : out STD_LOGIC_VECTOR (7 downto 0); LED_OUT: out std_logic; reset :in std_logic ); end portmap; architecture Behavioral of portmap is --------------- hologe_25Mhz -------------------------- component horloge_25Mhz is Port ( clk : in STD_LOGIC; reset_h : in STD_LOGIC; clk_25 : out STD_LOGIC ); end component; --------------------- lecture mémoire --------------------- component lecture is Port ( adr : out STD_LOGIC_VECTOR (15 downto 0); clk_lec : in STD_LOGIC; rst : in STD_LOGIC ); end component; ----------------------- mémoire ------------------------------ component memoire is port ( clka: IN std_logic; addra: IN std_logic_VECTOR(15 downto 0); douta: OUT std_logic_VECTOR(7 downto 0)); end component; --------------------------------------------------------------- component detection is Port ( clK_d : in STD_LOGIC; donnee_IN : in STD_LOGIC_VECTOR (7 downto 0); led : out STD_LOGIC ); end component; ------------------------- liaison ---------------------------- signal sig1 : std_logic; signal sig2 : std_logic_vector (15 downto 0 ); signal sig3 : std_logic_vector (7 downto 0 );

Page 27: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 27

Implémentation d’un algorithme de détection de la couleur sous FPGA

---------------------------------------------------------------- begin u1 : horloge_25Mhz port map(clk=>clock,reset_h=>reset,clk_25=>sig1); u2 : memoire port map(clka=>sig1,addra=>sig2,douta=>sig3); u3 : lecture port map(clk_lec=>sig1,rst=>reset,adr=>sig2); u4 : detection port map(clk_d=>sig1,donnee_IN=>sig3,led=>LED_OUT); pix_out <=sig3; end Behavioral;

2ème Solution:

On utilise les blocs des sous-programmes pour réaliser le schématique global

Page 28: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 28

Implémentation d’un algorithme de détection de la couleur sous FPGA

6) Simulation du programme

Programme de testbench :

LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL; LIBRARY UNISIM; USE UNISIM.Vcomponents.ALL; ENTITY schema_montage_schema_montage_sch_tb IS END schema_montage_schema_montage_sch_tb; ARCHITECTURE behavioral OF schema_montage_schema_montage_sch_tb IS COMPONENT schema_montage PORT( reset: IN STD_LOGIC; clock : IN STD_LOGIC; pix_out :out STD_LOGIC_VECTOR (7 downto 0); led_out : OUT STD_LOGIC); END COMPONENT; SIGNAL reset : STD_LOGIC; SIGNAL clock : STD_LOGIC; SIGNAL led_out : STD_LOGIC; signal pix_out : STD_LOGIC_VECTOR (7 downto 0); -- Clock period definitions constant clock_period : time := 10 ns; BEGIN UUT: schema_montage PORT MAP( reset => reset, clock => clock, led_out => led_out, pix_out => pix_out ); -- Clock process definitions clock_process :process begin clock <= '0'; wait for clock_period/2; clock <= '1'; wait for clock_period/2; end process; -- Stimulus process reset <= '1' after 100 ns, '0' after 300 ns; END;

Page 29: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 29

Implémentation d’un algorithme de détection de la couleur sous FPGA

Simulation sous ISIM :

Si la simulation est effectuée mais dans le cas ou elle ne détecte pas la couleur rouge la

LED reste éteinte et le testbench n’affiche aucun changement (LED_OUT=0)

ainsi on voit que vraiment la LED est éteinte dans la carte FPGA

NB : LA LED qui montre la détection de la couleur est verte

Page 30: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 30

Implémentation d’un algorithme de détection de la couleur sous FPGA

Dans l’autre cas, s’il y la détection de la couleur (LED_OUT=1):

Voyons la LED est allumée dans la carte FPGA

Page 31: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 31

Implémentation d’un algorithme de détection de la couleur sous FPGA

Conclusion

Ce projet a été enrichissant, car nous avons pu acquérir plusieurs connaissances

intéressantes que ce projet a pu rassembler, à savoir : le traitement d’image,

l’informatique industrielle ou plus précisément le développement VHDL.

Pour arriver au résultat obtenu, on peut citer de nombreux problèmes:

Notamment au niveau de la détection de couleur dans une image qui nécessite un traitement

puissant.

La limitation de la carte Spartan 3 au niveau de la mémoire

Enfin, à titre indicatif que ce domaine est ouvert à la recherche, on trouve pas mal de

publication sur internet de thèses qui travaillaient soit dans le sens de rénovation soit

d’invention de nouvelles techniques et algorithmes.

Page 32: Detection de Couleur Par FPGA Cas de l AR DRONE

MASTER__GE | ENSET __ RABAT Page 32

Implémentation d’un algorithme de détection de la couleur sous FPGA

Références

Support , cours_VHDL_5 , VHDL_Support_V2 M.JILBAB ;

Guillaume_Bellestre_Projet_rapport .pdf

http://perso.ens-lyon.fr/arnaud.tisserand/

http://embdev.net/forum/fpga-vhdl-verilog