IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
AnisotropicDiffusion3dImgLvl1.h
1 // AnisotropicDiffusion3dImgLvl1.h:
3 // --------------------------------
4 //
14 
15 #ifndef __IPSDKIPLFILTERING_ANISOTROPICDIFFUSION3DIMGLVL1_H__
16 #define __IPSDKIPLFILTERING_ANISOTROPICDIFFUSION3DIMGLVL1_H__
17 
21 #include <IPSDKIPL/IPSDKIPLAttributes/DataItem/StatsResult.h>
22 
23 // Attributes headers
24 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Input/3d/InImg3d.h>
25 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InNbTimeSteps.h>
26 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InSharpness.h>
27 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InAnisotropy.h>
28 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InOptStdDevGrad.h>
29 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InOptStdDevMat.h>
30 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/InOptAnisotropicGaussianCoverage.h>
31 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InOptNbAngles3d.h>
32 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InOptMaxHalfKnlSize.h>
33 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InOptDirSmoothFactor.h>
34 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InOptSpatialStep.h>
35 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk1Img.h>
36 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk2Img.h>
37 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk3Img.h>
38 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk4Img.h>
39 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk5Img.h>
40 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk6Img.h>
41 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutImg.h>
42 
43 namespace ipsdk {
44 namespace imaproc {
45 namespace filter {
46 
49 
50 // declare processor class
51 IPSDK_DECLARE_LVL1_PROCESSOR(ASYNC1, IPSDKIPLFiltering, AnisotropicDiffusion3dImg,
52  matchSizeAndType(_pInImg3d, _pOutImg) &&
53  matchSize(_pInImg3d, _pOutWk1Img) &&
54  matchSizeAndType(_pOutWk1Img, _pOutWk2Img) &&
55  matchSizeAndType(_pOutWk1Img, _pOutWk3Img) &&
56  matchSizeAndType(_pOutWk1Img, _pOutWk4Img) &&
57  matchSizeAndType(_pOutWk1Img, _pOutWk5Img) &&
58  matchSizeAndType(_pOutWk1Img, _pOutWk6Img),
59  (((ipsdk)(imaproc)(attr))(InImg3d))
60  (((ipsdk)(imaproc)(attr))(InNbTimeSteps))
61  (((ipsdk)(imaproc)(attr))(InSharpness))
62  (((ipsdk)(imaproc)(attr))(InAnisotropy))
63  (((ipsdk)(imaproc)(attr))(InOptStdDevGrad))
64  (((ipsdk)(imaproc)(attr))(InOptStdDevMat))
65  (((ipsdk)(imaproc)(attr))(InOptAnisotropicGaussianCoverage))
66  (((ipsdk)(imaproc)(attr))(InOptNbAngles3d))
67  (((ipsdk)(imaproc)(attr))(InOptMaxHalfKnlSize))
68  (((ipsdk)(imaproc)(attr))(InOptDirSmoothFactor))
69  (((ipsdk)(imaproc)(attr))(InOptSpatialStep))
70  (((ipsdk)(imaproc)(attr))(OutWk1Img)(promoteUnary)(_pInImg3d)(ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned))
71  (((ipsdk)(imaproc)(attr))(OutWk2Img)(promoteUnary)(_pInImg3d)(ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned))
72  (((ipsdk)(imaproc)(attr))(OutWk3Img)(promoteUnary)(_pInImg3d)(ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned))
73  (((ipsdk)(imaproc)(attr))(OutWk4Img)(promoteUnary)(_pInImg3d)(ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned))
74  (((ipsdk)(imaproc)(attr))(OutWk5Img)(promoteUnary)(_pInImg3d)(ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned))
75  (((ipsdk)(imaproc)(attr))(OutWk6Img)(promoteUnary)(_pInImg3d)(ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned))
76  (((ipsdk)(imaproc)(attr))(OutImg)(duplicateInOut)(_pInImg3d)))
77 
78 // methods
79 public:
80 
81 protected:
82 
83 // attributes
84 protected:
86  attr::StatsResultPtr _pStatsResult;
87 };
88 
91 
92 } // end of namespace filter
93 } // end of namespace imaproc
94 } // end of namespace ipsdk
95 
96 #endif // __IPSDKIPLFILTERING_ANISOTROPICDIFFUSION3DIMGLVL1_H__
#define IPSDK_DECLARE_LVL1_PROCESSOR(ProcType, libraryName, algoName, RuleString, attributeSeq)
processor::OutputInitializerPtr promoteUnary(const boost::weak_ptr< OutputAttributeType > &pOutputAttribute, const boost::weak_ptr< InputAttributeType > &pInputAttribute, const ePromoteUnaryType &promoteUnaryType)
ePUT_UpperSigned
processor::OutputInitializerPtr duplicateInOut(const boost::weak_ptr< OutputAttributeType > &pOutputAttribute, const boost::weak_ptr< InputAttributeType > &pInputAttribute, const eImageInitializerStoragePolicy &storagePolicy=eImageInitializerStoragePolicy::eIISP_Inherit)
IPSDKIMAGEPROCESSING_API processor::RulePtr matchSizeAndType(const ImageAttributeConstWeakPtr &pAttribute1, const ImageAttributeConstWeakPtr &pAttribute2)
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)
Definition of import/export macro for library.
boost::shared_ptr< ipsdk::imaproc::attr::StatsResult > StatsResultPtr
shared pointer to ipsdk::imaproc::attr::StatsResult
Definition: StatsResult.h:206