Holotorch is a Fourier Optics / Coherent Imaging framework developped in PyTorch and PyTorch lightning.
The main functions are found in the folders "holotorch".
Holotorch provides the following:
- Simple setup of optical setups in simulation for forward modeling
- Optical propagators (e.g. ASM-Kernel, Optical fouriertransforms)
- Abstracted componenents like Source, Detector, SLMs, DoEs, etc.
- Complex Wavefront objects which carry more information than just a "datatensor", such as spectral and spatial information
- Automatic batching and saving/loading of SLM-states for more complex "Machine Learning" tasks for "Deep Optics"
- Abstracted code for hardware often used in research holographic displays
- Cameras (Flir + Ximea)
- SLM ( when SLM is displayed as second screen. Based on python package slmpy )
- Data aquisition pipelines to capture datasets that are e.g. useful for calibration procedures (e.g. Neural Holography)
- PyTorch Lightning Modules tailored for Computational Holography
- SLM-Lightning: Simple optimization algorithm based on gradient descent where we optimize for an SLM given an optical setup (e.g. Near-Eye or Far-Field)
- (Neural) Etendue Lightning: Joint optimization of a hologram and SLM-patterns
see holotorch_and_visual_studio_code.md
Please navigate to SIGGRAPH_Tutorial and open "tutorial.ipynb"
The Siggraph tutorial notebook contains:
- Example for ASM-propagator
- Creating a Hologram using Double-Phase-Amplitude-Encoding (DPAC)
- Near-Eye Hologram (ASM-propagation) optimization
- Conventional Etendue Expansion with a random diffuser
- Neural Etendue expansion (Deep Optics) with respect to an image dataset
- Examples on how to save/load learned models
Contact: florianschiffers ( at ) gmail.com or florian.schiffers ( at ) u.northwestern.edu ocossairt ( at ) fb.com nathanmatsuda ( at ) fb.com
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.