ITK  4.0.0
Insight Segmentation and Registration Toolkit
itkAnisotropicFourthOrderLevelSetImageFilter.h
Go to the documentation of this file.
00001 /*=========================================================================
00002  *
00003  *  Copyright Insight Software Consortium
00004  *
00005  *  Licensed under the Apache License, Version 2.0 (the "License");
00006  *  you may not use this file except in compliance with the License.
00007  *  You may obtain a copy of the License at
00008  *
00009  *         http://www.apache.org/licenses/LICENSE-2.0.txt
00010  *
00011  *  Unless required by applicable law or agreed to in writing, software
00012  *  distributed under the License is distributed on an "AS IS" BASIS,
00013  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  *  See the License for the specific language governing permissions and
00015  *  limitations under the License.
00016  *
00017  *=========================================================================*/
00018 #ifndef __itkAnisotropicFourthOrderLevelSetImageFilter_h
00019 #define __itkAnisotropicFourthOrderLevelSetImageFilter_h
00020 
00021 #include "itkSparseFieldFourthOrderLevelSetImageFilter.h"
00022 
00023 namespace itk
00024 {
00082 template< class TInputImage, class TOutputImage >
00083 class ITK_EXPORT AnisotropicFourthOrderLevelSetImageFilter:
00084   public SparseFieldFourthOrderLevelSetImageFilter< TInputImage, TOutputImage >
00085 {
00086 public:
00087 
00089   typedef AnisotropicFourthOrderLevelSetImageFilter Self;
00090   typedef SparseFieldFourthOrderLevelSetImageFilter< TInputImage,
00091                                                      TOutputImage > Superclass;
00092 
00093   typedef SmartPointer< Self >       Pointer;
00094   typedef SmartPointer< const Self > ConstPointer;
00095 
00097   itkTypeMacro(AnisotropicFourthOrderLevelSetImageFilter,
00098                SparseFieldFourthOrderLevelSetImageFilter);
00099 
00101   itkNewMacro(Self);
00102 
00104   typedef typename Superclass::SparseImageType SparseImageType;
00105 
00108   typedef LevelSetFunctionWithRefitTerm< TOutputImage, SparseImageType > FunctionType;
00109 
00111   typedef typename FunctionType::RadiusType RadiusType;
00112 
00113   itkGetConstMacro(MaxFilterIteration, unsigned int);
00114   itkSetMacro(MaxFilterIteration, unsigned int);
00115 protected:
00116   AnisotropicFourthOrderLevelSetImageFilter();
00117   ~AnisotropicFourthOrderLevelSetImageFilter() {}
00118   virtual void PrintSelf(std::ostream & os, Indent indent) const;
00119 
00121   virtual bool Halt()
00122   {
00123     if ( this->GetElapsedIterations() == m_MaxFilterIteration )
00124       {
00125       return true;
00126       }
00127     else
00128       {
00129       return false;
00130       }
00131   }
00133 
00134 private:
00135   AnisotropicFourthOrderLevelSetImageFilter(const Self &);
00136   //purposely not implemented
00137   void operator=(const Self &); //purposely not implemented
00138 
00140   typename FunctionType::Pointer m_Function;
00141 
00143   unsigned int m_MaxFilterIteration;
00144 };
00145 } // end namespace itk
00146 
00147 #ifndef ITK_MANUAL_INSTANTIATION
00148 #include "itkAnisotropicFourthOrderLevelSetImageFilter.hxx"
00149 #endif
00150 
00151 #endif
00152