[Matrix-SIG] general 2D convolution, again.

Janne Sinkkonen janne@avocado.pc.helsinki.fi
27 Mar 1998 17:31:03 +0200


David Buscher <David.Buscher@durham.ac.uk> writes:

> I believe this is something of an oversimplification. All convolutions 
> are doable using an FFT, providing you pad the arrays with zeros to a 
> mutually compatible size, and perhaps add extra padding to take care of 
> edge effects. The only question then is whether this is the most 
> efficient way to do the computation, which is clearly an 
> implementation-dependent topic. Someone please correct me if I'm wrong!

You are probably right (someone please correct me if I'm wrong! :))

My earlier note about 'separable' or factorizing kernels was a bit
irrelevant and incorrect. But convolutions by separable kernels are
nice anyway, because you can do them as successive 1D convolutions.

Gaussian and rectangular 2D kernels are separable, and therefore this
kind of convolutions can be done by doing 1D convolutions successively
over the two axis, something like:

convImage=convolution1d(convolution1d(image,kernel,axis=0),kernel,axis=1)

-- 
Janne Sinkkonen      <janne@iki.fi>      <URL: http://www.iki.fi/~janne/ >