Internal:PODM 3D

From crtc.cs.odu.edu
Revision as of 16:39, 30 April 2020 by Spyridon97 (talk | contribs) (Spyridon97 moved page PODM 3D to Internal:PODM 3D)
Jump to navigation Jump to search

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✔

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 ✔

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)✔
    8. Understand that the current implementation supports negative weights✔
    9. Change the current implementation to use the minimum-maximum edge length of the element instead of its volume✔
    10. 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 off then default delta = min-spacing * min-dimension-size / 20✔
  4. Remove labels array of output mesh if tissues of interest < 2✔
  5. Print a warning if a tissue 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. Produce the Voronoi Mesh out of the Delaunay (TODO)
  2. Extract Mesh in Parallel function (TODO)
    1. Create GetCleanMeshParallel function ✔
    2. Create a flag that allows duplicate points, therefore multiple output mesh files that have a header file, which minimizeσ the IO time (TODO)
    3. Test it (TODO)
  3. Μultiple δ (TODO)
    1. Fix multiple δ (TODO)
    2. Use different δ values (possibly uniform based) according to the surface of each label of a segmentation (TODO)