Skip to main content

Crate lensfun

Crate lensfun 

Source
Expand description

Pure-Rust port of LensFun — camera lens correction (distortion, transverse chromatic aberration, vignetting) without C dependencies.

§Status

Pre-alpha. API may still shift. The math is bit-exact-tested against the upstream C++ reference (tests/test_modifier_regression.cpp values pinned at 1e-3). See docs/notes/lensfun-rs.md for the porting plan and docs/notes/handoff-*.md for the latest checkpoint.

§Quick start

use lensfun::{Database, Modifier};

let db = Database::load_bundled()?;
let cameras = db.find_cameras(Some("Canon"), "EOS R5");
let camera = cameras.first().expect("camera in bundled DB");
let lenses = db.find_lenses(Some(camera), "Canon EF 24-70mm f/2.8L II USM");
let lens = lenses.first().expect("lens in bundled DB");

let (width, height) = (6720_u32, 4480_u32);
let mut modifier = Modifier::new(lens, 35.0, camera.crop_factor, width, height, true);
modifier.enable_distortion_correction(lens);
modifier.enable_tca_correction(lens);
modifier.enable_vignetting_correction(lens, 4.0, 5.0);

// Per-row coordinate transform (one row of `width` pixels).
let mut coords = vec![0.0_f32; (width as usize) * 2];
modifier.apply_geometry_distortion(0.0, 0.0, width as usize, 1, &mut coords);

§Module map

Each module corresponds to one upstream C++ source file:

ModuleUpstream
dblibs/lensfun/database.cpp
lenslibs/lensfun/lens.cpp
cameralibs/lensfun/camera.cpp
mountlibs/lensfun/mount.cpp
modifierlibs/lensfun/modifier.cpp
mod_coordlibs/lensfun/mod-coord.cpp
mod_pclibs/lensfun/mod-pc.cpp
mod_colorlibs/lensfun/mod-color.cpp
mod_subpixlibs/lensfun/mod-subpix.cpp
auxfunlibs/lensfun/auxfun.cpp

Re-exports§

pub use auxfun::FuzzyStrCmp;
pub use auxfun::fuzzy_str_cmp;
pub use calib::CalibDistortion;
pub use calib::CalibTca;
pub use calib::CalibVignetting;
pub use calib::DistortionModel;
pub use calib::TcaModel;
pub use calib::VignettingModel;
pub use camera::Camera;
pub use db::Database;
pub use error::Error;
pub use lens::Lens;
pub use lens::LensType;
pub use modifier::Modifier;
pub use mount::Mount;

Modules§

auxfun
Auxiliary helpers: fuzzy string compare + Catmull-Rom spline interpolation.
calib
Calibration entries: distortion, transverse chromatic aberration, vignetting.
camera
Camera body.
db
XML database loader + queries.
error
Crate-level error type.
lens
Lens type and 4D calibration interpolation.
mod_color
Color pass: vignetting correction.
mod_coord
Coordinate transforms: distortion correction + geometry conversions.
mod_pc
Perspective correction kernels and Jacobi SVD.
mod_subpix
Sub-pixel pass: transverse chromatic aberration (TCA) correction.
modifier
Modifier — composition of correction passes.
mount
Lens mount.