MATLAB による 2D 補間

Ammar Ali 2024年2月15日
MATLAB による 2D 補間

このチュートリアルでは、MATLAB の interp2() 関数を使用して 2D データの内挿を見つける方法について説明します。

MATLAB で interp2() 関数を用いた 2D データの補間の計算

MATLAB の組み込み関数 interp2() 関数を使用して、メッシュグリッド形式の 2D グリッドデータの内挿を見つけることができます。たとえば、デフォルトの方法を使用してグリッドを補間してみましょう。

以下のコードを参照してください。

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');

出力:

デフォルトの方法を使用した補間

出力の右側の画像は、デフォルトの方法を使用した補間の結果です。

ご覧のとおり、出力画像には元の画像と比較してより多くのデータポイントがあります。x ベクトルと y ベクトルは入力行列であり、同じサイズである必要があります。

v ベクトルにはサンプル値が含まれています。v に複素数が含まれている場合は、実数または複素数の値を含めることができます。

次に、interp2() 関数は実数部と虚数部を別々に補間します。ベクトル xq および yq には、実数のスカラー、ベクトル、行列、または配列のクエリポイントが含まれています。

補間に 3 次、最近傍、またはスプラインメソッドを設定できるように、interp2() 関数で新しいメソッドを文字列として定義することにより、補間メソッドを変更することもできます。補間を使用して、グレースケール画像をリファインできます。

画像のピクセル数が少ない場合、画像内の詳細は表示されません。この場合、補間を使用してピクセル数を増やし、画像を理解することができます。

たとえば、グレースケール画像を MATLAB にロードし、interp2() 関数を使用してそれを改良してみましょう。以下のコードを参照してください。

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')

出力:

補間を使用して画像をリファインする

出力では、線形補間を使用して右側の画像がリファインされます。関数 single() は、値を単精度に変換するために使用されます。

著者: 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

関連記事 - MATLAB Vector