Difference between revisions of "Mesh Discussion for Core 1"
(→NEEDS) |
|||
(22 intermediate revisions by 5 users not shown) | |||
Line 11: | Line 11: | ||
* Thomas Yeo | * Thomas Yeo | ||
* Alex Gouillard | * Alex Gouillard | ||
+ | * Ross Whitaker | ||
= Goal = | = Goal = | ||
Line 24: | Line 25: | ||
# 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. | # 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. | # 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. | # Does ParametricSpaceToImageSpaceMeshFilter already accomplished this? Found this on the documentation page, but it's unclear if it doing point (1) above. | ||
Line 32: | Line 31: | ||
# Given a mesh, impose a parametric (e.g., planar, spherical) coordinate system. This is necessary for registration. | # 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. | # 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 == | == Given a Mesh Representing a Surface == | ||
# Compute differential geometric properties, e.g., first and second fundamental forms (mean and gaussian curvature) | # Compute differential geometric properties, e.g., first and second fundamental forms (mean and gaussian curvature) | ||
− | |||
# For mesh representing cortical surface, computing sulcal depth | # 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 == | == Closed 2D Surface Analysis == | ||
# Spherical Harmonic Transform - Spherical Harmonics are the basis of spherical filtering. | # 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... | # 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 == | == Obtaining the Mesh in the First Place == | ||
# 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. | ||
− | + | Note (Alex) working on mesh generation. Low on the priority list though. | |
− | |||
= Status of the Mesh in ITK = | = Status of the Mesh in ITK = | ||
Line 155: | Line 154: | ||
= Needs = | = Needs = | ||
− | * be able to change traits dynamically in a pipeline (itkMeshToMeshCopy | + | * be able to change traits dynamically in a pipeline (itkMeshToMeshCopy crashes when InputMeshType is different from OutputMeshType) |
− | crashes when InputMeshType is different from OutputMeshType) | ||
* smart way of copying mesh to mesh (container copy, not cell by cell ...) | * smart way of copying mesh to mesh (container copy, not cell by cell ...) | ||
* save / read meshes with additional informations (normals, ...) | * save / read meshes with additional informations (normals, ...) | ||
Line 162: | Line 160: | ||
* arbitrary precision / exact geometric kernel | * arbitrary precision / exact geometric kernel | ||
* (adaptive) 2D/3D meshing or remeshing | * (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. |
Latest revision as of 13:06, 20 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 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.