mercredi 31 août 2011

LA COMPRESSION


La compression d'image est une application de la compression de données sur des images numériques. Cette compression a pour utilité de réduire la redondance des données d'une image afin de pouvoir l'emmagasiner sans occuper beaucoup d'espace ou la transmettre rapidement.
La compression d'image peut être effectuée avec perte de données ou sans perte. La compression sans perte est parfois préférée pour des images artificielles telles que les schémas, les dessins techniques, les icônes ou les bandes dessinées. C'est à cause du fait que les méthodes de compression avec perte, lorsqu'en particulier elles sont utilisées à des bas débits binaires, présentent des défauts de compression. Des méthodes de compression sans perte peuvent également être préférées pour garder une grande précision, tel que pour des balayages médicaux, ou des numérisations d'images destinées à l'archivage. Les méthodes avec perte sont particulièrement appropriées aux images normales telles que des photos dans les applications où une perte mineure de fidélité (parfois imperceptible) est acceptable pour réaliser une réduction substantielle du débit binaire.
Les méthodes les plus importantes de compression d'image sans perte sont :
la méthode du codage des répétitions ;
le codage entropique ;
les algorithmes à dictionnaire adaptable tels que LZW.
Les méthodes les plus importantes de compression avec perte sont :
la réduction de l'espace des couleurs aux couleurs les plus fréquentes dans une image. Les couleurs choisies sont indiquées dans la palette de couleur dans l'en-tête de l'image compressée. Chaque pixel indique juste une référence sur une couleur dans la palette de couleurs.
Cette méthode peut être combinée avec le dithering pour brouiller les frontières de couleur.
le sous-échantillonnage de la chrominance. Cette méthode profite du fait que l'œil perçoit la luminosité plus vigoureusement que la couleur, en laissant tomber au moins la moitié des informations de chrominance dans l'image.
le codage par transformation. C'est généralement la méthode la plus utilisée. La transformée en cosinus discrète et la transformation par ondelettes sont les transformations les plus populaires. Le codage par transformation comprend l'application de la transformation à l'image, suivie d'une quantification et d'un codage entropique.

LE JPEG

La norme JPEG est une norme qui définit le format d'enregistrement et l'algorithme de décodage pour une représentation numérique compressée d'une image fixe.

Une photo de fleur compressée en JPEG, avec des compressions de plus en plus fortes, de gauche à droite.


JPEG est l’acronyme de Joint Photographic Experts Group. C’est un comité d’experts qui édite des normes de compression pour l’image fixe. La norme communément appelée JPEG, de son vrai nom ISO/IEC IS 10918-1 | ITU-T Recommendation T.81, est le résultat de l’évolution des travaux qui ont débuté dans les années 1978 à 1980 avec les premiers essais en laboratoire de compression d’images.
Le groupe JPEG qui a réuni une trentaine d’experts internationaux, a spécifié la norme en 1991. Mais la norme officielle et définitive n'a été adoptée qu'en 1992. Pratiquement, seule la partie concernant le codage arithmétique est brevetée, et par conséquent protégée par IBM, son concepteur.
JPEG normalise uniquement l’algorithme et le format de décodage. Le processus d'encodage est laissé libre à la compétition des industriels et universitaires, du moment que l’image produite est décodable par un décodeur standard. La norme propose un jeu de fichiers de tests appelés fichiers de conformance qui permettent de vérifier qu'un décodeur respecte bien la norme. Un décodeur est alors dit conforme s’il est capable de décoder tous les fichiers de conformance.
Le brevet de la norme JPEG a été déposé par l'entreprise Forgent1, mais il a été remis en cause par le bureau américain des brevets (USPTO), qui l'a invalidé le 24 mai 2006 pour antériorité existante à la suite d'une plainte de la Public Patent Foundation qui considère ce brevet invalide2. Mais depuis le 27 septembre 2007, la société Global Patent Holdings, filiale d'Acacia Research Corporation, a à son tour revendiqué la paternité de ce format.
JPEG définit deux classes de processus de compression :
avec pertes ou compression irréversible. C’est le JPEG « classique ». Il permet des taux de compression de 3 à 100.
sans pertes ou compression réversible. Il n’y a pas de pertes d’information et il est donc possible de revenir aux valeurs originales de l’image. Les gains en termes de compression sont alors plus modestes, avec un taux de compression de l’ordre de 2. Cette partie fait l’objet d’une norme spécifique JPEG-LS.

La compression JPEG

Nous allons maintenant nous intéresser à l’algorithme.
On peut diviser la compression et la décompression JPEG en six étapes, voici l’organigramme :





Figure 1 : Organigramme de compression.
Attention, quand on suit l'algorithme du bas, on n'aboutit pas à l'image brute, mais à une image restituée, qui n'est en aucun cas l'image brute. Entre l'image brute et l'image restituée, il y a des écarts, qui seront d'autant plus importants que l'opération de quantification a été forte.


LE 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. 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 donc des fichiers d’un poids inférieur pour une qualité d’image égale. De plus, les contours nets et contrastés sont mieux rendus.
La norme comprend 12 parties sous la même dénomination JPEG 2000, c'est cependant à la première partie que l’on fait référence comme « cœur » du système. JPEG normalise uniquement 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 appelé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 tous les fichiers de référence de "conformance".


Les performances en compression de JPEG 2000, bien que meilleures que JPEG à bas débit ne sont pas révolutionnaires. Ce sont plutôt la multitude 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, ainsi que 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, ainsi que d’excellentes performances à haut débit, JPEG 2000 s'adresse aux professionnels de l’image, mais n'a pour l'instant que peu d'applications grand public. En particulier, sa présence sur le World Wide Web est marginale.




Principales étapes de l'encodage JPEG-2000

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 coefficients issus de cette transformée puis codage entropique. Les nouveautés par rapport à JPEG du point de vue compression sont l’utilisation d’une transformée en ondelettes, qui offre une scalabilité naturelle, mais surtout d’un algorithme de codage entropique très sophistiqué. Celui-ci est fortement basé sur l’algorithme EBCOT de David Taubman. Il consiste en un regroupement et une modélisation des coefficients ondelettes qui fournissent à un codeur arithmétique adaptatif un train binaire possédant les propriétés statistiques adéquates.
Il s'ensuit une étape d'allocation de débit qui permet de respecter le débit cible, et dont le travail est facilité par le partitionnement du train binaire formé 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, particulièrement abondante dans JPEG 2000.
Dans la norme JPEG 2000 un codestream est l'ensemble des données formées par les données images compressées regroupées dans des paquets ainsi que la syntaxe de haut niveau: en-têtes de pavés, 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.