TI Traitement d'images Semaine : Compression d'images Olivier Losson Master Informatique : http://www.fil.univ-lille.fr Spécialité IVI : http://master-ivi.univ-lille.fr
Plan du cours Généralités sur la compression de données Mesurer la compression Types de compression et formats d'images (codage) Codage RLE Codage de Huffman 3 s Transformée en cosinus discrète (DCT) Compression JPEG Sélection de références
Généralités sur la compression de données Objectif Réduire le volume de données nécessaire au codage d'un signal numérique Pour faciliter son stockage ou sa transmission par réseau Principe Détection de redondances dans le signal Un algorithme de compression permet le codage réduit du signal Un algorithme (inverse) de décompression permet d'exploiter le signal Types de compressions (ou non-destructive, i.e. codage ou compactage): Le signal obtenu après décompression est strictement identique à l'original Utilisation : fichier exécutable, fichier texte (ou destructive, ou avec dégradation) : Le signal obtenu après décompression diffère (légèrement) de l'original Utilisation : image, son, vidéo Que perdre? 3
Mesurer la compression Notations I compression I image originale décompression I image compressée image décompressée Mesures de performance Taux de compression volume( I) Mo τ :=, souvent noté en ratio. Ex.: τ= =, noté :5 (" pour 5") volume(i) Mo volume(i ) Confusion commune avec le quotient (ou ratio ) de compression q := =τ volume( I ) Mesure objective de distorsion (cas avec perte) Erreur quadratique moyenne (ang. «Mean Square Error») Rapport signal sur bruit pic-à-pic (ang. «Peak Signal-Noise Ratio») d = valeur max. possible (ex. 55) MSE = 3 MN M N (I k=r,g, B m= n= PSNR= log k m,n k I m, n ) d MSE 4
Types de compressions (/) Avec ou sans perte Compressions sans perte (codages) Exemples delta codes à longueur variable : VLC préfixé, Shannon-Fano, Huffman codage arithmétique à base de dictionnaire : Lempel-Ziv (LZ77, LZW) par décorrélation : Run-Length Encoding (RLE), codage prédictif sans perte Compressions avec perte Remarques par moyennage de blocs par transformation linéaire optimale ou de Karhunen-Loeve (KLT) par transformée en cosinus discrète : JPEG par transformée en ondelettes : JPEG par quantification : quantification scalaire ou vectorielle par détection de motifs images redondants (fractale) Taux de compression limité Bon taux de compression Aucune perte d'information Perte d'information 5
Types de compressions (/) Compression des principaux formats d'images bitmaps C. Format Espaces couleur Compression(s) TIFF (.tif) RGB, CIE L*a*b*, CMYB, couleurs indexées, ndg Aucune Sans perte (LZW, Huffman) Avec perte (JPEG) Oui PAO, Infographie, bureautique Très flexible, mais nombreuses variantes pas toujours supportées RGB, couleurs indexées, ndg Aucune Sans perte (RLE) Non Bureautique sous Windows Compression peu efficace GIF (.gif) couleurs indexées ( à 56) Sans perte (LZW) Oui Pages web Animations possibles JFIF (.jpg) RGB, CMYB, ndg Avec perte (JPEG) Non Pages web, photographie Compr. efficace mais destructive PNG (.png) RGB, ndg, 56 couleurs indexées Sans perte (deflate=lz77+huffman) Oui Pages web, photo. sans perte Format libre. Jusqu'à 48 bits. BMP (.bmp) Domaines d'utilisation, rem. TIFF = Tag(ged) Image File Format ; GIF=Graphics Interchange Format ; JFIF = JPEG File Interchange Format ; PNG = Portable Network Graphics. CMYB (fr. CMJN) = Cyan, Magenta, Jaune, Noir ; ndg=niveaux de gris. Canal : permet la transparence. 6
Codage RLE (/3) Principe Codage par plage (ang. «Running Length Encoding») Recherche de séquences de données redondantes (ex. niveaux identiques). Codage de la valeur et du nombre de répétitions : 67 98 98 98 3 37 37 37 37 37 37 3 37 6 3 67 98 3 Avantage Algorithmes de compression et décompression très simples et rapides. Limites Efficace seulement pour de nombreuses et longues plages constantes. Cas des images de synthèse simples ; peu adapté aux photos. Utilisé ponctuellement dans de nombreux formats (BMP, JPG, TIFF, PCX,...). Nécessite de fixer un maximum pour la longueur des plages (ex. 55). 7
Codage RLE (/3) Amélioration : décomposition en plans de bits Les plages apparemment uniformes présentent en fait de faibles variations 99 99 Plan 7 plage <,8> Plan 6 plage <, 8> Plan 5 plage <,8> Plan 4 plage <,8> Plan 3 plage <,8> Plan 4 plages <,><,><,5><,> Plan 4 plages <,><,><,5><,> Plan 8 plages unitaires Forte cohérence entre pixels voisins au niveau des plans de bits. 8
Codage RLE (3/3) Amélioration : décomposition en plans de bits (suite) Décomposition en 8 plans de bits plages constantes plus longues codage RLE sélectif Efficace sur plans de poids fort Inutile sur plans et Contenu informatif des différents plans plans de poids faibles (..) : surtout du bruit plans médians (3..5) : (très approximativement) information de contours, textures plans de poids forts (6..7) : information de contraste +...+7 7 6 5 4 3 7 6+7 5+6+7 4+...+7 3+...+7 +...+7 +...+7 +...+7 9
Codage de Huffman (/3) Principe Coder les valeurs avec un nombre de bits différent. Code (utilisant des mots) à longueur variable (ang. «Variable Length Coding»), dit aussi codage entropique (ang. «Entropy coding»). Plus une valeur apparaît fréquemment, plus le nombre de bits utilisés pour la coder est petit (i.e. plus son code est court). Algorithme de Huffman : codage Phase : Construction de l'arbre.. Trier les différentes valeurs par ordre décroissant de fréquence d'apparition table de poids.. Fusionner les deux poids minimaux dans un arbre binaire et affecter leur somme à la racine. 3. Réordonner la table de poids par poids décroissants. 4. Recommencer en. jusqu'à obtenir un seul arbre. Phase : Construction du code à partir de l'arbre obtenu dans la phase. À partir de la racine, attribuer des aux sous-arbres de gauche et des à droite.
Codage de Huffman (/3) Exemple de codage Construction de l'arbre. Table des poids 5 5 5 5 9 5 9 8 5 9 8 9 5 9 57 94 3 8 9 57 94 9 57. Fusion des poids minimaux 3. Réordonnancement 4. Itérations 9 9 / \ 3 8 5 / \ 3 8 5 / \ / \ 5 94 6 9 / \ / \ 3 8 9 57 / \ 5 94 / \ 3 8 57 6 / \ 9 57 / \ 5 94 / \ 3 8 5 94 9
Codage de Huffman (3/3) 5 / \ 6 9 / \ 9 57 / \ 5 94 / \ 3 8 Exemple de codage (suite) Construction du code Affectation de valeurs binaires aux arcs Image codée (en lignes)... soit 55 bits vs. 5x8= bits Décodage Valeur code Code 5 9 8 Propriété du préfixe unique : aucun code n'est le préfixe d'un autre décodage non ambigu Entrée Action Buffer Émission Le décodeur Identification de vide doit connaître la table de codage (entête) ; extrait les valeurs au plus tôt : Bufferise et attend rien Identification de 5 vide 5 Bufferise et attend rien Identification de 5 vide 5............
Transformée en cosinus discrète (/6) Transformée de Fourier discrète D (ang. DFT) (rappel) Notations Domaine spatial (pixels) M Domaine fréquentiel (cycles/pixel) N m DFT Image f(m,n) Transformée F(u,v) IDFT MxN MxN N n DFT et DFT inversem N F u, v := MN = MN f m, n := MN j mu n v M N f m, n e f m, n cos m= n= M N m= n= M N [ F u, v e v u M M Image du spectre log F u, v N ] mu n v mu n v j sin M N M N,N CM m, n u, v j mu n v M N SmM,,nN u, v u= v= 3
Transformée en cosinus discrète (/6) à la transformée en cosinus discrète (ang. DCT) Inconvénients de la DFT : sur un signal f réel, produit un signal F de spectre symétrique ; seule la moitié des coefficients spectraux a donc besoin d'être calculée ; produit un signal F complexe, sans que sa partie réelle ou imaginaire seule permette de représenter (donc de reconstruire) le signal f. La DCT est une transformation spectrale (parmi d'autres) qui possède les mêmes propriétés que la DFT ; s'applique uniquement sur les signaux réels ; est définie par des fonctions de base en cosinus seulement ; est utilisée en compression d'images (JPEG, MPEG). M m M u Représentation DCT Image f(m,n) MxN N n IDCT Transformée F(u,v) MxN N v Spectre log F u, v 4
Transformée en cosinus discrète (3/6) DCT et DCT inverse En D M m u F u := c u f m cos M M m= Coef. de normalisation : c := / si =, si. pour {u, v } DmM u =D um m f m := M M { m u c u F u cos u= En D M N F u,v := c u c v M N m= n= M M DM m u = Du m f m, n := M N M N u= v= m u n v cos M N f m,n cos D Nn v = D Nv n m u n v cos c u c v F u,v cos M N 5
Transformée en cosinus discrète (4/6) DCT et DCT inverse (suite) Lien avec la DFT Par rapport à la DFT, la résolution fréquentielle du spectre est doublée dans la DCT : cf. fonctions de base mu DFT (cos seul) C um m :=cos M DCT M D u m :=cos m u m,5 u =cos M M Séparabilité Comme la DFT D, la DCT D peut être séparée en deux transformées D DFT F (u, v):= N DCT [ ] DFT D de f ( :, n ) M f (m, n )(C ( m) j S (m)) (C N n= N F (u, v):= c(v) N n= M M u M u m= [ DCT D de f ( :, n ) ] c(u) f ( m, n ) D (m) D M M M u m= N v N v N (n ) j S v (n )) (n) 6
Transformée en cosinus discrète (5/6) Fonctions de base En D pour M=8 D8u m :=cos m u 6 Représentation en niveaux de gris 7
Transformée en cosinus discrète (6/6) Fonctions de base ( Composante continue 3 u 4 5 ) ( ( m+ )u ( n+ ) v cos π 6 6 6 7 8 8 (m, n)= D (m) D (n) :=cos π En D pour M=N=8 D 8,8 u,v u v Hautes fréquences verticales 3 v 4 5 Hautes fréquences horizontales 6 7 Hautes fréquences 8 )
Compression JPEG (/7) Généralités JPEG (Joint Photographic Expert Group) : standard depuis 99. Images en ndg et couleur jusqu'à 4 bits, de qualité photographique. Nombreux domaines d'applications : photo/vidéo en MM, astronomie,... Méthode basée sur une transformation (DCT D). Ratio de compression nettement plus élevé que sans perte (:5 acceptable). Distorsion Perte irréversible artefacts de compression Minimiser la distorsion perceptible Choix de perte basés sur des expériences psychovisuelles Dégradation uniforme de l'image Pas de limite à la compression (choix utilisateur fonction de l'application) Sources de perte lors de la compression JPEG Quantification des coefficients de la DCT (+ éventuellement des couleurs) Arrondis de nombres réels en entiers 9
Compression JPEG (/7) Principe fondamental Application de la DCT sur des blocs de 8x8 pixels (M=N=8). Quantification : les coefficients les moins significatifs (de hautes fréquences) sont représentés avec moins de précision, voire éliminés. Schéma-bloc général de compression () : Changement d'espace couleur et sous-échantillonnage de la chrominance (facultatif) : Découpage de chaque plan Y,Cb,Cr en blocs de 8x8 pixels 3 : DCT sur chaque bloc 4 : Quantification de chaque bloc suivant table 5a : Codage différentiel des coefficients DC 5b : Codage RLE des coef. AC en parcours zigzag 6 : Codage entropique (de Huffman ou arithmétique) des séquences DC et AC Signal compressé
Compression JPEG (3/7) Transformation (facultative) RGB YCbCr Avantage : L'œil humain est moins sensible aux détails de l'information de couleur (chrominance) que de ceux de l'intensité (luminance). Possibilité de compresser davantage la chrominance sans perte visible de qualité (JPEG) ; réserver une bande passante plus étroite (/4) à la chrominance (signal TV). Principe : Séparation des informations de luminance (Y) et de chrominance (Cb et Cr). Codage des différences de composantes : Cb B-Y et Cr R-Y. { Y Cb Cr Y Cb Cr = w R R w B w R G w B B,5 = B Y w B,5 = R Y w R ITU : w R =,99 wg =,587 w B =,4
Compression JPEG (4/7) 8 DCT sur blocs 8x8 Découpage en P blocs 8x8 Exemple : [ 8 74 73 75 7 69 69 7 7 69 6 6 6 64 67 73 7 67 65 63 63 64 6 63 7 63 7 86 83 86 55 45 69 63 65 8 9 8 79 4 7 63 59 7 76 89 63 5 75 7 7 67 67 66 64 73 8 67 69 69 69 7 77 84 84 ] DCT Après centrage des valeurs autour de par soustraction de profbits- (ex. 8-=8). u m [ 54 55 53 57 59 59 57 58 59 66 68 68 64 6 55 58 6 63 65 65 64 66 65 58 65 58 4 45 4 73 83 59 65 63 9 49 88 57 65 69 57 5 39 65 76 53 f m, n 56 58 6 6 6 64 55 47 6 59 59 59 57 5 44 44 ] [ DCT n arrondi à l'entier 457 4 6 4 4 9 5 7 5 7 5 8 4 9 7 7 8 9 3 49 4 3 3 6 7 6 4 4 9 7 6 3 7 7 6 4 5 4 4 F u, v ] v DC ( valeur) {Coefficient Coefficients AC (63 valeurs)
Compression JPEG (5/7) Quantification (ang. «quantization») Principe Réduire la quantité d'information de hautes fréquences. Car l'œil humain est plus sensible aux basses fréquences. Principale opération destructive dans JPEG. Implémentation Division de chaque coefficient fréquentiel issu de la DCT, puis arrondi à l'entier. Les diviseurs sont donnés dans une matrice de quantification Q. Le standard JPEG fournit une matrice pour la luminance et pour la chrominance. Exemple : ] [ [ 6 5 8 64 49 4 7 5 7 6 457 4 9 8 6 58 9 36 55 4 3 6 4 4 57 69 56 4 7 49 4 3 3 4 7 9 5 87 6 5 6 7 8 6 8 4 37 56 68 9 3 77 7 6 4 4 4 35 55 64 8 4 3 9 4 5 9 7 6 3 49 964 78 87 3 7 7 6 4 7 9 95 98 3 99 5 4 4 F quantification arrondi à l'entier 9 3 * Q F (u, v )=round ( ] F (u, v) Q (u, v) La plupart des coef. de hautes fréquences sont annulés ) 3
Compression JPEG (6/7) Codage entropique Formation des séquences intermédiaires (cas baseline) Le premier coef. (DC) de chaque bloc i, qui concentre la majeure partie de l'énergie, varie peu d'un bloc à l'autre. La séquence (DC i)6i<p est codée par codage différentiel : DC DC-DC DC-DC... DCP--DCP- Les autres coef. (AC) de chaque bloc i sont lus en zigzag, formant une séquence globalement décroissante, dont une plage finale de coef. nuls : [ 9 3 * F (u, v ) ] zigzag sur AC 3 La séquence (ACki)6k<63, 6i<P est ensuite codée bloc par bloc par codage RLE. Codage entropique (de Huffman ou arithmétique) de ces séquences. 4
Compression JPEG (7/7) Influence des coefficients DCT Prise en compte d'un nombre croissant de coefficients (parcours zigzag) Original coef. coef. 4 coef. 8 coef. 6 coef. 3 coef. 64 coef. { Facteur de qualité q sur matrice Q : Q ' =α Q, α= 5/ q si q 5 q / si 5 q 99 q = q=7 q=5 q= 5
Références Sélection de références Livres Éric Incerti, Compression d'image Algorithmes et standards, Vuibert 3 Gilles Burel, au traitement d'images Simulation sous Matlab, Hermès (chapitre 8) Sites web Cours de P. Nerzic (U. Rennes) http://frama.link/kvzfgky Page wikipedia sur JPEG (en anglais, plus complète que celle en français) http://en.wikipedia.org/wiki/jpeg Basics of DCT and Entropy Coding, par Nimrod Peleg www.lokminglui.com/j4dct-huff9.pdf Applet de démo, par C. G. Jennings http://cgjennings.ca/toybox/hjpeg/index.html Cours de D. Marshall (U. Cardiff) http://www.cs.cf.ac.uk/dave/multimedia/pdf/ (cf. chapitres 9 et ) 6