Wondercoll
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
Macros | Functions
cxmean.cpp File Reference
#include "_cxcore.h"
#include <float.h>

Macros

#define ICV_MEAN_CASE_C1(len)
 
#define ICV_MEAN_CASE_C2(len)
 
#define ICV_MEAN_CASE_C3(len)
 
#define ICV_MEAN_CASE_C4(len)
 
#define ICV_MEAN_COI_CASE(len, cn)
 
#define ICV_MEAN_ENTRY_COMMON()
 
#define ICV_MEAN_ENTRY_C1(sumtype)
 
#define ICV_MEAN_ENTRY_C2(sumtype)
 
#define ICV_MEAN_ENTRY_C3(sumtype)
 
#define ICV_MEAN_ENTRY_C4(sumtype)
 
#define ICV_MEAN_ENTRY_BLOCK_COMMON(block_size)
 
#define ICV_MEAN_ENTRY_BLOCK_C1(sumtype, worktype, block_size)
 
#define ICV_MEAN_ENTRY_BLOCK_C2(sumtype, worktype, block_size)
 
#define ICV_MEAN_ENTRY_BLOCK_C3(sumtype, worktype, block_size)
 
#define ICV_MEAN_ENTRY_BLOCK_C4(sumtype, worktype, block_size)
 
#define ICV_MEAN_EXIT_COMMON()   double scale = pix ? 1./pix : 0
 
#define ICV_MEAN_EXIT_C1(tmp)
 
#define ICV_MEAN_EXIT_C2(tmp)
 
#define ICV_MEAN_EXIT_C3(tmp)
 
#define ICV_MEAN_EXIT_C4(tmp)
 
#define ICV_MEAN_EXIT_BLOCK_C1()
 
#define ICV_MEAN_EXIT_BLOCK_C2()
 
#define ICV_MEAN_EXIT_BLOCK_C3()
 
#define ICV_MEAN_EXIT_BLOCK_C4()
 
#define ICV_MEAN_UPDATE_COMMON(block_size)   remaining = block_size
 
#define ICV_MEAN_UPDATE_C1(block_size)
 
#define ICV_MEAN_UPDATE_C2(block_size)
 
#define ICV_MEAN_UPDATE_C3(block_size)
 
#define ICV_MEAN_UPDATE_C4(block_size)
 
#define ICV_IMPL_MEAN_BLOCK_FUNC_2D(flavor, cn,arrtype, sumtype, worktype, block_size)
 
#define ICV_IMPL_MEAN_FUNC_2D(flavor, cn,arrtype, sumtype, worktype)
 
#define ICV_IMPL_MEAN_BLOCK_FUNC_2D_COI(flavor,arrtype, sumtype, worktype, block_size)
 
#define ICV_IMPL_MEAN_FUNC_2D_COI(flavor,arrtype, sumtype, worktype)
 
#define ICV_IMPL_MEAN_BLOCK_ALL(flavor, arrtype, sumtype,worktype, block_size)
 
#define ICV_IMPL_MEAN_ALL(flavor, arrtype, sumtype, worktype)
 
#define icvMean_8s_C1MR   0
 
#define icvMean_8s_C2MR   0
 
#define icvMean_8s_C3MR   0
 
#define icvMean_8s_C4MR   0
 
#define icvMean_8s_CnCMR   0
 

Functions

CV_IMPL CvScalar cvAvg (const void *img, const void *maskarr)
 

Macro Definition Documentation

#define ICV_IMPL_MEAN_ALL (   flavor,
  arrtype,
  sumtype,
  worktype 
)
Value:
ICV_IMPL_MEAN_FUNC_2D( flavor, 1, arrtype, sumtype, worktype ) \
ICV_IMPL_MEAN_FUNC_2D( flavor, 2, arrtype, sumtype, worktype ) \
ICV_IMPL_MEAN_FUNC_2D( flavor, 3, arrtype, sumtype, worktype ) \
ICV_IMPL_MEAN_FUNC_2D( flavor, 4, arrtype, sumtype, worktype ) \
ICV_IMPL_MEAN_FUNC_2D_COI( flavor, arrtype, sumtype, worktype )
#define ICV_IMPL_MEAN_BLOCK_ALL (   flavor,
  arrtype,
  sumtype,
  worktype,
  block_size 
)
Value:
worktype, block_size ) \
ICV_IMPL_MEAN_BLOCK_FUNC_2D( flavor, 2, arrtype, sumtype, \
worktype, block_size ) \
ICV_IMPL_MEAN_BLOCK_FUNC_2D( flavor, 3, arrtype, sumtype, \
worktype, block_size ) \
ICV_IMPL_MEAN_BLOCK_FUNC_2D( flavor, 4, arrtype, sumtype, \
worktype, block_size ) \
ICV_IMPL_MEAN_BLOCK_FUNC_2D_COI( flavor, arrtype, sumtype, \
worktype, block_size )
#define ICV_IMPL_MEAN_BLOCK_FUNC_2D (   flavor,
  cn,
  arrtype,
  sumtype,
  worktype,
  block_size 
)
Value:
IPCVAPI_IMPL( CvStatus, icvMean_##flavor##_C##cn##MR, \
( const arrtype* src, int step, \
const uchar* mask, int maskstep, \
CvSize size, double* mean ), \
(src, step, mask, maskstep, size, mean)) \
{ \
ICV_MEAN_ENTRY_BLOCK_C##cn( sumtype, worktype, block_size );\
for( ; size.height--; src += step, mask += maskstep ) \
{ \
int x = 0; \
while( x < size.width ) \
{ \
int limit = MIN( remaining, size.width - x ); \
remaining -= limit; \
limit += x; \
ICV_MEAN_CASE_C##cn( limit ); \
if( remaining == 0 ) \
{ \
ICV_MEAN_UPDATE_C##cn( block_size ); \
} \
} \
} \
\
{ ICV_MEAN_EXIT_BLOCK_C##cn(); } \
return CV_OK; \
}
#define ICV_IMPL_MEAN_BLOCK_FUNC_2D_COI (   flavor,
  arrtype,
  sumtype,
  worktype,
  block_size 
)
Value:
static CvStatus CV_STDCALL \
icvMean_##flavor##_CnCMR( const arrtype* src, int step, \
const uchar* mask, int maskstep, \
CvSize size, int cn, \
int coi, double* mean ) \
{ \
ICV_MEAN_ENTRY_BLOCK_C1( sumtype, worktype, block_size ); \
src += coi - 1; \
for( ; size.height--; src += step, mask += maskstep ) \
{ \
int x = 0; \
while( x < size.width ) \
{ \
int limit = MIN( remaining, size.width - x ); \
remaining -= limit; \
limit += x; \
ICV_MEAN_COI_CASE( limit, cn ); \
if( remaining == 0 ) \
{ \
ICV_MEAN_UPDATE_C1( block_size ); \
} \
} \
} \
\
return CV_OK; \
}
#define ICV_IMPL_MEAN_FUNC_2D (   flavor,
  cn,
  arrtype,
  sumtype,
  worktype 
)
Value:
IPCVAPI_IMPL( CvStatus, icvMean_##flavor##_C##cn##MR, \
( const arrtype* src, int step, \
const uchar* mask, int maskstep, \
CvSize size, double* mean), \
(src, step, mask, maskstep, size, mean)) \
{ \
ICV_MEAN_ENTRY_C##cn( sumtype ); \
for( ; size.height--; src += step, mask += maskstep ) \
{ \
int x = 0; \
ICV_MEAN_CASE_C##cn( size.width ); \
} \
\
{ ICV_MEAN_EXIT_C##cn( s ); } \
return CV_OK; \
}
#define ICV_IMPL_MEAN_FUNC_2D_COI (   flavor,
  arrtype,
  sumtype,
  worktype 
)
Value:
static CvStatus CV_STDCALL \
icvMean_##flavor##_CnCMR( const arrtype* src, int step, \
const uchar* mask, int maskstep, \
CvSize size, int cn, \
int coi, double* mean ) \
{ \
ICV_MEAN_ENTRY_C1( sumtype ); \
src += coi - 1; \
for( ; size.height--; src += step, mask += maskstep ) \
{ \
int x = 0; \
ICV_MEAN_COI_CASE( size.width, cn ); \
} \
\
{ ICV_MEAN_EXIT_C1( s ); } \
return CV_OK; \
}
#define ICV_MEAN_CASE_C1 (   len)
Value:
for( ; x <= (len) - 2; x += 2 ) \
{ \
if( mask[x] ) \
s0 += src[x], pix++; \
if( mask[x+1] ) \
s0 += src[x+1], pix++; \
} \
for( ; x < (len); x++ ) \
if( mask[x] ) \
s0 += src[x], pix++
#define ICV_MEAN_CASE_C2 (   len)
Value:
for( ; x < (len); x++ ) \
if( mask[x] ) \
{ \
s0 += src[x*2]; \
s1 += src[x*2+1]; \
pix++; \
}
#define ICV_MEAN_CASE_C3 (   len)
Value:
for( ; x < (len); x++ ) \
if( mask[x] ) \
{ \
s0 += src[x*3]; \
s1 += src[x*3+1]; \
s2 += src[x*3+2]; \
pix++; \
}
#define ICV_MEAN_CASE_C4 (   len)
Value:
for( ; x < (len); x++ ) \
if( mask[x] ) \
{ \
s0 += src[x*4]; \
s1 += src[x*4+1]; \
s2 += src[x*4+2]; \
s3 += src[x*4+3]; \
pix++; \
}
#define ICV_MEAN_COI_CASE (   len,
  cn 
)
Value:
for( ; x <= (len) - 2; x += 2 ) \
{ \
if( mask[x] ) \
s0 += src[x*(cn)], pix++; \
if( mask[x+1] ) \
s0+=src[(x+1)*(cn)], pix++; \
} \
for( ; x < (len); x++ ) \
if( mask[x] ) \
s0 += src[x*(cn)], pix++;
#define ICV_MEAN_ENTRY_BLOCK_C1 (   sumtype,
  worktype,
  block_size 
)
Value:
sumtype sum0 = 0; \
worktype s0 = 0; \
ICV_MEAN_ENTRY_BLOCK_COMMON( block_size )
#define ICV_MEAN_ENTRY_BLOCK_C2 (   sumtype,
  worktype,
  block_size 
)
Value:
sumtype sum0 = 0, sum1 = 0; \
worktype s0 = 0, s1 = 0; \
ICV_MEAN_ENTRY_BLOCK_COMMON( block_size )
#define ICV_MEAN_ENTRY_BLOCK_C3 (   sumtype,
  worktype,
  block_size 
)
Value:
sumtype sum0 = 0, sum1 = 0, sum2 = 0; \
worktype s0 = 0, s1 = 0, s2 = 0; \
ICV_MEAN_ENTRY_BLOCK_COMMON( block_size )
#define ICV_MEAN_ENTRY_BLOCK_C4 (   sumtype,
  worktype,
  block_size 
)
Value:
sumtype sum0 = 0, sum1 = 0, sum2 = 0, sum3 = 0; \
worktype s0 = 0, s1 = 0, s2 = 0, s3 = 0; \
ICV_MEAN_ENTRY_BLOCK_COMMON( block_size )
#define ICV_MEAN_ENTRY_BLOCK_COMMON (   block_size)
Value:
int remaining = block_size; \
ICV_MEAN_ENTRY_COMMON()
#define ICV_MEAN_ENTRY_C1 (   sumtype)
Value:
sumtype s0 = 0; \
ICV_MEAN_ENTRY_COMMON()
#define ICV_MEAN_ENTRY_C2 (   sumtype)
Value:
sumtype s0 = 0, s1 = 0; \
ICV_MEAN_ENTRY_COMMON()
#define ICV_MEAN_ENTRY_C3 (   sumtype)
Value:
sumtype s0 = 0, s1 = 0, s2 = 0; \
ICV_MEAN_ENTRY_COMMON()
#define ICV_MEAN_ENTRY_C4 (   sumtype)
Value:
sumtype s0 = 0, s1 = 0, s2 = 0, s3 = 0; \
ICV_MEAN_ENTRY_COMMON()
#define ICV_MEAN_ENTRY_COMMON ( )
Value:
int pix = 0; \
step /= sizeof(src[0])
#define ICV_MEAN_EXIT_BLOCK_C1 ( )
Value:
sum0 += s0; \
ICV_MEAN_EXIT_C1( sum )
#define ICV_MEAN_EXIT_BLOCK_C2 ( )
Value:
sum0 += s0; sum1 += s1; \
ICV_MEAN_EXIT_C2( sum )
#define ICV_MEAN_EXIT_BLOCK_C3 ( )
Value:
sum0 += s0; sum1 += s1; \
sum2 += s2; \
ICV_MEAN_EXIT_C3( sum )
#define ICV_MEAN_EXIT_BLOCK_C4 ( )
Value:
sum0 += s0; sum1 += s1; \
sum2 += s2; sum3 += s3; \
ICV_MEAN_EXIT_C4( sum )
#define ICV_MEAN_EXIT_C1 (   tmp)
Value:
mean[0] = scale*(double)tmp##0
#define ICV_MEAN_EXIT_C2 (   tmp)
Value:
double t0 = scale*(double)tmp##0; \
double t1 = scale*(double)tmp##1; \
mean[0] = t0; \
mean[1] = t1
#define ICV_MEAN_EXIT_C3 (   tmp)
Value:
double t0 = scale*(double)tmp##0; \
double t1 = scale*(double)tmp##1; \
double t2 = scale*(double)tmp##2; \
mean[0] = t0; \
mean[1] = t1; \
mean[2] = t2
#define ICV_MEAN_EXIT_C4 (   tmp)
Value:
double t0 = scale*(double)tmp##0; \
double t1 = scale*(double)tmp##1; \
mean[0] = t0; \
mean[1] = t1; \
t0 = scale*(double)tmp##2; \
t1 = scale*(double)tmp##3; \
mean[2] = t0; \
mean[3] = t1
#define ICV_MEAN_EXIT_COMMON ( )    double scale = pix ? 1./pix : 0
#define ICV_MEAN_UPDATE_C1 (   block_size)
Value:
sum0 += s0; \
s0 = 0
#define ICV_MEAN_UPDATE_C2 (   block_size)
Value:
sum0 += s0; sum1 += s1; \
s0 = s1 = 0
#define ICV_MEAN_UPDATE_C3 (   block_size)
Value:
sum0 += s0; sum1 += s1; sum2 += s2; \
s0 = s1 = s2 = 0
#define ICV_MEAN_UPDATE_C4 (   block_size)
Value:
sum0 += s0; sum1 += s1; \
sum2 += s2; sum3 += s3; \
s0 = s1 = s2 = s3 = 0
#define ICV_MEAN_UPDATE_COMMON (   block_size)    remaining = block_size
#define icvMean_8s_C1MR   0
#define icvMean_8s_C2MR   0
#define icvMean_8s_C3MR   0
#define icvMean_8s_C4MR   0
#define icvMean_8s_CnCMR   0

Function Documentation

CV_IMPL CvScalar cvAvg ( const void *  img,
const void *  maskarr 
)