3 - Compression des images
Plan Codage Luminance-Chrominance Compression non destructrice Par entropie Huffman RLE Compression avec perte DCT Norme JPEG Compression de séquences d’images Compression temporelle MPEG 1, 2 et 4
Codage luminance-chrominance Compression : Codage luminance-chrominance
Luminance-chrominance L’œil est plus sensible à la lumière qu’à la couleur, donc on conserve plus d’informations de luminance que de chrominance : On passe de R V B -> Y Cr Cb par des formules simples Y = 0,299 * Rouge + 0,587 * Vert + 0,114 * Bleu Cr = Rouge - Y Cb = Bleu - Y Puis on agrège les composantes couleurs Cr Cb voisines Souvent Y Cr Cb est codé en 4:2:2 (on ne garde la couleur que des lignes paires)
Luminance-chrominance (2) Exemple ici codage en 4:1:1 On prend la moyenne de 4 valeurs Cr et Cb
Compression non destructrice (sans perte)
Compression par entropie Technique issue de la théorie de l’information développée dans les années 50 par Shannon, Fano puis plus tard Huffman et d’autres (Lempel-Ziv-Welsh..) L'entropie indique le nombre de bits minimum qu'il faut par pixel pour coder une image donnée (longueur moyenne minimale en bits d'un pixel) Si N est le nombre valeurs possibles des pixels et pi la probabilité de chacune, l’entropie se calcule ainsi Exemple si {A, B, C, D, E, F, G} sont les valeurs possibles avec les probabilités {0,4 0,2 0,15 0,1 0,05 0,05 0,05} l'entropie est : H = -0,4 log(0,4)-0,2*log(0,2)-….soit 2,3842 bits au lieu de log(7) = 2,81 bits arrondi à 3 (code de longueur fixe)
Compression par entropie (2) Algorithme de codage de Shannon-Fano On classe les symboles par ordre de probabilité décroissante On divise l'ensemble des symboles en deux sous-ensembles de telle sorte que les probabilités cumulées des éléments constituant chacun des deux sous-ensembles soient les plus proches. On attribue l'élément binaire "1" et "0" à chaque sous-ensemble On procède comme à la première étape sur tous les sous-ensembles comportant au moins deux éléments. On s'arrête lorsque tous les sous-ensembles ne comportent plus qu'un élément Remarque : On notera qu'à une étape donnée, il peut exister deux choix possibles de regroupement d'éléments en cas d’égalité des probabilités cumulées de deux regroupements possibles.
Algorithme de Shannon-Fano (suite) Sur l’exemple précédent : l’algorithme donne ceci En vert la longueur moyenne d'un mot code est En rouge la longueur moyenne d'un mot code est
Compression par entropie (3) Algorithme de codage de Huffman Contrairement au code de Shannon-Fano, la construction d'un code de Huffman s'effectue de façon ascendante (des feuilles vers la racine de l'arbre des codes) On classe (par exemple sur une ligne) les symboles source par ordre de probabilité croissante (par exemple de la gauche vers la droite). On relie les deux symboles de probabilités les plus faibles à l'aide de deux arêtes. On obtient alors un nœud que l'on appelle "super-symbole" et dont le "poids" est obtenu en effectuant la somme des deux probabilités des deux symboles. Le super-symbole remplace les deux symboles qui sont maintenant éliminés de la liste. On procède comme à l'étape précédente en considérant les super-symboles comme des symboles. On s'arrête lorsqu'on est arrivé à la racine de l'arbre.
Algorithme de Huffman (suite) Application de l’algorithme sur l’exemple précédent Longueur moyenne d'un code
Compression RLE (Run Length Encoding) Cette méthode très simple consiste à remplacer une répétition de pixels voisins par un facteur de répétition et une valeur à répéter. Le taux de compression est moyen dépendant beaucoup des images à compresser. Exemple de forte compression : Image compressée sur 684 octets en GIF
Compression destructrice (avec perte)
Codage DCT (Discrete Cosinus Transform) L’image est découpée en blocs fixes, par exemple 8x8 Chaque bloc est codé par les coefficients de sa décomposition à partir de toutes les valeurs possibles (blocs à gauche) D’où une combinaison linéaire avec un coeff de poids fort DC et d’autres notés AC
Codage DCT (2) À gauche : image avec coeff DC seuls (blocs de niveaux de gris) À droite : image avec DC et 9 AC
Codage DCT (3) Quantification : beaucoup de coefficients presque nuls assimilés à 0; les autres sont « arrondis » D’où compression par entropie efficace : beaucoup de valeurs répétées Méthode de compression donne des ratios de 10 ou 20 avec des pertes acceptables
Codage DCT (4) Formules de conversion en DCT Directe Inverse F étant la matrice des coeff DC,AC…. Img celle bu bloc de NxN Directe Inverse Noter la symétrie des formules : temps de compression/décompression comparables Des algorithmes simplifient les calculs qui sont souvent directement exécutés par des instructions dites multimédia des processeurs
Compression JPEG Norme ISO définie par un groupe d’experts : « Joint Photographic Experts Group » Image découpée en blocs souvent 8x8 codés séparément Norme complexe avec beaucoup de variantes prévues ( y compris une compression sans perte)
Compression JPEG (2) Les coefficients DC, AC calculés sont ordonnés dans une table dite Zigzag Les coefficients DC, AC sont arrondis suivant une table dite de quantification précisée dans la norme
Compression JPEG (3) Les coefficients DC et AC sont codés séparément Les DC voisins étant souvent de niveaux comparables sont codés en différence avec le précédent Beaucoup de 0 se répétant dans les AC, ceux-ci sont codés en RLE Les valeurs finales sont codées par entropie et un algorithme de Huffman
Compression JPEG (4) Résultats : des compressions pouvant aller jusqu’à des ratios de 10 ou 20 suivant l’image La compression (et donc la perte) est réglable suivant la quantification choisie, les coefficients AC gardés… Défauts visibles : blocs 8x8, lignes doublées, artefacts Compression par 9 Compression par 15
Compression de séquences d’images
Image de « différences » Beaucoup de valeurs inchangées entre deux images successives (valeurs grisées ici)
Estimation du mouvement Recherche dans les images successives de zones qui sont déformées géométriquement : translation, homothétie Codage très compact des seuls vecteurs de déformation
Estimation du mouvement (2) Champs de vecteurs de mouvement
Compensation du mouvement Estimation du mouvement entraine des erreurs : les différences entre les valeurs réelles et l’estimation sont codées en DPCM Schéma d’un codeur vidéo (le « frame store » conserve l’image reconstituée précédente pour compenser exactement les différences) Codeur proche du H.261 utilisé en vidéo-conférence
Norme MPEG-1 Norme ISO définie par le « Motion Pictures Experts Group » Estimation et compensation de mouvements bidirectionnels (vers l’avenir et aussi le passé) Trois type d’images codées I pour « Intra-pictures » : images complètes codage DCT voisin du JPEG P pour « forward Predicted pictures » : images prédites à partir de la dernière image I ou P B pour « Bidirectionnally predicted pictures »
Norme MPEG-1 (2) Schéma de compression d’images successives appelés « GOP » (Group Of Pictures) comme IBPBPBI….. Le GOP doit s’adapter aux séquences à coder
Norme MPEG-2 Norme de codage de flux télévision (broadcast) Compression/décompression hardware dans les « décodeurs » Codage vidéo et audio (comme MPEG-1) Nombreux paramètres permettant d’adapter le flux aux besoins (échelle, définition jusque HDTV, codage couleur 4:2:2 ou autres….)
Nouvelles normes MPEG-4 de l’ISO : intégration de contenus, réseaux interactifs… H 26X de l’ITU norme de vidéoconférence très bonne en compression
Essais Vidéos MPEG Essais Vidéoconférence Démonstrations Essais Vidéos MPEG Essais Vidéoconférence