Forum ANALYSE (IPACO) Index du Forum

Forum ANALYSE (IPACO)
Le thème de ce forum est l'analyse de photos/vidéos présumées d'ovnis

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Compression JPEG (Processus détaillé)

 
Poster un nouveau sujet   Répondre au sujet    Forum ANALYSE (IPACO) Index du Forum -> Optique en photographie -> Vue d'ensemble
Sujet précédent :: Sujet suivant  
Auteur Message
elevenaugust
Administrateur
Administrateur

Hors ligne

Inscrit le: 17 Juin 2012
Messages: 80

MessagePosté le: Jeu 28 Juin - 17:14 (2012)    Sujet du message: Compression JPEG (Processus détaillé) Répondre en citant

Définition:


Le processus de compression et de décompression JPEG irréversibles comporte six étapes principales représentées ci-dessous :


  

Découpage en blocs


Le format JPEG, comme le font généralement les algorithmes de compression avec perte, commence par découper l’image en blocs ou carreaux généralement carrés de 64 (8 × 8) ou 256 (16 × 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 car l’œil humain est assez sensible à la luminance (la luminosité) mais peu à la chrominance (la teinte) d'une image. Afin de pouvoir exploiter cette propriété, l'algorithme convertit l'image d'origine depuis son modèle colorimétrique initial (en général RVB) vers le modèle de type chrominance/luminance YCbCr. Dans ce modèle, Y est l'information de luminance, et Cb et Cr sont deux informations de chrominance, respectivement le bleu moins Y et le rouge moins Y.
   


Sous-échantillonnage de la chrominance

Article détaillé : Sous-échantillonnage de la chrominance.

   
Illustration des différents types de sous-échantillonnage
   



Pour exploiter cette faible sensibilité de l’œil humain à la chrominance, on peut procéder à un sous-échantillonnage de ses signaux. Le principe de l'opération est de réduire de la taille de plusieurs blocs de chrominance en un seul bloc. Un traitement identique est appliqué aux blocs Cb et aux blocs Cr, tandis que les blocs de luminance (blocs Y) ne sont pas modifiés. Le sous-échantillonnage peut être réalisé selon plusieurs modes différents. Le type de mode utilisé dans une opération de compression est spécifié par la notation « J:a:b ».
L’interprétation de la notation est la suivante :
J : représente la largeur de la plus petite matrice de pixels considérée (généralement 4)
a : le nombre de composantes de chrominance dans la première ligne
b : le nombre de composantes de chrominance supplémentaires dans la deuxième ligne

Cas 4:4:4  Ce cas correspond à l'absence d'application du sous-échantillonnage.

Cas 4:2:2  Ce cas correspond à un sous-échantillonnage qui conduit à une réduction d'un facteur 1/2 de la taille des blocs Cb/Cr. Pour cela, on calcule la valeur moyenne de chrominance de deux pixels voisins horizontalement.

Cas 4:2:0  La moyenne de la chrominance de quatre pixels voisins est calculée et stockée dans le bloc produit par le sous-échantillonnage. Les pixels voisins forment des blocs carrés de dimension 2 × 2 pixels. Le sous-échantillonnage 4:2:0 ajoute donc une réduction verticale à la réduction horizontale du mode 4:2:2. Il conduit à une division par 4 de la taille des blocs Cb/Cr.
 
Cas 4:1:1  Ce dernier cas est rare en compression JPEG, et est plutôt appliqué dans des applications vidéo tel que les formats NTSC DV, DVCAM, DVCPRO.

Ce type de sous-échantillonnage permet de réduire de manière importante la taille des images. Cependant, il conduit à une perte d'information qui ne peut être récupérée dans la phase de décodage de l'image ; il s'agit donc d'une opération de compression irréversible. À l'issue de cette phase, les données se présentent sous la forme de blocs de coefficients Y, Cb et Cr, le nombre de blocs Cb et Cr étant égal au quart, à la moitié ou à 100% du nombre de blocs Y selon le mode sous-échantillonage appliqué.


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. Cette transformée est une variante de la transformée de Fourier. Elle décompose un bloc, considéré comme une fonction numérique à deux variables, en une somme de fonctions cosinus oscillant à des fréquences différentes. Chaque bloc est ainsi décrit en une carte de fréquences et en amplitudes plutôt qu'en pixels et coefficients de couleur. 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
pixels sont ainsi associées
fréquences

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


  

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


  

Dans les deux cas, la constante
vaut :


  

Pour illustrer la compression, a été repris un exemple complet provenant de Digital Image Compression Techniques de Majid Rabbani et Paul W. Jones3.

Matrice (bloc de pixels) de base :


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


  

L'application de la DCT est une opération théoriquement sans perte d'informations ; les coefficients initiaux peuvent être retrouvés en appliquant la « DCT inverse » au résultat de la DCT. Dans la pratique, une certaine perte d'informations reste cependant possible en raison des erreurs d'arrondis introduites en cours de calcul.

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 permet 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 avec les machines les plus puissantes.
Suite à cette étape, les basses et hautes fréquences sont distinguées. Les basses fréquences constituent les données majeures présentes dans une image, les hautes fréquences, quant à elles, caractérisent les zones à fort contraste, qui sont les changements brusques de couleur. Ces données étant moins visibles, c'est donc sur celles-ci que la compression s'effectuera.


Quantification

La quantification est l’étape de l'algorithme de compression JPEG au cours de laquelle se produit la majeure partie de la perte d'information (et donc de la qualité visuelle), mais c'est aussi celle qui permet de gagner le plus de place (contrairement à la DCT, qui ne compresse pas).
La DCT a retourné, pour chaque bloc, une matrice de 8×8 nombres (dans l’hypothèse que les blocs de l’image font 8×8 pixels). La quantification consiste à diviser cette matrice par une autre, appelée matrice de quantification, et qui contient 8×8 coefficients spécifiquement 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 ; certains coefficients sont même souvent ramenés à 0.
   


Le calcul permettant la quantification est le suivant :


  


Et pour la quantification inverse :


  


Comme le montre l'exemple ci-dessous, la quantification ramène beaucoup de coefficients à 0 (surtout en bas à droite dans la matrice, là où se trouvent les hautes fréquences). Seules quelques informations essentielles (concentrées dans le coin en haut à gauche) sont gardées pour représenter le bloc. La redondance des données contenues dans le bloc augmente ainsi fortement, ce qui peut être exploité par un algorithme de compression : au moment de coder le résultat dans le fichier, la longue suite de zéros nécessitera très peu de place. Cependant, 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. Le problème apparaîtra lors du décodage nécessaire pour l'affichage de l'image : à l’écran la division en blocs deviendra visible, et l'image aura un aspect « pixellisé ». Dans notre exemple, nous avons pris la matrice de quantification suivante :
  



  




  



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 :


  


Codage de notre exemple :
.

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.

 
  
  


Source
Revenir en haut
Publicité






MessagePosté le: Jeu 28 Juin - 17:14 (2012)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Forum ANALYSE (IPACO) Index du Forum -> Optique en photographie -> Vue d'ensemble Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  

Index | creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com