|
|
<!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="images/favicon.png" /><![endif]-->
|
|
|
</head>
|
|
|
<body class="left-sidebar">
|
|
|
<div id="page-wrapper">
|
|
|
|
|
|
<!-- Header -->
|
|
|
<div id="header">
|
|
|
|
|
|
<!-- Inner -->
|
|
|
<div class="inner">
|
|
|
<header>
|
|
|
<h1><a href="projet_pro.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="projet_pro-openwide_smile.html">OpenWide/Smile ...</a>
|
|
|
<ul>
|
|
|
<li><a href="projet_pro-openwide_smile.html#ROBOT">Sepro: Robot et pendant</a></li>
|
|
|
<li><a href="projet_pro-openwide_smile.html#IPU-IMX6">Cogelec: ipu I.MX6</a></li>
|
|
|
<li><a href="projet_pro-openwide_smile.html#G9MINI">Canal+: Intégrateur Yocto</a></li>
|
|
|
<li><a href="projet_pro-openwide_smile.html#AVAC">Hutchinson: AVAC</a></li>
|
|
|
<li><a href="projet_pro-openwide_smile.html#QUANTIUM">Quantaflow: Quantium v2</a></li>
|
|
|
<li><a href="projet_pro-openwide_smile.html#XVISOR">IRT-systemX: Xvisor</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.html">Judo</a></li>
|
|
|
<li><a href="associations.html">Associations</a></li>
|
|
|
<li><a href="contact.html">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="projet_pro.html">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="projet_perso-sites_web.html">OpenWide/Smile ...</a>
|
|
|
<ul class="leftmenu">
|
|
|
<li><a href="projet_pro-openwide_smile.html#G9MINI">Canal+: Intégrateur Yocto</a></li>
|
|
|
<li><a href="projet_pro-openwide_smile.html#AVAC">Hutchinson: AVAC</a></li>
|
|
|
<li><a href="projet_pro-openwide_smile.html#QUANTIUM">Quantaflow: Quantium v2</a></li>
|
|
|
<li><a href="projet_pro-openwide_smile.html#XVISOR">IRT-systemX: Xvisor</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/mtansorier/" class="icon fa-linkedin" title="LinkedIn"><span class="label">LinkedIn</span></a></li>
|
|
|
<li><a href="https://git.tansorier.fr/micka" class="icon fa-git-square" title="Git"><span class="label">Git</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>
|