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