lensfun  0.3.95.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 #ifndef __cplusplus
28  #if (defined(_MSC_VER) && (_MSC_VER < 1800)) // Visual studio up to VS2013 does not have stdbool.h
29  typedef int bool;
30  #define true 1
31  #define false 0
32  #else
33  #include <stdbool.h>
34  #endif
35 #endif
36 
37 #ifdef __cplusplus
38 
39 #include <string>
40 #include <vector>
41 #include <set>
42 
43 extern "C" {
45 # define C_TYPEDEF(t,c)
46 #else
47 # define C_TYPEDEF(t,c) typedef t c c;
48 #endif
49 
55 /*----------------------------------------------------------------------------*/
56 
63 #define LF_VERSION_MAJOR 0
65 #define LF_VERSION_MINOR 3
67 #define LF_VERSION_MICRO 95
69 #define LF_VERSION_BUGFIX 0
71 #define LF_VERSION ((LF_VERSION_MAJOR << 24) | (LF_VERSION_MINOR << 16) | (LF_VERSION_MICRO << 8) | LF_VERSION_BUGFIX)
73 
75 #define LF_MIN_DATABASE_VERSION 0
76 #define LF_MAX_DATABASE_VERSION 2
78 
79 #if defined CONF_LENSFUN_STATIC
80 # define LF_EXPORT
82 #else
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")))
88 # else
89 # error "I don't know how to change symbol visibility for your compiler"
90 # endif
91 # else
92 # if defined PLATFORM_WINDOWS || defined _MSC_VER
93 # define LF_EXPORT __declspec(dllimport)
94 # else
95 # define LF_EXPORT
96 # endif
97 # endif
98 #endif
99 
100 #ifndef CONF_LENSFUN_INTERNAL
101 # ifdef __GNUC__
103 # define DEPRECATED __attribute__((deprecated))
104 # elif defined(_MSC_VER)
105 # define DEPRECATED __declspec(deprecated)
106 # else
107 # pragma message("WARNING: You need to implement DEPRECATED for this compiler")
108 # define DEPRECATED
109 # endif
110 #else
111 # define DEPRECATED
112 #endif
113 
115 #define cbool int
116 
125 typedef char *lfMLstr;
126 
129 {
136 };
137 
138 C_TYPEDEF (enum, lfError)
139 
140 
141 typedef unsigned char lf_u8;
143 typedef unsigned short lf_u16;
145 typedef unsigned int lf_u32;
147 typedef float lf_f32;
149 typedef double lf_f64;
150 
159 LF_EXPORT void lf_free (void *data);
160 
169 LF_EXPORT const char *lf_mlstr_get (const lfMLstr str);
170 
187 LF_EXPORT lfMLstr lf_mlstr_add (lfMLstr str, const char *lang, const char *trstr);
188 
197 LF_EXPORT lfMLstr lf_mlstr_dup (const lfMLstr str);
198 
201 /*----------------------------------------------------------------------------*/
202 
219 {
225  lfMLstr Name;
228 
229 #ifdef __cplusplus
230 
233  lfMount ();
234 
238  lfMount (const lfMount &other);
239 
243  lfMount &operator = (const lfMount &other);
244 
248  bool operator == (const lfMount& other);
249 
253  ~lfMount ();
254 
265  void SetName (const char *val, const char *lang = NULL);
266 
272  void AddCompat (const char *val);
273 
277  const char* const* GetCompats () const;
278 
284  bool Check ();
285 
286 private:
287  std::vector<char*> MountCompat;
288 #endif
289 };
290 
291 C_TYPEDEF (struct, lfMount)
292 
293 
303 
312 
322 LF_EXPORT void lf_mount_destroy (lfMount *mount);
323 
333 LF_EXPORT void lf_mount_copy (lfMount *dest, const lfMount *source);
334 
337 
339 LF_EXPORT void lf_mount_add_compat (lfMount *mount, const char *val);
340 
342 LF_EXPORT const char* const* lf_mount_get_compats (lfMount *mount);
343 
346 /*----------------------------------------------------------------------------*/
347 
366 {
368  lfMLstr Maker;
370  lfMLstr Model;
372  lfMLstr Variant;
374  char *Mount;
376  float CropFactor;
378  int Score;
379 
380 #ifdef __cplusplus
381 
384  lfCamera ();
385 
389  lfCamera (const lfCamera &other);
390 
394  ~lfCamera ();
395 
399  lfCamera &operator = (const lfCamera &other);
400 
411  void SetMaker (const char *val, const char *lang = NULL);
412 
423  void SetModel (const char *val, const char *lang = NULL);
424 
435  void SetVariant (const char *val, const char *lang = NULL);
436 
442  void SetMount (const char *val);
443 
449  bool Check ();
450 #endif
451 };
452 
453 C_TYPEDEF (struct, lfCamera)
454 
455 
465 
475 
485 LF_EXPORT void lf_camera_destroy (lfCamera *camera);
486 
496 LF_EXPORT void lf_camera_copy (lfCamera *dest, const lfCamera *source);
497 
500 
503 /*----------------------------------------------------------------------------*/
504 
519 {
529  float CenterX;
531  float CenterY;
533  float CropFactor;
535  float AspectRatio;
536 
537  #ifdef __cplusplus
538  bool operator==(const lfLensCalibAttributes& other)
539  {
540  return CenterX == other.CenterX &&
541  CenterY == other.CenterY &&
542  CropFactor == other.CropFactor &&
543  AspectRatio == other.AspectRatio;
544  }
545  #endif
546 };
547 
549 
550 
564 {
609 };
610 
612 
613 
620 {
622  enum lfDistortionModel Model;
625  float Focal;
655  float RealFocal;
660  float Terms [5];
663 };
664 
666 
667 
681 {
736 };
737 
738 C_TYPEDEF (enum, lfTCAModel)
739 
740 
748 {
750  enum lfTCAModel Model;
752  float Focal;
754  float Terms [12];
757 };
758 
759 C_TYPEDEF (struct, lfLensCalibTCA)
760 
761 
778 {
802 };
803 
805 
806 
814 {
816  enum lfVignettingModel Model;
818  float Focal;
820  float Aperture;
822  float Distance;
824  float Terms [3];
827 };
828 
830 
831 
835 {
842 };
843 
844 C_TYPEDEF(enum, lfCropMode)
845 
846 
850 {
852  float Focal;
854  enum lfCropMode CropMode;
863  float Crop [4];
866 };
867 
868 C_TYPEDEF (struct, lfLensCalibCrop)
869 
870 
878 {
880  float Focal;
890  float FieldOfView;
893 };
894 
895 C_TYPEDEF (struct, lfLensCalibFov)
896 
897 
905 {
908 
909 #ifdef __cplusplus
910  lfLensCalibrationSet(lfLensCalibAttributes attributes) : Attributes(attributes) {}
911 
912  lfLensCalibrationSet(const lfLensCalibrationSet &other)
913  {
914  Attributes = other.Attributes;
915  for (auto *cb : other.CalibDistortion)
916  CalibDistortion.push_back(new lfLensCalibDistortion(*cb));
917  for (auto *cb : other.CalibVignetting)
918  CalibVignetting.push_back(new lfLensCalibVignetting(*cb));
919  for (auto *cb : other.CalibTCA)
920  CalibTCA.push_back(new lfLensCalibTCA(*cb));
921  for (auto *cb : other.CalibCrop)
922  CalibCrop.push_back(new lfLensCalibCrop(*cb));
923  for (auto *cb : other.CalibFov)
924  CalibFov.push_back(new lfLensCalibFov(*cb));
925  }
926 
927  ~lfLensCalibrationSet()
928  {
929  for (auto cb : CalibDistortion)
930  delete cb;
931  for (auto cb : CalibVignetting)
932  delete cb;
933  for (auto cb : CalibTCA)
934  delete cb;
935  for (auto cb : CalibCrop)
936  delete cb;
937  for (auto cb : CalibFov)
938  delete cb;
939  }
940 
941  bool Empty() const
942  {
943  return CalibDistortion.empty() && CalibTCA.empty() && CalibVignetting.empty() &&
944  CalibCrop.empty() && CalibFov.empty();
945  }
946 
947  bool HasDistortion() const { return !CalibDistortion.empty(); }
948  bool HasTCA() const { return !CalibTCA.empty(); }
949  bool HasVignetting() const { return !CalibVignetting.empty(); }
950  bool HasCrop() const { return !CalibCrop.empty(); }
951  bool HasFov() const { return !CalibFov.empty(); }
952 
953  private:
954 
956  std::vector<lfLensCalibDistortion*> CalibDistortion;
958  std::vector<lfLensCalibTCA*> CalibTCA;
960  std::vector<lfLensCalibVignetting*> CalibVignetting;
962  std::vector<lfLensCalibCrop*> CalibCrop;
964  std::vector<lfLensCalibFov*> CalibFov;
965 
966  friend class lfDatabase;
967  friend class lfLens;
968 #endif
969 };
970 
971 
976 {
978  const char *Name;
980  float Min;
982  float Max;
984  float Default;
985 };
986 
987 C_TYPEDEF (struct, lfParameter)
988 
989 
993 {
1033 };
1034 
1035 C_TYPEDEF (enum, lfLensType)
1036 
1037 
1047 {
1053  float MinFocal;
1055  float MaxFocal;
1091  int Score;
1092 
1093 #ifdef __cplusplus
1094 
1098  lfLens ();
1099 
1103  lfLens (const lfLens &other);
1104 
1108  ~lfLens ();
1109 
1113  lfLens &operator = (const lfLens &other);
1114 
1125  void SetMaker (const char *val, const char *lang = NULL);
1126 
1137  void SetModel (const char *val, const char *lang = NULL);
1138 
1146  void AddMount (const char *val);
1147 
1158  void AddCalibDistortion (const lfLensCalibDistortion *lcd);
1159 
1165  DEPRECATED bool RemoveCalibDistortion (int idx);
1166 
1178  void AddCalibTCA (const lfLensCalibTCA *lctca);
1179 
1185  DEPRECATED bool RemoveCalibTCA (int idx);
1186 
1197  void AddCalibVignetting (const lfLensCalibVignetting *lcv);
1198 
1204  DEPRECATED bool RemoveCalibVignetting (int idx);
1205 
1216  void AddCalibCrop (const lfLensCalibCrop *lcc);
1217 
1223  DEPRECATED bool RemoveCalibCrop (int idx);
1224 
1238  DEPRECATED void AddCalibFov (const lfLensCalibFov *lcf);
1239 
1249  DEPRECATED bool RemoveCalibFov (int idx);
1250 
1255  void RemoveCalibrations();
1256 
1265  void GuessParameters ();
1266 
1272  bool Check ();
1273 
1289  static const char *GetDistortionModelDesc (
1290  lfDistortionModel model, const char **details, const lfParameter ***params);
1306  static const char *GetTCAModelDesc (
1307  lfTCAModel model, const char **details, const lfParameter ***params);
1308 
1324  static const char *GetVignettingModelDesc (
1325  lfVignettingModel model, const char **details, const lfParameter ***params);
1326 
1342  static const char *GetCropDesc (
1343  lfCropMode mode, const char **details, const lfParameter ***params);
1344 
1356  static const char *GetLensTypeDesc (lfLensType type, const char **details);
1357 
1368  DEPRECATED bool InterpolateDistortion (float focal, lfLensCalibDistortion &res) const;
1369 
1383  bool InterpolateDistortion (float crop, float focal, lfLensCalibDistortion &res) const;
1384 
1395  DEPRECATED bool InterpolateTCA (float focal, lfLensCalibTCA &res) const;
1396 
1409  bool InterpolateTCA (float crop, float focal, lfLensCalibTCA &res) const;
1410 
1427  DEPRECATED bool InterpolateVignetting (
1428  float focal, float aperture, float distance, lfLensCalibVignetting &res) const;
1429 
1448  bool InterpolateVignetting (
1449  float crop, float focal, float aperture, float distance, lfLensCalibVignetting &res) const;
1450 
1461  DEPRECATED bool InterpolateCrop (float focal, lfLensCalibCrop &res) const;
1462 
1475  bool InterpolateCrop (float crop, float focal, lfLensCalibCrop &res) const;
1476 
1490  DEPRECATED bool InterpolateFov (float focal, lfLensCalibFov &res) const;
1491 
1507  DEPRECATED bool InterpolateFov (float crop, float focal, lfLensCalibFov &res) const;
1508 
1509 
1516  const lfLensCalibrationSet* const* GetCalibrationSets() const;
1517 
1524  const char* const* GetMountNames() const;
1525 
1526  private:
1527  void UpdateLegacyCalibPointers();
1528 
1529  std::vector<lfLensCalibrationSet*> Calibrations;
1530  std::vector<char*> MountNames;
1531 
1532  lfLensCalibrationSet* GetClosestCalibrationSet(const float crop) const;
1533  lfLensCalibrationSet* GetCalibrationSetForAttributes(const lfLensCalibAttributes lcattr);
1534 
1535  friend class lfDatabase;
1536 #endif
1537 };
1538 
1539 C_TYPEDEF (struct, lfLens)
1540 
1541 
1551 
1561 
1571 LF_EXPORT void lf_lens_destroy (lfLens *lens);
1572 
1582 LF_EXPORT void lf_lens_copy (lfLens *dest, const lfLens *source);
1583 
1586 
1589 
1591 LF_EXPORT void lf_lens_add_mount (lfLens *lens, const char *val);
1592 
1594 LF_EXPORT const char* const* lf_lens_get_mount_names (lfLens *lens);
1595 
1598  enum lfDistortionModel model, const char **details, const lfParameter ***params);
1599 
1601 LF_EXPORT const char *lf_get_tca_model_desc (
1602  enum lfTCAModel model, const char **details, const lfParameter ***params);
1603 
1606  enum lfVignettingModel model, const char **details, const lfParameter ***params);
1607 
1609 LF_EXPORT const char *lf_get_crop_desc (
1610  enum lfCropMode mode, const char **details, const lfParameter ***params);
1611 
1613 LF_EXPORT const char *lf_get_lens_type_desc (
1614  enum lfLensType type, const char **details);
1615 
1617 LF_EXPORT cbool lf_lens_interpolate_distortion (const lfLens *lens, float crop, float focal,
1618  lfLensCalibDistortion *res);
1619 
1621 LF_EXPORT cbool lf_lens_interpolate_tca (const lfLens *lens, float crop, float focal, lfLensCalibTCA *res);
1622 
1624 LF_EXPORT cbool lf_lens_interpolate_vignetting (const lfLens *lens, float crop, float focal, float aperture,
1625  float distance, lfLensCalibVignetting *res);
1626 
1628 LF_EXPORT cbool lf_lens_interpolate_crop (const lfLens *lens, float crop, float focal,
1629  lfLensCalibCrop *res);
1630 
1632 DEPRECATED LF_EXPORT cbool lf_lens_interpolate_fov (const lfLens *lens, float crop, float focal,
1633  lfLensCalibFov *res);
1634 
1637 
1640 
1642 LF_EXPORT void lf_lens_add_calib_tca (lfLens *lens, const lfLensCalibTCA *tcac);
1643 
1646 
1649 
1652 
1654 LF_EXPORT void lf_lens_add_calib_crop (lfLens *lens, const lfLensCalibCrop *cc);
1655 
1658 
1661 
1664 
1667 
1670 /*----------------------------------------------------------------------------*/
1671 
1681 enum
1682 {
1703 };
1704 
1719 {
1724 
1725 #ifdef __cplusplus
1726 
1728  static const char *const UserLocation;
1731  static const char *const UserUpdatesLocation;
1733  static const char *const SystemLocation;
1736  static const char *const SystemUpdatesLocation;
1737 
1739  lfDatabase ();
1741  ~lfDatabase ();
1742 
1749  DEPRECATED static lfDatabase *Create ();
1750 
1757  DEPRECATED void Destroy ();
1758 
1772  static long int ReadTimestamp (const char *dirname);
1773 
1788  DEPRECATED bool LoadDirectory (const char *dirname);
1789 
1798  lfError Load ();
1799 
1813  lfError Load (const char *pathname);
1814 
1825  lfError Load (const char *data, size_t data_size);
1826 
1834  lfError Save (const char *filename) const;
1835 
1842  char *Save () const;
1843 
1868  const lfCamera **FindCameras (const char *maker, const char *model) const;
1869 
1890  const lfCamera **FindCamerasExt (const char *maker, const char *model,
1891  int sflags = 0) const;
1892 
1900  const lfCamera *const *GetCameras ();
1901 
1939  const lfLens **FindLenses (const lfCamera *camera, const char *maker,
1940  const char *model, int sflags = 0) const;
1941 
1949  const lfLens *const *GetLenses ();
1950 
1958  const lfMount *FindMount (const char *mount) const;
1959 
1967  const char *MountName (const char *mount) const;
1968 
1976  const lfMount *const *GetMounts ();
1977 
1986  void AddMount (lfMount *mount);
1987 
1996  void AddCamera (lfCamera *camera);
1997 
2006  void AddLens (lfLens *lens);
2007 
2008 private:
2009 
2036  int MatchScore (const lfLens *pattern, const lfLens *match, const lfCamera *camera,
2037  void *fuzzycmp, const char* const* compat_mounts) const;
2038 
2039  lfError Load (const char *errcontext, const char *data, size_t data_size);
2040 
2041  std::vector<lfMount*> Mounts;
2042  std::vector<lfCamera*> Cameras;
2043  std::vector<lfLens*> Lenses;
2044 #endif
2045 };
2046 
2047 C_TYPEDEF (struct, lfDatabase)
2048 
2049 
2050 extern const char* const lf_db_system_location;
2052 extern const char* const lf_db_system_updates_location;
2054 extern const char* const lf_db_user_location;
2056 extern const char* const lf_db_user_updates_location;
2057 
2068 
2080 
2091 
2093 LF_EXPORT long int lf_db_read_timestamp (lfDatabase *db, const char *dirname);
2094 
2097 
2099 DEPRECATED LF_EXPORT lfError lf_db_load_file (lfDatabase *db, const char *filename);
2100 
2102 DEPRECATED LF_EXPORT cbool lf_db_load_directory (lfDatabase *db, const char *dirname);
2103 
2105 LF_EXPORT lfError lf_db_load_path (lfDatabase *db, const char *pathname);
2106 
2108 LF_EXPORT lfError lf_db_load_data (lfDatabase *db, const char *errcontext,
2109  const char *data, size_t data_size);
2110 
2112 LF_EXPORT lfError lf_db_save_all (const lfDatabase *db, const char *filename);
2113 
2115 LF_EXPORT lfError lf_db_save_file (const lfDatabase *db, const char *filename,
2116  const lfMount *const *mounts,
2117  const lfCamera *const *cameras,
2118  const lfLens *const *lenses);
2119 
2121 LF_EXPORT char *lf_db_save (const lfMount *const *mounts,
2122  const lfCamera *const *cameras,
2123  const lfLens *const *lenses);
2124 
2127  const lfDatabase *db, const char *maker, const char *model);
2128 
2131  const lfDatabase *db, const char *maker, const char *model, int sflags);
2132 
2134 LF_EXPORT const lfCamera *const *lf_db_get_cameras (lfDatabase *db);
2135 
2138  const lfDatabase *db, const lfCamera *camera, const char *maker,
2139  const char *lens, int sflags);
2140 
2143  const lfDatabase *db, const lfCamera *camera,
2144  const char *maker, const char *lens, int sflags);
2145 
2147 LF_EXPORT const lfLens *const *lf_db_get_lenses (lfDatabase *db);
2148 
2150 LF_EXPORT const lfMount *lf_db_find_mount (const lfDatabase *db, const char *mount);
2151 
2153 LF_EXPORT const char *lf_db_mount_name (const lfDatabase *db, const char *mount);
2154 
2156 LF_EXPORT const lfMount *const *lf_db_get_mounts (lfDatabase *db);
2157 
2160 /*----------------------------------------------------------------------------*/
2161 
2170 enum
2171 {
2173  LF_MODIFY_TCA = 0x00000001,
2175  LF_MODIFY_VIGNETTING = 0x00000002,
2176  /* Value 0x00000004 is deprecated. */
2178  LF_MODIFY_DISTORTION = 0x00000008,
2180  LF_MODIFY_GEOMETRY = 0x00000010,
2182  LF_MODIFY_SCALE = 0x00000020,
2187 };
2188 
2191 {
2202 };
2203 
2204 C_TYPEDEF (enum, lfPixelFormat)
2205 
2206 
2210 {
2233 };
2234 
2235 C_TYPEDEF (enum, lfComponentRole)
2236 
2237 
2238 #define LF_CR_1(a) (LF_CR_ ## a)
2239 
2240 #define LF_CR_2(a,b) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4))
2241 
2242 #define LF_CR_3(a,b,c) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
2243  ((LF_CR_ ## c) << 8))
2244 
2245 #define LF_CR_4(a,b,c,d) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
2246  ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12))
2247 
2248 #define LF_CR_5(a,b,c,d,e) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
2249  ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
2250  ((LF_CR_ ## e) << 16))
2251 
2252 #define LF_CR_6(a,b,c,d,e,f) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
2253  ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
2254  ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20))
2255 
2256 #define LF_CR_7(a,b,c,d,e,f,g) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
2257  ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
2258  ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20) | \
2259  ((LF_CR_ ## g) << 24))
2260 
2261 #define LF_CR_8(a,b,c,d,e,f,g,h) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
2262  ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
2263  ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20) | \
2264  ((LF_CR_ ## g) << 24) | ((LF_CR_ ## h) << 28))
2265 
2266 // @cond
2267 
2268 
2269 
2270 // @endcond
2271 
2346 #ifdef __cplusplus
2347 }
2348 #endif
2349 
2351 {
2352 #ifdef __cplusplus
2353 
2374  DEPRECATED lfModifier (const lfLens *lens, float crop, int width, int height);
2375 
2402  DEPRECATED static lfModifier *Create (const lfLens *lens, float crop, int width, int height);
2403 
2449  DEPRECATED int Initialize (
2450  const lfLens *lens, lfPixelFormat format, float focal, float aperture,
2451  float distance, float scale, lfLensType targeom, int flags, bool reverse);
2452 
2459  DEPRECATED void Destroy ();
2460 
2485  lfModifier (float imgcrop, int imgwidth, int imgheight, lfPixelFormat pixel_format, bool reverse = false);
2486 
2488  ~lfModifier ();
2489 
2498  int EnableDistortionCorrection (const lfLensCalibDistortion& lcd);
2509  int EnableDistortionCorrection (const lfLens* lens, float focal);
2510 
2519  int EnableTCACorrection (const lfLensCalibTCA& lctca);
2530  int EnableTCACorrection (const lfLens* lens, float focal);
2531 
2540  int EnableVignettingCorrection (const lfLensCalibVignetting& lcv);
2555  int EnableVignettingCorrection (const lfLens* lens, float focal, float aperture, float distance);
2556 
2569  int EnableProjectionTransform (const lfLens* lens, float focal, lfLensType target_projection);
2570  //bool EnableProjectionTransform (float focal, lfLensType target_projection);
2571 
2580  int EnableScaling (float scale);
2581 
2582 
2637  int EnablePerspectiveCorrection (const lfLens* lens, float focal, float *x, float *y, int count, float d);
2638 
2652  float GetAutoScale (bool reverse);
2653 
2683  bool ApplyColorModification (void *pixels, float x, float y, int width, int height,
2684  int comp_role, int row_stride) const;
2685 
2716  bool ApplyGeometryDistortion (float xu, float yu, int width, int height,
2717  float *res) const;
2718 
2750  bool ApplySubpixelDistortion (float xu, float yu, int width, int height,
2751  float *res) const;
2752 
2783  bool ApplySubpixelGeometryDistortion (float xu, float yu, int width, int height,
2784  float *res) const;
2785 
2786 private:
2787 
2789  struct lfCallbackData
2790  {
2791  virtual ~lfCallbackData() {}
2792  int priority;
2793 
2794  bool operator<(const lfCallbackData& c) const { return priority < c.priority; }
2795  bool operator>(const lfCallbackData& c) const { return priority > c.priority; }
2796  };
2797 
2800  struct lfCallBackDataPtrComp
2801  {
2802  bool operator () (const lfCallbackData* lhs, const lfCallbackData* rhs) const {
2803  return lhs->priority < rhs->priority;
2804  }
2805  };
2806 
2822  typedef void (*lfModifySubpixCoordFunc) (void *data, float *iocoord, int count);
2823 
2848  typedef void (*lfModifyColorFunc) (void *data, float x, float y,
2849  void *pixels, int comp_role, int count);
2850 
2863  typedef void (*lfModifyCoordFunc) (void *data, float *iocoord, int count);
2864 
2866  struct lfSubpixelCallback : public lfCallbackData
2867  {
2868  lfModifySubpixCoordFunc callback;
2869  };
2870 
2871  struct lfSubpixTCACallback : public lfSubpixelCallback
2872  {
2873  float coordinate_correction;
2874  float norm_focal;
2875  float centerX;
2876  float centerY;
2877  float Terms [12];
2878  };
2879 
2881  struct lfCoordCallback : public lfCallbackData
2882  {
2883  lfModifyCoordFunc callback;
2884  };
2885 
2886  struct lfCoordDistCallbackData : public lfCoordCallback
2887  {
2888  float coordinate_correction;
2889  float centerX;
2890  float centerY;
2891  float norm_focal;
2892  float Terms [5];
2893  };
2894 
2895  struct lfCoordScaleCallbackData : public lfCoordCallback
2896  {
2897  float scale_factor;
2898  };
2899 
2900  struct lfCoordGeomCallbackData : public lfCoordCallback
2901  {
2902  float norm_focal;
2903  };
2904 
2905  struct lfCoordPerspCallbackData : public lfCoordCallback
2906  {
2907  float A [3][3];
2908  float delta_a, delta_b;
2909  };
2910 
2912  struct lfColorCallback : public lfCallbackData
2913  {
2914  lfModifyColorFunc callback;
2915  };
2916 
2917  struct lfColorVignCallbackData : public lfColorCallback
2918  {
2919  float coordinate_correction;
2920  float NormScale;
2921  float centerX;
2922  float centerY;
2923  float Terms [3];
2924  };
2925 
2927  std::multiset<lfSubpixelCallback*, lfCallBackDataPtrComp> SubpixelCallbacks;
2929  std::multiset<lfColorCallback*, lfCallBackDataPtrComp> ColorCallbacks;
2931  std::multiset<lfCoordCallback*, lfCallBackDataPtrComp> CoordCallbacks;
2932 
2933  // A test point in the autoscale algorithm
2934  typedef struct { float angle, dist; } lfPoint;
2935 
2936  void AddSubpixTCACallback (const lfLensCalibTCA& lcd, lfModifySubpixCoordFunc func, int priority);
2937  void AddCoordGeomCallback (float norm_focal, lfModifyCoordFunc func, int priority);
2938  void AddCoordDistCallback (const lfLensCalibDistortion& lcd, lfModifyCoordFunc func, int priority);
2939  void AddColorVignCallback (const lfLensCalibVignetting& lcv, lfModifyColorFunc func, int priority);
2940 
2954  double AutoscaleResidualDistance (float *coord) const;
2969  float GetTransformedDistance (lfPoint point) const;
2970 
2985  float GetNormalizedFocalLength (float focal, const lfLens* lens) const;
2986 
2987  static void ModifyCoord_TCA_Linear (void *data, float *iocoord, int count);
2988  static void ModifyCoord_UnTCA_Poly3 (void *data, float *iocoord, int count);
2989  static void ModifyCoord_TCA_Poly3 (void *data, float *iocoord, int count);
2990  static void ModifyCoord_TCA_ACM (void *data, float *iocoord, int count);
2991 
2992  static void ModifyCoord_UnDist_Poly3 (void *data, float *iocoord, int count);
2993  static void ModifyCoord_Dist_Poly3 (void *data, float *iocoord, int count);
2994 #ifdef VECTORIZATION_SSE
2995  static void ModifyCoord_Dist_Poly3_SSE (void *data, float *iocoord, int count);
2996 #endif
2997  static void ModifyCoord_UnDist_Poly5 (void *data, float *iocoord, int count);
2998  static void ModifyCoord_Dist_Poly5 (void *data, float *iocoord, int count);
2999  static void ModifyCoord_UnDist_PTLens (void *data, float *iocoord, int count);
3000  static void ModifyCoord_Dist_PTLens (void *data, float *iocoord, int count);
3001 #ifdef VECTORIZATION_SSE
3002  static void ModifyCoord_UnDist_PTLens_SSE (void *data, float *iocoord, int count);
3003  static void ModifyCoord_Dist_PTLens_SSE (void *data, float *iocoord, int count);
3004 #endif
3005  static void ModifyCoord_Dist_ACM (void *data, float *iocoord, int count);
3006  static void ModifyCoord_Geom_FishEye_Rect (void *data, float *iocoord, int count);
3007  static void ModifyCoord_Geom_Panoramic_Rect (void *data, float *iocoord, int count);
3008  static void ModifyCoord_Geom_ERect_Rect (void *data, float *iocoord, int count);
3009  static void ModifyCoord_Geom_Rect_FishEye (void *data, float *iocoord, int count);
3010  static void ModifyCoord_Geom_Panoramic_FishEye (void *data, float *iocoord, int count);
3011  static void ModifyCoord_Geom_ERect_FishEye (void *data, float *iocoord, int count);
3012  static void ModifyCoord_Geom_Rect_Panoramic (void *data, float *iocoord, int count);
3013  static void ModifyCoord_Geom_FishEye_Panoramic (void *data, float *iocoord, int count);
3014  static void ModifyCoord_Geom_ERect_Panoramic (void *data, float *iocoord, int count);
3015  static void ModifyCoord_Geom_Rect_ERect (void *data, float *iocoord, int count);
3016  static void ModifyCoord_Geom_FishEye_ERect (void *data, float *iocoord, int count);
3017  static void ModifyCoord_Geom_Panoramic_ERect (void *data, float *iocoord, int count);
3018  static void ModifyCoord_Geom_Orthographic_ERect (void *data, float *iocoord, int count);
3019  static void ModifyCoord_Geom_ERect_Orthographic (void *data, float *iocoord, int count);
3020  static void ModifyCoord_Geom_Stereographic_ERect (void *data, float *iocoord, int count);
3021  static void ModifyCoord_Geom_ERect_Stereographic (void *data, float *iocoord, int count);
3022  static void ModifyCoord_Geom_Equisolid_ERect (void *data, float *iocoord, int count);
3023  static void ModifyCoord_Geom_ERect_Equisolid (void *data, float *iocoord, int count);
3024  static void ModifyCoord_Geom_Thoby_ERect (void *data, float *iocoord, int count);
3025  static void ModifyCoord_Geom_ERect_Thoby (void *data, float *iocoord, int count);
3026  static void ModifyCoord_Perspective_Correction (void *data, float *iocoord, int count);
3027  static void ModifyCoord_Perspective_Distortion (void *data, float *iocoord, int count);
3028 #ifdef VECTORIZATION_SSE
3029  static void ModifyColor_DeVignetting_PA_SSE (
3030  void *data, float _x, float _y, lf_f32 *pixels, int comp_role, int count);
3031 #endif
3032 #ifdef VECTORIZATION_SSE2
3033  static void ModifyColor_DeVignetting_PA_SSE2 (
3034  void *data, float _x, float _y, lf_u16 *pixels, int comp_role, int count);
3035 #endif
3036 
3037  template<typename T> static void ModifyColor_Vignetting_PA (
3038  void *data, float x, float y, T *rgb, int comp_role, int count);
3039  template<typename T> static void ModifyColor_DeVignetting_PA (
3040  void *data, float x, float y, T *rgb, int comp_role, int count);
3041 
3042  static void ModifyCoord_Scale (void *data, float *iocoord, int count);
3043 #endif
3044  double Width, Height;
3048  double Crop;
3050  double CenterX, CenterY;
3052  double NormScale, NormUnScale;
3053 
3055  cbool Reverse;
3056 
3058  lfPixelFormat PixelFormat;
3059 
3061  int enabledMods;
3062 };
3063 
3064 #ifdef __cplusplus
3065 extern "C" {
3066 #endif
3067 
3068 C_TYPEDEF (struct, lfModifier)
3069 
3070 
3072  const lfLens *lens, float crop, int width, int height);
3073 
3076  float imgcrop, int imgwidth, int imgheight, lfPixelFormat pixel_format, bool reverse);
3077 
3079 LF_EXPORT void lf_modifier_destroy (lfModifier *modifier);
3080 
3083  lfModifier *modifier, const lfLens *lens, lfPixelFormat format,
3084  float focal, float aperture, float distance, float scale,
3085  lfLensType targeom, int flags, cbool reverse);
3086 
3088 LF_EXPORT int lf_modifier_enable_scaling (lfModifier *modifier, float scale);
3089 
3091 LF_EXPORT int lf_modifier_enable_distortion_correction (lfModifier *modifier, const lfLens* lens, float focal);
3092 
3094 LF_EXPORT int lf_modifier_enable_tca_correction (lfModifier *modifier, const lfLens* lens, float focal);
3095 
3098  lfModifier *modifier, const lfLens* lens, float focal, float aperture, float distance);
3099 
3102  lfModifier *modifier, const lfLens* lens, float focal, lfLensType target_projection);
3103 
3106  lfModifier *modifier, const lfLens* lens, float focal, float *x, float *y, int count, float d);
3107 
3110  lfModifier *modifier, cbool reverse);
3111 
3114  lfModifier *modifier, float xu, float yu, int width, int height, float *res);
3115 
3118  lfModifier *modifier, void *pixels, float x, float y, int width, int height,
3119  int comp_role, int row_stride);
3120 
3123  lfModifier *modifier, float xu, float yu, int width, int height, float *res);
3124 
3127  lfModifier *modifier, float xu, float yu, int width, int height, float *res);
3128 
3131 #undef cbool
3132 
3133 #ifdef __cplusplus
3134 }
3135 #endif
3136 
3137 #endif /* __LENSFUN_H__ */
const lfLens *const * lf_db_get_lenses(lfDatabase *db)
Panoramic (cylindrical)
Definition: lensfun.h:1013
lfDistortionModel
The Lensfun library implements several lens distortion models. This enum lists them.
Definition: lensfun.h:563
float MinAperture
Definition: lensfun.h:1057
const lfCamera *const * lf_db_get_cameras(lfDatabase *db)
Definition: lensfun.h:2195
Definition: lensfun.h:2224
cbool lf_modifier_apply_subpixel_geometry_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
Adobe Camera Model. The coordinate system is different here. Everything is measured in units of the f...
Definition: lensfun.h:608
unsigned int lf_u32
Definition: lensfun.h:145
static const char *const UserUpdatesLocation
Home lens database directory for automatic updates (something like "~/.local/share/lensfun/updates") ...
Definition: lensfun.h:1731
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:1049
const char *const lf_db_system_location
void lf_lens_remove_calibrations(lfLens *lens)
float FieldOfView
Field of view for given images.
Definition: lensfun.h:890
Rectilinear lens.
Definition: lensfun.h:1000
lfLens * lf_lens_create()
Create a new lens object.
Definition: lensfun.h:2178
lfLensType Type
Definition: lensfun.h:1063
lfLensCalibAttributes CalibAttr
Pointer to the calibration settings (currently unused).
Definition: lensfun.h:892
This flag makes Lensfun to sort the results by focal length, and remove all double lens names...
Definition: lensfun.h:1702
DEPRECATED char ** Mounts
Definition: lensfun.h:1061
no crop at all
Definition: lensfun.h:837
lfCamera * lf_camera_create()
Create a new camera object.
Definition: lensfun.h:2201
Definition: lensfun.h:2193
5th order polynomial model.
Definition: lensfun.h:583
lfError
Definition: lensfun.h:128
const char * lf_get_distortion_model_desc(enum lfDistortionModel model, const char **details, const lfParameter ***params)
void lf_lens_guess_parameters(lfLens *lens)
float Focal
Focal length in mm at which this calibration data was taken.
Definition: lensfun.h:818
Laterlal chromatic aberrations calibration data.
Definition: lensfun.h:747
DEPRECATED const lfLens ** lf_db_find_lenses_hd(const lfDatabase *db, const lfCamera *camera, const char *maker, const char *lens, int sflags)
DEPRECATED cbool lf_db_load_directory(lfDatabase *db, const char *dirname)
Definition: lensfun.h:135
Lens distortion calibration data.
Definition: lensfun.h:619
static const char *const SystemLocation
System lens database directory (something like "/usr/share/lensfun")
Definition: lensfun.h:1733
double lf_f64
Definition: lensfun.h:149
cbool lf_lens_interpolate_distortion(const lfLens *lens, float crop, float focal, lfLensCalibDistortion *res)
DEPRECATED lfModifier * lf_modifier_new(const lfLens *lens, float crop, int width, int height)
A set of calibration data.
Definition: lensfun.h:904
void lf_lens_copy(lfLens *dest, const lfLens *source)
Copy the data from one lfLens structure into another.
lfLensCalibAttributes CalibAttr
Pointer to the calibration settings (currently unused).
Definition: lensfun.h:865
void lf_mount_destroy(lfMount *mount)
Destroy a lfMount object.
lfModifier * lf_modifier_create(float imgcrop, int imgwidth, int imgheight, lfPixelFormat pixel_format, bool reverse)
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:1046
DEPRECATED lfMount * lf_mount_new()
Create a new mount object.
DEPRECATED lfLensCalibDistortion ** CalibDistortion
Definition: lensfun.h:1081
lfPixelFormat
A list of pixel formats supported by internal colour callbacks.
Definition: lensfun.h:2190
Definition: lensfun.h:2182
DEPRECATED float CenterX
Definition: lensfun.h:1073
lfVignettingModel
The Lensfun library supports several models for lens vignetting correction.
Definition: lensfun.h:777
Adobe camera model for TCA. The coordinate system is different here. Everything is measured in units ...
Definition: lensfun.h:735
This structure contains everything specific to a camera mount.
Definition: lensfun.h:218
float MinFocal
Definition: lensfun.h:1053
const char * lf_db_mount_name(const lfDatabase *db, const char *mount)
const char *const lf_db_user_location
Stereographic fisheye.
Definition: lensfun.h:1024
int Score
Definition: lensfun.h:1091
Linear lateral chromatic aberrations model.
Definition: lensfun.h:695
Third order polynomial.
Definition: lensfun.h:707
const char *const * lf_lens_get_mount_names(lfLens *lens)
Definition: lensfun.h:2180
use a circular crop, e.g. for circular fisheye images
Definition: lensfun.h:841
#define cbool
C-compatible bool type; don&#39;t bother to define Yet Another Boolean Type.
Definition: lensfun.h:115
DEPRECATED float CropFactor
Definition: lensfun.h:1077
lfMLstr Model
Definition: lensfun.h:1051
float Focal
Focal length in mm at which this calibration data was taken.
Definition: lensfun.h:852
cbool lf_modifier_apply_subpixel_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
int Score
Camera matching score, used while searching: not actually a camera parameter.
Definition: lensfun.h:378
DEPRECATED char * UserUpdatesDir
Home lens database directory for automatic updates (deprecated). Replaced by lfDatabase::UserUpdatesL...
Definition: lensfun.h:1723
void lf_free(void *data)
const char *const lf_db_system_updates_location
cbool lf_mount_check(lfMount *mount)
float lf_modifier_get_auto_scale(lfModifier *modifier, cbool reverse)
Orthographic fisheye.
Definition: lensfun.h:1022
lfLensType
Lens type. See Change of projection for further information.
Definition: lensfun.h:992
DEPRECATED char ** Compat
Definition: lensfun.h:227
Definition: lensfun.h:2175
cbool lf_lens_interpolate_crop(const lfLens *lens, float crop, float focal, lfLensCalibCrop *res)
int lf_modifier_enable_vignetting_correction(lfModifier *modifier, const lfLens *lens, float focal, float aperture, float distance)
DEPRECATED lfLensCalibFov ** CalibFov
Definition: lensfun.h:1089
cbool lf_lens_remove_calib_crop(lfLens *lens, int idx)
PTLens model, which is also used by Hugin.
Definition: lensfun.h:591
const char *const * lf_mount_get_compats(lfMount *mount)
Definition: lensfun.h:2226
3rd order polynomial model, which is a subset of the PTLens model.
Definition: lensfun.h:574
use a rectangular crop
Definition: lensfun.h:839
lfError lf_db_load_path(lfDatabase *db, const char *pathname)
float CropFactor
Definition: lensfun.h:533
const char * lf_get_tca_model_desc(enum lfTCAModel model, const char **details, const lfParameter ***params)
const lfMount * lf_db_find_mount(const lfDatabase *db, const char *mount)
lfLensCalibAttributes Attributes
Definition: lensfun.h:907
#define C_TYPEDEF(t, c)
Definition: lensfun.h:45
Equisolid fisheye.
Definition: lensfun.h:1026
Fisheye as measured by Thoby (for Nikkor 10.5).
Definition: lensfun.h:1032
float Focal
Focal length in mm at which this calibration data was taken.
Definition: lensfun.h:752
Definition: lensfun.h:2228
unsigned char lf_u8
Definition: lensfun.h:141
DEPRECATED lfLensCalibTCA ** CalibTCA
Definition: lensfun.h:1083
Definition: lensfun.h:2230
lfLensCalibAttributes CalibAttr
Pointer to the calibration settings (currently unused).
Definition: lensfun.h:826
const lfLens ** lf_db_find_lenses(const lfDatabase *db, const lfCamera *camera, const char *maker, const char *lens, int sflags)
#define LF_EXPORT
This macro expands to an appropiate symbol visibility declaration.
Definition: lensfun.h:81
int lf_modifier_enable_tca_correction(lfModifier *modifier, const lfLens *lens, float focal)
DEPRECATED lfLens * lf_lens_new()
Create a new lens object.
void lf_camera_destroy(lfCamera *camera)
Destroy a lfCamera object.
lfLensCalibAttributes CalibAttr
Pointer to the calibration settings (currently unused).
Definition: lensfun.h:756
float Min
Minimal value that has sense.
Definition: lensfun.h:980
float Max
Maximal value that has sense.
Definition: lensfun.h:982
Unknown lens type.
Definition: lensfun.h:995
cbool RealFocalMeasured
Whether the real focal length was actually measured.
Definition: lensfun.h:658
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 in mm for this nominal focal length.
Definition: lensfun.h:655
A modifier object contains optimized data required to rectify a image.
Definition: lensfun.h:2350
cbool lf_camera_check(lfCamera *camera)
Definition: lensfun.h:2215
float CropFactor
Camera crop factor (ex: 1.0). Must be defined.
Definition: lensfun.h:376
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:133
long int lf_db_read_timestamp(lfDatabase *db, const char *dirname)
DEPRECATED float AspectRatio
Definition: lensfun.h:1079
This flag selects a looser search algorithm resulting in more results (still sorted by score)...
Definition: lensfun.h:1690
cbool lf_modifier_enable_projection_transform(lfModifier *modifier, const lfLens *lens, float focal, lfLensType target_projection)
float Distance
Focus distance in meters.
Definition: lensfun.h:822
void lf_lens_add_calib_distortion(lfLens *lens, const lfLensCalibDistortion *dc)
void lf_modifier_destroy(lfModifier *modifier)
DEPRECATED lfLensCalibVignetting ** CalibVignetting
Definition: lensfun.h:1085
float Aperture
Aperture (f-number) at which this calibration data was taken.
Definition: lensfun.h:820
#define DEPRECATED
For marking deprecated functions, see http://stackoverflow.com/a/21265197.
Definition: lensfun.h:108
static const char *const SystemUpdatesLocation
System lens database directory for automatic updates (something like "/var/lib/lensfun-updates") ...
Definition: lensfun.h:1736
Definition: lensfun.h:2232
cbool lf_modifier_apply_geometry_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
cbool lf_lens_interpolate_tca(const lfLens *lens, float crop, float focal, lfLensCalibTCA *res)
float MaxFocal
Definition: lensfun.h:1055
Definition: lensfun.h:2173
void lf_mount_copy(lfMount *dest, const lfMount *source)
Copy the data from one lfMount structure into another.
float CenterY
Definition: lensfun.h:531
unsigned short lf_u16
Definition: lensfun.h:143
lfComponentRole
These constants define the role of every pixel component, four bits each. "pixel" refers here to a se...
Definition: lensfun.h:2209
const char * lf_get_lens_type_desc(enum lfLensType type, const char **details)
Equirectangular.
Definition: lensfun.h:1020
Definition: lensfun.h:2222
void lf_mount_add_compat(lfMount *mount, const char *val)
float Focal
Nominal focal length in mm at which this calibration data was taken.
Definition: lensfun.h:625
int lf_modifier_enable_scaling(lfModifier *modifier, float scale)
const char *const lf_db_user_updates_location
float Focal
Definition: lensfun.h:880
cbool lf_lens_interpolate_vignetting(const lfLens *lens, float crop, float focal, float aperture, float distance, lfLensCalibVignetting *res)
lfLensCalibAttributes CalibAttr
Calibration settings (currently unused).
Definition: lensfun.h:662
void lf_lens_destroy(lfLens *lens)
Destroy a lfLens object.
DEPRECATED cbool lf_lens_interpolate_fov(const lfLens *lens, float crop, float focal, lfLensCalibFov *res)
DEPRECATED 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)
Definition: lensfun.h:2186
void lf_db_destroy(lfDatabase *db)
Destroy the database object.
DEPRECATED lfCamera * lf_camera_new()
Create a new camera object.
Equidistant fisheye.
Definition: lensfun.h:1006
lfError lf_db_load_data(lfDatabase *db, const char *errcontext, const char *data, size_t data_size)
Definition: lensfun.h:2197
No TCA correction data is known.
Definition: lensfun.h:683
lfMLstr Model
Model name (ex: "Rolleiflex SL35") – same as in EXIF.
Definition: lensfun.h:370
const char * lf_get_crop_desc(enum lfCropMode mode, const char **details, const lfParameter ***params)
DEPRECATED lfLensCalibCrop ** CalibCrop
Definition: lensfun.h:1087
lfMLstr Maker
Camera maker (ex: "Rollei") – same as in EXIF.
Definition: lensfun.h:368
DEPRECATED cbool lf_lens_remove_calib_fov(lfLens *lens, int idx)
int lf_modifier_enable_perspective_correction(lfModifier *modifier, const lfLens *lens, float focal, float *x, float *y, int count, float d)
Definition: lensfun.h:131
void lf_lens_add_mount(lfLens *lens, const char *val)
cbool lf_lens_check(lfLens *lens)
float AspectRatio
Definition: lensfun.h:535
DEPRECATED char * HomeDataDir
Home lens database directory (deprecated). Replaced by lfDatabase::UserLocation.
Definition: lensfun.h:1721
const char * lf_get_vignetting_model_desc(enum lfVignettingModel model, const char **details, const lfParameter ***params)
int lf_modifier_enable_distortion_correction(lfModifier *modifier, const lfLens *lens, float focal)
char * Mount
Camera mount type (ex: "QBM")
Definition: lensfun.h:374
char * lfMLstr
Definition: lensfun.h:125
A lens database object.
Definition: lensfun.h:1718
DEPRECATED lfDatabase * lf_db_new(void)
Create a new empty database object.
void lf_lens_add_calib_crop(lfLens *lens, const lfLensCalibCrop *cc)
const lfMount *const * lf_db_get_mounts(lfDatabase *db)
Pablo D&#39;Angelo vignetting model (which is a more general variant of the law).
Definition: lensfun.h:790
Distortion parameters are unknown.
Definition: lensfun.h:566
lfMLstr Name
Camera mount name.
Definition: lensfun.h:225
lfDatabase * lf_db_create(void)
Create a new empty database object.
Lens vignetting calibration data.
Definition: lensfun.h:813
float CenterX
Definition: lensfun.h:529
float lf_f32
Definition: lensfun.h:147
static const char *const UserLocation
Home lens database directory (something like "~/.local/share/lensfun")
Definition: lensfun.h:1728
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:780
DEPRECATED lfError lf_db_load_file(lfDatabase *db, const char *filename)
void lf_lens_add_calib_vignetting(lfLens *lens, const lfLensCalibVignetting *vc)
Definition: lensfun.h:2184
lfError lf_db_save_all(const lfDatabase *db, const char *filename)
lfTCAModel
The Lensfun library supports several models for lens lateral chromatic aberrations (also called trans...
Definition: lensfun.h:680
float Default
Default value for the parameter.
Definition: lensfun.h:984
DEPRECATED float CenterY
Definition: lensfun.h:1075
Adobe&#39;s vignetting model. It differs from D&#39;Angelo&#39;s model only in the coordinate system...
Definition: lensfun.h:801
lfCropMode
Different crop modes.
Definition: lensfun.h:834
Struct to save calibrated field of view, which can depends on the focal length (DEPRECATED) ...
Definition: lensfun.h:877
Lens calibration attributes.
Definition: lensfun.h:518
Camera data. Unknown fields are set to NULL.
Definition: lensfun.h:365
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.
lfMount * lf_mount_create()
Create a new mount object.
lfMLstr Variant
Camera variant. Some cameras use same EXIF id for different models.
Definition: lensfun.h:372
Struct to save image crop, which can depend on the focal length.
Definition: lensfun.h:849
Definition: lensfun.h:2199
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:978
This structure describes a single parameter for some lens model.
Definition: lensfun.h:975
lfError lf_db_load(lfDatabase *db)
cbool lf_lens_remove_calib_distortion(lfLens *lens, int idx)
float MaxAperture
Definition: lensfun.h:1059