Académique Documents
Professionnel Documents
Culture Documents
Présentation: Manipulation D'image Sur FPGA
Présentation: Manipulation D'image Sur FPGA
Présentation
I. Objectif
L’objectif du TP est l’initiation à la manipulation et la programmation d’une carte FPGA pour
le traitement d’image. On s’intéresse à l’enregistrement d’une image dans une mémoire ROM
créé par IP dans le FPGA ; ensuite on applique sur l’image enregistrée un traitement par
programmation VHDL.
Rst Erosion /
Lecture Masque dilatation
R
Mémoire (Image) Conversion Binarisation
Affichage
Clk
Implémentation
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity conv_binar is
end conv_binar;
begin
else '0';
end Behavioral;
Tester le programme sur FPGA en considérant l’entrée 8 bits issue de switches et la sortie
commande une LED. Pour cela créer le fichier des contraintes d’implémentation en
considérant les correspondances suivantes :
NET "pixel<0>" LOC = "G18" ;
NET "pixel<1>" LOC = "H18" ;
NET "pixel<2>" LOC = "K18" ;
NET "pixel<3>" LOC = "K17" ;
NET "pixel<4>" LOC = "L14" ;
NET "pixel<5>" LOC = "L13" ;
NET "pixel<6>" LOC = "N17" ;
NET "pixel<7>" LOC = "R17" ;
NET "led" LOC = "J14";
Traitement d’images médicales TP_FPGA
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 :
memory_initialization_radix=2;
memory_initialization_vector=
val_1,
val_2,
...
Val_n;
Le programme ci-après permet de créer ce fichier en transformant une image 24bits en une
image 3bits.
a. Expliquer les étapes du programme suivant.
b. Appliquer le programme sur une image médicale d’au plus de 200x200.
x = imread('image.jpg');
figure(1),imshow(x);
y = zeros(size(x));
x=double(x) ;
y(:,:,1) = x(:,:,1) /32 ;
y(:,:,2) = (x(:,:,2) /32)*8;
y(:,:,3) = (x(:,:,3) /64)*64;
y=uint8(y);
z = y(:,:,1) + y(:,:,2) + y(:,:,3) ;
z = z(:);
for i = 1:length(z)-1
fprintf(fid, sprintf('%-08s,\n',dec2bin(z(i))));
end
i = length(z);
fprintf(fid, sprintf('%-08s;\n',dec2bin(z(i))));
fclose(fid);
Traitement d’images médicales TP_FPGA
Implémentation de la mémoire
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 au Labo est un Spartan dont les caractéristiques sont les suivantes :
Spartan3E
XC3S500E
FG320
Créer un projet et suivre les étapes ci-après.
Sélectionner dans « New Source » l’ajout d’un « IP »
2. Lecture de l’image
Le bloc "Lecture" permet de fournir les adresses nécessaires pour parcourir la mémoire. Ainsi,
les pixels seront transmis séquentiellement au bloc "Conversion".
En utilisant un IP, créer un compteur pour fournir les adresse de la mémoire.