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
00042
template <
typename TInputImage,
typename TOutputImage=TInputImage>
00043 class ITK_EXPORT RecursiveGaussianImageFilter :
00044
public RecursiveSeparableImageFilter<TInputImage,TOutputImage>
00045 {
00046
public:
00048 typedef RecursiveGaussianImageFilter
Self;
00049 typedef RecursiveSeparableImageFilter<TInputImage,TOutputImage> Superclass;
00050 typedef SmartPointer<Self> Pointer;
00051 typedef SmartPointer<const Self> ConstPointer;
00052
00053 typedef typename Superclass::RealType
RealType;
00054
00056
itkNewMacro(
Self);
00057
00059
itkTypeMacro( RecursiveGaussianImageFilter,
RecursiveSeparableImageFilter );
00060
00063
itkGetMacro( Sigma,
RealType );
00064
itkSetMacro( Sigma,
RealType );
00065
00069
typedef enum { ZeroOrder, FirstOrder, SecondOrder } OrderEnumType;
00070
00072
typedef TOutputImage
OutputImageType;
00073
00074
00090
itkSetMacro( NormalizeAcrossScale,
bool );
00091
itkGetMacro( NormalizeAcrossScale,
bool );
00092
00099
itkSetMacro( Order, OrderEnumType );
00100
itkGetMacro( Order, OrderEnumType );
00101
00102
00103
protected:
00104 RecursiveGaussianImageFilter();
00105
virtual ~RecursiveGaussianImageFilter() {};
00106
void PrintSelf(std::ostream& os,
Indent indent)
const;
00107
00111
virtual void SetUp(
void);
00112
00118
void ComputeFilterCoefficients(
bool symmetric);
00119
00120
private:
00121 RecursiveGaussianImageFilter(
const Self&);
00122
void operator=(
const Self&);
00123
00125
RealType m_Sigma;
00126
00128
bool m_NormalizeAcrossScale;
00129
00130 OrderEnumType m_Order;
00131
00132 };
00133
00134 }
00135
00136
#ifndef ITK_MANUAL_INSTANTIATION
00137
#include "itkRecursiveGaussianImageFilter.txx"
00138
#endif
00139
00140
#endif