La
quantité d’information d’un flux vidéo numérique est réellement
considérable, même avec un codage couleur YUV en 4 :2 :2 pour une vidéo
FullHD en 25 images par seconde elle atteint 103.7 MO (Mēga Octets) par
secondes, soit 373 GO par heure d’enregistrement. De tels débits sont
quasiment impossibles à transmettre sur les ondes radios et très lourd
a stoker. Il a donc fallu inventer des méthodes de compression pour la
vidéo.
Compression JPG
On découpe l'image en blocs de 8x8 pixels (l’image est
donc recadrée pour former un nombre entier de blocs de 8x8 px). Chaque
bloc est ensuite comparé aux 64 blocs standards du tableau ci-dessous.
Les blocs de ce tableau correspondent à des fonctions cosinus
(transformée discrète en cosinus des blocs 8x8), en donnant à chaque
bloc un coefficient de -1 à +1 il est possible de reconstituer par
superposition de ces blocs n’importe quel bloc de 64 pixels sans aucune
perte d’information
En fonction du niveau de compression souhaité les coefficients sont
arrondis (dans notre exemple à 5% prêt) et tous les blocs qui
tombent dessous d’un certain seuil sont simplement ignorés (dans notre
exemple à 10% et en dessous), c’est ici que la compression produit des
pertes d’informations.
Valeurs mesurées
|
|
Valeurs comprimées
|
Bloc
|
Coef.
|
|
arrondies |
retenues |
1
|
0.009
|
|
0.00
|
|
2
|
0.042
|
|
0.05
|
|
3
|
-0453
|
|
-0.45
|
-0.45
|
4
|
0578
|
|
0.60
|
0.60 |
5
|
-0.601
|
|
-0.60
|
-0.60 |
6
|
0.025
|
|
0.60 |
0.60 |
7
|
0.015
|
|
0.00
|
|
8
|
-0.005
|
|
-0.05
|
|
9
|
0.038
|
|
0.05
|
|
10
|
0.001
|
|
0.00
|
|
Etc...
|
Etc...
|
|
Etc.. |
Etc.. |
63
|
-0.120
|
|
0.10
|
|
64
|
0.090
|
|
0.10
|
|
Les valeurs retenues sont finalement écrites dans un fichier qui sera
comprimé avec un algorithme sans perte du même genre que les fichiers
ZIP informatique.
Ce système est très efficace parce que l'on opère sur des blocs de
petite taille où il est très probable qu’il n’y a pas de grandes
variations de couleur ou de lumière entre les pixels voisins (par exemple un
ciel bleu), il y a donc forcément un très grand
nombre des 64 valeurs sont vraiment très proche de 0 et qui pourront
être ignorées. Si le niveau de compression reste raisonnable cette
méthode ne détruit que des détails invisibles à l’œil humain.
Cette méthode n’est pas 100% adaptée aux images comportant du
texte avec de petits caractères parce qu’un effet de flou ou de mosaïque désagréable apparaît
autour des petites lettres dès que l’on augmente un peu le taux de
compression.
Compression MPEG
Le
groupe MPEG a été établi en 1988 dans le but de développer des
standards internationaux de compression, décompression, traitement et
codage d'images animées et de données audio. Depuis, la quasi-totalité
des méthodes de compression utilisent les principes décrits ci-dessous.
Il existe plusieurs standards MPEG
Le
MPEG-1,
Développé en 1988, est un standard pour la compression des données
vidéo et deux canaux audio. Il permet le stockage dans une qualité
proche des cassettes VHS). La norme MPEG-1 représente chaque image
comme un ensemble de blocs 16 x 16. Elle permet d'obtenir une
résolution de 352x288 à 25 images par seconde en PAL/SECAM avec un
débit de l'ordre de 1.2 Mbps (exploitable sur un lecteur de CD).
Le
MPEG-2,
Un standard dédié originalement à la télévision
numérique (HDTV) offrant une qualité élevée à un débit pouvant aller
jusqu'à 40 Mbps, et 5 canaux audio suround. Le MPEG-2 permet de plus
une identification et une protection contre le piratage. Il s'agit du
format utilisé par le DVD vidéo.
Le
MPEG-4,
Un standard destiné à permettre le codage de données
multimédia sous formes d'objets numériques, afin d'obtenir une plus
grande interactivité, ce qui rend son usage particulièrement adapté au
Web et aux périphériques mobiles. La TNT utilise une version du MP4
spécialement adapte pour obtenir de très bonnes images avec un débit
permettant de diffuser un maximum de chaines sur une fréquence. Le
codage est réalisé sur toutes les chaine du même canal en même temps
afin de permettre à chaque moment de repartir au mieux la bande
passante pour chaque chaine
Et plusieurs techniques
de codages
Réduction du nombre de couleurs
Pour
commencer le signal vidéo en entrée est converti à la norme 4:2:0 (lire
d'abord la page vidéo numérique)
avec seulement 8 bits (Rapport signal bruit de 48 DB et 16 millions de
couleurs),
Codage temporel
Ensuite on part du constat que dans une courte séquence vidéo, la
majorité des scènes sont fixes ou bien changent très peu, c'est ce qui
s'appelle la redondance temporelle. On imagine aisément que dans un
plan fixe ou une cigogne passe dans le paysage, il suffirait
d’enregistrer une seule image du paysage plusieurs petites images contenant
seulement la cigogne pour obtenir la vidéo
C’est le principe du codage
temporel du format MPEG. Les images sont découpées en blocs de 16x16
pixels (appelés macro blocs), puis l'algorithme compare chaque image
avec une image de référence bloc par bloc pour encoder uniquement les
blocs qui ont changés de façon suffisamment importante. A la lecture
ces blocs seront simplement superposés à l'image de référence conservée
en mémoire.
Compensation de mouvement
Imaginons
une vidéo avec un lent panoramique, on pourrait enregistrer la première
image en entier, puis au fur et à mesure du déplacement de la camera
couper un bout et coller de l’autre cote le petit bout d’image qui
manque
Sur
ce principe, chaque macro blocs de 16 x 16 pixels est comparé à ceux
des images précédente ou suivante, le programme détermine de combien de
pixels chaque ploc c’est déplacé et n’enregistre que les informations
de déplacement des blocs (en X et en Y) et les bouts d'image manquant.
Cette technique dite de codage par compensation de mouvement donne un
niveau de compression important, mais induit un petit retard
(puisqu'il faut connaître l'image suivante) et oblige à garder en
mémoire au moins trois images (la précédente, l'actuelle et la
suivante).
Les GOP (Group Of
Picture)
Les
techniques abordées ci-dessus ne peuvent s’appliquer qu'a de petits
suites d'usages. C'est pourquoi la vidéo est donc d’abord décomposé en
courte séquence appelée GOP. Ce paquet à une longueur de 4 à 16 images celons le
niveau de compression souhaitée et comporte trois sortes d’image :
• Intra coded
frames (I Frames,
codage Intégral)
C’est la première image de chaque GOP,
elle est codée dans sa totalité au
format JPG pour servir de référence aux images suivantes. Ces images
sont
indispensables à la cohésion du film puisque toutes les autres sont
décrites
par rapport aux images de référence qui les entourent. Pour commencer la lecture
d’une vidéo
a un point quelconque il faut évidemment attendre l’arrivée de la
première
image du type « I Frame ».
• Predictive coded frames (P frames ou codage prédictif)
Lorsque les GOP contiennent plus de 8 images, toutes les trois images une image dite prédictive P frames est définie par différence avec l'image de type I Frames du début ou de la P frames précédente. Ici le codage temporel est privilégie par rapport à la compensation de mouvement
• Bidirectionally
predictive coded
frames (B Frames)
Toutes les autres
images sont des B Frames, elles sont décrites par différence avec
l'image de
type I Frames ou P frames précédente et suivante, cette fois la
compensation de mouvement est privilégie par rapport au le codage
temporel.
C'est la finesse de la recherche et de l’analyse des
macro-blocs qui
déterminera la vitesse de l'encodage et la qualité de la compression,
plus l'algorithme cherche des détails fins à l’intérieur des blocs plus
la qualité de la vidéo sera bonne, mais il perdra plus de temps...