At the moment, we provide bindings for essential and fundamental matrix estimation as well as absolute pose estimation.
Clone the repository and its submodules by running:
git clone --recursive git@github.com:mihaidusmanu/pycolmap.git
COLMAP should be installed as a library before proceeding. Please refer to the official website for installation instructions. PyCOLMAP can be installed using pip
:
pip install ./
The current bindings are compatible with numpy arrays for both 2D and 3D points. The camera parameters should be sent as a Python dictionary with the following template:
{
'model': COLMAP_CAMERA_MODEL_NAME,
'width': IMAGE_WIDTH,
'height': IMAGE_HEIGHT,
'params': EXTRA_CAMERA_PARAMETERS_LIST
}
For instance, the following snippet runs absolute pose estimation for a pinhole camera given 2D-3D correspondences:
import pycolmap
# points2D - Nx2 array with pixel coordinates
# points3D - Nx3 array with world coordinates
# inlier_threshold - RANSAC inlier threshold in pixels
# answer - dictionary containing the RANSAC output
answer = pycolmap.absolute_pose_estimation(
points2D, points3D,
{
'model': 'SIMPLE_PINHOLE',
'width': width,
'height': height,
'params': [focal_length, cx, cy]
},
inlier_threshold
)
- Add documentation
- Add more detailed examples
- Expose more RANSAC parameters to Python