Here is a good starting to fiter image in the frequency domain
lena = ColorSeparate[ImageResize[ExampleData[{"TestImage", "Lena"}],{121,121}]][[1]];
(Create a padding image to avoid the wraparound problem)
lenapad = ImagePad[lena, {{0, 122}, {122, 0}}]
data = ImageData[lenapad];
centereddata = Table[(-1)^(x + y)*data[[x, y]], {x, 1, 243}, {y, 1, 243}];
Image[centereddata]
(compute the DFT of image)
dft = Fourier[centereddata];
(Gaussian filter to blur image: spatial domain)
filter = ImageData@
ImageAdjust[ImagePad[Image@GaussianMatrix[3], (243 - 7 + 1)/2]];
(DFT of the filter frequency domain)
huv = Im[Fourier[
Table[filter[[x, y]]*(-1)^(x + y), {x, 1, 243}, {y, 1, 243}]]];
huvcenter=Table[Complex[0, huv[[x, y]]]*(-1)^(x + y), {x, 1, 243}, {y, 1, 243}];
(Apply the filter to the image)
hfp = huvcenter dft;
(Recuperate the filtering version of lena)
refinversehfp = Re[InverseFourier[hfp]];
refinverse = Table[refinversehfp[[x, y]]*(-1)^(x + y), {x, 1, 243}, {y, 1, 243}];
Image[refinverse] // ImageAdjust
The result is not good compared to the spatial filter
ImageConvolve[lena, GaussianMatrix[3]]








