-- aerdemir 2016-04-14 17:10:26 This specification is asking for input from the community. Please provide your feedback


Target Outcome

Geometric reconstruction of a tissue of interest ready for meshing:

Prerequisites

Infrastructure

  • SALOME. SALOME is an open-source software that provides a generic platform for pre- (cad, meshing) and post-processing for numerical simulation (LGPL license, see http://www.salome-platform.org/).

  • FreeCAD. FreeCAD is an open-source three-dimensional computer aided design software (GPL and LGPL licenses, see http://www.freecadweb.org/).

  • MeshLab. MeshLab is an open-source, portable, and extensible system for the processing and editing of unstructured 3D triangular meshes (GPL license, see http://meshlab.sourceforge.net/).

  • OpenFlipper. OpenFlipper is an open-source, multi-platform application and programming framework designed for processing, modeling and rendering of geometric data (LGPL license, see http://www.openflipper.org/).

  • PyGTS. PyGTS is a Python binding for the GNU Triangulated Surface (GTS) Library to construct, manipulate, and perform computations on 3D triangulated surfaces, including boolean operations (GPL license, see http://pygts.sourceforge.net/).

  • pyFormex. pyFormex provides a wide range of operations on surface meshes, such as STLs; the software can also be used as a pre- and post-processor for Finite Element analysis programs (GPL license, see http://www.nongnu.org/pyformex).

  • IA-FEMesh. IA-FEMesh is freely available, interactive, structured hexahedral mesh generation software relying on surface projection method (BSD style license, see http://www.ccad.uiowa.edu/MIMX/projects/IA-FEMesh).

  • Blender. Blender is the free and open source 3D creation suite, which supports the entirety of the 3D pipeline, including: modeling, rigging, animation, simulation, rendering, compositing, motion tracking, video editing, and game creation. (GPL license, see https://www.blender.org/).

Previous Protocols

For more details, see Specifications/ImageSegmentation.


Protocols

Input

Procedures

-- aerdemir 2013-12-30 15:14:36 This section may list general purpose procedures and alternatives to utilize the same input to reach the same output. Procedures optimized for specific tissues should also be provided in here.

When starting with volume representation

When starting with surface representation

When parametric geometry is needed


Slicer Procedures

Generate Triangulated Surface (STL) with Laplacian Smoothing


MeshLab Procedures

Input/Output

IMPORT STL:

  1. File -> 'Import Mesh...'

  2. Select desired STL file(s) (multiple contiguous by holding 'Shift', multiple non-contiguous by holding 'Ctrl').
  3. Click 'Import STL'.

EXPORT STL:

  1. Select desired mesh to export from the Layer hierarchy (display by selecting 'stack of planes' icon above 3D viewport).
  2. File -> 'Export Mesh As...'.

  3. Name file as desired, with the '.stl' extension.
  4. Click 'Save'

Remeshing, Simplification and Reconstruction

Surface Reconstruction: VCG
  1. Select desired mesh from the Layer hierarchy panel.
  2. Filters -> 'Remeshing, Simplification and Reconstruction' -> 'Surface Reconstruction: VCG'

  3. Set 'Voxel Side', 'world unit' to a meaningful size (i.e. relative to original image resolution; e.g. for cartilage images with a resolution of 0.35 x 0.35 x 0.7 mm, use a world unit of 0.35, 0.5, 0.7 mm).
  4. Select 'Post Merge Simplification'.
  5. Click 'Apply'.

IF STL FRAGMENTS APPEAR AT MODEL EDGES AFTER RECONSTRUCTION:

  1. TODO: Describe selecting/deleting floating STL fragments!

NOTES:

Iso Parameterization
  1. Select desired mesh from the Layer pane.
  2. Filters -> 'Remeshing, Simplification and Reconstruction' -> 'Iso Parameterization'

  3. Click 'Apply.

IF DOUBLE STEP DOESN'T WORK:

  1. Deselect 'Double Step'.
  2. Click 'Apply.

WARNINGS:

Iso Parameterization Remeshing
  1. Filters -> 'Remeshing, Simplification and Reconstruction' -> 'Iso Parameterization Remeshing'

  2. Try default 'Sampling Rate' = 10.
  3. Click 'Apply'.
  4. If needed, iterate last two steps, changing the 'Sampling Rate' until desired surface triangle size is obtained.

Smoothing

Taubin Smoothing
  1. Filters -> 'Smoothing, Fairing and Deformation' -> 'Taubin Smoothing'

  2. Select 'Preview' to interactively display current smoothing parameters.
  3. Click 'Apply'.

USEFUL FOR:

NOTES:

Paired Mesh Distance Mapping (Hausdorff distance)

  1. Import desired STL(s).

COMPUTE DISTANCE MAP:

  1. Filters -> Sampling -> Hausdorff Distance.

  2. Set the 'Sampled Mesh' to the desired reference surface (i.e. the surface that the colored distance map will be displayed on, mapped at vertices).
  3. Set the 'Target Mesh' to the surface used to determine the distance map (from the reference surface vertices).
  4. Click 'Apply'.

DISPLAY DISTANCE MAP:

  1. Make sure the desired reference map is selected in the Layer hierarchy.
  2. Display -> 'Show Vert Quality Histogram'.

  3. Filters -> 'Color Creation and Processing' -> 'Color by vertex Quality'.

  4. Set 'Min' to 0.
  5. Set 'Max' to an appropriate level (suggestion: aim for distance ~zero-count transition in histogram).
  6. Select 'Preview' to interactively display currently calculated distance map on the surface.
  7. Iterate last three steps until desired color-to-distance correspondence is determined.
  8. Click 'Apply'.


Blender Procedures

Input/Output

IMPORT STL:

  1. File -> Import -> 'Stl (.stl)'.

  2. Select desired STL file(s) (multiple contiguous by holding 'Shift', multiple non-contiguous by holding 'Ctrl').
  3. Click 'Import STL'.

EXPORT STL:

  1. Select the desired mesh to export from the hierarchical Outliner editor pane (default: upper right).
  2. File -> Export -> 'Stl (.stl)'

  3. Specify a desired folder and filename (extension: .stl).
  4. Click 'Export STL'.

Useful Shortcuts

3D Viewport Interaction

Triangulated surface mesh (STL) splitting

In order to determine tissue thickness for thin structures (e.g. cartilage, ligament, tendon) using MeshLab, the manifold (water-tight) triangulated surface mesh must be split into to non-manifold, complementary shells. The procedure to do this is as follows:

  1. Import desired STL(s).
  2. Ensure you are in 'Object Mode' (shown in drop-down menu underneath the 3D Viewport).
  3. Selected the desired STL with one of the following options:
    1. In the 'Outliner' panel (default: upper right), showing the scene graph and datablocks hierarchy, left-click the desired STL.
    2. In the 3D View, right-click on the desired STL interactively.
  4. Hit 'Tab' to change to 'Edit Mode'.
  5. Make sure 'Face Select' mode is selected:
    • in the 3D Viewport menu (underneath), left-click the icon showing a cube with one orange face (in a group of three icons, in the ).
  6. Press 'a' to deselect all faces (automatically selected by default when entering 'Edit Mode').
  7. SELECT DESIRED SET OF CONTIGUOUS TRIANGLES:
    • Right-click a single triangular face on the desired side of the thin model component.
    • In 3D Viewport menu -> Select -> 'Linked Flat Faces':

    • Adjust Sharpness (angle: degrees) until the desired set of contiguous triangular faces are obtained (determine the max. angle that includes the largest region of one side of the thin structure, without spilling over onto the opposite face of the structure).
    • MODIFY SELECTION, IF NEEDED:
      1. Add/select 'holes' (unselected triangles) in contiguously selected region: use 'Circle Select' or 'Lasso Select'
      2. Tidy boundary of select contiguous triangles: use 'Circle Select'
  8. PARTITION STL MESH:
    • Press 'p' ('Separate').
    • From Pop-up menu -> 'Selection P'


General Procedures

General Procedure: NO Smoothing (RAW)

  1. Slicer:

    1. Load desired segmented label map/image volume.
    2. Generate triangulated surface (STL) from desired component using (Smooth = 0, Decimate = 0, 'Post Merge Simplification').
    3. Save STL to file using naming convention (Specifications/DataManagement).

General Procedure: Smoothing (LVTIT)

  1. Slicer:

    1. Load desired segmented label map/image volume.
    2. Generate triangulated surface (STL) from desired component using 'Laplacian Smoothing' [L] (Smooth = 20, Decimate = 0, 'Post Merge Simplification'), to provide maximum mesh volume prior to following processing steps, which tend to shrink the volume.
    3. Save STL to file using naming convention (Specifications/DataManagement).

  2. Meshlab:

    1. Load STL generated in prior step.
    2. Perform 'Surface Reconstruction: VCG' [V] ('Voxel Side'(world unit) = 0.35-0.7, for cartilage MRI, resolution = 0.35 x 0.35 x 0.7 mm), to smooth out step-i-ness of mesh.
    3. Perform 'Taubin Smoothing' [T] (Lambda = 0.5, mu = -0.53), to make discretized triangules more uniform in areas of high curvature or triangle node density.
    4. Perform 'Iso Parametrization' [I].
    5. Perform 'Iso Parametrization Remeshing' (Sampling rate = 3-20).
    6. Perform 'Taubin Smoothing' [T] (Lambda = 0.5, mu = -0.53), to untwist potentially collapsed triangles at focal points from iso parametrization.


Component-Specific Procedures

Registration Markers

'General Procedure: NO Smoothing' (RAW):

  1. Slicer: Smooth = 0, Decimate = 0, 'Post Merge Simplification'

Bones

'General Procedure: Smoothing' (LVTIT) parameters for femur (FMB), tibia (TBB):

  1. [L]aplacian Smoothing: Smooth = 20, Decimate = 0, 'Post Merge Simplification'
  2. [V]CG Surface Reconstruction: Voxel Side (world unit) = 0.7
  3. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)
  4. [I]soParameterization: Sampling Rate = 10
  5. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)

oks001_MRC_FMB_LVTIT_10.png oks001_MRC_TBB_LVTIT_10.png

'General Procedure: Smoothing' (LVTIT) parameters for patella (PTB):

  1. [L]aplacian Smoothing: Smooth = 20, Decimate = 0, 'Post Merge Simplification'
  2. [V]CG Surface Reconstruction: Voxel Side (world unit) = 0.5
  3. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)
  4. [I]soParameterization: Sampling Rate = 7
  5. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)

oks001_MRC_PTB_LVTIT_07.png

'General Procedure: Smoothing' (LVTIT) parameters for fibula (FBB):

  1. [L]aplacian Smoothing: Smooth = 20, Decimate = 0, 'Post Merge Simplification'
  2. [V]CG Surface Reconstruction: Voxel Side (world unit) = 0.5
  3. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)
  4. [I]soParameterization: Sampling Rate = 5
  5. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)

oks001_MRC_FBB_LVTIT_05.png

Cartilage

'General Procedure: Smoothing' (LVTIT) parameters for femoral cartilage (FMC):

  1. [L]aplacian Smoothing: Smooth = 20, Decimate = 0, 'Post Merge Simplification'
  2. [V]CG Surface Reconstruction: Voxel Side (world unit) = 0.35
  3. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)
  4. [I]soParameterization: Sampling Rate = [10,15,20] (low density, mid density, high density)
  5. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)

oks001_MRC_FMC_LVTIT_10.png oks001_MRC_FMC_LVTIT_15.png oks001_MRC_FMC_LVTIT_20.png

'General Procedure: Smoothing' (LVTIT) parameters for tibial cartilage (TBC-M, TBC-L):

  1. [L]aplacian Smoothing: Smooth = 20, Decimate = 0, 'Post Merge Simplification'
  2. [V]CG Surface Reconstruction: Voxel Side (world unit) = 0.35
  3. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)
  4. [I]soParameterization: Sampling Rate = [7,10,13] (low density, mid density, high density)
  5. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)

oks001_MRC_TBC-M_LVTIT_07.png oks001_MRC_TBC-L_LVTIT_07.png

'General Procedure: Smoothing' (LVTIT) parameters for patellar cartilage (PTC):

  1. [L]aplacian Smoothing: Smooth = 20, Decimate = 0, 'Post Merge Simplification'
  2. [V]CG Surface Reconstruction: Voxel Side (world unit) = 0.35
  3. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)
  4. [I]soParameterization: Sampling Rate = [(6),8,10,(12)] (low density, mid density, high density)
  5. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)

oks001_MRC_PTC_LVTIT_06.png

Menisci

Modified 'General Procedure: Smoothing' (LIT) parameters for mensici (MNS-M, MSN-L):

  1. [L]aplacian Smoothing: Smooth = 20, Decimate = 0, 'Post Merge Simplification'
  2. [I]soParameterization: Sampling Rate = [6,8,10] (low density, mid density, high density)
  3. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)

NOTE: Modified General Procedure preserves volume better for thin, highly curved geometry, but doesn't smooth segmentation aliasing.

oks001_MRC_MNS-M_LIT_06.png oks001_MRC_MNS-L_LIT_06.png

Connective Tissue - Ligaments & Tendons

'General Procedure: Smoothing' (LVTIT) parameters for ACL, PCL:

  1. [L]aplacian Smoothing: Smooth = 20, Decimate = 0, 'Post Merge Simplification'
  2. [V]CG Surface Reconstruction: Voxel Side (world unit) = 0.35
  3. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)
  4. [I]soParameterization: Sampling Rate = [3,4,5] (low density, mid density, high density)
  5. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)

oks001_MRC_ACL_LVTIT_03.png oks001_MRC_PCL_LVTIT_03.png

'General Procedure: Smoothing' (LVTIT) parameters for patellar ligament (PTL):

  1. [L]aplacian Smoothing: Smooth = 20, Decimate = 0, 'Post Merge Simplification'
  2. [V]CG Surface Reconstruction: Voxel Side (world unit) = 0.35
  3. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)
  4. [I]soParameterization: Sampling Rate = [6,8,10] (low density, mid density, high density)
  5. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)

oks001_MRC_PTL_LVTIT_06.png

'General Procedure: Smoothing' (LVTIT) parameters for quadriceps tendon (QAT):

  1. [L]aplacian Smoothing: Smooth = 20, Decimate = 0, 'Post Merge Simplification'
  2. [V]CG Surface Reconstruction: Voxel Side (world unit) = 0.35
  3. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)
  4. [I]soParameterization: Sampling Rate = [4,6,8] (low density, mid density, high density)
  5. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)

oks001_MRC_QAT_LVTIT_04.png

Modified 'General Procedure: Smoothing' (LVIT) parameters for MCL:

  1. [L]aplacian Smoothing: Smooth = 20, Decimate = 0, 'Post Merge Simplification'
  2. [V]CG Surface Reconstruction: Voxel Side (world unit) = 0.35
  3. [I]soParameterization: Sampling Rate = [6,7,8] (low density, mid density, high density)
  4. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)

oks001_MRC_MCL_LVIT_06.png

Modified 'General Procedure: Smoothing' (LIT) parameters for LCL:

  1. [L]aplacian Smoothing: Smooth = 20, Decimate = 0, 'Post Merge Simplification'
  2. [I]soParameterization: Sampling Rate = [3,4,5] (low density, mid density, high density)
  3. [T]aubin Smoothing: Lambda = 0.5, mu = -0.53 (defaults)

oks001_MRC_LCL_LIT_03.png

Sample Results

Following are images at ~90 degree increments about the full 3D STL model showing the coarsest triangulated surface geometry.

oks001_3D_STL_coarse_1.png oks001_3D_STL_coarse_2.png oks001_3D_STL_coarse_3.png oks001_3D_STL_coarse_4.png

Output