00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkRecursiveGaussianImageFilter_h
00018 #define __itkRecursiveGaussianImageFilter_h
00019
00020 #include "itkRecursiveSeparableImageFilter.h"
00021
00022 namespace itk
00023 {
00024
00046 template <typename TInputImage, typename TOutputImage=TInputImage>
00047 class ITK_EXPORT RecursiveGaussianImageFilter :
00048 public RecursiveSeparableImageFilter<TInputImage,TOutputImage>
00049 {
00050 public:
00052 typedef RecursiveGaussianImageFilter Self;
00053 typedef RecursiveSeparableImageFilter<TInputImage,TOutputImage> Superclass;
00054 typedef SmartPointer<Self> Pointer;
00055 typedef SmartPointer<const Self> ConstPointer;
00056
00057 typedef typename Superclass::RealType RealType;
00058
00060 itkNewMacro(Self);
00061
00063 itkTypeMacro( RecursiveGaussianImageFilter, RecursiveSeparableImageFilter );
00064
00067 itkGetMacro( Sigma, RealType );
00068 itkSetMacro( Sigma, RealType );
00069
00073 typedef enum { ZeroOrder, FirstOrder, SecondOrder } OrderEnumType;
00074
00076 typedef TOutputImage OutputImageType;
00077
00078
00094 itkSetMacro( NormalizeAcrossScale, bool );
00095 itkGetMacro( NormalizeAcrossScale, bool );
00096
00103 itkSetMacro( Order, OrderEnumType );
00104 itkGetMacro( Order, OrderEnumType );
00105
00107 void SetZeroOrder();
00108
00110 void SetFirstOrder();
00111
00113 void SetSecondOrder();
00114
00115
00116 protected:
00117 RecursiveGaussianImageFilter();
00118 virtual ~RecursiveGaussianImageFilter() {};
00119 void PrintSelf(std::ostream& os, Indent indent) const;
00120
00124 virtual void SetUp(void);
00125
00131 void ComputeFilterCoefficients(bool symmetric);
00132
00133 private:
00134 RecursiveGaussianImageFilter(const Self&);
00135 void operator=(const Self&);
00136
00138 RealType m_Sigma;
00139
00141 bool m_NormalizeAcrossScale;
00142
00143 OrderEnumType m_Order;
00144
00145 };
00146
00147 }
00148
00149 #ifndef ITK_MANUAL_INSTANTIATION
00150 #include "itkRecursiveGaussianImageFilter.txx"
00151 #endif
00152
00153 #endif
00154