Differences between revisions 31 and 32
Revision 31 as of 2016-03-25 17:51:32
Size: 21657
Comment:
Revision 32 as of 2016-03-25 18:06:22
Size: 21669
Comment:
Deletions are marked like this. Additions are marked like this.
Line 317: Line 317:
'General Procedure' (LVTIT) parameters for '''patellar ligament''': 'General Procedure' (LVTIT) parameters for '''patellar ligament''' (PTL):
Line 325: Line 325:
'General Procedure' (LVTIT) parameters for '''quadriceps tendon''': 'General Procedure' (LVTIT) parameters for '''quadriceps tendon''' (QAT):

TableOfContents()

Target Outcome

Geometric reconstruction of a tissue of interest ready for meshing:

  • as a (parametric or explicit) watertight surface representation, or
  • as a solid geometry

Prerequisites

Include(Infrastructure/AuxiliarySoftware, "Infrastructure", 2, from="= Geometry & Mesh Generation & Manipulation =", to="= Scripting & Numerical Analysis =")

Previous Protocols

For more details, see ["Specifications/ImageSegmentation"].


Protocols

Input

  • Volume of tissue of interest as a binary image aligned with original MRI coordinate system (raw, without filtering and smoothing)
  • Surface representation of tissue of interest in STL format in MRI coordinate system (raw, without filtering and smoothing)

Procedures

-- ["aerdemir"] DateTime(2013-12-30T15:14:36Z) 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

  • Confirm the tissue volume is a raw representation (without filtering and smoothing)
  • Generate raw surface representation of the tissue volume
    • Upload tissue volume in image segmentation software, e.g. Slicer.
    • Generate water-tight triangulated surface representation (no filtering, smoothing).
    • Save raw surface representation with the same file name as the volume representation except with the .stl extension.
  • Continue with the next section.

When starting with surface representation

  • Load raw surface representation of the tissue volume in MeshLab.

  • Smooth raw surface representation, e.g.:
    • Under Filters->Smoothing->Laplacian Smooth, Select smoothing steps of 9 and uncheck all other boxes and apply. This will smooth down most jagged edges from the original file

    • Under Filters->Smoothing->Two Step Smooth, Select smoothing steps of 3, Feature Angle Threashold at 60, Normal smoothing steps at 20, and Vertex Fitting steps at 20 and apply. This step further levels uneven edges

    • Under Filters->Smoothing->Taubin Smooth, Select Lambda to 1, mu to 0.0, and Smoothing steps to 12, all boxes are unchecked and press apply. This step creates an overall uniform surface with few rough edges, while still keeping the shape of the initial object. Some values may vary depending on the model input, this selection works for large bones like the femur.

  • Parametrize and resample smoothed surface representation.
  • Save smooth surface representation with the same file name as the volume representation except with trailing text of 'smooth'.

When parametric geometry is needed


Slicer Procedures

Generate Triangulated Surface (STL) with Laplacian Smoothing

  • From the Modules drop-down menu, select 'Surface Models' -> 'Model Maker'

    • Under 'IO' tab, from 'Input Volume' drop-down menu, select desired Label Map
    • In Model drop-down menu, either 'Create and rename new Hierarchy' (e.g. default 'Models'), or select an existing Model Hierarchy.
      • NOTE: all models can be generated under the same or separate model hierarchies
    • Under 'Create Model' tab, specify a desired 'Model Name' for the select Label Map.
    • If no smoothing is desired, under 'Model Maker Parameters', set 'Smooth' to zero.
    • If no decimation is desired (nodes at every voxel corner), under 'Model Maker Parameters', set 'Decimate' to zero.
    • Click Apply button.


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:

  • Increasing 'Volume Laplacian iter' decreases resulting reconstructed volume.
  • Changing 'Widening' had no visual effect.

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:

  • This can be buggy, and may cause MeshLab to crash!

  • This appears not to be deterministic, i.e. with same input mesh it may or may not work (e.g. same VCG parameters to smooth prior to isoparameterization didn't work in one attempt, but did in another).

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:

  • Smoothing vertices/nodes at sharply curved model edges.
  • Correcting twisted triangles at focal points following 'Iso Parameterization'.

NOTES:

  • Suggested settings: Lambda = 0.5, mu = -0.5
  • Lambda values > 1.5 cause the mesh to jaggedly explode.

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

  • 'n': show 3D Viewport Panel Options
  • 'Tab': switch between 'Object Mode' (default) and 'Edit Mode'
  • 'p' (-> : split selected surface mesh triangles into two complementary sets

  • 'a': toggle, select all/none
  • 'c': 'Circle Select'
    • Left-click: select
    • Middle mouse button, scroll wheel (click): deselect
    • Middle mouse button, scroll wheel (scroll): change size of circular selection area
  • 'Esc': cancel current active tool

3D Viewport Interaction

  • Left mouse button:
    • ['Object Mode']: position cursor
    • ['Edit Mode']: select specified sub-geometry (node/edge/face)
      • IF TOOL IS ACTIVE: apply active tool
      • ('Ctrl'+_): lasso select
      • ('Ctrl'+'Shift'+_): lasso deselect
  • Middle mouse button, scroll wheel (click): rotate 3D view
    • ('Ctrl'+_) zoom in/out (continuous)
    • ('Shift'+_) pan
  • Middle mouse button, scroll wheel (scroll): zoom in/out (discrete steps)
  • Right mouse button:
    • [Object Mode]: select object
    • [Edit Mode]: activate/deactivate tool (default tool: translate selection)

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'


Component-Specific Procedures

General Procedure (a.k.a. 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.
  2. Meshlab:

    1. Load STL generated in prior step.
    2. Perform 'Surface Reconstruction: VCG' [V] ('Voxel Side'(world unit) = 0.35-0.7), to smooth out step-i-ness of mesh.
    3. Perform 'Taubin Smoothing' [T] (Lambda = 0.5, mu = -0.5), 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 = 5-15).
    6. Perform 'Taubin Smoothing' [T] (Lambda = 0.5, mu = -0.5), to untwist potentially collapsed triangles at focal points from iso parametrization.

Registration Markers

Bones

'General Procedure' (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)

'General Procedure' (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)

'General Procedure' (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)

Cartilage

'General Procedure' (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)

'General Procedure' (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)

'General Procedure' (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)

Menisci

Modified 'General Procedure' (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.

Connective Tissue - Ligaments & Tendons

'General Procedure' (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)

'General Procedure' (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)

'General Procedure' (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)

Modified 'General Procedure' (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)

Modified 'General Procedure' (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)


Results

Following are examples (oks001) of distance maps (using MeshLab: Hausdorf distance) between various pairs of surfaces to assess:

  1. spatial error between corresponding surfaces with varying levels of smoothing/refinement
  2. distance between different model components (e.g. femur vs. femur cartilage, BACK SURFACE)
  3. thickness of model components (e.g. cartilage):

To map tissue thicknesses (e.g. cartilage), opposing surfaces (i.e. BACK SURFACE, FRONT SURFACE) from a manifold (i.e. watertight) STL mesh were split into two complementary, shell STL mesh sets using Blender.

NOTE: all units are displayed in mm.

Smoothing Errors

UNSMOOTHED vs. SMOOTHED:

Distance between Model Components

FEMUR vs. FEMUR CARTILAGE:

FEMUR CARTILAGE vs. FEMUR:

Tissue Thickness

FEMUR CARTILAGE THICKNESS (UNSMOOTHED):

FEMUR CARTILAGE THICKNESS (VCG smoothed, 0.7):

FEMUR CARTILAGE THICKNESS (VCG smoothed, 0.7; ISO, 10):

FEMUR CARTILAGE THICKNESS (LVTIT):

NOTE: spurious distances (0.0 mm, which are known not to be correct) are present only in the FRONT SURFACE (REF) vs BACK SURFACE, despite similar relative normal directions between reference and measured surfaces!!!


Output

  • Explicit surface representation of tissue of interest; in STL format in MRI coordinate system (processed with volume preserving smoothing)
  • Parametric surface representation of tissue of interest in IGES & STP format in MRI coordinate system (processed with volume preserving smoothing)

  • Parametric solid model of tissue of interest in IGES & STP format in MRI coordinate system (processed with volume preserving smoothing)

Specifications/GeometryGeneration (last edited 2020-10-13 13:59:46 by klonowe)