added GPU bilateral filter + tests
[profile/ivi/opencv.git] / modules / gpu / perf / perf_matop.cpp
1 #include "perf_precomp.hpp"\r
2 \r
3 using namespace std;\r
4 using namespace testing;\r
5 \r
6 namespace {\r
7 \r
8 //////////////////////////////////////////////////////////////////////\r
9 // SetTo\r
10 \r
11 PERF_TEST_P(Sz_Depth_Cn, MatOp_SetTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_16U, CV_32F, CV_64F), GPU_CHANNELS_1_3_4))\r
12 {\r
13     cv::Size size = GET_PARAM(0);\r
14     int depth = GET_PARAM(1);\r
15     int channels = GET_PARAM(2);\r
16 \r
17     int type = CV_MAKE_TYPE(depth, channels);\r
18 \r
19     cv::Scalar val(1, 2, 3, 4);\r
20 \r
21     if (runOnGpu)\r
22     {\r
23         cv::gpu::GpuMat d_src(size, type);\r
24 \r
25         d_src.setTo(val);\r
26 \r
27         TEST_CYCLE()\r
28         {\r
29             d_src.setTo(val);\r
30         }\r
31     }\r
32     else\r
33     {\r
34         cv::Mat src(size, type);\r
35 \r
36         src.setTo(val);\r
37 \r
38         TEST_CYCLE()\r
39         {\r
40             src.setTo(val);\r
41         }\r
42     }\r
43 }\r
44 \r
45 //////////////////////////////////////////////////////////////////////\r
46 // SetToMasked\r
47 \r
48 PERF_TEST_P(Sz_Depth_Cn, MatOp_SetToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_16U, CV_32F, CV_64F), GPU_CHANNELS_1_3_4))\r
49 {\r
50     cv::Size size = GET_PARAM(0);\r
51     int depth = GET_PARAM(1);\r
52     int channels = GET_PARAM(2);\r
53 \r
54     int type = CV_MAKE_TYPE(depth, channels);\r
55 \r
56     cv::Mat src(size, type);\r
57     fillRandom(src);\r
58 \r
59     cv::Mat mask(size, CV_8UC1);\r
60     fillRandom(mask, 0, 2);\r
61 \r
62     cv::Scalar val(1, 2, 3, 4);\r
63 \r
64     if (runOnGpu)\r
65     {\r
66         cv::gpu::GpuMat d_src(src);\r
67         cv::gpu::GpuMat d_mask(mask);\r
68 \r
69         d_src.setTo(val, d_mask);\r
70 \r
71         TEST_CYCLE()\r
72         {\r
73             d_src.setTo(val, d_mask);\r
74         }\r
75     }\r
76     else\r
77     {\r
78         src.setTo(val, mask);\r
79 \r
80         TEST_CYCLE()\r
81         {\r
82             src.setTo(val, mask);\r
83         }\r
84     }\r
85 }\r
86 \r
87 //////////////////////////////////////////////////////////////////////\r
88 // CopyToMasked\r
89 \r
90 PERF_TEST_P(Sz_Depth_Cn, MatOp_CopyToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_16U, CV_32F, CV_64F), GPU_CHANNELS_1_3_4))\r
91 {\r
92     cv::Size size = GET_PARAM(0);\r
93     int depth = GET_PARAM(1);\r
94     int channels = GET_PARAM(2);\r
95 \r
96     int type = CV_MAKE_TYPE(depth, channels);\r
97 \r
98     cv::Mat src(size, type);\r
99     fillRandom(src);\r
100 \r
101     cv::Mat mask(size, CV_8UC1);\r
102     fillRandom(mask, 0, 2);\r
103 \r
104     if (runOnGpu)\r
105     {\r
106         cv::gpu::GpuMat d_src(src);\r
107         cv::gpu::GpuMat d_mask(mask);\r
108         cv::gpu::GpuMat d_dst;\r
109 \r
110         d_src.copyTo(d_dst, d_mask);\r
111 \r
112         TEST_CYCLE()\r
113         {\r
114             d_src.copyTo(d_dst, d_mask);\r
115         }\r
116     }\r
117     else\r
118     {\r
119         cv::Mat dst;\r
120 \r
121         src.copyTo(dst, mask);\r
122 \r
123         TEST_CYCLE()\r
124         {\r
125             src.copyTo(dst, mask);\r
126         }\r
127     }\r
128 }\r
129 \r
130 //////////////////////////////////////////////////////////////////////\r
131 // ConvertTo\r
132 \r
133 DEF_PARAM_TEST(Sz_2Depth, cv::Size, MatDepth, MatDepth);\r
134 \r
135 PERF_TEST_P(Sz_2Depth, MatOp_ConvertTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_16U, CV_32F, CV_64F), Values(CV_8U, CV_16U, CV_32F, CV_64F)))\r
136 {\r
137     cv::Size size = GET_PARAM(0);\r
138     int depth1 = GET_PARAM(1);\r
139     int depth2 = GET_PARAM(2);\r
140 \r
141     cv::Mat src(size, depth1);\r
142     fillRandom(src);\r
143 \r
144     if (runOnGpu)\r
145     {\r
146         cv::gpu::GpuMat d_src(src);\r
147         cv::gpu::GpuMat d_dst;\r
148 \r
149         d_src.convertTo(d_dst, depth2, 0.5, 1.0);\r
150 \r
151         TEST_CYCLE()\r
152         {\r
153             d_src.convertTo(d_dst, depth2, 0.5, 1.0);\r
154         }\r
155     }\r
156     else\r
157     {\r
158         cv::Mat dst;\r
159 \r
160         src.convertTo(dst, depth2, 0.5, 1.0);\r
161 \r
162         TEST_CYCLE()\r
163         {\r
164             src.convertTo(dst, depth2, 0.5, 1.0);\r
165         }\r
166     }\r
167 }\r
168 \r
169 } // namespace\r