itkScalarChanAndVeseLevelSetFunction.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 __itkScalarChanAndVeseLevelSetFunction_h
00019 #define __itkScalarChanAndVeseLevelSetFunction_h
00020
00021 #include "itkScalarRegionBasedLevelSetFunction.h"
00022
00023 namespace itk {
00024
00065 template < class TInputImage,
00066 class TFeatureImage,
00067 class TSharedData >
00068 class ITK_EXPORT ScalarChanAndVeseLevelSetFunction
00069 : public ScalarRegionBasedLevelSetFunction< TInputImage, TFeatureImage, TSharedData >
00070 {
00071 public:
00072 typedef ScalarChanAndVeseLevelSetFunction Self;
00073 typedef ScalarRegionBasedLevelSetFunction<
00074 TInputImage, TFeatureImage, TSharedData > Superclass;
00075 typedef SmartPointer<Self> Pointer;
00076 typedef SmartPointer<const Self> ConstPointer;
00077
00079 itkNewMacro(Self);
00080
00082 itkTypeMacro( ScalarChanAndVeseLevelSetFunction, ScalarLevelSetFunction );
00083
00084 itkStaticConstMacro( ImageDimension, unsigned int, TFeatureImage::ImageDimension );
00085
00086 typedef TInputImage InputImageType;
00087 typedef typename Superclass::InputImageConstPointer InputImageConstPointer;
00088 typedef typename Superclass::InputImagePointer InputImagePointer;
00089 typedef typename Superclass::InputPixelType InputPixelType;
00090 typedef typename Superclass::InputIndexType InputIndexType;
00091 typedef typename Superclass::InputIndexValueType InputIndexValueType;
00092 typedef typename Superclass::InputSizeType InputSizeType;
00093 typedef typename Superclass::InputSizeValueType InputSizeValueType;
00094 typedef typename Superclass::InputRegionType InputRegionType;
00095 typedef typename Superclass::InputPointType InputPointType;
00096
00097 typedef TFeatureImage FeatureImageType;
00098 typedef typename FeatureImageType::ConstPointer FeatureImageConstPointer;
00099 typedef typename Superclass::FeaturePixelType FeaturePixelType;
00100 typedef typename Superclass::FeatureIndexType FeatureIndexType;
00101 typedef typename Superclass::FeatureOffsetType FeatureOffsetType;
00102
00103 typedef typename Superclass::ScalarValueType ScalarValueType;
00104 typedef typename Superclass::NeighborhoodType NeighborhoodType;
00105 typedef typename Superclass::FloatOffsetType FloatOffsetType;
00106 typedef typename Superclass::RadiusType RadiusType;
00107 typedef typename Superclass::TimeStepType TimeStepType;
00108 typedef typename Superclass::GlobalDataStruct GlobalDataStruct;
00109 typedef typename Superclass::PixelType PixelType;
00110 typedef typename Superclass::VectorType VectorType;
00111
00112 typedef typename Superclass::SharedDataType SharedDataType;
00113 typedef typename Superclass::SharedDataPointer SharedDataPointer;
00114
00115 typedef typename Superclass::ImageIteratorType ImageIteratorType;
00116 typedef typename Superclass::ConstImageIteratorType ConstImageIteratorType;
00117 typedef typename Superclass::FeatureImageIteratorType FeatureImageIteratorType;
00118 typedef typename Superclass::ConstFeatureIteratorType ConstFeatureIteratorType;
00119
00120 typedef typename Superclass::ListPixelType ListPixelType;
00121 typedef typename Superclass::ListPixelConstIterator ListPixelConstIterator;
00122 typedef typename Superclass::ListPixelIterator ListPixelIterator;
00123 typedef typename Superclass::ListImageType ListImageType;
00124
00125 protected:
00126 ScalarChanAndVeseLevelSetFunction() : Superclass() {}
00127 ~ScalarChanAndVeseLevelSetFunction(){}
00128
00129 void ComputeParameters();
00130 void UpdateSharedDataParameters();
00131
00132 ScalarValueType ComputeInternalTerm( const FeaturePixelType& iValue,
00133 const FeatureIndexType& iIdx );
00134
00135 ScalarValueType ComputeExternalTerm( const FeaturePixelType& iValue,
00136 const FeatureIndexType& iIdx );
00137
00138 void UpdateSharedDataInsideParameters( const unsigned int& iId,
00139 const FeaturePixelType& iVal, const ScalarValueType& iChange );
00140 void UpdateSharedDataOutsideParameters( const unsigned int& iId,
00141 const FeaturePixelType& iVal, const ScalarValueType& iChange );
00142
00143 private:
00144 ScalarChanAndVeseLevelSetFunction(const Self&);
00145 void operator=(const Self&);
00146 };
00147
00148 }
00149
00150 #ifndef ITK_MANUAL_INSTANTIATION
00151 #include "itkScalarChanAndVeseLevelSetFunction.txx"
00152 #endif
00153
00154 #endif
00155