IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
FastCrossCorrelation3dImgLvl1.h
1 // FastCrossCorrelation3dImgLvl1.h:
3 // --------------------------------
4 //
14 
15 #ifndef __IPSDKIPLFILTERING_FASTCROSSCORRELATION3DIMGLVL1_H__
16 #define __IPSDKIPLFILTERING_FASTCROSSCORRELATION3DIMGLVL1_H__
17 
22 
23 // Attributes headers
24 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Input/3d/InImg3d1.h>
25 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Input/3d/InImg3d2.h>
26 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutRealImg.h>
27 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/Optional/OutOptWk1RealImg.h>
28 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/Optional/OutOptWk2RealImg.h>
29 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk1RealImg.h>
30 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk2RealImg.h>
31 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk3RealImg.h>
32 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Working/OutWk4RealImg.h>
33 
34 namespace ipsdk {
35 namespace imaproc {
36 namespace filter {
37 
40 
41 // declare processor class
42 IPSDK_DECLARE_LVL1_PROCESSOR(ASYNC1, IPSDKIPLFiltering, FastCrossCorrelation3dImg,
43  ipsdk::imaproc::customImageProperty(_pInImg3d2, fastCCRule3d(_pInImg3d1, _pInImg3d2)) &&
44  ipsdk::imaproc::matchSize(_pInImg3d1, _pOutWk1RealImg) &&
45  ipsdk::imaproc::matchSize(_pInImg3d1, _pOutWk2RealImg) &&
46  ipsdk::imaproc::matchSize(_pInImg3d1, _pOutWk3RealImg) &&
47  ipsdk::imaproc::matchSize(_pInImg3d1, _pOutWk4RealImg) &&
48  ipsdk::imaproc::matchSize(_pInImg3d1, _pOutRealImg) &&
49  (ipsdk::processor::ifIsSet(_pOutOptWk1RealImg,
50  (ipsdk::imaproc::matchSize(_pInImg3d2, _pOutOptWk1RealImg)) &&
51  (ipsdk::imaproc::noInSitu(_pInImg3d2, _pOutOptWk1RealImg)) &&
52  (ipsdk::imaproc::noInSitu(_pOutWk1RealImg, _pOutOptWk1RealImg)) &&
53  (ipsdk::imaproc::noInSitu(_pOutWk2RealImg, _pOutOptWk1RealImg)) &&
54  (ipsdk::imaproc::noInSitu(_pOutWk3RealImg, _pOutOptWk1RealImg)) &&
55  (ipsdk::imaproc::noInSitu(_pOutWk4RealImg, _pOutOptWk1RealImg)) &&
56  (ipsdk::imaproc::noInSitu(_pOutRealImg, _pOutOptWk1RealImg)))) &&
57  (ipsdk::processor::ifIsSet(_pOutOptWk2RealImg,
58  (ipsdk::imaproc::matchSize(_pInImg3d1, _pOutOptWk2RealImg)) &&
59  (ipsdk::imaproc::noInSitu(_pInImg3d1, _pOutOptWk2RealImg)) &&
60  (ipsdk::imaproc::noInSitu(_pOutWk1RealImg, _pOutOptWk2RealImg)) &&
61  (ipsdk::imaproc::noInSitu(_pOutWk2RealImg, _pOutOptWk2RealImg)) &&
62  (ipsdk::imaproc::noInSitu(_pOutWk3RealImg, _pOutOptWk2RealImg)) &&
63  (ipsdk::imaproc::noInSitu(_pOutWk4RealImg, _pOutOptWk2RealImg)) &&
64  (ipsdk::imaproc::noInSitu(_pOutRealImg, _pOutOptWk2RealImg)))),
65  (((ipsdk)(imaproc)(attr))(InImg3d1))
66  (((ipsdk)(imaproc)(attr))(InImg3d2))
67  (((ipsdk)(imaproc)(attr))(OutOptWk1RealImg))
68  (((ipsdk)(imaproc)(attr))(OutOptWk2RealImg))
69  (((ipsdk)(imaproc)(attr))(OutWk1RealImg)(ipsdk::imaproc::duplicateInOut)(_pInImg3d1)(ipsdk::image::eImageBufferType::eIBT_Real32))
70  (((ipsdk)(imaproc)(attr))(OutWk2RealImg)(ipsdk::imaproc::duplicateInOut)(_pInImg3d1)(ipsdk::image::eImageBufferType::eIBT_Real32))
71  (((ipsdk)(imaproc)(attr))(OutWk3RealImg)(ipsdk::imaproc::duplicateInOut)(_pInImg3d1)(ipsdk::image::eImageBufferType::eIBT_Real32))
72  (((ipsdk)(imaproc)(attr))(OutWk4RealImg)(ipsdk::imaproc::duplicateInOut)(_pInImg3d1)(ipsdk::image::eImageBufferType::eIBT_Real32))
73  (((ipsdk)(imaproc)(attr))(OutRealImg)(ipsdk::imaproc::duplicateInOut)(_pInImg3d1)(ipsdk::image::eImageBufferType::eIBT_Real32)))
74 
75 // methods
76 public:
77 
78 protected:
82 
83 // attributes
84 protected:
85  ipBool _bPaddTemplateImg;
86 
87 };
88 
91 
92 } // end of namespace filter
93 } // end of namespace imaproc
94 } // end of namespace ipsdk
95 
96 #endif // __IPSDKIPLFILTERING_FASTCROSSCORRELATION3DIMGLVL1_H__
#define IPSDK_DECLARE_LVL1_PROCESSOR(ProcType, libraryName, algoName, RuleString, attributeSeq)
IPSDKIPLFILTERING_API CustomCheckedImagePropertyPtr fastCCRule3d(const ImageAttributeConstPtr &pInput1Attribute, const ImageAttributeConstPtr &pInput2Attribute)
function allowing to define output image 3d size is smaller than the input image or a target size ...
Utility functions for fast Cross-Correlation attribute rules management.
processor::OutputInitializerPtr duplicateInOut(const boost::weak_ptr< OutputAttributeType > &pOutputAttribute, const boost::weak_ptr< InputAttributeType > &pInputAttribute, const eImageInitializerStoragePolicy &storagePolicy=eImageInitializerStoragePolicy::eIISP_Inherit)
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)
bool ipBool
Definition of import/export macro for library.