mirror of
https://github.com/opencv/opencv_contrib.git
synced 2025-10-20 04:25:42 +08:00
Merge pull request #2449 from saskatchewancatch:issue-16736
* issue-16736: quick step towards moving SIFT from non-free to free. Moves include, tests, and implementation to free area.
This commit is contained in:

committed by
GitHub

parent
9c0ae273fd
commit
f3982616a8
@@ -65,6 +65,39 @@ namespace cv
|
||||
namespace xfeatures2d
|
||||
{
|
||||
|
||||
|
||||
/** @brief Class for extracting keypoints and computing descriptors using the Scale Invariant Feature Transform
|
||||
(SIFT) algorithm by D. Lowe @cite Lowe04 .
|
||||
*/
|
||||
class CV_EXPORTS_W SIFT : public Feature2D
|
||||
{
|
||||
public:
|
||||
/**
|
||||
@param nfeatures The number of best features to retain. The features are ranked by their scores
|
||||
(measured in SIFT algorithm as the local contrast)
|
||||
|
||||
@param nOctaveLayers The number of layers in each octave. 3 is the value used in D. Lowe paper. The
|
||||
number of octaves is computed automatically from the image resolution.
|
||||
|
||||
@param contrastThreshold The contrast threshold used to filter out weak features in semi-uniform
|
||||
(low-contrast) regions. The larger the threshold, the less features are produced by the detector.
|
||||
|
||||
@param edgeThreshold The threshold used to filter out edge-like features. Note that the its meaning
|
||||
is different from the contrastThreshold, i.e. the larger the edgeThreshold, the less features are
|
||||
filtered out (more features are retained).
|
||||
|
||||
@param sigma The sigma of the Gaussian applied to the input image at the octave \#0. If your image
|
||||
is captured with a weak camera with soft lenses, you might want to reduce the number.
|
||||
*/
|
||||
CV_WRAP static Ptr<SIFT> create(int nfeatures = 0, int nOctaveLayers = 3,
|
||||
double contrastThreshold = 0.04, double edgeThreshold = 10,
|
||||
double sigma = 1.6);
|
||||
};
|
||||
|
||||
typedef SIFT SiftFeatureDetector;
|
||||
typedef SIFT SiftDescriptorExtractor;
|
||||
|
||||
|
||||
//! @addtogroup xfeatures2d_experiment
|
||||
//! @{
|
||||
|
||||
|
@@ -50,40 +50,6 @@ namespace cv
|
||||
namespace xfeatures2d
|
||||
{
|
||||
|
||||
//! @addtogroup xfeatures2d_nonfree
|
||||
//! @{
|
||||
|
||||
/** @brief Class for extracting keypoints and computing descriptors using the Scale Invariant Feature Transform
|
||||
(SIFT) algorithm by D. Lowe @cite Lowe04 .
|
||||
*/
|
||||
class CV_EXPORTS_W SIFT : public Feature2D
|
||||
{
|
||||
public:
|
||||
/**
|
||||
@param nfeatures The number of best features to retain. The features are ranked by their scores
|
||||
(measured in SIFT algorithm as the local contrast)
|
||||
|
||||
@param nOctaveLayers The number of layers in each octave. 3 is the value used in D. Lowe paper. The
|
||||
number of octaves is computed automatically from the image resolution.
|
||||
|
||||
@param contrastThreshold The contrast threshold used to filter out weak features in semi-uniform
|
||||
(low-contrast) regions. The larger the threshold, the less features are produced by the detector.
|
||||
|
||||
@param edgeThreshold The threshold used to filter out edge-like features. Note that the its meaning
|
||||
is different from the contrastThreshold, i.e. the larger the edgeThreshold, the less features are
|
||||
filtered out (more features are retained).
|
||||
|
||||
@param sigma The sigma of the Gaussian applied to the input image at the octave \#0. If your image
|
||||
is captured with a weak camera with soft lenses, you might want to reduce the number.
|
||||
*/
|
||||
CV_WRAP static Ptr<SIFT> create( int nfeatures = 0, int nOctaveLayers = 3,
|
||||
double contrastThreshold = 0.04, double edgeThreshold = 10,
|
||||
double sigma = 1.6);
|
||||
};
|
||||
|
||||
typedef SIFT SiftFeatureDetector;
|
||||
typedef SIFT SiftDescriptorExtractor;
|
||||
|
||||
/** @brief Class for extracting Speeded Up Robust Features from an image @cite Bay06 .
|
||||
|
||||
The algorithm parameters:
|
||||
|
@@ -114,8 +114,6 @@ namespace cv
|
||||
namespace xfeatures2d
|
||||
{
|
||||
|
||||
#ifdef OPENCV_ENABLE_NONFREE
|
||||
|
||||
/*!
|
||||
SIFT implementation.
|
||||
|
||||
@@ -1202,14 +1200,5 @@ void SIFT_Impl::detectAndCompute(InputArray _image, InputArray _mask,
|
||||
}
|
||||
}
|
||||
|
||||
#else // ! #ifdef OPENCV_ENABLE_NONFREE
|
||||
Ptr<SIFT> SIFT::create( int, int, double, double, double )
|
||||
{
|
||||
CV_Error(Error::StsNotImplemented,
|
||||
"This algorithm is patented and is excluded in this configuration; "
|
||||
"Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library");
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -987,13 +987,13 @@ void CV_DescriptorMatcherTest::run( int )
|
||||
* Detectors
|
||||
*/
|
||||
|
||||
#ifdef OPENCV_ENABLE_NONFREE
|
||||
TEST( Features2d_Detector_SIFT, regression )
|
||||
{
|
||||
CV_FeatureDetectorTest test( "detector-sift", SIFT::create() );
|
||||
test.safe_run();
|
||||
}
|
||||
|
||||
#ifdef OPENCV_ENABLE_NONFREE
|
||||
TEST( Features2d_Detector_SURF, regression )
|
||||
{
|
||||
CV_FeatureDetectorTest test( "detector-surf", SURF::create() );
|
||||
@@ -1028,7 +1028,6 @@ TEST( Features2d_Detector_Harris_Laplace_Affine, regression )
|
||||
/*
|
||||
* Descriptors
|
||||
*/
|
||||
#ifdef OPENCV_ENABLE_NONFREE
|
||||
TEST( Features2d_DescriptorExtractor_SIFT, regression )
|
||||
{
|
||||
CV_DescriptorExtractorTest<L1<float> > test( "descriptor-sift", 1.0f,
|
||||
@@ -1036,6 +1035,7 @@ TEST( Features2d_DescriptorExtractor_SIFT, regression )
|
||||
test.safe_run();
|
||||
}
|
||||
|
||||
#ifdef OPENCV_ENABLE_NONFREE
|
||||
TEST( Features2d_DescriptorExtractor_SURF, regression )
|
||||
{
|
||||
#ifdef HAVE_OPENCL
|
||||
@@ -1334,8 +1334,9 @@ protected:
|
||||
Ptr<Feature2D> f2d;
|
||||
};
|
||||
|
||||
#ifdef OPENCV_ENABLE_NONFREE
|
||||
TEST(Features2d_SIFTHomographyTest, regression) { CV_DetectPlanarTest test("SIFT", 80, SIFT::create()); test.safe_run(); }
|
||||
|
||||
#ifdef OPENCV_ENABLE_NONFREE
|
||||
TEST(Features2d_SURFHomographyTest, regression) { CV_DetectPlanarTest test("SURF", 80, SURF::create()); test.safe_run(); }
|
||||
#endif
|
||||
|
||||
@@ -1400,13 +1401,13 @@ protected:
|
||||
Ptr<FeatureDetector> featureDetector_;
|
||||
};
|
||||
|
||||
#ifdef OPENCV_ENABLE_NONFREE
|
||||
TEST(Features2d_SIFT_using_mask, regression)
|
||||
{
|
||||
FeatureDetectorUsingMaskTest test(SIFT::create());
|
||||
test.safe_run();
|
||||
}
|
||||
|
||||
#ifdef OPENCV_ENABLE_NONFREE
|
||||
TEST(DISABLED_Features2d_SURF_using_mask, regression)
|
||||
{
|
||||
FeatureDetectorUsingMaskTest test(SURF::create());
|
||||
|
Reference in New Issue
Block a user