L'interpolation bilinéaire

L'interpolation bilinéaire est une méthode se basant sur des polynômes d'ordre 1. Elle consiste à attribuer à chaque point cible une combinaison linéaire des quatre points sources les plus proches de son antécédent par la transformation inverse.

L'interpolation bilinéaire utilisée est un schéma itératif qui implique de mapper une cellule quadrilatère sur une cellule carrée de coordonnées (0,0), (1,0), (0,1) et (1,1). Les coordonnées longitudinales et latitudinales du point 1 sont $(\theta(i,j),\phi(i,j))$, celles du point 2 $(\theta(i+1,j),\phi(i+1,j))$, etc. Définissons $\alpha$ et $\beta$ les coordonnées locales continues telles que les coordonnées du point 1 sont (0,0), du point 2 (1,0), du point 3 (1,1) et du point 4 (0,1). Si le point $P$ est dans la cellule formée par les quatre points précédents, la fonction $f$ au point $P$ peut être approximée par :


$\displaystyle f_P$ $\textstyle =$ $\displaystyle (1-\alpha)(1-\beta) f(i,j) + \alpha(1-\beta) f(i+1,j)+\alpha \beta f(i+1,j+1)+(1-\alpha)\beta f(i,j+1)$  
  $\textstyle =$ $\displaystyle w_1 f(i,j) + w_2 f(i+1,j) + w_3 f(i+1,j+1) + w_4 f(i,j+1)$ (2.3)

Déterminer les poids revient donc à calculer $\alpha$ et $\beta$ au point $P$. Les coordonnées longitudinales et latitudinales $(\theta,\phi)$ du point $P$ sont connues et peuvent être approximées par :


$\displaystyle \theta$ $\textstyle =$ $\displaystyle (1-\alpha)(1-\beta)\theta_1+\alpha(1-\beta)\theta_2+\alpha\beta\theta_3+(1-\alpha)\beta\theta_4$  
$\displaystyle \phi$ $\textstyle =$ $\displaystyle (1-\alpha)(1-\beta)\phi_1+\alpha(1-\beta)\phi_2+\alpha\beta\phi_3+(1-\alpha)\beta\phi_4$ (2.4)

Comme ce système (2.4) est non linéaire en $\alpha$ et $\beta$, il faut linéariser et itérer autour de la solution. En différenciant (2.4), le système suivant (2.5) est obtenu.


$\displaystyle \left[
\begin{array}{c}
\delta\theta\\
\delta\phi
\end{array} \right]$ $\textstyle =$ $\displaystyle A
\left[
\begin{array}{c}
\delta\alpha\\
\delta\beta
\end{array} \right]$ (2.5)

avec


$\displaystyle A$ $\textstyle =$ $\displaystyle \left[
\begin{array}{cc}
(\theta_2-\theta_1)+(\theta_1-\theta_4+\...
...\beta &
(\phi_4-\phi_1)+(\phi_1-\phi_4+\phi_3-\phi_2)\alpha
\end{array} \right]$ (2.6)

En inversant le sytème,


$\displaystyle \delta\alpha$ $\textstyle =$ $\displaystyle \left\vert
\begin{array}{cc}
\delta\theta &
(\theta_4-\theta_1)+(...
...\phi_1)+(\phi_1-\phi_4+\phi_3-\phi_2)\alpha
\end{array} \right\vert
\div det(A)$ (2.7)

et


$\displaystyle \delta\beta$ $\textstyle =$ $\displaystyle \left\vert
\begin{array}{cc}
(\theta_2-\theta_1)+(\theta_1-\theta...
...i_1-\phi_4+\phi_3-\phi_2)\beta &
\delta\phi
\end{array} \right\vert
\div det(A)$ (2.8)

En démarrant avec une condition initiale pour $\alpha$ et $\beta$ (par exemple $\alpha = \beta = 0$), les équations (2.7) et (2.8) peuvent être résoluent par itérations jusqu'à ce que $\delta\alpha$ et $\delta\beta$ soient suffisament petits. Les poids peuvent alors être calculés à partir de l'équation (2.3). À noter que pour une grille simple en longitude-latitude, le système converge à la première itération.

Figure 2.3: Représentation en élévation du champs de la figure 2.1 reéchantillonnée à 45x45 par la méthode du bilinéaire.
\includegraphics[width=0.8\textwidth]{figure23.eps.gz}

La mise en oeuvre est bien entendue un peu plus lourde que pour le plus proche voisin, mais il ne se crée plus de paliers lors du sur-échantillonnage. Le passage d'un niveau à un autre est dans ce cas linéaire, mais les discontinuités d'ordre 1 (gradient) sont conservées sous la forme d'arêtes. En contrepartie, des niveaux intermédiaires sont ajoutés dans la dynamique. Néanmoins, dans le cas du sous-échantillonnage, la prise en compte des quatre voisins rend la méthode moins sensible au bruit qu'avec le plus proche voisin.

Nicolas Daget 2006-03-21