38 #include <visp3/core/vpConfig.h>
40 #if defined(VISP_HAVE_SIMDLIB) && defined(VISP_HAVE_CATCH2)
41 #define CATCH_CONFIG_ENABLE_BENCHMARKING
42 #define CATCH_CONFIG_RUNNER
45 #include <visp3/core/vpGaussianFilter.h>
46 #include <visp3/core/vpImageFilter.h>
47 #include <visp3/core/vpIoTools.h>
48 #include <visp3/io/vpImageIo.h>
50 #if defined(VISP_HAVE_OPENCV) && defined(HAVE_OPENCV_IMGCODECS) && defined(HAVE_OPENCV_IMGPROC)
51 #include <opencv2/imgcodecs.hpp>
52 #include <opencv2/imgproc/imgproc.hpp>
55 #ifdef ENABLE_VISP_NAMESPACE
61 TEST_CASE(
"vpGaussianFilter",
"[benchmark]")
63 SECTION(
"unsigned char")
68 const float sigma = 5.0f;
70 BENCHMARK(
"Benchmark vpGaussianFilter uchar")
72 gaussianFilter.apply(I, I_blur);
82 const float sigma = 5.0f;
84 BENCHMARK(
"Benchmark vpGaussianFilter vpRGBa")
86 gaussianFilter.apply(I, I_blur);
91 SECTION(
"vpRGBa + deinterleave")
96 const float sigma = 5.0f;
97 const bool deinterleave =
true;
99 BENCHMARK(
"Benchmark vpGaussianFilter vpRGBa")
101 gaussianFilter.apply(I, I_blur);
107 TEST_CASE(
"vpImageFilter::gaussianBlur",
"[benchmark]")
109 SECTION(
"unsigned char")
115 const unsigned int kernelSize = 7;
116 const double sigma = 5.0;
117 BENCHMARK(
"Benchmark vpImageFilter::gaussianBlur uchar")
129 const unsigned int kernelSize = 7;
130 const double sigma = 5.0;
131 BENCHMARK(
"Benchmark vpImageFilter::gaussianBlur vpRGBa")
139 #if defined(VISP_HAVE_OPENCV) && defined(HAVE_OPENCV_IMGCODECS) && defined(HAVE_OPENCV_IMGPROC)
141 TEST_CASE(
"Gaussian filter (OpenCV)",
"[benchmark]")
143 SECTION(
"unsigned char")
145 cv::Mat img, img_blur;
146 img = cv::imread(imagePath, cv::IMREAD_GRAYSCALE);
148 const double sigma = 5.0;
149 BENCHMARK(
"Benchmark Gaussian filter uchar (OpenCV)")
151 cv::GaussianBlur(img, img_blur, cv::Size(), sigma);
158 cv::Mat img, img_blur;
159 img = cv::imread(imagePath, cv::IMREAD_COLOR);
161 const double sigma = 5.0;
162 BENCHMARK(
"Benchmark Gaussian filter BGR (OpenCV)")
164 cv::GaussianBlur(img, img_blur, cv::Size(), sigma);
171 int main(
int argc,
char *argv[])
173 Catch::Session session;
175 bool runBenchmark =
false;
177 using namespace Catch::clara;
178 auto cli = session.cli()
188 session.applyCommandLine(argc, argv);
191 int numFailed = session.run();
204 int main() {
return EXIT_SUCCESS; }
static void gaussianBlur(const vpImage< ImageType > &I, vpImage< FilterType > &GI, unsigned int size=7, FilterType sigma=0., bool normalize=true, const vpImage< bool > *p_mask=nullptr)
static void read(vpImage< unsigned char > &I, const std::string &filename, int backend=IO_DEFAULT_BACKEND)
unsigned int getWidth() const
unsigned int getHeight() const