Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

void Impala::Core::Array::IntegrateReduceWeighted ( Array::Array2dScalarReal64 *&  dst,
Array::Array2dScalarReal64 *  src,
int  n 
)

like the function above, but uses weights 1/3 2/3 1 .

.. 1 2/3 1/3, where the weighting 'kernel' is two bigger than n and n has to be bigger than 1

Definition at line 93 of file IntegrateReduce.h.

References Impala::Core::Array::Array2dTem< StorT, elemSize, ArithT >::CH(), CheckBorderSize(), Impala::Core::Array::Array2dTem< StorT, elemSize, ArithT >::CW(), IntegrateReduceLineWeighted(), Impala::Core::Array::Pattern::PatSetBorder(), and SetVal().

Referenced by Impala::Core::Feature::DSurf(), and Impala::Core::Feature::TestFunctions::testReducedImageWeighted().

00095 {
00096     // if dst exists it should have the correct size
00097     if(dst && (dst->CW() != src->CW()/n || dst->CH() != src->CH()/n))
00098     {
00099         delete dst;
00100         dst = 0;
00101     }
00102     if(dst == 0)
00103         dst = new Array::Array2dScalarReal64(src->CW()/n, src->CH()/n, 0, 0);
00104     SetVal(dst, 0);
00105     Array::Array2dScalarReal64* bordered = CheckBorderSize(src, 1, 1);
00106     Pattern::PatSetBorder(bordered, 1, 1); 
00107     for(int dstY=0 ; dstY<dst->CH() ; ++dstY)
00108     {
00109         int srcY = dstY*n;
00110         IntegrateReduceLineWeighted(dst, bordered, n, dstY, srcY-1, .33);
00111         IntegrateReduceLineWeighted(dst, bordered, n, dstY, srcY, .67);
00112         for(int i=1 ; i<n-1 ; ++i)
00113             IntegrateReduceLineWeighted(dst, bordered, n, dstY, srcY+i, 1.);
00114         IntegrateReduceLineWeighted(dst, bordered, n, dstY, srcY+n-1, .67);
00115         IntegrateReduceLineWeighted(dst, bordered, n, dstY, srcY+n, .33);
00116     }
00117     if(bordered != src)
00118         delete bordered;
00119 }

Here is the call graph for this function:


Generated on Fri Mar 19 10:56:52 2010 for ImpalaSrc by  doxygen 1.5.1