JPEG 2000
JPEG 2000 ou ISO/CEI 15444-1 est une norme commune à l'ISO, la CEI et l'UIT-T. C'est une norme de compression d'images produite par le groupe de travail Joint Photographic Experts Group.

Catégories :
Format de données numériques - Format de fichier graphique - Norme ISO - Compression d'image
Page(s) en rapport avec ce sujet :
- définit le codage des images numériques et est conçue pour supplanter la norme JPEG. L'extension des images au format JPEG 2000 est . jp2.... (source : ulb.ac)
- Résume. Le nouveau standard de compression d'image. JPEG-2000 est venu combler les lacunes de son prédécesseur JPEG, Mais JPEG - 2000 a impose de ... (source : www-rech.telecom-lille1)
- ... Convertir des PDF en images (JPEG, BMP, GIF, etc... ) Fiches pratiques... que JPEG 2000 est un progrès du JPEG classique, ... (source : commentcamarche)


JPEG 2000 ou ISO/CEI 15444-1 est une norme commune à l'ISO, la CEI et l'UIT-T. C'est une norme de compression d'images produite par le groupe de travail Joint Photographic Experts Group. JPEG 2000 est capable de travailler avec ou sans perte, utilisant une transformation en ondelettes (méthode d'analyse mathématique du signal). En compression irréversible, JPEG 2000 est plus performante que la méthode de compression JPEG ISO/CEI 10918-1 (JPEG baseline). On obtient par conséquent des fichiers d'un poids inférieur pour une qualité d'image égale. Qui plus est , les contours nets et contrastés sont mieux rendus.
La norme comprend 12 parties sous la même appellation JPEG 2000, c'est cependant à la première partie qu'on fait référence comme «cœur» du dispositif. JPEG normalise seulement l'algorithme et le format de décodage. La méthode d'encodage est laissée libre à la concurrence des industriels ou universitaires, du moment que l'image produite est décodable par un décodeur standard. La norme propose un jeu de fichiers de tests nommés fichiers de "conformance", qui permettent de vérifier qu'un décodeur soit conforme à la spécification de la norme. Un décodeur est dit conforme, s'il est capable de décoder l'ensemble des fichiers de référence de "conformance". C'est l'objet de la partie 4 du document.
|
|
Les performances en compression de JPEG 2000, quoique meilleures que JPEG à bas débit ne sont pas révolutionnaires. Ce sont plutôt la grande variété de nouvelles caractéristiques telles la scalabilité, les régions d'intérêt, la résistance aux erreurs de transmission, le codage sans pertes, la versatilité de l'organisation des données, mais aussi les diverses extensions visant une application (interactivité, sécurité, sans fil, etc. ) qui font l'intérêt de cette norme.
Par ses fonctionnalités avancées, sa capacité à gérer les images de grande taille, mais aussi d'excellentes performances à haut débit, JPEG 2000 s'adresse aux professionnels de l'image, mais n'a pour le moment que peu d'applications grand public. Surtout, sa présence sur le World Wide Web est marginale.
Principe général


Le processus de codage suit un schéma classique de modification des propriétés statistiques des données source par un changement d'espace par une transformée, avant quantification des cœfficients issus de cette transformée puis codage entropique. Les nouveautés comparé à JPEG du point de vue compression sont l'utilisation d'une transformée en ondelettes, qui offre une scalabilité naturelle, mais en particulier d'un algorithme de codage entropique particulièrement très élaboré. Ce dernier est fortement basé sur l'algorithme EBCOT de David Taubman. Il consiste en un regroupement et une modélisation des cœfficients ondelettes qui fournissent à un codeur arithmétique adaptatif un train binaire possédant les propriétés statistiques correctes.
Il s'ensuit une étape d'allocation de débit qui sert à respecter le débit cible, et dont le travail est facilité par le partitionnement du train binaire constitué par EBCOT. La dernière étape est la mise en forme syntaxique du codestream JPEG 2000, avec la formation des paquets, puis la syntaxe haut niveau, en particulier abondante dans JPEG 2000.
Dans la norme JPEG 2000 un codestream est la totalité des données constituées par les données images compressées regroupées dans des paquets mais aussi la syntaxe de haut niveau : en-têtes de tuiles, en-tête principal. Les métadonnées du format de fichier JP2 ne font pas partie du codestream. JP2 encapsule le codestream JPEG 2000 dans un format de fichier.
Prétraitement
DC level shift
La première étape, particulièrement simple, consiste à transformer les valeurs des pixels en valeurs signées. Typiquement, on passe d'une représentation de [0 255] à [-128 127], afin d'avoir un signal centré autour de zéro.
Transformée couleur


La transformée couleur est optionnelle. Elle consiste à passer de l'espace couleur de l'image d'origine (RVB généralement) à l'espace couleur YUV (1 luminance, 2 chrominances) plus adapté pour la compression car les 3 composantes sont nettement moins corrélées.
Deux transformées sont spécifiées : une irréversible (ICT pour Irreversible Component Transform), à cœfficients réels, et une réversible (RCT pour Reversible Component Transform) à cœfficients entiers. L'intérêt de la RCT est d'être utilisée en combinaison avec la transformée en ondelette réversible 5/3 pour la compression sans pertes.
Bien que la RCT puisse être utilisée pour du codage avec pertes, c'est le plus souvent l'ICT qui est utilisée car elle donne de meilleurs résultats.
Transformée en ondelette
La transformée s'effectue sur chaque tuile de chaque composante. Elle s'effectue sur une grille dyadique, i. e. chaque itération des filtres d'analyse est suivie d'une décimation par 2. Elle décompose l'image en 3NL + 1 sous-bandes où NL est le nombre de niveaux de décomposition (le nombre d'itérations des filtres d'analyse). La norme prévoit un nombre de niveaux de décomposition maximal de 32.
Il est envisageable d'utiliser deux types de transformées en ondelettes dans JPEG 2000.
- L'ondelette 5/3 ou de Le Gall est une ondelette dont les cœfficients des filtres d'analyse sont entiers. Il y a 5 cœfficients pour le filtre passe-bas et 3 pour le passe-haut. Ces filtres permettent une reconstruction idéale et peuvent être utilisés pour une compression sans pertes.
- L'ondelette 9/7 ou de Daubechies est à cœfficients réels, avec 9 cœfficients pour le passe-bas et 7 pour le passe-haut. Elle sert à meilleures performances que la 5/3 en termes de compression mais est aussi plus complexe.
JPEG 2000 permet l'implémentation de ces filtres soit par une classique convolution ou par la méthode du «lifting».
Découpage en tuiles
Occasionnellemen, il peut être intéressant de découper l'image en tuiles (de l'anglais tile : tuile, carreau). Il s'agit simplement d'un découpage rectangulaire de l'image, découpage à spécifier, qui est le plus souvent utilisé pour compresser des images de grande taille. Les tuiles sont alors un moyen de diminuer la complexité mémoire pour le codeur comme pour le décodeur, en œuvrant sur des sous-images indépendantes. Les tuiles peuvent avoir un impact visuel : on perçoit quelquefois les limites des tuiles (lignes horizontales et verticales sur l'image).
Par défaut, l'image entière est reconnue comme une seule tuile.
Quantification
Le standard JPEG 2000 utilise un quantificateur scalaire uniforme à zone morte. La quantification vectorielle quoique théoriquement plus performante est reconnue comme trop coûteuse. Le quantificateur scalaire uniforme est au contraire extrêmement simple d'implémentation et peu coûteux.
L'intérêt de la zone morte provient des particulièrement nombreux cœfficients ondelettes non-nuls mais proches de zéro. Ces cœfficients n'apportent que particulièrement peu d'information pertinente, et leur codage entropique impliquerait un important surcoût au vu de la qualité gagnée. La zone morte permet par conséquent de se débarrasser de ces cœfficients en les quantifiant à zéro.
Codage entropique


Le codage entropique s'effectue indépendamment sur un code-bloc, un ensemble de cœfficients d'ondelettes quantifiés d'une sous-bande. Le codage est constitué de deux étapes.
La première étape est l'algorithme EBCOT (Embedded Block Coding with Optimal Truncation), découvert en 1998 par David Taubman [1]. Cet algorithme est un codeur par plan de bits. Chaque plan est encodé en trois passes : une passe de propagation de la signifiance (Significance Propagation), une passe d'affinage de l'amplitude (Magnitude Refinement), et une passe de nettoyage (Cleanup).
La seconde étape consiste en un codage arithmétique de la sortie EBCOT, par un codeur arithmétique dit codeur-MQ.
Cette partie de la norme est la plus consommatrice en CPU.
Allocation de débit
Cette fonction peut fluctuer fortement d'un algorithme de codage à un autre suivant les performances et fonctionnalités escomptées pour le codeur. Néanmoins l'ensemble des algorithmes d'allocation de débit ont pour but commun la création de paquets de données tels qu'ils sont définis dans la norme.
Chaque paquet correspond à une certaine couche (généralement associé au concept de qualité) d'un niveau de résolution d'une composante de l'image. Il est constitué d'un en-tête identifiant son contenu et donnant la possibilité un accès aléatoire rapide dans le codestream, mais aussi de données compressées obtenues par concaténation d'un certain nombre de coding passes de code-blocks d'un même niveau de résolution. Afin d'obtenir des taux de compression élevés, les dernières coding passes d'un code-block sont fréquemment sautées. Ce dernier cas revient plus ou moins à changer le pas de quantification, et par conséquent à diminuer la précision des cœfficients dont les bits de poids les plus faibles ont été évincés.
Enfin chaque paquet est ajouté au codestream suite à un en-tête (regroupant l'ensemble des paramètres de codage) et suivant un ordre d'inclusion dépendant du type de progression désiré (ex : par résolution, par couche). Rappelons tout de même qu'il est toujours envisageable de modifier la progression au moment de la transmission, à partir d'un même codestream stocké côté serveur. Ainsi, suivant l'ordre dans lequel le décodeur reçoit les paquets, il est capable de reconstruire une image progressivement par résolution ou par couche.
Mise en forme et syntaxe
Dans la terminologie JPEG 2000 un paquet est constitué d'un en-tête et du regroupement des données entropiques associées à une tuile, une couche de qualité, une composante, une résolution et un precinct. Pour une image monochrome (1 composante) compressée avec les options par défaut (1 tuile, 1 precinct, 1 couche de qualité et 5 résolutions) le nombre de paquets est par conséquent de 5.
L'ordre des paquets est important car il détermine la progressivité. Selon qu'on désire une progressivité spatiale, par couche de qualité, ou même par composante, l'ordre des paquets sera différent pour permettre un décodage progressif selon la modalité choisie.
Un paquet peut être vide, il n'y a alors pas de données entropiques qui correspondent à ce precinct spécifique, dans cette couche de qualité, cette composante et cette résolution. Ceci peut arriver sur de petites images sur-découpées par des tuiles et des precincts.
Régions d'intérêt
Une région d'intérêt (ROI pour Region Of Interest ) est une région de l'image qui est codée avec une plus grande précision, généralement parce que cette région présente un intérêt spécifique (ex : visage, plaque d'immatriculation…). Cette plus grande précision se fait au détriment des autres zones de l'image qui sont alors compressées à un taux inférieur et par conséquent dégradées. La sélection du ROI est faite par l'utilisateur, par conséquent généralement manuellement, mais il existe des algorithmes qui permettent une extraction automatique des ROI. Ces algorithmes ne font pas partie de JPEG 2000.
Résistance aux erreurs
Une originalité de JPEG 2000 est d'inclure des outils de résistance aux erreurs de transmission. Le problème vient principalement du codeur arithmétique car un seul bit erroné entraîne le décodage d'une mauvaise séquence.
Par défaut, le codage arithmétique agit en effet sur un code-bloc. En cas d'erreur (un seul bit erroné suffit) c'est la totalité du code-bloc qui est perdu. Pour limiter les effets de ces erreurs, la norme propose plusieurs outils, dont la philosophie est principalement de compartimenter les mots de codes ou de diminuer leur longueur afin d'éviter la propagation des erreurs ou de limiter leurs effets.
Les outils proposés sont les suivants :
- Marqueur de segment
- Ces marqueurs sont insérés après chaque plan de bit et sont codés arithmétiquement. Leur bon décodage indique que le plan de bit courant a été correctement décodé. Inversement, si le marqueur n'est pas trouvé, le plan de bit sera reconnu comme erroné et par conséquent supprimé.
- Terminaison à chaque passe
- C'est un moyen de limiter la propagation des erreurs, en compartimentant les données de façon fine (à chaque passe). Le décodeur arithmétique peut ainsi continuer le décodage en cas d'erreur.
- Marqueur de resynchronisation (SOP/EPH)
- Ces deux marqueurs indiquent le début et la fin de chaque paquet et permettent au décodeur de se synchroniser grâce au numéro de paquet inclus dans ces marqueurs. Il s'agit ici de marqueurs de syntaxe (non codés arithmétiquement) et dont la gestion est propre à chaque décodeur.
Ces outils ne suffisent pas pour une transmission sans fil. Des méthodes spécifiques ont été développées dans la partie 11 du standard, JPEG 2000 Wireless (JPWL).
Bibliographie
- David Taubman, Michæl Marcellin, JPEG2000 Image Compression Fundamentals, Standards and Practice,
Series : The International Series in Engineering and Computer Science, 2002, 800 p., ISBN 079237519X
Voir aussi
- OpenJPEG, bibliothèque open-source donnant la possibilité l'encodage et le décodage des images au format JPEG 2000.
Notes et références
- ↑ Davis Taubman, High performance scalable image compression with EBCOT, IEEE Transactions on Image Processing, Volume 9, Issue 7, Juillet 2000
Liens externes
- (fr) Site officiel
- (en) The JasPer Project Home Page - University of Victoria, codec de référence open source implémenté en C
- (en) JJ2000 - codec de référence open source implémenté en Java
- (en) Kakadu Software - codec C++ développé par David Taubman
- (en) Everything you always wanted to know about JPEG 2000 - Sept 2008 - published by intoPIX
Série JPEG | |||||
---|---|---|---|---|---|
Groupe JPEG | JFIF | JPEG-LS | JPEG | JPEG 2000 | Compression par ondelettes |
Recherche sur Amazon (livres) : |
Voir la liste des contributeurs.
La version présentée ici à été extraite depuis cette source le 07/04/2010.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.