@ -7,13 +7,15 @@
namespace opencv_test { namespace {
static const int fixedShiftU8 = 8 ;
static const int64_t fixedOne = ( 1L < < fixedShiftU8 ) ;
int64_t v [ ] [ 9 ] = {
{ fixedOne } , // size 1, sigma 0
{ fixedOne > > 2 , fixedOne > > 1 , fixedOne > > 2 } , // size 3, sigma 0
{ fixedOne > > 4 , fixedOne > > 2 , 6 * ( fixedOne > > 4 ) , fixedOne > > 2 , fixedOne > > 4 } , // size 5, sigma 0
{ fixedOne > > 5 , 7 * ( fixedOne > > 6 ) , 7 * ( fixedOne > > 5 ) , 9 * ( fixedOne > > 5 ) , 7 * ( fixedOne > > 5 ) , 7 * ( fixedOne > > 6 ) , fixedOne > > 5 } , // size 7, sigma 0
static const int64_t fixedOneU8 = ( 1L < < fixedShiftU8 ) ;
static const int fixedShiftU16 = 16 ;
static const int64_t fixedOneU16 = ( 1L < < fixedShiftU16 ) ;
int64_t vU8 [ ] [ 9 ] = {
{ fixedOneU8 } , // size 1, sigma 0
{ fixedOneU8 > > 2 , fixedOneU8 > > 1 , fixedOneU8 > > 2 } , // size 3, sigma 0
{ fixedOneU8 > > 4 , fixedOneU8 > > 2 , 6 * ( fixedOneU8 > > 4 ) , fixedOneU8 > > 2 , fixedOneU8 > > 4 } , // size 5, sigma 0
{ fixedOneU8 > > 5 , 7 * ( fixedOneU8 > > 6 ) , 7 * ( fixedOneU8 > > 5 ) , 9 * ( fixedOneU8 > > 5 ) , 7 * ( fixedOneU8 > > 5 ) , 7 * ( fixedOneU8 > > 6 ) , fixedOneU8 > > 5 } , // size 7, sigma 0
{ 4 , 13 , 30 , 51 , 60 , 51 , 30 , 13 , 4 } , // size 9, sigma 0
# if 1
# define CV_TEST_INACCURATE_GAUSSIAN_BLUR
@ -24,6 +26,14 @@ namespace opencv_test { namespace {
# endif
} ;
int64_t vU16 [ ] [ 9 ] = {
{ fixedOneU16 } , // size 1, sigma 0
{ fixedOneU16 > > 2 , fixedOneU16 > > 1 , fixedOneU16 > > 2 } , // size 3, sigma 0
{ fixedOneU16 > > 4 , fixedOneU16 > > 2 , 6 * ( fixedOneU16 > > 4 ) , fixedOneU16 > > 2 , fixedOneU16 > > 4 } , // size 5, sigma 0
{ fixedOneU16 > > 5 , 7 * ( fixedOneU16 > > 6 ) , 7 * ( fixedOneU16 > > 5 ) , 9 * ( fixedOneU16 > > 5 ) , 7 * ( fixedOneU16 > > 5 ) , 7 * ( fixedOneU16 > > 6 ) , fixedOneU16 > > 5 } , // size 7, sigma 0
{ 4 < < 8 , 13 < < 8 , 30 < < 8 , 51 < < 8 , 60 < < 8 , 51 < < 8 , 30 < < 8 , 13 < < 8 , 4 < < 8 } // size 9, sigma 0
} ;
template < typename T , int fixedShift >
T eval ( Mat src , vector < int64_t > kernelx , vector < int64_t > kernely )
{
@ -39,8 +49,6 @@ namespace opencv_test { namespace {
return saturate_cast < T > ( ( val + fixedRound ) > > ( fixedShift * 2 ) ) ;
}
TEST ( GaussianBlur_Bitexact , Linear8U )
{
struct testmode
{
int type ;
@ -50,34 +58,6 @@ TEST(GaussianBlur_Bitexact, Linear8U)
double sigma_y ;
vector < int64_t > kernel_x ;
vector < int64_t > kernel_y ;
} modes [ ] = {
{ CV_8UC1 , Size ( 1 , 1 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) } ,
{ CV_8UC1 , Size ( 2 , 2 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) } ,
{ CV_8UC1 , Size ( 3 , 1 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) } ,
{ CV_8UC1 , Size ( 1 , 3 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) } ,
{ CV_8UC1 , Size ( 3 , 3 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) } ,
{ CV_8UC1 , Size ( 3 , 3 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( v [ 2 ] , v [ 2 ] + 5 ) , vector < int64_t > ( v [ 2 ] , v [ 2 ] + 5 ) } ,
{ CV_8UC1 , Size ( 3 , 3 ) , Size ( 7 , 7 ) , 0 , 0 , vector < int64_t > ( v [ 3 ] , v [ 3 ] + 7 ) , vector < int64_t > ( v [ 3 ] , v [ 3 ] + 7 ) } ,
{ CV_8UC1 , Size ( 5 , 5 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) } ,
{ CV_8UC1 , Size ( 5 , 5 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( v [ 2 ] , v [ 2 ] + 5 ) , vector < int64_t > ( v [ 2 ] , v [ 2 ] + 5 ) } ,
{ CV_8UC1 , Size ( 3 , 5 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( v [ 2 ] , v [ 2 ] + 5 ) , vector < int64_t > ( v [ 2 ] , v [ 2 ] + 5 ) } ,
{ CV_8UC1 , Size ( 5 , 5 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( v [ 2 ] , v [ 2 ] + 5 ) , vector < int64_t > ( v [ 2 ] , v [ 2 ] + 5 ) } ,
{ CV_8UC1 , Size ( 5 , 5 ) , Size ( 7 , 7 ) , 0 , 0 , vector < int64_t > ( v [ 3 ] , v [ 3 ] + 7 ) , vector < int64_t > ( v [ 3 ] , v [ 3 ] + 7 ) } ,
{ CV_8UC1 , Size ( 7 , 7 ) , Size ( 7 , 7 ) , 0 , 0 , vector < int64_t > ( v [ 3 ] , v [ 3 ] + 7 ) , vector < int64_t > ( v [ 3 ] , v [ 3 ] + 7 ) } ,
{ CV_8UC1 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) } ,
{ CV_8UC2 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) } ,
{ CV_8UC3 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) } ,
{ CV_8UC4 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) , vector < int64_t > ( v [ 1 ] , v [ 1 ] + 3 ) } ,
{ CV_8UC1 , Size ( 256 , 128 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( v [ 2 ] , v [ 2 ] + 5 ) , vector < int64_t > ( v [ 2 ] , v [ 2 ] + 5 ) } ,
{ CV_8UC1 , Size ( 256 , 128 ) , Size ( 7 , 7 ) , 0 , 0 , vector < int64_t > ( v [ 3 ] , v [ 3 ] + 7 ) , vector < int64_t > ( v [ 3 ] , v [ 3 ] + 7 ) } ,
{ CV_8UC1 , Size ( 256 , 128 ) , Size ( 9 , 9 ) , 0 , 0 , vector < int64_t > ( v [ 4 ] , v [ 4 ] + 9 ) , vector < int64_t > ( v [ 4 ] , v [ 4 ] + 9 ) } ,
# ifdef CV_TEST_INACCURATE_GAUSSIAN_BLUR
{ CV_8UC1 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 1.75 , 0.875 , vector < int64_t > ( v [ 5 ] , v [ 5 ] + 3 ) , vector < int64_t > ( v [ 6 ] , v [ 6 ] + 3 ) } ,
{ CV_8UC2 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 1.75 , 0.875 , vector < int64_t > ( v [ 5 ] , v [ 5 ] + 3 ) , vector < int64_t > ( v [ 6 ] , v [ 6 ] + 3 ) } ,
{ CV_8UC3 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 1.75 , 0.875 , vector < int64_t > ( v [ 5 ] , v [ 5 ] + 3 ) , vector < int64_t > ( v [ 6 ] , v [ 6 ] + 3 ) } ,
{ CV_8UC4 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 1.75 , 0.875 , vector < int64_t > ( v [ 5 ] , v [ 5 ] + 3 ) , vector < int64_t > ( v [ 6 ] , v [ 6 ] + 3 ) } ,
{ CV_8UC1 , Size ( 256 , 128 ) , Size ( 5 , 5 ) , 0.375 , 0.75 , vector < int64_t > ( v [ 7 ] , v [ 7 ] + 5 ) , vector < int64_t > ( v [ 8 ] , v [ 8 ] + 5 ) }
# endif
} ;
int bordermodes [ ] = {
@ -93,11 +73,12 @@ TEST(GaussianBlur_Bitexact, Linear8U)
// BORDER_REFLECT_101
} ;
for ( int modeind = 0 , _modecnt = sizeof ( modes ) / sizeof ( modes [ 0 ] ) ; modeind < _modecnt ; + + modeind )
template < int fixedShift >
void checkMode ( const testmode & mode )
{
int type = modes [ modeind ] . type , depth = CV_MAT_DEPTH ( type ) , cn = CV_MAT_CN ( type ) ;
int dcols = modes [ modeind ] . sz . width , drows = modes [ modeind ] . sz . height ;
Size kernel = modes [ modeind ] . kernel ;
int type = mode . type , depth = CV_MAT_DEPTH ( type ) , cn = CV_MAT_CN ( type ) ;
int dcols = mode . sz . width , drows = mode . sz . height ;
Size kernel = mode . kernel ;
int rows = drows + 20 , cols = dcols + 20 ;
Mat src ( rows , cols , type ) , refdst ( drows , dcols , type ) , dst ;
@ -142,25 +123,93 @@ TEST(GaussianBlur_Bitexact, Linear8U)
for ( int i = 0 ; i < dcols ; i + + )
{
if ( depth = = CV_8U )
dst_chan . at < uint8_t > ( j , i ) = eval < uint8_t , fixedShiftU8 > ( src_chan ( Rect ( i , j , kernel . width , kernel . height ) ) , modes [ modeind ] . kernel_x , modes [ modeind ] . kernel_y ) ;
dst_chan . at < uint8_t > ( j , i ) = eval < uint8_t , fixedShift > ( src_chan ( Rect ( i , j , kernel . width , kernel . height ) ) , mode . kernel_x , mode . kernel_y ) ;
else if ( depth = = CV_16U )
dst_chan . at < uint16_t > ( j , i ) = eval < uint16_t , fixedShiftU8 > ( src_chan ( Rect ( i , j , kernel . width , kernel . height ) ) , modes [ modeind ] . kernel_x , modes [ modeind ] . kernel_y ) ;
dst_chan . at < uint16_t > ( j , i ) = eval < uint16_t , fixedShift > ( src_chan ( Rect ( i , j , kernel . width , kernel . height ) ) , mode . kernel_x , mode . kernel_y ) ;
else if ( depth = = CV_16S )
dst_chan . at < int16_t > ( j , i ) = eval < int16_t , fixedShiftU8 > ( src_chan ( Rect ( i , j , kernel . width , kernel . height ) ) , modes [ modeind ] . kernel_x , modes [ modeind ] . kernel_y ) ;
dst_chan . at < int16_t > ( j , i ) = eval < int16_t , fixedShift > ( src_chan ( Rect ( i , j , kernel . width , kernel . height ) ) , mode . kernel_x , mode . kernel_y ) ;
else if ( depth = = CV_32S )
dst_chan . at < int32_t > ( j , i ) = eval < int32_t , fixedShiftU8 > ( src_chan ( Rect ( i , j , kernel . width , kernel . height ) ) , modes [ modeind ] . kernel_x , modes [ modeind ] . kernel_y ) ;
dst_chan . at < int32_t > ( j , i ) = eval < int32_t , fixedShift > ( src_chan ( Rect ( i , j , kernel . width , kernel . height ) ) , mode . kernel_x , mode . kernel_y ) ;
else
CV_Assert ( 0 ) ;
}
mixChannels ( dst_chan , refdst , toFrom , 1 ) ;
}
cv : : GaussianBlur ( src_roi , dst , kernel , modes [ modeind ] . sigma_x , modes [ modeind ] . sigma_y , bordermodes [ borderind ] ) ;
cv : : GaussianBlur ( src_roi , dst , kernel , mode . sigma_x , mode . sigma_y , bordermodes [ borderind ] ) ;
EXPECT_GE ( 0 , cvtest : : norm ( refdst , dst , cv : : NORM_L1 ) )
< < " GaussianBlur " < < cn < < " -chan mat " < < drows < < " x " < < dcols < < " by kernel " < < kernel < < " sigma( " < < modes [ modeind ] . sigma_x < < " ; " < < modes [ modeind ] . sigma_y < < " ) failed with max diff " < < cvtest : : norm ( refdst , dst , cv : : NORM_INF ) ;
< < " GaussianBlur " < < cn < < " -chan mat " < < drows < < " x " < < dcols < < " by kernel " < < kernel < < " sigma( " < < mode . sigma_x < < " ; " < < mode . sigma_y < < " ) failed with max diff " < < cvtest : : norm ( refdst , dst , cv : : NORM_INF ) ;
}
}
TEST ( GaussianBlur_Bitexact , Linear8U )
{
testmode modes [ ] = {
{ CV_8UC1 , Size ( 1 , 1 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) } ,
{ CV_8UC1 , Size ( 2 , 2 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) } ,
{ CV_8UC1 , Size ( 3 , 1 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) } ,
{ CV_8UC1 , Size ( 1 , 3 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) } ,
{ CV_8UC1 , Size ( 3 , 3 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) } ,
{ CV_8UC1 , Size ( 3 , 3 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( vU8 [ 2 ] , vU8 [ 2 ] + 5 ) , vector < int64_t > ( vU8 [ 2 ] , vU8 [ 2 ] + 5 ) } ,
{ CV_8UC1 , Size ( 3 , 3 ) , Size ( 7 , 7 ) , 0 , 0 , vector < int64_t > ( vU8 [ 3 ] , vU8 [ 3 ] + 7 ) , vector < int64_t > ( vU8 [ 3 ] , vU8 [ 3 ] + 7 ) } ,
{ CV_8UC1 , Size ( 5 , 5 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) } ,
{ CV_8UC1 , Size ( 5 , 5 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( vU8 [ 2 ] , vU8 [ 2 ] + 5 ) , vector < int64_t > ( vU8 [ 2 ] , vU8 [ 2 ] + 5 ) } ,
{ CV_8UC1 , Size ( 3 , 5 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( vU8 [ 2 ] , vU8 [ 2 ] + 5 ) , vector < int64_t > ( vU8 [ 2 ] , vU8 [ 2 ] + 5 ) } ,
{ CV_8UC1 , Size ( 5 , 5 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( vU8 [ 2 ] , vU8 [ 2 ] + 5 ) , vector < int64_t > ( vU8 [ 2 ] , vU8 [ 2 ] + 5 ) } ,
{ CV_8UC1 , Size ( 5 , 5 ) , Size ( 7 , 7 ) , 0 , 0 , vector < int64_t > ( vU8 [ 3 ] , vU8 [ 3 ] + 7 ) , vector < int64_t > ( vU8 [ 3 ] , vU8 [ 3 ] + 7 ) } ,
{ CV_8UC1 , Size ( 7 , 7 ) , Size ( 7 , 7 ) , 0 , 0 , vector < int64_t > ( vU8 [ 3 ] , vU8 [ 3 ] + 7 ) , vector < int64_t > ( vU8 [ 3 ] , vU8 [ 3 ] + 7 ) } ,
{ CV_8UC1 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) } ,
{ CV_8UC2 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) } ,
{ CV_8UC3 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) } ,
{ CV_8UC4 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) , vector < int64_t > ( vU8 [ 1 ] , vU8 [ 1 ] + 3 ) } ,
{ CV_8UC1 , Size ( 256 , 128 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( vU8 [ 2 ] , vU8 [ 2 ] + 5 ) , vector < int64_t > ( vU8 [ 2 ] , vU8 [ 2 ] + 5 ) } ,
{ CV_8UC1 , Size ( 256 , 128 ) , Size ( 7 , 7 ) , 0 , 0 , vector < int64_t > ( vU8 [ 3 ] , vU8 [ 3 ] + 7 ) , vector < int64_t > ( vU8 [ 3 ] , vU8 [ 3 ] + 7 ) } ,
{ CV_8UC1 , Size ( 256 , 128 ) , Size ( 9 , 9 ) , 0 , 0 , vector < int64_t > ( vU8 [ 4 ] , vU8 [ 4 ] + 9 ) , vector < int64_t > ( vU8 [ 4 ] , vU8 [ 4 ] + 9 ) } ,
# ifdef CV_TEST_INACCURATE_GAUSSIAN_BLUR
{ CV_8UC1 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 1.75 , 0.875 , vector < int64_t > ( vU8 [ 5 ] , vU8 [ 5 ] + 3 ) , vector < int64_t > ( vU8 [ 6 ] , vU8 [ 6 ] + 3 ) } ,
{ CV_8UC2 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 1.75 , 0.875 , vector < int64_t > ( vU8 [ 5 ] , vU8 [ 5 ] + 3 ) , vector < int64_t > ( vU8 [ 6 ] , vU8 [ 6 ] + 3 ) } ,
{ CV_8UC3 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 1.75 , 0.875 , vector < int64_t > ( vU8 [ 5 ] , vU8 [ 5 ] + 3 ) , vector < int64_t > ( vU8 [ 6 ] , vU8 [ 6 ] + 3 ) } ,
{ CV_8UC4 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 1.75 , 0.875 , vector < int64_t > ( vU8 [ 5 ] , vU8 [ 5 ] + 3 ) , vector < int64_t > ( vU8 [ 6 ] , vU8 [ 6 ] + 3 ) } ,
{ CV_8UC1 , Size ( 256 , 128 ) , Size ( 5 , 5 ) , 0.375 , 0.75 , vector < int64_t > ( vU8 [ 7 ] , vU8 [ 7 ] + 5 ) , vector < int64_t > ( vU8 [ 8 ] , vU8 [ 8 ] + 5 ) }
# endif
} ;
for ( int modeind = 0 , _modecnt = sizeof ( modes ) / sizeof ( modes [ 0 ] ) ; modeind < _modecnt ; + + modeind )
{
checkMode < fixedShiftU8 > ( modes [ modeind ] ) ;
}
}
TEST ( GaussianBlur_Bitexact , Linear16U )
{
testmode modes [ ] = {
{ CV_16UC1 , Size ( 1 , 1 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) } ,
{ CV_16UC1 , Size ( 2 , 2 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) } ,
{ CV_16UC1 , Size ( 3 , 1 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) } ,
{ CV_16UC1 , Size ( 1 , 3 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) } ,
{ CV_16UC1 , Size ( 3 , 3 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) } ,
{ CV_16UC1 , Size ( 3 , 3 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( vU16 [ 2 ] , vU16 [ 2 ] + 5 ) , vector < int64_t > ( vU16 [ 2 ] , vU16 [ 2 ] + 5 ) } ,
{ CV_16UC1 , Size ( 3 , 3 ) , Size ( 7 , 7 ) , 0 , 0 , vector < int64_t > ( vU16 [ 3 ] , vU16 [ 3 ] + 7 ) , vector < int64_t > ( vU16 [ 3 ] , vU16 [ 3 ] + 7 ) } ,
{ CV_16UC1 , Size ( 5 , 5 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) } ,
{ CV_16UC1 , Size ( 5 , 5 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( vU16 [ 2 ] , vU16 [ 2 ] + 5 ) , vector < int64_t > ( vU16 [ 2 ] , vU16 [ 2 ] + 5 ) } ,
{ CV_16UC1 , Size ( 3 , 5 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( vU16 [ 2 ] , vU16 [ 2 ] + 5 ) , vector < int64_t > ( vU16 [ 2 ] , vU16 [ 2 ] + 5 ) } ,
{ CV_16UC1 , Size ( 5 , 5 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( vU16 [ 2 ] , vU16 [ 2 ] + 5 ) , vector < int64_t > ( vU16 [ 2 ] , vU16 [ 2 ] + 5 ) } ,
{ CV_16UC1 , Size ( 5 , 5 ) , Size ( 7 , 7 ) , 0 , 0 , vector < int64_t > ( vU16 [ 3 ] , vU16 [ 3 ] + 7 ) , vector < int64_t > ( vU16 [ 3 ] , vU16 [ 3 ] + 7 ) } ,
{ CV_16UC1 , Size ( 7 , 7 ) , Size ( 7 , 7 ) , 0 , 0 , vector < int64_t > ( vU16 [ 3 ] , vU16 [ 3 ] + 7 ) , vector < int64_t > ( vU16 [ 3 ] , vU16 [ 3 ] + 7 ) } ,
{ CV_16UC1 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) } ,
{ CV_16UC2 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) } ,
{ CV_16UC3 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) } ,
{ CV_16UC4 , Size ( 256 , 128 ) , Size ( 3 , 3 ) , 0 , 0 , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) , vector < int64_t > ( vU16 [ 1 ] , vU16 [ 1 ] + 3 ) } ,
{ CV_16UC1 , Size ( 256 , 128 ) , Size ( 5 , 5 ) , 0 , 0 , vector < int64_t > ( vU16 [ 2 ] , vU16 [ 2 ] + 5 ) , vector < int64_t > ( vU16 [ 2 ] , vU16 [ 2 ] + 5 ) } ,
{ CV_16UC1 , Size ( 256 , 128 ) , Size ( 7 , 7 ) , 0 , 0 , vector < int64_t > ( vU16 [ 3 ] , vU16 [ 3 ] + 7 ) , vector < int64_t > ( vU16 [ 3 ] , vU16 [ 3 ] + 7 ) } ,
{ CV_16UC1 , Size ( 256 , 128 ) , Size ( 9 , 9 ) , 0 , 0 , vector < int64_t > ( vU16 [ 4 ] , vU16 [ 4 ] + 9 ) , vector < int64_t > ( vU16 [ 4 ] , vU16 [ 4 ] + 9 ) } ,
} ;
for ( int modeind = 0 , _modecnt = sizeof ( modes ) / sizeof ( modes [ 0 ] ) ; modeind < _modecnt ; + + modeind )
{
checkMode < 16 > ( modes [ modeind ] ) ;
}
}
TEST ( GaussianBlur_Bitexact , regression_15015 )