Consider this image:
This is just a sine wave tipped at 45 degrees. Now, look at the power spectrum:
Ok, the two spots make sense, as those correspond to the point in the (U,V) plane that has that frequency, along with it's reflection (the negative frequency). But what's up with all that other crap?
FFTs make the assumption that the signal is periodic, and since it only has the image to work with, the default thing to do is to calculate a circular FFT, where the left and right edges wrap around, and the top and bottom do as well (making a video game torus). However, since the sine signal doesn't nicely match up at the edges (most obvious at the top and bottom), this introduces a lot of extra Fourier components that correspond to those + shapes.
The solution to this problem is to taper the image down so that it is effectively periodic. The easiest way to do this is to just multiply by a Gaussian so that the edges drop down to zero at the edges, like this:
Ok, what's this look like in (U,V)-space?
The two dots we expect. There's some lower level noise, but this has the same colormap as the previous spectrum. The dots aren't perfect points, which I think tells us something about the size of the Gaussian we used.
This is important, because the science stuff I've been playing with has odd edge effects that impose a strong sinc^2 signal onto the power spectrum. This makes it difficult to isolate bad frequencies. Remembering this trick solves that problem, and should make cleaning those images much easier.
Sunday, 26 May 2013
Tuesday, 14 May 2013
Another reason why Fourier transforms are magical.
Let's pretend we have an image, and that image is just a bunch of dots:
The single dot has a constant phase image. The other two have phase images that look like random noise, but are actually encoding the position information for each dot. Next interesting thing: what happens when we increase the size of the dots:
Bigger dots have a smaller sized dot in the power spectrum, as wider things are dominated by smaller frequency terms (also the fact you can directly calculate that F(Gaussian(sigma)) = Gaussian(1/sigma)).
Here are three, with different numbers and positions for the dots (randomly distributed), except for the centered single dot case. |
I've chosen Gaussians for the shape of the dots, because those are simple to work with. Now, take the 2D Fourier transform of these three images. What does the power spectrum look like?
Those curly-cue shapes are ~20 orders of magnitude smaller than the peak. That's what I get for plotting logarithms. |
To within the floating point accuracy of my computer, these power spectra are all identical. No matter where the dots are on the image, the power spectrum is identical. How does that work? Basically, the power spectrum just says "the image is this big, and the things that show up on it look like this." All of the position information is stored in the phase information between the real and imaginary components:
Bigger dots have a smaller sized dot in the power spectrum, as wider things are dominated by smaller frequency terms (also the fact you can directly calculate that F(Gaussian(sigma)) = Gaussian(1/sigma)).
Subscribe to:
Posts (Atom)