Interpolation Bilinéaire
Reconstruction d'un pixel non entier
Enonce
Implémenter interp_bilineaire(img, x, y) où img est une liste de listes (image en niveaux de gris). Renvoyer la valeur interpolée au point continu $(x,y)$.
⚠ Bord : Si $(x,y)$ tombe en dehors de l'image, retourner 0 (pixel noir).
Signature attendue
def interp_bilineaire(img: list, x: float, y: float) -> float:
Exemples
interp_bilineaire([[0, 100], [200, 300]], 0.5, 0.5)→150.0 (moyenne des 4)interp_bilineaire([[0, 100], [200, 300]], 0.0, 0.0)→0 (coin exact)interp_bilineaire([[0, 100], [200, 300]], 0.0, 1.0)→0 (hors borne y)
📖 Rappel de cours
Soit une grille discrète $\text{img}[i][j]$ et un point continu $(x,y)$ non entier. L'interpolation bilinéaire reconstruit la valeur en $(x,y)$ par moyenne pondérée des 4 pixels voisins.
Décomposition :
Soit $i = \lfloor x\rfloor$, $j = \lfloor y\rfloor$, $a = x-i$, $b = y-j$. Alors :
$f(x,y) = (1-a)(1-b)\,\text{img}[i][j] + a(1-b)\,\text{img}[i+1][j]$
$+\, (1-a)b\,\text{img}[i][j+1] + a\,b\,\text{img}[i+1][j+1]$
Usage classique : rotation ou zoom d'une image, où la pré-image d'un pixel cible n'est pas un point de la grille source.
← Exercices d'analyse numérique en Python — dichotomie, Newton, intégration
Exercices du meme theme
- Méthode des Moindres Carrés
- Méthode de Jacobi
- Méthode de Romberg
- Géométrie 3D — Vecteurs
- Marche Aléatoire 2D
- Algorithme de Metropolis
La correction commentee, les indices progressifs, l'execution du code dans le navigateur et la verification par l'IA sont reserves aux abonnes.