La compression D.C.T.
I)Le codage luminance et chrominance
Il est reconnu de puis longtemps que notre oeil est plus sensible à la luminance (intensité de la lumière) qui sont des basses
fréquences qu'à la chrominance (les couleurs) qui sont des hautes fréquences. La première technique pour réduire la taille d'une
image est donc de donner plus d'importance aux informations de luminance que de chrominance.
C'est ce qui est notamment utilisé dans une compression destructive.
II)Compression destructive
Ainsi, c'est dans cette dernière que 'on rentre dans le domaine de compression avec perte d'information.
Le but est de perdre le minimum d'information de manière à garder un aspect visuel le plus proche. Ce type de compression n'est pas
adaptable à toutes les données mais 'on peut retrouver les mêmes concepts dans la compression du son.
III)La D.C.T.
( Discrete Cosine Transform)
Elle fait parti des compressions destructives et se regroupe en 4 étapes :
- La préparation
- La décomposition ou transformation
- La quantification
- Le codage entropique
A)La préparation
Les informations sur la luminance (paramètre y) et la chrominance 1 et 2(paramètres I et Q)
sont des combinaisons linéaires des intensités de rouge (R), vert(G), et bleu (B).
Par ex :
Y= 0.30R + 0.59G + 0.11B
I=0.60R – 0.28G – 0.32B
Q=0.21R– 0.52G + 0.31B
Chacune des trois variables est reprise sous forme de matrice 620*480. Cependant, les matrices I et Q
(info sur la chrominance) peuvent être réduites à des matrices 320*240 en prenant les moyennes
des valeurs des pixels regroupés par carré de quatre (car l'oeil y est peu sensible). Puis pour
des questions de précisions, 'image est centrée sur ce principe :
Comme chaque point de chaque matrice est une info codée sur 8 bits, il y a 256 niveaux possibles (0-255).
En soustrayant 128 à chaque élément, on met à zéro le milieu de la gamme de valeur possible :
de -128 à +127. Enfin chaque matrice est partagée en bloc de 8*8.
B)La Décomposition ou transformation
La clé du processus de compression est la D.C.T. Elle prend un ensemble de points d'un
domaine spatial et les transforme sur en une représentation équivalente dans le domaine dans
le domaine fréquentiel ; et cela sur le modèle de la transformation de fourrier:

Elle s'opère sur un signal en trois dimensions. En effet, le signal est une
image graphique, les axes x et y étant deux dimensions de 'écran, et 'axe
des z reprenant 'amplitude du signal, c'est à dire la valeur du pixel
en un point particulier de 'écran.
La D.C.T. convertit donc une info spatiale
en une information spectrale dont les axes x et y représentent les fréquences du signal
en deux dimensions. La D.C.T. est donc effectuée sur chaque matrice 8*8 de coefficients
de fréquence : 'élément (0,0) représentera la valeur moyenne du bloc, les autres
indiqueront la puissance spectrale pour chaque fréquence spatiale.
Elle serait
conservative si elle ne tiendrait pas compte des erreurs d'arrondis qu'elle
introduit ( notamment dans le calcul de la valeur moyenne).
Voilà; ce que donne cette étape :
En bas à droite, faible voir nul car hautes fréquences à cet endroit; comme
le montre ceci :

C)La Quantification
Le but de la deuxième étape de la méthode JPEG, l'étape de quantification,
est de diminuer la précision du stockage des entiers de la matrice DCT pour diminuer
le nombre de bits occupés par chaque entier. C'est la seule partie non-conservative de
la méthode (excepté les arrondis effectués). Puisque les informations de basses fréquences
sont plus pertinentes que les informations de hautes fréquences, la diminution de précision
doit être plus forte dans les hautes fréquences.
La perte de précision va donc être
de plus en plus grande lorsqu'on s'éloigne de la position (0,0). Pour cela on utilise une matrice
de quantification contenant des entiers par lesquels seront divisées les valeurs de la matrice DCT.
Ces entiers seront de plus en plus grands lorsqu'on s'éloigne de la position (0,0). Elle filtre les
hautes fréquences.
La valeur d'un élément de la matrice DCT quantifiée sera égale à l'arrondi, à
l'entier le plus proche, du quotient
de la valeur correspondante de la matrice DCT par la valeur correspondante de la matrice de
quantification. Lors de la décompression, il suffira de multiplier la valeur de la matrice
DCT quantifiée par l'élément correspondant de la matrice de quantification pour obtenir
une approximation de la valeur de la DCT.
La matrice obtenue sera appelée matrice DCT déquantifiée.
Bien que la spécification JPEG n'impose aucune contrainte sur la matrice de quantification,
l'organisme de standardisation ISO a développé un ensemble standard de valeurs de quantifications
utilisables par les programmeurs de code JPEG. Les matrices de quantifications intéressantes sont celles permettant de
``choisir'' la perte de qualité acceptable. Ce choix a été rendu possible grâce aux tests intensifs des matrices.
Voici un exemple de matrice de quantification avec un facteur de qualité de 2
(qui apporte des changements importants à la matrice DCT, mais des modifications mineures à l'image) :
On part de la matrice dct puis on utilise la matrice de quantification puis on obtient la matrice de dct quantifiée.
De manière générale, dans cette étape on "écrase" les hautes fréquences pour privilégier les basses fréquences
auxquelles
l'oeil humain est plus sensible.
D)Codage entropique ou réversible
Avant toute chose, la matrice représentant l'image [en deux dimensions] est linéarisée afin de subir un codage
réversible (ou entropique). Il est effectuée en diagonale, on parle aussi de méthode zigzag.
Par ex cette matrice dct quantifiée :
donnera alors la suite suivante : 150, 80, 92, 26, 75, 20, 4, 18, 19, 3, 1, 2, 13, 3, 1, 0, 1, 2, 2, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, etc.
Cette séquence a la propriété de parcourir les éléments en commençant par les basses
fréquences (plus importantes) et de traiter les fréquences de plus en plus hautes.
Puisque la matrice DCT quantifiée contient beaucoup de composantes de hautes
fréquences nulles, l'ordre de la séquence zigzag va engendrer de longues suites
de 0 consécutifs. D'autres mécanismes sont mis en oeuvre pour comprimer la matrice
DCT quantifiée.
Les suites de valeurs nulles sont simplement codées
en donnant le nombre de 0 successifs.
Ensuite, Un codage RLE est appliqué, (Run Length Encoding)
Cette technique consiste à repérer et à éliminer la redondance des données. Une image contient souvent des surfaces de
couleurs identiques, il est donc plus efficace de coder cette couleur et sa répétition que de coder unitairement chaque point. Par
exemple la séquence '' 4444444 '' est remplacée par '' 4/7 ''.
Ce codage appelé RLE '' Run Length Encoding '' est intéressant pour des données comportant peu de valeurs différentes et de longues
séquences. Par contre il est moins intéressant pour des données textuelles ou de type images photographiques.
Le gros inconvénient pour cet algorithme est que s'il y a beaucoup de changement dans une image, le fichier compressé
se montrera plus gros que le fichier d'origine. Pour pallier à ce problème, l'algorithme RLC a été inventé.
R.L.C. ou Run Length Coding
Le R.L.C. est considérée comme l'un des plus simples algorithmes de compression. Son principe consiste à compter le nombre de
caractères identiques successifs et à transformer cette succession en indiquant le nombre de répétitions de l'information
à répéter ainsi qu'un caractère spécial informant de la présence d'une répétition.
Cette méthode n'a d'intérèt que pour les fichiers contenant souvent des répétitions de plus de trois caractères. Sinon
elle peut augmenter la taille du fichier source si il n'y a pas de répétitions de plus de 3 caractères.
Ensuite le codage de Huffman est appliqué. Le principe de ce codage est le suivant : si on considère un fichier, celui-ci est
constitué de données qui sont toutes codées avec la même quantité d'information (sur 8 bits ou 16 bits par exemple. Or, si
certaines données reviennent beaucoup plus souvent que d'autres, il est plus avantageux de les coder sur un petit nombre de bit,
quitte à utiliser plus de bits après pour les données qui reviennent rarement. Huffman a trouvé un algorithme qui permet
d'attribuer à chaque valeur possible un code qui répond aux exigences précédentes et qui permet une lecture du fichier codé
même lorsque les codes sont mis bout à bout (unicité de l'interprétation du fichier codé).
Voici une représentation de la technique de Huffman ou 'arbre est construit en mariant les deux pourcentages les plus faibles.
Probabilité |
valeur (en binaire) |
code par Huffman |
12% |
00 |
111 |
31% |
01 |
110 |
45% |
11 |
00 |
22% |
10 |
10 |

Il existe d'autres algorithmes de codage réversible : Shannon Fano, LZW, codage arithmétique.
E)Avantages et inconvénients
'avantage essentiel de la DCT est le taux de compression important pour une qualité donnée. La valeur de ce taux est
difficile à évaluer compte tenu du fait qu'il dépend de la nature des signaux et de leurs qualités initiales
(quantification, colorimétrie). Notons quand même qu'il est possible d'obtenir des taux voisins
sans que 'on puisse observer des différences à l'oeil nu avec des images de type photographique ou
sur des écrans de très bonne qualité.
'inconvénient majeur de la
DCT est le découpage des signaux en blocs. Leur silhouette apparaîit à partir d'un certain taux de compression
qui dépend de la nature du signal. Cet effet généralement invisible apparait à l'oei nu, dans le cas des
images photographiques, dès que le taux de compression atteint quelques dizaines.
Aujourd'hui de nombreux testeurs se penchent sur des techniques visant à accélérer la DCT, par traitement mathématique
à virgule fixe ; chaque cycle gagné sur le temps pris pour calculer la DCT vaut son pesant d'or.
F) Ouverture sur la décompression
Le processus JPEG de compression conduit au stockage ou au transport des informations sur 'image sous un volume mémoire réduit.
La restitution de 'image nécessite ensuite que 'on fasse le chemin inverse dans un processus de décompression,
grâce à un logiciel de décompression.
Les étapes de la décompression sont les suivantes :
l' ouverture du fichier de données.
-Rétablissement de la matrice DCT quantifiée, en suivant le chemin inverse de la méthode de Huffman.
-Rétablissement de la matrice DCT déquantifiée, en multipliant les éléments de la précédente par le coefficient correspondant
de la matrice de quantification.
-Rétablissement de la matrice des pixels de l'image à l' aide d'une transformation DCT inverse
On peut observer que la décompression est plus rapide que la compression car il n'y a plus lieu d'arrondir ou de négliger
certaines valeurs. Les différences entre la matrice de sortie de 'image d'origine et la matrice d'entrée doivent bien
entendu rester acceptables pour l'oeil.
Exemple de décompression :

exemple avec une image a plusieurs taux de compressions :
Détail de l'image, non compressée (bitmap) [12342
Bytes].
1 - [5362 Bytes] |
20 - [2015 Bytes] |
40 - [1542 Bytes] |

|

|

|
80 - [1065 Bytes] |
90 - [895 Bytes] |
Evolution (99 >>> 50) |

|

|