Path: blob/master/modules/imgproc/perf/perf_histogram.cpp
16354 views
// This file is part of OpenCV project.1// It is subject to the license terms in the LICENSE file found in the top-level directory2// of this distribution and at http://opencv.org/license.html.3#include "perf_precomp.hpp"45namespace opencv_test {67typedef tuple<Size, MatType> Size_Source_t;8typedef TestBaseWithParam<Size_Source_t> Size_Source;9typedef TestBaseWithParam<Size> TestMatSize;1011static const float rangeHight = 256.0f;12static const float rangeLow = 0.0f;1314PERF_TEST_P(Size_Source, calcHist1d,15testing::Combine(testing::Values(sz3MP, sz5MP),16testing::Values(CV_8U, CV_16U, CV_32F) )17)18{19Size size = get<0>(GetParam());20MatType type = get<1>(GetParam());21Mat source(size.height, size.width, type);22Mat hist;23int channels [] = {0};24int histSize [] = {256};25int dims = 1;26int numberOfImages = 1;2728const float range[] = {rangeLow, rangeHight};29const float* ranges[] = {range};3031randu(source, rangeLow, rangeHight);3233declare.in(source);3435TEST_CYCLE_MULTIRUN(3)36{37calcHist(&source, numberOfImages, channels, Mat(), hist, dims, histSize, ranges);38}3940SANITY_CHECK(hist);41}4243PERF_TEST_P(Size_Source, calcHist2d,44testing::Combine(testing::Values(sz3MP, sz5MP),45testing::Values(CV_8UC2, CV_16UC2, CV_32FC2) )46)47{48Size size = get<0>(GetParam());49MatType type = get<1>(GetParam());50Mat source(size.height, size.width, type);51Mat hist;52int channels [] = {0, 1};53int histSize [] = {256, 256};54int dims = 2;55int numberOfImages = 1;5657const float r[] = {rangeLow, rangeHight};58const float* ranges[] = {r, r};5960randu(source, rangeLow, rangeHight);6162declare.in(source);63TEST_CYCLE()64{65calcHist(&source, numberOfImages, channels, Mat(), hist, dims, histSize, ranges);66}6768SANITY_CHECK(hist);69}7071PERF_TEST_P(Size_Source, calcHist3d,72testing::Combine(testing::Values(sz3MP, sz5MP),73testing::Values(CV_8UC3, CV_16UC3, CV_32FC3) )74)75{76Size size = get<0>(GetParam());77MatType type = get<1>(GetParam());78Mat hist;79int channels [] = {0, 1, 2};80int histSize [] = {32, 32, 32};81int dims = 3;82int numberOfImages = 1;83Mat source(size.height, size.width, type);8485const float r[] = {rangeLow, rangeHight};86const float* ranges[] = {r, r, r};8788randu(source, rangeLow, rangeHight);8990declare.in(source);91TEST_CYCLE()92{93calcHist(&source, numberOfImages, channels, Mat(), hist, dims, histSize, ranges);94}9596SANITY_CHECK(hist);97}9899#define MatSize TestMatSize100PERF_TEST_P(MatSize, equalizeHist,101testing::Values(TYPICAL_MAT_SIZES)102)103{104Size size = GetParam();105Mat source(size.height, size.width, CV_8U);106Mat destination;107declare.in(source, WARMUP_RNG);108109TEST_CYCLE()110{111equalizeHist(source, destination);112}113114SANITY_CHECK(destination);115}116#undef MatSize117118typedef tuple<Size, double> Sz_ClipLimit_t;119typedef TestBaseWithParam<Sz_ClipLimit_t> Sz_ClipLimit;120121PERF_TEST_P(Sz_ClipLimit, CLAHE,122testing::Combine(testing::Values(::perf::szVGA, ::perf::sz720p, ::perf::sz1080p),123testing::Values(0.0, 40.0))124)125{126const Size size = get<0>(GetParam());127const double clipLimit = get<1>(GetParam());128129Mat src(size, CV_8UC1);130declare.in(src, WARMUP_RNG);131132Ptr<CLAHE> clahe = createCLAHE(clipLimit);133Mat dst;134135TEST_CYCLE() clahe->apply(src, dst);136137SANITY_CHECK(dst);138}139140} // namespace141142143