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

itkNeighborhoodOperator.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkNeighborhoodOperator.h,v $ 00005 Language: C++ 00006 Date: $Date: 2003/09/10 14:29:18 $ 00007 Version: $Revision: 1.25 $ 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 __itkNeighborhoodOperator_h 00018 #define __itkNeighborhoodOperator_h 00019 00020 #include "itkNeighborhood.h" 00021 #include "itkExceptionObject.h" 00022 #include "itkNumericTraits.h" 00023 #include <vector> 00024 00025 namespace itk { 00062 template< class TPixel, unsigned int VDimension, 00063 class TAllocator = NeighborhoodAllocator<TPixel> > 00064 class ITK_EXPORT NeighborhoodOperator 00065 : public Neighborhood<TPixel, VDimension, TAllocator> 00066 { 00067 public: 00069 typedef NeighborhoodOperator Self; 00070 typedef Neighborhood<TPixel, VDimension, TAllocator> Superclass; 00071 00073 typedef typename Superclass::SizeType SizeType; 00074 00076 typedef TPixel PixelType; 00077 00079 typedef SliceIterator<TPixel, Self> SliceIteratorType; 00080 00082 NeighborhoodOperator() 00083 { m_Direction = 0; } 00084 00086 NeighborhoodOperator(const Self &orig) 00087 : Neighborhood<TPixel, VDimension, TAllocator>(orig) 00088 { m_Direction = orig.m_Direction; } 00089 00091 Self &operator=( const Self &orig ) 00092 { 00093 Superclass::operator=(orig); 00094 m_Direction = orig.m_Direction; 00095 return *this; 00096 } 00097 00099 void SetDirection(const unsigned long &direction) 00100 { m_Direction = direction; } 00101 00103 unsigned long GetDirection() const 00104 { return m_Direction; } 00105 00110 virtual void CreateDirectional(); 00111 00116 virtual void CreateToRadius(const SizeType &); 00117 00122 virtual void CreateToRadius(const unsigned long); 00123 00126 virtual void FlipAxes(); 00127 00129 virtual void PrintSelf(std::ostream& os, Indent i) const 00130 { 00131 os << i << "NeighborhoodOperator { this=" << this 00132 << " Direction = " << m_Direction << " }" << std::endl; 00133 Superclass::PrintSelf( os, i.GetNextIndent() ); 00134 } 00135 00136 typedef typename NumericTraits< TPixel >::RealType PixelRealType; 00137 00139 void ScaleCoefficients( PixelRealType ); 00140 00141 protected: 00144 typedef std::vector<double> CoefficientVector; 00145 00148 virtual CoefficientVector GenerateCoefficients() = 0; 00149 00152 virtual void Fill(const CoefficientVector &) = 0; 00153 00159 virtual void FillCenteredDirectional(const CoefficientVector &); 00160 00162 void InitializeToZero() 00163 { 00164 for (unsigned int i = 0; i< this->Size(); ++i) 00165 { this->operator[](i) = NumericTraits<PixelType>::Zero; } 00166 } 00167 00168 private: 00170 unsigned long m_Direction; 00171 }; 00172 00173 } // namespace itk 00174 00175 #ifndef ITK_MANUAL_INSTANTIATION 00176 #include "itkNeighborhoodOperator.txx" 00177 #endif 00178 00179 #endif 00180

Generated at Sat Mar 31 02:26:13 2007 for ITK by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2000