sebastianandress / Slicer-SurfaceWrapSolidify

3D Slicer extension which contains a Segment Editor Effect that solidifies and extracts the surface of a segmentation
Other
28 stars 7 forks source link
3d-slicer-extension

Header

Surface Wrap Solidify

This module for 3D Slicer that can fill in internal holes in a segmented image region or retrieve the largest cavity inside a segmentation.

Copyright © 2020, Sebastian Andreß\ All rights reserved. Please find the license here.

Please cite the corresponding paper when using this filter for publications:

@article{3DPrintWrapSolidify,
    author      = {Weidert, Simon and Andress, Sebastian and Linhart, Christoph and Suero, Eduardo M. and Greiner, Axel and Böcker, Wolfgang and Kammerlander, Christian and Becker, Christopher A.},
    title       = {3D printing method for next-day acetabular fracture surgery using a surface filtering pipeline: feasibility and 1-year clinical results},
    journal     = {International Journal of Computer Assisted Radiology and Surgery},
    publisher   = {Springer},
    date        = {2020-01-02},
}

Introduction

This segmentation tool was designed for creating fractured bone models for fast 3D printing. Especially in orthopedic trauma surgery, the editing time, as well as the printing time should be as short as possible. Using this effect helps to fulfil both features. Also, by removing inner cancellous structures, it is possible to achieve a fracture reduction on the printed model.

In our use-case, we used this effect after applying a simple threshold operation and separating the bone with simple brushing and island techniques. See the workflow example videos. The effect was tested on more than 30 acetabular fracture models, it reduced the printing time about 70%.

While the segmentation tool was originally designed for 3D printing fractured bone models, it has proven to be effective in a wide range of other applications that require removing or segmenting internal holes in a segment.

Screenshot

How to install

How to use

Threshold Video Preview Image

Processing Video Preview Image

Example processing result:

Results Image

Processing parameters

How it works

The algorithm was modified compared to the originally published method, to make it more robust, faster, and reduce the number of parameters that users must specify. The algorithm was also extended to be able to get cavities (internal surfaces) in a segmentation.

The Wrap Solidify Effect internally performs the following operations:

  1. A surface representation of the selected segment is created (segmented model).
    • Smoothing Factor defines smoothing of the input surface representation
  2. Initial surface is generated:
    • For outer surface extraction: A larger model is created around the input segmentation. The model is a large enclosing sphere if carve holes is disabled, otherwise a margin growing result.
    • For largest cavity extraction: A larger model is created around the input segmentation, it is inverted, shrunk by the value specified in split cavities, and the largest segment is preserved.
  3. Shrinkwrapping (iteratively shrinking and uniformly remeshing the sphere model to the segmented model) is used for surface definition.
    • Number of iterations is used to define the number of iterations. The algorithm is more robust but it takes longer if many small iterations are performed.
    • Smoothing Factor specifies strength of the filter that performs surface smoothing constrained to the original input surface.
    • Oversampling is used to define resolution of remesh. Higher value results in higher accuracy but longer computation time.
  4. If create shell is enabled then a thin shell is created from the segment by extruding the surface in normal direction by Output shell thickness. If preserve surface cracks option is enabled: all vertices of the surface model that are not touching the segmented model are deleted before extruding.
  5. If output is segmentation: The resulting surface model is converted into a segmentation by rasterizing the closed surface into a binary labelmap.

Acknowledgments

Thanks a lot to Andras Lasso for also contributing and improving the module.

Contact information

For further collaborations, patient studies or any help, do not hesitate to contact Sebastian Andreß.