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/09/10 14:29:45 $ 00007 Version: $Revision: 1.7 $ 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 00112 typedef Array< double > ParametersType ; 00113 00116 typedef FixedArray< double, 00117 itkGetStaticConstMacro(MeasurementVectorSize) > 00118 CenterType ; 00119 00121 typedef double RadiusType ; 00122 00124 typedef Vector< double, itkGetStaticConstMacro(MeasurementVectorSize) > 00125 MeanType ; 00126 00128 typedef double StandardDeviationType ; 00129 00131 virtual void SetInputSample(TInputSample* sample) ; 00132 TInputSample* GetInputSample() ; 00133 00135 virtual unsigned int GetNumberOfParameters() const = 0 ; 00136 00138 virtual void SetParameters(const ParametersType &parameters) ; 00139 ParametersType* GetParameters() 00140 { return m_Parameters ; } 00141 00144 void SetUseExpectedHistogram(bool flag) ; 00145 00147 void SetHistogramNumberOfBins(int numberOfBins) ; 00148 int GetHistogramNumberOfBins() 00149 { return m_HistogramNumberOfBins ; } 00150 00154 void SetHistogramUseEquiProbableBins(bool flag) ; 00155 bool GetHistogramUseEquiProbableBins() 00156 { return m_HistogramUseEquiProbableBins ; } 00157 00159 void SetHistogramBinOverlap(double overlap) ; 00160 double GetHistogramBinOverlap() 00161 { return m_HistogramBinOverlap ; } 00162 00165 void SetHistogramExtent(double extent) ; 00166 double GetHistogramExtent() 00167 { return m_HistogramExtent ; } 00168 00170 virtual CenterType* GetCenter() = 0 ; 00171 00173 virtual RadiusType* GetRadius() = 0 ; 00174 00176 virtual MeanType* GetMean() = 0 ; 00177 00179 virtual RadiusType* GetStandardDeviation() = 0 ; 00180 00182 virtual void CreateHistograms() ; 00183 00185 virtual void Resample() ; 00186 00188 ResampledSampleType* GetResampledSample() 00189 { return m_Resampler->GetOutput() ; } 00190 00192 virtual unsigned int GetResampledSampleSize() ; 00193 00195 virtual void CalculateProjectionAxes() = 0 ; 00196 00199 virtual void Project(int projectionAxisIndex) ; 00200 00203 virtual void UpdateExpectedHistogram() ; 00204 00206 double* GetTotalObservedScale() 00207 { return &m_TotalObservedScale ; } 00208 00210 virtual double GetCumulativeProbability(double x) 00211 const = 0 ; 00212 00215 virtual double GetProbabilityDensity(MeasurementVectorType &measurements) 00216 const = 0 ; 00217 00219 virtual double GetProportion() const 00220 { return m_Proportion ; } 00221 00223 HistogramPointer GetObservedHistogram() ; 00224 00226 HistogramPointer GetExpectedHistogram() ; 00227 00229 virtual void PrintParameters(std::ostream &os) const = 0 ; 00230 00232 virtual ParametersType GetFullParameters() const = 0 ; 00233 00234 protected: 00235 GoodnessOfFitComponentBase() ; 00236 virtual ~GoodnessOfFitComponentBase() ; 00237 virtual void PrintSelf(std::ostream& os, Indent indent) const ; 00238 00240 typedef NeighborhoodSampler< TInputSample > ResamplerType ; 00241 00243 typedef SampleToHistogramProjectionFilter< ResampledSampleType, float > 00244 ProjectorType ; 00245 00249 typedef FixedArray< double, 00250 itkGetStaticConstMacro(MeasurementVectorSize) > 00251 ProjectionAxisType ; 00252 typedef FixedArray< ProjectionAxisType, 00253 itkGetStaticConstMacro(MeasurementVectorSize) > 00254 ProjectionAxisArrayType; 00255 00256 ProjectionAxisArrayType* GetProjectionAxes() 00257 { return &m_ProjectionAxes ; } 00258 00260 virtual void CreateEquiRangeBins() ; 00261 00264 virtual void CreateEquiProbableBins() ; 00265 00266 private: 00267 TInputSample* m_InputSample ; 00268 ParametersType m_Parameters ; 00269 00271 typename ResamplerType::Pointer m_Resampler ; 00272 typename ProjectorType::Pointer m_Projector ; 00273 00274 ProjectionAxisArrayType m_ProjectionAxes ; 00275 00277 unsigned int m_HistogramNumberOfBins ; 00278 bool m_HistogramUseEquiProbableBins ; 00279 double m_HistogramExtent ; 00280 double m_HistogramBinOverlap ; 00281 bool m_HistogramSizeChanged ; 00282 00284 double m_TotalObservedScale ; 00285 double m_HistogramMean ; 00286 double m_HistogramStandardDeviation ; 00287 00288 double m_Proportion ; 00289 00291 HistogramPointer m_ObservedHistogram ; 00292 HistogramPointer m_ExpectedHistogram ; 00293 bool m_UseExpectedHistogram ; 00294 00295 } ; // end of class 00296 00297 } // end of namespace Statistics 00298 } // end of namespace itk 00299 00300 #ifndef ITK_MANUAL_INSTANTIATION 00301 #include "itkGoodnessOfFitComponentBase.txx" 00302 #endif 00303 00304 #endif 00305

Generated at Sat Mar 31 02:19:44 2007 for ITK by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2000