Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Why can you do Convolution in frequency Domain?

  1. Jan 28, 2009 #1
    Hi everybody,

    I have question: Why can you do Convolution filter in the frequency Domain ?

    I mean, when you apply a filter to an image in the spatial domain, it 's easy. You've got for example your sobel 3x3 kernel that you apply on every pixel of your image. Easy.

    But when you convert your image to the frequency domain using a fast fourier transform, there is no notion of pixel position and there is no way you're going to be able to do a convolution on the image using the pixel that were around the pixel?

    am I right ?

    if not, can someone try to explain why?


  2. jcsd
  3. Jan 29, 2009 #2
    I'm not sure I understand the question entirely? But my understanding is that performing a convolution in the frequency domain is an equivalent operation to performing a vector multiplication in the time domain. So you can do it, but it doesn't have the same effect.

    While it's true that pixel position is inaccessible in the frequency information, that information isn't gone, it's just hidden. Positional information gets encoded into for example the phase data.
  4. Jan 30, 2009 #3
    I think you understood me well. Ok so the position is still there but he is not implicitly showed (the size of a fourier transformation is the same of an image : that has to have a meaning too).
    If you want to apply a convolution kernel in the frequency domain, how do you do that ?
    convert both the image and the kernel in the fourier image and multiply them together. the size of both entities are different. how do you do that ?


  5. Feb 5, 2009 #4
    What is the rule for the convolution operation ?

    If you know the formula than I don't think there should be a problem using that rule even in the frequency domain. But the problem is what is the interpretation for taking convolution in frequency domain. What do you want to filter?
  6. Oct 31, 2009 #5
    Hello There,

    I am doing my PhD in Image debluring and the convolution problem sometimes getting me crazy ..
    If we take a simple example of convolution between 2 vectors A & B such that
    A = [1 2] and B = [3 4]
    and i want to perform the convolution in both time and frequency domain!
    using matlab
    >> A = [1 2]

    A =

    1 2

    >> B = [3 4]

    B =

    3 4

    >> C = conv(A,B)

    C =

    3 10 8

    >> D = ifft(fft(A).*fft(B))

    D =

    11 10
    But according to the convolution theorem A*B in the spatial domain is equivalen to A.B in the frequency domain but still we are not getting the same answer ,, Can Anyone explain me why please !!!! Thanks a lot ..
  7. Oct 31, 2009 #6


    Staff: Mentor

    That is the same. You just forgot to alias the 8 back in on top of the 3. If you want to avoid aliasing then you need to do zero padding.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook