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
© Copyright 2024