Chapitre 5 LA COMPRESSION DES IMAGES NUMÉRIQUES 91 PROBLÈMES TRANSMISSION / STOCKAGE Problèmes : Non compressée (c’est-à-dire sous forme d’un fichier BMP par exemple), une image couleur (en RVB) haute résolution, en 1600 x 1200, occupe 5.5 Mo. Ceci ne permet pas : une transmission efficace de l’image : sur un réseau à 100 Mbits/s, la transmission prendrait 0.33 s. une sauvegarde efficace de l’image : sur une carte mémoire de 1 Go, on ne pourrait sauvegarder que 186 images. 92 INTÉRÊTS DE LA COMPRESSION Intérêt : Gagner de la place Diminuer le temps de transmission Deux types de compression : 1. Sans perte d'information : le signal décompressé est identique au signal non compressé : RLE, Huffman, LZW, Arithmétique… 2. Avec perte d'information : on sacrifie des informations pour compresser plus efficacement : DCT, ondelettes, prédictif 93 COMPRESSION SANS PERTE : RLE compression Définition (Run-Length Encoding) sans perte RLE LZW Huffman arithmétique Exemple sur une image niveaux de gris Problème avec pertes DCT ondelettes prédictif comparaisons Algorithme de compression qui consiste à indiquer pour chaque suite de données d'une même valeur, le nombre de d’occurrences correspondantes. Inefficace sur des images très texturées 94 COMPRESSION SANS PERTE : RLE compression sans perte Exemples de formats d’image BMP RLE Fichier LZW Huffman arithmétique avec pertes DCT ondelettes prédictif comparaisons en 3 zones : en-tête, palette (optionnelle), image Codage des pixels en 1, 4, 8, 16 ou 24 bits Compression RLE : pour les images 8 et 4 bits Remarques : quasiment inexistant sur le Web excellente qualité (aucune dégradation d’image) 95 très lourd : Windows et OS/2 COMPRESSION SANS PERTE : RLE compression sans perte Exemples de formats d’image PCX : société ZSoft Corporation RLE Fichier LZW Huffman arithmétique avec pertes DCT ondelettes prédictif en 4 zones : en-tête, image, information, palette (optionnelle) Nombre de couleurs : 2 couleurs (1 bit), 16 (4 bits), 256 (8 bits) ou 16,8 millions (24 bits) en 24 bits/pixel : découpage en 3 plans de couleur comparaisons 96 COMPRESSION SANS PERTE : RLE compression sans perte RLE LZW Huffman arithmétique Exemples de formats d’image PCX : société ZSoft Corporation Compression DCT ondelettes prédictif comparaisons mettre les couleurs : avec pertes RLE : les plus fréquentes aux premières positions (0x00 … 0xC0) les moins fréquentes aux dernières positions (0xC1 … 0xFF) > compression RLE Remarques : compression rapide, peu exigeant en mémoire pas très efficace, surtout pour les images issues du monde réel 97 COMPRESSION SANS PERTE : LZW compression Définition (Lempel-Ziv-Welch) sans perte RLE LZW Huffman arithmétique Dictionnaire DCT ondelettes prédictif comparaisons Initialisé avec les 256 valeurs de la table ASCII. Découpage des données en chaînes d'octets, comparées au dictionnaire et ajoutées si jamais elle n'y est pas présente. Compression Construction avec pertes Algorithme de compression qui construit dynamiquement un dictionnaire à partir des données à compresser, pour remplacer les chaînes de caractères du dictionnaire par un nouveau code. Parcourt des données en les codant ; si jamais une chaîne est plus petite que le plus grand mot du dictionnaire, elle est transmise. Décompression Le dictionnaire est reconstruit dans le sens inverse, et n'a donc pas besoin d'être stocké. 98 COMPRESSION SANS PERTE : LZW compression sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif comparaisons Exemples de formats d’image TIFF : Adobe Stockage d’images BITMAP de taille importante (plus de 4 Go compressées) Nombre de couleurs : 2 couleurs (1 bit), 16 (4 bits), 256 (8 bits), 65 536 (16 bits), 16,8 millions (24 bits) ou 4 milliards (32 bits) Espaces de couleurs : Non limité au RVB Possibilité d’utiliser CMJN, YCbCr, … 99 COMPRESSION SANS PERTE : LZW compression sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif comparaisons Exemples de formats d’image TIFF : Adobe Structure du fichier TIFF Utilisation de balises décrivant les caractéristiques de l'image (dimensions de l'image, nombre de couleurs utilisées, type de compression, correction gamma, etc.) Algorithmes RLE / JPEG / LZW / … Remarques de compression : Possibilités qu’un logiciel ne puisse pas lire le format TIFF créé sur un autre logiciel 100 COMPRESSION SANS PERTE : LZW compression sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif comparaisons Exemples de formats d’image GIF : CompuServe Caractéristiques compression LZW (propriétaire) entrelacement pour affichage progressif limité à 256 couleurs parmi 16.8 millions dans sa palette permettre les images animées couleur transparente Remarques inefficace pour les photos réalistes efficace pour les logos et graphiques 101 COMPRESSION SANS PERTE : HUFFMAN compression Définition (Huffman) sans perte RLE LZW Huffman arithmétique Algorithme de compression de type statistique, basé sur l'entropie de Shannon. Grâce à une méthode d'arbre, il permet de coder les octets revenant le plus fréquemment avec une séquence de bits beaucoup plus courte. avec pertes DCT ondelettes prédictif comparaisons Remarque Cet algorithme offre des taux de compression démontrés les meilleurs possibles pour un codage par symbole. 102 COMPRESSION SANS PERTE : HUFFMAN compression sans perte RLE LZW Huffman arithmétique 3 variantes de l'algorithme de Huffman : DCT ondelettes prédictif comparaisons Chaque octet a un code prédéfini par le logiciel. Compression seulement sur un seul type de fichier semi-adaptatif : avec pertes statique : Le fichier est d'abord lu, de manière à construire un arbre utile pour la compression / décompression Nécessité de transmettre l’arbre pour la décompression adaptatif : Compression toujours optimale car l'arbre est construit dynamiquement au fur et à mesure de la compression du flux Temps d'exécution plus long 103 Inutile de transmettre ou stocker l’arbre COMPRESSION SANS PERTE : HUFFMAN compression Remarque sans perte RLE LZW Huffman arithmétique Exemples de format d’archive avec pertes DCT ondelettes prédictif comparaisons Quasi tous les compresseurs l'utilisent comme 2nd étage de compression, recomprimant ce qui l’a été par une autre technique. Le format GZIP Format deflate basé sur la compression sans perte combinée : RLE, LZ77 (algorithme précurseur du LZW), Huffman Le format BZIP2 Utilise la transformée de Burrows-Wheeler avec le codage de Huffman. Le taux de compression est meilleur que celui 104 du format GZIP. COMPRESSION SANS PERTE : HUFFMAN compression sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif comparaisons Exemples de formats d’image PNG : Unisys Alternative libre au format GIF Structure En-tête Découpage de l’image en segment contenant : Taille et nature du segment, les données compressées, code correcteur CRC Algorithmes de compression Deflate, basé sur le format ZIP (combinaison de la compression LZ77 et Huffman) 105 COMPRESSION SANS PERTE : HUFFMAN compression sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif Exemples de formats d’image PNG : Unisys Remarques Libre 8 ou 16 bits / composante de couleurs Jusqu’à 24 ou 48 bits / pixel Images binaires, couleurs réelles ou indexées Transparence par couche alpha : 256 niveaux de transparence possible (contre 1 pour le GIF) Bonne compression mais très vite limitée comparée aux méthodes de compression avec pertes comparaisons 106 COMPRESSION SANS PERTE : HUFFMAN compression sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif Exemples de formats d’image JPEG : Joint Photographic Experts Group Méthode de compression d’image basée sur la transformée DCT en 1er étage et la compression sans perte de Huffman dans le 2nd étage. De plus amples explications dans la section « compression avec pertes : DCT » comparaisons 107 COMPRESSION SANS PERTE : ARITHM. compression Définition sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif comparaisons Algorithme de compression qui s’apparente au codage de Huffman, sauf qu'il encode le message entièrement et le représente par un seul nombre n (flottant) alors que les autres codages séparent le message d'entrée en les symboles qui le composent et encodent ensuite chaque symbole par un mot code. Remarque Cet algorithme offre des taux de compression bien meilleurs que le codage de Huffman. Aucun format d’images l’utilise : très lent 108 COMPRESSION AVEC PERTE : DCT compression Définition sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif algorithme de compression basé sur la transformée DCT (Discrete Cosine Transform, en français transformée en cosinus discrète), variante de la transformée de Fourier. Cette méthode permet de décrire chaque bloc en une carte de fréquences et en amplitudes plutôt qu'en pixels et couleurs. Remarques comparaisons Fréquence ® importance et rapidité d’un changement de couleur Amplitude ® écart pour chaque changement de couleur Utilisée pour les formats JPEG et MPEG. 109 COMPRESSION AVEC PERTE : DCT compression Chaîne de traitement du format JPEG Remarques sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif Chaque image est décomposée en blocs 8x8 Sur les bords, on peut compléter les derniers blocs comparaisons Par des zéros Par des prolongements continus Par une symétrie Chaque bloc est une ‘petite’ image 110 COMPRESSION AVEC PERTE : DCT compression sans perte RLE LZW Huffman arithmétique Conversion RVB « YUV (Y : luminance, U et V : chrominances) Système de conversion réversible : L’œil est plus sensible à l’intensité lumineuse qu’aux informations colorées. avec pertes DCT ondelettes prédictif comparaisons Y = 0,299 R + 0,587 V + 0,114 B U = - 0,1687 R - 0,3313 V + 0,5 B V = 0,5 R - 0,4187 V - 0,0813 B A cette étape, on réduit le nombre de chrominance par 4. Ainsi, le nombre de valeurs est réduit par 2. A cette étape, l'image a pu être dégradée de 2 façons : perte de précision lors de la conversion RGB->YUV entre les entiers et les flottants. diminution de la précision du codage de la chrominance. 111 COMPRESSION AVEC PERTE : DCT compression Transformée en cosinus discret – DCT sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif Calcul de la DCT sur un sous-bloc 8x8 Remarques Chaque sous-bloc en 8x8 est transformée en une autre matrice par la DCT Il n’y a pas de perte d’information ici comparaisons 112 COMPRESSION AVEC PERTE : DCT compression sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif Transformée en cosinus discret – DCT C’est une représentation fréquentielle Composante continue au coin en haut à gauche Basses fréquences en haut à gauche Hautes fréquences en bas à droite comparaisons 113 COMPRESSION AVEC PERTE : DCT compression sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif Quantification Processus principalement responsable de la dégradation de l'image. Grâce à un facteur de qualité, on crée une table de quantification 8x8 selon la formule : Exemple pour un facteur de qualité de 3 : comparaisons 114 COMPRESSION AVEC PERTE : DCT compression sans perte RLE LZW Huffman arithmétique Quantification avec pertes DCT ondelettes prédictif comparaisons Ensuite chaque coefficient calculé par la DCT va être quantifié afin de mettre à zéro une grande partie des hautes fréquences. La lecture des coefficients se fait en zigzag : on ne garde que la composante continue et quelques basses, voire moyennes fréquences. Les méthodes de compression RLE et Huffman sans perte deviennent ici plus efficaces. 115 COMPRESSION AVEC PERTE : ONDELETTES compression Définition sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif comparaisons algorithme de compression basé sur la transformée en ondelettes (Wavelet Transform), variante de la transformée de Fourier. Cette méthode est basée sur le regroupement multirésolution de l'information. Remarques Séparer de l’information général (basses fréquences) et les détails (hautes fréquences), contenue dans une image, un son, … Utilisée pour les formats JPEG2000 et 116 MPEG2000. COMPRESSION AVEC PERTE : ONDELETTES compression Chaîne de traitement du JPEG2000 Remarques sans perte RLE LZW Huffman arithmétique avec pertes JPEG2000 meilleur que JPEG DCT ondelettes prédictif Grande flexibilité Multi-plate-forme Peu de détériorations de l'image originale Meilleur taux de compression pour une même qualité Meilleure adaptation à des systèmes à faible débit comparaisons Envoi en priorité de certains bits correspondant à des régions importantes de l'image, qui sera intelligible plus rapidement. Possibilité de compresser avec ou sans perte. 117 COMPRESSION AVEC PERTE : ONDELETTES compression sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif Partitionnement de l’image Définir des zones (ROI : Regions Of Interest) où la qualité doit être préservée mieux encodées, et décodées plus rapidement, pour permettre un affichage optimal par exemple lors de communications réseau. comparaisons Avec ROI Sans ROI 118 COMPRESSION AVEC PERTE : ONDELETTES compression sans perte RLE LZW Huffman arithmétique Phase de normalisation But : meilleurs taux de compression Principe : DCT ondelettes prédictif comparaisons les pixels codés entre 0 et 255, sont codés entre -128 et 127 Pour une transformation irréversible (avec perte) avec pertes Utilisation d’un « level offset » Normalisation des pixels entre - ½ et ½ Intérêt de la normalisation La compression ne dépend plus du nombre de bits nécessaires pour coder l'image. JPEG2000 gagne en flexibilité : on pourra coder n'importe quelle profondeur de bit. 119 COMPRESSION AVEC PERTE : ONDELETTES compression sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif Conversion RVB « YUV (Y : luminance, U et V : chrominances) Transformation réversible (RCT) : Y = 0,299 R + 0,587 V + 0,114 B U = - 0,1687 R - 0,3313 V + 0,5 B V = 0,5 R - 0,4187 V - 0,0813 B Transformation irréversible (ICT) : Y = partie entière ((R + 2 V + B) / 4) U=R-V V=B-V comparaisons 120 COMPRESSION AVEC PERTE : ONDELETTES compression Transformée en ondelettes discrètes 1D sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif comparaisons Il existe un nombre illimité d’ondelettes Exemple : ondelettes discrètes 1D de Haar Niveau de détail # Coefficients de moyenne 0 [9;7;3;5] 1 L1 = [ 8 = (9+7)/2 ; 4 = (3+5)/2 ] H1 = [ 1 = (9-7)/2 ; -1 = (3-5)/2 ] 2 L2 = [ 6 = (8+4)/2 ] H2 = [ 2 = (8-4)/2 ] Coefficients de détail L : filtre passe-bas (Low pass filter) H : filtre passe-haut (High pass filter) Séquence originale : [ 9 ; 7 ; 3 ; 5 ] Séquence finale : [ 6 ; 2 ; 1 ; -1 ] 121 COMPRESSION AVEC PERTE : ONDELETTES compression sans perte RLE LZW Huffman arithmétique Transformée en ondelettes discrètes 2D Construction par succession d’ondelettes 1D discrètes suivant les axes x, puis y de l’image 2D avec pertes DCT ondelettes prédictif comparaisons 122 COMPRESSION AVEC PERTE : ONDELETTES compression Transformée en ondelettes discrètes 2D sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif comparaisons Exemple : image 2D 4 niveaux de détail de la décomposition en ondelettes 2D Pour chaque niveau de détail, l’information générale est en haut à gauche, et les détails dans la zone restante Image initiale à gauche Image décomposée avec les ondelettes 2D à droite 123 COMPRESSION AVEC PERTE : ONDELETTES compression Quantification sans perte RLE LZW Huffman arithmétique Utilisation d'un quantificateur à pas variable Prise en compte du système de vision humaine Utilisation de la courbe de sensibilité au contraste de l’œil humain en fonction de la fréquence de changement de luminance avec pertes DCT ondelettes prédictif comparaisons 124 COMPRESSION AVEC PERTE : ONDELETTES compression sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif Codage arithmétique adaptatif Utilisation d’un codeur arithmétique adaptatif de type MQ (développé par Mitsubishi). Intérêt du JPEG2000 Chaque ROI et chaque niveau de détail est codé indépendamment. Meilleurs résultats qu'un codage global (tel que le format JPEG) comparaisons 125 COMPRESSION AVEC PERTE : ONDELETTES compression sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif Organisation du flux de données Les données sont réorganisées pour proposer une reconstruction permettant d’avoir : Rendu Basse Résolution - Haute Qualité Rendu Haute Résolution - Basse Qualité Organisation maximisant le rapport Signal/Bruit Organisation optimisant le rendu visuel … comparaisons 126 COMPRESSION AVEC PERTE : PREDICTIF compression Qu’est ce que le format WebP ? sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif Remarque comparaisons Format d’image matricielle développé par Google Exploite un algorithme de compression avec pertes prédictif utilisé pour les images clés (intra) du codec vidéo VP8 Inclut dans un conteneur léger et extensible RIFF Peut contenir jusqu’à 4 métadonnées supplémentaires : le nom de l’auteur, le titre, les droits d’auteurs et des commentaires Format ouvert et récent Taille maximale d’une image WebP : 268 mégapixels 127 COMPRESSION AVEC PERTE : PREDICTIF compression sans perte RLE LZW Huffman arithmétique avec pertes DCT ondelettes prédictif comparaisons Motivations : Réduire la quantité de données circulant sur l’Internet : les images constituent environ 65% des données Tests réalisés par Google : un million d'images déja compressées avec pertes en moyenne le WebP réduirait la taille des fichiers de 39 % par rapport aux formats JPEG, PNG et GIF, sans perte de qualité perceptible. 128 COMPRESSION AVEC PERTE : PREDICTIF compression Fonctionnement : 1. sans perte RLE LZW Huffman arithmétique Découpage en blocs (comme le JPEG) 2. Pour chaque bloc : avec pertes DCT ondelettes prédictif comparaisons Prédiction à partir des valeurs des trois blocs (en haut et à gauche) Prédiction selon quatre modes distincts : 3. Profondeur de couleurs : 8 bits Modèle YUV utilisé : YUV 4:2:0 Horizontal, vertical, DC (une couleur) et TrueMotion. Les données malprédite ou non prédite sont compressée en sous-blocs 4x4 avec une transformée DCT et Walsh-Hadamard. La sortie est compressée avec un codage entropique (Huffman ou arithmétique). 129 COMPRESSION AVEC PERTE : PREDICTIF compression sans perte RLE LZW Huffman arithmétique Critiques par Jason Garrett-Glaser : avec pertes DCT ondelettes prédictif comparaisons Développeur du codec vidéo x264 Il a fait état que : entre les codecs JPEG, x264 et WebP, la qualité WebP est la pire des trois à cause d’un estompage de l’image dans la plupart des cas. Raison : Forte optimisation du rapport signal sur bruit Sans tenir compte d’une bonne optimisation psychovisuelle. 130 COMPARAISONS : RÉCAPITULATIF compression sans perte LZW Huffman arithmétique avec pertes DCT ondelettes prédictif comparaisons Format très lourd Compression sans perte Sans compression : BMP RLE RLE : PCX Poids plus faible : élimination des redondances par répétition Utilisation d’un dictionnaire : plus efficace que RLE LZW : GIF / TIFF Compression avec pertes Compression avec DCT : JPEG Compression avec ondelettes : JPEG 2000 Réduction du coût mémoire et taux de compression réglable Meilleur rapport taux de compression / qualité d’image Gestion multirésolution de l’image Compression avec ou sans perte Compression prédictive : WebP Meilleur taux de compression que JPEG, JPEG2000 et PNG Estompage général sans optimisation psychovisuelle 131 Non disponible à l’heure actuelle