Skip to main content
`Ctrl`+`K`
scipy.ndimage.

# fourier_ellipsoid

scipy.ndimage.fourier_ellipsoid(input, size, n=-1, axis=-1, output=None)

  Multidimensional ellipsoid Fourier filter.

  The array is multiplied with the fourier transform of an ellipsoid of given sizes.

  Parameters:
    input array_like

      The input array.

    size float or sequence

      The size of the box used for filtering. If a float, size is the same for all axes. If a sequence, size has to contain one value for each axis.

    n int, optional

      If n is negative (default), then the input is assumed to be the result of a complex fft. If n is larger than or equal to zero, the input is assumed to be the result of a real fft, and n gives the length of the array before transformation along the real transform direction.

    axis int, optional

      The axis of the real transform.

    output ndarray, optional

      If given, the result of filtering the input is placed in this array.

  Returns:
    fourier_ellipsoid ndarray

      The filtered input.

  Notes

  This function is implemented for arrays of rank 1, 2, or 3.

  Array API Standard Support

  `fourier_ellipsoid` has experimental support for Python Array API Standard compatible backends in addition to NumPy. Please consider testing these features by setting an environment variable `SCIPY_ARRAY_API=1` and providing CuPy, PyTorch, JAX, or Dask arrays as array arguments. The following combinations of backend and device (or other capability) are supported.

  Library | CPU | GPU
  --- | --- | ---
  NumPy | ✅ | n/a
  CuPy | n/a | ✅
  PyTorch | ✅ | ⛔
  JAX | ⚠️ no JIT | ⛔
  Dask | ⚠️ computes graph | n/a

  > See Support for the array API standard for more information.

  Examples

      >>> from scipy import ndimage, datasets
      >>> import numpy.fft
      >>> import matplotlib.pyplot as plt
      >>> fig, (ax1, ax2) = plt.subplots(1, 2)
      >>> plt.gray()  # show the filtered result in grayscale
      >>> ascent = datasets.ascent()
      >>> input_ = numpy.fft.fft2(ascent)
      >>> result = ndimage.fourier_ellipsoid(input_, size=20)
      >>> result = numpy.fft.ifft2(result)
      >>> ax1.imshow(ascent)
      >>> ax2.imshow(result.real)  # the imaginary part is an artifact
      >>> plt.show()