IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
MultiscaleVesselEnhancement3dImgLvl2.h
1 // MultiscaleVesselEnhancement3dImgLvl2.h:
3 // ---------------------------------------
4 //
14 
15 #ifndef __IPSDKIPLFILTERING_MULTISCALEVESSELENHANCEMENT3DIMGLVL2_H__
16 #define __IPSDKIPLFILTERING_MULTISCALEVESSELENHANCEMENT3DIMGLVL2_H__
17 
20 
21 // Attributes headers
22 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/InMVEParams.h>
23 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/SubImage/Input/3d/InSubImg3d.h>
24 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Optional/OutOptClassImg.h>
25 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutRealImg.h>
26 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk1RealImg.h>
27 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk2RealImg.h>
28 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk3RealImg.h>
29 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk4RealImg.h>
30 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk5RealImg.h>
31 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk6RealImg.h>
32 #include <IPSDKIPL/IPSDKIPLFiltering/Attribute/InOutMaxVal.h>
33 
34 namespace ipsdk {
35 namespace imaproc {
36 namespace filter {
37 
40 
41 // declare processor class
42 IPSDK_DECLARE_LVL2_PROCESSOR(REP_ASYNC1, IPSDKIPLFiltering, MultiscaleVesselEnhancement3dImg,
43  matchSize(_pInSubImg3d, _pOutRealImg) &&
44  matchSize(_pInSubImg3d, _pOutWk1RealImg) &&
45  matchSizeAndType(_pOutWk1RealImg, _pOutWk2RealImg) &&
46  matchSizeAndType(_pOutWk1RealImg, _pOutWk3RealImg) &&
47  matchSize(_pInSubImg3d, _pOutOptClassImg),
48  (((ipsdk)(imaproc)(attr))(InSubImg3d))
49  (((ipsdk)(imaproc)(attr))(InMVEParams))
50  (((ipsdk)(imaproc)(attr))(OutWk1RealImg))
51  (((ipsdk)(imaproc)(attr))(OutWk2RealImg))
52  (((ipsdk)(imaproc)(attr))(OutWk3RealImg))
53  (((ipsdk)(imaproc)(attr))(OutWk4RealImg))
54  (((ipsdk)(imaproc)(attr))(OutWk5RealImg))
55  (((ipsdk)(imaproc)(attr))(OutWk6RealImg))
56  (((ipsdk)(imaproc)(attr))(OutOptClassImg))
57  (((ipsdk)(imaproc)(attr))(OutRealImg)))
58 
59 // methods
60 public:
61 
62 protected:
63 
64  processor::RetrievalResult provideProcessor(const boost::shared_ptr<core::BaseAction>& pProcessor,
65  const core::BasePriority& priority,
66  core::ActionProviderPtr& pProvider);
67 
68  processor::RetrievalResult hessian(const core::BasePriority& priority, core::ActionProviderPtr& pProvider, const ipReal32 curScale);
69  processor::RetrievalResult hessianNorm(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
70  processor::RetrievalResult vesselness(const core::BasePriority& priority, core::ActionProviderPtr& pProvider, const ipUInt32 scaleIdx);
71  processor::RetrievalResult initOutImg(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
72  processor::RetrievalResult initClassImg(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
73 
75  void clearIntermediateData();
76 
77 // attributes
78 protected:
79  // declaration of dispatch results collection
80  IPSDK_DECLARE_DYNAMIC_RESULT_COLL(InOutMaxVal, InOutMaxValColl);
81 
82 };
83 
86 
87 } // end of namespace filter
88 } // end of namespace imaproc
89 } // end of namespace ipsdk
90 
91 #endif // __IPSDKIPLFILTERING_MULTISCALEVESSELENHANCEMENT3DIMGLVL2_H__
ProcessingResult< eRetrievalResultType > RetrievalResult
#define IPSDK_DECLARE_LVL2_PROCESSOR(ProcType, libraryName, algoName, RuleString, attributeSeq)
IPSDKIMAGEPROCESSING_API processor::RulePtr matchSizeAndType(const ImageAttributeConstWeakPtr &pAttribute1, const ImageAttributeConstWeakPtr &pAttribute2)
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
boost::enable_if< typename boost::mpl::and_< typename boost::is_same< boost::mpl::int_< AttributeType::g_attributeType >, boost::mpl::int_< eAttributeType::eAT_DataItem > >::type, typename boost::is_same< boost::mpl::int_< LeafCollType::g_itemType >, boost::mpl::int_< eDataItemType::eDIT_LeafColl > >::type >::type, RulePtr >::type matchSize(const boost::shared_ptr< AttributeType > &pAttribute, const ipUInt32 targetSize)
#define IPSDK_DECLARE_DYNAMIC_RESULT_COLL(AttributeType, CollType)
Definition of import/export macro for library.
float ipReal32
uint32_t ipUInt32