Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __itkVectorMeanDiffusionImageFilter_H__
00016 #define __itkVectorMeanDiffusionImageFilter_H__
00017
00018 #include "itkImageToImageFilter.h"
00019 #include "itkImage.h"
00020 #include "itkVector.h"
00021 #include "itkNumericTraits.h"
00022
00023 #include "itkRescaleIntensityImageFilter.h"
00024
00025 namespace itk
00026 {
00044 template <class TInputImage, class TGrayValueImage >
00045 class ITK_EXPORT VectorMeanDiffusionImageFilter
00046 : public ImageToImageFilter< TInputImage, TInputImage >
00047 {
00048 public:
00049
00051 typedef TInputImage InputImageType;
00052 typedef TGrayValueImage GrayValueImageType;
00053
00055 typedef VectorMeanDiffusionImageFilter Self;
00056 typedef ImageToImageFilter<
00057 InputImageType, InputImageType > Superclass;
00058 typedef SmartPointer< Self > Pointer;
00059 typedef SmartPointer< const Self > ConstPointer;
00060
00062 itkStaticConstMacro( InputImageDimension, unsigned int,
00063 TInputImage::ImageDimension );
00064
00066 itkNewMacro( Self );
00067
00069 itkTypeMacro( VectorMeanDiffusionImageFilter, ImageToImageFilter );
00070
00072 typedef typename InputImageType::PixelType InputPixelType;
00073 typedef typename InputPixelType::ValueType ValueType;
00074
00075 typedef typename InputImageType::RegionType InputImageRegionType;
00076 typedef typename InputImageType::SizeType InputSizeType;
00077 typedef typename InputImageType::IndexType IndexType;
00078 typedef Vector< double,
00079 itkGetStaticConstMacro( InputImageDimension ) > VectorRealType;
00080 typedef Image< double,
00081 itkGetStaticConstMacro( InputImageDimension ) > DoubleImageType;
00082 typedef typename GrayValueImageType::PixelType GrayValuePixelType;
00083
00085 typedef RescaleIntensityImageFilter<
00086 GrayValueImageType, DoubleImageType > RescaleImageFilterType;
00087
00089 itkSetMacro( Radius, InputSizeType );
00090
00092 itkGetConstReferenceMacro( Radius, InputSizeType );
00093
00101 virtual void GenerateInputRequestedRegion() throw( InvalidRequestedRegionError );
00102
00104 itkSetMacro( NumberOfIterations, unsigned int );
00105 itkGetConstMacro( NumberOfIterations, unsigned int );
00106
00108 void SetGrayValueImage( GrayValueImageType * _arg );
00109 typename GrayValueImageType::Pointer GetGrayValueImage( void )
00110 {
00111 return this->m_GrayValueImage.GetPointer();
00112 }
00113
00114 protected:
00115
00116 VectorMeanDiffusionImageFilter();
00117 virtual ~VectorMeanDiffusionImageFilter() {}
00118
00119 void PrintSelf( std::ostream& os, Indent indent ) const;
00120
00132 void GenerateData( void );
00133
00134 private:
00135
00136 VectorMeanDiffusionImageFilter( const Self& );
00137 void operator=( const Self& );
00138
00140 InputSizeType m_Radius;
00141 unsigned int m_NumberOfIterations;
00142
00144 typename GrayValueImageType::Pointer m_GrayValueImage;
00145 typename DoubleImageType::Pointer m_Cx;
00146
00147 typename RescaleImageFilterType::Pointer m_RescaleFilter;
00148
00150 void FilterGrayValueImage( void );
00151
00152 };
00153
00154 }
00155
00156 #ifndef ITK_MANUAL_INSTANTIATION
00157 #include "itkVectorMeanDiffusionImageFilter.hxx"
00158 #endif
00159
00160 #endif // end #ifndef __itkVectorMeanDiffusionImageFilter_H__
00161