Discorpy
(Dis)tortion (Cor)rection (Py)thon-package
Camera calibration and distortion correction software for lens-based detector systems

Discorpy is an open-source Python package implementing methods for calibrating and correcting distortion
in lens-based imaging systems (1, 2).
Unlike existing approaches that require multiple calibration images or iterative optimization,
Discorpy and its algorithms can independently characterize both radial and perspective distortion
with high accuracy across a wide range of distortion strengths - using only a single calibration image
and direct computation. This makes the software a practical tool for a wide range of imaging applications.
Author and maintainer: Nghia Vo, NSLS-II, Brookhaven National Laboratory, US; Diamond Light Source, UK.
Features
- The polynomial model
used by the package is versatile enough to calibrate images with varying levels of
radial distortion. This practical feature eliminates the need for users to switch
between different models based on the degree of distortion in the images.
- Discorpy offers a unique feature where radial distortion, the center of distortion, and perspective distortion
can be independently determined and corrected using a single calibration image.
- The software provides a full pipeline of data processing including:
- Pre-processing methods
for: extracting reference-points from a dot-pattern image, line-pattern image,
and chessboard (checkerboard) image; grouping these points line-by-line.
- Processing methods for calculating
the optical center, coefficients of polynomial models for correcting radial distortion, and parameters
of a model for correcting perspective distortion.
- Post-processing methods for:
unwarping lines of points, images, or slices of a 3D dataset; and evaluating the accuracy of the correction results.
- Some methods may be useful for other applications:
Installation
Documentation
Usage
Demonstrations
-
Detailed step-by-step demonstrations featuring codes and explanations of how to use Discorpy for various types of calibration images
are shown here.
-
Apply to a visible dot-target collected at Beamline I12,
Diamond Light Source, UK:


-
Apply to an X-ray dot-target collected at Beamline I13,
Diamond Light Source, UK:


-
Improvement of tomographic reconstructed images after distortion correction:
-
Calibrate a commercial camera with capabilities of correcting radial distortion and perspective distortion
independently.

-
Calibrate a laptop webcam using a checkboard image.


-
Calibrate a fisheye camera (GoPro Hero-8).

-
Apply to a hazard camera of the Mars Perseverance Rover.
Details of how to estimate distortion coefficients of that camera without using
a calibration target are shown here.


-
Correct perspective distortion:
