250 likes | 418 Views
Etude et test des algorithmes d'estimation de mouvement en MPEG. PLAN. Techniques de compression video MPEG. Traitement des redondances temporelles: algorithmes d'estimation de Mouvement. Test des implémentations DivX Protocole Mise en oeuvre Résultats Interpretation.
E N D
Etude et test des algorithmes d'estimation de mouvement en MPEG
PLAN • Techniques de compression video MPEG. • Traitement des redondances temporelles: algorithmes d'estimation de Mouvement. • Test des implémentations DivX • Protocole • Mise en oeuvre • Résultats • Interpretation
Introduction:Pourquoi la compression Video ? • Absence de compression inconcevable • Exemple pour une qualité Télévision analogique: • Image 640*480 @25 Images / sec. • profondeur de pixels: 24 bits • Total: 22 Mo/s • Compression avec pertes nécessaire, utilisant les redondances spatiales et temporelles • MPEG4 (dans la pratique: divx): 64 Ko/s ; facteur de compression = 350
Techniques de compression MPEG: Sous échantillonnage • Passage de la base RGB en YUV. • Perception humaine moins sensible à la chrominance. • Codage en 4:2:0 • Compression: 2
Techniques de compression MPEG:exploitation de la redondance spatiale • Découpage de l'image en Macroblocs de 16*16 pixels, puis en blocs de 8*8 pixels • Compression des blocs en DCT (Discrete Consine Transform) pour le MPEG1 et 2, ondelettes pour le MPEG4. • But de ces transformées: sous échantillonnage des fréquences basses. • Puis codage VLC et RLE.
Techniques de compression MPEG:exploitation de la redondance temporelle • 3 types d'images: • Intra frame (I) ou Key-frame: image entière • Predictive Frame (P): codage en fonction d'une image précédente. • Bidirectionnal frame (B): codage en fonction de deux images (I ou P). • Images P et B générées grâce à l'estimation de mouvement.
Estimation de mouvement:Principe • Pour le codage des images P et B • Recherche de blocs carrés de pixels les 'plus ressemblants' dans l'image précédente • Critères de ressemblance à minimiser: SAD (Sum of absolute difference) sur la luminance.
Compensation de mouvement • Plutot qu'un bloc d'image 8*8, on transmet: • le vecteur de mouvement du bloc • Bloc 8*8 contenant l'erreur résiduelle entre les deux blocs, encodée en DCT. • Décodage: on compense l'image précédente grâce aux vecteurs de mouvement et aux erreurs résiduelles. • Comment trouver les blocs ?
Techniques pour la recherche de mouvement • Comment trouver les blocs ressemblants? • Full Search: recherche exhaustive • Optimal: on trouve forcément le meilleur bloc • Mais: très lourd
Estimation de mouvement:Three Step Search • Recherche d'une direction: test sur 9 valeurs en partant du vecteur (0,0). • Nouvelle recherche avec un rayon plus faible à partir du minimum précedent. • 3e recherche avec un rayon encore plus faible. • Rapide mais peu précis, possibilité de minimum locaux.
Estimation de mouvement:Méthode 2D-logarithmique • Recherche sur 5 points à partir du centre à une distance D. • Déplacement selon le minimum. • Réduction du rayon de recherche à log D quand le minimum tombe au centre ou sur un coté. • Minimums locaux
Estimation de mouvement:diamond based algorithm • Recherche du déplacement médian en fonction des blocs connexes. • Critère sur 9 points disposés en diamant. Déplacement selon le minimum. • Utilisation d'un deuxième diamant plus petit si minimum au centre.
Techniques de block Matching:PMVFAST • Recherche du déplacement maximum des blocs connexes. Mouvement estimé petit, moyen ou grand. • Petit: on utilise le petit diamant pour la recherche. • Moyen: on utilise le grand diamant 1 seule itération. • Grand: on utilise le grand diamant: • Tant que le minimum n'est pas au centre, on se déplace en direction du minimum. • Quand le minimum est trouvé au centre, deuxième recherche avec le petit diamant.
Estimation de mouvement en mpeg-4 • MPEG-1 et 2: block matching sur des blocs réguliers • MPEG-4: block matching sur des formes quelconques • Segmentation de l'image • Plus adapté aux images réelles • Gain en compression: 10 % • Gain en qualité visuelle: 100%
Comparaison avec/sans segmentation • Exemple: quadtree • Moins de motion vector: gain en compression • Plus de précision: gain en qualité visuelle
Test des implémentations • But des tests: relation algorithme de block matching - Qualité d'image • 3 implémentations testées: • Xvid: algorithme PMVFAST • Ffmpeg: méthode 2Dlogarithmique • DivX4: Diamond based algorithm
Protocole de test • Comparaison des images issues des flux encodés, non encodés. • Permet d'estimer les pertes engendrées par l'encodage.
Mise en oeuvre • Outils de test: • Encodage: transcode, encodage en deux passes • Calcul des différences: PIL (Python Image Library) • Critère de différences d'images: Moindres carrés sur la luminance:
Moindres carrés: résultats • Critère des moindres carrés sommé pour toutes les images d'un flux • Résultats peu pertinents pour les séquences lentes: valeurs proches, pas d'information sur la nature des erreurs. • Solution: visualiser la répartition des erreurs
Répartition des erreurs • Répartition des erreurs: histogrammes des erreurs • Somme pour toutes les images du flux
Répartition d'erreur: Résultats • Répartion interessante • Comparaison difficile • Solution: erreur relative entre les implémentations
Comparaison des répartitions d'erreur • Résultats pertinents • Inversion petites/grosses erreurs • Différences selon le type de séquence
Interpretation des résultats • Xvid et PMVFAST • Performant, peu de grosses erreurs • DivX4: 2Dlog + Quarter pixel • Excellent pour les petites erreurs, mais... • FFmpeg: Diamond based • Compromis
Conclusion • Beaucoup d'autres tests possibles sur les codecs divx: • Temps d'encodage • CPU au décodage • Étude MPEG très interessante par sa diversité. • Développement du MPEG4 très rapide.