• Aucun résultat trouvé

Chapitre 2 Principales méthodes et applications du mosaïquage d’images 31

2.2 Le mosaïquage d’images

2.2.3 Définition mathématique du recalage d’images

2.2.3.2 Interpolation des niveaux de gris des images transformées

Un pixel dont les coordonnées sont entières dans l’image à transformer, ne sera pas forcément placé sur des coordonnées entières dans l’image transformée. Par ailleurs, un pixel de l’image à transformer ne correspond pas à un seul pixel de l’image transformée (et inversement). Pour ces raisons, il n’est pas suffisant de recopier les niveaux de gris de l’image à transformer vers l’image transformée.

Lorsqu’une transformation est appliquée à une image, deux méthodes peuvent être utilisées pour déterminer les valeurs d’intensité des pixels de l’image transformée : la méthode directe et la méthode inverse. Pour les deux méthodes, la première étape consiste à appliquer la transfor-mation aux coordonnées minimum et maximum de l’image (les quatre coins). De cette façon, la surface du polygone à quatre côtes (bounding box ) sur laquelle l’image transformée va être « reproduite » est connue. Si la méthode directe est utilisée, la transformation est appliquée à toutes les coordonnées des pixels de l’image originale (image source) et le niveau de gris des pixels originaux est copié dans l’image transformée sur les pixels dont les coordonnées sont les entiers les plus proches des coordonnées calculées. Cette opération est illustrée dans la figure 2.7(a). Il existe deux problèmes associés à l’utilisation de cette technique. D’une part, lorsque la transformation est appliquée à l’image originale, certains pixels de l’image transformée peuvent ne correspondre à aucun pixel dans l’image originale. Cela fait apparaître des trous de niveaux de gris dans l’image transformée. D’autre part, un pixel dans l’image transformée peut correspondre à plusieurs pixels dans l’image originale. Donc, les valeurs d’intensité des pixels vont se superpo-ser à une même position dans l’image transformée. La méthode directe ne permet pas d’affecter une et une seule valeur de niveaux d’intensité à la totalité des pixels de l’image transformée.

En raison des inconvénients liés à l’utilisation de la méthode directe, la méthode inverse est généralement préférée. Pour cette méthode, une fois l’extension de l’image transformée connue, la transformation inverse T−1 est appliquée à toutes les coordonnées entières des pixels de l’image transformée pour calculer, pour chaque pixel, le niveau de gris correspondant à cette position dans l’image originale. Comme il est probable que cette position ne soit pas entière, il faut alors calculer la valeur de ce pixel par interpolation des valeurs des pixels voisins. Le principe de la méthode inverse est montrée dans la figure 2.7(b). Cette méthode garantit l’absence de trous dans l’image transformée.

Pour calculer la valeur du pixel dans l’image transformée, une méthode d’interpolation qui prend en compte les valeurs d’intensité des pixels dans le voisinage du pixel correspondant dans l’image source est utilisée, les plus connues étant les interpolations par le plus proche voisin, bilinéaire et bicubique.

Interpolation par le plus proche voisin. Cette méthode d’interpolation est la plus simple. Ici, la valeur du pixel cherchée est obtenue, comme son nom l’indique, en prenant la valeur du pixel qui sera le plus proche de la position calculée sur l’image originale.

Interpolation bilinéaire. Cette méthode considère un voisinage de taille 2 × 2 pixels autour de la coordonnée d’intérêt calculée (voir figure 2.8). Une moyenne pondérée est donc calculée avec les valeurs d’intensité de ces 4 pixels. C’est une extension de l’interpolation linéaire au cas bi-dimensionnel. La méthode consiste à appliquer une interpolation linéaire d’abord dans une direction et ensuite dans l’autre. Si les quatre valeurs des pixels les plus proches autour de la position d’intérêt sont connues, la valeur du pixel de coordonnées (px, py) dans l’image transformée peut être calculée comme suit. Soit (x, y) les coordonnées entières du pixel situé immédiatement en haut et à gauche du pixel de coordonnées non entières ramené de l’image

2.2. Le mosaïquage d’images

(a) (b)

Fig. 2.7 – Illustrations des deux approches possibles pour transformer une image : directe (a) et inverse (b). IR est l’image originale et IT r est l’image transformée. T est la transformation appliquée aux coordonnées des images. La transformation prise comme exemple ici est une simi-larité qui va multiplier par deux la taille de l’image (s = 2). (a) Transformation de l’image en appliquant la méthode directe. (b) Transformation par la méthode inverse avec une interpolation par le plus proche voisin.

transformée dans l’image à transformer avec T−1 (figure 2.8). L’interpolation selon l’axe ~x est effectué avec la relation 2.25.

IR(px, y) = (1 − a)IR(x, y) + aIR(x + 1, y)

(2.25) IR(px, y + 1) = (1 − a)IR(x, y + 1) + aIR(x + 1, y + 1)

où a est la distance, dans la direction ~x, du point dont l’intensité doit être calculée à la position du pixel pris comme référence (x, y). Avec ces deux valeurs, il est maintenant possible de calculer le niveau de gris IR(px, py) du point de coordonnées entières (px, py) dans l’image transformée en interpolant les niveaux de gris selon ~y :

IR(px, py) = (1 − b)IR(px, y) + bIR(px, y + 1). (2.26)

où b est la distance, dans la direction ~y.

Le résultat de cette méthode est visuellement beaucoup plus lisse (moins pixelisé) que celui obtenu par la méthode du plus proche voisin.

Interpolation bicubique. Cette méthode prend en compte un voisinage de taille 4 × 4. Les seize pixels les plus proches du pixel dont l’intensité doit être calculée définissent ce voisinage. Comme montré dans la figure 2.9, une moyenne pondérée des seize niveaux de gris est calculée en utilisant un polynome du 3eme` degré. Comme pour l’interpolation bilinéaire, une première interpolation cubique est appliquée d’abord selon une première direction et ensuite selon l’autre en considérant cette fois-ci quatre pixels par ligne. Les coordonnées entières (x, y) sont encore celles du pixel situé immédiatement en haut et à gauche du pixel de coordonnées (px, py) dont le niveau de gris IR(px, py) doit être calculé. a est la distance selon ~x entre les points de coordonnées (x, y) et (px, py). L’interpolation selon ~x est calculée comme suit :

IR(px, y) = −a(1 − a)IR(x − 1, y) + (1 − 2a2+ a3)IR(x, y) + a(1 + a − a2)IR(x + 1, y) − a2(1 − a)IR(x + 2, y)

IR(px, y − 1) = −a(1 − a)IR(x − 1, y − 1) + (1 − 2a2+ a3)IR(x, y − 1) + a(1 + a − a2)IR(x + 1, y − 1) − a2(1 − a)IR(x + 2, y − 1)

(2.27) IR(px, y + 1) = −a(1 − a)IR(x − 1, y + 1) + (1 − 2a2+ a3)IR(x, y + 1) +

a(1 + a − a2)IR(x + 1, y + 1) − a2(1 − a)IR(x + 2, y + 1) IR(px, y + 2) = −a(1 − a)IR(x − 1, y + 2) + (1 − 2a2+ a3)IR(x, y + 2) + a(1 + a − a2)IR(x + 1, y + 2) − a2(1 − a)IR(x + 2, y + 2) Avec les quatre valeurs obtenues, la valeur de IR(px, py) peut être calculée comme suit :

IR(px, py) = −b(1 − b)IR(px, y − 1) + (1 − 2b2+ b3)IR(px, y) +

b(1 + b − b2)IR(px, y + 1) − b2(1 − b)IR(px, y + 2). (2.28) La distance b est définie sur la figure 2.9.

Fig. 2.9 – Principe de l’interpolation bicubique.

La figure 2.10 montre un exemple du résultat de l’application des méthodes d’interpolation décrites ci-dessus. L’interpolation bicubique fournit un rendu visuel légèrement amélioré par rapport à l’interpolation bilinéaire. Cependant, elle requiert beaucoup plus de temps de calcul

2.2. Le mosaïquage d’images que cette dernière. Pour la plupart des applications de recalage d’images, l’interpolation bili-néaire offre le meilleur compromis entre rendu visuel et temps de calcul. L’interpolation par le plus proche voisin peut être préférée si les valeurs d’intensité originales doivent absolument être préservées.

(a) (b) (c) (d)

Fig.2.10 – Résultat des différentes méthodes d’interpolation pour une transformation constituée d’un changement d’échelle d’un facteur 6. (a) Image originale. (b) Interpolation de (a) par le plus proche voisin. (c) Interpolation bilinéaire de (a). (d) Interpolation bicubique de (a).