Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itkGradientVectorFlowImageFilter.h

Go to the documentation of this file.
00001 #ifndef __itkGradientVectorFlowImageFilter_h 00002 #define __itkGradientVectorFlowImageFilter_h 00003 00004 #include "itkImageToImageFilter.h" 00005 #include "vnl/vnl_matrix_fixed.h" 00006 #include "vnl/vnl_math.h" 00007 #include "itkImage.h" 00008 #include "itkVector.h" 00009 #include "itkLaplacianImageFilter.h" 00010 #include "itkImageRegionIterator.h" 00011 #include "itkImageRegionConstIteratorWithIndex.h" 00012 //#include "itkImageRegionConstIterator.h" 00013 00014 namespace itk 00015 { 00016 00026 template <class TInputImage, class TOutputImage> 00027 class ITK_EXPORT GradientVectorFlowImageFilter : public ImageToImageFilter<TInputImage, TOutputImage> 00028 { 00029 public: 00031 typedef GradientVectorFlowImageFilter Self; 00032 00034 typedef ImageToImageFilter<TInputImage, TOutputImage> Superclass; 00035 00037 typedef SmartPointer<Self> Pointer; 00038 typedef SmartPointer<const Self> ConstPointer; 00039 00041 itkNewMacro(Self); 00042 00044 itkTypeMacro(GradientVectorFlowImageFilter, ImageToImageFilter); 00045 00047 typedef TInputImage InputImageType; 00048 typedef TOutputImage OutputImageType; 00049 00050 typedef typename TInputImage::IndexType IndexType; 00051 typedef typename TInputImage::SizeType SizeType; 00052 typedef typename TInputImage::PixelType PixelType; 00053 typedef typename OutputImageType::Pointer OutputImagePointer; 00054 typedef typename OutputImageType::RegionType RegionType; 00055 00057 // typedef ImageRegionConstIterator<InputImageType> InputImageConstIterator; 00058 typedef ImageRegionIterator<InputImageType> InputImageIterator; 00059 typedef ImageRegionConstIteratorWithIndex<InputImageType> InputImageConstIterator; 00060 typedef ImageRegionIterator<OutputImageType> OutputImageIterator; 00061 00063 itkStaticConstMacro(ImageDimension, unsigned int, 00064 TInputImage::ImageDimension); 00065 00066 typedef itk::Image<double, itkGetStaticConstMacro(ImageDimension)> InternalImageType; 00067 typedef typename InternalImageType::Pointer InternalImagePointer; 00068 typedef ImageRegionIterator<InternalImageType> InternalImageIterator; 00069 00070 typedef LaplacianImageFilter<InternalImageType, InternalImageType> LaplacianFilterType; 00071 typedef typename LaplacianFilterType::Pointer LaplacianFilterPointer; 00072 00075 itkSetMacro(LaplacianFilter, LaplacianFilterPointer); 00076 00077 itkSetMacro(TimeStep, double); 00078 itkGetMacro(TimeStep, double); 00079 00080 itkSetMacro(NoiseLevel, double); 00081 itkGetMacro(NoiseLevel, double); 00082 00083 itkSetMacro(IterationNum, int); 00084 itkGetMacro(IterationNum, int); 00085 00086 protected: 00087 GradientVectorFlowImageFilter(); 00088 ~GradientVectorFlowImageFilter() {} 00089 GradientVectorFlowImageFilter(const Self&) {} 00090 void operator=(const Self&) {} 00091 void PrintSelf(std::ostream& os, Indent indent) const; 00092 00093 virtual void GenerateData(); 00094 00095 void InitInterImage(); 00096 void UpdateInterImage(); 00097 void UpdatePixels(); 00098 00099 private: 00100 // parameters; 00101 double m_TimeStep; //the timestep of each iteration 00102 double m_Steps[Superclass::InputImageDimension]; // set to be 1 in all directions in most cases 00103 double m_NoiseLevel; // the noise level of the image 00104 int m_IterationNum; // the iteration number 00105 00106 LaplacianFilterPointer m_LaplacianFilter; 00107 typename Superclass::InputImagePointer m_IntermediateImage; 00108 InternalImagePointer m_InternalImages[Superclass::InputImageDimension]; 00109 InternalImagePointer m_BImage; // store the "b" value for every pixel 00110 typename Superclass::InputImagePointer m_CImage; // store the $c_i$ value for every pixel 00111 }; 00112 00113 } // end namespace itk 00114 00115 #ifndef ITK_MANUAL_INSTANTIATION 00116 #include "itkGradientVectorFlowImageFilter.txx" 00117 #endif 00118 00119 #endif

Generated at Sun Apr 1 02:30:19 2007 for ITK by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2000