Compression vidéo Adéquation Algorithme / Architecture Introduction Explosion du multimédia. Vidéo composante maîtresse. Différents types d applications. Généralisation de l utilisation de l image dans les appareils mobiles
Introduction Bande passante énorme (28 Mb/s pour un format 720x576). Réseaux sans fils à débit limité. Développer des algorithmes de codage : Réduire au maximum le flux de données Garder la meilleure qualité visuelle de la séquence reconstruite Des volumes de calculs de plus en plus importants. Les systèmes embarqués à ressources limitées. Introduction Trouver le meilleur compromis. Débit/Qualité/Complexité MPEG MPEG2 H26 MPEG MJPEG H263 H26 MJPEG2000 Normes de codage vidéo 2
Historique Les premier codecs des images animées : 97 : pour un service des visioconférence à 6 puis à 2 Mbit/s 98 : nouvelle génération de codecs pour la visioconférence (début de l étude) : TCD, Compensation du mouvement. Normes et standards 989 : norme H.26 couvrant les débits de 6 Kbit/s à 2 Mbit/s (CCITT- IUT-T) nx6 Kbit/s 992 : ISO MPEG : codage des images animées pour le stockage, le débit -.5 Mbit/s (dérivé de H. 26) optimisé pour CD-I - ISO/IEC 72, 992 993-95: ISO MPEG2 : Le codage générique de haute qualité pour TV numérique et TVHD ISO/IEC 388, 995 Video : ITU T H.262 993-97 : ISO MPEG (version ) : Le codage générique multifonctionnel, avec éléments d analyse / synthèse à bas débit et manipulation des scènes vidéo. ISO/IEC 96- : 998 IT Coding of Audio-Visual Objects H.263 : recommendation IUT-T Histoire: recherche de la meilleure qualité 3
Le codage vidéo Redondance spatiale et temporelle des données Compacter les données Filtre physiologique L essentiel pour compresser
Transformé de couleur RGB YUV Echantillonage 5
6 23 5 96 98 78 5 70 90 78 56 23 3 98 90 98 5 89 78 5 90 5 97 78 5 98 20 23 90 89 67 5 23 23 20 76 5 89 3 56 89 90 56 98 76 3 87 90 67 25 20 23 20 98 78 5 3 56 2 23 3 23 67 2 220 0 0 0 0 0 0 2-2 - 2 3 - -7-2 - 0 9 23 2 2 3 2 3-23 - 2 3 6 5 23 2 5 2 23 2 5 3 2 8 7 3 2 2 5 22 56 2 23 2 5 6 32 2 6 ) cos(2 cos 6 ) cos(2 7 0 7 0 v y u x S C C S x x y yx v u uv π π + + = = = = Haute fréquence Basse fréquence Amplitude/ fréquence Image de la base de l espace transformé La DCT MPEG 200 7 89 2 2 20 0 8 23 5 89 23 2 3 3 2 3 2 5 H263 La quantification
Bruit de prédiction Codeur Décodeur P P Image : instant t- Image reconstruite instant t- Décodage locale Bruit du canal Bruit de différence de précisions Bruit de quantification Image t Image t - P Image reconstruite t- Décoder image t- 7
Codage : idée de base La probabilité des niveaux de gris est différentes Il y a intérêt à accorder un nombre différent de digits binaires telle que : Si la probabilité P le nombre de bits accordé Questions? Comment peut connaître les frontières des différents codes? Quelle est le nombre de bits moyen minimum qui donnera une séquence décodable? 8
Réponse question : La synchronisation est l opération permettant de remplacer les frontières lors du décodage 00000000000000000 Mémoire Décodeur Code à longueur variable préfixé La théorie de l information : Base théorique : Shanon Définir, quantifier, chiffrer l information reçue. 9
L information & l entropie P(ni) L information propre de ni est définie d par : I ( n ) = log L entropie H(P) s écrit : i p ( n i ) H m ( p ) = p ( n i ). I ( n i ) = p ( n i ). log 2 P m ( n i = i = i ) Réponse question 2 L entropie est la limite inférieure du nombre moyen de bits juste nécessaires n au codage binaire d une d image. L algorithme d huffman 0
Algorithme d Huffman 8 niveaux de gris Codage sur 3 bits N N N3 N2 N7 N N5 N N N5 N N6 N2 N8 N N3 Ni N N2 N3 N N5 N6 N7 N8 P(ni) 0.3 0.8 0.5 0.0 0.0 0.07 0.05 0.05 Détermination des mots binaires N N2 N3 N N5 N6 N7 N8 0.3 0.8 0.5 0.0 0.0 0.07 0.05 0.05 0 0 0 0 0.38 0.2 0 0.32 0 0.7 0. 0 0.62
Gain Mots binaires 0 n 00 n2 0 n3 00 n 0 n5 0 n7 n8 H(p) = 2.7 bits lm : Longueur moyenne VLC l vlc = l i. p ( n i i = ) = 2.79 Combinaisons de code La taille de code la plus petite que nous pouvons attribué est de bit Seulement quelque coefficients correspondant à des fréquences faibles sont non nul dans une transformation typique. Codage de combinaisons de codes (,) = 0x00 0 0 0 0 0 0 2 0 0 0 0 2
Codage dans MPEG 2 problèmes : Calcul Bande passante Codage non adaptative Tableaux VLC (Run, Level) 0 0 0 0 0 0 2 0 0 0 0 Table VLC (,) = 0x00 (2,2) = 0x0 (,) = 0x000 Correspondes au probabilités Tab VLC Intra Tab VLC Inter Tab VLC EOB Représentent tout les messages 3 Escape Mode 3
Schéma bloc d un codeur Codage Intra Codage Prédictif Contrôle de codage Macrobloc Prédiction - Spatiale DCT Quantification Scrutation + Codage Flux de sortie Prédiction temporelle Estimation de mvt Compensation de mvt Stockage images Quantification inverse DCT Inverse + ITU MPEG H26 H263 H263+ H263++ MPEG MPEG2 MPEG H26 MPEG
Introduction MPEG Standard ISO/IEC développé par MPEG (Moving Picture Experts Group) Succède aux normes : MPEG pour la compression et le transfert audio vidéo. MPEG 2 pour la télévision numérique. Objectif Fusionner 3 mondes : L informatique, Les télécommunications, La télévision. Codage orienté objet Coder séparément les éléments d une scène Un descripteur de scène décrit les relations des objets dans l espace L utilisateur peut interagir avec la scène Débit : de 5 Kbits/s à Mbits/s Applications : Vidéo téléphonie Multimédia mobile, surveillance Diffusion vidéo Internet, bornes 5
Exemple Les 3 parties de la norme Système Audio Vidéo Synthétique Naturelle 6
Codeur vidéo MPEG Codeur Basique MPEG Image Intra Image Inter Codage Objet Outils Scalabiliy error résilience Codage en résolution réduite sprite Spatiale Temporelle PSNR Codage de forme codage du background Codage objet 7
Codeur open source MOMuSys FFMPEG Microsoft Xvid La plateforme européenne de MPEG : MoMusys (Mobile Multimédia Systems) Bosch, Philips, Simens, Deutsche telekom, France telecom,. Nombre de lignes de code : 87959 (Codeur). Performances (Processeur 3 GHz avec GO de RAM, sans optimisation) QCIF : 0 ms CIF : 620 ms Structure d un codeur VS V0 V0 VOL VOL2 VOL3 GOV GOV2 VOP VOP2 VOP3 8
VOP Slice Slice Macroblock 9
Macroblock 6 8 8 6 Luminance Chrominance Structure VO * config * VO Identificateur VO Nombre de layers * Layer Identificateur layer Paramètres du layer Nombre de VOP * VOP Identificateur VOP Valeur de quantification Types de codage I, P ou B * Y * U * V 20
Codage image Intra DCT + Quantification Pour chaque block du macro block : La DCT quantification stockage déquantification DCT inverse Macroblock reconstruit 2
Prédiction spatiale - - Mise en Zigzag Scan horizontal AC/DC = 0 Scan Vertical 22
Codage entropique Intra : Coeff AC 0 0 0 0 2 0 0 0 0 22 0 2 0 0 Escape 2 Tab_intra_run [0][level] 000000 + code Run - 3 (,2)? OK (3,2)? Tab VLC Intra (0, ) = 0s (0,2) = s (0, 3) = 000s Level 2-7 Tab_intra_Level [0][run] (,7)? OK 000000 + code Escape Echec Escape 3 7 bits en-tête 6 bits Run (Run,Level) bit marker 30 bits 2 bits Level bit marker 23
Image Inter 6 6 6 x 6 2 23 65 55 99 23 3 6 2 56 78 65 2 3 y Image actuelle 6 98 23 2 5 7 9 90 98 5 5 65 2 56 Err_min_6 : 23 Tab Mv_6 [i] Mv_x : Image t- reconstruite Mv_y : 3 Recherche au niveau du block 2 2 2 2 Block correspondant Tab_Mv_8 Mv_8_ Mv_8_2 Mv_8_3 Mv_8_ Erreur_minimale_8 = erreur8_+ erreur8_2 + erreur8_3 + erreur8_ Erreur_minimale = MIN(Erreur_min_8, Erreur_min6) 2
Décision du mode de codage 6 6 Moyenne *6 x( i) = i = 0 256 *6 i = 0 ABS ( x( i) Moyenne ) < Erreur_min - 2 * 256 Intra Arrêter l estimation *6 i = 0 ABS ( x( i) Moyenne ) > Erreur_min - 2 * 256 Inter continuer Nombre de MB codés Nombre des MB Codés en Intra dans les images P 60 50 0 Q 30 20 0 0 2 3 5 6 7 8 9 0 2 3 NbF Série Changement de plan 25
Recherche au niveau du /2 pixels Interpolation bilinéaire 2 * ( largeur + 2 * 6 ) 2 * (longeur + 2 *6) 2 c2 8 b 5 d5 23 23 b = (2+5 + ) / 2 c = (2+8+) / 2 d = (2+5+8+23+2) / Image t- reconstruite Calcul des Mv_6 Niveau du ½ pixels Tab Mv_6 [i] Mv_x : 3 Mv_y : Mv_x_interp = 2 * mv_x_6 Mv_y_interp = 2 * mv_y_6 Image actuelle Image t- reconstruite interpolé 26
Calcul des Mv niveau du ½ pixels Mv_8_ Mv_8_2 Mv_8_3 Mv_8_ X 2 Mv_8 int Mv_8_2_int Mv_8_3_int Mv_8 int Image t- interpolé Image actuelle Erreur_minimale_8 = erreur8_+ erreur8_2 + erreur8_3 + erreur8_ Décision Mv/Mb ou Mv/Mb Erreur_min 8 > Erreur_min 6-27 Codage Inter 6 (Mv/mb) Erreur_min 8 < Erreur_min 6-27 Codage Inter 8 (Mv/mb) 27
Récapitulation MB intra MB inter_6 0 vecteurs de mouvements 2 vecteurs de mouvements mv_x mv_y MB inter_8 8 vecteurs de mouvements mv_x mv_y + Tab_mode_codage Image de référence Image P courante 28
Compensation de mvt Image t interpolé 0 0 0 0 Intra Inter_8 Image Compensée Mv_x_8_ * 2 Mv_y_8_ * 2 Mv_x_6 * 2 Mv_y_6 * 2 Inter_6 la matrice de l erreur Image présente Image compensée Image erreur - = Inter Block match différence 29
Codage de la matrice de l erreur La DCT Image erreur quantification stockage déquantification DCT inverse Macroblock reconstruit Codage des vecteurs de mvt PMv = Mv + Mv2 + Mv3 - Max - Min Mv Mv 2 Mv3 V / Macroblock Mv 2 Mv 2 Mv3 Mv Mv b 2 Mv3 b2 Mv Mv b3 b V / Macroblock Matrices des vecteurs de mouvement 30
Reconstruction de l image Image erreur reconstruite + Image Compensée = Image présente reconstruite H26 3
Performances du codeur H26 JM92 Ericsson, Nokia, Siemens, Motorola, Microsoft, Apple, RealNetwork, Thomson, Nombre de ligne de code : 3520. Durée de traitement : Processeur cadencé à 3GHz avec GO de RAM. QCIF : 22 ms CIF : 786ms H26 Control de codage - DCT Quantification Choix entre codage entropique et codage adaptative Scrutation + Codage entropique Bitstream Out Détection de mvt Compensation de mvt Stockage images Quantification inverse DCT Inverse + 5 images de référence 8 mode de partionnement Estimation au niveau du /8 de pixels 32
Performances Codeur JPEG2000 MPEG2 H263 MPEG H26 200-600% 65% 8% 37% PSNR 33
Implémentations électronique des codeurs vidéo Introduction Evaluation sur des plateformes embarquées. DSP FPGA 3
Choix : Plateforme DSP Architecture choisie le TMSVC550 Consommation faible (20 mw). Elément essentiel dans la plateforme embarquée adaptée à l image OMAP50. Architecture du C550 3 Bus de lecture de données BB CB DB 3 Bus d adresses pour la lecture de données BAB CAB DAB Bus de lecture de Programme PB Bus d adresses pour la lecture de programme PAB CPU Mémoire Données/Programme Décodeur d instructions Unité centrale Générateur d adresses programme Générateur d adresses de données & ALU (6bits) ALU(0bit) décaleur 2MAC 2 Bus d écriture de données EB FB 2 Bus d adresses pour l écriture de données EAB FAB 35
Choix 2 DSP FPGA Processeur «SOFTCORE» IP Choix 2 : processeur Soft Core 36
Choix 3 : DSP FPGA Processeur «SOFTCORE» IP Développement d IP Consortium mené par Xilinx ayant pour but de viser un codage temps réel pour des grands formats d images. Software + HW Accel Opt SW Virtual socket Plateforme 37
MCP 38