La date/heure actuelle est Mar 09 Fév 2010, 07:26
Toutes les heures sont au format GMT + 1 Heure
|
|
| Auteur |
Message |
d'Oursse Ancien combattant

Inscrit le: 21 Mai 2003 Messages: 1948 Localisation: Mushromms of Paris Town
|
|
|
Revenir en haut |
|
 |
Manao Modérateur

Inscrit le: 05 Déc 2003 Messages: 743 Localisation: Paris (XIV)
|
Posté le: Mar 30 Mar 2004, 10:45 Sujet du message:
|
|
|
Encodage vidéo dans la norme H-264
Principales différences avec le MPEG-4
* Codeur entropique amélioré ( CABAC )
* Filtre de déblocage incorporé au processus de compression ( "in-loop filtering" )
* Multi-référençage lors de la prédiction temporelle
* Blocs de tailles 4x4 jusqu'à 16x16
* Pseudo-DCT à coefficients entiers
Généralités sur le processus d'encodage
La couche vidéo de la norme H-264 utilise les mêmes concepts de compression que ceux de la norme MPEG-2, à savoir un mélange de prédictions spatiales et temporelles, couplé avec un codage par transformée.
L'image est découpée en blocs. La première image de la séquence (ainsi que celles servant de point de référence dans le flux vidéo) est codée de manière "Intra", c'est à dire sans utiliser d'autre information que celle contenue dans l'image elle-même. Chaque bloc de l'image "Intra" est prédit de manière spatiale grâce aux blocs de l'image déjà encodés. Le procédé d'encodage choisit quels sont les blocs voisins qui serviront de référence. Comme on ne prédit un bloc qu'à partir de blocs déjà encodés, le décodeur possède toute l'information nécessaire pour le décodage effectif du bloc.
Pour toutes les autres images de la séquence qui ne sont pas des points de référence, un codage de type "Inter" est utilisé. Le codage "Inter" utilise des images déjà décodées pour prédire l'image à décoder par compensation de mouvement. Le procédé d'encodage pour l'estimation de mouvement consiste à choisir une image de référence, et un vecteur de déplacement pointant vers le bloc (de l'image de référence) le plus semblable au bloc (de l'image courante) à encoder.
L'erreur résultant de la prédiction "Intra" ou "Inter" (celles-ci ne donnent généralement pas de prédiction parfaite), c'est à dire la différence entre le bloc original et le bloc résultant de la prédiction, est transformée. Les coefficients résultants de cette transformation sont quantifiés, puis codés par codage entropique en même temps que l'information de prédiction ("Intra" ou "Inter").
A l'encodage, l'image venant d'être encodée est alors immédiatement décodée pour servir de prédiction pour les images futures. Elle va alors être filtrée par un filtre de déblocage qui essayera d'éliminer les blocs qui sont inhérents au découpage de l'image en blocs lors de son traitement. Si la prédiction s'effectuait à partir de l'image originale, il y aurait un problème car au décodage, celle ci n'est pas exactement reproduite. Il s'ensuivrait alors un phénomène de dérive de plus en plus important au fur et à mesure de l'enchainement des prédictions temporelles.
Précisions sur certains aspects de la norme
Partitionnement de l'image
Une image est découpée en macroblocs de 16x16 (pour le plan luminance) et 8x8 (pour chacun des plans chromatiques). Chacun de ces macroblocs peut être découpés à loisir en blocs 16x8, 8x16, 8x8, 8x4, 4x8, 4x4. En fait, on regarde d'abord si on va découper le macrobloc en deux blocs 16x8 ou 8x16, ou en 4 blocs 8x8. Dans le dernier cas, on précisera pour chacun des blocs 8x8 de quel manière ils doivent être scindés (non scindés, 2 blocs 4x8 ou 8x4, 4 blocs 4x4)
Codage "Intra"
Dans une image de type "Intra" on n'aura que des blocs 16x16 ou 4x4. Ces blocs seront prédits spatialement à partir d'une prédiction effectuée grâce aux blocs encodés. Un bloc 4x4 possède 9 types de prédictions différentes (8 prédictions directionnelles, un prédicteur moyen), alors qu'un bloc 16x16 n'en possède que 4 (3 et 1). La distinction entre ces deux types de blocs permet de traiter efficacement à la fois les zônes relativement homogènes, grâce aux blocs 16x16, et les zones avec beaucoup de contraste grâce aux petits blocs.
Codage "Inter"
Dans une image de type "Inter", on peut retrouver tous les types de blocs. Pour chacun de ces blocs, on va rechercher le meilleur vecteur de mouvement lui correspondant, et on va l'encoder. On peut donc encoder jusqu'à 16 vecteurs de mouvement par macroblocs.
Précision des vecteurs de mouvement
Les vecteurs de mouvement sont précis au quart de pixel près. Quand un vecteur a des coordonnées non entières, on doit effectuer une interpolation pour placer les pixels du bloc sur ces coordonnées non entières. L'interpolation au demi-pixel est effectué par un filtre de type Lanczos, l'interpolation au quart de pixel près est bilinéaire (c'est à dire qu'elle moyenne les valeurs du pixel et du demi-pixel le plus proche). La norme H-264 prévoyait initialement de pouvoir aller jusqu'au huitième de pixel près, mais cela a été abandonné.
Multiréférençage
La prédiction temporelle peut s'effectuer à partir de plusieurs images de référence, alors que dans les normes précédentes ( MPEG-2, MPEG-4 ), seule l'image P ou I précédente pouvait être utilisée. Ce multiréférençage permet de tirer partie des animations cycliques (un oiseau battant des ailes par exemple), et permet en partie de résoudre les problèmes dus à l'occlusion / désocclusion des objets (quand un objet passe devant un autre, au moment ou l'objet caché redevient visible, les vecteurs de mouvement correspondant à l'objet caché sont incohérents, mais si on remonte suffisamment loin, on peut retrouver des vecteurs cohérents).
Images P / B
La différence entre images P et images B est maintenue, à savoir que les blocs des images de type P ne se servent que d'une seule référence passée (qui peut cependant varier d'un bloc à l'autre) alors que les blocs des images B peuvent utiliser deux références passées ou futures (potentiellement différentes pour chaque blocs). L'image B résultant de la prédiction est alors reconstruite en moyennant (avec pondération) les deux prédictions effectuée.
Prédiction des vecteurs de mouvement
Le codage des vecteurs de mouvement est amélioré en effectuant une prédiction des vecteurs d'un bloc à l'autre. En effet, dans une image, le champ de vecteurs a généralement tendance à être relativement régulier, ce qui permet une bonne efficacité, même pour une prédiction relativement simple. La prédiction ici est du même type que pour les blocs d'une image "Intra", à savoir 8 prédicteurs directionnels et un prédicteur médian.
Transformation
Avant de quantifier un bloc 4x4 résiduel (différence entre le bloc original et le bloc prédit), celui-ci va être transformé. On va le multiplier par une matrice à coefficients entiers qui est "presque" une matrice de DCT. Les coefficients entiers permettent d'effectuer la transformation inverse sans pertes, ce qui permet une reconstruction parfaite. Les plans chromatiques sont découpés en blocs 2x2 qui sont eux aussi transformés selon le même principe. Cette transformation sert à rendre la quantification qui suit quasi optimale (l'optimalité n'est atteinte que pour une certaine matrice, dont la DCT était une bonne approximation dans le cas général. Ici on approche la DCT, donc on perd théoriquement un peu plus en optimalité, mais la perte est plus que négligeable, et les simplifications de mise en oeuvre apportées par les coefficients entiers et la reconstruction parfaite sont beaucoup plus précieuses et beaucoup plus rapide).
Quantification
Une fois transformé, le bloc va subir une quantification. C'est le procédé qui crée les pertes dans un algorithme de compression avec pertes. Une quantification dans ce cas correspond à une division des coefficients résultant de la transformation par un nombre, puis à un arrondi à l'entier le plus proche du résultat de la division. Le nombre varie en fonction de la position du coefficient dans la matrice 4x4. C'est pour ça qu'on parle de matrice de quantification. Il existe 52 matrices de quantification, qui peuvent toutes se déduire d'une matrice unique par une multiplication par un nombre ( le quantificateur ). Il y a donc 52 quantificateurs différents. Plus le quantificateur est grand, plus les coefficients sont approximés grossièrement. Une différence de 6 entre deux quantificateurs (par exemple 2 et 8, ou 5 et 11) correspond à une approximation deux fois plus grossière.
Balayage des coefficients
Une fois quantifiée, on va lire les coefficients de la matrice dans un certain ordre. Cet ordre de balayage n'est pas si innocent qu'il peut paraître, car avec un bon balayage, on peut s'arranger pour que tous les coefficients non nuls soient parcourus en premier, et que tous les coefficients nuls restant le soient en dernier, ce qui permet d'améliorer l'efficacité du codage entropique qui va suivre. On indique donc quel type de balayage est utilisé.
Codage entropique
Deux codeurs entropiques peuvent être utilisés dans la norme H-264. Le codeur par défaut associe à chaque symbole résultant des étapes précédentes (un symbole est, par exemple, un vecteur de mouvement, ou le fait qu'un macrobloc soit scindé en 2 blocs 16x8, ou encore qu'une image soit de type P) un code unique, dont la longueur dépend de sa probabilité. Le code choisi est un code de Golomb, qui a l'avantage d'être rapide à décoder.
CAVLC
Les coefficients quantifiés ne sont pas codés par le codeur par défaut, mais par le codeur CAVLC (Context Adaptive Variable Length Coding). Ce codeur utilise aussi des codes de longueur variable, mais ceux-ci sont adaptés au contexte de l'élément à encoder. Par exemple, quand on code un zéro dans la série des coefficients quantifiés, on sait que le coefficient suivant à de fortes chances d'être zéro lui aussi, car l'ordre de balayage a été choisi de la sorte. Donc on va modifier la longueur de code correspondant à 0 pour tirer partie de cette probabilité plus élevée.
CABAC
Le deuxième codeur disponible est le CABAC (Context Adaptive Binary Arithmetic Coding). Arithmetic signifie que des codes de longueur non entière seront utilisés (ce qui permet un gain moyen pouvant aller jusqu'à près 1 bit par symbole si certains symboles ont des probabilités beaucoup plus grande que 0.5). La partie adaptation au contexte est elle aussi améliorée, les statistiques des symboles venant d'être encodés étant utilisées pour construire le modèle statistique du prochain symbole à encoder. Ce codeur est beaucoup plus lent que le précédent, mais il permet de gagner de 10 à 15 % par rapport au CAVLC.
Filtre de déblocage intégré
L'artefact de compression classique pour un schéma de compression utilisant une approche du type MPEG (découpage de l'image en blocs) est un effet de blocs. Cet artefact est généralement considéré comme le plus visible. C'est pourquoi il a été décidé qu'un filtre de déblocage allait être utilisé, lors de l'encodage, par la norme H-264. Ce filtre est appliqué sur les images servant de référence. La force du filtre est conditionnée par plusieurs éléments trouvés ou choisis lors de la compression (niveau de quantification, longueur des vecteurs de mouvement par exemple). Ce filtre permet une réduction du débit à qualité (objective, c'est à dire PSNR) égale de 5 à 10%, en améliorant en plus la qualité subjective. Il n'affecte pas trop la finesse de l'image, car il est appliqué avant rajout du résidu de prédiction. Dernière édition par Manao le Mer 31 Mar 2004, 15:37; édité 2 fois |
|
|
Revenir en haut |
|
 |
Manao Modérateur

Inscrit le: 05 Déc 2003 Messages: 743 Localisation: Paris (XIV)
|
Posté le: Mar 30 Mar 2004, 10:48 Sujet du message:
|
|
|
Bon, il doit y avoir des tonnes d'imprécisions, des fautes de français, des oublis, donc si vous en voyez, n'hésitez pas à le faire savoir.
J'ai volontairement passé sous silence certains aspects de la norme ( slices, SI / SP frames, gestion de l'entrelacement, gestion de la chroma... ) car ils auraient trop compliqué la chose. |
|
|
Revenir en haut |
|
 |
Drako'99 Ancien combattant

Inscrit le: 04 Nov 2002 Messages: 934
|
Posté le: Mar 30 Mar 2004, 20:05 Sujet du message:
|
|
|
Merci pour ce cours à la pointe de la techno
C'est agréable à lire, enfin, je veux dire : pas trop lourd
Vivement que l'équipe d'XviD s'y attaque ! |
|
|
Revenir en haut |
|
 |
horzaborza Modérateur

Inscrit le: 31 Oct 2002 Messages: 1001
|
Posté le: Mer 31 Mar 2004, 08:46 Sujet du message:
|
|
|
| Citation: |
Filtre de déblocage incorporé au processus de compression
|
avec tes explication en plus... ça ressemble pas mal au inloop filtering, non? peut être un peu moins poussé... |
|
|
Revenir en haut |
|
 |
Manao Modérateur

Inscrit le: 05 Déc 2003 Messages: 743 Localisation: Paris (XIV)
|
Posté le: Mer 31 Mar 2004, 09:22 Sujet du message:
|
|
|
| C'est exactement ça, mais il fallait bien en faire une traduction... Je pourrais changer la traduction en "Filtre de déblocage intégré à la boucle d'encodage", mais je sais pas si c'est plus clair. |
|
|
Revenir en haut |
|
 |
horzaborza Modérateur

Inscrit le: 31 Oct 2002 Messages: 1001
|
Posté le: Mer 31 Mar 2004, 10:46 Sujet du message:
|
|
|
| Citation: |
C'est exactement ça, mais il fallait bien en faire une traduction... Je pourrais changer la traduction en "Filtre de déblocage intégré à la boucle d'encodage", mais je sais pas si c'est plus clair.
|
<= c très clair, justement. Ca fait du bien. merci  |
|
|
Revenir en haut |
|
 |
d'Oursse Ancien combattant

Inscrit le: 21 Mai 2003 Messages: 1948 Localisation: Mushromms of Paris Town
|
Posté le: Jeu 08 Avr 2004, 18:19 Sujet du message:
|
|
|
Faites vite, il y a une version d'evaluation du codec de vss ici. Je ne sais pas si ca restera longtemps.
Pour les info : c'est la |
|
|
Revenir en haut |
|
 |
Oglok l'horrib Intéressé


Inscrit le: 08 Mai 2003 Messages: 469
|
Posté le: Jeu 08 Avr 2004, 18:53 Sujet du message:
|
|
|
Pas trop besoin de se presser, les beta de vanguard sont en libre téléchargement sur leur site officiel, c'est avec elles que j'avais fait mes tests.
Mais bon encoder à 0,5fps c la joie  |
|
|
Revenir en haut |
|
 |
Sagittaire Super membre


Inscrit le: 06 Juil 2003 Messages: 1839
|
Posté le: Jeu 08 Avr 2004, 19:23 Sujet du message:
|
|
|
Non c'est une nouvelle version beaucoup plus rapide normaly _________________ Parti voir ailleurs ... |
|
|
Revenir en haut |
|
 |
Sagittaire Super membre


Inscrit le: 06 Juil 2003 Messages: 1839
|
Posté le: Jeu 08 Avr 2004, 19:46 Sujet du message:
|
|
|
Je dirais même plus c'est le seul encodeur/decodeur H264 qui soit potable dans tout ceux que j'ai testé. Il n'y a que le mode "best quality" qui ne fonctionne pas chez moi au decodage ... _________________ Parti voir ailleurs ... |
|
|
Revenir en haut |
|
 |
kurtnoise Sound Master


Inscrit le: 19 Oct 2002 Messages: 6012 Localisation: 06
|
Posté le: Mer 14 Avr 2004, 17:18 Sujet du message:
|
|
|
La version 8.0 de JM est sortie. _________________ J'ai douté des détails,
Jamais du don des nues... |
|
|
Revenir en haut |
|
 |
Oglok l'horrib Intéressé


Inscrit le: 08 Mai 2003 Messages: 469
|
Posté le: Mer 14 Avr 2004, 19:23 Sujet du message:
|
|
|
je retire ce que j'ai dit, videosoft a fini les beta et maintenant le codec est en vente, donc ça sent l'optimisation de vitesse  |
|
|
Revenir en haut |
|
 |
Amenis Intéressé

Inscrit le: 06 Avr 2004 Messages: 119
|
Posté le: Jeu 15 Avr 2004, 21:03 Sujet du message:
|
|
|
Yop les gars
Vous vous souvenez de moi
Pour ceux qui s'en rappel pas , ce lien vous raffraichira la mémoire
http://atlas2.tgv.net/~media-video/forum2/viewtopic.php?t=4450
Bon après avoir fait un tour on the oueb, il semble que ce new codec soit prometteur
Mais voila qui dit nouveau , dit pas encore de tutos pour les comme moi
Donc , j'ai chargé le tuto PDF de videosoft , et la je me suis dit super vdub, je connais
Par contre le fichier de configuration avancé
Vous voyez ou je veux en venir
Ciao et a demain  |
|
|
Revenir en haut |
|
 |
Le retraité V. I. P.

Inscrit le: 19 Oct 2002 Messages: 4038 Localisation: France
|
Posté le: Jeu 15 Avr 2004, 21:11 Sujet du message:
|
|
|
c pas un codec, c une norme.
videosoft nest qu'une implémentation (l'une des seul pour linstant je te laccorde ) du h.264
il pourrait y avoir des codec h.264 100foi mieu comme 100foi plus pourri. (un peu comme divx et xvid sur le mpeg4 )
ici c unpost qui decrit les algos et focntionnement du h.264, pas comment utiliser un codec en particulier (comme il nya pa de rubrique dedié a cela encor, meme si c un peu precoce je v y reflechir, puis je ferai le menage ici ) |
|
|
Revenir en haut |
|
 |
|
|
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum Vous ne pouvez pas joindre des fichiers Vous pouvez télécharger des fichiers
|
Powered by phpBB © 2001, 2005 phpBB Group
:: UltraViolet Theme based on FI Theme by daz :: Toutes les heures sont au format GMT + 1 Heure
Traduction par phpBB-fr.com :: Création et administration par M. W. I. Prod.
|