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