# 2011 Winter Project Week:MeshCurvolver

## Key Investigators

- Georgia Tech: Peter Karasev, Ivan Kolesov, Anthony Blumfield, Karol Chudy, Allen Tannenbaum
- BWH: Ron Kikinis

### Objective

We are developing methods for segmentation of surfaces defined by polygonal meshes. In image or volume-slice segmentation, 'information' comes from image intensity, while in mesh surface segmentation the information is purely geometric. The goal of this project is to develop algorithms allowing a user to quickly and robustly segment one or several regions on a surface.

Ill-posed mesh data can be avoided by keeping access to the volumetric data to resolve complex regions. "User-Input-Constraints" can be incrementally updated to improve the surface model when needed.

### Approach, Plan

Surface Geometry Computation

Closest Path Between Initial Points

Fast Level Set Implementation for Unstructured Mesh

Support 'global geometry' estimation for statistical analysis versus local-only for fast segmentation

Extend Functionality in VTK and ITK to perform needed operations

- vtkInitClosedPath : take in poly data and set of fiducial points, create a closed path including the closest points on the mesh to the given fiducials. Searches for pre-existence of geometry information, pass-through if it already exists.

- vtkComputeLocalGeometry : take in poly data, compute curvature, its derivatives, and related differential geometric quantities. Uses its own version of curvature computation- vtk versions are not useable because they only consider 1-neighborhood. Searches for pre-existence of geometry information, pass-through if it already exists.

- vtkLevelSetMeshEvolver : take in poly data with a scalar array defining the current region boundaries. Update the boundaries with curve evolution and return poly data with updated scalar array.

- added standalone executable to append surface curvature as a scalar map in vtk poly data

- added GUI program for algorithm development; maintains the volume data, label maps, constraint inputs, and output surface to avoid excess re-computation.

- need to port the mixed matlab/mex/C "SPGL1" package to pure C to solve for sparse solutions to underdetermined systems (generating the surface models)

### Progress

Reviewed the "Slicer4" QT module creation. The current standalone QT gui should be compatible, and allows exploration of best-practices of interactive segmentation.

Created & Verified unit-test for attaching mean curvature from a multi-neighborhood to a mesh data set. Syntax like: ./computeMeanCurvatureNoGUI -i mesh_in.vtp -o mesh_out.vtp

Upon exit, the .vtp data has the attached array, no need to store adjacency tree after this point.

Added structs for encapsulating and visualizing sparse-field layers, example visualization on torus test-case shown. Allows better user feedback and interactivity than previous triangle-based view.

Builds and runs in windows now, thanks to Anthony Blumfield.

## References

P.A. Karasev, J.G. Malcolm, M. Niethammer, R. Kikinis, A. Tannenbaum. User-Driven 3D Mesh Region Targeting. SPIE Medical Imaging 2010.