go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkExponentialLimiterFunction.h
Go to the documentation of this file.
00001 /*======================================================================
00002 
00003   This file is part of the elastix software.
00004 
00005   Copyright (c) University Medical Center Utrecht. All rights reserved.
00006   See src/CopyrightElastix.txt or http://elastix.isi.uu.nl/legal.php for
00007   details.
00008 
00009      This software is distributed WITHOUT ANY WARRANTY; without even
00010      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00011      PURPOSE. See the above copyright notices for more information.
00012 
00013 ======================================================================*/
00014 
00015 #ifndef __itkExponentialLimiterFunction_h
00016 #define __itkExponentialLimiterFunction_h
00017 
00018 #include "itkLimiterFunctionBase.h"
00019 
00020 
00021 namespace itk
00022 {
00023 
00039 template < class TInput, unsigned int NDimension >
00040 class ExponentialLimiterFunction :
00041   public LimiterFunctionBase<TInput, NDimension>
00042 {
00043 public:
00045   typedef ExponentialLimiterFunction                     Self;
00046   typedef LimiterFunctionBase<TInput, NDimension> Superclass;
00047   typedef SmartPointer<Self> Pointer;
00048   typedef SmartPointer<const Self> ConstPointer;
00049 
00051   itkTypeMacro(ExponentialLimiterFunction, LimiterFunctionBase);
00052 
00054   itkNewMacro(Self);
00055 
00057   itkStaticConstMacro( Dimension, unsigned int, Superclass::Dimension );
00058 
00059 
00061   typedef typename Superclass::InputType            InputType;
00062   typedef typename Superclass::OutputType           OutputType;
00063   typedef typename Superclass::DerivativeValueType  DerivativeValueType;
00064   typedef typename Superclass::DerivativeType       DerivativeType;
00065 
00067   virtual OutputType Evaluate( const InputType & input ) const;
00068 
00070   virtual OutputType Evaluate( const InputType & input, DerivativeType & derivative) const;
00071 
00073   virtual void Initialize(void) throw (ExceptionObject);
00074 
00075 protected:
00076   ExponentialLimiterFunction();
00077   ~ExponentialLimiterFunction(){};
00078 
00079   virtual void ComputeLimiterSettings(void);
00080 
00081   double m_UTminUB;
00082   double m_UTminUBinv;
00083   double m_LTminLB;
00084   double m_LTminLBinv;
00085 
00086 
00087 private:
00088   ExponentialLimiterFunction(const Self& ); //purposely not implemented
00089   void operator=(const Self& ); //purposely not implemented
00090 
00091 };
00092 
00093 } // end namespace itk
00094 
00095 #ifndef ITK_MANUAL_INSTANTIATION
00096 #include "itkExponentialLimiterFunction.hxx"
00097 #endif
00098 
00099 #endif


Generated on 24-10-2011 for elastix by doxygen 1.7.4 elastix logo