-
Notifications
You must be signed in to change notification settings - Fork 0
/
projet_pro-fpga.html
314 lines (276 loc) · 12.9 KB
/
projet_pro-fpga.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
<!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>