P14AB08 Implantation d'un encodeur vidéo MJPEG sur RX64M » History » Version 7

axel BARRIEUX, 04/07/2021 11:52 AM

1 2 axel BARRIEUX
h1=. P14AB08 Implantation d'un encodeur vidéo MJPEG sur RX64M
2 2 axel BARRIEUX
3 2 axel BARRIEUX
p=. !https://forge.clermont-universite.fr/attachments/download/16158/P14AB08_renesas82_20140409101105_20140409101131.jpeg!
4 2 axel BARRIEUX
5 2 axel BARRIEUX
---
6 2 axel BARRIEUX
7 2 axel BARRIEUX
*Projet GE2-GE3 2014*
8 2 axel BARRIEUX
*Entreprise / Client* : Renesas Electronics/ Sébastien Walger
9 2 axel BARRIEUX
*Auteurs* : Clément Leyssene / Geoffrey Raynal
10 2 axel BARRIEUX
*Responsable Projet* : Michel James
11 2 axel BARRIEUX
*Tuteur industriel* : Isabelle Goi
12 2 axel BARRIEUX
13 3 axel BARRIEUX
h1=.  Sommaire
14 2 axel BARRIEUX
15 2 axel BARRIEUX
[[1. Résumé]] 
16 2 axel BARRIEUX
[[2. Abstract]] 
17 2 axel BARRIEUX
[[3. Introduction]] 
18 2 axel BARRIEUX
[[4. Présentation du Sujet]] 
19 2 axel BARRIEUX
        
20 2 axel BARRIEUX
p(((. [[1. Renesas]] 
21 2 axel BARRIEUX
[[2. Le projet]] 
22 2 axel BARRIEUX
    
23 2 axel BARRIEUX
[[5. Cahier des Charges]] 
24 2 axel BARRIEUX
[[6. Developpement]] 
25 2 axel BARRIEUX
        
26 2 axel BARRIEUX
p(((. [[1. Problématiques]] 
27 2 axel BARRIEUX
        [[2. Faisabilité]] 
28 2 axel BARRIEUX
        [[3. Etude Théorique]] 
29 2 axel BARRIEUX
        [[4. Solutions]] 
30 2 axel BARRIEUX
    
31 2 axel BARRIEUX
[[7. Gestion de Projet]] 
32 2 axel BARRIEUX
       
33 2 axel BARRIEUX
p(((. [[1. W.B.S.]] 
34 2 axel BARRIEUX
[[2. Gantt]] 
35 2 axel BARRIEUX
   
36 2 axel BARRIEUX
[[8. Notes d'application]] 
37 2 axel BARRIEUX
      
38 2 axel BARRIEUX
p(((. [[1. sujet 1]] 
39 2 axel BARRIEUX
[[2. sujet 2]] 
40 2 axel BARRIEUX
   
41 2 axel BARRIEUX
[[9. Bilan]] 
42 2 axel BARRIEUX
       
43 2 axel BARRIEUX
p(((. [[1. Etat d'avancement]] 
44 2 axel BARRIEUX
[[2. Analyse Critique]] 
45 2 axel BARRIEUX
[[3. Perspectives]] 
46 2 axel BARRIEUX
    
47 1 axel BARRIEUX
[[10. Bibliographie]] 
48 3 axel BARRIEUX
49 3 axel BARRIEUX
---
50 3 axel BARRIEUX
51 3 axel BARRIEUX
h1=. Résumé
52 3 axel BARRIEUX
53 3 axel BARRIEUX
Ce projet concerne la réalisation d'un encodeur vidéo de type Motion-JPEG sur un microcontrôleur Renesas, le RX64M. Cette entreprise souhaite la réalisation d’un tel projet afin de démontrer les performances de leur nouveau microcontrôleur et pouvoir proposer au client des applications fonctionnelles.
54 3 axel BARRIEUX
Pour ce projet nous disposons d'une carte possédant le microcontrôleur, qui sera relié d'un côté à une caméra et de l'autre à un ordinateur.
55 3 axel BARRIEUX
L’objectif sera d’envoyer un flux vidéo de la caméra vers le microcontrôleur qui traitera les données et les encodera, puis ce dernier enverra ces données vers un ordinateur qui affichera la vidéo à l’écran.
56 3 axel BARRIEUX
57 3 axel BARRIEUX
*Mots clés:
58 3 axel BARRIEUX
RX64M
59 3 axel BARRIEUX
MJPEG
60 3 axel BARRIEUX
Encodage JPEG*
61 3 axel BARRIEUX
62 3 axel BARRIEUX
---
63 3 axel BARRIEUX
64 3 axel BARRIEUX
h1=. Abstract
65 3 axel BARRIEUX
66 3 axel BARRIEUX
This project involves the implementation of a video encoder type Motion-JPEG on a Renesas microcontroler, the RX64M. The company wants the realization of such a project to demonstrate the performance of their new microcontroller and to be able to offer the customer functional applications.
67 3 axel BARRIEUX
In this project we have a board with the RX64M microcontroller, which is connected on one side to a camera and a computer to the other.
68 3 axel BARRIEUX
The objective is to send a video stream from the camera to the microcontroller, which will process the data and encode, then it will send the data to a computer that displays the video on the screen.
69 3 axel BARRIEUX
70 3 axel BARRIEUX
*Key words:
71 3 axel BARRIEUX
RX64M
72 3 axel BARRIEUX
MJPEG
73 3 axel BARRIEUX
JPEG Encoding*
74 3 axel BARRIEUX
75 3 axel BARRIEUX
---
76 3 axel BARRIEUX
77 3 axel BARRIEUX
h1=. Introduction
78 3 axel BARRIEUX
79 3 axel BARRIEUX
En 1 heure, 6000h de vidéo sont postées sur le site YouTube?. Une heure de vidéo non compressée en haute définition sans son a une taille de 625 Gio, soit 78 DVD. Le problème est donc de pouvoir réaliser des vidéos qui puissent être stockées sur des supports tels que les CD, les DVD, ou plus récemment, dans nos téléphones portables. C'est dans cette problématique que les encodages vidéos sont apparus, certains sont utilisés pour que la qualité de la vidéo soit excellente et d'autres pour réduire au maximum la taille du fichier.
80 3 axel BARRIEUX
81 3 axel BARRIEUX
Dans le cadre de la formation de Génie électrique à Polytech, les étudiants ingénieurs ont l'opportunité de réaliser un projet industriel, répartie en deux phases. La première étape se déroule lors de la quatrième année pendant une durée de 48H, qui consiste en une phase d'étude avec la faisabilité, la gestion de projet et les recherches liées au projet. Par la suite, lors de la cinquième et dernière année, une phase de 250h permet de concrétiser le travail de quatrième année et de réaliser ce qui a été demandé dans le cahier des charges. Ces projets industriels permettent aux étudiants de se confronter au monde de l'entreprise à leur futur travail d'ingénieur, mais en restant encadré par des enseignants du milieu génie électrique ainsi que par des tuteurs industriels.
82 3 axel BARRIEUX
83 3 axel BARRIEUX
La société Renesas Electronics, représentée par notre client Sébastien Walger, a récemment développé un nouveau microcontrôleur, le RX64M et souhaite pouvoir présenter à ses clients des applications fonctionnelles de cette nouvelle cible, afin de démontrer les performances de leur microcontrôleur. C'est dans cette perspective que Renesas a confié à Polytech le projet de réaliser cette application. Notre objectif est d’implanter sur cette cible Renesas RX64M des algorithmes d’encodage MJPEG en utilisant un flux vidéo provenant d’une caméra, puis de l'envoyer sur un ordinateur qui décodera et affichera à l'écran le résultat.
84 3 axel BARRIEUX
L’enjeu de ce projet est de réussir à implanter un encodeur complexe et volumineux sur une cible beaucoup moins puissante qu’un ordinateur.
85 3 axel BARRIEUX
86 3 axel BARRIEUX
h1=. Présentation du Sujet
87 3 axel BARRIEUX
88 3 axel BARRIEUX
*%{color:red}+1. Renesas+%*
89 4 axel BARRIEUX
90 4 axel BARRIEUX
p<. !https://forge.clermont-universite.fr/attachments/download/16159/P14AB08_Renesas_blue_20140401171140_20140401171202.png!
91 4 axel BARRIEUX
92 4 axel BARRIEUX
Renesas Electronics est une entreprise japonaise basée à Tokyo créé en novembre 2002 de la fusion d’HITACHI Ltd et de MITSUBISHI ELECTRIC CORPORATION et compte près de 28500 salariés à travers le monde. Cette société est le leader mondial des fournisseurs de microcontrôleurs et est un fournisseur de solutions de semi-conducteurs avancés. Il assure également la conception, fabrication, vente et service après-vente des systèmes de semi-conducteurs pour la téléphonie mobile, l’automobile, l’électronique de puissance, les mémoires, les LCD, les circuits intégrés RF et système sur puce.
93 4 axel BARRIEUX
94 4 axel BARRIEUX
*%{color:red}+2. Le projet+%*
95 4 axel BARRIEUX
96 4 axel BARRIEUX
Notre projet est d'utiliser le microcontrôleur fourni par Renesas, le RX64M, pour encoder le flux vidéo provenant d'une caméra en MJPEG, puis de le transférer via liaison filaire sur un ordinateur qui décompressera la vidéo pour l'afficher à l'écran
97 4 axel BARRIEUX
98 5 axel BARRIEUX
*%{color:#00008B}+2.1 Synoptique général du sujet+%*
99 5 axel BARRIEUX
100 5 axel BARRIEUX
p<. !https://forge.clermont-universite.fr/attachments/download/16160/P14AB08_synoptique_20140401173233_20140404082959.png!
101 5 axel BARRIEUX
102 5 axel BARRIEUX
*%{color:#00008B}+2.2 Pourquoi encoder?+%*
103 5 axel BARRIEUX
104 5 axel BARRIEUX
Nous pouvons nous poser de ce besoin d'encoder, en effet pourquoi ne pas envoyer tout simplement le flux vidéo de la caméra vers l'ordinateur ?
105 5 axel BARRIEUX
En regardant les spécifications de la caméra, nous nous rendons compte qu'elle a une résolution de 640*480 pixels, de trois couleurs pour chaque pixel réparti sur 8 bits avec un débit maximal de 30 images par seconde.
106 5 axel BARRIEUX
Nous obtenons donc un flux de 640*480*3*8*30=221184000 bits/s= 221,2 Mbit/s, ce flux sature le protocole USB.2 qui est limité à 175Mbits/s, d'où cette nécessité de réduire la taille du flux vidéo en le compressant. Nous allons par la suite présenter la méthode d'encodage que nous devons utiliser.
107 5 axel BARRIEUX
108 5 axel BARRIEUX
*%{color:#00008B}+2.3 Définition des termes du sujet+%*
109 5 axel BARRIEUX
110 5 axel BARRIEUX
*+2.2.1 Le MJPEG+*
111 5 axel BARRIEUX
112 5 axel BARRIEUX
Motion JPEG (M-JPEG ou MJPEG) est un format vidéo dans lequel chaque image vidéo ou une séquence vidéo numérique est compressé séparément comme une image JPEG. Initialement développé pour les applications PC multimédias, M-JPEG est maintenant utilisé par les appareils de capture vidéo, tels que des appareils photo numériques, caméras IP, et des webcams. Nous allons donc nous intéresser lors de ce projet au fonctionnement de l'encodage JPEG.
113 5 axel BARRIEUX
114 5 axel BARRIEUX
*+2.2.2 L'encodage JPEG+*
115 5 axel BARRIEUX
116 5 axel BARRIEUX
JPEG est l’acronyme de Joint Photographic Experts Group. Il a été développé par un comité d'expert qui édite des normes de compression pour l’image fixe durant les années 1978 à 1980. Le groupe JPEG a spécifié la norme en 1991. La norme officielle et définitive a été adoptée en 1992.
117 5 axel BARRIEUX
118 5 axel BARRIEUX
La compression JPEG permet de réaliser des compressions d'image avec ou sans perte: -avec pertes ou compression irréversibles. C’est le JPEG « classique ». Il permet des taux de compression de 3 à 100.
119 5 axel BARRIEUX
-sans pertes ou compression réversible. Il n’y a pas de pertes d’information et il est donc possible de revenir aux valeurs originales de l’image. Les gains en termes de compression sont alors plus modestes, avec un taux de compression de l’ordre de 2 à 8.
120 5 axel BARRIEUX
Pour les besoins du projet, nous allons utiliser la première méthode afin de réduire au maximum la taille des images et donc de la vidéo.
121 5 axel BARRIEUX
122 5 axel BARRIEUX
Voici comment s'organise le processus de compression et de décompression d'une image JPEG:
123 6 axel BARRIEUX
124 6 axel BARRIEUX
p=. !https://forge.clermont-universite.fr/attachments/download/16161/P14AB08_organigramme_compression_20140404090556_20140404090606.png!
125 6 axel BARRIEUX
126 6 axel BARRIEUX
Les différentes étapes de cet algorithme seront expliquées plus en détail dans la partie étude théorique.
127 6 axel BARRIEUX
128 6 axel BARRIEUX
---
129 6 axel BARRIEUX
130 6 axel BARRIEUX
h1=. Cahier des Charges
131 6 axel BARRIEUX
132 6 axel BARRIEUX
- Réaliser un encodeur JPEG sur un microcontrôleur RX64M
133 6 axel BARRIEUX
- Récupérer le flux vidéo d’une caméra via une liaison parallèle
134 6 axel BARRIEUX
- Transférer le flux compressé du RX64M vers un ordinateur via liaison filaire
135 6 axel BARRIEUX
- Afficher la vidéo en utilisant la fonction streaming de VLC
136 6 axel BARRIEUX
- Si le temps le permet, remplacer la liaison filaire par un protocole Ethernet
137 7 axel BARRIEUX
138 7 axel BARRIEUX
p=. !https://forge.clermont-universite.fr/attachments/download/16162/P14AB08_cahier_des_charges_20140424152344_20140424152415.png!
139 7 axel BARRIEUX
140 7 axel BARRIEUX
---
141 7 axel BARRIEUX
142 7 axel BARRIEUX
h1=. Développement
143 7 axel BARRIEUX
144 7 axel BARRIEUX
---
145 7 axel BARRIEUX
146 7 axel BARRIEUX
h2<. Problématique
147 7 axel BARRIEUX
148 7 axel BARRIEUX
Le projet comporte deux aspects importants, le transport de données d’un point à un autre et l’implémentation d’un algorithme complexe dans un appareil beaucoup moins puissant qu’un microprocesseur d’ordinateur.
149 7 axel BARRIEUX
D’une part il s’agit de transférer une vidéo ou une suite d’image de la carte du microcontrôleur vers l’ordinateur à une vitesse suffisante pour que l’image retransmise ne soit pas saccadée.
150 7 axel BARRIEUX
D’autre part l’encodeur d’image JPEG est un code complexe qui existe depuis environ 30 ans et qui a été optimisé depuis pour être utilisé principalement sur les ordinateurs. Il y a donc une réelle difficulté à adapter ce code sur la cible qui nous est fournie.
151 7 axel BARRIEUX
152 7 axel BARRIEUX
---
153 7 axel BARRIEUX
154 7 axel BARRIEUX
h2<. Faisabilité
155 7 axel BARRIEUX
156 7 axel BARRIEUX
Après réflexion, nous avons pensé que le projet serait réalisable si le transfert de donnée par liaison filaire suffit, si ce dernier est saturé nous devrons utiliser le protocole Ethernet, il est clair que le projet ne pourrait pas être terminé si nous avons à mettre en place un tel protocole, mais il aurait des chances d'être terminé si le client nous fournit les codes permettant d'utiliser le protocole Ethernet.
157 7 axel BARRIEUX
158 7 axel BARRIEUX
---
159 7 axel BARRIEUX
160 7 axel BARRIEUX
h2<. Etude Théorique
161 7 axel BARRIEUX
162 7 axel BARRIEUX
Comme dit précédemment, pour réaliser l'encodage MJPEG, il faut traiter le flux vidéo comme une succession d'images JPEG.
163 7 axel BARRIEUX
Pour cela, il faut décomposer les différentes étapes de ce processus. Dans un premier temps, il s’agit de séparer l'image en blocs de 8x8 pixels. La caméra a une résolution de 640x480 pixel, ce qui nous donne 4800 blocs à traiter. Les parties transformations des couleurs et sous échantillonnage sont déjà réalisées par la caméra qui envoie le flux vidéo en YCbCr, le signal Y correspond à la luminance (noir et blanc), plus deux informations de chrominance : Cb (bleu moins Y) et Cr (rouge moins Y), le signal Y est composé de la somme des couleurs rouge, bleu et vert.
164 7 axel BARRIEUX
165 7 axel BARRIEUX
p(((. P14AB08_YCbCr.jpeg?
166 7 axel BARRIEUX
167 7 axel BARRIEUX
Des équations permettent de calculer les YCbCr à partir des couleurs RVB:
168 7 axel BARRIEUX
169 7 axel BARRIEUX
Y= 0,299*R + 0,587*G + 0,114*B
170 7 axel BARRIEUX
Cb= -0,1687*R - 0,3314*G + 0,5*B +128
171 7 axel BARRIEUX
Cr= 0,5*R - 0,4187*G - 0,0813*B +128
172 7 axel BARRIEUX
173 7 axel BARRIEUX
Pour la suite, nous allons utiliser la matrice 8x8 suivante qui correspond à un bloc d'une image:
174 7 axel BARRIEUX
175 7 axel BARRIEUX
p=. !!