IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
HoughCircles2dLvl2.h
1 // HoughCircles2dLvl2.h:
3 // ---------------------
4 //
14 
15 #ifndef __IPSDKIPLFEATUREDETECTION_HOUGHCIRCLES2DLVL2_H__
16 #define __IPSDKIPLFEATUREDETECTION_HOUGHCIRCLES2DLVL2_H__
17 
22 
23 // Attributes headers
24 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/InHoughCirclesRadiusRange.h>
25 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/OutHoughCircles2dPpties.h>
26 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Enumerate/InCircleIntensityType.h>
27 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/SubImage/Input/2d/InSubGxImg2d.h>
28 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/SubImage/Input/2d/InSubGyImg2d.h>
29 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutRealImg1.h>
30 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Optional/OutOptRealImg2.h>
31 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/InAccumIntensityThreshold.h>
32 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InMaxAngleWithGradDir.h>
33 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InNbMaxPtsPerCircle.h>
34 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/InRemoveTooCloseCirclesParams.h>
35 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Enumerate/InHoughCircles2dAlgoMethod.h>
36 #include <IPSDKIPL/IPSDKIPLAttributes/DataItem/HoughCirclesRadiusRange.h>
37 #include <IPSDKIPL/IPSDKIPLAttributes/DataItem/Pixels2d.h>
38 
39 #include <IPSDKIPL/IPSDKIPLFeatureDetection/Processor/MaxL2Norm2Msr/MaxL2Norm2MsrLvl2.h>
40 #include <IPSDKIPL/IPSDKIPLGlobalMeasure/Processor/StatsMsr/StatsMsrLvl2.h>
41 #include <IPSDKIPL/IPSDKIPLFeatureDetection/Processor/ExtractHoughPeaks2d/ExtractHoughPeaks2dLvl2.h>
42 #include <IPSDKIPL/IPSDKIPLFeatureDetection/Processor/ExtractLocalExtrema2d/ExtractLocalExtrema2dLvl2.h>
43 
44 namespace ipsdk {
45 namespace imaproc {
46 namespace fd {
47 
50 
51 // declare processor class
52 IPSDK_DECLARE_LVL2_PROCESSOR(REP_ASYNC1, IPSDKIPLFeatureDetection, HoughCircles2d,
54  (((ipsdk)(imaproc)(attr))(InSubGxImg2d))
55  (((ipsdk)(imaproc)(attr))(InSubGyImg2d))
56  (((ipsdk)(imaproc)(attr))(InHoughCircles2dAlgoMethod))
57  (((ipsdk)(imaproc)(attr))(InCircleIntensityType))
58  (((ipsdk)(imaproc)(attr))(InMaxAngleWithGradDir))
59  (((ipsdk)(imaproc)(attr))(InNbMaxPtsPerCircle))
60  (((ipsdk)(imaproc)(attr))(InHoughCirclesRadiusRange))
61  (((ipsdk)(imaproc)(attr))(InAccumIntensityThreshold))
62  (((ipsdk)(imaproc)(attr))(InRemoveTooCloseCirclesParams))
63  (((ipsdk)(imaproc)(attr))(OutRealImg1))
64  (((ipsdk)(imaproc)(attr))(OutOptRealImg2))
65  (((ipsdk)(imaproc)(attr))(OutHoughCircles2dPpties)))
66 
67 // methods
68 public:
69 
70 protected:
71  processor::RetrievalResult provideProcessor(const boost::shared_ptr<core::BaseAction>& pProcessor,
72  const core::BasePriority& priority,
73  core::ActionProviderPtr& pProvider);
74 
75  processor::RetrievalResult houghCirclePhaseCoded(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
76  processor::RetrievalResult houghCircle(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
77  processor::RetrievalResult maxL2Norm(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
78  processor::RetrievalResult statsMsr(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
79  processor::RetrievalResult houghPeaks(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
80  processor::RetrievalResult localExtrema(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
81  processor::RetrievalResult extractRadiusFromHough(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
82  processor::RetrievalResult computeBestCirclesRadiiFromGradMag(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
83 
84 // attributes
85 protected:
90  attr::StatsResultPtr _pStatsResult;
91  ipReal64 _fLowestAccumIntensity;
92  ipReal64 _fLowestAccumRatioThreshold;
93  boost::shared_ptr<attr::Pixels2d> _pMaxima;
94 
96  boost::shared_ptr<MaxL2Norm2MsrLvl2> _pMaxL2NormProcessor;
97  boost::shared_ptr<glbmsr::StatsMsrLvl2> _pStatsProcessor;
98  boost::shared_ptr<ExtractHoughPeaks2dLvl2> _pHoughPeaksProcessor;
99  boost::shared_ptr<ExtractLocalExtrema2dLvl2> _pLocalExtremaProcessor;
100 
101 };
102 
105 
106 } // end of namespace fd
107 } // end of namespace imaproc
108 } // end of namespace ipsdk
109 
110 #endif // __IPSDKIPLFEATUREDETECTION_HOUGHCIRCLES2DLVL2_H__
ProcessingResult< eRetrievalResultType > RetrievalResult
#define IPSDK_DECLARE_LVL2_PROCESSOR(ProcType, libraryName, algoName, RuleString, attributeSeq)
boost::shared_ptr< const ipsdk::imaproc::attr::HoughCirclesRadiusRange > HoughCirclesRadiusRangeConstPtr
shared pointer to const ipsdk::imaproc::attr::HoughCirclesRadiusRange
Definition: HoughCirclesRadiusRange.h:134
IPSDKBASEPROCESSING_API RulePtr none()
double ipReal64
Definition of import/export macro for library.
boost::shared_ptr< const BaseImage > ImageConstPtr
boost::shared_ptr< BaseActionProvider > ActionProviderPtr
boost::shared_ptr< ipsdk::imaproc::attr::StatsResult > StatsResultPtr
shared pointer to ipsdk::imaproc::attr::StatsResult
Definition: StatsResult.h:206