Ecole Normale Supérieur de l’enseignement Technique – RABAT – MINI PROJET Reconnaissance d’immatriculation (Traitement de l’image et de la vidéo ) … [602470]

UNIVERSITE MOHAMED V – SOUISSI

Ecole Normale Supérieur de l'enseignement Technique

– RABAT –

MINI PROJET
Reconnaissance d’immatriculation (Traitement de
l’image et de la vidéo )

 Réal isé par : FARHI Ahmed
 Demandé par : Mr. Jilbab

Année universitaire : 2017/2018

2
Table des matières
Cahier de charge ………………………….. ………………………….. ………………………….. ………………………….. …………….. 3
I- Introduction : ………………………….. ………………………….. ………………………….. ………………………….. ………….. 4
II- Etude du projet : ………………………….. ………………………….. ………………………….. ………………………….. ……… 4
1) Caméra : ………………………….. ………………………….. ………………………….. ………………………….. …………….. 4
2) FPGA (Field Programmable Gate Arrays): ………………………….. ………………………….. ……………………….. 5
A. Définition ………………………….. ………………………….. ………………………….. ………………………….. ………… 5
B. Architecture générale ………………………….. ………………………….. ………………………….. ……………………. 5
C. Caractéristiques de base : ………………………….. ………………………….. ………………………….. ……………… 5
D. La carte de développement : ………………………….. ………………………….. ………………………….. ………….. 6
3) La norme d’immatriculation marocaine : ………………………….. ………………………….. ……………………….. 7
4) Qu’attend -on d’un systeme d’extraction de texte (caractères) dans une image ? ……………………….. 7
5) Systemes de d ` etection et de localisation des plaques d’immatriculation de v ´ ehicules ´
Marocaines ………………………….. ………………………….. ………………………….. ………………………….. ………………… 8
6) Traitement d’image ………………………….. ………………………….. ………………………….. …………………………. 9
Simulation sur Matlab : ………………………….. ………………………….. ………………………….. …………………………. 10
A. Détection du couleur rouge : ………………………….. ………………………….. ………………………….. ……….. 10
B. Traitement morphologique : ………………………….. ………………………….. ………………………….. ………… 11
Implémentation sur FPGA : ………………………….. ………………………….. ………………………….. …………………… 14
A. Génération du fichier.coe sous Matlab : ………………………….. ………………………….. …………………….. 14
B. Création d’image : ………………………….. ………………………….. ………………………….. ………………………. 14
C. Création d’un IP mémoire (image) : ………………………….. ………………………….. ………………………….. . 15
D. 4. Programmation VHDL (Implémentation) : ………………………….. ………………………….. ………………. 17
a. Schéma de principe : ………………………….. ………………………….. ………………………….. ………………………. 17
b. Programme de chaque bloc : ………………………….. ………………………….. ………………………….. …………… 18
c. Programme global sans bloc d’Erosion/dilatation : ………………………….. ………………………….. …………. 21
Conclusion ………………………….. ………………………….. ………………………….. ………………………….. ………………….. 22

3
Cahier de charge
La plaque d’immatriculation est un moyen qui permet d’identifier les véhicules et connaitre
le propriétaire de ce véhicule ainsi que différentes informations relatives. Les plaques
d’immatriculation marocaines sont composées d’une série de cinq chiffres allant de 1 à 99999
qui correspond au numéro d’enregistrement de la voiture, une lettre de l’alphabet arabe est
incrémentée au milieu de la plaque, des numéros qui vont de 1 à 88 permettent d’identifier la
préfecture d’émission de la plaque.

L’objectif est de reconnaitre ces plaques dans des images prises par des caméras analogues à
celles utilisées dans les Smartphones. Le traitement d’image doit réaliser les étapes
suivantes :
– Localisation de l’immatriculation dans l’image ;
– Extraction de l ’immatriculation ;
– Reconnaissance des caractères dans l’immatriculation.

ASCII

Image

PC
(Contrôleur)
FPGA
(Traitement d’image)

4
I- Introduction :
Dans ce mini projet on va étudier un système qui fait la reconnaissance des plaque s
d’immatriculation , l’objectif est de mettre en examen les connaissances théoriques que nous avons
accumulées durant notre formation en traitement d’image et de la vidéo , pour cela on cherche à écrire
un algorithme pour localiser et extraire l’immatriculation dans l’image et la reconnaissance de
caractères en utilisant Matlab (simulation) , et par la suite on va écrire un programme VHDL pour
programmer notre FPGA (implémentation).
II- Etude du projet :
1) Caméra :
Camera CMOS :
Elle intègre un imageur CMOS couleur de 640*480 pixels fonctionnant à 13 MHz. Les données sont
récupérées via un bus parallèle de 16 bits. Elle possède également une liaison I2C pour la
configuration des différents paramètres (balance des couleurs, luminosité…). Elle a la particularité
d’être auto -initialisée lors de son alimentation, ce qui pe rmet d’avoir des données directement
utilisables, même si elle n’a pas été configurée par l’utilisateur. Elle intègre également une sortie
composite permettant de visuali ser directement la scène filmée sur un moniteur.
Les couleurs des pixels sont réalisées par un filtre de Bayer qui décompose chaque pixel en une
composante rouge, une bleue et 2 vertes.
Cette caméra fournit un pixel en 2 coups d’horloge. Le premier coup correspondant par défaut à la
première composante verte et à la composante rouge , au second coup d’horloge, on récupère la
composante bleue et la seconde composante verte. Pour connaître la véritable valeur de la
composante verte, il suffit donc de faire une interpolation des deux composantes vertes

Figure
Mémoire SDRAM :
Nous utilisons une barrette DDR SDRAM d’ordinateur pour stocker les images aux différents
niveaux de traitement (image reçue, image traitée, image à afficher).
LA SDRAM (Synchronous DRAM, traduisez RAM synchrone) permet une lecture des données
synchronisée avec le bus de la carte -mère et donc de s'affranchir des temps d'attente dus à la
synchronisation avec elle. Celle -ci permet d'obtenir un cycle en mode rafale de la forme 5 -1-1-1,
c'est-à-dire un gain de 3 cycles par rapport à une RAM de type EDO. La SDRAM est capable de
fonctionner avec une cadence allant jusqu'à 150 Mhz, lui permettant d'obtenir des temps d'accès
d'environ 10 ns.

5
2) FPGA (Field Programmable Gate Arrays ):
A. Définition
Les FPGA (Field Programmable Gate Arrays ou "rés eaux logique s programmables") sont des
composants VLSI (Very Large Scale Integration) entièrement reconfigurables ce qui permet de les
reprogrammer à volonté afin d'accélérer notablement certaines phases de calculs.
L'avantage de ce genre de circuit est sa grande souplesse qui permet d e les réutiliser à volonté dans
des algorithmes différents en un temps très court.
Le progrès de ces technologies permet de faire des composants toujours plus rapides et à plus haute
intégration, ce qui permet de programmer des applications importantes.
B. Architecture générale
L’architecture interne des FPGA est constituée des éléments suivant :
• un réseau (matrice) de blocs combinatoires et séquentiels (CLB)
• Des blocs d’ entrée/sortie (IOB) qui sont associés aux broches du circuit
• Les CLB e t IOB qui sont interconnectés entre eux par des dispositifs variés
• Les matrices qui s’organisent de 8×8 à 128×120

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.
Parmi les principaux fabricants de FPGA dans le monde on peut citer : Xilinx (n°1 du march é des
FPGA, 53% de part de marché en 2009) , Altera (n°2 du marché des FPGA, 36 % de part d e marché
en 2009) , Actel (n°1 du marché des FPGA Antifusibles et FLASH) , Atmel, QuickLogic, Lattice,
M2000 (cœurs de FPGA).
Dans notre étude nous allons utiliser le c ircuit XC3S500E de la famille Spartan 3E de Xilinx intégré
dans la carte NEXYS 2 de Digilent.
C. Caractéristiques de base :
Le circuit FPGA intègre les éléments suivant :
 Cellules logiques et interconnexions hiérarchiques
 Mémoire interne double port
 Densités de 500K de portes
 Fréquence maximale : 200 MHz
 Exemples de performance :

6
 Additionneur 64 bits: 7.2 ns
 Multiplicateur 16×16: 6.0 ns
 Décodeur d’adresse 64 bits: 6.4 ns
 Multiplexeur 16:1 5.4 ns
 Technologie : 0.22m CMOS, 5 couches de métal
D. La carte de développement :

La carte de développement NEXYS 2 de Digilent met de l’avant le FPGA XC3S500E Spartan
3E de Xilinx et ces caractéristiques uniques. Cette carte offre un environnement de conception très
adaptée pour le prototypage d’applica tions variée 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 NEXYS 2 regroupe entre autre un FPGA XC3S500E Spartan 3E :
 un CPLD Coolrunner II
 une mémoire PROM de 4 Mbit
 une mémoire Flash sérielle de 16 Mbit
 une mémoire Flash parallèle de 128 Mbit
 une mémoire SDRAM DDR de 512 Mbits
 un écran LCD, un po rt PS/2
 un port VGA
 une prise Ethernet 10/100
 deux ports RS -232
 un port de configuration USB,
 deux convertisseurs de données,
 un oscillateur à 50 MHz,
 un connecteur d’expansion Hirose FX2 permettant 40 entrées/sorties génériques, des DEL, des
boutons poussoir et des commutateurs.
La carte supporte trois modes de configuration à la mise sous tension :
 mode Master -Slave utilisant le PROM 4 Mbit,

7
 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.
3) La norme d’immatriculation marocaine :
La plaque d’immatriculation au Maroc permet comme tous les types de plaques minéralogiques
d’identifier les véhicules et connaître le propriétaire de ce véhicule ainsi que différentes informations
relatives.
L’immatriculation actuelle des véhicules enregi strés au pays de l’extrême couchant respecte une
nouvelle norme d’immatriculation à compter de l’an 2000 . Cette nouvelle configuration est
composée d’une série de cinq chiffres allant de 1 à 99 999 qui correspond au numéro
d’enregistrement de la voiture. U ne lettre de l’alphabet arabe est incrémentée au milieu de la plaque
de contrôle, ce dernier prend en compte le numéro d’enregistrement de l’automobile. Pour conclure
la combinaison alphanumérique de la plaque minéralogique marocaine, le nouveau système
d’immatriculation en vigueur actuellement dans le royaume chérifien termine la combinaison par
l’identifiant de la préfecture d’émission de la plaque. Ces numéros vont de 1 à 88.

4) Qu’attend -on d’un systeme d ’extraction de texte (caractères) dans une
image ?
Afin d’extraire l’information textuelle d’une image il faut faire appel à un système d’extraction de
texte qui prend en considération la typologie et les propriétés du texte définies dans les sections
précédentes. Définissons maintenant ce que c’est un système d’extraction de texte. Un Système
d’extraction de texte est un système qui reçoit une image pouvant être en niveaux de gris, couleur,
compressée ou non compressée, et qui donne en sortie une image avec des rectangles qui englobent
les textes présents dans l’image. Il est généralement décomposé en trois étapes, (1) détection, (2)
localisation, (3) extraction. Dans la littérature, quelques -unes de ces étapes sont souvent confondues.
Pour cela, nous définissons ici le but de chaque étape :
Détection de texte : Détermine la présence potentielle de texte dans une image. Cette étape répond
par ’oui’ ou ’non’ pour une image donnée.
Localisation des zones de texte : le but de la phase de Localisation des zones de texte dans l’image

8
et de déterminer l’emplacement e xacte du texte et créer enfin des boîtes entourant les régions texte.
Extraction : c’est l’étape d’extraction des caractères composant le texte afin de les faire passer une
par une dans des systèmes de reconnaissance. Cette étape est surtout nécessaire si nous avons besoin
de reconnaître le texte (caractères) détecté.
5) Systemes de d ` etection et de localisation des plaques d’immatriculation de
v ´ ehicules ´ Marocaines

1) Méthode bas ée sur la texture
La texture est une caractéristique qui peut être utilisée pour détecter les plaques d’immatriculation
vue que les caractères d’une plaque ont une texture similaires. Dans notre algorithme nous traitons
les caractères d’une plaque comme une texture distinct e du reste des objets contenus dans une image.
La méthode est décomposée en quatre étapes qui sont les suivantes :
• Analyse de la texture de l’image
• Décomposition de l’image en multi -segment
• Choix du masque
• Analyse des composantes connexes
Bien que les différentes étapes de la méthode courante soient génériques et utilisable quel que soit le
domaine d’application l’étape "choix du masque" reste un point critique qui dépend de l’application
envisagée. En effet, contrairement au texte présent dans les images qui peut être polychromes, les
caractères des plaques d’immatriculation des véhicules au Maroc sont monochromes. Ils sont écrits
soit en blanc soit en noir, ce qui nous mène à suggérer que les caractères de la plaque appartiennent à
la même classe après segmentation. Cela veut dire que les caractères de la plaque vont apparaitre sur
le même masque. Dans la présente étape, et afin de définir le choix du masque, les critères des
composantes connexes sont pris en compte. En fait, le nombre des composantes connexes doit être
supérieur à trois et inférieure à 10. Parce que, une PIV au Maroc contient au minimum trois
caractères et au maximum huit caractères. Pour quoi nous avons limité la borne supérieure à 10 ?
parce que, comme il est montré sur l a Figure 1, il y a des fois des traits qui séparent la lettre
d’alphabet arabe des chiffres de droite et de gauche, et cette séparation qui est un ’slash’ a les même
caractéristiques que les caractères en terme de texture vu qu’elle est écrite avec le même style et la
même couleur que les caractères de la
PIV.

Figire1

9
2) Méthode basée sur le contour et le gradient
Les conditions de luminance non uniforme et la distance variable entre la caméra et le véhicule
peuvent influencer sur le résultat de la détection des plaques d’immatriculation. Pour cela, nous
avons proposé une méthode de détection des plaques d’immatricu lation basée sur les caractéristiques
du contour et des propriétés des caractères. Nos observations sur les numéros de plaques existant
dans les images de notre base, montrent que les régions des chiffres de la plaque ont des
caractéristiques presque simil aires. L’algorithme proposé est basé sur les caractéristiques suivantes :
• Les pixels présentant les caractères de la plaque ont souvent une valeur de contraste plus élevée par
rapport aux pixels voisins.
• Le contour des caractères d’une plaque est touj ours un contour fermé.
• Il y’ a une relation de voisinage entre les caractères.
De plus, notre approche est composée de cinq processus qui sont :
• Détection de contour ;
• Sélection des régions candidates de caractères de la plaque d’immatriculation ;
• Calcul du gradient magnitude des composantes connexes.
• Extraction des caractères ;
• Et localisation de la plaque PIV.

Traitement d’image :
les traitements envisageables sur les images sont très variés, car les images que nous
rencontrons dans notre environnement sont diverses tant par leur nature et leurs
caractéristiques que par la scène qu’elles décrivent. Elles sont toutes différentes et il n’est bien
évidemment pas envisageable de créer un traitement spécifique p our chacune d’entre elles. Il a donc
fallu créer une classification non pas en fonction des caractéristiques des images, mais en fonction de
l’objectif du traitement.
Quatre types de domaines d’application du traitement d’images numériques se distinguent :
La restauration e t l’amélioration d’images, l’analyse d’images, le codage a vec compression
d’information, et la synthèse d’images.
Dans notre cas on s’intéressera au processus d’analyse , il s’agit de décrire partiellement ou
complètement la scène à partir de l’image observée (objets présents, dimensions, position dans
l’espace, …). Il recouvre un très grand nombre d’a pplications potentielles, c’est sans doute le
domaine pour lequel les exemples sont les plus variés (analyse médicale : classification des
chromosomes ; lecture automatique : authentification de signatures ; la télédétection : segmentat ion
et classification de zones géographiques, …).
On peut néanmoins proposer une démarche type en analyse d’images qui consiste à :
 Détecter les différents objets présents dans la scène et les extraire (segmentation,
découpage en régions) ;

10
 Caractériser ces objets (dimensions, emplacement, …) ;
 Reconnaître les objets et effectuer leur classification ;
 Analyser et Interpréter la scène en fonction des résultats précédents. La scène pourra, entre autres,
être décrite de façon quantitative et/ou qualitative.
Il faut cependant rappeler que les applications sont très variées, et l’approche globale
proposée ici peut parfois nécessiter quelques modifications dans les étapes de traitement, en
fonction des difficultés rencontrées.
Simulation sur Matlab :

Le programme qu’on a utilisé pour la dé tection d’écriture rouge sous Matlab est détaillé comme
suit :
A. Détection du couleur rouge :
La détection basée sur la couleur est une méthode simple et rapide qui peut être utilisée dans
plusieurs systèmes de vision artificielle, elle peut être utilisée pour la détection et le suivi des objets
simples, une étiquette ou un marqueur, ou bien détec ter la peau d'une personne.
Cette méthode vise à détecter des points et/ou régions de l'image qui diffèrent des propriétés par
rapport aux entourages (la couleur…). L'idée générale est de chercher les régions d'une image
numérique dans laquelle certaine s propriétés sont constantes ou varient dans une plage de valeurs
donnée.
 On prend une image qui contient un ballon rouge et on appelle cette image sous Matlab par le script
suivant :
I=imread( 'immatri.png');
figure(1);imshow(I),title( 'image origine' )

Figure 1: image origine .

 Après on fait la numérisation de notre image en extrairons le couleur rouge (transformé en blanc) ,
c’est -à-dire tous les pixels qui ont une intensité inférieur à celle du couleur rouge seront transformé
en noire (intensité égale à 0) et les pixels qui ont une intensité égale ou supérieur à celle du couleur

11
rouge seront transformé en blanc (intensité égale à 1), pour cela on tape les instructions suivantes :

I1=I(:,:,1); I2=I(:,:,2); I3=I(:,:,3);
pw =((I1 >= 220) & (I2 <= 100) & (I3 <= 100) );
figure(2);imshow(p w),title( 'image numérisé e')

Notre image numérisée est la suivante :

Figure 2: image numérisé

Remarque :
On remarque qu’il y a d’autres objets qui sont détecté et ne sont pas é liminés, parce que leurs valeurs
de pixels sont au -dessus du se uil du couleur rouge, pour cela on cherche à les supprimé .

B. Traitement morphologique :

On fait éliminer les petits points blancs au voisinage des chiffres qui contena nts un nombre de pixels
faible par rapport à celle d’écriture en utilisant la fonction « bwareaopen », le scripte utilisé est :
pw = bwareaopen (pw,18);
figure(3);imshow(p w),title( 'image après la suppression des objets ')

Pour notre cas on a choisir un nombre égale à 18 , c’est -à-dire on a va supprimer tous les objets de
l'image contenant moins de 18 pixels , on a trouvé :

12

Figure 3 : image après la fonction bwareaopen

 On remarque bien une suppression complète des petits points blancs au voisinage d es chiffres .

 Tout objet supérieur à une certaine taille (largeur ou longueur) sera rejeté en utilisant la
fonction « imclose ».
 Le scripte qu’on a utilisé pour cette opération est :
Se = strel( 'disk',4);
pw = imclose(p w,se);
figure(4);imshow(p w),title( 'image après la suppression des objets' )

On trouve :

Figure 4 : image après la fonction imclose
Nous avons supprimé les petits objets en comparant la taille des chiffres qui est créé par la fonction
stel( ).cette fonction créé des éléments structurant morphologiques comme
«balle »,« carré», «ligne» etc.la fonction imclose() exécute la morphologie de la façon suivante :

13
pw=imclose(p w,Se) effectue l’ouverture morphologique sur l’image de niveau de gris pw avec
l’élément structurant Se. L’argument Se doit être un objet unique d’élément structurant.
L’opération d’ouverture morphologique est une érosion suivie d’une dilatation, en utilisant le même
élément structurant pour les deux opérations.
 Il ne reste que la suppression du bruit à l’intérieur du bal lon, pour cette raison on utilise la
fonction suivant e :
pw = imfill(pw, 'holes');
figure(5);imshow(pw);

 Premièrement on fait un emplacement des trous qui marque le bruite qu’ on veut éliminer par la
fonction « imfill » :

Figure 5 : images après la fonction imfill

pw = imfill(p w,'holes');
Pour remplir les trous dans l'image binaire P W. Un trou est un ensemble de pixels d'arrière -plan qui
ne peuvent être atteints en remplissant l'arrière -plan depuis le bord de l'image .

 Et finalement on utilise le script suivant :

[B,L] = bwboundaries(p w,'noholes' );
stats = regionprops(L, 'Area','Centroid' );
circle_threshold = 0.80;
for g = 1:length(B)
boundary = B{g};
delta_sq = diff(boundary).^2;
perimeter = sum(sqrt(sum(delta_sq,2)));
area = stats(g).Area;
metric = 4*pi*area/perimeter^2;
if metric > circle_threshold
centroid = stats(g).Centroid;
plot(centroid(1),centroid(2), 'ko');
else

14
[r,c] = find(L(:,:)==g);
pw(r,c)=0;
end
end
figure(6);imshow(p w),title( 'image finale : immatriculation detecté ' )
Implémentation sur FPGA :
A. Génération du fichier.coe sous Matlab :
La carte FPGA étant limitée, on doit mettra en forme les images pour réduire l’espace occupé par
chaque pixel. Ainsi une image de couleur de 24bits/pixel doit être réduite à uniquement 8 bits/pixel.
Les pixels transformés doivent être mis dans un fichier "valeur.coe" en utilisant un programme
Matlab.
Le fichier "valeur.coe" compatible avec les cartes FPGA de chez Xilinx est un fichier text qui a la
forme suivante :

Le programme situer en annexe permet de créer ce fichier en transformant une image 24bits en une
image 3bits.

B. Création d’image :
Le but de cette phase est de créer une image simple de dimension 200×200 contenant une couleur
rouge qui va nous permettre de simuler et de valider notre étude.
Pour ce faire on a utilisé le Paint de Windows .

Figure 6 : Image.png
Après avoir simulé le programme précédent sous MATLAB pour cette image, ce dernier génère un
fichier sous le nom ( valeur .coe) que l’on va utiliser par la suite.

memory_initialization_radix=2;
memory_initialization_vector=
val_1,
val_2,

Val_n;

15
Le résultat de la simulation :

Figure 7 : image origine crée par Paint

C. Création d’ un IP mémoire (image) :

On veut créer une mémoire ROM pour y mettre les coefficients de notre image. Pour cela lancer
l’environnement ISE de Xilinx.
Le FPGA disponible est un Spartan dont les caractéristiques sont :

Figure 8 : image après la réduction de taille de
Bits de chaque colleur

16

Figure 6 : les caractéristiques de spartan choisi.
Les étapes à suivre pour créer une mémoire sont les suivantes :
Cliquer sur Project > New Source dans la barre de menu du Navigateur de Projet ISE.
Sélectionnez IP (Core generator & Architecture Wizard) dans la fenêtre Project Wizard –
Select Source Type.
Tapez memoire comme nom de fichier, vérifiez que la case Add to project est cochée et cliquez
sur Next .
Dans l’onglet View by fonction de la boîte de dialogue Select IP, sélectionnez Memories &
Storage Elements => RAMs & ROMs => Block Memory Generator .
Cliquez sur Next et ensuite sur Finish .
Choisir Single Port ROM comme type de mémoire a utilisé.
ISE lance l’interface de génération et configuration de mémoire ROM ( Block memory ge nerator)
illustré à la Figure ci -après .
Remplissez les champs du Block memory generator de la façon suivante :
 Read Depth : 8
 Read Width : 40000
 Cliquez sur Next.

17

Figure 7 : Block memory generator de ISE permet de créer et de configurer n’importe
quel type de mémoire très efficacement.

Dans la boîte de dialogue Select COE File, sélectionnez le fichier memoire .coe crée
précédemment et cliquez sur Open .
Cliquez sur le bouton Show pour visualiser le contenu de ce fichier.
Cliquez enfin sur Generate et vérifiez que le composant a bien été créé.
D. 4. Programmation VHDL (Implémentation) :

L’image de 200×200 , contenant l’objet à détecter est préenregistrée dans le FPGA en utilisant une
mémoire ROM sous forme d’IP.si l’objet est détecté dans l’image on aff iche (allume) une LED.

Figure 8: Détecteur d’Objets

18

Bloc de lecture et de mémoire :
En utilisant un IP, on créera le bloc mémoire dans lequel on mettra l’image à détecter.
Le bloc "Lecture" permet de fournir les adresses nécessaires permettant de parcourir la mémoire.
Ainsi, les pixels seront transmis séquentiellement au bloc "Conversion".

Bloc Lecture :

Figure 9 : programme de block lecture

19
blocks, Conversion, Binarisation et Masque :
La conversion consiste tout simplement de sélectionner les 3 bits de poids f aible des pixels à la sortie
de la mémoire pour construire la composante R. La binaris ation et le masque constituent tout
simplement un seuillage :
 Si 6<R alors sortie = 1
 Sinon sortie = 0.
Figure 10 : programme des blocks, Conversion, Binarisation et Masque

20
le bloc Affichage :
Pendant un cycle de lecture de l’image, le bloc Affichage doit compter le nombre Np de pixels dont
la composante rouge dépasse le seuil. Si Np est supérieur à 10 000 alors on envoie 1, sinon on envoie
0.

Figure 11 : programme bloc affichage

21

Figure 12 : programme globale sans bloc érosion/dilatation

22
Conclusion

Le traitement d’image et d’information en générale est une opération de grande importance dans le
domaine de sécurité des systèmes d’information. En effet, localiser et extraire l’immatriculation
d’une voiture reste une tache complexe qui nécessite des com pétences dans divers domaine à savoir
le traitement d’image et de la vidéo, En revanche, le travail qui a été réalisé dans ce rapport n’est
qu’un premier pas dans le domaine de localisation et extraction d’immatriculation, Enfin, 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 et l’informatique industrielle ou plus précisément le
développement VHDL et la simulation sous MATLAB.

23
Annexe :
x = imread( 'immatri .png' );
figure(1),imshow(x);
y = zeros(size(x));
y(:,:,1) = x(:,:,1)/32;
y(:,:,2) = (x(:,:,2)/32)*8;
y(:,:,3) = (x(:,:,3)/64)*8*8;
z = y(:,:,1) + y(:,:,2) + y(:,:,3);
figure(2),imshow(y);
fid = fopen ('valeurs.coe' , 'wt');
x2 = double(z)';
x2 = x2(:);
fprintf(fid, sprintf( 'memory_initialization_radix=2; \n\n'));
fprintf(fid, sprintf( 'memory_initialization_vector= \n\n'));
for i = 1:length(x2) -1
if x2(i) < 2
fprintf(fid, sprintf( '0000000%s, \n',dec2bin(x2(i))));
elseif (x2(i) >=2) & (x2(i) <4)
fprintf(fid, sprintf( '000000%s, \n',dec2bin(x2(i))));
elseif (x2(i) >=4) & (x2(i) <8)
fprintf(fid, sprintf( '00000%s, \n',dec2bin(x2(i))));
elseif (x2(i) >=8) & (x2(i) <16)
fprintf(fid, sprintf( '0000%s, \n',dec2bin(x2(i))));
elseif (x2(i) >=16) & (x2(i) <32)
fprintf(fid, sprintf( '000%s, \n',dec2bin(x2(i))));
elseif (x2(i) >=32) & (x2(i) <64)
fprintf(fid, sprintf( '00%s, \n',dec2bin(x2(i))));
elseif (x2(i) >=64) & (x2(i) <128)
fprintf(fid, sprintf( '0%s, \n',dec2bin( x2(i))));
elseif (x2(i) >=128) & (x2(i) <256)
fprintf(fid, sprintf( '%s,\n',dec2bin(x2(i))));
end
end
i = length(x2);
if x2(i) < 2
fprintf(fid, sprintf( '0000000%s; \n',dec2bin(x2(i))));
elseif (x2(i) >=2) & (x2(i) <4)
fprintf(fid, sprintf( '000000%s; \n',dec2bin(x2(i))));
elseif (x2(i) >=4) & (x2(i) <8)
fprintf(fid, sprintf( '00000%s; \n',dec2bin(x2(i))));
elseif (x2(i) >=8) & (x2(i) <16)
fprintf(fid, sprintf( '0000%s; \n',dec2bin(x2(i))));
elseif (x2(i) >=16) & (x2(i) <32)
fprintf(fid, sprintf( '000%s; \n',dec2bin(x2(i))));
elseif (x2(i) >=32) & (x2(i) <64)
fprintf(fid, sprintf( '00%s; \n',dec2bin(x2(i))));
elseif (x2(i) >=64) & (x2(i) <128)
fprintf(fid, sprintf( '0%s; \n',dec2bin(x2(i))));
elseif (x2(i) >=128) & (x2(i) <256)
fprintf(fid, sprintf( '%s;\n',dec2bi n(x2(i))));
end
fclose(fid);

Similar Posts