123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #ifndef ORBEXTRACTOR_H
- #define ORBEXTRACTOR_H
- #include <vector>
- #include <list>
- #include <opencv2/opencv.hpp>
- namespace ORB_SLAM3
- {
- class ExtractorNode
- {
- public:
- ExtractorNode():bNoMore(false){}
- void DivideNode(ExtractorNode &n1, ExtractorNode &n2, ExtractorNode &n3, ExtractorNode &n4);
- std::vector<cv::KeyPoint> vKeys;
- cv::Point2i UL, UR, BL, BR;
- std::list<ExtractorNode>::iterator lit;
- bool bNoMore;
- };
- class ORBextractor
- {
- public:
-
- enum {HARRIS_SCORE=0, FAST_SCORE=1 };
- ORBextractor(int nfeatures, float scaleFactor, int nlevels,
- int iniThFAST, int minThFAST);
- ~ORBextractor(){}
-
-
-
- int operator()( cv::InputArray _image, cv::InputArray _mask,
- std::vector<cv::KeyPoint>& _keypoints,
- cv::OutputArray _descriptors, std::vector<int> &vLappingArea);
- int inline GetLevels(){
- return nlevels;}
- float inline GetScaleFactor(){
- return scaleFactor;}
- std::vector<float> inline GetScaleFactors(){
- return mvScaleFactor;
- }
- std::vector<float> inline GetInverseScaleFactors(){
- return mvInvScaleFactor;
- }
- std::vector<float> inline GetScaleSigmaSquares(){
- return mvLevelSigma2;
- }
- std::vector<float> inline GetInverseScaleSigmaSquares(){
- return mvInvLevelSigma2;
- }
- std::vector<cv::Mat> mvImagePyramid;
- protected:
- void ComputePyramid(cv::Mat image);
- void ComputeKeyPointsOctTree(std::vector<std::vector<cv::KeyPoint> >& allKeypoints);
- std::vector<cv::KeyPoint> DistributeOctTree(const std::vector<cv::KeyPoint>& vToDistributeKeys, const int &minX,
- const int &maxX, const int &minY, const int &maxY, const int &nFeatures, const int &level);
- void ComputeKeyPointsOld(std::vector<std::vector<cv::KeyPoint> >& allKeypoints);
- std::vector<cv::Point> pattern;
- int nfeatures;
- double scaleFactor;
- int nlevels;
- int iniThFAST;
- int minThFAST;
- std::vector<int> mnFeaturesPerLevel;
- std::vector<int> umax;
- std::vector<float> mvScaleFactor;
- std::vector<float> mvInvScaleFactor;
- std::vector<float> mvLevelSigma2;
- std::vector<float> mvInvLevelSigma2;
- };
- }
- #endif
|