Vous êtes sur la page 1sur 3

M2 GRT

IST - G12 Séance no 3


—–
Année 2005-2006
—–
Travaux dirigés et travaux pratiques intégrés
de
Codage de sources

Compression vidéo

de motion-JPEG à H261

1 Objectif
Le but de ce TP est de vous montrer l’intéret du codage prédictif et de la compensation
en mouvement dans un contexte de compression vidéo. Pour cela, vous aurez à étudier trois
types de schéma de codage. Dans le premier, les images seront toutes codées en mode INTRA à
l’aide de JPEG. Dans le second, une schéma de codage prédictif sera mis en place de manière à
ne coder que la différence entre deux images successives. Enfin, le troisième schéma mettra en
œuvre un dispositif de compensation en mouvement, afin d’améliorer la prédiction et donc de
réduire l’énergie de la texture (différence entre image prédite et image réelle).

2 Environnement de travail
Ce TP sera réalisé avec Matlab en utilisant une boı̂te à outil de compression dont les
fonctions ont été développées par différentes personnes (tapez help nom de la fonction pour
en voir l’auteur). Vous trouverez cette boı̂te à outils sur le voisinage réseau à l’emplacement
indiqué par votre encadrant.
Copiez la boı̂te à outils sur votre disque local, par exemple dans
z:\TP_Compression
Lancez ensuite Matlab et faites en sorte que le dossier contenant la boı̂te à outils soit le
dossier courant
cd z:\TP_Compression\comp_tbx
addpath z:\TP_Compression\comp_tbx
Certains programmes donnés dans cet énoncé sont assez longs. Il est dans ce cas préférable
d’utiliser des fonctions. Avec Matlab, il est conseillé de placer chaque fonction dans un fi-
chier séparé portant le même nom que la fonction qu’il contient. Ainsi, le contenu d’un fichier
traitement.m serait
function [out1,out2] = traitement(in1,in2,in3)

% Fonction traitement
% Fait quelque chose
% Arguments d’entree : in1, in2, in3
% Aguments de sortie : ou1, ou2
%
% Exemple d’appel [s,x] = traiement(1,2,3);

1
out1 = in1+in2;
out2 = in1+in3;

% Fin de la fonction

3 Préparation
Relisez votre cours de compression vidéo. Soyez particulièrement attentifs à la compensation
du mouvement.
1. Que signifie un codage des couleurs sous forme Y, U et V en (4 :2 :0) ?
2. Donnez la structure d’un schéma de codage prédictif.
3. Donnez la structure complête d’un algorithme de compensation en mouvement par blocs
entre deux images successives d’une vidéo.

4 Codage en mode INTRA


La séquence vidéo à compresser est stockée au format .qcif, qui est un format binaire, sans
en-tête. Le format QCIF correspond en fait à une taille d’images (176 × 144). Les images sont
en couleur, codées (Y,U,V) en (4 :2 :0).
4. Pour charger et visualiser une image, il faut ouvrir un fichier et faire appel à la commande
yuv readimage
>> fid = fopen(’foreman.qcif’,’r’);
>> [compY,compU,compV]=yuv_readimage(fid,’qcif’);
Quelle est la taille des différentes composantes de l’image ? Un nouvel appel à yuv readimage
permet de lire l’image suivante.
5. La commande encodeINTRA permet d’effectuer un codage de type JPEG d’une image.
Réalisez le codage des 10 premières images de la séquence vidéo foreman.qcif.
6. Affichez les images successives de la séquence vidéo codée.
7. Donnez le PSNR moyen en fonction du débit moyen, sachant que l’on veut afficher 15
images/s.
8. Estimez la qualité visuelle (excellente/bonne/moyenne/mauvaise) pour différentes valeurs
du débit.

5 Codage en mode INTER


9. Reprenez le début de l’exercice précédent en codant cette fois uniquement la première
image en mode INTRA.
10. Pour les images suivantes, mettez en œuvre un schéma de prédiction : avant de coder
l’image n, retranchez-lui l’image n − 1 reconstruite au décodeur local, la différence forme
la texture n. Coder la texture n à l’aide de encodeINTRA et donner l’image reconstruite n.
11. Affichez les images successives de la séquence vidéo codée.
12. Donnez le PSNR moyen en fonction du débit moyen, sachant que l’on veut afficher 15
images/s.
13. Estimez la qualité visuelle (excellente/bonne/moyenne/mauvaise) pour différentes valeurs
du débit.
14. Comparez les résultats obtenus dans ce cas avec ceux de l’exercice précédent.

2
6 Compensation en mouvement
Dans cet exercice, la première image est encore codée en mode INTRA. Par contre, une
compensation en mouvement est effectuée pour obtenir la texture associée à la seconde image
et aux images suivantes. La fonction PicturePred permet d’effectuer une compensation de
mouvement par blocs entre deux images successives. La taille des blocs est ajustable ainsi que
la portée des vecteurs mouvements.
15. Réalisez le codage compensé en mouvement des images 2 à 10 de la séquence vidéo
formean.qcif pour une taille de bloc de 16 et une portée des vecteurs mouvement de
8.
Donnez le PSNR moyen en fonction du débit moyen, sachant que l’on veut afficher 15
images/s. Distinguez la partie du débit due à la texture et celle due aux vecteurs mouve-
ments.
16. Estimez la qualité visuelle (excellente/bonne/moyenne/mauvaise) pour différentes valeurs
du débit.
17. Comparez les résultats obtenus dans ce cas avec ceux de l’exercice précédent.
18. Evaluez l’influence de la taille des blocs et de la portée des vecteurs mouvement sur le
PSNR et sur le débit.

7 Commentaires
19. Comparez les performances des trois méthodes.
20. Est-il utile d’utiliser une facteur de compression γ différent pour les images INTRA et les
images INTER ?
21. Quelles améliorations apporter au dernier codeur ?

Vous aimerez peut-être aussi