Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
MIRA de Béjaia
Master Département : ATE
Spécialité :Télécommunication
Module : TVN
Chargé de cours :A. MEKHMOUKH
Année Universitaire : 2019/2020
Objectifs :
Nous allons, avec ce TP, comprendre le principe de compression d'une image.
Partie 1 :
Le principe de compression d'une image est représenté par le schéma synoptique ci-
dessous :
1
1. Transformer une image en composantes :
La première notion que nous allons aborder 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 étape va consister à charger une image et à la visualiser en mode
mono-dimensionnel et tri-dimensionnel. Ouvrir une feuille Simulink
ii. Charger l'image test.png. En cliquant 2 fois sur le module, les paramètres
du bloc apparaissent. Copier le nom du chier dans File name.
iii. Pour visualiser cette image, dans la librairie sinks, copier le bloc et le relier
à la source : Video Viewer.
iv. Démarrer la simulation, stockez le chier dans vos documents sous le nom :
testRGB. Vous voyez donc une image couleur.
v. Dans ce même chier, nous allons maintenant observer cette image en compo-
santes RGB : Rouge, Vert, Bleu. Dupliquer la source et 3 fois le bloc image
viewer. Choisir dans les paramètres du bloc image, la rubrique Image signal,
le menu separate color signals. Vous avez alors 3 sorties à relier chacune à
un bloc image viewer.
(b) Maintenant, nous allons transformer une image initialement en composante RGB,
en une image en composantes YcrCb :
iii. Vous rajouter un bloc image viewer, sur la source monodimensionnelle an
d'avoir l'image réelle. Vous pouvez aussi introduire un bloc image viewer sur
chaque sortie RGB an de comparer avec les composantes Y,Cr,Cb.
(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. Vous copiez le chier
précédent sous le nom test4 :2 :0.
i. Entrer le bloc Color Space Conversion et le bloc image viewer, intercaler
un bloc qui convertit l'image du format 4 :2 :2 au format 4 :2 :0 (à chercher
dans la bibliothèque). Observez les entrées et les sorties de ce bloc.
ii. An de voir si l'on retrouve l'image de départ, faire les transformations inverses
(passage du 4 :2 :0 au 4 :2 :2 et de YcrCb à RGB). Observez les signaux à chaque
bloc.
iii. Commentaires.
2. Comprendre la DCT
La deuxième étape que nous explorons est la formation de blocs en vue d'une DCT et
d'une quantication. Nous abordons cette étape de deux façons : en faisant des calculs
2
manuels, dans un premier temps, an de comprendre le principe de la DCT (Discrete
Fourier Transform) et dans un deuxième temps, en utilisant le logiciel Matlab an de
visualiser la modication des blocs de pixels au cours des diérentes opérations. DCT
à une dimension Dans le cours, comme nous traitons des images, nous avons travaillé
avec une DCT à deux dimensions, qui n'est pas facile à manipuler manuellement. An
de mieux comprendre le principe d'une DCT, nous allons maintenant utiliser une DCT
à une dimension dont les expressions (fonctions de base rendues orthogonales) sont
données ci-dessous :
(a) On suppose que le signal pour lequel on fait une DCT comprend N=8 échan-
tillons. Les fonctions de base de la DCTsont données par l'expression ci-dessous :
q h i
2 πu
p(x, u) = N
c(u).cos 2N (2x + 1) avec : x ∈ [0, 7] et u ∈ [0, 7]
Pour une valeur de u xée, x varie.
Dans un premier temps, on va considérer x variable continue ,x ∈ [0, 8] tracer
p(x, u) à l'aide du logiciel Matlab (x sera
les 8 fonctions de base de la DCT,
alors un vecteur = [0 :0.1 :8]). Nommer ce chier coefcont. Utiliser une
boucle for pour générer les fonctions de base et visualiser-les sur une même
fenêtre en utilisant l'ordre subplot. Vous pouvez aussi dans une autre fenêtre,
tracer les conversions de ces fonctions en image :
imagesc(nomfct) ; colormap(gray) ;
Dans un deuxième temps, on va considérer x variable discrète x ∈ [0, 7] pour
avoir 8 valeurs, tracer les 8 fonctions de base de la DCT, p(x, u) à l'aide du
logiciels Matlab (x devrait être un vecteur = [0 :7] mais Matlab ne prend pas
le zéro. . ..donc à adapter). Ce chier s'appellera coefnum. Visualisation, de
ces fonctions sur une même fenêtre avec subplot et sous forme d'images comme
précédemment.
Prendre une forme d'onde caractéristique pour les valeurs de pixels : par exemple,
une ligne de pixels de valeurs identiques (comme 128, 128, 128, 128, 128, 128, 128,
128) doit donner un seul coecient non nul (coecient 1). Acher cette séquence,
sa DCT et la DCT inverse sous forme d'images et de vecteurs (ordre Matlab :
imagesc(nom) ;).
Maintenant, on simule une image formée de pixels semblables à la forme d'onde 4
p(x,4), calculée ci-dessus. Pour cela, on calculera les 8 valeurs de la fonction dénie
par l'onde 4. On normalisera ces valeurs obtenues entre 255 et 0. Appliquer alors à
la suite de pixels la transformation DCT(arrondie), puis la DCT inverse. Donner
toutes les visualisations (images) sur un seul graphe (subplot) ainsi que les valeurs
des coecients de chaque transformation. Conclusion ?
3
3. Codage de Human :
An de vous rappeler sur le code de Human, coder manuellement la chaîne suivante :
CCTIRMTDXMCITCR
(a) Donner la table des fréquences.
(d) Quel est le nombre de bits de la suite compactée ? Quel est le taux de compression
obtenu (on comparera au cas où l'on aurait codé chaque caractère sur 10 bits) ?
1. Ouvrir une feuille de travail Matlab. Le chier sera appelé image. Commencer par
taper clear all ; et close all ; an d'eacer toutes les données à chaque nouvelle simu-
lation.
4
A l'aide de matlab, donner les valeurs numériques de ces coecients. Pour cela, il
sut d'écrire cette matrice sous Matlab, sans point virgule à la n ; les coecients
s'inscrivent dans la fenêtre courante de Matlab.
Représenter l'image de ces coecients : subplot(2,2,2) imagesc(A) colormap(gray) ;
Exprimer de la même façon la matrice transposée de D : DT = D' et la représenter
(changer le n° dans l'ordre subplot).
Sous forme matricielle, la DCT s'exprime de la façon suivante : C = D x A x DT
Réaliser cette opération. Arrondir les coecients par l'ordre : DCT = round( C
)
Donner l'image et les coecients de cette matrice. Commentez les résultats.
5
Donner la valeur du coecient DC de la DCT.
Donner la suite des coecients AC après balayage.
9. Sur cette suite, eectuer un codage RLC, puis ensuite un codage de Human. Pour
chaque codage donner votre démarche et le résultat.
Le compte rendu doit être disposé sur l'espace de dépôt (E-Learning du module) en
chier zippé ainsi que tous les scripts et fonctions sous le nom :
nom_prénom_et nom_prénom_groupe_TP1.rar . La date limite
de remise du compte rendu du TP doit être respectée , aucun retard n'est toléré .