Basics of Mpeg 4 Video Compression

Preview:

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

Recommended