close
Aller au contenu

Compression fractale

Un article de Wikipédia, l'encyclopédie libre.
Quatre images d'une même fougère de Barnsley générée par ordinateur, de plus en plus dense à mesure que des points s'ajoutent, jusqu'à une fougère verte presque pleine. Sur la première image, deux triangles (un grand rouge couvrant l'essentiel de la fougère, un petit bleu sur une foliole en bas à gauche) illustrent l'autosimilarité : la foliole bleue est une copie réduite et déformée de la zone rouge.
Fougère de Barnsley à plusieurs étapes de sa génération. L'une des transformations de la fractale copie, en la réduisant, la zone rouge sur la zone bleue.

La compression fractale est une méthode de compression d'image avec perte qui repose sur la détection de la récurrence des motifs, et tend à éliminer la redondance d'informations dans l'image en décrivant comment reconstituer chaque zone à partir d'une autre, en ajustant à la fois sa forme (position des pixels) et son apparence (contraste et luminance). L'image compressée n'est donc plus une grille de points, mais une « recette » mathématique permettant de la redessiner.

Fondée sur les systèmes de fonctions itérées et la géométrie fractale, la méthode possède deux particularités. Elle est très asymétrique : la compression, qui doit chercher les ressemblances dans l'image, est lente, alors que la décompression est quasi instantanée. Elle est aussi indépendante de la résolution, l'image pouvant être reconstruite à une taille différente de l'originale. Introduite par Michael Barnsley à la fin des années 1980 et rendue automatique par Arnaud Jacquin en 1992, elle a été exploitée commercialement (format FIF, encyclopédie Encarta) mais reste peu utilisée, supplantée par les méthodes par ondelettes.

La compression fractale naît de l'application à l'image de la théorie des systèmes de fonctions itérées (IFS). À la fin des années 1980, Michael Barnsley et Alan Sloan, chercheurs au Georgia Institute of Technology, en font le principe d'une méthode de compression : ils fondent la société Iterated Systems et déposent un premier brevet en 1987[1], puis popularisent l'idée dans la revue Byte en 1988, où ils annoncent des taux de compression théoriques pouvant atteindre 10 000:1[2]. Leur procédé d'encodage reste cependant extrêmement lent (de l'ordre de 100 heures pour comprimer une image couleur complexe, contre 30 minutes pour la décompresser) et exige qu'un opérateur identifie lui-même les transformations reproduisant l'image[2].

L'automatisation du codage est l'œuvre d'Arnaud Jacquin, étudiant de Barnsley, à qui l'on doit le premier algorithme entièrement automatique. Fondé sur un partitionnement de l'image en blocs (partitioned iterated function systems, ou PIFS) et décrit en 1992, il sert de base à la plupart des travaux ultérieurs[3],[4]. Iterated Systems, qui avait déposé dès 1989 un second brevet lié à ce codage[5], commercialise alors la technologie via le format de fichier FIF (Fractal Image Format), notamment pour l'encyclopédie Encarta, dont les quelque 7 000 photographies sont stockées sous forme fractale[6],[7].

La méthode continue ensuite d'évoluer : la diversification des méthodes de partitionnement améliore la qualité des images reconstruites, tandis que de nouvelles méthodes d'encodage réduisent le temps de calcul[8],[9]. Elle ne connaît toutefois pas d'adoption large, freinée par les restrictions liées aux brevets et surtout par son coût de calcul à l'encodage, bien supérieur à celui des méthodes par ondelettes ou par DCT. À taux de perte comparable, une image se comprime en moins d'une seconde en JPEG ou par ondelettes, contre plus de 5 heures de calcul par la méthode fractale[10].

La méthode repose sur un constat issu de la géométrie fractale, développée notamment par Benoît Mandelbrot pour décrire les formes irrégulières et autosimilaires de la nature : une image naturelle contient souvent des motifs qui se ressemblent à différentes échelles ou en différents endroits. Cette redondance, appelée autosimilarité, peut être exploitée pour décrire l'image de façon compacte[11].

Pour l'exploiter sur une image classique (ne présentant pas une telle autosimilarité globale), cette dernière est découpée en différents blocs que l'on va transformer afin de les faire correspondre à d'autres parties de l'image. Une fois que l'on peut entièrement recréer l'image à partir d'elle-même, les pixels d'origine peuvent être abandonnés et seules les transformations sont conservées : l'image compressée n'est plus une grille de points, mais un ensemble de règles permettant de la reconstruire. Plus cette liste de transformations sera courte et compacte, plus la compression sera efficace. La décompression consiste alors à appliquer cette liste de transformations de façon répétée à une image de départ quelconque, qui converge vers une image fixe (l'attracteur) approchant l'image d'origine. Cette reconstruction n'étant qu'une approximation, la compression fractale est une méthode avec perte[11].

Chaque transformation comporte deux volets : une composante géométrique, qui agit sur la position des pixels (réduction, déplacement, rotation ou symétrie), et une composante dite massique, qui ajuste leurs valeurs (le contraste et la luminance) afin de faire correspondre des régions d'éclairement différent[4]. C'est cette double transformation, et non un simple découpage, qui permet à une partie de l'image d'en représenter une autre.

Comme l'image compressée n'est plus une grille de pixels mais un ensemble de transformations, elle ne possède pas de résolution propre : on peut la reconstruire à une taille différente de l'originale en appliquant les transformations sur une grille plus fine. Cette propriété, appelée interpolation fractale, permet d'agrandir l'image en évitant les effets d'escalier des méthodes classiques. Elle ne restitue toutefois pas de détail réellement présent dans l'original : les structures ajoutées aux résolutions supérieures sont synthétisées de façon plausible, et non retrouvées[12],[10].

Le procédé est donc fortement asymétrique : la compression demande beaucoup de calculs pour explorer l'image, la découper et y rechercher les ressemblances, tandis que la décompression ne nécessite qu'une simple répétition des transformations listées, un nombre fini de fois[10].

Assises mathématiques

[modifier | modifier le code]

Plusieurs théorèmes permettent de garantir le bon fonctionnement de cette méthode de compression. Les deux théorèmes fondateurs en sont le Théorème du collage et le Théorème du point fixe de Banach.

Le théorème du point fixe énonce que, dans un espace métrique complet, toute transformation contractante (c'est-à-dire qui rapproche les points les uns des autres) possède un unique point fixe. Il garantit que si l'on applique de manière itérée cette transformation à partir de n'importe quel élément initial, la séquence obtenue convergera systématiquement vers ce point fixe unique. Dans le contexte de l'imagerie, ce point fixe est appelé l'attracteur du système et représente l'image finale stable reconstruite par le décodeur. La stricte contractivité de chaque transformation est suffisante, mais non nécessaire, à cette convergence : d'autres transformations peuvent convenir si elles répondent à certains critères[13],[14].

Deux photographies différentes se transformant, étape après étape, en un même triangle de Sierpiński.
Illustration du théorème du point fixe : deux images de départ différentes, soumises à la même transformation itérée, convergent vers le même attracteur, ici le triangle de Sierpiński.

Ce théorème peut être illustré par une photocopieuse dotée d'une fonction particulière : elle scanne le document, le réduit de moitié et en imprime trois exemplaires disposés en triangle sur la nouvelle page. Si l'on scanne à nouveau cette page encore et encore, l'image obtenue se rapproche systématiquement d'une même figure (ici le triangle de Sierpiński), quel que soit le document d'origine[12].

Le théorème du collage énonce que si l'on peut recouvrir presque parfaitement une image avec des petites copies déformées d'elle-même, alors les équations utilisées pour faire ces copies constitueront un bon code compressé pour cette image. Il établit ainsi que la qualité de l'image reconstruite est corrélée à la qualité du collage[12].

Méthode de Jacquin

[modifier | modifier le code]

Jacquin apporte plusieurs réponses concrètes qui rendent possible un programme autonome de compression et de décompression. Tout d'abord, la segmentation de l'image est simplifiée : il n'est plus nécessaire d'y reconnaître des structures fractales, l'image étant simplement découpée en blocs carrés source et destination (respectivement domain blocks et range blocks), les blocs destination étant deux fois plus petits que les blocs source afin que les transformations soient contractantes, condition suffisante du théorème du point fixe[4],[15].

Pour chaque bloc destination, on cherche le bloc source qui, après avoir subi différentes transformations, en est le plus proche au sens de l'erreur quadratique moyenne (EQM) sur la luminance. Ces transformations peuvent être géométriques (contraction, translation et huit isométries : les rotations de 90°, 180° et 270°, les symétries verticale, horizontale et selon les deux diagonales, et l'identité) ou massiques, c'est-à-dire modifiant la valeur des pixels (changement de contraste, de luminance, passage à un gris uniforme moyen, ou inversion des couleurs). Si, malgré toutes les combinaisons de transformations possibles, l'EQM reste trop élevée, le bloc destination est subdivisé en quatre et le même algorithme est appliqué à chacun des sous-blocs[4].

Afin d'optimiser la recherche du bloc source et le choix de la transformation, Jacquin classe les blocs en trois catégories selon leurs caractéristiques (présence de bords, de dégradés) :

  • les blocs lisses (shade), de faible variation, sont retirés du réservoir source. Un bloc destination de ce type n'est pas mis en correspondance avec un bloc source mais simplement remplacé par un gris uniforme égal à son niveau de gris moyen.
  • les blocs de bord (edge), qui présentent une transition d'intensité marquée, sont mis en correspondance avec d'autres blocs de bord et peuvent recevoir toutes les transformations. La recherche est accélérée en estimant le contraste et la luminance à partir des tons de part et d'autre du bord.
  • enfin, les blocs intermédiaires (midrange), de gradient modéré, sont mis en correspondance avec un bloc source de même type à l'aide des seules transformations massiques (contraste et luminance)[4].

Le code fractal ne contient alors, pour chaque bloc destination, que la position du bloc source retenu et les paramètres de sa transformation (isométrie, coefficients de contraste et de luminance), auxquels s'ajoute la description du découpage. C'est cette description compacte, et non les pixels, qui constitue l'image compressée. Sur l'image de test Lena, la méthode atteint un débit de l'ordre de 0,6 bit par pixel, la décompression convergeant en quelques itérations (de l'ordre de huit), pour une qualité jugée bonne dans l'ensemble malgré des effets de bloc liés au découpage carré[4].

Autres partitionnements

[modifier | modifier le code]

Le découpage en blocs carrés réguliers de Jacquin a l'avantage d'être simple à mettre en œuvre, et il est aussi employé par d'autres méthodes de compression comme JPEG. Il s'adapte toutefois mal au contenu de l'image. De petits blocs découpent une grande zone homogène en de nombreux morceaux, donc en autant de transformations à enregistrer, là où un seul grand bloc aurait suffi. À l'inverse, de gros blocs rendent quasi impossible la restitution des zones riches en détails. Des méthodes de partitionnement adaptatif apparaissent donc pour améliorer la qualité ou le taux de compression en ajustant le découpage au contenu de l'image. Le reste de la méthode de Jacquin, ainsi que les théorèmes sur lesquels elle repose, demeure inchangé. Seul le découpage évolue, parfois accompagné d'optimisations destinées à accélérer la recherche de correspondances[12].

L'arbre quaternaire (quadtree) est d'abord utilisé. Il divise récursivement une zone en quatre sous-carrés égaux tant qu'elle n'est pas correctement approchée par un bloc source. Simple à manipuler informatiquement, il améliore de deux à trois fois le taux de compression à qualité égale sans alourdir excessivement le codage[3],[15].

Le partitionnement horizontal-vertical (H-V) divise lui aussi récursivement une zone, mais par une ligne verticale ou horizontale placée librement, séparant le rectangle en deux sous-rectangles. En alignant les divisions sur les structures de l'image, il améliore les résultats du quadtree, au prix d'une complexité de codage plus grande liée au choix de la ligne de division[10],[15].

La triangulation de Delaunay permet quant à elle de découper l'image en triangles de formes et d'orientations quelconques, capables de suivre les bords et d'englober de grandes zones homogènes. Elle réduit nettement les effets de bloc et d'escalier produits par les découpages carrés, son apport principal étant la qualité visuelle le long des contours. Associée à une quantification vectorielle, elle atteint une bonne qualité à des débits de 0,25 à 0,5 bit par pixel, au prix d'un coût de calcul élevé[8],[16],[15],[17].

Décompression

[modifier | modifier le code]
Grille de huit images montrant la reconstruction progressive d'un cloître à partir d'une image de bruit aléatoire jusqu'à l'image nette, ainsi que l'image finale cible.
Décompression d'une image à différentes itérations. En haut à gauche, l'image d'initialisation, quelconque et aléatoire ; en bas à droite, l'image cible d'origine.

Quel que soit le partitionnement choisi, le principe de la décompression reste le même. Le fichier comprimé, qui contient les correspondances entre blocs source et blocs destination ainsi que leurs transformations, est lu, puis ces transformations sont appliquées de façon répétée à une image de départ quelconque (de l'ordre de huit à douze itérations chez Jacquin)[4]. Ce procédé itératif est celui des systèmes de fonctions itérées partitionnés (PIFS). Quelle que soit l'image initiale, la séquence converge vers une image stable, l'attracteur, qui approche l'image d'origine. La qualité du résultat dépend de la finesse du découpage : plus les blocs sont nombreux, plus l'image reconstruite est fidèle, mais moins la compression est élevée[3].

Notes et références

[modifier | modifier le code]
  1. Brevet  
  2. 1 2 (en) Michael F. Barnsley et Alan D. Sloan, « A Better Way to Compress Images », Byte, vol. 13, no 1, , p. 215-223
  3. 1 2 3 (en) Yuval Fisher, Fractal Image Compression: Theory and Application, Springer New York, (ISBN 978-1-4612-7552-7)
  4. 1 2 3 4 5 6 7 (en) A.E. Jacquin, « Image coding based on a fractal theory of iterated contractive image transformations », IEEE Transactions on Image Processing, vol. 1, no 1, , p. 18-30 (DOI 10.1109/83.128028, lire en ligne, consulté le )
  5. Brevet  
  6. (en-US) « Q141742: Mac Encarta 95: Files Installed During Installation », sur KnowledgeBase Archive (consulté le )
  7. (en) Michael F. Barnsley, « Fractal Image Compression », Notices of the American Mathematical Society, vol. 43, no 6, , p. 657-... (lire en ligne)
  8. 1 2 Modèle:Thèse
  9. Sofia Douda, Abdelhakim El Imrani et Mohammed Limouri, « Nouvelle approche d'accélération du codage fractal d'images », Revue africaine de recherche en informatique et mathématiques appliquées, vol. 11, (ISSN 1638-5713, DOI 10.46298/arima.1927, lire en ligne, consulté le )
  10. 1 2 3 4 (en) Ashish Negi, Ankit Garg et Akshat Agrawal, « A Review on Fractal Image Compression », International Journal of Computer Applications, vol. 85, no 4, , p. 25-31 (DOI 10.5120/14830-3081, lire en ligne, consulté le )
  11. 1 2 Jean-Luc Dugelay, « Compression fractale », CORESA 1995, 1res journées d'études et d'échanges Compression et Représentation des Signaux Audiovisuels, Rennes, (lire en ligne)
  12. 1 2 3 4 (en) « An Introduction to Fractal Image Compression : Literature Number BPRA065 », Texas Instruments Europe, (consulté le )
  13. (en) A.E. Jacquin, « Fractal image coding: a review », Proceedings of the IEEE, vol. 81, no 10, , p. 1451-1465 (DOI 10.1109/5.241507, lire en ligne, consulté le )
  14. Y. Fisher, E. W. Jacobs et R. D. Boss, « Fractal Image Compression Using Iterated Transforms », dans Image and Text Compression, vol. 176, Springer US, (ISBN 978-1-4613-6598-3, DOI 10.1007/978-1-4615-3596-6_2, lire en ligne), p. 35-61
  15. 1 2 3 4 (en) B. Wohlberg et G. De Jager, « A review of the fractal image coding literature », IEEE Transactions on Image Processing, vol. 8, no 12, , p. 1716-1729 (DOI 10.1109/83.806618, lire en ligne, consulté le )
  16. (en) F. Davoine, M. Antonini, J.-M. Chassery et M. Barlaud, « Fractal image compression based on Delaunay triangulation and vector quantization », IEEE Transactions on Image Processing, vol. 5, no 2, , p. 338-346 (DOI 10.1109/83.480769, lire en ligne, consulté le )
  17. Florian Agen et Julien Michot, La Compression Fractale, Méthodes de Jacquin, Subdivisions de triangles et Delaunay : Projet de C, encadré par Jean-Yves Ramel, Polytech'Tours, Université François-Rabelais, Département Informatique, , 31 p.

Bibliographie

[modifier | modifier le code]
  • (en) Yuval Fisher, Fractal Image Compression: Theory and Application, Springer New York, (ISBN 978-1-4612-7552-7)

Articles connexes

[modifier | modifier le code]