IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
MultiscaleVesselEnhancement2dImgLvl2.h
1 // MultiscaleVesselEnhancement2dImgLvl2.h:
3 // ---------------------------------------
4 //
14 
15 #ifndef __IPSDKIPLFILTERING_MULTISCALEVESSELENHANCEMENT2DIMGLVL2_H__
16 #define __IPSDKIPLFILTERING_MULTISCALEVESSELENHANCEMENT2DIMGLVL2_H__
17 
20 
21 // Attributes headers
22 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/InMVEParams.h>
23 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/SubImage/Input/2d/InSubImg2d.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/IPSDKIPLFiltering/Attribute/InOutMaxVal.h>
30 
31 namespace ipsdk {
32 namespace imaproc {
33 namespace filter {
34 
37 
38 // declare processor class
39 IPSDK_DECLARE_LVL2_PROCESSOR(REP_ASYNC1, IPSDKIPLFiltering, MultiscaleVesselEnhancement2dImg,
40  matchSize(_pInSubImg2d, _pOutRealImg) &&
41  matchSize(_pInSubImg2d, _pOutWk1RealImg) &&
42  matchSizeAndType(_pOutWk1RealImg, _pOutWk2RealImg) &&
43  matchSizeAndType(_pOutWk1RealImg, _pOutWk3RealImg) &&
44  matchSize(_pInSubImg2d, _pOutOptClassImg),
45  (((ipsdk)(imaproc)(attr))(InSubImg2d))
46  (((ipsdk)(imaproc)(attr))(InMVEParams))
47  (((ipsdk)(imaproc)(attr))(OutWk1RealImg))
48  (((ipsdk)(imaproc)(attr))(OutWk2RealImg))
49  (((ipsdk)(imaproc)(attr))(OutWk3RealImg))
50  (((ipsdk)(imaproc)(attr))(OutOptClassImg))
51  (((ipsdk)(imaproc)(attr))(OutRealImg)))
52 
53 // methods
54 public:
55 
56 protected:
57 
58  processor::RetrievalResult provideProcessor(const boost::shared_ptr<core::BaseAction>& pProcessor,
59  const core::BasePriority& priority,
60  core::ActionProviderPtr& pProvider);
61 
62  processor::RetrievalResult hessian(const core::BasePriority& priority, core::ActionProviderPtr& pProvider, const ipReal32 curScale);
63  processor::RetrievalResult hessianNorm(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
64  processor::RetrievalResult vesselness(const core::BasePriority& priority, core::ActionProviderPtr& pProvider, const ipUInt32 scaleIdx);
65  processor::RetrievalResult initOutImg(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
66  processor::RetrievalResult initClassImg(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
67 
69  void clearIntermediateData();
70 
71 // attributes
72 protected:
73  // declaration of dispatch results collection
74  IPSDK_DECLARE_DYNAMIC_RESULT_COLL(InOutMaxVal, InOutMaxValColl);
75 
76 };
77 
80 
81 } // end of namespace filter
82 } // end of namespace imaproc
83 } // end of namespace ipsdk
84 
85 #endif // __IPSDKIPLFILTERING_MULTISCALEVESSELENHANCEMENT2DIMGLVL2_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