首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >高斯的拉普拉斯

高斯的拉普拉斯
EN

Stack Overflow用户
提问于 2010-04-01 06:36:11
回答 2查看 6K关注 0票数 6

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

然而,我对公式本身有困难。如果有人能告诉我如何计算中心,即在9x9内核中使用什么x和y值才能得到-40,那就太感谢了。

EN

回答 2

Stack Overflow用户

发布于 2010-04-01 14:45:47

您不需要担心公式-它只用于生成系数。您只需要将这些9x9系数应用于您的图像。

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

代码语言:javascript
运行
复制
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;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2010-04-02 21:53:17

最近我实现了LoG过滤器,你唯一需要做的就是将公式和sigma作为参数。如果您需要固定大小的掩码,您可以将滤镜掩码值存储在矩阵中并使用它,或者每次重新计算它并创建所需的矩阵。过滤器的大小取决于sigma值,如果使用的大小超过这个值-它就没有意义,因为超出某个最大值的其余部分会使用该公式计算为零。因此,例如,你得到一个过滤器大小= 9X9,然后为了计算过滤器本身作为一个矩阵,你需要通过这个值运行公式:

代码语言:javascript
运行
复制
int halfsize = size / 2;    
for (int x = -halfsize; x < halfsize; ++x)
   for (int y = -halfsize; y < halfsize; ++y)
       mask[x][y] = LoGFunction(x, y);

差不多吧。它还意味着过滤器大小必须是奇数值。希望这能有所帮助。在你的例子中,size =9 sigma = 1.4 x,y在-4到4之间变化。在(0,0)点(它是滤波器的中心)使用公式,你可以得到接近-12的值。

但是如果你把sigma设为0.2986,你会得到接近于-40的答案。我也不明白为什么写着sigma值等于1.4,我漏掉了一些东西。如果我弄错了,请纠正我

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2556958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档