<!DOCTYPE HTML> <!-- Helios by HTML5 UP html5up.net | @ajlkn Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) --> <html> <head> <title>Traitement d’images sur FPGA</title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <!--[if lte IE 8]><script src="assets/js/ie/html5shiv.js"></script><![endif]--> <link rel="stylesheet" href="assets/css/main.css" /> <!--[if lte IE 8]><link rel="stylesheet" href="assets/css/ie8.css" /><![endif]--> <link rel="icon" type="image/png" href="images/favicon.png" /> <!--[if IE]><link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /><![endif]--> </head> <body class="left-sidebar"> <div id="page-wrapper"> <!-- Header --> <div id="header"> <!-- Inner --> <div class="inner"> <header> <h1><a href="index.html" id="logo">Projets professionnels</a></h1> </header> </div> <!-- Nav --> <nav id="nav"> <ul> <li><a href="index.html">Accueil</a></li> <li> <a href="projet_pro.html">Projet Pro.</a> <ul> <li><a href="projet_pro-xen.html">Virtualisation XEN</a></li> <li><a href="projet_pro-fpga.html">Traitement d’images sur FPGA</a></li> <li> <a href="#">OpenWide/Smile ...</a> <ul> <li><a href="#">IRT-systemX: Xvisor</a></li> <li><a href="#">Quantaflow: Quantium v2</a></li> <li><a href="#">Hutchinson: AVAC</a></li> <li><a href="#">Canal+: Intégrateur Yocto</a></li> </ul> </li> </ul> </li> <li> <a href="projet_perso.html">Projet Perso.</a> <ul> <li> <a href="projet_perso-PIC.html">Projets PIC ...</a> <ul> <li><a href="projet_perso-PIC.html#table_infini">Table d’illusion infinie – PIC16F87</a></li> <li><a href="projet_perso-PIC.html#telecommande_IR">Télécommande infrarouge – PIC16F87</a></li> <li><a href="projet_perso-PIC.html#feu_tricolore">Feu tricolore de présence – PIC16F87</a></li> </ul> </li> <li> <a href="projet_perso-sites_web.html">Sites Web ...</a> <ul> <li><a href="projet_perso-sites_web.html#AJC72">Antonnière Judo Club 72</a></li> <li><a href="projet_perso-sites_web.html#SMMP">Service Moules et Mécanique de Précision</a></li> <li><a href="projet_perso-sites_web.html#TANSORIER">Site presonnel</a></li> <li><a href="projet_perso-sites_web.html#CDJS">Forum pour le Comité Départemental de Judo de la Sarthe</a></li> </ul> </li> </ul> </li> <li><a href="#">Judo</a></li> <li><a href="#">Associations</a></li> <li><a href="#">Contact</a></li> </ul> </nav> </div> <!-- Main --> <div class="wrapper style1"> <div class="container"> <div class="row 200%"> <!-- left part --> <div class="3u 12u(mobile)" id="sidebar"> <hr class="first" /> <section> <header> <h3><a href="#">Autres Projets</a></h3> </header> <ul class="leftmenu"> <li><a href="projet_pro-xen.html">Virtualisation XEN</a></li> <li><a href="projet_pro-fpga.html">Traitement d’images sur FPGA</a></li> <li> <a href="#">OpenWide/Smile ...</a> <ul class="leftmenu"> <li><a href="#">IRT-systemX: Xvisor</a></li> <li><a href="#">Quantaflow: Quantium v2</a></li> <li><a href="#">Hutchinson: AVAC</a></li> <li><a href="#">Canal+: Intégrateur Yocto</a></li> </ul> </li> </ul> </section> <hr /> </div> <!-- right part --> <div class="7u 12u(mobile) important(mobile)" id="content"> <article id="main"> <header> <h2>Traitement d’images sur FPGA</h2> </header> <div class="image centered" style="width: 376px"><img src="images/FPGA_DE2-70.jpg" alt="" /></div> <p> Ce projet est la continuité de travaux de recherche de l’enseignant chercheur Pascal Picart.<br /> Un projet existant se trouve sur Matlab, or le temps de calcul est relativement élevé.<br /> 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.<br /> <i><u>Mots clés</u>: FPGA – VHDL – Profilométrie – Matlab — Algorithme.</i> </p> <section> <header> <h3>Qu’est-ce que la protométrie ?</h3> </header> <p> Pour faire simple, c’est récupérer la forme d’un objet à partir de formes lumineuses projetée dessus..<br /> Exemple: </p> <div class="image centered" style="width: 623px"> <img src="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> <div class="image centered" style="width: 623px"> <img src="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> <div class="image centered" style="width: 408px"> <img src="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> <div class="image centered" style="width: 623px; "> <img src="images/projet_pro-fpga/mires_vierges.png" alt="Cartes de développement DE2-70" style="width: 615px; padding-bottom: 4px;" /> <img src="images/projet_pro-fpga/mires_objet.png" alt="Cartes de développement DE2-70" style="width: 615px; padding-bottom: 4px;" /> <img src="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;" /> <img src="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 --> <div class="row"> <section class="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> </header> </section> </div> </div> </div> <!-- Footer --> <div id="footer"> <div class="container"> <div class="row"> <div class="12u"> <!-- Contact --> <section class="contact"> <header> <h3>Vous pouvez me retrouver sur:</h3> </header> <ul class="icons"> <li><a href="https://www.linkedin.com/in/micka%C3%ABl-tansorier-78b5549a/" class="icon fa-linkedin" title="LinkedIn"><span class="label">LinkedIn</span></a></li> <li><a href="https://github.com/mtansorier" class="icon fa-github" title="GitHub"><span class="label">GitHub</span></a></li> <li><a href="https://mickaeltansorier.wordpress.com/" class="icon fa-wordpress" title="Wordpress"><span class="label">Wordpress</span></a></li> <li><a href="mailto:mickael@tansorier.fr" class="icon fa-envelope-o" title="E-mail"><span class="label">E-mail</span></a></li> <li><a href="docs/Curriculum_Vitae_-_TANSORIER.pdf" class="icon fa-download" title="Curriculum Vitae"><span class="label">Curriculum Vitae</span></a></li> </ul> </section> <!-- Copyright --> <div class="copyright"> <ul class="menu"> <li><img src="images/by.svg" /></li><li>Mickaël TANSORIER</li><li>Design: <a href="http://html5up.net">HTML5 UP</a></li> </ul> </div> </div> </div> </div> </div> </div> <!-- Scripts --> <script src="assets/js/jquery.min.js"></script> <script src="assets/js/jquery.dropotron.min.js"></script> <script src="assets/js/jquery.scrolly.min.js"></script> <script src="assets/js/jquery.onvisible.min.js"></script> <script src="assets/js/skel.min.js"></script> <script src="assets/js/util.js"></script> <!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]--> <script src="assets/js/main.js"></script> </body> </html>