HDK
|
Functions | |
ImageBuf OIIO_API | ImageBufAlgo::fft (const ImageBuf &src, ROI roi={}, int nthreads=0) |
ImageBuf OIIO_API | ImageBufAlgo::ifft (const ImageBuf &src, ROI roi={}, int nthreads=0) |
bool OIIO_API | ImageBufAlgo::fft (ImageBuf &dst, const ImageBuf &src, ROI roi={}, int nthreads=0) |
bool OIIO_API | ImageBufAlgo::ifft (ImageBuf &dst, const ImageBuf &src, ROI roi={}, int nthreads=0) |
Fast Fourier Transform and inverse
Return (or copy into dst
) the discrete Fourier transform (DFT), or its inverse, of the section of src
denoted by roi, If roi is not defined, it will be all of src
's pixels.
fft()
takes the discrete Fourier transform (DFT) of the section of src
denoted by roi
, returning it or storing it in dst
. If roi
is not defined, it will be all of src
's pixels. Only one channel of src
may be transformed at a time, so it will be the first channel described by roi
(or, again, channel 0 if roi
is undefined). If not already in the correct format, dst
will be re-allocated to be a 2-channel float
buffer of size roi.width()
x roi.height
, with channel 0 being the "real" part and channel 1 being the the "imaginary" part. The values returned are actually the unitary DFT, meaning that it is scaled by 1/sqrt(npixels).
ifft()
takes the inverse discrete Fourier transform, transforming a 2-channel complex (real and imaginary) frequency domain image and into a single-channel spatial domain image. src
must be a 2-channel float image, and is assumed to be a complex frequency-domain signal with the "real" component in channel 0 and the "imaginary" component in channel 1. dst
will end up being a float image of one channel (the real component is kept, the imaginary component of the spatial-domain will be discarded). Just as with fft()
, the ifft()
function is dealing with the unitary DFT, so it is scaled by 1/sqrt(npixels).
bool OIIO_API ImageBufAlgo::fft | ( | ImageBuf & | dst, |
const ImageBuf & | src, | ||
ROI | roi = {} , |
||
int | nthreads = 0 |
||
) |