nonfree.hpp 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /*M///////////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
  4. //
  5. // By downloading, copying, installing or using the software you agree to this license.
  6. // If you do not agree to this license, do not download, install,
  7. // copy or use the software.
  8. //
  9. //
  10. // License Agreement
  11. // For Open Source Computer Vision Library
  12. //
  13. // Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
  14. // Copyright (C) 2009, Willow Garage Inc., all rights reserved.
  15. // Third party copyrights are property of their respective owners.
  16. //
  17. // Redistribution and use in source and binary forms, with or without modification,
  18. // are permitted provided that the following conditions are met:
  19. //
  20. // * Redistribution's of source code must retain the above copyright notice,
  21. // this list of conditions and the following disclaimer.
  22. //
  23. // * Redistribution's in binary form must reproduce the above copyright notice,
  24. // this list of conditions and the following disclaimer in the documentation
  25. // and/or other materials provided with the distribution.
  26. //
  27. // * The name of the copyright holders may not be used to endorse or promote products
  28. // derived from this software without specific prior written permission.
  29. //
  30. // This software is provided by the copyright holders and contributors "as is" and
  31. // any express or implied warranties, including, but not limited to, the implied
  32. // warranties of merchantability and fitness for a particular purpose are disclaimed.
  33. // In no event shall the Intel Corporation or contributors be liable for any direct,
  34. // indirect, incidental, special, exemplary, or consequential damages
  35. // (including, but not limited to, procurement of substitute goods or services;
  36. // loss of use, data, or profits; or business interruption) however caused
  37. // and on any theory of liability, whether in contract, strict liability,
  38. // or tort (including negligence or otherwise) arising in any way out of
  39. // the use of this software, even if advised of the possibility of such damage.
  40. //
  41. //M*/
  42. #ifndef __OPENCV_XFEATURES2D_FEATURES_2D_HPP__
  43. #define __OPENCV_XFEATURES2D_FEATURES_2D_HPP__
  44. #include "opencv2/features2d.hpp"
  45. namespace cv
  46. {
  47. namespace xfeatures2d
  48. {
  49. /** @brief Class for extracting Speeded Up Robust Features from an image @cite Bay06 .
  50. The algorithm parameters:
  51. - member int extended
  52. - 0 means that the basic descriptors (64 elements each) shall be computed
  53. - 1 means that the extended descriptors (128 elements each) shall be computed
  54. - member int upright
  55. - 0 means that detector computes orientation of each feature.
  56. - 1 means that the orientation is not computed (which is much, much faster). For example,
  57. if you match images from a stereo pair, or do image stitching, the matched features
  58. likely have very similar angles, and you can speed up feature extraction by setting
  59. upright=1.
  60. - member double hessianThreshold
  61. Threshold for the keypoint detector. Only features, whose hessian is larger than
  62. hessianThreshold are retained by the detector. Therefore, the larger the value, the less
  63. keypoints you will get. A good default value could be from 300 to 500, depending from the
  64. image contrast.
  65. - member int nOctaves
  66. The number of a gaussian pyramid octaves that the detector uses. It is set to 4 by default.
  67. If you want to get very large features, use the larger value. If you want just small
  68. features, decrease it.
  69. - member int nOctaveLayers
  70. The number of images within each octave of a gaussian pyramid. It is set to 2 by default.
  71. @note
  72. - An example using the SURF feature detector can be found at
  73. opencv_source_code/samples/cpp/generic_descriptor_match.cpp
  74. - Another example using the SURF feature detector, extractor and matcher can be found at
  75. opencv_source_code/samples/cpp/matcher_simple.cpp
  76. */
  77. class CV_EXPORTS_W SURF : public Feature2D
  78. {
  79. public:
  80. /**
  81. @param hessianThreshold Threshold for hessian keypoint detector used in SURF.
  82. @param nOctaves Number of pyramid octaves the keypoint detector will use.
  83. @param nOctaveLayers Number of octave layers within each octave.
  84. @param extended Extended descriptor flag (true - use extended 128-element descriptors; false - use
  85. 64-element descriptors).
  86. @param upright Up-right or rotated features flag (true - do not compute orientation of features;
  87. false - compute orientation).
  88. */
  89. CV_WRAP static Ptr<SURF> create(double hessianThreshold=100,
  90. int nOctaves = 4, int nOctaveLayers = 3,
  91. bool extended = false, bool upright = false);
  92. CV_WRAP virtual void setHessianThreshold(double hessianThreshold) = 0;
  93. CV_WRAP virtual double getHessianThreshold() const = 0;
  94. CV_WRAP virtual void setNOctaves(int nOctaves) = 0;
  95. CV_WRAP virtual int getNOctaves() const = 0;
  96. CV_WRAP virtual void setNOctaveLayers(int nOctaveLayers) = 0;
  97. CV_WRAP virtual int getNOctaveLayers() const = 0;
  98. CV_WRAP virtual void setExtended(bool extended) = 0;
  99. CV_WRAP virtual bool getExtended() const = 0;
  100. CV_WRAP virtual void setUpright(bool upright) = 0;
  101. CV_WRAP virtual bool getUpright() const = 0;
  102. CV_WRAP String getDefaultName() const CV_OVERRIDE;
  103. };
  104. typedef SURF SurfFeatureDetector;
  105. typedef SURF SurfDescriptorExtractor;
  106. //! @}
  107. }
  108. } /* namespace cv */
  109. #endif