![]() |
![]() |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
LES METHODES DE COMPRESSION |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Nous allons maintenant suivre ce quil advient dun bloc de 64 pixels qui a été extrait dune image, jemprunte cet exemple à Xavier Marsault (ouvrage cité en bibliographie). Prenons le bloc suivant : |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Nous allons maintenant soustraire 128 de chaque valeur et appliquer la transformation DCT. Le résultat est le suivant : | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Notons quà cette étape, aucune information na été perdue. Le bloc original peut être reconstitué sans aucune perte en utilisant la DCT inverse et en ajoutant 128 à chaque terme. Quel est lintérêt de cette transformation ? On observe que les coefficients de forte valeur absolue sont situés en haut et à gauche, limportance des coefficients pour la reconstitution de limage diminue quand on se déplace en diagonale du haut à gauche vers le bas à droite. Nous allons passer à létape suivante, celle de la quantification. De quoi sagit-il ? De transmettre des valeurs approximatives de la matrice précédente en se donnant un pas de quantification. Prenons un exemple. Supposons quune variable puisse prendre les valeurs 1, 2, 3, 4, 5,.... Si lon prend un pas de quantification de 3 on ne gardera que le quotient de la division euclidienne de la valeur par 3. Cest très simple ! On va remplacer : 0, 1 et 2 par 0 3, 4 et 5 par 1 6, 7 et 8 par 2 9, 10 et 11 par 3 et ainsi de suite. Cest à cette étape que nous allons perdre de linformation et nous allons la perdre dune manière « astucieuse » parce que le pas de quantification dont dépend la précision de limage restituée va dépendre de la position de la valeur dans la matrice. Nous allons prendre un pas relativement petit pour les valeurs importantes (en haut à gauche) et prendre un pas de plus en plus grand au fur et à mesure quon descend vers le bas et la droite de la matrice. Lensemble des pas qui vont être utilisés constituent ce que lon appelle une matrice de quantification. Certaines ont été construites en fonction de critères psycho-visuels, pour ce soir nous allons en fabriquer une avec une petite formule : Q (i,j) = 1 + (1 + i + j) x Fq (pour les matheux, on indiquera une formule un peu plus complexe, permettant dobtenir un grand nombre de matrice différentes : Q(i,j) = 1 +(1 + µ (in + jn)) x Fq. Par souci de simplification, on a pris ici µ = n = 1 et Fq = 5. On peut bien entendu compliquer ) Nous prendrons Fq = 5 . Il sagit dun facteur de qualité, cest celui que vous modifiez quand vous choisissez la qualité de la restitution dans un logiciel comme Photoshop. Voici la matrice de quantification que nous obtenons : |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Nous allons maintenant diviser les valeurs de la matrice de données par les valeurs de la matrice de quantification. On obtient cette matrice : | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Ce qui frappe cest dune part le nombre de zéros et dautre part la position des coefficients non nuls. Nous allons pouvoir passer à la troisième étape qui consiste à compresser, cette fois-ci sans perte, la matrice dont nous disposons. Les experts du groupe JPEG ont choisi de traiter les 0 dune manière particulière en raison de leur nombre. On va dabord utiliser un balayage particulier pour obtenir des suites de 0 les plus grandes possibles : |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
On utilise une méthode de compression sans perte qui peut être celle de Huffman, cest le cas habituel ou bien encore un algorithme de compression arithmétique qui est bréveté pat IBM. Nous avons terminé, restera à indiquer au décodeur quelle matrice de quantification a été utilisée. Nous allons suivre la décompression du bloc que nous venons de compresser. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Après le décodage statistique nous retrouvons la matrice : | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Nous allons la déquantifier en multipliant chaque terme par le coefficient de la matrice de quantification correspondant. On obtient : | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Nous allons maintenant appliquer la DCT inverse et ajouter 128 à chaque terme, ce qui permet dobtenir le bloc décompressé : | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||