36 #include <visp3/core/vpConfig.h>
38 #if defined(VISP_HAVE_SIMDLIB) && defined(VISP_HAVE_CATCH2)
39 #define CATCH_CONFIG_ENABLE_BENCHMARKING
40 #define CATCH_CONFIG_RUNNER
43 #include <visp3/core/vpGaussianFilter.h>
44 #include <visp3/core/vpImageFilter.h>
45 #include <visp3/core/vpIoTools.h>
46 #include <visp3/io/vpImageIo.h>
48 #if defined(VISP_HAVE_OPENCV) && defined(HAVE_OPENCV_IMGCODECS) && defined(HAVE_OPENCV_IMGPROC)
49 #include <opencv2/imgcodecs.hpp>
50 #include <opencv2/imgproc/imgproc.hpp>
56 TEST_CASE(
"vpGaussianFilter",
"[benchmark]")
58 SECTION(
"unsigned char")
63 const float sigma = 5.0f;
65 BENCHMARK(
"Benchmark vpGaussianFilter uchar")
67 gaussianFilter.apply(I, I_blur);
77 const float sigma = 5.0f;
79 BENCHMARK(
"Benchmark vpGaussianFilter vpRGBa")
81 gaussianFilter.apply(I, I_blur);
86 SECTION(
"vpRGBa + deinterleave")
91 const float sigma = 5.0f;
92 const bool deinterleave =
true;
94 BENCHMARK(
"Benchmark vpGaussianFilter vpRGBa")
96 gaussianFilter.apply(I, I_blur);
102 TEST_CASE(
"vpImageFilter::gaussianBlur",
"[benchmark]")
104 SECTION(
"unsigned char")
110 const unsigned int kernelSize = 7;
111 const double sigma = 5.0;
112 BENCHMARK(
"Benchmark vpImageFilter::gaussianBlur uchar")
124 const unsigned int kernelSize = 7;
125 const double sigma = 5.0;
126 BENCHMARK(
"Benchmark vpImageFilter::gaussianBlur vpRGBa")
134 #if defined(VISP_HAVE_OPENCV) && defined(HAVE_OPENCV_IMGCODECS) && defined(HAVE_OPENCV_IMGPROC)
136 TEST_CASE(
"Gaussian filter (OpenCV)",
"[benchmark]")
138 SECTION(
"unsigned char")
140 cv::Mat img, img_blur;
141 img = cv::imread(imagePath, cv::IMREAD_GRAYSCALE);
143 const double sigma = 5.0;
144 BENCHMARK(
"Benchmark Gaussian filter uchar (OpenCV)")
146 cv::GaussianBlur(img, img_blur, cv::Size(), sigma);
153 cv::Mat img, img_blur;
154 img = cv::imread(imagePath, cv::IMREAD_COLOR);
156 const double sigma = 5.0;
157 BENCHMARK(
"Benchmark Gaussian filter BGR (OpenCV)")
159 cv::GaussianBlur(img, img_blur, cv::Size(), sigma);
166 int main(
int argc,
char *argv[])
168 Catch::Session session;
170 bool runBenchmark =
false;
172 using namespace Catch::clara;
173 auto cli = session.cli()
183 session.applyCommandLine(argc, argv);
186 int numFailed = session.run();
199 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