From cc3fb3d18253776ebcba1797d36b62e494f2f249 Mon Sep 17 00:00:00 2001 From: peng xiao Date: Wed, 26 Jun 2013 10:50:51 +0800 Subject: [PATCH 1/2] Let CLAHE_OCL reuse cv::CLAHE abstract class. --- modules/ocl/include/opencv2/ocl/ocl.hpp | 14 +------------- modules/ocl/src/imgproc.cpp | 11 ++++++++--- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/modules/ocl/include/opencv2/ocl/ocl.hpp b/modules/ocl/include/opencv2/ocl/ocl.hpp index 7395c7bcc2..35350f01bb 100644 --- a/modules/ocl/include/opencv2/ocl/ocl.hpp +++ b/modules/ocl/include/opencv2/ocl/ocl.hpp @@ -516,20 +516,8 @@ namespace cv CV_EXPORTS void equalizeHist(const oclMat &mat_src, oclMat &mat_dst); //! only 8UC1 is supported now - class CV_EXPORTS CLAHE + class CV_EXPORTS CLAHE : public cv::CLAHE { - public: - virtual void apply(const oclMat &src, oclMat &dst) = 0; - - virtual void setClipLimit(double clipLimit) = 0; - virtual double getClipLimit() const = 0; - - virtual void setTilesGridSize(Size tileGridSize) = 0; - virtual Size getTilesGridSize() const = 0; - - virtual void collectGarbage() = 0; - - virtual ~CLAHE() {} }; CV_EXPORTS Ptr createCLAHE(double clipLimit = 40.0, Size tileGridSize = Size(8, 8)); diff --git a/modules/ocl/src/imgproc.cpp b/modules/ocl/src/imgproc.cpp index 3dbd68df8a..9d67cd8ae5 100644 --- a/modules/ocl/src/imgproc.cpp +++ b/modules/ocl/src/imgproc.cpp @@ -1598,7 +1598,7 @@ namespace cv cv::AlgorithmInfo* info() const; - void apply(const oclMat &src, oclMat &dst); + void apply(cv::InputArray src, cv::OutputArray dst); void setClipLimit(double clipLimit); double getClipLimit() const; @@ -1616,14 +1616,19 @@ namespace cv oclMat srcExt_; oclMat lut_; }; - CLAHE_Impl::CLAHE_Impl(double clipLimit, int tilesX, int tilesY) : clipLimit_(clipLimit), tilesX_(tilesX), tilesY_(tilesY) { } - void CLAHE_Impl::apply(const oclMat &src, oclMat &dst) + CV_INIT_ALGORITHM(CLAHE_Impl, "CLAHE_OCL", + obj.info()->addParam(obj, "clipLimit", obj.clipLimit_); + obj.info()->addParam(obj, "tilesX", obj.tilesX_); + obj.info()->addParam(obj, "tilesY", obj.tilesY_)) + void CLAHE_Impl::apply(cv::InputArray src_raw, cv::OutputArray dst_raw) { + oclMat& src = getOclMatRef(src_raw); + oclMat& dst = getOclMatRef(dst_raw); CV_Assert( src.type() == CV_8UC1 ); dst.create( src.size(), src.type() ); From fc64faa22e3411f0fd32b5112154f999dbec7dbb Mon Sep 17 00:00:00 2001 From: peng xiao Date: Thu, 27 Jun 2013 10:06:37 +0800 Subject: [PATCH 2/2] Remove empty cv::ocl::CLAHE class. --- modules/ocl/include/opencv2/ocl/ocl.hpp | 5 +---- modules/ocl/perf/perf_imgproc.cpp | 4 ++-- modules/ocl/src/imgproc.cpp | 4 ++-- modules/ocl/test/test_imgproc.cpp | 2 +- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/modules/ocl/include/opencv2/ocl/ocl.hpp b/modules/ocl/include/opencv2/ocl/ocl.hpp index 35350f01bb..8bd1c9f112 100644 --- a/modules/ocl/include/opencv2/ocl/ocl.hpp +++ b/modules/ocl/include/opencv2/ocl/ocl.hpp @@ -516,10 +516,7 @@ namespace cv CV_EXPORTS void equalizeHist(const oclMat &mat_src, oclMat &mat_dst); //! only 8UC1 is supported now - class CV_EXPORTS CLAHE : public cv::CLAHE - { - }; - CV_EXPORTS Ptr createCLAHE(double clipLimit = 40.0, Size tileGridSize = Size(8, 8)); + CV_EXPORTS Ptr createCLAHE(double clipLimit = 40.0, Size tileGridSize = Size(8, 8)); //! bilateralFilter // supports 8UC1 8UC4 diff --git a/modules/ocl/perf/perf_imgproc.cpp b/modules/ocl/perf/perf_imgproc.cpp index b330c5ffae..ade5019147 100644 --- a/modules/ocl/perf/perf_imgproc.cpp +++ b/modules/ocl/perf/perf_imgproc.cpp @@ -932,8 +932,8 @@ PERFTEST(CLAHE) double clipLimit = 40.0; - cv::Ptr clahe = cv::createCLAHE(clipLimit); - cv::Ptr d_clahe = cv::ocl::createCLAHE(clipLimit); + cv::Ptr clahe = cv::createCLAHE(clipLimit); + cv::Ptr d_clahe = cv::ocl::createCLAHE(clipLimit); for (int size = Min_Size; size <= Max_Size; size *= Multiple) { diff --git a/modules/ocl/src/imgproc.cpp b/modules/ocl/src/imgproc.cpp index 9d67cd8ae5..15c1539c0e 100644 --- a/modules/ocl/src/imgproc.cpp +++ b/modules/ocl/src/imgproc.cpp @@ -1591,7 +1591,7 @@ namespace cv namespace { - class CLAHE_Impl : public cv::ocl::CLAHE + class CLAHE_Impl : public cv::CLAHE { public: CLAHE_Impl(double clipLimit = 40.0, int tilesX = 8, int tilesY = 8); @@ -1696,7 +1696,7 @@ namespace cv } } - cv::Ptr createCLAHE(double clipLimit, cv::Size tileGridSize) + cv::Ptr createCLAHE(double clipLimit, cv::Size tileGridSize) { return new CLAHE_Impl(clipLimit, tileGridSize.width, tileGridSize.height); } diff --git a/modules/ocl/test/test_imgproc.cpp b/modules/ocl/test/test_imgproc.cpp index 3a98671d51..3228b6c0cf 100644 --- a/modules/ocl/test/test_imgproc.cpp +++ b/modules/ocl/test/test_imgproc.cpp @@ -1425,7 +1425,7 @@ PARAM_TEST_CASE(CLAHE, cv::Size, ClipLimit) TEST_P(CLAHE, Accuracy) { - cv::Ptr clahe = cv::ocl::createCLAHE(clipLimit); + cv::Ptr clahe = cv::ocl::createCLAHE(clipLimit); clahe->apply(g_src, g_dst); cv::Mat dst(g_dst);