From 000110e760f3aaba1b9f5223f7ef8adb159fb434 Mon Sep 17 00:00:00 2001 From: Evgeny Latkin Date: Tue, 6 Nov 2018 23:08:50 +0300 Subject: [PATCH] Merge pull request #13052 from elatkin:yl/gapi_sobel3x3_f32_v2 * GAPI: Sobel 3x3 with FP32 input * GAPI: Sobel 3x3 with FP32 input, v2 --- .../gapi/src/backends/fluid/gfluidimgproc.cpp | 1 + .../test/cpu/gapi_imgproc_tests_fluid.cpp | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/modules/gapi/src/backends/fluid/gfluidimgproc.cpp b/modules/gapi/src/backends/fluid/gfluidimgproc.cpp index 58321f332c..c35d16b0c4 100644 --- a/modules/gapi/src/backends/fluid/gfluidimgproc.cpp +++ b/modules/gapi/src/backends/fluid/gfluidimgproc.cpp @@ -817,6 +817,7 @@ GAPI_FLUID_KERNEL(GFluidSobel, cv::gapi::imgproc::GSobel, true) UNARY_( float, uchar , run_sobel, dst, src, kx, ky, ksize, scale, delta); UNARY_( float, ushort, run_sobel, dst, src, kx, ky, ksize, scale, delta); UNARY_( float, short, run_sobel, dst, src, kx, ky, ksize, scale, delta); + UNARY_( float, float, run_sobel, dst, src, kx, ky, ksize, scale, delta); CV_Error(cv::Error::StsBadArg, "unsupported combination of types"); } diff --git a/modules/gapi/test/cpu/gapi_imgproc_tests_fluid.cpp b/modules/gapi/test/cpu/gapi_imgproc_tests_fluid.cpp index dd78c08d36..ffebac4f34 100644 --- a/modules/gapi/test/cpu/gapi_imgproc_tests_fluid.cpp +++ b/modules/gapi/test/cpu/gapi_imgproc_tests_fluid.cpp @@ -36,6 +36,24 @@ private: double _tol; }; +class AbsToleranceSobelFluid : public Wrappable +{ +public: + AbsToleranceSobelFluid(double tol) : tolerance(tol) {} + bool operator() (const cv::Mat& in1, const cv::Mat& in2) const + { + cv::Mat diff, a1, a2, b, base; + cv::absdiff(in1, in2, diff); + a1 = cv::abs(in1); + a2 = cv::abs(in2); + cv::max(a1, a2, b); + cv::max(1, b, base); // base = max{1, |in1|, |in2|} + return cv::countNonZero(diff > tolerance*base) == 0; + } +private: + double tolerance; +}; + class AbsTolerance32FFluid : public Wrappable { public: @@ -222,6 +240,18 @@ INSTANTIATE_TEST_CASE_P(SobelTestFluid, SobelTest, Values(true, false), Values(cv::compile_args(IMGPROC_FLUID)))); +INSTANTIATE_TEST_CASE_P(SobelTestFluid32F, SobelTest, + Combine(Values(AbsToleranceSobelFluid(1e-3).to_compare_f()), + Values(CV_32FC1), + Values(3), // add kernel size=5 when implementation is ready + Values(cv::Size(1280, 720), + cv::Size(640, 480)), + Values(CV_32F), + Values(0, 1), + Values(1, 2), + Values(true, false), + Values(cv::compile_args(IMGPROC_FLUID)))); + INSTANTIATE_TEST_CASE_P(boxFilterTestFluid32, BoxFilterTest, Combine(Values(AbsTolerance32FFluid(1e-6).to_compare_f()), Values(CV_8UC1, CV_16UC1, CV_16SC1),