TP 1
TP 1
TP 1
Travail pratique No 1
La compression d’images fixes par DCT
Objectif général :
L’objectif principal de ce travail pratique est d’utiliser la transformée en DCT pour coder des
images numériques afin de permettre une compression des images en tenant compte du modèle
psycho visuel humain qui se comporte comme un filtre passe bas.
Théorie :
La compression d’images est une procédure indispensable dans les applications de transmission
de données à travers un réseau de communication. La norme JPEG constitue une des méthodes de
compression les plus fréquemment utilisées pour les images fixes. Elle consiste à transformer
l'
image en un code, dont l' espace de stockage est plus faible que celui de l'
image de départ. Pour
retrouver l'
image de départ, ou techniquement l' image de départ dégradée, il s'
agit de décoder le
code stocké en mémoire. Les étapes de codage et de décodage sont illustrées à la Figure 1, et sont
expliquées plus spécifiquement dans ce qui suit.
1/5
INF4710: Introduction aux technologies multimédia TP1
1
si w = 0
Dans les deux cas, c( w) = n
2
si w = 1...n − 1
n
Avec n, la taille du bloc, et F(x,y), la couleur au pixel (x,y) de l’image de départ.
• La quantification :
Cette étape consiste à atténuer les hautes fréquences du bloc, représentant les détails fins de
l'
image, auxquels l' œil humain est peu sensible. Techniquement, il s' agit de diviser termes à
termes les valeurs C(u,v) du bloc transformé par DCT, par les valeurs d' une matrice de même
taille, dite table de quantification. Cette dernière peut être construite de plusieurs manières,
comme :
- la table vue en cours. Pour obtenir les différents niveaux de compression, il s' agit de
multiplier cette table par un paramètre k ∈ ℜ .
- ou, en affectant à chaque élément une valeur proportionnelle à sa position dans la table,
suivant l'équation suivante :
Q (i, j ) = 10 + k × (i + j + 1) Eq. 3
avec k ∈ ℜ étant le facteur de qualité, relié au niveau de compression souhaité.
Le résultat de la quantification n'étant pas toujours entier, il s'
agit d'
arrondir les valeurs obtenues,
vers les valeurs entières les plus proches.
La quantification inverse consiste à multiplier les valeurs obtenues après le décodage de
Huffman, par la même matrice de quantification, utilisée lors du codage.
• Le codage de Huffman :
Suite à la quantification, de nombreux zéros apparaissent dans chaque bloc, essentiellement dans
les hautes fréquences. Il s'agit alors, avant le codage de Huffman, de réorganiser les valeurs du
bloc dans un vecteur. Cette étape représente la lecture en zigzag du bloc (Figure 2).
2/5
INF4710: Introduction aux technologies multimédia TP1
Elle permet de trier les valeurs par ordre croissant de fréquences. La plupart des zéros
apparaissent alors à la fin du vecteur obtenu. Cela étant réalisé, il est possible de tronquer le
vecteur de sorte à éliminer le dernier regroupement de zéros successifs. Finalement, avant de
réaliser le codage de Huffman, il s'agit de regrouper les vecteurs obtenus pour chaque bloc de
l'
image, dans un même vecteur, en faisant attention à séparer les vecteurs de blocs par une valeur
qui ne peut exister parmi les valeurs, par exemple le nombre 257. Nous obtenons ainsi un long
code. Pour réduire la taille de ce dernier, un codage de Huffman est effectué sur le vecteur
résultant. Lors du décodage JPEG, il s'agit d'exécuter les étapes inverses : décodage de Huffman,
puis, regroupement par vecteurs de blocs, et, passage de vecteurs à matrices de bloc.
Manipulations :
Dans ce travail pratique, vous utiliserez Matlab ou le langage que vous maîtrisez le plus pour lire
les trois images numériques fournies sur le site web du cours (Lion.bmp, Car.bmp,
Champs.bmp) et implémenter les différentes phases de la compression JPEG basée sur la
transformation DCT. Plus spécifiquement…
3/5
INF4710: Introduction aux technologies multimédia TP1
Parmi les fonctions de ce toolbox, vous utiliserez les fonctions mat2huff, huff2mat, qui
permettent respectivement le codage et le décodage de Huffman, ainsi que la fonction
imratio qui calcule le taux de compression. Voici quelques informations sur les
entrées/sorties des fonctions :
y=mat2huff(x)
x : matrice à encoder
y : structure contenant les valeurs encodées, avec y.code : vecteur des valeurs encodées
avec Huffman
y=huff2mat(x)
x : structure contenant les valeurs encodées
y : matrice des valeurs décodées
cr=imratio(f1,f2)
2. Pour chacune des images, effectuer une compression selon un niveau donné (par exemple
k = 1), en effectuant les opérations suivantes :
a. Effectuer un découpage préalable de l’image en blocs de 8*8 pixels;
b. Effectuer une transformation par DCT de chacun des blocs; pour vérifier si la DCT
est correcte, comparer avec la fonction DCT de Matlab.
c. Utiliser la table de quantification présentée en classe pour quantifier les
coefficients DCT obtenus pour chaque bloc;
d. Réordonner les valeurs quantifiées obtenues en zigzag;
e. Utiliser la fonction mat2huff pour générer le code de Huffman d’une matrice ainsi
que la fonction huff2mat pour effectuer l’opération inverse;
f. Utiliser la fonction imratio pour évaluer le taux de compression;
4. Refaire les manipulations décrites dans 2 et 3 pour effectuer une compression selon quatre
autres niveaux. Pour obtenir les différents niveaux de compression, multiplier la table de
quantification par un nombre entier k = 1, 4, 8, 12, 20.
4/5
INF4710: Introduction aux technologies multimédia TP1
1. Pour chaque image, tracer une courbe illustrant le taux de compression en fonction de
l’erreur quadratique moyenne obtenus pour chaque niveau de compression.
2. Comparer les résultats obtenus pour les trois différentes images puis discuter et expliquer
ces résultats en considérant les courbes tracées précédemment ainsi que les différentes
images obtenues.
3. Comparer les résultats obtenus pour une compression basée sur un découpage préalable de
l’image en blocs de 8x8 et une compression basée sur un découpage préalable de l’image
en blocs de 16x16. Discuter les résultats et les différences observées. Discuter les
avantages et les inconvénients de l’augmentation de la taille des blocs.
4. Quels avantages de la compression par bloc ressortez-vous de vos résultats ? Quels sont
les intérêts de la compression par bloc comparée à une compression sur l’image entière ?
Travail à remettre
La date de remise du rapport est le mercredi 25 février 2009. Une évaluation du code sera
effectuée à la fin de la séance du mercredi 18 février 2009.
5/5