无法识别Gabor滤波器的正确方程

时间:2014-11-09 21:58:47

标签: matlab image-processing filtering wavelet

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

这是论文1(第1页,第|||节)中的gabor核方程式。

enter image description here

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

enter image description here

问题 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 即可。当用Euler的表达式简化时,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

1 个答案:

答案 0 :(得分:0)

等式1和等式2是相同的。你正准备在等式1中扩展想象项。

通过单独清除每个术语(我希望这里有tex符号来覆盖所有内容),您应该获得以下等效替换:

1)w = 2 * pi / lambda

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

3)sigma = sqrt(c / pi);

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