【问题标题】:Can't identify the correct equation for Gabor filter无法识别 Gabor 滤波器的正确方程
【发布时间】:2015-01-06 03:59:53
【问题描述】:

我正在编写一个 2D gabor 内核,以便在图像中找到纹理方向。我已经阅读了两篇论文,两位作者都针对几乎相同的问题提出了两个不同的方程式,而且代码也不匹配。

这是论文 1 中的 gabor 核方程(第 1 页,||| 部分)..

这是论文 2 中的核方程(第 3 页,方程 1)

问题1。两个方程是否都简化为一个结果?我尝试过,但无法实现这种简化。

2。这是论文1作者的过滤器代码片段。

for theta = 90+1:angleInterval:angleRange-angleInterval+1+90
    tmpTheta = (theta - 1)*pi/180;
    for y= -halfKerSize:halfKerSize
        ySinTheta = y*sin(tmpTheta);
        yCosTheta = y*cos(tmpTheta);
        for x=-halfKerSize:halfKerSize
            xCosTheta = x*cos(tmpTheta);
            xSinTheta = x*sin(tmpTheta);
            a = xCosTheta+ySinTheta;
            b = -xSinTheta+yCosTheta;
            oddKernel(y+halfKerSize+1,x+halfKerSize+1,(theta - 1-90)/angleInterval+1) = exp(tmpDelta*(4*a*a+b*b))*(sin(c*a)-exp(-cc*cc/2));
            evenKernel(y+halfKerSize+1,x+halfKerSize+1,(theta - 1-90)/angleInterval+1) = exp(tmpDelta*(4*a*a+b*b))*(cos(c*a)-exp(-cc*cc/2));
        end
    end
end

在代码中,没有提到 w/(sqrt(2*pi)*c.... 内核方程论文 1 中的“w”。

3。用欧拉式简化时,exp(iaw) 会变成 cos(aw) + i*sin(aw),所以方程不应该是这样,

evenKernal = w/(sqrt(2*pi)*c ) * exp( -w^2(4a^2+b^2)/8*c^2 ) *( cos(aw) - exp(- c^2/2))

oddKernel = w/(sqrt(2*pi)*c ) * exp( -w^2(4a^2+b^2)/8*c^2 ) *( sin(aw) ) ?

这不是我在代码中看到的。

论文 1:http://web.mit.edu/huikong/www/publications_files/TIP10b.pdf

论文 2:http://www.vision.caltech.edu/html-files/EE148-2005/uploads/Rasmussen04Grouping.pdf

【问题讨论】:

    标签: matlab image-processing filtering wavelet


    【解决方案1】:

    公式 1 和公式 2 相同。您在扩展等式 1 中的虚项方面走在正确的轨道上。

    通过独立清除每个术语(我希望这里有 tex 表示法来涵盖所有内容),您应该得到以下等效替换:

    1) w = 2*pi/λ

    2) lambda = (2*pi)/(sqrt(2*pi*c))

    3) sigma = sqrt(c/pi);

    一旦你看到相似之处,你的问题的第 2 部分和第 3 部分应该很容易弄清楚。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 2013-12-07
      • 2018-12-11
      • 2011-07-04
      • 2023-03-19
      • 2014-07-14
      • 2012-02-14
      相关资源
      最近更新 更多