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

itkRecursiveSeparableImageFilter.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Insight Segmentation & Registration Toolkit
00004   Module:    $RCSfile: itkRecursiveSeparableImageFilter.h,v $
00005   Language:  C++
00006   Date:      $Date: 2005/01/17 20:49:43 $
00007   Version:   $Revision: 1.21 $
00008 
00009   Copyright (c) Insight Software Consortium. All rights reserved.
00010   See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
00011 
00012      This software is distributed WITHOUT ANY WARRANTY; without even 
00013      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00014      PURPOSE.  See the above copyright notices for more information.
00015 
00016 =========================================================================*/
00017 #ifndef __itkRecursiveSeparableImageFilter_h
00018 #define __itkRecursiveSeparableImageFilter_h
00019 
00020 #include "itkImageToImageFilter.h"
00021 #include "itkNumericTraits.h"
00022 
00023 namespace itk
00024 {
00025   
00046 template <typename TInputImage, typename TOutputImage=TInputImage>
00047 class ITK_EXPORT RecursiveSeparableImageFilter :
00048     public ImageToImageFilter<TInputImage,TOutputImage> 
00049 {
00050 public:
00052   typedef RecursiveSeparableImageFilter  Self;
00053   typedef ImageToImageFilter<TInputImage,TOutputImage>   Superclass;
00054   typedef SmartPointer<Self>   Pointer;
00055   typedef SmartPointer<const Self>  ConstPointer;
00056 
00058   itkTypeMacro( RecursiveSeparableImageFilter, ImageToImageFilter );
00059 
00061   typedef typename TInputImage::Pointer  InputImagePointer;
00062   typedef typename TInputImage::ConstPointer  InputImageConstPointer;
00063 
00065   typedef typename TInputImage::PixelType                   InputPixelType;
00066   typedef typename NumericTraits<InputPixelType>::RealType  RealType;
00067 
00069   typedef TInputImage      InputImageType;
00070 
00072   typedef TOutputImage      OutputImageType;
00073 
00075   itkGetMacro(Direction, unsigned int);
00076 
00078   itkSetMacro(Direction, unsigned int);
00079 
00081   void SetInputImage( const TInputImage * );
00082     
00084   const TInputImage * GetInputImage( void );
00085 
00086 protected:
00087   RecursiveSeparableImageFilter();
00088   virtual ~RecursiveSeparableImageFilter() {};
00089   void PrintSelf(std::ostream& os, Indent indent) const;
00090 
00092   void GenerateData(void);
00093 
00099   virtual void GenerateInputRequestedRegion() throw(InvalidRequestedRegionError);
00100 
00101   // Override since the filter produces the entire dataset.
00102   void EnlargeOutputRequestedRegion(DataObject *output);
00103 
00108   virtual void SetUp(RealType spacing) = 0;
00109 
00116   void FilterDataArray(RealType *outs, const RealType *data, RealType *scratch,
00117                        unsigned int ln);
00118 
00119 private:  
00120   RecursiveSeparableImageFilter(const Self&); //purposely not implemented
00121   void operator=(const Self&); //purposely not implemented
00122 
00125   unsigned int m_Direction;
00126 
00127 protected:
00129   RealType m_N0;
00130   RealType m_N1;
00131   RealType m_N2;
00132   RealType m_N3; 
00133   
00137   RealType m_D1;
00138   RealType m_D2;
00139   RealType m_D3;
00140   RealType m_D4; 
00141   
00143   RealType m_M1;
00144   RealType m_M2;
00145   RealType m_M3;
00146   RealType m_M4; 
00147 
00150   RealType m_BN1;
00151   RealType m_BN2;
00152   RealType m_BN3;
00153   RealType m_BN4; 
00154  
00155   RealType m_BM1;
00156   RealType m_BM2;
00157   RealType m_BM3;
00158   RealType m_BM4; 
00159  
00160 };
00161 
00162 
00163 } // end namespace itk
00164 
00165 #ifndef ITK_MANUAL_INSTANTIATION
00166 #include "itkRecursiveSeparableImageFilter.txx"
00167 #endif
00168 
00169 
00170 #endif

Generated at Wed Mar 30 00:08:35 2005 for ITK by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2000