1#include "perf_precomp.hpp"
2
3using namespace std;
4using namespace cv;
5using namespace perf;
6using std::tr1::make_tuple;
7using std::tr1::get;
8
9CV_ENUM(BorderType, BORDER_REPLICATE, BORDER_CONSTANT, BORDER_REFLECT, BORDER_REFLECT_101)
10
11typedef std::tr1::tuple<string, int, int, double, BorderType> Img_BlockSize_ApertureSize_k_BorderType_t;
12typedef perf::TestBaseWithParam<Img_BlockSize_ApertureSize_k_BorderType_t> Img_BlockSize_ApertureSize_k_BorderType;
13
14PERF_TEST_P(Img_BlockSize_ApertureSize_k_BorderType, cornerHarris,
15            testing::Combine(
16                testing::Values( "stitching/a1.png", "cv/shared/pic5.png"),
17                testing::Values( 3, 5 ),
18                testing::Values( 3, 5 ),
19                testing::Values( 0.04, 0.1 ),
20                BorderType::all()
21                )
22          )
23{
24    string filename = getDataPath(get<0>(GetParam()));
25    int blockSize = get<1>(GetParam());
26    int apertureSize = get<2>(GetParam());
27    double k = get<3>(GetParam());
28    BorderType borderType = get<4>(GetParam());
29
30    Mat src = imread(filename, IMREAD_GRAYSCALE);
31    ASSERT_FALSE(src.empty()) << "Unable to load source image: " << filename;
32
33    Mat dst;
34
35    TEST_CYCLE() cornerHarris(src, dst, blockSize, apertureSize, k, borderType);
36
37    SANITY_CHECK(dst, 2e-5, ERROR_RELATIVE);
38}
39
40typedef std::tr1::tuple<string, int, int, BorderType> Img_BlockSize_ApertureSize_BorderType_t;
41typedef perf::TestBaseWithParam<Img_BlockSize_ApertureSize_BorderType_t> Img_BlockSize_ApertureSize_BorderType;
42
43PERF_TEST_P(Img_BlockSize_ApertureSize_BorderType, cornerEigenValsAndVecs,
44            testing::Combine(
45                testing::Values( "stitching/a1.png", "cv/shared/pic5.png"),
46                testing::Values( 3, 5 ),
47                testing::Values( 3, 5 ),
48                BorderType::all()
49            )
50          )
51{
52    string filename = getDataPath(get<0>(GetParam()));
53    int blockSize = get<1>(GetParam());
54    int apertureSize = get<2>(GetParam());
55    BorderType borderType = get<3>(GetParam());
56
57    Mat src = imread(filename, IMREAD_GRAYSCALE);
58    ASSERT_FALSE(src.empty()) << "Unable to load source image: " << filename;
59
60    Mat dst;
61
62    TEST_CYCLE() cornerEigenValsAndVecs(src, dst, blockSize, apertureSize, borderType);
63
64    Mat l1;
65    extractChannel(dst, l1, 0);
66
67    SANITY_CHECK(l1, 2e-5, ERROR_RELATIVE);
68}
69
70PERF_TEST_P(Img_BlockSize_ApertureSize_BorderType, cornerMinEigenVal,
71            testing::Combine(
72                testing::Values( "stitching/a1.png", "cv/shared/pic5.png"),
73                testing::Values( 3, 5 ),
74                testing::Values( 3, 5 ),
75                BorderType::all()
76            )
77          )
78{
79    string filename = getDataPath(get<0>(GetParam()));
80    int blockSize = get<1>(GetParam());
81    int apertureSize = get<2>(GetParam());
82    BorderType borderType = get<3>(GetParam());
83
84    Mat src = imread(filename, IMREAD_GRAYSCALE);
85    ASSERT_FALSE(src.empty()) << "Unable to load source image: " << filename;
86
87    Mat dst;
88
89    TEST_CYCLE() cornerMinEigenVal(src, dst, blockSize, apertureSize, borderType);
90
91    SANITY_CHECK(dst, 2e-5, ERROR_RELATIVE);
92}
93