00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkVectorThresholdSegmentationLevelSetImageFilter_h_
00018 #define __itkVectorThresholdSegmentationLevelSetImageFilter_h_
00019
00020 #include "itkSegmentationLevelSetImageFilter.h"
00021 #include "itkVectorThresholdSegmentationLevelSetFunction.h"
00022
00023 namespace itk {
00024
00085 template <class TInputImage,
00086 class TFeatureImage,
00087 class TOutputPixelType = float >
00088 class ITK_EXPORT VectorThresholdSegmentationLevelSetImageFilter
00089 : public SegmentationLevelSetImageFilter<TInputImage, TFeatureImage, TOutputPixelType >
00090 {
00091 public:
00093 typedef VectorThresholdSegmentationLevelSetImageFilter Self;
00094 typedef SegmentationLevelSetImageFilter<TInputImage, TFeatureImage, TOutputPixelType> Superclass;
00095 typedef SmartPointer<Self> Pointer;
00096 typedef SmartPointer<const Self> ConstPointer;
00097
00099 typedef typename Superclass::ValueType ValueType;
00100 typedef typename Superclass::OutputImageType OutputImageType;
00101 typedef typename Superclass::FeatureImageType FeatureImageType;
00102
00104 typedef VectorThresholdSegmentationLevelSetFunction<OutputImageType,FeatureImageType> ThresholdFunctionType;
00105 typedef typename ThresholdFunctionType::Pointer ThresholdFunctionPointer;
00106 typedef typename ThresholdFunctionType::MeanVectorType MeanVectorType;
00107 typedef typename ThresholdFunctionType::CovarianceMatrixType CovarianceMatrixType;
00108 typedef typename ThresholdFunctionType::ScalarValueType ScalarValueType;
00109
00111 itkTypeMacro(VectorThresholdSegmentationLevelSetImageFilter, SegmentationLevelSetImageFilter);
00112
00114 itkNewMacro(Self);
00115
00117 void SetMean(const MeanVectorType &mean)
00118 {
00119 m_ThresholdFunction->SetMean(mean);
00120 this->Modified();
00121 }
00122 const MeanVectorType & GetMean() const
00123 {
00124 return m_ThresholdFunction->GetMean();
00125 }
00126
00127
00128 void SetCovariance(const CovarianceMatrixType &cov)
00129 {
00130 m_ThresholdFunction->SetCovariance(cov);
00131 this->Modified();
00132 }
00133 const CovarianceMatrixType & GetCovariance() const
00134 {
00135 return m_ThresholdFunction->GetCovariance();
00136 }
00137
00139 void SetThreshold(ScalarValueType thr)
00140 {
00141 m_ThresholdFunction->SetThreshold(thr);
00142 this->Modified();
00143 }
00144 ScalarValueType GetThreshold ()
00145 {
00146 return m_ThresholdFunction->GetThreshold();
00147 }
00148
00149
00150 protected:
00151 ~VectorThresholdSegmentationLevelSetImageFilter() {}
00152 VectorThresholdSegmentationLevelSetImageFilter();
00153
00154 virtual void PrintSelf(std::ostream &os, Indent indent) const;
00155
00156 VectorThresholdSegmentationLevelSetImageFilter(const Self &);
00157 void operator=(const Self&);
00158 private:
00159 ThresholdFunctionPointer m_ThresholdFunction;
00160 };
00161
00162 }
00163
00164
00165
00166 #ifndef ITK_MANUAL_INSTANTIATION
00167 #include "itkVectorThresholdSegmentationLevelSetImageFilter.txx"
00168 #endif
00169
00170 #endif