00001 #ifndef Impala_Core_Array_GaussDerivative2d_h
00002 #define Impala_Core_Array_GaussDerivative2d_h
00003
00004 #include "Core/Array/MakeGaussian2d.h"
00005 #include "Core/Array/Pattern/PatGenConv2d.h"
00006 #include "Core/Array/Trait/BpoMul.h"
00007 #include "Core/Array/Trait/BpoAddAssign.h"
00008
00009 namespace Impala
00010 {
00011 namespace Core
00012 {
00013 namespace Array
00014 {
00015
00016
00017
00018
00019
00020 template<class DstArrayT, class SrcArrayT>
00021 inline void
00022 GaussDerivative2d(DstArrayT*& dst, SrcArrayT* src,
00023 double sx, double sy, double phi, int der, double n)
00024 {
00025 Array2dScalarReal64* g = MakeGaussian2d(sx, sy, phi, der, n);
00026 Trait::BpoMul<Array2dScalarReal64, Array2dScalarReal64,
00027 Array2dScalarReal64> bpo;
00028 Trait::BpoAddAssign<Array2dScalarReal64, Array2dScalarReal64> bpoAss;
00029 Pattern::PatGenConv2d(dst, src, g, bpo, bpoAss);
00030 delete g;
00031 }
00032
00033 }
00034 }
00035 }
00036
00037 #endif