Interpolation bilinéaire

De testwiki
Aller à la navigation Aller à la recherche

L'interpolation bilinéaire est une méthode d'interpolation pour les fonctions de deux variables sur une grille régulière. Elle permet de calculer la valeur d'une fonction en un point quelconque, à partir de ses deux plus proches voisins dans chaque direction. C'est une méthode très utilisée en imagerie numérique pour le redimensionnement d'image, qui permet d'obtenir de meilleurs résultats que l'interpolation par plus proche voisin, tout en restant de complexité raisonnable[1].

Principe général

La grille régulière à partir de laquelle on interpole. Les quatre points rouges sont les points existants, et le point vert est le point dont on cherche la valeur par interpolation.

Contrairement à ce que son nom suggère, la fonction d'interpolation n'est pas bilinéaire mais quadratique, qui peut se mettre sous la forme :

f(x,y)=ax+by+cxy+d.

La valeur Modèle:Math est la valeur interpolée au point de coordonnées Modèle:Math, et Modèle:Math sont des constantes déterminées à partir des quatre voisins Modèle:Math du point Modèle:Math dont on cherche la valeur. Connaissant les valeurs en ces points, on peut écrire un système de 4 équations à 4 inconnues :

{f(x1,y1)=ax1+by1+cx1y1+df(x2,y1)=ax2+by1+cx2y1+df(x1,y2)=ax1+by2+cx1y2+df(x2,y2)=ax2+by2+cx2y2+d

L'interpolation bilinéaire peut s'interpréter comme une succession de deux interpolations linéaires, une dans chaque direction.

Solution du système

Exemple d'interpolation bilinéaire dans le carré formé par les points (0,0), (0,1), (1,1) et (1,0) et respectivement de valeur 0, 1, 0.5 et 1. Les valeurs de f(x,y) sont représentées par des variations de couleur.

Un changement de variable permet de simplifier considérablement le système à résoudre. Considérons les nouvelles variables suivantes :

dx=xx1,dy=yy1,

Modèle:Math sont les coordonnées du coin inférieur gauche. La nouvelle fonction d'interpolation bilinéaire s'écrit alors :

f(dx,dy)=adx+bdy+cdxdy+d.

En introduisant les notations Δx=x2x1 et Δy=y2y1, la matrice à inverser devient :

A=(0001Δx0010Δy01ΔxΔyΔxΔy1) .

Il reste à introduire les notations suivantes :

Δfx=f(x2,y1)f(x1,y1),Δfy=f(x1,y2)f(x1,y1),
Δfxy=f(x1,y1)+f(x2,y2)f(x2,y1)f(x1,y2).

La fonction d'interpolation bilinéaire solution du problème vient alors directement :

f(x,y)=ΔfxdxΔx+ΔfydyΔy+ΔfxydxΔxdyΔy+f(x1,y1).

Références

Modèle:Références

Articles connexes

Modèle:Palette Analyse numériqueModèle:Portail

  1. Modèle:Ouvrage, « Image sampling and Quantization », Modèle:P.66.