使用 MATLAB 進行二維插值

Ammar Ali 2024年2月15日
使用 MATLAB 進行二維插值

本教程將討論使用 MATLAB 中的 interp2() 函式查詢二維資料的插值。

使用 MATLAB 中的 interp2() 函式查詢二維資料的插值

我們可以使用 MATLAB 的內建函式 interp2() 函式來查詢網格格式的二維網格資料的插值。例如,讓我們使用預設方法在網格上進行插值。

請參閱下面的程式碼。

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() 函式將分別插入實部和虛部。向量 xqyq 包含查詢點,可以是實數標量、向量、矩陣或陣列。

我們還可以通過在 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