3
This all is based on Fourier slice theorem: 1D FFT of projection taken at
4
some angle equals the central radial slice at the same angle of the 2D FFT
5
of the original object.
7
The center of rotation is considered to be in the center of axis. Then we
8
padding both ends with zeroes (the background color have to be zero). And
9
exchanging left and right halves.
10
- For DFT, we assume that signal is cyclic and we sample values from 0
11
to N. But we actually have them from -N/2 to N/2 (because the center of
12
rotation is in the center of axis). Therefore, we need to move first half
13
of array after second half.
15
The main problem is interpolation in Fourier space.
19
- Operation on real data gives Hermetian (self-adjoint) matrix in Fourier space.
20
A Hermitian matrix (or self-adjoint matrix) is a square matrix with complex
21
entries that is equal to its own conjugate transpose (A*). That is, the element
22
in the i-th row and j-th column is equal to the complex conjugate of the element
23
in the j-th row and i-th column (i.e. with sign of imaginary part changed).
24
- cuFFT have implemented Cooley-Tukey algorith for radixes 2,3,5,7. The best
25
performance still with large powers of two, but we should check balance
26
between large padding and usage of sub-optimal radixes. Accroding to cuFFT
27
documentation, the cuFFT performance is constrained by following restrictions
28
in the order of decreasing importance:
29
* Restrict the size along each dimension to use fewer distinct prime factors.
30
* Radix2 part should be multiple of 256
31
* Restrict the x dimension of single-precision transforms to be strictly a
32
power of two either between 2 and 8192 for Fermi-class GPUs or between 2
33
and 2048 for earlier architectures.
34
* Use Native compatibility mode for in-place complex-to-real or
35
real-to-complex transforms.
36
- 2D FFT is series of independent 1D FFT transforms on rows and columns
b'\\ No newline at end of file'