Organisation de journée Introduction et principes généraux - contexte et définition des besoins - rappels en théorie de l information Compression sans pertes - codage entropique - codage par plage - algorithme LZW (zip, GIF) Compression avec pertes - quantification scalaire et vectorielle - codage par transformation linéaire (JPEG) [- codage hiérarchique et multirésolution, (JPEG 2000)]
Introduction et principes généraux Contexte et définition des besoins «monde numérique» stockage et transmission d information sous forme binaire - efficacité : optimisation des capacités de stockage et de l utilisation de la bande passante compression ou codage source : suppression de la redondance suppression de l information «inutile» ou non perceptible - robustesse aux erreurs de transmission codage canal : ajout maîtrisé de redondance - sécurité / services augmentés : codage cryptographique, tatouage
Introduction et principes généraux Compression ou codage source Exemple: vidéo Haute Définition: - 1280x720 pixels - 24 bits / pixel (couleur) - 100 Hz débit source: 2 Gbits / s!!! (sans compter le son haute définition multi-voies ) - suppression de la redondance : compression sans perte on peut reconstruire le signal binaire initial exactement. - suppression de l information «inutile» ou non (peu) perceptible : compression avec pertes on ne peut pas reconstruire exactement le signal initial.
Quelques définitions Débit : ressource binaire (nombre de bits) utilisée pour coder une seconde de signal (pour les signaux temporels!) Taux de compression : rapport du débit sans compression et du débit avec compression ou rapport entre la place requise pour le stockage sans et avec compression. Complexité : degré de sophistication de l algorithme mesuré par la charge de calcul par unité de temps (MIPS) et par l occupation des mémoires du système Contrainte de temps-réel et retard algorithmique Qualité (pour compression avec pertes) : qualité perçue du signal restitué en regard du signal original Mesure des distorsions/dégradations ou «bruit de codage»
De la difficulté d évaluer la qualité Difficultés de trouver une mesure de qualité objective différentes formes de bruit différents effets Recherche d une mesure objective corrélée au système perceptif (difficile) Evaluation subjective par tests perceptifs sur signaux codés et originaux (fastidieux et cher)
De la difficulté d évaluer la qualité: critères numériques classiques Erreur Absolue Moyenne (EAM, ou MAE pour Mean Absolute Error) : MAE = M N ~ 1 f ( m,n) f ( m,n) M N m= 1 n= 1 Erreur Quadratique Moyenne (EQM, ou MSE pour Mean Square Error) : MSE = ( M N ~ 1 f ( m,n) f ( m,n) M N m= 1 n= 1 ) 2 Rapport Signal à Bruit (RSB, ou SNR pour Signal to Noise Ratio) : 1 f ( m,n ) M N SNR= 10 log ~ 1 ( ( ) ( ) ) f m, n f m, n M N M M N 2 m= 1 n= 1 N 2 m= 1 n= 1 Rapport Signal à Bruit de Crête (RSBC, ou PSNR pour Peak Signal to Noise Ratio) : 2 255 PSNR= 10 log M N ~ 1 M N f ( m,n) f ( m,n) m= 1 n= 1 ( ) 2
Le trio infernal! (TM L. Girin) Confort de l utilisateur Qualité Débit Capacité du canal de transmission ou du support de stockage Complexité Temps réel Retard faible Puissance du microprocesseur Capacité des mémoires
Le trio infernal! (TM L. Girin) Un gain dans un domaine se paye dans l autre il faut trouver des compromis Un système est optimal - s il maximise les performances (qualité) pour un débit donné - ou s il minimise le débit pour un niveau de performances donné. Si débit et qualité sont fixés, on cherche à réduire la complexité. compression Les codeurs ont tendance à être de plus en plus complexes Optimisation à débit fixé Optimisation à qualité fixée Limite avec / sans perte qualité
Rappels en théorie de l information Définition de l entropie: H(i) = N,M x,y = 1 [ ] p(ix,y )log2 p(ix,y ) Exemples: source binaire p(ix,y=0)=1/2, p(ix,y=1)=1/2, H(i)=1 bit pour une image en niveau de gris quelconque: p(ix,y=0)=p(ix,y=1)= =p(ix,y=255)=1/256 H(i)=8 bits Nombre minimum théorique de bits/pixel nécessaire au codage sans perte. sans tenir compte de la redondance du signal!
Rappels en théorie de l information Théorème du codage sans bruit sans mémoire: H(i) lmoy(i) H(i)+ 1 en regroupant N symboles: Illustration: (H=0.88) 0 0 et p=0.3 1 1 et p=0.7 0 11 et p= 0.49 10 10 et p= 0.21 110 01 et p= 0.21 111 00 et p= 0.09 lmoy(i) H(i) H(i)+ 1 N N lmoy/n=1 lmoy/n=0.9
Rappels en théorie de l information Mais on peut descendre sous l entropie Théorème du codage d une source sans bruit avec mémoire: 0 Ham(i) H sm(i) Exemple: S: 0123 3210 0123 3210 Si on ne considère que 1 symbole à la fois: p(x=0)=p(x=1)=p(x=2)=p(x=3)=1/4 et H=2 Si on considère des mots de codes contenant 4 symboles: p(x=0123)=p(x=3210)=1/2 et H=1 Cas limite si on considère des mots de codes contenant 8 symboles: p(x=01233210)=1 et H=0, le signal est déterministe!
Compression sans perte: codage entropique Principe : utiliser des codes à longueur variable (VLC) pour coder les symboles les plus fréquents avec peu de bits, au prix d un nombre plus élevé de bits pour les symboles les moins fréquents. Décodage Le décodeur doit savoir séparer les différents symboles. synchronisation utilisation de codes préfixés: chaque code n est le début d aucun autre Construction du code: Codage de Shannon Fano, Huffman,
Compression sans perte: codage entropique Codage de Huffman (résultat non unique): Symb. N1 000 N2 001 N3 010 N4 011 N5 100 N6 101 N7 110 N8 111 Proba. 0,30 0,18 0,15 0,10 0,10 0,07 0,05 0,05 0,62 1 1 1 1 1 1 0,20 0,38 0 0 0 0,32 1 1 0 0,17 0,10 0 0 0 Lmoy=2,79 Huffman 11 01 101 001 000 0001 10001 10000 Exploite la redondance statistique, mais pas la redondance spatiale (ou temporelle) utilisation pour coder des paires / triplets de valeurs. S utilise sur les valeurs initiales ou après transformation (présent dans tous les codecs)
Compression sans perte: codage par plage Run Length Encoding (RLE) Principe: coder le nombre de fois ou apparaît un symbole. Exemple: S: 0000000011111 : codage: nombre de répétition sur 3 bits suivi de la valeur codée: 111 0 101 1 8-0 5-1 - effet néfaste en l absence de plages uniformes intéressant dans le cas binaire («stack filters») - s applique au signal initial ou après une transformation - dans le cas bi-dimensionnel: choix du parcours.
Compression sans perte: algo. LZW Algorithme Lempel Ziv Welch Principe: coder des chaînes de caractères qui se répètent. Les chaînes sont stockées dans une mémoire (table de traduction) et sont codées par l adresse correspondante. Chaque nouvelle chaîne «apprise» est codée à la première adresse disponible Codes de longueur constante = + la chaîne est longue, meilleure est la compression Base des formats.zip,.gif. Particulièrement efficace pour les images synthétiques (logos, plans, schémas ). Meilleur que JPEG sur ce type d image : pas de perte et meilleur taux! Point-clef: apprentissage dynamique des chaînes de caractère qui se répètent apprentissage identique par le codeur et le décodeur.
Compression avec perte: méthodes par quantification Principe général Définition : conversion de la valeur s du signal prélevé (pouvant prendre éventuellement une infinité de valeurs) en la valeur la plus proche parmi un ensemble fini de N valeurs prototypes si d un dictionnaire au sens d une certaine distance (ou distorsion) Justification : capacité finie des éléments des systèmes numériques Les prototypes sont sensés représenter correctement les valeurs du signal partition de l espace de ces valeurs
Compression avec perte: méthodes par quantification Principe général Q s trouver le plus proche voisin s1 s2 sn i Q-1 inspection dans le dictionnaire s1 s2 s N Codage : remplacer une donnée par l index du prototype associé (rang dans le dictionnaire) Décodage : remplacer un index par le prototype associé (dictionnaire préalablement transmis au décodeur) Complexité codage >> décodage sq
Compression avec perte: méthodes par quantification Attention! La quantification est une opération non-linéaire! (x+y)q xq + yq La quantification est une opération irréversible! codage avec pertes/bruit! C est là que l essentiel du gain est souvent réalisé mais c est aussi le prix à payer!
Compression avec perte: méthodes par quantification Quantification scalaire Scalaire = échantillon par échantillon Résolution b = log2n si b entier on peut coder de manière unique (inversible) chaque prototype par un mot binaire de b bits b = nombre de bits/échantillon débit fixe d = bfe (en bits/s) si b est non entier, les codes ont généralement une longueur variable (ceci peut être vrai aussi si b entier) débit variable valeur moyenne N ne doit pas être trop grand!
Compression avec perte: méthodes par quantification Quantification scalaire: Bruit/erreur de quantification Définition : q = sq s Critère de performance = minimisation de la distorsion moyenne D, s considéré comme un processus aléatoire D = d ( s, sq ) ps ( s )ds Cas particulier : d = erreur quadratique, D = puissance moyenne de q ( ) D = σ q2 = s sq 2 ps ( s )ds Avantages : simplicité, résultats analytiques, sens physique Inconvénients : pas forcément corrélée avec perception mais fondement pour mesures «perceptives» plus élaborées En pratique, moyennage sur M échantillons
Compression avec perte: méthodes par quantification Rapport signal sur bruit (RSB) Définition : rapport des puissances du signal et du bruit de quantification RSBdB = 10 log10 σ s2 σ 2 q
Compression avec perte: méthodes par quantification Haute résolution Définition : cas N très grand + prototypes «bien placés» distorsion moyenne D faible Hypothèse utile pour dériver des mesures de performances et guider l élaboration d un quantificateur Exemples d approximations utiles sous HR : s et q sont non corrélés la DDP marginale de q est uniforme le processus q(n) est blanc (séquence non-corrélée) Attention! hypothèses pas toujours vraies (non-linéarité de la quantification)
Compression avec perte: méthodes par quantification Quantification scalaire uniforme QS la plus simple et très largement employée notamment dans les CAN, en amont de tout traitement numérique (y compris compression) Uniforme : les valeurs quantifiées possibles sont équi-réparties sur une échelle linéaire Partition de l intervalle de variation de s en N = 2b cellules Pas de quantification = 2A/N Prototypes = centres des cellules indexés de 1 à N
Compression avec perte: méthodes par quantification Quantification scalaire uniforme s8 N=8 b=3 s7 s6 -A s5 A s3 s2 Zone linéaire s1 2A s
Compression avec perte: méthodes par quantification Quantification scalaire uniforme: bruits Bruit de dépassement : bruit occasionné par la troncature du signal si celui-ci sort de la zone linéaire Perceptuellement différent et «en compétiton» avec le bruit de quantification granulaire (zone linéaire) lorsque la dynamique de s varie Compromis nécessaire = dimensionner A et en fonction de la DDP de s, ou régler le niveau de s... Facteur d échelle (typiquement entre 2 et 4) : γ = A σs
Compression avec perte: méthodes par quantification Quantification scalaire uniforme: calcul du bruit de quantification Hypothèses : haute résolution ps(s) suffisamment lisse constante dans chaque cellule bruit de dépassement négligé q est uniformément réparti entre /2 et + /2. 2 2 1 A 2 2 2b σ q = q dq = = 2 12 3 /2 /2
Compression avec perte: méthodes par quantification Quantification scalaire uniforme: calcul du RSB σ s2 3 2b RSBdB = 10 log10 = 10 log10 2 = 6,02b + 4,77 20 log10 γ σ q2 γ2 On augmente le RSB de 6dB à chaque fois qu on rajoute 1 bit pour la quantification. γ RSB mais attention au bruit de dépassement! En pratique, il faut tenir compte de la dynamique de s et garantir une valeur minimale de RSB pour une dynamique faible. Exemple : données audio sur 16 bits, RSB 96 db
Compression avec perte: méthodes par quantification Quantification scalaire non uniforme Premier exemple non immédiat mais encore simple d application du grand principe de la compression (élimination de la redondance du signal) Principe : tenir compte de la répartition statistique des valeurs de s : pour les signaux utiles réels (parole/musique/images), certaines amplitudes sont plus fréquentes (probables) que d autres pour diminuer D, on alloue plus de précision sur ces amplitudes : le quantificateur doit être bien adapté à ps(x)
Compression avec perte: méthodes par quantification Quantification scalaire non uniforme: conséquence sur le quantificateur Cellules de longueur variable (d autant plus petites que ps(s) est grande) Prototypes pas forcément au centre des cellules N=8 b=3 s8 s7 T(s) s6 s5 i s s3 s2 s1
Compression avec perte: méthodes par quantification Quantification scalaire non uniforme: schéma équivalent Quantification uniforme s T Q sq T-1 T = transformation non-linéaire Exemple : standard US en téléphonie fixe (G.711) Fe = 8 khz, b = 8 bits, d = 64 kbits/s µ = 255 réglé pour optimiser le RSB T(x) approximée par des segments linéaires ln (1 + µ x / V ) T ( x) = V sgn ( x) x V ln (1 + µ )
Compression avec perte: méthodes par quantification Quantification scalaire non uniforme: calcul du bruit de quantification Hypothèses : haute résolution ps(s) suffisamment lisse constante dans chaque cellule = pi bruit de dépassement négligé σ q2 = ( s sq ) 2 N ps ( s )ds = ( s si ) 2 ps ( s)ds i = 1s Ci 1 N 2 2 N 3 σ q pi ( s si ) ds = pi i 12 i = 1 i = 1 s Ci
Compression avec perte: méthodes par quantification Quantification scalaire non uniforme: minimisation du bruit de quantification N pi i = 1 i= 1 σ q2 = 3 2 1 / 3 2b σ s 1 / 3 2b 2 2b p ( s ) ds 2 = f ( x ) dx 2 = h σ S S s2 12 1 12 3 2 σ q minimale si pi i = constante 3 f S ( x) = σ s ps (σ s x) DDP de X = S / σ s 2 2 si i = constante, on retrouve q h ne dépend que de ps(s) h = 3π / 2 Cas gaussien centré : Problème majeur : pas de méthode analytique d élaboration du quantificateur si ps(s) inconnue! σ = / 12
Compression avec perte: méthodes par quantification Quantification scalaire non uniforme: obtention du dictionnaire Deux conditions nécessaires d optimalité permettent de déterminer efficacement prototypes et partition (b fixée) Idée : séparer encodeur et décodeur : Pour un décodeur (= {prototypes}) donné, le meilleur encodeur (= partition) donné par la condition des plus proches voisins : { ( ) Cellule i = s : ( s si ) 2 s s j 2 j {1...N } } Pour un encodeur donné, le meilleur décodeur est donné par la condition des centroïdes (barycentres) : si = sps ( s )ds s Ci ps ( s)ds s Ci + = sp S s Ci ( s ) ds = E [ S S Cellule i ]
Compression avec perte: méthodes par quantification Quantification scalaire non uniforme: obtention du dictionnaire Pour (1), la connaissance de la partition est inutile (distance + convention pour point équidistant de 2 prototypes) (1) et (2) nécessaires mais non suffisantes pour garantir l optimalité globale du quantificateur Démonstrations (1) triviale (2) dériver par rapport à si Généralisation à d autres distances : (1) Cellule i = s : d ( s, s ) i { (2) d ( s, s j ) j {1...N } si = arg min E [ d ( S, x) S Cellule i ] x }
Compression avec perte: méthodes par quantification Quantification scalaire non uniforme: obtention du dictionnaire Algorithme de Lloyd-Max: Dans la pratique, utilisation d une large base de données empiriques itérations successives entre les deux conditions d optimalité = Algorithme de Lloyd-Max (1) affectation des données aux centroïdes plus proches voisins nouvelle partition (2) calcul des moyennes des échantillons de chaque classe nouveaux centroïdes (3) calcul de D qui diminue à chaque itération. On arrête quand elle n évolue plus ou que la diminution relative est inférieure à un seuil faible
Compression avec perte: méthodes par quantification Quantification scalaire non uniforme: obtention du dictionnaire Algorithme de Lloyd-Max: «Mise en forme» du quantificateur selon ps(s) sans estimation explicite de ps(s)! Echantillon de données de taille M>>N pour bien représenter ps(s) Attention aux données situées exactement sur la frontière entre deux cellules : il faut changer leur affectation Minimum local pour D et pas forcément global quantificateur pas forcément optimal mais performant en pratique : très efficace / nombreuses applications
Compression avec perte: méthodes par quantification Techniques adaptatives Principe : régler automatiquement le quantificateur en fonction des variations à moyen terme des statistiques de s(t) (localement stationnaire) Exemple : adaptation en gain = réglage automatique de A, en fonction du niveau des échantillons passés de s en essayant de garder γ à sa valeur optimale Généralisation du principe à tout bloc d un codeur
Compression avec perte: méthodes par quantification Quantification vectorielle
Compression avec perte: méthodes par quantification Quantification vectorielle: algo de Linde Buzo Gray (LBG) 1. On part d'abord d'un dictionnaire composé d'un seul vecteur V0 qui minimise la distorsion moyenne. C'est le centre de gravité de l'ensemble d'apprentissage. 2. On génère ensuite à partir de V0 deux vecteurs V11 et V21 définis par V11 = V0 + e et V21 = V0 -e 3. En fonction de V11 et V21 on crée deux classes de vecteurs à partir de la base d'apprentissage en fonction de leur distances vis à vis de V11 et V21. On calcule ensuite les centres de gravité de ces deux classes pour mettre à jour V11 et V21. On itère ce processus tant que la décroissance de la distorsion moyenne reste importante. 4. On partage à nouveau ces 2 vecteurs en 2 et on itère l'étape précédente sur les nouveaux vecteurs. 5. On arrête l'algorithme lorsque l'on a atteint le nombre de vecteurs désiré.
Compression avec perte: méthodes par quantification Quantification vectorielle: algo de Linde Buzo Gray (LBG) V0 (1): On part d'abord d'un dictionnaire composé d'un seul vecteur V0 qui minimise la distorsion moyenne. C'est le centre de gravité de l'ensemble d'apprentissage.
Compression avec perte: méthodes par quantification Quantification vectorielle: algo de Linde Buzo Gray (LBG) V11 V12 -e +e (2): On génère ensuite à partir de V0 deux vecteurs V11 et V21 définis par V11 = V0 + e et V21 = V0 -e
Compression avec perte: méthodes par quantification Quantification vectorielle: algo de Linde Buzo Gray (LBG) V11 V12 V11 V12 (3) 3. On crée deux classes de vecteurs à partir de la base d'apprentissage en fonction de leur distances vis à vis de V11 et V21. On calcule ensuite les centres de gravité de ces deux classes pour mettre à jour V11 et V21. On itère ce processus tant que la décroissance de la distorsion moyenne reste importante.
Compression avec perte: méthodes par quantification Quantification vectorielle: algo de Linde Buzo Gray (LBG) V21 V22V23 V24 V23 V21 V22 V23 V21 V24 V24 V22 4. On partage à nouveau ces 2 vecteurs en 2 et on itère l'étape précédente sur les nouveaux vecteurs.
Compression avec perte: méthodes par quantification Quantification vectorielle: algo de Linde Buzo Gray (LBG) V35 V23 V21 V31 V24 V22 V32 V36 V34 V37 V33 5. On arrête l'algorithme lorsque l'on a atteint le nombre de vecteurs désiré. V38
Compression avec perte: méthodes par quantification Quantification scalaire vs quantification vectorielle QV QS
Compression avec perte: méthodes par quantification Quantification scalaire vs quantification vectorielle QV TL + QS
Compression avec perte: codage par transformation linéaire (JPEG) JPEG: généralités Principal standard utilisé en compression d images naturelles JPEG= «Joint Photographic Expert Group»: voté comme standard international en 1992 Permet de compresser les images couleurs ou en niveau de gris dans plusieurs domaines: images naturelles, satellites, médicales
Compression avec perte: codage par transformation linéaire (JPEG) Création d un standard Avantages d une norme: compatibilité pérennité d un produit qui s appuie sur un standard (argument commercial) Etapes nécessaires à la création d un standard: Définition des besoins réels: Définitions des fonctionnalités Création d un comité ouvert à tous le monde: entreprises, laboratoires Propositions de solutions (Conditions souvent requises: pas de brevet) Evaluation des solutions proposées Sélection de la «meilleure» solution Description du standard: En compression, on ne décrit souvent que la partie décodage du standard Le codeur n est pas normalisé: possibilité de créer un codeur plus performant que les autres (s il existe des degrés de libertés )
Compression avec perte: codage par transformation linéaire (JPEG) Création d un standard Pour JPEG: 1986: applications aux images fixes couleurs, avec ou sans perte 1987: Trois techniques proposées: DCT; DPCM, Progressive BTC 1988: sélection d une méthode basée DCT 1988-90: simulations, testes, documentation 1991: brouillon de description du Standard 1992: standard international
Compression avec perte: codage par transformation linéaire (JPEG) Transformations linéaires Définitions: Systèmes séparables: T ( u,v,) = T ( u,v) = x= N y = M I( x,y) H (u,v,x,y) x= 1 y = 1 x= N y = M I( x, y) H ( u,x)h ( y,v) x= 1 y = 1 c l y= M T ( u,v) = I ( x, y) Hc( u, x) Hl ( v, y) x= 1 y = 1 x= N Illustration: lissage par un masque moyenneur de taille 5x5 H(x,y,u,v) = 1/9 si -3<x-u<3 et -3<y-v<3 = 0 sinon H(x,y,u,v)=Hc(x,u) Hv (y,v) On passe de n2 opérations à 2n
Compression avec perte: codage par transformation linéaire (JPEG) Transformations linéaires orthogonales Formulation matricielle d une transformation linéaire: Tdeplié=A.Ideplié Transformation orthogonale: At A= Id A 1= At Propriétés utiles en compression: EQM(T,T )=EQM(I,I ) Intérêt: si on le code que les N premiers coefficients d une transformée: 2 1 EQM = elimt(i, j) Nbelim Nb
Compression avec perte: codage par transformation linéaire (JPEG) Transformée de Fourier discrète 2D Transformation: T ( u,v) = x= N 1 y = M 1 x= 0 avec w= e 2iπ / N y= 0 Transformation inverse: I ( x,y ) = 12 N I(x,y) wxu wyv u = N 1 v= M 1 T(u,v)w xu u= 0 w yv v= 0 Transformation orthogonale Décomposition en fréquences spatiales de l image Image originale 5% du spectre Image reconstruite
Compression avec perte: codage par transformation linéaire (JPEG) Inconvénients de la TF2D Coefficients transformés complexes Création de hautes fréquences artificielles
Compression avec perte: codage par transformation linéaire (JPEG) Vers la transformée en cosinus discrète Plus de hautes fréquences artificielles
Compression avec perte: codage par transformation linéaire (JPEG) Transformée en cosinus discrète Définition N 1 M 1 Avec [ ] [ T ( u,v) = 2 C( u) C( v) I(x,y)cos π u( 2x+ 1) cos π v( 2y+ 1) N 2N 2N x= 0 y = 0 Blocs de bases (8x8) C( 0)= 1 et α 0 C( α ) = 1 2 ]
Compression avec perte: codage par transformation linéaire (JPEG) Illustration 8 16 24 32 40 48 56 64 DFT (module) 36 10 10 6 6 4 4 4 DCT 100-52 0-5 0-2 0 0.4 Troncature Troncature 36 10 10 6 0 0 0 0 100-52 0-5 0 0 0 0 IDFT 24 12 20 32 40 51 59 48 IDCT 8 15 24 32 40 48 57 63
Compression avec perte: codage par transformation linéaire (JPEG) Illustration Bloc B de taille 8x8 Im(DFT(B)) Bloc miroir BM Re(DFT(B)) DCT(B)
Compression avec perte: codage par transformation linéaire (JPEG) Chaîne de codage et décodage
Compression avec perte: codage par transformation linéaire (JPEG) Quantification des coefficients DCT DCT Exemple de table de quantification:
Compression avec perte: codage par transformation linéaire (JPEG) Parcours des blocs DCT Principe du Zig-Zag scan: avoir le maximum de zeros qui se suivent pour pouvoir appliquer le RLE Sens de parcours:
Compression avec perte: codage par transformation linéaire (JPEG) Codage des coefficients DC Codage différentiel: le coefficient DC est égale à la somme des pixels présents dans un blocs 8x8: il a donc une valeur importante (intensité moyenne) le coefficient DC d un bloc est corrélé avec le coefficient DC du bloc précédent On choisit donc de coder Diff=DC(k)-DC(k-1): «Differential Pulse Code Modulation= DPCM»
Compression avec perte: codage par transformation linéaire (JPEG) Codage des coefficients DC & AC Codage Entropique des coefficients DC codes à longueur variables représentés par le nombre de bits minimums nécessaires pour coder le coeff: nbmin 0 0-1,1 1-3,-2,2,3 2-7,-6,-5,-4,4,5,6,7 3 on transmet le code de Huffman de nbmin puis la valeur à coder des coefficients AC on transmet le code de Huffman qui représente la paire (nb de zéros à passer, taille du coeff AC) puis la valeur à coder
Compression avec perte: codage par transformation linéaire (JPEG) Exemple de table de codage Valeur à Coder 16-21 10-15 3-2 2-3 2-1 EOB Amplitude 10000 01010 1010 0000 11 01 10 00 10 0 Code de Huffman 11010 11010 1011 1011 11111011 01 11011 01 11111110111 00 1010 Run/taille 0/5 0/5 0/4 0/4 3/2 0/2 1/2 0/2 5/2 0/1 0/0 Nb bits total 10 10 8 8 11 4 7 4 13 3 4
Compression avec perte: codage par transformation linéaire (JPEG) Fonctionnement de l algorithme JPEG Deux paramètres de sélections (au choix): 1. facteur de qualité: compris entre 0% et 100% (valeur standard: 75%) Agit sur la qualité de l image reconstruite = matrice de quantification 2. taux de compression ou débits Agit sur la taille de l image compressée
Compression avec perte: codage par transformation linéaire (JPEG) Autres modes de JPEG Plusieurs modes: Mode sans pertes fonctionne par prédiction et codage de la prédiction ------------------------------------------------------------------Programme de Compression Taux Lena football F-18 flowers -----------------------------------------------------------------lossless JPEG 1.45 1.54 2.29 1.26 optimal lossless JPEG 1.49 1.67 2.71 1.33 compress (LZW) 0.86 1.24 2.21 0.87 gzip (Lempel-Ziv) 1.08 1.36 3.10 1.05 gzip -9 (optimal Lempel-Ziv) 1.08 1.36 3.13 1.05 pack (Huffman coding) 1.02 1.12 1.19 1.00 -------------------------------------------------------------------- Mode progressif Objectif: transmettre d abord l information importante de l image puis les détails Solutions adoptées: Transmettre d abord les coefficients BF puis les HF Transmettre d abord les bits de poids forts puis les bits de poids faible
Compression avec perte: codage par transformation linéaire (JPEG) Structure du fichier JPEG A Frame = image, a scan=passage sur une composante de l image (par exemple rouge), segment=groupe de blocks,"block" =group de 8x8 pixels. Frame header (entête d image): dimensions de l image nombre de composantes facteur d échantillonnage pour chaque composante table de quantification pour chaque composante Scan header tables de Huffman Misc. (can occur between headers) tables de quantidication, tables de huffman, commentaires Application Data