@ -5,94 +5,102 @@
namespace opencv_test {
# ifdef HAVE_OPENVX
PERF_TEST_P ( Size_MatType , Accumulate ,
testing : : Combine (
testing : : Values ( : : perf : : szODD , : : perf : : szQVGA , : : perf : : szVGA , : : perf : : sz1080p ) ,
testing : : Values ( CV_16SC1 , CV_32FC1 )
)
)
# else
PERF_TEST_P ( Size_MatType , Accumulate ,
testing : : Combine (
testing : : Values ( : : perf : : szODD , : : perf : : szQVGA , : : perf : : szVGA , : : perf : : sz1080p ) ,
testing : : Values ( CV_32FC1 )
)
)
# endif
{
Size sz = get < 0 > ( GetParam ( ) ) ;
int dstType = get < 1 > ( GetParam ( ) ) ;
Mat src ( sz , CV_8UC1 ) ;
Mat dst ( sz , dstType ) ;
declare . time ( 100 ) ;
declare . in ( src , WARMUP_RNG ) . out ( dst ) ;
TEST_CYCLE ( ) accumulate ( src , dst ) ;
SANITY_CHECK_NOTHING ( ) ;
}
# ifdef HAVE_OPENVX
PERF_TEST_P ( Size_MatType , AccumulateSquare ,
testing : : Combine (
testing : : Values ( : : perf : : szODD , : : perf : : szQVGA , : : perf : : szVGA , : : perf : : sz1080p ) ,
testing : : Values ( CV_16SC1 , CV_32FC1 )
)
)
# else
PERF_TEST_P ( Size_MatType , AccumulateSquare ,
testing : : Combine (
testing : : Values ( : : perf : : szODD , : : perf : : szQVGA , : : perf : : szVGA , : : perf : : sz1080p ) ,
testing : : Values ( CV_32FC1 )
)
)
# endif
{
Size sz = get < 0 > ( GetParam ( ) ) ;
int dstType = get < 1 > ( GetParam ( ) ) ;
Mat src ( sz , CV_8UC1 ) ;
Mat dst ( sz , dstType ) ;
declare . time ( 100 ) ;
declare . in ( src , WARMUP_RNG ) . out ( dst ) ;
TEST_CYCLE ( ) accumulateSquare ( src , dst ) ;
SANITY_CHECK_NOTHING ( ) ;
}
# ifdef HAVE_OPENVX
PERF_TEST_P ( Size_MatType , AccumulateWeighted ,
testing : : Combine (
testing : : Values ( : : perf : : szODD , : : perf : : szQVGA , : : perf : : szVGA , : : perf : : sz1080p ) ,
testing : : Values ( CV_8UC1 , CV_32FC1 )
)
)
# else
PERF_TEST_P ( Size_MatType , AccumulateWeighted ,
testing : : Combine (
testing : : Values ( : : perf : : szODD , : : perf : : szQVGA , : : perf : : szVGA , : : perf : : sz1080p ) ,
testing : : Values ( CV_32FC1 )
)
)
# endif
{
Size sz = get < 0 > ( GetParam ( ) ) ;
int dstType = get < 1 > ( GetParam ( ) ) ;
Mat src ( sz , CV_8UC1 ) ;
Mat dst ( sz , dstType ) ;
declare . time ( 100 ) ;
declare . in ( src , WARMUP_RNG ) . out ( dst ) ;
TEST_CYCLE ( ) accumulateWeighted ( src , dst , 0.314 ) ;
SANITY_CHECK_NOTHING ( ) ;
}
typedef Size_MatType Accumulate ;
# define MAT_TYPES_ACCUMLATE CV_8UC1, CV_16UC1, CV_32FC1
# define MAT_TYPES_ACCUMLATE_C MAT_TYPES_ACCUMLATE, CV_8UC3, CV_16UC3, CV_32FC3
# define MAT_TYPES_ACCUMLATE_D MAT_TYPES_ACCUMLATE, CV_64FC1
# define MAT_TYPES_ACCUMLATE_D_C MAT_TYPES_ACCUMLATE_C, CV_64FC1, CV_64FC1
# define PERF_ACCUMULATE_INIT(_FLTC) \
const Size srcSize = get < 0 > ( GetParam ( ) ) ; \
const int srcType = get < 1 > ( GetParam ( ) ) ; \
const int dstType = _FLTC ( CV_MAT_CN ( srcType ) ) ; \
Mat src1 ( srcSize , srcType ) , dst ( srcSize , dstType ) ; \
declare . in ( src1 , dst , WARMUP_RNG ) . out ( dst ) ;
# define PERF_ACCUMULATE_MASK_INIT(_FLTC) \
PERF_ACCUMULATE_INIT ( _FLTC ) \
Mat mask ( srcSize , CV_8UC1 ) ; \
declare . in ( mask , WARMUP_RNG ) ;
# define PERF_TEST_P_ACCUMULATE(_NAME, _TYPES, _INIT, _FUN) \
PERF_TEST_P ( Accumulate , _NAME , \
testing : : Combine ( \
testing : : Values ( sz1080p , sz720p , szVGA , szQVGA , szODD ) , \
testing : : Values ( _TYPES ) \
) \
) \
{ \
_INIT \
TEST_CYCLE ( ) _FUN ; \
SANITY_CHECK_NOTHING ( ) ; \
}
/////////////////////////////////// Accumulate ///////////////////////////////////
PERF_TEST_P_ACCUMULATE ( Accumulate , MAT_TYPES_ACCUMLATE ,
PERF_ACCUMULATE_INIT ( CV_32FC ) , accumulate ( src1 , dst ) )
PERF_TEST_P_ACCUMULATE ( AccumulateMask , MAT_TYPES_ACCUMLATE_C ,
PERF_ACCUMULATE_MASK_INIT ( CV_32FC ) , accumulate ( src1 , dst , mask ) )
PERF_TEST_P_ACCUMULATE ( AccumulateDouble , MAT_TYPES_ACCUMLATE_D ,
PERF_ACCUMULATE_INIT ( CV_64FC ) , accumulate ( src1 , dst ) )
PERF_TEST_P_ACCUMULATE ( AccumulateDoubleMask , MAT_TYPES_ACCUMLATE_D_C ,
PERF_ACCUMULATE_MASK_INIT ( CV_64FC ) , accumulate ( src1 , dst , mask ) )
///////////////////////////// AccumulateSquare ///////////////////////////////////
PERF_TEST_P_ACCUMULATE ( Square , MAT_TYPES_ACCUMLATE ,
PERF_ACCUMULATE_INIT ( CV_32FC ) , accumulateSquare ( src1 , dst ) )
PERF_TEST_P_ACCUMULATE ( SquareMask , MAT_TYPES_ACCUMLATE_C ,
PERF_ACCUMULATE_MASK_INIT ( CV_32FC ) , accumulateSquare ( src1 , dst , mask ) )
PERF_TEST_P_ACCUMULATE ( SquareDouble , MAT_TYPES_ACCUMLATE_D ,
PERF_ACCUMULATE_INIT ( CV_64FC ) , accumulateSquare ( src1 , dst ) )
PERF_TEST_P_ACCUMULATE ( SquareDoubleMask , MAT_TYPES_ACCUMLATE_D_C ,
PERF_ACCUMULATE_MASK_INIT ( CV_64FC ) , accumulateSquare ( src1 , dst , mask ) )
///////////////////////////// AccumulateProduct ///////////////////////////////////
# define PERF_ACCUMULATE_INIT_2(_FLTC) \
PERF_ACCUMULATE_INIT ( _FLTC ) \
Mat src2 ( srcSize , srcType ) ; \
declare . in ( src2 ) ;
# define PERF_ACCUMULATE_MASK_INIT_2(_FLTC) \
PERF_ACCUMULATE_MASK_INIT ( _FLTC ) \
Mat src2 ( srcSize , srcType ) ; \
declare . in ( src2 ) ;
PERF_TEST_P_ACCUMULATE ( Product , MAT_TYPES_ACCUMLATE ,
PERF_ACCUMULATE_INIT_2 ( CV_32FC ) , accumulateProduct ( src1 , src2 , dst ) )
PERF_TEST_P_ACCUMULATE ( ProductMask , MAT_TYPES_ACCUMLATE_C ,
PERF_ACCUMULATE_MASK_INIT_2 ( CV_32FC ) , accumulateProduct ( src1 , src2 , dst , mask ) )
PERF_TEST_P_ACCUMULATE ( ProductDouble , MAT_TYPES_ACCUMLATE_D ,
PERF_ACCUMULATE_INIT_2 ( CV_64FC ) , accumulateProduct ( src1 , src2 , dst ) )
PERF_TEST_P_ACCUMULATE ( ProductDoubleMask , MAT_TYPES_ACCUMLATE_D_C ,
PERF_ACCUMULATE_MASK_INIT_2 ( CV_64FC ) , accumulateProduct ( src1 , src2 , dst , mask ) )
///////////////////////////// AccumulateWeighted ///////////////////////////////////
PERF_TEST_P_ACCUMULATE ( Weighted , MAT_TYPES_ACCUMLATE ,
PERF_ACCUMULATE_INIT ( CV_32FC ) , accumulateWeighted ( src1 , dst , 0.123 ) )
PERF_TEST_P_ACCUMULATE ( WeightedMask , MAT_TYPES_ACCUMLATE_C ,
PERF_ACCUMULATE_MASK_INIT ( CV_32FC ) , accumulateWeighted ( src1 , dst , 0.123 , mask ) )
PERF_TEST_P_ACCUMULATE ( WeightedDouble , MAT_TYPES_ACCUMLATE_D ,
PERF_ACCUMULATE_INIT ( CV_64FC ) , accumulateWeighted ( src1 , dst , 0.123456 ) )
PERF_TEST_P_ACCUMULATE ( WeightedDoubleMask , MAT_TYPES_ACCUMLATE_D_C ,
PERF_ACCUMULATE_MASK_INIT ( CV_64FC ) , accumulateWeighted ( src1 , dst , 0.123456 , mask ) )
} // namespace