I.3. JPEG ( Joint Photographic Experts Group)

publicité
Animation et Compression des
Images
Email : [email protected]
Site Web :
https://sites.google.com/site/abdelkrimabdelli/teaching
I.1. Animation d’ Images
Plusieurs techniques sont utilisées :
1.
Animations par affichages successifs : Elle consiste à afficher
successivement plusieurs images présentant les différentes phases d’un
mouvement. Le nombre d’images qu’il faut afficher en une seconde
pour obtenir une animation fluide dépend de la vitesse et du type de
mouvement. Si le mouvement est lent, on peut se contenter d’un
nombre d’images faible. Si le mouvement est rapide, il ne faudra pas
descendre en dessous de 16 images seconde. Il n’est pas envisageable
d’afficher de longues séquences animées composées d’images de la taille
de l’écran en 16 millions de couleurs à moins de disposer d’un
équipement professionnel. Afin d'optimiser une animation, trois
options sont possibles :
 - Réduire la taille des images
 - Réduire le nombre d’images par seconde
 - Réduire le nombre de couleurs
I.1. Animation d’ Images
I.1. Animation d’ Images
Animations par déplacement d’image :
Elle consiste à afficher une image fixe appelée sprite à différentes positions
successives de l’écran. Ces positions sont calculées en fonction d’une
trajectoire définie préalablement. La vitesse de déplacement peut être fixe
ou variable. Chaque fois que le programme déplace une image, il doit
d’abord l’effacer avec le fond avant de l’afficher à sa nouvelle position.
Tout déplacement d’image consiste en fait à déplacer trois images : une
image du fond, un masque de la taille de l’image sur lequel s’ajoute
l’image.
 Les images déplacées sont toujours de forme rectangulaire, ce qui peut
poser un problème. En effet, il est rare que les objets représentés soient
rectangulaires. Si l’image déplacée a un fond identique à celui du décor
(une couleur unie) alors la solution consiste à déplacer un morceau de
fond en même temps. Si le fond n’est pas uni alors l’image déplacée doit
avoir un fond transparent, et donc posséder une couleur déclarée comme
transparente.
2.
I.1. Animation d’ Images
Nous avons une image à l'écran (le fond) sur laquelle nous
voulons voir se déplacer un chien (le sprite) :
Spirite
Masque
I.1. Animation d’ Images
3.
Animations par déplacement d’images animées :
Il est tout à fait possible d’afficher de la même façon une image
animée. Il suffit pour cela de créer les différentes images
correspondant aux phases de l’animation. Pour chaque image, on
crée également un masque qui permette de voir le fond sur lequel se
déplace l’animation. On affiche alors successivement les images
selon la trajectoire du mouvement choisi.
Remarque : Lorsque l’affichage est effectué en couleurs indexées,
c’est à dire à l’aide d’une palette de 256 couleurs, il est impératif
que tous les éléments utilisent la même palette.
I.2. Compression des Images
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 Bitmap 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.
I.2. Compression des Images
Les méthodes les plus importantes de compression d'image sans perte
sont :
1. la méthode du codage des répétitions ;
2. le codage entropique ; tel que le codage de Huffman.
3. les algorithmes à dictionnaire adaptable tels que LZW.
Les méthodes les plus importantes de compression avec perte sont :
1. 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.
2. le sous-échantillonnage de la chrominance utilisé dans NTSC.
3. 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 (JPEG).
4. la compression fractale.
I.2.1. Algorithmes de compression sans pertes
 Algorithme RLE '' Run Length Encoding '
Cette technique est utilisée par de nombreux formats d'images
(BMP, PCX, TIFF), et consiste à repérer et à éliminer la
redondance des données. Une image contient souvent des
surfaces de couleurs identiques, il est donc plus efficace de coder
cette couleur et sa répétition que de coder unitairement chaque
point.
Par
exemple
la
séquence
"AAAAAHHHHHHHHHHHHHH" est remplacée par le
nombre de répétitions suivi de l'élément répété "5A14H".
Ce codage est intéressant pour des données comportant peu de
valeurs différentes et de longues séquences. Par contre il est
moins intéressant pour des images photographiques avec une
profondeur supérieure à 256 couleurs.
I.2.1. Algorithmes de compression sans pertes
 Algorithme de Huffman
Le codage Huffman (Huffman 1952) est élaboré par David Albert
Huffman, lors de sa thèse de doctorat au MIT publiée en 1952. Un
code binaire dont la longueur est variable est assigné à chaque
valeur selon le schéma suivant : « à une valeur fréquemment rencontrée on
affecte un code de longueur courte » . Une table de conversion recueille
les valeurs et le code qui leur est ainsi affecté. Cette table sera passée
comme paramètre à tout programme de décodage avant l’envoi des
données elles-mêmes.
Par cette méthode, le ratio de compression peut atteindre jusqu’à 8:1.
La qualité de la compression dépendra de l’algorithme statistique qui
établira la conversion. Dans la pratique, ce type de compression est
peu efficace pour les fichiers où l’on rencontre de longues chaînes de
valeurs différentes et uniques ; car ce genre de fichiers, une fois codés
avec cette méthode, deviennent plus longs que les originaux ! Pour
cette raison, le codage Huffman est réalisé par deux passages.
I.2.1. Algorithmes de compression sans pertes
 Algorithme de Huffman
Le premier passage crée l’algorithme statistique, le second code
les données. Un dernier point à relever est la lenteur de cette
méthode due au travail intense que le décodage impose au
processeur. Ce type de compression donne notamment de bons
résultats pour les images monochromes.
Le principe du codage de Huffman repose sur la création d'un
arbre binaire. Chaque caractère (valeur) constitue une des
feuilles de l'arbre à laquelle on associe un poids valant son nombre
d'occurrences. Puis l'arbre est créé suivant un principe simple : on
associe à chaque fois les deux nœuds de plus faibles poids pour
donner un nœud dont le poids équivaut à la somme des poids de ses
fils jusqu'à n'en avoir plus qu'un, la racine. On associe ensuite par
exemple le code 0 à la branche de gauche et le code 1 à la
branche de droite.
I.2.1. Algorithmes de compression sans pertes
 Algorithme de Huffman
Un arbre binaire construit sur la phrase "this is an example of a
huffman tree"
1
0
0
1
0
1
0
1
0
1
1
1
0
0
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
I.2.1. Algorithmes de compression sans pertes
 Algorithme de Huffman
Pour obtenir le code binaire de chaque caractère, on remonte
l'arbre à partir de la racine jusqu'aux feuilles en rajoutant à
chaque fois au code un 0 ou un 1 selon la branche suivie.
Pour coder ‘this', nous obtenons donc en binaire : 0110 1010
1000, 1011 soit 16 bits au lieu de 32 (4 caractères x 8 bits par
caractère).
I.2.1. Algorithmes de compression sans pertes
Utilisation de Algorithme de Huffman
 Le codage de Huffman ne se base que sur la fréquence relative des
symboles d'entrée (suites de bits) sans distinction pour leur
provenance (images, vidéos, sons, etc.). C'est pourquoi, il est utilisé
en général à un second niveau de compression, i.e, une fois la
redondance propre au média mise en évidence par d'autres
algorithmes. On pense en particulier à la compression JPEG pour les
images, MPEG pour les vidéos et MP3 pour le son, qui peuvent
retirer les éléments superflus imperceptibles pour les humains. On
parle alors de compression avec perte.
 D'autres algorithmes de compression, dits sans perte, tels que ceux
utilisés pour la compression de fichiers, utilisent également Huffman
pour comprimer le dictionnaire résultant. Par exemple, LZH (Lha) et
deflate (ZIP, gzip) combinent un algorithme de compression par
dictionnaire (dit de Lempel-Ziv) et un codage de Huffman.
I.2.1. Algorithmes de compression sans pertes
 Algorithme LZW pour Lempel-Ziv-Welch)
C’est un algorithme de compression de données sans perte. Il
s'agit d'une amélioration de l'algorithme LZ78 inventé par
Abraham Lempel et Jacob Ziv en 1978. LZW fut créé en 1984
par Terry Welch, d'où son nom. LZW avait été breveté par la
société Unisys. Il a été utilisé dans les modems (norme V42 bis)
et est encore utilisé dans les formats d'image numérique GIF ou
TIFF et les fichiers audio MOD.
Les ratios de compression obtenus avec cette méthode varient
entre 1:1 et 3:1, bien que certaines images fortement sousséquencées puissent atteindre jusqu’à 10:1.
I.2.1. Algorithmes de compression sans pertes
 Algorithme LZW pour Lempel-Ziv-Welch)
Elle construit dynamiquement un dictionnaire, initialisé avec les
256 valeurs de la table ASCII, en examinant les données : les
chaînes de caractères rencontrées sont placées une par une dans
le dictionnaire. Lorsqu’une chaîne est déjà présente dans le
dictionnaire, son code de fréquence d’utilisation est incrémenté.
Les chaînes de caractères ayant des codes de fréquence élevés
sont remplacées par un "mot" ayant un nombre de caractères le
plus petit possible et le code de correspondance est inscrit dans
le dictionnaire.
On obtient ainsi une information encodée et son dictionnaire.
La compression sera d'autant plus efficace que le nombre de
répétitions sera élevé.
I.2.2. Algorithmes de compression avec pertes
Elle ne s'applique qu'aux données « perceptuelles », en général
sonores ou visuelles, qui peuvent subir une modification, parfois
importante, sans que cela ne soit perceptible par un humain. La
perte d'information est irréversible (non conservative) : il est
impossible de retrouver les données d'origine après une telle
compression.
Les compressions d'image s'appuient ainsi sur certaines
caractéristiques de la vision humaine : notre oeil perçoit en effet
plus facilement les grandes masses que les détails et notre rétine
est davantage sensible aux variations de lumière que de couleur.
Ces compressions, en vue du gain de place, vont donc éliminer des
données qui altèrent davantage les teintes que la luminosité.
On distingue plusieurs types de compressions d'image :
I.2.2. Algorithmes de compression avec pertes
 La compression de type JPEG (JFIF, TIF-JPEG) : pour images en
24 bits, excellente compression mais effet de mosaïque pouvant être
visible, taux contrôlable par facteur de qualité, relativement rapide.
 La compression fractale (FIF : Fractal Image Format) : pour
images de 8 à 24 bits, taille ajustable sans effet de pixellisation, mais
présentant un effet de flou aux plus forts taux de compression, très
lent en compression, décompression rapide et progressive.
 La compression par ondelettes (WI : Wavelet Image, JPEG2000) :
excellente qualité, réglable, flou à fort taux de compression, pour
images de 8 à 24 bits, rapide, taux contrôlable par facteur de qualité.
Technique en progression.
I.3. JPEG ( Joint Photographic Experts Group)
Sous cette appellation se cachent plusieurs techniques de compression
dont le principe est le suivant : peu importent les données originales, on
ne garde que celles dont on ne peut se passer, les autres sont perdues. Ce
principe est applicable pour l’imagerie commerciale (dont la télévision
et les applications multimédia).
Basée sur la compression par transformations fréquentielles. Le taux de
compression d'une image JPEG est réglable. Plus ce taux est élevé, plus
le fichier résultant est léger, et plus l'image est dégradée. La compression
Jpeg. Cette méthode de compression est beaucoup plus efficace sur les
images photographiques (comportant de nombreux pixels de couleurs
différentes) et non sur des images géométriques (à la différence de la
compression LZW) car sur ces dernières, les différences de nuances
dues à la compression sont très visibles.
I.3. JPEG ( Joint Photographic Experts Group)
Cette méthode de compression est beaucoup plus
efficace sur les images photographiques (comportant de
nombreux pixels de couleurs différentes) et non sur des
images géométriques (à la différence de la compression
LZW) car sur ces dernières, les différences de nuances
dues à la compression sont très visibles.
I.3. JPEG ( Joint Photographic Experts Group)
Principe de Compression :
Cet algorithme est de type “Lossy” car il y a perte d’information :
en effet, cette technique profite des imperfections de la perception
de l'oeil humain. L'oeil perçoit mieux les contrastes sur les faibles
que sur les fortes intensités; cette propriété a des conséquences sur
le nombre de niveaux qui servent à coder l'image; celui-ci pourra
être plus faible pour les faibles intensités.
Ex : Sur une zone de l'image fortement éclaircie, les valeurs du
signal vidéo pourront être codées sur 5 bits (32 niveaux) au lieu de 8
bits (256 niveaux).
I.3. JPEG ( Joint Photographic Experts Group)
Principe de Compression :
L'oeil est plus sensible à l'intensité lumineuse qu'à la couleur. Ce qui va
permettre de numériser la composante couleur de l'image
(chrominance), avec moins d'échantillons sans dégradation apparente.
Rapport de 1 à 2 par rapport à la luminance. L'oeil enfin, agit comme
un intégrateur sur les hautes fréquences spatiales des images. Ainsi, on
peut directement éliminer certaines informations correspondant aux
hautes fréquences de l'image, ce qui a pour effet de créer des portions
d'images plus uniformes, et donc favoriser les opérations d'élimination
de redondance. Par exemple, une zone comportant une alternance très
serrée de raies noires et blanches peut être représentée par un nombre
unique correspondant au gris.
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG
L’image est décomposée en blocs de 8x8 pixels codés en Chrominanceluminance auxquels on applique une transformation en cosinus discret
(DCT) qui permet de repérer le niveau des détails. Un processus de
quantification permet ensuite de supprimer les détails non significatifs.
Un codage RLE réduit les zéros consécutifs puis un codage de
Huffman assure une compression de l’ensemble. Le taux de
compression pourra être choisi selon la définition désirée, il est élevé
car il s’agit d’une compression avec pertes.
I.3. JPEG ( Joint Photographic Experts Group)
.
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.
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 1 : Segmentation
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
carrés de 64 (8 × 8).
.
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 2 : 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.
Globalement, la luminance est définie sur chaque pixel tandis que
la chrominance est la valeur moyenne d’un bloc de 2 x 2 pixels.
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 3 : Sous-échantillonnage
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 3 : 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.
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 4 : 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. 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. 3.
À chaque bloc de pixels NN sont ainsi associées NN fréquences. 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.
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 4 : La transformée DCT
En particulier, le coefficient d’ordre (0,0), appelé aussi coefficient DC,
représente la composante continue, c’est-à-dire la luminance moyenne
du bloc. Plus l’ordre du coefficient augmente, plus il exprime une
variation spatiale de haute fréquence, dans le sens horizontal ou vertical de
l’image. Il est évident que, pour la plupart des blocs, tant la luminance que
la chrominance seront plus ou moins constantes, ce qui se traduira par : des coefficients de la DCT de valeur importante, pour les ordres faibles
(basses fréquences), - des coefficients peu significatifs pour les ordres
élevés. En sorte, On traduit le bloc de pixels en 64 coefficients
d’éloignement par rapport à la moyenne
Note : la DCT est une opération réversible, si tous les coefficients sont
conservés
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 4 : La transformée DCT
La transformée DCT s’exprime mathématiquement par :
Et la transformée DCT inverse s’exprime par :
Dans les deux cas, la constante C vaut :
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 4 : La transformée DCT
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 4 : La transformée DCT
Matrice (bloc de pixels) de base :
Équation 4 : Matrice d’origine.
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 4 : La transformée DCT
En effectuant la transformée DCT on obtient la matrice des
fréquences suivante :
Équation 5 : Matrice transformée DCT.
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 4 : La transformée DCT
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 4 : La transformée DCT
En effectuant la transformée DCT on obtient la matrice des
fréquences suivante :
Équation 5 : Matrice transformée DCT.
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 5 : La 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 8×8 nombres. La
quantification consiste à diviser cette matrice par une autre, appelée
matrice de quantification, et qui contient 8×8 coefficients savamment
choisis par le codeur.
Le but est ici d’atténuer les hautes fréquences (les valeurs de coefficients
faibles), 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).
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 5 : La quantification
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 5 : La quantification
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 ».
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 5 : La quantification
Une photo de fleur compressée en JPEG, avec des
compressions de plus en plus fortes, de gauche à droite.
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 5 : La quantification
Matrice quantifiée :
F*(i,j)= F(i,j) / Q(i,j) 
Considérons la matrice de quantification suivante :
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 5 : La quantification
Ce qui donne comme matrice des fréquences quantifiée :
Matrice quantifiée.
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 5 : La quantification
La matrice de quantification peut être donnée différemment
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 6 : Codage, compression RLE et
Huffman
Viennent enfin deux encodages sans perte, qui réduisent
encore le bitrate :
• Un codage RLE qui code plutôt les séquences de zéros;
• Un codage de type Huffman, qui accorde aux symboles les
plus fréquents les codes les plus courts.
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 6 : 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.
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 6 : Codage, compression RLE et
Huffman
Codage de notre exemple :
Ce résultat est ensuite compressé selon un algorithme RLE basé
généralement sur la valeur 0, puis un codage entropique de
type Huffman.
79, 1 (0), -2, -1, 2 (0), -1, EOB
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 6 : Codage, compression RLE et
Huffman
Lorsqu’on regarde l’exemple présenté à la section précédente,
la matrice quantifiée possède des 0 et -1 non en séquence. Le
codage de Huffman a pour but d’attribuer un code de petite
taille à une valeur fréquente dans la matrice. Il permet une
compression statistique des données.
Ce codage nous délivre deux tables (quantification et huffman)
qui sont enregistrées dans le fichier final.
I.3. JPEG ( Joint Photographic Experts Group)
Algorithme JPEG : ETAPE 6 : Codage, compression RLE et
Huffman
Schéma de codage simplifié.
I.3. JPEG ( Joint Photographic Experts Group)
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.
Résultat de la décompression.
I.3. JPEG ( Joint Photographic Experts Group)
Décompression JPEG
Ainsi que la matrice d’erreur :
L’erreur est majorée par 5 et a une moyenne de 1,6 pour un coefficient de
150 ; ce qui nous donne un pourcentage d’erreur d’environ 1 %, sur 64
valeurs.
I.3. JPEG ( Joint Photographic Experts Group)
Téléchargement