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