IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
WatershedGreySeparation3dImgLvl1.h
1 // WatershedGreySeparation3dImgLvl1.h:
3 // -----------------------------------
4 //
14 
15 #ifndef __IPSDKIPLADVANCEDMORPHOLOGY_WATERSHEDGREYSEPARATION3DIMGLVL1_H__
16 #define __IPSDKIPLADVANCEDMORPHOLOGY_WATERSHEDGREYSEPARATION3DIMGLVL1_H__
17 
22 #include <IPSDKIPL/IPSDKIPLAttributes/DataItem/StatsResult.h>
23 #include <IPSDKIPL/IPSDKIPLAdvancedMorphology/Tools/WatershedInternalTypes.h>
24 
25 // Attributes headers
26 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Input/3d/InIntImg3d.h>
27 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Enumerate/InShapeGreyscaleType.h>
28 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InDilateFactor.h>
29 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Enumerate/InWatershedSeparationMode.h>
30 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Enumerate/InOptWatershedProcMode.h>
31 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InOptNbMinDataByThread.h>
32 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk1Img.h>
33 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk2Img.h>
34 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/Optional/OutOptWk1Img.h>
35 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutImg.h>
36 
37 namespace ipsdk {
38 namespace imaproc {
39 namespace advmorpho {
40 
43 
44 // declare processor class
45 IPSDK_DECLARE_LVL1_PROCESSOR(REP_ASYNC1, IPSDKIPLAdvancedMorphology, WatershedGreySeparation3dImg,
46  (ipsdk::imaproc::matchSize(_pInIntImg3d, _pOutImg) &&
47  ipsdk::imaproc::customImageProperty(_pOutImg, allowedBufferType(_pInWatershedSeparationMode, _pInIntImg3d)) &&
48  ipsdk::imaproc::matchSize(_pInIntImg3d, _pOutWk1Img) &&
49  ipsdk::imaproc::customImageProperty(_pOutWk1Img, allowedWk1BufferType(_pInWatershedSeparationMode)) &&
50  ipsdk::imaproc::matchSize(_pInIntImg3d, _pOutWk2Img) &&
51  ipsdk::imaproc::customImageProperty(_pOutWk2Img, allowedWk2BufferType(_pInWatershedSeparationMode, _pInIntImg3d)) &&
52  ipsdk::processor::ifIsSet(_pOutOptWk1Img,
53  ipsdk::imaproc::matchSize(_pInIntImg3d, _pOutOptWk1Img))),
54  (((ipsdk)(imaproc)(attr))(InIntImg3d))
55  (((ipsdk)(imaproc)(attr))(InShapeGreyscaleType))
56  (((ipsdk)(imaproc)(attr))(InDilateFactor))
57  (((ipsdk)(imaproc)(attr))(InWatershedSeparationMode))
58  (((ipsdk)(imaproc)(attr))(InOptWatershedProcMode))
59  (((ipsdk)(imaproc)(attr))(InOptNbMinDataByThread))
60  (((ipsdk)(imaproc)(attr))(OutWk1Img)(customOutput)(outputWk1Watershed(_pInIntImg3d, _pInWatershedSeparationMode)))
61  (((ipsdk)(imaproc)(attr))(OutWk2Img)(customOutput)(outputWk2Watershed(_pInIntImg3d, _pInWatershedSeparationMode)))
62  (((ipsdk)(imaproc)(attr))(OutOptWk1Img))
63  (((ipsdk)(imaproc)(attr))(OutImg)(customOutput)(outputWatershed(_pInIntImg3d, _pInWatershedSeparationMode))))
64 
65 // methods
66 public:
67 
68 protected:
70  void notifyLabelStepCompletion(const core::ActionPtr& pAction);
71 
73  void clearIntermediateData();
74 
75 // attributes
76 protected:
78  ipUInt32 _nbLabels;
79 
81  attr::StatsResultPtr _pGreyStatsResult;
82 
84  Watershed3dStackPtr _pWatershed3dStack;
85 
87  image::ImagePtr _pWatershedImg;
88 };
89 
92 
93 } // end of namespace advmorpho
94 } // end of namespace imaproc
95 } // end of namespace ipsdk
96 
97 #endif // __IPSDKIPLADVANCEDMORPHOLOGY_WATERSHEDGREYSEPARATION3DIMGLVL1_H__
Definition of import/export macro for library.
Utility functions for watershed attribute output initialization management.
#define IPSDK_DECLARE_LVL1_PROCESSOR(ProcType, libraryName, algoName, RuleString, attributeSeq)
IPSDKIPLADVANCEDMORPHOLOGY_API CustomCheckedImagePropertyPtr allowedWk1BufferType(const boost::shared_ptr< const attr::InWatershedSeparationMode > pModeAttribute)
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)
boost::shared_ptr< BaseAction > ActionPtr
IPSDKIPLADVANCEDMORPHOLOGY_API CustomCheckedImagePropertyPtr allowedWk2BufferType(const boost::shared_ptr< const attr::InWatershedSeparationMode > pModeAttribute, const ImageAttributeConstPtr &pImageAttribute)
IPSDKIPLADVANCEDMORPHOLOGY_API CustomImageInfoPtr outputWk1Watershed(const ImageAttributeConstPtr &pInputAttribute, const boost::shared_ptr< const attr::InWatershedSeparationMode > pModeAttribute)
processor::OutputInitializerPtr customOutput(const boost::weak_ptr< OutputAttributeType > &pOutputAttribute, const CustomImageInfoPtr &pCustomImageInfo)
IPSDKIPLADVANCEDMORPHOLOGY_API CustomImageInfoPtr outputWk2Watershed(const ImageAttributeConstPtr &pInputAttribute, const boost::shared_ptr< const attr::InWatershedSeparationMode > pModeAttribute)
IPSDKIPLADVANCEDMORPHOLOGY_API CustomCheckedImagePropertyPtr allowedBufferType(const boost::shared_ptr< const attr::InWatershedOutputMode > pModeAttribute)
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
boost::shared_ptr< ipsdk::imaproc::attr::StatsResult > StatsResultPtr
shared pointer to ipsdk::imaproc::attr::StatsResult
Definition: StatsResult.h:206
uint32_t ipUInt32