Extension JPG

Extension JPG

JPEG

Page d'aide sur l'homonymie Cet article concerne le format. Pour le groupe, voir Joint Photographic Experts Group.
Une photo de fleur compressée en JPEG, avec des compressions de plus en plus fortes, de gauche à droite.

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.

Sommaire

Introduction au JPEG

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 Forgent[1], 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 invalide[2]. 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 dont voici l’organigramme :

Organigramme de compression
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.

Découpage en blocs

Le format JPEG, comme le font généralement les algorithmes de compression à perte, commence par découper l’image en blocs ou carreaux généralement carrés de 64 (8 x 8) ou 256 (16 x 16) pixels.

Transformation des couleurs

JPEG est capable de coder les couleurs sous n’importe quel format, toutefois les meilleurs taux de compression sont obtenus avec des codages de couleur de type luminance/chrominance tels que YUV, YCbCr car l’œil est assez sensible à la luminance mais peu à la chrominance.

Sous-échantillonnage

La façon la plus simple d’exploiter la faible sensibilité de l'œil à la chrominance est simplement de sous-échantillonner les signaux de chrominance. Généralement on utilise un sous-échantillonnage de type 2h1v ou 2h2v. Dans le premier cas (le plus utilisé) on a un sous-échantillonnage 2:1 horizontalement et 1:1 verticalement, dans le deuxième cas on a un sous-échantillonnage 2:1 horizontalement et verticalement. Ces sous-échantillonnages sont utilisés pour les chrominances, pour la luminance on n’utilise jamais de sous-échantillonnage.

Transformée DCT

La transformée DCT (Discrete Cosine Transform, en français transformée en cosinus discrète), est une transformation numérique qui est appliquée à chaque bloc et pour chaque « couleur ». Cette transformée est une variante de la transformée de Fourier. Cette méthode permet de décrire chaque bloc en une carte de fréquences et en amplitudes plutôt qu'en pixels et couleurs. La valeur d’une fréquence reflète l’importance et la rapidité d’un changement, tandis que la valeur d’une amplitude correspond à l’écart associé à chaque changement de couleur.

À chaque bloc de N\cdot N pixels sont ainsi associées N\cdot N fréquences

La transformée DCT s’exprime mathématiquement par :

\mathrm{DCT}(i, j)=\frac{2}{N}C(i)C(j)\sum_{x=0}^{N-1}\sum_{y=0}^{N-1}
\mathrm{pixel}(x, y) \cos\left[\frac{(2x+1)i\pi}{2N} \right] \cos\left[\frac{(2y+1)j\pi}{2N} \right]
Équation 1 : Transformée DCT directe.

Et la transformée DCT inverse s’exprime par :

\mathrm{pixel}(x, y)=\frac{2}{N}\sum_{i=0}^{N-1}\sum_{j=0}^{N-1}
C(i)C(j)\,\mathrm{ DCT}(i, j) \cos\left[\frac{(2x+1)i\pi}{2N} \right] \cos\left[\frac{(2y+1)j\pi}{2N} \right]
Équation 2 : Transformée DCT inverse.

Dans les deux cas, la constante C\,\! vaut :

C(x)=\left\{\begin{matrix}\frac{1}{\sqrt{2}}&
\mathrm{pour}~ x = 0 \\[1ex] 1 & \mathrm{pour}~ x > 0 \end{matrix}\right.
Équation 3 : Définition de la constante C.

Pour illustrer la compression a été repris un exemple complet provenant de « Digital Images Compression Techniques » de Majid Rabbani et Paul W. Jones.

Matrice (bloc de pixels) de base :

f=\begin{bmatrix} 139 & 144 & 149 & 153 & 155 & 155 & 155 & 155 \\ 144 & 151 & 153 & 156 & 159 & 156 & 156 & 156 \\ 150 & 155 & 160 & 163 & 158 & 156 & 156 & 156 \\ 159 & 161 & 162 & 160 & 160 & 159 & 159 & 159 \\ 159 & 160 & 161 & 162 & 162 & 155 & 155 & 155 \\ 161 & 161 & 161 & 161 & 160 & 157 & 157 & 157 \\ 162 & 162 & 161 & 163 & 162 & 157 & 157 & 157 \\ 162 & 162 & 161 & 161 & 163 & 158 & 158 & 158 \end{bmatrix}
Équation 4 : Matrice d’origine.

En effectuant la transformée DCT on obtient la matrice des fréquences suivante :

F=\begin{bmatrix} 1260 & -1 & -12 & -5 & 2 & -2 & -3 & 1 \\ -23 & -17 & -6 & -3 & -3 & 0 & 0 & -1 \\ -11 & -9 & -2 & 2 & 0 & -1 & -1 & 0 \\ -7 & -2 & 0 & 1 & 1 & 0 & 0 & 0 \\ -1 & -1 & 1 & 2 & 0 & -1 & 1 & 1 \\ 2 & 0 & 2 & 0 & -1 & 1 & 1 & -1 \\ -1 & 0 & 0 & -1 & 0 & 2 & 1 & -1 \\ -3 & 2 & -4 & -2 & 2 & 1 & -1 & 0 \end{bmatrix}
Équation 5 : Matrice transformée DCT.

Remarques

Le calcul d’une DCT est complexe. C’est l’étape qui coûte le plus de temps et de ressources dans la compression et la décompression JPEG, mais c’est peut-être la plus importante car elle nous a permis de séparer les basses fréquences et les hautes fréquences présentes dans l’image.

La puissance de calcul disponible aujourd’hui, alliée à des algorithmes de type FFT très efficaces, permet de rendre le temps de calcul tout à fait acceptable pour l’utilisateur courant, voire imperceptible pour les machines les plus puissantes.

Quantification

La quantification est l’étape dans laquelle on perd réellement des informations (et donc de la qualité visuelle), mais c'est celle qui fait gagner beaucoup de place (contrairement à la DCT, qui ne compresse pas).

La DCT a retourné, pour chaque bloc, une matrice de 8x8 nombres (dans l’hypothèse que les blocs de l’image font 8x8 pixels). La quantification consiste à diviser cette matrice par une autre, appelée matrice de quantification, et qui contient 8x8 coefficients savamment choisis par le codeur.

Le but est ici d’atténuer les hautes fréquences, c’est-à-dire celles auxquelles l’œil humain est très peu sensible. Ces fréquences ont des amplitudes faibles, et elles sont encore plus atténuées par la quantification (les coefficients sont même ramenés à 0).

Voici le calcul permettant la quantification :

F^*(u, v) = \left \lfloor { F(u, v) + \left \lfloor {Q(u, v) \over 2 } \right \rfloor \over Q(u, v) } \right \rfloor \cong entier le plus proche \left( { F(u, v) \over Q(u, v) } \right)
Avec :  \lfloor x \rfloor entier directement inférieur à x\,\!
Équation 6 : Calcul de la quantification.

Et pour la quantification inverse :

\hat F(u, v) = F^*(u, v) \cdot Q(u, v)
Équation 7 : Calcul de la quantification inverse.

Comme le montre l’image ci-dessous la quantification ramène beaucoup de coefficients à 0 (surtout en bas à droite dans la matrice, là où sont les hautes fréquences). Seules quelques informations essentielles (coin en haut à gauche) sont gardées pour représenter le bloc.

L'intérêt est qu'au moment de coder le résultat dans le fichier, la longue suite de zéros nécessitera très peu de place !

Mais si la quantification est trop forte (= taux de compression trop élevé), il y aura trop peu de coefficients non nuls pour représenter fidèlement le bloc ; dès lors, à l’écran la division en blocs devient visible, et l'image apparaît « pixellisée ».

Dans notre exemple nous avons pris la matrice de quantification suivante :

Q=\begin{bmatrix} 16 & 11 & 10 & 16 & 24 & 40 & 51 & 61 \\ 12 & 12 & 14 & 19 & 26 & 58 & 60 & 55 \\ 14 & 13 & 16 & 24 & 40 & 57 & 69 & 56 \\ 14 & 17 & 22 & 29 & 51 & 87 & 80 & 62 \\ 18 & 22 & 37 & 56 & 68 & 109 & 103 & 77 \\ 24 & 35 & 55 & 64 & 81 & 104 & 113 & 92 \\ 49 & 64 & 78 & 87 & 103 & 121 & 120 & 101 \\ 72 & 92 & 95 & 98 & 112 & 100 & 103 & 99 \end{bmatrix}
Équation 8 : Matrice définissant le niveau de quantification.

Ce qui donne comme matrice des fréquences quantifiée :

F^*=\begin{bmatrix} 79 & 0 & -1 & ~0~ & ~0~ & ~0~ & ~0~ & ~0~ \\ -2 & -1 & 0 & 0 & 0 & 0 & 0 & 0 \\ -1 & -1 & 0 & 0 & 0 & 0 & 0 & 0 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \end{bmatrix}
Équation 9 : Matrice quantifiée.

Remarques

Codage, compression RLE et Huffman

Le codage s’effectue en zigzag comme le montre la figure suivante et se termine par un caractère de fin :

Ordre de codage défini par la norme JPEG
Figure 2 : Ordre de codage défini par la norme JPEG.

Codage de notre exemple : 79, 0, -2, -1, -1, -1, 0, 0, -1, EOB\,\!.

Ce résultat est ensuite compressé selon un algorithme RLE basé sur la valeur 0 (le codage RLE intervient uniquement sur cette dernière), puis un codage entropique de type Huffman ou arithmétique.

Avec le schéma de codage très simplifié suivant on remarque que le codage nous délivre deux tables (quatre pour une image couleur). Ces tables étant enregistrées dans le fichier final peuvent être choisies par le compresseur.

Schéma de codage simplifié
Figure 3 : Schéma de codage simplifié.

Décompression JPEG

Les étapes de la décompression s’effectuent dans l’ordre inverse de la compression suivant les méthodes définies précédemment (en même temps que la compression).

Voici dans notre exemple le résultat de la décompression :

 f=\begin{bmatrix} 144 & 146 & 149 & 152 & 154 & 156 & 156 & 156 \\ 148 & 150 & 152 & 154 & 156 & 156 & 156 & 156 \\ 155 & 156 & 157 & 158 & 158 & 157 & 156 & 155 \\ 160 & 161 & 161 & 162 & 161 & 159 & 157 & 155 \\ 163 & 163 & 164 & 164 & 162 & 160 & 158 & 156 \\ 163 & 163 & 164 & 164 & 162 & 160 & 158 & 157 \\ 160 & 161 & 162 & 162 & 162 & 161 & 159 & 158 \\ 158 & 159 & 161 & 161 & 162 & 161 & 159 & 158 \end{bmatrix}
Équation 10 : Résultat de la décompression.

Ainsi que la matrice d’erreur :

e=\begin{bmatrix} -5 & -2 & 0 & 1 & 1 & -1 & -1 & -1 \\ -4 & 1 & 1 & 2 & 3 & 0 & 0 & 0 \\ -5 & -1 & 3 & 5 & 0 & -1 & 0 & 1 \\ -1 & 0 & 1 & -2 & -1 & 0 & 2 & 4 \\ -1 & 0 & 1 & -2 & -1 & 0 & 2 & 4 \\ -2 & -2 & -3 & -3 & -2 & -3 & -1 & 0 \\ 2 & 1 & -1 & 1 & 0 & -4 & -2 & -1 \\ 4 & 3 & 0 & 0 & 1 & -3 & -1 & 0 \end{bmatrix}
Équation 11 : Matrice des erreurs réalisées par les pertes.

Remarques

Les erreurs sont au maximum de 5 et en moyenne 1,6 sur environ 150 ce qui nous donne une erreur moyenne d’environ 1 %, et tout cela pour un passage de 64 à 10 valeurs (avec le caractère de fin) ; à cela il faut rajouter la matrice de quantification, mais comme généralement on compresse de gros fichiers, elle n’influence que peu.

JPEG, codage sans pertes

Ici, la précision p des échantillons varie de 2 à 16 bits. À la place de la DCT, le codage utilise un prédicteur P à trois échantillons.

Schéma de compression JPEG sans pertes
Figure 4 : Schéma de compression JPEG sans pertes.

Voir aussi

Notes et références

Série JPEG
Groupe JPEG JFIF JPEG-LS JPEG JPEG 2000 Compression par ondelettes
  • Portail de l’informatique Portail de l’informatique


t = (ti-tc)/ti, si ti et tc symbolisent respectivement les tailles initiale et après compression.

Exemple : si la taille initiale est 4, et la taille après compression 1, le taux est égal à (4-1)/4 = 0,75 = 75%.

Ce document provient de « JPEG ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Extension JPG de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Extension De Nom De Fichier — Pour les articles homonymes, voir Extension. En informatique, une extension de nom de fichier (ou simplement extension de fichier, voire extension) est un suffixe donné au nom d un fichier pour identifier son format. Ainsi, on dira qu un fichier… …   Wikipédia en Français

  • Extension de fichier — Extension de nom de fichier Pour les articles homonymes, voir Extension. En informatique, une extension de nom de fichier (ou simplement extension de fichier, voire extension) est un suffixe donné au nom d un fichier pour identifier son format.… …   Wikipédia en Français

  • Extension informatique — Extension de nom de fichier Pour les articles homonymes, voir Extension. En informatique, une extension de nom de fichier (ou simplement extension de fichier, voire extension) est un suffixe donné au nom d un fichier pour identifier son format.… …   Wikipédia en Français

  • Extension for Financial Services — (XFS) ist eine Programmierschnittstelle zur Steuerung von Peripheriegeräten in Selbstbedienungssystemen, wie beispielsweise Geldautomaten oder Überweisungsterminals. Die ursprüngliche Spezifikation von XFS stammt von Microsoft (WOSA/XFS). Heute… …   Deutsch Wikipedia

  • JPG extension — extension of highly compressed picture files (Computers) …   English contemporary dictionary

  • Extension de nom de fichier — Pour les articles homonymes, voir Extension. En informatique, une extension de nom de fichier (ou simplement extension de fichier, voire extension) est un suffixe ajouté au nom d un fichier pour identifier son format. Ainsi, on dira qu un fichier …   Wikipédia en Français

  • Extension Interface — Das Extension Interface Design Pattern zeigt einen Weg auf, wie mittels Software Design und Software Architektur Anwendungen strukturiert werden, damit diese resistent gegenüber Modifikation und Erweiterung sind. Aus diesem Grund kann man dieses… …   Deutsch Wikipedia

  • Extension continentale — Rift Un rift Un rift est une région où la croûte terrestre s’amincit. En surface, un rift forme un fossé d effondrement allongé, dont les dimensions peuvent atteindre quelques dizaines de kilomètres de large pour plusieurs centaines de kilomètres …   Wikipédia en Français

  • Extension — Expansion; Zuwachs; Ausdehnung; Ausweitung * * * Ex|ten|si|on 〈f. 20〉 1. Ausdehnung, Ausstreckung 2. 〈EDV〉 typisierende Erweiterung von Dateinamen, z. B. doc, pdf, jpg 3. 〈Logik〉 die Menge der unter einen Begriff fallenden Gegenstände; →a.… …   Universal-Lexikon

  • .jpg — JPEG File Interchange Format JPEG File Interchange Format Extension de fichier .jpeg, .jpg, .jpe, .jfif, .jfi Type MIME image/jpeg Développé par Joint Photographic Experts Group Type de format format d’image matriciel avec perte …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”