2. Pourquoi compresser la vidéo?!
L’image La fréquence En minutes La durée
Le film:
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)
3. Comment est possible de compresser la vidéo?!
Redondance spatiale
Redondance temporelle
6. 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)
9. Types des données visuelles
Objet de forme arbitraire
Masque binaire Masque en niveaux de
gris
Information à coder:
la texture
Information supplémentaire à coder: la forme
10. 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 R = Y + (1.4075 * (V - 128));
U = -0.169*R - 0.331*G + 0.500*B + 128.0 G = Y - (0.3455 * (U - 128) - (0.7169 * (V - 128));
V = 0.500*R - 0.419*G - 0.081*B + 128.0 B = Y + (1.7790 * (U - 128);
11. Codage de la texture : préparation des données
Y Y Y
Sous-
échantillonnage
U 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
12. Codage de la texture : les Macroblocks (16x16 pixels)
16x16 pixels
Pour des images non multiple de 16, un padding est nécessaire
14. 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
15. 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
22. 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
23. 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
A4 A3 A2 A1 B1 B2 B3 B4
A b B a
c d a=(-8A4+24A3-48A2+160A1+160B1-48B2+24B3-8B4) mod 256
C D
b=(A+B+1)mod(2)
b’
d=(A+B+C+D+2)mod(4) a b b’=(a+b+1)mod(2)
c’ d’
d’=(a+b+c+d+2)mod(4)
c d
Demi Quart
Augmenter la résolution des VMs, mais réduire l’erreur de prédiction
25. Estimation globale de mouvement New
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
Très utile pour les mouvements de la camera
26. 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
MVB MVF=[(tc-tf)/(tb-tf)]*MV
MVF
MVB=MVF-MV
MV
P B B P
27. Module prédiction: schéma block
Image +
courante
-
Estimation
de mouvement
Image(s) Compensation
de référence de mouvement
Vecteurs de mouvement
29. 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)
33. 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
35. 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
36. Modules prédiction et transformation: schéma block
Image +
DCT
courante
-
Estimation
de mouvement
Image(s) Compensation
de référence de mouvement
Vecteurs de mouvement
38. 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 :
Qs 1-4 5-8 9-24 24-31
dc_scaller (lum) 8 2Qs Qs+8 2Qs-16
dc_scaller (crom) 8 (Qs+13)/2 (Qs+13)/2 Qs-6
Perte de l’information
39. 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
40. Modules prédiction, transformation, quantification
Image +
DCT Q
courante
-
Estimation
de mouvement
Image(s) Compensation
de référence de mouvement
Image DCT-1 Q-1
courante de
référence
Vecteurs de mouvement
42. Codeur d’entropie pour les coefficients DCT
Valeurs des coefficients DCT; La probabilité des coefficients zéros
43. 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 New
Horizontal Vertical Zigzag
Codage pour chaque composante de vecteur (LAST, RUN, LEVEL) par code
à longueur variable (code courtes pour les valeurs les plus fréquentes)
44. 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
45. Codage binaire par codes à longueur variable
La longueur des codés dépend de la fréquence d’apparition des symboles
Codage Huffman
Symbole La Longueur idéal du Code D p=1
probabilité p code : log2(1/p)
-2 0.1 3.32 001 0
-1 0.2 2.32 011
1 C p=0.6
0 0.4 1.32 1
1 0.2 2.32 010 1
2 0.1 3.32 000 0
0 B p=0.4
1 0
p=0.4
-1 1 A p=0.2
(1, 0, -2) -> 0101001 1 0
p=0.2 p=0.2
-2 2
Dans la pratique on utilise des tableaux des
probabilités pre-calculés p=0.1 p=0.1
46. Schéma complet de codage
Image + DCT Q Re-order CLV
courante
Estimation
-
de mouvement
Image(s) Compensation
de référence de mouvement
Image DCT-1 Q-1
courante de
référence
Vecteurs de mouvement Stream
47. Types des données visuelles
Objet de forme arbitraire
Masque binaire Masque en niveaux de
gris
Information a coder:
la texture
Information supplémentaire a coder: la forme
Certaines contraintes pour le codage de la texture
48. Codage de la texture
Bounding Box
Object
Extended
Bounding Box
n.16x16
49. Codage de la texture : module prédiction
Compensation de mouvement
Padding pour le MB de référence
Horizontal, vertical et moyenne
VM
Codage différentiel des VMs par rapport aux blocks voisins
50. Codage de la texture : module de transformation
La méthode normale avec Transformée DCT adaptée
un padding préalable aux formes arbitraires
Le padding n’est pas
standardisé
Zéro padding
Le même padding que pour
la compensation de Shift + DCT 1D
mouvement Shift + DCT 1D
Parcours en zigzag
- les coeff. transp. sont ignorés
51. 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
52. 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é
53. 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
54. 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
55. Outils spéciaux de codage New
La scalabilité Codage par
mosaïques
Codage par Codage résistant
ondelettes aux erreurs de
transmission
56. 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:
57. Outils spécifiques: la scalabilité New
in _ 1 MPEG-4 MPEG-4 o ut _ 1
En hanc eme nt En hanc eme nt
L ay er1 Enc od er Lay er 1 Dec o der
MSDL Dem ux
MSDL Mux
o ut p_ 1
in Sc alabili t y Sc alabili t y
Mi dPr oc es ss or 1 Mi dPr oc es ss or 1
PrePr oc es s or Pos t Pro c ess or
o ut p_ 0
MPEG-4 MPEG-4
Bas e Lay er Bas e Lay er
in_ 0 ou t _ 0
En c od er Dec od er
63. 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
64. Outils spéciaux de codage: les ondelettes New
Relation d’héritage entre les coefficients
de la transformée
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
65. Outils spéciaux de codage: les ondelettes New
Scalabilité hybride spatiale - SNR
66. Outils spéciaux de codage: les ondelettes New
Codage par sous-image pour accès
direct aux zones specifiques
67. New
Outils spéciaux de codage: résistance aux erreurs de transmission
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
69. L’encodeur
Même schéma, différences dans les détails des blocks
70. Le décodeur
Même schéma, différences dans les détails des blocks
71. La prédiction block intra
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
Prédiction Intra directement dans l’espace initial de l’image
72. La prédiction block intra : luminance 4x4: 9 options
Prédiction Intra directement dans l’espace initial de l’image
73. La prédiction block intra : luminance 4x4: 9 options
Prédiction Intra directement dans l’espace initial de l’image
74. La prédiction block intra : luminance 4x4: 9 options
Prédiction Intra directement dans l’espace initial de l’image
75. La prédiction block intra : luminance 16x16: 4 options
Prédiction Intra directement dans l’espace initial de l’image
76. 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)
77. La prédiction block Inter: exemple de répartition
La différence des images (erreur de prédiction) à coder
78. La prédiction block Inter: vecteurs de mouvement
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 différence des images (erreur de prédiction) à coder
79. 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)
80. 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)
81. 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
82. 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:
83. 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
84. T3 - La transformée des coefficients Y DCT: Transformée Hadamard
16
4
4
16
85. T2 - La transformée des coefficients Cr DCT: Transformée Hadamard
8
4
4
8
86. 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
89. Le filtrage à la frontière des blocks
P3
P2
P3 P2 P1 P0 Q0 Q1 Q2 Q3 P1
P0
Q0
Q1
Filtre linéaire d’ordre 5, 4 ou 3 en Q2
fonction de l’endroit de frontière (MB Q3
ou B) et du gradient
90. Le codage entropique
CABAC: Contexte based adaptative Binary Arithmetic Coding
VLC : Variable Length Coding