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 Tue Mar 29 23:52:38 2005 for ITK by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2000