高斯拉普拉斯算子

Don*_*Don 6 filtering image-processing laplacianofgaussian

我在实现LoG内核时遇到了麻烦.我正在尝试使用theta = 1.4实现9x9内核,如此链接http://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htm所示.

但是,我对配方本身有困难.如果有人能告诉我如何计算中心,即为了在9x9内核中获得-40而使用的x和y值,我们将不胜感激.

Pau*_*l R 1

您无需担心公式 - 它仅用于生成系数。您只需将这些 9x9 系数应用到您的图像即可。

示例(未经测试的代码!):

const int K = 9;
const int K2 = K / 2;
const int NORM = 500; // constant for normalising filter gain
const int coeffs[K][K] = { ... };
int in_image[M][N];
int out_image[M][N];

for (i = K2; i < M - K2; ++i)
{
    for (j = K2; j < N - K2; ++j)
    {
        int term = 0;
        for (di = -K2; di <= K2; ++di)
        {
            for (dj = -K2; dj <= K2; ++dj)
            {
                term += in_image[i + di][j + dj] * coeff[K2 + ii][K2 + jj];
            }
        }
        out_image = term / NORM;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 啊哈。但我很好奇,并且着迷的是,sigma = 1.4 的 9x9 内核是如何使用该公式生成的?在我的一生中,我无法应用其中任何一种价值观。 (3认同)
  • 最简单的检查方法就是查看 y = 0 的情况并查看 x 的值。比例因子似乎约为 483。因此,如果您在 y = 0、x = -4..+4 时计算 483 * LoG(x, y),您应该会发现获得了正确的值。(我刚刚使用电子表格检查了这一点,它看起来是正确的。)如果你想更进一步,你当然可以评估内核 y = -4..+4,x = -4..+4,但我保留了作为读者的练习......;-) (2认同)
  • @maximus:大多数图像处理都是使用整数(定点)算术进行的。图像通常是整数值,我们选择整数系数和隐式缩放因子来将所有算术保持在整数域中。如果您的应用程序对性能不是至关重要,或者由于图像格式的原因您已经陷入浮点,那么您可以只使用浮点系数并放弃缩放因子。 (2认同)