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:

Principe de la profilométrie

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:

Traitement des images récupérées

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

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:

Cartes de développement DE2-70 Cartes de développement DE2-70 Cartes de développement DE2-70 Cartes de développement DE2-70

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.


L’ensemble du projet n’est pas décrit ici. Une bonne partie a été omise. Seule la trame générale est présentée.