00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkThresholdSegmentationLevelSetImageFilter_h_
00018 #define __itkThresholdSegmentationLevelSetImageFilter_h_
00019
00020 #include "itkSegmentationLevelSetImageFilter.h"
00021 #include "itkThresholdSegmentationLevelSetFunction.h"
00022
00023 namespace itk {
00024
00080 template <class TInputImage,
00081 class TFeatureImage,
00082 class TOutputPixelType = float >
00083 class ITK_EXPORT ThresholdSegmentationLevelSetImageFilter
00084 : public SegmentationLevelSetImageFilter<TInputImage, TFeatureImage, TOutputPixelType >
00085 {
00086 public:
00088 typedef ThresholdSegmentationLevelSetImageFilter Self;
00089 typedef SegmentationLevelSetImageFilter<TInputImage, TFeatureImage, TOutputPixelType > Superclass;
00090 typedef SmartPointer<Self> Pointer;
00091 typedef SmartPointer<const Self> ConstPointer;
00092
00094 typedef typename Superclass::ValueType ValueType;
00095 typedef typename Superclass::OutputImageType OutputImageType;
00096 typedef typename Superclass::FeatureImageType FeatureImageType;
00097
00099 typedef ThresholdSegmentationLevelSetFunction<OutputImageType,
00100 FeatureImageType> ThresholdFunctionType;
00101 typedef typename ThresholdFunctionType::Pointer ThresholdFunctionPointer;
00102
00104 itkTypeMacro(ThresholdSegmentationLevelSetImageFilter, SegmentationLevelSetImageFilter);
00105
00107 itkNewMacro(Self);
00108
00110 void SetUpperThreshold(ValueType v)
00111 {
00112 this->m_ThresholdFunction->SetUpperThreshold(v);
00113 this->Modified();
00114 }
00115 void SetLowerThreshold(ValueType v)
00116 {
00117 this->m_ThresholdFunction->SetLowerThreshold(v);
00118 this->Modified();
00119 }
00120 ValueType GetUpperThreshold() const
00121 {
00122 return m_ThresholdFunction->GetUpperThreshold();
00123 }
00124 ValueType GetLowerThreshold() const
00125 {
00126 return m_ThresholdFunction->GetLowerThreshold();
00127 }
00128
00131 void SetEdgeWeight(ValueType v)
00132 {
00133 this->m_ThresholdFunction->SetEdgeWeight(v);
00134 this->Modified();
00135 }
00136 ValueType GetEdgeWeight() const
00137 {
00138 return m_ThresholdFunction->GetEdgeWeight();
00139 }
00140
00144 void SetSmoothingIterations(int v)
00145 {
00146 this->m_ThresholdFunction->SetSmoothingIterations(v);
00147 this->Modified();
00148 }
00149 int GetSmoothingIterations() const
00150 {
00151 return m_ThresholdFunction->GetSmoothingIterations();
00152 }
00153
00157 void SetSmoothingTimeStep(ValueType v)
00158 {
00159 this->m_ThresholdFunction->SetSmoothingTimeStep(v);
00160 this->Modified();
00161 }
00162 ValueType GetSmoothingTimeStep() const
00163 {
00164 return m_ThresholdFunction->GetSmoothingTimeStep();
00165 }
00166
00170 void SetSmoothingConductance(ValueType v)
00171 {
00172 this->m_ThresholdFunction->SetSmoothingConductance(v);
00173 this->Modified();
00174 }
00175 ValueType GetSmoothingConductance() const
00176 {
00177 return m_ThresholdFunction->GetSmoothingConductance();
00178 }
00179
00180 protected:
00181 ~ThresholdSegmentationLevelSetImageFilter() {}
00182 ThresholdSegmentationLevelSetImageFilter();
00183
00184 virtual void PrintSelf(std::ostream &os, Indent indent) const;
00185
00186 ThresholdSegmentationLevelSetImageFilter(const Self &);
00187 void operator=(const Self&);
00188 private:
00189 ThresholdFunctionPointer m_ThresholdFunction;
00190 };
00191
00192 }
00193
00194
00195
00196 #ifndef ITK_MANUAL_INSTANTIATION
00197 #include "itkThresholdSegmentationLevelSetImageFilter.txx"
00198 #endif
00199
00200 #endif