2022-02-22 Release 0.3.3

New maintenance release for the 0.3.x branch. It includes all new cameras and lenses up to commit 75f41548ba6bb2a02de215f3b3512afc418c2c5b (Tue Feb 22 17:11:53 2022 +0000).


  • Static lfXX::Create() and lfXX:Destroy() methods of various Lensfun classe are now marked as deprecated. C++ new/delete syntax should be used instead.
  • CMAKE: glib > 2.26 is now only required when tests are being build.
  • CMAKE: various fixes (paths, OS compatibility)

A detailed list of changes can be found in in the complete Changelog for 0.3.3.

2019-02-16 The past, the current state and the future

The Lensfun project was started by Andrew Zabolotny in 2007 to lay the foundation of a free and open source database for the correction of photographic lens errors. After Lensfun did not receive any more fixes and database updates, I more or less took over the maintenance from Andrew in 2012. Afterwards, my main focus was to continuously integrate the submitted profiles and database changes and to regularly release new versions to make these changes available for the application users.

From 2012 till today a lot of changes and improvements came to the Lensfun project. Torsten Bronger established the calibration webservice and GitHub repo where today most of the calibration work is done by a couple of people. He also dived deep into the maths behind the corrections and fixed many errors and inaccuracies. Many other people contributed fixes, lens profiles and tutorials with instructions and scripts to facilitate the calibration process.

If we look at the number of lens profiles for each release, we can see that there is an increasing growth and the Git master database now nearly counts 1000 lens profiles.

Version #
0.2.6 350
0.2.7 374
0.2.8 441
0.3.0 580
0.3.1 667
0.3.2 714
Master 978

More and more image editors and even some commercial applications today use Lensfun and its database for their processing. That’s a great achievement and underlines the importance of the project.

In 2016 I started to refactor most of the library internals as it turned out that its structure cannot be extended, e.g. with the perspective correction now available in the alpha release, and was really difficult to maintain. A lot of code has been modernized and cleaned up to make Lensfun ready for the future. But unfortunately, the time I can spent in coding for the Lensfun project since then has decreased a lot and today the project is more or less stalled.

However, there is still a lot of work to be done. Just to name a few things that seem to be important to me:

1) Create a new stable release

2) Allow database lens entries that contain calibration data from various crop factors. Lensfun then just picks the closest one for each requested modification.

3) Move the complete project to GitHub and modernize the project infrastructure and build system. Use Travis CI and Appveyor for testing.

4) Develop a strategy how to decouple the database from the library source code to allow a faster release of new profiles to the user base. There is already the lensfun-updata-data script, but this only works reliably on Linux and not on OSX and Windows until now.

Currently, I do not have time to maintain the Lensfun project in way that is satisfactory for myself, for the community and for the users. This project really needs someone who takes a look at the bigger picture and has the vision and motivation to keep the project alive and in a good condition.

Therefore, I would like to ask the community to take over the Lensfun project management and maintenance in the next months. I will still be around and contribute from time to time. But to be realistic, none of the above listed changes will happen if no one else kicks in and does the job. Ideally, Lensfun is taken under the hood of a bigger project with experienced developers like e.g. Darktable or Rawtherapee that already makes use of Lensfun.

Let me know if you want to get involved!

2018-06-29 Alpha release 0.3.95

This is an alpha release and snapshot of the current development. During the last years, major parts of lensfun’s internals have been restructured and refactored to make Lensfun ready for the future. We believe many things have been improved and we tackled some issues that have been discussed for a long time. However, nothing is perfect. We highly encourage all users of Lensfun to try this alpha version, provide feedback and help us to improve whatever is necessary and get a stable release, soon. An up-to-date list of open issues and discussion points can be found in the Wiki at Sourceforge.

Apart from the breaking changes listed at the end, all changes should be backwards compatible but many functions and variables have been marked as deprecated to encourage the use of the new improved API.

General changes

  • Overall we received 208 new profiles and 64 profile updates. Thanks to all the contributors!
  • Added support for the Adobe Camera Model (ACM) for distortion, TCA, and vignetting. It also covers fisheye models. Lensfun includes a script which can convert Adobe lens profiles into Lensfun.
  • New perspective correction feature
  • The <distortion> tag now may have a real-focal attribute with the actual focal length at this particular nominal focal length. It replaces the <real-focal-length> tag.
  • Due to the previous changes, the database format is now at version 2.
  • Binary version number has been incremented to version 2.
  • Torsten Bronger’s calibration tutorial, his webserver code for receiving calibration images, and his calibration script are now part of Lensfun’s source code.
  • Lensfun is now internally prepared to support multiple calibrations per lens, e.g. for different crop factors.
  • Internally make use of C++ STL containers instead of glib arrays or proprietary container formats.
  • Use various C++11 features, hence compilation now requires a compiler supporting C++11.
  • Static lfXX::Create() and lfXX:Destroy() methods of various Lensfun classe are now marked as deprecated. C++ new/delete syntax should be used instead.
  • Remove dependency to POSIX regex.h and TRE regex on windows, instead use std::regex on all platforms.
  • CMAKE: glib > 2.26 is now only required when tests are being build.
  • CMAKE: various fixes (paths, OS compatibility).

A detailed list of changes can be found in in the complete Changelog for 0.3.95.

Breaking changes

  • C interface: all lf_lens_interpolate_...() functions now require an additional crop parameter.

2015-11-16 Release 0.3.2

The new Lensfun 0.3.2 release is out with more than 50 new lens profiles and another 19 updated calibrations.

Most important changes are in the build system. The preferred way to set install paths is now to use the CMAKE_INSTALL_XXX variables from the GNUInstallDirs module. Furthermore, the library binary version number was incremented to fix various compatibility and packaging problems.

Other changes:

  • Improved vignetting interpolation
  • Internal code cleanups
  • New LENSFUN_WINDOWS_DATADIR CMake variable for better windows compatibility
  • Support for parallel installation of different database versions

A detailed list of changes can be found in in the complete Changelog for 0.3.2.

2015-05-10 Release 0.3.1

Lensfun 0.3.1 maintenance release is out with more than 60 new lens profiles and another 30 updated calibrations.

Other changes:

  • Improved performance when used with 32-bit float image buffers
  • Introduced automated testing
  • lensfun-update-data now also works without root privileges
  • Fixed autoscaling for panoramic and equirectangular projections

More details in the complete Changelog for 0.3.1.

2014-09-30 Release 0.3.0

It took a while since the last release but it was worth the waiting time. In the last 12 months we nearly added and tweaked 160 lens profiles!

Further work was spent on:

  • Streamlined lens names for better auto-detection
  • Command line tools to update the local database and to manage mount compatibilities
  • Higher accuracy for fisheye <–> rectinilear transformation for lenses with real focal length data
  • Many bugfixes, especially for the case if sensor sizes of calibration and image to-be-corrected are different
  • Removed the old proprietary python based build system as it was not maintained anymore

A detailed overview of all changes can be found in the Changelog for 0.3.0.

2014-04-03 Lensfun moved to Sourceforge!

BerliOS will shut down its service at the end of April 2014. Therefore, we moved everything to Sourceforge and at the same time we took the opportunity to switch the version control system to git.

The new website can be found at

and the project page is located at

2013-10-20 Release 0.2.8

Another minor maintenance release. Most fixes were related to the build system.

But as always we have many(!) new lens profiles. Thanks to all submitters!

A detailed overview of all changes can be found in the Changelog for 0.2.8.

2013-06-23 New website

Lensfun got a new website. Although the layout and design is quite similar to the old one, a lot of things changed under the hood. We moved from a dynamic blog and CMS engine to a static site generator called Jekyll.

This has several advantages:

  • Much more easy to maintain. The whole website is now part of the SVN repository. Everybody can participate and edit.
  • The website will run on any webserver. No more need for PHP, MySQL, …
  • Much faster!
  • No more security trouble and time consuming updates of the CMS software.

To create the website with Jekyll it only needs two steps:

cd lensfun/docs/website
jekyll --server

This should start a webserver and you can view the website at http://localhost:4000/. To upload everything to a real webserver just go to the new subfolder <pre>_site</pre> and upload all the content.

2013-02-10 Lensfun 0.2.7

Here is the new 0.2.7 release of Lensfun. lensfun-0.2.7.tar.gz

Most important: some bugs leading to imprecise results when processing extreme values, e.g. from fisheye lenses, were fixed. Thanks to Torsten B. for working on this!

Apart from that we got several new lenses and camera profiles:

New DSLR and mirrorless camera lenses:

  • Canon EF 50mm f/1.8 II
  • Canon EF-S 18-55mm f/3.5-5.6 IS II
  • Nikkor 16-35mm f/4G ED-AFS VR
  • Sigma 18-200mm f/3.5-6.3 II DC OS HSM
  • Sigma 50mm F1.4 EX DG HSM
  • Sigma 70-300mm F4-5.6 DL Macro
  • Minolta/Sony AF DT 18-70mm F3.5-5.6 (D)
  • OLYMPUS M.12-50mm F3.5-6.3
  • Sony DT 18-55mm F3.5-5.6 SAM SAL 1855
  • Tamron SP 24-70mm F/2.8 Di VC USD
  • Tamron SP AF 10-24mm F/3.5-4.5 Di II LD Aspherical IF
  • Tokina AT-X Pro DX 11-16mm F2.8
  • LUMIX G 14mm F2.5
  • Sony E 16mm F2.8
  • Sony E 18-55mm F3.5-5.6 OSS
  • Sony E 50mm F1.8 OSS
  • Sony E 55-210mm F4.5-6.3 OSS
  • Sony VCL-ECF1 fisheye converter

New compact cameras:

  • Canon G15
  • Fuji FinePix F200EXR
  • Nikon COOLPIX P60
  • Olympus XZ-1
  • Panasonic DMC-LX5 4:3
  • Sony DSC-RX100, RX100

I want to thank all contributors who take the time to profile their equipment and share it with the community. Keep up the good work!

2012-12-13 New release is on its way!

We promised to release new versions at least every 6 months but the next release has to be postponed by a few weeks till the end of january. The reason is that some severe bugs were discovered and although there are already patches in the bug tracker, some further checks are necessary. We want to be sure everything is fine and no new bugs are introduced by the changes.

The good news is that over the last few months the interest in Lensfun did grow and many people send in calibration data for quite a lot of lenses and camera updates. Stay tuned!

2012-06-23 Release 0.2.6

After more than two years there is finally a new release of Lensfun available. Version 0.2.6 notably comes with many new lenses and cameras but there were also several changes under the hood.

In detail:

  • more than 40 new database entries of lenses and compact cameras
  • new CMake based build system for better cross platform compatibility and compilation fixes for MSVC
  • better integration into hugin for loading and storing lens parameters via the Lensfun library
  • several bug fixes and stability improvements

The source code of the release is available from BerliOS project page.

From now on there will be new releases on a regular basis to frequently bring back database enhancements to the user base. Frequently meaning at least every six months or when there is a significant amount of new profiles.