Commit fab66664 authored by Thomas Feuvrier's avatar Thomas Feuvrier
Browse files

Suppression d'ITK en interne (avant mise a jour de la version 3.0.0)

parent c3267189
# This is the root ITK CMakeLists file.
PROJECT(ITK)
#-----------------------------------------------------------------------------
# ITK version number. An even minor number corresponds to releases.
SET(ITK_VERSION_MAJOR "2")
SET(ITK_VERSION_MINOR "8")
SET(ITK_VERSION_PATCH "1")
# Version string should not include patch level. The major.minor is
# enough to distinguish available features of the toolkit.
SET(ITK_VERSION_STRING "${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}")
#-----------------------------------------------------------------------------
# Load some macros.
INCLUDE(${ITK_SOURCE_DIR}/Utilities/itkThirdParty.cmake)
#-----------------------------------------------------------------------------
# Configure files with settings for use by the build.
CONFIGURE_FILE(${ITK_SOURCE_DIR}/itkConfigure.h.in
${ITK_BINARY_DIR}/itkConfigure.h)
# Install some files.
#INSTALL_FILES(/lib/otb .cmake UseITK ITKConfig )
#-----------------------------------------------------------------------------
# Configure Dart testing support. This should be done before any
# MESSAGE(FATAL_ERROR ...) commands are invoked.
# INCLUDE(${CMAKE_ROOT}/Modules/Dart.cmake)
# MARK_AS_ADVANCED(TCL_TCLSH DART_ROOT)
# IF(BUILD_TESTING)
# ENABLE_TESTING()
# CONFIGURE_FILE(${ITK_SOURCE_DIR}/InsightLogo.gif
# ${ITK_BINARY_DIR}/Testing/HTML/TestingResults/Icons/Logo.gif
# COPYONLY IMMEDIATE)
# SET(BUILDNAME "${BUILDNAME}" CACHE STRING "Name of build on the dashboard")
# MARK_AS_ADVANCED(BUILDNAME)
# ENDIF(BUILD_TESTING)
# Deal with FFT v3 Options
MARK_AS_ADVANCED(USE_FFTWD)
OPTION(USE_FFTWD "Use double precision FFTW if found" OFF)
MARK_AS_ADVANCED(USE_FFTWF)
OPTION(USE_FFTWF "Use single precision FFTW if found" OFF)
IF( USE_FFTWD OR USE_FFTWF )
FIND_PACKAGE( FFTW )
ENDIF( USE_FFTWD OR USE_FFTWF )
# Deal with SGI SCSL Options
OPTION(USE_SCSL "Use the SGI SCSL High Performance Computing math library" OFF)
MARK_AS_ADVANCED(USE_SCSL)
IF( USE_SCSL )
FIND_PACKAGE( SCSL )
ENDIF( USE_SCSL )
# Put "." in the rpath of all ITK shared libraries.
LINK_DIRECTORIES(.)
#-----------------------------------------------------------------------------
# ITK build configuration options.
OPTION(BUILD_SHARED_LIBS "Build ITK with shared libraries." OFF)
SET(ITK_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
OPTION(ITK_CSWIG_TCL "Build cswig Tcl wrapper support (requires CableSwig)." OFF)
OPTION(ITK_CSWIG_PYTHON "Build cswig Python wrapper support (requires CableSwig)." OFF)
OPTION(ITK_CSWIG_JAVA "Build cswig Java wrapper support " OFF)
# Options for building some of the most common core templates explicitly only
# once. This has only been tested on gcc compilers.
OPTION(ITK_EXPLICIT_INSTANTIATION "BETA-Try to explicitly build some of the core templates explictitly rather than over and over again." OFF)
MARK_AS_ADVANCED(ITK_EXPLICIT_INSTANTIATION)
#IF( ITK_EXPLICIT_INSTANTIATION )
# ADD_DEFINITIONS(-DITK_EXPLICIT_INSTANTIATION)
#ENDIF( ITK_EXPLICIT_INSTANTIATION )
#-----------------------------------------------------------------------------
# ITK uses KWStyle for checking the coding style
OPTION(ITK_USE_KWSTYLE "Run KWStyle in order to check for violations of the coding standard." OFF)
MARK_AS_ADVANCED(ITK_USE_KWSTYLE)
IF(ITK_USE_KWSTYLE)
FIND_PROGRAM(KWSTYLE_EXECUTABLE
NAMES KWStyle
PATHS
/usr/local/bin
)
MARK_AS_ADVANCED(KWSTYLE_EXECUTABLE)
ADD_CUSTOM_COMMAND(
OUTPUT ${ITK_BINARY_DIR}/KWStyleReport.txt
COMMAND ${KWSTYLE_EXECUTABLE}
ARGS -xml ${ITK_BINARY_DIR}/ITK.kws.xml -o ${ITK_SOURCE_DIR}/Utilities/KWStyle/ITKOverwrite.txt -R -v -d ${ITK_SOURCE_DIR}
COMMENT "Coding Style Checker"
)
ADD_CUSTOM_TARGET(StyleCheck DEPENDS ${ITK_BINARY_DIR}/KWStyleReport.txt)
ENDIF(ITK_USE_KWSTYLE)
#-----------------------------------------------------------------------------
# ITK turn on concept checking
IF( NOT BORLAND )
OPTION(ITK_USE_CONCEPT_CHECKING "Turn on concept checking to give helpful errors at compile time if a type cannot be used as a template parameter." OFF)
MARK_AS_ADVANCED(ITK_USE_CONCEPT_CHECKING)
ELSE( NOT BORLAND )
SET(ITK_USE_CONCEPT_CHECKING OFF)
MARK_AS_ADVANCED(ITK_USE_CONCEPT_CHECKING)
ENDIF( NOT BORLAND )
# perl support does not work, contact bill hoffman at kitware
# if you are interested in perl wrapping. It is close, but
# not there yet.
#OPTION(ITK_CSWIG_PERL "Build cswig Perl wrapper support " OFF)
#-----------------------------------------------------------------------------
# ITK build patented algorithms
OPTION(ITK_USE_PATENTED "Build algorithms that are covered with Patents. It is YOUR responsibility to obtain a license from the patent holder in order to use these methods." ON)
MARK_AS_ADVANCED(ITK_USE_PATENTED)
#-----------------------------------------------------------------------------
# ITK build classes that are in the review process
OPTION(ITK_USE_REVIEW "Build algorithms that are candidates to be included in the Toolkit. This classes are not covered by the Backward Compatibility Policy, nor the Copyright Policy of ITK." OFF)
MARK_AS_ADVANCED(ITK_USE_REVIEW)
#-----------------------------------------------------------------------------
# Do we need CableSwig?
SET(ITK_NEED_CableSwig 0)
IF(ITK_CSWIG_TCL)
SET(ITK_NEED_CableSwig 1)
ENDIF(ITK_CSWIG_TCL)
IF(ITK_CSWIG_PYTHON)
SET(ITK_NEED_CableSwig 1)
ENDIF(ITK_CSWIG_PYTHON)
IF(ITK_CSWIG_JAVA)
SET(ITK_NEED_CableSwig 1)
ENDIF(ITK_CSWIG_JAVA)
IF(ITK_CSWIG_PERL)
SET(ITK_NEED_CableSwig 1)
ENDIF(ITK_CSWIG_PERL)
IF(ITK_NEED_CableSwig)
IF(NOT BUILD_SHARED_LIBS)
MESSAGE(FATAL_ERROR "Wrapping requires a shared build, change BUILD_SHARED_LIBS to ON")
ENDIF(NOT BUILD_SHARED_LIBS)
ENDIF(ITK_NEED_CableSwig)
#-----------------------------------------------------------------------------
# Find CableSwig if necessary.
IF(ITK_NEED_CableSwig)
IF(EXISTS ${ITK_SOURCE_DIR}/Utilities/CableSwig)
SET(CMAKE_MODULE_PATH ${ITK_SOURCE_DIR}/Utilities/CableSwig/SWIG/CMake)
# CableSwig is included in the source distribution.
SET(ITK_BUILD_CABLESWIG 1)
SET(CableSwig_DIR ${ITK_BINARY_DIR}/Utilities/CableSwig)
SET(CableSwig_FOUND 1)
SET(CableSwig_INSTALL_ROOT /lib/otb/CSwig)
INCLUDE(${CableSwig_DIR}/CableSwigConfig.cmake OPTIONAL)
ELSE(EXISTS ${ITK_SOURCE_DIR}/Utilities/CableSwig)
# CableSwig is not included in the source distribution. Find it.
FIND_PACKAGE(CableSwig)
SET(CMAKE_MODULE_PATH ${CableSwig_DIR}/SWIG/CMake)
# Hack for CMake 1.6 compatability.
IF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 1.7)
SET(CableSwig_FOUND ${CABLESWIG_FOUND})
SET(CableSwig_DIR ${CABLESWIG_DIR})
ENDIF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 1.7)
ENDIF(EXISTS ${ITK_SOURCE_DIR}/Utilities/CableSwig)
IF(NOT CableSwig_FOUND)
# We have not found CableSwig. Complain.
MESSAGE(FATAL_ERROR "CableSwig is required for CSwig Wrapping.")
ENDIF(NOT CableSwig_FOUND)
ENDIF(ITK_NEED_CableSwig)
#-----------------------------------------------------------------------------
# Copy the UseITK.cmake file to the binary tree for backward compatability.
CONFIGURE_FILE(${ITK_SOURCE_DIR}/UseITK.cmake.in
${ITK_BINARY_DIR}/UseITK.cmake COPYONLY IMMEDIATE)
# Create the ITKConfig.cmake file containing the ITK configuration.
INCLUDE (${ITK_SOURCE_DIR}/itkGenerateITKConfig.cmake)
# Install some files.
INSTALL_FILES(/include/otb/Utilities/ITK .h itkConfigure)
#INSTALL_FILES(/lib/InsightToolkit .cmake UseITK ITKLibraryDepends)
#-----------------------------------------------------------------------------
# Find wrapping language API libraries.
IF(ITK_CSWIG_TCL)
FIND_PACKAGE(TCL)
# Hide useless settings provided by FindTCL.
FOREACH(entry TCL_LIBRARY_DEBUG
TK_LIBRARY_DEBUG
TCL_STUB_LIBRARY
TCL_STUB_LIBRARY_DEBUG
TK_STUB_LIBRARY
TK_STUB_LIBRARY_DEBUG
TK_WISH)
SET(${entry} "${${entry}}" CACHE INTERNAL "This value is not used by ITK.")
ENDFOREACH(entry)
ENDIF(ITK_CSWIG_TCL)
IF(ITK_CSWIG_PYTHON)
INCLUDE(${CMAKE_ROOT}/Modules/FindPythonLibs.cmake)
FIND_PROGRAM(PYTHON_EXECUTABLE
NAMES python python2.3 python2.2 python2.1 python2.0 python1.6 python1.5
PATHS
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath]
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.2\\InstallPath]
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.1\\InstallPath]
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.0\\InstallPath]
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\1.6\\InstallPath]
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\1.5\\InstallPath]
)
MARK_AS_ADVANCED(PYTHON_EXECUTABLE)
ENDIF(ITK_CSWIG_PYTHON)
IF(ITK_CSWIG_JAVA)
FIND_PACKAGE(Java)
FIND_PACKAGE(JNI)
ENDIF(ITK_CSWIG_JAVA)
IF(ITK_CSWIG_PERL)
FIND_PACKAGE(Perl)
FIND_PACKAGE(PerlLibs)
ENDIF(ITK_CSWIG_PERL)
IF(WIN32)
IF(BUILD_SHARED_LIBS)
SET(ITK_COMMON_BUILD_TYPE "SHARED")
ELSE(BUILD_SHARED_LIBS)
SET(ITK_COMMON_BUILD_TYPE "STATIC")
ENDIF(BUILD_SHARED_LIBS)
SET(BUILD_SHARED_LIBS OFF)
ENDIF(WIN32)
OPTION(BUILD_EXAMPLES "Build the Examples directory." ON)
OPTION(ITK_USE_SYSTEM_VXL "Use an outside build of VXL." OFF)
MARK_AS_ADVANCED(ITK_USE_SYSTEM_VXL)
IF(ITK_USE_SYSTEM_VXL)
FIND_PACKAGE(VXL)
IF(VXL_FOUND)
INCLUDE(${VXL_CMAKE_DIR}/UseVXL.cmake)
SET(VXL_NUMERICS_LIBRARIES vnl vnl_algo netlib vcl)
ELSE(VXL_FOUND)
MESSAGE(FATAL_ERROR "Must set VXL_DIR for ITK_USE_SYSTEM_VXL.")
ENDIF(VXL_FOUND)
ELSE(ITK_USE_SYSTEM_VXL)
SET(VXL_NETLIB_INCLUDE_DIR ${ITK_SOURCE_DIR}/Utilities/vxl/v3p/netlib)
SET(VXL_NUMERICS_LIBRARIES itkvnl itkvnl_algo itknetlib itkvcl)
ENDIF(ITK_USE_SYSTEM_VXL)
IF(BORLAND)
SET(ITK_REQUIRED_CXX_FLAGS "${ITK_REQUIRED_CXX_FLAGS} -w- -whid -waus -wpar")
SET(ITK_REQUIRED_C_FLAGS "${ITK_REQUIRED_C_FLAGS} -w- -whid -waus -wpar")
ENDIF(BORLAND)
CONFIGURE_FILE(${ITK_SOURCE_DIR}/Utilities/KWStyle/ITK.kws.xml.in
${ITK_BINARY_DIR}/ITK.kws.xml)
# ITK_USE_SYSTEM_GDCM is provided so that you can use an installed or external
# version of gdcm. If its on, you must specify the variables
# Important: INCLUDE(${GDCM_USE_FILE}) *has* to be set after the
# INCLUDE_DIRECTORIES that sets all the include paths for ITK, otherwise
# if GDCM was build with VTK support, including it will bring the VTK
# include paths as well, and the wrong DICOMParser will be picked.
OPTION(ITK_USE_SYSTEM_GDCM "Use an outside build of GDCM." OFF)
MARK_AS_ADVANCED(ITK_USE_SYSTEM_GDCM)
IF(ITK_USE_SYSTEM_GDCM)
FIND_PACKAGE(GDCM)
IF(GDCM_FOUND)
INCLUDE(${GDCM_USE_FILE})
SET(ITK_GDCM_LIBRARIES gdcm)
ELSE(GDCM_FOUND)
MESSAGE(FATAL_ERROR "Must set GDCM_DIR for ITK_USE_SYSTEM_GDCM.")
ENDIF(GDCM_FOUND)
ELSE(ITK_USE_SYSTEM_GDCM)
SET(ITK_GDCM_LIBRARIES itkgdcm)
SET(GDCM_INCLUDE_DIR
${ITK_SOURCE_DIR}/Utilities/gdcm/src
)
ENDIF(ITK_USE_SYSTEM_GDCM)
# Provide options to use system versions of third-party libraries.
ITK_THIRD_PARTY_OPTION(ZLIB zlib)
ITK_THIRD_PARTY_OPTION(PNG png)
ITK_THIRD_PARTY_OPTION(TIFF tiff)
MARK_AS_ADVANCED(ITK_CSWIG_PYTHON)
MARK_AS_ADVANCED(ITK_CSWIG_TCL)
MARK_AS_ADVANCED(ITK_CSWIG_JAVA)
MARK_AS_ADVANCED(ITK_CSWIG_PERL)
MARK_AS_ADVANCED(CABLE_INDEX)
MARK_AS_ADVANCED(CSWIG)
MARK_AS_ADVANCED(GCCXML)
#-----------------------------------------------------------------------------
# Dispatch the build into the proper subdirectories.
SUBDIRS(Utilities Code)
# set a variable to determine if
# the Wrapping/CSwig directory should be used
SET(ITK_CSWIG_DIR 0)
IF(ITK_CSWIG_TCL)
SET(ITK_CSWIG_DIR 1)
ENDIF(ITK_CSWIG_TCL)
IF(ITK_CSWIG_PYTHON)
SET(ITK_CSWIG_DIR 1)
ENDIF(ITK_CSWIG_PYTHON)
IF(ITK_CSWIG_JAVA)
SET(ITK_CSWIG_DIR 1)
ENDIF(ITK_CSWIG_JAVA)
IF(ITK_CSWIG_DIR)
SUBDIRS(Wrapping/CSwig)
ENDIF(ITK_CSWIG_DIR)
#-----------------------------------------------------------------------------
# The entire ITK tree should use the same include path, except for the
# Wrapping directory.
# Create the list of include directories needed for ITK header files.
#INCLUDE(${ITK_SOURCE_DIR}/itkIncludeDirectories.cmake)
#SET(OTB_INCLUDE_DIRS_BUILD_TREE ${OTB_INCLUDE_DIRS_BUILD_TREE}
# ${ITK_INCLUDE_DIRS_BUILD_TREE})
# This should be the only INCLUDE_DIRECTORIES command in the entire
# tree, except for the Utilities and Wrapping directories. We need to
# do this in one place to make sure the order is correct.
INCLUDE_DIRECTORIES(
${ITK_INCLUDE_DIRS_BUILD_TREE}
${ITK_INCLUDE_DIRS_BUILD_TREE_CXX}
${ITK_INCLUDE_DIRS_SYSTEM}
)
ADD_LIBRARY(ITKAlgorithms
itkWatershedMiniPipelineProgressCommand.cxx
itkBioCellBase.cxx
itkBioCellularAggregateBase.cxx
itkBioGenome.cxx
itkBioGene.cxx
itkBioGeneNetwork.cxx
)
TARGET_LINK_LIBRARIES(ITKAlgorithms ITKNumerics ITKStatistics)
IF(USE_FFTWD)
#If FFTW is desired, then fftw3 and fftw3f will be required by any
#application using the ITKAlgorithms lib
TARGET_LINK_LIBRARIES(ITKAlgorithms ${FFTWD_LIB} )
ENDIF(USE_FFTWD)
IF(USE_FFTWF)
#If FFTW single precision is desired, then fftw3f will be required by any
#application using the ITKAlgorithms lib
TARGET_LINK_LIBRARIES(ITKAlgorithms ${FFTWF_LIB} )
ENDIF(USE_FFTWF)
IF(USE_SCSL)
#If SCSL is desired, then scs will be required by any
#application using the ITKAlgorithms lib
TARGET_LINK_LIBRARIES(ITKAlgorithms ${SCSL_LIB} )
ENDIF(USE_SCSL)
IF(ITK_LIBRARY_PROPERTIES)
SET_TARGET_PROPERTIES(ITKAlgorithms PROPERTIES ${ITK_LIBRARY_PROPERTIES})
ENDIF(ITK_LIBRARY_PROPERTIES)
INSTALL_TARGETS(/lib/otb ITKAlgorithms)
INSTALL_FILES(/include/otb/Utilities/ITK/Algorithms "(\\.h|\\.txx)$")
/*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: $RCSfile: itkAnisotropicFourthOrderLevelSetImageFilter.h,v $
Language: C++
Date: $Date: 2004/09/11 00:16:41 $
Version: $Revision: 1.6 $
Copyright (c) Insight Software Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef _itkAnisotropicFourthOrderLevelSetImageFilter_h_
#define _itkAnisotropicFourthOrderLevelSetImageFilter_h_
#include "itkLevelSetFunctionWithRefitTerm.h"
#include "itkSparseFieldFourthOrderLevelSetImageFilter.h"
namespace itk {
/**
* \class AnisotropicFourthOrderLevelSetImageFilter
*
* \brief This class implements the 4th-order level set anisotropic diffusion
* (smoothing) PDE.
*
* \par INPUT and OUTPUT
* This is a volume to volume filter; however, it is meant to process (smooth)
* surfaces. The input surface is an isosurface of the input volume. The
* isosurface value to be processed can be set by calling SetIsoSurfaceValue
* (default is 0). The output surface is the 0-isosurface of the output volume,
* regardless of the input isosurface value. To visualize the input/output
* surfaces to this filter a mesh extraction method such as marching cubes can
* be used.
*
* \par
* The 4th-order level set PDE framework is proposed as an alternative to 2nd
* order PDEs. By order we mean the order of differentiation of the level set
* image function required to compute derivatives for updating the image. For
* instance, the popular curvature flow uses 2nd-order derivatives of the level
* set image; hence, it is a 2nd order PDE.
*
* \par
* 2nd-order curvature flow can be used by itself to smooth surfaces as a
* post-processing filter or it can be used with other PDE terms such as a
* Canny edge term that attracts the surface to strong edges in a data
* image. Curvature flow smoothes surfaces by making the surface move in the
* direction that will decrease surface area.
*
* \par
* The 4th-order PDE framework provides an improvement over curvature
* flow. Instead of making the surface move to decrease surface area it makes
* the surface move to decrease total curvature. Similar to curvature flow,
* these PDEs can be used alone or in conjunction with data terms. The
* 4th-order PDE framework is implemented in
* SparseFieldFourthOrderLevelSetImageFilter. This filter class, which is
* derived from that, uses the 4th-order PDE by itself to implement an
* anisotropic surface smoothing algorithm. This is a feature preserving
* surface processing algorithm that smoothes surfaces but will preserve
* certain features (creases, edges, other sharp features) depending on the
* NormalProcessConductanceParameter.
*
* \par PARAMETERS
* As mentioned before, the IsoSurfaceValue parameter chooses which isosurface
* of the input to process. The MaxFilterIterations parameter determine the
* number of iterations for which this filter will run. The more iterations,
* the more smoothing. NormalProcessConductanceParameter controls the amount of
* feature preservation. Its units are in curvature. Reasonable values for
* almost all surface are in the range 0.1-0.25 . The shape of the surface
* where the total curvature is above the value of this parameter will tend to
* stay the same (be preserved) or even be sharpened. The lower the value, the more
* feature preservation. Notice the difference between the number of iterations
* parameter and the conductance parameter: for a given conductance parameter,
* surface features with high enough curvature will be preserved even if the
* number of iterations is set to be extremely large.
*/
template <class TInputImage, class TOutputImage>
class ITK_EXPORT AnisotropicFourthOrderLevelSetImageFilter
: public SparseFieldFourthOrderLevelSetImageFilter <TInputImage, TOutputImage>
{
public:
/** Standard class typedefs */
typedef AnisotropicFourthOrderLevelSetImageFilter Self;
typedef SparseFieldFourthOrderLevelSetImageFilter <TInputImage,
TOutputImage> Superclass;
typedef SmartPointer<Self> Pointer;
typedef SmartPointer<const Self> ConstPointer;
/** Run-time type information (and related methods) */
itkTypeMacro(AnisotropicFourthOrderLevelSetImageFilter,
SparseFieldFourthOrderLevelSetImageFilter);
/** Standard new macro */
itkNewMacro( Self );
/** The sparse image type used in LevelSetFunctionWithRefitTerm */
typedef typename Superclass::SparseImageType SparseImageType;
/** The level set function class with a refit term that forces the curvature
of the moving front to match a prescribed curvature image. */
typedef LevelSetFunctionWithRefitTerm <TOutputImage,SparseImageType> FunctionType;
/** The radius type for the neighborhoods. */
typedef typename FunctionType::RadiusType RadiusType;
itkGetMacro(MaxFilterIteration,unsigned int);
itkSetMacro(MaxFilterIteration,unsigned int);
protected:
AnisotropicFourthOrderLevelSetImageFilter();
~AnisotropicFourthOrderLevelSetImageFilter() {};
virtual void PrintSelf(std::ostream& os, Indent indent) const;
/** This filter halts when the iteration count reaches the specified count. */
virtual bool Halt()
{
if (this->GetElapsedIterations()==m_MaxFilterIteration) return true;
else return false;
}
private:
AnisotropicFourthOrderLevelSetImageFilter(const Self&);
//purposely not implemented
void operator=(const Self&); //purposely not implemented
/** The LevelSetFunctionWithRefitTerm object. */
typename FunctionType::Pointer m_Function;
/** The number of iterations for which this filter will run. */
unsigned int m_MaxFilterIteration;
};
} // end namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
#include "itkAnisotropicFourthOrderLevelSetImageFilter.txx"
#endif
#endif
/*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: $RCSfile: itkAnisotropicFourthOrderLevelSetImageFilter.txx,v $
Language: C++
Date: $Date: 2004/12/21 22:47:25 $
Version: $Revision: 1.5 $
Copyright (c) Insight Software Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef _itkAnisotropicFourthOrderLevelSetImageFilter_txx_
#define _itkAnisotropicFourthOrderLevelSetImageFilter_txx_
#include "itkAnisotropicFourthOrderLevelSetImageFilter.h"
namespace itk {
template <class TInputImage, class TOutputImage>
AnisotropicFourthOrderLevelSetImageFilter<TInputImage, TOutputImage>
::AnisotropicFourthOrderLevelSetImageFilter()
{
RadiusType radius;
for (unsigned int j=0; j<TInputImage::ImageDimension;j++)
{
radius[j] = 1;
}
m_Function=FunctionType::New();
this->SetLevelSetFunction(m_Function);
this->SetNumberOfLayers(this->GetMinimumNumberOfLayers());
// explicitly set other parameters
this->SetNormalProcessType (1); // anisotropic diffusion
this->SetNormalProcessConductance (0.2);
this->SetMaxNormalIteration(25);
this->SetMaxRefitIteration(100);
m_MaxFilterIteration = 1000;
m_Function->Initialize(radius);
}
template <class TInputImage, class TOutputImage>
void
AnisotropicFourthOrderLevelSetImageFilter<TInputImage, TOutputImage>
::PrintSelf(std::ostream& os, Indent indent) const
{
Superclass::PrintSelf(os, indent);
os << indent << "MaxFilterIteration: " << m_MaxFilterIteration << std::endl;
}
} // end namespace itk
#endif
/*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: $RCSfile: itkAntiAliasBinaryImageFilter.h,v $
Language: C++
Date: $Date: 2006/04/04 13:20:11 $
Version: $Revision: 1.13 $
Copyright (c) Insight Software Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __itkAntiAliasBinaryImageFilter_h_
#define __itkAntiAliasBinaryImageFilter_h_
#include "itkSparseFieldLevelSetImageFilter.h"
#include "itkCurvatureFlowFunction.h"