00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __LENSFUN_H__
00022 #define __LENSFUN_H__
00023
00024 #include <stddef.h>
00025
00026 #ifdef __cplusplus
00027 extern "C" {
00029 # define C_TYPEDEF(t,c)
00030 #else
00031 # define C_TYPEDEF(t,c) typedef t c c;
00032 #endif
00033
00039
00040
00047
00048 #define LF_VERSION_MAJOR 0
00050 #define LF_VERSION_MINOR 2
00052 #define LF_VERSION_MICRO 6
00054 #define LF_VERSION_BUGFIX 0
00056 #define LF_VERSION ((LF_VERSION_MAJOR << 24) | (LF_VERSION_MINOR << 16) | (LF_VERSION_MICRO << 8) | LF_VERSION_BUGFIX)
00057
00058 #if defined CONF_LENSFUN_STATIC
00060 # define LF_EXPORT
00061 #else
00062 # ifdef CONF_SYMBOL_VISIBILITY
00063 # if defined PLATFORM_WINDOWS
00064 # define LF_EXPORT __declspec(dllexport)
00065 # elif defined CONF_COMPILER_GCC
00066 # define LF_EXPORT __attribute__((visibility("default")))
00067 # else
00068 # error "I don't know how to change symbol visibility for your compiler"
00069 # endif
00070 # else
00071 # if defined PLATFORM_WINDOWS || defined _MSC_VER
00072 # define LF_EXPORT __declspec(dllimport)
00073 # else
00074 # define LF_EXPORT
00075 # endif
00076 # endif
00077 #endif
00078
00080 #define cbool int
00081
00090 typedef char *lfMLstr;
00091
00093 enum lfError
00094 {
00096 LF_NO_ERROR = 0,
00098 LF_WRONG_FORMAT
00099 };
00100
00101 C_TYPEDEF (enum, lfError)
00102
00103
00111 LF_EXPORT void lf_free (void *data);
00112
00119 LF_EXPORT const char *lf_mlstr_get (const lfMLstr str);
00120
00136 LF_EXPORT lfMLstr lf_mlstr_add (lfMLstr str, const char *lang, const char *trstr);
00137
00145 LF_EXPORT lfMLstr lf_mlstr_dup (const lfMLstr str);
00146
00149
00150
00166 struct LF_EXPORT lfMount
00167 {
00169 lfMLstr Name;
00171 char **Compat;
00172
00173 #ifdef __cplusplus
00174
00177 lfMount ();
00178
00182 lfMount &operator = (const lfMount &other);
00183
00187 ~lfMount ();
00188
00197 void SetName (const char *val, const char *lang = NULL);
00198
00204 void AddCompat (const char *val);
00205
00211 bool Check ();
00212 #endif
00213 };
00214
00215 C_TYPEDEF (struct, lfMount)
00216
00217
00224 LF_EXPORT lfMount *lf_mount_new ();
00225
00234 LF_EXPORT void lf_mount_destroy (lfMount *mount);
00235
00245 LF_EXPORT void lf_mount_copy (lfMount *dest, const lfMount *source);
00246
00248 LF_EXPORT cbool lf_mount_check (lfMount *mount);
00249
00252
00253
00272 struct LF_EXPORT lfCamera
00273 {
00275 lfMLstr Maker;
00277 lfMLstr Model;
00279 lfMLstr Variant;
00281 char *Mount;
00283 float CropFactor;
00285 int Score;
00286
00287 #ifdef __cplusplus
00288
00291 lfCamera ();
00292
00296 lfCamera (const lfCamera &other);
00297
00301 ~lfCamera ();
00302
00306 lfCamera &operator = (const lfCamera &other);
00307
00316 void SetMaker (const char *val, const char *lang = NULL);
00317
00326 void SetModel (const char *val, const char *lang = NULL);
00327
00336 void SetVariant (const char *val, const char *lang = NULL);
00337
00343 void SetMount (const char *val);
00344
00350 bool Check ();
00351 #endif
00352 };
00353
00354 C_TYPEDEF (struct, lfCamera)
00355
00356
00363 LF_EXPORT lfCamera *lf_camera_new ();
00364
00373 LF_EXPORT void lf_camera_destroy (lfCamera *camera);
00374
00384 LF_EXPORT void lf_camera_copy (lfCamera *dest, const lfCamera *source);
00385
00387 LF_EXPORT cbool lf_camera_check (lfCamera *camera);
00388
00391
00392
00408 enum lfDistortionModel
00409 {
00411 LF_DIST_MODEL_NONE,
00417 LF_DIST_MODEL_POLY3,
00422 LF_DIST_MODEL_POLY5,
00428 LF_DIST_MODEL_FOV1,
00433 LF_DIST_MODEL_PTLENS,
00434 };
00435
00436 C_TYPEDEF (enum, lfDistortionModel)
00437
00438
00443 struct lfLensCalibDistortion
00444 {
00446 enum lfDistortionModel Model;
00448 float Focal;
00450 float Terms [3];
00451 };
00452
00453 C_TYPEDEF (struct, lfLensCalibDistortion)
00454
00455
00464 enum lfTCAModel
00465 {
00467 LF_TCA_MODEL_NONE,
00474 LF_TCA_MODEL_LINEAR,
00475
00482 LF_TCA_MODEL_POLY3
00483 };
00484
00485 C_TYPEDEF (enum, lfTCAModel)
00486
00487
00493 struct lfLensCalibTCA
00494 {
00496 enum lfTCAModel Model;
00498 float Focal;
00500 float Terms [6];
00501 };
00502
00503 C_TYPEDEF (struct, lfLensCalibTCA)
00504
00505
00516 enum lfVignettingModel
00517 {
00519 LF_VIGNETTING_MODEL_NONE,
00526 LF_VIGNETTING_MODEL_PA
00527 };
00528
00529 C_TYPEDEF (enum, lfVignettingModel)
00530
00531
00538 struct lfLensCalibVignetting
00539 {
00541 enum lfVignettingModel Model;
00543 float Focal;
00545 float Aperture;
00547 float Distance;
00549 float Terms [3];
00550 };
00551
00552 C_TYPEDEF (struct, lfLensCalibVignetting)
00553
00554
00557 enum lfCropMode
00558 {
00560 LF_NO_CROP,
00562 LF_CROP_RECTANGLE,
00564 LF_CROP_CIRCLE
00565 };
00566
00567 C_TYPEDEF(enum, lfCropMode)
00568
00569
00572 struct lfLensCalibCrop
00573 {
00575 float Focal;
00577 enum lfCropMode CropMode;
00586 float Crop [4];
00587 };
00588
00589 C_TYPEDEF (struct, lfLensCalibCrop)
00590
00591
00594 struct lfLensCalibFov
00595 {
00597 float Focal;
00604 float FieldOfView;
00605 };
00606
00607 C_TYPEDEF (struct, lfLensCalibFov)
00608
00609
00612 struct lfParameter
00613 {
00615 const char *Name;
00617 float Min;
00619 float Max;
00621 float Default;
00622 };
00623
00624 C_TYPEDEF (struct, lfParameter)
00625
00626
00629 enum lfLensType
00630 {
00632 LF_UNKNOWN,
00634 LF_RECTILINEAR,
00639 LF_FISHEYE,
00641 LF_PANORAMIC,
00646 LF_EQUIRECTANGULAR,
00648 LF_FISHEYE_ORTHOGRAPHIC,
00650 LF_FISHEYE_STEREOGRAPHIC,
00652 LF_FISHEYE_EQUISOLID,
00654 LF_FISHEYE_THOBY
00655 };
00656
00657 C_TYPEDEF (enum, lfLensType)
00658
00659
00669 struct LF_EXPORT lfLens
00670 {
00672 lfMLstr Maker;
00674 lfMLstr Model;
00676 float MinFocal;
00678 float MaxFocal;
00680 float MinAperture;
00682 float MaxAperture;
00684 char **Mounts;
00694 float CenterX;
00696 float CenterY;
00698 float RedCCI;
00700 float GreenCCI;
00702 float BlueCCI;
00704 float CropFactor;
00706 lfLensType Type;
00708 lfLensCalibDistortion **CalibDistortion;
00710 lfLensCalibTCA **CalibTCA;
00712 lfLensCalibVignetting **CalibVignetting;
00714 lfLensCalibCrop **CalibCrop;
00716 lfLensCalibFov **CalibFov;
00718 int Score;
00719
00720 #ifdef __cplusplus
00721
00724 lfLens ();
00725
00729 lfLens (const lfLens &other);
00730
00734 ~lfLens ();
00735
00739 lfLens &operator = (const lfLens &other);
00740
00749 void SetMaker (const char *val, const char *lang = NULL);
00750
00759 void SetModel (const char *val, const char *lang = NULL);
00760
00767 void AddMount (const char *val);
00768
00776 void AddCalibDistortion (const lfLensCalibDistortion *dc);
00777
00783 bool RemoveCalibDistortion (int idx);
00784
00792 void AddCalibTCA (const lfLensCalibTCA *tcac);
00793
00799 bool RemoveCalibTCA (int idx);
00800
00808 void AddCalibVignetting (const lfLensCalibVignetting *vc);
00809
00815 bool RemoveCalibVignetting (int idx);
00816
00824 void AddCalibCrop (const lfLensCalibCrop *cc);
00825
00831 bool RemoveCalibCrop (int idx);
00832
00840 void AddCalibFov (const lfLensCalibFov *cf);
00841
00847 bool RemoveCalibFov (int idx);
00848
00856 void GuessParameters ();
00857
00863 bool Check ();
00864
00880 static const char *GetDistortionModelDesc (
00881 lfDistortionModel model, const char **details, const lfParameter ***params);
00897 static const char *GetTCAModelDesc (
00898 lfTCAModel model, const char **details, const lfParameter ***params);
00899
00915 static const char *GetVignettingModelDesc (
00916 lfVignettingModel model, const char **details, const lfParameter ***params);
00917
00933 static const char *GetCropDesc (
00934 lfCropMode mode, const char **details, const lfParameter ***params);
00935
00947 static const char *GetLensTypeDesc (lfLensType type, const char **details);
00948
00956 bool InterpolateDistortion (float focal, lfLensCalibDistortion &res) const;
00957
00965 bool InterpolateTCA (float focal, lfLensCalibTCA &res) const;
00966
00979 bool InterpolateVignetting (
00980 float focal, float aperture, float distance, lfLensCalibVignetting &res) const;
00981
00989 bool InterpolateCrop (float focal, lfLensCalibCrop &res) const;
00990
00998 bool InterpolateFov (float focal, lfLensCalibFov &res) const;
00999 #endif
01000 };
01001
01002 C_TYPEDEF (struct, lfLens)
01003
01004
01011 LF_EXPORT lfLens *lf_lens_new ();
01012
01021 LF_EXPORT void lf_lens_destroy (lfLens *lens);
01022
01032 LF_EXPORT void lf_lens_copy (lfLens *dest, const lfLens *source);
01033
01035 LF_EXPORT cbool lf_lens_check (lfLens *lens);
01036
01038 LF_EXPORT void lf_lens_guess_parameters (lfLens *lens);
01039
01041 LF_EXPORT const char *lf_get_distortion_model_desc (
01042 enum lfDistortionModel model, const char **details, const lfParameter ***params);
01043
01045 LF_EXPORT const char *lf_get_tca_model_desc (
01046 enum lfTCAModel model, const char **details, const lfParameter ***params);
01047
01049 LF_EXPORT const char *lf_get_vignetting_model_desc (
01050 enum lfVignettingModel model, const char **details, const lfParameter ***params);
01051
01053 LF_EXPORT const char *lf_get_crop_desc (
01054 enum lfCropMode mode, const char **details, const lfParameter ***params);
01055
01057 LF_EXPORT const char *lf_get_lens_type_desc (
01058 enum lfLensType type, const char **details);
01059
01061 LF_EXPORT cbool lf_lens_interpolate_distortion (const lfLens *lens, float focal,
01062 lfLensCalibDistortion *res);
01063
01065 LF_EXPORT cbool lf_lens_interpolate_tca (const lfLens *lens, float focal, lfLensCalibTCA *res);
01066
01068 LF_EXPORT cbool lf_lens_interpolate_vignetting (const lfLens *lens, float focal, float aperture,
01069 float distance, lfLensCalibVignetting *res);
01070
01072 LF_EXPORT cbool lf_lens_interpolate_crop (const lfLens *lens, float focal,
01073 lfLensCalibCrop *res);
01074
01076 LF_EXPORT cbool lf_lens_interpolate_fov (const lfLens *lens, float focal,
01077 lfLensCalibFov *res);
01078
01080 LF_EXPORT void lf_lens_add_calib_distortion (lfLens *lens, const lfLensCalibDistortion *dc);
01081
01083 LF_EXPORT cbool lf_lens_remove_calib_distortion (lfLens *lens, int idx);
01084
01086 LF_EXPORT void lf_lens_add_calib_tca (lfLens *lens, const lfLensCalibTCA *tcac);
01087
01089 LF_EXPORT cbool lf_lens_remove_calib_tca (lfLens *lens, int idx);
01090
01092 LF_EXPORT void lf_lens_add_calib_vignetting (lfLens *lens, const lfLensCalibVignetting *vc);
01093
01095 LF_EXPORT cbool lf_lens_remove_calib_vignetting (lfLens *lens, int idx);
01096
01098 LF_EXPORT void lf_lens_add_calib_crop (lfLens *lens, const lfLensCalibCrop *cc);
01099
01101 LF_EXPORT cbool lf_lens_remove_calib_crop (lfLens *lens, int idx);
01102
01104 LF_EXPORT void lf_lens_add_calib_fov (lfLens *lens, const lfLensCalibFov *cf);
01105
01107 LF_EXPORT cbool lf_lens_remove_calib_fov (lfLens *lens, int idx);
01108
01111
01112
01122 enum
01123 {
01129 LF_SEARCH_LOOSE = 1
01130 };
01131
01154 struct LF_EXPORT lfDatabase
01155 {
01157 char *HomeDataDir;
01158
01159 #ifdef __cplusplus
01160
01163 static lfDatabase *Create ();
01164
01168 void Destroy ();
01169
01178 lfError Load ();
01179
01191 lfError Load (const char *filename);
01192
01206 lfError Load (const char *errcontext, const char *data, size_t data_size);
01207
01215 lfError Save (const char *filename) const;
01216
01230 lfError Save (const char *filename,
01231 const lfMount *const *mounts,
01232 const lfCamera *const *cameras,
01233 const lfLens *const *lenses) const;
01234
01247 static char *Save (const lfMount *const *mounts,
01248 const lfCamera *const *cameras,
01249 const lfLens *const *lenses);
01250
01274 const lfCamera **FindCameras (const char *maker, const char *model) const;
01275
01295 const lfCamera **FindCamerasExt (const char *maker, const char *model,
01296 int sflags = 0) const;
01297
01305 const lfCamera *const *GetCameras () const;
01306
01343 const lfLens **FindLenses (const lfCamera *camera, const char *maker,
01344 const char *model, int sflags = 0) const;
01345
01363 const lfLens **FindLenses (const lfLens *lens, int sflags = 0) const;
01364
01372 const lfLens *const *GetLenses () const;
01373
01381 const lfMount *FindMount (const char *mount) const;
01382
01390 const char *MountName (const char *mount) const;
01391
01399 const lfMount *const *GetMounts () const;
01400
01401 protected:
01402
01403 lfDatabase () {}
01404 ~lfDatabase () {}
01405 #endif
01406 };
01407
01408 C_TYPEDEF (struct, lfDatabase)
01409
01410
01419 LF_EXPORT lfDatabase *lf_db_new (void);
01420
01429 LF_EXPORT void lf_db_destroy (lfDatabase *db);
01430
01432 LF_EXPORT lfError lf_db_load (lfDatabase *db);
01433
01435 LF_EXPORT lfError lf_db_load_file (lfDatabase *db, const char *filename);
01436
01438 LF_EXPORT lfError lf_db_load_data (lfDatabase *db, const char *errcontext,
01439 const char *data, size_t data_size);
01440
01442 LF_EXPORT lfError lf_db_save_all (const lfDatabase *db, const char *filename);
01443
01445 LF_EXPORT lfError lf_db_save_file (const lfDatabase *db, const char *filename,
01446 const lfMount *const *mounts,
01447 const lfCamera *const *cameras,
01448 const lfLens *const *lenses);
01449
01451 LF_EXPORT char *lf_db_save (const lfMount *const *mounts,
01452 const lfCamera *const *cameras,
01453 const lfLens *const *lenses);
01454
01456 LF_EXPORT const lfCamera **lf_db_find_cameras (
01457 const lfDatabase *db, const char *maker, const char *model);
01458
01460 LF_EXPORT const lfCamera **lf_db_find_cameras_ext (
01461 const lfDatabase *db, const char *maker, const char *model, int sflags);
01462
01464 LF_EXPORT const lfCamera *const *lf_db_get_cameras (const lfDatabase *db);
01465
01467 LF_EXPORT const lfLens **lf_db_find_lenses_hd (
01468 const lfDatabase *db, const lfCamera *camera, const char *maker,
01469 const char *lens, int sflags);
01470
01472 LF_EXPORT const lfLens **lf_db_find_lenses (
01473 const lfDatabase *db, const lfLens *lens, int sflags);
01474
01476 LF_EXPORT const lfLens *const *lf_db_get_lenses (const lfDatabase *db);
01477
01479 LF_EXPORT const lfMount *lf_db_find_mount (const lfDatabase *db, const char *mount);
01480
01482 LF_EXPORT const char *lf_db_mount_name (const lfDatabase *db, const char *mount);
01483
01485 LF_EXPORT const lfMount *const *lf_db_get_mounts (const lfDatabase *db);
01486
01489
01490
01499 enum
01500 {
01502 LF_MODIFY_TCA = 0x00000001,
01504 LF_MODIFY_VIGNETTING = 0x00000002,
01506 LF_MODIFY_CCI = 0x00000004,
01508 LF_MODIFY_DISTORTION = 0x00000008,
01510 LF_MODIFY_GEOMETRY = 0x00000010,
01512 LF_MODIFY_SCALE = 0x00000020,
01514 LF_MODIFY_ALL = ~0
01515 };
01516
01518 enum lfPixelFormat
01519 {
01521 LF_PF_U8,
01523 LF_PF_U16,
01525 LF_PF_U32,
01527 LF_PF_F32,
01529 LF_PF_F64
01530 };
01531
01532 C_TYPEDEF (enum, lfPixelFormat)
01533
01534
01535 enum lfComponentRole
01536 {
01541 LF_CR_END = 0,
01548 LF_CR_NEXT,
01550 LF_CR_UNKNOWN,
01552 LF_CR_INTENSITY,
01554 LF_CR_RED,
01556 LF_CR_GREEN,
01558 LF_CR_BLUE
01559 };
01560
01561 C_TYPEDEF (enum, lfComponentRole)
01562
01563
01564 #define LF_CR_1(a) (LF_CR_ ## a)
01565
01566 #define LF_CR_2(a,b) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4))
01567
01568 #define LF_CR_3(a,b,c) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
01569 ((LF_CR_ ## c) << 8))
01570
01571 #define LF_CR_4(a,b,c,d) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
01572 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12))
01573
01574 #define LF_CR_5(a,b,c,d,e) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
01575 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
01576 ((LF_CR_ ## e) << 16))
01577
01578 #define LF_CR_6(a,b,c,d,e,f) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
01579 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
01580 ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20))
01581
01582 #define LF_CR_7(a,b,c,d,e,f,g) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
01583 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
01584 ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20) | \
01585 ((LF_CR_ ## g) << 24))
01586
01587 #define LF_CR_8(a,b,c,d,e,f,g,h) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
01588 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
01589 ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20) | \
01590 ((LF_CR_ ## g) << 24) | ((LF_CR_ ## h) << 28))
01591
01606 typedef void (*lfSubpixelCoordFunc) (void *data, float *iocoord, int count);
01607
01631 typedef void (*lfModifyColorFunc) (void *data, float x, float y,
01632 void *pixels, int comp_role, int count);
01633
01645 typedef void (*lfModifyCoordFunc) (void *data, float *iocoord, int count);
01646
01706 struct LF_EXPORT lfModifier
01707 {
01708 #ifdef __cplusplus
01709
01729 static lfModifier *Create (const lfLens *lens, float crop, int width, int height);
01730
01771 int Initialize (
01772 const lfLens *lens, lfPixelFormat format, float focal, float aperture,
01773 float distance, float scale, lfLensType targeom, int flags, bool reverse);
01774
01779 void Destroy ();
01780
01797 void AddCoordCallback (lfModifyCoordFunc callback, int priority,
01798 void *data, size_t data_size);
01799
01817 void AddSubpixelCallback (lfSubpixelCoordFunc callback, int priority,
01818 void *data, size_t data_size);
01819
01836 void AddColorCallback (lfModifyColorFunc callback, int priority,
01837 void *data, size_t data_size);
01838
01852 bool AddSubpixelCallbackTCA (lfLensCalibTCA &model, bool reverse = false);
01853
01868 bool AddColorCallbackVignetting (lfLensCalibVignetting &model, lfPixelFormat format,
01869 bool reverse = false);
01870
01885 bool AddColorCallbackCCI (const lfLens *lens, lfPixelFormat format,
01886 bool reverse = false);
01887
01900 bool AddCoordCallbackDistortion (lfLensCalibDistortion &model, bool reverse = false);
01901
01914 bool AddCoordCallbackGeometry (lfLensType from, lfLensType to, float focal);
01915
01931 bool AddCoordCallbackScale (float scale, bool reverse = false);
01932
01945 float GetAutoScale (bool reverse);
01946
01975 bool ApplySubpixelDistortion (float xu, float yu, int width, int height,
01976 float *res) const;
01977
02006 bool ApplyColorModification (void *pixels, float x, float y, int width, int height,
02007 int comp_role, int row_stride) const;
02008
02035 bool ApplyGeometryDistortion (float xu, float yu, int width, int height,
02036 float *res) const;
02037
02065 bool ApplySubpixelGeometryDistortion (float xu, float yu, int width, int height,
02066 float *res) const;
02067
02068 protected:
02069
02070 lfModifier () {}
02071 ~lfModifier () {}
02072 #elif defined _MSC_VER
02073
02074 void *dummy;
02075 #endif
02076 };
02077
02078 C_TYPEDEF (struct, lfModifier)
02079
02080
02081 LF_EXPORT lfModifier *lf_modifier_new (
02082 const lfLens *lens, float crop, int width, int height);
02083
02085 LF_EXPORT void lf_modifier_destroy (lfModifier *modifier);
02086
02088 LF_EXPORT int lf_modifier_initialize (
02089 lfModifier *modifier, const lfLens *lens, lfPixelFormat format,
02090 float focal, float aperture, float distance, float scale,
02091 lfLensType targeom, int flags, cbool reverse);
02092
02094 LF_EXPORT void lf_modifier_add_coord_callback (
02095 lfModifier *modifier, lfModifyCoordFunc callback, int priority,
02096 void *data, size_t data_size);
02097
02099 LF_EXPORT void lf_modifier_add_subpixel_callback (
02100 lfModifier *modifier, lfSubpixelCoordFunc callback, int priority,
02101 void *data, size_t data_size);
02102
02104 LF_EXPORT void lf_modifier_add_color_callback (
02105 lfModifier *modifier, lfModifyColorFunc callback, int priority,
02106 void *data, size_t data_size);
02107
02109 LF_EXPORT cbool lf_modifier_add_subpixel_callback_TCA (
02110 lfModifier *modifier, lfLensCalibTCA *model, cbool reverse);
02111
02113 LF_EXPORT cbool lf_modifier_add_color_callback_vignetting (
02114 lfModifier *modifier, lfLensCalibVignetting *model,
02115 lfPixelFormat format, cbool reverse);
02116
02118 LF_EXPORT cbool lf_modifier_add_color_callback_CCI (
02119 lfModifier *modifier, const lfLens *lens,
02120 lfPixelFormat format, cbool reverse);
02121
02123 LF_EXPORT cbool lf_modifier_add_coord_callback_distortion (
02124 lfModifier *modifier, lfLensCalibDistortion *model, cbool reverse);
02125
02127 LF_EXPORT cbool lf_modifier_add_coord_callback_geometry (
02128 lfModifier *modifier, lfLensType from, lfLensType to, float focal);
02129
02131 LF_EXPORT cbool lf_modifier_add_coord_callback_scale (
02132 lfModifier *modifier, float scale, cbool reverse);
02133
02135 LF_EXPORT float lf_modifier_get_auto_scale (
02136 lfModifier *modifier, cbool reverse);
02137
02139 LF_EXPORT cbool lf_modifier_apply_subpixel_distortion (
02140 lfModifier *modifier, float xu, float yu, int width, int height, float *res);
02141
02143 LF_EXPORT cbool lf_modifier_apply_color_modification (
02144 lfModifier *modifier, void *pixels, float x, float y, int width, int height,
02145 int comp_role, int row_stride);
02146
02148 LF_EXPORT cbool lf_modifier_apply_geometry_distortion (
02149 lfModifier *modifier, float xu, float yu, int width, int height, float *res);
02150
02152 LF_EXPORT cbool lf_modifier_apply_subpixel_geometry_distortion (
02153 lfModifier *modifier, float xu, float yu, int width, int height, float *res);
02154
02157 #undef cbool
02158
02159 #ifdef __cplusplus
02160 }
02161 #endif
02162
02163 #endif