Internal:PODM 3D: Difference between revisions

From crtc.cs.odu.edu
Jump to navigation Jump to search
Spyridon97 (talk | contribs)
No edit summary
Spyridon97 (talk | contribs)
Line 16: Line 16:
# Create a general PODM driver✔
# Create a general PODM driver✔
# Set a warning if delta > min-spacing * min-dimension-size / 5✔
# Set a warning if delta > min-spacing * min-dimension-size / 5✔
# Create Documentation of PODM 3D for Medical Image Computing and Computational Nuclear Femptography


=Adaptivity=
=Adaptivity=

Revision as of 16:39, 18 February 2020

Explore Code

  1. Read PODM3D paper✔
  2. Install all PODM3D libraries✔
  3. Compile PODM3D code✔
  4. Restructure repository of PODM3D based on Software engineering standards✔
  5. Execute PODM3D✔
  6. Read Guaranteed Quality Tetrahedral Delaunay Meshing for Medical Images paper (Sect. 9)
  7. Decouple Args from PODM✔
  8. Create setArguments function✔
  9. Create setInputImage(ImageType::Pointer)✔
  10. Remove IOs from PODM✔
  11. Create setSizingFunction(image, minimumElementEdgeSize, elementWeightLimit)✔
  12. Separate the interface, the IOs and the filters from PODM✔
  13. Write a proper README.md file✔
  14. Create a general PODM driver✔
  15. Set a warning if delta > min-spacing * min-dimension-size / 5✔
  16. Create Documentation of PODM 3D for Medical Image Computing and Computational Nuclear Femptography

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