module #include "diplib/dft.h"
Low-level transform support Low-level functionality for computing the Discrete Fourier Transform.
Classes
Aliases
-
using dip::
Option:: DFTOptions = dip::detail::Options - Determines working mode for
dip::DFT
anddip::RDFT
. Combines multipledip::Option::DFTOption
values,.
Enums
-
enum class dip::
Option:: DFTOption: uint8{ InPlace, TrashInput, Aligned } - Determines working mode for
dip::DFT
anddip::RDFT
.
Functions
-
auto dip::
GetOptimalDFTSize(dip::uint size0, bool larger = true, dip::uint maxFactor = 5) -> dip::uint - Returns a size equal or larger to
size0
that is efficient for the DFT implementation. The value returned is a product of small primes. -
auto dip::
MaxFactor(bool complex = true) -> dip::uint - The
maxFactor
parameter fordip::GetOptimalDFTSize
.complex
determines whether the transform to be computed is complex-to-complex or not.
Variables
-
dip::uint const dip::
maximumDFTSize - The largest size supported by
dip::DFT
anddip::FourierTransform
. Is equal to 231-1 when using FFTW, 264-1 when using PocketFFT on a 64-bit system, or 232-1 when using PocketFFT on a 32-bit system. -
bool const dip::
usingFFTW - Is
true
ifdip::DFT
anddip::RDFT
use the FFTW library, or false if they use PocketFFT.
Enum documentation
enum class dip:: Option:: DFTOption: uint8
Determines working mode for dip::DFT
and dip::RDFT
.
Implicitly casts to dip::Option::DFTOptions
. Combine constants together with the +
operator.
Enumerators | |
---|---|
InPlace = 0 | Work in place, the input and output buffers are the same. |
TrashInput = 1 | Allowed to trash the input buffer, we don’t need to preserve it. |
Aligned = 2 | Both buffers are aligned to 16-byte boundaries. |
Function documentation
dip::uint
dip:: GetOptimalDFTSize(dip::uint size0,
bool larger = true,
dip::uint maxFactor = 5)
Returns a size equal or larger to size0
that is efficient for the DFT implementation.
The value returned is a product of small primes.
Set larger
to false to return a size equal or smaller instead.
maxFactor
should be 5, 7 or 11, and gives the largest integer that should be considered a “small prime”.
When using FFTW, set maxFactor
to 7, as by default it works most efficiently for sizes that can be factored
into primes smaller or equal to 7. When using PocketFFT, set it to 5 for complex-to-real or real-to-complex
transforms, and to 11 for complex-to-complex transforms. See dip::MaxFactor
.
If there is no suitable size that the implementation can use (see dip::maximumDFTSize
), this function
will return 0.
Prefer to use dip::OptimalFourierTransformSize
in your applications, it will throw an error if
the transform size is too large, and determines maxFactor
for you.