Source code for lenstronomy.Util.correlation

__author__ = "sibirrer"

from scipy import fftpack
import numpy as np
import lenstronomy.Util.analysis_util as analysis_util

from lenstronomy.Util.package_util import exporter

export, __all__ = exporter()


[docs] @export def correlation_2D(image): """#TODO document normalization output in units :param image: 2d image :return: 2d fourier transform """ # Take the fourier transform of the image. f1 = fftpack.fft2(image) # Now shift the quadrants around so that low spatial frequencies are in # the center of the 2D fourier transformed image. f2 = fftpack.fftshift(f1) return np.abs(f2)
[docs] @export def power_spectrum_2d(image): """ :param image: 2d numpy array :return: 2d power spectrum in frequency units of the pixels """ nx, ny = np.shape(image) corr2d = correlation_2D(image) return (corr2d / nx / ny) ** 2
[docs] @export def power_spectrum_1d(image): """ :param image: 2d numpy array :return: 1d radially averaged power spectrum of image in frequency units of pixels, radius in units of pixels """ psd2D = power_spectrum_2d(image) # Calculate the azimuthally averaged 1D power spectrum psd1D, r = analysis_util.azimuthalAverage(psd2D) return psd1D, r