Pour faire simple, c’est récupérer la forme d’un objet à partir de formes lumineuses projetée dessus..<br/>
Exemple:
</p>
<divclass="image centered"style="width: 623px">
<imgsrc="images/projet_pro-fpga/principe.png"alt="Principe de la profilométrie"/>
<p>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.</p>
</div>
</section>
<section>
<header>
<h3>Calculs</h3>
</header>
<p>
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.<br/>
Puis il faudra calculer la phase des projections de franges avec l’objet.<br/>
En enfin faire la différence entre ces deux phases calculées pour obtenir une vue en 3D comme ceci:
</p>
<divclass="image centered"style="width: 623px">
<imgsrc="images/projet_pro-fpga/traitement.png"alt="Traitement des images récupérées"/>
</div>
</section>
<section>
<header>
<h3>Technologie FPGA</h3>
</header>
<p>
L’avantage de la technologie FPGA pour le traitement d’image c’est sa capacité
à faire du traitement en parallèle.<br/>
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.<br/>
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.<br/>
L’ensemble du projet a été effectué sur la carte de développement DE2-70 d’Altera.
</p>
<divclass="image centered"style="width: 408px">
<imgsrc="images/projet_pro-fpga/de2_70.jpg"alt="Cartes de développement DE2-70"style="width: 400px"/>
<p>Cartes de développement DE2-70.</p>
</div>
</section>
<section>
<header>
<h3>Communication Matlab – FPGA</h3>
</header>
<p>
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).<br/>
Un pilote à été fait, car Altera ne fourni pas de pilote série pour cette carte.
</p>
</section>
<section>
<header>
<h3>Traitement</h3>
</header>
<p>
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.
</p>
</section>
<section>
<header>
<h3>Sauvegarde</h3>
</header>
<p>
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.
</p>
</section>
<section>
<header>
<h3>Résultat</h3>
</header>
<p>
Voici un exemple de résultat de traitement à partir d’une anche de saxophone:
</p>
<divclass="image centered"style="width: 623px; ">
<imgsrc="images/projet_pro-fpga/mires_vierges.png"alt="Cartes de développement DE2-70"style="width: 615px; padding-bottom: 4px;"/>
<imgsrc="images/projet_pro-fpga/mires_objet.png"alt="Cartes de développement DE2-70"style="width: 615px; padding-bottom: 4px;"/>
<imgsrc="images/projet_pro-fpga/untitled_phase3_fpgamatlab_filtre_jalil_couper_2.png"alt="Cartes de développement DE2-70"style="width: 366px; float: left; padding-right: 4px;"/>
<imgsrc="images/projet_pro-fpga/untitled_phase3_fpgamatlab_filtre_3d_jalil_couper.png"alt="Cartes de développement DE2-70"style="width: 248px;"/>
</div>
<p>
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.
</p>
</section>
<section>
<header>
<h3>Amélioration</h3>
</header>
<p>
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.
</p>
</section>
</article>
</div>
</div>
<hr/>
<!-- sources -->
<divclass="row">
<sectionclass="12u 12u(mobile) special">
<header>
<h6>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.</h6>