Vous êtes sur la page 1sur 23

Sommaire

Cahier de charge .3
INTRODUCRION .................................................................................................................. 4
I.Les Drones ............................................................................................................................. 4
1.1.Diagramme de bloc interne de l'AR. Drone ......5
1.2. Description du fonctionnement de lAR drone.....5
1.3. Dcomposition de l'AR. Drone..6
1.4. Les capteurs internes de l'AR. Drone...6
1.5. Diagramme de bloc interne de la carte moteur de l'AR. Drone.7
II. Camra embarque ..8
2.1 Exemple dune camra ....8

III. Protocoles AT.....8


3.1 Structure dune commande AT ....9
3.2 Syntaxe des commandes AT.10
IV. Gnralits sur la carte FPGA ...................................................................... 12
4.1. Prsentation de la carte Spartan 3E12
4.2. Circuit FPGA.12
4.3. Programmation de la carte...13
4.4. La mmoire de la carte.13
V. Dtection dobjet (ballon rouge) dans une image avec Matlab..14
5.1. Gnralits.14
5.2. Une image numrique...14
5.3. Taille de limage....15
5.4. Codages des couleurs15
5.5. Image couleur....15
a. Principe....15
b. codage RVB.15
c. formats dimage..15

5.6. Cration du fichier valeur.coe sous Matlab...15


a. Dtection de la couleur rouge...16
b. Algorithme sous Matlab de Dtection de ballon rouge.16

VI. Implmentation de l'algorithme sous FPGA...18


6.1.tapes de l'algorithme....18
6.2. Binarisation de limage, laide de MATLAB....19
6.3. Cration dune mmoire IP....19

6.4. Sous-programmes de lalgorithme.....20

Conclusion
2

Cahier de charge
Lobjectif de ce mini-projet consiste raliser lautopilotage pour
lAR. Drone, qui va faire la dtection et reprage dun ballon rouge par
Une camra implmenter dans lAR drone et envoy les donnes en unit
de traitement FPGA pour comparer avec les donnes existe dans cette
unit et donne lordre lAR drone pour suive cet objet (ballon
rouge).Pour cela nous devons mettre en place un algorithme de
traitement dimage quon va limplant sur cette unit.

Introduction gnral
Les drones sont des aronefs capables de voler et d'effectuer une mission sans prsence
humaine bord. D'origine anglaise, le mot drone, qui signifie bourdon, ou
bourdonnement, est communment employ en Franais en rfrence au bruit que font
certains d'entre eux en volant. Le drone n'est en fait qu'un des lments d'un systme,
conu et dploy pour assurer une ou plusieurs missions. C'est la raison pour laquelle les
spcialistes parlent de systmes de drones.
Le principe des drones peut tre rapproch, toutes proportions gales par ailleurs, de celui
de l'aromodlisme, selon lequel des petites maquettes sont pilotes par tlcommandes.

I. Les Drones
La plupart des drones sont comparables aux avions (Figure (1) et (2)), sauf que leur forme
n'est pas dicte par celle d'un fuselage devant abriter au moins un pilote (de faon
confortable) : les combinaisons de formules arodynamiques et de propulsion sont donc
plus larges. Il existe de nombreuses configurations de drones, trs diffrentes les unes des
autres pratiquement une pour chaque machine et dont certaines sont trs novatrices. En
fait, la forme d'un drone sera dtermine par la nature et le profil de sa mission, ainsi que
par sa charge utile : chaque demande correspond pratiquement une solution spcifique.

Figure 1

Figure2

1.1.

Diagramme de bloc interne de l'AR. Drone

La figure ci-dessous reprsente le diagramme de bloc interne de lAR. Drone :

Figure 3: bloc intern AR.Drone

1.2. Description du fonctionnement de lAR drone


Le drone peut tre pilot par lintermdiaire dune tablette tactile, PC ou par des
Smartphones sous androde.
Lutilisateur choisit alors de dplacer le drone :
- davant en arrire,
- de droite gauche
- de haut en bas,
- ou de le faire pivoter autour de laxe Z.
Pour raliser ces mouvements, le drone est quip de 4 hlices pilotes
indpendamment qui lui confrent 4 degrs de mobilit. Il peut
translater en XYZ et tourner autour de laxe Z. La rotation autour de laxe Y et la rotation
autour de laxe X sont lies la translation suivant Y et X (respectivement).
La mise en rotation dune hlice gnre un effort de pousse suivant Z mais galement
un couple (d la rsistance de lair sur les pales) autour de laxe Z. Pour illustrer ce
5

phnomne, les hlicoptres disposent dun rotor anticouple en queue dappareil pour
contrer ce couple rsistant qui tend faire tourner lhlicoptre autour de laxe de rotation
de lhlice.

1.3.

Dcomposition de l'AR. Drone

Afin de comprendre la structure interne de l'AR. Drone, il est utile de proposer, dans un
premier temps, une dcomposition du bloc AR. Drone sous la forme d'un diagramme de
dfinition de blocs, puis dans un deuxime temps, d'tudier les flux entre les diffrentes
parties.
Les principaux blocs sont :
Carte Mre : C'est l'unit de traitement (le nom Carte Mre choisi pour ce bloc
vient de l'appellation donne par la socit Parrot aux pices dtaches remplaables par
l'utilisateur comme les moteurs, les hlices, etc.). C'est sur cette unit de traitement que
s'excute le systme d'exploitation Linux et le micro-logiciel responsable du fonctionnement
global de l'AR. Drone. On rappelle les principales caractristiques de la carte mre dans le
tableau suivant :

Carte Moteur : cette carte embarque une unit de traitement spcifique et

l'lectronique
ncessaire pour contrler la vitesse d'un moteur. On y adjoint le rducteur et l'hlice pour
complter la description. Comme l'indique la multiplicit, l'AR. Drone possde 4 cartes
moteur.
Carte Navigation : cette carte est aussi compose d'une unit de traitement et des
composants lectroniques et MEMS (Microelectromechanical systems) ncessaires pour
relever l'altitude, les vitesses angulaires et les acclrations linaires de l'AR. Drone (blocs
Altimtre et Centrale Inertielle ). Le but de cette carte est de fournir les donnes
permettant la carte mre de calculer l'altitude, les angles de roulis, tangage et lacet (roll,
pitch et yaw) et les vitesses linaires pour les axes X, Y et Z de l'AR. Drone.

1.4.

Les capteurs internes de l'AR. Drone

L'AR. Drone possde galement des capteurs internes lui permettant de proposer une aide
au vol ainsi qu'une meilleure exprience utilisateur du vol avec drone. Ces capteurs sont des
capteurs que l'on retrouve gnralement dans les pilotes-automatiques savoir :

Un acclromtre 3 axes.
Un gyroscope 2 axes.
Un gyroscope dembarde 1 axe.
MEMS (micro lectro mechanical system).
6

La fonction de pilotage automatique de lAR. Drone facilite le dcollage et latterrissage.


Aprs le dcollage, le pilote automatique stabilise le quadricoptre 80 centimtres du sol.
Si vous recevez un appel pendant que vous tes en train de piloter le quadricoptre, le pilote
automatique le stabilise et le fait atterrir aprs quelques secondes.

1.5.

Diagramme de bloc interne de la carte moteur de l'AR. Drone

Le diagramme de la page suivante montre une dcomposition de haut niveau de la carte


moteur. On y retrouve les blocs suivants :
Unit Control Moteur : unit de traitement charge d'appliquer les consignes
moteurs issues de la carte mre.
Pont Inverseur : systme de commutation d'nergie vers les enroulements du moteur.
Circuit Dtection Pos Rotor : systme de dtection de la position du rotor (contrle
du sens/vitesse de rotation).
Rducteur et Hlice : propulsion
Led : led de statut de l'AR. Drone (prt voler, urgence, animations, etc.)

Figure 4 : carte Moteur AR. Drone

II. Camra embarque :


L'AR. Drone dispose de capteurs externes que sont les camras pour les prises de vue et le
retour vido. La premire camra est place sur le devant du drone et la seconde sur le
dessous pour les prises de vue du sol.

Camera (Frontale & Verticale) : sont des camras embarques sur l'AR. Drone
permettant au joueur de visualiser en temps rel l'avant et le sol vu de l'AR. Drone.
Les images de la camra verticale sont aussi utilises pour la stabilisation de l'AR.
Drone. On rappelle les principales caractristiques techniques des camras :

2.1.Exemple dune camra


Camra ov6620
La camra c3088 base dun capteur ov6620 dOmni Vision fera office de
capture dimage. Cest un composant relativement simple mettre en place qui
require dtre configur via le protocole I2C. La sortie de cette camra peut tre rgle en 8
ou 16bits avec le format YCrBr ou RGB Raw.

III. Protocoles AT
Les commandes AT sont dfinies dans la norme GSM 07.07 (pour les SMS cf. GSM 07.05). AT
est labrviation de ATtention. Ces 2 caractres sont toujours prsents pour commencer une
ligne de commande sous forme de texte (codes ASCII). Les commandes permettent la
gestion complte du mobile.
Trois entits sont dfinies :

TE : Terminal Equipment (envoi et affiche les commandes.


TA : Terminal Adaptateur (interface entre lutilisateur et le mobile).
ME : Mobile Equipment.

Les protocoles AT sont codes en tant que caractres ASCII 8 bits avec un retour chariot
"<CR>" comme un dlimiteur de nouvelle ligne. Toutes les commandes AT commencent par
"AT *" suivi d'un nom de commande, d'un signe gal, d'un numro de squence
8

(commenant par 1, qui rinitialise galement le numro de squence) et ventuellement


d'une liste d'arguments spars par des virgules pour la commande
Les chaines de caractres AT permettent denvoyer des commandes au drone, comme des
instructions de vol (dcoller, avancer) ou des informations de configuration (rgler laltitude
maximale ou la vitesse)

3.1 Structure dune commande AT


La forme pour faire contrler AR. Drone par la commande AT est comme la suite :
void send_at_cmd(String at_cmd) throws Exception {
byte [ ] buffer = (at_cmd + "\r").getBytes();
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, inet_addr,
5556);
socket.send(packet);
waitms(1);
}

Figure 5: protocole AT

3.2 Syntaxe des commandes AT

10

11

IV. Gnralits sur la carte FPGA


4.1. Prsentation de la carte Spartan 3E
La carte de dveloppement Nexys2 de Digilent utilise le FPGA
Spartan 3E (XC3S1200E ouXC3S500E) de Xilinx. Cette carte offre
un environnement de conception trs adapt pour le
prototypage dapplications varies dont celles des systmes
numriques usage gnral et des systmes embarqus. Cette
carte est de plus idale Pour les applications de traitement vido et de traitement de signal
en gnral.
La carte Nexys2 regroupe entre autre un FPGA XC3S500E Spartan 3E, un accs USB2 pour
la configuration et le transfert de donnes rapide, une mmoire externe RAM de 128Mbit et
une mmoire externe ROM de 128Mbit, un port PS/2, un port VGA, un port RS-232, un port
de configuration USB, deux convertisseurs de donnes, un oscillateur 50 MHz, un
Connecteur dexpansion Hirose FX2 permettant 60 entres/sorties gnriques, 8 Led, 4
Boutons poussoir et 8 commutateurs (Switch)

4.2. Circuit FPGA


Field Programmable Gate Array (FPGA): circuit programmable compos dun rseau de blocs
logiques, de cellules dentre/sortie et de ressources dinterconnexion totalement flexibles,
ce circuit, qui ncessite un outil de placement-routage, est caractris par son architecture,
sa technologie de programmation et les lments de base de ses blocs logiques.

12

Le FPGA est une version plus volue et offrant plus de flexibilit que les PLD. Ainsi
souvent utilis pour crer un circuit intgr prototype dans la phase prliminaire du
dveloppement d'un ASIC, et ceci en raison de sa facilit de programmation ce qui nous fait
gagner le temps de dveloppement. Les FPGA sont composs des cellules programmables,
les IOB et les CLB. Les IOB (Input Output Blocs) servent comme tampons aux entres/sorties
du FPGA. Les CLB (Control LogicBlocs) sont des cellules programmables qui ralisent les
fonctions combinatoires et squentielles 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 mmoire Flash
sriel
Un mode BPI utilisant la mmoire Flash
parallle.
La carte peut aussi tre programme directement laide dun port JTAG lorsquelle est sous
tension.

4.3. Programmation de la carte


Le FPGA peut tre programm de deux faons: directement partir d'un PC en utilisant
le port USB, et partir de la Flash ROM (la Flash ROM est galement programmable parl'utili
sateur via le Port USB). Un cavalier sur la carte Nexys2 dtermine 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 rgl sur "Master srie ". Si le cavalier Mode est rgl sur "JTAG",
le FPGA attendra la programmation partir du PC (via le cble USB). Cest cette
configuration quon adopte pendant le droulement des TP. Les cavaliers sur les cartes
Sont normalement dans les bonnes configurations. Le logiciel Adepte peut tre utilis pour
configurer le FPGA via le cble USB avec n'importe quel fichier binaire slectionn appropri
stock sur l'ordinateur. Alors le FPGA est configur, il le restera ainsi jusqu' ce qu'il soit
remis zro par une rupture d'alimentation ou par une pression sur le bouton de
rinitialisation du FPGA (BTNR).La Flash ROM conservera le fichier binaire jusqu' ce qu'elle
soit reprogramme, indpendamment de la mise sous tension.

4.4. La mmoire de la carte


La mmoire est un lment trs dterminant dans le choix des cartes FPGA, dans le cas de
notre carte les performances de la mmoire sont les suivantes : Une mmoire externe de
type RAM de 128Mbits type Micron M45W8MW16 cellulaire pseudo statique organise en
16bits x 8Mbytes, fonctionne comme une SRAM asynchrone avec 70 ns de temps de cycle
lecture/criture. Ou en tant que mmoire synchrone avec un bus de 80MHz. La ROM
externe est un priphrique Intel 128Mbit organis comme 8Mbytes x 16bits.En interne, il
contient 128 blocs qui peuvent tre individuellement effacs, 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

13

interne de 32 octets qui peut crire avec des temps de cycle 70 ns, et la mmoire tampon
32-octet peut tre transfre la matrice de flash dans 218us (typique).
Les deux circuits partagent le mme bus de 16 bits de donnes et le bus d'adresse de 24 bits.

Figure6 : Gestion de la mmoire

V. Dtection dobjet (ballon rouge) dans une image avec Matlab


5.1. Gnralits
Dtection dobjets La dtection base sur la couleur est une mthode simple et rapide qui
peut tre utilise dans plusieurs systmes de vision artificielle, elle peut tre utilise pour la
dtection et le suivi des objets simples comme un ballon, une tiquette ou un marqueur, ou
bien dtecter la peau d'une personne. Cette mthode vise dtecter des points et/ou
rgions de l'image qui diffrent des proprits par rapport aux entourages (la couleur...).
L'ide gnrale est de chercher les rgions d'une image numrique dans laquelle certaines
proprits sont constantes ou varient dans une plage de valeurs donne.

5.2. Une image numrique


Une image numrique est une mosaque de points unicolores. Plus elle comporte de points,
mieux elle est dfinie. Quand on agrandit une image l'cran ou en l'imprimant, on ne
change pas le nombre de points, on les rend simplement plus ou moins gros et donc visibles.
Une image est la reprsentation dun tre ou dune chose obtenue par exemple par
la photographie, la vido ou lutilisation dun logiciel spcialis. Elle est dite numrique
lorsque sa sauvegarde est obtenue sous forme binaire. Donc image numrique fait appel
Linformatique.
Chaque image numrique est constitue dun nombre donn de lignes. Chaque ligne
comporte un nombre de point donns. Lensemble constitue une matrice. Ces points sont
dnomms pixel (de langlais Picture lment et not souvent px). Chaque case de cette
matrice contient des nombres caractristiques la couleur attribue au pixel
14

5.3. Taille de limage


La rsolution de limage influe directement sur la taille du fichier de sauvegarde de celle-ci.
Par exemple, dans le cadre de la tlvision, on a :
la tlvision dfinition standard SD 576 a 768 pixels par ligne et 576 lignes par
image soit un total de 442 368 pixels par image.
la tlvision haute dfinition 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 rsolution est environ multiplie par 2, les nombre de pixels lest par 4
(structure bidimensionnelle de limage) ce qui peut engendrer un temps de traitement plus
long. Il faut donc trouver un compromis entre la qualit attendue de limage en termes de
rsolution et la taille de son fichier de sauvegarde

5.4. Codages des couleurs


Nous lavons vu une image apparait comme une matrice o chaque case contient des
nombres associs une couleur. Usuellement on distingue 3 grands types de couleurs pour
une image numrique :
Le noir et blanc ;
Les niveaux de gris ;
La couleur.
Ces types sont gnralement choisir lors dune numrisation par scanner ou lors de
la Configuration dun appareil photographique.

5.5. Image couleur

a. Principe
La couleur dun pixel est obtenue, comme le ferait un peintre, par le mlange de couleurs
Fondamentales. Il ne sagit pas ici de dcrire toutes les techniques utilises. Nous allons
Dcrire un des principes les plus couramment utilis qui est celui de la synthse additive.

b. codage RVB
Le principe consiste mlanger les 3 couleurs : rouge, vert et bleu (not RVB). A laide 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.

c. formats dimage
Lors de son enregistrement une image est stocke suivant un format dimage prcis. Ce
format doit permettre de stocker linformation de limage avec un minimum de perte
dinformations. Il existe ainsi diffrents formats qui pourront favoriser soit la conservation de
la qualit soit la diminution de la taille du fichier informatique.

5.6. Cration du fichier valeur.coe sous Matlab


La carte FPGA tant limite, on doit mettra en forme les images pour rduire lespace occup
par chaque pixel. Ainsi une image de couleur de 24bits/pixel doit tre rduite uniquement 8
bits/pixel. Les pixels transforms doivent tre mis dans un fichier "valeur.coe" en utilisant un
programme Matlab.
15

a. Dtection de la couleur rouge


La couleur est quelquefois utile dans certaines applications. On peut penser qu'une application
effectue un contrle de qualit au niveau de l'intensit de couleur sur un produit. On pourrait
aussi utiliser la couleur pour permettre un robot de s'arrter 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 intress 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.

Binarisation de l'image obtenu en HSV : Cette tape est trs similaire celle quon a
programm pour binariser une image en ton de gris. On obtient ainsi une image noir et
blanc o les pixels des objets dsirs taient en blanc et le reste en noir. L'tape que
nous allons faire ici pour traiter l'image en HSV est exactement la mme la
diffrence 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 camra, la binarisation ne donnera pas un bon rsultat
si on utilise la technique du seuil. On rappelle que dans cette technique, le seuil est une
valeur qui nous permet de dpartager 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 plutt se donner un intervalle dans lequel le seuil se situera. Ainsi la
relation est plutt la suivante :
H tolrance <= Hpixel < H + tolrance && S - tolrance <= Spixel < S + tolrance.

O H : valeur de la teinte (Hue)


S : Valeur de la saturation (Saturation) La valeur de tolrance nous permet d'obtenir cet
intervalle dont nous parlions prcdemment. La valeur pour la teinte et la saturation dpend
de la couleur que l'on veut rechercher.

b. Algorithme sous Matlab de Dtection de ballon rouge


Lide cest de donner les dimensions dune image de ballon rouge lAR. Drone puis la
programmer pour comparer limage de ballon rouge prise par la camera avec celle de
rfrence.

16

Programme
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% nom de programme : dtection de bollon rouge
%
%
%
% Description: comment dtecter un objet de couleur rouge en Vido direct %
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Initialization
redThresh = 0.25; % Seuil de dtection rouge
vidDevice = imaq.VideoDevice('winvideo', 1, 'YUY2_640x480', ... % Acqurir
le flux vido d'entre
'ROI', [1 1 640 480], ...
'ReturnedColorSpace', 'rgb');
vidInfo = imaqhwinfo(vidDevice); % Acquisition de la proprit vido
d'entre
hblob = vision.BlobAnalysis('AreaOutputPort', false, ... % Dfinir la
gestion des analyses de blob
'CentroidOutputPort', true, ...
'BoundingBoxOutputPort', true', ...
'MinimumBlobArea', 800, ...
'MaximumBlobArea', 3000, ...
'MaximumCount', 10);
hshapeinsRedBox = vision.ShapeInserter('BorderColor', 'Custom', ... % Set
Manipulation des botes rouges
'CustomBorderColor', [1 0 0], ...
'Fill', true, ...
'FillColor', 'Custom', ...
'CustomFillColor', [1 0 0], ...
'Opacity', 0.4);
htextins = vision.TextInserter('Text', 'Number of Red Object: %2d', ... %
Dfinir le texte pour le nombre de gouttes
'Location', [7 2], ...
'Color', [1 0 0], ... // couleur rouge
'FontSize', 12);
htextinsCent = vision.TextInserter('Text', '+
X:%4d, Y:%4d', ... %
Dfinir le texte pour le centrode
'LocationSource', 'Input port', ...
'Color', [1 1 0], ... // couleur jaune
'FontSize', 14);
hVideoIn = vision.VideoPlayer('Name', 'Final Video', ... % Lecteur vido de
sortie
'Position', [100 100
vidInfo.MaxWidth+20 vidInfo.MaxHeight+30]);
nFrame = 0; % Initialisation du numro de trame
%% Boucle de traitement
while(nFrame < 20)
rgbFrame = step(vidDevice); % Acqurir un cadre unique
rgbFrame = flipdim(rgbFrame,2); % Obtenir l'image miroir pour afficher
diffFrame = imsubtract(rgbFrame(:,:,1), rgb2gray(rgbFrame)); % Obtenir le
composant rouge de l'image
diffFrame = medfilt2(diffFrame, [3 3]); % Filtrer le bruit en utilisant
le filtre mdian
binFrame = im2bw(diffFrame, redThresh); % Convertir l'image en image
binaire avec les objets rouges en blanc
[centroid, bbox] = step(hblob, binFrame); % Obtenez les centrodes et
les botes de dlimitation des blobs

17

centroid = uint16(centroid); % Convertir les centrodes en entier pour


les tapes suivantes
rgbFrame(1:20,1:165,:) = 0; % Mettre une rgion noire sur le flux de
sortie
vidIn = step(hshapeinsRedBox, rgbFrame, bbox); % Instert la bote rouge
for object = 1:1:length(bbox(:,1)) % Ecrire les centrodes
correspondants
centX = centroid(object,1); centY = centroid(object,2);
vidIn = step(htextinsCent, vidIn, [centX centY], [centX-6 centY-9]);
end
vidIn = step(htextins, vidIn, uint8(length(bbox(:,1)))); % Compter le
nombre de gouttes
step(hVideoIn, vidIn); % Output video stream
nFrame = nFrame+1;
end
%% Effacer la mmoire
release(hVideoIn); % Librer toute la mmoire et le tampon utiliss
release(vidDevice);
% clear all;
clc;

Rsultat de simulation

Test 1 : mal dtection de ballon rouge

18

Test 2 : dtection de ballon rouge de manire exacte

VI. Implmentation de l'algorithme sous FPGA

Figure7 : dtection dobjet

19

6.1. tapes de l'algorithme


Acquisition des images (trames de la vido)
Le principe du tout traitement vido est de procder une analyse du flux image par
image.
Conversion
On doit convertir l'image (trame) qui est en BGR en HSV (Hue, Saturation, Value).
La reprsentation 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), ce qui
permet alors d'liminer les problmes lis l'clairage.
Binarisation
La binarisation consiste placer les pixels de l'image dans deux classes distinctes,
gnralement reprsentes par deux couleurs, le blanc et le noir.
la premire classe correspondra la couleur isoler, la seconde toutes les autres
couleurs
Ainsi, si la couleur de l'objet slectionn est le rouge, nous verrons sur notre image
binarise tous les lments rouges apparatre en blanc sur un fond noir.
Le Masque
Crer un masque pour slectionner les pixels qui peuvent appartenir l'objet en se
basant uniquement sur leurs valeurs HSV.
Thoriquement, nous devons mettre en blanc tous les pixels ayant les mmes valeurs
HSV que notre couleur. Pratiquement, le rsultat ne serait pas trs convaincant et nous
ne rcuprerions que quelques pixels.
Il faut rechercher les pixels qui se situent dans un intervalle autour de cette couleur,
nous utiliserons alors une valeur de tolrance pour les valeurs de teinte et de saturation
uniquement.

6.2. Binarisation de limage laide de MATLAB


Le bloc Mmoire et dj prexist comme une IP (proprit intellectuelle) sur le logiciel
Xilinix, alors il suffisait juste de choisir quel type de mmoire on va utiliser,dans notre cas
cest une mmoire ROM de taille 40 000 cases mmoire (selon la taille de limage quon va
stocker), dont chaque case mmoire contient 8 bits (8 bits cest la valeur dont il est cod
chaque pixel RVB). Donc la taille globale de notre mmoire 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 mmoire de la carte FPGA nous tions obligs de passer par loutil MATLAB,
afin de convertir limage sous une forme vectorielle.

20

6.3. Cration dune mmoire IP


Dans cette partie on va voir linsertion dIP et choix de la mmoire :

Slectionner Single Port ROM puis Next , on crera une mmoire de 8 x 40001, Next
ltape 4, slectionner, dans Load File, le fichier valeur.coe Puis Next jusqu
ltape 6, choisir Generate

21

6.4. Sous-programmes de lalgorithme

Programme de lecture de mmoire


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
entity lecture is
Port ( addr : out STD_LOGIC_VECTOR (15 downto 0);
clk_25,rst : in STD_LOGIC

);
end lecture;
architecture lire of lecture is
signal addr_signal : STD_LOGIC_VECTOR (15 downto 0);
begin
adresse : process (clk_25, reset)
begin
if reset = '1' then
addr_signal <= (others => '0');
elsif clk_25'event and clk_25='1' then
if addr_signal = 40000 then
addr_signal <= (others => '0');

else
addr_signal <= addr_signal + 1;
end if;
end if;
end process ;
addr <= addr_signal;
end lire;

Programme de lhorloge de 25MHz

library IEEE;
use IEEE.STD_LOGIC_1164.ALL ;
entity horloge_25 is
Port ( clk : in STD_LOGIC;
rst : in STD_LOGIC;
clk_25 : out STD_LOGIC
);
end horloge_25;
architecture lire of horloge_25 is
signal clk_out :std_logic:='0';
begin
process (clk,rst)
begin
if rst = '1' then
clk_out <= '0';
elsif rising_edge(clk) then
clk_out <= not clk_out;
else
clk_out <= clk_out;

22

end if;
end process;
clk_25 <= clk_out;
end lire;

Programme de dtection.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity detection is
Port ( raz : in STD_LOGIC;
clocdet : in STD_LOGIC;
pixin : in STD_LOGIC_VECTOR (7 downto 0);
led : out STD_LOGIC);
end detection;
architecture detect of detection is
signal pix : STD_LOGIC_VECTOR (7 downto 0);
begin
process (clocdet,raz)
begin
if raz = '1' then pix <= (others =>'0');
elsif (clocdet' event and clocdet='1')then
pix <= pixin;
if (pix >="11100000" and pix <="11101000") then led <= '1';
else led <= '0';
end if ;
end if ;
end process ;
end detect;

Programme de montage.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity montage is
Port ( clk : in STD_LOGIC;
rst :in std_logic;
led_out :out std_logic
);
end montage;
architecture Behavioral of montage is
component horloge_25 is
Port ( clk : in STD_LOGIC;
rst : in STD_LOGIC;
clk_25 : out STD_LOGIC);
end component;
component read_mem is
Port ( addr : out STD_LOGIC_VECTOR (15 downto 0);
clk_25_1 : in STD_LOGIC;
reset : in STD_LOGIC
);
23

end component;
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 ( raz : in STD_LOGIC;
dout : in STD_LOGIC;
pixin : in STD_LOGIC_VECTOR (7 downto 0);
led : out STD_LOGIC);
end component;
signal sig1 : std_logic;
signal sig2 : std_logic_vector (15 downto 0 );
signal sig3 : std_logic_vector (7 downto 0 );
begin
u1 : horloge_25port map(clk=>clock,rst=>rst,clk_25=>sig1);
Systmes de traitement et de communication multimdia 6
u2 : memoire port map(clka=>sig1,addra=>sig2,douta=>sig3);
u3 : read_mem port map(clk_25_1=>sig1,rset=>rst,adr=>sig2);
u4 : detection port
map(clocdet=>sig1,raz=>rst,pixin=>sig3,led=>led_out);
end Behavioral;

Conclusion
Ce projet a t enrichissant, car nous avons pu acqurir plusieurs connaissances intressantes
que ce projet a pu rassembler, savoir : le traitement dimage, linformatique industrielle ou
plus prcisment le dveloppement VHDL. Pour arriver au rsultat obtenu, on peut citer de
nombreux problmes: Notamment au niveau de la dtection de couleur et dun contour dans
une image qui ncessite un traitement puissant. La limitation de la carte Spartan 3 au niveau
de la mmoire Enfin, titre indicatif que ce domaine est ouvert la recherche, on trouve pas
mal de publication sur internet de thses qui travaillaient soit dans le sens de rnovation soit
dinvention de nouvelles techniques et algorithmes.

24

Vous aimerez peut-être aussi