Internal:PODM 3D

From crtc.cs.odu.edu
Jump to navigation Jump to 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. Create Documentation of PODM 3D for Medical Image Computing and Computational Nuclear Femptography✔

Explore Code

  1. Install all PODM3D libraries✔
  2. Compile PODM3D code✔
  3. Restructure repository of PODM3D based on Software engineering standards✔

Functionality

  1. Decouple Args from PODM✔
  2. Create setArguments function✔
  3. Create setInputImage(ImageType::Pointer)✔
  4. Remove IOs from PODM✔
  5. Create setSizingFunction(image, minimumElementEdgeSize, elementWeightLimit)✔
  6. Separate the interface, the IOs and the filters from PODM✔
  7. Create a general PODM driver✔
  8. Set a warning if delta > min-spacing * min-dimension-size / 5✔

Adaptivity

Implementation of Sizing Function

  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 a test sizing function to understand if modifications have been done correctly✔
    1. The test sizing function is
      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✔

Implementation of Adaptivity

  1. Implement Adaptivity using Christos Code✔
  2. 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)
  3. Understand that the current implementation supports negative weights✔
  4. Change the current implementation to use the minimum-maximum edge length of the element instead of its volume✔
  5. Identify an issue of checking sample points outside the image and solve it according to Christos's suggestions✔
  6. Test PODM with all the Images in Box✔
  7. Create meshes out of all the images on CNF_SHARE that are representative examples of adaptivity https://crtc.cs.odu.edu/CNF:Example_Meshes ✔
  8. Add those meshes to the Appendix of the November Report ✔

Animated Adaptive Meshing Process

  1. Produce the meshes for the Animated Adaptive Meshing Process and the January report✔
  2. Produce Animated Process:✔
    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
  3. Created videos of the meshing procedure that are accessible on http://www.cs.odu.edu/crtc/videos/PODM3D.html ✔

Multiple δ

  1. Identify places in the code where δ varies with regards to background values
  2. Test if multiple δ work using synthetically generated image data