Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itkGoodnessOfFitComponentBase.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkGoodnessOfFitComponentBase.h,v $ 00005 Language: C++ 00006 Date: $Date: 2003/12/15 01:00:46 $ 00007 Version: $Revision: 1.8 $ 00008 00009 Copyright (c) Insight Software Consortium. All rights reserved. 00010 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 #ifndef __itkGoodnessOfFitComponentBase_h 00018 #define __itkGoodnessOfFitComponentBase_h 00019 00020 #include "itkObject.h" 00021 #include "itkArray.h" 00022 #include "itkHistogram.h" 00023 #include "itkFunctionBase.h" 00024 #include "itkNeighborhoodSampler.h" 00025 #include "itkSampleToHistogramProjectionFilter.h" 00026 00027 namespace itk{ 00028 namespace Statistics{ 00029 00079 template< class TInputSample > 00080 class GoodnessOfFitComponentBase 00081 : public Object 00082 { 00083 public: 00085 typedef GoodnessOfFitComponentBase Self; 00086 typedef Object Superclass; 00087 typedef SmartPointer< Self > Pointer; 00088 typedef SmartPointer< const Self > ConstPointer; 00089 00091 itkTypeMacro(GoodnessOfFitComponentBase, Object) ; 00092 00094 typedef TInputSample InputSampleType ; 00095 00097 itkStaticConstMacro(MeasurementVectorSize, unsigned int, 00098 TInputSample::MeasurementVectorSize) ; 00099 00101 typedef typename TInputSample::MeasurementType MeasurementType ; 00102 typedef typename TInputSample::MeasurementVectorType MeasurementVectorType ; 00103 00105 typedef Subsample< TInputSample > ResampledSampleType ; 00106 00108 typedef Histogram< float, 1 > HistogramType ; 00109 typedef typename HistogramType::Pointer HistogramPointer ; 00110 typedef typename HistogramType::ConstPointer HistogramConstPointer ; 00111 00113 typedef Array< double > ParametersType ; 00114 00117 typedef FixedArray< double, 00118 itkGetStaticConstMacro(MeasurementVectorSize) > 00119 CenterType ; 00120 00122 typedef double RadiusType ; 00123 00125 typedef Vector< double, itkGetStaticConstMacro(MeasurementVectorSize) > 00126 MeanType ; 00127 00129 typedef double StandardDeviationType ; 00130 00132 virtual void SetInputSample(const TInputSample* sample) ; 00133 const TInputSample* GetInputSample() const; 00134 00136 virtual unsigned int GetNumberOfParameters() const = 0 ; 00137 00139 virtual void SetParameters(const ParametersType &parameters) ; 00140 ParametersType* GetParameters() 00141 { return m_Parameters ; } 00142 00145 void SetUseExpectedHistogram(bool flag) ; 00146 00148 void SetHistogramNumberOfBins(int numberOfBins) ; 00149 int GetHistogramNumberOfBins() 00150 { return m_HistogramNumberOfBins ; } 00151 00155 void SetHistogramUseEquiProbableBins(bool flag) ; 00156 bool GetHistogramUseEquiProbableBins() 00157 { return m_HistogramUseEquiProbableBins ; } 00158 00160 void SetHistogramBinOverlap(double overlap) ; 00161 double GetHistogramBinOverlap() 00162 { return m_HistogramBinOverlap ; } 00163 00166 void SetHistogramExtent(double extent) ; 00167 double GetHistogramExtent() 00168 { return m_HistogramExtent ; } 00169 00171 virtual CenterType* GetCenter() = 0 ; 00172 00174 virtual RadiusType* GetRadius() = 0 ; 00175 00177 virtual MeanType* GetMean() = 0 ; 00178 00180 virtual RadiusType* GetStandardDeviation() = 0 ; 00181 00183 virtual void CreateHistograms() ; 00184 00186 virtual void Resample() ; 00187 00189 ResampledSampleType* GetResampledSample() 00190 { return m_Resampler->GetOutput() ; } 00191 00193 virtual unsigned int GetResampledSampleSize() ; 00194 00196 virtual void CalculateProjectionAxes() = 0 ; 00197 00200 virtual void Project(int projectionAxisIndex) ; 00201 00204 virtual void UpdateExpectedHistogram() ; 00205 00207 double* GetTotalObservedScale() 00208 { return &m_TotalObservedScale ; } 00209 00211 virtual double GetCumulativeProbability(double x) 00212 const = 0 ; 00213 00216 virtual double GetProbabilityDensity(MeasurementVectorType &measurements) 00217 const = 0 ; 00218 00220 virtual double GetProportion() const 00221 { return m_Proportion ; } 00222 00224 HistogramType * GetObservedHistogram(); 00225 00227 HistogramType * GetExpectedHistogram(); 00228 00230 virtual void PrintParameters(std::ostream &os) const = 0 ; 00231 00233 virtual ParametersType GetFullParameters() const = 0 ; 00234 00235 protected: 00236 GoodnessOfFitComponentBase() ; 00237 virtual ~GoodnessOfFitComponentBase() ; 00238 virtual void PrintSelf(std::ostream& os, Indent indent) const ; 00239 00241 typedef NeighborhoodSampler< TInputSample > ResamplerType ; 00242 00244 typedef SampleToHistogramProjectionFilter< ResampledSampleType, float > 00245 ProjectorType ; 00246 00250 typedef FixedArray< double, 00251 itkGetStaticConstMacro(MeasurementVectorSize) > 00252 ProjectionAxisType ; 00253 typedef FixedArray< ProjectionAxisType, 00254 itkGetStaticConstMacro(MeasurementVectorSize) > 00255 ProjectionAxisArrayType; 00256 00257 ProjectionAxisArrayType* GetProjectionAxes() 00258 { return &m_ProjectionAxes ; } 00259 00261 virtual void CreateEquiRangeBins() ; 00262 00265 virtual void CreateEquiProbableBins() ; 00266 00267 private: 00268 const TInputSample* m_InputSample ; 00269 ParametersType m_Parameters ; 00270 00272 typename ResamplerType::Pointer m_Resampler ; 00273 typename ProjectorType::Pointer m_Projector ; 00274 00275 ProjectionAxisArrayType m_ProjectionAxes ; 00276 00278 unsigned int m_HistogramNumberOfBins ; 00279 bool m_HistogramUseEquiProbableBins ; 00280 double m_HistogramExtent ; 00281 double m_HistogramBinOverlap ; 00282 bool m_HistogramSizeChanged ; 00283 00285 double m_TotalObservedScale ; 00286 double m_HistogramMean ; 00287 double m_HistogramStandardDeviation ; 00288 00289 double m_Proportion ; 00290 00292 HistogramPointer m_ObservedHistogram ; 00293 HistogramPointer m_ExpectedHistogram ; 00294 bool m_UseExpectedHistogram ; 00295 00296 } ; // end of class 00297 00298 } // end of namespace Statistics 00299 } // end of namespace itk 00300 00301 #ifndef ITK_MANUAL_INSTANTIATION 00302 #include "itkGoodnessOfFitComponentBase.txx" 00303 #endif 00304 00305 #endif 00306

Generated at Sun Apr 1 02:29:49 2007 for ITK by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2000