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 }
00132
00135 void SetEdgeWeight(ValueType v)
00136 {
00137 this->m_ThresholdFunction->SetEdgeWeight(v);
00138 this->Modified();
00139 }
00140 ValueType GetEdgeWeight() const
00141 {
00142 return m_ThresholdFunction->GetEdgeWeight();
00143 }
00145
00149 void SetSmoothingIterations(int v)
00150 {
00151 this->m_ThresholdFunction->SetSmoothingIterations(v);
00152 this->Modified();
00153 }
00154 int GetSmoothingIterations() const
00155 {
00156 return m_ThresholdFunction->GetSmoothingIterations();
00157 }
00159
00163 void SetSmoothingTimeStep(ValueType v)
00164 {
00165 this->m_ThresholdFunction->SetSmoothingTimeStep(v);
00166 this->Modified();
00167 }
00168 ValueType GetSmoothingTimeStep() const
00169 {
00170 return m_ThresholdFunction->GetSmoothingTimeStep();
00171 }
00173
00177 void SetSmoothingConductance(ValueType v)
00178 {
00179 this->m_ThresholdFunction->SetSmoothingConductance(v);
00180 this->Modified();
00181 }
00182 ValueType GetSmoothingConductance() const
00183 {
00184 return m_ThresholdFunction->GetSmoothingConductance();
00185 }
00187
00188 #ifdef ITK_USE_CONCEPT_CHECKING
00189
00190 itkConceptMacro(OutputHasNumericTraitsCheck,
00191 (Concept::HasNumericTraits<TOutputPixelType>));
00192
00194 #endif
00195
00196 protected:
00197 ~NarrowBandThresholdSegmentationLevelSetImageFilter() {}
00198 NarrowBandThresholdSegmentationLevelSetImageFilter();
00199
00200 virtual void PrintSelf(std::ostream &os, Indent indent) const;
00201
00202 NarrowBandThresholdSegmentationLevelSetImageFilter(const Self &);
00203 void operator=(const Self&);
00204 private:
00205 ThresholdFunctionPointer m_ThresholdFunction;
00206 };
00207
00208 }
00209
00210
00211
00212 #ifndef ITK_MANUAL_INSTANTIATION
00213 #include "itkNarrowBandThresholdSegmentationLevelSetImageFilter.txx"
00214 #endif
00215
00216 #endif
00217