Giter Club home page Giter Club logo

slicermarkupstomodel's Introduction

Overview

Slicer Markups to Model is an extension of 3D Slicer for creating 3D surface models. The user first specifies a series of input points (as fiducial markups), then the module creates a model from those points. Currently there are two types of surface models that can be created: closed surfaces and curves.

Overview

Example models created using SlicerMarkupsToModel. Left: Closed Surface. Right: Curves.

UseCaseClosedSurface

A simulated tumor is segmented on live ultrasound as a closed surface. Link

UseCaseCurve

Curves are used to reconstruct catheter paths in a phantom. Link (See "Electromagnetically-generated catheter paths for breast brachytherapy")

GUI Features

GUI

The main GUI for this module

The parameter node is used to store all options settings for the module. The parameter node can also be saved along with a Slicer scene. When the scene is later re-opened, all options and settings should be preserved.

The two radio buttons along the top indicate whether the model should be a closed surface or a curve.

The Input Node is used to store input points for the model. There is an option to create a new Markup Fiducials from the drop-down selector. Fiducial markups can be added or deleted using buttons beside the selector. (*Note that advanced users can also take as input a "Model" and work with points from polygonal data).

The Output Model Node stores the model created by this module.

The Update Button can be set either to manual mode (updates only happen when the button is clicked), or to automatic mode (updates happen whenever the parameters are changed or when the input points are changed). Click on the checkbox to toggle between these two modes.

The Display Panel allows convenient access to change basic rendering properties of the model and input markups.

DisplayPanel

The Display Panel as seen in the GUI.

  • Model Visibility: Toggle visibility in all views.

  • Model Opacity: Change opacity. (Larger = more opaque)

  • Model Color: Change the color of the model in all views.

  • Model Slice Intersections: Toggle visibility in the red, yellow, and green slice views. Model Visibility (above) must also be enabled.

  • Markups Text Scale: Change the size of text beside each input markup fiducial.

Closed Surfaces

ClosedSurfaceExample

Left: Example of a closed surface. Right: Example of how a closed surface might look in slice view.

Closed surfaces are convex models that enclose the input points. Every time a new input point is added, the closed surface expands to contain the new input point. There are a variety of parameters that can be tweaked through the Advanced Panel.

AdvancedPanelClosedSurface

Advanced panel when working with a closed surface.

  • Clean Duplicated Markups: Remove duplicates from the input points

  • Smoothing: Make the closed surface smoother by using the "Butterfly Subdivision". Note that sometimes concavities and self-intersections will occur after applying this smoothing. See "Force Convex Output" below.

  • Convexity: Only tetrahedral 'cells' contained in a sphere with this radius will be used to construct the model. Concavities can be introduced by changing this value. (Note that 0.0 means that this feature is ignored, 0.0 is recommended for most applications.)

  • Force Convex Output: The model will become fully convex after all other operations. Used to correct self-intersections introduced by butterfly subdivision.

Curves

CurveExample

Left: Example of a curve. Right: Example of how a curve might look in slice view.

Curves are models shaped like a tube that either interpolate the input points, or approximate them in a best fit. There are in fact four types of curve in this module: Piecewise Linear, Cardinal Spline, Kochanek Spline, and Polynomial. All curves share the following parameters that can be seen on the Advanced Panel.

AdvancedPanelCurve

Advanced panel when working with a curve.

  • Radius: Changes the radius of the tube model (larger = wider tube)

  • Number of Sides: Changes the outer smoothness of a tube model (larger = smoother appearance)

  • Segments Per Point: Changes the number of points used to interpolate/approximate a curve. (larger = smoother appearance)

  • Clean Duplicated Markups: Remove duplicates from the input points

  • Curve is a Loop: Indicate if the Curve should loop from the last point back to the first point.

Piecewise linear curves are the simplest type of curve that can be created. A tube model is created that passes from one input point to the next in the original order specified from the fiducial list.

Cardinal spline curves appear smooth. A tube model is created that passes through each input point in the order specified from the fiducial list. Between each pair of points, there will be some curvature in the model. See Wikipedia to learn more about cardinal splines.

Kochanek spline curves appear smooth. A tube model is created that passes through each input point in the order specified from the fiducial list. Between each pair of points, there will be some curvature in the model. See Wikipedia to learn more about Kochanek splines.

There are a few paramters specific to Kochanek Splines, as seen in the Advanced Panel.

AdvancedPanelCurveKochanek

Additional parameters shown on the Advanced Panel for Kochanek splines.

  • Ends copy nearest derivative: The first and last points should use the tangent from their nearest neighboring points.

  • Kochanek Bias, Kochanek Tension, and Kochanek Continuity: As indicated on Wikipedia.

Polynomial curves appear smooth. Unlike the other types of curve, polynomials approximate the input points instead of interpolating them. The curve is represented using a tube-shaped model.

There are a few parameters specific to Polynomial curves, as seen in the Advanced Panel.

AdvancedPanelCurvePolynomial

Additional parameters shown on the Advanced Panel for polynomials.

  • Polynomial Order: How closely the polynomial should follow the input points. (Larger = closer fit, but also increased risk of overfitting)

  • Point Parameters: This tells the module how to determine the order of the input points. If the input points are already in order, use "Indices". If the point order is unknown but the polynomial should connect the farthest two points, use "Minimum Spanning Tree".

slicermarkupstomodel's People

Contributors

tavaughan avatar lassoan avatar matthewsholden avatar che85 avatar sunderlandkyl avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.