Computer-Generated Holography¶

Odak contains essential ingredients for research and development targeting Computer-Generated Holography. We consult the beginners in this matter to Goodman's Introduction to Fourier Optics book (ISBN-13: 978-0974707723) and Principles of optics: electromagnetic theory of propagation, interference and diffraction of light from Max Born and Emil Wolf (ISBN 0-08-26482-4). In the rest of this document, you will find engineering notes and relevant functions in Odak that helps you describing complex nature of light on a computer. Note that, the creators of this documentation are from Computational Displays domain, however the provided submodules can potentially aid other lines of research as well, such as Computational Imaging or Computational Microscopy.

Engineering notes¶

Note Description
Holographic light transport This engineering note will give you an idea about how coherent light propagates in free space.
Optimizing phase-only single plane holograms using Odak This engineering note will give you an idea about how to calculate phase-only holograms using Odak.
Learning the model of a holographic display This link navigates to a project website that provides a codebase that can learn the model of a holographic display using a single complex kernel.
Optimizing three-dimensional multiplane holograms using Odak This link navigates to a project website that provides a codebase that can help optimize a phase-only hologram representing multiplanar three-dimensional scenes.

odak.learn.wave¶

This submodule is based on torch, therefore the functions provided here are differentiable and can be used with provided optimizers in torch.

Function Description
odak.learn.wave.band_limited_angular_spectrum Optical beam propagation with bandlimited angular spectrum.
odak.learn.wave.calculate_amplitude Calculate amplitude of a complex field.
odak.learn.wave.calculate_phase Calculate phase of a complex field.
odak.learn.wave.custom Optical beam propagation with a custom complex kernel.
odak.learn.wave.generate_complex_field Generate a complex field from an amplitude and a phase value.
odak.learn.wave.gerchberg_saxton Phase-only hologram optimizasion using Gerchberg-Saxton algorithm.
odak.learn.wave.linear_grating One or two axis linear grating.
odak.learn.wave.phase_gradient Regularization function to measure the variation of the phase.
odak.learn.wave.point_wise Phase-only hologram optimization using point wise integration method.
odak.learn.wave.prism_phase_function Prism phase function, a prism.
odak.learn.wave.produce_phase_only_slm_pattern Produce phase-only hologram for a spatial light modulator with given phase range.
odak.learn.wave.propagate_beam General function for optical beam propagation.
odak.learn.wave.set_amplitude Set amplitude of a complex field.
odak.learn.wave.shift_w_double_phase Shift a phase-only hologram by propagating the complex hologram and later apply double phase principle.
odak.learn.wave.speckle_contrast Regularization function to measure the speckle contrast.
odak.learn.wave.transfer_function_kernel Optical beam propagation with transfer function kernel.
odak.learn.wave.wavenumber Wave number.

odak.wave¶

This submodule is based on Numpy. This submodule existed much before odak.learn.wave. Though this submodule contains more functions than odak.learn.wave, it does not provide the flexibility in optimization provided by differentiation support of torch.

Function Description
odak.wave.angular_spectrum Optical beam propagation with angular spectrum.
odak.wave.band_extended_angular_spectrum Optical beam propagation with band extended angular spectrum.
odak.wave.band_limited_angular_spectrum Optical beam propagation with bandlimited angular spectrum.
odak.wave.calculate_amplitude Calculate amplitude of a complex field.
odak.wave.calculate_intensity Calculate intensity of a complex field.
odak.wave.calculate_phase Calculate phase of a complex field.
odak.wave.double_convergence Provides an initial phase for beam shaping.
odak.wave.electric_field_per_plane_wave Return the state of a plane wave at a particular distance and time.
odak.wave.fraunhofer_equal_size_adjust Match physical size of field with simulated.
odak.wave.fraunhofer_inverse Adjoint model for Fraunhofer beam propagation.
odak.wave.generate_complex_field Generate a complex field from an amplitude and a phase value.
odak.wave.gerchberg_saxton Phase-only hologram optimization using Gerchberg-Saxton algorithm.
odak.wave.gerchberg_saxton_3d Phase-only hologram optimization using Gerchberg-Saxton algorithm for three-dimensional reconstructions.
odak.wave.impulse_response_fresnel Optical beam propagation with impulse response fresnel.
odak.wave.linear_grating One or two axis linear grating.
odak.wave.prism_phase_function Prism phase function, a prism.
odak.wave.produce_phase_only_slm_pattern Produce phase-only hologram for a spatial light modulator with given phase range.
odak.wave.propagate_beam General function for optical beam propagation.
odak.wave.propagate_field Propagate a given array of spherical sources to given set of points in space.
odak.wave.propagate_plane_waves Propagate a given plane wave in space and time.