PODM 3D

From crtc.cs.odu.edu
Jump to: navigation, search

Documentation

  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 a User Manual for PODM 3D and Tessellate2D within the fields of Medical Image Computing and Computational Nuclear Femptography ✔

Execution Examples

  1. Create meshes for the Computational Nuclear Femtography part of CRTC_I2M_Suite Documentation. CNF Example Meshes
  2. Create meshes for the Medical Image Computing part of CRTC_I2M_Suite Documentation. Medical Imaging Example Meshes

Code Changes

  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✔
       1 bool checkSizingFunction(double coordinatesOfTetrahedron**)
       2 {
       3     double volume = volume(coordinatesOfTetrahedron);
       4     double* baryCenter = baryCenter(coordinatesOfTetrahedron)
       5     
       6     // if x axis <= 55 and volume of tetrahedron > 10
       7     if (baryCenter[0] <= 55 && volume > 10)
       8        return true;
       9     else
      10        return false
      11 }
      
    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✔
  8. Create a general PODM driver✔
  9. Set a warning if delta > min-spacing * min-dimension-size / 5✔
  10. 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✔
  11. Remove labels array of output mesh if tissues of interest < 2✔
  12. Print a warning if a tissue is not recovered✔
  13. Add Numa flag in CmakeLists.txt ✔
  14. Add binary file support ✔
  15. Improve Text output ✔
  16. Create GetCleanMeshParallel function ✔
  17. Identify places in the code where δ varies with regards to background values (TODO)
  18. Test if multiple δ works using synthetically generated image data (TODO)

Adaptivity Results

  1. Podm Result of Gagic Data image with volume grading on and δ=6, minimum Volume Size = 0.5, limit = 0.1✔
    1. 2D (Triangle): Nt2DAdaptivity (Done by Christos)
    2. 3D (PODM): Nt3DAdaptivity (Done with Christos)
  2. Produce an Animated Adaptive Procedure video http://www.cs.odu.edu/crtc/videos/PODM3D.html
    1. InputImage -> Input Image:
    2. ImageSegmentation -> Image Segmentation
    3. AdaptiveMeshing -> Meshing Procedure. This is a gif which is visible here: https://crtc.cs.odu.edu/images/8/89/AdaptiveMeshing.gif
    4. AdaptedMesh -> Adapted mesh
    5. LinearInterpolation -> Linear Interpolation

Future Work

  1. Assembly of mesh: Performance of PODM3D can be still improved within the aspect of the time that it takes to assemble the mesh after finishing the meshing procedure. Currently, the assembly of the mesh is a solely sequential step. We propose to utilize the parallel nature of the PODM 3D algorithm and the vtkAppendFIlter of the VTK library, which merges individual meshes into one mesh, to speed up the process.