Approximation et compression - Thomas Oberlin

Pourquoi comprimer ?
Traitement d’images
Indispensable pour le stockage et la transmission dans de nombreuses situations !
Partie 5: Approximation et compression des images
Exemples de signaux numériques et leur taille :
Thomas Oberlin
Signaux et Communications, IRIT/ENSEEIHT
thomas.oberlin@enseeiht.fr
I
Photographie : 10 Megapixel sur 8 bits couleur = 30 Mo
I
Image hyperspectrale, 256x660, 242 bandes spectrales, 12 bits = 61 Mo
I
Vidéo : 2 heures de film, 800x600, 25 images/sec = 260 Go
I
Audio : 10 min de musique en stéréo à 44.1 kHz sur 16 bits : 105 Mo
−→ problématique commune à tous les signaux numériques
http://oberlin.perso.enseeiht.fr/teaching.html
1 / 34
Comment comprimer ?
I
I
2 / 34
Critères de performance
Redondance statistique (pour toute classe de signaux) : répétitions, motifs
récurrents, etc
Autres redondances : zones homogènes, zones régulières (basse fréquence), à
faible dynamique, etc
I
Taux de compression
T=
I
Débit de codage
R=
I
Spécificités de l’image
Prendre en compte le système visuel humain, comme la moindre sensibilité aux
hautes fréquences des composantes de chrominance.
volume final
bpp
nombre de pixels
Erreur quadratique moyenne
MSE =
I
volume final
volume initial
1 X
(fn,m − ˜fn,m )2
NM n,m
Rapport signal sur bruit crête :
Avec ou sans perte ?
I
Sans : faible compression, souvent pas suffisant
I
Avec : compromis entre qualité et compression
PSNR = 10 log10
I
3 / 34
2552
MSE
Mesures de qualité perceptuelles : SSIM, analyse expérimentale, etc
4 / 34
Critères de performance (suite)
Codeur
Décodeur
Image f −−−−−→ Image xomprimée ˜f −−−−−−→ Image f
Outils pour la compression
Compression sans pertes
I
Codage des répétitions
I
Codage entropique
Algos à dictionnaire adaptable (type LZW)
I
I
Complexité algorithmique codeur/décodeur : coût algorithmique (nombre
d’opérations, mémoire), parallélisation et allocation de ressources
I
Retard
I
Robustesse : sensibilité à de petites erreurs (possibles durant la transmission)
−→ théorie de l’information et codage
Compression par transformée (avec pertes)
1. Changer l’espace de représentation : Fourier, DCT, ondelettes
2. Quantification
3. Codage (entropique)
En pratique
Trouver un compromis entre la performance de la compression (taux et qualité) et
les contraintes logicielles (ex : temps-réel) et matérielles.
Souvent : réduction des couleurs, sous-échantillonnage de la chrominance
Autre méthode de compression destructrice : codage par prédiction
5 / 34
Plan de la séance
1
2
3
4
10 / 34
Transformée, bases de représentation
Introduction
Transformées pour la compression
Transformée en cosinus discrète
TCD par blocs
Transformations multi-échelles
Approximation
Bases de Hilbert
Notion d’approximation
I
Transformation linéaire T : f 7→ g = T (f )
I
Cas particulier : changement de base orthonormée, T unitaire
I
“Bonne” base de représentation pour une image : peu de coefficients
importants, on peut négliger les autres
I
Un autre objectif : décorréler les données
Exemples
Un exemple de compression : le format JPEG
11 / 34
I
Base (discrète) de Fourier (TFD)
I
Transformée en cosinus discrète (TCD)
I
Transformée de Hadamard, base de Haar, bases d’ondelettes...
12 / 34
Transformée en cosinus discrète (DCT)
TCD - fonctions de base (N = M = 8)
Soit une image réelle f : [[0, M − 1]] × [[0, N − 1]] → R, sa DCT
˜f : [[0, M − 1]] × [[0, N − 1]] → R est définie par :
M−1 N −1
π(2n + 1)v
αv X X
π(2m + 1)u
˜f [u, v] = √αu √
cos
,
f [m, n] cos
2M
2N
M N m=0 n=0
avec αu = 1 si u = 0,
√
2 sinon.
Exercice : quel est le lien entre la TCD et la TFD ?
I
On pourra commencer par le cas 1D
I
Indice : symétriser le signal
13 / 34
14 / 34
TCD – Illustration
Inversion de la TCD
La TCD inverse reconstruit l’image f part :
f [n, m] = √
M−1
−1
X NX
1
π(2n + 1)v
π(2m + 1)u
αu αv ˜f [u, v] cos
cos
,
2M
2N
MN u=0 v=0
Propriétés
Similaires à la TFD :
Image originale
Image symétrisée
TCD (valeur absolue, log)
I
transformation séparable
I
calcul rapide en O(NM log(NM ))
I
interprétation fréquentielle
En plus : transformation réelle, meilleure concentration de l’énergie
15 / 34
16 / 34
Transformée en cosinus locaux
Base de Haar (1d)
Problème de la non-stationnarité
On a déjà vu que les images sont fortement non-stationnaires : les propriétés
statistiques ne peuvent pas être supposées constantes en espace.
−→ besoin de représentations/transformations locales
On considère un signal s ∈ R2 . On pose m0 = s, et on définit ∀j = 0 · · · N − 1,
∀t ∈ 0 · · · 2N −J − 1 :


 dj+1 [t] = 1 (mj [2t + 1] − mj [2t]) (détails à l’échelle j)
2
N

 mj+1 [t]
DCT par blocs
I
Découpage de l’image en blocs (souvent : 8x8)
I
DCT 2D sur chaque bloc
= 12 (mj [2t + 1] + mj [2t]) (approximation à l’échelle j)
(d1 , · · · , dJ , mJ ) est une décomposition complète (inversible) et multi-échelle de s.
niveau 0
[3
8
1
niveau 1
1
2 [5
−1
−5
− 1]
1
2 [11
niveau 2
1
2 [5
−1
−5
− 1]
1
4 [−10
−5
1
− 1]
[−10
} |4
{z
niveau 3
1
[5
|2
−1
0
{z
d1
7
2
Base de Haar (2D)
Plan de la séance
On généralise en 2D :
f −→
moyenne m1
détails horiz. md1
détails vert. dm1
détails diag. dd1
Wavelet coefficients
Wavelet coefficients
19 / 34
1
1
Introduction
2
Transformées pour la compression
3
Approximation
Bases de Hilbert
Notion d’approximation
4
Un exemple de compression : le format JPEG
22 / 34
11]
9
14]
d2
18 / 34
17 / 34
12
14]
}
23]
1
4 [12
32]
1
1
[20]
[44]
|8 {z } |8 {z }
d3
m3
Représenter – pour quoi faire ?
Changer de représentation pour “structurer” l’information
I
discriminer le signal et le bruit
I
concenter l’information dans peu de coefficients
−→ approximation
Approximation linéaire dans une base
Approximation linéaire :
Consiste à approcher un signal/une image en utilisant seulement certains
coefficients prédéfinis :
M−1
X
fM =
hf , gm i gm .
m=0
Cadre général de l’approximation
Exemple pour la TCD :
Étant donné un signal/une image f d’un espace de Hilbert H , et B = (gm )m∈N
une base hilbertienne de H . Tout f ∈ H se représente dans la base B :
∞
X
f =
1
fR [n, m] = √
MN
X
u+v<R
π(2m + 1)u
2M
cos
π(2n + 1)v
2N
,
Exercice :
Question : que se passe-t-il quand on tronque cette somme ?
I
Représentez le support des coefficients sélectionnés dans cette reconstruction
I
Quel est le principal inconvénient de cette reconstruction ?
Exemples : base de Fourier continue (H = L2 (0, 1)), discrète (H = RN ), DCT...
24 / 34
23 / 34
Approximation non linéaire
Quantifier l’erreur d’approximation
Consiste à approximer un signal/une image en utilisant seulement les plus grands
coefficients. Non linéaire, car le choix des coefficients dépend de l’image.
En pratique :
I On sélectionne les R plus grands (en valeur absolue) :
X
fM =
hf , gm i gm .
m∈IM
ou bien on sélectionne ceux qui sont au-dessus d’un certain seuil γ :


 hf , gm i si | hf , gm i | > γ
Sγ (fm ) =

 0
sinon
Erreur d’approximation :
I
∞
X
Sγ (fm )gm
linéaire :
2
E(M ) = kf − fM k =
| hf , gm i |2
non-linéaire :
X
2
E(M ) = kf − fM k
| hf , gm i |2
m6∈IM
But : décroissance rapide de l’erreur d’approximation. Comment faire ?
I
résultats théoriques/analyse fonctionnelle. But : décroissance rapide des
coefficients hf , gm i. Exemple : décroissance des coefficients de Fourier pour
des fonctions “régulières”
I
approche expérimentale −→ à voir en TP
m=0
25 / 34
∞
X
m=M
I
L’approximation de f au seuil γ s’écrit :
fγ =
hf , gm i gm .
m=0
I
αu αv ˜f [u, v] cos
26 / 34
Illustration de différentes approximations
Image originale
Image originale
Approx. linéaire, taux = 8
Approx. linéaire, taux = 32
Approx. non linéaire, taux = 8
Plan de la séance
1
Introduction
2
Transformées pour la compression
3
Approximation
4
Un exemple de compression : le format JPEG
Approx. non linéaire, taux = 32
28 / 34
27 / 34
Principe général
Pré-traitements et transformation
1. Décomposition luminance-chrominances YCbCr
2. Sous-échantillonnage des composantes de chrominance (souvent, facteur 2)
3. Découpage en blocs 8x8 pour chaque composante
4. DCT sur chaque bloc, exemple :
−→
"Compression JPEG" par Stéphane Brunner via Wikimedia Commons
29 / 34
30 / 34
Codage
Quantification
Étape cruciale de la compression. But : compresser tout en ne perdant pas trop
d’information. Quantification uniforme, adaptative ?
JPEG : quantification non uniforme
On utilise une matrice de quantification Q, et la quantification suivante :
F [u, v]
∗
F [u, v] =
Q[u, v]
Parcours du bloc F ∗ en Z :
Dans notre exemple : 79, 0, -2, -1, -1, -1, 0, 0, -1, EOB.
Codage (sans pertes) :
−→
I
RLE (Run-length encoding) sur 0, pour coder les répétitions de 0
I
Codage entropique : Huffman ou arithmétique
31 / 34
Conclusion
32 / 34
Quelques exercices
1. Pourquoi n’utilise-t-on pas la quantification uniforme dans le format JPEG ?
Et pourquoi pas une quantification optimale ?
I
Besoin de compresser à taux élevés pour la transmission et le stockage
I
Compression par transformation : trouver une représentation où les
coefficients décroissent rapidement
I
JPEG : basé sur la décroissance de la DCT (en 1D, MP3)
I
Plus l’image est régulière, plus la décroissance est rapide
I
L’étape de compression proprement dite : la quantification, mise à 0 de
coefficients
I
Utilisation de propriétés perceptuelles : moindre sensibilité aux hautes
fréquences
2. Un des avantages de la TCD par rapport à la TFD est la suppression des
hautes fréquences artificielles dûes aux bords de l’image. Expliquer pourquoi.
Quel est l’intérêt lorsqu’on fait du sur-échantillonnage par zéro-padding, par
exemple ?
3. On explicite ici le lien entre la décroissance des coefficients et celle de l’erreur
d’approximation linéaire.
Soit s > 1/2. Montrer que si les coefficients de f vérifient
∞
X
m 2s | hf , gm i |2 < +∞,
m=0
alors E(M ) = o(M −2s ).
33 / 34
34 / 34