#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 internal 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 [31].
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 77 of file itkDeformableSimplexMesh3DFilter.h.
Public Types | |
using | BinaryOutput = Image<unsigned char, 3> |
using | CellsContainerIterator = typename InputMeshType::CellsContainer::Iterator |
using | CellsContainerPointer = typename InputMeshType::CellsContainerPointer |
using | ConstPointer = SmartPointer<const Self> |
using | CovariantVectorType = CovariantVector<typename VectorType::ValueType, 3> |
using | GeometryMapIterator = typename GeometryMapType::Iterator |
using | GeometryMapPointer = typename GeometryMapType::Pointer |
using | GeometryMapType = typename InputMeshType::GeometryMapType |
using | GradientImagePointer = typename GradientImageType::Pointer |
using | GradientImageSizeType = typename GradientImageType::SizeType |
using | GradientImageType = Image<GradientType, 3> |
using | GradientIndexType = typename GradientImageType::IndexType |
using | GradientIndexValueType = typename GradientIndexType::IndexValueType |
using | GradientPixelType = typename GradientImageType::PixelType |
using | GradientType = CovariantVector<PixelType, 3> |
using | IndexSetIterator = typename IndexSetType::iterator |
using | IndexSetType = std::set<IdentifierType> |
using | InputMeshPointer = typename InputMeshType::Pointer |
using | InputMeshType = TInputMesh |
using | InputNeighbors = typename InputMeshType::NeighborListType |
using | InputNeighborsIterator = typename InputMeshType::NeighborListType::iterator |
using | InputPointsContainer = typename InputMeshType::PointsContainer |
using | InputPointsContainerConstIterator = typename InputMeshType::PointsContainer::ConstIterator |
using | InputPointsContainerPointer = typename InputMeshType::PointsContainerPointer |
using | MagnitudeOutput = Image<float, 3> |
using | MeshPointType = typename InputMeshType::PointType |
using | NeighborSetIterator = typename NeighborSetType::iterator |
using | NeighborSetType = std::set<IdentifierType> |
using | OutputMeshPointer = typename OutputMeshType::Pointer |
using | OutputMeshType = TOutputMesh |
using | PixelType = typename InputMeshType::PixelType |
using | Pointer = SmartPointer<Self> |
using | PointType = typename SimplexMeshGeometry::PointType |
using | Self = DeformableSimplexMesh3DFilter |
using | Superclass = MeshToMeshFilter<TInputMesh, TOutputMesh> |
using | VectorType = typename PointType::VectorType |
using | VertexNeighborListType = itk::MapContainer<IdentifierType, NeighborSetType> |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | InputMeshPointer = typename InputMeshType::Pointer |
using | InputMeshType = TInputMesh |
using | OutputMeshPointer = typename OutputMeshType::Pointer |
using | OutputMeshType = TOutputMesh |
using | Pointer = SmartPointer<Self> |
using | Self = MeshToMeshFilter |
using | Superclass = MeshSource<TOutputMesh> |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | DataObjectIdentifierType = Superclass::DataObjectIdentifierType |
using | DataObjectPointer = DataObject::Pointer |
using | OutputMeshPointer = typename OutputMeshType::Pointer |
using | OutputMeshType = TOutputMesh |
using | Pointer = SmartPointer<Self> |
using | Self = MeshSource |
using | Superclass = ProcessObject |
using | DataObjectPointerArraySizeType = ProcessObject::DataObjectPointerArraySizeType |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | DataObjectIdentifierType = DataObject::DataObjectIdentifierType |
using | DataObjectPointer = DataObject::Pointer |
using | DataObjectPointerArray = std::vector<DataObjectPointer> |
using | DataObjectPointerArraySizeType = DataObjectPointerArray::size_type |
using | MultiThreaderType = MultiThreaderBase |
using | NameArray = std::vector<DataObjectIdentifierType> |
using | Pointer = SmartPointer<Self> |
using | Self = ProcessObject |
using | Superclass = Object |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | Pointer = SmartPointer<Self> |
using | Self = Object |
using | Superclass = LightObject |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | Pointer = SmartPointer<Self> |
using | Self = LightObject |
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 {} |
![]() | |
TimeStamp | m_OutputInformationMTime {} |
bool | m_Updating {} |
![]() | |
std::atomic< int > | m_ReferenceCount {} |
Additional Inherited Members | |
![]() | |
static Pointer | New () |
![]() | |
static Pointer | New () |
![]() | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool val) |
![]() | |
static void | BreakOnError () |
static Pointer | New () |
![]() | |
template<typename TSourceObject> | |
static void | MakeRequiredOutputs (TSourceObject &sourceObject, const DataObjectPointerArraySizeType numberOfRequiredOutputs) |
static constexpr float | progressFixedToFloat (uint32_t fixed) |
static uint32_t | progressFloatToFixed (float f) |
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::BinaryOutput = Image<unsigned char, 3> |
Definition at line 115 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::CellsContainerIterator = typename InputMeshType::CellsContainer::Iterator |
Definition at line 130 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::CellsContainerPointer = typename InputMeshType::CellsContainerPointer |
Definition at line 129 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::ConstPointer = SmartPointer<const Self> |
Definition at line 90 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::CovariantVectorType = CovariantVector<typename VectorType::ValueType, 3> |
Definition at line 109 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GeometryMapIterator = typename GeometryMapType::Iterator |
Definition at line 142 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GeometryMapPointer = typename GeometryMapType::Pointer |
Definition at line 141 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GeometryMapType = typename InputMeshType::GeometryMapType |
Definition at line 140 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GradientImagePointer = typename GradientImageType::Pointer |
Definition at line 118 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GradientImageSizeType = typename GradientImageType::SizeType |
Definition at line 122 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GradientImageType = Image<GradientType, 3> |
Definition at line 114 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GradientIndexType = typename GradientImageType::IndexType |
Definition at line 119 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GradientIndexValueType = typename GradientIndexType::IndexValueType |
Definition at line 121 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GradientPixelType = typename GradientImageType::PixelType |
Definition at line 120 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GradientType = CovariantVector<PixelType, 3> |
Image and Image iterator definition.
Definition at line 113 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::IndexSetIterator = typename IndexSetType::iterator |
Definition at line 138 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::IndexSetType = std::set<IdentifierType> |
Definition at line 135 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::InputMeshPointer = typename InputMeshType::Pointer |
Definition at line 125 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::InputMeshType = TInputMesh |
Some type alias.
Definition at line 99 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::InputNeighbors = typename InputMeshType::NeighborListType |
Definition at line 131 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::InputNeighborsIterator = typename InputMeshType::NeighborListType::iterator |
Definition at line 132 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::InputPointsContainer = typename InputMeshType::PointsContainer |
Definition at line 103 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::InputPointsContainerConstIterator = typename InputMeshType::PointsContainer::ConstIterator |
Definition at line 104 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::InputPointsContainerPointer = typename InputMeshType::PointsContainerPointer |
Definition at line 102 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::MagnitudeOutput = Image<float, 3> |
Definition at line 116 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::MeshPointType = typename InputMeshType::PointType |
Definition at line 128 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::NeighborSetIterator = typename NeighborSetType::iterator |
Definition at line 137 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::NeighborSetType = std::set<IdentifierType> |
Definition at line 134 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::OutputMeshPointer = typename OutputMeshType::Pointer |
Definition at line 126 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::OutputMeshType = TOutputMesh |
Definition at line 100 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::PixelType = typename InputMeshType::PixelType |
Definition at line 110 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::Pointer = SmartPointer<Self> |
Smart pointer type alias support
Definition at line 89 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::PointType = typename SimplexMeshGeometry::PointType |
Other definitions.
Definition at line 107 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::Self = DeformableSimplexMesh3DFilter |
Standard "Self" type alias.
Definition at line 83 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::Superclass = MeshToMeshFilter<TInputMesh, TOutputMesh> |
Standard "Superclass" type alias.
Definition at line 86 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::VectorType = typename PointType::VectorType |
Definition at line 108 of file itkDeformableSimplexMesh3DFilter.h.
using itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::VertexNeighborListType = itk::MapContainer<IdentifierType, NeighborSetType> |
Definition at line 136 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
Referenced by ITK_DISALLOW_COPY_AND_MOVE(), and itkOverrideGetNameOfClassMacro().
|
overrideprotecteddefault |
|
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. Computes the model displacement according to image gradient forces. Passes in the gradient image, to avoid inner loop calls to GetGradient().
Reimplemented in itk::DeformableSimplexMesh3DBalloonForceFilter< TInputMesh, TOutputMesh >, and 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
|
overrideprotectedvirtual |
This method causes the filter to generate its output.
Reimplemented from itk::ProcessObject.
const GradientImageType * itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::GetGradient | ( | ) | const |
Set/Get the gradient image as an input.
|
protectedvirtual |
Initializes the data structures necessary for mesh deformation with the values from the passed input mesh.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::ITK_DISALLOW_COPY_AND_MOVE | ( | DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh > | ) |
References DeformableSimplexMesh3DFilter().
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkGetConstMacro | ( | Alpha | , |
double | ) |
Set/Get internal force scaling factor.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkGetConstMacro | ( | Beta | , |
double | ) |
Set/Get external force scaling factor.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkGetConstMacro | ( | Damping | , |
double | ) |
Set/Get reference metrics update scaling factor.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkGetConstMacro | ( | Gamma | , |
double | ) |
Set/Get reference metrics update scaling factor.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkGetConstMacro | ( | ImageDepth | , |
int | ) |
Get the width, height and depth of image.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkGetConstMacro | ( | ImageHeight | , |
int | ) |
Get the width, height and depth of image.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkGetConstMacro | ( | ImageWidth | , |
int | ) |
Get the width, height and depth of image.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkGetConstMacro | ( | Iterations | , |
int | ) |
Set/Get the number of iterations for the deformation process.
Referenced by itk::DeformableSimplexMesh3DGradientConstraintForceFilter< TInputMesh, TOutputMesh >::GetRange().
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkGetConstMacro | ( | Rigidity | , |
unsigned int | ) |
Set/Get the mesh smoothness value.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkGetConstMacro | ( | Step | , |
int | ) |
Get the current iteration number.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkGetModifiableObjectMacro | ( | Data | , |
GeometryMapType | ) |
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkNewMacro | ( | Self | ) |
Method of creation through the object factory.
Referenced by itk::DeformableSimplexMesh3DGradientConstraintForceFilter< TInputMesh, TOutputMesh >::CreateAnother().
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkOverrideGetNameOfClassMacro | ( | DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh > | ) |
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkSetMacro | ( | Alpha | , |
double | ) |
Set/Get internal force scaling factor.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkSetMacro | ( | Beta | , |
double | ) |
Set/Get external force scaling factor.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkSetMacro | ( | Damping | , |
double | ) |
Set/Get reference metrics update scaling factor.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkSetMacro | ( | Gamma | , |
double | ) |
Set/Get reference metrics update scaling factor.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkSetMacro | ( | Iterations | , |
int | ) |
Set/Get the number of iterations for the deformation process.
Referenced by itk::DeformableSimplexMesh3DGradientConstraintForceFilter< TInputMesh, TOutputMesh >::SetRange().
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkSetMacro | ( | Rigidity | , |
unsigned int | ) |
Set/Get the mesh smoothness value.
itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::itkSetObjectMacro | ( | Data | , |
GeometryMapType | ) |
|
protected |
L function implemented following the paper of Delingette
|
overrideprotectedvirtual |
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::LightObject.
Reimplemented in itk::DeformableSimplexMesh3DGradientConstraintForceFilter< TInputMesh, TOutputMesh >.
void itk::DeformableSimplexMesh3DFilter< TInputMesh, TOutputMesh >::SetGradient | ( | const GradientImageType * | gradientImage | ) |
Set/Get the gradient image as an input.
|
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 274 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 282 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
Definition at line 291 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
map stores a Geometry object for every mesh point
Definition at line 320 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
Gamma influences 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 290 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
Image size
Definition at line 312 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
Image size
Definition at line 309 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
Image size
Definition at line 306 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
This threshold decides when to stop the model.
Definition at line 315 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 constraint. The higher the rigidity the higher the smoothness.
Definition at line 299 of file itkDeformableSimplexMesh3DFilter.h.
|
protected |
Number of iterations
Definition at line 303 of file itkDeformableSimplexMesh3DFilter.h.