ITK Release 4/QuadEdgeMesh Filter: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
 
(24 intermediate revisions by the same user not shown)
Line 6: Line 6:
[http://www.itk.org/Wiki/ITK_Release_4/QuadEdgeMesh_Filter/DataProcessing Data Processing]
[http://www.itk.org/Wiki/ITK_Release_4/QuadEdgeMesh_Filter/DataProcessing Data Processing]


= Wen Li - Iowa =
= TODO =
== Insight Journal contributions ==
* 751 - [http://www.insight-journal.org/browse/publication/751 Assign Scalars Mesh Filter ]
* 749 - [http://www.insight-journal.org/browse/publication/749 Histogram Matching Mesh Filter ]
* 762 - [http://www.insight-journal.org/browse/publication/762 Mesh Similarity Calculator ]
* 752 - [http://www.insight-journal.org/browse/publication/752 Mesh To List Adaptor ]
* 750 - [http://www.insight-journal.org/browse/publication/750 Rescale Scalars Mesh Filter ]
* 763 - [http://www.insight-journal.org/browse/publication/763 Warp Mesh Filter ]
 
== Filters in NAMIC Sandbox ==
http://svn.na-mic.org/NAMICSandBox/trunk/QuadEdgeMeshFilters/
*itkShiftScalarsQuadEdgeMeshFilter
*itkWindowScalarsQuadEdgeMeshFilter
 
= Alex Gouaillard et al =
 
during the span of the project :  Creatis@lyon, Sun Microsystems ERI@beijing, caltech, Harvard Med. School, A*STAR@singapore, CoSMo@everywhere
 
Whith help from A. Gelas, E. Boix, L.Florez, M. Malaterre.
 
== TODO ==


No specific order
No specific order


=== Data Processing ===
== Data Processing ==


[[ITK_Release_4/QuadEdgeMesh_Filter/DataProcessing|Data Processing]]
[[ITK_Release_4/QuadEdgeMesh_Filter/DataProcessing|Data Processing]]


=== Conditional Iterators ===
== Conditional Iterators ==


D. Doria has written mesh iterators for VTK. He has allowed the iterator to be a "conditional iterator" by subclassing and reimplementing the AddVertex function. It performs any test the user would like on the current vertex and the next vertex. (I.e. you can add the next vertex to the queue only if it is close enough (by any metric - distance, color, normal angle, etc) to the current vertex).  
D. Doria has written mesh iterators for VTK. He has allowed the iterator to be a "conditional iterator" by subclassing and reimplementing the AddVertex function. It performs any test the user would like on the current vertex and the next vertex. (I.e. you can add the next vertex to the queue only if it is close enough (by any metric - distance, color, normal angle, etc) to the current vertex).  
Line 43: Line 23:
Here is D.D's derived class: (which shows 3 different conditions) [http://github.com/daviddoria/daviddoria-vtk/blob/VTK-ConditionalGraphIterators/Infovis/vtkGraphVertexDataConditionalIterator.cxx github link]
Here is D.D's derived class: (which shows 3 different conditions) [http://github.com/daviddoria/daviddoria-vtk/blob/VTK-ConditionalGraphIterators/Infovis/vtkGraphVertexDataConditionalIterator.cxx github link]


=== Move Existing classes out of review - ['''DONE'''] - Sept 2010 ===
== Move Existing classes out of review - <font color=green>DONE</font> - Sept 2010 ==
* check coverage
* check coverage


=== Review and possibly move other filters from Insight Journal ===
== Review and possibly move other filters from Insight Journal ==
* IOWA filters (see above)
* IOWA filters
** 751 - [http://www.insight-journal.org/browse/publication/751 Assign Scalars Mesh Filter ]
** 749 - [http://www.insight-journal.org/browse/publication/749 Histogram Matching Mesh Filter ]
** 762 - [http://www.insight-journal.org/browse/publication/762 Mesh Similarity Calculator ]
** 752 - [http://www.insight-journal.org/browse/publication/752 Mesh To List Adaptor ]
** 750 - [http://www.insight-journal.org/browse/publication/750 Rescale Scalars Mesh Filter ]
** 763 - [http://www.insight-journal.org/browse/publication/763 Warp Mesh Filter ]
** Filters in NAMIC Sandbox [http://svn.na-mic.org/NAMICSandBox/trunk/QuadEdgeMeshFilters/ here]
*** itkShiftScalarsQuadEdgeMeshFilter
*** itkWindowScalarsQuadEdgeMeshFilter
 
* 693 - [http://insight-journal.com/browse/publication/693 Reading a PTX file into an itkMesh]
* 693 - [http://insight-journal.com/browse/publication/693 Reading a PTX file into an itkMesh]
* 687 - [http://insight-journal.com/browse/publication/687 Spherical Demons Registration of Spherical Surfaces]
* 687 - [http://insight-journal.com/browse/publication/687 Spherical Demons Registration of Spherical Surfaces] aka spherical demons
* 680 - [http://insight-journal.com/browse/publication/680 Transforming an itkPointSet]
* 680 - [http://insight-journal.com/browse/publication/680 Transforming an itkPointSet]
* 662 - [http://insight-journal.com/browse/publication/662 Iterative Smoothing of Field Data in Spherical Meshes]
* 662 - [http://insight-journal.com/browse/publication/662 Iterative Smoothing of Field Data in Spherical Meshes] aka field smoothing
* 645 - [http://insight-journal.com/browse/publication/645 Rotational Registration of Spherical Surfaces Represented as QuadEdge Meshes]
* 645 - [http://insight-journal.com/browse/publication/645 Rotational Registration of Spherical Surfaces Represented as QuadEdge Meshes] aka rigid registration
* 740 - [http://insight-journal.com/browse/publication/740 Cuberille Implicit Surface Polygonization ]
 
=== FEM Requirements ===
* associate data with points and cells
* templates are too hard and inflexible, you have to know in advance and/or create traits for each file format
* idea #1: give me an array datastructure like in vtk.
* idea #2: I like metadata.


=== move [http://insight-journal.com/browse/publication/740 Cuberille Implicit Surface Polygonization for ITK] to ITK ===
=== Linear systems Solvers ===
* review IJ paper
* TAUCS
* make it work with QuadEdge
* SuperLU (direct)
** use exceptions here and there in QE to catch non-manifoldness
* CHOMOLD
* global code review
* PETsc
* move it
* eigen


=== Illustrate and optimize ===
== Illustrate and optimize ==
* write benchmarks for data structure ( => Example)
* write benchmarks for data structure ( => Example)
* profile
* profile
Line 70: Line 67:
* optimize code for speed
* optimize code for speed


=== Document ===
== Document ==
*Add a Surface Mesh part to the ITK software guide.
*Add a Surface Mesh part to the ITK software guide.
** structure
** structure
Line 76: Line 73:
** FIlters
** FIlters


=== recode and replace the simplex implementation with the old QEMeshWithDual design ===
== recode and replace the simplex implementation with the old QEMeshWithDual design ==
* write the data structure with a second point container
* write the data structure with a second point container
* write trianglemeshtosimplexmesh (and back) filters, use them for benchmark
* write trianglemeshtosimplexmesh (and back) filters, use them for benchmark
Line 82: Line 79:
* see if we can have the complete framework leverage QE (note, if there is no topological change, it might be slower to use QE)
* see if we can have the complete framework leverage QE (note, if there is no topological change, it might be slower to use QE)


==== Improve Simplex (M. Audette) ====
=== Improve Simplex (M. Audette) ===


M. Audette's adaptation of H. Delingette's simplex mesh, where he uses T1 and T2 operators to delete specific edges in order to explicitly control surface mesh resolution (prior to controlled-resolution tetrahedralization).
M. Audette's adaptation of H. Delingette's simplex mesh, where he uses T1 and T2 operators to delete specific edges in order to explicitly control surface mesh resolution (prior to controlled-resolution tetrahedralization).
Line 104: Line 101:
[http://www.informaworld.com/smpp/content~db=all~content=a770815634~frm=abslink here] )
[http://www.informaworld.com/smpp/content~db=all~content=a770815634~frm=abslink here] )


== move out of review ==
= Log =
 
* 09/2010 - Moved QE out of review
First step of moving QE out of review
* 10/2010 - Reviewed IJ #761 from Zhu Wanlin
 
* 11/2010 - Met wen Li / Kent Williams / Vincent Magnota @ iowa (see FEM part)
The basic structure as well as the Euler Operators and the helpers have been moved to Common. The filters have been moved to Algorithms and the VTKPolyData readers and wroteers to IO. The source files for the test have been moved to the corresponding directory under Testing. The tests have been removed or disabled and need further attention.
* 11/2010 - met brian @ iowa - flattening discussion
 
* 11/2010 - met fem/registration/arnaud/luis - discussion on numerical solvers (see solver part)
Change-Id: Ib25a00ca58c58103c184100ad51b561e5406cf72
* 11/2010 - Zhu Wanlin put the MeshIO code (take 2) on github
 
 
 
oving files needed by QuadEdgeMesh tests out of review.
 
Those one felt between the cracks the first time.
 
Change-Id: I656be8aee7a318493272146223d288c38a6e7b1d
 
=== Moved to Code/Algorithm ===
 
*itkPriorityQueueContainer.h  # container. should it go to Common? '''NOTE (Arnaud): more appropriate in common'''
 
*itkQuadEdgeMeshBorderTransform.h # should we rename and add Filter at the end?
*itkQuadEdgeMeshBorderTransform.txx # should we rename and add Filter at the end?
*itkQuadEdgeMeshCleanFilter.h
*itkQuadEdgeMeshDecimationCriteria.h
*itkQuadEdgeMeshDecimationFilter.h
*itkQuadEdgeMeshDecimationQuadricElementHelper.h
*itkQuadEdgeMeshDelaunayConformingFilter.h
*itkQuadEdgeMeshDelaunayConformingFilter.txx
*itkQuadEdgeMeshDiscreteCurvatureEstimator.h # should we rename and add Filter at the end?
*itkQuadEdgeMeshDiscreteCurvatureTensorEstimator.h # should we rename and add Filter at the end? '''NOTE (Arnaud): this class has no implementation'''
*itkQuadEdgeMeshDiscreteGaussianCurvatureEstimator.h # should we rename and add Filter at the end?
*itkQuadEdgeMeshDiscreteMaxCurvatureEstimator.h # should we rename and add Filter at the end?
*itkQuadEdgeMeshDiscreteMeanCurvatureEstimator.h # should we rename and add Filter at the end?
*itkQuadEdgeMeshDiscreteMinCurvatureEstimator.h # should we rename and add Filter at the end?
*itkQuadEdgeMeshDiscretePrincipalCurvaturesEstimator.h # should we rename and add Filter at the end?
*itkQuadEdgeMeshEdgeMergeDecimationFilter.h
*itkQuadEdgeMeshEdgeMergeDecimationFilter.txx
*itkQuadEdgeMeshNormalFilter.h
*itkQuadEdgeMeshNormalFilter.txx
*itkQuadEdgeMeshParam.h # should we rename and add Filter at the end? '''NOTE (Arnaud): this class may require a sparse solver traits (that must be renamed since it is not one trait but rather one adaptor)'''
*itkQuadEdgeMeshParam.txx # should we rename and add Filter at the end?
*itkQuadEdgeMeshParamMatrixCoefficients.h
*itkQuadEdgeMeshQuadricDecimation.h # should we rename and add Filter at the end?
*itkQuadEdgeMeshSmoothing.h # should we rename and add Filter at the end?
*itkQuadEdgeMeshSmoothing.txx # should we rename and add Filter at the end?
*itkQuadEdgeMeshSquaredEdgeLengthDecimation.h # should we rename and add Filter at the end?
*itkQuadEdgeMeshSquaredEdgeLengthDecimation.txx # should we rename and add Filter at the end?
*itkQuadEdgeMeshToQuadEdgeMeshFilter.h
*itkQuadEdgeMeshToQuadEdgeMeshFilter.txx
 
=== Moved to Code/Common ===
 
*itkGeometricalQuadEdge.h
*itkGeometricalQuadEdge.txx
*itkQuadEdge.cxx
*itkQuadEdge.h
*itkQuadEdgeCellTraitsInfo.h
*itkQuadEdgeMesh.h
*itkQuadEdgeMesh.txx
*itkQuadEdgeMeshBaseIterator.h
*itkQuadEdgeMeshBoundaryEdgesMeshFunction.h
*itkQuadEdgeMeshBoundaryEdgesMeshFunction.txx
*itkQuadEdgeMeshEulerOperatorCreateCenterVertexFunction.h
*itkQuadEdgeMeshEulerOperatorCreateCenterVertexFunction.txx
*itkQuadEdgeMeshEulerOperatorDeleteCenterVertexFunction.h
*itkQuadEdgeMeshEulerOperatorDeleteCenterVertexFunction.txx
*itkQuadEdgeMeshEulerOperatorFlipEdgeFunction.h
*itkQuadEdgeMeshEulerOperatorFlipEdgeFunction.txx
*itkQuadEdgeMeshEulerOperatorJoinFacetFunction.h
*itkQuadEdgeMeshEulerOperatorJoinFacetFunction.txx
*itkQuadEdgeMeshEulerOperatorJoinVertexFunction.h
*itkQuadEdgeMeshEulerOperatorJoinVertexFunction.txx
*itkQuadEdgeMeshEulerOperatorSplitEdgeFunction.h
*itkQuadEdgeMeshEulerOperatorSplitFacetFunction.h
*itkQuadEdgeMeshEulerOperatorSplitFacetFunction.txx
*itkQuadEdgeMeshEulerOperatorSplitVertexFunction.h
*itkQuadEdgeMeshEulerOperatorSplitVertexFunction.txx
*itkQuadEdgeMeshExtendedTraits.h
*itkQuadEdgeMeshFrontIterator.h
*itkQuadEdgeMeshFrontIterator.txx
*itkQuadEdgeMeshFunctionBase.h
*itkQuadEdgeMeshLineCell.h
*itkQuadEdgeMeshLineCell.txx
*itkQuadEdgeMeshMacro.h
*itkQuadEdgeMeshPoint.h
*itkQuadEdgeMeshPoint.txx
*itkQuadEdgeMeshPolygonCell.h
*itkQuadEdgeMeshPolygonCell.txx
*itkQuadEdgeMeshTopologyChecker.h
*itkQuadEdgeMeshTopologyChecker.txx
*itkQuadEdgeMeshTraits.h
*itkQuadEdgeMeshZipMeshFunction.h
*itkQuadEdgeMeshZipMeshFunction.txx
 
*itkTriangleHelper.h
*itkTriangleHelper.txx
 
=== Moved to Code/IO ===
 
*itkQuadEdgeMeshScalarDataVTKPolyDataWriter.h
*itkQuadEdgeMeshScalarDataVTKPolyDataWriter.txx
 
Shall we remove the following in favor of Mesh IO ?
 
*itkVTKPolyDataReader.h
*itkVTKPolyDataReader.txx
*itkVTKPolyDataWriter.h
*itkVTKPolyDataWriter.txx
 
=== Moved to Testing/Code/Algorithms ===
 
*itkQuadEdgeMeshCleanFilterTest.cxx
*itkQuadEdgeMeshDelaunayConformingFilterTest.cxx
*itkQuadEdgeMeshGaussianCurvatureTest.cxx
*itkQuadEdgeMeshLinearParameterizationTest.cxx
*itkQuadEdgeMeshMaxCurvatureTest.cxx
*itkQuadEdgeMeshMeanCurvatureTest.cxx
*itkQuadEdgeMeshMinCurvatureTest.cxx
*itkQuadEdgeMeshNormalFilterTest.cxx
*itkQuadEdgeMeshQuadricDecimationTest.cxx
*itkQuadEdgeMeshSmoothingTest.cxx
*itkQuadEdgeMeshSquaredEdgeLengthDecimationTest.cxx


=== Moved to Testing/Code/Common ===
= Infos =


Here some of the tests are duplicate of itkMesh tests. We have to double check that those stay together (i.e check that common is the right place).
* Original Papers
** A. Gouaillard, L. Florez, E. Boix, “A rigorous orientable 2-Manifold Data Structure for optimal Volume and discrete surface interaction”, Insight Journal, Vol. 5, July - Dec. '06. [http://www.insight-journal.com/browse/publication/122 here]
** same thing in SFBI'06 [http://www.creatis.insa-lyon.fr/sfbi06/ here]
** 2008's Source article - Quad Edge Mesh Tutorial [http://www.kitware.com/products/archive/kitware_quarterly0408.pdf here]


*itkAutomaticTopologyQuadEdgeMeshSourceTest.cxx
* Work in the NAMIC Comunity
*itkBinaryMask3DQuadEdgeMeshSourceTest.cxx
** 2008 Winter Project Week - Geometry and Topology processing of Meshes [http://www.na-mic.org/Wiki/index.php/2008_Winter_Project_Week_Geometry_and_Topology_processing_of_Meshes here]
*itkCrossHelperTest.cxx
** 2009 Winter Project Week - Surface Processing (subdivision filter, conformal flattening) [http://www.na-mic.org/Wiki/index.php/2009_Winter_Project_Week_Surface_Processing here]
*itkDynamicQuadEdgeMeshTest.cxx
*itkGeometricalQuadEdgeTest1.cxx
*itkPriorityQueueTest.cxx
*itkQuadEdgeMeshAddFaceTest1.cxx
*itkQuadEdgeMeshAddFaceTest2.cxx
*itkQuadEdgeMeshBasicLayerTest.cxx
*itkQuadEdgeMeshCellInterfaceTest.cxx
*itkQuadEdgeMeshCountingCellsTest.cxx
*itkQuadEdgeMeshDeleteEdgeTest.cxx
*itkQuadEdgeMeshDeletePointAndReorderIDsTest.cxx
*itkQuadEdgeMeshEulerOperatorCreateCenterVertexTest.cxx
*itkQuadEdgeMeshEulerOperatorDeleteCenterVertexTest.cxx
*itkQuadEdgeMeshEulerOperatorFlipTest.cxx
*itkQuadEdgeMeshEulerOperatorJoinFacetTest.cxx
*itkQuadEdgeMeshEulerOperatorJoinVertexTest.cxx
*itkQuadEdgeMeshEulerOperatorSplitEdgeTest.cxx
*itkQuadEdgeMeshEulerOperatorSplitFaceTest.cxx
*itkQuadEdgeMeshEulerOperatorSplitVertexTest.cxx
*itkQuadEdgeMeshEulerOperatorsTestHelper.h
*itkQuadEdgeMeshFrontIteratorTest.cxx
*itkQuadEdgeMeshIteratorTest.cxx
*itkQuadEdgem_NoPointTest.cxx -> itkQuadEdgeMeshNoPointConstTest.cxx
*itkQuadEdgeMeshPointTest1.cxx
*itkQuadEdgeMeshPolygonCellTest.cxx
*itkQuadEdgeMeshTest1.cxx
*itkQuadEdgeMeshTest2.cxx
*itkQuadEdgeMeshTest3.cxx
*itkQuadEdgeTest1.cxx
*itkRegularSphereQuadEdgeMeshSourceTest.cxx
*itkTriangleHelperTest.cxx


=== Move to Testing/Code/IO ===
* Own Insight Journal Publications
** Parameterization of discrete surfaces -  2007 July - December. [http://www.insight-journal.com/browse/publication/202 here]
*itkQuadEdgeMeshScalarDataVTKPolyDataWriterTest1.cxx
** Mutable Priority Queue Container - 2008 January - June. [http://www.insight-journal.com/browse/publication/244 here]
*itkVTKPolyDataIOQuadEdgeMeshTest.cxx
** Surface Mesh Normals Filter - 2008 January - June. [http://www.insight-journal.com/browse/publication/303 here]
*itkVTKPolyDataReaderQuadEdgeMeshTest.cxx
** Surface Mesh Discrete Curvature Estimators - 2008 July - December. [http://www.insight-journal.com/browse/publication/302 here]
*itkVTKPolyDataReaderTest.cxx
** Triangular Meshes Delaunay Conforming Filter - 2008 July - December. [http://www.insight-journal.com/browse/publication/299 here]
*itkVTKPolyDataWriterTest.cxx
** Surface Meshes Incremental Decimation Framework - 2008 July - December. [http://www.insight-journal.com/browse/publication/298 here]
*itkVTKPolyDataWriterTest2.cxx
** Surface Meshes Smoothing - 2009 January - June. [http://www.insight-journal.com/browse/publication/313 here]


=== Modified code ===
* other Insight Journal Publications Based on QuadEdgeMesh
** IOWA filters
*** 751 - [http://www.insight-journal.org/browse/publication/751 Assign Scalars Mesh Filter ]
*** 749 - [http://www.insight-journal.org/browse/publication/749 Histogram Matching Mesh Filter ]
*** 762 - [http://www.insight-journal.org/browse/publication/762 Mesh Similarity Calculator ]
*** 752 - [http://www.insight-journal.org/browse/publication/752 Mesh To List Adaptor ]
*** 750 - [http://www.insight-journal.org/browse/publication/750 Rescale Scalars Mesh Filter ]
*** 763 - [http://www.insight-journal.org/browse/publication/763 Warp Mesh Filter ]
*** Filters in NAMIC Sandbox [http://svn.na-mic.org/NAMICSandBox/trunk/QuadEdgeMeshFilters/ here]
**** itkShiftScalarsQuadEdgeMeshFilter
**** itkWindowScalarsQuadEdgeMeshFilter
** MIT Filters
*** 687 - [http://insight-journal.com/browse/publication/687 Spherical Demons Registration of Spherical Surfaces] aka spherical demons
*** 662 - [http://insight-journal.com/browse/publication/662 Iterative Smoothing of Field Data in Spherical Meshes] aka field smoothing
*** 645 - [http://insight-journal.com/browse/publication/645 Rotational Registration of Spherical Surfaces Represented as QuadEdge Meshes] aka rigid registration
** Others
*** 693 - [http://insight-journal.com/browse/publication/693 Reading a PTX file into an itkMesh]
*** 680 - [http://insight-journal.com/browse/publication/680 Transforming an itkPointSet]
*** 740 - [http://insight-journal.com/browse/publication/740 Cuberille Implicit Surface Polygonization ]


*Code/Common/CMakeLists.txt
* Other Publications
*Code/Review/CMakeLists.txt
** S. Valette, A. Gouaillard, R. Prost “Compression of 3D triangular meshes with progressive precision”, Computers & Graphics,  Vol 28, No.1  January , No, pp 35-42, 2004.
*Testing/Code/Common/CMakeLists.txt
** A. Gouaillard, C. Odet,  X. Gu, “Computing Shortest Cycles on Discrete Surfaces for Acurate Topological Modifications of Medical Image Isosurfaces”, In Proceedings of IEEE EMBC’05, Shanghai, September 11th-14th 2005.
*Testing/Code/Review/CMakeLists.txt
** A. Gouaillard, A. Gelas,  S. Valette,  E. Boix and R. Prost, “Curvature-based Adaptive Remeshing for Wavelet-Based Multiresolution 3D Meshes”. In Proc. of International Conference on Image Processing ICIP’05,  Genova, September 11th-14th 2005.
*Testing/Code/Review/itkReviewTests.cxx
** A. Gouaillard, A. Gelas, S. Valette, E. Boix, R. Prost, “Remeshing Algorithm for Multiresolution Prior Model in Segmentation.  In Proc. of International Conference on Image Processing, ICIP‘04, Singapore, October 24~27 October 2003, pp. 2753-2756.
*Testing/Code/Review/itkReviewTests2.cxx
** A. Gouaillard, T. Kanai, C. Odet,  X. Gu, “Optimal Localization of Topological Artefacts on 3D Meshes”, The 11th Int. Conf. on Geometry and Graphics, 1-5 Aug., 2004, Guangzhou, China.

Latest revision as of 13:40, 13 November 2010

QuadEdgeMesh Filters

original page

arnaud's comments on filters and data Data Processing

TODO

No specific order

Data Processing

Data Processing

Conditional Iterators

D. Doria has written mesh iterators for VTK. He has allowed the iterator to be a "conditional iterator" by subclassing and reimplementing the AddVertex function. It performs any test the user would like on the current vertex and the next vertex. (I.e. you can add the next vertex to the queue only if it is close enough (by any metric - distance, color, normal angle, etc) to the current vertex). The current closest equivalent with QE would be itkQuadEdgeMeshFrontIterator and seems to be confusing and perhaps less flexible.

Here is D.D's superclass implementation github link

Here is D.D's derived class: (which shows 3 different conditions) github link

Move Existing classes out of review - DONE - Sept 2010

  • check coverage

Review and possibly move other filters from Insight Journal

FEM Requirements

  • associate data with points and cells
  • templates are too hard and inflexible, you have to know in advance and/or create traits for each file format
  • idea #1: give me an array datastructure like in vtk.
  • idea #2: I like metadata.

Linear systems Solvers

  • TAUCS
  • SuperLU (direct)
  • CHOMOLD
  • PETsc
  • eigen

Illustrate and optimize

  • write benchmarks for data structure ( => Example)
  • profile
  • document structure building process (AddCell)
  • come up with an optimal building process (AddCell)
  • optimize code for speed
  • profil decimation and other slow filters
  • optimize code for speed

Document

  • Add a Surface Mesh part to the ITK software guide.
    • structure
    • Euler Operators
    • FIlters

recode and replace the simplex implementation with the old QEMeshWithDual design

  • write the data structure with a second point container
  • write trianglemeshtosimplexmesh (and back) filters, use them for benchmark
  • check the other filters of the simplex framework for QE compatibility
  • see if we can have the complete framework leverage QE (note, if there is no topological change, it might be slower to use QE)

Improve Simplex (M. Audette)

M. Audette's adaptation of H. Delingette's simplex mesh, where he uses T1 and T2 operators to delete specific edges in order to explicitly control surface mesh resolution (prior to controlled-resolution tetrahedralization).

The operators are on page 119 of Herve's IJCV paper General Object Reconstruction Based on Simplex Meshes which can still be found here.

M. Audettes's adaptation appears in ICCV Workshop 2005:

Yanxi Liu, Tianzi Jiang, Changshui Zhang (Eds.): Computer Vision for Biomedical Image Applications, First International Workshop, CVBIA 2005, Beijing, China, October 21, 2005, Proceedings. Lecture Notes in Computer Science 3765 Springer 2005, ISBN 3-540-29411-2

Michel A. Audette, Hervé Delingette, Alexander Fuchs, Oliver R. Astley, Kiyoyuki Chinzei: A Topologically Faithful, Tissue-Guided, Spatially Varying Meshing Strategy for Computing Patient-Specific Head Models for Endoscopic Pituitary Surgery Simulation. 178-188

(and later in Computer Aided Surgery... here )

Log

  • 09/2010 - Moved QE out of review
  • 10/2010 - Reviewed IJ #761 from Zhu Wanlin
  • 11/2010 - Met wen Li / Kent Williams / Vincent Magnota @ iowa (see FEM part)
  • 11/2010 - met brian @ iowa - flattening discussion
  • 11/2010 - met fem/registration/arnaud/luis - discussion on numerical solvers (see solver part)
  • 11/2010 - Zhu Wanlin put the MeshIO code (take 2) on github

Infos

  • Original Papers
    • A. Gouaillard, L. Florez, E. Boix, “A rigorous orientable 2-Manifold Data Structure for optimal Volume and discrete surface interaction”, Insight Journal, Vol. 5, July - Dec. '06. here
    • same thing in SFBI'06 here
    • 2008's Source article - Quad Edge Mesh Tutorial here
  • Work in the NAMIC Comunity
    • 2008 Winter Project Week - Geometry and Topology processing of Meshes here
    • 2009 Winter Project Week - Surface Processing (subdivision filter, conformal flattening) here
  • Own Insight Journal Publications
    • Parameterization of discrete surfaces - 2007 July - December. here
    • Mutable Priority Queue Container - 2008 January - June. here
    • Surface Mesh Normals Filter - 2008 January - June. here
    • Surface Mesh Discrete Curvature Estimators - 2008 July - December. here
    • Triangular Meshes Delaunay Conforming Filter - 2008 July - December. here
    • Surface Meshes Incremental Decimation Framework - 2008 July - December. here
    • Surface Meshes Smoothing - 2009 January - June. here
  • Other Publications
    • S. Valette, A. Gouaillard, R. Prost “Compression of 3D triangular meshes with progressive precision”, Computers & Graphics, Vol 28, No.1  January , No, pp 35-42, 2004.
    • A. Gouaillard, C. Odet,  X. Gu, “Computing Shortest Cycles on Discrete Surfaces for Acurate Topological Modifications of Medical Image Isosurfaces”, In Proceedings of IEEE EMBC’05, Shanghai, September 11th-14th 2005.
    • A. Gouaillard, A. Gelas,  S. Valette,  E. Boix and R. Prost, “Curvature-based Adaptive Remeshing for Wavelet-Based Multiresolution 3D Meshes”. In Proc. of International Conference on Image Processing ICIP’05,  Genova, September 11th-14th 2005.
    • A. Gouaillard, A. Gelas, S. Valette, E. Boix, R. Prost, “Remeshing Algorithm for Multiresolution Prior Model in Segmentation.  In Proc. of International Conference on Image Processing, ICIP‘04, Singapore, October 24~27 October 2003, pp. 2753-2756.
    • A. Gouaillard, T. Kanai, C. Odet,  X. Gu, “Optimal Localization of Topological Artefacts on 3D Meshes”, The 11th Int. Conf. on Geometry and Graphics, 1-5 Aug., 2004, Guangzhou, China.