Blame view

3rdparty/opencv-4.5.4/modules/features2d/src/kaze/KAZEFeatures.h 2.04 KB
f4334277   Hu Chunming   提交3rdparty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
  
  /**
   * @file KAZE.h
   * @brief Main program for detecting and computing descriptors in a nonlinear
   * scale space
   * @date Jan 21, 2012
   * @author Pablo F. Alcantarilla
   */
  
  #ifndef __OPENCV_FEATURES_2D_KAZE_FEATURES_H__
  #define __OPENCV_FEATURES_2D_KAZE_FEATURES_H__
  
  /* ************************************************************************* */
  // Includes
  #include "KAZEConfig.h"
  #include "nldiffusion_functions.h"
  #include "fed.h"
  #include "TEvolution.h"
  
  namespace cv
  {
  
  /* ************************************************************************* */
  // KAZE Class Declaration
  class KAZEFeatures
  {
  private:
  
      /// Parameters of the Nonlinear diffusion class
      KAZEOptions options_;               ///< Configuration options for KAZE
      std::vector<TEvolution> evolution_;    ///< Vector of nonlinear diffusion evolution
  
      /// Vector of keypoint vectors for finding extrema in multiple threads
      std::vector<std::vector<cv::KeyPoint> > kpts_par_;
  
      /// FED parameters
      int ncycles_;                  ///< Number of cycles
      bool reordering_;              ///< Flag for reordering time steps
      std::vector<std::vector<float > > tsteps_;  ///< Vector of FED dynamic time steps
      std::vector<int> nsteps_;      ///< Vector of number of steps per cycle
  
  public:
  
      /// Constructor
      KAZEFeatures(KAZEOptions& options);
  
      /// Public methods for KAZE interface
      void Allocate_Memory_Evolution(void);
      int Create_Nonlinear_Scale_Space(const cv::Mat& img);
      void Feature_Detection(std::vector<cv::KeyPoint>& kpts);
      void Feature_Description(std::vector<cv::KeyPoint>& kpts, cv::Mat& desc);
      static void Compute_Main_Orientation(cv::KeyPoint& kpt, const std::vector<TEvolution>& evolution_, const KAZEOptions& options);
  
      /// Feature Detection Methods
      void Compute_KContrast(const cv::Mat& img, const float& kper);
      void Compute_Multiscale_Derivatives(void);
      void Compute_Detector_Response(void);
      void Determinant_Hessian(std::vector<cv::KeyPoint>& kpts);
      void Do_Subpixel_Refinement(std::vector<cv::KeyPoint>& kpts);
  };
  
  }
  
  #endif