itkScalarChanAndVeseDenseLevelSetImageFilter.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __itkScalarChanAndVeseDenseLevelSetImageFilter_h
00019 #define __itkScalarChanAndVeseDenseLevelSetImageFilter_h
00020
00021 #include "itkMultiphaseDenseFiniteDifferenceImageFilter.h"
00022 #include "itkRegionOfInterestImageFilter.h"
00023 #include "itkScalarChanAndVeseLevelSetFunction.h"
00024
00025 namespace itk
00026 {
00058 template < class TInputImage, class TFeatureImage, class TOutputImage,
00059 class TFunction=ScalarChanAndVeseLevelSetFunction< TInputImage, TFeatureImage >,
00060 class TSharedData=ITK_TYPENAME TFunction::SharedDataType >
00061 class ITK_EXPORT ScalarChanAndVeseDenseLevelSetImageFilter:
00062 public MultiphaseDenseFiniteDifferenceImageFilter< TInputImage, TFeatureImage, TOutputImage,
00063 TFunction >
00064 {
00065 public:
00066
00067 typedef ScalarChanAndVeseDenseLevelSetImageFilter Self;
00068 typedef MultiphaseDenseFiniteDifferenceImageFilter< TInputImage,
00069 TFeatureImage, TOutputImage, TFunction > Superclass;
00070 typedef SmartPointer<Self> Pointer;
00071 typedef SmartPointer<const Self> ConstPointer;
00072
00074 itkNewMacro( Self );
00075
00077 itkTypeMacro( ScalarChanAndVeseDenseLevelSetImageFilter,
00078 MultiphaseDenseFiniteDifferenceImageFilter );
00079
00080 itkStaticConstMacro( ImageDimension, unsigned int, TInputImage::ImageDimension );
00081
00083 typedef typename Superclass::InputImageType InputImageType;
00084 typedef typename Superclass::InputImagePointer InputImagePointer;
00085 typedef typename Superclass::InputPointType InputPointType;
00086 typedef typename Superclass::ValueType ValueType;
00087 typedef typename InputImageType::SpacingType InputSpacingType;
00088
00089 typedef TFeatureImage FeatureImageType;
00090 typedef typename FeatureImageType::Pointer FeatureImagePointer;
00091 typedef typename FeatureImageType::PixelType FeaturePixelType;
00092 typedef typename FeatureImageType::IndexType FeatureIndexType;
00093 typedef typename FeatureIndexType::IndexValueType FeatureIndexValueType;
00094 typedef typename FeatureImageType::RegionType FeatureRegionType;
00095
00097 typedef TOutputImage OutputImageType;
00098 typedef typename OutputImageType::IndexType IndexType;
00099 typedef typename OutputImageType::PixelType OutputPixelType;
00100
00101 typedef typename Superclass::TimeStepType TimeStepType;
00102 typedef typename Superclass::FiniteDifferenceFunctionType
00103 FiniteDifferenceFunctionType;
00104
00105 typedef TFunction FunctionType;
00106 typedef typename FunctionType::Pointer FunctionPointer;
00107
00108 typedef TSharedData SharedDataType;
00109 typedef typename SharedDataType::Pointer SharedDataPointer;
00110
00111 typedef RegionOfInterestImageFilter<
00112 FeatureImageType, FeatureImageType > ROIFilterType;
00113 typedef typename ROIFilterType::Pointer ROIFilterPointer;
00114
00115 #ifdef ITK_USE_CONCEPT_CHECKING
00116
00117 itkConceptMacro(OutputHasNumericTraitsCheck,
00118 (Concept::HasNumericTraits<OutputPixelType>) );
00119
00121 #endif
00122
00125 virtual void SetFeatureImage( const FeatureImagePointer f )
00126 {
00127 this->SetInput( f );
00128 }
00129
00130 protected:
00131 ScalarChanAndVeseDenseLevelSetImageFilter()
00132 {
00133 this->m_SharedData = SharedDataType::New();
00134 }
00135 ~ScalarChanAndVeseDenseLevelSetImageFilter(){}
00136
00137 SharedDataPointer m_SharedData;
00138
00139 virtual void Initialize();
00140 virtual void InitializeIteration();
00141
00142 private:
00143 ScalarChanAndVeseDenseLevelSetImageFilter(const Self&);
00144 void operator=(const Self&);
00145 };
00146
00147 }
00148
00149 #ifndef ITK_MANUAL_INSTANTIATION
00150 #include "itkScalarChanAndVeseDenseLevelSetImageFilter.txx"
00151 #endif
00152
00153 #endif
00154