moved nonfree and a part of features2d to opencv_contrib/xfeatures2d
This commit is contained in:
@@ -73,8 +73,6 @@ The following detector types are supported:
|
||||
|
||||
* ``"FAST"`` -- :ocv:class:`FastFeatureDetector`
|
||||
* ``"STAR"`` -- :ocv:class:`StarFeatureDetector`
|
||||
* ``"SIFT"`` -- :ocv:class:`SIFT` (nonfree module)
|
||||
* ``"SURF"`` -- :ocv:class:`SURF` (nonfree module)
|
||||
* ``"ORB"`` -- :ocv:class:`ORB`
|
||||
* ``"BRISK"`` -- :ocv:class:`BRISK`
|
||||
* ``"MSER"`` -- :ocv:class:`MSER`
|
||||
@@ -164,55 +162,6 @@ Wrapping class for feature detection using the
|
||||
...
|
||||
};
|
||||
|
||||
|
||||
StarFeatureDetector
|
||||
-------------------
|
||||
.. ocv:class:: StarFeatureDetector : public FeatureDetector
|
||||
|
||||
The class implements the keypoint detector introduced by [Agrawal08]_, synonym of ``StarDetector``. ::
|
||||
|
||||
class StarFeatureDetector : public FeatureDetector
|
||||
{
|
||||
public:
|
||||
StarFeatureDetector( int maxSize=16, int responseThreshold=30,
|
||||
int lineThresholdProjected = 10,
|
||||
int lineThresholdBinarized=8, int suppressNonmaxSize=5 );
|
||||
virtual void read( const FileNode& fn );
|
||||
virtual void write( FileStorage& fs ) const;
|
||||
protected:
|
||||
...
|
||||
};
|
||||
|
||||
.. [Agrawal08] Agrawal, M., Konolige, K., & Blas, M. R. (2008). Censure: Center surround extremas for realtime feature detection and matching. In Computer Vision–ECCV 2008 (pp. 102-115). Springer Berlin Heidelberg.
|
||||
|
||||
|
||||
DenseFeatureDetector
|
||||
--------------------
|
||||
.. ocv:class:: DenseFeatureDetector : public FeatureDetector
|
||||
|
||||
Class for generation of image features which are distributed densely and regularly over the image. ::
|
||||
|
||||
class DenseFeatureDetector : public FeatureDetector
|
||||
{
|
||||
public:
|
||||
DenseFeatureDetector( float initFeatureScale=1.f, int featureScaleLevels=1,
|
||||
float featureScaleMul=0.1f,
|
||||
int initXyStep=6, int initImgBound=0,
|
||||
bool varyXyStepWithScale=true,
|
||||
bool varyImgBoundWithScale=false );
|
||||
protected:
|
||||
...
|
||||
};
|
||||
|
||||
The detector generates several levels (in the amount of ``featureScaleLevels``) of features. Features of each level are located in the nodes of a regular grid over the image (excluding the image boundary of given size). The level parameters (a feature scale, a node size, a size of boundary) are multiplied by ``featureScaleMul`` with level index growing depending on input flags, viz.:
|
||||
|
||||
* Feature scale is multiplied always.
|
||||
|
||||
* The grid node size is multiplied if ``varyXyStepWithScale`` is ``true``.
|
||||
|
||||
* Size of image boundary is multiplied if ``varyImgBoundWithScale`` is ``true``.
|
||||
|
||||
|
||||
SimpleBlobDetector
|
||||
-------------------
|
||||
.. ocv:class:: SimpleBlobDetector : public FeatureDetector
|
||||
@@ -277,226 +226,3 @@ This class performs several filtrations of returned blobs. You should set ``filt
|
||||
|
||||
|
||||
Default values of parameters are tuned to extract dark circular blobs.
|
||||
|
||||
GridAdaptedFeatureDetector
|
||||
--------------------------
|
||||
.. ocv:class:: GridAdaptedFeatureDetector : public FeatureDetector
|
||||
|
||||
Class adapting a detector to partition the source image into a grid and detect points in each cell. ::
|
||||
|
||||
class GridAdaptedFeatureDetector : public FeatureDetector
|
||||
{
|
||||
public:
|
||||
/*
|
||||
* detector Detector that will be adapted.
|
||||
* maxTotalKeypoints Maximum count of keypoints detected on the image.
|
||||
* Only the strongest keypoints will be kept.
|
||||
* gridRows Grid row count.
|
||||
* gridCols Grid column count.
|
||||
*/
|
||||
GridAdaptedFeatureDetector( const Ptr<FeatureDetector>& detector,
|
||||
int maxTotalKeypoints, int gridRows=4,
|
||||
int gridCols=4 );
|
||||
virtual void read( const FileNode& fn );
|
||||
virtual void write( FileStorage& fs ) const;
|
||||
protected:
|
||||
...
|
||||
};
|
||||
|
||||
PyramidAdaptedFeatureDetector
|
||||
-----------------------------
|
||||
.. ocv:class:: PyramidAdaptedFeatureDetector : public FeatureDetector
|
||||
|
||||
Class adapting a detector to detect points over multiple levels of a Gaussian pyramid. Consider using this class for detectors that are not inherently scaled. ::
|
||||
|
||||
class PyramidAdaptedFeatureDetector : public FeatureDetector
|
||||
{
|
||||
public:
|
||||
PyramidAdaptedFeatureDetector( const Ptr<FeatureDetector>& detector,
|
||||
int levels=2 );
|
||||
virtual void read( const FileNode& fn );
|
||||
virtual void write( FileStorage& fs ) const;
|
||||
protected:
|
||||
...
|
||||
};
|
||||
|
||||
|
||||
DynamicAdaptedFeatureDetector
|
||||
-----------------------------
|
||||
.. ocv:class:: DynamicAdaptedFeatureDetector : public FeatureDetector
|
||||
|
||||
Adaptively adjusting detector that iteratively detects features until the desired number is found. ::
|
||||
|
||||
class DynamicAdaptedFeatureDetector: public FeatureDetector
|
||||
{
|
||||
public:
|
||||
DynamicAdaptedFeatureDetector( const Ptr<AdjusterAdapter>& adjuster,
|
||||
int min_features=400, int max_features=500, int max_iters=5 );
|
||||
...
|
||||
};
|
||||
|
||||
If the detector is persisted, it "remembers" the parameters
|
||||
used for the last detection. In this case, the detector may be used for consistent numbers
|
||||
of keypoints in a set of temporally related images, such as video streams or
|
||||
panorama series.
|
||||
|
||||
``DynamicAdaptedFeatureDetector`` uses another detector, such as FAST or SURF, to do the dirty work,
|
||||
with the help of ``AdjusterAdapter`` .
|
||||
If the detected number of features is not large enough,
|
||||
``AdjusterAdapter`` adjusts the detection parameters so that the next detection
|
||||
results in a bigger or smaller number of features. This is repeated until either the number of desired features are found
|
||||
or the parameters are maxed out.
|
||||
|
||||
Adapters can be easily implemented for any detector via the
|
||||
``AdjusterAdapter`` interface.
|
||||
|
||||
Beware that this is not thread-safe since the adjustment of parameters requires modification of the feature detector class instance.
|
||||
|
||||
Example of creating ``DynamicAdaptedFeatureDetector`` : ::
|
||||
|
||||
//sample usage:
|
||||
//will create a detector that attempts to find
|
||||
//100 - 110 FAST Keypoints, and will at most run
|
||||
//FAST feature detection 10 times until that
|
||||
//number of keypoints are found
|
||||
Ptr<FeatureDetector> detector(new DynamicAdaptedFeatureDetector (100, 110, 10,
|
||||
new FastAdjuster(20,true)));
|
||||
|
||||
|
||||
DynamicAdaptedFeatureDetector::DynamicAdaptedFeatureDetector
|
||||
------------------------------------------------------------
|
||||
The constructor
|
||||
|
||||
.. ocv:function:: DynamicAdaptedFeatureDetector::DynamicAdaptedFeatureDetector( const Ptr<AdjusterAdapter>& adjuster, int min_features=400, int max_features=500, int max_iters=5 )
|
||||
|
||||
:param adjuster: :ocv:class:`AdjusterAdapter` that detects features and adjusts parameters.
|
||||
|
||||
:param min_features: Minimum desired number of features.
|
||||
|
||||
:param max_features: Maximum desired number of features.
|
||||
|
||||
:param max_iters: Maximum number of times to try adjusting the feature detector parameters. For :ocv:class:`FastAdjuster` , this number can be high, but with ``Star`` or ``Surf`` many iterations can be time-consuming. At each iteration the detector is rerun.
|
||||
|
||||
AdjusterAdapter
|
||||
---------------
|
||||
.. ocv:class:: AdjusterAdapter : public FeatureDetector
|
||||
|
||||
Class providing an interface for adjusting parameters of a feature detector. This interface is used by :ocv:class:`DynamicAdaptedFeatureDetector` . It is a wrapper for :ocv:class:`FeatureDetector` that enables adjusting parameters after feature detection. ::
|
||||
|
||||
class AdjusterAdapter: public FeatureDetector
|
||||
{
|
||||
public:
|
||||
virtual ~AdjusterAdapter() {}
|
||||
virtual void tooFew(int min, int n_detected) = 0;
|
||||
virtual void tooMany(int max, int n_detected) = 0;
|
||||
virtual bool good() const = 0;
|
||||
virtual Ptr<AdjusterAdapter> clone() const = 0;
|
||||
static Ptr<AdjusterAdapter> create( const String& detectorType );
|
||||
};
|
||||
|
||||
|
||||
See
|
||||
:ocv:class:`FastAdjuster`,
|
||||
:ocv:class:`StarAdjuster`, and
|
||||
:ocv:class:`SurfAdjuster` for concrete implementations.
|
||||
|
||||
AdjusterAdapter::tooFew
|
||||
---------------------------
|
||||
Adjusts the detector parameters to detect more features.
|
||||
|
||||
.. ocv:function:: void AdjusterAdapter::tooFew(int min, int n_detected)
|
||||
|
||||
:param min: Minimum desired number of features.
|
||||
|
||||
:param n_detected: Number of features detected during the latest run.
|
||||
|
||||
Example: ::
|
||||
|
||||
void FastAdjuster::tooFew(int min, int n_detected)
|
||||
{
|
||||
thresh_--;
|
||||
}
|
||||
|
||||
AdjusterAdapter::tooMany
|
||||
----------------------------
|
||||
Adjusts the detector parameters to detect less features.
|
||||
|
||||
.. ocv:function:: void AdjusterAdapter::tooMany(int max, int n_detected)
|
||||
|
||||
:param max: Maximum desired number of features.
|
||||
|
||||
:param n_detected: Number of features detected during the latest run.
|
||||
|
||||
Example: ::
|
||||
|
||||
void FastAdjuster::tooMany(int min, int n_detected)
|
||||
{
|
||||
thresh_++;
|
||||
}
|
||||
|
||||
|
||||
AdjusterAdapter::good
|
||||
---------------------
|
||||
Returns false if the detector parameters cannot be adjusted any more.
|
||||
|
||||
.. ocv:function:: bool AdjusterAdapter::good() const
|
||||
|
||||
Example: ::
|
||||
|
||||
bool FastAdjuster::good() const
|
||||
{
|
||||
return (thresh_ > 1) && (thresh_ < 200);
|
||||
}
|
||||
|
||||
AdjusterAdapter::create
|
||||
-----------------------
|
||||
Creates an adjuster adapter by name
|
||||
|
||||
.. ocv:function:: Ptr<AdjusterAdapter> AdjusterAdapter::create( const String& detectorType )
|
||||
|
||||
Creates an adjuster adapter by name ``detectorType``. The detector name is the same as in :ocv:func:`FeatureDetector::create`, but now supports ``"FAST"``, ``"STAR"``, and ``"SURF"`` only.
|
||||
|
||||
FastAdjuster
|
||||
------------
|
||||
.. ocv:class:: FastAdjuster : public AdjusterAdapter
|
||||
|
||||
:ocv:class:`AdjusterAdapter` for :ocv:class:`FastFeatureDetector`. This class decreases or increases the threshold value by 1. ::
|
||||
|
||||
class FastAdjuster FastAdjuster: public AdjusterAdapter
|
||||
{
|
||||
public:
|
||||
FastAdjuster(int init_thresh = 20, bool nonmax = true);
|
||||
...
|
||||
};
|
||||
|
||||
StarAdjuster
|
||||
------------
|
||||
.. ocv:class:: StarAdjuster : public AdjusterAdapter
|
||||
|
||||
:ocv:class:`AdjusterAdapter` for :ocv:class:`StarFeatureDetector`. This class adjusts the ``responseThreshhold`` of ``StarFeatureDetector``. ::
|
||||
|
||||
class StarAdjuster: public AdjusterAdapter
|
||||
{
|
||||
StarAdjuster(double initial_thresh = 30.0);
|
||||
...
|
||||
};
|
||||
|
||||
SurfAdjuster
|
||||
------------
|
||||
.. ocv:class:: SurfAdjuster : public AdjusterAdapter
|
||||
|
||||
:ocv:class:`AdjusterAdapter` for ``SurfFeatureDetector``. ::
|
||||
|
||||
class CV_EXPORTS SurfAdjuster: public AdjusterAdapter
|
||||
{
|
||||
public:
|
||||
SurfAdjuster( double initial_thresh=400.f, double min_thresh=2, double max_thresh=1000 );
|
||||
|
||||
virtual void tooFew(int minv, int n_detected);
|
||||
virtual void tooMany(int maxv, int n_detected);
|
||||
virtual bool good() const;
|
||||
|
||||
virtual Ptr<AdjusterAdapter> clone() const;
|
||||
|
||||
...
|
||||
};
|
||||
|
Reference in New Issue
Block a user