IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
UnionLinearClosing3dImgLvl1.h
1 // UnionLinearClosing3dImgLvl1.h:
3 // ------------------------------
4 //
14 
15 #ifndef __IPSDKIPLBASICMORPHOLOGY_UNIONLINEARCLOSING3DIMGLVL1_H__
16 #define __IPSDKIPLBASICMORPHOLOGY_UNIONLINEARCLOSING3DIMGLVL1_H__
17 
23 
24 // Attributes headers
25 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Enumerate/InOptBorderExtensionPolicy.h>
26 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Input/3d/InImg3d.h>
27 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutImg.h>
28 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/Optional/OutOptWk1Img.h>
29 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/Optional/OutOptWk2Img.h>
30 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk1Img.h>
31 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk2Img.h>
32 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InOptNbAngles3d.h>
33 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InRadius.h>
35 
36 namespace ipsdk {
37 namespace imaproc {
38 namespace morpho {
39 
42 
43 // declare processor class
44 IPSDK_DECLARE_LVL1_PROCESSOR(REP_ASYNC1, IPSDKIPLBasicMorphology, UnionLinearClosing3dImg,
45  (ipsdk::imaproc::matchSizeAndType(_pInImg3d, _pOutImg)) &&
46  (ipsdk::imaproc::customImageProperty(_pOutWk1Img,
47  matchBorderExtension1(_pInImg3d,
48  _pInRadius,
50  _pInOptBorderExtensionPolicy))) &&
51  (ipsdk::imaproc::customImageProperty(_pOutWk2Img,
52  matchBorderExtension1(_pInImg3d,
53  _pInRadius,
55  _pInOptBorderExtensionPolicy))) &&
56  (ipsdk::processor::ifIsSet(_pOutOptWk1Img,
57  ipsdk::imaproc::customImageProperty(_pOutOptWk1Img, matchBorderExtension1(_pInImg3d, _pInRadius, eSEXYZSubType::eSEXYZ_Linear, _pInOptBorderExtensionPolicy)))) &&
58  (ipsdk::processor::ifIsSet(_pOutOptWk2Img,
59  ipsdk::imaproc::customImageProperty(_pOutOptWk2Img, matchBorderExtension1(_pInImg3d, _pInRadius, eSEXYZSubType::eSEXYZ_Linear, _pInOptBorderExtensionPolicy)))),
60  (((ipsdk)(imaproc)(attr))(InImg3d))
61  (((ipsdk)(imaproc)(attr))(InRadius))
62  (((ipsdk)(imaproc)(attr))(InOptNbAngles3d))
63  (((ipsdk)(imaproc)(attr))(InOptBorderExtensionPolicy))
64  (((ipsdk)(imaproc)(attr))(OutOptWk1Img))
65  (((ipsdk)(imaproc)(attr))(OutOptWk2Img))
66  (((ipsdk)(imaproc)(attr))(OutWk1Img)(customOutput)(outputUnionLinear3d(_pInImg3d, _pInOptBorderExtensionPolicy, _pInRadius)))
67  (((ipsdk)(imaproc)(attr))(OutWk2Img)(customOutput)(outputUnionLinear3d(_pInImg3d, _pInOptBorderExtensionPolicy, _pInRadius)))
68  (((ipsdk)(imaproc)(attr))(OutImg)(ipsdk::imaproc::duplicateInOut)(_pInImg3d)))
69 
70 // methods
71 public:
75 
76  processor::RetrievalResult provideProcessor(const boost::shared_ptr<core::BaseAction>& pProcessor,
77  const core::BasePriority& priority,
78  core::ActionProviderPtr& pProvider);
79 
80  processor::RetrievalResult eraseOutput(const core::BasePriority& priority, core::ActionProviderPtr& pProvider, const image::ImagePtr& pImg, const ipReal64 eraseValue);
81  processor::RetrievalResult erode(const core::BasePriority& priority, core::ActionProviderPtr& pProvider, const ipReal64 orientationIdx);
82  processor::RetrievalResult dilate(const core::BasePriority& priority, core::ActionProviderPtr& pProvider, const ipReal64 orientationIdx);
83  processor::RetrievalResult unionMin(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
84  processor::RetrievalResult putROI(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
85  processor::RetrievalResult getROI(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
86 
87 protected:
88 
89 // attributes
90 protected:
92  std::vector<ipReal64> _vThetas;
93 
95  std::vector<ipReal64> _vPhis;
96 
98  ipsdk::image::ImageConstPtr _pUsedInImg;
99 
101  ipsdk::image::ImagePtr _pUsedOutImg;
102 
104  ipsdk::image::ImagePtr _pUsedErosionImg;
105 
107  ipsdk::image::ImagePtr _pUsedDilationImg;
108 
109 };
110 
113 
114 } // end of namespace morpho
115 } // end of namespace imaproc
116 } // end of namespace ipsdk
117 
118 #endif // __IPSDKIPLBASICMORPHOLOGY_UNIONLINEARCLOSING3DIMGLVL1_H__
ProcessingResult< eRetrievalResultType > RetrievalResult
#define IPSDK_DECLARE_LVL1_PROCESSOR(ProcType, libraryName, algoName, RuleString, attributeSeq)
utility functions for union linear opening and closing calculations output attribute initialization m...
Utility functions for image attribute border extension rules management.
boost::shared_ptr< BaseImage > ImagePtr
processor::OutputInitializerPtr duplicateInOut(const boost::weak_ptr< OutputAttributeType > &pOutputAttribute, const boost::weak_ptr< InputAttributeType > &pInputAttribute, const eImageInitializerStoragePolicy &storagePolicy=eImageInitializerStoragePolicy::eIISP_Inherit)
double ipReal64
ipsdk::core::ExecResult preProcess()
method called before processing
boost::enable_if_c< AttributeType::g_bOptional, RulePtr >::type ifIsSet(const boost::shared_ptr< AttributeType > &pAttribute, const RulePtr &pRuleTrue)
IPSDKIPLBASICMORPHOLOGY_API CustomCheckedImagePropertyPtr matchBorderExtension1(const ImageAttributeConstPtr &pInImg, const StructuringElementXYAttributeConstPtr &pSEXY, const boost::shared_ptr< const attr::InOptBorderExtensionPolicy > pInBorderExtensionPolicy)
function allowing to define rule applied on working 2d image for morphological algorithms with option...
Definition of import/export macro for library.
processor::OutputInitializerPtr customOutput(const boost::weak_ptr< OutputAttributeType > &pOutputAttribute, const CustomImageInfoPtr &pCustomImageInfo)
boost::shared_ptr< const BaseImage > ImageConstPtr
boost::shared_ptr< BaseActionProvider > ActionProviderPtr
eSEXYZ_Linear