IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
SeededWatershed2dImgLvl1.h
1 // SeededWatershed2dImgLvl1.h:
3 // ---------------------------
4 //
14 
15 #ifndef __IPSDKIPLADVANCEDMORPHOLOGY_SEEDEDWATERSHED2DIMGLVL1_H__
16 #define __IPSDKIPLADVANCEDMORPHOLOGY_SEEDEDWATERSHED2DIMGLVL1_H__
17 
23 
24 // Attributes headers
25 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Input/InIntImg.h>
26 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Input/InLabMarkImg.h>
27 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Enumerate/InWatershedOutputMode.h>
28 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Enumerate/InOptWatershedProcMode.h>
29 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InOptNbMinDataByThread.h>
30 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/Optional/OutOptWk1Img.h>
31 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutBinLabImg.h>
32 #include <IPSDKIPL/IPSDKIPLAttributes/DataItem/StatsResult.h>
33 
34 namespace ipsdk {
35 namespace imaproc {
36 namespace advmorpho {
37 
40 
41 // declare processor class
42 IPSDK_DECLARE_LVL1_PROCESSOR(REP_ASYNC1, IPSDKIPLAdvancedMorphology, SeededWatershed2dImg,
43  (ipsdk::imaproc::matchSize(_pInIntImg, _pInLabMarkImg) &&
44  ipsdk::imaproc::customImageProperty(_pOutBinLabImg, allowedBufferType(_pInWatershedOutputMode)) &&
45  ipsdk::processor::ifIsSet(_pOutOptWk1Img,
46  ipsdk::imaproc::matchSize(_pInIntImg, _pOutOptWk1Img)) &&
47  ipsdk::processor::If(ipsdk::imaproc::bufferType(_pOutBinLabImg, ipsdk::image::eImageBufferType::eIBT_Binary),
48  ipsdk::imaproc::matchSize(_pOutBinLabImg, _pInLabMarkImg),
49  ipsdk::imaproc::matchSizeAndType(_pOutBinLabImg, _pInLabMarkImg))),
50  (((ipsdk)(imaproc)(attr))(InIntImg))
51  (((ipsdk)(imaproc)(attr))(InLabMarkImg))
52  (((ipsdk)(imaproc)(attr))(InWatershedOutputMode))
53  (((ipsdk)(imaproc)(attr))(InOptWatershedProcMode))
54  (((ipsdk)(imaproc)(attr))(InOptNbMinDataByThread))
55  (((ipsdk)(imaproc)(attr))(OutOptWk1Img))
56  (((ipsdk)(imaproc)(attr))(OutBinLabImg)(customOutput)(outputWatershed(_pInLabMarkImg, _pInWatershedOutputMode))))
57 
58 // methods
59 public:
60 
61 protected:
63  void clearIntermediateData();
64 
65  processor::RetrievalResult provideProcessor(const boost::shared_ptr<core::BaseAction>& pProcessor,
66  const core::BasePriority& priority,
67  core::ActionProviderPtr& pProvider);
68 
69  processor::RetrievalResult statsMsr(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
70  processor::RetrievalResult seededWatershed(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
71 
72 // attributes
73 protected:
75  image::ImagePtr _pUsedImage;
76 
78  attr::StatsResultPtr _pStatsPtr;
79 };
80 
83 
84 } // end of namespace advmorpho
85 } // end of namespace imaproc
86 } // end of namespace ipsdk
87 
88 #endif // __IPSDKIPLADVANCEDMORPHOLOGY_SEEDEDWATERSHED2DIMGLVL1_H__
Definition of import/export macro for library.
ProcessingResult< eRetrievalResultType > RetrievalResult
Utility functions for watershed attribute output initialization management.
#define IPSDK_DECLARE_LVL1_PROCESSOR(ProcType, libraryName, algoName, RuleString, attributeSeq)
IPSDKIPLADVANCEDMORPHOLOGY_API CustomImageInfoPtr outputWatershed(const ImageAttributeConstPtr &pInputAttribute, const boost::shared_ptr< const attr::InWatershedOutputMode > pModeAttribute)
boost::shared_ptr< BaseImage > ImagePtr
Utility functions for watershed attribute rules management.
boost::enable_if_c< AttributeType::g_bOptional, RulePtr >::type ifIsSet(const boost::shared_ptr< AttributeType > &pAttribute, const RulePtr &pRuleTrue)
processor::OutputInitializerPtr customOutput(const boost::weak_ptr< OutputAttributeType > &pOutputAttribute, const CustomImageInfoPtr &pCustomImageInfo)
IPSDKIPLADVANCEDMORPHOLOGY_API CustomCheckedImagePropertyPtr allowedBufferType(const boost::shared_ptr< const attr::InWatershedOutputMode > pModeAttribute)
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
IPSDKBASEPROCESSING_API RulePtr If(const RulePtr &pPredicate, const RulePtr &pRuleTrue)
boost::shared_ptr< ipsdk::imaproc::attr::StatsResult > StatsResultPtr
shared pointer to ipsdk::imaproc::attr::StatsResult
Definition: StatsResult.h:206