IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
HoughCirclesPhaseCoded2dImgLvl3.h
1 // HoughCirclesPhaseCoded2dImgLvl3.h:
3 // ----------------------
4 //
14 
15 #ifndef __IPSDKIPLFEATUREDETECTION_HOUGHCIRCLESPHASECODED2DIMGLVL3_H__
16 #define __IPSDKIPLFEATUREDETECTION_HOUGHCIRCLESPHASECODED2DIMGLVL3_H__
17 
20 
21 // Attributes headers
22 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/InHoughCirclesPhaseCodedKernelXY.h>
23 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/InHoughCirclesRadiusRange.h>
24 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/InHoughCirclesRadiusRange.h>
25 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/InTabulatedRangeExponentials.h>
26 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Enumerate/InCircleIntensityType.h>
27 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Strip/YStrip2d/OutComplexImYStrip2d.h>
28 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Strip/YStrip2d/OutComplexRealYStrip2d.h>
29 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Strip/YStrip2dWithKernel/InGxKnlYStrip2d.h>
30 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Strip/YStrip2dWithKernel/InGyKnlYStrip2d.h>
31 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InMaxAngleWithGradDir.h>
32 
33 namespace ipsdk {
34 namespace imaproc {
35 namespace fd {
36 
39 
40 // declare processing algorithm
41 IPSDK_DECLARE_PROCESSING_ALGORITHM(IPSDKIPLFeatureDetection, HoughCirclesPhaseCoded2dImg,
43  (((ipsdk)(imaproc)(attr))(InGxKnlYStrip2d))
44  (((ipsdk)(imaproc)(attr))(InGyKnlYStrip2d))
45  (((ipsdk)(imaproc)(attr))(InCircleIntensityType))
46  (((ipsdk)(imaproc)(attr))(InMaxAngleWithGradDir))
47  (((ipsdk)(imaproc)(attr))(InHoughCirclesRadiusRange))
48  (((ipsdk)(imaproc)(attr))(InHoughCirclesPhaseCodedKernelXY))
49  (((ipsdk)(imaproc)(attr))(OutComplexRealYStrip2d))
50  (((ipsdk)(imaproc)(attr))(OutComplexImYStrip2d)))
51 
52  // implementation of image processing data identifier retrieval method
53  // for function selector usage
54  IPSDK_DECLARE_ALGORITHM_FUNCTION_SELECTOR(((STRIP)(InGxKnlYStrip2d)));
55 
56  // declaration of parsed data during processing
57  IPSDK_DECLARE_ALGORITHM_PARSED_DATA(((LINESTRIP)(InGxKnlYStrip2d))
58  ((LINESTRIP)(InGyKnlYStrip2d))
59  ((LINESTRIP)(OutComplexRealYStrip2d))
60  ((LINESTRIP)(OutComplexImYStrip2d)));
61 
62 // methods
63 public:
64 
65 protected:
66 
70 
72  template <typename BufInType,
73  ipsdk::eInstructionSet::domain IS>
74  ipsdk::BoolResult genericProcessFunction(const ipsdk::processor::ProcessingInfo& info);
75 
76 // attributes
77 protected:
79  typedef boost::scoped_array<const ipReal32*> BufColl;
80 
82  BufColl _pGxBufColl;
83  BufColl _pGyBufColl;
84  BufColl _pGradMagBufColl;
85 
86  FragHybridBufferPtr _pInitialGxNorm;
87  FragHybridBufferPtr _pMainGxNorm;
88  FragHybridBufferPtr _pFinalGxNorm;
89  FragHybridBufferPtr _pInitialGyNorm;
90  FragHybridBufferPtr _pMainGyNorm;
91  FragHybridBufferPtr _pFinalGyNorm;
92  FragHybridBufferPtr _pInitialGradMag;
93  FragHybridBufferPtr _pMainGradMag;
94  FragHybridBufferPtr _pFinalGradMag;
95 
96  std::vector<ipReal32> _vOutRealBuf;
97  std::vector<ipReal32> _vOutImBuf;
98 };
99 
102 
103 } // end of namespace fd
104 } // end of namespace imaproc
105 } // end of namespace ipsdk
106 
107 #endif // __IPSDKIPLFEATUREDETECTION_HOUGHCIRCLESPHASECODED2DIMGLVL3_H__
boost::shared_ptr< FragHybridBuffer > FragHybridBufferPtr
IPSDKBASEPROCESSING_API RulePtr none()
ipsdk::core::ExecResult preProcess()
method called before processing
Definition of import/export macro for library.
#define IPSDK_DECLARE_PROCESSING_ALGORITHM(libraryName, algoName, RuleString, attributeSeq)
#define IPSDK_DECLARE_ALGORITHM_PARSED_DATA(dataSeq)
#define IPSDK_DECLARE_ALGORITHM_FUNCTION_SELECTOR(dataTypeSeq)