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
00024
00056 namespace itk
00057 {
00058 template < class TInputImage, class TFeatureImage, class TOutputImage, class TFunction,
00059 class TSharedData >
00060 class ITK_EXPORT ScalarChanAndVeseDenseLevelSetImageFilter:
00061 public MultiphaseDenseFiniteDifferenceImageFilter< TInputImage, TFeatureImage, TOutputImage,
00062 TFunction >
00063 {
00064 public:
00065
00066 typedef ScalarChanAndVeseDenseLevelSetImageFilter Self;
00067 typedef MultiphaseDenseFiniteDifferenceImageFilter< TInputImage,
00068 TFeatureImage, TOutputImage, TFunction > Superclass;
00069 typedef SmartPointer<Self> Pointer;
00070 typedef SmartPointer<const Self> ConstPointer;
00071
00073 itkNewMacro( Self );
00074
00076 itkTypeMacro( ScalarChanAndVeseDenseLevelSetImageFilter,
00077 MultiphaseDenseFiniteDifferenceImageFilter );
00078
00079 itkStaticConstMacro( ImageDimension, unsigned int, TInputImage::ImageDimension );
00080
00082 typedef typename Superclass::InputImageType InputImageType;
00083 typedef typename Superclass::InputImagePointer InputImagePointer;
00084 typedef typename Superclass::InputPointType InputPointType;
00085 typedef typename Superclass::ValueType ValueType;
00086 typedef typename InputImageType::SpacingType InputSpacingType;
00087
00088 typedef TFeatureImage FeatureImageType;
00089 typedef typename FeatureImageType::Pointer FeatureImagePointer;
00090 typedef typename FeatureImageType::PixelType FeaturePixelType;
00091 typedef typename FeatureImageType::IndexType FeatureIndexType;
00092 typedef typename FeatureIndexType::IndexValueType FeatureIndexValueType;
00093 typedef typename FeatureImageType::RegionType FeatureRegionType;
00094
00096 typedef TOutputImage OutputImageType;
00097 typedef typename OutputImageType::IndexType IndexType;
00098 typedef typename OutputImageType::PixelType OutputPixelType;
00099
00100 typedef typename Superclass::TimeStepType TimeStepType;
00101 typedef typename Superclass::FiniteDifferenceFunctionType
00102 FiniteDifferenceFunctionType;
00103
00104 typedef TFunction FunctionType;
00105 typedef typename FunctionType::Pointer FunctionPointer;
00106
00107 typedef TSharedData SharedDataType;
00108 typedef typename SharedDataType::Pointer SharedDataPointer;
00109
00110 typedef RegionOfInterestImageFilter<
00111 FeatureImageType, FeatureImageType > ROIFilterType;
00112 typedef typename ROIFilterType::Pointer ROIFilterPointer;
00113
00114 #ifdef ITK_USE_CONCEPT_CHECKING
00115
00116 itkConceptMacro(OutputHasNumericTraitsCheck,
00117 (Concept::HasNumericTraits<OutputPixelType>) );
00118
00120 #endif
00121
00124 virtual void SetFeatureImage( const FeatureImagePointer f )
00125 {
00126 this->SetInput( f );
00127 }
00128
00129 protected:
00130 ScalarChanAndVeseDenseLevelSetImageFilter()
00131 {
00132 this->m_SharedData = SharedDataType::New();
00133 }
00134 ~ScalarChanAndVeseDenseLevelSetImageFilter(){}
00135
00136 SharedDataPointer m_SharedData;
00137
00138 virtual void Initialize();
00139 virtual void InitializeIteration();
00140
00141 private:
00142 ScalarChanAndVeseDenseLevelSetImageFilter(const Self&);
00143 void operator=(const Self&);
00144 };
00145
00146 }
00147
00148 #ifndef ITK_MANUAL_INSTANTIATION
00149 #include "itkScalarChanAndVeseDenseLevelSetImageFilter.txx"
00150 #endif
00151
00152 #endif
00153