📄 klt.h
字号:
/********************************************************************* * klt.h * * Kanade-Lucas-Tomasi tracker *********************************************************************/#ifndef _KLT_H_#define _KLT_H_#ifdef __cplusplusextern "C" {#endiftypedef float KLT_locType;typedef unsigned char KLT_PixelType;#define KLT_BOOL int#ifndef TRUE#define TRUE 1#define FALSE 0#endif#ifndef NULL#define NULL 0#endif#define KLT_TRACKED 0#define KLT_NOT_FOUND -1#define KLT_SMALL_DET -2#define KLT_MAX_ITERATIONS -3#define KLT_OOB -4#define KLT_LARGE_RESIDUE -5#include "klt_util.h" /* for affine mapping *//******************* * Structures */typedef struct { /* Available to user */ int mindist; /* min distance b/w features */ int window_width, window_height; KLT_BOOL sequentialMode; /* whether to save most recent image to save time */ /* can set to TRUE manually, but don't set to */ /* FALSE manually */ KLT_BOOL smoothBeforeSelecting; /* whether to smooth image before */ /* selecting features */ KLT_BOOL writeInternalImages; /* whether to write internal images */
/* tracking features */ KLT_BOOL lighting_insensitive; /* whether to normalize for gain and bias (not in original algorithm) */
/* Available, but hopefully can ignore */ int min_eigenvalue; /* smallest eigenvalue allowed for selecting */ float min_determinant; /* th for determining lost */ float min_displacement; /* th for stopping tracking when pixel changes little */ int max_iterations; /* th for stopping tracking when too many iterations */ float max_residue; /* th for stopping tracking when residue is large */ float grad_sigma; float smooth_sigma_fact; float pyramid_sigma_fact; float step_factor; /* size of Newton steps; 2.0 comes from equations, 1.0 seems to avoid overshooting */
int nSkippedPixels; /* # of pixels skipped when finding features */ int borderx; /* border in which features will not be found */ int bordery; int nPyramidLevels; /* computed from search_ranges */ int subsampling; /* " */
/* for affine mapping */ int affine_window_width, affine_window_height; int affineConsistencyCheck; /* whether to evaluates the consistency of features with affine mapping -1 = don't evaluates the consistency 0 = evaluates the consistency of features with translation mapping 1 = evaluates the consistency of features with similarity mapping 2 = evaluates the consistency of features with affine mapping */ int affine_max_iterations; float affine_max_residue; float affine_min_displacement; float affine_max_displacement_differ; /* th for the difference between the displacement calculated by the affine tracker and the frame to frame tracker in pel*/ /* User must not touch these */ void *pyramid_last; void *pyramid_last_gradx; void *pyramid_last_grady;} KLT_TrackingContextRec, *KLT_TrackingContext;typedef struct { KLT_locType x; KLT_locType y; int val; /* for affine mapping */ _KLT_FloatImage aff_img; _KLT_FloatImage aff_img_gradx; _KLT_FloatImage aff_img_grady; KLT_locType aff_x; KLT_locType aff_y; KLT_locType aff_Axx; KLT_locType aff_Ayx; KLT_locType aff_Axy; KLT_locType aff_Ayy;} KLT_FeatureRec, *KLT_Feature;typedef struct { int nFeatures; KLT_Feature *feature;} KLT_FeatureListRec, *KLT_FeatureList;typedef struct { int nFrames; KLT_Feature *feature;} KLT_FeatureHistoryRec, *KLT_FeatureHistory;typedef struct { int nFrames; int nFeatures; KLT_Feature **feature;} KLT_FeatureTableRec, *KLT_FeatureTable;/******************* * Functions *//* Create */KLT_TrackingContext KLTCreateTrackingContext(void);KLT_FeatureList KLTCreateFeatureList( int nFeatures);KLT_FeatureHistory KLTCreateFeatureHistory( int nFrames);KLT_FeatureTable KLTCreateFeatureTable( int nFrames, int nFeatures);/* Free */void KLTFreeTrackingContext( KLT_TrackingContext tc);void KLTFreeFeatureList( KLT_FeatureList fl);void KLTFreeFeatureHistory( KLT_FeatureHistory fh);void KLTFreeFeatureTable( KLT_FeatureTable ft);/* Processing */void KLTSelectGoodFeatures( KLT_TrackingContext tc, KLT_PixelType *img, int ncols, int nrows, KLT_FeatureList fl);void KLTTrackFeatures( KLT_TrackingContext tc, KLT_PixelType *img1, KLT_PixelType *img2, int ncols, int nrows, KLT_FeatureList fl);void KLTReplaceLostFeatures( KLT_TrackingContext tc, KLT_PixelType *img, int ncols, int nrows, KLT_FeatureList fl);/* Utilities */int KLTCountRemainingFeatures( KLT_FeatureList fl);void KLTPrintTrackingContext( KLT_TrackingContext tc);void KLTChangeTCPyramid( KLT_TrackingContext tc, int search_range);void KLTUpdateTCBorder( KLT_TrackingContext tc);void KLTStopSequentialMode( KLT_TrackingContext tc);void KLTSetVerbosity( int verbosity);float _KLTComputeSmoothSigma( KLT_TrackingContext tc);/* Storing/Extracting Features */void KLTStoreFeatureList( KLT_FeatureList fl, KLT_FeatureTable ft, int frame);void KLTExtractFeatureList( KLT_FeatureList fl, KLT_FeatureTable ft, int frame);void KLTStoreFeatureHistory( KLT_FeatureHistory fh, KLT_FeatureTable ft, int feat);void KLTExtractFeatureHistory( KLT_FeatureHistory fh, KLT_FeatureTable ft, int feat);/* Writing/Reading */void KLTWriteFeatureListToPPM( KLT_FeatureList fl, KLT_PixelType *greyimg, int ncols, int nrows, char *filename);void KLTWriteFeatureList( KLT_FeatureList fl, char *filename, char *fmt);void KLTWriteFeatureHistory( KLT_FeatureHistory fh, char *filename, char *fmt);void KLTWriteFeatureTable( KLT_FeatureTable ft, char *filename, char *fmt);KLT_FeatureList KLTReadFeatureList( KLT_FeatureList fl, char *filename);KLT_FeatureHistory KLTReadFeatureHistory( KLT_FeatureHistory fh, char *filename);KLT_FeatureTable KLTReadFeatureTable( KLT_FeatureTable ft, char *filename);#ifdef __cplusplus}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -