This project is an attempt to create an easy-to-understand and flexible-to-use framework for implementing the Fringe Projection Profilometry (FPP) method in the Python.
- Ability to use any camera (modules with webcams through OpenCV and Baumer cameras through NeoAPI are implemented in the project)
- The Phaseshift Projection Profilometry (PSP) method with sinusoidal fringes is implemented to obtain phase fields
- Projection pattern generation supports an arbitrary number of phase shifts and an arbitrary number of periods
- A hierarchical approach is used to unwrap the phase fields
- Implemented automatic detection of the fringe projection area on the images (ROI)
- A simple gamma correction method for projected images is implemented
- Flexible adjustment of the experiment and hardware parameters with the help of config files
- Install depedicies
pip install opencv-contrib-python numpy scipy matplotlib
-
Setting the parameters of the experiment and the hardware in the file
config.py
-
Launch main module
python main.py
In the script examples/test_plate_phasogrammetry.py
there is an example of processing the results of the experiment to determine the shape of the surface of a granite slab using the phasogrammetric approach. To date, the measurement accuracy of about 60 µm has been achieved.
The following sources were used to implement the algorithms
Anton Poroykov, Ph.D., associated professor
Nikita Sivov, graduate student
The research was carried out at the expense of the grant Russian Science Foundation No. 22-21-00550 (https://rscf.ru/project/22-21-00550/).