Skip to main content

PyCalib: Simple Camera Calibration in Python for Beginners

Project description

Simple Camera Calibration in Python for Beginners

This is a collection of algorithms related to multiple-view camera calibration in computer vision. Please note that the goal of this package is to provide minimal examples to demostrate the concept for beginners (i.e., students). For large-scale, realtime, accurate, robust, production-quality implementations, or for implementations for your specific situation, please consult your advisor.

Disclaimer

This is research software and may contain bugs or other issues -- please use it at your own risk. If you experience major problems with it, you may contact us, but please note that we do not have the resources to deal with all issues.

How to use

You can simply install the package by pip.

$ python3 -m pip install -U pycalib

The pip installation, however, does not include examples in ./ipynb. To run examples, download the repository explicitly. For example,

  1. Local: You can clone/download this repository to your local PC, and open ./ipynb/*.ipynb files by your local Jupyter.
  2. Colaboratory: You can open each Jupyter notebook directly in Google Colaboratory by clicking the Open In Colab buttons below.
    • Warning: Most of them do not run properly as-is, since colab does not clone images used in the Jupyter notebooks. Please upload required files manually. (or run !pip install and !git clone at the beginning of each notebook.)

Single camera

  1. Intrinsic parameters from chessboard images Open In Colab
  2. Extrinsic parameters w.r.t. a chassboard Open In Colab
  3. Intrinsic / Extrinsic parameters from 2D-3D correspondences Open In Colab
  4. Distortion Open In Colab

Multiple cameras

  1. Sphere center detection for 2D-2D correspondences Open In Colab
  2. 2-view extrinsic calibration from 2D-2D correspondences Open In Colab
  3. N-view registration Open In Colab
  4. N-view bundle adjustment Open In Colab

3D-3D

  1. Absolute orientation between corresponding 3D points Open In Colab

If you need to write your own calibration ...

  1. For linear case:
    • Use numpy.
  2. For non-linear (including bundule adjustment) case
    1. Try scipy.optimize.least_squares first.
      • If the system is sparse, use jac_sparsity option. It makes the optimization much faster even without analitical Jacobian.
      • If it is slow, use numba.
    2. Use ceres-solver if the computation speed is really important.
      • Make sure the optimization is doable with scipy first.

Contact

Please note that this is research software and may contain bugs or other issues -- please use it at your own risk. If you experience major problems with it, you may contact us, but please note that we do not have the resources to deal with all issues.

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

pycalib-simple-2022.1.8.0.tar.gz (19.1 kB view hashes)

Uploaded Source

Built Distribution

pycalib_simple-2022.1.8.0-py3-none-any.whl (19.2 kB view hashes)

Uploaded Python 3

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