2013-10-17 74 views
2

我想知道如何計算任意奇數大小內核(二階導數)的拉普拉斯面具。例如,我知道一個3x3是:如何計算拉普拉斯面具或任何大小


1 1 1 
1 -8 1 
1 1 1 

而一個5x5的面具是:


1 1 1 1 1 
1 1 1 1 1 
1 1 -24 1 1 
1 1 1 1 1 
1 1 1 1 1 

然而,這是我所知道的。我不知道這些是如何計算的。我相信所有的二階導數掩模總是有一個不同的中心數字,包圍1。我的問題是,我將如何計算nxn的中心數字,其中n是奇數? (例如7x7,15x15等)我正計劃在Matlab中實現此功能。我感謝任何幫助,我可以得到。

+0

看起來我爲'N^2 -1'您的矩陣是n×n的 – Dan

回答

2

這裏有一個簡單的方法:

function mask = LapMask(n) 
    mask = ones(n); 
    mask(ceil((n^2)/2)) = 1 - n^2; 
end 

我要把它留給你添加的錯誤檢查作出肯定的是,n是奇數

+0

嘿一樣簡單,非常感謝!我簡直不敢相信。我認爲我必須使用一個龐大而複雜的公式,或者對矢量/矩陣使用重複卷積。 – terry

+2

@terry - 它可能仍然是你需要使用不同的公式。這只是2D Laplacian的一個離散近似值,但它是您要求的。例如'fspecial('laplacian',alpha)'根據您指定的alpha的值給出不同的結果。 – chappjc

4

拉普拉斯函數如下所示:

Source: homeepages.inf.ed.ac.uk/rbf/HIPR2/log.htm

並描述爲:

enter image description here

σ這裏決定倒鐘的傳播。數字掩模是這個函數的一個離散近似。因此,對於較小的窗口大小值(n)和σ,您會得到一個由1圍繞的大負數。但是,當你增加窗口大小和σ,情況不會如此。

要正確計算數字掩碼,應該使用上面給出的函數。您的奇數大小的正方形(nxn)的中心像素將成爲您的起源。

參考:http://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htm

+1

不,LoG不是拉普拉斯函數,那是一個拉普拉斯算子的高斯拉普拉斯算子=高斯平滑,請參閱您的鏈接... – Tobias