MCPcopy Create free account
hub / github.com/davisking/dlib / run_test

Function run_test

dlib/test/max_sum_submatrix.cpp:42–99  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40 }
41
42 void run_test(
43 const int num
44 )
45 {
46 static dlib::rand rnd;
47
48 matrix<int> mat, mask;
49
50 mat.set_size(rnd.get_random_32bit_number()%1000 + 1,
51 rnd.get_random_32bit_number()%1000 + 1);
52 mask.set_size(mat.nr(), mat.nc());
53 mask = 0;
54
55 mat = -10000;
56
57 std::vector<rectangle> true_rects;
58
59 for (int i = 0; i < num; ++i)
60 {
61 const int width = rnd.get_random_32bit_number()%100 + 1;
62 const int height = rnd.get_random_32bit_number()%100 + 1;
63
64 rectangle rect = centered_rect(rnd.get_random_16bit_number()%mat.nc(),
65 rnd.get_random_16bit_number()%mat.nr(),
66 width,height);
67 rect = get_rect(mat).intersect(rect);
68
69 // make sure this new rectangle doesn't overlap or abut any others
70 if (sum(subm(mask,grow_rect(rect,1).intersect(get_rect(mask)))) == 0)
71 {
72 set_subm(mat, rect) = rnd.get_random_8bit_number()%100 + 1;
73 set_subm(mask, rect) = 1;
74 true_rects.push_back(rect);
75 }
76 }
77
78
79 std::vector<rectangle> res;
80 res = max_sum_submatrix(mat, true_rects.size()+10, 0);
81
82 DLIB_TEST(res.size() == true_rects.size());
83
84 // make sure big rectangles come first
85 for (unsigned long i = 0; i+1 < res.size(); ++i)
86 {
87 DLIB_TEST(sum(subm(mat,res[i])) >= sum(subm(mat,res[i+1])));
88 }
89
90 // make sure rectangles match
91 sort(true_rects.begin(), true_rects.end(), order_rects);
92 sort(res.begin(), res.end(), order_rects);
93 for (unsigned long i = 0; i < res.size(); ++i)
94 {
95 DLIB_TEST_MSG(res[i] == true_rects[i],
96 "i: " << i << " res[i]: " << res[i] << " true_rects[i]: " << true_rects[i]);
97 }
98
99 }

Callers 1

perform_testMethod · 0.70

Calls 15

centered_rectFunction · 0.85
get_rectFunction · 0.85
submFunction · 0.85
set_submFunction · 0.85
max_sum_submatrixFunction · 0.85
sumFunction · 0.50
grow_rectFunction · 0.50
set_sizeMethod · 0.45
nrMethod · 0.45

Tested by

no test coverage detected