#camera-intrinsics #camera-model #fisheye

bin+lib camera-intrinsic-calibration

Camera Intrinsic Calibration

29 releases (10 breaking)

Uses new Rust 2024

0.11.1 Dec 30, 2025
0.10.0 Dec 6, 2025
0.9.0 Nov 26, 2025
0.8.0 May 18, 2025
0.5.4 Dec 29, 2024

#367 in Robotics

GPL-3.0-or-later

110KB
2K SLoC

camera-intrinsic-calibration

crate crate downloads

PyPI - Version PyPI - Python Version

A pure rust camera intrinsic calibration tool.

Installation

# cargo install cli
cargo install camera-intrinsic-calibration
# Or pip install cli
pip install camera-intrinsic-calibration

Or download from the latest release.

CLI Usage

# camera-calibration-rs
ccrs -h

# run intrinsic calibration on TUM vi dataset
# Download and untar
wget https://vision.in.tum.de/tumvi/exported/euroc/1024_16/dataset-calib-cam1_1024_16.tar
tar xf dataset-calib-cam1_1024_16.tar

# [Optional] export RUST_LOG=trace
ccrs dataset-calib-cam1_1024_16 --model eucm

Visualize details after calibration

# use cargo to install rerun
cargo install rerun-cli --version 0.27.2
# or use pip to install rerun
pip install rerun-sdk==0.27.2
# visualize result
rerun results/20YYMMDD_HH_MM_SS/logging.rrd
example detection

Supported formats

Dataset format

  • Euroc (default)
    dataset_root
    └── mav0
        ├── cam0
        │   └── data
        │       ├── {time_stamp}.png
        │       ├── {time_stamp}.png
        │       └── {time_stamp}.png
        └── cam1
            └── data
                ├── {time_stamp}.png
                ├── {time_stamp}.png
                └── {time_stamp}.png
    
  • General --dataset-format general
    dataset_root
    ├── cam0
    │   ├── any_file_name.png
    │   ├── any_file_name.png
    │   └── any_file_name.png
    └── cam1
        ├── any_file_name.png
        ├── any_file_name.png
        └── any_file_name.png
    
    Images can be either .png or .jpg, but .png is preferred if possible. PNG is lossless compression, while JPG is not.

Camera models

  • Extended Unified (EUCM)
  • Extended Unified with Tangential (EUCMT)
  • Unified Camera Model (UCM)
  • Kannala Brandt (KB4) aka OpenCV Fisheye
  • OpenCV (OPENCV5) aka plumb_bob in ROS
  • F-theta (FTHETA) by NVidia

Examples

cargo run -r --example convert_model

Calibrate your own camera

Please follow the tutorial.

Acknowledgements

Links:

Papers:

  • Kukelova, Zuzana, et al. "Radial distortion homography." Proceedings of the IEEE conference on computer vision and pattern recognition. 2015.

TODO

  • Multi-camera extrinsic
  • More calibration info

Dependencies

~90–130MB
~2.5M SLoC