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

template<class DstArrayT, class SrcArrayT, class KerArrayT, class PixOpT, class RedOpT, class CE>
void Impala::Core::Array::Pattern::FuncGenConv2d_NaiIncCE ( DstArrayT *  dst,
SrcArrayT *  src,
KerArrayT *  ker,
PixOpT &  pixOp,
RedOpT &  redOp,
CE &  ce 
)

Definition at line 226 of file FuncGenConv2d.h.

References ArrayCH(), ArrayCPB(), and ArrayCW().

00228 {
00229     typedef typename DstArrayT::StorType DstStorT;
00230     typedef typename DstArrayT::ArithType DstArithT;
00231     typedef typename SrcArrayT::StorType SrcStorT;
00232     typedef typename SrcArrayT::ArithType SrcArithT;
00233     typedef typename KerArrayT::StorType KerStorT;
00234     typedef typename KerArrayT::ArithType KerArithT;
00235 
00236     int imgWidth = ArrayCW(dst);
00237     int imgHeight = ArrayCH(dst);
00238     int kerWidth = ArrayCW(ker);
00239     int kerHeight = ArrayCH(ker);
00240     int kerBW = ArrayCW(ker) / 2;
00241     int kerBH = ArrayCH(ker) / 2;
00242 
00243     DstStorT* temp = new DstStorT[DstArrayT::ElemSize()];
00244 
00245     while (!ce.Done())
00246     {
00247         RedOpT::NeutralElement(ce.DstPointer(dst));
00248         for (int j=0 ; j<kerHeight ; j++) 
00249         {
00250             SrcStorT* sPtr = ArrayCPB(src, -kerBW + ce.X(), -kerBH + ce.Y() + j);
00251             KerStorT* kPtr = ArrayCPB(ker, 0, j);
00252             for (int i=0 ; i<kerWidth ; i++) 
00253             {
00254                 pixOp.DoIt(temp, sPtr, kPtr);
00255                 redOp.DoIt(ce.DstPointer(dst), temp);
00256                 sPtr += SrcArrayT::ElemSize();
00257                 kPtr += KerArrayT::ElemSize();
00258             }
00259         }
00260         ce.NextCoordinate(dst, src);
00261     }
00262     delete temp;
00263 }

Here is the call graph for this function:


Generated on Fri Mar 19 11:01:03 2010 for ImpalaSrc by  doxygen 1.5.1