Skip to main content

Calibrate intrinsic and extrinsic parameters of cameras with charuco boards

Project description

calibcam

A charuco based calibrator for camera setups (intrinsic and extrinsic parameters), including omnidirectional cameras.

First, OpenCV is used for single camera calibration., followed by an initial estimation of camera positions and orientations. Subsequently, all intrinsic and extrinsic parameters are optimised for reprojection error using Jax autograd.

See calibcamlib for a library for triangualtion, reprojection etc.

Board

calibcam uses Charuco boards for calibration. The board needs to be presented in different angles, positions and distances to each camera. Relative camera positions are estimated from frames in which the board is visible in multiple cameras. We recommend recording with 2 fps while moving the board around, spending around a minute on each camera.

Creation

See board.py in example folder for the generation of both printable PNG and board configuration file for calibcam.

Installation

Install bbo-calibcam via pip, or create conda environment from environment.yml:

conda env create -f https://raw.githubusercontent.com/bbo-lab/calibcam/main/environment.yml

Usage

  1. Collect data as described in Board section.
  2. Run calibcam with python -m calibcam --videos [LIST OF VIDEOS TO INCLUDE] --board [PATH TO BOARD.NPY file]. We recommend keeping a copy of the board file with the videos for documentation purposes.
  3. Check number of detections per camera in the output. Values should range between 80 and 300. If too few detections are made, check recording conditions (lighting, blur ...) and collect new calibration data. If too many frames are detected, convergence may be slow or run out of memory. Reduce detections adding a frame skip with --frame_step.
  4. Check reprojection error at the end of the output. Median errors should be <0.5px.

BBO internal MATLAB use only:

Use MATLAB function mcl = cameralib.helper.mcl_from_calibcam([PATH TO MAT FILE OUTPUT OF CALIBRATION]) from bboanlysis_m to generate an MCL file.

Format

Result

multicam_calibration.npy/mat/yml holds a dictionary/struct with the calibration result. The filed "calibs" holds an array of calibration dictionarys/structs with entries

* 'rvec_cam': (3,) - Rotation vector of the respective cam (world->cam)
* 'tvec_cam': (3,) - Translation vector of the respective cam (world->cam)
* 'A': (3,3) - Camera matrix
* 'k': (5,) - Camera distortion coefficients

For further structure, refer to camcalibrator.build_result()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bbo_calibcam-3.0.5.tar.gz (37.8 kB view details)

Uploaded Source

Built Distribution

bbo_calibcam-3.0.5-py2.py3-none-any.whl (45.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file bbo_calibcam-3.0.5.tar.gz.

File metadata

  • Download URL: bbo_calibcam-3.0.5.tar.gz
  • Upload date:
  • Size: 37.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.27.2

File hashes

Hashes for bbo_calibcam-3.0.5.tar.gz
Algorithm Hash digest
SHA256 2777e3c9df332c5615d8f72aacd34e6c8609eaa35b6c81c3a96aee81e394bb91
MD5 4fc9f5299df969255258b03c0dd2e52f
BLAKE2b-256 71c19aac8f8bdc1a7ddab03a647705ce6254d3b69a20723f6c5d3b5c0f8a62f7

See more details on using hashes here.

File details

Details for the file bbo_calibcam-3.0.5-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for bbo_calibcam-3.0.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 bbbcbf51c4056524dc872e41a69ddd0be4f2899505307b3a6f1d96aa4de67c2c
MD5 5bff719895dd6992d3e6a0db895211dc
BLAKE2b-256 345a0e681e2e474c0b5dffd79447e3bc90afd0db2f908154d9177df941d69a82

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page