• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*#include "perf_precomp.hpp"
2 #include "distransform.cpp"
3 
4 using namespace std;
5 using namespace cv;
6 using namespace perf;
7 
8 typedef perf::TestBaseWithParam<Size> Size_DistanceTransform;
9 
10 PERF_TEST_P(Size_DistanceTransform, icvTrueDistTrans, testing::Values(TYPICAL_MAT_SIZES))
11 {
12     Size size = GetParam();
13     Mat src(size, CV_8UC1);
14     Mat dst(size, CV_32FC1);
15     CvMat srcStub = src;
16     CvMat dstStub = dst;
17 
18     declare.in(src, WARMUP_RNG).out(dst);
19 
20     TEST_CYCLE() icvTrueDistTrans(&srcStub, &dstStub);
21 
22     SANITY_CHECK(dst, 1);
23 }*/
24 
25 #include "perf_precomp.hpp"
26 
27 using namespace std;
28 using namespace cv;
29 using namespace perf;
30 using std::tr1::make_tuple;
31 using std::tr1::get;
32 
33 CV_ENUM(DistanceType, DIST_L1, DIST_L2 , DIST_C)
34 CV_ENUM(MaskSize, DIST_MASK_3, DIST_MASK_5, DIST_MASK_PRECISE)
35 CV_ENUM(DstType, CV_8U, CV_32F)
36 CV_ENUM(LabelType, DIST_LABEL_CCOMP, DIST_LABEL_PIXEL)
37 
38 typedef std::tr1::tuple<Size, DistanceType, MaskSize, DstType> SrcSize_DistType_MaskSize_DstType;
39 typedef std::tr1::tuple<Size, DistanceType, MaskSize, LabelType> SrcSize_DistType_MaskSize_LabelType;
40 typedef perf::TestBaseWithParam<SrcSize_DistType_MaskSize_DstType> DistanceTransform_Test;
41 typedef perf::TestBaseWithParam<SrcSize_DistType_MaskSize_LabelType> DistanceTransform_NeedLabels_Test;
42 
43 PERF_TEST_P(DistanceTransform_Test, distanceTransform,
44             testing::Combine(
45                 testing::Values(cv::Size(640, 480), cv::Size(800, 600), cv::Size(1024, 768), cv::Size(1280, 1024)),
46                 DistanceType::all(),
47                 MaskSize::all(),
48                 DstType::all()
49                 )
50             )
51 {
52     Size srcSize = get<0>(GetParam());
53     int distanceType = get<1>(GetParam());
54     int maskSize = get<2>(GetParam());
55     int dstType = get<3>(GetParam());
56 
57     Mat src(srcSize, CV_8U);
58     Mat dst(srcSize, dstType);
59 
60     declare
61         .in(src, WARMUP_RNG)
62         .out(dst, WARMUP_RNG)
63         .time(30);
64 
65     TEST_CYCLE() distanceTransform( src, dst, distanceType, maskSize, dstType);
66 
67     double eps = 2e-4;
68 
69     SANITY_CHECK(dst, eps);
70 }
71 
72 PERF_TEST_P(DistanceTransform_NeedLabels_Test, distanceTransform_NeedLabels,
73             testing::Combine(
74                 testing::Values(cv::Size(640, 480), cv::Size(800, 600), cv::Size(1024, 768), cv::Size(1280, 1024)),
75                 DistanceType::all(),
76                 MaskSize::all(),
77                 LabelType::all()
78                 )
79     )
80 {
81     Size srcSize = get<0>(GetParam());
82     int distanceType = get<1>(GetParam());
83     int maskSize = get<2>(GetParam());
84     int labelType = get<3>(GetParam());
85 
86     Mat src(srcSize, CV_8U);
87     Mat label(srcSize, CV_32S);
88     Mat dst(srcSize, CV_32F);
89 
90     declare
91         .in(src, WARMUP_RNG)
92         .out(label, WARMUP_RNG)
93         .out(dst, WARMUP_RNG)
94         .time(30);
95 
96     TEST_CYCLE() distanceTransform( src, dst, label, distanceType, maskSize, labelType);
97 
98     double eps = 2e-4;
99 
100     SANITY_CHECK(label, eps);
101     SANITY_CHECK(dst, eps);
102 }
103