next up previous contents
suivant: Applications, performances, comparaisons monter: L'algorithme JPEG2000 précédent: Quantification dans JPEG2000   Table des matières

Sous-sections

Post-Traitements

Après la quantification, trois traitements sont appliqués: le premier vise à réduire la taille du code tout en conservant une certaine organisation qui sera exploitée lors du second traitement; ensuite nous verrons l'étape qui permet de déterminer la meilleure qualité à taux de compression donné.

Codage arithmétique adaptatif avec contexte

Le codage arithmétique adaptatif a été expliqué lors du modeste chapître traitant du codage. Il est appliqué sur chaque plan de bits. Les valeurs d'une même partition (correspondant à une zone d'un découpage fixé initialement par l'utilisateur) sur un plan de bit sont codées à l'aide du Codeur MQ (développé par Mitsubishi). Il est à noter qu'il existe un grand nombre de codeurs différents dont les efficacités sont similaires.

La nouveauté apportée avec JPEG2000 réside dans le mot contexte. Chaque bloc défini est codé indépendamment. Pour faire un parallèle, considérons un fichier complexe issu d'un traitement de texte: il contient du texte en français, du texte en anglais, des images, des tableaux... Chacune de ces zones a ses spécificités! Ainsi, le codage zone par zone donnera de bien meilleurs résultats qu'un codage global.

Bit Stream Organisation

Il s'agit ici de proposer une organisation des informations traitées pour proposer une reconstruction. Plusieurs philosophies sont possibles, nous énumérons celle qui nous ont semblé les plus utilisées:

Figure: Décomposition adoptée (ici issu de HAAR)
\includegraphics[width=11.0cm]{bitplane}

Basse résolution, haute qualité

Il s'agit de n'effectuer la récursion inverse que pour un nombre donné d'étapes:

Figure: Rendu Basse Résolution - Haute Qualité
\includegraphics[width=11.0cm]{BRHQ}

Sur cet exemple, la récursion tiendra compte de toutes les informations du niveau le plus profond, mais d'aucune information des autres niveaux. Ceci tend à créer des images entièremement floues. Au fur et à mesure qu'on augmente la résolution, les détails apparaissent.

Haute résolution, basse qualité

Il s'agit d'effectuer toutes les récursions inverses mais en ne tenant compte que des coefficients les plus importants. Ceci se réalise grâce aux plans de bits qui ont été auparavant stockés:

Figure: Rendu Haute Résolution - Basse Qualité
\includegraphics[width=11.0cm]{HRBQ}

Les principaux détails apparaitront tandis que les autres reliefs de l'images seront noyés dans un très fort flou. Au fur et à mesure de la recomposition, ces zones de floues deviennent claires.

Haute résolution, maximisation du ratio signal/bruit

Cette technique est plus complexe à mettre en oeuvre, mais permet de meilleurs résultats que les deux techniques précédentes. A moins d'avoir vraiment des niveaux faibles, on prend les bits les plus significatifs de chacun des blocs de récursion, sachant que le calcul du SNR (Signal to Noise Ratio, le rapport signal/bruit en français) impliquera de garder plus d'information pour les basses fréquences:

Figure: Organisation maximisant le rapport Signal/Bruit
\includegraphics[width=11.0cm]{snr2}

Résolution par couches, maximisation du rendu visuel

Conscients que la maximisation du SNR ne correspondait pas toujours au meilleur résultat visuel, les concepteurs de JPEG2000 ont mis au point un système qui permet d'obtenir le meilleur rendu visuel possible. Ils se sont ensuite attelés à la découpe des informations sous forme de couches (layers) de manière à ce que la recomposition se fasse de la meilleure façon qui soit:

Figure: Organisation optimisant le rendu visuel
\includegraphics[width=11.0cm]{Visuel2}

Le principe est que chaque couche améliore la qualité de l'image. Ces couches sont associées au SNR, au rendu visuel, ou peuvent être définies par l'utilisateur à l'encodage (l'un des gros point fort de JPEG2000 est d'être fortement paramétrable). Un nombre typique de couches est 20.

Voici un schéma qui résume le codage par blocs et le partitionnement (ce partitionnement, appelé precinct, correspond à une subdivision de l'image inférieure aux blocs et donc inférieure aux subbands; la taille est sélectionnable pour chaque niveau de résolution; ce partitionnement prend tout son intéret pour l'envoi de paquets). Si vous êtes perplexes, le schéma résume tout!

Figure: Niveaux de subdivision de l'image
\includegraphics[width=14.0cm]{zones2}

L'image est alors découpée en paquets. Conformément à ce qui vient d'être écrit, chaque paquet correspond à une pièce définie du partitionnement, une couche et un niveau de résolution.

Rate Allocation (dont ROI et résistance aux erreurs)

Définition

On appelle Rate Allocation le procédé qui permet de fixer le taux de compression avec la meilleure qualité possible (SNR, visuel,...). Une fois de plus, tout est ajustable pour chacun des paquets. Pour y parvenir, plusieurs choix sont possibles:







ROI : Region Of Interest

La définition de telles régions permet de définir des zones dans lesquelles on considère l'information plus importante. Une ROI sera encodée plus fidèlement qu'une autre zone. Il en existe deux sortes:

Figure: Region Of Interest utilisée sur l'image du haut (taux 45:1)
\includegraphics[width=10.0cm]{roi}

Resistance aux erreurs

Cette caractéristique, appelée error resilience, permet à l'image de s'afficher quasi-correctement malgré des erreurs dues par exemple à une erreur dans un paquet (bit erroné, bit manquant, bit en plus). Avec JPEG2000, ces zones sont particulièrement floues, mais ce défaut reste nettement moins désagréable qu'une bandelette noire ou qu'un décalage de l'image!


next up previous contents
suivant: Applications, performances, comparaisons monter: L'algorithme JPEG2000 précédent: Quantification dans JPEG2000   Table des matières