Institut compression
Mines-Telecom
Marco Cagnazzo,
cagnazzo@telecom-paristech.fr
J
Journées X-UPS
Introduction au codage de source et à la compression
Codage sans pertes
Quantification
Codage par transformée
Plan
Introduction au codage de source et à la compression
Principes
Codage sans pertes
Principes
Huffman et codage arithmétique
Quantification
Principes
Quantification scalaire prédictive
Quantification avec contrainte entropique
Codage par transformée
Principes
Allocation des ressources
Exemples
Plan
Quantification
Pourquoi comprimer ?
◮ Images à 5 Megapixel
◮ Trois composantes couleur
◮ Un octet par composant
◮ Occupation mémoire : 15 Mo par photo
◮ Publication sur le Web ?
Pourquoi comprimer ?
Exemple 2 : Télévision
◮ système analogique
⇒ bande de fréquence : 6 MHz
◮ Système numérique : TV-SD
1 composante de luminance 576 × 720
2 composantes de chrominance 288 × 360
quantification sur 8 bits
25 images par seconde
R ≈ 125 Mbps
◮ 2 heures de film > 100 Go
◮ TV-HD :
◮ 1920 × 1080 pixels, 50 images par second :
R ≈ 1250 Mbps, 2h de film > 1To
Fondements de la compression
La redondance
Fondements de la compression
Types d’algorithme
Critères de performance
Débit
Rapport (taux) de compression
Bin Rin
◮ T = Bout = Rout
Débit de codage
Bout
◮ Image : R = NM [bpp]
Bout
◮ Vidéo, son : R = T [bps]
Exemples :
Codage d’image sans perte : T ≤ 3
Codage d’image avec perte : T ≈ 5 →?
Codage vidéo avec perte : T ≈ 20 →?
Critères de performance
Qualité et distorsion
Le seul débit n’est pas suffisant pour évaluer un algorithme avec
pertes
Il faut déterminer la qualité ou la distorsion de l’image reconstruite
◮ Les Critères objectifs sont fonctions mathématiques de
◮ fn,m : image d’origine ; et
◮ efn,m : image reconstruite après compression
◮ Les critères objectifs non perceptuels ne prennent pas en
compte les caractéristiques du système visuel humain (SVH)
◮ Les critères objectifs perceptuels sont basés sur un modèle du
système visuel humain (SVH)
Critères de performance
Critères de performance
Critères objectifs perceptuels (images)
0.8
0.6
|H|
0.4
νy −0.5 −0.5
νx
!
2552
WPSNR(f , ef ) = 10 log10 où
DW (f , ef )
1
DW (f , ef ) =
2
kh ∗ Ek
NM
11/121 15.05.14 Institut Mines-Telecom Codage de source et compression
Introduction au codage de source et à la compression
Codage sans pertes
Principes
Quantification
Codage par transformée
Critères de performance
Critères objectifs perceptuels (images)
Structural Similarity Index (SSIM Index) entre deux blocs x et y :
pour simplicité, α = β = γ = 1, C3 = C2 /2
(2µx µy + C1 ) (2σxy + C2 )
SSIM =
µ2x + µ2y + C1 σx2 + σy2 + C2
Le SSIM entre deux images est la moyenne des SSIM des blocs
12/121 15.05.14 Institut Mines-Telecom Codage de source et compression
Introduction au codage de source et à la compression
Codage sans pertes
Principes
Quantification
Codage par transformée
Critères de performance
Qualité et distorsion
Critères de performance
Complexité, retard et robustesse
Critères de performance
Bilan
Besoins contradictoire :
⇓ Débit
⇑ Qualité
⇓ Complexité
⇑ Robustesse
⇓ Retard
Plan
Quantification
Introduction
La compression sans perte est basée sur les statistiques des
données
◮ Mots de code courts pour les symboles probables
◮ Mots de code longs pour les symboles peu probables
Définitions :
Alphabet : X = {x1 , x2 , . . . , xM } ensemble des symboles à coder
Choix du code
Code : C : xi ∈ X → ci ∈ {0, 1}∗
Codes à longueur fixe (FLC)
◮ Tout mot de code a la même longueur
◮ Si on a M = 256 symboles, il nous faut ⌈log M⌉ = 8 bits
pour coder chaque symbole
◮ Dans le cas d’un texte, M = 26, il nous faut ⌈log M⌉ = 5
bpS (bit par symbole)
Codes à longueur variable (VLC)
◮ ℓi : longueur du mode de code ci
◮ On peut comprimer sans pertes si :
◮ Condition de décodabilité : condition du préfixe
◮ Les symboles ne sont pas équiprobables
Inégalité de Kraft
Information et entropie
0.9
0.8
0.7
0.6
H(X)
0.5
0.4
0.3
0.2
0.1
0
0 0.2 0.4 0.6 0.8 1
P{X=0}
Institut Mines-Telecom Codage de source et compression
33/121 15.05.14
Introduction au codage de source et à la compression
Codage sans pertes Principes
Quantification Huffman et codage arithmétique
Codage par transformée
M M
!
X X ∂J ∗
J(p) = − pi log pi + λ pi − 1 (p ) = 0
∂pi
i=1 i=1
∂J 1
=− + log pi∗ +λ pi∗ = λ − log e = cnste
∂pi ln 2
Entropie conjointe
Entropie conditionnelle
Propriétés de l’entropie
H(X ) >0
H(X , Y ) =H(Y ) + H(X |Y )
H(X ) + H(Y |X )
H(X , Y ) ≤H(X ) + H(Y ) avec égalité ⇔ indépendence
H(X |Y ) ≤H(X ) avec égalité ⇔ indépendence
H(X ) ≤ log2 M avec égalité ⇔ X ∼ U
Code optimal
◮ On relâche la condition ℓi entier
◮ Minimisation avec contrainte :
X X
ℓ∗ = arg min pi ℓi soumis à 2−ℓi = 1
ℓ
i i
Code optimal
◮ On relâche la condition ℓi entier
◮ Minimisation avec contrainte :
X X
ℓ∗ = arg min pi ℓi soumis à 2−ℓi = 1
ℓ
i i
!
X X ∂J
−ℓi
= pi − (λ ln 2)2−ℓi = 0
∗
J(ℓ) = pi ℓi + λ 2 −1
∂ℓi
i i
X X
−ℓ∗
pi = (λ ln 2) 2 i 1 = λ ln 2
i i
X
L∗ = −pi log2 pi = H(X )
i
L∗ ≥ H(X )
Codage entropique
Théorème de Shannon:
Taux de codage code optimale ≥ Entropie de la source
du coup le nom Codage Entropique.
◮ La relation devient une identité stricte si les probabilités
sont dyadiques (puissances négatives de deux)
◮ La relation est pratiquement une identité quand il y a un
nombre important de symboles dans l’alphabet.
Codage entropique
Codage entropique
◮ Théorème de Shannon :
18
Distribution des
16
lettres dans un
14
texte français
12
% Freq
10
0
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Codage de Huffman
Huffman a découvert comment construire le code optimum
pour n’importe quelle source.
Exemple :
Symbole Probabilité
A 0.4
B 0.2
C 0.15
D 0.15
E 0.05
F 0.05
Codage de Huffman
A A
40% 40%
B B
20% 20%
C C
15% 15%
D D
15% 15% 0
25%
E E
5% 0 5% 0 1
10% 10%
F 1 F 1
5% 5%
45/121 15.05.14 Institut Mines-Telecom Codage de source et compression
Introduction au codage de source et à la compression
Codage sans pertes Principes
Quantification Huffman et codage arithmétique
Codage par transformée
Codage de Huffman
A
40%
0
B
20% 0 100%
35%
C 1 0 1
15%
60%
D
15% 0 1
25%
E
5% 0 1
10%
F 1
5%
46/121 15.05.14 Institut Mines-Telecom Codage de source et compression
Introduction au codage de source et à la compression
Codage sans pertes Principes
Quantification Huffman et codage arithmétique
Codage par transformée
Codage de Huffman
Symbole Probabilité Code
A 0.4 0
B 0.2 100
C 0.15 101
D 0.15 110
E 0.05 1110
F 0.05 1111
18 10
9
16
8
14
7
12
Codeword length
6
% Freq
10
5
8
4
6
3
4
2
2 1
0 0
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Distribution des lettres dans un texte Longueur des mots de code dans le
français code d’Huffman
Codage de Huffman
Codage de Huffman
Codage par blocs
H(X K )
◮ Hypothèse : la suite K est convergente
◮ Cela est vrai p.e. pour un processus stationnaire
◮ Longueur moyenne du code optimum :
Codage de Huffman
Codage de Huffman
Codage arithmétique
◮ Le codage arithmétique permets de faire un codage par
blocs ou par contextes avec complexité linéaire
◮ Idée : ne pas chercher le code pour n’importe chaîne de n
symboles, mais uniquement pour la chaîne à coder
◮ Le codeur arithmétique n’est pas optimal, mais
asymptotiquement optimal
L ≤ H(X K ) + 2
LS = L/K
HK
lim LS = lim = H(X )
K →∞ K →∞ K
A B C D E F
0 0.4 0.6 0.75 0.9 0.95 1
A B C D E F
0 0.4 0.6 0.75 0.9 0.95 1
A B C D E F
0 0.4 0.6 0.75 0.9 0.95 1
A B C D E F
0 0.4 0.6 0.75 0.9 0.95 1
0.297
0.24 0.3
A B C D E F
0 0.4 0.6 0.75 0.9 0.95 1
0.297
0.24 0.3
A B C D E F
0 0.4 0.6 0.75 0.9 0.95 1
0.297
0.24 0.3
Codage arithmétique
X X
Y N B Y N B
N 0.15 0.05 N 0.75 0.25
1 15
B 0.05 0.75 B 16 16
Probabilités conjointes Probabilités condition-
de X et Y nelles de X donné Y
Avantages
Inconvénients
Plan
Quantification
Principes
Quantification scalaire prédictive
Quantification avec contrainte entropique
Définitions
xb7
xb6
xb5
t0 t1 t2 t3 t4
t5 t6 t7 t8
xb4
xb3
xb2
xb1
Exemple 1
x(n)
0.5
−0.5
−1
0 5 10 15 20 25 30
Exemple 1
x(n)
0.5
−0.5
−1
0 5 10 15 20 25 30
Exemple 1
x(n)
y(n)=Q[x(n)]
1
0.5
−0.5
−1
0 5 10 15 20 25 30
Exemple 1
y(n)=Q[x(n)]
e(n)=x(n)−y(n)
1
0.5
−0.5
−1
0 5 10 15 20 25 30
Exemple 2
x(n)
y(n)=Q[x(n)]
1
0.5
−0.5
−1
0 5 10 15 20 25 30
Exemple 2
y(n)=Q[x(n)]
e(n)=x(n)−y(n)
1
0.5
−0.5
−1
0 5 10 15 20 25 30
t0 t i−1 ti tL
xbi
Θi
Quantificateur régulier
t 0 < xb1 < t 1 < xb2 < t 2 < . . . < xbL < t L
Θi C
Débit d’un QS
Distorsion
Courbes RD
◮ Courbe D(R) pour une v.a. uniforme :
D = σX2 2−2R
◮ Courbe D(R) pour une v.a. non uniforme et q.u. en haute
résolution :
D = kX σX2 2−2R
◮ Courbe D(R) pour une v.a. non uniforme et q.n.u. en haute
résolution :
D = cX σX2 2−2R
◮ cX est une constante qui dépend de la distribution de X
(facteur de forme)
◮ cX = 1√ dans le cas uniforme
◮ cX = 23 π dans le cas gaussien
◮ À faible resolution, il existe un algorithme qui produit un
74/121 QNUInstitut
15.05.14 localement
Mines-Telecom Codage de source et compression
Introduction au codage de source et à la compression
Principes
Codage sans pertes
QS prédictive
Quantification
Quantification avec contrainte entropique
Codage par transformée
Débit de codage
Codage prédictive
Principes
Schéma de codage
Schéma simplifié
bfk bfk
Gain de prédiction
Gain de codage :
Exemple
Schéma de codage
replacements
Schéma MICD (DPCM) complet
Encodeur :
fk ek ek
e
Q
ek
e
bfk efk
P
bfk
Décodeur :
ek
e efk
bfk efk
P
88/121 15.05.14 Institut Mines-Telecom Codage de source et compression
Introduction au codage de source et à la compression
Principes
Codage sans pertes
QS prédictive
Quantification
Quantification avec contrainte entropique
Codage par transformée
Schéma de codage
Choix du prédicteur
Généralement on considère des prédicteurs linéaires : simples
et optimaux dans le cas Gaussien
Cas des images :
X
bfn,m = hi,j efn−i,m−j
(i,j)∈S
Représentation équivalente :
bfk = hT f(k ) f(k ) = {efn−i,m−j : (i, j) ∈ S}
h2 h3
89/121 15.05.14 Institut Mines-Telecom h 1 fk Codage de source et compression
Introduction au codage de source et à la compression
Principes
Codage sans pertes
QS prédictive
Quantification
Quantification avec contrainte entropique
Codage par transformée
Schéma de codage
Choix du prédicteur : moindres carrés
Trouver le vecteur (filtre linéaire) h qui minimise :
h i
σe2 = E (fk − hT f(k ) )2
Schéma de codage
Choix du prédicteur : moindres carrés
Trouver le vecteur (filtre linéaire) h qui minimise :
h i
σe2 = E (fk − hT f(k ) )2
100
Prédicteur :
50 1 1
f̂n,m = fn−1,m + fn,m−1
2 2
0
σf2 = 2902.70
−50
σe2 = 84.71
−100
GP = 15.35dB
Conclusions
Quantification et codage
Quantification et codage
Formulation du problème
Quantification et codage
Plan
Quantification
Transformée linéaire
y1 yb1
x y Q1 b
y b
x
T T −1
yM−1 ybM−1
QM−1
Transformations unitaires
T unitaire ⇒ T −1 = T H
avantages :
1. inversion immédiate
2. conservation de la norme : kYk = kXk
⇒ Distorsion sur Y = distorsion sur X :
h i h i h i
b 2 b H b b H H b
E kY − Yk = E (Y − Y) (Y − Y) = E (X − X) T T (X − X)
h i
b 2
= E kX − Xk
Propriété fondamentale pour décider l’allocation des ressource
dans le domaine transformée
99/121 15.05.14 Institut Mines-Telecom Codage de source et compression
Introduction au codage de source et à la compression
Principes
Codage sans pertes
Allocation des ressources
Quantification
Exemples
Codage par transformée
Codage en sous-bandes
y0 yb0
H0 ↓M Q0 ↑M F0
y1 yb1
H1 ↓M Q1 ↑M F1
x b
x
...
... ... ...
yM−1 ybM−1
HM−1 ↓M QM−1 ↑M FM−1
M−1
X
yk (m) = hk (ℓ)x(mM − ℓ) y =T x
ℓ=0
x = Py RP : PT = I
Codage en sous-bandes
Filtres d’analyses et de synthèse
x2 ∆2
(
1
∆1 ∆2
si (x1 , x2 ) ∈ S
fX1 ,X2 (x1 , x2 ) =
∆1 0 si (x1 , x2 ) ∈
/S
x1 ∆1 ≫ ∆2
∆1 ∆1
S X1 ∼ X2 ∼ U[− √ , √ ]
2 2 2 2
(
1
∆1 ∆2
si (y1 , y2 ) ∈ S
y2 fY1 ,Y2 (y1 , y2 ) =
0 si (y1 , y2 ) ∈
/S
∆1 ∆2
∆1 Y1 ∼ U[− , ]
∆2 2 2
y1 ∆2 ∆2
Y2 ∼ U[− , ]
2 2
σ2
σ2
2
σ2
4
Gain de codage
Gain de codage
DPCM σ2 σ2
GT = = 2X = AM
2
DT σGM σGM
Algorithmes pratiques
La formule de Huang-Schulteiss
◮ Peut donner des valeurs négatifs
◮ Peut donner des valeurs fractionnaires
Donc on utilise des algorithmes sous-optimales
◮ Algorithme de Huang-Schulteiss modifié
◮ Algorithme greedy
Algorithme greedy
1. Initialisation
◮ bk = 0 ∀k ∈ {0, 1, . . . M − 1}.
◮ Dk = σk2 ∀k ∈ {0, 1, . . . M − 1}.
P
2. Tant que k bk ≤ B
◮ ℓ = arg maxk Dk
◮ bℓ ← bℓ + 1
◮ Dℓ ← Dℓ /4
JPEG
Comparaison JPEG / JPEG2000
Image Originale, 24 bpp
Débit: 1bpp
Débit: 0.75bpp
Débit: 0.5bpp
Débit: 0.3bpp
Débit: 0.2bpp