Image numérique
Types et Compression
2 LM
1
L’images numériques
• Une image numérique est une image acquise, traitée et stockée en bits.
• Une image numérique est un tableau de pixel : chaque pixel est codé par un nombre
binaire pour un niveau de gris, ou par trois nombres binaires qui correspond à une
nuance de rouge, de vert et de bleu (codage RVB)
2
Types d’images numériques
• Images matricielles ou rasters
- Une matrice (un tableau) de données numériques.
- A chaque position (x,y) de la matrice correspond une couleur pour
visualiser l'image sur l'écran d'un ordinateur.
3
Types d’images numériques
• Images vectorielles
- Une représentation des données de l'images par des formes géométriques (droites,
polygones, arcs de cercle), (extension: .fig, .svg...)
- L'image vectorielle est créée à partir d'équations mathématiques. Chaque forme dépend de
plusieurs paramètres (hauteur, largeur, rayon) donnés à des vecteurs.
4
Types d’images numériques
• Images Matricielle : • Image Vectorielle :
o Photographie o Illustration
o Retouche photo o Techniques / plan archi
o Document web o Edition numérique pour impression
o Numérisation (scan) o Document web
- Il en existe plusieurs espaces de couleurs, parmi lesquels : RVB, CMJN et LAB.
- RVB :une couche de rouge, une couche de vert et une couche de bleu.
- CMJN : une couche de cyan, une couche de magenta, une couche de jaune et une couche de noire.
- LAB : une couche de luminosité, une couche allant du rouge au vert et une couche
de bleu.
5
Codage des couleurs
6
Tailles des images
Koctets
7
Caractéristiques d’images numériques
• Résolution spatiale d'une image: nombre de pixels par unité de longueur de la structure à numériser (ppp
« pixel par pouce » ou dpi « dots per inch »).
• Résolution du format de l'image : nombre de pixels qui compose l'image en hauteur et en largeur.
• Taille des données pour une image (en bits) = nb_lignes x nb_colonnes x nb_plans
• Profondeur de bits : nombre de bits nécessaire pour représenter un pixel dans une image numérique
• Dynamique d'une image : l'étendu de la gamme de couleurs que peuvent prendre les
pixels d’une image.
• Poids d’une image: l’espace mémoire qu’elle occupe sur un support de stockage numérique = nombre de
bits par pixel x nombre total de pixels
• La dynamique de l’image détermine si une image est binaire, en niveau de gris, en couleurs indexées ou
en vrai couleurs.
8
Compression d’image
9
Compression d’image
Le poids d’une image matricielle non compressée dépend :
- du nombre de pixels qui la composent.
- du nombre de couches qui la composent :
o 1 couche si c’est une image en niveaux de gris
o 3 couches si c’est une image en RVB
o 4 couches si c’est une image en CMJN
La compression d'images est un processus crucial pour réduire la taille des fichiers image tout en préservant une qualité acceptable
de l'image.
Idées de base:
Les principales idées pour la compression sont basées sur:
- La quantification des niveaux de gris ou composantes couleurs ou bien des coefficients dans les images transformées.
- Le remplacement des suites d’octets identiques par des chaines plus courtes.
- Le codage des valeurs avec un code de longueur inversement proportionnelle aux
occurrences.
• Deux algorithmes sont largement utilisés :
- Le codage de Huffman: utilisé entre autres dans le format JPEG.
- Le codage LZW: utilisé entre autres dans le format GIF.
10
Compression d’image
1. Quantification des niveaux de gris ou des composantes couleur :
Supposons que nous ayons une image en niveaux de gris représentée par des valeurs allant de 0 (noir) à 255 (blanc). Plutôt que de
stocker chaque valeur de pixel avec une précision totale, on pourrait diviser l'intervalle de valeurs en plusieurs niveaux et assigner chaque
pixel à un de ces niveaux. Par exemple, au lieu de représenter chaque pixel par une valeur entre 0 et 255, nous pourrions utiliser une
quantification avec seulement 16 niveaux (de 0 à 15), réduisant ainsi la précision mais économisant de l'espace de stockage.
2. Remplacement des suites d’octets identiques :
Imaginons une image qui contient une zone uniforme, telle qu'un ciel sans nuages. Plutôt que de stocker chaque pixel de cette zone
séparément, nous pourrions utiliser une technique appelée la codification RLE (Run-Length Encoding). Dans cette méthode, les suites
d'octets identiques sont remplacées par une paire composée de la valeur de l'octet et du nombre de fois qu'elle apparaît de manière
consécutive. Par exemple, une suite de pixels noirs peut être compressée en une seule occurrence de la valeur de pixel noir et le nombre
de pixels consécutifs noirs.
11
Compression d’image
3. Codage des valeurs avec un code de longueur inversement proportionnelle aux occurrences :
Supposons que dans une image, certaines valeurs de pixels apparaissent beaucoup plus fréquemment que d'autres. Au lieu
d'utiliser un codage fixe pour toutes les valeurs, nous pourrions utiliser un codage variable où les valeurs les plus courantes sont
représentées par des codes plus courts et les valeurs moins fréquentes par des codes plus longs. Par exemple, dans une image en
niveaux de gris, si le pixel blanc est plus fréquent que le pixel noir, on pourrait attribuer un code plus court au pixel blanc et un code
plus long au pixel noir.
12
Compression JPEG:
- JPEG (Joint Photographic Experts Group)
- S’appuie sur une analyse de la perception de l'oeil humain, ainsi que sur l'usage de codeurs classiques (RLE, et Huffman)
- Ce format a l’avantage de fournir des images de bonne qualité et de petite taille, donc particulièrement utile sur Internet.
- L’œil est assez sensible à la luminance mais peu à la chrominance
JPEG applique des transformations afin de réduire les informations sur la chrominance et ainsi réduire la taille du fichier image
sans perdre une grande qualité de l’image.
- La compression JPEG standard s'appuie (en principe) sur 6 étapes:
13
• Etape 1 : Découpage en blocs
• Les blocs doivent être carrées (8x8 pixels et parfois 16x16 pixels).
• Petit bloc → temps de calcul raisonnable
• Etape 2 : Transformation de couleurs
• Les trois couleurs de base peuvent être transcodées en composantes de luminance et de chrominance
• Transformation de l’image dans un espace de couleurs optimales (YCrCb ou YUV).
o Luminance : Signal qui détermine les valeurs de contraste d'une image (Y).
o Chrominance : Partie du signal qui détermine les valeurs de couleur de l'image (CrCb ou UV).
Y : luminance
Cr : chrominance de rouge
Cb : chrominance de bleu
14
Etape 2 : Transformation de couleurs
• Formules de transformations:
o RGB → YUV :
Y = 0,299*R + 0,587*G + 0,114*B
U = 0,492* (B − Y) = −0,147*R − 0,289*G
V = 0,877*(R − Y) = 0,615*R − 0,515*G
o RGB → YCbCr :
Y = 0,299*R + 0,587*G + 0,114*B
Cb = − 0,1687 * R + − 0,3313 * G + 0,5 * B + 128
Cr = 0,5 * R − 0,4187 * G − 0,0813 * B + 128
15
Etape 2 : Transformation de couleurs
Exemple : Si nous avons un pixel avec des valeurs RVB (120, 50, 200), convertir ce pixel en YCrCb et YUV.
16
Etape 3 : Sous-échantillonnage (Downsampling)
• Exploiter la faiblesse de la sensibilité de l’œil à la chrominance.
• Sous échantillonner les signaux de chrominance en
moyennant des groupes de pixels ensemble.
• Transformer les matrices 8 x 8 en matrices 4 x 4 en faisant la
moyenne des quatre
• cases issues de la matrice (Cb ou Cr).
17
Etape 3 : Sous-échantillonnage (Downsampling)
Matrice d'origine 8x8 :
[50, 55, 60, 65, 70, 75, 80, 85]
[45, 50, 55, 60, 65, 70, 75, 80]
[40, 45, 50, 55, 60, 65, 70, 75]
[35, 40, 45, 50, 55, 60, 65, 70]
[30, 35, 40, 45, 50, 55, 60, 65]
[25, 30, 35, 40, 45, 50, 55, 60]
[20, 25, 30, 35, 40, 45, 50, 55]
[15, 20, 25, 30, 35, 40, 45, 50]
Pour réduire cette matrice en une matrice 4x4 en faisant la moyenne des valeurs de chaque groupe de 2x2 pixels, nous procédons comme suit :
Nouvelle matrice 4x4 (après sous-échantillonnage) :
[(50+55+45+50)/4, (60+65+55+60)/4, (70+75+65+70)/4, (80+85+75+80)/4]
[(40+45+35+40)/4, (50+55+45+50)/4, (60+65+55+60)/4, (70+75+65+70)/4]
[(30+35+25+30)/4, (40+45+35+40)/4, (50+55+45+50)/4, (60+65+55+60)/4]
[(20+25+15+20)/4, (30+35+25+30)/4, (40+45+35+40)/4, (50+55+45+50)/4]
Après avoir calculé les moyennes pour chaque groupe de 2x2 pixels, nous obtenons une nouvelle matrice 4x4 résultante avec des valeurs moyennes
Cette nouvelle matrice 4x4 représente la matrice de chrominance après sous-échantillonnage,
où chaque valeur représente la moyenne des valeurs de chrominance pour chaque groupe de
2x2 pixels dans la matrice d'origine. Ce processus de sous-échantillonnage réduit la résolution
de la chrominance tout en préservant une représentation globale de la couleur dans l'image,
contribuant ainsi à la compression de l'image. 18
Etape 4 : Transformée DCT
• Discrete Cosine Transform ou transformée en cosinus discrète
• Appliquer sur les blocs des matrices Y, Cb et Cr.
• Passer de la notion de pixels et couleurs à la notion de fréquences et amplitudes:
• Séparer les basses et les hautes fréquences présentes dans l’image:
- L’information essentielle sera stockée dans les basses fréquences, en haut à gauche.
- Les hautes fréquences seront stockées en bas à droite.
• Calcul des coefficients:
19
Etape 4 : Transformée DCT
• La transformation DCT est une décomposition d’une image en plusieurs sous-images de
bases (fonctions de bases).
Figure. Les différentes 64 sous-images produites par la DCT .
• Avant d’appliquer la DCT, soustraire 128 à chaque valeur et ce pour passer de l’intervalle
[0,255] à l’intervalle [-128,127].
• Après l’application de la DCT, arrondir les nombres pour avoir des entiers.
Figure. Image 8x8 (shift -128) Figure. DCT 8x8 arrondie
20
Etape 4 : Transformée DCT
21
Etape 5 : Quantification
• L’objectif principal de la quantification est de coder les coefficients sur un minimum de valeurs possibles, c'est-à-dire
moins de bits pour un coefficient donné.
• Réduire les hautes fréquences pour perdre les informations dont l’œil n’est pas très sensible c'est-à-dire la
chrominance → gagner de l’espace.
• Divise les matrices retournées par la DCT sur une matrice appelée la table de quantification ou matrice de
quantification.
• Il existe des tables de quantifications standards pour la luminance (Y) et les chrominances (Cb et Cr) :
22
Etape 5 : Quantification
• La table de quantification est paramétrable: en changeant un paramètre (facteur de qualité) on peut obtenir différents
niveaux de compression.
• Les tables doivent être transmises au décodeur.
• Arrondir les valeurs obtenues après quantification vers les valeurs entières les plus proches.
• Matrice quantifiée = F(a,b)/Q(a,b)
- F : matrice traitée par la DCT
- Q : matrice de quantification
Q(a,b) F(a,b)/Q(a,b)
Remarque : La quantification réduit plusieurs coefficients relatifs aux hautes fréquences au
coefficient 0 en fin du vecteur.
23
Etape 6 : Codage RLE et Huffman
• Parcours en Zigzag : former un vecteur où les coefficients relatifs aux basses
fréquences (haut à gauche) sont regroupés.
• Codage : Cette étape sert à compresser sans perte les coefficients quantifiés
parcourus en zigzag et stockés dans un vecteur.
On utilise le codage RLE et puis éventuellement un codage de Huffman.
24
Compression avec perte des données JPEG (Exercice)
• Question : Appliquer la 5ème étape (quantification)
voici un exemple de matrice DCT 8x8 arrondie :
94 64 64 64 64 64 64 94
90 75 64 64 64 64 75 90
87 75 64 64 64 75 75 87 Voici les matrices de quantification pour la luminance (Y) et une pour la chrominance
(Cb/Cr)
82 75 64 64 75 75 82 82
75 64 64 75 75 82 82 82 Matrice de quantification de luminance (Y) : Matrice de quantification de chrominance (Cb/Cr) :
64 64 75 75 82 82 87 87 16 11 10 16 24 40 51 61 17 18 24 47 99 99 99 99
64 75 75 82 82 87 87 90 12 12 14 19 26 58 60 55 18 21 26 66 99 99 99 99
64 75 82 82 87 87 90 94 14 13 16 24 40 57 69 56 24 26 56 99 99 99 99 99
14 17 22 29 51 87 80 62 47 66 99 99 99 99 99 99
18 22 37 56 68 109 103 77 99 99 99 99 99 99 99 99
24 35 55 64 81 104 113 92 99 99 99 99 99 99 99 99
49 64 78 87 103 121 120 101 99 99 99 99 99 99 99 99
72 92 0 0 0 0 0 0 99 99 99 99 99 99 99 99 25
Compression avec perte des données JPEG (Exercice)
Exercice : Correction
Matrice DCT après quantification pour Matrice DCT après quantification pour la
la luminance (Y) : chrominance (Cb/Cr) :
8 4 6 4 3 2 2 2 8 3 2 1 0 0 0 0
9 4 5 4 3 1 1 2 7 4 1 0 0 0 0 0
9 5 4 2 2 1 1 2 3 2 0 0 0 0 0 0
9 5 4 2 1 1 1 2 1 0 0 0 0 0 0 0
8 5 3 1 1 1 1 2 0 0 0 0 0 0 0 0
7 4 2 1 1 1 1 2 0 0 0 0 0 0 0 0
6 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
Explication : Dans le processus de quantification, les valeurs plus élevées dans les matrices de quantification entraînent une division
plus importante des coefficients DCT, ce qui réduit leur précision et donc la quantité de données nécessaires pour les stocker.
Cependant, cela peut également entraîner une perte de qualité d'image, en particulier pour les détails fins. C'est pourquoi les matrices de
quantification sont généralement conçues pour maintenir la qualité visuelle tout en permettant une compression efficace des données.
26