Implementations of the fast iterative shrinkage-thresholding algorithm for in-line digital holography. A prototype of the implementation is done in Matlab and the final implementation is done in C++ CUDA with the help of OpenCV. The final implementation was later integrated into a the already existing code for a dielectrophoretic micromanipulation platform available at https://github.com/aa4cc/twinbeam-setup/tree/phasereconstruction/JetsonCode.
Open the folder MatlabFiles/ and add folders utils to path.
If desired, fill in new parameters to the file parameters.m, otherwise just run the file main.m and wait for the resulting figures.
The author tested this implementation on Ubuntu 18.04 and Ubuntu 20.04.
CUDA capable device is needed for this implementation to run. In the folder CUDAFiles, first, set the CUDA architecture on line 21 of CMakeLists.txt, current settings are for GTX 660. If OpenCV and CUDA (tested on CUDA 10.0) are installed, it should then be possible to compile the code with CMake. Then run the binary file phasereconstruction.
If desired, change parameters in the file params.json.
The different algorithms are implemented in Matlab.
Real-time implementation is done in C++ CUDA with OpenCV for parsing input and output media files and displaying. Json parsing by nlohmann https://github.com/nlohmann/json is used as well.
The implementation of the fast iterative shrinkage-thresholding algorithm is strongly based on the algorithm described in
F. Momey, L. Denis, T. Olivier, and C. Fournier, �From fienup�s phase retrieval techniques to regularized inversion for in-line holography: Tutorial,� Journal of the Optical Society of America A, vol. 36, no. 12, p. D62, Nov. 2019
Further, the Matlab prototype was inspired by the code found in repository https://github.com/fabienmomey/Inline_Hologram_Reconstruction_by_Regularized_Inversion
In case of any questions, please ask on v.koropecky@protonmail.com.