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:
|