ITK
4.4.0
Insight Segmentation and Registration Toolkit
|
#include <itkDeformableSimplexMesh3DFilter.h>
Three-dimensional deformable model for image segmentation.
DeformableSimplexMesh3DFilter is a discrete three-dimensional deformable model, which can be used to deform a 3-D SimplexMesh.
The mesh deformation is constrained by internal forces. The interal force can be scaled via SetAlpha (typical values are 0.01 < alpha < 0.3). The external force is derived from the image one wants to delineate. Therefore an image of type GradientImageType needs to be set by calling SetGradientImage(...). The external forces are scaled via SetBeta (typical values are 0.01 < beta < 1). One still needs to play around with these values.
To control the smoothness of the mesh a rigidity parameter can be adjusted. Low values (1 or 0) allow areas with high curvature. Higher values (around 7 or 8) will make the mesh smoother.
By setting the gamma parameter the regularity of the mesh is controlled. Low values (< 0.03) produce more regular mesh. Higher values ( 0.3 < gamma < 0.2) will allow to move the vertices to regions of higher curvature.
This approach for segmentation follows that of Delingette et al. (1997).
This filter currently assumes that the spacing of the input image is 1.
The user has to set the number of iterations for mesh evolution.
Definition at line 76 of file itkDeformableSimplexMesh3DFilter.h.
Public Member Functions | |
virtual ::itk::LightObject::Pointer | CreateAnother (void) const |
virtual double | GetAlpha () const |
virtual double | GetBeta () const |
virtual double | GetDamping () const |
virtual const GeometryMapType * | GetData () const |
virtual double | GetGamma () const |
const GradientImageType * | GetGradient () const |
virtual GeometryMapType * | GetModifiableData () |
virtual const char * | GetNameOfClass () const |
virtual unsigned int | GetRigidity () const |
virtual int | GetStep () const |
virtual void | SetAlpha (double _arg) |
virtual void | SetBeta (double _arg) |
virtual void | SetDamping (double _arg) |
virtual void | SetData (GeometryMapType *_arg) |
virtual void | SetGamma (double _arg) |
void | SetGradient (const GradientImageType *gradientImage) |
virtual void | SetRigidity (unsigned int _arg) |
virtual void | SetIterations (int _arg) |
virtual int | GetIterations () const |
virtual int | GetImageWidth () const |
virtual int | GetImageHeight () const |
virtual int | GetImageDepth () const |
Public Member Functions inherited from itk::MeshToMeshFilter< TInputMesh, TOutputMesh > | |
const InputMeshType * | GetInput (void) const |
const InputMeshType * | GetInput (unsigned int idx) const |
void | SetInput (const InputMeshType *input) |
Public Member Functions inherited from itk::MeshSource< TOutputMesh > | |
OutputMeshType * | GetOutput (void) |
OutputMeshType * | GetOutput (unsigned int idx) |
virtual void | GraftNthOutput (unsigned int idx, DataObject *output) |
virtual void | GraftOutput (const DataObjectIdentifierType &key, DataObject *output) |
void | SetOutput (TOutputMesh *output) |
virtual void | GraftOutput (DataObject *output) |
virtual DataObjectPointer | MakeOutput (DataObjectPointerArraySizeType idx) |
Public Member Functions inherited from itk::ProcessObject | |
virtual void | AbortGenerateDataOff () |
virtual void | AbortGenerateDataOn () |
virtual void | EnlargeOutputRequestedRegion (DataObject *) |
virtual const bool & | GetAbortGenerateData () |
NameArray | GetInputNames () const |
MultiThreader * | GetMultiThreader () const |
DataObjectPointerArraySizeType | GetNumberOfIndexedInputs () const |
DataObjectPointerArraySizeType | GetNumberOfInputs () const |
DataObjectPointerArraySizeType | GetNumberOfOutputs () const |
virtual DataObjectPointerArraySizeType | GetNumberOfValidRequiredInputs () const |
NameArray | GetOutputNames () const |
virtual const float & | GetProgress () |
NameArray | GetRequiredInputNames () const |
bool | HasInput (const DataObjectIdentifierType &key) const |
bool | HasOutput (const DataObjectIdentifierType &key) const |
virtual DataObjectPointer | MakeOutput (const DataObjectIdentifierType &) |
virtual void | PrepareOutputs () |
virtual void | PropagateRequestedRegion (DataObject *output) |
virtual void | ResetPipeline () |
virtual void | SetAbortGenerateData (bool _arg) |
virtual void | SetProgress (float _arg) |
virtual void | Update () |
virtual void | UpdateLargestPossibleRegion () |
virtual void | UpdateOutputData (DataObject *output) |
virtual void | UpdateOutputInformation () |
void | UpdateProgress (float amount) |
DataObjectPointerArray | GetInputs () |
DataObjectPointerArray | GetOutputs () |
DataObjectPointerArray | GetIndexedInputs () |
DataObjectPointerArray | GetIndexedOutputs () |
DataObjectPointerArraySizeType | GetNumberOfIndexedOutputs () const |
virtual void | SetReleaseDataFlag (bool flag) |
virtual bool | GetReleaseDataFlag () const |
void | ReleaseDataFlagOn () |
void | ReleaseDataFlagOff () |
virtual void | SetReleaseDataBeforeUpdateFlag (bool _arg) |
virtual const bool & | GetReleaseDataBeforeUpdateFlag () |
virtual void | ReleaseDataBeforeUpdateFlagOn () |
virtual void | ReleaseDataBeforeUpdateFlagOff () |
virtual void | SetNumberOfThreads (ThreadIdType _arg) |
virtual const ThreadIdType & | GetNumberOfThreads () |
Public Member Functions inherited from itk::Object | |
unsigned long | AddObserver (const EventObject &event, Command *) |
unsigned long | AddObserver (const EventObject &event, Command *) const |
virtual void | DebugOff () const |
virtual void | DebugOn () const |
Command * | GetCommand (unsigned long tag) |
bool | GetDebug () const |
MetaDataDictionary & | GetMetaDataDictionary (void) |
const MetaDataDictionary & | GetMetaDataDictionary (void) const |
virtual ModifiedTimeType | GetMTime () const |
virtual const TimeStamp & | GetTimeStamp () const |
bool | HasObserver (const EventObject &event) const |
void | InvokeEvent (const EventObject &) |
void | InvokeEvent (const EventObject &) const |
virtual void | Modified () const |
virtual void | Register () const |
void | RemoveAllObservers () |
void | RemoveObserver (unsigned long tag) |
void | SetDebug (bool debugFlag) const |
void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
virtual void | SetReferenceCount (int) |
virtual void | UnRegister () const |
Public Member Functions inherited from itk::LightObject | |
virtual void | Delete () |
virtual int | GetReferenceCount () const |
itkCloneMacro (Self) | |
void | Print (std::ostream &os, Indent indent=0) const |
Static Public Member Functions | |
static Pointer | New () |
Static Public Member Functions inherited from itk::MeshToMeshFilter< TInputMesh, TOutputMesh > | |
static Pointer | New () |
Static Public Member Functions inherited from itk::MeshSource< TOutputMesh > | |
static Pointer | New () |
Protected Attributes | |
double | m_Alpha |
double | m_Beta |
double | m_Damping |
GeometryMapPointer | m_Data |
double | m_Gamma |
int | m_ImageDepth |
int | m_ImageHeight |
int | m_ImageWidth |
int | m_Iterations |
unsigned int | m_Rigidity |
int | m_Step |
Additional Inherited Members | |
Protected Types inherited from itk::LightObject | |
typedef int | InternalReferenceCountType |
typedef Image< unsigned char, 3 > itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::BinaryOutput |
Definition at line 112 of file itkDeformableSimplexMesh3DFilter.h.
typedef InputMeshType::CellsContainer::Iterator itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::CellsContainerIterator |
Definition at line 127 of file itkDeformableSimplexMesh3DFilter.h.
typedef InputMeshType::CellsContainerPointer itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::CellsContainerPointer |
Definition at line 126 of file itkDeformableSimplexMesh3DFilter.h.
typedef SmartPointer< const Self > itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::ConstPointer |
Definition at line 87 of file itkDeformableSimplexMesh3DFilter.h.
typedef CovariantVector< typename VectorType::ValueType, 3 > itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::CovariantVectorType |
Definition at line 106 of file itkDeformableSimplexMesh3DFilter.h.
typedef GeometryMapType::Iterator itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GeometryMapIterator |
Definition at line 139 of file itkDeformableSimplexMesh3DFilter.h.
typedef GeometryMapType::Pointer itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GeometryMapPointer |
Definition at line 138 of file itkDeformableSimplexMesh3DFilter.h.
typedef InputMeshType::GeometryMapType itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GeometryMapType |
Definition at line 137 of file itkDeformableSimplexMesh3DFilter.h.
typedef GradientImageType::Pointer itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GradientImagePointer |
Definition at line 115 of file itkDeformableSimplexMesh3DFilter.h.
typedef GradientImageType::SizeType itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GradientImageSizeType |
Definition at line 119 of file itkDeformableSimplexMesh3DFilter.h.
typedef Image< GradientType, 3 > itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GradientImageType |
Definition at line 111 of file itkDeformableSimplexMesh3DFilter.h.
typedef GradientImageType::IndexType itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GradientIndexType |
Definition at line 116 of file itkDeformableSimplexMesh3DFilter.h.
typedef GradientIndexType::IndexValueType itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GradientIndexValueType |
Definition at line 118 of file itkDeformableSimplexMesh3DFilter.h.
typedef GradientImageType::PixelType itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GradientPixelType |
Definition at line 117 of file itkDeformableSimplexMesh3DFilter.h.
typedef CovariantVector< PixelType, 3 > itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GradientType |
Image and Image iterator definition.
Definition at line 110 of file itkDeformableSimplexMesh3DFilter.h.
typedef IndexSetType::iterator itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::IndexSetIterator |
Definition at line 135 of file itkDeformableSimplexMesh3DFilter.h.
typedef std::set< IdentifierType > itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::IndexSetType |
Definition at line 132 of file itkDeformableSimplexMesh3DFilter.h.
typedef InputMeshType::Pointer itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::InputMeshPointer |
Definition at line 122 of file itkDeformableSimplexMesh3DFilter.h.
typedef TInputMesh itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::InputMeshType |
Some typedefs.
Definition at line 93 of file itkDeformableSimplexMesh3DFilter.h.
typedef InputMeshType::NeighborListType itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::InputNeighbors |
Definition at line 128 of file itkDeformableSimplexMesh3DFilter.h.
typedef InputMeshType::NeighborListType::iterator itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::InputNeighborsIterator |
Definition at line 129 of file itkDeformableSimplexMesh3DFilter.h.
typedef InputMeshType::PointsContainer itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::InputPointsContainer |
Definition at line 100 of file itkDeformableSimplexMesh3DFilter.h.
typedef InputMeshType::PointsContainer::ConstIterator itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::InputPointsContainerConstIterator |
Definition at line 101 of file itkDeformableSimplexMesh3DFilter.h.
typedef InputMeshType::PointsContainerPointer itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::InputPointsContainerPointer |
Definition at line 99 of file itkDeformableSimplexMesh3DFilter.h.
typedef Image< float, 3 > itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::MagnitudeOutput |
Definition at line 113 of file itkDeformableSimplexMesh3DFilter.h.
typedef InputMeshType::PointType itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::MeshPointType |
Definition at line 125 of file itkDeformableSimplexMesh3DFilter.h.
typedef NeighborSetType::iterator itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::NeighborSetIterator |
Definition at line 134 of file itkDeformableSimplexMesh3DFilter.h.
typedef std::set< IdentifierType > itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::NeighborSetType |
Definition at line 131 of file itkDeformableSimplexMesh3DFilter.h.
typedef OutputMeshType::Pointer itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::OutputMeshPointer |
Definition at line 123 of file itkDeformableSimplexMesh3DFilter.h.
typedef TOutputMesh itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::OutputMeshType |
Definition at line 97 of file itkDeformableSimplexMesh3DFilter.h.
typedef InputMeshType::PixelType itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::PixelType |
Definition at line 107 of file itkDeformableSimplexMesh3DFilter.h.
typedef SmartPointer< Self > itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::Pointer |
Smart pointer typedef support
Definition at line 86 of file itkDeformableSimplexMesh3DFilter.h.
typedef SimplexMeshGeometry::PointType itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::PointType |
Other definitions.
Definition at line 104 of file itkDeformableSimplexMesh3DFilter.h.
typedef DeformableSimplexMesh3DFilter itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::Self |
Standard "Self" typedef.
Definition at line 80 of file itkDeformableSimplexMesh3DFilter.h.
typedef MeshToMeshFilter< TInputMesh, TOutputMesh > itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::Superclass |
Standard "Superclass" typedef.
Definition at line 83 of file itkDeformableSimplexMesh3DFilter.h.
typedef PointType::VectorType itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::VectorType |
Definition at line 105 of file itkDeformableSimplexMesh3DFilter.h.
typedef itk::MapContainer< IdentifierType, NeighborSetType > itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::VertexNeighborListType |
Definition at line 133 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
|
protected |
|
protected |
|
protected |
Method computes the barycentric coordinates of the passed point
|
protectedvirtual |
Computes the displacement of each point. Therefore internal and external forces are computed and multiplied by the constants (alpha and beta) set by the user.
|
protectedvirtual |
Compute the external force component Pass in the gradient image, to avoid inner loop calls to GetGradient()
Reimplemented in itk::DeformableSimplexMesh3DGradientConstraintForceFilter< TInputMesh, TOutputMesh >.
|
protectedvirtual |
Compute geometric properties like curvature and normals, which are necessary for the computation of the internal force components for each point of the mesh.
|
protectedvirtual |
Compute the internal force component
|
protectedvirtual |
At the and of the deformation the output mesh is created by creating a new mesh
|
virtual |
Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.
Reimplemented from itk::MeshToMeshFilter< TInputMesh, TOutputMesh >.
Reimplemented in itk::DeformableSimplexMesh3DGradientConstraintForceFilter< TInputMesh, TOutputMesh >.
|
protectedvirtual |
This method causes the filter to generate its output.
Reimplemented from itk::ProcessObject.
|
virtual |
Get internal force scaling factor
|
virtual |
Get external force scaling factor
|
virtual |
Get reference metrics update scaling factor
|
virtual |
|
virtual |
Get reference metrics update scaling factor
const GradientImageType* itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GetGradient | ( | ) | const |
Getter for gradient image
|
virtual |
Width, height and depth of image
|
virtual |
Width, height and depth of image
|
virtual |
Width, height and depth of image
|
virtual |
Set number of iterations for deformation process
|
virtual |
|
virtual |
Run-time type information (and related methods).
Reimplemented from itk::MeshToMeshFilter< TInputMesh, TOutputMesh >.
Reimplemented in itk::DeformableSimplexMesh3DGradientConstraintForceFilter< TInputMesh, TOutputMesh >, and itk::DeformableSimplexMesh3DBalloonForceFilter< TInputMesh, TOutputMesh >.
|
virtual |
control smoothness of the mesh
|
virtual |
current iteration number
|
protectedvirtual |
Initializes the datastructures necessary for mesh deformation with the values from the passed input mesh.
|
protected |
L function implemented following the paper of Delingette
|
static |
Method of creation through the object factory.
|
protected |
|
protectedvirtual |
Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.
Reimplemented from itk::MeshSource< TOutputMesh >.
Reimplemented in itk::DeformableSimplexMesh3DGradientConstraintForceFilter< TInputMesh, TOutputMesh >.
|
virtual |
Set scalar factor for internal force
|
virtual |
Set external force scaling factor
|
virtual |
Set reference metrics update scaling factor
|
virtual |
|
virtual |
Set reference metrics update scaling factor
void itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::SetGradient | ( | const GradientImageType * | gradientImage | ) |
Routines. Set/Get routines. Setter for gradient image
|
virtual |
Set number of iterations for deformation process
|
virtual |
control smoothness of the mesh
|
protectedvirtual |
Method updates the reference metrics for each mesh point
|
protected |
Parameters definitions. Scalar defining the influence of the internal forces Values should lie between 0.001 and 0.3. Higher values increase the stiffness of the mesh
Definition at line 275 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
Scalar defining the influence of the external force components The choice for this parameter strongly depends on the underlying data. Typical value range from 0.00001 to 0.3
Definition at line 283 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
Definition at line 292 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
map stores a Geometry object for every mesh point
Definition at line 321 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
Gamma influneces the distribution of the mesh points. It should lie between 0.01 and 0.2. Smaller values force the mesh to be more regular. When increasing gamma, mesh points will have higher density in places of high curvature.
Definition at line 291 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
Image size
Definition at line 313 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
Image size
Definition at line 310 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
Image size
Definition at line 307 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
This threshold decides when to stop the model.
Definition at line 316 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
This scalar determines the smoothness of the surface model. Values should range from 0 to 10. It determines the radius of the neighborhood during internal force computation using the curvature shape contraint. The higher the rigidity the higher the smoothness.
Definition at line 300 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
Number of iterations
Definition at line 304 of file itkDeformableSimplexMesh3DFilter.h.