cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE);\r
ASSERT_FALSE(img.empty());\r
\r
- if (runOnGpu)\r
+ if (PERF_RUN_GPU())\r
{\r
cv::gpu::SURF_GPU d_surf;\r
\r
{\r
d_surf(d_img, cv::gpu::GpuMat(), d_keypoints, d_descriptors);\r
}\r
+\r
+ GPU_SANITY_CHECK(d_descriptors, 1e-4);\r
+ GPU_SANITY_CHECK_KEYPOINTS(SURF, d_keypoints);\r
}\r
else\r
{\r
keypoints.clear();\r
surf(img, cv::noArray(), keypoints, descriptors);\r
}\r
+\r
+ SANITY_CHECK_KEYPOINTS(keypoints);\r
+ SANITY_CHECK(descriptors, 1e-4);\r
}\r
}\r
\r
cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE);\r
ASSERT_FALSE(img.empty());\r
\r
- if (runOnGpu)\r
+ if (PERF_RUN_GPU())\r
{\r
cv::gpu::FAST_GPU d_fast(20);\r
\r
{\r
d_fast(d_img, cv::gpu::GpuMat(), d_keypoints);\r
}\r
+\r
+ GPU_SANITY_CHECK_RESPONSE(FAST, d_keypoints);\r
}\r
else\r
{\r
keypoints.clear();\r
cv::FAST(img, keypoints, 20);\r
}\r
+\r
+ SANITY_CHECK_KEYPOINTS(keypoints);\r
}\r
}\r
\r
cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE);\r
ASSERT_FALSE(img.empty());\r
\r
- if (runOnGpu)\r
+ if (PERF_RUN_GPU())\r
{\r
cv::gpu::ORB_GPU d_orb(4000);\r
\r
{\r
d_orb(d_img, cv::gpu::GpuMat(), d_keypoints, d_descriptors);\r
}\r
+\r
+ GPU_SANITY_CHECK_KEYPOINTS(ORB, d_keypoints);\r
+ GPU_SANITY_CHECK(d_descriptors);\r
}\r
else\r
{\r
keypoints.clear();\r
orb(img, cv::noArray(), keypoints, descriptors);\r
}\r
+\r
+ SANITY_CHECK_KEYPOINTS(keypoints);\r
+ SANITY_CHECK(descriptors);\r
}\r
}\r
\r
cv::Mat train(3000, desc_size, type);\r
fillRandom(train);\r
\r
- if (runOnGpu)\r
+ if (PERF_RUN_GPU())\r
{\r
cv::gpu::BFMatcher_GPU d_matcher(normType);\r
\r
{\r
d_matcher.matchSingle(d_query, d_train, d_trainIdx, d_distance);\r
}\r
+\r
+ GPU_SANITY_CHECK(d_trainIdx);\r
+ GPU_SANITY_CHECK(d_distance);\r
}\r
else\r
{\r
{\r
matcher.match(query, train, matches);\r
}\r
+\r
+ SANITY_CHECK(matches);\r
}\r
}\r
\r
cv::Mat train(3000, desc_size, type);\r
fillRandom(train);\r
\r
- if (runOnGpu)\r
+ if (PERF_RUN_GPU())\r
{\r
cv::gpu::BFMatcher_GPU d_matcher(normType);\r
\r
{\r
d_matcher.knnMatchSingle(d_query, d_train, d_trainIdx, d_distance, d_allDist, k);\r
}\r
+\r
+ GPU_SANITY_CHECK(d_trainIdx);\r
+ GPU_SANITY_CHECK(d_distance);\r
}\r
else\r
{\r
{\r
matcher.knnMatch(query, train, matches, k);\r
}\r
+\r
+ SANITY_CHECK(matches);\r
}\r
}\r
\r
cv::Mat train(3000, desc_size, type);\r
fillRandom(train, 0.0, 1.0);\r
\r
- if (runOnGpu)\r
+ if (PERF_RUN_GPU())\r
{\r
cv::gpu::BFMatcher_GPU d_matcher(normType);\r
\r
{\r
d_matcher.radiusMatchSingle(d_query, d_train, d_trainIdx, d_distance, d_nMatches, 2.0);\r
}\r
+\r
+ GPU_SANITY_CHECK(d_trainIdx);\r
+ GPU_SANITY_CHECK(d_distance);\r
}\r
else\r
{\r
{\r
matcher.radiusMatch(query, train, matches, 2.0);\r
}\r
+\r
+ SANITY_CHECK(matches);\r
}\r
}\r
\r
SANITY_CHECK(cmat, ## __VA_ARGS__); \\r
} while(0);\r
\r
+#define GPU_SANITY_CHECK_KEYPOINTS(alg, dmat, ...) \\r
+ do{ \\r
+ cv::Mat d##dmat(dmat); \\r
+ cv::Mat __pt_x = d##dmat.row(cv::gpu::alg##_GPU::X_ROW); \\r
+ cv::Mat __pt_y = d##dmat.row(cv::gpu::alg##_GPU::Y_ROW); \\r
+ cv::Mat __angle = d##dmat.row(cv::gpu::alg##_GPU::ANGLE_ROW); \\r
+ cv::Mat __octave = d##dmat.row(cv::gpu::alg##_GPU::OCTAVE_ROW); \\r
+ cv::Mat __size = d##dmat.row(cv::gpu::alg##_GPU::SIZE_ROW); \\r
+ ::perf::Regression::add(this, std::string(#dmat) + "-pt-x-row", __pt_x, ## __VA_ARGS__); \\r
+ ::perf::Regression::add(this, std::string(#dmat) + "-pt-y-row", __pt_y, ## __VA_ARGS__); \\r
+ ::perf::Regression::add(this, std::string(#dmat) + "-angle-row", __angle, ## __VA_ARGS__); \\r
+ ::perf::Regression::add(this, std::string(#dmat) + "octave-row", __octave, ## __VA_ARGS__); \\r
+ ::perf::Regression::add(this, std::string(#dmat) + "-pt-size-row", __size, ## __VA_ARGS__); \\r
+ } while(0);\r
+\r
+#define GPU_SANITY_CHECK_RESPONSE(alg, dmat, ...) \\r
+ do{ \\r
+ cv::Mat d##dmat(dmat); \\r
+ cv::Mat __response = d##dmat.row(cv::gpu::alg##_GPU::RESPONSE_ROW); \\r
+ ::perf::Regression::add(this, std::string(#dmat) + "-response-row", __response, ## __VA_ARGS__); \\r
+ } while(0);\r
+\r
#endif // __OPENCV_PERF_GPU_UTILITY_HPP__\r