Skip to content

tasptz/py-omnicalib

Repository files navigation

Omnidirectional Camera Calibration

Key features

Undistort example (undistort example)

Usage

  1. Corner detection (see python -m omnicalib.detect --help for detailed argument description)
python -m omnicalib.detect --chessboard <rows> <columns> <square-size> --max-dim <max-dim> --threads <threads> <image-folder>

The file detections.pickle is written, which contains a pickled dictionary with the following format

{
    'detections': {
        <image_path_0>: {'image_points': <image_points>, 'object_points': <object_points>},
        ...
}
  • Image paths (pathlib.Path) are absolute
  • image_points are torch.Tensor with shape N x 2 and dtype torch.float64
  • object_points are torch.Tensor with shape N x 3 and dtype torch.float64 and third colum, the z coordinate, all zeros

If an external corner detection method is used, this file can simply be written manually.

  1. Calibration (see python -m omnicalib --help for detailed argument description)
python -m omnicalib --degree <degree> detections.pickle

Result

A calibration.yml file (see example_calibration.yml) containing

  • extrinsics as list of 3 x 4 matrices
  • poly_incident_angle_to_radius, a polynom that converts incident angle to image radius
  • poly_radius_to_z, a polynom that converts radius to z component of view vector
  • principal_point in pixel

Installation

Install the latest wheel with

pip install https://github.com/tasptz/py-omnicalib/releases/download/<wheel_url>

Method

For a detailed description see method.md.

Simulation

Play with the calibration on simulated data with the provided jupyter lab notebook. It generates randomized data for the following ideal projection models

  • equidistant
  • stereographic
  • orthographic
  • equisolid

, see Large Area 3D Human Pose Detection Via Stereo Reconstruction in Panoramic Cameras for a detailed description.

Example

Jupyter lab notebook, example results

Example calibration

Example r-z curve

Example calibration

Citation

If you would like to reference this work, see the following BibTeX suggestion

@misc{pyomnicalib,
  author = {Pönitz, Thomas},
  title = {Python Omnidirectional Camera Calibration},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/tasptz/py-omnicalib}}
}

About

Omnidirectional camera calibration in python

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages