Upload
marius-preda
View
850
Download
3
Embed Size (px)
DESCRIPTION
A presentation of MPEG-4 (Part 2 and 10) tools for video compression
Citation preview
Pourquoi compresser la vidéo?!
* 156 Go (=29,66 Mo/s)
Le film:
Le DVD : 4.5 Go 34
Le CD : 650-700 Mo 222
Le ADSL : 0.25 Mo/s 118
Le pixel
L’image La fréquence En minutes La durée
Comment est possible de compresser la vidéo?!
Redondance spatiale
Redondance temporelle
Audio (AAC)
Vidéo (V2, AVC)
Image (VTC)
Vidéo de forme
arbitraire
Les différentes parties du standard MPEG-4
– Part 1 Systems (2001) – Part 2 Visual (2001) – Part 3 Audio (2001) – Part 4 Conformance (2002) – Part 5 Reference Software
(2002) – Part 6 DMIF - Delivery
Multimedia Integration Framework (2000)
– Part 7 Optimized Software (2002)
– Part 8 MPEG 4 on IP (2002) – Part 9 Reference Hardware
(2003) – Part 10 Advanced Video Coding
(AVC) joint with ITU-T (2003)
Objets du cours
Architecture générique
Prédiction Transformation Quantification Codage entropique
Types des données visuelles
Objet de forme arbitraire
Masque binaire Masque en niveaux de gris
Information supplémentaire à coder: la forme
Information à coder: la texture
Codage de la texture : préparation des données
Image Initiale
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);
B
R
G
Y
U
V
Codage de la texture : préparation des données
Y
U
V
La composante Y porte plus d’information que les composantes U et V
Sous- échantillonnage
Y
U
V
4:4:4 4:2:2
Y
U
V
4:2:0
Codage de la texture : les Macroblocks (16x16 pixels)
Pour des images non multiple de 16, un padding est nécessaire
16x16 pixels
Module Prédiction : GOP
Séquence vidéo GOP GOP GOP
Codage de la texture : Module Prédiction
En faisant des différences, on diminue la dynamique de l’information à coder
1 5-1 … 2-(5+1)/2 2-5 2-1
Module Prédiction avec Compensation de Mouvement
La compensation de mouvement diminue encore la dynamique de l’information
Image Initiale Avec prédiction
+ Vx
Vy
Avec prédiction et compensation de mouvement
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
16x16 4x4
Module Prédiction avec Compensation de Mouvement
Les vecteurs de mouvement
Les méthodes d’estimation des vecteurs ne sont pas standardisées
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
Estimation à quart de pixel Estimation globale pour l’image entière Mode directe dans la compensation bidirectionnelle
Codage différentiel par rapport aux macroblock voisins
New
Estimation à quart de pixel
Augmenter la résolution des VMs, mais réduire l’erreur de prédiction
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
Demi
A B
C
b c d D
b=(A+B+1)mod(2)
d=(A+B+C+D+2)mod(4)
Interpolation bilinéaire à voisinage 8
Quart
A4 A3 A2 A1 B1 B2 B3 B4 a
a=(-8A4+24A3-48A2+160A1+160B1-48B2+24B3-8B4) mod 256
b
c
a
d
b’
c’ d’ b’=(a+b+1)mod(2)
d’=(a+b+c+d+2)mod(4)
New
La prédiction block Inter: vecteurs de mouvement
Estimation globale de mouvement
Très utile pour les mouvements de la camera
Le même ensemble des paramètres de mouvement pour l’image entière Utilisée alternativement avec la compensation locale (MB) pour
minimiser l’erreur de prédiction
1 à 4 VMs (et leur positions) à transmettre par image au décodeur, interpolation pour chaque MB
New
Mode direct pour la compensation bidirectionnelle
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
New
P P B B
MV
MVF MVB MVF=[(tc-tf)/(tb-tf)]*MV
MVB=MVF-MV
Module prédiction: schéma block
Image courante
Image(s) de référence
Estimation de mouvement
+
-
Vecteurs de mouvement
Compensation de mouvement
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
Block-based (Karhunen-Loeve, SVD, DCT) / image-based (DWT)
La transformée doit être réversible
La transformée doit être faisable d.p.d.v. temps de calcul
Module transformation: DCT
Transformée par block
Transformée directe: Transformée inverse:
Module transformation: DCT
Exemple pour block 4x4
Module transformation: DCT
Exemple pour block 4x4
Module transformation: DCT
L’élément de base: le block à 8x8 pixels
Luminance et chrominance pour MB I, l’erreur de prédiction pour MB P et B
4-12 bits / pixel New
Module transformation: DCT
Reconstruction à partir d’un sous-ensemble des coefficients DCT
1c 2c
3c 4c
Module transformation: prédiction spatiale pour MB I
Les coefficients DC et certaines coefficients AC entre des blocks voisines
Prédiction pour les coefficients les plus porteurs d’information
Macroblock
Modules prédiction et transformation: schéma block
Image courante
Image(s) de référence
Estimation de mouvement
+
-
Vecteurs de mouvement
Compensation de mouvement
DCT
Architecture générique
Prédiction Transformation Quantification Codage entropique
Module quantification pour les coefficients DC I
Perte de l’information
Contrôlé par une variable globale (associée au VOP – quantiser_scale)
Composante DC pour les blocks I :
Qs
dc_scaller (lum)
dc_scaller (crom)
1-4
8
8
5-8
2Qs
(Qs+13)/2
9-24
Qs+8
(Qs+13)/2
24-31
2Qs-16
Qs-6
Module quantification pour les coefficients non DC I
Le pas de quantification est différent pour chaque fréquence spatiale
Perte de l’information
MPEG-2
Une variable locale est utilisée dans MPEG-2
MPEG-2
Deux méthodes: MPEG-2 et H263
Modules prédiction, transformation, quantification
Image courante
Image(s) de référence
Estimation de mouvement
+
-
Vecteurs de mouvement
Compensation de mouvement
DCT Q
Q-1 DCT-1 Image courante de référence
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
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
Codage pour chaque composante de vecteur (LAST, RUN, LEVEL) par code à longueur variable (code courtes pour les valeurs les plus fréquentes)
Horizontal Vertical Zigzag New New
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
Codage Huffman
La longueur des codés dépend de la fréquence d’apparition des symboles
Symbole La probabilité p Longueur idéal du
code : log2(1/p) -2 0.1 3.32 -1 0.2 2.32 0 0.4 1.32 1 0.2 2.32 2 0.1 3.32
-2 2
p=0.1 p=0.1
A p=0.2 -1
p=0.2
1
p=0.2
B p=0.4 0
p=0.4
C p=0.6
D p=1
1
0
1 0
1 0
1 0
Code 001 011 1
010 000
(1, 0, -2) -> 0101001
Dans la pratique on utilise des tableaux des probabilités pre-calculés
Schéma complet de codage
Image courante
Image(s) de référence
Estimation de mouvement
+
-
Vecteurs de mouvement
Compensation de mouvement
DCT Q
Q-1 DCT-1 Image courante de référence
Re-order CLV
Stream
Types des données visuelles
Objet de forme arbitraire Masque binaire Masque en niveaux de
gris
Information supplémentaire a coder: la forme Certaines contraintes pour le codage de la texture
Information a coder: la texture
Codage de la texture
Object
Bounding Box
Extended Bounding Box
n.16x16
Codage de la texture : module prédiction
Compensation de mouvement
VM
Padding pour le MB de référence Horizontal, vertical et moyenne
Codage différentiel des VMs par rapport aux blocks voisins
Codage de la texture : module de transformation
La méthode normale avec un padding préalable
Transformée DCT adaptée aux formes arbitraires
Le padding n’est pas standardisé
Zéro padding
Le même padding que pour la compensation de mouvement
Shift + DCT 1D
Shift + DCT 1D
Parcours en zigzag - les coeff. transp. sont ignorés
Codage de la forme
Masque binaire : valeurs 0 ou 255
Masque en niveaux de gris: valeurs entre 0 et 255
Pour chacune des deux méthodes MPEG-4 standardise un ensemble des outils spécifiques
Codage du masque binaire New
Codage par Macroblock
Utilisation de la prédiction temporelle (par VOP entier)
Utilisation de l’estimation et compensation du mouvement (calculés indépendants des VM de la texture) Estimations à demi et quart pixels ne sont pas supportées 4MV n’est pas supporté
Codage du masque binaire New
Codeur arithmétique avec contexte
10 bits 9 bits
C=(C9C8C7C6C5C4C3C2C1C0)2 C=(C8C7C6C5C4C3C2C1C0)2
1024 valeurs possible 512 valeurs possible
Calcul des probabilités pour chaque symbole Les symboles avec une grande probabilité: des codes courts Possible de coder un symbole avec moins d’un bit
Codage du masque en niveaux de gris New
Association d’un masque binaire
Codage du masque binaire avec la technique précédemment présentée
Codage du masque en niveaux de gris comme une texture
La scalabilité
Outils spéciaux de codage New
Codage par mosaïques
Codage par ondelettes
Codage résistant aux erreurs de
transmission
Outils spéciaux de codage: la scalabilité New
Organiser le stream vidéo d’une manière "incrémentale" : une couche de base qui contient l’information à une résolution/qualité
moyenne Des couches d’amélioration qui s’ajouts à la couche de base pour
augmenter la résolution/qualité
Approche classique:
Approche scalable:
Outils spécifiques: la scalabilité New
M S D
L M u x
B a s e L a y e r
M P E G - 4 i n _ 1
i n _ 0
i n P r e P r o c e s s o r M
S D L D
e m u x
D e c o d e r
L a y e r 1 D e c o d e r
o u t _ 0
P o s t P r o c e s s o r
o u t p _ 1
o u t _ 1
o u t p _ 0
M P E G - 4
E n h a n c e m e n t
M P E G - 4
M i d P r o c e s s s o r 1
M P E G - 4 E n h a n c e m e n t
S c a l a b i l i t y
E n c o d e r
L a y e r 1 E n c o d e r
B a s e L a y e r
M i d P r o c e s s s o r 1 S c a l a b i l i t y
Les différents types de scalabilité New
Spatiale
D
C
B
A
D C B A
Les relations entre la couche de base et la couche d’amélioration
Les différents types de scalabilité New
Temporelle
D C B A
Les différents types de scalabilité New
En SNR
A B C D
D C B A
Les différents types de scalabilité New
En SNR
Outils spéciaux de codage: les mosaïques (sprites) New
Un sprite est transmis une seule fois pour un segment vidéo
A chaque cadre, l’image est obtenue par cropping
Le sprite est codé comme une image I
+
Outils spéciaux de codage: les ondelettes New
Transformation: ondelettes biorthogonales (9,3) Codage des coefficients avec le Zero Tree Wavelet Coding Quantification implicite/explicite (dif pour les coeff DC et AC) Scanning et codage arithmétique
Relation d’héritage entre les coefficients de la transformée
Outils spéciaux de codage: les ondelettes New
Scalabilité hybride spatiale - SNR
Outils spéciaux de codage: les ondelettes New
Codage par sous-image pour accès direct aux zones specifiques
Outils spéciaux de codage: résistance aux erreurs de transmission
New
Insertions de marqueurs de re-synchronisation dans le flux binaire
Partitionnement des données vidéos Extension des codes header Codes VLC réversibles Rafraîchissement intra NEWPRED, pour les communications bidirectionnelles client-
serveur
Objets du cours
L’encodeur
Même schéma, différences dans les détails des blocks
Le décodeur
Même schéma, différences dans les détails des blocks
La prédiction block intra
Prédiction Intra directement dans l’espace initial de l’image
Block de 4x4 ou 16x16 pixels
Luminance 4x4 : 9 options de prédiction
Luminance 16x16 : 4 options de prédiction
Chrominance 4x4 : 1 méthode de prédiction
La prédiction block intra : luminance 4x4: 9 options
Prédiction Intra directement dans l’espace initial de l’image
La prédiction block intra : luminance 4x4: 9 options
Prédiction Intra directement dans l’espace initial de l’image
La prédiction block intra : luminance 4x4: 9 options
Prédiction Intra directement dans l’espace initial de l’image
La prédiction block intra : luminance 16x16: 4 options
Prédiction Intra directement dans l’espace initial de l’image
La prédiction block Inter
Référence vers une ou plusieurs images de référence
Compensation de mouvement en arbre structuré Le MB (16x16) peut être partagé dynamiquement VMs associés avec les bloques (16x16), (8x16), (16x8), (8x8),
(8x4), (4x8), (4x4)
La prédiction block Inter: exemple de répartition
La différence des images (erreur de prédiction) à coder
La prédiction block Inter: vecteurs de mouvement
La différence des images (erreur de prédiction) à coder
Pour chaque block on cherche une référence avec les mêmes dimensions
Précision d’estimation des vecteurs de mouvement à quart de pixel
À démi pixel : filtre FIR (Finite Impulse Response) d’ordre 6 À quart de pixel: interpolation bilinéaire supplémentaire
Codage prédictif des vecteurs de mouvement par rapport aux VMs des blocks voisines: filtre médian
La prédiction
Liberté de choisir la direction de prédiction pour les cadres P et B
Plusieurs références (même à longue distance)
Un cadre B peut être utilisé comme cadre de référence
La transformée en fréquence: 3 options
Une transformée 4x4 pour les coefficients DC dans les MB de luminance I (T3)
Une transformée 2x2 pour les coefficients DC dans tous les MB de chrominance (T2)
Une transformée 4x4 pour les autres MB (T1)
T1 - La transformée en fréquence; retour à la DCT?!
Concentration de l’énergie sur un nombre réduit des coefficients
Transforme les entiers en nombre réels (pas besoin d’une telle précision car une quantification suive
T1 - La transformée en fréquence; retour à la DCT?!
=
=
d=c/b=0.414
L’idée: faire d=0.5 La transformée:
T1 - La transformée en fréquence: la DCT en « entier »
A considérer dans l’étape de quantification
La transformée C remplace la DCT Pas de multiplication nécessaire, que des shifts et adition/
soustraction Les coefficients sont représentés en 16 bits
T3 - La transformée des coefficients Y DCT: Transformée Hadamard
16
16
4
4
T2 - La transformée des coefficients Cr DCT: Transformée Hadamard
8
8
4
4
La quantification
Nouvelles contraintes: Pas de division et opération en point flottant Inclure un facteur d’échelle donné par les matrices résultées de la
transformée
52 valeurs pour le Qstep
Facteur d’échelle
Le filtrage à la frontière des blocks
Q=32
Le filtrage à la frontière des blocks
Q=36
Le filtrage à la frontière des blocks
P3 P2 P1 P0 Q0 Q1 Q2 Q3
P3
P2
P1
P0
Q0
Q1
Q2
Q3
Filtre linéaire d’ordre 5, 4 ou 3 en fonction de l’endroit de frontière (MB ou B) et du gradient
Le codage entropique
CABAC: Contexte based adaptative Binary Arithmetic Coding
VLC : Variable Length Coding
Evaluation des performances
Evaluation des performances
Evaluation des performances
Evaluation des performances
Les profiles
Simple Profile
Simple Profile: Levels
Les Profiles, version 2