# Mesh Discussion for Core 1

Topics 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 2008

- Polina: Algorithms Core is in need of Meshes (for computation).
- QuadEdgeMesh: Contribution by Alex Gouillard et al in Insight/Code/Review.
- Modules Needed
- Extract topologically correct surface interface between volumes of labels. This requires fixing the topology of the volumetric segmentation and paying attention to the topology of the surface when creating the mesh.
- Compute linear interpolation of scalar (point) values on Meshes.
- Given a point in space, fine the closest triangle in a Mesh.
- Surface to Sphere mapping.
- Rigid registration between two scalar functions defined on a sphere, represented on a Mesh.

- Action Items
- Create directory in NAMICSandbox
- Setup an initial version of the pipeline above
- Work on this during the NAMIC Summer Project week.