00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkGrayscaleGeodesicDilateImageFilter_h
00018 #define __itkGrayscaleGeodesicDilateImageFilter_h
00019
00020 #include "itkImageToImageFilter.h"
00021
00022 namespace itk {
00023
00051 template<class TInputImage, class TOutputImage>
00052 class ITK_EXPORT GrayscaleGeodesicDilateImageFilter :
00053 public ImageToImageFilter<TInputImage, TOutputImage>
00054 {
00055 public:
00057 typedef GrayscaleGeodesicDilateImageFilter Self;
00058 typedef ImageToImageFilter<TInputImage, TOutputImage>
00059 Superclass;
00060 typedef SmartPointer<Self> Pointer;
00061 typedef SmartPointer<const Self> ConstPointer;
00062
00064 typedef TInputImage MarkerImageType;
00065 typedef TInputImage MaskImageType;
00066 typedef TOutputImage OutputImageType;
00067 typedef typename MarkerImageType::Pointer MarkerImagePointer;
00068 typedef typename MarkerImageType::ConstPointer MarkerImageConstPointer;
00069 typedef typename MarkerImageType::RegionType MarkerImageRegionType;
00070 typedef typename MarkerImageType::PixelType MarkerImagePixelType;
00071 typedef typename MaskImageType::Pointer MaskImagePointer;
00072 typedef typename MaskImageType::ConstPointer MaskImageConstPointer;
00073 typedef typename MaskImageType::RegionType MaskImageRegionType;
00074 typedef typename MaskImageType::PixelType MaskImagePixelType;
00075 typedef typename OutputImageType::Pointer OutputImagePointer;
00076 typedef typename OutputImageType::ConstPointer OutputImageConstPointer;
00077 typedef typename OutputImageType::RegionType OutputImageRegionType;
00078 typedef typename OutputImageType::PixelType OutputImagePixelType;
00079
00081 itkStaticConstMacro(MarkerImageDimension, unsigned int,
00082 TInputImage::ImageDimension);
00083 itkStaticConstMacro(MaskImageDimension, unsigned int,
00084 TInputImage::ImageDimension);
00085 itkStaticConstMacro(OutputImageDimension, unsigned int,
00086 TOutputImage::ImageDimension);
00087
00089 itkNewMacro(Self);
00090
00092 itkTypeMacro(GrayscaleGeodesicDilateImageFilter,
00093 ImageToImageFilter);
00094
00098 void SetMarkerImage(const MarkerImageType *);
00099 const MarkerImageType* GetMarkerImage();
00100
00104 void SetMaskImage(const MaskImageType *);
00105 const MaskImageType* GetMaskImage();
00106
00110 itkSetMacro(RunOneIteration, bool);
00111 itkGetMacro(RunOneIteration, bool);
00112 itkBooleanMacro(RunOneIteration);
00113
00116 itkGetMacro(NumberOfIterationsUsed, unsigned long);
00117
00118 protected:
00119 GrayscaleGeodesicDilateImageFilter();
00120 ~GrayscaleGeodesicDilateImageFilter() {};
00121 void PrintSelf(std::ostream& os, Indent indent) const;
00122
00129 void GenerateInputRequestedRegion();
00130
00135 void EnlargeOutputRequestedRegion(DataObject *itkNotUsed(output));
00136
00143 void GenerateData();
00144
00149 void ThreadedGenerateData (const OutputImageRegionType&
00150 outputRegionForThread,
00151 int threadId) ;
00152
00153 private:
00154 GrayscaleGeodesicDilateImageFilter(const Self&);
00155 void operator=(const Self&);
00156
00157 bool m_RunOneIteration;
00158 unsigned long m_NumberOfIterationsUsed;
00159
00160 } ;
00161
00162 }
00163
00164 #ifndef ITK_MANUAL_INSTANTIATION
00165 #include "itkGrayscaleGeodesicDilateImageFilter.txx"
00166 #endif
00167
00168 #endif
00169
00170