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: object

2D 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.