Cours sur le JPEG
Motivation, Théorie, Fonctionnement, Dérivés...
Vincent Guigue
26 novembre 2008
JPEG : dénitions (wikipedia)
JPEG est un acronyme de Joint Photographic Experts Group, nom d'un comité créé en 1986 résultant de la fusion de plusieurs groupes (d'où le joint) de professionnels de l'industrie de l'image.
Généralement le terme JPEG fait référence à la norme JPEG, formellement ISO/CEI 10918-1 ou UIT-T Recommandation T.81.
Cette norme décrit une méthode de compression basée sur la DCT.
Elle spécie uniquement la transformation d'une image brute en une suite de bits.
Le JPEG est un format à perte, qui élimine donc des informations, mais un des points forts de JPEG est que son taux de compression est réglable. Un compromis doit cependant être fait entre le taux de compression et la qualité de l'image compressée.
Introduction au JPEG
Schéma général :
Compression
Encodeur JPEG Y
Conservative Cr
Cb Y CrCb
Discrete Quantification
(E1) (E3)
Transform
TABLE Cosinus
(E4) 8
8
(E2) (E5) (E6)
Fonctionnement du JPEG
Introduction au JPEG
Schéma général :
Compression
Encodeur JPEG Y
Conservative Cr
Cb Y CrCb
Discrete Quantification
(E1) (E3)
Transform
TABLE Cosinus
(E4) 8
8
(E2) (E5) (E6)
(E1) : Décomposition de l'image d'entrée en YCrCb.
Introduction au JPEG
Schéma général :
Compression
Encodeur JPEG Y
Conservative Cr
Cb Y CrCb
Discrete Quantification
(E1) (E3)
Transform
TABLE Cosinus
(E4) 8
8
(E2) (E5) (E6)
(E2) : Baisse de résolution sur Cr et Cb (OPTION)
Exercice : calculer le rapport de compression lié à la baisse de résolution (facteur deux sur les lignes et les colonnes).
Introduction au JPEG
Schéma général :
Compression
Encodeur JPEG Y
Conservative Cr
Cb Y Cb
Cr
Discrete Quantification
(E1) (E3)
Transform
TABLE Cosinus
(E4) 8
8
(E2) (E5) (E6)
(E3) : Découpage de l'image en région de 8x8 pixels, la compression s'eectuera dans chaque région indépendamment.
Introduction au JPEG
Schéma général :
Compression
Encodeur JPEG Y
Conservative Cr
Cb Y Cb
Cr
Discrete Quantification
(E1) (E3)
Transform
TABLE Cosinus
(E4) 8
8
(E2) (E5) (E6)
(E4) : Transformée en cosinus dicrète, représentation fréquentielle des informations.
Introduction au JPEG
Schéma général :
Compression
Encodeur JPEG Y
Conservative Cr
Cb Y CrCb
Discrete Quantification
(E1) (E3)
Transform
TABLE Cosinus
(E4) 8
8
(E2) (E5) (E6)
(E5) : Quantication des coecients de la DCT, approximation basée sur des tables. (OPTION)
Introduction au JPEG
Schéma général :
Compression
Encodeur JPEG Y
Conservative Cr
Cb Y CrCb
Discrete Quantification
(E1) (E3)
Transform
TABLE Cosinus
(E4) 8
8
(E2) (E5) (E6)
(E6) : Codage conservateur des coecients (PLUSIEURS POSSIBILITÉS)
Acquisition des signaux
Les appreils de numérisation (APN, scanner...) repose sur des capteurs de luminosité (CMOS ou CCD).
Pour acquerir des images couleurs, on place un ltre (ici de Bayer) devant le capteur :
Code de couleur
A la sortie du système d'acquisition, les données sont codées en RGB (ou RVB).
A l'entrée du système de compression, le code RGB est transformé en un code YCrCB.
Y = 0.299 R +0.587 G +0.114 B Cr = −0.147 R −0.289 G +0.436 B Cb = 0.615 R −0.515 G −0.100 B
Découpage de l'image en région
Problématique : on était pas capable de traiter l'image dans son entier (puissance CPU et mémoire en 1986).
=⇒Découpage de l'image en blocs de 8x8 pixels.
7
0 7
A partir de maintenant, la plupart des calculs feront apparaitre des indices entre 0 et 7.
Prendre une fenêtre de coté N =8 est arbitraire. Généralement, plus la fenêtre est grande, plus la compression est bonne mais plus les calculs sont longs.
Rappel schéma général JPEG
Schéma général :
Compression
Encodeur JPEG Y
Conservative Cr
Cb Y Cb
Cr
Discrete Quantification
(E1) (E3)
Transform
TABLE Cosinus
(E4) 8
8
(E2) (E5) (E6)
DCT : Transformée en Cosinus Discrète 1D
Cette transformée est une variante de la transformée de Fourier (en restant dans le domaine réel).
=⇒Représentation fréquentielle de l'image.
Cas 1D, soit un signal discret S dénit par :
S(x) =sin(x) +cos(x/2) +cos(2x) +0.2 sin(10x) et sa transforméex (DCT à 1 dimension) :ˆ
Sˆk =α
N
X
x=1
S(x)cos
(2x+1)kπ 2N
0 1 2 3 4 5 6 7 8 9 10
−3
−2
−1 0 1 2 3
DCT : Transformée en Cosinus Discrète 1D (2)
Signal d'entrée (95 points) :
0 1 2 3 4 5 6 7 8 9 10
−3
−2
−1 0 1 2 3
Histogramme des coecients de la DCT :
0 10 20 30 40 50 60 70 80 90 100
−4
−2 0 2 4 6 8 10
Signal de sortie après seuillage :
0 1 2 3 4 5 6 7 8 9 10
−2
−1 0 1 2
Tx compression brut : 0.98947
0 1 2 3 4 5 6 7 8 9 10
−4
−2 0 2 4
Tx compression brut : 0.95789
0 1 2 3 4 5 6 7 8 9 10
−4
−2 0 2 4
Tx compression brut : 0.93684
Comment expliquer le très bon taux de compression sur ce signal ?
DCT : Transformée en Cosinus Discrète 2D
Soit une image Im de coté N =8.
DIm(i,j) =
√1
2NCiCj N−1
X
x=0 N−1
X
y=0
Im(x,y)cos
(2x+1)iπ 2N
cos
(2y+1)jπ 2N
Ck = ( 1
√2 si k =0 1 si k >0
)
1. Est-il possible de calculer les coecients de la DCT à partir de cette équation ?
2. La famille de fonction F ={cos(nx)}n dénit-elle une base de l'espace des fonctions de R vers R (produit scalaire usuel, hf,gi=Rπ
−πf(x)g?(x)dx) ?
DCT : Transformée en Cosinus Discrète 2D (2)
Les F ={cos(iπu),cos(jπu)}ij forment une base de l'espace matriciel. Soit E ={e1, . . . ,eN.N} la base canonique de l'image, on a alors Im=P
ijImijeij avec :
e1=
1 0 0 . . .
0 0 . . .
. . .
, eij =
1 en eij(i,j)
0 ailleurs ∈RN×N Il est possible d'eectuer un changement de base en posant : fk =P
ijeij.
On dénit alors une matrice P :
Pi,j =
√1
N si i =0
q2
Ncosh(2j+1)iπ
2N
i si i >0
et : DIm=PImP>
DCT : Transformée en Cosinus Discrète 2D (3)
Application numérique pour T :
.3536 .3536 .3536 .3536 .3536 .3536 .3536 .3536
.4904 .4157 .2778 .0975 −.0975 −.2778 −.4157 −.4904
.4619 .1913 −.1913 −.4619 −.4619 −.1913 .1913 .4619
.4157 −.0975 −.4904 −.2778 .2778 .4904 .0975 −.4157
.3536 −.3536 −.3536 .3536 .3536 −.3536 −.3536 .3536
.2778 −.4904 .0975 .4157 −.4157 −.0975 .4904 −.2778
.1913 −.4619 .4619 −.1913 −.1913 .4619 −.4619 .1913
.0975 −.2778 .4157 −.4904 .4904 −.4157 .2778 −.0975
DCT Inverse
Il est possible de retrouver l'image par Transformée en Cosinus Discrète Inverse :
Im(x,y) =
√1 2N
N−1
X
x=0 N−1
X
y=0
CiCjDIm(i,j)cos
(2x+1)iπ 2N
cos
(2y+1)jπ 2N
Ck = ( 1
√2 si k =0 1 si k >0
)
On obtient cette transformée en appliquant : Im=P>DImP
Exemples de DCT : images de synthèse
Cette image est équivalente à une image en niveaux de gris (il n'y a qu'une composante d'amplitude).
Notons cette image Im. Nous procédons comme suit : 1. DIm=DCT(Im)
2. D˜Im≈DIm (élimination des coecients de faibles amplitudes) 3. Im˜ =IDCT(DIm)
Résultat des DCT seuillées sur des images de synthèse
Tx compr. : 0.99994
50 100 150 200 250 50
100 150 200 250
Tx compr. : 0.99977
50 100 150 200 250 50
100 150 200 250
Tx compr. : 0.99965
50 100 150 200 250 50
100 150 200 250
Tx compr. : 0.99939
50 100 150 200 250 50
100 150 200 250
Tx compr. : 0.99834
50 100 150 200 250 50
100 150 200 250
Tx compr. : 0.99332
50 100 150 200 250 50
100 150 200 250
Exemples de DCT seuillées sur des images réelles
200 400 600 800 1000
100
200
300
400
500
600
700
100 200 300 400
50
100
150
200
250
300 0.99991
100200300400 50 100 150 200 250 300
0.99976
100200300400 50 100 150 200 250 300
0.99962
100200300400 50 100 150 200 250 300
0.99866
100200300400 50 100 150 200 250 300
0.96065
100200300400 50 100 150 200 250 300
0
100200300400 50 100 150 200 250 300
0.99995
100200300400 50 100 150 200 250 300
0.99971
100200300400 50 100 150 200 250 300
0.99953
100200300400 50 100 150 200 250 300
0.99808
100200300400 50 100 150 200 250 300
0.93291
100200300400 50 100 150 200 250 300
0
100200300400 50 100 150 200 250 300
0.99989
100200300400 50 100 150 200 250 300
0.99957
100200300400 50 100 150 200 250 300
0.99893
100200300400 50 100 150 200 250 300
0.9942
100200300400 50 100 150 200 250 300
0.6898
100200300400 50 100 150 200 250 300
0
100200300400 50 100 150 200 250 300
1. Imaginer que l'on travaille dans YCrCb
2. On choisira un taux de compression supérieur pour les couches Cr et Cb
Rappel schéma général JPEG
Schéma général :
Compression
Encodeur JPEG Y
Conservative Cr
Cb Y Cb
Cr
Discrete Quantification
(E1) (E3)
Transform
TABLE Cosinus
(E4) 8
8
(E2) (E5) (E6)
Quantication
1. Jusqu'ici, pas de perte (à condition de conserver la résolution Cr, Cb)
2. Stratégie de compression limitée (≈50%de gain) 3. =⇒ Quantication des coecients de la DCT :
DIm(i,j)7→D˜Im(i,j)
DIm(Qk)(i,j) =round
DIm(i,j) Qk(i,j)
Les Qk sont des tables de quantication prédénies, l'indice k indique la qualité de l'approximation.
Exemple de table de quantifacation
Q90= 2 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4
3 2 2 3 5 8 10 12
2 2 3 4 5 12 12 11
3 3 3 5 8 11 14 11
3 3 4 6 10 17 16 12
4 4 7 11 14 22 21 15
5 7 11 13 16 12 23 18 10 13 16 17 21 24 24 21 14 18 19 20 22 20 20 20
3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5
Q50= 2 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4
16 11 10 16 24 40 51 61 12 12 14 19 26 58 60 55 14 13 16 24 40 57 69 56 14 17 22 29 51 87 80 62 18 22 37 56 68 109 103 77 24 35 55 64 81 104 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99
3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5
Exemple de table de quantifacation (2)
Q10= 2 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4
80 60 50 80 120 200 255 255 55 60 70 95 130 255 255 255 70 65 80 120 200 255 255 255 70 85 110 145 255 255 255 255 90 110 185 255 255 255 255 255 120 175 255 255 255 255 255 255 245 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5
Soit l'image G, de DCT DG (donnée ci-dessous), donner ses coecients quantiés en Q10
2 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4
162.3 40.6 20.0 72.3 30.3 12.5 −19.7 −11.5 30.5 108.4 10.5 32.3 27.7 −15.5 18.4 −2.0
−94.1 −60.1 12.3 −43.4 −31.3 6.1 −3.3 7.1
−38.6 −83.4 −5.4 −22.2 −13.5 15.5 −1.3 3.5
−31.3 17.9 −5.5 −12.4 14.3 −6.0 11.5 −6.0
−0.9 −11.8 12.8 0.2 28.1 12.6 8.4 2.9 4.6 −2.4 12.2 6.6 −18.7 −12.8 7.7 12.0
−10.0 11.2 7.8 −16.3 21.5 0.0 5.9 10.7
3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5
Déquantication
D˜Im(i,j) =Qk(i,j)×DIm(Qk)(i,j)
1. Quantier l'approximation qui est faite sur les coecients de D˜Im
2. Que remarque-t-on dans les matrices de quantication ? 3. Quelles sont les fréquences qui sont les plus touchées par la
quantication ?
4. Quel est l'avantage d'avoir normalisé les tables de quantication ?
Artefacts de quantication
Élimination des hautes fréquences
Artefacts dans les aplats
Rappel schéma général JPEG
Schéma général :
Compression
Encodeur JPEG Y
Conservative Cr
Cb Y Cb
Cr
Discrete Quantification
(E1) (E3)
Transform
TABLE Cosinus
(E4) 8
8
(E2) (E5) (E6)
Codages conservateurs appliqués en n de traitement
Une fois le codage fréquentiel approximé, plusieurs codes sont appliqués sur le résultat.
1. Codage diérentiel de la première ligne et de la première colonne
2. Codage RLE Run Length Encoding sur les coecients de la DCT
3. Codage de Human ou codage arithmétique des valeurs des coecients
Codages conservateurs appliqués en n de traitement (2)
Le codage diérentiel permet de compresser le ot de données. Au lieu de coder la valeur complète de l'échantillon, on ne transmet que la diérence avec l'échantillon précédent.
... Bloc Bloc Bloci+1 ...
i i−1 Idées :
1. Favoriser l'apparition de coecients proches les uns des autres 2. Réduire le codage de la diérence par rapport à l'original
Codages conservateurs appliqués en n de traitement (3)
Le code RLE Run Length Encoding est un code de comptage : Ex : 1111111111000001111111=⇒ 10|1,5|0,7|1
Pour les coecients de la DCT, nous suivons le chemin suivant :
Pourquoi ?
Exemple (typique) de DCT quantiée :
2 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4
160 44 20 80 24 0 0 0
36 108 14 38 26 0 0 0
−98 −65 16 −48 −40 0 0 0
−42 −85 0 −29 0 0 0 0
−36 22 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5
Codages conservateurs appliqués en n de traitement (4)
Les diérentes valeurs des coecients sont également codées selon 2 méthodes au choix :
1. Codage de Human
Quel est l'arbre correspondant à la phrase : coupe de l'uefa de football : zero pointe pour les clubs francais
2. Codage arithmétique
Une suite d'opération permet d'extraire une suite de nombre d'un seul réel (cf cours de compression)
Bilan compression/décompression
Balises à l'intérieur du chier
Balises Générales
Description Symbol Marker(HEX)
Baseline DCT, Human SOF0 FFC0
Extended sequential DCT, Human SOF1 FFC1
Progressive DCT, Human SOF2 FFC2
Spatial (sequential) lossless, Human SOF3 FFC3 Dierential Sequential DCT, Human SOF5 FFC5 Dierential progressive DCT, Human SOF6 FFC6 Dierential spatial, Human SOF7 FFC7 Reserved for JPEG extensions, Arithmetic JPG FFC8 Extended sequential DCT, Arithmetic SOF9 FFC9 Progressive DCT, Arithmetic SOF10 FFCA Spatial (sequential) lossless, Arithmetic SOF11 FFCB Dierential sequential DCT, Arithmetic SOF13 FFCD
...
Balises à l'intérieur du chier
Dénition de champs :
Description Symbol Marker(HEX)
Start of Image SOI FFD8
End of Image EOI FFD9
Start of Scan SOS FFDA
Dene Quantization Table DQT FFDB Dene number of Lines DNL FFDC
Ordre de stockage des données
Suivant la manière de stocker les données, plusieurs décodages (on-line) sont possibles :
Points forts et faiblesses
+ Taux de compression > 90%
+ Demande entre 0.25 bit/pixel et 2 bits/pixel + Qualité paramétrable
+ Options d'achage progressif
− Pas adapté à tous les chiers, car non conservateur
− Demande autant de calcul pour la compression que pour la décompression
− Norme ne précisant pas les codes de couleurs (pb d'interopérabilité)
Vers les vidéos et le MPEG...
1. Compression intra-image 2. Compression inter-image
3 types de frames : I (intra), P (prédiction), B (bidirectionnelle)
I B B P B B I
MPEG
1. La norme MPEG-1 représente chaque image comme un ensemble de blocs 16 x 16. Elle permet d'obtenir une résolution de :
- 352x240 pixels à 30 images par seconde en NTSC - 352x288 pixels à 25 images par seconde en PAL/SECAM Le MPEG-1 permet d'obtenir des débits de l'ordre de 1,2 Mbit/s (exploitable sur un lecteur de CD-ROM).
2. MPEG2 : synchronisation et réseau 3. MPEG4 ...
4. MPEG7 : indexation des vidéos