00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkNarrowBandThresholdSegmentationLevelSetImageFilter_h_
00018 #define __itkNarrowBandThresholdSegmentationLevelSetImageFilter_h_
00019
00020 #include "itkNarrowBandLevelSetImageFilter.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 NarrowBandThresholdSegmentationLevelSetImageFilter
00084 : public NarrowBandLevelSetImageFilter<TInputImage, TFeatureImage,
00085 TOutputPixelType, Image<TOutputPixelType,
00086 ::itk::GetImageDimension<TInputImage>::ImageDimension> >
00087 {
00088 public:
00090 typedef NarrowBandThresholdSegmentationLevelSetImageFilter Self;
00091 typedef NarrowBandLevelSetImageFilter<TInputImage, TFeatureImage, TOutputPixelType,
00092 Image<TOutputPixelType, ::itk::GetImageDimension<TInputImage>::ImageDimension> > Superclass;
00093 typedef SmartPointer<Self> Pointer;
00094 typedef SmartPointer<const Self> ConstPointer;
00095
00097 typedef typename Superclass::ValueType ValueType;
00098 typedef typename Superclass::OutputImageType OutputImageType;
00099 typedef typename Superclass::FeatureImageType FeatureImageType;
00100
00102 typedef ThresholdSegmentationLevelSetFunction<OutputImageType,
00103 FeatureImageType> ThresholdFunctionType;
00104 typedef typename ThresholdFunctionType::Pointer ThresholdFunctionPointer;
00105
00107 itkTypeMacro(NarrowBandThresholdSegmentationLevelSetImageFilter, NarrowBandLevelSetImageFilter);
00108
00110 itkNewMacro(Self);
00111
00113 void SetUpperThreshold(ValueType v)
00114 {
00115 this->m_ThresholdFunction->SetUpperThreshold(v);
00116 this->Modified();
00117 }
00118 void SetLowerThreshold(ValueType v)
00119 {
00120 this->m_ThresholdFunction->SetLowerThreshold(v);
00121 this->Modified();
00122 }
00123 ValueType GetUpperThreshold() const
00124 {
00125 return m_ThresholdFunction->GetUpperThreshold();
00126 }
00127 ValueType GetLowerThreshold() const
00128 {
00129 return m_ThresholdFunction->GetLowerThreshold();
00130 }
00131
00134 void SetEdgeWeight(ValueType v)
00135 {
00136 this->m_ThresholdFunction->SetEdgeWeight(v);
00137 this->Modified();
00138 }
00139 ValueType GetEdgeWeight() const
00140 {
00141 return m_ThresholdFunction->GetEdgeWeight();
00142 }
00143
00147 void SetSmoothingIterations(int v)
00148 {
00149 this->m_ThresholdFunction->SetSmoothingIterations(v);
00150 this->Modified();
00151 }
00152 int GetSmoothingIterations() const
00153 {
00154 return m_ThresholdFunction->GetSmoothingIterations();
00155 }
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 }
00169
00173 void SetSmoothingConductance(ValueType v)
00174 {
00175 this->m_ThresholdFunction->SetSmoothingConductance(v);
00176 this->Modified();
00177 }
00178 ValueType GetSmoothingConductance() const
00179 {
00180 return m_ThresholdFunction->GetSmoothingConductance();
00181 }
00182
00183 protected:
00184 ~NarrowBandThresholdSegmentationLevelSetImageFilter() {}
00185 NarrowBandThresholdSegmentationLevelSetImageFilter();
00186
00187 virtual void PrintSelf(std::ostream &os, Indent indent) const;
00188
00189 NarrowBandThresholdSegmentationLevelSetImageFilter(const Self &);
00190 void operator=(const Self&);
00191 private:
00192 ThresholdFunctionPointer m_ThresholdFunction;
00193 };
00194
00195 }
00196
00197
00198
00199 #ifndef ITK_MANUAL_INSTANTIATION
00200 #include "itkNarrowBandThresholdSegmentationLevelSetImageFilter.txx"
00201 #endif
00202
00203 #endif