Skip to content

dmkUK/lens_calibrate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

106 Commits
 
 
 
 
 
 
 
 

Repository files navigation

lens_calibrate.py

Tutorial

You can find a complete tutorial about lens calibration and the use of the lens_calibrate.py script here:

https://pixls.us/articles/create-lens-calibration-data-for-lensfun/

Requirements

The script needs the following dependencies to be installed on your system:

Packages

Packages for most major distributions are available at:

https://software.opensuse.org/download.html?project=graphics:darktable&package=lens_calibrate

Installing dependencies

If one of the python modules is not available you can do the following to install them on your system:

  • Install the packages python3-pip and python3-venv (e.g. with apt-get)
  • Change to directory where lens_calibrate.py is located
  • Setup a virtual env directory using: python3 -m venv .venv
  • Source the environment with: source .venv/bin/activate
  • Install missing packages with e.g. pip3 install py3exiv2 numpy scipy PyPDF2
  • Run the calibration script like documented below

Running the calibration

To setup the required directory structure simply run:

./lens_calibrate.py init

The next step is to copy the RAW files you created to the corresponding directories.

Once you have done that run:

./lens_calibrate.py distortion

This will create tiff file you can use to figure out the the lens distortion values (a), (b) and (c) using hugin. It will also create a lenses.conf where you need to fill in missing values.

If you don't want to do distortion corrections you need to create the lenses.conf file manually. It needs to look like this:

[MODEL_NAME]
maker =
mount =
cropfactor =
aspect_ratio =
type =

The values are:

  • MODEL_NAME: is the lens model 'FE 16-35mm F2.8 GM'
  • maker: is the manufacturer or the lens, e.g. 'Sony'
  • mount: is the name of the mount system, e.g. 'Sony E'
  • cropfactor: Is the crop factor of the camera as a float, e.g. '1.0' for full frame
  • aspect_ratio: This is the aspect_ratio, e.g. '3:2'
  • type: is the type of the lens, e.g. 'normal' for rectilinear lenses. Other values are: stereographic, equisolid, stereographic, panoramic or fisheye.

If you want TCA corrections run:

./lens_calibrate.py tca

If you want vignetting corrections run:

./lens_calibrate.py vignetting

Once you have created data for all corrections you can generate an xml file which can be consumed by lensfun. Just call:

./lens_calibrate.py generate_xml

Using and testing your calibration

To use the data in your favourite software you just have to copy the generated lensfun.xml file to:

~/.local/share/lensfun/

Send your data to lensfun

If you wonder if your lens is supported check the lens database at:

https://wilson.bronger.org/lensfun_coverage.html

The database is updated daily.

To add lens data to the lensfun project first run:

./lens_calibrate.py ship

This will create a file lensfun_calibration.tar.xz including the xml file and the plots showing if the calibration data is valid.

With that tarball please open a bug at

and provide the lensfun_calibration.tar.xz file.

About

Script to calculate lens calibration data for the lensfun project

Topics

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages