Bibliographie
Vous êtes ici : Entrée > Ressources > Informatique > Compression des données > Première approche de JPEG 2000

Première approche de JPEG 2000
Conférence donnée au Club Photoshop

Un algorithme novateur

L’algorithme utilisé par JPEG 2000, en fait une succession d’algorithmes, peut se décomposer, en première analyse, comme le montre le schéma suivant :

Transformée couleur
Cette phase est optionnelle mais si l’image est en RVB on la convertit généralement dans un espace luminance/chrominance car cette représentation est plus favorable à la compression.

Transformée en ondelette discrète
C’est ici que l’algorithme de JPEG 2000 est radicalement différent de celui de JPEG. Alors que le JPEG utilisait une transformée de Fourrier discrète, JPEG 2000 utilise les ondelettes. On perçoit ici, dans notre domaine, l’évolution de la théorie du signal qui s’est considérablement développée ces dernières années. L’image subit une série de décomposition grâce à des filtres. Pour donner une idée grossière du travail effectué on peut dire que l’image est divisée d’abord en « tuiles » de taille fixe. Chaque tuile est rééchantillonnée de manière à ce que longueur et largeur soient divisées par 2. Les informations perdues dans l’opération sont enregistrées sous forme de coefficients d’ondelettes. On recommence ensuite l’opération avec la nouvelle image et ainsi de suite tant qu’il reste des pixels. La méthode est légèrement différente selon que l’on comprime avec ou sans perte (ce n’est pas la même ondelette qui est utilisée). On obtient ainsi une série ordonnée de coefficients qui décrivent l’image.

Quantification
Quand on code avec pertes, la précision sur les coefficients d’ondelettes obtenus à l’étape précédente est réduite par ce qu’on appelle une quantification scalaire uniforme. Disons qu’on ne conserve qu’un ordre de grandeur plus ou moins précis des coefficients. (Précisons que la norme permet d’affecter un pas de quantification différent à chaque sous-bande).
Si l’on code sans perte, aucune quantification n’est appliquée (le pas de quantificationest égal à 1).

Codage entropique
Il s’agit maintenant d’appliquer un codage sans perte aux données obtenues. Disons pour faire bref, que JPEG utilise ce qui se fait de mieux dans le genre, ça s’appelle un codage arithmétique adaptatif avec contexte.

Allocation de débit
Il s’agit de fabriquer les paquets de données conformes à la norme qui seront ensuite enregistrés dans un fichier pour souvent être placés sur un serveur. Chaque paquet va correspondre à un layer (un niveau de qualité) d’un niveau de résolution d’une composante de l’image. Il comporte un en-tête qui identifie précisément son contenu et permet l’accès facile aux données dans le codestream. Enfin on va placer ces paquets de données les uns à la suite des autres derrière un en-tête qui précisera les paramètres de codage et l’ordre des paquets dépendra du type de progression désirée (par résolution ou par layers et en tenant compte des régions d’intérêt). Il est important de noter, même si ces possibilités ne sont pas encore exploitées, qu’il est toujours possible de modifier sur le serveur l’ordre dans lequel les paquets d’un même codestream sont envoyés vers le décodeur du client.

Notons au passage que le JPEG 2000 demande de 2 à 6 fois plus de calculs que le JPEG. Ceci peut paraître un grave inconvénient mais, loi de Moore oblige, la puissance de nos ordinateurs a été multipliée environ par 100 depuis la création du JPEG, il n’y a donc pas trop de raisons de s’inquiéter.

Vous êtes ici : Entrée > Ressources > Informatique > Compression des données > Première approche de JPEG 2000