Vous êtes sur la page 1sur 3

Université Mohamed El Bachir El Ibrahimi de Bordj Bou Arreridj

Faculté des Mathématiques et d'informatique


Département d'informatique
Master 2 : Réseaux & Multimédia
Compression des données multimédia

TP N° : 01
Compression des Images Fixes
JPEG (Joint Photographic Expert Group)
Objectifs :
Dans ce TP, nous allons travailler sur les images niveau de gris. Nous utiliserons ici
principalement des fonctions de la bibliothèque OpenCV. L’objectif de ce TP est de comprendre les
étapes de compression JPEG avec perte

Outils :
- OpenCV.
- Python, C++ , Java, MatLab.

Le travail demandé :
1ere Partie : compression
1ère étape : On divise l'image niveau de gris en blocs de 8x8 pixels.
[100 98 98 99 102 102 102 103]
Bloc [ 98 98 97 99 100 100 101 101]
8X8 [ 97 98 98 98 99 100 100 101]
[ 97 96 96 96 97 98 99 99]
Image originale [ 97 95 94 95 96 96 99 98]
[ 97 96 95 95 97 98 97 97]
[ 96 97 96 96 98 98 96 97]
[ 96 97 97 97 97 97 96 96]

2ème étape : On applique une Transformée en Cosinus Discrète à chacun des blocs. On obtient alors
des coefficients représentant les différentes fréquences de l'image. En haut à gauche se trouve les
basses fréquences, en bas à droite les hautes fréquences.
La fonction de transformation est :

Bloc après la transformation DCT


[782 -7 2 3 1 -1 0 0]
[ 10 -4 1 0 1 1 0 0]
[ 5 1 -2 0 0 -1 0 -0]
[ 0 -1 1 2 1 0 0 1]
[ -1 0 1 0 0 1 0 1]
[ 1 0 0 0 0 -1 1 0]
[ 1 0 0 0 0 0 1 0]
[ 1 0 0 0 0 0 0 0]

Page 1/3
3ème étape : On quantifie différemment les coefficients suivant la fréquence, Cette technique a pour
but de supprimer les hautes fréquences, qui sont moins visibles par l'oeil humain, vous devez choisir
l'un des trois types de quantification, Dans la norme JPEG, il existe 4 tables de quantification
différentes suivant la compression voulue.
[16, 11, 10, 16, 24, 40, 51, 61]
[12, 12, 14, 19, 26, 58, 60, 55]
[14, 13, 16, 24, 40, 57, 69, 56]
matrice_quantification = [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]

Chaque valeur du Bloc DCT est divisée par un nombre, puis arrondie à l’entier le plus proche

Bloc après la quantification [49 -1 0 0 0 0 0 0]


[ 1 0 0 0 0 0 0 0]
Coefficient DC [ 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0] Coefficient AC
[ 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]

4ème étape : On classe les coefficients suivant un ordre en zig-zag.


Le balayage en zig zag de bloc quantifié, nous donne la séquence suivante :
[49, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

5ème étape: On procède au codage entropique, c'est à dire que l'on passe d'une suite de coefficients à une
suite de zéros et de uns:
1- On code le coefficient DC du bloc traité en le soustrayant au coefficient DC du bloc précédent. On
appelle ça un codage différentiel.
Pour une image de taille 512 X 512, on trouve 4096 blocs
- Exemple : 49, 50, 53, 54, 56, 58, 60, 58, 62, 57,
- La différence : 49, 1, 3, 1 ,2 , 2,2,-2,4,-5,
- À partir de la table 1, la séquence est écrite comme suit :
49  ligne 6 (6,49) Codes de HUFFMAN des coefficients Diff DC
1  ligne 1 (1,1)
-5  ligne 3  (3,-5) Cat Code
Ce qui implique la séquence est déventée : 0 010
(6, 49),(1, 1),( 2, 3), (1, 1),( 2, 2),( 2, 2),( 2, 2), (2, -2), (3, 4),( 3, -5). 1 011
2 100
- A partir de la table de code huffman pour les coefficient DC 3 00
o 6 = 11110 4 101
5 1110
o 1 = 011 6 11110
o 2 = 100 7 111110
o 3 = 101 8 1111110
- Code final : 111101100010111100110111100101001010010 9 11111110
10001101100101010 10 111111110
11 1111111110

Page 2/3
2- On code les coefficients AC, pour éliminer les coefficients à zéro on regarde dans la table
d'Huffman ci-dessous le nombre de zéros avant un coefficient non nul ainsi que la catégorie du
coefficient non nul, on obtient alors un premier code, auquel on ajoute le code donnant la position
du nombre dans la catégorie.

La séquence : -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
S'écrite comme suit : (0,-1)(0,1)(EOB) Table -1-
À partir de la table 1 :
-1  ligne 1  nombre de bit = 1 code = 0
1  ligne 1  nombre de bit = 1  code = 1
Ce qui implique : (0,1)[0](0,1)[0](EOB)
À partir de la table de Huffman pour les coefficient AC :
(0,-1)  code = 00
(0,1)  code = 01
(EOB) =(0,0)  code = 1010

La séquence finale binaire = 0000011010


6ème étape :
Enregistrer les codes obtenues dans la phase de codification dans un fichier de type binaire
- Le nombre de bloc en ligne
- Le nombre de bloc en colonne
- La séquence des coefficients DC
- La séquence des Coefficients AC

2eme Partie : décompression


La décompression est l'opération inverse de la compression,
- En utilisant des tables de décodage pour décoder les Coefficients AC et DC
- En utilisant le balayage inverse pour construire les Blocs de DCT quantifié
- En utilisant la quantification inverse (la multiplication par la matrice de quantification)
- En utilisant la transformation inverse IDCT

- Fusionner les blocs après la transformation inverse pour avoir l'image originale
3ème partie : évaluation
1- Calculer le rapport de signal bruit (PNSR)
Écrire un programme qui nous permet de calculer le rapport signal à bruit, Le PSNR est donné par la
formule :

Remarque :

 Deux présentations identiques  Note =0.


 Date de remise : lundi 11 décembre 2023 Bureau N° 04 au premier étage de : 08 :00 à 12 :30.
 Le travail est en binôme pas plus de deux étudiants.

Page 3/3

Vous aimerez peut-être aussi