transfer_function_angular_spectrum

colibri.optics.functional.transfer_function_angular_spectrum(M, N, pixel_size, wavelengths, distance, device=device(type='cpu'))[source]

The transfer function for the angular spectrum propagation can be written as follows:

\[H(f_x, f_y, \lambda) = e^{\frac{j s 2 \pi}{\lambda} \sqrt{1 - \lambda^2 (f_x^2 + f_y^2)}}\]

where \(f_x\) and \(f_y\) are the spatial frequencies, \(\lambda\) is the wavelength, \(s\) is the distance of propagation and \(k\) is the wavenumber.

Parameters:
  • M (int) – Resolution at Y axis in pixels.

  • N (int) – Resolution at X axis in pixels.

  • pixel_size (float) – Pixel pixel_size in meters.

  • wavelengths (torch.Tensor) – Wavelengths in meters.

  • distance (float) – Distance in meters.

  • device (torch.device) – Device, for more see torch.device().

  • type (str) – Type of coordinates, can be “cartesian” or “polar”.

Returns:

Complex kernel in Fourier domain with shape (len(wavelengths), M, N).

Return type:

torch.Tensor