Interpolation bicubique

En mathématiques, l'interpolation bicubique est une extension de l'interpolation cubique pour interpoler un ensemble de points distribués sur une grille régulière bidimensionnelle. La surface interpolée est plus lisse que les surfaces correspondantes obtenues par interpolation bilinéaire ou par sélection du plus proche voisin. L'interpolation bicubique peut être accomplie en utilisant soit des polynômes de Lagrange, soit des splines cubiques, soit un algorithme de convolution cubique.

Illustration de l'interpolation bicubique sur un ensemble de données aléatoires

Dans le domaine du traitement d'images numériques, l'interpolation bicubique est souvent préférée à une interpolation bilinéaire ou à la technique du plus proche voisin pour le ré-échantillonnage d'images, lorsque le temps de traitement n'est pas critique. Contrairement à une interpolation bilinéaire, qui ne prend que 4 pixels (2 × 2) en compte, l'interpolation bicubique considère un voisinage de 16 pixels (4 × 4). Les images ré-échantillonnées par une interpolation bicubique sont donc plus lisses et ont moins d'artefacts d'interpolation.

Développement

modifier

Supposons que les valeurs de la fonction   et les dérivés  ,   et   sont connues aux quatre coins   et   d'un carré unitaire. La surface interpolée peut alors être écrite :

 

Le problème de l'interpolation consiste à déterminer les seize coefficients  . La fonction   évaluée en ces quatre points, nous donne ces quatre équations :

  1.  
  2.  
  3.  
  4.  

De même, en évaluant les dérivées partielles   et   à ces quatre points, on obtient les huit équations :

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  

Finalement, les quatre équations suivantes sont obtenues en évaluant la dérivée partielle  

  1.  
  2.  
  3.  
  4.  

Dans les expressions ci-dessus,

 
 
 .

Cette procédure donne une surface   sur le carré unitaire   qui est continue et a des dérivées continues. L'interpolation bicubique sur une grille régulière de taille quelconque peut donc être réalisée en recollant des surfaces unitaires interpolées bicubiques, en s'assurant que les dérivées aux limites correspondent.

Trouver les dérivées à partir des valeurs de la fonction

modifier

Si les dérivées sont inconnues, elles sont généralement estimées à partir des valeurs de la fonction au voisinage des coins du carré unitaire à interpoler, par exemple en utilisant les différences finies.

Pour trouver l'une des dérivées simples,   ou  , en utilisant cette méthode, trouver la pente entre les deux points environnants selon l'axe approprié. Par exemple, pour calculer   pour un point cible, trouver   pour les points à gauche et à droite du point cible et calculer la pente. De même pour calculer   en un point cible, il faut calculer   pour les points au-dessus et en-dessous du point cible, et calculer la pente.

Pour trouver la dérivée croisée,  , prendre les dérivées selon les deux axes, une par une. Par exemple, on peut utiliser d'abord la procédure pour calculer  , la dérivée selon  , pour les points au-dessus et en dessous du point cible, et ensuite utiliser la procédure pour calculer  , la dérivée selon  , sur ces dérivées selon   (plutôt que de calculer   sur les valeurs de   pour ces points). On obtient la valeur de   pour le point cible. (On peut également le faire dans la direction opposée, calculer en premier   et ensuite   sur ces valeurs. Les deux résultats sont équivalents.)

Aux frontières de l'ensemble de points à traiter, il manque certains des points environnants pour calculer les dérivées. Les points manquants peuvent être estimés par un certain nombre de méthodes. Une méthode simple et courante consiste à supposer que la pente du point existant au point cible inexistant est constante, et d'utiliser cela pour calculer une valeur hypothétique pour le point manquant.

Algorithme de convolution bicubique

modifier

L'interpolation par spline bicubique nécessite la résolution du système linéaire décrit ci-dessus pour chaque case de la grille de valeurs connues. On peut obtenir un interpolateur avec des propriétés similaires, en appliquant une convolution avec le noyau suivant dans chaque dimension :

 

  est généralement fixé à -0,5 ou -0,75. Notez que   et   pour tous les entiers non nuls  .

Cette approche a été proposée par Keys, qui a montré que   (ce qui correspond une spline cubique d'Hermite) produit une convergence du troisième ordre par rapport à la fonction d'origine[1].

Si nous utilisons la notation matricielle pour le cas commun  , nous pouvons exprimer l'équation d'une manière plus conviviale :  

pour   entre   et   pour une dimension.

Pour deux dimensions, appliqué d'abord en   puis en   :

 
 
 
 
 

Utilisation en infographie

modifier

L'algorithme bicubique est fréquemment utilisé pour la mise à l'échelle d'images et de vidéos pour l'affichage (voir Redimensionnement d'image). Il préserve les détails fins mieux que l'algorithme bilinéaire.

Toutefois, en raison des lobes négatifs sur le noyau de convolution, l'algorithme provoque un dépassement (halo). Cela peut causer la saturation du signal, c'est donc un artefact (voir également les effets d'anneau), mais cela augmente le piqué d'image (la netteté apparente), et peut être souhaitable.

Notes et références

modifier
  1. (en) R.Keys, « Cubic convolution interpolation for digital image processing », IEEE transactions on acoustics, speech, and signal processing, vol. 29, no 6,‎ , p. 1153-1160.