Mesh Discussion for Core 1
From NAMIC Wiki
Revision as of 06:39, 18 June 2008 by Agouaillard (talk | contribs) (→Given a Mesh Representing a Surface)
Home < Mesh Discussion for Core 1
Topics 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.
Note (Alex): I think we did it: "http://hdl.handle.net/1926/1315". Do you need anything more than this?
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
Note (Alex): we have this available (the discrete form: TAUBIN). Working on a better version (osculating jets) Should appear in Insight Journal within few weeks.
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