我目前正在阅读本文:Approximations in the HMAX Model,我对使用Box过滤器近似gabor过滤器特别感兴趣。
去年我开发了一个合成指纹生成器(你可以在这里看到一些How to convolve an image with different gabor filters adjusted according to the local orientation and density using FFT?)。
但是发生器中最大的缺陷就是应用gabor滤波器所需的时间,我一直在研究如何实现滤波器的可分离版本,但由于数学不是我的强项而失败了。 现在这似乎比我的需求更好,而不是可分离的过滤器,因为它似乎更快,结果似乎足够我所需要的。但我不明白如何从该论文的等式中实现gabor的盒式过滤。
如下:
在本节中,我们尝试执行更粗略的近似 过滤器可以获得显着更高的效率。目前,S1层 在模型中,由使用模型建模的简单线检测器组成 导向的Gabor滤波器。但是,可以表示定向线 使用更简单的表示,如框滤镜,如图所示 这些滤波器具有非常稀疏的导数,使我们能够非常有效地计算卷积。图像的卷积与 滤波器B(x,y)可以使用滤波器的导数进行有效计算 如下。
盒式滤波器的二阶导数仅包括脉冲和 因此,每个位置只需要对四个点进行评估 在图像中。也可以使用以下方式有效地计算积分图像 [5,1]中概述的单程算法。卷积的成本 使用该近似值是O(N2c),c = 4。与其他近似不同, 计算成本不依赖于滤波器的大小 所有!
这些条款是什么?这是图像积分的积分吗?对不起,如果这就像我要问的那些超级基本的东西,但老实说我没有任何线索:(。
答案 0 :(得分:1)
你问题中的rhs方程是卷积的无穷小描述 - 你有卷积算子“*”,它应用于图像的2D子范围 - 2d子范围表示为2D积分。 离散描述是类似的,但2D子范围用求和算子用西格玛符号“Σ”表示。而不是2D积分,它被应用为“ΣΣ”(我不知道如何在这里输入数学符号)。
天真卷积的实现是使用2个循环 - 在图像的每个点中,您将核心值与该点和相邻点相乘 -
P(x + c / 2)= P(x)* C(1)+ P(x + 1)* C(2)... + P(x + c)* C(c )(c是内核的大小)。 该过程类似于具有多项式乘法的长乘法或多项式。
基本上卷积可以以各种方式应用,一种方式是直接(求和),或通过转换到其他空间(快速傅立叶变换) - Convolution Theorem。
FFT时间为O(NlogN)。 如果内核的大小很大,使用FFT进行卷积是有效的。 否则,如果内核大小很小:O(c)< O(logN) - 卷积更快。 由于滤波器大小为4 - 使用直接卷积。
你也可以平行卷积(通过cuda,open-mp等......)