Interpolation 2D avec MATLAB

Ammar Ali 15 février 2024
Interpolation 2D avec MATLAB

Ce tutoriel abordera la recherche de l’interpolation de données 2D à l’aide de la fonction interp2() dans MATLAB.

Trouvez l’interpolation de données 2D à l’aide de la fonction interp2() dans MATLAB

Nous pouvons utiliser la fonction intégrée interp2() de MATLAB pour trouver l’interpolation de données maillées 2D dans un format de grille maillée. Par exemple, interpolons sur une grille en utilisant la méthode par défaut.

Voir le code ci-dessous.

clc
[x,y] = meshgrid(-3:3);
v = peaks(x,y);
figure
surf(x,y,v)
title('Original Sampling');
[xq,yq] = meshgrid(-3:0.25:3);
vq = interp2(x,y,v,xq,yq);
figure
surf(xq,yq,vq);
title('Linear Interpolation Using Finer Grid');

Production :

interpolation à l’aide de la méthode par défaut

Dans la sortie, l’image de droite est le résultat d’une interpolation utilisant la méthode par défaut.

Comme vous pouvez le voir, l’image de sortie a plus de points de données par rapport à l’original. Les vecteurs x et y sont les matrices d’entrée, et ils doivent avoir la même taille.

Le vecteur v contient les valeurs d’échantillon. Il peut contenir des valeurs réelles ou complexes si v contient des nombres complexes.

Ensuite, la fonction interp2() interpolera les parties réelle et imaginaire séparément. Les vecteurs xq et yq contiennent les points de requête, qui peuvent être de vrais scalaires, vecteurs, matrices ou tableaux.

Nous pouvons également modifier la méthode d’interpolation en définissant la nouvelle méthode en tant que chaîne dans la fonction interp2() comme nous pouvons définir la méthode cubique, la plus proche ou la spline pour l’interpolation. Nous pouvons utiliser l’interpolation pour affiner une image en niveaux de gris.

Si une image a moins de pixels, les détails à l’intérieur de l’image ne seront pas visibles. Dans ce cas, nous pouvons utiliser l’interpolation pour augmenter le nombre de pixels pour comprendre l’image.

Par exemple, chargeons une image en niveaux de gris dans MATLAB et affinons-la à l’aide de la fonction interp2(). Voir le code ci-dessous.

clc
clear
load flujet.mat
colormap gray
v = single(X(200:300,1:25));
figure
imagesc(v);
axis off
title('Original Image')
vq = interp2(v,5);
figure
imagesc(vq);
axis off
title('Linear Interpolation')

Production :

affiner l’image à l’aide de l’interpolation

En sortie, l’image de droite est affinée à l’aide d’une interpolation linéaire. La fonction single() permet de convertir les valeurs en simple précision.

Auteur: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Article connexe - MATLAB Vector