Internal:PODM 3D: Difference between revisions

From crtc.cs.odu.edu
Jump to navigation Jump to search
Spyridon97 (talk | contribs)
Spyridon97 (talk | contribs)
Line 69: Line 69:


==Summer 2020==
==Summer 2020==
# Update/Replace/Remove existing libraries (TODO)
## Updated to ITK 5.0.1 ✔
## Updated VTK 9.0.0 ✔
## Replace CGAL with PCK ✔
### Benchmark: [https://crtc.cs.odu.edu/Internal:4D_Predicates_Benchmark PCK vs CGAL Predicates Benchmark]
### Paper: [https://hal.inria.fr/hal-01225202 Predicate Construction Kit Paper]
### Code:  [https://gforge.inria.fr/frs/?group_id=5833 Predicate Construction Kit Code]
## Remove Boost (TODO)
# Compute Mesh in Parallel (TODO)
## Create GetCleanMeshParallel function ✔
## Remove duplicate allocation ✔
## Test it
### Locally ✔
### On Turing (TODO)
# Produce the Voronoi Mesh out of the Delaunay (TODO)
# Produce the Voronoi Mesh out of the Delaunay (TODO)
## Check what TetGen does (TODO)
## Check what TetGen does (TODO)
## Research conversion methods (TODO)
## Research conversion methods (TODO)
# Compute Mesh in Parallel (TODO)
## Create GetCleanMeshParallel function ✔
## Create a flag that allows duplicate points, therefore multiple output mesh files that have a header file, which minimizes the IO time (TODO)
## Test it (TODO)
# Μultiple δ (TODO)
# Μultiple δ (TODO)
## Implement multiple δ (TODO)
## Implement multiple δ (TODO)
Line 84: Line 94:
### https://doc.cgal.org/latest/Mesh_3/index.html#fig__mesh3HybridDomainExample
### https://doc.cgal.org/latest/Mesh_3/index.html#fig__mesh3HybridDomainExample
### https://doc.cgal.org/latest/Mesh_3/index.html
### https://doc.cgal.org/latest/Mesh_3/index.html
# Update and replace existing libraries (TODO)
## ITK ✔
## Boost ✔
## VTK ✔
## CGAL (TODO)
### Replace CGAL predicates with PCK (TODO)
#### Benchmark: [https://crtc.cs.odu.edu/Internal:4D_Predicates_Benchmark PCK vs CGAL Predicates Benchmark]
#### Paper: [https://hal.inria.fr/hal-01225202 Predicate Construction Kit Paper]
#### Code:  [https://gforge.inria.fr/frs/?group_id=5833 Predicate Construction Kit Code]

Revision as of 22:01, 26 June 2020

Documentation

Fall 2019

  1. Read PODM3D paper✔
  2. Read Guaranteed Quality Tetrahedral Delaunay Meshing for Medical Images paper (Sect. 9) (TODO)
  3. Write a proper README.md file✔
  4. Add the CNF Example Meshes into the Appendix of the November Report✔
  5. Create CNF Adaptivity Report

Spring 2020

  1. Create a User Manual for PODM 3D and Tessellate2D within the fields of Medical Image Computing and Computational Nuclear Femptography ✔

Execution Examples

Fall 2019

  1. Create meshes for the Computational Nuclear Femtography part of CRTC_I2M_Suite Documentation. CNF Example Meshes ✔

Spring 2020

  1. Create meshes for the Medical Image Computing part of CRTC_I2M_Suite Documentation. Medical Imaging Example Meshes ✔

Summer 2020

  1. Create meshes for the Bioinformatics part of CRTC_I2M_Suite Documentation. Bioinformatics Example Meshes ✔

Code Changes

Fall 2019

  1. Restructure repository of PODM3D based on Software engineering standards✔
  2. Decouple Args from PODM✔
  3. Create setArguments function✔
  4. Create setInputImage(ImageType::Pointer)✔
  5. Remove IOs from PODM✔
  6. Implement a sizing function that will work as an extra rule and it will use the point indices of the tetrahedron that is tested✔
    1. Create UML diagrams to understand the code and the Meshing Procedure in general✔
    2. Create a list of functions that need to be modified to implement the extra Rule ✔
    3. Modify the created list (Extra Rule sizing Function list) of functions✔
    4. Create the following test sizing function to understand if modifications have been done correctly✔
      bool checkSizingFunction(double coordinatesOfTetrahedron**)
      {
          double volume = volume(coordinatesOfTetrahedron);
          double* baryCenter = baryCenter(coordinatesOfTetrahedron)
          
          // if x axis <= 55 and volume of tetrahedron > 10
          if (baryCenter[0] <= 55 && volume > 10)
             return true;
          else
             return false
      }
      
    5. Create the infrastructure to support Sizing Function pointer✔
    6. Incorporate Function Pointer to PODM by creating a setSizingFunction()✔
    7. Replace the test sizing function with the Adaptivity function that was created by Christos (The algorithm is described here)✔
      1. Understand that the current implementation supports negative weights✔
      2. Change the current implementation to use the minimum-maximum edge length of the element instead of its volume✔
      3. Identify an issue of checking sample points outside the image and solve it according to Christos's suggestions✔
  7. Separate the interface, the IOs and the filters from PODM✔

Spring 2020

  1. Create a general PODM driver✔
  2. Set a warning if delta > min-spacing * min-dimension-size / 5✔
  3. Set a default delta: ✔
    1. if sizing-function is off then default delta = min-spacing * min-dimension-size / 100 ✔
    2. if sizing-function is on then default delta = min-spacing * min-dimension-size / 20 ✔
  4. Remove labels array if there is only 1 label of interest ✔
  5. Print a warning if a label is not recovered✔
  6. Add Numa flag in CmakeLists.txt ✔
  7. Add binary file support ✔
  8. Improve Text output ✔
  9. Create label-filter to filter labels of images properly ✔
  10. Remove redundant volume threadhold checks that don't contribute anything to the meshing procedure ✔

Summer 2020

  1. Update/Replace/Remove existing libraries (TODO)
    1. Updated to ITK 5.0.1 ✔
    2. Updated VTK 9.0.0 ✔
    3. Replace CGAL with PCK ✔
      1. Benchmark: PCK vs CGAL Predicates Benchmark
      2. Paper: Predicate Construction Kit Paper
      3. Code: Predicate Construction Kit Code
    4. Remove Boost (TODO)
  2. Compute Mesh in Parallel (TODO)
    1. Create GetCleanMeshParallel function ✔
    2. Remove duplicate allocation ✔
    3. Test it
      1. Locally ✔
      2. On Turing (TODO)
  3. Produce the Voronoi Mesh out of the Delaunay (TODO)
    1. Check what TetGen does (TODO)
    2. Research conversion methods (TODO)
  4. Μultiple δ (TODO)
    1. Implement multiple δ (TODO)
    2. Use different δ values (possibly uniform based) according to the surface of each label of a segmented image (TODO)
  5. Smoothing (TODO)
    1. CGAL Sources:
      1. https://doc.cgal.org/latest/Mesh_3/index.html#fig__mesh3protectionimage3D
      2. https://doc.cgal.org/latest/Mesh_3/index.html#fig__mesh3HybridDomainExample
      3. https://doc.cgal.org/latest/Mesh_3/index.html