Box filter approximations for the oriented gabor filters

AngelCastillo

I'm currently reading this paper: Approximations in the HMAX Model, I'm particularly interested in the approximation of the gabor filter using Box filters.

Last year I developed a synthetic fingerprint generator (you can see some of it here How to convolve an image with different gabor filters adjusted according to the local orientation and density using FFT?).

But the biggest flaw in the generator is the time it takes to apply the gabor filter, I have been researching how to implement a separable version of the filter but have failed horribly since mathematics is not my forte. Now this seem better for my needs than the separable filter, since it seems to be faster and the results seem good enough for what I need. But I don’t understand how to implement the box filtering for gabor from the equation in that paper.

It goes as follow:

In this section we attempt to perform a grosser approximation of the filter to achieve significantly higher efficiency. Currently, the S1 layer in the model, consists of simple line detectors that are modeled using oriented Gabor filters. However, oriented lines can be represented using much simpler represented such as box filters as shown in Figure 5. These filters have very sparse derivatives allowing us to compute convolution quite efficiently. The convolution of the image with the filters B(x, y) can be efficiently computed using the filter’s derivatives as follows.

http://s18.postimg.org/ozlw5kn55/formula.png

The second derivative of the box filter consists of just impulses and therefore needs to be evaluated at only four points for every position in the image. The integral image can also be efficiently computed using single pass algorithm as outlined in [5, 1]. The cost of convolution using this approximation is O(N2c), c=4. Unlike other approximations, the computational cost does not depend on the size of the filter at all!.

What are those terms? Is that the integral of the integral of the image? I’m sorry if this is like super basic stuff I’m asking, but I honestly have no clue :(.

Daniel Heilper

The rhs equation in your question is the infinitesimal description of convolution - you have the convolution operator " * " which is applied over a 2D subrange of the image - that 2d subrange is expressed as an 2D integral. The discrete description is similar, but with 2D subrange expressed with summation operator using the sigma notation "Σ". instead of 2D integral, it is applied as "ΣΣ" (I don't know how to put math notation here).

Naive Implementation of the convolution is using 2 loops - in each point in the image you sum the kernel values multiplied with the that point and neighboring points -

P(x+c/2) = P(x)*C(1)+P(x+1)*C(2)...+P(x+c)*C(c) (c is the size of the kernel). The process is similar to long multiplication or polynomial with polynomial multiplication.

Basically convolution can be applied in various ways, one way is straight forward (summation), or by transformation to other spaces (Fast Fourier Transform) - Convolution Theorem.

FFT time is O(NlogN). using FFT for convolution is efficient if the size of the kernel is big. Otherwise, if kernel size is small : O(c) < O(logN) - convolution is faster. Since filter size is 4 - go with straight forward convolution.

Also you can parallel the convolution (via cuda, open-mp, etc...)

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Box filter approximations for the oriented gabor filters

From Dev

applying gabor filter to an images

From Dev

Gabor filter (wavelets)

From Dev

A Kalman Filter for RSSI Distance approximations

From Dev

A Kalman Filter for RSSI Distance approximations

From Dev

Making feature vector from Gabor filters for classification

From Dev

Serial Gabor filter output trouble

From Dev

Implementing log Gabor filter bank

From Dev

Gabor filter convolution matrix in C

From Dev

Create a Gabor filter by applying Gabor equation using matlab

From Dev

How to apply gabor filter to images in opencv?

From Dev

How to combine the results of Gabor filter in OpenCV

From Dev

How to calculate the Spatial frequency in Gabor filter?

From Dev

Alternatives to GLCM and Gabor filters to get texture information for image segmentation

From Dev

How to implement gabor filters on 3D images in matlab

From Dev

How to implement gabor filters on 3D images in matlab

From Dev

How can I expand this Gabor patch to the size of the bounding box?

From Dev

oriented minimum bounding box

From Dev

oriented minimum bounding box

From Dev

oriented box intersection in threeJS

From Dev

feature reduction within gabor filter banks deploying PCA

From Dev

Filter table with multiple filters

From Dev

Filter table with multiple filters

From Dev

Object oriented design for search history and filters

From Dev

scikit-image Gabor filter error: `filter weights array has incorrect shape`

From Dev

filter table rows with multiple filters

From Dev

Filter Gtest based on two filters

From Dev

Nested filters: $filter array, then $filter child array

From Dev

ffmpeg filters, move input filter into input filter

Related Related

HotTag

Archive