the Removers

La compression fractale

mercredi 1er juillet 1998, par Stabylo

 Introduction

L’intérêt de la compression d’images n’est plus à démontrer. La limitation de la bande passante, ne serait-ce que sur Internet, nous le rappelle tous les jours. La compression fractale est une voie actuelle de recherche pour améliorer les performances. Nous l’avons mise en oeuvre et nos résultats mettent en lumière aussi bien son efficacité que ses désavantages.

 L’idée de départ

M. Barnsley fut le premier à avoir l’idée, de tirer parti du déséquilibre de complexité entre les attracteurs fractals obtenus par itération d’une fonction contractante (les IFS : Iterated Function Systems) et la méthode permettant de les calculer. En effet, les images de ces attracteurs s’obtiennent à l’aide de quelques coefficients très simple. L’idée consiste donc à changer de représentation de l’image : au lieu de la représenter à l’aide de pixels, on le fait à l’aide des coefficients qui permettent son calcul. Ces deux représentations sont équivalentes d’un point de vue du rendu visuel, mais l’une d’elles est infiniment plus concise que l’autre.

Le plus difficile est alors de s’attaquer au problème inverse : étant donné une image, comment trouver une application dont l’attracteur sera le plus proche possible de l’image à compresser ?

 Une voie de recherche

L’existence et l’unicité de l’attracteur associé à une fonction contractante est bien sûr justifiée à l’aide du théorème du point fixe. Or il s’avère que la démonstration de ce dernier nous apporte une majoration permettant de résoudre notre problème.

Nous nous intéressons ici à des images en noir et blanc. Pour les décrire mathématiquement, celles-ci seront vues comme des compacts de R2.

Soit I le compact représentant l’image à compresser. Un point du plan est noir s’il appartient à I , et blanc s’il est en dehors de cet ensemble.

Par ailleurs, il nous faut être capable de quantifier la différence entre deux images. Nous choisissons donc la distance de Hausdorff, notée dH, qui s’applique à H l’ensemble des compacts de R2 et en fait un métrique complet. Pour deux éléments A et B de H, celle-ci a pour formule

dH(A,B)=sup(E(A,B),E(B,A))

où E(A,B) est l’écart de A à B défini à partir de la distance euclidienne par

E(A,B)=sup(d2(a,B), aA)

Dès lors, si l’on se donne une application ω contractante de H dans H, et A0 un élément de H, le théorème du point fixe nous permet d’affirmer que la limite

lω=lim n→∞ ω n(A0)

ne dépends que de ω : c’est l’attracteur de ω. Nous obtenons également la majoration

dH(A0,lω) ≤ (1-s)-1dH(A0,A1) (1)

A1=ω(A0) et s<1 est le module de contraction de ω.

Par conséquent, si l’on s’assure que 1-s est non nul et que dH(A0,A1) est aussi petit que possible, nous obtiendrons un attracteur lω qui approche A0 de manière satisfaisante.

Si I est l’image que nous voulons compresser, minimiser dH(I, ω(I)) devient notre préoccupation première. Nous chercherons donc une application contractante ω qui laisse au mieux l’image I invariante, selon la distance choisie, ici dH.

Puisqu’il n’est pas raisonnable de rechercher une application contractante quelconque de R2 dans R2, nous nous limiterons à une catégorie d’entre elles.

Ici, nous avons choisi les applications utilisées dans les PIFS. Celles-ci qui sont l’union finie de composantes linéaires ωi : Ai → BiAi et Bi sont des sous ensembles de l’image et (Bi)i=1,…,n une partition de celle-ci :

ω(I)=ωi(IAi)

 L’algorithme...

L’algorithme de compression se présentera donc ainsi :

  1. Créer une partition (Bi)i=1,…,n de I
  2. Pour chaque Bi, trouver une partie Ai de I et une application linéaire contractante ωi : Ai → Bi telle que dH(ωi(Ai),Bi) soit minimal
  3. Si cette distance n’est pas satisfaisante, affiner la partition et entreprendre une nouvelle recherche

On voit tout de suite que l’essentiel se situe dans la seconde étape. Il est bon de remarquer dès maintenant que puisque nous cherchons ωi : Ai → Bi linéaire et surjective, la seule donnée de Ai détermine entièrement ωi. Il nous faudra essayer successivement un grand nombre d’ensembles de départ Ai tels qu’on puisse transformer Ai en Bi par une application linéaire. A chaque fois, il faudra évaluer la distance dH(ωi(Ai),Bi) et on retiendra le couple (ωi,Ai) qui la minimise.

Par ailleurs, la décompression est fort aisée à réaliser :

  1. Choisir une image A quelconque
  2. Calculer par itération les termes de la suite uj=ωοj(A)
  3. Stopper le processus lorsque dH(uj,uj+1) est assez petit pour que l’on puisse raisonnablement dire qu’on a atteint la limite lω

Nous savons alors que l’attracteur lω obtenu sera proche de l’image I que nous voulions compresser grâce à la majoration (1)

 ...Et son adaptation à nos machines

Ici interviennent quelques restriction pour adapter cette méthode à nos ordinateurs.

  • Les images seront carrées avec 2k pixels de coté
  • La partition sera une division en quadtree
  • Les applications linéaires transformeront un carré en un carré de côté deux fois moindre

Ici, nous transformons un carré A en un autre de coté deux fois moindre B, donc il n’existe que huit transformations possibles obtenues par rotation, par symétrie ou par composée des deux.

Dès lors, l’algorithme de recherche de l’application se présente ainsi :

  1. On se donne un carré Bi
  2. Pour tous les carrés Ai de côté double, et pour chacune des huit orientations, calculer le transformé A’i de Ai et calculer dH(A’i,Bi)
  3. Stocker Bi et l’orientation choisie qui minimisent cette distance

On voit donc qu’il n’est nullement besoin de se préoccuper de fonctions : Il suffit d’effectuer des comparaisons de morceaux d’images.

 Les images en niveaux de gris

Pour cette présentation de l’algorithme, nous avons considéré des images noir et blanc représentées par de compacts du plan.

Dans le cadre d’images en niveaux de gris, une image est représentée par une application de [0,…,2k-12 dans [0,…,255], et le métrique devient L2, car cette distance est à la fois simple à manipuler et proche de l’appréciation visuelle de l’homme.

Puisque dans nos ordinateurs, les images sont discrètes, la distance s’apparentera à la distance euclidienne d2 de R(4k). Si N=4k et A=(ai)i=1,…,N , B=(bi)i=1,…,N> sont deux images, on aura

d2(A,B)=[(a1-b1)2+...+(aN-bN)2]1/2

Le principe est alors le même, à ceci près que les applications ωi sont linéaires en coordonnées spatiales et sur la composante de gris. Celles-ci intégreront donc réglage de contraste et de luminosité, qui correspond à une fonction affine f : R → R décrite par f(x)=ax+b. La détermination des coefficients a et b optimums pour une composante ωi se fait en annulant les dérivées partielles de d2(Ai,ωi(Ai)) par rapport à a et b. On veillera bien entendu à conserver |a|<1 de manière à ce que ωi soit bien contractante.

 Les images couleurs

Pour manipuler une image couleur, il est possible de la décomposer en trois composantes que l’on traite chacune comme une image en niveaux de gris. La décomposition en niveaux de rouge, de vert et de bleu est la première qui vient à l’esprit, mais c’est aussi la moins efficace.

Puisque l’homme conçoit plutôt les couleurs à travers leur luminosité, leur teinte, et leur saturation, on utilise cette décomposition.

L’avantage de celle-ci réside dans le fait que parmi ces trois composantes, la première est bien plus importante au rendu visuel. On pourra donc fortement compresser les deux autres sans beaucoup perdre en qualité.

 Nos expérimentations et nos résultats

Nous avons implémenté la méthode par quadtree pour des images couleurs. Notre petite touche finale a été la création d’un format d’images à part entière pour stocker nos images sans laisser un seul bit inutilisé !

Dès lors, nous avons été à même de rivaliser avec les standards de compression d’image, tels que le format JPEG. Notre compression est d’ailleurs meilleure que ce dernier si l’on quantifie toutefois la qualité d’une image à l’aide de la distance d2 à travers le PSNR (Peak Signal Noise Ratio) défini par

PSNR=20⋅log(255/d2(A,B))

A et B sont l’image d’origine et l’image compressée.

Cependant, même si le calcul du couple (PSNR,taux de compression) est à l’avantage de notre compression, on ne peut pas affirmer avoir surpassé le format JPEG, car il n’existe pas de moyen de calculer réellement les pertes visuellement ressenties par l’oeil humain. Ainsi, un test psycho-sensoriel serait au désavantage de notre méthode.

De plus, si la décompression est assez rapide, les temps de calculs sont incroyablement élevés lors de la compression. La complexité de la recherche est explosive : certaines images relativement grandes (128 par 128) ont nécessité plusieurs jours de calcul. Il faut savoir qu’un compresseur commercial au format FIF donne lieu à de meilleurs résultats en quelques dizaines de secondes !

 Conclusion

Notre implémentation de cette technique de compression a atteint ses objectifs en termes de compression et de qualité. Nous sommes en effet très contents d’avoir pu rivaliser avec le standard JPEG.

Pour finir, il serait bon de mentionner l’existence de méthodes permettant d’accélérer le processus de compression sans trop perdre en efficacité. Il s’agit en général de choisir convenablement un ensemble restreint de Ai susceptibles de donner de meilleurs résultats.

 Bibliographie

Elle est assez restreinte puisque ce livre explore en profondeur notre propos. De plus, de tels livres ne sont pas légion.

  • Yuval Fisher. Fractal Image Compression, theory and application. Springer, 1996. ISBN 0-387-94211-4 (New York) et ISBN 3-540-94211-4 (Berlin)

P.-S.

Rapport de TIPE informatique (Travail d’Initiative Personnelle Encadré) de l’année scolaire 1997-1998 sur le thème Images et géométrie. Réalisé par trois élèves de Math Spé du lycée Pothier d’Orléans :

  • Benjamin Gandon
  • Vincent Larchet
  • Sylvain Trimoreau

Encadrement : Raymond Lachaux, dit « Lx ».

SPIP | squelette | | Plan du site | Suivre la vie du site RSS 2.0