Académique Documents
Professionnel Documents
Culture Documents
Le codage de l’information concerne les moyens de représenter les informations afin de pouvoir
les utiliser, les transmettre ou les stocker. Les ordinateurs manipulent et stockent différents
types d’informations (données). Ces données pouvant être des nombres, des textes, des images
et des vidéos. Un ordinateur ne sait interpréter que les séquences de symboles. Ces symboles
doivent être représentés en binaire. Le codage peut être défini étant un formalisme permettant
la représentation de l’information sous une forme compréhensible par l’ordinateur.
L’objective de ce TP est de vous familiariser avec le codage de l’information et les base de
compression de données en utilisant le codage d’image comme exemple.
Vous devez tout d’abord démarrer Matlab et copier dans Current Directory le répertoire de
travail suivant : "tp_compr_image".
Nous disposons de trois images non compressées représentées par des pixels codés en niveaux
de gris. Ces images sont au format PGM (Portable GrayMap).
Les fonctions suivantes permettent de charger puis de visualiser les images disponibles :
image1 = pgmload(‘mandrill_512.pgm’) ;
figure
imshow(image1,[0 255]) ; ([0 255])
Charger dans les variables image1, image2 et image3 les trois images mandrill_512.pgm,
peppers_512.pgm et lena_512.pgm puis les visualiser.
NB : On rappelle que pour afficher le contenu d’une variable, il faut écrire le nom de cette
variable dans la fenêtre de commandes.
1. Pour chaque variable image1, image2 et image3 :
a. Quelle est la nature de la variable ?
b. Quelle est sa taille ?
2. Que représente chaque élément de la variable ?
3. Quelles sont les valeurs possibles de chaque élément ?
4. D’après la question précédente, calculer le nombre de kilo-octets nécessaires au
stockage de chaque variable image1, image2 et image3 ?
5. Sortir de Matlab et aller dans le répertoire où sont stockées les trois images. Pour chaque
image, aller dans ‘propriétés’ et relever la taille du fichier en octets et la taille du fichier
sur le disque dur en octets. Reporter dans un tableau pour chaque image le nombre
d’octets nécessaires au stockage de la variable, le nombre d’octets du fichier et le
nombre d’octets occupés sur le disque.
6. Expliquer les résultats obtenus.
Débit d’une image : Un paramètre important utilisé en compression d’image est le débit. Le
sens de ce terme est différent de celui utilisé en transmission. En effet dans notre cas, un débit
s’exprime en bit/pixel. Il représente le nombre de bits total de l’image compressée sur le nombre
de pixels de l’image originale.
1.1. Comparer les résultats image1_a et image1_b afin de déduire le rôle de la fonction
floor().
Cette technique de compression consiste à ne garder, par exemple, qu’un pixel sur deux. L’effet
immédiat est une diminution de la taille de l’image d’un facteur 2 dans chaque dimension. La
fonction imresize() permet d’agrandir ou de réduire la taille d’une image. Ainsi, pour réduire le
pas d’échantillonnage de l’image d’un facteur 2 dans chaque dimension, on peut utiliser la
commande suivante :
image1_b = floor(imresize(image1, 0.5, ‘bicubic’));
figure,
imshow(image1_b, [0 255])
figure,
imshow(image1, [0 255])
Pour un débit de 2 bits par pixel, comparer les images obtenues avec chaque méthode.
3.1. Laquelle vous semble de meilleure qualité ?
3.2. Comparer les valeurs du PSNR avec chaque méthode et conclure.
Visualiser les images les plus dégradées de chaque méthode.
3.3. Laquelle vous semble de meilleure qualité ?
3.4. Comparer les valeurs du PSNR avec chaque méthode et conclure
Matlab dispose d’un codeur JPEG que vous pourrez utiliser pour coder une image avec une
qualité Q3 exprimée en %. Pour cela, écrire la commande suivante :
imwrite(uint8(image1),'nom_du_fichier.jpeg','jpg', 'Quality', Q3);