Go to the documentation of this file.
30 # define C_TYPEDEF(t,c)
32 # define C_TYPEDEF(t,c) typedef t c c;
48 #define LF_VERSION_MAJOR 0
50 #define LF_VERSION_MINOR 3
52 #define LF_VERSION_MICRO 2
54 #define LF_VERSION_BUGFIX 0
56 #define LF_VERSION ((LF_VERSION_MAJOR << 24) | (LF_VERSION_MINOR << 16) | (LF_VERSION_MICRO << 8) | LF_VERSION_BUGFIX)
60 #define LF_MAX_DATABASE_VERSION 1
62 #if defined CONF_LENSFUN_STATIC
66 # ifdef CONF_SYMBOL_VISIBILITY
67 # if defined PLATFORM_WINDOWS
68 # define LF_EXPORT __declspec(dllexport)
69 # elif defined CONF_COMPILER_GCC || __clang__
70 # define LF_EXPORT __attribute__((visibility("default")))
72 # error "I don't know how to change symbol visibility for your compiler"
75 # if defined PLATFORM_WINDOWS || defined _MSC_VER
76 # define LF_EXPORT __declspec(dllimport)
83 #ifndef CONF_LENSFUN_INTERNAL
86 # define DEPRECATED __attribute__((deprecated))
87 # elif defined(_MSC_VER)
88 # define DEPRECATED __declspec(deprecated)
90 # pragma message("WARNING: You need to implement DEPRECATED for this compiler")
238 void SetName (
const char *val,
const char *lang = NULL);
359 void SetMaker (
const char *val,
const char *lang = NULL);
371 void SetModel (
const char *val,
const char *lang = NULL);
875 void SetMaker (
const char *val,
const char *lang = NULL);
887 void SetModel (
const char *val,
const char *lang = NULL);
1429 lfError Load (
const char *errcontext,
const char *data,
size_t data_size);
1456 const lfLens *
const *lenses)
const;
1472 const lfLens *
const *lenses);
1521 int sflags = 0)
const;
1570 const char *model,
int sflags = 0)
const;
1688 const
char *data,
size_t data_size);
1697 const
lfLens *const *lenses);
1702 const
lfLens *const *lenses);
1706 const
lfDatabase *db, const
char *maker, const
char *model);
1710 const
lfDatabase *db, const
char *maker, const
char *model,
int sflags);
1718 const
char *lens,
int sflags);
1814 #define LF_CR_1(a) (LF_CR_ ## a)
1816 #define LF_CR_2(a,b) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4))
1818 #define LF_CR_3(a,b,c) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1819 ((LF_CR_ ## c) << 8))
1821 #define LF_CR_4(a,b,c,d) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1822 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12))
1824 #define LF_CR_5(a,b,c,d,e) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1825 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
1826 ((LF_CR_ ## e) << 16))
1828 #define LF_CR_6(a,b,c,d,e,f) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1829 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
1830 ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20))
1832 #define LF_CR_7(a,b,c,d,e,f,g) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1833 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
1834 ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20) | \
1835 ((LF_CR_ ## g) << 24))
1837 #define LF_CR_8(a,b,c,d,e,f,g,h) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1838 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
1839 ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20) | \
1840 ((LF_CR_ ## g) << 24) | ((LF_CR_ ## h) << 28))
1884 void *pixels,
int comp_role,
int count);
1903 struct lfCallbackData
1911 typedef struct {
float angle, dist; } lfPoint;
2097 float distance,
float scale,
lfLensType targeom,
int flags,
bool reverse);
2123 void *data,
size_t data_size);
2143 void *data,
size_t data_size);
2162 void *data,
size_t data_size);
2195 bool reverse =
false);
2291 int comp_role,
int row_stride)
const;
2424 float GetRealFocalLength (
const lfLens *lens,
float focal);
2426 void AddCallback (
void *arr, lfCallbackData *d,
2427 int priority,
void *data,
size_t data_size);
2442 double AutoscaleResidualDistance (
float *coord)
const;
2457 float GetTransformedDistance (lfPoint point)
const;
2459 static void ModifyCoord_UnTCA_Linear (
void *data,
float *iocoord,
int count);
2460 static void ModifyCoord_TCA_Linear (
void *data,
float *iocoord,
int count);
2461 static void ModifyCoord_UnTCA_Poly3 (
void *data,
float *iocoord,
int count);
2462 static void ModifyCoord_TCA_Poly3 (
void *data,
float *iocoord,
int count);
2464 static void ModifyCoord_UnDist_Poly3 (
void *data,
float *iocoord,
int count);
2465 static void ModifyCoord_Dist_Poly3 (
void *data,
float *iocoord,
int count);
2466 #ifdef VECTORIZATION_SSE
2467 static void ModifyCoord_Dist_Poly3_SSE (
void *data,
float *iocoord,
int count);
2469 static void ModifyCoord_UnDist_Poly5 (
void *data,
float *iocoord,
int count);
2470 static void ModifyCoord_Dist_Poly5 (
void *data,
float *iocoord,
int count);
2471 static void ModifyCoord_UnDist_PTLens (
void *data,
float *iocoord,
int count);
2472 static void ModifyCoord_Dist_PTLens (
void *data,
float *iocoord,
int count);
2473 #ifdef VECTORIZATION_SSE
2474 static void ModifyCoord_UnDist_PTLens_SSE (
void *data,
float *iocoord,
int count);
2475 static void ModifyCoord_Dist_PTLens_SSE (
void *data,
float *iocoord,
int count);
2477 static void ModifyCoord_Geom_FishEye_Rect (
void *data,
float *iocoord,
int count);
2478 static void ModifyCoord_Geom_Panoramic_Rect (
void *data,
float *iocoord,
int count);
2479 static void ModifyCoord_Geom_ERect_Rect (
void *data,
float *iocoord,
int count);
2480 static void ModifyCoord_Geom_Rect_FishEye (
void *data,
float *iocoord,
int count);
2481 static void ModifyCoord_Geom_Panoramic_FishEye (
void *data,
float *iocoord,
int count);
2482 static void ModifyCoord_Geom_ERect_FishEye (
void *data,
float *iocoord,
int count);
2483 static void ModifyCoord_Geom_Rect_Panoramic (
void *data,
float *iocoord,
int count);
2484 static void ModifyCoord_Geom_FishEye_Panoramic (
void *data,
float *iocoord,
int count);
2485 static void ModifyCoord_Geom_ERect_Panoramic (
void *data,
float *iocoord,
int count);
2486 static void ModifyCoord_Geom_Rect_ERect (
void *data,
float *iocoord,
int count);
2487 static void ModifyCoord_Geom_FishEye_ERect (
void *data,
float *iocoord,
int count);
2488 static void ModifyCoord_Geom_Panoramic_ERect (
void *data,
float *iocoord,
int count);
2489 static void ModifyCoord_Geom_Orthographic_ERect (
void *data,
float *iocoord,
int count);
2490 static void ModifyCoord_Geom_ERect_Orthographic (
void *data,
float *iocoord,
int count);
2491 static void ModifyCoord_Geom_Stereographic_ERect (
void *data,
float *iocoord,
int count);
2492 static void ModifyCoord_Geom_ERect_Stereographic (
void *data,
float *iocoord,
int count);
2493 static void ModifyCoord_Geom_Equisolid_ERect (
void *data,
float *iocoord,
int count);
2494 static void ModifyCoord_Geom_ERect_Equisolid (
void *data,
float *iocoord,
int count);
2495 static void ModifyCoord_Geom_Thoby_ERect (
void *data,
float *iocoord,
int count);
2496 static void ModifyCoord_Geom_ERect_Thoby (
void *data,
float *iocoord,
int count);
2497 #ifdef VECTORIZATION_SSE
2498 static void ModifyColor_DeVignetting_PA_SSE (
2499 void *data,
float _x,
float _y,
lf_f32 *pixels,
int comp_role,
int count);
2501 #ifdef VECTORIZATION_SSE2
2502 static void ModifyColor_DeVignetting_PA_SSE2 (
2503 void *data,
float _x,
float _y,
lf_u16 *pixels,
int comp_role,
int count);
2506 template<
typename T>
static void ModifyColor_Vignetting_PA (
2507 void *data,
float x,
float y, T *rgb,
int comp_role,
int count);
2508 template<
typename T>
static void ModifyColor_DeVignetting_PA (
2509 void *data,
float x,
float y, T *rgb,
int comp_role,
int count);
2511 static void ModifyCoord_Scale (
void *data,
float *iocoord,
int count);
2516 double CenterX, CenterY;
2518 double NormScale, NormUnScale;
2521 double NormalizedInMillimeters;
2524 double AspectRatioCorrection;
2527 void *SubpixelCallbacks;
2529 void *ColorCallbacks;
2531 void *CoordCallbacks;
2545 const
lfLens *lens,
float crop,
int width,
int height);
2553 float focal,
float aperture,
float distance,
float scale,
2559 void *data,
size_t data_size);
2564 void *data,
size_t data_size);
2569 void *data,
size_t data_size);
2598 lfModifier *modifier,
float xu,
float yu,
int width,
int height,
float *res);
2602 lfModifier *modifier,
void *pixels,
float x,
float y,
int width,
int height,
2603 int comp_role,
int row_stride);
2607 lfModifier *modifier,
float xu,
float yu,
int width,
int height,
float *res);
2611 lfModifier *modifier,
float xu,
float yu,
int width,
int height,
float *res);
lfModifier * lf_modifier_new(const lfLens *lens, float crop, int width, int height)
Lens distortion calibration data.
Definition: lensfun.h:501
void SetMount(const char *val)
Set the value for camera Mount.
@ LF_PF_F64
Definition: lensfun.h:1777
Camera data. Unknown fields are set to NULL.
Definition: lensfun.h:314
void AddLens(lfLens *lens)
Add a lens to the database.
void SetModel(const char *val, const char *lang=NULL)
Add a string to camera model.
const lfCamera ** lf_db_find_cameras(const lfDatabase *db, const char *maker, const char *model)
lfModifier(const lfLens *lens, float crop, int width, int height)
Create a empty image modifier object.
cbool lf_lens_interpolate_vignetting(const lfLens *lens, float focal, float aperture, float distance, lfLensCalibVignetting *res)
unsigned char lf_u8
Definition: lensfun.h:124
#define LF_EXPORT
This macro expands to an appropiate symbol visibility declaration.
Definition: lensfun.h:64
@ LF_PF_U32
Definition: lensfun.h:1773
void lf_mount_destroy(lfMount *mount)
Destroy a lfMount object.
lfMLstr Maker
Camera maker (ex: "Rollei") – same as in EXIF.
Definition: lensfun.h:316
lfVignettingModel
The Lensfun library supports several models for lens vignetting correction.
Definition: lensfun.h:594
@ LF_WRONG_FORMAT
Definition: lensfun.h:116
@ LF_RECTILINEAR
Rectilinear lens.
Definition: lensfun.h:748
lfMLstr Model
Model name (ex: "Rolleiflex SL35") – same as in EXIF.
Definition: lensfun.h:318
char ** Compat
Definition: lensfun.h:210
void AddCalibRealFocal(const lfLensCalibRealFocal *cf)
Add a new lens real focal length structure to the pool.
~lfCamera()
Destroy a camera object. All allocated fields are freed.
@ LF_SEARCH_LOOSE
This flag selects a looser search algorithm resulting in more results (still sorted by score).
Definition: lensfun.h:1321
float Aperture
Aperture (f-number) at which this calibration data was taken.
Definition: lensfun.h:625
@ LF_PF_F32
Definition: lensfun.h:1775
bool RemoveCalibDistortion(int idx)
Remove a calibration entry from the distortion calibration data.
@ LF_MODIFY_DISTORTION
Definition: lensfun.h:1756
float CenterY
Definition: lensfun.h:822
DEPRECATED bool InterpolateFov(float focal, lfLensCalibFov &res) const
Interpolate lens fov data for given focal length.
bool Check()
Check if a mount object is valid.
lfError lf_db_load_file(lfDatabase *db, const char *filename)
cbool lf_modifier_add_coord_callback_geometry(lfModifier *modifier, lfLensType from, lfLensType to, float focal)
cbool lf_modifier_apply_subpixel_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
float Max
Maximal value that has sense.
Definition: lensfun.h:730
lfMLstr Maker
Definition: lensfun.h:798
float lf_modifier_get_auto_scale(lfModifier *modifier, cbool reverse)
cbool lf_modifier_add_coord_callback_distortion(lfModifier *modifier, lfLensCalibDistortion *model, cbool reverse)
lfMLstr lf_mlstr_dup(const lfMLstr str)
Create a complete copy of a multi-language string.
bool InterpolateDistortion(float focal, lfLensCalibDistortion &res) const
Interpolate lens geometry distortion data for given focal length.
@ LF_CR_RED
Definition: lensfun.h:1804
lfError Load(const char *filename)
Load just a specific XML file.
unsigned int lf_u32
Definition: lensfun.h:128
lfError
Definition: lensfun.h:112
@ LF_PF_U8
Definition: lensfun.h:1769
void lf_modifier_add_subpixel_callback(lfModifier *modifier, lfSubpixelCoordFunc callback, int priority, void *data, size_t data_size)
Lens vignetting calibration data.
Definition: lensfun.h:619
char * HomeDataDir
Home lens database directory (something like "~/.local/share/lensfun")
Definition: lensfun.h:1361
lfMLstr Variant
Camera variant. Some cameras use same EXIF id for different models.
Definition: lensfun.h:320
float CropFactor
Camera crop factor (ex: 1.0). Must be defined.
Definition: lensfun.h:324
@ LF_CR_UNKNOWN
Definition: lensfun.h:1800
bool InterpolateVignetting(float focal, float aperture, float distance, lfLensCalibVignetting &res) const
Interpolate lens vignetting model parameters for given focal length, aperture, and focus distance.
float Focal
Definition: lensfun.h:681
void SetMaker(const char *val, const char *lang=NULL)
Add a string to camera maker.
lfLensType Type
Definition: lensfun.h:828
#define DEPRECATED
For marking deprecated functions, see http://stackoverflow.com/a/21265197.
Definition: lensfun.h:91
@ LF_NO_CROP
no crop at all
Definition: lensfun.h:640
bool AddSubpixelCallbackTCA(lfLensCalibTCA &model, bool reverse=false)
Add the stock TCA correcting callback into the chain.
@ LF_DIST_MODEL_POLY5
5th order polynomial model.
Definition: lensfun.h:481
This structure describes a single parameter for some lens model.
Definition: lensfun.h:724
static const char * GetLensTypeDesc(lfLensType type, const char **details)
Get the human-readable lens type name and a short description of this lens type.
cbool lf_modifier_apply_subpixel_geometry_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
lfLens * lf_lens_new()
Create a new lens object.
void lf_lens_destroy(lfLens *lens)
Destroy a lfLens object.
float lf_f32
Definition: lensfun.h:130
void lf_lens_add_calib_vignetting(lfLens *lens, const lfLensCalibVignetting *vc)
Laterlal chromatic aberrations calibration data.
Definition: lensfun.h:566
lfTCAModel
The Lensfun library supports several models for lens lateral chromatic aberrations (also called trans...
Definition: lensfun.h:526
lfLensCalibRealFocal ** CalibRealFocal
Definition: lensfun.h:840
bool ApplySubpixelGeometryDistortion(float xu, float yu, int width, int height, float *res) const
Apply stage 2 & 3 in one step.
@ LF_CR_BLUE
Definition: lensfun.h:1808
@ LF_NO_ERROR
Definition: lensfun.h:114
@ LF_TCA_MODEL_LINEAR
Linear lateral chromatic aberrations model.
Definition: lensfun.h:540
lfLensType
Lens type. See Change of projection for further information.
Definition: lensfun.h:741
int Initialize(const lfLens *lens, lfPixelFormat format, float focal, float aperture, float distance, float scale, lfLensType targeom, int flags, bool reverse)
Initialize the process of correcting aberrations in a image.
@ LF_MODIFY_TCA
Definition: lensfun.h:1751
@ LF_FISHEYE_STEREOGRAPHIC
Stereographic fisheye.
Definition: lensfun.h:772
void SetName(const char *val, const char *lang=NULL)
Add a string to mount name.
void SetVariant(const char *val, const char *lang=NULL)
Add a string to camera variant.
const lfLens ** FindLenses(const lfCamera *camera, const char *maker, const char *model, int sflags=0) const
Parse a human-friendly lens description (ex: "smc PENTAX-F 35-105mm F4-5.6" or "SIGMA AF 28-300 F3....
cbool lf_lens_remove_calib_vignetting(lfLens *lens, int idx)
lfDistortionModel
The Lensfun library implements several lens distortion models. This enum lists them.
Definition: lensfun.h:462
float MinFocal
Definition: lensfun.h:802
void SetModel(const char *val, const char *lang=NULL)
Add a string to camera model.
void lf_modifier_destroy(lfModifier *modifier)
char * Mount
Camera mount type (ex: "QBM")
Definition: lensfun.h:322
@ LF_CROP_CIRCLE
use a circular crop, e.g. for circular fisheye images
Definition: lensfun.h:644
void lf_lens_guess_parameters(lfLens *lens)
const lfLens ** lf_db_find_lenses_hd(const lfDatabase *db, const lfCamera *camera, const char *maker, const char *lens, int sflags)
cbool lf_modifier_apply_color_modification(lfModifier *modifier, void *pixels, float x, float y, int width, int height, int comp_role, int row_stride)
float CropFactor
Definition: lensfun.h:824
bool ApplySubpixelDistortion(float xu, float yu, int width, int height, float *res) const
Image correction step 3: apply subpixel distortions.
static const char * GetCropDesc(lfCropMode mode, const char **details, const lfParameter ***params)
Get the human-readable crop name and the descriptions of the parameters required by this model.
lfMLstr Name
Camera mount name.
Definition: lensfun.h:208
char ** Mounts
Definition: lensfun.h:810
@ LF_PF_U16
Definition: lensfun.h:1771
const lfCamera *const * lf_db_get_cameras(const lfDatabase *db)
void(* lfModifyColorFunc)(void *data, float x, float y, void *pixels, int comp_role, int count)
A callback function which modifies the colors of a strip of pixels.
Definition: lensfun.h:1883
bool RemoveCalibCrop(int idx)
Remove a lens crop entry from the lens crop structure.
const char * lf_db_mount_name(const lfDatabase *db, const char *mount)
@ LF_NO_DATABASE
Definition: lensfun.h:118
int lf_modifier_initialize(lfModifier *modifier, const lfLens *lens, lfPixelFormat format, float focal, float aperture, float distance, float scale, lfLensType targeom, int flags, cbool reverse)
void lf_modifier_add_color_callback(lfModifier *modifier, lfModifyColorFunc callback, int priority, void *data, size_t data_size)
bool AddCoordCallbackGeometry(lfLensType from, lfLensType to, float focal)
Add the stock lens geometry rectification callback into the chain.
@ LF_SEARCH_SORT_AND_UNIQUIFY
This flag makes Lensfun to sort the results by focal length, and remove all double lens names.
Definition: lensfun.h:1333
@ LF_DIST_MODEL_POLY3
3rd order polynomial model, which is a subset of the PTLens model.
Definition: lensfun.h:472
lfError Save(const char *filename, const lfMount *const *mounts, const lfCamera *const *cameras, const lfLens *const *lenses) const
Save a set of camera and lens descriptions to a file.
@ LF_TCA_MODEL_POLY3
Third order polynomial.
Definition: lensfun.h:553
@ LF_DIST_MODEL_PTLENS
PTLens model, which is also used by Hugin.
Definition: lensfun.h:489
Struct to save real focal length, which can depends on the (nominal) focal length.
Definition: lensfun.h:701
void lf_camera_copy(lfCamera *dest, const lfCamera *source)
Copy the data from one lfCamera structure into another.
@ LF_CROP_RECTANGLE
use a rectangular crop
Definition: lensfun.h:642
void lf_lens_add_calib_tca(lfLens *lens, const lfLensCalibTCA *tcac)
void AddMount(const char *val)
Add a new mount type to this lens.
Struct to save image crop, which can depend on the focal length.
Definition: lensfun.h:653
static lfModifier * Create(const lfLens *lens, float crop, int width, int height)
Create a empty image modifier object.
static const char * GetTCAModelDesc(lfTCAModel model, const char **details, const lfParameter ***params)
Get the human-readable transversal chromatic aberrations model name and the descriptions of the param...
lfLensCalibFov ** CalibFov
Definition: lensfun.h:838
DEPRECATED bool RemoveCalibFov(int idx)
Remove a field of view entry from the lens fov structure.
bool AddColorCallbackVignetting(lfLensCalibVignetting &model, lfPixelFormat format, bool reverse=false)
Add the stock lens vignetting correcting callback into the chain. The vignetting correction callback ...
float Focal
Focal length in mm at which this calibration data was taken.
Definition: lensfun.h:505
const char * Name
Parameter name (something like 'k', 'k3', 'omega' etc.)
Definition: lensfun.h:726
@ LF_MODIFY_VIGNETTING
Definition: lensfun.h:1753
const char * lf_mlstr_get(const lfMLstr str)
Get a string corresponding to current locale from a multi-language string.
float MaxFocal
Definition: lensfun.h:804
@ LF_FISHEYE_ORTHOGRAPHIC
Orthographic fisheye.
Definition: lensfun.h:770
cbool lf_modifier_add_coord_callback_scale(lfModifier *modifier, float scale, cbool reverse)
cbool lf_lens_interpolate_crop(const lfLens *lens, float focal, lfLensCalibCrop *res)
const lfMount *const * lf_db_get_mounts(const lfDatabase *db)
void lf_camera_destroy(lfCamera *camera)
Destroy a lfCamera object.
float Focal
Focal length in mm at which this calibration data was taken.
Definition: lensfun.h:655
void AddCoordCallback(lfModifyCoordFunc callback, int priority, void *data, size_t data_size)
Add a user-defined callback to the coordinate correction chain.
bool AddCoordCallbackDistortion(lfLensCalibDistortion &model, bool reverse=false)
Add the stock lens distortion correcting callback into the chain.
bool RemoveCalibRealFocal(int idx)
Remove a real focal length entry from the lens real focal length structure.
lfLensCalibCrop ** CalibCrop
Definition: lensfun.h:836
void AddMount(lfMount *mount)
Add a mount to the database.
int Score
Definition: lensfun.h:842
const lfLens ** FindLenses(const lfLens *lens, int sflags=0) const
Find a set of lenses that fit certain criteria.
bool Check()
Check if a lens object is valid.
const lfMount * lf_db_find_mount(const lfDatabase *db, const char *mount)
void lf_lens_copy(lfLens *dest, const lfLens *source)
Copy the data from one lfLens structure into another.
lfComponentRole
These constants define the role of every pixel component, four bits each. "pixel" refers here to a se...
Definition: lensfun.h:1786
float Distance
Focus distance in meters.
Definition: lensfun.h:627
@ LF_FISHEYE_EQUISOLID
Equisolid fisheye.
Definition: lensfun.h:774
const lfCamera ** FindCamerasExt(const char *maker, const char *model, int sflags=0) const
Searches all translations of camera maker and model.
void AddColorCallback(lfModifyColorFunc callback, int priority, void *data, size_t data_size)
Add a user-defined callback to the color modification chain.
void AddCompat(const char *val)
Add a mount name to the list of compatible mounts.
bool InterpolateCrop(float focal, lfLensCalibCrop &res) const
Interpolate lens crop data for given focal length.
bool RemoveCalibTCA(int idx)
Remove a calibration entry from the TCA calibration data.
@ LF_FISHEYE_THOBY
Fisheye as measured by Thoby (for Nikkor 10.5).
Definition: lensfun.h:780
lfError Load()
Find and load the lens database.
void AddCalibDistortion(const lfLensCalibDistortion *dc)
Add a new distortion calibration structure to the pool.
cbool lf_modifier_add_subpixel_callback_TCA(lfModifier *modifier, lfLensCalibTCA *model, cbool reverse)
bool InterpolateRealFocal(float focal, lfLensCalibRealFocal &res) const
Interpolate lens real focal length data for given focal length.
This structure contains everything specific to a camera mount.
Definition: lensfun.h:202
~lfLens()
Destroy this and all associated objects.
void lf_lens_add_calib_distortion(lfLens *lens, const lfLensCalibDistortion *dc)
void lf_modifier_add_coord_callback(lfModifier *modifier, lfModifyCoordFunc callback, int priority, void *data, size_t data_size)
cbool lf_mount_check(lfMount *mount)
@ LF_UNKNOWN
Unknown lens type.
Definition: lensfun.h:743
const lfCamera ** FindCameras(const char *maker, const char *model) const
Find a set of cameras that fit given criteria.
bool ApplyGeometryDistortion(float xu, float yu, int width, int height, float *res) const
Image correction step 2: apply the transforms on a block of pixel coordinates.
DEPRECATED void AddCalibFov(const lfLensCalibFov *cf)
Add a new lens fov structure to the pool.
void AddCamera(lfCamera *camera)
Add a camera to the database.
const lfCamera ** lf_db_find_cameras_ext(const lfDatabase *db, const char *maker, const char *model, int sflags)
const char * lf_get_tca_model_desc(enum lfTCAModel model, const char **details, const lfParameter ***params)
@ LF_EQUIRECTANGULAR
Equirectangular.
Definition: lensfun.h:768
float MinAperture
Definition: lensfun.h:806
void Destroy()
Destroy the database object and free all loaded data.
void(* lfSubpixelCoordFunc)(void *data, float *iocoord, int count)
A callback function which modifies the separate coordinates for all color components for every pixel ...
Definition: lensfun.h:1857
@ LF_MODIFY_ALL
Definition: lensfun.h:1762
const char * lf_get_distortion_model_desc(enum lfDistortionModel model, const char **details, const lfParameter ***params)
bool InterpolateTCA(float focal, lfLensCalibTCA &res) const
Interpolate lens TCA calibration data for given focal length.
const char * lf_get_lens_type_desc(enum lfLensType type, const char **details)
void(* lfModifyCoordFunc)(void *data, float *iocoord, int count)
A callback function which modifies the coordinates of a strip of pixels.
Definition: lensfun.h:1898
float FieldOfView
Field of view for given images.
Definition: lensfun.h:691
@ LF_CR_INTENSITY
Definition: lensfun.h:1802
#define C_TYPEDEF(t, c)
Definition: lensfun.h:30
void SetMaker(const char *val, const char *lang=NULL)
Add a string to camera maker.
float Default
Default value for the parameter.
Definition: lensfun.h:732
float MaxAperture
Definition: lensfun.h:808
const lfLens ** lf_db_find_lenses(const lfDatabase *db, const lfLens *lens, int sflags)
float AspectRatio
Definition: lensfun.h:826
void lf_db_destroy(lfDatabase *db)
Destroy the database object.
lfLensCalibDistortion ** CalibDistortion
Definition: lensfun.h:830
lfCropMode
Different crop modes.
Definition: lensfun.h:638
bool AddCoordCallbackScale(float scale, bool reverse=false)
Add the stock image scaling callback into the chain.
static const char * GetDistortionModelDesc(lfDistortionModel model, const char **details, const lfParameter ***params)
Get the human-readable distortion model name and the descriptions of the parameters required by this ...
@ LF_TCA_MODEL_NONE
No TCA correction data is known.
Definition: lensfun.h:528
static const char * GetVignettingModelDesc(lfVignettingModel model, const char **details, const lfParameter ***params)
Get the human-readable vignetting model name and the descriptions of the parameters required by this ...
void AddCalibCrop(const lfLensCalibCrop *cc)
Add a new lens crop structure to the pool.
char * lfMLstr
Definition: lensfun.h:108
@ LF_CR_GREEN
Definition: lensfun.h:1806
bool LoadDirectory(const char *dirname)
Load all XML files from a directory.
cbool lf_lens_remove_calib_real_focal(lfLens *lens, int idx)
void lf_mount_copy(lfMount *dest, const lfMount *source)
Copy the data from one lfMount structure into another.
const lfMount *const * GetMounts() const
Retrieve a full list of mounts.
lfDatabase * lf_db_new(void)
Create a new empty database object.
lfMLstr Model
Definition: lensfun.h:800
lfMount * lf_mount_new()
Create a new mount object.
DEPRECATED cbool lf_lens_interpolate_fov(const lfLens *lens, float focal, lfLensCalibFov *res)
DEPRECATED void lf_lens_add_calib_fov(lfLens *lens, const lfLensCalibFov *cf)
float GetAutoScale(bool reverse)
Compute the automatic scale factor for the image.
void AddCalibTCA(const lfLensCalibTCA *tcac)
Add a new transversal chromatic aberration calibration structure to the pool.
A lens database object.
Definition: lensfun.h:1359
void lf_lens_add_calib_real_focal(lfLens *lens, const lfLensCalibRealFocal *cf)
const lfCamera *const * GetCameras() const
Retrieve a full list of cameras.
@ LF_CR_NEXT
Definition: lensfun.h:1798
lfPixelFormat
A list of pixel formats supported by internal colour callbacks.
Definition: lensfun.h:1767
float Focal
Definition: lensfun.h:703
@ LF_FISHEYE
Equidistant fisheye.
Definition: lensfun.h:754
@ LF_DIST_MODEL_NONE
Distortion parameters are unknown.
Definition: lensfun.h:464
cbool lf_lens_interpolate_real_focal(const lfLens *lens, float focal, lfLensCalibRealFocal *res)
lfError lf_db_load_data(lfDatabase *db, const char *errcontext, const char *data, size_t data_size)
@ LF_VIGNETTING_MODEL_PA
Pablo D'Angelo vignetting model (which is a more general variant of the law).
Definition: lensfun.h:606
void AddCalibVignetting(const lfLensCalibVignetting *vc)
Add a new vignetting calibration structure to the pool.
double lf_f64
Definition: lensfun.h:132
unsigned short lf_u16
Definition: lensfun.h:126
cbool lf_modifier_add_color_callback_vignetting(lfModifier *modifier, lfLensCalibVignetting *model, lfPixelFormat format, cbool reverse)
int Score
Camera matching score, used while searching: not actually a camera parameter.
Definition: lensfun.h:326
const lfMount * FindMount(const char *mount) const
Return the lfMount structure given the (basic) mount name.
cbool lf_camera_check(lfCamera *camera)
cbool lf_lens_interpolate_tca(const lfLens *lens, float focal, lfLensCalibTCA *res)
lfError Save(const char *filename) const
Save the whole database to a file.
cbool lf_modifier_apply_geometry_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
bool RemoveCalibVignetting(int idx)
Remove a calibration entry from the vignetting calibration data.
lfError lf_db_save_all(const lfDatabase *db, const char *filename)
lfCamera()
Initialize a new camera object. All fields are set to 0.
lfCamera * lf_camera_new()
Create a new camera object.
#define cbool
C-compatible bool type; don't bother to define Yet Another Boolean Type.
Definition: lensfun.h:98
lfError Load(const char *errcontext, const char *data, size_t data_size)
Load a set of camera/lenses from a memory array.
void GuessParameters()
This method fills some fields if they are missing but can be derived from other fields.
lfLensCalibTCA ** CalibTCA
Definition: lensfun.h:832
Lens data. Unknown fields are set to NULL or 0.
Definition: lensfun.h:796
cbool lf_lens_remove_calib_distortion(lfLens *lens, int idx)
~lfMount()
Destroy a mount object. All allocated fields are freed.
lfLens(const lfLens &other)
const lfLens *const * GetLenses() const
Retrieve a full list of lenses.
lfMount()
Initialize a new mount object. All fields are set to 0.
const lfLens *const * lf_db_get_lenses(const lfDatabase *db)
static lfDatabase * Create()
Create a new empty database object.
float CenterX
Definition: lensfun.h:820
char * lf_db_save(const lfMount *const *mounts, const lfCamera *const *cameras, const lfLens *const *lenses)
float Focal
Focal length in mm at which this calibration data was taken.
Definition: lensfun.h:623
void AddSubpixelCallback(lfSubpixelCoordFunc callback, int priority, void *data, size_t data_size)
Add a user-defined callback to the subpixel coordinate rectification chain.
lfLens()
Create a new lens object, initializing all fields to default values.
const char * lf_get_crop_desc(enum lfCropMode mode, const char **details, const lfParameter ***params)
float Focal
Focal length in mm at which this calibration data was taken.
Definition: lensfun.h:570
cbool lf_lens_remove_calib_crop(lfLens *lens, int idx)
cbool lf_lens_interpolate_distortion(const lfLens *lens, float focal, lfLensCalibDistortion *res)
DEPRECATED cbool lf_lens_remove_calib_fov(lfLens *lens, int idx)
lfError lf_db_save_file(const lfDatabase *db, const char *filename, const lfMount *const *mounts, const lfCamera *const *cameras, const lfLens *const *lenses)
@ LF_MODIFY_GEOMETRY
Definition: lensfun.h:1758
@ LF_VIGNETTING_MODEL_NONE
No vignetting correction data is known.
Definition: lensfun.h:596
@ LF_MODIFY_SCALE
Definition: lensfun.h:1760
const char * MountName(const char *mount) const
Get the name of a mount in current locale.
lfMLstr lf_mlstr_add(lfMLstr str, const char *lang, const char *trstr)
Add a new translated string to a multi-language string.
float Min
Minimal value that has sense.
Definition: lensfun.h:728
lfError lf_db_load(lfDatabase *db)
cbool lf_lens_check(lfLens *lens)
const char * lf_get_vignetting_model_desc(enum lfVignettingModel model, const char **details, const lfParameter ***params)
float RealFocal
Real focal length.
Definition: lensfun.h:715
A modifier object contains optimized data required to rectify a image.
Definition: lensfun.h:1999
lfLensCalibVignetting ** CalibVignetting
Definition: lensfun.h:834
@ LF_PANORAMIC
Panoramic (cylindrical)
Definition: lensfun.h:761
void Destroy()
Destroy the modifier object.
bool ApplyColorModification(void *pixels, float x, float y, int width, int height, int comp_role, int row_stride) const
Image correction step 1: fix image colors.
char * UserUpdatesDir
Home lens database directory for automatic updates (something like "~/.local/share/lensfun/updates")
Definition: lensfun.h:1364
void lf_lens_add_calib_crop(lfLens *lens, const lfLensCalibCrop *cc)
cbool lf_lens_remove_calib_tca(lfLens *lens, int idx)
Struct to save calibrated field of view, which can depends on the focal length (DEPRECATED)
Definition: lensfun.h:679
lfCamera(const lfCamera &other)
static char * Save(const lfMount *const *mounts, const lfCamera *const *cameras, const lfLens *const *lenses)
Save a set of camera and lens descriptions into a memory array.
@ LF_CR_END
Definition: lensfun.h:1791