3D Adaptive Tetrahedral Mesh Generation in ITK (Fedorov, Chrisochoides, Warfield, Schroeder)

From NAMIC Wiki
Jump to: navigation, search
Home < 3D Adaptive Tetrahedral Mesh Generation in ITK (Fedorov, Chrisochoides, Warfield, Schroeder)

Summary

The document describing the software and the preliminary results can be found here (Insight Journal/MICCAI Workshop on Open Source Software submission).

NAMIC Sandbox project link

Project slide

I have implemented a 3D tesselation algorithm based on body-centered cubic lattice (described by Molino here). The implementation produces adaptive volumetric tetrahedral mesh given binary mask of an object, which is not conformant to the object boundary. I also have preliminary results of boundary compression of that non-conformant mesh using FEM-based physical deformation.

Goal: develop an ITK class which will wrap my implementation. There are two main goals I set: interface and implementation.

Interface: need help in designing easy to use and clear API, and placing my class in the ITK hierarchy.

Implementation: need help in understanding how to use ReinitializeLevelSetImageFilter (if possible, I need better precision of distance calculation in the narrowband near the surface), threads, and FEM framework (for deformation, not registration) within ITK.

Status

The implementation was described in the submission to MICCAI Open Source Software Workshop (see the link above).

Notes from the programming week

Monday

-- met Will, initial discussion and exchange of papers. Looked into ITK FEM: they use #defined ITPACK and VNL for linear solver -- something similar can be done about PETSc in my current deformation code

Tuesday

-- morning: Will. Will suggested to implement refinement and deformation as two separate classes. Need to work out the naming conventions. Interesting suggestions about calculation of the LSF for the initial BCC lattice. Agreed that there should be a mechanism for user-defined refinement callbacks (similar VTK CVS GenericCellTessellator). FEM can be used for deformation, but careful should we be.

-- morning: Will. Procedure of committing code to ITK: simple - not-perfect-but-working(code which follows all conventions + tests + data + documentation in the code) in the sandbox --> ITK.

-- lunch: Torsten. Learned about very fast recent and precise method for distance calculation (2003!). Segmentation averaging for smoothing.

-- afternoon: Luis. Luis suggested to write a simple class VTKUnstructuredGridMeshWriter to remove the dependency on VTK. Kitware will take care of the generic MeshWriter later (TODO: remind them).

-- afternoon: Will. Funding possibilities discussion. Interesting.

-- afternoon: Luis. Licensing issues discussion...... I skip the dinner.

-- afternoon: Randy. Amazing introduction to the brain structure and neuroscience! Have to get sometime the "Brain Atlas" book she mentioned.

-- commited the sources to the sandbox, I forgot about the external code I use. Have to write a simple version, and #define Shewchuk's predicates...

Wednesday

-- morning/noon/evening: extreme debugging in the freezing Grier room

-- afternoon: Luis and Andy. Dart/dashboard/CTest tutorial. Wow.

-- afternoon: Luis. Short discussion on distributed (MPI) parallelization of ITK filters. Non-registration use of ITK FEM framework, pointers to Jim Gee and Tessa from UPenn (FEM developers). Need to look at FFTW (?) on #defined use of external code (Luis).

-- afternoon: Will. Short discussion on naming conventions and API for the mesh deformation class. Some interesting ideas.

-- evening. Established communication with Jim Gee (UPenn). Looks like I may be able to get the FEM deformation examples!

-- evening. Debugging. Managed to eliminate major bugs from the mesher filter, can successfully run the test now. Revision 111 of the SandBox has functional mesher test finally! Surface preparation is not ready yet. TODO: tomorrow work on the deformation class


Discussion


"You have to be careful if you don't know where you're going because you may not get there" --Yogi Berra

"Having no destination, I am never lost" --Ikkyu