|
|||||||||||||||||||||||||||||||||||||||||||
|
Note : ce document est issu de Comment Ça Marche et mis à disposition sous les termes de la licence Creative Commons. Notion de codec Une image d'une vidéo non compressée occupe une taille d'environ 1 Mo. Afin d'obtenir une vidéo paraissant fluide il est nécessaire d'avoir une fréquence d'au moins 25 ou 30 images par seconde, ce qui produit un flux de données d'environ 30 Mo/s, soit plus de 1,5 Go par minute. Il est évident que ce type de débit est peu compatible avec les espaces de stockage des ordinateurs personnels ni même avec les connexions réseau de particuliers ou de petites ou moyennes entreprises. Ainsi, afin de pallier cette difficulté, il est possible de recourir à des algorithmes permettant de réduire significativement les flux de données en compressant / décompressant les données vidéo. On appelle ces algorithmes CoDec (pour COmpression / DECompression). Le M-JPEG La première idée qui vient à l'esprit après s'être intéressé à la compression d'images est d'appliquer ce type de méthode à une succession d'images numériques (animation ou vidéo). Le principe du Motion JPEG (noté MJPEG ou M-JPEG, à ne pas confondre avec le MPEG) consiste à appliquer successivement l'algorithme de compression JPEG aux différentes images d'une séquence vidéo. Étant donné que le M-JPEG code séparément chaque image de la séquence il permet d'accéder aléatoirement à n'importe quelle partie d'une vidéo. Ainsi son débit de 8 à 10 Mbps le rend utilisable dans les studios de montage numérique. Le MPEG Dans de nombreuses séquences vidéo, un certain nombre de scènes sont fixes ou bien changent très peu, c'est ce que l'on nomme la redondance temporelle. Lorsque seules les lèvres de l'acteur bougent, presque seuls les pixels de la bouche vont être modifiés d'une image à l'autre, il suffit donc de ne décrire seulement le changement d'une image à l'autre. C'est là la différence majeure entre le MPEG (Moving Pictures Experts Group) et le M-JPEG. Cependant, cette méthode aura beaucoup moins d'impact sur une scène d'action. 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. Il existe plusieurs standards MPEG :
La norme MPEG-1 représente chaque image comme un ensemble de blocs 16x16. Elle permet d'obtenir une résolution de : 352x240 à 30 images par seconde en NTSC. 352x288 à 25 images par seconde en PAL/SECAM. Le MPEG-1 permet d'obtenir des débits de l'ordre de 1,2 Mbps (exploitable sur un lecteur de CD). Le MPEG-1 permet d'encoder une vidéo grâce à plusieurs techniques :
Ces images sont codées uniquement en utilisant le codage JPEG, sans se soucier des images qui l'entourent. De telles images sont nécessaires dans une vidéo MPEG car ce sont elles qui assurent la cohésion de l'image (puisque les autres sont décrites par rapport aux images qui les entourent), elles sont utiles notamment pour les flux vidéo qui peuvent être pris en cours de route (télévision), et sont indispensables en cas d'erreur dans la réception. Il y en a donc une ou deux par seconde dans une vidéo MPEG. Les frames P Ces images sont définies par différence par rapport à l'image précédente. L'encodeur recherche les différences de l'image par rapport à la précédente et définit des blocs, appelés macroblocs (16x16 pixels) qui se superposeront à l'image précédente. L'algorithme compare les deux images bloc par bloc et à partir d'un certain seuil de différence, il considère le bloc de l'image précédente différent de celui de l'image en cours et lui applique une compression JPEG. C'est la recherche des macroblocs qui déterminera la vitesse de l'encodage, car plus l'algorithme cherche des "bons" blocs, plus il perd de temps... Par rapport aux frames-I (compressant directement), les frames-P demandent d'avoir toujours en mémoire l'image précédente. Les frames B De la même façon que les frames P, les frames B sont travaillées par différences par rapport à une image de référence, sauf que dans le cas des frames B cette différence peut s'effectuer soit sur la précédente (comme dans les cas des frames P) soit sur la suivante, ce qui donne une meilleure compression, mais induit un retard (puisqu'il faut connaître l'image suivante) et oblige à garder en mémoire trois images (la précédente, l'actuelle et la suivante). Les frames D Ces images donnent une résolution de très basse qualité mais permettent une décompression très rapide, cela sert notamment lors de la visualisation en avance rapide car le décodage "normal" demanderait trop de ressources processeur. Dans la pratique... Afin d'optimiser le codage MPEG, les séquences d'images sont dans la pratique codées suivant une suite d'images I, B, et P (D étant comme on l'a dit réservé à l'avance rapide) dont l'ordre a été déterminé expérimentalement. La séquence type appelée GOP (Group Of Pictures ou en français groupes d'images) est la suivante : "IBBPBBPBBPBBI". Une image I est donc insérée toutes les 12 frames.
|