17 #ifndef __itkFastMarchingImageFilter_h
18 #define __itkFastMarchingImageFilter_h
23 #include "vnl/vnl_math.h"
103 class TSpeedImage = Image<float,::itk::GetImageDimension<TLevelSet>::ImageDimension> >
140 { this->NodeType::operator=(node);
return *
this; }
153 itkStaticConstMacro(SetDimension,
unsigned int,
154 LevelSetType::SetDimension);
155 itkStaticConstMacro(SpeedImageDimension,
unsigned int,
156 SpeedImageType::ImageDimension);
177 m_AlivePoints = points;
184 return m_AlivePoints;
191 m_TrialPoints = points;
198 return m_TrialPoints;
210 void SetSpeedConstant(
double value )
212 m_SpeedConstant = value;
213 m_InverseSpeed = -1.0 * vnl_math_sqr( 1.0 / m_SpeedConstant );
218 itkGetConstReferenceMacro( SpeedConstant,
double );
224 itkSetMacro( NormalizationFactor,
double );
225 itkGetConstMacro( NormalizationFactor,
double );
230 itkSetMacro( StoppingValue,
double );
233 itkGetConstReferenceMacro( StoppingValue,
double );
239 itkSetMacro( CollectPoints,
bool );
242 itkGetConstReferenceMacro( CollectPoints,
bool );
243 itkBooleanMacro( CollectPoints );
251 return m_ProcessedPoints;
261 { m_OutputRegion = size; }
263 {
return m_OutputRegion.GetSize(); }
264 itkSetMacro( OutputRegion, OutputRegionType );
265 itkGetConstReferenceMacro( OutputRegion, OutputRegionType );
266 itkSetMacro( OutputSpacing, OutputSpacingType );
267 itkGetConstReferenceMacro( OutputSpacing, OutputSpacingType );
268 itkSetMacro( OutputDirection, OutputDirectionType );
269 itkGetConstReferenceMacro( OutputDirection, OutputDirectionType );
270 itkSetMacro( OutputOrigin, OutputPointType );
271 itkGetConstReferenceMacro( OutputOrigin, OutputPointType );
272 itkSetMacro( OverrideOutputInformation,
bool );
273 itkGetConstReferenceMacro( OverrideOutputInformation,
bool );
274 itkBooleanMacro( OverrideOutputInformation );
276 #ifdef ITK_USE_CONCEPT_CHECKING
292 void PrintSelf( std::ostream& os,
Indent indent )
const;
294 virtual void Initialize( LevelSetImageType * );
295 virtual void UpdateNeighbors(
const IndexType& index,
296 const SpeedImageType *, LevelSetImageType * );
297 virtual double UpdateValue(
const IndexType& index,
298 const SpeedImageType *, LevelSetImageType * );
302 {
return m_NodesUsed[idx]; }
307 virtual void GenerateOutputInformation();
308 virtual void EnlargeOutputRequestedRegion(
DataObject *output);
326 void operator=(
const Self&);
355 typedef std::priority_queue< AxisNodeType, HeapContainer, NodeComparer >
366 #ifndef ITK_MANUAL_INSTANTIATION