Merge pull request #15874 from akhakim:runsepfilter_5x5_kernel_size

pull/15852/head
Alexander Alekhin 5 years ago
commit 7a52a4c134
  1. 2
      modules/gapi/perf/cpu/gapi_imgproc_perf_tests_fluid.cpp
  2. 16
      modules/gapi/src/backends/fluid/gfluidimgproc.cpp
  3. 2
      modules/gapi/test/cpu/gapi_imgproc_tests_fluid.cpp

@ -58,7 +58,7 @@ INSTANTIATE_TEST_CASE_P(BlurPerfTestFluid, BlurPerfTest,
INSTANTIATE_TEST_CASE_P(GaussianBlurPerfTestFluid, GaussianBlurPerfTest, INSTANTIATE_TEST_CASE_P(GaussianBlurPerfTestFluid, GaussianBlurPerfTest,
Combine(Values(ToleranceFilter(1e-3f, 0.01).to_compare_f()), Combine(Values(ToleranceFilter(1e-3f, 0.01).to_compare_f()),
Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1), Values(CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1),
Values(3), // TODO: add size=5, when kernel is ready Values(3, 5),
Values(szVGA, sz720p, sz1080p), Values(szVGA, sz720p, sz1080p),
Values(cv::compile_args(IMGPROC_FLUID)))); Values(cv::compile_args(IMGPROC_FLUID))));

@ -628,7 +628,7 @@ static void run_sepfilter(Buffer& dst, const View& src,
else else
{ {
int length = chan * width; int length = chan * width;
int xshift = chan * xborder; int xshift = chan;
// horizontal pass // horizontal pass
@ -788,8 +788,6 @@ GAPI_FLUID_KERNEL(GFluidGaussBlur, cv::gapi::imgproc::GGaussBlur, true)
Buffer& dst, Buffer& dst,
Buffer& scratch) Buffer& scratch)
{ {
GAPI_Assert(ksize.height == 3);
int kxsize = ksize.width; int kxsize = ksize.width;
int kysize = ksize.height; int kysize = ksize.height;
@ -800,10 +798,16 @@ GAPI_FLUID_KERNEL(GFluidGaussBlur, cv::gapi::imgproc::GGaussBlur, true)
int chan = src.meta().chan; int chan = src.meta().chan;
int length = width * chan; int length = width * chan;
float *buf[3]; constexpr int buffSize = 5;
GAPI_Assert(ksize.height <= buffSize);
float *buf[buffSize]{};
buf[0] = ky + kysize; buf[0] = ky + kysize;
buf[1] = buf[0] + length; for (int i = 1; i < ksize.height; ++i)
buf[2] = buf[1] + length; {
buf[i] = buf[i - 1] + length;
}
auto anchor = cv::Point(-1, -1); auto anchor = cv::Point(-1, -1);

@ -106,7 +106,7 @@ INSTANTIATE_TEST_CASE_P(gaussBlurTestFluid, GaussianBlurTest,
Values(-1), Values(-1),
Values(IMGPROC_FLUID), Values(IMGPROC_FLUID),
Values(ToleranceFilter(1e-3f, 0.01).to_compare_obj()), Values(ToleranceFilter(1e-3f, 0.01).to_compare_obj()),
Values(3))); // add kernel size=5 when implementation is ready Values(3, 5)));
INSTANTIATE_TEST_CASE_P(medianBlurTestFluid, MedianBlurTest, INSTANTIATE_TEST_CASE_P(medianBlurTestFluid, MedianBlurTest,
Combine(Values(CV_8UC1, CV_16UC1, CV_16SC1), Combine(Values(CV_8UC1, CV_16UC1, CV_16SC1),

Loading…
Cancel
Save