Here is what i gathered so far:
Any sliding window classification, image filtering or similar can be fastly done by a FFT (flip the signal and do convolution).
Also, if the template/filter kernel is separable it is possible to do fast correlation by simply separating into multiple kernels and applying then sequentialy.
I think it is possible to do fast correlation by using integral images, but I am not sure how.
The question is: is FFT the fastest way? If now, which is? Consider both GPU and CPU implementations
If it is not: is there algorithm capable of separating a non-separable kernel (in aproximated way, logically)?
Context:
My filter is an Inner Product Detector, which is found by
$$ h = R^{-1}\mu_1 $$ where $ R^{-1} $ is the autocorrelation matrix and $\mu_1$ is the mean of a given class.
The matrix $ R $ is hermitian. And can be calculated by
$$ \sum x^Tx $$
where $x$ are d-dimensional vectors and $[.]^T$ denotes the transpose.
Also: kernels are squares of size 21,23,25,27 or 35 Images are 128x128