COMPTE RENDU DU TP SUR LE CODAGE VIDÉO
Encadré par : Pr. F. ABDI
Réalisé par : Fatima Zahra LAKHCHINE
Année universitaire : 2019/2020
Table de matière
I. Introduction....................................................................................................................................3
1. Compression temporelle et compression spatiale......................................................................3
2. Débit...........................................................................................................................................3
3. Fréquence d’images...................................................................................................................3
4. Images clés.................................................................................................................................4
II. Estimation et compensation de mouvement.................................................................................4
1. Objectif de TP.............................................................................................................................4
2. Estimation de mouvement.........................................................................................................5
Recherche des vecteurs de mouvement........................................................................................6
3. Compensation de mouvement...................................................................................................8
I. Introduction
Pour procéder à l’enregistrement de données vidéo vers un format numérique, il convient de mettre
en balance, d’une part, la qualité et, d’autre part, la taille de fichier et le débit. La plupart des formats
recourent à la compression pour réduire la taille des fichiers et le débit en diminuant la qualité de
manière sélective. La compression est indispensable pour réduire la taille des vidéos et ainsi pouvoir
les stocker, les transmettre et les lire efficacement.
Lors de l’exportation d’un fichier vidéo à lire sur un appareil spécifique à une certaine bande
passante, on doit d’abord choisir un codeur (codec). Divers codeurs utilisent différents types de
compression des données. Chaque encodeur comporte un décodeur spécifique qui sert à
décompresser et à interpréter les données à lire.
Une grande variété de codecs est proposée, aucun n’étant adapté à toutes les situations. Le codec le
plus performant dans la compression d’un dessin animé, par exemple, sera peu efficace pour la
compression des prises de vues réelles.
Il existe une compression sans perte (au cours de laquelle aucune donnée n’est supprimée de
l’image) et une compression avec perte (qui élimine des données de manière sélective).
1. Compression temporelle et compression spatiale
Pour ce qui est de la compression des données vidéo, on distingue deux catégories
générales : spatiale et temporelle. La compression spatiale est appliquée à une seule trame de
données, indépendamment des images qui l’entourent.
La compression temporelle identifie les zones redondantes entre les images et ne stocke que les
différences. Dès lors, une image est décrite en fonction de sa différence par rapport à la précédente.
Les zones redondantes sont reprises des images précédentes. Cette compression est fréquemment
appelée intertrame.
2. Débit
Le débit (taux de transfert de données) conditionne la qualité d’un élément vidéo.
3. Fréquence d’images
La vidéo est essentiellement une suite d’images fixes dont la succession rapide à l’écran donne
l’illusion du mouvement. Pour désigner le nombre d’images affichées par seconde, on utilise le terme
de fréquence d’images ; cette valeur est mesurée en images par seconde (i/s). Plus la fréquence
d’images est élevée, plus le mouvement est fluide. Le fait que la quantité de données à transférer,
c’est-à-dire la bande passante nécessaire, est d’autant plus importante que la fréquence d’images est
élevée.
Lorsque on utilise de la vidéo compressée sous forme numérique, plus la fréquence d’images est
élevée, plus la taille du fichier est importante. Pour réduire davantage la taille du fichier, on doit
diminuer la fréquence d’images ou le débit binaire. Si on diminue le débit sans modifier la fréquence
d’images, la qualité d’image s’en trouvera réduite.
4. Images clés
Les images clés sont des images complètes qui sont introduites à intervalles réguliers dans un
élément vidéo. Les images situées entre les images clés contiennent des informations sur les
changements qui s’y produisent.
II. Estimation et compensation de mouvement
Une opération d’estimation de mouvement est nécessaire afin de produire un champ de vecteurs le
plus précis possible. Cette précision est indispensable car les performances d’un encodeur vidéo,
notamment en termes de PSNR, dépendent beaucoup de la qualité des champs de vecteurs.
La compensation de mouvement peut être faite à partir d’une ou plusieurs images de référence afin
d’améliorer la prédiction. En outre, chaque bloc peut être reconstruit à partir d’une seule référence
ou d’une combinaison de deux références. La compensation de mouvement permet de réduire
considérablement la bande passante nécessaire à la transmission d’une séquence vidéo.
1. Objectif de TP
Le but de ce TP est d’acquérir les notions fondamentales d’utilisation et traitement de la vidéo
numérique, et de réaliser et évaluer des algorithmes d’estimation et compensation du mouvement.
2. Estimation de mouvement
Dans un premier lieu, on veut lire deux images d’une séquence vidéo, les afficher, les comparer et
afficher leur différence. Pour ce faire on utilise le script suivant :
%% script pour lire
et afficher des On obtient les images suivantes :
images à partir d’un
séquence CIF
clear all;
close all;
clc
video = 'foreman';%
Nom du fichier
videoFile =
sprintf('%s_cif.yuv',
video);
imgRows = 288;
imgCols = 352;
%dimension de l’image
dans le format CIF
imageSize =
imgCols*imgRows; %
nombre d’octet par
image
courante = 7; %
indice des images à
afficher et sur les
quelles appliquer
l’estimateur de
mouvement
reference = 5; %
index of the
reference image
format =
struct('resolution','
cif','color','420','o
utput','y');
%On prend la séquence
de deux image à
analyser
%lire les images
c=readFrame(videoFile
,format,courante);
r=readFrame(videoFile
,format,reference);
Cou = c(:,:,1);
Ref = r(:,:,1);
figure;
imagesc(Cou);
colormap(gray(256));
Recherche des vecteurs de mouvement
On utilise la fonction mvf=me_demo(Cur,Ref,brow,bcol,search)
Pour brow=bcol=8 et search = 8
t = 2.2182
Pour brow=bcol=8 et search = 16
t = 7.8145
Pour brow=bcol=8 et search = 30
t = 24.7777
Pour brow=bcol=4 et search = 8
t = 8.9922
Pour brow=bcol=16 et search = 8
t = 0.5825
Pour brow=4 bcol=8 et search = 16
t = 17.2354
Pour brow=8 bcol=4 et search = 30
t = 50.7427
On remarque que pour avoir un temps d’exécution de l’estimateur faible, il faut donner la
taille 16 au bloc.
On utilise la fonction displayMVF (Ref,mvf,[brow, bcol],[brow, bcol]) pour afficher le champ
de vecteurs trouvé.
3. Compensation de mouvement
Pour effectuer la compensation du mouvement, on utilise la fonction mc.
On affiche l’image résultante :
Pour chaque macro bloc de l’image, on recherche dans l’image précédente un macro bloc
identique ou semblable. On calcule ensuite la différence entre les deux macro blocs.
On affiche l’image différence entre l’image courante et l’image prédite ainsi que le PSNR.
On affiche l’image différence :
L’erreur de prédiction PSNR = 33.7867db
On remarque que l’erreur de compensation de mouvement est porteuse de l’information,
alors pour obtenir l’image finale on applique les vecteurs de déplacement sur l’image
précédente puis on ajoute l’erreur de la compensation de mouvement.
On réaffiche les vecteurs de mouvement pour les deux images analysées, et les différents
paramètres de l’analyse. On utilise la fonction mvfCost pour calculer le cout de codage des
vecteurs de mouvement, estimé comme somme des entropies des composantes des vecteurs
Soit le script suivant :
On obtient le résultat suivant :
Soit la fonction suivante :
function
[PSNR,t,cost,bits] =
TestVideo(courante,re
ference,brow,bcol,sea
rch )
%bcol,brow:Taille du
bloc pour
l'estimation de mvt
TestVideo(17,5,16,16,30)
TestVideo(17,5,16,16,8)
TestVideo(17,5,8,8,8)
TestVideo(7,5,16,16,30)
TestVideo(7,5,16,16,8)
TestVideo(7,5,8,8,8)
A partir de ces tests, on peut dire que pour les valeurs de brow=bcol=16 et search=8
Et une différence entre l’image courante et de référence de 12 frames on a obtenu des
résultats optimaux.
Pour se rassurer des résultats trouvés, on fixe les valeurs de brow=bcol=16 et search=8 et on
cherche pour quelle valeur de différence entre l’image courante et de référence on obtient
les meilleurs résultats.
Soit le script suivant :
On trouve les graphes suivants :
A partir de ces graphes, on peut conclure que plus on augmente la différence entre les deux
frames le PSNR diminue, le coût augmente et le temps d’estimation est faible pour les
intervalles [0,5] et [10 15], alors il faut trouver un compromis.