transfer_function_fresnel

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

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

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

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 N 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().

Returns:

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

Return type:

torch.Tensor