Traitement d’images sur FPGA
Ce projet est la continuité de travaux de recherche de l’enseignant chercheur Pascal Picart.
Un projet existant se trouve sur Matlab, or le temps de calcul est relativement élevé.
L’objectif du projet est donc de développer un prototype basé sur une architecture FPGA afin
de traiter les signaux bidimensionnels issus du capteur de projection de franges (profilométrie)
en temps réel.
Mots clés: FPGA – VHDL – Profilométrie – Matlab — Algorithme.
Qu’est-ce que la protométrie ?
Pour faire simple, c’est récupérer la forme d’un objet à partir de formes lumineuses projetée dessus..
Exemple:
Un ensemble de franges noires et blanches sont projetées sur ce visage, après analyse des photos prisent de ce visage on peut le reconstituer en 3D.
Calculs
Les calculs se font en plusieurs parties. En premier lieu il faut calculer la phase des
projections de franges sans l’objet. On peut utiliser quatre images déphasées de pi/4.
Puis il faudra calculer la phase des projections de franges avec l’objet.
En enfin faire la différence entre ces deux phases calculées pour obtenir une vue en 3D comme ceci:
Technologie FPGA
L’avantage de la technologie FPGA pour le traitement d’image c’est sa capacité
à faire du traitement en parallèle.
En effet dans ce projet il va falloir faire le traitement en parallèle de quatre
images afin calculer la phase en une seule image.
Ce projet existant déjà sous Matlab, le choix de garder une partie du programme servant
d’interface avec l’utilisateur a été fait. Le FPGA fera donc essentiellement le calcul.
L’ensemble du projet a été effectué sur la carte de développement DE2-70 d’Altera.
Cartes de développement DE2-70.
Communication Matlab – FPGA
Afin de faire communiquer Matlab avec le FPGA, il a été utilisé la communication
la plus simple pour débuter, la liaison série RS232 (à 115.2 kBits/secondes).
Un pilote à été fait, car Altera ne fourni pas de pilote série pour cette carte.
Traitement
Pour le traitement les fonctions arc-tangente, sinus et cosinus sont nécessaires, ces fonctions ne sont pas disponible sur FPGA, car elles renvoient des flottants. Il a donc fallut trouver une astuce avec un tableau de valeur les représentant.
Sauvegarde
Afin de sauvegarder les images réceptionnées et traitées, il a fallut utiliser la SSRAM disponible sur la carte de développement. Une fois de plus les pilotes SSRAM ne sont pas fournis par Altera, il a donc fallut les concevoir à partir de la datasheet.
Résultat
Voici un exemple de résultat de traitement à partir d’une anche de saxophone:
On obtient sur les images ci dessus, les 4 images de franges déphasées de pi/4 sans l’objet, puis les 4 images de franges déphasées de pi/4 avec l’objet. Le résultat en 2D (niveau de gris) de la anche, ainsi que le vue en 3D de celle-ci.
Amélioration
La liaison série utilisée est relativement lente. Ce qui a été envisagé par la suite c’est d’utiliser la liaison USB qui est beaucoup plus rapide à la place de celle-ci.