lensfun  0.3.1.0
lensfun.h
Go to the documentation of this file.
1 /* -*- mode:c++ -*- */
2 /*
3  LensFun - a library for maintaining a database of photographical lenses,
4  and providing the means to correct some of the typical lens distortions.
5  Copyright (C) 2007 by Andrew Zabolotny
6 
7  This library is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Library General Public
9  License as published by the Free Software Foundation; either
10  version 2 of the License, or (at your option) any later version.
11 
12  This library is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  Library General Public License for more details.
16 
17  You should have received a copy of the GNU Library General Public
18  License along with this library; if not, write to the Free
19  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 */
21 
22 #ifndef __LENSFUN_H__
23 #define __LENSFUN_H__
24 
25 #include <stddef.h>
26 
27 #ifdef __cplusplus
28 extern "C" {
30 # define C_TYPEDEF(t,c)
31 #else
32 # define C_TYPEDEF(t,c) typedef t c c;
33 #endif
34 
40 /*----------------------------------------------------------------------------*/
41 
48 #define LF_VERSION_MAJOR 0
50 #define LF_VERSION_MINOR 3
52 #define LF_VERSION_MICRO 1
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)
58 
60 #define LF_MAX_DATABASE_VERSION 1
61 
62 #if defined CONF_LENSFUN_STATIC
63 # define LF_EXPORT
65 #else
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")))
71 # else
72 # error "I don't know how to change symbol visibility for your compiler"
73 # endif
74 # else
75 # if defined PLATFORM_WINDOWS || defined _MSC_VER
76 # define LF_EXPORT __declspec(dllimport)
77 # else
78 # define LF_EXPORT
79 # endif
80 # endif
81 #endif
82 
83 #ifndef CONF_LENSFUN_INTERNAL
84 # ifdef __GNUC__
86 # define DEPRECATED __attribute__((deprecated))
87 # elif defined(_MSC_VER)
88 # define DEPRECATED __declspec(deprecated)
89 # else
90 # pragma message("WARNING: You need to implement DEPRECATED for this compiler")
91 # define DEPRECATED
92 # endif
93 #else
94 # define DEPRECATED
95 #endif
96 
98 #define cbool int
99 
108 typedef char *lfMLstr;
109 
112 {
117 };
118 
119 C_TYPEDEF (enum, lfError)
120 
121 
129 LF_EXPORT void lf_free (void *data);
130 
139 LF_EXPORT const char *lf_mlstr_get (const lfMLstr str);
140 
157 LF_EXPORT lfMLstr lf_mlstr_add (lfMLstr str, const char *lang, const char *trstr);
158 
167 LF_EXPORT lfMLstr lf_mlstr_dup (const lfMLstr str);
168 
171 /*----------------------------------------------------------------------------*/
172 
189 {
195  lfMLstr Name;
197  char **Compat;
198 
199 #ifdef __cplusplus
200 
203  lfMount ();
204 
208  lfMount &operator = (const lfMount &other);
209 
213  ~lfMount ();
214 
225  void SetName (const char *val, const char *lang = NULL);
226 
232  void AddCompat (const char *val);
233 
239  bool Check ();
240 #endif
241 };
242 
243 C_TYPEDEF (struct, lfMount)
244 
245 
253 
263 LF_EXPORT void lf_mount_destroy (lfMount *mount);
264 
274 LF_EXPORT void lf_mount_copy (lfMount *dest, const lfMount *source);
275 
278 
281 /*----------------------------------------------------------------------------*/
282 
301 {
303  lfMLstr Maker;
305  lfMLstr Model;
307  lfMLstr Variant;
309  char *Mount;
311  float CropFactor;
313  int Score;
314 
315 #ifdef __cplusplus
316 
319  lfCamera ();
320 
324  lfCamera (const lfCamera &other);
325 
329  ~lfCamera ();
330 
334  lfCamera &operator = (const lfCamera &other);
335 
346  void SetMaker (const char *val, const char *lang = NULL);
347 
358  void SetModel (const char *val, const char *lang = NULL);
359 
370  void SetVariant (const char *val, const char *lang = NULL);
371 
377  void SetMount (const char *val);
378 
384  bool Check ();
385 #endif
386 };
387 
388 C_TYPEDEF (struct, lfCamera)
389 
390 
398 
408 LF_EXPORT void lf_camera_destroy (lfCamera *camera);
409 
419 LF_EXPORT void lf_camera_copy (lfCamera *dest, const lfCamera *source);
420 
423 
426 /*----------------------------------------------------------------------------*/
427 
449 {
477 };
478 
480 
481 
488 {
490  enum lfDistortionModel Model;
492  float Focal;
494  float Terms [3];
495 };
496 
498 
499 
513 {
528 
541 };
542 
543 C_TYPEDEF (enum, lfTCAModel)
544 
545 
553 {
555  enum lfTCAModel Model;
557  float Focal;
559  float Terms [6];
560 };
561 
562 C_TYPEDEF (struct, lfLensCalibTCA)
563 
564 
581 {
594 };
595 
597 
598 
606 {
608  enum lfVignettingModel Model;
610  float Focal;
612  float Aperture;
614  float Distance;
616  float Terms [3];
617 };
618 
620 
621 
625 {
632 };
633 
634 C_TYPEDEF(enum, lfCropMode)
635 
636 
640 {
642  float Focal;
644  enum lfCropMode CropMode;
653  float Crop [4];
654 };
655 
656 C_TYPEDEF (struct, lfLensCalibCrop)
657 
658 
666 {
668  float Focal;
678  float FieldOfView;
679 };
680 
681 C_TYPEDEF (struct, lfLensCalibFov)
682 
683 
688 {
690  float Focal;
702  float RealFocal;
703 };
704 
706 
707 
711 {
713  const char *Name;
715  float Min;
717  float Max;
719  float Default;
720 };
721 
722 C_TYPEDEF (struct, lfParameter)
723 
724 
728 {
768 };
769 
770 C_TYPEDEF (enum, lfLensType)
771 
772 
783 {
785  lfMLstr Maker;
787  lfMLstr Model;
789  float MinFocal;
791  float MaxFocal;
793  float MinAperture;
795  float MaxAperture;
797  char **Mounts;
807  float CenterX;
809  float CenterY;
811  float CropFactor;
813  float AspectRatio;
829  int Score;
830 
831 #ifdef __cplusplus
832 
835  lfLens ();
836 
840  lfLens (const lfLens &other);
841 
845  ~lfLens ();
846 
850  lfLens &operator = (const lfLens &other);
851 
862  void SetMaker (const char *val, const char *lang = NULL);
863 
874  void SetModel (const char *val, const char *lang = NULL);
875 
883  void AddMount (const char *val);
884 
893  void AddCalibDistortion (const lfLensCalibDistortion *dc);
894 
900  bool RemoveCalibDistortion (int idx);
901 
911  void AddCalibTCA (const lfLensCalibTCA *tcac);
912 
918  bool RemoveCalibTCA (int idx);
919 
928  void AddCalibVignetting (const lfLensCalibVignetting *vc);
929 
935  bool RemoveCalibVignetting (int idx);
936 
945  void AddCalibCrop (const lfLensCalibCrop *cc);
946 
952  bool RemoveCalibCrop (int idx);
953 
965  DEPRECATED void AddCalibFov (const lfLensCalibFov *cf);
966 
976  DEPRECATED bool RemoveCalibFov (int idx);
977 
986  void AddCalibRealFocal (const lfLensCalibRealFocal *cf);
987 
994  bool RemoveCalibRealFocal (int idx);
995 
1004  void GuessParameters ();
1005 
1011  bool Check ();
1012 
1028  static const char *GetDistortionModelDesc (
1029  lfDistortionModel model, const char **details, const lfParameter ***params);
1045  static const char *GetTCAModelDesc (
1046  lfTCAModel model, const char **details, const lfParameter ***params);
1047 
1063  static const char *GetVignettingModelDesc (
1064  lfVignettingModel model, const char **details, const lfParameter ***params);
1065 
1081  static const char *GetCropDesc (
1082  lfCropMode mode, const char **details, const lfParameter ***params);
1083 
1095  static const char *GetLensTypeDesc (lfLensType type, const char **details);
1096 
1104  bool InterpolateDistortion (float focal, lfLensCalibDistortion &res) const;
1105 
1113  bool InterpolateTCA (float focal, lfLensCalibTCA &res) const;
1114 
1128  bool InterpolateVignetting (
1129  float focal, float aperture, float distance, lfLensCalibVignetting &res) const;
1130 
1138  bool InterpolateCrop (float focal, lfLensCalibCrop &res) const;
1139 
1151  DEPRECATED bool InterpolateFov (float focal, lfLensCalibFov &res) const;
1152 
1164  bool InterpolateRealFocal (float focal, lfLensCalibRealFocal &res) const;
1165 #endif
1166 };
1167 
1168 C_TYPEDEF (struct, lfLens)
1169 
1170 
1178 
1188 LF_EXPORT void lf_lens_destroy (lfLens *lens);
1189 
1199 LF_EXPORT void lf_lens_copy (lfLens *dest, const lfLens *source);
1200 
1203 
1206 
1209  enum lfDistortionModel model, const char **details, const lfParameter ***params);
1210 
1212 LF_EXPORT const char *lf_get_tca_model_desc (
1213  enum lfTCAModel model, const char **details, const lfParameter ***params);
1214 
1217  enum lfVignettingModel model, const char **details, const lfParameter ***params);
1218 
1220 LF_EXPORT const char *lf_get_crop_desc (
1221  enum lfCropMode mode, const char **details, const lfParameter ***params);
1222 
1224 LF_EXPORT const char *lf_get_lens_type_desc (
1225  enum lfLensType type, const char **details);
1226 
1228 LF_EXPORT cbool lf_lens_interpolate_distortion (const lfLens *lens, float focal,
1229  lfLensCalibDistortion *res);
1230 
1232 LF_EXPORT cbool lf_lens_interpolate_tca (const lfLens *lens, float focal, lfLensCalibTCA *res);
1233 
1235 LF_EXPORT cbool lf_lens_interpolate_vignetting (const lfLens *lens, float focal, float aperture,
1236  float distance, lfLensCalibVignetting *res);
1237 
1239 LF_EXPORT cbool lf_lens_interpolate_crop (const lfLens *lens, float focal,
1240  lfLensCalibCrop *res);
1241 
1243 DEPRECATED LF_EXPORT cbool lf_lens_interpolate_fov (const lfLens *lens, float focal,
1244  lfLensCalibFov *res);
1245 
1247 LF_EXPORT cbool lf_lens_interpolate_real_focal (const lfLens *lens, float focal,
1248  lfLensCalibRealFocal *res);
1249 
1252 
1255 
1257 LF_EXPORT void lf_lens_add_calib_tca (lfLens *lens, const lfLensCalibTCA *tcac);
1258 
1261 
1264 
1267 
1269 LF_EXPORT void lf_lens_add_calib_crop (lfLens *lens, const lfLensCalibCrop *cc);
1270 
1273 
1276 
1279 
1282 
1285 
1288 /*----------------------------------------------------------------------------*/
1289 
1299 enum
1300 {
1321 };
1322 
1346 {
1352 
1353 #ifdef __cplusplus
1354 
1357  static lfDatabase *Create ();
1358 
1362  void Destroy ();
1363 
1373  lfError Load ();
1374 
1387  lfError Load (const char *filename);
1388 
1403  lfError Load (const char *errcontext, const char *data, size_t data_size);
1404 
1412  lfError Save (const char *filename) const;
1413 
1427  lfError Save (const char *filename,
1428  const lfMount *const *mounts,
1429  const lfCamera *const *cameras,
1430  const lfLens *const *lenses) const;
1431 
1444  static char *Save (const lfMount *const *mounts,
1445  const lfCamera *const *cameras,
1446  const lfLens *const *lenses);
1447 
1472  const lfCamera **FindCameras (const char *maker, const char *model) const;
1473 
1494  const lfCamera **FindCamerasExt (const char *maker, const char *model,
1495  int sflags = 0) const;
1496 
1504  const lfCamera *const *GetCameras () const;
1505 
1543  const lfLens **FindLenses (const lfCamera *camera, const char *maker,
1544  const char *model, int sflags = 0) const;
1545 
1563  const lfLens **FindLenses (const lfLens *lens, int sflags = 0) const;
1564 
1572  const lfLens *const *GetLenses () const;
1573 
1581  const lfMount *FindMount (const char *mount) const;
1582 
1590  const char *MountName (const char *mount) const;
1591 
1599  const lfMount *const *GetMounts () const;
1600 
1601 protected:
1602  /* Prevent user from creating and destroying such objects */
1603  lfDatabase () {}
1604  ~lfDatabase () {}
1605 #endif
1606 };
1607 
1608 C_TYPEDEF (struct, lfDatabase)
1609 
1610 
1621 
1632 
1635 
1637 LF_EXPORT lfError lf_db_load_file (lfDatabase *db, const char *filename);
1638 
1640 LF_EXPORT lfError lf_db_load_data (lfDatabase *db, const char *errcontext,
1641  const char *data, size_t data_size);
1642 
1644 LF_EXPORT lfError lf_db_save_all (const lfDatabase *db, const char *filename);
1645 
1647 LF_EXPORT lfError lf_db_save_file (const lfDatabase *db, const char *filename,
1648  const lfMount *const *mounts,
1649  const lfCamera *const *cameras,
1650  const lfLens *const *lenses);
1651 
1653 LF_EXPORT char *lf_db_save (const lfMount *const *mounts,
1654  const lfCamera *const *cameras,
1655  const lfLens *const *lenses);
1656 
1659  const lfDatabase *db, const char *maker, const char *model);
1660 
1663  const lfDatabase *db, const char *maker, const char *model, int sflags);
1664 
1666 LF_EXPORT const lfCamera *const *lf_db_get_cameras (const lfDatabase *db);
1667 
1670  const lfDatabase *db, const lfCamera *camera, const char *maker,
1671  const char *lens, int sflags);
1672 
1675  const lfDatabase *db, const lfLens *lens, int sflags);
1676 
1678 LF_EXPORT const lfLens *const *lf_db_get_lenses (const lfDatabase *db);
1679 
1681 LF_EXPORT const lfMount *lf_db_find_mount (const lfDatabase *db, const char *mount);
1682 
1684 LF_EXPORT const char *lf_db_mount_name (const lfDatabase *db, const char *mount);
1685 
1687 LF_EXPORT const lfMount *const *lf_db_get_mounts (const lfDatabase *db);
1688 
1691 /*----------------------------------------------------------------------------*/
1692 
1701 enum
1702 {
1704  LF_MODIFY_TCA = 0x00000001,
1706  LF_MODIFY_VIGNETTING = 0x00000002,
1707  /* Value 0x00000004 is deprecated. */
1709  LF_MODIFY_DISTORTION = 0x00000008,
1711  LF_MODIFY_GEOMETRY = 0x00000010,
1713  LF_MODIFY_SCALE = 0x00000020,
1716 };
1717 
1720 {
1731 };
1732 
1733 C_TYPEDEF (enum, lfPixelFormat)
1734 
1735 
1739 {
1762 };
1763 
1764 C_TYPEDEF (enum, lfComponentRole)
1765 
1766 
1767 #define LF_CR_1(a) (LF_CR_ ## a)
1768 
1769 #define LF_CR_2(a,b) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4))
1770 
1771 #define LF_CR_3(a,b,c) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1772  ((LF_CR_ ## c) << 8))
1773 
1774 #define LF_CR_4(a,b,c,d) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1775  ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12))
1776 
1777 #define LF_CR_5(a,b,c,d,e) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1778  ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
1779  ((LF_CR_ ## e) << 16))
1780 
1781 #define LF_CR_6(a,b,c,d,e,f) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1782  ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
1783  ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20))
1784 
1785 #define LF_CR_7(a,b,c,d,e,f,g) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1786  ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
1787  ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20) | \
1788  ((LF_CR_ ## g) << 24))
1789 
1790 #define LF_CR_8(a,b,c,d,e,f,g,h) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1791  ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
1792  ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20) | \
1793  ((LF_CR_ ## g) << 24) | ((LF_CR_ ## h) << 28))
1794 
1810 typedef void (*lfSubpixelCoordFunc) (void *data, float *iocoord, int count);
1811 
1836 typedef void (*lfModifyColorFunc) (void *data, float x, float y,
1837  void *pixels, int comp_role, int count);
1838 
1851 typedef void (*lfModifyCoordFunc) (void *data, float *iocoord, int count);
1852 
1933 {
1934 #ifdef __cplusplus
1935 
1958  static lfModifier *Create (const lfLens *lens, float crop, int width, int height);
1959 
2005  int Initialize (
2006  const lfLens *lens, lfPixelFormat format, float focal, float aperture,
2007  float distance, float scale, lfLensType targeom, int flags, bool reverse);
2008 
2014  void Destroy ();
2015 
2032  void AddCoordCallback (lfModifyCoordFunc callback, int priority,
2033  void *data, size_t data_size);
2034 
2052  void AddSubpixelCallback (lfSubpixelCoordFunc callback, int priority,
2053  void *data, size_t data_size);
2054 
2071  void AddColorCallback (lfModifyColorFunc callback, int priority,
2072  void *data, size_t data_size);
2073 
2088  bool AddSubpixelCallbackTCA (lfLensCalibTCA &model, bool reverse = false);
2089 
2104  bool AddColorCallbackVignetting (lfLensCalibVignetting &model, lfPixelFormat format,
2105  bool reverse = false);
2106 
2120  bool AddCoordCallbackDistortion (lfLensCalibDistortion &model, bool reverse = false);
2121 
2136  bool AddCoordCallbackGeometry (lfLensType from, lfLensType to, float focal);
2137 
2154  bool AddCoordCallbackScale (float scale, bool reverse = false);
2155 
2169  float GetAutoScale (bool reverse);
2170 
2200  bool ApplyColorModification (void *pixels, float x, float y, int width, int height,
2201  int comp_role, int row_stride) const;
2202 
2233  bool ApplyGeometryDistortion (float xu, float yu, int width, int height,
2234  float *res) const;
2235 
2267  bool ApplySubpixelDistortion (float xu, float yu, int width, int height,
2268  float *res) const;
2269 
2300  bool ApplySubpixelGeometryDistortion (float xu, float yu, int width, int height,
2301  float *res) const;
2302 
2303 private:
2334  float GetRealFocalLength (const lfLens *lens, float focal);
2335 
2336 protected:
2337  /* Prevent user from creating and destroying such objects */
2338  lfModifier () {}
2339  ~lfModifier () {}
2340 #elif defined _MSC_VER
2341  /* Sucks, like always */
2342  void *dummy;
2343 #endif
2344 };
2345 
2346 C_TYPEDEF (struct, lfModifier)
2347 
2348 
2350  const lfLens *lens, float crop, int width, int height);
2351 
2353 LF_EXPORT void lf_modifier_destroy (lfModifier *modifier);
2354 
2357  lfModifier *modifier, const lfLens *lens, lfPixelFormat format,
2358  float focal, float aperture, float distance, float scale,
2359  lfLensType targeom, int flags, cbool reverse);
2360 
2363  lfModifier *modifier, lfModifyCoordFunc callback, int priority,
2364  void *data, size_t data_size);
2365 
2368  lfModifier *modifier, lfSubpixelCoordFunc callback, int priority,
2369  void *data, size_t data_size);
2370 
2373  lfModifier *modifier, lfModifyColorFunc callback, int priority,
2374  void *data, size_t data_size);
2375 
2378  lfModifier *modifier, lfLensCalibTCA *model, cbool reverse);
2379 
2382  lfModifier *modifier, lfLensCalibVignetting *model,
2383  lfPixelFormat format, cbool reverse);
2384 
2387  lfModifier *modifier, lfLensCalibDistortion *model, cbool reverse);
2388 
2391  lfModifier *modifier, lfLensType from, lfLensType to, float focal);
2392 
2395  lfModifier *modifier, float scale, cbool reverse);
2396 
2399  lfModifier *modifier, cbool reverse);
2400 
2403  lfModifier *modifier, float xu, float yu, int width, int height, float *res);
2404 
2407  lfModifier *modifier, void *pixels, float x, float y, int width, int height,
2408  int comp_role, int row_stride);
2409 
2412  lfModifier *modifier, float xu, float yu, int width, int height, float *res);
2413 
2416  lfModifier *modifier, float xu, float yu, int width, int height, float *res);
2417 
2420 #undef cbool
2421 
2422 #ifdef __cplusplus
2423 }
2424 #endif
2425 
2426 #endif /* __LENSFUN_H__ */
Panoramic (cylindrical)
Definition: lensfun.h:748
lfError lf_db_load_file(lfDatabase *db, const char *filename)
lfDistortionModel
The lensfun library implements several lens distortion models. This enum lists them.
Definition: lensfun.h:448
float MinAperture
Definition: lensfun.h:793
void(* lfModifyCoordFunc)(void *data, float *iocoord, int count)
A callback function which modifies the coordinates of a strip of pixels.
Definition: lensfun.h:1851
Definition: lensfun.h:1724
Definition: lensfun.h:1753
cbool lf_modifier_apply_subpixel_geometry_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
void lf_lens_add_calib_tca(lfLens *lens, const lfLensCalibTCA *tcac)
const lfCamera ** lf_db_find_cameras(const lfDatabase *db, const char *maker, const char *model)
DEPRECATED void lf_lens_add_calib_fov(lfLens *lens, const lfLensCalibFov *cf)
lfMLstr Maker
Definition: lensfun.h:785
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)
lfLensCalibDistortion ** CalibDistortion
Definition: lensfun.h:817
float FieldOfView
Field of view for given images.
Definition: lensfun.h:678
Rectilinear lens.
Definition: lensfun.h:735
Definition: lensfun.h:1709
lfLensType Type
Definition: lensfun.h:815
This flag makes LensFun to sort the results by focal length, and remove all double lens names...
Definition: lensfun.h:1320
char ** Compat
Definition: lensfun.h:197
lfLensCalibVignetting ** CalibVignetting
Definition: lensfun.h:821
char * UserUpdatesDir
Home lens database directory for automatic updates (something like "~/.local/share/lensfun/updates") ...
Definition: lensfun.h:1351
no crop at all
Definition: lensfun.h:627
Definition: lensfun.h:1730
Definition: lensfun.h:1722
5th order polynomial model.
Definition: lensfun.h:468
lfError
Definition: lensfun.h:111
const char * lf_get_distortion_model_desc(enum lfDistortionModel model, const char **details, const lfParameter ***params)
void lf_lens_guess_parameters(lfLens *lens)
float CenterX
Definition: lensfun.h:807
float CropFactor
Definition: lensfun.h:811
float Focal
Focal length in mm at which this calibration data was taken.
Definition: lensfun.h:610
Laterlal chromatic aberrations calibration data.
Definition: lensfun.h:552
Lens distortion calibration data.
Definition: lensfun.h:487
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:1810
void lf_modifier_add_subpixel_callback(lfModifier *modifier, lfSubpixelCoordFunc callback, int priority, void *data, size_t data_size)
cbool lf_modifier_add_color_callback_vignetting(lfModifier *modifier, lfLensCalibVignetting *model, lfPixelFormat format, cbool reverse)
void lf_modifier_add_coord_callback(lfModifier *modifier, lfModifyCoordFunc callback, int priority, void *data, size_t data_size)
void lf_lens_copy(lfLens *dest, const lfLens *source)
Copy the data from one lfLens structure into another.
void lf_mount_destroy(lfMount *mount)
Destroy a lfMount object.
cbool lf_lens_remove_calib_tca(lfLens *lens, int idx)
cbool lf_lens_remove_calib_vignetting(lfLens *lens, int idx)
Lens data. Unknown fields are set to NULL or 0.
Definition: lensfun.h:782
cbool lf_lens_interpolate_distortion(const lfLens *lens, float focal, lfLensCalibDistortion *res)
lfPixelFormat
A list of pixel formats supported by internal colour callbacks.
Definition: lensfun.h:1719
Definition: lensfun.h:1713
float AspectRatio
Definition: lensfun.h:813
lfVignettingModel
The lensfun library supports several models for lens vignetting correction.
Definition: lensfun.h:580
lfLensCalibTCA ** CalibTCA
Definition: lensfun.h:819
float CenterY
Definition: lensfun.h:809
cbool lf_modifier_add_coord_callback_scale(lfModifier *modifier, float scale, cbool reverse)
This structure contains everything specific to a camera mount.
Definition: lensfun.h:188
float MinFocal
Definition: lensfun.h:789
const char * lf_db_mount_name(const lfDatabase *db, const char *mount)
Stereographic fisheye.
Definition: lensfun.h:759
int Score
Definition: lensfun.h:829
Linear lateral chromatic aberrations model.
Definition: lensfun.h:527
Third order polynomial.
Definition: lensfun.h:540
Definition: lensfun.h:1711
use a circular crop, e.g. for circular fisheye images
Definition: lensfun.h:631
#define cbool
C-compatible bool type; don&#39;t bother to define Yet Another Boolean Type.
Definition: lensfun.h:98
lfMLstr Model
Definition: lensfun.h:787
float Focal
Focal length in mm at which this calibration data was taken.
Definition: lensfun.h:642
cbool lf_modifier_apply_subpixel_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
const lfLens ** lf_db_find_lenses_hd(const lfDatabase *db, const lfCamera *camera, const char *maker, const char *lens, int sflags)
int Score
Camera matching score, used while searching: not actually a camera parameter.
Definition: lensfun.h:313
void lf_free(void *data)
cbool lf_mount_check(lfMount *mount)
float lf_modifier_get_auto_scale(lfModifier *modifier, cbool reverse)
Orthographic fisheye.
Definition: lensfun.h:757
const lfCamera *const * lf_db_get_cameras(const lfDatabase *db)
lfModifier * lf_modifier_new(const lfLens *lens, float crop, int width, int height)
lfLensType
Lens type. See Change of projection for further information.
Definition: lensfun.h:727
Definition: lensfun.h:1706
cbool lf_lens_remove_calib_crop(lfLens *lens, int idx)
float Focal
Definition: lensfun.h:690
PTLens model, which is also used by Hugin.
Definition: lensfun.h:476
Definition: lensfun.h:1755
3rd order polynomial model, which is a subset of the PTLens model.
Definition: lensfun.h:459
use a rectangular crop
Definition: lensfun.h:629
const char * lf_get_tca_model_desc(enum lfTCAModel model, const char **details, const lfParameter ***params)
cbool lf_modifier_add_subpixel_callback_TCA(lfModifier *modifier, lfLensCalibTCA *model, cbool reverse)
const lfMount * lf_db_find_mount(const lfDatabase *db, const char *mount)
#define C_TYPEDEF(t, c)
Definition: lensfun.h:30
Equisolid fisheye.
Definition: lensfun.h:761
Fisheye as measured by Thoby (for Nikkor 10.5).
Definition: lensfun.h:767
const lfMount *const * lf_db_get_mounts(const lfDatabase *db)
float Focal
Focal length in mm at which this calibration data was taken.
Definition: lensfun.h:557
cbool lf_lens_interpolate_crop(const lfLens *lens, float focal, lfLensCalibCrop *res)
Definition: lensfun.h:1757
Definition: lensfun.h:1759
#define LF_EXPORT
This macro expands to an appropiate symbol visibility declaration.
Definition: lensfun.h:64
void lf_camera_destroy(lfCamera *camera)
Destroy a lfCamera object.
lfLens * lf_lens_new()
Create a new lens object.
float Min
Minimal value that has sense.
Definition: lensfun.h:715
float Max
Maximal value that has sense.
Definition: lensfun.h:717
Unknown lens type.
Definition: lensfun.h:730
Struct to save real focal length, which can depends on the (nominal) focal length.
Definition: lensfun.h:687
cbool lf_modifier_apply_color_modification(lfModifier *modifier, void *pixels, float x, float y, int width, int height, int comp_role, int row_stride)
const lfCamera ** lf_db_find_cameras_ext(const lfDatabase *db, const char *maker, const char *model, int sflags)
float RealFocal
Real focal length.
Definition: lensfun.h:702
A modifier object contains optimized data required to rectify a image.
Definition: lensfun.h:1932
cbool lf_camera_check(lfCamera *camera)
Definition: lensfun.h:1744
float CropFactor
Camera crop factor (ex: 1.0). Must be defined.
Definition: lensfun.h:311
const char * lf_mlstr_get(const lfMLstr str)
Get a string corresponding to current locale from a multi-language string.
void lf_camera_copy(lfCamera *dest, const lfCamera *source)
Copy the data from one lfCamera structure into another.
Definition: lensfun.h:116
This flag selects a looser search algorithm resulting in more results (still sorted by score)...
Definition: lensfun.h:1308
float Distance
Focus distance in meters.
Definition: lensfun.h:614
void lf_lens_add_calib_distortion(lfLens *lens, const lfLensCalibDistortion *dc)
void lf_modifier_destroy(lfModifier *modifier)
float Aperture
Aperture (f-number) at which this calibration data was taken.
Definition: lensfun.h:612
#define DEPRECATED
For marking deprecated functions, see http://stackoverflow.com/a/21265197.
Definition: lensfun.h:91
Definition: lensfun.h:1761
cbool lf_modifier_apply_geometry_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
lfCamera * lf_camera_new()
Create a new camera object.
float MaxFocal
Definition: lensfun.h:791
Definition: lensfun.h:1704
void lf_mount_copy(lfMount *dest, const lfMount *source)
Copy the data from one lfMount 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:1738
const char * lf_get_lens_type_desc(enum lfLensType type, const char **details)
char ** Mounts
Definition: lensfun.h:797
Equirectangular.
Definition: lensfun.h:755
Definition: lensfun.h:1751
float Focal
Focal length in mm at which this calibration data was taken.
Definition: lensfun.h:492
float Focal
Definition: lensfun.h:668
cbool lf_lens_interpolate_tca(const lfLens *lens, float focal, lfLensCalibTCA *res)
void lf_lens_destroy(lfLens *lens)
Destroy a lfLens object.
Definition: lensfun.h:1715
const lfLens ** lf_db_find_lenses(const lfDatabase *db, const lfLens *lens, int sflags)
void lf_db_destroy(lfDatabase *db)
Destroy the database object.
Equidistant fisheye.
Definition: lensfun.h:741
lfError lf_db_load_data(lfDatabase *db, const char *errcontext, const char *data, size_t data_size)
cbool lf_modifier_add_coord_callback_geometry(lfModifier *modifier, lfLensType from, lfLensType to, float focal)
void lf_modifier_add_color_callback(lfModifier *modifier, lfModifyColorFunc callback, int priority, void *data, size_t data_size)
Definition: lensfun.h:1726
No TCA correction data is known.
Definition: lensfun.h:515
lfMLstr Model
Model name (ex: "Rolleiflex SL35") – same as in EXIF.
Definition: lensfun.h:305
const char * lf_get_crop_desc(enum lfCropMode mode, const char **details, const lfParameter ***params)
lfLensCalibFov ** CalibFov
Definition: lensfun.h:825
lfMLstr Maker
Camera maker (ex: "Rollei") – same as in EXIF.
Definition: lensfun.h:303
DEPRECATED cbool lf_lens_remove_calib_fov(lfLens *lens, int idx)
Definition: lensfun.h:114
lfDatabase * lf_db_new(void)
Create a new empty database object.
cbool lf_lens_check(lfLens *lens)
const char * lf_get_vignetting_model_desc(enum lfVignettingModel model, const char **details, const lfParameter ***params)
char * Mount
Camera mount type (ex: "QBM")
Definition: lensfun.h:309
char * lfMLstr
Definition: lensfun.h:108
A lens database object.
Definition: lensfun.h:1345
cbool lf_lens_interpolate_real_focal(const lfLens *lens, float focal, lfLensCalibRealFocal *res)
void lf_lens_add_calib_crop(lfLens *lens, const lfLensCalibCrop *cc)
const lfLens *const * lf_db_get_lenses(const lfDatabase *db)
Pablo D&#39;Angelo vignetting model (which is a more general variant of the law).
Definition: lensfun.h:593
Distortion parameters are unknown.
Definition: lensfun.h:451
lfMLstr Name
Camera mount name.
Definition: lensfun.h:195
Lens vignetting calibration data.
Definition: lensfun.h:605
cbool lf_lens_remove_calib_real_focal(lfLens *lens, int idx)
DEPRECATED cbool lf_lens_interpolate_fov(const lfLens *lens, float focal, lfLensCalibFov *res)
lfMLstr lf_mlstr_add(lfMLstr str, const char *lang, const char *trstr)
Add a new translated string to a multi-language string.
No vignetting correction data is known.
Definition: lensfun.h:583
void lf_lens_add_calib_vignetting(lfLens *lens, const lfLensCalibVignetting *vc)
lfError lf_db_save_all(const lfDatabase *db, const char *filename)
cbool lf_lens_interpolate_vignetting(const lfLens *lens, float focal, float aperture, float distance, lfLensCalibVignetting *res)
lfTCAModel
The lensfun library supports several models for lens lateral chromatic aberrations (also called trans...
Definition: lensfun.h:512
cbool lf_modifier_add_coord_callback_distortion(lfModifier *modifier, lfLensCalibDistortion *model, cbool reverse)
float Default
Default value for the parameter.
Definition: lensfun.h:719
void lf_lens_add_calib_real_focal(lfLens *lens, const lfLensCalibRealFocal *cf)
lfMount * lf_mount_new()
Create a new mount object.
lfCropMode
Different crop modes.
Definition: lensfun.h:624
Struct to save calibrated field of view, which can depends on the focal length (DEPRECATED) ...
Definition: lensfun.h:665
lfLensCalibCrop ** CalibCrop
Definition: lensfun.h:823
Camera data. Unknown fields are set to NULL.
Definition: lensfun.h:300
char * lf_db_save(const lfMount *const *mounts, const lfCamera *const *cameras, const lfLens *const *lenses)
lfMLstr lf_mlstr_dup(const lfMLstr str)
Create a complete copy of a multi-language string.
lfMLstr Variant
Camera variant. Some cameras use same EXIF id for different models.
Definition: lensfun.h:307
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:1836
Struct to save image crop, which can depend on the focal length.
Definition: lensfun.h:639
Definition: lensfun.h:1728
lfError lf_db_save_file(const lfDatabase *db, const char *filename, const lfMount *const *mounts, const lfCamera *const *cameras, const lfLens *const *lenses)
const char * Name
Parameter name (something like &#39;k&#39;, &#39;k3&#39;, &#39;omega&#39; etc.)
Definition: lensfun.h:713
This structure describes a single parameter for some lens model.
Definition: lensfun.h:710
lfError lf_db_load(lfDatabase *db)
cbool lf_lens_remove_calib_distortion(lfLens *lens, int idx)
char * HomeDataDir
Home lens database directory (something like "~/.local/share/lensfun")
Definition: lensfun.h:1348
lfLensCalibRealFocal ** CalibRealFocal
Definition: lensfun.h:827
float MaxAperture
Definition: lensfun.h:795