28 #if (defined(_MSC_VER) && (_MSC_VER < 1800))
45 # define C_TYPEDEF(t,c)
47 # define C_TYPEDEF(t,c) typedef t c c;
64 #define LF_VERSION_MAJOR 0
66 #define LF_VERSION_MINOR 3
68 #define LF_VERSION_MICRO 99
70 #define LF_VERSION_BUGFIX 0
72 #define LF_VERSION ((LF_VERSION_MAJOR << 24) | (LF_VERSION_MINOR << 16) | (LF_VERSION_MICRO << 8) | LF_VERSION_BUGFIX)
75 #define LF_MIN_DATABASE_VERSION 0
77 #define LF_MAX_DATABASE_VERSION 2
79 #if defined CONF_LENSFUN_STATIC
83 # ifdef CONF_SYMBOL_VISIBILITY
84 # if defined PLATFORM_WINDOWS
85 # define LF_EXPORT __declspec(dllexport)
86 # elif defined CONF_COMPILER_GCC || __clang__
87 # define LF_EXPORT __attribute__((visibility("default")))
89 # error "I don't know how to change symbol visibility for your compiler"
92 # if defined PLATFORM_WINDOWS || defined _MSC_VER
93 # define LF_EXPORT __declspec(dllimport)
100 #ifndef CONF_LENSFUN_INTERNAL
103 # define DEPRECATED __attribute__((deprecated))
104 # elif defined(_MSC_VER)
105 # define DEPRECATED __declspec(deprecated)
107 # pragma message("WARNING: You need to implement DEPRECATED for this compiler")
265 void SetName (
const char *val,
const char *lang = NULL);
287 std::vector<char*> MountCompat;
400 void SetMaker (
const char *val,
const char *lang = NULL);
412 void SetModel (
const char *val,
const char *lang = NULL);
879 for (
auto *cb : other.CalibDistortion)
881 for (
auto *cb : other.CalibVignetting)
883 for (
auto *cb : other.CalibTCA)
885 for (
auto *cb : other.CalibCrop)
887 for (
auto *cb : other.CalibFov)
893 for (
auto cb : CalibDistortion)
895 for (
auto cb : CalibVignetting)
897 for (
auto cb : CalibTCA)
899 for (
auto cb : CalibCrop)
901 for (
auto cb : CalibFov)
907 return CalibDistortion.empty() && CalibTCA.empty() && CalibVignetting.empty() &&
908 CalibCrop.empty() && CalibFov.empty();
911 bool HasDistortion()
const {
return !CalibDistortion.empty(); }
912 bool HasTCA()
const {
return !CalibTCA.empty(); }
913 bool HasVignetting()
const {
return !CalibVignetting.empty(); }
914 bool HasCrop()
const {
return !CalibCrop.empty(); }
915 bool HasFov()
const {
return !CalibFov.empty(); }
920 std::vector<lfLensCalibDistortion*> CalibDistortion;
922 std::vector<lfLensCalibTCA*> CalibTCA;
924 std::vector<lfLensCalibVignetting*> CalibVignetting;
926 std::vector<lfLensCalibCrop*> CalibCrop;
928 std::vector<lfLensCalibFov*> CalibFov;
1089 void SetMaker (
const char *val,
const char *lang = NULL);
1101 void SetModel (
const char *val,
const char *lang = NULL);
1374 void UpdateLegacyCalibPointers();
1376 std::vector<lfLensCalibrationSet*> Calibrations;
1377 std::vector<char*> MountNames;
1680 int sflags = 0)
const;
1729 const char *model,
int sflags = 0)
const;
1826 void *fuzzycmp,
const char*
const* compat_mounts)
const;
1828 lfError Load (
const char *errcontext,
const char *data,
size_t data_size);
1830 std::vector<lfMount*> Mounts;
1831 std::vector<lfCamera*> Cameras;
1832 std::vector<lfLens*> Lenses;
1890 const lfDatabase *db,
const char *maker,
const char *model);
1894 const lfDatabase *db,
const char *maker,
const char *model,
int sflags);
1902 const char *maker,
const char *lens,
int sflags);
1996 #define LF_CR_1(a) (LF_CR_ ## a)
1998 #define LF_CR_2(a,b) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4))
2000 #define LF_CR_3(a,b,c) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
2001 ((LF_CR_ ## c) << 8))
2003 #define LF_CR_4(a,b,c,d) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
2004 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12))
2006 #define LF_CR_5(a,b,c,d,e) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
2007 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
2008 ((LF_CR_ ## e) << 16))
2010 #define LF_CR_6(a,b,c,d,e,f) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
2011 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
2012 ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20))
2014 #define LF_CR_7(a,b,c,d,e,f,g) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
2015 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
2016 ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20) | \
2017 ((LF_CR_ ## g) << 24))
2019 #define LF_CR_8(a,b,c,d,e,f,g,h) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
2020 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
2021 ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20) | \
2022 ((LF_CR_ ## g) << 24) | ((LF_CR_ ## h) << 28))
2340 int comp_role,
int row_stride)
const;
2445 struct lfCallbackData
2447 virtual ~lfCallbackData() {}
2450 bool operator<(
const lfCallbackData& c)
const {
return priority < c.priority; }
2451 bool operator>(
const lfCallbackData& c)
const {
return priority > c.priority; }
2456 struct lfCallBackDataPtrComp
2458 bool operator () (
const lfCallbackData* lhs,
const lfCallbackData* rhs)
const {
2459 return lhs->priority < rhs->priority;
2478 typedef void (*lfModifySubpixCoordFunc) (
void *data,
float *iocoord,
int count);
2504 typedef void (*lfModifyColorFunc) (
void *data,
float x,
float y,
2505 void *pixels,
int comp_role,
int count);
2519 typedef void (*lfModifyCoordFunc) (
void *data,
float *iocoord,
int count);
2522 struct lfSubpixelCallback :
public lfCallbackData
2524 lfModifySubpixCoordFunc callback;
2527 struct lfSubpixTCACallback :
public lfSubpixelCallback
2533 struct lfCoordCallback :
public lfCallbackData
2535 lfModifyCoordFunc callback;
2538 struct lfCoordDistCallbackData :
public lfCoordCallback
2543 struct lfCoordScaleCallbackData :
public lfCoordCallback
2548 struct lfCoordGeomCallbackData :
public lfCoordCallback
2552 struct lfCoordPerspCallbackData :
public lfCoordCallback
2555 float delta_a, delta_b;
2559 struct lfColorCallback :
public lfCallbackData
2561 lfModifyColorFunc callback;
2564 struct lfColorVignCallbackData :
public lfColorCallback
2571 std::multiset<lfSubpixelCallback*, lfCallBackDataPtrComp> SubpixelCallbacks;
2573 std::multiset<lfColorCallback*, lfCallBackDataPtrComp> ColorCallbacks;
2575 std::multiset<lfCoordCallback*, lfCallBackDataPtrComp> CoordCallbacks;
2578 typedef struct {
float angle, dist; } lfPoint;
2580 void AddSubpixTCACallback (
const lfLensCalibTCA& lcd, lfModifySubpixCoordFunc func,
int priority);
2581 void AddCoordGeomCallback (lfModifyCoordFunc func,
int priority);
2598 double AutoscaleResidualDistance (
float *coord)
const;
2613 float GetTransformedDistance (lfPoint point)
const;
2615 static void ModifyCoord_TCA_Linear (
void *data,
float *iocoord,
int count);
2616 static void ModifyCoord_UnTCA_Poly3 (
void *data,
float *iocoord,
int count);
2617 static void ModifyCoord_TCA_Poly3 (
void *data,
float *iocoord,
int count);
2618 static void ModifyCoord_TCA_ACM (
void *data,
float *iocoord,
int count);
2620 static void ModifyCoord_UnDist_Poly3 (
void *data,
float *iocoord,
int count);
2621 static void ModifyCoord_Dist_Poly3 (
void *data,
float *iocoord,
int count);
2622 #ifdef VECTORIZATION_SSE
2623 static void ModifyCoord_Dist_Poly3_SSE (
void *data,
float *iocoord,
int count);
2625 static void ModifyCoord_UnDist_Poly5 (
void *data,
float *iocoord,
int count);
2626 static void ModifyCoord_Dist_Poly5 (
void *data,
float *iocoord,
int count);
2627 static void ModifyCoord_UnDist_PTLens (
void *data,
float *iocoord,
int count);
2628 static void ModifyCoord_Dist_PTLens (
void *data,
float *iocoord,
int count);
2629 #ifdef VECTORIZATION_SSE
2630 static void ModifyCoord_UnDist_PTLens_SSE (
void *data,
float *iocoord,
int count);
2631 static void ModifyCoord_Dist_PTLens_SSE (
void *data,
float *iocoord,
int count);
2633 static void ModifyCoord_Dist_ACM (
void *data,
float *iocoord,
int count);
2634 static void ModifyCoord_Geom_FishEye_Rect (
void *data,
float *iocoord,
int count);
2635 static void ModifyCoord_Geom_Panoramic_Rect (
void *data,
float *iocoord,
int count);
2636 static void ModifyCoord_Geom_ERect_Rect (
void *data,
float *iocoord,
int count);
2637 static void ModifyCoord_Geom_Rect_FishEye (
void *data,
float *iocoord,
int count);
2638 static void ModifyCoord_Geom_Panoramic_FishEye (
void *data,
float *iocoord,
int count);
2639 static void ModifyCoord_Geom_ERect_FishEye (
void *data,
float *iocoord,
int count);
2640 static void ModifyCoord_Geom_Rect_Panoramic (
void *data,
float *iocoord,
int count);
2641 static void ModifyCoord_Geom_FishEye_Panoramic (
void *data,
float *iocoord,
int count);
2642 static void ModifyCoord_Geom_ERect_Panoramic (
void *data,
float *iocoord,
int count);
2643 static void ModifyCoord_Geom_Rect_ERect (
void *data,
float *iocoord,
int count);
2644 static void ModifyCoord_Geom_FishEye_ERect (
void *data,
float *iocoord,
int count);
2645 static void ModifyCoord_Geom_Panoramic_ERect (
void *data,
float *iocoord,
int count);
2646 static void ModifyCoord_Geom_Orthographic_ERect (
void *data,
float *iocoord,
int count);
2647 static void ModifyCoord_Geom_ERect_Orthographic (
void *data,
float *iocoord,
int count);
2648 static void ModifyCoord_Geom_Stereographic_ERect (
void *data,
float *iocoord,
int count);
2649 static void ModifyCoord_Geom_ERect_Stereographic (
void *data,
float *iocoord,
int count);
2650 static void ModifyCoord_Geom_Equisolid_ERect (
void *data,
float *iocoord,
int count);
2651 static void ModifyCoord_Geom_ERect_Equisolid (
void *data,
float *iocoord,
int count);
2652 static void ModifyCoord_Geom_Thoby_ERect (
void *data,
float *iocoord,
int count);
2653 static void ModifyCoord_Geom_ERect_Thoby (
void *data,
float *iocoord,
int count);
2654 static void ModifyCoord_Perspective_Correction (
void *data,
float *iocoord,
int count);
2655 static void ModifyCoord_Perspective_Distortion (
void *data,
float *iocoord,
int count);
2656 #ifdef VECTORIZATION_SSE
2657 static void ModifyColor_DeVignetting_PA_SSE (
2658 void *data,
float _x,
float _y,
lf_f32 *pixels,
int comp_role,
int count);
2660 #ifdef VECTORIZATION_SSE2
2661 static void ModifyColor_DeVignetting_PA_SSE2 (
2662 void *data,
float _x,
float _y,
lf_u16 *pixels,
int comp_role,
int count);
2665 template<
typename T>
static void ModifyColor_Vignetting_PA (
2666 void *data,
float x,
float y, T *rgb,
int comp_role,
int count);
2667 template<
typename T>
static void ModifyColor_DeVignetting_PA (
2668 void *data,
float x,
float y, T *rgb,
int comp_role,
int count);
2670 static void ModifyCoord_Scale (
void *data,
float *iocoord,
int count);
2674 double Width, Height;
2683 double CenterX, CenterY;
2685 double NormScale, NormUnScale;
2707 const
lfLens* lens,
float imgfocal,
float imgcrop,
int imgwidth,
int imgheight,
lfPixelFormat pixel_format,
bool reverse);
2723 lfModifier *modifier,
float aperture,
float distance);
2731 lfModifier *modifier,
float *x,
float *y,
int count,
float d);
2742 lfModifier *modifier,
float xu,
float yu,
int width,
int height,
float *res);
2746 lfModifier *modifier,
void *pixels,
float x,
float y,
int width,
int height,
2747 int comp_role,
int row_stride);
2751 lfModifier *modifier,
float xu,
float yu,
int width,
int height,
float *res);
2755 lfModifier *modifier,
float xu,
float yu,
int width,
int height,
float *res);
lfMLstr lf_mlstr_dup(const lfMLstr str)
Create a complete copy of a multi-language string.
unsigned char lf_u8
Definition: lensfun.h:141
char * lfMLstr
Definition: lensfun.h:125
unsigned short lf_u16
Definition: lensfun.h:143
const char * lf_mlstr_get(const lfMLstr str)
Get a string corresponding to current locale from a multi-language string.
#define LF_EXPORT
This macro expands to an appropriate symbol visibility declaration.
Definition: lensfun.h:81
double lf_f64
Definition: lensfun.h:149
#define DEPRECATED
For marking deprecated functions, see http://stackoverflow.com/a/21265197.
Definition: lensfun.h:108
unsigned int lf_u32
Definition: lensfun.h:145
float lf_f32
Definition: lensfun.h:147
#define cbool
C-compatible bool type; don't bother to define Yet Another Boolean Type.
Definition: lensfun.h:115
lfMLstr lf_mlstr_add(lfMLstr str, const char *lang, const char *trstr)
Add a new translated string to a multi-language string.
lfError
Definition: lensfun.h:129
@ LF_NO_ERROR
Definition: lensfun.h:131
@ LF_NO_DATABASE
Definition: lensfun.h:135
@ LF_WRONG_FORMAT
Definition: lensfun.h:133
void lf_camera_copy(lfCamera *dest, const lfCamera *source)
Copy the data from one lfCamera structure into another.
cbool lf_camera_check(lfCamera *camera)
lfCamera * lf_camera_create()
Create a new camera object.
void lf_camera_destroy(lfCamera *camera)
Destroy a lfCamera object.
lfModifier * lf_modifier_create(const lfLens *lens, float imgfocal, float imgcrop, int imgwidth, int imgheight, lfPixelFormat pixel_format, bool reverse)
cbool lf_modifier_apply_subpixel_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
void lf_modifier_destroy(lfModifier *modifier)
cbool lf_modifier_apply_color_modification(lfModifier *modifier, void *pixels, float x, float y, int width, int height, int comp_role, int row_stride)
int lf_modifier_enable_tca_correction(lfModifier *modifier)
int lf_modifier_enable_vignetting_correction(lfModifier *modifier, float aperture, float distance)
cbool lf_modifier_enable_projection_transform(lfModifier *modifier, lfLensType target_projection)
float lf_modifier_get_auto_scale(lfModifier *modifier, cbool reverse)
int lf_modifier_enable_perspective_correction(lfModifier *modifier, float *x, float *y, int count, float d)
cbool lf_modifier_apply_geometry_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
cbool lf_modifier_apply_subpixel_geometry_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
int lf_modifier_enable_distortion_correction(lfModifier *modifier)
int lf_modifier_enable_scaling(lfModifier *modifier, float scale)
int lf_modifier_get_mod_flags(lfModifier *modifier)
lfComponentRole
These constants define the role of every pixel component, four bits each. "pixel" refers here to a se...
Definition: lensfun.h:1968
lfPixelFormat
A list of pixel formats supported by internal colour callbacks.
Definition: lensfun.h:1949
@ LF_MODIFY_TCA
Definition: lensfun.h:1931
@ LF_MODIFY_VIGNETTING
Definition: lensfun.h:1933
@ LF_MODIFY_GEOMETRY
Definition: lensfun.h:1938
@ LF_MODIFY_DISTORTION
Definition: lensfun.h:1936
@ LF_MODIFY_PERSPECTIVE
Definition: lensfun.h:1942
@ LF_MODIFY_SCALE
Definition: lensfun.h:1940
@ LF_MODIFY_ALL
Definition: lensfun.h:1944
@ LF_CR_NEXT
Definition: lensfun.h:1980
@ LF_CR_END
Definition: lensfun.h:1973
@ LF_CR_INTENSITY
Definition: lensfun.h:1984
@ LF_CR_RED
Definition: lensfun.h:1986
@ LF_CR_UNKNOWN
Definition: lensfun.h:1982
@ LF_CR_GREEN
Definition: lensfun.h:1988
@ LF_CR_BLUE
Definition: lensfun.h:1990
@ LF_PF_U16
Definition: lensfun.h:1953
@ LF_PF_F64
Definition: lensfun.h:1959
@ LF_PF_U8
Definition: lensfun.h:1951
@ LF_PF_U32
Definition: lensfun.h:1955
@ LF_PF_F32
Definition: lensfun.h:1957
const lfCamera ** lf_db_find_cameras(const lfDatabase *db, const char *maker, const char *model)
lfError lf_db_save_str(const lfDatabase *db, char **xml, size_t *data_size)
lfError lf_db_load_path(lfDatabase *db, const char *pathname)
const char *const lf_db_system_updates_location
const lfLens *const * lf_db_get_lenses(lfDatabase *db)
lfError lf_db_load(lfDatabase *db)
const lfCamera *const * lf_db_get_cameras(lfDatabase *db)
lfError lf_db_save_all(const lfDatabase *db, const char *filename)
lfDatabase * lf_db_create(void)
Create a new empty database object.
lfError lf_db_load_str(lfDatabase *db, const char *xml, size_t data_size)
long int lf_db_read_timestamp(const char *dirname)
const lfMount *const * lf_db_get_mounts(lfDatabase *db)
const lfLens ** lf_db_find_lenses(const lfDatabase *db, const lfCamera *camera, const char *maker, const char *lens, int sflags)
const char * lf_db_mount_name(const lfDatabase *db, const char *mount)
const lfMount * lf_db_find_mount(const lfDatabase *db, const char *mount)
const char *const lf_db_user_location
const char *const lf_db_system_location
const lfCamera ** lf_db_find_cameras_ext(const lfDatabase *db, const char *maker, const char *model, int sflags)
const char *const lf_db_user_updates_location
void lf_db_destroy(lfDatabase *db)
Destroy the database object.
@ LF_SEARCH_LOOSE
This flag selects a looser search algorithm resulting in more results (still sorted by score).
Definition: lensfun.h:1507
@ 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:1519
lfLens * lf_lens_create()
Create a new lens object.
void lf_lens_add_calib_crop(lfLens *lens, const lfLensCalibCrop *cc)
lfTCAModel
The Lensfun library supports several models for lens lateral chromatic aberrations (also called trans...
Definition: lensfun.h:645
void lf_lens_add_calib_vignetting(lfLens *lens, const lfLensCalibVignetting *vc)
cbool lf_lens_check(lfLens *lens)
void lf_lens_add_calib_distortion(lfLens *lens, const lfLensCalibDistortion *dc)
void lf_lens_destroy(lfLens *lens)
Destroy a lfLens object.
cbool lf_lens_interpolate_crop(const lfLens *lens, float crop, float focal, lfLensCalibCrop *res)
cbool lf_lens_interpolate_distortion(const lfLens *lens, float crop, float focal, lfLensCalibDistortion *res)
lfVignettingModel
The Lensfun library supports several models for lens vignetting correction.
Definition: lensfun.h:742
void lf_lens_add_mount(lfLens *lens, const char *val)
const char * lf_get_crop_desc(enum lfCropMode mode, const char **details, const lfParameter ***params)
void lf_lens_guess_parameters(lfLens *lens)
const char * lf_get_lens_type_desc(enum lfLensType type, const char **details)
lfCropMode
Different crop modes.
Definition: lensfun.h:799
cbool lf_lens_interpolate_tca(const lfLens *lens, float crop, float focal, lfLensCalibTCA *res)
const char * lf_get_tca_model_desc(enum lfTCAModel model, const char **details, const lfParameter ***params)
lfDistortionModel
The Lensfun library implements several lens distortion models. This enum lists them.
Definition: lensfun.h:528
void lf_lens_remove_calibrations(lfLens *lens)
const char *const * lf_lens_get_mount_names(const lfLens *lens)
void lf_lens_copy(lfLens *dest, const lfLens *source)
Copy the data from one lfLens structure into another.
lfLensType
Lens type. See Change of projection for further information.
Definition: lensfun.h:957
const char * lf_get_vignetting_model_desc(enum lfVignettingModel model, const char **details, const lfParameter ***params)
void lf_lens_add_calib_tca(lfLens *lens, const lfLensCalibTCA *tcac)
int lf_lens_available_modifications(lfLens *lens, float crop)
const char * lf_get_distortion_model_desc(enum lfDistortionModel model, const char **details, const lfParameter ***params)
cbool lf_lens_interpolate_vignetting(const lfLens *lens, float crop, float focal, float aperture, float distance, lfLensCalibVignetting *res)
@ LF_TCA_MODEL_NONE
No TCA correction data is known.
Definition: lensfun.h:647
@ LF_TCA_MODEL_LINEAR
Linear lateral chromatic aberrations model.
Definition: lensfun.h:659
@ LF_TCA_MODEL_POLY3
Third order polynomial.
Definition: lensfun.h:671
@ LF_TCA_MODEL_ACM
Adobe camera model for TCA. The coordinate system is different here. Everything is measured in units ...
Definition: lensfun.h:699
@ LF_VIGNETTING_MODEL_PA
Pablo D'Angelo vignetting model (which is a more general variant of the law).
Definition: lensfun.h:754
@ LF_VIGNETTING_MODEL_ACM
Adobe's vignetting model. It differs from D'Angelo's model only in the coordinate system....
Definition: lensfun.h:765
@ LF_VIGNETTING_MODEL_NONE
No vignetting correction data is known.
Definition: lensfun.h:744
@ LF_CROP_RECTANGLE
use a rectangular crop
Definition: lensfun.h:803
@ LF_CROP_CIRCLE
use a circular crop, e.g. for circular fisheye images
Definition: lensfun.h:805
@ LF_NO_CROP
no crop at all
Definition: lensfun.h:801
@ LF_DIST_MODEL_POLY5
5th order polynomial model.
Definition: lensfun.h:547
@ LF_DIST_MODEL_NONE
Distortion parameters are unknown.
Definition: lensfun.h:530
@ LF_DIST_MODEL_ACM
Adobe Camera Model. The coordinate system is different here. Everything is measured in units of the f...
Definition: lensfun.h:572
@ LF_DIST_MODEL_PTLENS
PTLens model, which is also used by Hugin.
Definition: lensfun.h:555
@ LF_DIST_MODEL_POLY3
3rd order polynomial model, which is a subset of the PTLens model.
Definition: lensfun.h:538
@ LF_FISHEYE
Equidistant fisheye.
Definition: lensfun.h:970
@ LF_FISHEYE_EQUISOLID
Equisolid fisheye.
Definition: lensfun.h:990
@ LF_FISHEYE_THOBY
Fisheye as measured by Thoby (for Nikkor 10.5).
Definition: lensfun.h:996
@ LF_UNKNOWN
Unknown lens type.
Definition: lensfun.h:959
@ LF_FISHEYE_ORTHOGRAPHIC
Orthographic fisheye.
Definition: lensfun.h:986
@ LF_EQUIRECTANGULAR
Equirectangular.
Definition: lensfun.h:984
@ LF_RECTILINEAR
Rectilinear lens.
Definition: lensfun.h:964
@ LF_FISHEYE_STEREOGRAPHIC
Stereographic fisheye.
Definition: lensfun.h:988
@ LF_PANORAMIC
Panoramic (cylindrical)
Definition: lensfun.h:977
lfMount * lf_mount_create()
Create a new mount object.
void lf_mount_destroy(lfMount *mount)
Destroy a lfMount object.
void lf_mount_add_compat(lfMount *mount, const char *val)
void lf_mount_copy(lfMount *dest, const lfMount *source)
Copy the data from one lfMount structure into another.
cbool lf_mount_check(lfMount *mount)
const char *const * lf_mount_get_compats(lfMount *mount)
#define C_TYPEDEF(t, c)
Definition: lensfun.h:45
Camera data. Unknown fields are set to NULL.
Definition: lensfun.h:355
lfMLstr Model
Model name (ex: "Rolleiflex SL35") – same as in EXIF.
Definition: lensfun.h:359
lfMLstr Variant
Camera variant. Some cameras use same EXIF id for different models.
Definition: lensfun.h:361
~lfCamera()
Destroy a camera object. All allocated fields are freed.
int Score
Camera matching score, used while searching: not actually a camera parameter.
Definition: lensfun.h:367
bool Check()
Check if a camera object is valid.
lfMLstr Maker
Camera maker (ex: "Rollei") – same as in EXIF.
Definition: lensfun.h:357
void SetVariant(const char *val, const char *lang=NULL)
Add a string to camera variant.
lfCamera(const lfCamera &other)
lfCamera()
Initialize a new camera object. All fields are set to 0.
void SetMaker(const char *val, const char *lang=NULL)
Add a string to camera maker.
char * Mount
Camera mount type (ex: "QBM")
Definition: lensfun.h:363
void SetMount(const char *val)
Set the value for camera Mount.
void SetModel(const char *val, const char *lang=NULL)
Add a string to camera model.
float CropFactor
Camera crop factor (ex: 1.0). Must be defined.
Definition: lensfun.h:365
A lens database object.
Definition: lensfun.h:1536
~lfDatabase()
Database object destructor.
lfError Save(const char *filename) const
Save the whole database to a file.
const lfMount * FindMount(const char *mount) const
Return the lfMount structure given the (basic) mount name.
void AddMount(lfMount *mount)
Add a mount to the database.
const lfCamera ** FindCameras(const char *maker, const char *model) const
Find a set of cameras that fit given criteria.
static const char *const SystemLocation
System lens database directory (something like "/usr/share/lensfun")
Definition: lensfun.h:1550
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....
lfError Save(char *&xml, size_t &data_size) const
Save the database into a XML char string. The memory of the received char string has to be released w...
DEPRECATED char * UserUpdatesDir
Home lens database directory for automatic updates (deprecated). Replaced by lfDatabase::UserUpdatesL...
Definition: lensfun.h:1540
lfDatabase()
Database object constructor.
static long int ReadTimestamp(const char *dirname)
Scans for the timestamp of a Lensfun database.
static const char *const UserLocation
Home lens database directory (something like "~/.local/share/lensfun")
Definition: lensfun.h:1545
static const char *const UserUpdatesLocation
Home lens database directory for automatic updates (something like "~/.local/share/lensfun/updates")
Definition: lensfun.h:1548
DEPRECATED char * HomeDataDir
Home lens database directory (deprecated). Replaced by lfDatabase::UserLocation.
Definition: lensfun.h:1538
void AddCamera(lfCamera *camera)
Add a camera to the database.
const char * MountName(const char *mount) const
Get the name of a mount in current locale.
const lfCamera *const * GetCameras()
Retrieve a full list of cameras.
const lfLens *const * GetLenses()
Retrieve a full list of lenses.
const lfCamera ** FindCamerasExt(const char *maker, const char *model, int sflags=0) const
Searches all translations of camera maker and model.
void AddLens(lfLens *lens)
Add a lens to the database.
lfError Load()
Find and load the lens database.
static const char *const SystemUpdatesLocation
System lens database directory for automatic updates (something like "/var/lib/lensfun-updates")
Definition: lensfun.h:1553
const lfMount *const * GetMounts()
Retrieve a full list of mounts.
lfError Load(const char *xml, size_t data_size)
Load a database from a XML char string.
lfError Load(const char *pathname)
Load the database from specific path (directory or file).
Lens calibration attributes.
Definition: lensfun.h:497
float AspectRatio
Definition: lensfun.h:501
float CropFactor
Definition: lensfun.h:499
Struct to save image crop, which can depend on the focal length.
Definition: lensfun.h:814
lfLensCalibAttributes CalibAttr
Pointer to the calibration settings (currently unused).
Definition: lensfun.h:829
Lens distortion calibration data.
Definition: lensfun.h:584
float Focal
Nominal focal length in mm at which this calibration data was taken.
Definition: lensfun.h:589
lfLensCalibAttributes CalibAttr
Calibration settings (currently unused).
Definition: lensfun.h:626
cbool RealFocalMeasured
Whether the real focal length was actually measured.
Definition: lensfun.h:622
float RealFocal
Real focal length in mm for this nominal focal length.
Definition: lensfun.h:619
Struct to save calibrated field of view, which can depends on the focal length (DEPRECATED)
Definition: lensfun.h:842
float FieldOfView
Field of view for given images.
Definition: lensfun.h:854
float Focal
Definition: lensfun.h:844
lfLensCalibAttributes CalibAttr
Pointer to the calibration settings (currently unused).
Definition: lensfun.h:856
Laterlal chromatic aberrations calibration data.
Definition: lensfun.h:712
lfLensCalibAttributes CalibAttr
Pointer to the calibration settings (currently unused).
Definition: lensfun.h:720
float Focal
Focal length in mm at which this calibration data was taken.
Definition: lensfun.h:716
Lens vignetting calibration data.
Definition: lensfun.h:778
lfLensCalibAttributes CalibAttr
Pointer to the calibration settings (currently unused).
Definition: lensfun.h:790
float Distance
Focus distance in meters.
Definition: lensfun.h:786
float Aperture
Aperture (f-number) at which this calibration data was taken.
Definition: lensfun.h:784
float Focal
Focal length in mm at which this calibration data was taken.
Definition: lensfun.h:782
A set of calibration data.
Definition: lensfun.h:869
lfLensCalibAttributes Attributes
Definition: lensfun.h:871
Lens data. Unknown fields are set to NULL or 0.
Definition: lensfun.h:1011
DEPRECATED lfLensCalibVignetting ** CalibVignetting
Definition: lensfun.h:1049
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 ...
const lfLensCalibrationSet *const * GetCalibrationSets() const
Get a list of all calibration sets.
lfMLstr Model
Definition: lensfun.h:1015
void GuessParameters()
This method fills some fields if they are missing but can be derived from other fields.
bool Check()
Check if a lens object is valid.
void AddMount(const char *val)
Add a new mount type to this lens.
DEPRECATED lfLensCalibDistortion ** CalibDistortion
Definition: lensfun.h:1045
DEPRECATED float AspectRatio
Definition: lensfun.h:1043
int Score
Definition: lensfun.h:1055
lfMLstr Maker
Definition: lensfun.h:1013
void AddCalibDistortion(const lfLensCalibDistortion *lcd)
Add a new distortion calibration structure to the pool.
float CenterY
Definition: lensfun.h:1039
lfLens(const lfLens &other)
bool InterpolateDistortion(float crop, float focal, lfLensCalibDistortion &res) const
Interpolate lens geometry distortion data for given focal length and crop factor.
void RemoveCalibrations()
Remove all calibrations from the lens.
bool InterpolateVignetting(float crop, float focal, float aperture, float distance, lfLensCalibVignetting &res) const
Interpolate lens vignetting model parameters for given focal length, aperture, and focus distance.
DEPRECATED float CropFactor
Definition: lensfun.h:1041
bool InterpolateTCA(float crop, float focal, lfLensCalibTCA &res) const
Interpolate lens TCA calibration data for given focal length.
void SetModel(const char *val, const char *lang=NULL)
Add a string to camera model.
void AddCalibCrop(const lfLensCalibCrop *lcc)
Add a new lens crop structure to the pool.
void SetMaker(const char *val, const char *lang=NULL)
Add a string to camera maker.
DEPRECATED char ** Mounts
Definition: lensfun.h:1025
float MinFocal
Definition: lensfun.h:1017
lfLens()
Create a new lens object, initializing all fields to default values.
float MaxFocal
Definition: lensfun.h:1019
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.
void AddCalibVignetting(const lfLensCalibVignetting *lcv)
Add a new vignetting calibration structure to the pool.
bool InterpolateCrop(float crop, float focal, lfLensCalibCrop &res) const
Interpolate lens crop data for given focal length.
float MinAperture
Definition: lensfun.h:1021
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 ...
DEPRECATED lfLensCalibTCA ** CalibTCA
Definition: lensfun.h:1047
int AvailableModifications(float crop) const
Get a flag with the available modifications for this lens considering the image crop factor.
DEPRECATED lfLensCalibFov ** CalibFov
Definition: lensfun.h:1053
float MaxAperture
Definition: lensfun.h:1023
float CenterX
Definition: lensfun.h:1037
void AddCalibTCA(const lfLensCalibTCA *lctca)
Add a new transversal chromatic aberration calibration structure to the pool.
DEPRECATED void AddCalibFov(const lfLensCalibFov *lcf)
Add a new lens fov structure to the pool.
const char *const * GetMountNames() const
Get a list of all mount names.
~lfLens()
Destroy this and all associated objects.
DEPRECATED lfLensCalibCrop ** CalibCrop
Definition: lensfun.h:1051
lfLensType Type
Definition: lensfun.h:1027
static const char * GetLensTypeDesc(lfLensType type, const char **details)
Get the human-readable lens type name and a short description of this lens type.
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...
A modifier object contains optimized data required to rectify a image.
Definition: lensfun.h:2109
int EnableTCACorrection()
Enable TCA correction.
int EnableScaling(float scale)
Enable image scaling.
int EnableVignettingCorrection(const lfLensCalibVignetting &lcv)
Enable vignetting correction.
int EnableDistortionCorrection()
Enable distortion correction.
bool ApplySubpixelGeometryDistortion(float xu, float yu, int width, int height, float *res) const
Apply stage 2 & 3 in one step.
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.
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.
~lfModifier()
Modifier object destructor.
int EnableDistortionCorrection(const lfLensCalibDistortion &lcd)
Enable distortion correction.
int EnableProjectionTransform(lfLensType target_projection)
Enable projection transform.
int EnableVignettingCorrection(float aperture, float distance)
Enable vignetting correction.
int GetModFlags()
Return the current set of LF_MODIFY_XXX flags.
bool ApplySubpixelDistortion(float xu, float yu, int width, int height, float *res) const
Image correction step 3: apply subpixel distortions.
lfModifier(const lfLens *lens, float imgfocal, float imgcrop, int imgwidth, int imgheight, lfPixelFormat pixel_format, bool reverse=false)
Create an empty image modifier object.
int EnableTCACorrection(const lfLensCalibTCA &lctca)
Enable TCA correction.
float GetAutoScale(bool reverse)
Compute the automatic scale factor for the image.
int EnablePerspectiveCorrection(float *x, float *y, int count, float d)
Enable the perspective correction.
This structure contains everything specific to a camera mount.
Definition: lensfun.h:219
void AddCompat(const char *val)
Add a mount name to the list of compatible mounts.
bool Check()
Check if a mount object is valid.
lfMount()
Initialize a new mount object. All fields are set to 0.
DEPRECATED char ** Compat
Definition: lensfun.h:227
const char *const * GetCompats() const
Return a list of compatible mounts.
lfMount(const lfMount &other)
lfMLstr Name
Camera mount name.
Definition: lensfun.h:225
void SetName(const char *val, const char *lang=NULL)
Add a string to mount name.
~lfMount()
Destroy a mount object. All allocated fields are freed.
This structure describes a single parameter for some lens model.
Definition: lensfun.h:940
const char * Name
Parameter name (something like 'k', 'k3', 'omega' etc.)
Definition: lensfun.h:942
float Max
Maximal value that has sense.
Definition: lensfun.h:946
float Min
Minimal value that has sense.
Definition: lensfun.h:944
float Default
Default value for the parameter.
Definition: lensfun.h:948