123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953 |
- #ifndef __OPENCV_XFEATURES2D_HPP__
- #define __OPENCV_XFEATURES2D_HPP__
- #include "opencv2/features2d.hpp"
- #include "opencv2/xfeatures2d/nonfree.hpp"
- namespace cv
- {
- namespace xfeatures2d
- {
- class CV_EXPORTS_W FREAK : public Feature2D
- {
- public:
- enum
- {
- NB_SCALES = 64, NB_PAIRS = 512, NB_ORIENPAIRS = 45
- };
-
- CV_WRAP static Ptr<FREAK> create(bool orientationNormalized = true,
- bool scaleNormalized = true,
- float patternScale = 22.0f,
- int nOctaves = 4,
- const std::vector<int>& selectedPairs = std::vector<int>());
- };
- class CV_EXPORTS_W StarDetector : public Feature2D
- {
- public:
-
- CV_WRAP static Ptr<StarDetector> create(int maxSize=45, int responseThreshold=30,
- int lineThresholdProjected=10,
- int lineThresholdBinarized=8,
- int suppressNonmaxSize=5);
- };
- class CV_EXPORTS_W BriefDescriptorExtractor : public Feature2D
- {
- public:
- CV_WRAP static Ptr<BriefDescriptorExtractor> create( int bytes = 32, bool use_orientation = false );
- };
- class CV_EXPORTS_W LUCID : public Feature2D
- {
- public:
-
- CV_WRAP static Ptr<LUCID> create(const int lucid_kernel = 1, const int blur_kernel = 2);
- };
- class CV_EXPORTS_W LATCH : public Feature2D
- {
- public:
- CV_WRAP static Ptr<LATCH> create(int bytes = 32, bool rotationInvariance = true, int half_ssd_size=3);
- };
- class CV_EXPORTS_W DAISY : public Feature2D
- {
- public:
- enum
- {
- NRM_NONE = 100, NRM_PARTIAL = 101, NRM_FULL = 102, NRM_SIFT = 103,
- };
- CV_WRAP static Ptr<DAISY> create( float radius = 15, int q_radius = 3, int q_theta = 8,
- int q_hist = 8, int norm = DAISY::NRM_NONE, InputArray H = noArray(),
- bool interpolation = true, bool use_orientation = false );
-
- virtual void compute( InputArray image, std::vector<KeyPoint>& keypoints, OutputArray descriptors ) = 0;
- virtual void compute( InputArrayOfArrays images,
- std::vector<std::vector<KeyPoint> >& keypoints,
- OutputArrayOfArrays descriptors );
-
- virtual void compute( InputArray image, Rect roi, OutputArray descriptors ) = 0;
-
- virtual void compute( InputArray image, OutputArray descriptors ) = 0;
-
- virtual void GetDescriptor( double y, double x, int orientation, float* descriptor ) const = 0;
-
- virtual bool GetDescriptor( double y, double x, int orientation, float* descriptor, double* H ) const = 0;
-
- virtual void GetUnnormalizedDescriptor( double y, double x, int orientation, float* descriptor ) const = 0;
-
- virtual bool GetUnnormalizedDescriptor( double y, double x, int orientation, float* descriptor , double *H ) const = 0;
- };
- class CV_EXPORTS_W MSDDetector : public Feature2D {
- public:
- static Ptr<MSDDetector> create(int m_patch_radius = 3, int m_search_area_radius = 5,
- int m_nms_radius = 5, int m_nms_scale_radius = 0, float m_th_saliency = 250.0f, int m_kNN = 4,
- float m_scale_factor = 1.25f, int m_n_scales = -1, bool m_compute_orientation = false);
- };
- class CV_EXPORTS_W VGG : public Feature2D
- {
- public:
- CV_WRAP enum
- {
- VGG_120 = 100, VGG_80 = 101, VGG_64 = 102, VGG_48 = 103,
- };
- CV_WRAP static Ptr<VGG> create( int desc = VGG::VGG_120, float isigma = 1.4f,
- bool img_normalize = true, bool use_scale_orientation = true,
- float scale_factor = 6.25f, bool dsc_normalize = false );
-
- CV_WRAP virtual void compute( InputArray image, std::vector<KeyPoint>& keypoints, OutputArray descriptors ) = 0;
- };
- class CV_EXPORTS_W BoostDesc : public Feature2D
- {
- public:
- CV_WRAP enum
- {
- BGM = 100, BGM_HARD = 101, BGM_BILINEAR = 102, LBGM = 200,
- BINBOOST_64 = 300, BINBOOST_128 = 301, BINBOOST_256 = 302
- };
- CV_WRAP static Ptr<BoostDesc> create( int desc = BoostDesc::BINBOOST_256,
- bool use_scale_orientation = true, float scale_factor = 6.25f );
- };
- class CV_EXPORTS_W PCTSignatures : public Algorithm
- {
- public:
-
- enum DistanceFunction
- {
- L0_25, L0_5, L1, L2, L2SQUARED, L5, L_INFINITY
- };
-
- enum PointDistribution
- {
- UNIFORM,
- REGULAR,
- NORMAL
- };
-
- enum SimilarityFunction
- {
- MINUS,
- GAUSSIAN,
- HEURISTIC
- };
-
- CV_WRAP static Ptr<PCTSignatures> create(
- const int initSampleCount = 2000,
- const int initSeedCount = 400,
- const int pointDistribution = 0);
-
- CV_WRAP static Ptr<PCTSignatures> create(
- const std::vector<Point2f>& initSamplingPoints,
- const int initSeedCount);
-
- CV_WRAP static Ptr<PCTSignatures> create(
- const std::vector<Point2f>& initSamplingPoints,
- const std::vector<int>& initClusterSeedIndexes);
-
- CV_WRAP virtual void computeSignature(
- InputArray image,
- OutputArray signature) const = 0;
-
- CV_WRAP virtual void computeSignatures(
- const std::vector<Mat>& images,
- std::vector<Mat>& signatures) const = 0;
-
- CV_WRAP static void drawSignature(
- InputArray source,
- InputArray signature,
- OutputArray result,
- float radiusToShorterSideRatio = 1.0 / 8,
- int borderThickness = 1);
-
- CV_WRAP static void generateInitPoints(
- std::vector<Point2f>& initPoints,
- const int count,
- int pointDistribution);
-
-
- CV_WRAP virtual int getSampleCount() const = 0;
-
- CV_WRAP virtual int getGrayscaleBits() const = 0;
-
- CV_WRAP virtual void setGrayscaleBits(int grayscaleBits) = 0;
-
- CV_WRAP virtual int getWindowRadius() const = 0;
-
- CV_WRAP virtual void setWindowRadius(int radius) = 0;
-
- CV_WRAP virtual float getWeightX() const = 0;
-
- CV_WRAP virtual void setWeightX(float weight) = 0;
-
- CV_WRAP virtual float getWeightY() const = 0;
-
- CV_WRAP virtual void setWeightY(float weight) = 0;
-
- CV_WRAP virtual float getWeightL() const = 0;
-
- CV_WRAP virtual void setWeightL(float weight) = 0;
-
- CV_WRAP virtual float getWeightA() const = 0;
-
- CV_WRAP virtual void setWeightA(float weight) = 0;
-
- CV_WRAP virtual float getWeightB() const = 0;
-
- CV_WRAP virtual void setWeightB(float weight) = 0;
-
- CV_WRAP virtual float getWeightContrast() const = 0;
-
- CV_WRAP virtual void setWeightContrast(float weight) = 0;
-
- CV_WRAP virtual float getWeightEntropy() const = 0;
-
- CV_WRAP virtual void setWeightEntropy(float weight) = 0;
-
- CV_WRAP virtual std::vector<Point2f> getSamplingPoints() const = 0;
-
- CV_WRAP virtual void setWeight(int idx, float value) = 0;
-
- CV_WRAP virtual void setWeights(const std::vector<float>& weights) = 0;
-
- CV_WRAP virtual void setTranslation(int idx, float value) = 0;
-
- CV_WRAP virtual void setTranslations(const std::vector<float>& translations) = 0;
-
- CV_WRAP virtual void setSamplingPoints(std::vector<Point2f> samplingPoints) = 0;
-
-
- CV_WRAP virtual std::vector<int> getInitSeedIndexes() const = 0;
-
- CV_WRAP virtual void setInitSeedIndexes(std::vector<int> initSeedIndexes) = 0;
-
- CV_WRAP virtual int getInitSeedCount() const = 0;
-
- CV_WRAP virtual int getIterationCount() const = 0;
-
- CV_WRAP virtual void setIterationCount(int iterationCount) = 0;
-
- CV_WRAP virtual int getMaxClustersCount() const = 0;
-
- CV_WRAP virtual void setMaxClustersCount(int maxClustersCount) = 0;
-
- CV_WRAP virtual int getClusterMinSize() const = 0;
-
- CV_WRAP virtual void setClusterMinSize(int clusterMinSize) = 0;
-
- CV_WRAP virtual float getJoiningDistance() const = 0;
-
- CV_WRAP virtual void setJoiningDistance(float joiningDistance) = 0;
-
- CV_WRAP virtual float getDropThreshold() const = 0;
-
- CV_WRAP virtual void setDropThreshold(float dropThreshold) = 0;
-
- CV_WRAP virtual int getDistanceFunction() const = 0;
-
- CV_WRAP virtual void setDistanceFunction(int distanceFunction) = 0;
- };
- class CV_EXPORTS_W PCTSignaturesSQFD : public Algorithm
- {
- public:
-
- CV_WRAP static Ptr<PCTSignaturesSQFD> create(
- const int distanceFunction = 3,
- const int similarityFunction = 2,
- const float similarityParameter = 1.0f);
-
- CV_WRAP virtual float computeQuadraticFormDistance(
- InputArray _signature0,
- InputArray _signature1) const = 0;
-
- CV_WRAP virtual void computeQuadraticFormDistances(
- const Mat& sourceSignature,
- const std::vector<Mat>& imageSignatures,
- std::vector<float>& distances) const = 0;
- };
- class CV_EXPORTS Elliptic_KeyPoint : public KeyPoint
- {
- public:
- Size_<float> axes;
- float si;
- Matx23f transf;
- Elliptic_KeyPoint();
- Elliptic_KeyPoint(Point2f pt, float angle, Size axes, float size, float si);
- virtual ~Elliptic_KeyPoint();
- };
- class CV_EXPORTS_W HarrisLaplaceFeatureDetector : public Feature2D
- {
- public:
-
- CV_WRAP static Ptr<HarrisLaplaceFeatureDetector> create(
- int numOctaves=6,
- float corn_thresh=0.01f,
- float DOG_thresh=0.01f,
- int maxCorners=5000,
- int num_layers=4);
- };
- class CV_EXPORTS AffineFeature2D : public Feature2D
- {
- public:
-
- static Ptr<AffineFeature2D> create(
- Ptr<FeatureDetector> keypoint_detector,
- Ptr<DescriptorExtractor> descriptor_extractor);
-
- static Ptr<AffineFeature2D> create(
- Ptr<FeatureDetector> keypoint_detector)
- {
- return create(keypoint_detector, keypoint_detector);
- }
- using Feature2D::detect;
-
- virtual void detect(
- InputArray image,
- CV_OUT std::vector<Elliptic_KeyPoint>& keypoints,
- InputArray mask=noArray() ) = 0;
- using Feature2D::detectAndCompute;
-
- virtual void detectAndCompute(
- InputArray image,
- InputArray mask,
- CV_OUT std::vector<Elliptic_KeyPoint>& keypoints,
- OutputArray descriptors,
- bool useProvidedKeypoints=false ) = 0;
- };
- CV_EXPORTS void FASTForPointSet( InputArray image, CV_IN_OUT std::vector<KeyPoint>& keypoints,
- int threshold, bool nonmaxSuppression=true, int type=FastFeatureDetector::TYPE_9_16);
- }
- }
- #endif
|