Première approche de JPEG 2000
Conférence donnée au Club Photoshop
Un algorithme novateur
Lalgorithme utilisé par JPEG 2000, en fait une succession dalgorithmes, peut se décomposer, en première analyse, comme le montre le schéma suivant :
|
|
|
Transformée couleur
Cette phase est optionnelle mais si limage 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
Cest ici que lalgorithme 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 sest considérablement développée ces dernières années. Limage 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 limage est divisée dabord 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 lopération sont enregistrées sous forme de coefficients dondelettes. On recommence ensuite lopération avec la nouvelle image et ainsi de suite tant quil reste des pixels. La méthode est légèrement différente selon que lon comprime avec ou sans perte (ce nest pas la même ondelette qui est utilisée). On obtient ainsi une série ordonnée de coefficients qui décrivent limage.
Quantification
Quand on code avec pertes, la précision sur les coefficients dondelettes obtenus à létape précédente est réduite par ce quon appelle une quantification scalaire uniforme. Disons quon ne conserve quun ordre de grandeur plus ou moins précis des coefficients. (Précisons que la norme permet daffecter un pas de quantification différent à chaque sous-bande).
Si lon code sans perte, aucune quantification nest appliquée (le pas de quantificationest égal à 1).
Codage entropique
Il sagit maintenant dappliquer 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 sappelle un codage arithmétique adaptatif avec contexte.
Allocation de débit
Il sagit 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é) dun niveau de résolution dune composante de limage. Il comporte un en-tête qui identifie précisément son contenu et permet laccè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 lordre des paquets dépendra du type de progression désirée (par résolution ou par layers et en tenant compte des régions dintérêt). Il est important de noter, même si ces possibilités ne sont pas encore exploitées, quil est toujours possible de modifier sur le serveur lordre dans lequel les paquets dun 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 ny a donc pas trop de raisons de sinquiéter.
|
|
|