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 }
00129
00132 void SetEdgeWeight(ValueType v)
00133 {
00134 this->m_ThresholdFunction->SetEdgeWeight(v);
00135 this->Modified();
00136 }
00137 ValueType GetEdgeWeight() const
00138 {
00139 return m_ThresholdFunction->GetEdgeWeight();
00140 }
00142
00146 void SetSmoothingIterations(int v)
00147 {
00148 this->m_ThresholdFunction->SetSmoothingIterations(v);
00149 this->Modified();
00150 }
00151 int GetSmoothingIterations() const
00152 {
00153 return m_ThresholdFunction->GetSmoothingIterations();
00154 }
00156
00160 void SetSmoothingTimeStep(ValueType v)
00161 {
00162 this->m_ThresholdFunction->SetSmoothingTimeStep(v);
00163 this->Modified();
00164 }
00165 ValueType GetSmoothingTimeStep() const
00166 {
00167 return m_ThresholdFunction->GetSmoothingTimeStep();
00168 }
00170
00174 void SetSmoothingConductance(ValueType v)
00175 {
00176 this->m_ThresholdFunction->SetSmoothingConductance(v);
00177 this->Modified();
00178 }
00179 ValueType GetSmoothingConductance() const
00180 {
00181 return m_ThresholdFunction->GetSmoothingConductance();
00182 }
00184
00185 protected:
00186 ~ThresholdSegmentationLevelSetImageFilter() {}
00187 ThresholdSegmentationLevelSetImageFilter();
00188
00189 virtual void PrintSelf(std::ostream &os, Indent indent) const;
00190
00191 ThresholdSegmentationLevelSetImageFilter(const Self &);
00192 void operator=(const Self&);
00193 private:
00194 ThresholdFunctionPointer m_ThresholdFunction;
00195 };
00196
00197 }
00198
00199
00200
00201 #ifndef ITK_MANUAL_INSTANTIATION
00202 #include "itkThresholdSegmentationLevelSetImageFilter.txx"
00203 #endif
00204
00205 #endif
00206