scalar_diffraction_propagation
- colibri.optics.functional.scalar_diffraction_propagation(field, distance, pixel_size, wavelength, approximation)[source]
Compute the optical field propagation using a scalar diffraction theory model which is given by the specific approximation selected.
Note
if ‘approximation’ is ‘fresnel’, the transfer function is calculated using
colibri.optics.functional.transfer_function_fresnel()
.if ‘approximation’ is ‘angular_spectrum’, the transfer function is calculated using
colibri.optics.functional.transfer_function_angular_spectrum()
.if ‘approximation’ is ‘fraunhofer’, the transfer function is calculated using
colibri.optics.functional.fraunhofer_propagation()
.if ‘approximation’ is ‘fraunhofer_inverse’, the transfer function is calculated using
colibri.optics.functional.fraunhofer_inverse_propagation()
.
- Parameters:
field (torch.Tensor) – Input optical field of shape (C, M, N).
distance (float) – Propagation distance in meters.
pixel_size (float) – Pixel size in meters.
wavelength (list) – List of wavelengths in meters.
approximation (str) – Approximation (or diffraction model type) to use, can be “fresnel”, “angular_spectrum” or “fraunhofer”.
- Returns:
The propagated optical field according to the selected approximation of shape (C, M, N).
- Return type:
torch.Tensor