Internal:PODM 3D: Difference between revisions
Jump to navigation
Jump to search
Spyridon97 (talk | contribs) |
Spyridon97 (talk | contribs) |
||
| Line 64: | Line 64: | ||
# Remove redundant volume threadhold checks that don't contribute anything to the meshing procedure | # Remove redundant volume threadhold checks that don't contribute anything to the meshing procedure | ||
==Summer 2020== | ==Summer 2020== | ||
# Identify Voids, Pockets, Depressions from Molecular meshes | # Identify Voids, Pockets, Depressions from Molecular meshes (TODO) | ||
## Research State of the art algorithm for such procedures | ## Research State of the art algorithm for such procedures (TODO) | ||
## Implement the best algorithms | ## Implement the best algorithms (TODO) | ||
### Sequentially | ### Sequentially (TODO) | ||
### In parallel | ### In parallel (TODO) | ||
# Produce the Voronoi Mesh out of the Delaunay (TODO) | # Produce the Voronoi Mesh out of the Delaunay (TODO) | ||
## Check what TetGen does (TODO) | ## Check what TetGen does (TODO) | ||
Revision as of 17:12, 30 April 2020
Documentation
Fall 2019
- Read PODM3D paper✔
- Read Guaranteed Quality Tetrahedral Delaunay Meshing for Medical Images paper (Sect. 9) (TODO)
- Write a proper README.md file✔
- Add the CNF Example Meshes into the Appendix of the November Report✔
- Create CNF Adaptivity Report
Spring 2020
- Create a User Manual for PODM 3D and Tessellate2D within the fields of Medical Image Computing and Computational Nuclear Femptography ✔
Execution Examples
Fall 2019
- Create meshes for the Computational Nuclear Femtography part of CRTC_I2M_Suite Documentation. CNF Example Meshes ✔
Spring 2020
- Create meshes for the Medical Image Computing part of CRTC_I2M_Suite Documentation. Medical Imaging Example Meshes ✔
Code Changes
Fall 2019
- Restructure repository of PODM3D based on Software engineering standards✔
- Decouple Args from PODM✔
- Create setArguments function✔
- Create setInputImage(ImageType::Pointer)✔
- Remove IOs from PODM✔
- Implement a sizing function that will work as an extra rule and it will use the point indices of the tetrahedron that is tested✔
- Create UML diagrams to understand the code and the Meshing Procedure in general✔
- Create a list of functions that need to be modified to implement the extra Rule ✔
- Modify the created list (Extra Rule sizing Function list) of functions✔
- 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 }
- Create the infrastructure to support Sizing Function pointer✔
- Incorporate Function Pointer to PODM by creating a setSizingFunction()✔
- Replace the test sizing function with the Adaptivity function that was created by Christos (The algorithm is described here)✔
- Understand that the current implementation supports negative weights✔
- Change the current implementation to use the minimum-maximum edge length of the element instead of its volume✔
- Identify an issue of checking sample points outside the image and solve it according to Christos's suggestions✔
- Separate the interface, the IOs and the filters from PODM✔
Spring 2020
- Create a general PODM driver✔
- Set a warning if delta > min-spacing * min-dimension-size / 5✔
- Set a default delta:
- if sizing-function is off then default delta = min-spacing * min-dimension-size / 100✔
- if sizing-function is off then default delta = min-spacing * min-dimension-size / 20✔
- Remove labels array of output mesh if tissues of interest < 2✔
- Print a warning if a tissue is not recovered✔
- Add Numa flag in CmakeLists.txt ✔
- Add binary file support ✔
- Improve Text output ✔
- Create label-filter to filter labels of images properly ✔
- Remove redundant volume threadhold checks that don't contribute anything to the meshing procedure
Summer 2020
- Identify Voids, Pockets, Depressions from Molecular meshes (TODO)
- Research State of the art algorithm for such procedures (TODO)
- Implement the best algorithms (TODO)
- Sequentially (TODO)
- In parallel (TODO)
- Produce the Voronoi Mesh out of the Delaunay (TODO)
- Check what TetGen does (TODO)
- Research conversion methods (TODO)
- Extract Mesh in Parallel function (TODO)
- Create GetCleanMeshParallel function ✔
- Create a flag that allows duplicate points, therefore multiple output mesh files that have a header file, which minimizeσ the IO time (TODO)
- Test it (TODO)
- Μultiple δ (TODO)
- Fix multiple δ (TODO)
- Use different δ values (possibly uniform based) according to the surface of each label of a segmented image (TODO)
- Implement Smoothing (TODO)
- Update and remove existing libraries
- ITK
- Update PODM code ✔
- Test code (TODO)
- CGAL
- Replace CGAL predicates with PCK
- Benchmark: PCK vs CGAL Predicates Benchmark
- Paper: Predicate Construction Kit Paper
- Code: Predicate Construction Kit Code
- Replace CGAL predicates with PCK
- Boost
- Replace Boost library with std::thread (ask Christos for Barrier or wait for C++20)
- ITK