IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
HoughSpheres3dLvl2.h
1 // HoughSpheres3dLvl2.h:
3 // ---------------------
4 //
14 
15 #ifndef __IPSDKIPLFEATUREDETECTION_HOUGHSPHERES3DLVL2_H__
16 #define __IPSDKIPLFEATUREDETECTION_HOUGHSPHERES3DLVL2_H__
17 
20 
21 // Attributes headers
22 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/InAccumIntensityThreshold.h>
23 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/InHoughCirclesRadiusRange.h>
24 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InNbMaxPtsPerCircle.h>
25 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/InRemoveTooCloseCirclesParams.h>
26 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/DataItem/OutHoughSpheres3dPpties.h>
27 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Enumerate/InCircleIntensityType.h>
28 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/Optional/OutOptRealImg2.h>
29 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Image/Output/OutRealImg1.h>
30 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/SubImage/Input/3d/InSubGxImg3d.h>
31 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/SubImage/Input/3d/InSubGyImg3d.h>
32 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/SubImage/Input/3d/InSubGzImg3d.h>
33 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InMaxAngleWithGradDir.h>
34 #include <IPSDKIPL/IPSDKIPLAttributes/Attribute/Value/InNbCircles.h>
35 
36 #include <IPSDKIPL/IPSDKIPLAttributes/DataItem/Voxels3d.h>
37 #include <IPSDKIPL/IPSDKIPLFeatureDetection/Processor/MaxL2Norm2Msr/MaxL2Norm2MsrLvl1.h>
38 #include <IPSDKIPL/IPSDKIPLGlobalMeasure/Processor/StatsMsr/StatsMsrLvl1.h>
39 //#include <IPSDKIPL/IPSDKIPLFeatureDetection/Processor/ExtractHoughPeaks3d/ExtractHoughPeaks3dLvl2.h>
40 #include <IPSDKIPL/IPSDKIPLFeatureDetection/Processor/ExtractLocalExtrema3d/ExtractLocalExtrema3dLvl2.h>
41 
42 namespace ipsdk {
43 namespace imaproc {
44 namespace fd {
45 
48 
49 // declare processor class
50 IPSDK_DECLARE_LVL2_PROCESSOR(REP_ASYNC1, IPSDKIPLFeatureDetection, HoughSpheres3d,
52  (((ipsdk)(imaproc)(attr))(InSubGxImg3d))
53  (((ipsdk)(imaproc)(attr))(InSubGyImg3d))
54  (((ipsdk)(imaproc)(attr))(InSubGzImg3d))
55  (((ipsdk)(imaproc)(attr))(InCircleIntensityType))
56  (((ipsdk)(imaproc)(attr))(InNbCircles))
57  (((ipsdk)(imaproc)(attr))(InMaxAngleWithGradDir))
58  (((ipsdk)(imaproc)(attr))(InNbMaxPtsPerCircle))
59  (((ipsdk)(imaproc)(attr))(InHoughCirclesRadiusRange))
60  (((ipsdk)(imaproc)(attr))(InAccumIntensityThreshold))
61  (((ipsdk)(imaproc)(attr))(InRemoveTooCloseCirclesParams))
62  (((ipsdk)(imaproc)(attr))(OutRealImg1))
63  (((ipsdk)(imaproc)(attr))(OutOptRealImg2))
64  (((ipsdk)(imaproc)(attr))(OutHoughSpheres3dPpties)))
65 
66 // methods
67 public:
68 
69 protected:
73 
74  processor::RetrievalResult provideProcessor(const boost::shared_ptr<core::BaseAction>& pProcessor,
75  const core::BasePriority& priority,
76  core::ActionProviderPtr& pProvider);
77 
78  processor::RetrievalResult houghCircle(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
79  processor::RetrievalResult maxL2Norm(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
80  processor::RetrievalResult statsMsr(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
81  processor::RetrievalResult localExtrema(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
82  processor::RetrievalResult computeBestCirclesRadiiFromGradMag(const core::BasePriority& priority, core::ActionProviderPtr& pProvider);
83 
84 // attributes
85 protected:
87  attr::StatsResultPtr _pStatsResult;
88  ipReal64 _fLowestAccumIntensity;
89  ipReal64 _fLowestAccumRatioThreshold;
90  boost::shared_ptr<attr::Voxels3d> _pMaxima;
91  boost::shared_ptr<glbmsr::StatsMsrLvl1> _pStatsProcessor;
92  boost::shared_ptr<fd::ExtractLocalExtrema3dLvl2> _pLocalExtremaProcessor;
93 
96  std::vector <FunctionType> _vFctCalls;
97 
98 };
99 
102 
103 } // end of namespace fd
104 } // end of namespace imaproc
105 } // end of namespace ipsdk
106 
107 #endif // __IPSDKIPLFEATUREDETECTION_HOUGHSPHERES3DLVL2_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
ipsdk::core::ExecResult preProcess()
method called before processing
Definition of import/export macro for library.
Level 2 algorithm: detects spheres in a 3d image using Hough algorithm.
Definition: HoughSpheres3dLvl2.h:86
boost::shared_ptr< BaseActionProvider > ActionProviderPtr
boost::shared_ptr< ipsdk::imaproc::attr::StatsResult > StatsResultPtr
shared pointer to ipsdk::imaproc::attr::StatsResult
Definition: StatsResult.h:206