These structures and functions allow to define and examine the properties of a lens. More...
Classes | |
| struct | lfLensCalibDistortion |
| Lens distortion calibration data. More... | |
| struct | lfLensCalibTCA |
| Laterlal chromatic aberrations calibration data. More... | |
| struct | lfLensCalibVignetting |
| Lens vignetting calibration data. More... | |
| struct | lfParameter |
| This structure describes a single parameter for some lens model. More... | |
| struct | lfLens |
| Lens data. More... | |
Enumerations | |
| enum | lfDistortionModel { LF_DIST_MODEL_NONE, LF_DIST_MODEL_POLY3, LF_DIST_MODEL_POLY5, LF_DIST_MODEL_FOV1, LF_DIST_MODEL_PTLENS } |
The lensdb library implements several lens distortion models. More... | |
| enum | lfTCAModel { LF_TCA_MODEL_NONE, LF_TCA_MODEL_LINEAR, LF_TCA_MODEL_POLY3 } |
The lensdb library supports several models for lens lateral chromatic aberrations (also called transversal chromatic aberrations, TCA). More... | |
| enum | lfVignettingModel { LF_VIGNETTING_MODEL_NONE, LF_VIGNETTING_MODEL_PA } |
The lensdb library supports several models for lens vignetting correction. More... | |
| enum | lfLensType { LF_UNKNOWN, LF_RECTILINEAR, LF_FISHEYE, LF_PANORAMIC, LF_EQUIRECTANGULAR } |
Lens type. More... | |
Functions | |
| lfLens * | lf_lens_new () |
| Create a new lens object. | |
| void | lf_lens_destroy (lfLens *lens) |
| Destroy a lfLens object. | |
| void | lf_lens_copy (lfLens *dest, const lfLens *source) |
| Copy the data from one lfLens structure into another. | |
| cbool | lf_lens_check (lfLens *lens) |
| void | lf_lens_guess_parameters (lfLens *lens) |
| const char * | lf_get_distortion_model_desc (enum lfDistortionModel model, const char **details, const lfParameter ***params) |
| const char * | lf_get_tca_model_desc (enum lfTCAModel model, const char **details, const lfParameter ***params) |
| const char * | lf_get_vignetting_model_desc (enum lfVignettingModel model, const char **details, const lfParameter ***params) |
| const char * | lf_get_lens_type_desc (enum lfLensType type, const char **details) |
| cbool | lf_lens_interpolate_distortion (const lfLens *lens, float focal, lfLensCalibDistortion *res) |
| cbool | lf_lens_interpolate_tca (const lfLens *lens, float focal, lfLensCalibTCA *res) |
| cbool | lf_lens_interpolate_vignetting (const lfLens *lens, float focal, float aperture, float distance, lfLensCalibVignetting *res) |
| void | lf_lens_add_calib_distortion (lfLens *lens, const lfLensCalibDistortion *dc) |
| cbool | lf_lens_remove_calib_distortion (lfLens *lens, int idx) |
| void | lf_lens_add_calib_tca (lfLens *lens, const lfLensCalibTCA *tcac) |
| cbool | lf_lens_remove_calib_tca (lfLens *lens, int idx) |
| void | lf_lens_add_calib_vignetting (lfLens *lens, const lfLensCalibVignetting *vc) |
| cbool | lf_lens_remove_calib_vignetting (lfLens *lens, int idx) |
These structures and functions allow to define and examine the properties of a lens.
| enum lfDistortionModel |
The lensdb library implements several lens distortion models.
This enum lists them. Distortion usually heavily depends on the focal distance, but does not depend on the aperture.
For a popular explanation of lens distortion see http://www.vanwalree.com/optics/distortion.html
| LF_DIST_MODEL_NONE |
Distortion parameters are unknown. |
| LF_DIST_MODEL_POLY3 |
3rd order polynomial model: Ru = Rd * (1 + k1 * Rd^2) Ref: http://www.imatest.com/docs/distortion.html |
| LF_DIST_MODEL_POLY5 |
5th order polynomial model: Ru = Rd * (1 + k1 * Rd^2 + k2 * Rd^4) |
| LF_DIST_MODEL_FOV1 |
Field-of-view lens model: Ru = tg (Rd * omega) / (2 * tg (omega/2)) Ref: ftp://ftp-sop.inria.fr/chir/publis/devernay-faugeras:01.pdf. |
| LF_DIST_MODEL_PTLENS |
PTLens rectilinear: Ru = Rd * (a * Rd^3 + b * Rd^2 + c * Rd + 1) |
| enum lfLensType |
Lens type.
| LF_UNKNOWN |
Unknown lens type. |
| LF_RECTILINEAR |
A rectilinear lens - 99% of all lenses are of this type. |
| LF_FISHEYE |
Fisheye lens Ref: http://wiki.panotools.org/Fisheye_Projection. |
| LF_PANORAMIC |
Panoramic (cylindrical) |
| LF_EQUIRECTANGULAR |
Equirectangular (not that there are such lenses, but useful to convert images TO this type, especially fish-eye images. |
| enum lfTCAModel |
The lensdb library supports several models for lens lateral chromatic aberrations (also called transversal chromatic aberrations, TCA).
TCAs depend on focal distance, but does not depend of the aperture.
For a popular explanation of chromatic aberrations see http://www.vanwalree.com/optics/chromatic.html
| LF_TCA_MODEL_NONE |
No TCA correction data is known. |
| LF_TCA_MODEL_LINEAR |
Linear lateral chromatic aberrations model: Cd(R) = Cs(R) * kr Cd(B) = Cs(B) * kb Ref: http://cipa.icomos.org/fileadmin/papers/Torino2005/403.pdf. |
| LF_TCA_MODEL_POLY3 |
Third order polynomial: Cd(R) = Cs(R)^3 * br + Cs(R)^2 * cr + Cs(R) * vr Cd(B) = Cs(B)^3 * bb + Cs(B)^2 * cb + Cs(B) * vb Ref: http://wiki.panotools.org/Tca_correct. |
| enum lfVignettingModel |
The lensdb library supports several models for lens vignetting correction.
We focus on optical and natural vignetting since they can be generalized for all lenses of a certain type; mechanical vignetting is out of the scope of this library.
Vignetting is dependent on both focal distance and aperture.
For a popular explanation of vignetting see http://www.vanwalree.com/optics/vignetting.html
| LF_VIGNETTING_MODEL_NONE |
No vignetting correction data is known. |
| LF_VIGNETTING_MODEL_PA |
Pablo D'Angelo vignetting model (which is a more general variant of the cos^4 law): Cd = Cs * (1 + k1 * R^2 + k2 * R^4 + k3 * R^6) Ref: http://hugin.sourceforge.net/tech/. |
| const char* lf_get_distortion_model_desc | ( | enum lfDistortionModel | model, |
| const char ** | details, | ||
| const lfParameter *** | params | ||
| ) |
| const char* lf_get_lens_type_desc | ( | enum lfLensType | type, |
| const char ** | details | ||
| ) |
| const char* lf_get_tca_model_desc | ( | enum lfTCAModel | model, |
| const char ** | details, | ||
| const lfParameter *** | params | ||
| ) |
| const char* lf_get_vignetting_model_desc | ( | enum lfVignettingModel | model, |
| const char ** | details, | ||
| const lfParameter *** | params | ||
| ) |
| void lf_lens_add_calib_distortion | ( | lfLens * | lens, |
| const lfLensCalibDistortion * | dc | ||
| ) |
| void lf_lens_add_calib_tca | ( | lfLens * | lens, |
| const lfLensCalibTCA * | tcac | ||
| ) |
| void lf_lens_add_calib_vignetting | ( | lfLens * | lens, |
| const lfLensCalibVignetting * | vc | ||
| ) |
| cbool lf_lens_check | ( | lfLens * | lens ) |
Copy the data from one lfLens structure into another.
| dest | The destination object |
| source | The source object |
| void lf_lens_destroy | ( | lfLens * | lens ) |
Destroy a lfLens object.
This is equivalent to C++ "delete lens".
| lens | The lens object to destroy. |
| void lf_lens_guess_parameters | ( | lfLens * | lens ) |
| cbool lf_lens_interpolate_distortion | ( | const lfLens * | lens, |
| float | focal, | ||
| lfLensCalibDistortion * | res | ||
| ) |
| cbool lf_lens_interpolate_tca | ( | const lfLens * | lens, |
| float | focal, | ||
| lfLensCalibTCA * | res | ||
| ) |
| cbool lf_lens_interpolate_vignetting | ( | const lfLens * | lens, |
| float | focal, | ||
| float | aperture, | ||
| float | distance, | ||
| lfLensCalibVignetting * | res | ||
| ) |
| lfLens* lf_lens_new | ( | ) |
| cbool lf_lens_remove_calib_distortion | ( | lfLens * | lens, |
| int | idx | ||
| ) |
| cbool lf_lens_remove_calib_tca | ( | lfLens * | lens, |
| int | idx | ||
| ) |
| cbool lf_lens_remove_calib_vignetting | ( | lfLens * | lens, |
| int | idx | ||
| ) |
1.7.2