Internal:PODM 3D: Difference between revisions

From crtc.cs.odu.edu
Jump to navigation Jump to search
Spyridon97 (talk | contribs)
Spyridon97 (talk | contribs)
No edit summary
Line 48: Line 48:
# Test if multiple δ works using synthetically generated image data (TODO)
# Test if multiple δ works using synthetically generated image data (TODO)


=Adaptivity=
=Adaptivity Results=
==Implementation of Sizing Function==
# Podm Result of Gagic Data image with volume grading on and δ=6, minimum Volume Size = 0.5, limit = 0.1✔
# Create UML diagrams to understand the code and the Meshing Procedure in general✔
## 2D (Triangle): [[File:NT_X_min_0.5_limit_2e-3_interpolated.png|500px|Nt2DAdaptivity]] (Done by Christos)
# Create a list of functions that need to be modified to implement the extra Rule ✔
## 3D (PODM): [[File:NtAdaptivity.png|500px|Nt3DAdaptivity]] (Done with Christos)
# Modify the created list ([https://docs.google.com/spreadsheets/d/13M6qLRtS3wMH5B8vXwcqA-gP2b9p8QGwbhrn68VXoj0/edit#gid=0 Extra Rule sizing Function list]) of functions✔
# Produce an Animated Adaptive Procedure video http://www.cs.odu.edu/crtc/videos/PODM3D.html ✔
# Create a test sizing function to understand if modifications have been done correctly✔
## The test sizing function is <syntaxhighlight lang="c++" line='line'>
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
}
</syntaxhighlight>
# Create the infrastructure to support Sizing Function pointer✔
# Incorporate Function Pointer to PODM✔
 
==Animated Adaptive Meshing Process==
# Produce the meshes for the Animated Adaptive Meshing Process and the January report✔
# Produce Animated Process:✔
## [[File:InputImage.png|250px|InputImage]] -> Input Image:
## [[File:InputImage.png|250px|InputImage]] -> Input Image:
## [[File:ImageSegmentation.png|250px|ImageSegmentation]] -> Image Segmentation
## [[File:ImageSegmentation.png|250px|ImageSegmentation]] -> Image Segmentation
Line 78: Line 58:
## [[File:AdaptedMesh.png|250px|AdaptedMesh]] -> Adapted mesh
## [[File:AdaptedMesh.png|250px|AdaptedMesh]] -> Adapted mesh
## [[File:LinearInterpolation.png|250px|LinearInterpolation]] -> Linear Interpolation
## [[File:LinearInterpolation.png|250px|LinearInterpolation]] -> Linear Interpolation
# Created videos of the meshing procedure that are accessible on http://www.cs.odu.edu/crtc/videos/PODM3D.html ✔

Revision as of 14:52, 19 February 2020

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 meshes of https://crtc.cs.odu.edu/CNF:Example_Meshes into the Appendix of the November Report✔
  5. Create Documentation of PODM 3D for Medical Image Computing and Computational Nuclear Femptography✔

Execution Examples

  1. Create meshes out of all the images on CNF_SHARE that are representative examples of adaptivity https://crtc.cs.odu.edu/CNF:Example_Meshes ✔
  2. Create meshes for the Medical Image Computing part of PODM examples https://crtc.cs.odu.edu/NRL_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
    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 by creating a setSizingFunction()✔
    7. Replace the test sizing function with the Adaptivity function that was created by Christos✔
    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. Identify places in the code where δ varies with regards to background values (TODO)
  11. 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