IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
RidgeLine3dImgLvl2.h
1 // RidgeLine3dImgLvl2.h:
3 // ---------------------
4 //
14 
15 #ifndef __IPSDKIPLADVANCEDMORPHOLOGY_RIDGELINE3DIMGLVL2_H__
16 #define __IPSDKIPLADVANCEDMORPHOLOGY_RIDGELINE3DIMGLVL2_H__
17 
20 
21 // Attributes headers
22 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/OutVoxels3d.h>
23 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Enumerate/InPropagationAxis.h>
24 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Enumerate/InPropagationDirection.h>
25 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InNbIter.h>
26 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutBinImg.h>
27 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutDistImg.h>
28 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutIntImg.h>
29 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/SubImage/Input/3d/InSubImg3d.h>
30 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/SubImage/Input/3d/Optional/InOptMaskSubImg3d.h>
31 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/OutNbModifiedPixels.h>
32 
33 namespace ipsdk {
34 namespace imaproc {
35 namespace advmorpho {
36 
39 
40 // declare processor class
41 IPSDK_DECLARE_LVL2_PROCESSOR(REP_ASYNC1, IPSDKIPLAdvancedMorphology, RidgeLine3dImg,
42  ipsdk::imaproc::matchSize(_pInSubImg3d, _pOutDistImg, _pOutIntImg)&&
43  ipsdk::processor::If(ipsdk::processor::isSet(_pInOptMaskSubImg3d),
44  ipsdk::imaproc::matchSize(_pInSubImg3d, _pInOptMaskSubImg3d),
46  ipsdk::imaproc::matchSize(_pOutDistImg, _pOutBinImg),
47  (((ipsdk)(imaproc)(attr))(InSubImg3d))
48  (((ipsdk)(imaproc)(attr))(InOptMaskSubImg3d))
49  (((ipsdk)(imaproc)(attr))(InPropagationAxis))
50  (((ipsdk)(imaproc)(attr))(InPropagationDirection))
51  (((ipsdk)(imaproc)(attr))(InNbIter))
52  (((ipsdk)(imaproc)(attr))(OutDistImg))
53  (((ipsdk)(imaproc)(attr))(OutIntImg))
54  (((ipsdk)(imaproc)(attr))(OutBinImg))
55  (((ipsdk)(imaproc)(attr))(OutVoxels3d)))
56 
57 
58 // methods
59 public:
60 
61 protected:
65 
68  ipUInt64 computeNbModifiedPixels();
69 
71  processor::RetrievalResult provideProcessor(const boost::shared_ptr<core::BaseAction>& pProcessor,
72  const core::BasePriority& priority,
73  core::ActionProviderPtr& pProvider);
74 
75  processor::RetrievalResult initPass(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
76  processor::RetrievalResult eraseBinaryImg(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
77  processor::RetrievalResult directPass(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
78  processor::RetrievalResult reversePass(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
79 
82  ipsdk::core::ExecResult postProcess();
83 
84 // attributes
85 protected:
86  // declaration of dispatch results collection
88 
91  ipUInt64 _nbPrevModifiedPixels;
92 
94  ipUInt64 _stepIdx;
95 
96 };
97 
100 
101 } // end of namespace advmorpho
102 } // end of namespace imaproc
103 } // end of namespace ipsdk
104 
105 #endif // __IPSDKIPLADVANCEDMORPHOLOGY_RIDGELINE3DIMGLVL2_H__
Definition of import/export macro for library.
ProcessingResult< eRetrievalResultType > RetrievalResult
[Output] number of pixels modified by the algorithm
Definition: OutNbModifiedPixels.h:46
#define IPSDK_DECLARE_LVL2_PROCESSOR(ProcType, libraryName, algoName, RuleString, attributeSeq)
uint64_t ipUInt64
IPSDKBASEPROCESSING_API RulePtr none()
ipsdk::core::ExecResult preProcess()
method called before processing
boost::enable_if_c< AttributeType::g_bOptional, RulePtr >::type isSet(const boost::shared_ptr< AttributeType > &pAttribute)
boost::shared_ptr< BaseActionProvider > ActionProviderPtr
#define IPSDK_DECLARE_DYNAMIC_RESULT_COLL(AttributeType, CollType)
IPSDKBASEPROCESSING_API RulePtr If(const RulePtr &pPredicate, const RulePtr &pRuleTrue)