簡體   English   中英

如何在MATLAB或python中繪制/繪制高斯(LoG)函數的二維Laplacian函數?

[英]How to graph/plot 2D Laplacian of Gaussian (LoG) function in MATLAB or python?

在此處輸入圖片說明

你好。

我正在嘗試制作類似於以下圖的3-D圖,該圖說明了高斯(LoG)函數的2-D拉普拉斯算子。 如何通過MATLAB或python完成此操作? 代碼片段將不勝感激。

我發現可以使用這種方法繪制高斯曲線,但是我正在尋找如何繪制高斯拉普拉斯曲線。

您可以使用離散的拉普拉斯函數del2

N = 3;
x=linspace(-N, N,30);
[X,Y]=meshgrid(x,x);
z=del2((1000/sqrt(2*pi).*exp(-(X.^2/2)-(Y.^2/2))));
surf(X,Y,z);

結果:

在此處輸入圖片說明

使用應用於高斯的del2逼真的拉普拉斯函數的近似值(它使用對導數的離散逼近)。 這不是必需的,我們可以輕松地計算高斯二階導數的表達式,並使用該表達式。

首先,我們定義一維高斯:

x = linspace(-4,4,41);
G = exp(-x.^2/2)/sqrt(2*pi);

接下來,我們計算一維高斯的二階導數:

Gxx = G .* (x.^2-1);

高斯函數具有很好的屬性,您可以將兩個1D函數相乘得到2D函數。 從而,

data = G .* Gxx.';

是2D高斯沿y軸的二階導數。 data的轉置是沿x軸的二階導數。

拉普拉斯定義為沿每個軸的偏導數之和:

data = data + data.';

進行繪制會導致(我也嘗試過復制原始圖形的觀點):

高斯拉普拉斯

這是完整的代碼:

x = linspace(-4,4,41);
G = exp(-x.^2/2)/sqrt(2*pi);
Gxx = G .* (x.^2-1);
data = G .* Gxx.';
data = data + data.';
surf(x,x,data,'facecolor','white')
view(45,13)
set(gca,'dataaspectratio',[1,1,0.08])
grid off
xlabel('X')
ylabel('Y')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM