Vous êtes sur la page 1sur 22

République Algérienne Démocratique et populaire

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique

Université A/Mira – Bejaïa

Faculté de Technologie

Département de Génie électrique

TP N° :01(compression JPEG).

Réalisé par  :
-Haddouche Tinhinane
-Abdelli Yasmine
Groupe  : G1 Réseau et Télécommunication

2019/2020

1
Introduction
L’image est l’un des moyens les plus importants qu’utilise l’homme pour
communiquer avec autrui. C’est un moyen de communication universel dont la
richesse du contenu permet aux êtres humains de tout âge et de toute culture de
se comprendre. C’est aussi le moyen le plus efficace pour communiquer, chacun
peut analyser l’image à sa manière, pour en dégager une impression et d’en
extraire des informations précises.
De ce fait, le traitement d’images est l’ensemble des méthodes et
techniques opérant sur celles-ci, dans le but de rendre cette opération
possible, plus simple, plus efficace et plus agréable, d’améliorer l’aspect
visuel de l’image et d’en extraire des informations jugées pertinentes.

2
Partie 1 :
1- Transformer une image en composantes :
La première notion que nous allons abordé est de visualiser une image en
composantes RGB et en composantes YCrCb. Pour réaliser ces opérations nous
utilisons le logiciel Simulink.
a- Cette première partie va consister à charger une image et à la visualiser en
mode monodimensionnel et tridimensionnel.
● Dans la librairie « Video and Image Processing Bblockset »_source, on
recopie le module Image from file. Puis on charge l’image « test.png »,
en clique 2 fois sur le module, et on recopie le module fichier dans « File
name». pour visualiser cette image, dans la librairie «Sinks » on recopie
le bloc et on le relie a la source : « Video viewer », on stocke le fichier
dans nos documents sous le nom : « test.RGB »on va voir donc une image
en couleur :

3
● Dans le même fichier nous allons observer cette image en composantes
RGB. on duplique la source et 3 fois le bloc Video Viewer, on va choisir
dans les paramètres du bloc image, la rubrique image signal, le menu
« separate color signals », on va voir 3 sortie on relie chacune a un bloc
image viewer :

On lance le programme et on va obtenir ces 3 images :

⮚ Commentaire :
Une image est composée de pixels, ils sont définis par la combinaison de valeur
de luminosité du rouge, une valeur de luminosité du vert et une valeur de
luminosité de bleu sur une échelle allant de 0 (valeur absolue) à 255(luminosité
maximale de la couleur). Chaque composante représentant un niveau de couleur
primaire.
La somme vectorielle des trois composantes donne une couleur unique dans
l’espace des couleurs. Donc l’image couleur est représentée par 3 matrices
représentant respectivement l’intensité en rouge(R), vert(G) et bleu(B).

4
b- Maintenant, nous allons transformer une image initialement en
composantes RGB, en une image en composantes YCrCb :
On duplique le programme précédent sous le nom « testYCrCb », on intercale le
bloc « color space conversion » entre les 2 blocs source et visualisation :

Les résultats :

5
⮚ Commentaire :
Le Video viewer donne une image en composante Y, correspond à la
luminance, il s’agit d’une conversion de l’image couleur en une image en
nuances de gris.
Le Video viewer 1 représente une image en composante Cb correspond à la
chrominance bleue qui est une composante bleue moins Y.
Le Video viewer 2 représente une image en composante Cr correspond à la
chrominance rouge qui est comme étant la composante rouge moins Y.
Le signal Y, bien que noir et blanc, contient en effet toutes les informations pour
les trois couleurs, et Cb et Cr étant des différences par rapport à Y. En effet
l'œil humain est moins sensible aux détails de l'information de couleur 
(chrominance) que de ceux de l'intensité (luminance). Il est par conséquent
possible de dégrader la chrominance d’une image tout en gardant une bonne
qualité.
c- Cette dernière étape va consister à transformer une image en composantes
YCrCb, équivalent au format 4 :2 :2, en une image au format 4 :2 :0 :

En lance le programme et on va voir ce résultat :

6
Les transformations inverses :

Remarque
On ne retrouve pas l’image de départ.
⮚ Commentaire :
Le 4:2:2 est un sous-échantillonnage qui consiste à supprimer les informations de la
chrominance sur une colonne sur deux. La colonne restante possède alors la moyenne des
chrominances des deux colonnes. Lors de la décompression, il suffira de recopier cette
information sur la colonne vide.
Le 4:2:0 est un sous-échantillonnage qui effectue le même processus que le 4:2:2 mais en
effectuant aussi cette opération sur les lignes. On divise donc ici par 4 l’information de la
chrominance.

2- Comprendre la DCT

7
a) Dans un premier temps on va considérer x variable continue
(x= [0 :01 :8]), a l’aide du matlab on trace les 8fonctions de base de DCT :
● Le programme

Les résultats

● Les conventions de ces fonctions en image

8
- Dans un deuxième temps, on va considérer x variable discrète
(x= [0,7]), on trace les 8 fonctions de base de la DCT :
● Le programme

9
Les résultats

● Les conventions de ces fonctions en image

- On prend une forme d’onde m= [128 128 128 128 128 128 128 128]

10
On affiche cette séquence, sa DCT et la DCT inverse sous forme d’image et de
vecteur :

On calcule p(x,4) :
11
U=4,x=[1:8] ,N=8
P(x,u)=sqrt(2/N)*cos((pi*u/2*N)*(2*x+1)
On trouve ce resultat :
t=[1.1428 1.1428 1.1428 1.1428 1.1428 1.1428 1.1428 1.1428].

Conclusion

12
3- Codage de Huffman :
a) La table de fréquence :
M=CCTIRMTDXMCITCR.
S={C, T, I, R, M, D, X}
S C T I R M D X
fréquenc 4 3 2 2 2 1 1
e

b) L’arborescence de Huffman :
1 1
2 1
1 0 4
2 0 1
2 1 8 1
4 0 15
2 0 0
3 1 7
4 0

13
c) Le code binaire associé :
C 00
T 01
I 100
R 101
M 110
D 1110
X 1111

d) Le nombre de bits de la suite compactée :


NB=(4*2)+(3*2)+(2*3)+(2*3)+(2*3)+4+4=40 bits
● Le taux de compression (on comparera au cas où l’on aurait codé chaque
caractère sur 10bits :NB<NB’) :
NB’=15*10=150bits
T=NB/NB’=40/150=0.2666
Le code de Huffman :
Code optimal à longueur variable produisant la longueur moyenne L des
mots du code la plus faible
• Technique de codage très souvent utilisée comme “surcouche” à d’autres
méthodes de compression (ex: image JPEG...). Mais elle nécessite la
connaissance préalable des probabilités d’apparition des symboles de source.
Dans le cas d’une image à compresser,

Partie 2 : (compression d’une image)


Précédemment, nous avons travaillé sur les différentes transformations
nécessaires pour effectuer une compression des données. Maintenant, nous
allons mettre à profit tout ceci et à partir d’un bloc 8*8 pixels qui représente
un bloc de la luminance de l’image couleur spirale, nous effectuerons toutes
ces transformations en nous aidant du logiciel matlab. Soit la matrice 8*8 de
coefficients compris entre 0 et 255 qui représentent cette image spirale :
14
A=[43 42 41 40 39 38 37 64 ;
44 21 20 19 18 17 36 63 ;
45 22 7 6 5 16 35 62 ;
46 23 8 1 4 15 34 61 ;
47 24 9 2 3 14 33 60 ;
48 25 10 11 12 13 32 59 ;
49 26 27 28 29 30 31 58 ;
50 51 52 53 54 55 56 57]

- On va ouvrir une feuille de travail Matlab. Le fichier sera nommé


« image », on recopie la matrice A, puis on va la visualiser :

- L’image en couleur :

15
- L’image en niveau de gris :

- Maintenant on va ouvrir une nouvelle figure que l’on va partager en4 afin
d’observer plusieurs images à la fois :

- Avant d’effectuer une DCT, nous allons représenter la matrice D

16
- L’image de ces coefficients :

- La matrice transposée :
17
- L’image de ces coefficients :

- La DCT s’exprime de la façon suivante :

18
C=D*A*DT.
DCT=round(C).

- L’image de ces coefficients :

- L’étape suivante de cette compression est la quantification :

19
- L’image qui représente la matrice de quantification ainsi que ces
coefficients :

- L’opération de quantification est une division terme à terme qui dans


matlab se note : DCTQ=round (DCT./Q) .

L’image de cette nouvelle transformation et ces coefficients :

● Commentaire :
8-
20
- La valeur de coefficient DC=36
- les valeurs de coefficients AC=[-6 10 -3 4 0 1 0 -6 1 -2 0 -1 0 0 0 8 -2 0 0
0 0 0 0 -2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]
Les résultats après le balayage :

Le codage du reste de la matrice DCT quantifiée va se faire en parcourant les éléments dans l'ordre
imposé par une séquence particulière appelée séquence zigzag :

Cette séquence a la propriété de parcourir les éléments en commençant par les basses fréquences et
de traiter les fréquences de plus en plus hautes. Puisque la matrice DCT quantifiée contient

21
beaucoup de composantes de hautes fréquences nulles, l'ordre de la séquence zigzag va engendrer
de longues suites de 0 consécutifs. Deux mécanismes sont mis en œuvre pour comprimer la matrice
DCT quantifiée. D'une part, les suites de valeurs nulles sont simplement codées en donnant le
nombre de 0 successifs. D'autre part, les valeurs non nulles seront codées en utilisant une méthode
statistique de type Huffman ou arithmétique.

22

Vous aimerez peut-être aussi