Difference between revisions of "Mesh Discussion for Core 1"
Line 168: | Line 168: | ||
* Compute linear interpolation of scalar (point) values on Meshes. | * Compute linear interpolation of scalar (point) values on Meshes. | ||
* Locating triangles in a Mesh given a point in space. | * Locating triangles in a Mesh given a point in space. | ||
+ | * Surface to Sphere mapping. | ||
+ | * Rigid registration of between two scalar functions defined in a sphere. |
Revision as of 19:23, 19 June 2008
Home < Mesh Discussion for Core 1Topics for discussion regarding Meshes in ITK.
Thursday, June 19th, 3-3:30pm ET
Contents
Participants:
- Will Schroeder,
- Luis Ibanez,
- Andrey Fedorov,
- Polina Golland,
- Thomas Yeo
- Alex Gouillard
- Ross Whitaker
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 for 2-manifolds: "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...
Note (Alex): spherical harmonics are definitely a good tool, but it depends on spherical parameterization, and this last tool is not very stable. Suppose a unique component, close orientable 2-manifold... Note (Alex): working on an implementation of "Sébastien Valette and Rémy Prost, Wavelet Based Multiresolution Analysis Of Irregular Surface Meshes, IEEE Transactions on Visualization and Computer Graphics, Vol. 10, No. 2, March/April 2004, pp. 113-122." which would allows analysis of arbitrary mesh. To be rigorously implemented, we need to implement subdivision filters first.
Obtaining the Mesh in the First Place
- In the context of the brain: white matter segmentation, topology correction, mesh generation.
Note (Alex) working on mesh generation. Low on the priority list though.
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
Phone Conference June 19
- Polina: Algorithms Core is in need of Meshes (for computation).
- QuadEdgeMesh: Contribution by Alex Gouillard et al in Insight/Code/Review.
- Extract surface interface between volumes of labels.
- Compute linear interpolation of scalar (point) values on Meshes.
- Locating triangles in a Mesh given a point in space.
- Surface to Sphere mapping.
- Rigid registration of between two scalar functions defined in a sphere.