IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
GaussianHessian3dImgLvl1.h
1 // GaussianHessian3dImgLvl1.h:
3 // ---------------------------
4 //
14 
15 #ifndef __IPSDKIPLFILTERING_GAUSSIANHESSIAN3DIMGLVL1_H__
16 #define __IPSDKIPLFILTERING_GAUSSIANHESSIAN3DIMGLVL1_H__
17 
23 
24 // Attributes headers
25 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Input/3d/InImg3d.h>
26 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutHxxImg.h>
27 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutHxyImg.h>
28 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutHxzImg.h>
29 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutHyyImg.h>
30 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutHyzImg.h>
31 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutHzzImg.h>
32 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/InOptHessianGaussianCoverage.h>
33 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InStdDevX.h>
34 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InStdDevY.h>
35 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InStdDevZ.h>
36 
37 namespace ipsdk {
38 namespace imaproc {
39 namespace filter {
40 
43 
44 // declare processor class
45 IPSDK_DECLARE_LVL1_PROCESSOR(REP_ASYNC1, IPSDKIPLFiltering, GaussianHessian3dImg,
46  ipsdk::imaproc::matchSize(_pInImg3d, _pOutHxxImg) &&
47  ipsdk::imaproc::matchSizeAndType(_pOutHxxImg, _pOutHxyImg) &&
48  ipsdk::imaproc::matchSizeAndType(_pOutHxxImg, _pOutHxzImg) &&
49  ipsdk::imaproc::matchSizeAndType(_pOutHxxImg, _pOutHyyImg) &&
50  ipsdk::imaproc::matchSizeAndType(_pOutHxxImg, _pOutHyzImg) &&
51  ipsdk::imaproc::matchSizeAndType(_pOutHxxImg, _pOutHzzImg),
52  (((ipsdk)(imaproc)(attr))(InImg3d))
53  (((ipsdk)(imaproc)(attr))(InStdDevX))
54  (((ipsdk)(imaproc)(attr))(InStdDevY))
55  (((ipsdk)(imaproc)(attr))(InStdDevZ))
56  (((ipsdk)(imaproc)(attr))(InOptHessianGaussianCoverage))
57  (((ipsdk)(imaproc)(attr))(OutHxxImg)(promoteUnary)(_pInImg3d)(ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned))
58  (((ipsdk)(imaproc)(attr))(OutHxyImg)(promoteUnary)(_pInImg3d)(ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned))
59  (((ipsdk)(imaproc)(attr))(OutHxzImg)(promoteUnary)(_pInImg3d)(ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned))
60  (((ipsdk)(imaproc)(attr))(OutHyyImg)(promoteUnary)(_pInImg3d)(ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned))
61  (((ipsdk)(imaproc)(attr))(OutHyzImg)(promoteUnary)(_pInImg3d)(ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned))
62  (((ipsdk)(imaproc)(attr))(OutHzzImg)(promoteUnary)(_pInImg3d)(ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned)))
63 
64 // methods
65 public:
66 
67 protected:
71 
73  void clearIntermediateData();
74 
78  const ipsdk::image::ImageConstPtr& pInImg,
79  const KernelXYZConstPtr& pKnl,
80  const ipsdk::image::ImagePtr pOutImg);
81 
82 // attributes
83 protected:
86  KernelXYZPtr _pXSmoothingKernel;
87  KernelXYZPtr _pYSmoothingKernel;
88  KernelXYZPtr _pZSmoothingKernel;
89  KernelXYZPtr _pXGradientKernel;
90  KernelXYZPtr _pYGradientKernel;
91  KernelXYZPtr _pZGradientKernel;
92  KernelXYZPtr _pXHessianKernel;
93  KernelXYZPtr _pYHessianKernel;
94  KernelXYZPtr _pZHessianKernel;
96 
97  // border policy used for convolution
98  image::Border3dPolicyPtr _pBorder3dPolicy;
99 
100 };
101 
104 
105 } // end of namespace filter
106 } // end of namespace imaproc
107 } // end of namespace ipsdk
108 
109 #endif // __IPSDKIPLFILTERING_GAUSSIANHESSIAN3DIMGLVL1_H__
boost::shared_ptr< Border3dPolicy > Border3dPolicyPtr
#define IPSDK_DECLARE_LVL1_PROCESSOR(ProcType, libraryName, algoName, RuleString, attributeSeq)
boost::shared_ptr< const KernelXYZ > KernelXYZConstPtr
processor::OutputInitializerPtr promoteUnary(const boost::weak_ptr< OutputAttributeType > &pOutputAttribute, const boost::weak_ptr< InputAttributeType > &pInputAttribute, const ePromoteUnaryType &promoteUnaryType)
ePUT_UpperSigned
boost::shared_ptr< BaseImage > ImagePtr
boost::shared_ptr< KernelXYZ > KernelXYZPtr
ipsdk::core::ExecResult preProcess()
method called before processing
boost::shared_ptr< const BaseImage > ImageConstPtr
boost::shared_ptr< BaseActionProvider > ActionProviderPtr
IPSDK_DECLARE_GPU_PROCESSING_ALGORITHM(IPSDKIPLFiltering, Convolution2dImg, ipsdk::imaproc::matchSize(_pInSubGpuImg, _pOutImg),(((ipsdk)(imaproc)(attr))(InSubGpuImg))(((ipsdk)(imaproc)(attr))(InKnlXY))(((ipsdk)(imaproc)(attr))(InNormalize))(((ipsdk)(imaproc)(attr))(InConvolBorder2d))(((ipsdk)(imaproc)(attr))(OutImg))) IPSDKCUDA_DECLARE_ALGORITHM_FUNCTION_SELECTOR((InSubGpuImg)(OutImg)) public void clearIntermediateData()
method called before processing
Definition of import/export macro for library.