From 22bd127365bf87824e4559683062290c3c859501 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Fri, 7 Oct 2011 13:55:26 +0000 Subject: [PATCH] Added performance tests for cv:phase and cv::SURF --- modules/core/perf/perf_math.cpp | 21 +++++++ modules/features2d/perf/perf_main.cpp | 3 + modules/features2d/perf/perf_precomp.cpp | 1 + modules/features2d/perf/perf_precomp.hpp | 12 ++++ modules/features2d/perf/perf_surf.cpp | 73 ++++++++++++++++++++++++ 5 files changed, 110 insertions(+) create mode 100644 modules/core/perf/perf_math.cpp create mode 100644 modules/features2d/perf/perf_main.cpp create mode 100644 modules/features2d/perf/perf_precomp.cpp create mode 100644 modules/features2d/perf/perf_precomp.hpp create mode 100644 modules/features2d/perf/perf_surf.cpp diff --git a/modules/core/perf/perf_math.cpp b/modules/core/perf/perf_math.cpp new file mode 100644 index 0000000000..eb526c1a49 --- /dev/null +++ b/modules/core/perf/perf_math.cpp @@ -0,0 +1,21 @@ +#include "perf_precomp.hpp" + +using namespace std; +using namespace cv; +using namespace perf; + +typedef perf::TestBaseWithParam VectorLength; + +PERF_TEST_P(VectorLength, phase32f, testing::Values(128, 1000, 128*1024, 512*1024, 1024*1024)) +{ + int length = GetParam(); + vector X(length); + vector Y(length); + vector angle(length); + + declare.in(X, Y, WARMUP_RNG).out(angle); + + TEST_CYCLE(200) cv::phase(X, Y, angle, true); + + SANITY_CHECK(angle); +} diff --git a/modules/features2d/perf/perf_main.cpp b/modules/features2d/perf/perf_main.cpp new file mode 100644 index 0000000000..17a99fcc19 --- /dev/null +++ b/modules/features2d/perf/perf_main.cpp @@ -0,0 +1,3 @@ +#include "perf_precomp.hpp" + +CV_PERF_TEST_MAIN(features2d) diff --git a/modules/features2d/perf/perf_precomp.cpp b/modules/features2d/perf/perf_precomp.cpp new file mode 100644 index 0000000000..8552ac3d42 --- /dev/null +++ b/modules/features2d/perf/perf_precomp.cpp @@ -0,0 +1 @@ +#include "perf_precomp.hpp" diff --git a/modules/features2d/perf/perf_precomp.hpp b/modules/features2d/perf/perf_precomp.hpp new file mode 100644 index 0000000000..c986237c1e --- /dev/null +++ b/modules/features2d/perf/perf_precomp.hpp @@ -0,0 +1,12 @@ +#ifndef __OPENCV_PERF_PRECOMP_HPP__ +#define __OPENCV_PERF_PRECOMP_HPP__ + +#include "opencv2/ts/ts.hpp" +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/features2d/features2d.hpp" + +#if GTEST_CREATE_SHARED_LIBRARY +#error no modules except ts should have GTEST_CREATE_SHARED_LIBRARY defined +#endif + +#endif diff --git a/modules/features2d/perf/perf_surf.cpp b/modules/features2d/perf/perf_surf.cpp new file mode 100644 index 0000000000..4d63b8f84f --- /dev/null +++ b/modules/features2d/perf/perf_surf.cpp @@ -0,0 +1,73 @@ +#include "perf_precomp.hpp" + +using namespace std; +using namespace cv; +using namespace perf; + + +typedef perf::TestBaseWithParam surf; + +#define SURF_IMAGES \ + "cv/detectors_descriptors_evaluation/images_datasets/leuven/img1.png",\ + "stitching/a3.jpg" + +PERF_TEST_P( surf, detect, testing::Values(SURF_IMAGES) ) +{ + String filename = getDataPath(GetParam()); + Mat frame = imread(filename, IMREAD_GRAYSCALE); + + if (frame.empty()) + FAIL() << "Unable to load source image " << filename; + + Mat mask; + declare.in(frame).time(90); + SURF detector; + vector points; + + TEST_CYCLE(100) + { + detector(frame, mask, points); + } +} + +PERF_TEST_P( surf, extract, testing::Values(SURF_IMAGES) ) +{ + String filename = getDataPath(GetParam()); + Mat frame = imread(filename, IMREAD_GRAYSCALE); + + if (frame.empty()) + FAIL() << "Unable to load source image " << filename; + + Mat mask; + declare.in(frame).time(90); + + SURF detector; + vector points; + vector descriptors; + detector(frame, mask, points); + + TEST_CYCLE(100) + { + detector(frame, mask, points, descriptors, true); + } +} + +PERF_TEST_P( surf, full, testing::Values(SURF_IMAGES) ) +{ + String filename = getDataPath(GetParam()); + Mat frame = imread(filename, IMREAD_GRAYSCALE); + + if (frame.empty()) + FAIL() << "Unable to load source image " << filename; + + Mat mask; + declare.in(frame).time(90); + SURF detector; + vector points; + vector descriptors; + + TEST_CYCLE(100) + { + detector(frame, mask, points, descriptors, false); + } +}