ITK Release 4/QuadEdgeMesh Filter: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
Line 3: Line 3:
[http://www.itk.org/Wiki/Proposals:New_Mesh_Class original page]
[http://www.itk.org/Wiki/Proposals:New_Mesh_Class original page]


== Wen Li - Iowa ==
= Wen Li - Iowa =
=== Insight Journal contributions ===
== Insight Journal contributions ==
*[http://www.insight-journal.org/browse/publication/751 Assign Scalars Mesh Filter ]
*[http://www.insight-journal.org/browse/publication/751 Assign Scalars Mesh Filter ]
*[http://www.insight-journal.org/browse/publication/749 Histogram Matching Mesh Filter ]
*[http://www.insight-journal.org/browse/publication/749 Histogram Matching Mesh Filter ]
Line 12: Line 12:
*[http://www.insight-journal.org/browse/publication/763 Warp Mesh Filter ]
*[http://www.insight-journal.org/browse/publication/763 Warp Mesh Filter ]


=== There are two filters about to be committed. ===
== There are two filters about to be committed. ==
*Window Scalars Mesh Filter
*Window Scalars Mesh Filter
*Shift Scalars Mesh Filter
*Shift Scalars Mesh Filter


== Alex Gouaillard et al ==
= 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  
during the span of the project :  Creatis@lyon, Sun Microsystems ERI@beijing, caltech, Harvard Med. School, A*STAR@singapore, CoSMo@everywhere  


=== TODO ===
== TODO ==


==== Move Existing classes out of review ====
=== Move Existing classes out of review ===
* rename filters?
* rename filters?
* remove VTK reader / writer in favor of iowa's Mesh IO?
* remove VTK reader / writer in favor of iowa's Mesh IO?
Line 29: Line 29:
* 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 (see above)
** [http://insight-journal.com/browse/publication/693 Reading a PTX file into an itkMesh]
** [http://insight-journal.com/browse/publication/693 Reading a PTX file into an itkMesh]
Line 38: Line 38:




==== move [http://insight-journal.com/browse/publication/740 Cuberille Implicit Surface Polygonization for ITK] to ITK ===
=== move [http://insight-journal.com/browse/publication/740 Cuberille Implicit Surface Polygonization for ITK] to ITK ===
** review IJ paper
** review IJ paper
** make it work with QuadEdge
** make it work with QuadEdge
Line 45: Line 45:
** move it
** move it


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


=== move out of review ===
== move out of review ==


First step of moving QE out of review
First step of moving QE out of review
Line 68: Line 68:
Change-Id: I656be8aee7a318493272146223d288c38a6e7b1d
Change-Id: I656be8aee7a318493272146223d288c38a6e7b1d


==== Moved to Code/Algorithm ====
=== Moved to Code/Algorithm ===


*itkPriorityQueueContainer.h  # container. should it go to Common?
*itkPriorityQueueContainer.h  # container. should it go to Common?
Line 103: Line 103:
*itkQuadEdgeMeshToQuadEdgeMeshFilter.txx
*itkQuadEdgeMeshToQuadEdgeMeshFilter.txx


==== Moved to Code/Common ====
=== Moved to Code/Common ===


*itkGeometricalQuadEdge.h
*itkGeometricalQuadEdge.h
Line 151: Line 151:
*itkTriangleHelper.txx
*itkTriangleHelper.txx


==== Moved to Code/IO ====
=== Moved to Code/IO ===


*itkQuadEdgeMeshScalarDataVTKPolyDataWriter.h
*itkQuadEdgeMeshScalarDataVTKPolyDataWriter.h
Line 164: Line 164:
*itkVTKPolyDataWriter.txx
*itkVTKPolyDataWriter.txx


==== Moved to Testing/Code/Algorithms ====
=== Moved to Testing/Code/Algorithms ===


*itkQuadEdgeMeshCleanFilterTest.cxx
*itkQuadEdgeMeshCleanFilterTest.cxx
Line 178: Line 178:
*itkQuadEdgeMeshSquaredEdgeLengthDecimationTest.cxx
*itkQuadEdgeMeshSquaredEdgeLengthDecimationTest.cxx


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


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).
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).
Line 216: Line 216:
*itkTriangleHelperTest.cxx
*itkTriangleHelperTest.cxx


==== Move to Testing/Code/IO ====
=== Move to Testing/Code/IO ===
   
   
*itkQuadEdgeMeshScalarDataVTKPolyDataWriterTest1.cxx
*itkQuadEdgeMeshScalarDataVTKPolyDataWriterTest1.cxx
Line 225: Line 225:
*itkVTKPolyDataWriterTest2.cxx
*itkVTKPolyDataWriterTest2.cxx


==== Modified code ====
=== Modified code ===


*Code/Common/CMakeLists.txt
*Code/Common/CMakeLists.txt

Revision as of 10:27, 17 September 2010

QuadEdgeMesh Filters

original page

Wen Li - Iowa

Insight Journal contributions

There are two filters about to be committed.

  • Window Scalars Mesh Filter
  • Shift Scalars Mesh Filter

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

TODO

Move Existing classes out of review

  • rename filters?
  • remove VTK reader / writer in favor of iowa's Mesh IO?
  • test compilation without ITK_USE_REVIEW to check there is no left behind
  • fix the test drivers
  • check coverage

Review and possibly move other filters from Insight Journal


move Cuberille Implicit Surface Polygonization for ITK to ITK

    • review IJ paper
    • make it work with QuadEdge
      • use exceptions here and there in QE to catch non-manifoldness
    • global code review
    • move it

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

move out of review

First step of moving QE out of review

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.

Change-Id: Ib25a00ca58c58103c184100ad51b561e5406cf72

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?


  • 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?
  • 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?
  • 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

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).

  • itkAutomaticTopologyQuadEdgeMeshSourceTest.cxx
  • itkBinaryMask3DQuadEdgeMeshSourceTest.cxx
  • itkCrossHelperTest.cxx
  • 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

  • itkQuadEdgeMeshScalarDataVTKPolyDataWriterTest1.cxx
  • itkVTKPolyDataIOQuadEdgeMeshTest.cxx
  • itkVTKPolyDataReaderQuadEdgeMeshTest.cxx
  • itkVTKPolyDataReaderTest.cxx
  • itkVTKPolyDataWriterTest.cxx
  • itkVTKPolyDataWriterTest2.cxx

Modified code

  • Code/Common/CMakeLists.txt
  • Code/Review/CMakeLists.txt
  • Testing/Code/Common/CMakeLists.txt
  • Testing/Code/Review/CMakeLists.txt
  • Testing/Code/Review/itkReviewTests.cxx
  • Testing/Code/Review/itkReviewTests2.cxx