Commit 97a5dd0e authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

fixed several test failures; currently 9 out of 73 tests fail

parent d017faa0
...@@ -187,6 +187,28 @@ namespace cv ...@@ -187,6 +187,28 @@ namespace cv
} }
} }
void write(FileStorage& fs) const
{
fs << "descriptor" << descriptor;
fs << "descriptor_channels" << descriptor_channels;
fs << "descriptor_size" << descriptor_size;
fs << "threshold" << threshold;
fs << "octaves" << octaves;
fs << "sublevels" << sublevels;
fs << "diffusivity" << diffusivity;
}
void read(const FileNode& fn)
{
descriptor = (int)fn["descriptor"];
descriptor_channels = (int)fn["descriptor_channels"];
descriptor_size = (int)fn["descriptor_size"];
threshold = (float)fn["threshold"];
octaves = (int)fn["octaves"];
sublevels = (int)fn["sublevels"];
diffusivity = (int)fn["diffusivity"];
}
int descriptor; int descriptor;
int descriptor_channels; int descriptor_channels;
int descriptor_size; int descriptor_size;
......
...@@ -2099,7 +2099,7 @@ BriskLayer::BriskLayer(const BriskLayer& layer, int mode) ...@@ -2099,7 +2099,7 @@ BriskLayer::BriskLayer(const BriskLayer& layer, int mode)
void void
BriskLayer::getAgastPoints(int threshold, std::vector<KeyPoint>& keypoints) BriskLayer::getAgastPoints(int threshold, std::vector<KeyPoint>& keypoints)
{ {
fast_9_16_->set("threshold", threshold); fast_9_16_ = FastFeatureDetector::create(threshold);
fast_9_16_->detect(img_, keypoints); fast_9_16_->detect(img_, keypoints);
// also write scores // also write scores
......
...@@ -60,6 +60,11 @@ void Feature2D::detect( InputArray image, ...@@ -60,6 +60,11 @@ void Feature2D::detect( InputArray image,
std::vector<KeyPoint>& keypoints, std::vector<KeyPoint>& keypoints,
InputArray mask ) InputArray mask )
{ {
if( image.empty() )
{
keypoints.clear();
return;
}
detectAndCompute(image, mask, keypoints, noArray(), false); detectAndCompute(image, mask, keypoints, noArray(), false);
} }
...@@ -97,6 +102,11 @@ void Feature2D::compute( InputArray image, ...@@ -97,6 +102,11 @@ void Feature2D::compute( InputArray image,
std::vector<KeyPoint>& keypoints, std::vector<KeyPoint>& keypoints,
OutputArray descriptors ) OutputArray descriptors )
{ {
if( image.empty() )
{
descriptors.release();
return;
}
detectAndCompute(image, noArray(), keypoints, descriptors, true); detectAndCompute(image, noArray(), keypoints, descriptors, true);
} }
......
...@@ -132,6 +132,26 @@ namespace cv ...@@ -132,6 +132,26 @@ namespace cv
} }
} }
void write(FileStorage& fs) const
{
fs << "extended" << (int)extended;
fs << "upright" << (int)upright;
fs << "threshold" << threshold;
fs << "octaves" << octaves;
fs << "sublevels" << sublevels;
fs << "diffusivity" << diffusivity;
}
void read(const FileNode& fn)
{
extended = (int)fn["extended"] != 0;
upright = (int)fn["upright"] != 0;
threshold = (float)fn["threshold"];
octaves = (int)fn["octaves"];
sublevels = (int)fn["sublevels"];
diffusivity = (int)fn["diffusivity"];
}
bool extended; bool extended;
bool upright; bool upright;
float threshold; float threshold;
......
...@@ -72,7 +72,7 @@ void CV_BRISKTest::run( int ) ...@@ -72,7 +72,7 @@ void CV_BRISKTest::run( int )
cvtColor(image1, gray1, COLOR_BGR2GRAY); cvtColor(image1, gray1, COLOR_BGR2GRAY);
cvtColor(image2, gray2, COLOR_BGR2GRAY); cvtColor(image2, gray2, COLOR_BGR2GRAY);
Ptr<FeatureDetector> detector = Algorithm::create<FeatureDetector>("Feature2D.BRISK"); Ptr<FeatureDetector> detector = BRISK::create();
vector<KeyPoint> keypoints1; vector<KeyPoint> keypoints1;
vector<KeyPoint> keypoints2; vector<KeyPoint> keypoints2;
......
...@@ -532,12 +532,14 @@ void CV_DescriptorMatcherTest::run( int ) ...@@ -532,12 +532,14 @@ void CV_DescriptorMatcherTest::run( int )
TEST( Features2d_DescriptorMatcher_BruteForce, regression ) TEST( Features2d_DescriptorMatcher_BruteForce, regression )
{ {
CV_DescriptorMatcherTest test( "descriptor-matcher-brute-force", Algorithm::create<DescriptorMatcher>("DescriptorMatcher.BFMatcher"), 0.01f ); CV_DescriptorMatcherTest test( "descriptor-matcher-brute-force",
DescriptorMatcher::create("BFMatcher"), 0.01f );
test.safe_run(); test.safe_run();
} }
TEST( Features2d_DescriptorMatcher_FlannBased, regression ) TEST( Features2d_DescriptorMatcher_FlannBased, regression )
{ {
CV_DescriptorMatcherTest test( "descriptor-matcher-flann-based", Algorithm::create<DescriptorMatcher>("DescriptorMatcher.FlannBasedMatcher"), 0.04f ); CV_DescriptorMatcherTest test( "descriptor-matcher-flann-based",
DescriptorMatcher::create("FlannBasedMatcher"), 0.04f );
test.safe_run(); test.safe_run();
} }
...@@ -47,9 +47,7 @@ using namespace cv; ...@@ -47,9 +47,7 @@ using namespace cv;
TEST(Features2D_ORB, _1996) TEST(Features2D_ORB, _1996)
{ {
Ptr<FeatureDetector> fd = ORB::create(); Ptr<FeatureDetector> fd = ORB::create(10000, 1.2f, 8, 31, 0, 2, ORB::HARRIS_SCORE, 31, 20);
fd->set("nFeatures", 10000);//setting a higher maximum to make effect of threshold visible
fd->set("fastThreshold", 20);//more features than the default
Ptr<DescriptorExtractor> de = fd; Ptr<DescriptorExtractor> de = fd;
Mat image = imread(string(cvtest::TS::ptr()->get_data_path()) + "shared/lena.png"); Mat image = imread(string(cvtest::TS::ptr()->get_data_path()) + "shared/lena.png");
......
...@@ -615,19 +615,15 @@ TEST(Features2d_RotationInvariance_Detector_ORB, regression) ...@@ -615,19 +615,15 @@ TEST(Features2d_RotationInvariance_Detector_ORB, regression)
TEST(Features2d_RotationInvariance_Descriptor_BRISK, regression) TEST(Features2d_RotationInvariance_Descriptor_BRISK, regression)
{ {
DescriptorRotationInvarianceTest test(Algorithm::create<FeatureDetector>("Feature2D.BRISK"), Ptr<Feature2D> f2d = BRISK::create();
Algorithm::create<DescriptorExtractor>("Feature2D.BRISK"), DescriptorRotationInvarianceTest test(f2d, f2d, f2d->defaultNorm(), 0.99f);
Algorithm::create<DescriptorExtractor>("Feature2D.BRISK")->defaultNorm(),
0.99f);
test.safe_run(); test.safe_run();
} }
TEST(Features2d_RotationInvariance_Descriptor_ORB, regression) TEST(Features2d_RotationInvariance_Descriptor_ORB, regression)
{ {
DescriptorRotationInvarianceTest test(Algorithm::create<FeatureDetector>("Feature2D.ORB"), Ptr<Feature2D> f2d = ORB::create();
Algorithm::create<DescriptorExtractor>("Feature2D.ORB"), DescriptorRotationInvarianceTest test(f2d, f2d, f2d->defaultNorm(), 0.99f);
Algorithm::create<DescriptorExtractor>("Feature2D.ORB")->defaultNorm(),
0.99f);
test.safe_run(); test.safe_run();
} }
...@@ -646,25 +642,19 @@ TEST(Features2d_RotationInvariance_Descriptor_ORB, regression) ...@@ -646,25 +642,19 @@ TEST(Features2d_RotationInvariance_Descriptor_ORB, regression)
TEST(Features2d_ScaleInvariance_Detector_BRISK, regression) TEST(Features2d_ScaleInvariance_Detector_BRISK, regression)
{ {
DetectorScaleInvarianceTest test(Algorithm::create<FeatureDetector>("Feature2D.BRISK"), DetectorScaleInvarianceTest test(BRISK::create(), 0.08f, 0.49f);
0.08f,
0.49f);
test.safe_run(); test.safe_run();
} }
TEST(Features2d_ScaleInvariance_Detector_KAZE, regression) TEST(Features2d_ScaleInvariance_Detector_KAZE, regression)
{ {
DetectorScaleInvarianceTest test(Algorithm::create<FeatureDetector>("Feature2D.KAZE"), DetectorScaleInvarianceTest test(KAZE::create(), 0.08f, 0.49f);
0.08f,
0.49f);
test.safe_run(); test.safe_run();
} }
TEST(Features2d_ScaleInvariance_Detector_AKAZE, regression) TEST(Features2d_ScaleInvariance_Detector_AKAZE, regression)
{ {
DetectorScaleInvarianceTest test(Algorithm::create<FeatureDetector>("Feature2D.AKAZE"), DetectorScaleInvarianceTest test(AKAZE::create(), 0.08f, 0.49f);
0.08f,
0.49f);
test.safe_run(); test.safe_run();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment