Original paper: Thomas Schöps, Viktor Larsson, Marc Pollefeys, Torsten Sattler, "Why Having 10,000 Parameters in Your Camera Model is Better Than Twelve", arXiv 2019. GitHub repository: "Accurate geometric camera calibration"
This repository ports only the symmetry refinement portion (intensity refinement portion WIP) of Thomas Schöps' work with geometric camera calibration. It also includes (optional) visualization tools used by Thomas Schöps within his repository.
The following external dependencies are required.
Dependency | Version(s) known to work |
---|---|
Boost | 1.54.0 |
CUDA | 10.1 |
Eigen | 3.3.7 |
GLEW | 1.10.0 |
OpenGV | Commit 306a54e6c6b94e2048f820cdf77ef5281d4b48ad |
Qt | 5.12.0; minimum version: 5.8 |
SuiteSparse | 4.2.1 |
zlib | - |
The following external dependencies are optional.
Dependency | Purpose |
---|---|
librealsense2 | Live input from RealSense D400 series depth cameras (tested with the D435 only). |
Structure SDK | Live input from Structure Core cameras (tested with the color version only). To use this, set the SCSDK_ROOT CMake variable to the SDK path. |
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CUDA_FLAGS="-arch=sm_61" ..
make -j camera_calibration # Reduce the number of threads if running out of memory, e.g., -j3
Predictions YAML need the following information:
YAML Parameter Name | Description |
---|---|
num_star_segments | Number of star segments in the pattern |
features | List of features detected within the pattern. Order must correspond to list of star_points. |
star_points | List of star points in pattern coordinates. Order must correspond to list of features. |
pattern_coordinates_scale | Scale of pattern coordinates (to scale pattern coordinates to be between [-0.5/0.5] when (0,0) corresponds to feature point. |
Refer to predictions/sample.yaml
for a sample.
The filename of each prediction yaml in your predictions folder has to correspond to an image in your image folder in order for feature refinement to work.
I.e. if you have an image called sample.png
, you require a .yaml in predictions called sample.yaml
before feautre refinement can be run.
Parameter | Flag | Description |
---|---|---|
window half extent | -w, --window-half-extent | Half size of search window for pattern corner features. |
predicted feature files | -f, --predicted-feature-files | Path to folder containing predictions. |
image folders | -i, --image_folder | Path to folder containing images. |
results folder | -r, --results_folder | Path to folder containing results (to be written). |
show visualizations | -s, --show-visualizations | Boolean (requires "true/false" after flag) that turns visualizations on/off. |
After proper setup, you should receive *.csv files within your results folder corresponding to image/prediction names.
csvs are of the following format
bool feature_found_by_symmetry , feature_point_x (px) , feature_point_y (px)