Orfeo Toolbox  3.16
itkGeodesicActiveContourShapePriorLevelSetFunction.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Insight Segmentation & Registration Toolkit
4  Module: $RCSfile: itkGeodesicActiveContourShapePriorLevelSetFunction.h,v $
5  Language: C++
6  Date: $Date: 2008-12-21 19:13:12 $
7  Version: $Revision: 1.5 $
8 
9  Copyright (c) Insight Software Consortium. All rights reserved.
10  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
11 
12  This software is distributed WITHOUT ANY WARRANTY; without even
13  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14  PURPOSE. See the above copyright notices for more information.
15 
16 =========================================================================*/
17 #ifndef __itkGeodesicActiveContourShapePriorLevelSetFunction_h
18 #define __itkGeodesicActiveContourShapePriorLevelSetFunction_h
19 
21 
22 namespace itk {
23 
90 template <class TImageType, class TFeatureImageType = TImageType>
92  : public ShapePriorSegmentationLevelSetFunction<TImageType, TFeatureImageType>
93 {
94 public:
101  typedef TFeatureImageType FeatureImageType;
102 
104  itkNewMacro(Self);
105 
109 
111  typedef typename Superclass::ImageType ImageType;
119 
121  itkStaticConstMacro(ImageDimension, unsigned int,
122  Superclass::ImageDimension);
123 
125  virtual void CalculateSpeedImage();
126 
128  virtual void CalculateAdvectionImage();
129 
131  virtual ScalarValueType CurvatureSpeed(const NeighborhoodType & neighborhood,
132  const FloatOffsetType & offset, GlobalDataStruct *gd ) const
133  { return PropagationSpeed( neighborhood, offset, gd ); }
134 
137  void SetDerivativeSigma( const double v )
138  { m_DerivativeSigma = v; }
139  double GetDerivativeSigma()
140  { return m_DerivativeSigma; }
141 
142  virtual void Initialize(const RadiusType &r)
143  {
144  Superclass::Initialize(r);
145 
146  this->SetAdvectionWeight( NumericTraits<ScalarValueType>::One );
147  this->SetPropagationWeight( NumericTraits<ScalarValueType>::One );
148  this->SetCurvatureWeight( NumericTraits<ScalarValueType>::One );
149  this->SetShapePriorWeight( NumericTraits<ScalarValueType>::One );
150  }
151 
152 protected:
154  {
155  this->SetAdvectionWeight( NumericTraits<ScalarValueType>::One );
156  this->SetPropagationWeight( NumericTraits<ScalarValueType>::One );
157  this->SetCurvatureWeight( NumericTraits<ScalarValueType>::One );
158  this->SetShapePriorWeight( NumericTraits<ScalarValueType>::One );
159 
160  m_DerivativeSigma = 1.0;
161  }
162 
164 
165  GeodesicActiveContourShapePriorLevelSetFunction(const Self&); //purposely not implemented
166  void operator=(const Self&); //purposely not implemented
167 
168  void PrintSelf(std::ostream& os, Indent indent) const
169  {
170  Superclass::PrintSelf(os, indent );
171  os << indent << "DerivativeSigma: " << m_DerivativeSigma << std::endl;
172  }
173 
174 private:
176 
177 };
178 
179 } // end namespace itk
180 
181 #ifndef ITK_MANUAL_INSTANTIATION
183 #endif
184 
185 #endif

Generated at Sat Feb 2 2013 23:39:05 for Orfeo Toolbox with doxygen 1.8.1.1