2D FFT Functions
Core 2D FFT operations for image processing.
FFT and Inverse FFT
- spectrograms.fft2d(data)
Compute 2D FFT of a real-valued 2D array.
Accepts numpy arrays, Spectrogram objects, or any object implementing __array__().
Parameters
- datanumpy.typing.NDArray[numpy.float64] or Spectrogram
Input 2D array (e.g., image) with shape (nrows, ncols)
Returns
- numpy.typing.NDArray[numpy.complex64]
Complex 2D array with shape (nrows, ncols/2 + 1) due to Hermitian symmetry
Examples
>>> import spectrograms as sg >>> import numpy as np >>> image = np.random.randn(128, 128) >>> spectrum = sg.fft2d(image) >>> spectrum.shape (128, 65)
- spectrograms.ifft2d()
Compute inverse 2D FFT from frequency domain back to spatial domain.
Parameters
- spectrumnumpy.typing.NDArray[numpy.complex64]
Complex frequency array with shape (nrows, ncols/2 + 1)
- output_ncolsint
Number of columns in the output (must match original image width)
Returns
- numpy.typing.NDArray[numpy.float64]
Real 2D array with shape (nrows, output_ncols)
Examples
>>> import spectrograms as sg >>> import numpy as np >>> image = np.random.randn(128, 128) >>> spectrum = sg.fft2d(image) >>> reconstructed = sg.ifft2d(spectrum, 128) >>> np.allclose(image, reconstructed) True
Spectral Analysis
- spectrograms.power_spectrum_2d(data)
Compute 2D power spectrum (squared magnitude).
Accepts numpy arrays, Spectrogram objects, or any object implementing __array__().
Parameters
- datanumpy.typing.NDArray[numpy.float64] or Spectrogram
Input 2D array with shape (nrows, ncols)
Returns
- numpy.typing.NDArray[numpy.float64]
Power spectrum with shape (nrows, ncols/2 + 1)
Examples
>>> import spectrograms as sg >>> import numpy as np >>> image = np.ones((64, 64)) >>> power = sg.power_spectrum_2d(image) >>> power[0, 0] # DC component should have all energy 16777216.0
- spectrograms.magnitude_spectrum_2d(data)
Compute 2D magnitude spectrum.
Accepts numpy arrays, Spectrogram objects, or any object implementing __array__().
Parameters
- datanumpy.typing.NDArray[numpy.float64] or Spectrogram
Input 2D array with shape (nrows, ncols)
Returns
- numpy.typing.NDArray[numpy.float64]
Magnitude spectrum with shape (nrows, ncols/2 + 1)
Frequency Shifting
- spectrograms.fftshift(arr)
Shift zero-frequency component to center.
Accepts numpy arrays, Spectrogram objects, or any object implementing __array__().
Parameters
- arrnumpy.typing.NDArray[numpy.float64] or Spectrogram
Input 2D array
Returns
- numpy.typing.NDArray[numpy.float64]
Shifted array with DC component at center
- spectrograms.ifftshift(arr)
Inverse of fftshift - shift center back to corners.
Accepts numpy arrays, Spectrogram objects, or any object implementing __array__().
Parameters
- arrnumpy.typing.NDArray[numpy.float64] or Spectrogram
Input 2D array
Returns
- numpy.typing.NDArray[numpy.float64]
Shifted array with DC component at corners
2D FFT Planner
- class spectrograms.Fft2dPlanner
Bases:
object2D FFT planner for efficient batch processing.
Caches FFT plans internally to avoid repeated setup overhead when processing multiple arrays with the same dimensions.
Examples
>>> import spectrograms as sg >>> import numpy as np >>> planner = sg.Fft2dPlanner() >>> for _ in range(10): ... image = np.random.randn(128, 128) ... spectrum = planner.fft2d(image)
Planner for efficient batch processing of 2D FFT operations.
Create a planner once and reuse it for multiple images of the same size to avoid repeated FFT plan computation overhead.
Example
import spectrograms as sg import numpy as np # Create planner planner = sg.Fft2dPlanner() # Process multiple images images = [np.random.randn(256, 256) for _ in range(10)] spectra = [planner.fft2d(img) for img in images]
Methods
- fft2d(data: numpy.typing.NDArray[numpy.float64]) numpy.typing.NDArray[numpy.complex64]
Compute 2D FFT using cached plan.
- Parameters:
data – Input 2D array
- Returns:
Complex frequency array
- ifft2d(spectrum: numpy.typing.NDArray[numpy.complex64], output_ncols: int) numpy.typing.NDArray[numpy.float64]
Compute inverse 2D FFT using cached plan.
- Parameters:
spectrum – Complex frequency array
output_ncols – Number of columns in output
- Returns:
Real 2D array
- power_spectrum_2d(data: numpy.typing.NDArray[numpy.float64]) numpy.typing.NDArray[numpy.float64]
Compute power spectrum using cached plan.
- Parameters:
data – Input 2D array
- Returns:
Power spectrum (squared magnitude)
- magnitude_spectrum_2d(data: numpy.typing.NDArray[numpy.float64]) numpy.typing.NDArray[numpy.float64]
Compute magnitude spectrum using cached plan.
- Parameters:
data – Input 2D array
- Returns:
Magnitude spectrum
- fft2d()
Compute 2D FFT using cached plans.
Parameters
- datanumpy.typing.NDArray[numpy.float64]
Input 2D array with shape (nrows, ncols)
Returns
- numpy.typing.NDArray[numpy.complex64]
Complex 2D array with shape (nrows, ncols/2 + 1)
- ifft2d()
Compute inverse 2D FFT using cached plans.
Parameters
- spectrumnumpy.typing.NDArray[numpy.complex64]
Complex frequency array
- output_ncolsint
Number of columns in output
Returns
- numpy.typing.NDArray[numpy.float64]
Real 2D array
- magnitude_spectrum_2d()
Compute 2D magnitude spectrum using cached plans.
- power_spectrum_2d()
Compute 2D power spectrum using cached plans.