Vous êtes sur la page 1sur 16

Entropie, Codage d’Hoffman, Compression

des données JPEG


Créé par :
* Charmati Sewsen
* Mesbah Fethia
Sous la supervision de :
* Dr. Benhamza Karima
TP 01 : ENTROPIE

Introduction :

Dans ce premier TP, nous est demandé de calculer l’entropie de 3


images (Lena.tiff, Boat.png et Mandrill.png)

Réalisation du travail demandé :

1- Chargement des images : dans ce TP, on a utilisé la fonction


prédéfinie « imread(filename) » qui sert à lire l’image d’un
fichier ‘ filename’ .
2- Enregistrement des images sous forme JPEG + Visualisation :
pour effectuer l’enregistrement des images cités ci-dessus on a
utilisé la fonction prédéfinie « imwrite(A, filename) » qui sert à
écrire une image ‘A’ dans un fichier ‘filename’. Et en utilisant la
fonction prédéfinie « imshow(image) » on visualise les images.

3- Le calcul de :
a- La moyenne des images : la moyenne représente l’intensité
des image c'est-à-dire si la moyenne proche à 0 l’image sobre
sinon l’image claire, pour calculer la moyenne on utilisé
comme fonction prédéfinie « mean(size) » qui a comme
paramètre la taille.
b- La Variance : c’est la moyenne des carrés des écarts à la
moyenne d’image, on a utilisé la fonction prédéfinie « var
(double(Image))».

c- L’écart-type : c’est la variance des niveaux de gris dans


l’image, on a utilisé la fonction prédéfinie « std(filename) »

4- Histogramme d’image : il représente la distribution des niveaux


de gris dans l’mage, on a utilisé comme fonction
« imhist(Image) » qui calcule et dessine l’histogramme d’une
image quelconque.

.
5- Calcul de l’entropie : L'information moyenne associée à une
variable discrète aléatoire, X, donc :

Cette formule est implémentée sous Matlab dans les 3 images


comme se suit :

6- Le résultat :
a- La visualisation des images :
b- Pour le calcul :

c- H
istogramme de chaque image :
Conclusion :
TP 02 : codage d’Hoffman
Problématique : codage d’une séquence de symboles par Hoffman

L’ensemble des symboles sont {3 3 1 3 3 3 3 3 2 3}

Travail demandé :

1- Opération de codage : nous avons géneré un dictionnaire qui


associer à chaque symbole de l’ensemble {1,2,3} un codword ,
cette opération fait par la fonction « huffmandict(symbol,p) »
qui utilise comme paramètre les symbole de l’esemble et « p » la
probabilité de l’occurrence de chaque symbole dans l’ensemble

Apre nous avons appliqué la fonction


« huffmanenco(ensemble,dict » qui fait le codage de ensemble
par dictionnaire précédent.

2- Opération de décodage :nous avons utilisé le même dictionnaire


qui genre dans la 1ere partie et applique la fonction
« huffmandecoo(enscod,dict) » qui fait le décodage de
l’ensemble codé par le dictionnaire .

3- Calculer la langueur moyenne :


a- on a la fonction « huffmandict » retourner le dictionnaire et
la langueur moyenne.

b- L’entropie : en applique la fonction « entropy(p) » qui utilise


la probabilité des occurrences des symbole de l’ensemble.

4- Calculer le taux de compression :


TP3 : COMPRESSION DES DONNEES –JPEG-
(Joint Photographic Expert Group)
Introduction :
Dans ce rapport, on va parler de l’implémentation sous Matlab de la
compression d’une image donnée en suivant l’algorithme jpeg (DCT,
Quantification, Codage statistique) et on aura à la fin une image
compressée.

Les étapes du travail réalisé sous Matlab :


Comme première chose, on a défini comme entrée la matrice qui
représente la composante rouge d’une image codée en 16 millions de
couleurs (256 nuances de rouge), représentée sur les images ci-
dessous :
Etape 1 : Soustraction du nombre 128 à chaque valeur de la matrice
définie (128 est le résultat de la division des nuances du rouge 256 par

2)
Puis dans cette étape, on applique la DCT qui est de la forme
suivante :


img : représente la matrice de l’image
F : la matrice obtenue par la DCT
x, y, u, v vont de 0 à N-1, N est la largeur de la matrice
Cette formule est appliquée dans notre tp sous forme d’une fonction
(dct.m) qui est présenté sur l’image suivante :
Et on appelle cette fonction dans le programme principal comme se
suit : On a comme résultat :

Etape 2 : Quantification


Elle consiste à remplacer les valeurs de la matrice précédente par des
valeurs approximatives. La matrice de quantification Q peut être
donnée de cette formule :

Cette dernière est implémentée sous Matlab comme se suit : on a pris


F=5, u et v=1

 
Après avoir calculé le pas
de la quantification et
donc la matrice de la
quantification, on divise la
matrice obtenue (par la
DCT) par la matrice de la
quantification Q

On obtient comme résultat :


-La matrice de quantification : La matrice obtenue par
la division :
(On remarque que les
coefficients des hautes
fréquences sont presque
annulées)

Etape 3 : Compression


1. Tout d’abord on va balayer la matrice obtenue d’une manière
zigzag afin d’obtenir les suites de 0 les plus importantes
possibles, cette façon est représentée comme se suit :

Appliqué dans notre


tp comme se suit :
La matrice lue de la façon zigzag est représentée comme suit :

2. Utilisation d’une méthode de compression statistique (on a


utilisé celle de Run Length Encoding RLE) :
L’implémentation de cette méthode dans notre tp est sous forme
d’une fonction(RLE.m) comme représente l’image suivante :

La compression est faite par un simple appel de la fonction


RLE :
Ce qui donne comme résultat

Petite comparaison :
Taille d’image réelle : 64*8*3= 1536 bits (En mode RVB)
Taille d’image encodé par RLE : 8*82= 656 bits
C’est une réduction de la taille de 57%

L’image originale est donc devenue une image compressée, le


résultat est illustré dans l’image ci-dessous :