sift.h
上传用户:lwxipeng
上传日期:2022-05-16
资源大小:15982k
文件大小:5k
源码类别:

视频捕捉/采集

开发平台:

Visual C++

  1. /**@file
  2. Functions for detecting SIFT image features.
  3. For more information, refer to:
  4. Lowe, D.  Distinctive image features from scale-invariant keypoints.
  5. <EM>International Journal of Computer Vision, 60</EM>, 2 (2004),
  6. pp.91--110.
  7. Copyright (C) 2006  Rob Hess <hess@eecs.oregonstate.edu>
  8. Note: The SIFT algorithm is patented in the United States and cannot be
  9. used in commercial products without a license from the University of
  10. British Columbia.  For more information, refer to the file LICENSE.ubc
  11. that accompanied this distribution.
  12. @version 1.1.1-20070330
  13. */
  14. #ifndef SIFT_H
  15. #define SIFT_H
  16. #include "cxcore.h"
  17. #ifdef __cplusplus 
  18. extern "C" { 
  19. #endif 
  20. /******************************** Structures *********************************/
  21. /** holds feature data relevant to detection */
  22. struct detection_data
  23. {
  24. int r;
  25. int c;
  26. int octv;
  27. int intvl;
  28. double subintvl;
  29. double scl_octv;
  30. };
  31. struct feature;
  32. /******************************* Defs and macros *****************************/
  33. /** default number of sampled intervals per octave */
  34. #define SIFT_INTVLS 3
  35. /** default sigma for initial gaussian smoothing */
  36. #define SIFT_SIGMA 1.6
  37. /** default threshold on keypoint contrast |D(x)| */
  38. #define SIFT_CONTR_THR 0.04
  39. /** default threshold on keypoint ratio of principle curvatures */
  40. #define SIFT_CURV_THR 10
  41. /** double image size before pyramid construction? */
  42. #define SIFT_IMG_DBL 1
  43. /** default width of descriptor histogram array */
  44. #define SIFT_DESCR_WIDTH 4
  45. /** default number of bins per histogram in descriptor array */
  46. #define SIFT_DESCR_HIST_BINS 8
  47. /* assumed gaussian blur for input image */
  48. #define SIFT_INIT_SIGMA 0.5
  49. /* width of border in which to ignore keypoints */
  50. #define SIFT_IMG_BORDER 5
  51. /* maximum steps of keypoint interpolation before failure */
  52. #define SIFT_MAX_INTERP_STEPS 5
  53. /* default number of bins in histogram for orientation assignment */
  54. #define SIFT_ORI_HIST_BINS 36
  55. /* determines gaussian sigma for orientation assignment */
  56. #define SIFT_ORI_SIG_FCTR 1.5
  57. /* determines the radius of the region used in orientation assignment */
  58. #define SIFT_ORI_RADIUS 3.0 * SIFT_ORI_SIG_FCTR
  59. /* number of passes of orientation histogram smoothing */
  60. #define SIFT_ORI_SMOOTH_PASSES 2
  61. /* orientation magnitude relative to max that results in new feature */
  62. #define SIFT_ORI_PEAK_RATIO 0.8
  63. /* determines the size of a single descriptor orientation histogram */
  64. #define SIFT_DESCR_SCL_FCTR 3.0
  65. /* threshold on magnitude of elements of descriptor vector */
  66. #define SIFT_DESCR_MAG_THR 0.2
  67. /* factor used to convert floating-point descriptor to unsigned char */
  68. #define SIFT_INT_DESCR_FCTR 512.0
  69. /* returns a feature's detection data */
  70. #define feat_detection_data(f) ( (struct detection_data*)(f->feature_data) )
  71. /*************************** Function Prototypes *****************************/
  72. /**
  73. Finds SIFT features in an image using default parameter values.  All
  74. detected features are stored in the array pointed to by a feat.
  75. @param img the image in which to detect features
  76. @param feat a pointer to an array in which to store detected features
  77. @return Returns the number of features stored in a feat or -1 on failure
  78. @see _sift_features()
  79. */
  80. extern int sift_features( IplImage* img, struct feature** feat );
  81. /**
  82. Finda SIFT features in an image using user-specified parameter values.  All
  83. detected features are stored in the array pointed to by a feat.
  84. @param img the image in which to detect features
  85. @param feat a pointer to an array in which to store detected features
  86. @param intvls the number of intervals sampled per octave of scale space
  87. @param sigma the amount of Gaussian smoothing applied to each image level
  88. before building the scale space representation for an octave
  89. @param contr_thr a threshold on the value of the scale space function
  90. f$left|D(hat{x})right|f$, where f$hat{x}f$ is a vector specifying
  91. feature location and scale, used to reject unstable features;  assumes
  92. pixel values in the range [0, 1]
  93. @param curv_thr threshold on a feature's ratio of principle curvatures
  94. used to reject features that are too edge-like
  95. @param img_dbl should be 1 if image doubling prior to scale space
  96. construction is desired or 0 if not
  97. @param descr_width the width, f$nf$, of the f$n times nf$ array of
  98. orientation histograms used to compute a feature's descriptor
  99. @param descr_hist_bins the number of orientations in each of the
  100. histograms in the array used to compute a feature's descriptor
  101. @return Returns the number of keypoints stored in a feat or -1 on failure
  102. @see sift_features()
  103. */
  104. extern int _sift_features( IplImage* img, struct feature** feat, int intvls,
  105.   double sigma, double contr_thr, int curv_thr,
  106.   int img_dbl, int descr_width, int descr_hist_bins );
  107. #ifdef __cplusplus 
  108. }
  109. #endif 
  110. #endif