Images et Multimédia
Les formats d’images
Raster : PNM, BMP, GIF JPEG (2h)
Vectoriel : SVG (2h)
NPR
animation
vidéos
Son
SMIL (Synchronized Multimedia Integration
Language ) (2h)
Images numériques
Les différents formats
Webliographie
www.commentcamarche.net
WikiPédia
Plan
Les couleurs
Les formats Bitmaps / rasters
Les compressions
Définition
Image =
représentation réelle ou symbolique en 2 dimensions, d’objets, personnages,
abstraction,…
= ensemble de « formes » 2D en couleur (ou niveau de gris)
Image numérique =
traduite sous forme numérique
= ensemble de nombres représentant
l’image
Numérisation
Deux choses à coder :
Les formes
Les couleurs
Rappel : Codages des couleurs
L'ensemble des longueurs d'ondes visibles par l'oeil humain est appelé « spectre visible »
il est compris entre 380 et 780 nanomètres.
Un peu d’anatomie
La rétine de l’œil est composée, pour sa
partie de centrale, de « cônes » sensibles à différentes longueurs d’ondes
Il existe 3 sortes de cônes
une sorte pour le rouge (570 nm), appelés erythrolabes
une sorte pour le vert (535 nm), appelés chlorolabes
une sorte pour le bleu (445 nm), appelés
cyanolabes
Sensibilité de l’œil aux trois couleurs
primaires
Couleurs et mélanges : La synthèse additive
La synthèse additive est le fruit de l'ajout de composantes de la lumière.
Les composantes de la lumière sont directement ajoutée à l'émission,
c'est le cas pour les moniteurs ou les télévisions.
Rouge+vert+bleu = blanc.
L'absence de composante = noir.
Les couleurs secondaires = couleurs obtenues par composition 2 à 2 des couleurs primaires
vert + bleu = cyan
bleu + rouge = magenta
vert + rouge = jaune
Couleurs et mélanges : La synthèse soustractive
La synthèse soustractive permet de restituer une couleur par soustraction de couleurs à une source de lumière blanche
C’est la cas de la peinture : appliquer une couleur = filtrer la lumiere suivant cette couleur,
Les filtres correspondant aux couleurs complémentaires : jaune, magenta, et cyan.
L'ajout de ces trois couleurs donne du noir = filtre total
leur absence produit du blanc = aucun filtre
Ce procédé est utilisé en photographie et pour l'impression des couleurs.
Les couleurs secondaires sont le bleu, le rouge et le vert car :
Magenta + cyan = bleu
Magenta + jaune (couleur primaire) donne du rouge
cyan + jaune = vert
Modèle de couleurs Le codage RGB
Le codage RGB (Red Green Blue)
Mis au point en 1931 par la Commission Internationale de l'Eclairage (CIE)
Il consiste à représenter l'espace des couleurs à partir de trois rayonnements monochromatiques de couleurs :
rouge (de longueur d'onde égale à 700,0 nm),
vert (de longueur d'onde égale à 546,1 nm),
bleu (de longueur d'onde égale à 435,8 nm).
Le codage RGB
Remarque
Cet espace de couleur correspond à la manière dont les tubes cathodiques des écrans d'ordinateurs représentent les couleurs.
Ceci correspond à une synthèse additive des couleurs
•Le vert combiné au bleu donne du cyan
•Le bleu combiné au rouge donne du magenta
•Le vert combiné au rouge donne du jaune
Le codage RGB
Chaque composante de couleur est codée sur un octet
=> 2
8= 256 nuances pour chaque composante
soient 16 777 216 possibilités théoriques de couleurs différentes.
le codage RGB est généralement
représenté graphiquement par un cube
dont chacun des axes correspond à une
couleur primaire :
Le codage CMY
Le codage CMY (Cyan, Magenta, Yellow)
Correspond à la synthèse soustractive des couleurs
le noir obtenu par l'ajout des trois couleurs n'étant que partiellement noir en pratique (et coûtant cher),
les imprimeurs rajoutent une composante d'encre noire que l'on appelle noir pur.
On parle alors de quadrichromie, ou
modèle CMYK (Cyan, Magenta, Jaune, Noir
pur, ou en français CMJN).
Le codage HLS
S'appuie sur les travaux du peintre Albert H.Munsell
C’est un modèle de représentation dit "naturel", c'est- à-dire proche de la perception physiologique de la couleur par l'oeil humain
La couleur est décomposée selon les critères physiologiques suivants:
la teinte (en anglais Hue), correspondant à la perception de la couleur (T-shirt mauve ou orange),
la saturation, décrivant la pureté de la couleur, c'est-à-dire son caractère vif ou terne (T-shirt neuf ou délavé),
la luminance, indiquant la quantité de lumière de la couleur, c'est-à-dire son aspect clair ou sombre (T-shirt au soleil ou à l'ombre).
:
Le codage HLS
représentation graphique
Le modèle YUV (YCbCr)
Modèle essentiellement dédié à la vidéo analogique.
Y = Luminance
U et V Chrominance
La chrominance désigne la partie de l'image vidéo correspondant à l'information de couleur.
Y = 0,29 R + 0,59 G + 0,12 B
Il manque deux informations de chrominance pour que les trois informations de couleur (correspondant aux primaires) puissent être reconstituées.
U représente la différence de rouge (l'écart entre le niveau de rouge et la luminance) :
U = R - Y
V représente la différence de bleu (l'écart entre le niveau de bleu et la luminance) :
V = B - Y
C'est pour cela qu'il est préférable de noter la couleur primaire vert avec la lettre G, pour éviter toute confusion.
Facteur gamma
La luminance d'un écran d'ordinateur est non linéaire :
l'intensité lumineuse qu'il émet n'est pas linéairement proportionnelle à la tension appliquée,
elle correspond à une courbe fonction du gamma de l'écran (généralement compris entre 2,3 et 2,6) : I ~ Vgamma
facteur gamma = caractère non linéaire de l'intensité lumineuse d'un élément.
l'intensité lumineuse perçue par l'oeil n'est pas proportionnelle à la quantité de lumière effectivement émise
=> on compense la luminance en appliquant une transformation appelée «correction gamma».
A chaque périphérique d'affichage correspond une transformation gamma, pouvant elle-même être adaptée à la perception de
l'utilisateur.
Le codage CIE
1931
Les couleurs peuvent être perçues différemment selon les individus et peuvent être affichées
différemment selon les périphériques.
La Commission Internationale de l'Eclairage (CIE) a défini des standards indépendant des périphériques
les critères sont basés sur la perception de la couleur par l'oeil humain, grâce à un triple stimulus.
Le système colorimétrique xyY représentant les
couleurs selon leur chromaticité (axes x et y) et leur
luminance (axe Y).
Le diagramme représente sur la périphérie les couleurs pures,
rayonnements
monochromatiques
correspondant aux couleurs du spectre
La ligne fermant le diagramme se nomme la droite des pourpres,
elle correspond aux couleurs pourpres, composée des deux rayonnements
monochromatiques bleu (420 nm) et rouge (680 nm) :
On représente le gamut d'un dispositif d'affichage
on traçant dans le diagramme chromatique un polygone
renfermant toutes les couleurs qu'il est capable de produire.
Ce mode de représentation purement mathématique ne tient pas compte des facteurs physiologiques de perception de la couleur par l'oeil humain,
Il y a une place beaucoup trop large aux couleurs vertes.
=> En 1960 la CIE mit au point le modèle Lu*v*.
=> et 1976 le modèle La*b*
Codage des formes
Deux grandes catégories
L’une tient compte des caractéristiques du support d’affichage
Les formats « bitmaps » ou « rasters »
« Tableau de couleurs » à afficher sur le support
Pas de notion de forme
L’autre le tient compte uniquement des formes
Les formats vectoriels
Les formes sont codées par des modèles géométriques
=> 2 grands types de format d’images
Les formats de type bitmap
Principe
L’image est décomposée en pixel
Pour chaque pixel, on code la couleur
Matrice de valeurs
Avantages
Simple à mettre en œuvre
Affichage immédiat car en accord avec les périphériques d’affichage
Inconvénients
Taille de fichier important (stockage, transmission,…)
Dégradation de la qualité par zoom
Mieux adaptés aux images naturelles (photos)
Formats vectoriels
Principe
Les éléments géométriques de l’image sont codés à l’aide d’un modèle géométrique.
Exemple: cercle de centre (30,50) de rayon 10 de couleur «rouge »
Avantages
Taille de fichier faible
Pas de perte de qualité lors de zoom
Possibilité de réaliser de l’anti-aliasing
Inconvénients
Nécessite une modélisation
Plus complexe à mettre en œuvre
Nécessite un interpréteur du codage
Mieux adaptés aux images de synthèses
image bitmap image
vectorielle
Cercle Ensemble de points
positionnés le long d’un cercle
Notion de périphérique d’affichage
Une image numérique est « affichée » ou restituée sur un support:
Le principal support est le moniteur (écran)
mais aussi une feuille mais le principe reste le même
Une image sera affichée sur un support constitué d’un ensemble de « pixels
» ( PICture ELement) rangés en ligne et colonne (matrice ou tableau)
Pixel = un point de l’écran
Notion de résolution et de définition
définition = nombre de points (pixels) en ligne et en colonne affichables sur le support
Exemple : 640 x 480 ou 1024 x 1200
Le même notion est utilisée pour les images
Résolution = nombre de points par unité de surface,
exprimé en points par pouce (PPP), en anglais DPI pour Dots Per Inch)
Une résolution de 300 dpi signifie donc 300 colonnes et 300 rangées de pixels sur un pouce carré ce qui donne donc
90000 pixels sur un pouce carré.
La résolution de référence de 72 dpi nous donne un pixel de 1"/72 (un pouce divisé par 72) soit 0.353mm, correspondant à un point pica (unité typographique anglo saxonne).
Principe de codage d’une image bitmap
En relation avec le support d’affichage
une image = un tableau de valeurs
Une valeur par pixel
Cette valeur est codée avec un certain
nombre de bits déterminant la couleur ou l'intensité du pixel,
Ce nb de bits est appelé profondeur de codage (ou profondeur de
couleur/image).
Principe de codage d’une image bitmap
Il existe plusieurs standards de codage de la profondeur :
bitmap noir et blanc:
1 bit pour chaque pixel => 2 couleurs (noir ou blanc).
bitmap 16 couleurs ou 16 niveaux de gris:
4 bits pour chaque pixel => 16 possibilités d'intensités pour chaque pixel,
16 niveaux de gris allant du noir au blanc
ou bien 16 couleurs différentes.
bitmap 256 couleurs ou 256 niveaux de gris:
1 octet pour chaque pixel => 256 intensités de pixels,
256 niveaux de gris allant du noir au blanc
ou bien 256 couleurs différentes.
Principe de codage d’une image bitmap
palette de couleurs (colormap):
On définit une palette (ou table des couleurs) :
À un indice on fait correspondre une couleur
Chaque couleur de l’image est ainsi référencée dans cette table
Le nombre de bits réservé au codage de chaque indice de la palette détermine le nombre de couleurs pouvant être
utilisées.
indices sur 8 bits => 256 couleurs utilisables,
Pour chaque pixel on indique l'indice correspondant à la couleur
C’est ce qu’on appelle une image en couleurs indexées
Principe de codage d’une image bitmap
true color:
3 x 8 bits = 24 bits pour chaque pixel
Les 3 octets codent les composantes RGB (rouge, vert, bleu) du pixel
soit 24 bits =>16 millions de couleurs.
Il est possible de rajouter une quatrième composante permettant d'ajouter une
information de transparence ou de
texture, chaque pixel est alors codée sur
32 bits
Taille d’une images
La taille d’une image s’obtient simplement par
Taille = Largeur x hauteur x profondeur
Exemple
2.3 Mo 1.5 Mo
768 Ko 96 Ko
1024x768
1.4 Mo 937.5 Ko
468.7 Ko 58.6 Ko
800x600
900 Ko 600 Ko
300 Ko 37.5 Ko
640x480
187.5 Ko 125 Ko
62.5 Ko 7.8 Ko
320x200
True color (24 bits) 65000
couleurs (16 bits) 256
couleur s
(8 bits) Noir et
blanc (1 bit) Définition de
l'image
La transparence
La transparence définit le niveau d'opacité des éléments d'une image,
Elle donne la possibilité de voir à travers l'image des éléments graphiques située derrière celle-ci.
Il existe deux modes de transparence :
La transparence simple (pour une image indexée)
on définit parmi la palette de couleurs une des couleurs comme transparente
La transparence par couche alpha (ou canal alpha, en anglais alpha channel)
On ajoute pour chaque pixel de l'image un octet définissant le niveau de transparence (de 0 à 255).
Le processus d’ajout d’une couche transparente à une image est généralement appelée alpha blending.
Les formats bitmap
Structure d’un fichier bitmap
Exemple de format
PNM :
PBM, PGM,PPM,
BMP,
GIF,PNG,
JPEG
Structure d'un fichier bitmap
En-tête du fichier (en anglais file header):
la taille du fichier
où commencent les informations concernant l'image à proprement parler.
En-tête du bitmap (en anglais information Header) :
les dimensions et les couleurs,...
Palette (optionnellement)
Lorsqu'une palette est définie, elle contient successivement 4 octets pour chacune de ses entrées représentant :
La composante bleue (sur un octet)
La composante verte (sur un octet)
La composante rouge (sur un octet)
Un champ réservé (sur un octet)
Corps de l'image
Le codage de l'image se fait en écrivant successivement les bits
correspondant à chaque pixel, ligne par ligne en commençant par le pixel en bas à gauche.
File header Info header
palette
image
Les plus simples
Les formats d'images PNM (Portable aNyMap)
3 catégories:
pbm (portable bitmap)
pour les images bitmap (monochrome).
pgm (portable graymap)
pour les images en niveaux de gris.
ppm (portable pixmap)
pour les images couleurs.
PNM
Pour chacune de ces catégories il existe, pour les données de l’images,
un format ASCII = « ASCII »
un format binaire = « RAW »
PNM : En-tête du fichier
Un mot « magique » définissant le format
Pour les formats ASCII
P1 = PBM bitmap
P2 = PGM greymap
P3 = PPM pixmap
Pour les formats Binaires
P4 = PBM raw bitmap
P5 = PGM raw greymap
P6 = PPM raw pixmap
Suivi d’un séparateur = espace, Tab, LF ou
CR
PNM : En-tête du bitmap
La largeur de l’image en caractère ASCII
Un séparateur
Hauteur de l’image en caractère ASCII
Un séparateur généralement LF
Suivant la catégorie
PBM : rien
PGM : la plus grande valeur de niveau de gris en caractères ASCII (<= 65536) + séparateur
exemple 15 => 16 niveaux de 0 à 15.
PPM :la plus grande valeur de couleur en caractères ASCII (<= 65536) + séparateur
PBM : Corps de l'image
PBM ASCII
Les valeurs des pixels en ASCII séparées par un séparateur (espace)
Organisées de gauche à droite et de haut en bas
0 => blanc, 1 => noir
PBM raw
1 bit = 1 pixel (0=> blanc 1=> noir)
Regroupé par Octet (il n’ai pas tenu compte des bits complétant la ligne si la longueur n’ai pas multiple de 8)
PGM : Corps de l'image
N = nb de niveau de gris => N-1 = valeur max
Les valeurs : 0 => noir, N-1 => blanc
PGM ASCII
Les valeurs des pixels en ASCII séparées par un séparateur (espace)
PGM raw
Si N-1 < 256 chaque valeur est codée sur 1 octet
Si N-1 256 chaque valeur est codée sur 2 octets
L’octet le plus significatif est le 1er (Big Endian)
PPM : Corps de l'image
N-1 = valeur max des couleurs
Les valeurs : ensemble des 3 valeurs R V B
PGM ASCII
Les valeurs R V et B des pixels en ASCII séparées par un séparateur (espace)
Exemple : FF 00 00 00 FF 00
PGM raw
Si N-1 < 256 chaque valeur est codée sur 1 octet
Si N-1 256 chaque valeur est codée sur 2 octets
L’octet le plus significatif est le 1er (Big Endian)
Exemple en ASCII
P3 # feep.ppm 4 4 15
000 000
000 15 0 15
000 0 15 7
000 000
000 000
0 15 7 000
15 0 15 000
000
000
Le format BMP
Développé conjointement par Microsoft et IBM,
= fichier *.bmp
L'entête du fichier est composée de quatre champs :
La signature (sur 2 octets), indiquant qu'il s'agit d'un fichier BMP à l'aide des deux caractères.
BM, (424D en hexadécimal) => Bitmap Windows.
BA => Bitmap OS/2.
…
La taille totale du fichier sur 4 octets (attention octet faible)
Un champ réservé (sur 4 octets)
L'offset de l'image (sur 4 octets), c'est-à-dire l'adresse relative du début des informations concernant l'image par rapport au début du fichier
Le format BMP
En-tête du bitmap
La taille de l'entête de l'image sur 4 octets.
Les valeurs hexadécimales suivantes sont possibles suivant le type de format BMP:
28 pour Windows 3.1x, 95, NT, ...
0C pour OS/2 1.x
F0 pour OS/2 2.x
La largeur de l'image (sur 4 octets)
La hauteur de l'image (sur 4 octets)
Le nombre de plans (sur 2 octets). Cette valeur vaut toujours 1
La profondeur de codage de la couleur(sur 2 octets), valeurs possibles = 1, 4, 8, 16, 24 ou 32
La méthode de compression (sur 4 octets).
0 pas de compression
1 pour un codage RLE de 8 bits par pixel
2 pour un codage RLE de 4 bits par pixel
Le format BMP
La taille totale de l'image en octets (sur 4 octets).
La résolution horizontale (sur 4 octets), c'est-à- dire le nombre de pixels par mètre
horizontalement
La résolution verticale (sur 4 octets), c'est-à-dire le nombre de pixels par mètre verticalement
Le nombre de couleurs de la palette (sur 4 octets)
Le nombre de couleurs importantes de la palette (sur 4 octets). Ce champ peut être égal à 0
lorsque chaque couleur a son importance.
Le format BMP
Palette (optionnellement)
elle contient successivement 4 octets pour chacune de ses entrées représentant :
La composante bleue (sur 1 octet)
La composante verte (sur 1 octet)
La composante rouge (sur 1 octet)
Un champ réservé (sur 1 octet)
Le format BMP
Corps de l'image
Le codage de l'image se fait en écrivant successivement les bits correspondant à chaque pixel, ligne par ligne en
commençant par le pixel en bas à gauche.
Les images en 2 couleurs utilisent 1 bit par pixel (1 octet code 8 pixels)
Les images en 16 couleurs utilisent 4 bits par pixel (1 octet code 2 pixels)
Les images en 256 couleurs utilisent 8 bits par pixel, (1octet code 1 pixel)
Les images en couleurs réelles utilisent 24 bits par pixel, (3 octets code 1 pixel)
Chaque ligne de l'image doit comporter un nombre total d'octets qui soit un multiple de 4;
si ce n'est pas le cas, la ligne doit être complétée par des 0
Caractères B($42) et M($4D) indiquant un fichier de type BMP
Taille du fichier $0000004E = 78 octets (de l'offset 0 à l'offset 77) Réservé (toujours à 0)
Offset de l'image $00000036 = 54
Taille de l'entête $00000028 = 40 octets
Largeur de l'image $00000004 = 4 pixels
Hauteur de l'image $00000002 = 2 pixels
Nombre de plans utilisés $0001 = 1
Nombre de bits par pixel = $0018 = 24 (3 octets)
FF 00 00 B=255,V=0,R=0 : Bleu 00 00 00 B=0, V=0, R=0 : Noir
FF 00 FF B=255, V=0, R=255 : Violet FF FF FF B=255, V=255, R=255 : Blanc 00 00 FF B=0, V=0, R=255 : Rouge 00 FF 00 B=0, V=255, R=0 : Vert 00 FF FF B=0, V=255, R=255 : Jaune FF FF 00 B=255, V=255, R=0 : Cyan
Méthode de compression : 0 pas de compression
Taille de l'image $00000018 = 24 octets = 8 (pixels) x 3 (octets par pixel)
Résolution horizontale $00000EC4 = 3780 pixels par mètre
Résolution verticale $00000EC4 = 3780 pixels par mètre
Couleurs utilisées : 0 palette entière Nombre de couleurs important
Le format GIF
GIF = Graphic Interchange Format
= format de fichier graphique bitmap (par la société Compuserve. )
Il existe deux versions (développées respectivement en 1987 et 1989)
GIF 87a supportant
la compression LZW, l'entrelacement (permettant un affichage progressif),
une palette de 256 couleurs
la possibilité d'avoir des images animées (appelées GIFs animés) en stockant plusieurs images au sein du même fichier.
GIF 89a ajoutant la possibilité
de définir une couleur transparente dans la palette
de préciser le délai pour les animations.
Caractéristique du format GIF
peut contenir de 2 à 256 couleurs (2, 4, 8, 16, 32, 64, 128 ou 256) parmi 16.8 millions dans sa palette.
nombre de couleurs limitées (et non limité en couleurs différentes),
les images obtenues par ce format ont une taille généralement très faible.
le caractère propriétaire de l'algorithme de
compression LZW, implique une redevance à la société détentrice des droits, Unisys.
=> le format PNG est de plus en plus plébiscité, au
détriment du format GIF.
Le format PNG
Le format PNG permet de stocker des images en
noir et blanc (jusqu'à 16 bits par pixels),
en couleurs réelles (True color, jusqu'à 48 bits par pixels)
des images indexées avec une palette de 256 couleurs.
il supporte la transparence par couche alpha, (256 niveaux de transparence)
(GIF = une seule couleur de la palette comme transparente)
fonction d'entrelacement permettant d'afficher l'image progressivement.
La compression est sans perte et 5 à 25% meilleure que la compression GIF.
Le format stocke des informations sur le gamma de l'image, ce qui rend possible une correction gamma et permet une indépendance vis-à-vis des périphériques d'affichage.
Des mécanismes de correction d'erreurs sont également embarquées dans le fichier afin de garantir son intégrité.
Le format PNG
Il existe 2 types d'image PNG
le premier type (noté PNG-8)
la couleur de chaque pixel est codée sur un octet (8 bits)
et provient d'une palette, laquelle comporte 256 couleurs au maximum.
La compression n'est pas dégradante.
C’est le concurrent direct du format GIF ;
le second type (PNG-24) ,
la couleur de chaque pixel est codée sur 3 octets.
La compression n'est pas dégradante.
peut être considéré comme concurrent du format JPEG.
La compression:
notions et quelques exemples
La compression consiste à réduire la taille physique de blocs d'informations.
Il faut :
Un compresseur :
un algorithme qui sert à optimiser la « place mémoire » prise par les données
un décompresseur :
pour reconstruire les données originelles grâce
à l'algorithme « inverse »
La compression
Avantages:
Le stockage :
Stocker plus d’informations sur un même support
La transmission :
Transférer plus rapidement l’information
Inconvénients
Temps pour compresser l’information
Temps pour décompresser l’information
Définitions
Quotient de compression = Qc
Qc = taille finale / taille initiale
Taux de compression = Tc
Tc = 1/ Qc
Le gain de compression = Gc
Gc = 1 - Qc (= (taille initiale- taille finale) / taille initiale)
Exemple : en RLE
AAAAAHHHHHHHHHHHHHH"
compressée donne "5A14H".
Qc = 5/19 = 0,26
Taux = 1/Qc = 19/5 = 3,8
Gain = 1 - 0,26 = 0,74
Méthodes de compression
De grandes familles de compression
Sans perte d’information
RLE, LZW
Avec perte d’information
JPEG
Méthode RLE
RLE = Run Length Encoding,
utilisée par les formats d'images (BMP, PCX, TIFF)
Principe
On code un premier élément donnant le nombre de répétitions d'une valeur
puis le compléter par la valeur à répéter.
Exemples
« AAAAAHHHHHHHHHHHHHH »=>"5A14H".
« REELLEMENT»=> «1R2E2L1E1M1E1N1T» (gain
de compression = -60%)
Méthode RLE
Normalement définie pour un flux de données unidimensionnel, il existe des variantes pour les données bidimensionnelles
Remarques : sur RLE
Intéressante s’il y a de nombreux éléments consécutifs redondants,
c’est notamment le cas des images possédant de large parties uniformes.
Elle est simple à mettre en oeuvre.
La compression LZW
Abraham Lempel et Jakob Ziv sont les créateurs du compresseur LZ77, inventé en 1977 (d'où son nom).
Ce compresseur était alors utilisé pour l'archivage (les formats ZIP, ARJ et LHA l'utilisent).
En 1978 ils créent le compresseur LZ78 spécialisé
dans la compression d'images (ou tout type de fichier de type binaire).
En 1984, Terry Welch de la société Unisys le modifia
pour l'utiliser dans des contrôleurs de disques durs,
son initiale vint donc se rajouter à l'abréviation LZ
pour donner LZW.
Remarque sur la compression LZW
LZW est très rapide aussi bien en compression qu'en décompression,
Il est basé sur la multiplicité des occurrences de séquences de caractères
Son principe consiste à substituer des motifs par un code d'affectation (indice) en construisant au fur et à mesure un dictionnaire.
Il travaille sur des bits et non sur des octets, il ne dépend donc pas de la manière de laquelle le processeur code les
informations.
C'est un des algorithmes les plus populaires, il est notamment utilisé dans les formats TIFF et GIF.
La méthode de compression LZW ayant été brevetée par la société Unisys, c'est l'algorithme LZ77, libre de droit, qui est utilisé dans les images PNG.
Principe du LZW
1 octet est codé sur x bits
x détermine le nombre de mots dans le dictionnaire
X = 12 bits => 4096
On construit un dictionnaire dans une table qui ne sera pas stockée mais reconstruite par le décompresseur.
Le dictionnaire est initialisé avec les 256 valeurs de la table ASCII
Ce sont les 256 premiers mots
Algo de compression
Routine LZW_COMPRESS
STRING = get input character
WHILE there are still input characters DO CHARACTER = get input character
IF STRING+CHARACTER is in the string table
THEN
STRING = STRING+character
ELSE
output the code for STRING
add STRING+CHARACTER to the string table
STRING = CHARACTER
END of IF
END of WHILE output the code for STRING
Input String = /
WED/WE/WEE/WEB/WET
… WE
/
E/W E/
/WEE /WE
/W E/
/WE /W
D/
ED WE /W
String + Input Car
E/W 263
261 Dico
rien
/WEE 262
260 Dico
rien rien
E/
261 E
Dico
/WE 260
256 Dico
rien
D/
259 D
Dico
ED 258
E Dico
WE 257
W Dico
/W 256
/ Dico
New String New code value
Code Output Action
Après compression
/ W E D 256 E 260 261 257 B 260 T
=> 12 valeurs * 12 bits = 144 bits
Avant = 19 * 8 bits = 152 bits
Routine LZW_DECOMPRESS
Read OLD_CODE
output OLD_CODE
WHILE there are still input characters DO
Read NEW_CODE
STRING = get translation of NEW_CODE
output STRING
CHARACTER = first character in STRING
add OLD_CODE + CHARACTER to the translation table OLD_CODE = NEW_CODE
END of WHILE
Input Codes: / W E D 256 E 260 261 257 B 260 T
260=/WE E
E 256
260 B 257 261 260
E D E W
/ /
OLD_CODE
266 = /WET T
T
265 = B/
/WE 260
264 = WEB B
B
263 = E/W WE
257
262 = /WEE E/
261
261 = E/
/WE 260
259 = D/
/W 256
258 = ED D
D
257 = WE E
E
256 = /W W
W
/
New table entry Traduction =
STRING Output En rouge 1er caractère Input/
NEW_CODE
La compression JPEG
JPEG = Joint Photographic Expert Group
(1982-1986) experts de la photographie,
pour de transmettre des informations (images fixes ou animées).
JPEG définit deux classes de processus de compression :
sans perte avec des taux de compression assez moyens.
avec perte d'informations et gain substantiel,
=> meilleur taux de compression mais au détriment de la qualité
20:1 à 25:1 sans perte « notable » de qualité.
la compression est beaucoup plus efficace sur les
images photographiques et moins des sur images
géométriques/synthétiques
La compression JPG
La compression est réalisée en réduisant toutes les formes possibles de redondance qu’une image peut présenter :
Redondance spatiale :
tous les pixels sont identiques à l’intérieur d’une plage de l’image uniforme. Il suffit d’en coder un pour caractériser la plage
considérée.
La Transformée en Cosinus Discrète (DCT) utilisée dans l’algorithme JPEG, met en évidence cette redondance spatiale à l’intérieur de
chaque image.
Redondance statistique :
certaines données se répètent beaucoup plus fréquemment que d’autres.
La compression sera réalisée en attribuant des codes d’autant plus courts que la fréquence est élevée.
La compression JPG
Redondance subjective : mise à profit dans la compression non conservatrice
elle découle des imperfections de l‘œil humain.
Des pixels présentant des caractéristiques assez proches pour être perçus de manière identique peuvent être traités comme des pixels identiques.
l’œil est beaucoup plus sensible aux variations d’intensité lumineuse (luminance) qu’à celles de la couleur
(chrominance)
=> Les informations sur la couleur peuvent donc être davantage compressées que celles sur la luminance.
des pixels trop proches pour être distingués par l‘œil peuvent être regroupés
La compression JPG
1) La transformation dans l'espace couleur : RGB -> YUV
2) La transformée discrète en cosinus (TDC, DCT Discrete Cosine Transform) sur des pavé de 8x8 pixels
=> identification des amplitudes en fonction des fréquences
=> information à partir de plus proches des caractéristiques de l’œil.
3) Suppression des informations auxquelles l’œil est peu sensible
Se fait à partir d’une « table de quantification » construite à partir des caractéristiques de l’œil et de la qualité demandée
4) Le codage du parcours en longueur des zéros (RLC Run Length Coding)
5) Codage de Huffman
Les images pour Internet
Bonne qualité (36Ko) Qualité faible (14 Ko)
Comparaison
Comparaison sur un exemple de copie d’écran contenant essentiellement du texte.
87 Ko
PNG
210 Ko
Gif
58 Ko
Jpeg (Q=0)
233 Ko
Jpeg (Q=50)
590 Ko
Jpeg (Q=100)
5536 Ko
BMP
Taille
Format
Comparaison
Comparaison sur une photo
54 Ko
Jpeg (Q=25)
1066 Ko
PNG
416 Ko
Gif
6 Ko
Jpeg (Q=0)
57 Ko
Jpeg (Q=50)
590 Ko
Jpeg (Q=100)
1407 Ko
BMP
Taille
Format
Les images pour Internet
• Forcément en millions de couleurs.
• Pour paramétrer le facteur de
compression, observer les bords très contrastés : des sortes d'écho du bord sont un signe qu'on a été trop loin; on voit aussi apparaître des gros carrés dans les dégradés.
• max 256 couleurs.
• La compression se fait sur les zones de même couleur, et sur la réduction du nombre de couleurs.
• Attention, si on trame (diffusion) pour réduire le nombre de couleurs, on ne peut plus guère compresser puisqu'il n'y a plus de pixels successifs de même couleur.
• Pour des captures d'écran par exemple, on peut envisager de passer l'image en gris parfois et de réduire à 4 niveaux.
Remarques :
• Si il y a du texte
• S’il y a des bords contrastés
• Peu intéressant si l'image est en 256, et à fortiori en 16 ou 4 couleurs.
• Rarement mauvais.
• C'est le format à employer ne cas de doute.
• Si l'image doit être redimensionnée,
• Pas très bon pour les photos
A éviter si
• Pour les photos
• Si il y a des dégradés fins.
• Si on veut compresser très fort une image.
• Si il y a du texte dans l'image
• Si il y a des surfaces de même couleur (logos, icônes, schémas,...)
A choisir si
JPEG PNG / GIF
Les images pour Internet
En Résumé :
Choisir le JPEG pour les photos : une valeur de 30% est assez typique.