# Constructing a Gaussian kernel in the frequency domain

I'm currently learning about Fourier transform, but find the differences between spatial domain and frequency domain a bit confusing at times.

Let's say I would like to perform convolution of an image with a Gaussian kernel. As far as i understand the Fourier transform of a Gaussian is also a Gaussian i.e the Fourier transform of

$$g(x,y;\sigma) = \frac{1}{2\pi\sigma^2} \cdot e^{- \frac{x^2+y^2}{2\sigma^2}}$$ is $$G(x,y;\sigma) = e^{- 2\pi\sigma^2(x^2+y^2)}$$ However if I directly construct a kernel using $$G(x,y;\sigma)$$ the output kernel looks completely different from first computing $$g(x,y;\sigma)$$ and then doing the FFT. What is the correct approach here? I hope the question is clear, but it is essentially how I can construct a gaussian kernel directly in frequency space so i do not have to FFT the kernel.

• Indeed, $\mathscr{F}\{g(x,y,σ)\} = G(k_x,k_y,σ)$. What do you mean "the output kernel looks completely different from first computing $g(x,y;σ)$ and then doing the FFT"? Are you doing it right? I mean, when you compute in the coordinate domain, you do a convolution with the kernel, and when you compute in the frequency domain, you simply multiply the image Fourier transform and $G(k_x,k_y,σ)$. – V.V.T Mar 8 at 11:32
• I mean that if I first compute the kernel with a gaussian and then the FFT of that gaussian kernel(and shift to center the frequency domain), then the result is different from directly computing what is believe is the FFT of the gaussian. Maybe $x$ and $y$ are different from $k_x$ and $k_y$ and this is where i am mistaken? – sn3jd3r Mar 8 at 11:51
• I do not understand what you mean "Maybe $x$ and $y$ are different from $k_x$ and $k_y$ ". It is a convenience to use different characters to denote variables in different domains, and, yes, $x$ is not $k_x$ and $y$ is not $k_y$. $x$, $y$ are measured in meters and $k_x$, $k_y$, in inverse meters, 1/m units. Compare the units for time and frequency domain variables, $t$ [second] and $ω$ [Hertz]. "Hertz" is an inverse "second". – V.V.T Mar 8 at 12:08

You can check numerically that fft(g) = G, that will be easier to analyze than the filtered result. At least you can easily plot it and identify if the coefficients are shifted, flipped, or scaled. One thing easy to do incorrectly is the determination of the frequency corresponding to each coefficient. I would strongly recommend that you first aproach the 1D version of your problem, here you have an example of 1D filtering I wrote for a related question.