Groupe des Ecoles des Télécommunications Institut National des Télécommunications Estimation et compensation en mouvement pour codage vidéo MEP, 2006 Marius Preda Unité de Projets ARTEMIS Advanced Research & TEchniques for Multidimensional Imaging Systems
Pourquoi compresser la vidéo?! Le film: L image La frequence En minutes La durée Le pixel Le DVD : 4.5 Go 34 Le CD : 650-700 Mo 222 Le ADSL : 0.25 Mo/s 118 * 156 Go (=29,66 Mo/s)
Comment est possible de compresser la vidéo?! Redondance spatiale Redondance temporelle
Compression du signal Architecture générique Prédiction Transformation Quantification Codage entropique
Codage de la texture : préparation des données R Y G U Image Initiale B V Y = 0.299*R + 0.587*G + 0.114*B U = -0.169*R - 0.331*G + 0.500*B + 128.0 V = 0.500*R - 0.419*G - 0.081*B + 128.0 R = Y + (1.4075 * (V - 128)); G = Y - (0.3455 * (U - 128) - (0.7169 * (V - 128)); B = Y + (1.7790 * (U - 128);
Codage de la texture : préparation des données Y Y Y U Souséchantillonnage U U V V V 4:4:4 4:2:2 4:2:0 La composante Y porte plus d information que les composantes U et V
Codage de la texture : les Macroblocks (16x16 pixels) 16x16 pixels Pour des images non multiple de 16, un padding est nécessaire
Module Prédiction : GOP GOP Séquence vidéo GOP GOP
Codage de la texture : Module Prédiction 1 2-(5+1)/2 5-1 2-5 2-1 En faisant des différences, on diminue la dynamique de l information à coder
Module Prédiction avec Compensation de Mouvement + Vx Vy Image Initiale Avec prédiction Avec prédiction et compensation de mouvement La compensation de mouvement diminue encore la dynamique de l information
Module Prédiction avec Compensation de Mouvement Deux cadres consécutifs
Module Prédiction avec Compensation de Mouvement Différence directe
Module Prédiction avec Compensation de Mouvement Différence avec compensation en mouvement pour block de 16x16
Module Prédiction avec Compensation de Mouvement Différence avec compensation en mouvement pour block de 8x8
Module Prédiction avec Compensation de Mouvement Différence avec compensation en mouvement pour block de 4x4
Compression vidéo Module Prédiction avec Compensation de Mouvement 16x16 4x4
Les vecteurs de mouvement Mode 1MV: un vecteur pour un MB Mode 4MV: un vecteur pour chaque block du MB Les vecteurs sont estimés que pour la composante de luminance Codage différentiel par rapport aux macroblock voisins Estimation à quart de pixel Estimation globale pour l image entière New Mode directe dans la compensation bidirectionnelle Les méthodes d estimation des vecteurs ne sont pas standardisées
Estimation à quart de pixel New L estimation à pixel: les VMs sont des nombres entiers - pb pour des mouvements sous pixel entre deux cadres - l erreur de prédiction importante Solution: estimation à demi et à quart de pixel Interpolation bilinéaire Interpolation bilinéaire à voisinage 8 A b B c d D b=(a+b+1)mod(2) A 4 A 3 A 2 A 1 B 1 B 2 B 3 B 4 a C a=(-8a 4 +24A 3-48A 2 +160A 1 +160B 1-48B 2 +24B 3-8B 4 ) mod 256 Demi d=(a+b+c+d+2)mod(4) a c c b d b d b =(a+b+1)mod(2) d =(a+b+c+d+2)mod(4) Quart Augmenter la résolution des VMs, mais réduire l erreur de prédiction
La prédiction block Inter: vecteurs de mouvement
Mode direct pour la compensation bidirectionnelle New Par rapport à une référence passée Par rapport à une référence future Par rapport à la moyenne entre une référence passée et une future Mode direct MV F MV B MV F =[(t c -t f )/(t b -t f )]*MV+MV D MV MV B =MV F -MV P B B P
La prédiction Liberté de choisir la direction de prédiction pour les cadres P et B Un cadre B peut être utilisé comme cadre de référence Plusieurs références (même à longue distance)
Module prédiction: schéma block Image courante Estimation de mouvement + - Image(s) de référence Compensation de mouvement Vecteurs de mouvement
Compression du signal Architecture générique Prédiction Transformation Quantification Codage entropique
Module transformation: les contraintes Les données dans le domaine transformé doivent être Non corrélées : séparées en composants avec interdépendance minimale Compactes: l énergie doit être concentrée dans un petit nombre des valeurs La transformée doit être réversible La transformée doit être faisable d.p.d.v. temps de calcul Block-based (Karhunen-Loeve, SVD, DCT) / image-based (DWT)
Module transformation: DCT Transformée par block Transformée directe: Y = AXA T Transformée inverse: X = T AYA A ij = C i cos (2 j+ 1) iπ 2N C C i i 1 =,( i = 0) N 2 =,( i > 0) N
Module transformation: DCT Exemple pour block 4x4 A 1 1 1 1 cos(0) cos(0) cos(0) cos(0) 2 2 2 2 1 π 1 3π 1 5π 1 7π cos( ) cos( ) cos( ) cos( ) 2 8 2 8 2 8 2 8 = 1 2π 1 6π 1 10π 1 14π cos( ) cos( ) cos( ) cos( ) 2 8 2 8 2 8 2 8 1 3π 1 9π 1 15π 1 21π cos( ) cos( ) cos( ) cos( ) 2 8 2 8 2 8 2 8
Module transformation: DCT Exemple pour block 4x4 A 0.5 0.5 0.5 0.5 0.653 0.271 0.271 0.653 = 0.5 0.5 0.5 0.5 0.271 0.653 0.653 0.271
Module transformation: DCT L élément de base: le block à 8x8 pixels 4-12 bits / pixel New Luminance et chrominance pour MB I, l erreur de prédiction pour MB P et B
Module transformation: DCT X R X 1c 2c Y 3c 4c Reconstruction à partir d un sous-ensemble des coefficients DCT
Module transformation: prédiction spatiale pour MB I Les coefficients DC et certaines coefficients AC entre des blocks voisines Macroblock Prédiction pour les coefficients les plus porteurs d information
Modules prédiction et transformation: schéma block Image courante Estimation de mouvement + - DCT Image(s) de référence Compensation de mouvement Vecteurs de mouvement
Compression du signal Architecture générique Prédiction Transformation Quantification Codage entropique
Module quantification pour les coefficients DC I Contrôlé par une variable globale (associée au VOP quantiser_scale) Composante DC pour les blocks I : V q = V //( dc _ scaller) Q s 1-4 5-8 9-24 24-31 dc_scaller (lum) 8 2Q s Q s +8 2Q s -16 dc_scaller (crom) 8 (Q s +13)/2 (Q s +13)/2 Q s -6 Perte de l information
Module quantification pour les coefficients non DC I Deux méthodes: MPEG-2 et H263 Une variable locale est utilisée dans MPEG-2 Le pas de quantification est différent pour chaque fréquence spatiale MPEG-2 MPEG-2 Perte de l information
Modules prédiction, transformation, quantification Image courante Estimation de mouvement + - DCT Q Image(s) de référence Compensation de mouvement Image courante de référence DCT -1 Q -1 Vecteurs de mouvement
Compression du signal Architecture générique Prédiction Transformation Quantification Codage entropique
Codeur d entropie pour les coefficients DCT Valeurs des coefficients DCT; La probabilité des coefficients zéros
Compression vidéo Codeur d entropie pour les coefficients DCT Les coefficients DCT quantifiés sont réorganisés en vecteur 1D Différents types de balayage afin d obtenir des vecteurs courts New Horizontal New Vertical Zigzag Codage pour chaque composante de vecteur (LAST, RUN, LEVEL) par code à longueur variable (code courtes pour les valeurs les plus fréquentes)
Codeur d entropie: les symboles Codage pour chaque composante de vecteur (LAST, RUN, LEVEL) par code à longueur variable (code courtes pour les valeurs les plus fréquentes) 16, 0, 0, -3, 5, 6, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0 (0,16,0), (2, -3, 0), (0, 5, 0), (0, 6, 0), (4, -7, 1) No des zéros avant le symbole Indique le dernier symbole non zéro
Codage binaire par codes à longueur variable La longueur des codés dépend de la fréquence d apparition des symboles Codage Huffman Symbole -2-1 0 1 2 La probabilité p 0.1 0.2 0.4 0.2 0.1 Longueur idéal du code : log 2 (1/p) 3.32 2.32 1.32 2.32 3.32 (1, 0, -2) -> 0101001 Code 001 011 1 010 000 0 p=0.4 Dans la pratique on utilise des tableaux des probabilités pre-calculés 1 D p=1 B 0 1 p=0.4 1 0-1 1 p=0.2 p=0.2 C p=0.6 0 A p=0.2 1 0-2 2 p=0.1 p=0.1
V Sub SampleX Vsx Sub SampleXY Vsxy U Load RGB + RGB Y Dif T freq. Cf Q Cfq to YUV - ME v Reorder Entropy Encoder Ref. RGB Yrf MC RCo Ref. Ir + Sum + r T -1 Cfr Q -1
Sujet proposé Estimation et Compensation en mouvement Implanter les blocks ME, MC: Estimation et compensation par blocks de taille fixe (16x16) entre deux images Estimation et compensation à demi et quart de pixel par blocks de taille fixe (16x16) entre deux images Estimation et compensation par blocks de taille variable (de 4x4 aux 16x16) entre deux images Estimation et compensation à demi et quart de pixel par blocks de taille variable (de 4x4 aux 16x16) entre deux images Estimation et compensation à demi et quart de pixel par blocks de taille variable (de 4x4 aux 16x16) entre une image et une série des images
Sujet proposé Estimation et Compensation en mouvement Point de départ: le logiciel «Video Encoder inside»