Difference between revisions of "Modules:Measurements-Documentation-3.6"

From Slicer Wiki
Jump to: navigation, search
 
(15 intermediate revisions by 2 users not shown)
Line 8: Line 8:
  
 
{|
 
{|
|[[Image:Slicer3.5MeasurementsRulerGUI.jpeg|thumb|280px|Measurements: Ruler GUI - To Be Updated]]
+
|[[Image:Slicer3.6MeasurementsRulerGUI.jpg|thumb|280px|Measurements: Ruler GUI]]
|[[Image:Slicer3.5MeasurementsAngleGUI.jpeg|thumb|280px|Measurements: Angle GUI - To Be Updated]]
+
|[[Image:Slicer3.6MeasurementsAngleGUI.jpg|thumb|280px|Measurements: Angle GUI]]
|[[Image:Slicer3.5MeasurementsRulersModel.jpeg|thumb|280px|Using a ruler to measure between points on a model]]
+
|[[Image:Slicer3.6MeasurementsRulersModel.jpg|thumb|480px|Using a ruler to measure between points on a model, and an angle to measure between points on a model]]
 
|}
 
|}
  
Line 31: Line 31:
  
 
== Usage ==
 
== Usage ==
 +
 +
A ruler can be created between fiducial points by pressing Control-m .
  
 
In order to get the end points of the ruler or the angle to move along a selected model surface, you currently need to rotate the view so that the handle is rendered on top of the model, the next click will snap it to the model surface. If you move the model or slice plane, the measurement point won't move with it, the constraint only works when moving the end point handle. If you make the model or slice invisible, the end point cannot be moved, as the constraint will always be false.
 
In order to get the end points of the ruler or the angle to move along a selected model surface, you currently need to rotate the view so that the handle is rendered on top of the model, the next click will snap it to the model surface. If you move the model or slice plane, the measurement point won't move with it, the constraint only works when moving the end point handle. If you make the model or slice invisible, the end point cannot be moved, as the constraint will always be false.
Line 45: Line 47:
 
Examples of the module in use:
 
Examples of the module in use:
  
* Example 1: Attach/constrain end points of the widgets to volume slices to measure distances and angles between image features.
+
* Example 1: Place two fiducial points, press Control-m to create a new ruler between the fiducials, and then the two fiducials.are deleted. A name can be given to add to the ruler annotation text. Uses the last two selected fiducials of the active fiducial list.
* Example 2: Attach/constrain end points of the widgets to models to measure distances and angles between 3D structures.
+
* Example 2: Attach/constrain end points of the widgets to volume slices to measure distances and angles between image features.
 +
* Example 3: Attach/constrain end points of the widgets to models to measure distances and angles between 3D structures.
  
 
===Tutorials===
 
===Tutorials===
Line 56: Line 59:
  
 
===Quick Tour of Features and Use===
 
===Quick Tour of Features and Use===
 
+
{|
 +
|
 
* '''Ruler Widget panel:'''
 
* '''Ruler Widget panel:'''
 
**'''Modify All Ruler Nodes panel'''
 
**'''Modify All Ruler Nodes panel'''
 
***Select the visibility of all ruler nodes. Set all rulers invisible or set all rulers visible.
 
***Select the visibility of all ruler nodes. Set all rulers invisible or set all rulers visible.
 +
***Delete all ruler nodes from the scene.
 +
***Generate Report: saves basic information about all rulers in the scene to a file on disk (distance, position, annotation). If a CSV (comma separated value) format is chosen, the information is separated by commas, if .txt is chosen, the information is separated by tabs.
 
**'''Modify Selected Ruler Node panel'''
 
**'''Modify Selected Ruler Node panel'''
***Ruler Node Select: create a new ruler node or show the parameters of a previously created ruler node
+
***Ruler Node Select: create a new ruler node, show the parameters of a previously created ruler node, delete or rename a ruler node
***Toggle Visibility: if checked, this ruler is visible, if not, this ruler is invisible.
+
***Distance: the distance between the end points of the current ruler, updated as the end points move.
***Position 1 and Position 2: ruler end point positions, updates when the ruler handles are moved in 3D or 2D, and can be used to update the end points by typing in a value.
+
***The next two rows of icons correspond to the two end points:
***'''Constrain Ruler To Models'''
+
****End Point Color: set the color used to show the ruler end point
****Select Ruler Model 1 and 2: constrain the motion of the ruler end point to be on the surface of the selected model or volume slice plane. In order to get the end points of the ruler to move along a selected model surface, you currently need to rotate the view so that the handle is rendered on top of the model, the next click will snap it to the model surface. If you move the model or slice plane, the measurement point won't move with it, the constraint only works when moving the end point handle. If you make the model or slice invisible, the end point cannot be moved, as the constraint will always be false.
+
****Constraint: constrain the motion of the ruler end point to be on the surface of the selected model or volume slice plane. In order to get the end points of the ruler to move along a selected model surface, you currently need to rotate the view so that the handle is rendered on top of the model, the next click will snap it to the model surface. If you move the model or slice plane, the measurement point won't move with it, the constraint only works when moving the end point handle. If you make the model or slice invisible, the end point cannot be moved, as the constraint will always be false.
 +
****Position: ruler end point positions, updates when the ruler handles are moved in 3D or 2D, and can be used to update the end points by typing in a value.
 
***'''Display Options'''
 
***'''Display Options'''
****Set End Point Color: set the colour used to show the ruler end points (coming soon: different colors for each end)
+
****Visibility: if the eye is open, this ruler is visible, if it is closed, this ruler is invisible. Click on it to toggle the state.
****Set Line Color: set the colour used to show the ruler line
+
****Line Color: set the color used to show the ruler line
****Toggle Distance Annotation Visibility: if checked, show the distance in mm between the end points along the line (coming soon: ability to change the color of the text)
+
****Annotation Color: set the color used to show the distance annotation text
****Distance Annotation Format: how to display the distance annotation, use string formatting strings, %g for an auto formatted floating point, %.2f to show two decimal places. Any text is allowed, defaults to mm (millimeters).
+
****Distance Annotation Visibility: if the eye is open, show the distance in mm between the end points along the line, if the eye is closed, hide the distance annotation text. Click on the icon to toggle the state.
 +
****Standard Annotation Formats: a drop down menu allowing you to choose standard formatting strings for the annotation text. It will over ride any current entries in the Distance Annotation Format box.
 +
*****1 decimal
 +
*****0 decimals
 +
*****2 decimals
 +
*****Scientific Notation
 +
****Distance Annotation Format: how to display the distance annotation, use string formatting strings, %g for an auto formatted floating point, %.2f to show two decimal places. Any text is allowed, defaults to mm (millimeters). Please see the following [http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/ link] for more info about formatting options.
 
****Distance Annotation Scale: how large to render the distance annotation text
 
****Distance Annotation Scale: how large to render the distance annotation text
 +
|[[Image:Slicer3.6MeasurementsRulerGUI.jpg|thumb|280px|Ruler User Interface]]
 +
|}
 +
 +
{|
 +
|
 
* '''Angle Widget panel:'''
 
* '''Angle Widget panel:'''
 
**'''Modify All Angle Nodes panel:'''
 
**'''Modify All Angle Nodes panel:'''
 
***Select the visibility of all angle nodes. Set all angles invisible or set all angles visible.
 
***Select the visibility of all angle nodes. Set all angles invisible or set all angles visible.
 +
***Delete all angle nodes.
 
**'''Modify Selected Angle Node panel:'''
 
**'''Modify Selected Angle Node panel:'''
***Angle Node Select: create a new angle node or show the parameters of a previously created angle node
+
***Angle Node Select: create a new angle node, show the parameters of a previously created angle node, delete or rename an angle
***Toggle Visibility: if checked, this angle is visible, if not, this angle is invisible.
+
***Angle: the angle between the rays of the current ruler, updated as the end points move. In degrees.
***Position 1 and Position 2 and Center: angle end point and center positions, updates when the angle handles are moved in 3D or 2D, and can be used to update the points by typing in a value.
+
***The next three rows of widgets refer to the three end points that make up the angle, first, center, second:
***'''Constrain Angle To Models:'''
+
****Set End Point Color: set the colour used to show the angle end point
****Select Angle Model 1 and 2 and Center: constrain the motion of the angle end points to be on the surface of the selected model or volume slice plane. In order to get the end points of the angle to move along a selected model surface, you currently need to rotate the view so that the handle is rendered on top of the model, the next click will snap it to the model surface. If you move the model or slice plane, the measurement point won't move with it, the constraint only works when moving the end point handle. If you make the model or slice invisible, the end point cannot be moved, as the constraint will always be false.
+
****Constraint: constrain the motion of the angle end points to be on the surface of the selected model or volume slice plane. In order to get the end points of the angle to move along a selected model surface, you currently need to rotate the view so that the handle is rendered on top of the model, the next click will snap it to the model surface. If you move the model or slice plane, the measurement point won't move with it, the constraint only works when moving the end point handle. If you make the model or slice invisible, the end point cannot be moved, as the constraint will always be false.
 +
****Position: angle point positions, updates when the angle handles are moved in 3D, and can be used to update the points by typing in a value.
 
***'''Display Options:'''
 
***'''Display Options:'''
****Set End Point Color: set the colour used to show the angle end points
+
****Visibility: if the eye is open, this angle is visible, if it is closed, this angle is invisible. Click on it to toggle the state.
****Set Line Color: set the colour used to show the angle lines
+
****Line Color: set the color used to show the angle lines
****Toggle Ray 1 Visibility: if checked, show the ray from the first end point to the center
+
****Text Color: set the color used to show the angle annotation text
****Toggle Ray 2 Visibility: if checked, show the ray from the second end point to the center
+
****Ray visibility: toggle visibility for the two rays that make up the angle. If the eye is open, this ray is visible, if it is closed, this ray is invisible. Click on it to toggle the state. The first ray is from the first point to the center point, the second ray is from the second point to the center point.
****Toggle Arc Visibility: if checked, show the arc between the two angle arms.
+
****Arc Visibility: If the eye is open, show the arc between the two angle arms. If it is close, the arc is invisible. Click on it to toggle the state.
****Angle Annotation Format: how to display the angle annotation, use string formatting strings, %g for an auto formatted floating point, %.2f to show two decimal places. Any text is allowed after the numerical specification.
+
****Arc Color: set the color used to show the arc between the rays.
 +
****Standard Annotation Formats: a drop down menu allowing you to choose standard formatting strings for the annotation text. It will over ride any current entries in the Distance Annotation Format box.  
 +
*****0 decimals
 +
*****1 decimal
 +
*****2 decimals
 +
****Angle Annotation Format: how to display the angle annotation, use string formatting strings, %g for an auto formatted floating point, %.2f to show two decimal places. Any text is allowed after the numerical specification. The angle is in degrees. Please see the following [http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/ link] for more info about formatting options.  
 
****Angle Annotation Scale: how large to render the angle annotation text
 
****Angle Annotation Scale: how large to render the angle annotation text
 +
|[[Image:Slicer3.6MeasurementsAngleGUI.jpg|thumb|280px|Angle User Interface]]
 +
|}
  
 
== Development ==
 
== Development ==
Line 95: Line 122:
 
===Notes from the Developer(s)===
 
===Notes from the Developer(s)===
  
* Some features are not available unless Slicer3 is compiled with VTK5.6 or higher.
+
* This module was added at version 3.5, and expanded at version 3.6, and it will not work unless Slicer3 is compiled with VTK5.6 or higher.
  
 
===Dependencies===
 
===Dependencies===
Line 105: Line 132:
 
On the [http://www.cdash.org/CDash/index.php?project=Slicer3 Dashboard], these tests verify that the module is working on various platforms:
 
On the [http://www.cdash.org/CDash/index.php?project=Slicer3 Dashboard], these tests verify that the module is working on various platforms:
  
* MyModuleTest1 [http://viewvc.slicer.org/viewcvs.cgi/trunk MyModuleTest1.cxx]
+
* vtkMRMLMeasurementsNodeTest1 [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Measurements/Testing/vtkMRMLMeasurementsNodeTest1.cxx?rev=12677&view=log  vtkMRMLMeasurementsNodeTest1.cxx]
* MyModuleTest2 [http://viewvc.slicer.org/viewcvs.cgi/trunk MyModuleTest2.cxx]
+
* vtkMRMLMeasurementsAngleNodeTest1  [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Measurements/Testing/vtkMRMLMeasurementsAngleNodeTest1.cxx?rev=12677&view=log  vtkMRMLMeasurementsAngleNodeTest1.cxx]
 +
* vtkMRMLMeasurementsRulerNodeTest1 [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Measurements/Testing/vtkMRMLMeasurementsRulerNodeTest1.cxx?rev=12677&view=log vtkMRMLMeasurementsRulerNodeTest1.cxx]
  
 
===Known bugs===
 
===Known bugs===
  
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker.
+
Links to known bugs in the Slicer3 bug tracker:
  
 +
* [http://www.na-mic.org/Bug/view.php?id=780 Measurements widgets don't work in dual 3D view]
  
 
===Usability issues===
 
===Usability issues===

Latest revision as of 17:03, 29 April 2010

Home < Modules:Measurements-Documentation-3.6

Return to Slicer 3.6 Documentation

Gallery of New Features


Measurements

Measurements

Measurements: Ruler GUI
Measurements: Angle GUI
Using a ruler to measure between points on a model, and an angle to measure between points on a model

General Information

Module Type & Category

Type: Interactive

Category: Base

Authors, Collaborators & Contact

  • Nicole Aucoin (3D): BWH
  • Steve Pieper (2D): BWH
  • Karthik Krishnan and Will Schroeder: Kitware
  • Contact: Nicole Aucoin, nicole@bwh.harvard.edu

Module Description

The Measurements module allows you to add rulers and angle widgets to the scene and they will be displayed and able to be manipulated in both the 3D and 2D windows.

Usage

A ruler can be created between fiducial points by pressing Control-m .

In order to get the end points of the ruler or the angle to move along a selected model surface, you currently need to rotate the view so that the handle is rendered on top of the model, the next click will snap it to the model surface. If you move the model or slice plane, the measurement point won't move with it, the constraint only works when moving the end point handle. If you make the model or slice invisible, the end point cannot be moved, as the constraint will always be false.

When you add a new angle or affine transform widget, you have to click once in the 3D window to render the transform widget, and three times to place the angle widget end points. After that, you can move the widgets around by dragging the handles.

Use Cases, Examples

This module is especially appropriate for these use cases:

  • Use Case 1: Useful for measuring tumor diameters.
  • Use Case 2: Measuring angles between bones.

Examples of the module in use:

  • Example 1: Place two fiducial points, press Control-m to create a new ruler between the fiducials, and then the two fiducials.are deleted. A name can be given to add to the ruler annotation text. Uses the last two selected fiducials of the active fiducial list.
  • Example 2: Attach/constrain end points of the widgets to volume slices to measure distances and angles between image features.
  • Example 3: Attach/constrain end points of the widgets to models to measure distances and angles between 3D structures.

Tutorials

Links to tutorials explaining how to use this module:

  • Tutorial 1: coming soon

Quick Tour of Features and Use

  • Ruler Widget panel:
    • Modify All Ruler Nodes panel
      • Select the visibility of all ruler nodes. Set all rulers invisible or set all rulers visible.
      • Delete all ruler nodes from the scene.
      • Generate Report: saves basic information about all rulers in the scene to a file on disk (distance, position, annotation). If a CSV (comma separated value) format is chosen, the information is separated by commas, if .txt is chosen, the information is separated by tabs.
    • Modify Selected Ruler Node panel
      • Ruler Node Select: create a new ruler node, show the parameters of a previously created ruler node, delete or rename a ruler node
      • Distance: the distance between the end points of the current ruler, updated as the end points move.
      • The next two rows of icons correspond to the two end points:
        • End Point Color: set the color used to show the ruler end point
        • Constraint: constrain the motion of the ruler end point to be on the surface of the selected model or volume slice plane. In order to get the end points of the ruler to move along a selected model surface, you currently need to rotate the view so that the handle is rendered on top of the model, the next click will snap it to the model surface. If you move the model or slice plane, the measurement point won't move with it, the constraint only works when moving the end point handle. If you make the model or slice invisible, the end point cannot be moved, as the constraint will always be false.
        • Position: ruler end point positions, updates when the ruler handles are moved in 3D or 2D, and can be used to update the end points by typing in a value.
      • Display Options
        • Visibility: if the eye is open, this ruler is visible, if it is closed, this ruler is invisible. Click on it to toggle the state.
        • Line Color: set the color used to show the ruler line
        • Annotation Color: set the color used to show the distance annotation text
        • Distance Annotation Visibility: if the eye is open, show the distance in mm between the end points along the line, if the eye is closed, hide the distance annotation text. Click on the icon to toggle the state.
        • Standard Annotation Formats: a drop down menu allowing you to choose standard formatting strings for the annotation text. It will over ride any current entries in the Distance Annotation Format box.
          • 1 decimal
          • 0 decimals
          • 2 decimals
          • Scientific Notation
        • Distance Annotation Format: how to display the distance annotation, use string formatting strings, %g for an auto formatted floating point, %.2f to show two decimal places. Any text is allowed, defaults to mm (millimeters). Please see the following link for more info about formatting options.
        • Distance Annotation Scale: how large to render the distance annotation text
Ruler User Interface
  • Angle Widget panel:
    • Modify All Angle Nodes panel:
      • Select the visibility of all angle nodes. Set all angles invisible or set all angles visible.
      • Delete all angle nodes.
    • Modify Selected Angle Node panel:
      • Angle Node Select: create a new angle node, show the parameters of a previously created angle node, delete or rename an angle
      • Angle: the angle between the rays of the current ruler, updated as the end points move. In degrees.
      • The next three rows of widgets refer to the three end points that make up the angle, first, center, second:
        • Set End Point Color: set the colour used to show the angle end point
        • Constraint: constrain the motion of the angle end points to be on the surface of the selected model or volume slice plane. In order to get the end points of the angle to move along a selected model surface, you currently need to rotate the view so that the handle is rendered on top of the model, the next click will snap it to the model surface. If you move the model or slice plane, the measurement point won't move with it, the constraint only works when moving the end point handle. If you make the model or slice invisible, the end point cannot be moved, as the constraint will always be false.
        • Position: angle point positions, updates when the angle handles are moved in 3D, and can be used to update the points by typing in a value.
      • Display Options:
        • Visibility: if the eye is open, this angle is visible, if it is closed, this angle is invisible. Click on it to toggle the state.
        • Line Color: set the color used to show the angle lines
        • Text Color: set the color used to show the angle annotation text
        • Ray visibility: toggle visibility for the two rays that make up the angle. If the eye is open, this ray is visible, if it is closed, this ray is invisible. Click on it to toggle the state. The first ray is from the first point to the center point, the second ray is from the second point to the center point.
        • Arc Visibility: If the eye is open, show the arc between the two angle arms. If it is close, the arc is invisible. Click on it to toggle the state.
        • Arc Color: set the color used to show the arc between the rays.
        • Standard Annotation Formats: a drop down menu allowing you to choose standard formatting strings for the annotation text. It will over ride any current entries in the Distance Annotation Format box.
          • 0 decimals
          • 1 decimal
          • 2 decimals
        • Angle Annotation Format: how to display the angle annotation, use string formatting strings, %g for an auto formatted floating point, %.2f to show two decimal places. Any text is allowed after the numerical specification. The angle is in degrees. Please see the following link for more info about formatting options.
        • Angle Annotation Scale: how large to render the angle annotation text
Angle User Interface

Development

Notes from the Developer(s)

  • This module was added at version 3.5, and expanded at version 3.6, and it will not work unless Slicer3 is compiled with VTK5.6 or higher.

Dependencies

No other modules or packages are required for this module's use.

Tests

On the Dashboard, these tests verify that the module is working on various platforms:

Known bugs

Links to known bugs in the Slicer3 bug tracker:

Usability issues

Follow this link to the Slicer3 bug tracker. Please select the usability issue category when browsing or contributing.

Source code & documentation

Measurements source code

Documentation generated by doxygen:

More Information

Acknowledgment

This work is part of the National Alliance for Medical Image Computing (NAMIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149.

References