photo module fixes
This commit is contained in:
parent
12f16b7a26
commit
f375c86dfb
@ -4,4 +4,4 @@ if(HAVE_CUDA)
|
|||||||
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wmissing-declarations)
|
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wmissing-declarations)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
ocv_define_module(photo opencv_imgproc OPTIONAL opencv_gpuimgproc)
|
ocv_define_module(photo opencv_imgproc OPTIONAL opencv_gpuarithm opencv_gpuimgproc)
|
||||||
|
@ -45,6 +45,10 @@
|
|||||||
#include "opencv2/photo/gpu.hpp"
|
#include "opencv2/photo/gpu.hpp"
|
||||||
#include "opencv2/ts/gpu_perf.hpp"
|
#include "opencv2/ts/gpu_perf.hpp"
|
||||||
|
|
||||||
|
#include "opencv2/opencv_modules.hpp"
|
||||||
|
|
||||||
|
#if defined (HAVE_CUDA) && defined(HAVE_OPENCV_GPUARITHM) && defined(HAVE_OPENCV_GPUIMGPROC)
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace testing;
|
using namespace testing;
|
||||||
using namespace perf;
|
using namespace perf;
|
||||||
@ -56,7 +60,7 @@ using namespace perf;
|
|||||||
|
|
||||||
DEF_PARAM_TEST(Sz_Depth_Cn_WinSz_BlockSz, cv::Size, MatDepth, MatCn, int, int);
|
DEF_PARAM_TEST(Sz_Depth_Cn_WinSz_BlockSz, cv::Size, MatDepth, MatCn, int, int);
|
||||||
|
|
||||||
PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_NonLocalMeans,
|
PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, GPU_NonLocalMeans,
|
||||||
Combine(GPU_DENOISING_IMAGE_SIZES,
|
Combine(GPU_DENOISING_IMAGE_SIZES,
|
||||||
Values<MatDepth>(CV_8U),
|
Values<MatDepth>(CV_8U),
|
||||||
GPU_CHANNELS_1_3,
|
GPU_CHANNELS_1_3,
|
||||||
@ -100,7 +104,7 @@ PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_NonLocalMeans,
|
|||||||
|
|
||||||
DEF_PARAM_TEST(Sz_Depth_Cn_WinSz_BlockSz, cv::Size, MatDepth, MatCn, int, int);
|
DEF_PARAM_TEST(Sz_Depth_Cn_WinSz_BlockSz, cv::Size, MatDepth, MatCn, int, int);
|
||||||
|
|
||||||
PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_FastNonLocalMeans,
|
PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, GPU_FastNonLocalMeans,
|
||||||
Combine(GPU_DENOISING_IMAGE_SIZES,
|
Combine(GPU_DENOISING_IMAGE_SIZES,
|
||||||
Values<MatDepth>(CV_8U),
|
Values<MatDepth>(CV_8U),
|
||||||
GPU_CHANNELS_1_3,
|
GPU_CHANNELS_1_3,
|
||||||
@ -146,7 +150,7 @@ PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_FastNonLocalMeans,
|
|||||||
|
|
||||||
DEF_PARAM_TEST(Sz_Depth_WinSz_BlockSz, cv::Size, MatDepth, int, int);
|
DEF_PARAM_TEST(Sz_Depth_WinSz_BlockSz, cv::Size, MatDepth, int, int);
|
||||||
|
|
||||||
PERF_TEST_P(Sz_Depth_WinSz_BlockSz, Denoising_FastNonLocalMeansColored,
|
PERF_TEST_P(Sz_Depth_WinSz_BlockSz, GPU_FastNonLocalMeansColored,
|
||||||
Combine(GPU_DENOISING_IMAGE_SIZES,
|
Combine(GPU_DENOISING_IMAGE_SIZES,
|
||||||
Values<MatDepth>(CV_8U),
|
Values<MatDepth>(CV_8U),
|
||||||
Values(21),
|
Values(21),
|
||||||
@ -185,3 +189,5 @@ PERF_TEST_P(Sz_Depth_WinSz_BlockSz, Denoising_FastNonLocalMeansColored,
|
|||||||
CPU_SANITY_CHECK(dst);
|
CPU_SANITY_CHECK(dst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -40,8 +40,6 @@
|
|||||||
//
|
//
|
||||||
//M*/
|
//M*/
|
||||||
|
|
||||||
#if !defined CUDA_DISABLER
|
|
||||||
|
|
||||||
#include "opencv2/core/cuda/common.hpp"
|
#include "opencv2/core/cuda/common.hpp"
|
||||||
#include "opencv2/core/cuda/vec_traits.hpp"
|
#include "opencv2/core/cuda/vec_traits.hpp"
|
||||||
#include "opencv2/core/cuda/vec_math.hpp"
|
#include "opencv2/core/cuda/vec_math.hpp"
|
||||||
@ -564,6 +562,3 @@ namespace cv { namespace gpu { namespace cudev
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
|
|
||||||
#endif /* CUDA_DISABLER */
|
|
||||||
|
@ -44,13 +44,21 @@
|
|||||||
|
|
||||||
#include "opencv2/photo/gpu.hpp"
|
#include "opencv2/photo/gpu.hpp"
|
||||||
#include "opencv2/core/gpu_private.hpp"
|
#include "opencv2/core/gpu_private.hpp"
|
||||||
|
|
||||||
|
#include "opencv2/opencv_modules.hpp"
|
||||||
|
|
||||||
|
#ifdef HAVE_OPENCV_GPUARITHM
|
||||||
# include "opencv2/gpuarithm.hpp"
|
# include "opencv2/gpuarithm.hpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_OPENCV_GPUIMGPROC
|
||||||
# include "opencv2/gpuimgproc.hpp"
|
# include "opencv2/gpuimgproc.hpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
using namespace cv;
|
using namespace cv;
|
||||||
using namespace cv::gpu;
|
using namespace cv::gpu;
|
||||||
|
|
||||||
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
|
#if !defined (HAVE_CUDA) || !defined(HAVE_OPENCV_GPUARITHM) || !defined(HAVE_OPENCV_GPUIMGPROC)
|
||||||
|
|
||||||
void cv::gpu::nonLocalMeans(const GpuMat&, GpuMat&, float, int, int, int, Stream&) { throw_no_cuda(); }
|
void cv::gpu::nonLocalMeans(const GpuMat&, GpuMat&, float, int, int, int, Stream&) { throw_no_cuda(); }
|
||||||
void cv::gpu::FastNonLocalMeansDenoising::simpleMethod(const GpuMat&, GpuMat&, float, int, int, Stream&) { throw_no_cuda(); }
|
void cv::gpu::FastNonLocalMeansDenoising::simpleMethod(const GpuMat&, GpuMat&, float, int, int, Stream&) { throw_no_cuda(); }
|
||||||
@ -147,7 +155,4 @@ void cv::gpu::FastNonLocalMeansDenoising::labMethod( const GpuMat& src, GpuMat&
|
|||||||
cv::gpu::cvtColor(lab, dst, cv::COLOR_Lab2BGR, 0, s);
|
cv::gpu::cvtColor(lab, dst, cv::COLOR_Lab2BGR, 0, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,18 +45,20 @@
|
|||||||
#include "opencv2/photo/gpu.hpp"
|
#include "opencv2/photo/gpu.hpp"
|
||||||
#include "opencv2/ts/gpu_test.hpp"
|
#include "opencv2/ts/gpu_test.hpp"
|
||||||
|
|
||||||
#ifdef HAVE_CUDA
|
#include "opencv2/opencv_modules.hpp"
|
||||||
|
|
||||||
|
#if defined (HAVE_CUDA) && defined(HAVE_OPENCV_GPUARITHM) && defined(HAVE_OPENCV_GPUIMGPROC)
|
||||||
|
|
||||||
using namespace cvtest;
|
using namespace cvtest;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////
|
||||||
// Brute Force Non local means
|
// Brute Force Non local means
|
||||||
|
|
||||||
TEST(BruteForceNonLocalMeans, Regression)
|
TEST(GPU_BruteForceNonLocalMeans, Regression)
|
||||||
{
|
{
|
||||||
using cv::gpu::GpuMat;
|
using cv::gpu::GpuMat;
|
||||||
|
|
||||||
cv::Mat bgr = readImage("denoising/lena_noised_gaussian_sigma=20_multi_0.png", cv::IMREAD_COLOR);
|
cv::Mat bgr = readImage("../gpu/denoising/lena_noised_gaussian_sigma=20_multi_0.png", cv::IMREAD_COLOR);
|
||||||
ASSERT_FALSE(bgr.empty());
|
ASSERT_FALSE(bgr.empty());
|
||||||
|
|
||||||
cv::Mat gray;
|
cv::Mat gray;
|
||||||
@ -67,12 +69,12 @@ TEST(BruteForceNonLocalMeans, Regression)
|
|||||||
cv::gpu::nonLocalMeans(GpuMat(gray), dgray, 20);
|
cv::gpu::nonLocalMeans(GpuMat(gray), dgray, 20);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
dumpImage("denoising/nlm_denoised_lena_bgr.png", cv::Mat(dbgr));
|
dumpImage("../gpu/denoising/nlm_denoised_lena_bgr.png", cv::Mat(dbgr));
|
||||||
dumpImage("denoising/nlm_denoised_lena_gray.png", cv::Mat(dgray));
|
dumpImage("../gpu/denoising/nlm_denoised_lena_gray.png", cv::Mat(dgray));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
cv::Mat bgr_gold = readImage("denoising/nlm_denoised_lena_bgr.png", cv::IMREAD_COLOR);
|
cv::Mat bgr_gold = readImage("../gpu/denoising/nlm_denoised_lena_bgr.png", cv::IMREAD_COLOR);
|
||||||
cv::Mat gray_gold = readImage("denoising/nlm_denoised_lena_gray.png", cv::IMREAD_GRAYSCALE);
|
cv::Mat gray_gold = readImage("../gpu/denoising/nlm_denoised_lena_gray.png", cv::IMREAD_GRAYSCALE);
|
||||||
ASSERT_FALSE(bgr_gold.empty() || gray_gold.empty());
|
ASSERT_FALSE(bgr_gold.empty() || gray_gold.empty());
|
||||||
|
|
||||||
EXPECT_MAT_NEAR(bgr_gold, dbgr, 1e-4);
|
EXPECT_MAT_NEAR(bgr_gold, dbgr, 1e-4);
|
||||||
@ -82,11 +84,11 @@ TEST(BruteForceNonLocalMeans, Regression)
|
|||||||
////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////
|
||||||
// Fast Force Non local means
|
// Fast Force Non local means
|
||||||
|
|
||||||
TEST(FastNonLocalMeans, Regression)
|
TEST(GPU_FastNonLocalMeans, Regression)
|
||||||
{
|
{
|
||||||
using cv::gpu::GpuMat;
|
using cv::gpu::GpuMat;
|
||||||
|
|
||||||
cv::Mat bgr = readImage("denoising/lena_noised_gaussian_sigma=20_multi_0.png", cv::IMREAD_COLOR);
|
cv::Mat bgr = readImage("../gpu/denoising/lena_noised_gaussian_sigma=20_multi_0.png", cv::IMREAD_COLOR);
|
||||||
ASSERT_FALSE(bgr.empty());
|
ASSERT_FALSE(bgr.empty());
|
||||||
|
|
||||||
cv::Mat gray;
|
cv::Mat gray;
|
||||||
@ -99,12 +101,12 @@ TEST(FastNonLocalMeans, Regression)
|
|||||||
fnlmd.labMethod(GpuMat(bgr), dbgr, 20, 10);
|
fnlmd.labMethod(GpuMat(bgr), dbgr, 20, 10);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
dumpImage("denoising/fnlm_denoised_lena_bgr.png", cv::Mat(dbgr));
|
dumpImage("../gpu/denoising/fnlm_denoised_lena_bgr.png", cv::Mat(dbgr));
|
||||||
dumpImage("denoising/fnlm_denoised_lena_gray.png", cv::Mat(dgray));
|
dumpImage("../gpu/denoising/fnlm_denoised_lena_gray.png", cv::Mat(dgray));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
cv::Mat bgr_gold = readImage("denoising/fnlm_denoised_lena_bgr.png", cv::IMREAD_COLOR);
|
cv::Mat bgr_gold = readImage("../gpu/denoising/fnlm_denoised_lena_bgr.png", cv::IMREAD_COLOR);
|
||||||
cv::Mat gray_gold = readImage("denoising/fnlm_denoised_lena_gray.png", cv::IMREAD_GRAYSCALE);
|
cv::Mat gray_gold = readImage("../gpu/denoising/fnlm_denoised_lena_gray.png", cv::IMREAD_GRAYSCALE);
|
||||||
ASSERT_FALSE(bgr_gold.empty() || gray_gold.empty());
|
ASSERT_FALSE(bgr_gold.empty() || gray_gold.empty());
|
||||||
|
|
||||||
EXPECT_MAT_NEAR(bgr_gold, dbgr, 1);
|
EXPECT_MAT_NEAR(bgr_gold, dbgr, 1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user