itkMahalanobisDistanceThresholdImageFunction.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkMahalanobisDistanceThresholdImageFunction_h
00018 #define __itkMahalanobisDistanceThresholdImageFunction_h
00019
00020 #include "itkImageFunction.h"
00021 #include "itkMahalanobisDistanceMembershipFunction.h"
00022
00023 namespace itk
00024 {
00025
00046 template <class TInputImage, class TCoordRep = float>
00047 class ITK_EXPORT MahalanobisDistanceThresholdImageFunction :
00048 public ImageFunction<TInputImage,bool,TCoordRep>
00049 {
00050 public:
00052 typedef MahalanobisDistanceThresholdImageFunction Self;
00053 typedef ImageFunction<TInputImage,bool,TCoordRep> Superclass;
00054 typedef SmartPointer<Self> Pointer;
00055 typedef SmartPointer<const Self> ConstPointer;
00056
00058 itkTypeMacro(MahalanobisDistanceThresholdImageFunction, ImageFunction);
00059
00061 itkNewMacro(Self);
00062
00064 typedef typename Superclass::InputImageType InputImageType;
00065
00067 typedef typename TInputImage::PixelType PixelType;
00068
00070 itkStaticConstMacro(ImageDimension, unsigned int,Superclass::ImageDimension);
00071
00073 typedef typename Superclass::PointType PointType;
00074
00076 typedef typename Superclass::IndexType IndexType;
00077
00079 typedef typename Superclass::ContinuousIndexType ContinuousIndexType;
00080
00082 typedef vnl_matrix<double> CovarianceMatrixType;
00083
00085 typedef vnl_vector<double> MeanVectorType;
00086
00095 virtual bool Evaluate( const PointType& point ) const;
00096
00105 virtual bool EvaluateAtContinuousIndex(
00106 const ContinuousIndexType & index ) const;
00107
00116 virtual bool EvaluateAtIndex( const IndexType & index ) const;
00117
00124 virtual double EvaluateDistance( const PointType& point ) const;
00125
00132 virtual double EvaluateDistanceAtIndex( const IndexType & index ) const;
00133
00135 itkGetConstReferenceMacro(Threshold,double);
00136 itkSetMacro(Threshold,double);
00138
00140 void SetMean(const MeanVectorType &mean);
00141 const MeanVectorType & GetMean() const;
00143
00148 void SetCovariance(const CovarianceMatrixType &cov);
00149 const CovarianceMatrixType & GetCovariance() const;
00151
00152
00153 protected:
00154 MahalanobisDistanceThresholdImageFunction();
00155 ~MahalanobisDistanceThresholdImageFunction(){};
00156 void PrintSelf(std::ostream& os, Indent indent) const;
00157
00158 private:
00159 MahalanobisDistanceThresholdImageFunction( const Self& );
00160 void operator=( const Self& );
00161
00162 double m_Threshold;
00163
00164
00165 typedef Statistics::MahalanobisDistanceMembershipFunction<
00166 PixelType
00167 > MahalanobisDistanceFunctionType;
00168
00169 typedef typename MahalanobisDistanceFunctionType::Pointer MahalanobisDistanceFunctionPointer;
00170 MahalanobisDistanceFunctionPointer m_MahalanobisDistanceMembershipFunction;
00171
00172 };
00173
00174 }
00175
00176 #ifndef ITK_MANUAL_INSTANTIATION
00177 #include "itkMahalanobisDistanceThresholdImageFunction.txx"
00178 #endif
00179
00180 #endif
00181