This repository contains the code for the real-time reference based phase retrieval aglorithm [1].
Utility functions written for both CPU and GPU, including fast 2D matrix I/O, host and device memory manager, etc.
Implementation of the AIA algorithm for fast and accurate phase extraction using random phase shifting [2], which is used to comptue the initial phase distribution.
- [x] Multi-core double precision
- [x] Multi-core single precision
- [x] CUDA single precision
- [x] CUDA double precision
Core algorithm of the real-time reference-based dynamic phase retrieval algorithm [1].
- [x] Multi-core double precision
- [x] Multi-core single precision
- [x] CUDA single precision
- [x] CUDA double precision
Note: The followiwng two implementations are just for testing purpose. Their performance is between the multi-core and CUDA implementaitons
- [x] Hybrid CPU and GPU, double precision
- [x] Hybrid CPU and GPU, single precision
Improved implementaiton of the parallel Windowed Fourier Transform (WFT) algorithm [3].
Windowed Fourier Filtering (WFF) algorithm (Used in the proposed G-LS3U algorithm): .
- [x] Multi-core double precision
- [x] Multi-core single precision
- [x] CUDA single precision
- [x] CUDA double precision
Windowed Fourier Ridges (WFR) algorithm:
- [x] Multi-core double precision
- [x] Multi-core single precision
- [x] CUDA single precision
- [x] CUDA double precision
A demonstration application written for the G-LS3U algorithm. The application can take a sequence of capdtured fringe patterns and exatract the phase distributions amogn frames then build them into a video. Note: use the AIA function provided int he application's UI to calculate an initial phase distribution first before using any other functionalities.
- Intel Math Kernel Library (MKL): using fftw3 to do fast Fourier transform (FFT) and LAPACK routine to solve linear system in parlalel on CPU.
- CUDA 10.2: for parallel computing on NVIDIA GPUs.
- CUFFT: associated with CUDA, for perform parallel FFT on GPU.
- Qt 5.14: for GUI and multi-media used in App_DPRA.
- OpenCV 3.4.1: for fast and convenient image I/O.
Note: On Windows OS using Visual Studio 2017, install these dependencies and your are all set to compile and run the programs.