00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkSelectiveSubsampleGenerator_h
00018 #define __itkSelectiveSubsampleGenerator_h
00019
00020
00021 #include "itkObject.h"
00022 #include "itkMembershipSample.h"
00023
00024 namespace itk{
00025 namespace Statistics{
00026
00048 template< class TInputSample, class TClassMaskSample >
00049 class ITK_EXPORT SelectiveSubsampleGenerator :
00050 public Object
00051 {
00052 public:
00054 typedef SelectiveSubsampleGenerator Self;
00055 typedef Object Superclass ;
00056 typedef SmartPointer<Self> Pointer;
00057 typedef SmartPointer<const Self> ConstPointer;
00058
00060 itkTypeMacro(SelectiveSubsampleGenerator, Object);
00061 itkNewMacro(Self) ;
00063
00065 typedef typename TInputSample::MeasurementVectorType MeasurementVectorType ;
00066
00067 typedef typename TClassMaskSample::MeasurementType ClassLabelType ;
00068 typedef std::vector< ClassLabelType > ClassLabelVectorType ;
00069
00071 typedef Subsample< TInputSample > OutputType ;
00072 typedef typename OutputType::Pointer OutputPointer ;
00073
00075 void SetInput(TInputSample* sample) ;
00076
00078 TInputSample* GetInput() ;
00079
00081 void SetClassMask(const TClassMaskSample* classMask) ;
00082
00084 const TClassMaskSample* GetClassMask() const;
00085
00086 void SetSelectedClassLabels( const ClassLabelVectorType& classLabels )
00087 { m_SelectedClassLabels = classLabels ; }
00088
00091 const OutputType * GetOutput() const;
00092
00094 void GenerateData() ;
00095
00096 protected:
00097 SelectiveSubsampleGenerator() ;
00098 virtual ~SelectiveSubsampleGenerator() {}
00099 void PrintSelf(std::ostream& os, Indent indent) const;
00100
00101 private:
00102 TInputSample* m_Input ;
00103 const TClassMaskSample* m_ClassMask ;
00104 ClassLabelVectorType m_SelectedClassLabels ;
00105 OutputPointer m_Output ;
00106 } ;
00107
00108 }
00109 }
00110
00111 #ifndef ITK_MANUAL_INSTANTIATION
00112 #include "itkSelectiveSubsampleGenerator.txx"
00113 #endif
00114
00115 #endif
00116