I'm currently working on a library to generate synthetic fingerprints using the SFinGe method (by Maltoni, Maio and Cappelli) link :http://biolab.csr.unibo.it/research.asp?organize=Activities&select=&selObj=12&pathSubj=111%7C%7C12&
One of the steps requires me to apply different gabor filters to an image, each pixel in the image have an orientation and a frequency associated, so the convolution is not done with one kernel over the entire image but the filter must change during the process depending on those attributes of the pixels, that way each pixel on the image is altered in a different way.
If you apply the filters this way, and convolve the image several times(you also have to binarize the image after each convolution) you obtain this:
A master fingerprint, I have currently implemented the standard gabor filter using 2d convolution. I would like it to be faster, Im trying to separate the filter but the problems with separable ﬁltering is convolution in the complex domain. Im working on C++ usin openCV and Im not sure how to perform such convolution.
Now from reading the paper is not clear to me how to approximate the gabor filter using this method, what is B(x, y)?
Im not very knowledgeable in image processing (or mathematics). I would appreciate it a lot if someone could explain to me how this approximation works :).
Also an important note, can this be done in a contextual matter? The way in which I have to apply the filter in order to generate the master fingerprint is that I have to witch the kernel in each step of the convolution according to some local properties of the current pixel being convolved.
Thanks for reading!