This software is a tool for image processing. It is in fact a result of my 3-month internship in IMAGINE Laboratory (http://imagine.enpc.fr), a joint research group between Ecole des Ponts ParisTech and Centre Scientifique et Technique du Batiment.
You can find my projet report in "ProjetReport.pdf", it's written in French.
This software intergrates some results of research, especially some algorithms and methodologies invented by researchers in IMAGINE Laboratory. The goal of this projet is to evaluate the precision of state-of-art method of 3D reconstruction by stereovision, which is similar to this article[7].
It uses a small part of code in the OpenMVG library[3] (https://github.com/openMVG/openMVG)
It consists of the following modules:
-
"Distortion" : High-precision camera distortion using the "harp methode"[1], this module will calculate a distortion polynomial from some "harp" photos.
-
"Photo" : Where you load photos, correct the distortion by applying distortion polynomial transformation and then save them.
-
"KMatrix" : Calculation of K Matrix using the "circular control points" [2]
-
"Point2D" : A user friendly interface for selecting target points on images, which will then be used to get the ground truth of camera position with the help of Lidar generated points cloud.
-
"Point3D" : User should give 3D coordinates of target points (extracted from 3D points cloud generated by Lidar)
-
"Camera" : With help of a module in OpenMVG library, the ground truth of 3d camera coordinates will be calculated from the following data: "Point2D", "Point3D" and "KMatrix"
-
"CameraCompare" : Before using this module, we should use OpenMVG library to do stereovision[4][5][6] from distortion-corrected photos(that means Calib3DTools will not do stereovision for you). We will then get 3d reconstruction result together with 3d coordinates of cameras. What we want to evaluate is the precision of 3d coordinates of cameras because it determines the precision of 3d reconstruction. For evaluating, we compare camera positions with ground truth found by "Camera" module
[1] Z. Tang et al. « High-precision camera distortion measurements with a “calibration harp” ». In : JOSA A 29.10 (2012), p. 2134–2143.
[2] V. Rudakova et P. Monasse. « Camera matrix calibration using circular control points and separate correction of the geometric distortion field ». In : Computer and Robot Vision (CRV), 2014 Canadian Conference on. IEEE. 2014, p. 195–202.
[3] P. Moulon. OpenMVG. 2015. url : https://github.com/openMVG/ openMVG (visité le 16/07/2015).
[4] P. Moulon, P. Monasse et R. Marlet. « Adaptive structure from motion with a contrario model estimation ». In : Computer Vision–ACCV 2012. Springer, 2013, p. 257–270.
[5] P. Moulon, P. Monasse et R. Marlet. « Global fusion of relative motions for robust, accurate and scalable structure from motion ». In : Computer Vision (ICCV), 2013 IEEE International Conference on. IEEE. 2013, p. 3248–3255.
[6] L. Moisan, P. Moulon et P. Monasse. « Automatic homographic registration of a pair of images, with a contrario elimination of outliers ». In : Image Processing On Line 2 (2012), p. 56–73.
[7] C. Strecha et al. « On benchmarking camera calibration and multiview stereo for high resolution imagery ». In : Computer Vision and Pattern Recognition, 2008. CVPR 2008. IEEE Conference on. IEEE. 2008, p. 1–8.
Full steps of precision evaluation of a stereovision method:
Calculate distortion polynomial :
-
Click "Distortion" Tab.
-
Load photos of "harp" in "harp photo"
-
Click "Calculate Distortion Polynomial" and wait.
-
Verify photos in "Detect Feedback"
-
(Optional) In "Distortion Polynomial" Tab, you can click "save" to save it in a file
Distortion correction for photos :
-
Click "Photo" Tab
-
(Optional) Load the distortion polynomial in "Distortion Polynomial"
-
Click "Apply Distortion Correction" and wait.
-
(Optional) Save corrected photos in "Corrected Photo"
Calculate K matrix:
-
Click "KMatrix" Tab
-
(Optional) Load photos of circular control points with distorsion, abd then do the distortion correction.
-
Load corrected photos of circular control points.
-
Click "Calculate Matrix K" and wait.
-
(Optional) Save K matrix
Select target points for each photo :
-
Click "Point2D" Tab
-
Load corrected photos.
-
Click "+" in "Point2D" to add points
-
Click "Point2D Viewer", move the crosshair to the target points
Load 3d points:
-
Click "Point3D" Tab
-
Click "+" in "Point3D" to add points
-
Fill in 3d coordinates
Calculate ground truth :
-
Verify that K matrix, 2d points and 3d points are loaded
-
Click "Camera" Tab
-
Click "Solve"
-
(Optional)Save camera positions
Compare the result of stéréovision with ground truth
-
Load camera positions of ground truth.
-
Click "CamCompare"
-
Load camera positions found by OpenMVG using a stereovision methode (this function is not provided by Calib3DTools). Then click "load from OpenMVG *.json" and select the file "sfm-data.json" generated by OpenMVG.
-
CLick "Compare With CamPos"
-
(Optional) Save the result in console.