Algorithmes de compression d'images et quadtree Plan ● Nouveaux enjeux de la compression d'image ● Transformée en ondelettes ● L'algorithme EZW ● L'algorithme EBCOT ● Comparaison Nouveaux enjeux de la compression d'image ● ● ● Meilleur taux de compression Scalabilité : décoder le debut du fichier décode toute l'image mais en faible qualité Region d'intérêt : certaines zones devraient être moins compréssés ● Navigabilité ● Resistance aux erreurs Transformée en ondelettes continues ● ● ● La transformée de Fourier a des faiblesses : trop concentrés sur le contenu fréquentiel d'un signal Nécéssité d'une nouvelle transformée : transformée en ondelettes. Les coefficients renseignent sur le contenu fréquentiel ET sur le moment où la fréquence apparaît Transformée en ondelettes discrètes ● ● Base de Haar (non normalisé) : La T.O. Discrète revient à un changement de base Algorithme iteratif Algorithme iteratif => Exemple Algorithme EZW : quadtree Algorithme EZW : quadtree Principe de l'algorithme EZW ● ● On choisit un seuil T On code l'arbre en élaguant les noeuds insignifiant( < T) et dont la descendance est insignifiante – ● ● On codera avec les symboles POS, NEG, IZ, ZTR On affine les coefficients déjà codés afin d'avoir une précision de T/2 On recommence avec T = T/2, etc.. Différences entre les implémentations(1/2) : Codage des symboles ● ● Implémentation des chercheurs : – POS → 0111 ; NEG → 011 ; IZ → 01 ; ZTR→1 – Pas de codage des longueurs mais utilisation d'un symbole séparateur 1111 Mon implémentation : – POS → 00 ; NEG → 01 ; IZ → 10 ; ZTR → 11 – Codage des longueurs avant chaque passe Différence entre les implémentations(2/2) : Normalisation ● Mon implémentation : ● Implémentation des chercheurs : – Normalisation L¹ – Normalisation L² – N'ajoute pas d'effet de décroissance aux coefficients ; utilise la decroissance naturelle des coeficients des hautes fréquences – Plus une sousbandes est une sous-bande de basse fréquence, plus les coefficients sont élevés Algorithme EBCOT ● ● ● ● Algorithme utilisé dans le format JPEG2000 (successeur de JPEG) Algorithme consistant en deux phases La deuxième phase est extrêmement configurable il n'y a pas d'algorithme imposé : il faut juste donner les meta-informations utile au décodage Beaucoups de fonctionnalité(scalabilité, Région d'intêrets) sont dûs à la configurabilité de la seconde phase Première phase ● ● ● ● ● Transformée en ondelettes de l'image Décomposition de l'image transformé en n « code-blocks » de taille 32x32 ou 64x64 Compression et codage INDEPENDANT et scalable de chaque « code-blocks »(codage arithmétique binaire adapatif avec contexte) Beaucoup de micro-optimisation grâce aux contexte Résultat n trains binaires, chacun correspondant à un « code-block » Première phase ● N Trains binaires décomposables en k morceaux ● 1 → 010|0100|001... ● 2 → 1110|00110|... ● … ● N → 11|11000|01|1... Deuxième phase ● ● ● On séléctionne et on réassemble les morceaux Idée de base : on sélectionne les morceaux de manière optimale afin de maximiser le PSNR : problème d'optimisation classique(résoluble avec les multiplicateurs de Lagrange) Mais rien n'est imposé : – Mesure autre que le PSNR – Decomposition en couche de qualité => scalabilité – Privilégier une zone de l'image => Région d'intêret Deuxième phase ● N trains binaire : ● 1 → 010|0100|001|11... ● 2 → 1110|00110|10001.. ● ... Implémentation MATLAB ● ● Implémentation partielle en MATLAB : – Organisation simple – Décodage arithmétique différent – Quelques approximation Résultat : – Compression mais bien inférieure à ce que cela devrait être Comparaison EZW-EBCOT ● ● EZW – exploitation des redondances inter-bandes – Scalabilité EBCOT – Pas d'exploitation des redondances intrabandes, compensé par l'optimisation de la phase 2. – Scalabilité, région d'interet ,Navigabilité, Résistance aux erreurs(JPEG 2000) – Complexe MERCI