ITK
4.9.0
Insight Segmentation and Registration Toolkit
|
#include <itkCuberilleImageToMeshFilter.h>
This filter uses the 'cuberille' method to convert an implicit surface (image) to a mesh.
The 'cuberille' model was proposed over 30 years ago [1,2]. A basic summary of the algorithm is as follows: step over all pixels, for each pixel determine if it lies on the surface, center a cube on the surface pixel, create quadrilateral faces aligned with the cube (taking care of neighbouring pixels also on the surface), use a gradient descent based method to project cube vertices to iso-surface [3].
(Required) IsoSurfaceValue: specifies the value of the iso-surface for which to generate the mesh. Pixels equal to or greater than this value are considered to lie on the surface or inside the resultant mesh.
(Optional) GenerateTriangleFaces: specifies whether triangle or quadrilateral faces should be generated. The default is to generate triangle faces.
(Optional) ProjectVerticesToIsoSurface: specifies whether the vertices should be projected onto the iso-surface. If projection is disabled, the resultant mesh exhibits the traditional blocky features. Projection takes roughly half of the algorithm time. The default is to project the vertices.
(Optional) ProjectVertexSurfaceDistanceThreshold: specifies the threshold for the 'distance' from iso-surface during vertex projection. Note that the distance is actually measured in pixel value units (not space). The smaller this value, the closer the vertices will be to the iso-surface. Small values result in longer convergence time (i.e. slower). Values are clamped to the range [0.0, max pixel value]. The default value is 0.5.
(Optional) ProjectVertexStepLength: specifies the threshold for the step length during vertex projection. The smaller this value, the more likely the vertices will end up closer to the surface. Small values cause the projection to take longer to converge. Values are clamped to the range [0.0, large]. The default value is max spacing * 0.25 (expressed in physical space).
(Optional) ProjectVertexStepLengthRelaxationFactor: specifies the step length relaxation factor during vertex projection. The step length is multiplied by this factor each iteration to allow convergence. Values are clamped to the range [0.0, 1.0].The default value is 0.95.
(Optional) ProjectVertexMaximumNumberOfSteps: specifies the maximum number of steps used during vertex projection. The default value is 50.
This implementation was taken from the Insight Journal: http://hdl.handle.net/10380/3186
Definition at line 114 of file itkCuberilleImageToMeshFilter.h.
Classes | |
class | VertexLookupMap |
class | VertexLookupNode |
Static Public Member Functions | |
static Pointer | New () |
Static Public Member Functions inherited from itk::MeshSource< TOutputMesh > | |
static Pointer | New () |
Static Public Member Functions inherited from itk::Object | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool flag) |
Static Public Member Functions inherited from itk::LightObject | |
static void | BreakOnError () |
static Pointer | New () |
Private Types | |
typedef VertexLookupMap < OutputMeshType > | VertexLookupMapType |
Private Member Functions | |
CuberilleImageToMeshFilter (const Self &) | |
void | operator= (const Self &) |
void | ComputeGradientImage () |
void | SetVerticesFromFace (unsigned int face, bool *vertexHasQuad) |
IndexType | GetVertexLookupIndex (unsigned int vertex, IndexType index) |
void | ProjectVertexToIsoSurface (PointType &vertex) |
void | AddVertex (PointIdentifier &id, IndexType index, const InputImageType *image, OutputMeshType *mesh) |
void | AddQuadFace (CellIdentifier &id, PointIdentifier f[4], OutputMeshType *mesh) |
Additional Inherited Members | |
Protected Attributes inherited from itk::ProcessObject | |
TimeStamp | m_OutputInformationMTime |
bool | m_Updating |
Protected Attributes inherited from itk::LightObject | |
AtomicInt< int > | m_ReferenceCount |
typedef OutputMeshType::CellIdentifier itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::CellIdentifier |
Definition at line 141 of file itkCuberilleImageToMeshFilter.h.
typedef CellInterface<OutputPixelType, CellTraits> itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::CellInterfaceType |
Definition at line 142 of file itkCuberilleImageToMeshFilter.h.
typedef OutputMeshType::CellsContainer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::CellsContainer |
Definition at line 139 of file itkCuberilleImageToMeshFilter.h.
typedef OutputMeshType::CellsContainerPointer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::CellsContainerPointer |
Definition at line 138 of file itkCuberilleImageToMeshFilter.h.
typedef OutputMeshType::CellTraits itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::CellTraits |
Definition at line 135 of file itkCuberilleImageToMeshFilter.h.
typedef SmartPointer<const Self> itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::ConstPointer |
Definition at line 121 of file itkCuberilleImageToMeshFilter.h.
typedef GradientFilterType::Pointer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::GradientFilterPointer |
Definition at line 171 of file itkCuberilleImageToMeshFilter.h.
typedef GradientImageFilter< InputImageType > itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::GradientFilterType |
Definition at line 169 of file itkCuberilleImageToMeshFilter.h.
typedef GradientImageType::Pointer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::GradientImagePointer |
Definition at line 173 of file itkCuberilleImageToMeshFilter.h.
typedef GradientFilterType::OutputImageType itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::GradientImageType |
Definition at line 172 of file itkCuberilleImageToMeshFilter.h.
typedef GradientInterpolatorType::Pointer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::GradientInterpolatorPointer |
Definition at line 176 of file itkCuberilleImageToMeshFilter.h.
typedef itk::VectorLinearInterpolateImageFunction< GradientImageType > itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::GradientInterpolatorType |
Definition at line 175 of file itkCuberilleImageToMeshFilter.h.
typedef GradientFilterType::OutputPixelType itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::GradientPixelType |
Definition at line 174 of file itkCuberilleImageToMeshFilter.h.
typedef InputImageType::IndexType itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::IndexType |
Definition at line 157 of file itkCuberilleImageToMeshFilter.h.
typedef InputImageType::ConstPointer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::InputImageConstPointer |
Definition at line 152 of file itkCuberilleImageToMeshFilter.h.
typedef ConstShapedNeighborhoodIterator< InputImageType > itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::InputImageIteratorType |
Other convenient typedefs.
Definition at line 165 of file itkCuberilleImageToMeshFilter.h.
typedef InputImageType::Pointer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::InputImagePointer |
Definition at line 151 of file itkCuberilleImageToMeshFilter.h.
typedef TInputImage itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::InputImageType |
Definition at line 150 of file itkCuberilleImageToMeshFilter.h.
typedef InputImageType::PixelType itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::InputPixelType |
Definition at line 153 of file itkCuberilleImageToMeshFilter.h.
typedef InterpolatorType::OutputType itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::InterpolatorOutputType |
Definition at line 162 of file itkCuberilleImageToMeshFilter.h.
typedef InterpolatorType::Pointer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::InterpolatorPointer |
Definition at line 161 of file itkCuberilleImageToMeshFilter.h.
typedef TInterpolator itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::InterpolatorType |
Definition at line 160 of file itkCuberilleImageToMeshFilter.h.
typedef OutputMeshType::Pointer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::OutputMeshPointer |
Definition at line 131 of file itkCuberilleImageToMeshFilter.h.
typedef OutputMeshType::MeshTraits itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::OutputMeshTraits |
Definition at line 132 of file itkCuberilleImageToMeshFilter.h.
typedef TOutputMesh itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::OutputMeshType |
Some convenient typedefs.
Definition at line 127 of file itkCuberilleImageToMeshFilter.h.
typedef OutputMeshTraits::PixelType itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::OutputPixelType |
Definition at line 134 of file itkCuberilleImageToMeshFilter.h.
typedef OutputMeshType::PointType itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::OutputPointType |
Definition at line 133 of file itkCuberilleImageToMeshFilter.h.
typedef SmartPointer<Self> itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::Pointer |
Definition at line 120 of file itkCuberilleImageToMeshFilter.h.
typedef OutputMeshType::PointIdentifier itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::PointIdentifier |
Definition at line 140 of file itkCuberilleImageToMeshFilter.h.
typedef OutputMeshType::PointsContainer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::PointsContainer |
Definition at line 137 of file itkCuberilleImageToMeshFilter.h.
typedef OutputMeshType::PointsContainerPointer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::PointsContainerPointer |
Definition at line 136 of file itkCuberilleImageToMeshFilter.h.
typedef OutputMeshType::PointType itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::PointType |
Definition at line 158 of file itkCuberilleImageToMeshFilter.h.
typedef QuadrilateralCellType::SelfAutoPointer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::QuadrilateralAutoPointer |
Definition at line 147 of file itkCuberilleImageToMeshFilter.h.
typedef QuadrilateralCellType::CellAutoPointer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::QuadrilateralCellAutoPointer |
Definition at line 148 of file itkCuberilleImageToMeshFilter.h.
typedef QuadrilateralCell<CellInterfaceType> itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::QuadrilateralCellType |
Definition at line 146 of file itkCuberilleImageToMeshFilter.h.
typedef CuberilleImageToMeshFilter itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::Self |
Standard "Self" typedef.
Definition at line 118 of file itkCuberilleImageToMeshFilter.h.
typedef InputImageType::SizeType itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::SizeType |
Definition at line 154 of file itkCuberilleImageToMeshFilter.h.
typedef InputImageType::SpacingType itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::SpacingType |
Definition at line 155 of file itkCuberilleImageToMeshFilter.h.
typedef InputImageType::SpacingValueType itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::SpacingValueType |
Definition at line 156 of file itkCuberilleImageToMeshFilter.h.
typedef ImageToMeshFilter< TInputImage, TOutputMesh > itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::Superclass |
Definition at line 119 of file itkCuberilleImageToMeshFilter.h.
typedef TriangleCellType::SelfAutoPointer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::TriangleAutoPointer |
Definition at line 144 of file itkCuberilleImageToMeshFilter.h.
typedef TriangleCellType::CellAutoPointer itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::TriangleCellAutoPointer |
Definition at line 145 of file itkCuberilleImageToMeshFilter.h.
typedef TriangleCell<CellInterfaceType> itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::TriangleCellType |
Definition at line 143 of file itkCuberilleImageToMeshFilter.h.
|
private |
Some convenient typedefs.
Definition at line 335 of file itkCuberilleImageToMeshFilter.h.
|
protected |
|
protected |
|
private |
|
inlineprivate |
Private functions to implement the algorithm.
|
inlineprivate |
Private functions to implement the algorithm.
|
inlineprivate |
Private functions to implement the algorithm.
|
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::MeshSource< TOutputMesh >.
|
protectedvirtual |
This method causes the filter to generate its output.
Reimplemented from itk::ProcessObject.
|
inlineprotectedvirtual |
Prepare the output
Reimplemented from itk::ImageToMeshFilter< TInputImage, TOutputMesh >.
Definition at line 248 of file itkCuberilleImageToMeshFilter.h.
|
virtual |
Get/set whether triangle or quadrilateral faces should be generated. True = triangle faces, False = quadrilateral faces. Default = true (triangle faces).
|
virtual |
Get/set whether triangle or quadrilateral faces should be generated. True = triangle faces, False = quadrilateral faces. Default = true (triangle faces).
|
virtual |
Get/set whether triangle or quadrilateral faces should be generated. True = triangle faces, False = quadrilateral faces. Default = true (triangle faces).
|
virtual |
Get/set the iso-surface value. This parameter specifies the value of the iso-surface for which to generate the mesh. Pixels equal to or less than this value are considered on the surface or inside the resultant mesh.
|
virtual |
Run-time type information (and related methods).
Reimplemented from itk::ImageToMeshFilter< TInputImage, TOutputMesh >.
|
virtual |
Get/set the maximum number of steps used during vertex projection. Default = 50.
|
virtual |
Get/set the the initial step length for vertex projection. Values are clamped to the range [0.0, large]. Default = max spacing * 0.25 (expressed in physical space).
|
virtual |
Get/set the step length relaxation factor during vertex projection. The step length is multiplied by this factor each iteration to allow convergence. Values are clamped to the range [0.0, 1.0]. Default = 0.95.
|
virtual |
Get/set the threshold for the "distance" from iso-surface during vertex projection. Note that the distance is actually measured in pixel value units (not space). The smaller this value, the closer the vertices will be to the iso-surface. Small values result in longer convergence time (i.e. slower). Values are clamped to the range [0.0, max pixel value]. Default = 0.5.
|
virtual |
Get/set whether the vertices should be project to the iso-surface. Default = true.
|
inlineprivate |
Private functions to implement the algorithm.
itk::CuberilleImageToMeshFilter< TInputImage, TOutputMesh, TInterpolator >::itkGetObjectMacro | ( | Interpolator | , |
InterpolatorType | |||
) |
Get/set interpolate function.
|
static |
Method for creation through the object factory.
|
private |
|
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 >.
|
inlineprivate |
Private functions to implement the algorithm.
|
virtual |
Get/set whether the vertices should be project to the iso-surface. Default = true.
|
virtual |
Get/set whether the vertices should be project to the iso-surface. Default = true.
|
virtual |
Get/set whether triangle or quadrilateral faces should be generated. True = triangle faces, False = quadrilateral faces. Default = true (triangle faces).
|
virtual |
|
virtual |
Get/set interpolate function.
|
virtual |
Get/set the iso-surface value. This parameter specifies the value of the iso-surface for which to generate the mesh. Pixels equal to or less than this value are considered on the surface or inside the resultant mesh.
|
virtual |
Get/set the maximum number of steps used during vertex projection. Default = 50.
|
virtual |
Get/set the the initial step length for vertex projection. Values are clamped to the range [0.0, large]. Default = max spacing * 0.25 (expressed in physical space).
|
virtual |
Get/set the step length relaxation factor during vertex projection. The step length is multiplied by this factor each iteration to allow convergence. Values are clamped to the range [0.0, 1.0]. Default = 0.95.
|
virtual |
Get/set the threshold for the "distance" from iso-surface during vertex projection. Note that the distance is actually measured in pixel value units (not space). The smaller this value, the closer the vertices will be to the iso-surface. Small values result in longer convergence time (i.e. slower). Values are clamped to the range [0.0, max pixel value]. Default = 0.5.
|
virtual |
Get/set whether the vertices should be project to the iso-surface. Default = true.
|
inlineprivate |
Private functions to implement the algorithm.
|
private |
Definition at line 350 of file itkCuberilleImageToMeshFilter.h.
|
private |
Definition at line 348 of file itkCuberilleImageToMeshFilter.h.
|
private |
Definition at line 347 of file itkCuberilleImageToMeshFilter.h.
|
private |
Definition at line 346 of file itkCuberilleImageToMeshFilter.h.
|
private |
Definition at line 349 of file itkCuberilleImageToMeshFilter.h.
|
private |
Definition at line 355 of file itkCuberilleImageToMeshFilter.h.
|
private |
Definition at line 353 of file itkCuberilleImageToMeshFilter.h.
|
private |
Definition at line 354 of file itkCuberilleImageToMeshFilter.h.
|
private |
Definition at line 352 of file itkCuberilleImageToMeshFilter.h.
|
private |
Definition at line 351 of file itkCuberilleImageToMeshFilter.h.