template<class DstArrayT, class SrcArrayT, class KerArrayT, class PixOpT, class RedOpT, class 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:
|