Le nom RACEME n'est pas anglais et ne signifie en aucun cas "Race Me". Ce nom provient d'un terme chimique. Un indice: cherchez ce que sont des énantiomères ou des molécules chirales...  Home   Zaurus   Debian   RioUtil   Projets Imac   Atari   mp3 
 TNS: Binarisation  Rééchantillonnage  Java: Applets  Ftp  Divers: Calculatrice  Killer  Disk Usage





Rééchantillonnage d'images

Traitement Numérique du Signal

Christophe Boyanique
Emmanuel Pinard
Avril 1999






Introduction

L'utilisation courante d'applications utilisant des images nécessite la possibilité de pouvoir modifier leur taille.

L'utilisation de différents algorithmes plus ou moins évolués permet de minimiser le phénomène d'aliasing plus ou moins visible suivant le type d'image et le facteur de redimensionnement.


Etude théorique

Une image numérique est l'échantillonnage d'une image analogique à une certaine fréquence:


Le signal correspondant à une image est donc un signal discret.

Le redimensionnement d'une image correspond donc à un changement de cette fréquence d'échantillonnage. Puisque l'on ne dispose que d'une image échantillonnée (et non pas de l'image analogique initiale), le rééchantillonnage provoquera une perte d'information ou l'apparition de bruits parasites.


Redimensionnement brut

La technique de redimensionnement brut ou du point le plus proche consiste à choisir comme couleur du pixel de l'image de destination la couleur du pixel le plus proche de l'image source en supposant que l'on superpose les deux images.

Dans le cas d'un agrandissement d'image, on va dupliquer certains échantillons et introduire ainsi une redondance d'informations:


Dans le cas d'un retrécissement d'image on va ignorer un certain nombre d'échantillons ce qui entrainera une perte d'information:




Interpolation bilinéaire

Une méthode simple pour éliminer le phénomène d'aliasing est d'utiliser l'interpolation bilinéaire. On utilise donc les 4 points les plus proches des coordonnées calculées dans l'image source en les pondérant par des coefficients inversement proportionnels à la distance et dont la somme vaut 1:


Le poids affecté à chaque point est:


La valeur du point obtenu par interpolation sur les 4 points les plus proches est:




Rééchantillonnage idéal

Le rééchantillonnage consiste à calculer la transformée de Fourier du signal (image) d'entrée. On recalcule ensuite le signal à la nouvelle fréquence d'échantillonnage.

Le signal d'entrée étant un signal discret, celui-ci est en forme de marches d'escalier. Pour atténuer cet effet il faut donc supprimer les brusques changements temporels, c'est à dire supprimer les hautes-fréquences. On utilise donc un filtre passe-bas h sur la transformée de Fourier:


Mais il plus aisé de travailler dans le domaine temporel et de multiplier le signal réél par un sinus cardinal (dont la Transformée de Fourier est une porte):


On obtient donc pour le filtre h:


Pour obtenir le signal reconstruit il faudrait théoriquement faire la double somme sur l'infini (la largeur et la hauteur totale de l'image). On se limitera à une double somme sur une largeur restreinte suivant k1 et k2:


Il est possible de calculer directement le signal discret de destination S' sans calculer le signal de départ reconstruit S: on échantillonne le signal de départ convolué avec le sinus cardinal en utilisant la relation:


On obtient donc au final pour la reconstruction du signal d'arrivée:


Signal discret de départ:



Transformée de Fourier du signal discret:



Transformée de Fourier multipliée par une porte:



Signal discret de sortie:



(agrandissement)

(retrécissement)



Implémentation et Programmation

Les différents algorithmes de redimensionnement ont été programmés en langage C ANSI. Ces programmes ne font que les conversions, il faudra donc utiliser un utilitaire externe pour visualiser les images. Les sources de ces programmes sont largement commentés.

Tous les programmes utilisent des fichiers au format PGM ASCII (PGM en 256 niveaux de gris et PPM en 8 ou 24 bits).

Fichier source

Pour utiliser le redimensionnement brut:

./redim -r input.p[gp]m output.p[gp]m

Pour utiliser l'interpolation bilinéaire:

./redim -b input.p[gp]m output.p[gp]m

Pour utiliser le rééchantillonnage idéal:

./redim -sx input.p[gp]m output.p[gp]m

où x est le coefficient de largeur: la largeur de la matrice utilisée est de 1+2*x.

La possibilité de choisir la valeur de x permet de tester l'importance de la taille du masque de convolution. Il faut noter que le fait de choisir x égal à 0 revient à considérer un masque de convolution réduit à un unique point (le plus proche des coordonnées calculées) ce qui donnera un résultat strictement identique à celui du redimensionnement brut.


Application à différents types d'images

Texture (traces verticales)

Voir les Résultats.

On remarque que sur des images aussi basiques, seule la méthode de redimensionnement brute semble parfaite. Dans le cas du retrécissement d'image, la méthode d'interpolation linéaire est encore acceptable tandis que dans tous les cas, le rééchantillonnage idéal fait apparaitre des images plus ou moins floues suivant le masque utilisé. Il semble probable que le logiciel Xv sous Linux utilise la méthode de redimensionnement brut.

Texture (traces diagonales)

Voir les Résultats.

Ces images font apparaitre le phénomène d'aliasing en redimensionnement brut et sur les images redimensionnées par Xv. Ce logiciel utilise donc assurément la méthode de redimensionnement brut.

L'interpolation bilinéaire corrige relativement bien ce phénomàene tandis que le rééchantillonnage idéal compense ce phénomène par un flou sur l'ensemble des images redimensionnées qui est d'autant plus important que le masque utilisé est important. Dans le cas de retrécissement d'image, ce flou est beaucoup plus discret et la méthode de rééchantillonnage devient acceptable si on utilise un masque suffisement petit (3x3).

Image de synthèse 2D

Voir les Résultats.

Dans le cas du retrécissement, seuls l'interpolation biliniéaire et le rééchantillonnage idéal avec un masque (3x3) donnent de bons resultats. Dans le cas d'agrandisssement, seule la méthode d'interpolation donne une image acceptable ou n'apparaissent ni le phénomàene d'aliasing ni des images floues.

Image photographique

Voir les Résultats.

Il n'apparait pas de nouveaux éléments de comparaison hormis le critère subjectif d'appréciation de la photographie. On observe toujours le phénomène d'aliasing en méthode brute ainsi que sur l'agrandissement d'image en rééchantillonnage idéal. L'interpolation bilinéaire est encore la meilleure méthode de redimensionnment de photographie.

Image variée

Voir les Résultats.

Dans la partie retrécissement, on observe la perte du bouton de WindowMaker en méthode brute. Les deux autres méthodes étant acceptables en retrécissement.


Conclusion

Il apparait que la meilleure méthode quel que soit le type de redimensionnement d'image est la méthode d'interpolation bilinéaire.

La méthode de rééchantillonnage idéal est également très acceptable si on utilise un masque de type 3x3 au-délà l'image redimensionnée devient floue et on perd l'intérêt du phénomène d'antialiasing de cette méthode.

Quant à la méthode brute, elle est trop simple et rapide pour être efficace; en outre, celle-ci ne compense pas le phénomène d'aliasing. Il est par conséquent surprenant de constater que le logiciel Xv sous Linux l'utilise.