6

我想知道如何计算任意奇数大小内核(二阶导数)的拉普拉斯掩码。例如,我知道 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 中实现这一点。我很感激我能得到的任何帮助。

4

2 回答 2

7

拉普拉斯函数如下所示:

资料来源:homeepages.inf.ed.ac.uk/rbf/HIPR2/log.htm

并通过以下方式描述:

在此处输入图像描述

σ这里决定了倒钟的传播。数字掩模是该函数的离散近似。因此,对于较小的窗口大小 ( n) 和值σ,您会得到一个被 1 包围的大负数。但是当您增加窗口大小和σ时,情况并非如此。

要正确计算数字掩码,您应该使用上面给出的函数。您奇数大小的正方形 ( nxn) 的中心像素将是您的原点。

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

于 2013-10-17T09:17:09.127 回答
5

这是一个简单的方法:

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

我会留给你添加错误检查以确保这n是奇怪的

于 2013-10-17T08:50:29.880 回答