IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
RidgeLine2dImgLvl2.h
1 // RidgeLine2dImgLvl2.h:
3 // ---------------------
4 //
14 
15 #ifndef __IPSDKIPLADVANCEDMORPHOLOGY_RIDGELINE2DIMGLVL2_H__
16 #define __IPSDKIPLADVANCEDMORPHOLOGY_RIDGELINE2DIMGLVL2_H__
17 
20 
21 // Attributes headers
22 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/OutPixels2d.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/Value/InNbIter.h>
29 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutIntImg.h>
30 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/SubImage/Input/2d/InSubImg2d.h>
31 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/SubImage/Input/2d/Optional/InOptMaskSubImg2d.h>
32 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/OutNbModifiedPixels.h>
33 
34 
35 namespace ipsdk {
36 namespace imaproc {
37 namespace advmorpho {
38 
39 
42 
43 // declare processor class
44 IPSDK_DECLARE_LVL2_PROCESSOR(REP_ASYNC1, IPSDKIPLAdvancedMorphology, RidgeLine2dImg,
45  ipsdk::imaproc::matchSize(_pInSubImg2d, _pOutDistImg, _pOutIntImg)&&
46  ipsdk::processor::If(ipsdk::processor::isSet(_pInOptMaskSubImg2d),
47  ipsdk::imaproc::matchSize(_pInSubImg2d, _pInOptMaskSubImg2d),
49  ipsdk::imaproc::matchSize(_pOutDistImg, _pOutBinImg),
50  (((ipsdk)(imaproc)(attr))(InSubImg2d))
51  (((ipsdk)(imaproc)(attr))(InOptMaskSubImg2d))
52  (((ipsdk)(imaproc)(attr))(InPropagationAxis))
53  (((ipsdk)(imaproc)(attr))(InPropagationDirection))
54  (((ipsdk)(imaproc)(attr))(InNbIter))
55  (((ipsdk)(imaproc)(attr))(OutDistImg))
56  (((ipsdk)(imaproc)(attr))(OutIntImg))
57  (((ipsdk)(imaproc)(attr))(OutBinImg))
58  (((ipsdk)(imaproc)(attr))(OutPixels2d)))
59 
60 // methods
61 public:
62 
63 protected:
67 
70  ipUInt64 computeNbModifiedPixels();
71 
73  processor::RetrievalResult provideProcessor(const boost::shared_ptr<core::BaseAction>& pProcessor,
74  const core::BasePriority& priority,
75  core::ActionProviderPtr& pProvider);
76 
77  processor::RetrievalResult initPass(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
78  processor::RetrievalResult eraseBinaryImg(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
79  processor::RetrievalResult directPass(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
80  processor::RetrievalResult reversePass(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
81 
84  ipsdk::core::ExecResult postProcess();
85 
86 // attributes
87 protected:
88  // declaration of dispatch results collection
90 
93  ipUInt64 _nbPrevModifiedPixels;
94 
96  ipUInt64 _stepIdx;
97 };
98 
101 
102 } // end of namespace advmorpho
103 } // end of namespace imaproc
104 } // end of namespace ipsdk
105 
106 #endif // __IPSDKIPLADVANCEDMORPHOLOGY_RIDGELINE2DIMGLVL2_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)