Difference between revisions of "Mesh Discussion for Core 1"
From NAMIC Wiki
Line 50: | Line 50: | ||
# In the context of the brain: white matter segmentation, topology correction, mesh generation. | # In the context of the brain: white matter segmentation, topology correction, mesh generation. | ||
+ | |||
+ | |||
+ | |||
+ | = Status of the Mesh in ITK = | ||
+ | |||
+ | ==FEM framework== | ||
+ | |||
+ | * Not compliant with itkMesh (the FEM framework uses its own mesh). | ||
+ | |||
+ | ==itkMesh== | ||
+ | |||
+ | * n-manifold, same structure as VTKUnstructuredGrid (polygon soup + links from points to cells), | ||
+ | * no partitionning (ghost cells) => NO MULTITHREADING | ||
+ | * BuildLinks drawback: makes local topoligical operation's cost linear to global size | ||
+ | * Cell API gives possibility of K-Complex, possibility of boundary operator from n-dimensional cells to n-1 dimensional cells. | ||
+ | |||
+ | === filters: === | ||
+ | Segmentation framework | ||
+ | * itkBalloonForceFilter | ||
+ | * itkDeformableMesh3DFilter | ||
+ | others | ||
+ | * itkAutomaticTopologyMeshSource | ||
+ | * itkBinaryMask3DMeshSource | ||
+ | * itkBinaryMaskToNarrowBandPointSetFilter | ||
+ | * itkConnectedRegionsMeshFilter | ||
+ | * itkImageToParametricSpaceFilter | ||
+ | * itkInteriorExteriorMeshFilter | ||
+ | * itkParametricSpaceToImageSpaceMeshFilter | ||
+ | * itkRegularSphereMeshSource | ||
+ | * itkSphereMeshSource | ||
+ | * itkTransformMeshFilter | ||
+ | * itkVTKPolyDataReader [REVIEW] | ||
+ | * itkVTKPolyDataWriter [REVIEW] | ||
+ | * itkWarpMeshFilter | ||
+ | * itkConformalFlatteningMeshFilter (2) [REVIEW] | ||
+ | * itkTriangleMeshToBinaryImageFilter (2) | ||
+ | |||
+ | == itkSimplexMesh == | ||
+ | |||
+ | * Contributed by the German Cancer Research Center | ||
+ | * inherit from itkMesh | ||
+ | * 2 manifolds, simplex | ||
+ | * Some dedicated filters with temp arrays to avoid calling BuildLinks() and make the code faster. | ||
+ | * Being rewritten by leila | ||
+ | |||
+ | ===filters:=== | ||
+ | |||
+ | * itkDeformableSimplexMesh3DFilter | ||
+ | * itkSimplexMeshAdaptTopologyFilter | ||
+ | * itkSimplexMeshToTriangleMeshFilter | ||
+ | * itkTriangleMeshToSimplexMeshFilter | ||
+ | * itkDeformableSimplexMesh3D* (3) | ||
+ | * itkSimplexMeshVolumeCalculator | ||
+ | |||
+ | ==itkQuadEdgeMesh== | ||
+ | |||
+ | * inherit from itkMesh, API fully compatible. | ||
+ | * 2-manifold | ||
+ | * QuadEdge datastructure below (= C-GAL polyhedron + HalfEdges) | ||
+ | * Local operators, local (constant) cost. | ||
+ | |||
+ | ===Euler Operators available:=== | ||
+ | |||
+ | * itkQuadEdgeMeshEulerOperatorCreateCenterVertexFunction | ||
+ | * itkQuadEdgeMeshEulerOperatorDeleteCenterVertexFunction | ||
+ | * itkQuadEdgeMeshEulerOperatorFlipEdgeFunction | ||
+ | * itkQuadEdgeMeshEulerOperatorJoinFacetFunction | ||
+ | * itkQuadEdgeMeshEulerOperatorJoinVertexFunction | ||
+ | * itkQuadEdgeMeshEulerOperatorSplitEdgeFunction | ||
+ | * itkQuadEdgeMeshEulerOperatorSplitFacetFunction | ||
+ | * itkQuadEdgeMeshEulerOperatorSplitVertexFunction | ||
+ | * itkQuadEdgeMeshZipMeshFunction | ||
+ | |||
+ | ===filters:=== | ||
+ | |||
+ | * Djikstra (primal) / front (dual) [REVIEW] | ||
+ | * topology checker [REVIEW] | ||
+ | * Parameterization framework [INSIGHT-JOURNAL] | ||
+ | |||
+ | ==== for june's NAMIC project week: ==== | ||
+ | |||
+ | * Mutable priority Queue for geometry processing [READY] | ||
+ | * Delaunay conforming [READY] | ||
+ | * Normals [READY] | ||
+ | * Decimation [DEBUGGING] | ||
+ | * Discrete estimator of curvature (taubin) [DEBUGGING] | ||
+ | * smoothing [DEBUGGING] | ||
+ | |||
+ | ==== Ongoing project with luca antiga (2009~) ==== | ||
+ | * exact arithmetic kernel | ||
+ | * 2D and 3D delaunay | ||
+ | |||
+ | ==== Ongoing project with A. Gelas ==== | ||
+ | |||
+ | * implicit framework for Level Set and implicit surfaces (quadratic,Gaussian, RBF, partition of unity ...) | ||
+ | * reconstruction of surfaces from samples (stack of contours, point clouds | ||
+ | * implicit surface mesher | ||
+ | |||
+ | ==== Dreams ==== | ||
+ | |||
+ | * octree isosurface extraction with respect of sharp features | ||
+ | * CMAKization of TAUCS | ||
+ | * multithreading (partitioning) | ||
+ | |||
+ | =NEEDS= | ||
+ | * be able to change traits dynamically in a pipeline (itkMeshToMeshCopy | ||
+ | crashes when InputMeshType is different from OutputMeshType) | ||
+ | * smart way of copying mesh to mesh (container copy, not cell by cell ...) | ||
+ | * save / read meshes with additional informations (normals, ...) | ||
+ | * Multithread (include partitioning) | ||
+ | * arbitrary precision / exact geometric kernel | ||
+ | * (adaptive) 2D/3D meshing or remeshing |
Revision as of 18:02, 17 June 2008
Home < Mesh Discussion for Core 1Topics for discussion regarding Meshes in ITK.
Thursday, June 19th, 3-3:30pm ET
Participants:
- Will Schroeder,
- Luis Ibanez,
- Andrey Fedorov,
- Polina Golland,
- Thomas Yeo
- Alex Gouillard
Goal
- The goal is to figure out what's there and what needs to be done to make meshes usable for algorithm development.
Tools Needed
- Thomas: I am listing some tools that might be necessary for people working with meshes in ITK (the viewpoint is probably biased towards my needs). I might also be referring to meshes as representing surfaces depending on the contexts.
Registration
- Need to interpolate values residing on the vertices of a mesh onto a set of points (which could belong to another mesh). I can give more specific examples in my problems if clarifications needed.
- Given a point lying on a face (triangle/tetrahedron) of a mesh, compute the spatial gradient at that point, i.e., how will the interpolated value changes as the point position changes.
- Does ParametricSpaceToImageSpaceMeshFilter already accomplished this? Found this on the documentation page, but it's unclear if it doing point (1) above.
Mesh Parameterization
- Given a mesh, impose a parametric (e.g., planar, spherical) coordinate system. This is necessary for registration.
- Different possible metric for such a parametrization: metric distortion, conformal, etc.
Given a Mesh Representing a Surface
- Compute differential geometric properties, e.g., first and second fundamental forms (mean and gaussian curvature)
- For mesh representing cortical surface, computing sulcal depth
Closed 2D Surface Analysis
- Spherical Harmonic Transform - Spherical Harmonics are the basis of spherical filtering.
- Wavelets - I thought Delphine's work was to be imported into ITK. They must have needed to do perform interpolation and impose a spherical coordinate system...
Obtaining the Mesh in the First Place
- In the context of the brain: white matter segmentation, topology correction, mesh generation.
Status of the Mesh in ITK
FEM framework
- Not compliant with itkMesh (the FEM framework uses its own mesh).
itkMesh
- n-manifold, same structure as VTKUnstructuredGrid (polygon soup + links from points to cells),
- no partitionning (ghost cells) => NO MULTITHREADING
- BuildLinks drawback: makes local topoligical operation's cost linear to global size
- Cell API gives possibility of K-Complex, possibility of boundary operator from n-dimensional cells to n-1 dimensional cells.
filters:
Segmentation framework
- itkBalloonForceFilter
- itkDeformableMesh3DFilter
others
- itkAutomaticTopologyMeshSource
- itkBinaryMask3DMeshSource
- itkBinaryMaskToNarrowBandPointSetFilter
- itkConnectedRegionsMeshFilter
- itkImageToParametricSpaceFilter
- itkInteriorExteriorMeshFilter
- itkParametricSpaceToImageSpaceMeshFilter
- itkRegularSphereMeshSource
- itkSphereMeshSource
- itkTransformMeshFilter
- itkVTKPolyDataReader [REVIEW]
- itkVTKPolyDataWriter [REVIEW]
- itkWarpMeshFilter
- itkConformalFlatteningMeshFilter (2) [REVIEW]
- itkTriangleMeshToBinaryImageFilter (2)
itkSimplexMesh
- Contributed by the German Cancer Research Center
- inherit from itkMesh
- 2 manifolds, simplex
- Some dedicated filters with temp arrays to avoid calling BuildLinks() and make the code faster.
- Being rewritten by leila
filters:
- itkDeformableSimplexMesh3DFilter
- itkSimplexMeshAdaptTopologyFilter
- itkSimplexMeshToTriangleMeshFilter
- itkTriangleMeshToSimplexMeshFilter
- itkDeformableSimplexMesh3D* (3)
- itkSimplexMeshVolumeCalculator
itkQuadEdgeMesh
- inherit from itkMesh, API fully compatible.
- 2-manifold
- QuadEdge datastructure below (= C-GAL polyhedron + HalfEdges)
- Local operators, local (constant) cost.
Euler Operators available:
- itkQuadEdgeMeshEulerOperatorCreateCenterVertexFunction
- itkQuadEdgeMeshEulerOperatorDeleteCenterVertexFunction
- itkQuadEdgeMeshEulerOperatorFlipEdgeFunction
- itkQuadEdgeMeshEulerOperatorJoinFacetFunction
- itkQuadEdgeMeshEulerOperatorJoinVertexFunction
- itkQuadEdgeMeshEulerOperatorSplitEdgeFunction
- itkQuadEdgeMeshEulerOperatorSplitFacetFunction
- itkQuadEdgeMeshEulerOperatorSplitVertexFunction
- itkQuadEdgeMeshZipMeshFunction
filters:
- Djikstra (primal) / front (dual) [REVIEW]
- topology checker [REVIEW]
- Parameterization framework [INSIGHT-JOURNAL]
for june's NAMIC project week:
- Mutable priority Queue for geometry processing [READY]
- Delaunay conforming [READY]
- Normals [READY]
- Decimation [DEBUGGING]
- Discrete estimator of curvature (taubin) [DEBUGGING]
- smoothing [DEBUGGING]
Ongoing project with luca antiga (2009~)
- exact arithmetic kernel
- 2D and 3D delaunay
Ongoing project with A. Gelas
- implicit framework for Level Set and implicit surfaces (quadratic,Gaussian, RBF, partition of unity ...)
- reconstruction of surfaces from samples (stack of contours, point clouds
- implicit surface mesher
Dreams
- octree isosurface extraction with respect of sharp features
- CMAKization of TAUCS
- multithreading (partitioning)
NEEDS
- be able to change traits dynamically in a pipeline (itkMeshToMeshCopy
crashes when InputMeshType is different from OutputMeshType)
- smart way of copying mesh to mesh (container copy, not cell by cell ...)
- save / read meshes with additional informations (normals, ...)
- Multithread (include partitioning)
- arbitrary precision / exact geometric kernel
- (adaptive) 2D/3D meshing or remeshing