00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _itkGeodesicActiveContourImageFilter_h
00018 #define _itkGeodesicActiveContourImageFilter_h
00019
00020 #include "itkShapeDetectionLevelSetFilter.h"
00021
00022 namespace itk
00023 {
00084 template <
00085 class TLevelSet,
00086 class TEdgeImage,
00087 class TDerivImage
00088 >
00089 class ITK_EXPORT GeodesicActiveContourImageFilter :
00090 public ShapeDetectionLevelSetFilter<TLevelSet,TEdgeImage>
00091 {
00092 public:
00094 typedef GeodesicActiveContourImageFilter Self;
00095 typedef ShapeDetectionLevelSetFilter<TLevelSet,TEdgeImage> Superclass;
00096 typedef SmartPointer<Self> Pointer;
00097 typedef SmartPointer<const Self> ConstPointer;
00098
00100 itkNewMacro(Self);
00101
00103 itkTypeMacro(GeodesicActiveContourImageFilter, ShapeDetectionLevelSetFilter);
00104
00106 typedef LevelSetTypeDefault<TLevelSet> LevelSetType;
00107 typedef typename LevelSetType::LevelSetImageType LevelSetImageType;
00108 typedef typename LevelSetType::LevelSetPointer LevelSetPointer;
00109 typedef typename LevelSetType::PixelType PixelType;
00110 typedef typename LevelSetType::NodeType NodeType;
00111 typedef typename LevelSetType::NodeContainer NodeContainer;
00112 typedef typename LevelSetType::NodeContainerPointer NodeContainerPointer;
00113
00115 typedef TEdgeImage EdgeImageType;
00116
00118 typedef typename EdgeImageType::Pointer EdgeImagePointer;
00119
00121 typedef TDerivImage DerivImageType;
00122
00124 typedef typename DerivImageType::Pointer DerivImagePointer;
00125
00127 itkStaticConstMacro(SetDimension, unsigned int,
00128 TLevelSet::ImageDimension);
00129
00136 itkSetClampMacro( InflationStrength, double, 0.0,
00137 NumericTraits<double>::max() );
00138
00140 itkGetMacro( InflationStrength, double );
00141
00143 void SetDerivativeImage( TDerivImage *ptr, unsigned int idx=0 );
00144
00146 DerivImageType * GetDerivativeImage( unsigned int idx );
00147
00148 protected:
00149 GeodesicActiveContourImageFilter();
00150 ~GeodesicActiveContourImageFilter(){};
00151 void PrintSelf(std::ostream& os, Indent indent) const;
00152
00153 virtual void GenerateDataFull();
00154 virtual void GenerateDataNarrowBand();
00155 virtual void GenerateInputRequestedRegion();
00156
00157 private:
00158 GeodesicActiveContourImageFilter(const Self&);
00159 void operator=(const Self&);
00160
00161 typedef ReinitializeLevelSetImageFilter<TLevelSet> ExtenderType;
00162 typedef typename TEdgeImage::PixelType EdgePixelType;
00163 typedef typename TDerivImage::PixelType DerivPixelType;
00164
00165 typename ExtenderType::Pointer m_Extender;
00166 double m_InflationStrength;
00167
00168 };
00169
00170 }
00171
00172 #ifndef ITK_MANUAL_INSTANTIATION
00173 #include "itkGeodesicActiveContourImageFilter.txx"
00174 #endif
00175
00176 #endif