1 // This file is part of OpenCV project.
2 // It is subject to the license terms in the LICENSE file found in the top-level directory
3 // of this distribution and at http://opencv.org/license.html.
4 //
5 // Copyright (C) 2018-2021 Intel Corporation
6 
7 
8 #include "../perf_precomp.hpp"
9 #include "../common/gapi_core_perf_tests.hpp"
10 #include <opencv2/gapi/cpu/core.hpp>
11 
12 #define CORE_CPU cv::gapi::core::cpu::kernels()
13 
14 namespace opencv_test
15 {
16 
17 
18 INSTANTIATE_TEST_CASE_P(AddPerfTestCPU, AddPerfTest,
19     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
20         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
21         Values(-1, CV_8U, CV_16U, CV_32F),
22         Values(cv::compile_args(CORE_CPU))));
23 
24 INSTANTIATE_TEST_CASE_P(AddCPerfTestCPU, AddCPerfTest,
25     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
26         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
27         Values(-1, CV_8U, CV_16U, CV_32F),
28         Values(cv::compile_args(CORE_CPU))));
29 
30 INSTANTIATE_TEST_CASE_P(SubPerfTestCPU, SubPerfTest,
31     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
32         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
33         Values(-1, CV_8U, CV_16U, CV_32F),
34         Values(cv::compile_args(CORE_CPU))));
35 
36 INSTANTIATE_TEST_CASE_P(SubCPerfTestCPU, SubCPerfTest,
37     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
38         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
39         Values(-1, CV_8U, CV_16U, CV_32F),
40         Values(cv::compile_args(CORE_CPU))));
41 
42 INSTANTIATE_TEST_CASE_P(SubRCPerfTestCPU, SubRCPerfTest,
43     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
44         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
45         Values(-1, CV_8U, CV_16U, CV_32F),
46         Values(cv::compile_args(CORE_CPU))));
47 
48 INSTANTIATE_TEST_CASE_P(MulPerfTestCPU, MulPerfTest,
49     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
50         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
51         Values(-1, CV_8U, CV_16U, CV_32F),
52         Values(cv::compile_args(CORE_CPU))));
53 
54 INSTANTIATE_TEST_CASE_P(MulDoublePerfTestCPU, MulDoublePerfTest,
55     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
56         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
57         Values(-1, CV_8U, CV_16U, CV_32F),
58         Values(cv::compile_args(CORE_CPU))));
59 
60 INSTANTIATE_TEST_CASE_P(MulCPerfTestCPU, MulCPerfTest,
61     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
62         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
63         Values(-1, CV_8U, CV_16U, CV_32F),
64         Values(cv::compile_args(CORE_CPU))));
65 
66 INSTANTIATE_TEST_CASE_P(DivPerfTestCPU, DivPerfTest,
67     Combine(Values(AbsExact().to_compare_f()),
68         Values(szSmall128, szVGA, sz720p, sz1080p),
69         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
70         Values(-1, CV_8U, CV_16U, CV_32F),
71         Values(cv::compile_args(CORE_CPU))));
72 
73 INSTANTIATE_TEST_CASE_P(DivCPerfTestCPU, DivCPerfTest,
74     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
75         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
76         Values(-1, CV_8U, CV_16U, CV_32F),
77         Values(cv::compile_args(CORE_CPU))));
78 
79 INSTANTIATE_TEST_CASE_P(DivRCPerfTestCPU, DivRCPerfTest,
80     Combine(Values(AbsExact().to_compare_f()),
81         Values(szSmall128, szVGA, sz720p, sz1080p),
82         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
83         Values(-1, CV_8U, CV_16U, CV_32F),
84         Values(cv::compile_args(CORE_CPU))));
85 
86 INSTANTIATE_TEST_CASE_P(MaskPerfTestCPU, MaskPerfTest,
87     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
88         Values(CV_8UC1, CV_16UC1, CV_16SC1),
89         Values(cv::compile_args(CORE_CPU))));
90 
91 INSTANTIATE_TEST_CASE_P(MeanPerfTestCPU, MeanPerfTest,
92     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
93         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
94         Values(cv::compile_args(CORE_CPU))));
95 
96 INSTANTIATE_TEST_CASE_P(Polar2CartPerfTestCPU, Polar2CartPerfTest,
97     Combine(Values(AbsExact().to_compare_f()),
98         Values(szSmall128, szVGA, sz720p, sz1080p),
99         Values(cv::compile_args(CORE_CPU))));
100 
101 INSTANTIATE_TEST_CASE_P(Cart2PolarPerfTestCPU, Cart2PolarPerfTest,
102     Combine(Values(AbsExact().to_compare_f()),
103         Values(szSmall128, szVGA, sz720p, sz1080p),
104         Values(cv::compile_args(CORE_CPU))));
105 
106 INSTANTIATE_TEST_CASE_P(CmpPerfTestCPU, CmpPerfTest,
107     Combine(Values(CMP_EQ, CMP_GE, CMP_NE, CMP_GT, CMP_LT, CMP_LE),
108         Values(szSmall128, szVGA, sz720p, sz1080p),
109         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
110         Values(cv::compile_args(CORE_CPU))));
111 
112 INSTANTIATE_TEST_CASE_P(CmpWithScalarPerfTestCPU, CmpWithScalarPerfTest,
113     Combine(Values(AbsExact().to_compare_f()),
114             Values(CMP_EQ, CMP_GE, CMP_NE, CMP_GT, CMP_LT, CMP_LE),
115             Values(szSmall128, szVGA, sz720p, sz1080p),
116             Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
117             Values(cv::compile_args(CORE_CPU))));
118 
119 INSTANTIATE_TEST_CASE_P(BitwisePerfTestCPU, BitwisePerfTest,
120     Combine(Values(AND, OR, XOR),
121             testing::Bool(),
122             Values(szSmall128, szVGA, sz720p, sz1080p),
123             Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1),
124             Values(cv::compile_args(CORE_CPU))));
125 
126 INSTANTIATE_TEST_CASE_P(BitwiseNotPerfTestCPU, BitwiseNotPerfTest,
127     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
128         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
129         Values(cv::compile_args(CORE_CPU))));
130 
131 INSTANTIATE_TEST_CASE_P(SelectPerfTestCPU, SelectPerfTest,
132     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
133         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
134         Values(cv::compile_args(CORE_CPU))));
135 
136 INSTANTIATE_TEST_CASE_P(MinPerfTestCPU, MinPerfTest,
137     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
138         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
139         Values(cv::compile_args(CORE_CPU))));
140 
141 INSTANTIATE_TEST_CASE_P(MaxPerfTestCPU, MaxPerfTest,
142     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
143         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
144         Values(cv::compile_args(CORE_CPU))));
145 
146 INSTANTIATE_TEST_CASE_P(AbsDiffPerfTestCPU, AbsDiffPerfTest,
147     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
148         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
149         Values(cv::compile_args(CORE_CPU))));
150 
151 INSTANTIATE_TEST_CASE_P(AbsDiffCPerfTestCPU, AbsDiffCPerfTest,
152     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
153         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
154         Values(cv::compile_args(CORE_CPU))));
155 
156 INSTANTIATE_TEST_CASE_P(SumPerfTestCPU, SumPerfTest,
157     Combine(Values(AbsToleranceScalar(0.0).to_compare_f()),
158         Values(szSmall128, szVGA, sz720p, sz1080p),
159         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
160         //Values(0.0),
161         Values(cv::compile_args(CORE_CPU))));
162 
163 INSTANTIATE_TEST_CASE_P(CountNonZeroPerfTestCPU, CountNonZeroPerfTest,
164                         Combine(Values(AbsToleranceScalar(0.0).to_compare_f()),
165                                 Values(szSmall128, szVGA, sz720p, sz1080p),
166                                 Values(CV_8UC1, CV_16UC1, CV_16SC1, CV_32FC1),
167                                 Values(cv::compile_args(CORE_CPU))));
168 
169 INSTANTIATE_TEST_CASE_P(AddWeightedPerfTestCPU, AddWeightedPerfTest,
170     Combine(Values(Tolerance_FloatRel_IntAbs(1e-6, 1).to_compare_f()),
171         Values(szSmall128, szVGA, sz720p, sz1080p),
172         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
173         Values(-1, CV_8U, CV_16U, CV_32F),
174         Values(cv::compile_args(CORE_CPU))));
175 
176 INSTANTIATE_TEST_CASE_P(NormPerfTestCPU, NormPerfTest,
177     Combine(Values(AbsToleranceScalar(0.0).to_compare_f()),
178         Values(NORM_INF, NORM_L1, NORM_L2),
179         Values(szSmall128, szVGA, sz720p, sz1080p),
180         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
181         Values(cv::compile_args(CORE_CPU))));
182 
183 INSTANTIATE_TEST_CASE_P(IntegralPerfTestCPU, IntegralPerfTest,
184     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
185         Values(CV_8UC1, CV_16UC1, CV_16SC1, CV_32FC1),
186         Values(cv::compile_args(CORE_CPU))));
187 
188 INSTANTIATE_TEST_CASE_P(ThresholdPerfTestCPU, ThresholdPerfTest,
189     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
190         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
191         Values(cv::THRESH_BINARY, cv::THRESH_BINARY_INV, cv::THRESH_TRUNC, cv::THRESH_TOZERO, cv::THRESH_TOZERO_INV),
192         Values(cv::compile_args(CORE_CPU))));
193 
194 INSTANTIATE_TEST_CASE_P(ThresholdPerfTestCPU, ThresholdOTPerfTest,
195     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
196         Values(CV_8UC1),
197         Values(cv::THRESH_OTSU, cv::THRESH_TRIANGLE),
198         Values(cv::compile_args(CORE_CPU))));
199 
200 INSTANTIATE_TEST_CASE_P(InRangePerfTestCPU, InRangePerfTest,
201     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
202         Values(CV_8UC1),
203         Values(cv::compile_args(CORE_CPU))));
204 
205 INSTANTIATE_TEST_CASE_P(Split3PerfTestCPU, Split3PerfTest,
206     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
207         Values(cv::compile_args(CORE_CPU))));
208 
209 INSTANTIATE_TEST_CASE_P(Split4PerfTestCPU, Split4PerfTest,
210     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
211         Values(cv::compile_args(CORE_CPU))));
212 
213 INSTANTIATE_TEST_CASE_P(Merge3PerfTestCPU, Merge3PerfTest,
214     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
215         Values(cv::compile_args(CORE_CPU))));
216 
217 INSTANTIATE_TEST_CASE_P(Merge4PerfTestCPU, Merge4PerfTest,
218     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
219         Values(cv::compile_args(CORE_CPU))));
220 
221 INSTANTIATE_TEST_CASE_P(RemapPerfTestCPU, RemapPerfTest,
222     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
223         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
224         Values(cv::compile_args(CORE_CPU))));
225 
226 INSTANTIATE_TEST_CASE_P(FlipPerfTestCPU, FlipPerfTest,
227     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
228         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
229         Values(0, 1, -1),
230         Values(cv::compile_args(CORE_CPU))));
231 
232 INSTANTIATE_TEST_CASE_P(CropPerfTestCPU, CropPerfTest,
233     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
234         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
235         Values(cv::Rect(10, 8, 20, 35), cv::Rect(4, 10, 37, 50)),
236         Values(cv::compile_args(CORE_CPU))));
237 
238 INSTANTIATE_TEST_CASE_P(CopyPerfTestCPU, CopyPerfTest,
239     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
240         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
241         Values(cv::compile_args(CORE_CPU))));
242 
243 INSTANTIATE_TEST_CASE_P(ConcatHorPerfTestCPU, ConcatHorPerfTest,
244     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
245         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
246         Values(cv::compile_args(CORE_CPU))));
247 
248 INSTANTIATE_TEST_CASE_P(ConcatHorVecPerfTestCPU, ConcatHorVecPerfTest,
249     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
250         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
251         Values(cv::compile_args(CORE_CPU))));
252 
253 INSTANTIATE_TEST_CASE_P(ConcatVertPerfTestCPU, ConcatVertPerfTest,
254     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
255         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
256         Values(cv::compile_args(CORE_CPU))));
257 
258 INSTANTIATE_TEST_CASE_P(ConcatVertVecPerfTestCPU, ConcatVertVecPerfTest,
259     Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
260         Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
261         Values(cv::compile_args(CORE_CPU))));
262 
263 INSTANTIATE_TEST_CASE_P(LUTPerfTestCPU, LUTPerfTest,
264     Combine(Values(CV_8UC1, CV_8UC3),
265         Values(CV_8UC1),
266         Values(szSmall128, szVGA, sz720p, sz1080p),
267         Values(cv::compile_args(CORE_CPU))));
268 
269 INSTANTIATE_TEST_CASE_P(LUTPerfTestCustomCPU, LUTPerfTest,
270     Combine(Values(CV_8UC3),
271         Values(CV_8UC3),
272         Values(szSmall128, szVGA, sz720p, sz1080p),
273         Values(cv::compile_args(CORE_CPU))));
274 
275 
276 INSTANTIATE_TEST_CASE_P(ConvertToPerfTestCPU, ConvertToPerfTest,
277     Combine(Values(AbsExact().to_compare_f()),
278             Values(CV_8UC3, CV_8UC1, CV_16UC1, CV_16SC1, CV_32FC1),
279             Values(CV_8U, CV_16U, CV_16S, CV_32F),
280             Values(szSmall128, szVGA, sz720p, sz1080p),
281             Values(2.5, 1.0),
282             Values(0.0),
283             Values(cv::compile_args(CORE_CPU))));
284 
285 INSTANTIATE_TEST_CASE_P(KMeansNDPerfTestCPU, KMeansNDPerfTest,
286                         Combine(Values(cv::Size(1, 20),
287                                        cv::Size(16, 4096)),
288                                 Values(AbsTolerance(0.01).to_compare_obj()),
289                                 Values(5, 15),
290                                 Values(cv::KMEANS_RANDOM_CENTERS,
291                                        cv::KMEANS_PP_CENTERS,
292                                        cv::KMEANS_RANDOM_CENTERS | cv::KMEANS_USE_INITIAL_LABELS,
293                                        cv::KMEANS_PP_CENTERS     | cv::KMEANS_USE_INITIAL_LABELS),
294                                 Values(cv::compile_args(CORE_CPU))));
295 
296 INSTANTIATE_TEST_CASE_P(KMeans2DPerfTestCPU, KMeans2DPerfTest,
297                         Combine(Values(20, 4096),
298                                 Values(5, 15),
299                                 Values(cv::KMEANS_RANDOM_CENTERS,
300                                        cv::KMEANS_PP_CENTERS,
301                                        cv::KMEANS_RANDOM_CENTERS | cv::KMEANS_USE_INITIAL_LABELS,
302                                        cv::KMEANS_PP_CENTERS     | cv::KMEANS_USE_INITIAL_LABELS),
303                                 Values(cv::compile_args(CORE_CPU))));
304 
305 INSTANTIATE_TEST_CASE_P(KMeans3DPerfTestCPU, KMeans3DPerfTest,
306                         Combine(Values(20, 4096),
307                                 Values(5, 15),
308                                 Values(cv::KMEANS_RANDOM_CENTERS,
309                                        cv::KMEANS_PP_CENTERS,
310                                        cv::KMEANS_RANDOM_CENTERS | cv::KMEANS_USE_INITIAL_LABELS,
311                                        cv::KMEANS_PP_CENTERS     | cv::KMEANS_USE_INITIAL_LABELS),
312                                 Values(cv::compile_args(CORE_CPU))));
313 
314 INSTANTIATE_TEST_CASE_P(TransposePerfTestCPU, TransposePerfTest,
315                         Combine(Values(AbsExact().to_compare_f()),
316                                 Values(szSmall128, szVGA, sz720p, sz1080p),
317                                 Values(CV_8UC1, CV_16UC1, CV_16SC1, CV_32FC1,
318                                        CV_8UC2, CV_16UC2, CV_16SC2, CV_32FC2,
319                                        CV_8UC3, CV_16UC3, CV_16SC3, CV_32FC3),
320                                 Values(cv::compile_args(CORE_CPU))));
321 
322 INSTANTIATE_TEST_CASE_P(ResizePerfTestCPU, ResizePerfTest,
323     Combine(Values(AbsExact().to_compare_f()),
324         Values(CV_8UC1, CV_16UC1, CV_16SC1),
325         Values(cv::INTER_NEAREST, cv::INTER_LINEAR, cv::INTER_AREA),
326         Values(szSmall128, szVGA, sz720p, sz1080p),
327         Values(cv::Size(64, 64),
328             cv::Size(30, 30)),
329         Values(cv::compile_args(CORE_CPU))));
330 
331 INSTANTIATE_TEST_CASE_P(ResizeFxFyPerfTestCPU, ResizeFxFyPerfTest,
332     Combine(Values(AbsExact().to_compare_f()),
333         Values(CV_8UC1, CV_16UC1, CV_16SC1),
334         Values(cv::INTER_NEAREST, cv::INTER_LINEAR, cv::INTER_AREA),
335         Values(szSmall128, szVGA, sz720p, sz1080p),
336         Values(0.5, 0.1),
337         Values(0.5, 0.1),
338         Values(cv::compile_args(CORE_CPU))));
339 
340 INSTANTIATE_TEST_CASE_P(ParseSSDBLPerfTestCPU, ParseSSDBLPerfTest,
341                         Combine(Values(sz720p, sz1080p),
342                                 Values(0.3f, 0.7f),
343                                 Values(0, 1),
344                                 Values(cv::compile_args(CORE_CPU))));
345 
346 INSTANTIATE_TEST_CASE_P(ParseSSDPerfTestCPU, ParseSSDPerfTest,
347                         Combine(Values(sz720p, sz1080p),
348                                 Values(0.3f, 0.7f),
349                                 testing::Bool(),
350                                 testing::Bool(),
351                                 Values(cv::compile_args(CORE_CPU))));
352 
353 INSTANTIATE_TEST_CASE_P(ParseYoloPerfTestCPU, ParseYoloPerfTest,
354                         Combine(Values(sz720p, sz1080p),
355                                 Values(0.3f, 0.7f),
356                                 Values(0.5),
357                                 Values(7, 80),
358                                 Values(cv::compile_args(CORE_CPU))));
359 
360 INSTANTIATE_TEST_CASE_P(SizePerfTestCPU, SizePerfTest,
361                         Combine(Values(CV_8UC1, CV_8UC3, CV_32FC1),
362                                 Values(szSmall128, szVGA, sz720p, sz1080p),
363                                 Values(cv::compile_args(CORE_CPU))));
364 
365 INSTANTIATE_TEST_CASE_P(SizeRPerfTestCPU, SizeRPerfTest,
366                         Combine(Values(szSmall128, szVGA, sz720p, sz1080p),
367                                 Values(cv::compile_args(CORE_CPU))));
368 } // opencv_test
369