Difference between revisions of "2011 Winter Project Week:MeshCurvolver"
(Created page with '__NOTOC__ <gallery> Image:PW-SLC2010.png|Projects List Image:BrainH.png|Surface Mean Curvature Image:Sulci6_done2.png|Converged Contour Surr…') |
|||
(4 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
Image:BrainH.png|Surface Mean Curvature | Image:BrainH.png|Surface Mean Curvature | ||
Image:Sulci6_done2.png|Converged Contour Surrounding Region | Image:Sulci6_done2.png|Converged Contour Surrounding Region | ||
− | Image: | + | Image:Sfls_donut.png|Sparse Field Levelset Layer Visualization |
+ | Image:Meancurve_slicer_data1.png|Unittest output: mean curvature on a slicer test dataset | ||
Image:bone-end3.png|Segmenting Tibia Fracture via Surface Geometry | Image:bone-end3.png|Segmenting Tibia Fracture via Surface Geometry | ||
Image:Surface_H_c.png|Surface curvature display for segmented colon MRI in Slicer | Image:Surface_H_c.png|Surface curvature display for segmented colon MRI in Slicer | ||
− | Image: | + | Image:KSlice1.png|Femur Surface Segmentation |
+ | Image:constraint_example_pts.png|User-Constraint Input Points in a Slice | ||
</gallery> | </gallery> | ||
== Key Investigators == | == Key Investigators == | ||
− | * Georgia Tech: Peter Karasev, Karol Chudy, Allen Tannenbaum | + | * Georgia Tech: Peter Karasev, Ivan Kolesov, Anthony Blumfield, Karol Chudy, Allen Tannenbaum |
* BWH: Ron Kikinis | * BWH: Ron Kikinis | ||
Line 18: | Line 20: | ||
<h3>Objective</h3> | <h3>Objective</h3> | ||
− | 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 | + | 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. | ||
</div> | </div> | ||
Line 35: | Line 38: | ||
Extend Functionality in VTK and ITK to perform needed operations | 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. | * 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. | ||
Line 43: | Line 44: | ||
* 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. | * 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) | ||
</div> | </div> | ||
− | <div style="width: | + | <div style="width: 30%; float: left;"> |
+ | |||
+ | <h3>Progress</h3> | ||
+ | |||
+ | 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. | ||
</div> | </div> |
Latest revision as of 14:24, 14 January 2011
Home < 2011 Winter Project Week:MeshCurvolverKey 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.