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

template<class DstArrayT, class SrcArrayT, class KerArrayT, class PixOpT, class RedOpT>
void Impala::Core::Array::Pattern::PatGenConv2d ( DstArrayT *&  dst,
SrcArrayT *  src,
KerArrayT *  ker,
PixOpT &  pixOp,
RedOpT &  redOp,
BorderType  borderType = BORDERMIRROR 
) [inline]

Definition at line 26 of file PatGenConv2d.h.

References ArrayCH(), ArrayCW(), Impala::Core::Array::CheckBorderSize(), FuncGenConv2dDispatch(), Impala::Core::Array::PAR_PART, PatSetBorder(), PxArrayDeletePD(), PxArrayForceNonDistributed(), PxArrayPD(), PxArrayPostStateTrans(), PxArrayPreStateTrans(), PxRunLazyParallel(), PxRunParallel(), STRONG, and WEAK.

Referenced by Impala::Core::Array::Dilation(), Impala::Samples::Talk::DoTalkGenConv2d(), Impala::Core::Array::Erosion(), and Impala::Core::Array::GaussDerivative2d().

00028 {
00029     int numX = ArrayCW(ker) / 2;
00030     int numY = ArrayCH(ker) / 2;
00031     SrcArrayT* checkedSrc = CheckBorderSize(src, numX, numY);
00032 
00033     if ((dst == 0) || (dst == checkedSrc))
00034         dst = ArrayClone<DstArrayT>(checkedSrc);
00035 
00036 #ifdef PX_HORUS_USED
00037     if (!PxRunParallel()) {                         // run sequential
00038 #endif
00039         /*
00040         if (borderType == BORDERCONSTANT)
00041             PatSetBorder(checkedSrc, numX, numY, borderType,
00042                          redOp.NeutralElement(), redOp.NeutralElement(),
00043                          redOp.NeutralElement(), redOp.NeutralElement(),
00044                          redOp.NeutralElement());
00045         else
00046         */
00047             PatSetBorder(checkedSrc, numX, numY);
00048         FuncGenConv2dDispatch(dst, checkedSrc, ker, pixOp, redOp);
00049 
00050 #ifdef PX_HORUS_USED
00051     } else {                                        // run parallel
00052         PxArrayPreStateTrans(checkedSrc, PAR_PART, STRONG);
00053         PxArrayPreStateTrans(dst, PAR_PART, WEAK);
00054         PatSetBorder(PxArrayPD(checkedSrc), numX, numY);
00055         FuncGenConv2dDispatch(PxArrayPD(dst),
00056                         PxArrayPD(checkedSrc), ker, pixOp, redOp);
00057         if (PxArrayPD(checkedSrc) != PxArrayPD(src))
00058             PxArrayDeletePD(checkedSrc);
00059         PxArrayPostStateTrans(dst);
00060 
00061         if (!PxRunLazyParallel()) {
00062             PxArrayForceNonDistributed(src);
00063             PxArrayForceNonDistributed(dst);
00064         }
00065     }
00066 #endif
00067 
00068     if (checkedSrc != src)
00069         delete checkedSrc;
00070 }

Here is the call graph for this function:


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