Surface3D Overview: Difference between revisions

From Software Product Documentation
Jump to navigation Jump to search
 
(50 intermediate revisions by the same user not shown)
Line 10: Line 10:


==Tutorials==
==Tutorials==
<!-- Note: '====' gives '[edit] link; '<h4> doesn't -->


[[Surface3D_Tutorials|How To: Using Surface3D]]
<h4>[[Surface3D:_Basics|Surface3D Basics]]</h4>


[[Surface3D_HowTo_Segment_Image_Data|How To: Segment Image Data and Create Surface Models]]
<h4>[[Surface3D:_How_to_Segment_Image_Data_and_Create_Surface_Models|How To: Segment Image Data and Create Surface Models]]</h4>
 
<h4>[[Surface3D:_How_to_Work_with_Multiple_DICOM_Stacks|How To: Work with Multiple DICOM Stacks]]</h4>
 
<h4>[[DSX:_Image_and_Surface_Files|Image and Surface Files]]</h4>
 
<h4>[[Surface3D:_How_to_Import_Third_Party_Files|How To: Import Third-Party Image and Surface Files]]</h4>


==Menus==
==Menus==
<!-- Note: '====' gives '[edit] link; '<h4> doesn't -->


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
<h4><span class="mw-customtoggle-File"><span class="mw-customtoggletext" style="color:rgb(6,69,173);">File Menu</span></span></h4>
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File Menu
<div id="mw-customcollapsible-File" class="toccolours mw-collapsible mw-collapsed" style="margin-left:1em; width:80%;">
|-
|


[[File:S3D_FileMenu.png|right]]
[[File:S3D_FileMenu.png|right]]


<ul>
;Load Subject... (Ctrl + O)
<li>
: loads a subject file.
'''Load Subject...''' (Ctrl + O): loads a Subject file.
 
</li>
;Save Subject (Ctrl + S)
<li>
: saves the currently loaded subject to its existing subject file.
'''Save Subject''' (Ctrl + S): saves the currently loaded subject to its existing Subject file.
 
</li>
;Save Subject As...
<li>
: saves the currently loaded subject to a new subject file.
'''Save Subject As...''': saves the currently loaded subject to a new Subject file.
</li>


<li>
;Load Image... (Ctrl + I)
'''Load Image...''' (Ctrl + I): loads 3D image data for segmentation. Currently, Surface3D supports DICOM, RAW, and TIFF formats. At least one of the image files needs to have the appropriate extension to enable selection in the filedialog, so the user needs to ensure this is the case. If a subject is currently loaded, it is closed.
: loads 3D image data for segmentation. This command is meant to be used when you do not have a subject file, but just want to load image data and segment it. Currently, Surface3D supports DICOM, RAW, and TIFF formats. At least one of the image files needs to have the appropriate extension so that it can be selected in the file dialog. If a subject is currently loaded, it is closed.
</li>
<li>
'''Load Labels...''' (Ctrl + L): loads an earlier saved segmentation from file. Currently, Surface3D only supports the RAW format. Loading a segmentation from file will erase the current label and label edits. The menu item becomes enabled after an grayscale image has been loaded. The size of the segmented image data in the selected file needs to be the same as the size of the currently loaded grayscale image.
</li>
<li>
'''Export Labels...''' (Ctrl + E): saves the current segmentation to file. Currently, Surface3D only supports the RAW format.
</li>


<li>
;Load Supplemental Image...
'''Save Segmented Object''': saves the currently loaded image data to a RAW or TIFF file. It is meant to be called after the data has been masked and cropped to a label. If a subject is loaded and the object in the subject already has a link to a segmented image file, this file will be overwritten without notification. If a link does not already exist, you will be prompted to select a new file name.
: loads 3D image data for an object that already has a segmented image file. This command is meant to be used for handling multiple DICOM stacks related to processing a single object. For example, when modeling the femur for a knee study, you might have one image stack for the distal femur and a second one with a few slices of the femoral head for locating the hip center. In this case you would load the distal femur stack for segmentation and surface model creation, then load the hip stack as a supplemental image for defining the hip center landmark.
</li>
<li>
'''Save Surface Model''': saves the polygonal surface model to an OBJ file. If a subject is loaded and the object in the subject already has a link to a surface model file, this file will be overwritten without notification. If a link does not already exist, you will be prompted to select a new file name.
</li>
<li>
'''Exit''': exits the program and all unsaved data will be lost. The program can also be closed by using the X in the top right corner of the program window.
</li>
</ul>


|}
;Load Label... (Ctrl + L)
: loads an earlier saved segmentation from file. Surface3D supports the TIFF and RAW formats. Loading a segmentation from file will erase the current label and label edits. The menu item becomes enabled after image data has been loaded. The size of the segmented image data in the selected file must be the same as the size of the currently loaded image data.


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
;Export Label... (Ctrl + E)
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;View Menu
: saves the current segmentation to file. Surface3D supports the TIFF and RAW formats.
|-
|


[[File:S3D_ViewMenu.png|right]]
;Save Segmented Object
: saves the currently loaded image data to a RAW or TIFF file. It is meant to be called after the data has been masked and cropped to a label. If a subject is loaded and the object in the subject already has a link to a segmented image file, this file will be overwritten without notification. If a link does not already exist, you will be prompted to select a new file name. You can then also choose the desired format (OBJ or IV) and units.


<ul>
;Save Surface Model
<li>
: saves the polygonal surface model to an OBJ or IV file. If a subject is loaded and the object in the subject already has a link to a surface model file, this file will be overwritten without notification. If a link does not already exist, you will be prompted to select a new file name.
'''Object Configuration''' (Ctrl + Shift + O): toggles the appearance of the dockable Object Configuration widget. <!--This item appears in the View menu only when a subject file is loaded.-->
</li>
<li>
'''Landmarks''' (Ctrl + Shift + L): toggles the dockable Landmarks widget, which has a list of the landmarks in the selected object. This item appears in the menu only when a subject file is loaded and an object is selected.
</li>
<li>
'''POIs''' (Ctrl + Shift + P): toggles the dockable POIs widget, which has a list of the points of interest in the selected object. This item appears in the menu only when a subject file is loaded and an object is selected.
</li>
<li>
'''Segmentation''' (Ctrl + Shift + S): toggles the dockable Segmentation widget, which contains the editable list of object labels that can be used for segmentation.
</li>
<li>
'''Histogram of Image''' (Ctrl + Shift + H): toggles the dockable widget with the histogram of the image data.
</li>
</ul>


|}
;Exit
: exits the program. The program can also be closed using the X in the top right corner of the program window.


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
</div>
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Segmentation Menu
|-
|


[[File:S3D_SegmentationMenu.png|right]]
<h4><span class="mw-customtoggle-View"><span class="mw-customtoggletext" style="color:rgb(6,69,173);">View Menu</span></span></h4>
<div id="mw-customcollapsible-View" class="toccolours mw-collapsible mw-collapsed" style="margin-left:1em; width:80%;">


<ul>
[[File:S3D_ViewMenu.png|right]]
<li>
'''Add Object Label''' (Ctrl + A): adds a segmentation label to the Segmentation widget.
</li>
<li>
'''Remove Object Label''' (Ctrl + R): deletes the currently selected segmentation label.
</li>
<li>
'''Undo''' (Ctrl + Z): undoes the last manual edit to the segmentation label.
</li>
<li>
'''Redo''' (Ctrl + Y): redoes the last undone manual edit to the segmentation label.
</li>


<li>
;Object Configuration (Ctrl + Shift + O)
'''Select Thresholding Seed''': allows the user to pick a point(pixel) in any of the 2d render windows, which will then be used as a seed for 3d thresholding using the threshold values set in the Histogram widget.
: toggles the appearance of the dockable Object Configuration widget. <!--This item appears in the View menu only when a subject file is loaded.-->
</li>
<li>
'''Fill 3D Holes...''' (Ctrl + H): first opens a dialog with some descriptive text and the opportunity to change the value of the ''3D Hole Threshold'' parameter (default: 2000). When the user decides to go ahead, the command automatically fills all 3D holes in the current segmentation. The algorithm finds each unlabelled voxel next to a labelled voxel and uses a flood-fill algorithm to find all unlabelled voxels that are connected to it. If the size of this region is less than the value of the ''3D Hole Threshold'' parameter, then the region is labelled with the current label.
</li>
<!--
<li>
'''Fill Gaps''': Still under development.
</li>
-->
<li>
'''Erode Label''': automatically erodes the segmentation. The basic effect is to erode away the boundaries of regions of the currently selected label. Thus areas of label pixels shrink in size, and holes within those areas become larger.
</li>
<li>
'''Dilate Label''': automatically dilates the segmentation. The basic effect is to gradually enlarge the boundaries of regions of the currently selected label. Thus areas of label pixels grow in size, and holes within those areas become smaller.
</li>
<li>
'''Unlabel Disconnected Regions''': unlabels all voxels that are not connected to the selected voxel. It is useful for unlabelling large sections of the image data after you have labelled the bone of interest. For example, when segmenting a vertebra from spine images, the appropriate threshold settings often label all of the vertebrae because of their close proximity. Rather than manually erase the label from all of these unwanted voxels, you can use this command. Start by completely labelling the bone of interest. Then erase the label from all unwanted voxels bordering this bone, so that the bone is not connected to any other labelled regions. Then choose this command and select any voxel in the bone of interest.
</li>


<!--
;Landmarks (Ctrl + Shift + L)
<li>
: toggles the dockable Landmarks widget, which has a list of the landmarks in the selected object. This item appears in the menu only when a subject file is loaded and an object is selected.
'''Manual Hole Filling''': fills a 2D hole in the segmentation, based on where you left-click on one of the 2D images. Selecting this command puts you in "hole-filling mode," so you can left-click on a series of holes in the 2D slices to fill them in. Press Esc to exit this mode. Alternatively, you can press and hold Ctrl + M and then left-click on holes to fill them.
</li>
<li>
'''Erase Object Labels''': erases a circular region of the segmentation in one 2D image slice, centered on the voxel on which you left-click. The radius of the circle, in voxels, is specified by the ''Paintbrush Radius'' parameter. Selecting this command puts you in "erase" mode, so you can left-click on a series of voxels to erase a circle of labels. Press Esc to exit this mode. Alternatively, you can press and hold Ctrl + E and then left-click on voxels.
</li>
<li>
'''Paint Object Labels''': paints the current label onto a circular region in one 2D image slice, centered on the voxel on which you left-click. The radius of the circle, in voxels, is specified by the ''Paintbrush Radius'' parameter. Selecting this command puts you in "paint" mode, so you can left-click on a series of voxels to paint a circle of labels. Press Esc to exit this mode. Alternatively, you can press and hold Ctrl + P and then left-click on voxels.
</li>
-->
</ul>


|}
;POIs''' (Ctrl + Shift + P)
: toggles the dockable POIs widget, which has a list of the points of interest in the selected object. This item appears in the menu only when a subject file is loaded and an object is selected.


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
;Segmentation (Ctrl + Shift + S)
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image Menu
: toggles the dockable Segmentation widget, which contains the editable list of object labels that can be used for segmentation.
|-
|


[[File:S3D_ImageMenu.png|right]]
;Histogram of Image (Ctrl + Shift + H)
: toggles the dockable widget with the histogram of the image data.


<ul>
</div>
<li>
'''Toggle Voxel Interpolation''': toggles the method used to render the image data voxels and the segmentation label voxels. When this option is unchecked, each voxel is rendered with a constant color (flat shading). When this option is checked a smooth shading technique is used, in which a voxel's color is smoothly interpolated between its neighbors.
</li>
<li>
'''Reverse Image Slice Order''': reverses the slices of the loaded image, i.e., the first slice becomes the last one, and the last slice the first one. The segmentation and its edits are automatically adjusted, as are the locations of the POIs and landmarks.
</li>
<li>
'''Mask Labeled Image Data''': sets all unlabeled voxels in the current image to zero. This action cannot be undone.
</li>
<li>
'''Crop Image Data to Labels''': reduces the size of the image to the bounding box of the current segmentation label (i.e., the minimum dimensions that include all labeled voxels). This action cannot be undone.
</li>
</ul>


|}
<h4><span class="mw-customtoggle-Segm"><span class="mw-customtoggletext" style="color:rgb(6,69,173);">Segmentation Menu</span></span></h4>
<div id="mw-customcollapsible-Segm" class="toccolours mw-collapsible mw-collapsed" style="margin-left:1em; width:80%;">


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
[[File:S3D_SegmentationMenu.png|right]]
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Model Menu
|-
|


[[File:S3D_ModelMenu.png|right]]
;Add Object Label (Ctrl + A)
: adds a segmentation label to the Segmentation widget. Surface3D currently only supports one segmentation label.


<ul>
;Remove Object Label (Ctrl + R)
<li>
: deletes the currently selected segmentation label.
'''Create Surface Model''': creates a polygonal surface model from the current segmentation label. It uses a marching cubes algorithm to find an isosurface from the set of labelled voxels. For best results, the labelled voxels should not have any holes in the interior.
</li>
<li>
'''Decimate Surface Model...''': reduces the number of vertices and polygons in the surface model. Decimation is controlled by the ''Decimation Factor'' parameter, which specifies the approximate percentage of polygons that will be removed from the surface. For example, if the parameter is set to 0.2, approximately 20% of the polygons will be removed each time the decimate command is performed. Decimating too much may remove small details of the surface model that are needed for tracking. This action cannot be undone.
</li>
<li>
'''Smooth Surface Model...''': smooths the surface model by making small adjustments to the vertex positions using a Laplacian algorithm. This algorithm is controlled by the following three parameters. ''Relaxation Factor'' specifies the Laplacian relaxation factor. ''Smoothing Iterations'' is the number of iterations performed each time the smoothing command is executed. ''Feature Edge Smoothing'' turns on (true) and off (false) smoothing of sharp interior edges on the surface model. Smoothing will shrink the surface model towards its center. This action cannot be undone.
</li>
<li>
'''Delete Surface Model''': deletes the current surface model.
</li>
</ul>


|}
;Undo (Ctrl + Z)
: undoes the last manual edit to the segmentation label.


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
;Redo (Ctrl + Y)
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Options Menu
: redoes the last undone manual edit to the segmentation label.
|-
|


[[File:S3D_OptionsMenu.png|right]]
;Select Thresholding Seed
: allows the user to pick a point(pixel) in any of the 2d render windows, which will then be used as a seed for 3d thresholding using the threshold values set in the Histogram widget.


<ul>
;Fill 3D Holes... (Ctrl + H)
<li>
: first opens a dialog with some descriptive text and the opportunity to change the value of the ''3D Hole Threshold'' parameter (default: 2000). When the user decides to go ahead, the command automatically fills all 3D holes in the current segmentation. The algorithm finds each unlabelled voxel next to a labelled voxel and uses a flood-fill algorithm to find all unlabelled voxels that are connected to it. If the size of this region is less than the value of the ''3D Hole Threshold'' parameter, then the region is labelled with the current label.
'''Settings...''': opens the ''Settings'' dialog.
<!--
</li>
;Fill Gaps
</ul>
: Still under development.
-->


|}
;Erode Label
: automatically erodes the segmentation. The basic effect is to erode away the boundaries of regions of the currently selected label. Thus areas of label pixels shrink in size, and holes within those areas become larger.


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
;Dilate Label
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Help Menu
: automatically dilates the segmentation. The basic effect is to gradually enlarge the boundaries of regions of the currently selected label. Thus areas of label pixels grow in size, and holes within those areas become smaller.
|-
|


[[File:S3D_HelpMenu.png|right]]
;Unlabel Disconnected Regions
: unlabels all voxels that are not connected to the selected voxel. It is useful for unlabelling large sections of the image data after you have labelled the bone of interest. For example, when segmenting a vertebra from spine images, the appropriate threshold settings often label all of the vertebrae because of their close proximity. Rather than manually erase the label from all of these unwanted voxels, you can use this command. Start by completely labelling the bone of interest. Then erase the label from all unwanted voxels bordering this bone, so that the bone is not connected to any other labelled regions. Then choose this command and select any voxel in the bone of interest.
<!--
;Manual Hole Filling
: fills a 2D hole in the segmentation, based on where you left-click on one of the 2D images. Selecting this command puts you in "hole-filling mode," so you can left-click on a series of holes in the 2D slices to fill them in. Press Esc to exit this mode. Alternatively, you can press and hold Ctrl + M and then left-click on holes to fill them.


<ul>
;Erase Object Labels
<li>
: erases a circular region of the segmentation in one 2D image slice, centered on the voxel on which you left-click. The radius of the circle, in voxels, is specified by the ''Paintbrush Radius'' parameter. Selecting this command puts you in "erase" mode, so you can left-click on a series of voxels to erase a circle of labels. Press Esc to exit this mode. Alternatively, you can press and hold Ctrl + E and then left-click on voxels.
'''Help''' (F1): opens the Surface3D wiki page in the default browser.
</li>
<li>
'''About...''': displays a dialog with information about Surface3D, including the installed version number. It also contains the ''Deactivate'' button, for deactivating your DSX suite license.
</li>
</ul>


|}
;Paint Object Labels
: paints the current label onto a circular region in one 2D image slice, centered on the voxel on which you left-click. The radius of the circle, in voxels, is specified by the ''Paintbrush Radius'' parameter. Selecting this command puts you in "paint" mode, so you can left-click on a series of voxels to paint a circle of labels. Press Esc to exit this mode. Alternatively, you can press and hold Ctrl + P and then left-click on voxels.
-->


==Widgets==
</div>


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
<h4><span class="mw-customtoggle-Image"><span class="mw-customtoggletext" style="color:rgb(6,69,173);">Image Menu</span></span></h4>
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object Configuration
<div id="mw-customcollapsible-Image" class="toccolours mw-collapsible mw-collapsed" style="margin-left:1em; width:80%;">
|-
|


The Object Configuration widget is available only if a subject file is currently loaded in Surface3D.
[[File:S3D_ImageMenu.png|right]]


[[Image:S3D_ObjectConfigurationWidget.png|right]]
;Toggle Voxel Interpolation
: toggles the method used to render the image data voxels and the segmentation label voxels. When this option is unchecked, each voxel is rendered with a constant color (flat shading). When this option is checked a smooth shading technique is used, in which a voxel's color is smoothly interpolated between its neighbors.


<ul>
;Reverse Image Slice Order
<li>
: reverses the slices of the loaded image, i.e., the first slice becomes the last one, and the last slice the first one. The segmentation and its edits are automatically adjusted, as are the locations of the POIs and landmarks.
'''Subject''': This field is automatically populated with the ID of the subject when you load a subject file.
</li>
<li>
'''Session''': This drop down menu is automatically populated with all of the sessions available for the current subject.
</li>
<li>
'''Object''': This list is automatically populated with all of the objects in the current session. Each object is enabled if it either has a segmented image file specified for it, or if there is scan data specified for the session. Selecting one of the objects loads its segmented image file, if it has one. If it does not, a dialog is displayed containing all of the scan data files specified for the session, allowing you to select one of them for segmentation.
</li>
</ul>


|}
;Mask Labeled Image Data
: sets all unlabeled voxels in the current image to zero. This action cannot be undone.


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
;Crop Image Data to Labels
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Histogram of Image
: reduces the size of the image to the bounding box of the current segmentation label (i.e., the minimum dimensions that include all labeled voxels). This action cannot be undone.
|-
|
[[Image:S3DHistogramOfImageWidget.png|600px]]


The histogram of the image shows the range of voxel intensities in the currently loaded image data. If a label is selected in the ''Segmentation'' widget, the upper and lower thresholds of the label are represented in the histogram as red and green vertical lines, respectively. You can left-click and drag these lines to change the respective threshold values.
</div>
|}


{| class="mw-collapsible mw-collapsed wikitable" id="Points_of_Interest" width="90%"
<h4><span class="mw-customtoggle-Model"><span class="mw-customtoggletext" style="color:rgb(6,69,173);">Model Menu</span></span></h4>
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Points of Interest
<div id="mw-customcollapsible-Model" class="toccolours mw-collapsible mw-collapsed" style="margin-left:1em;">
|-
|


[[Image:S3D_POIWidget.png|left]]
[[File:S3D_ModelMenu.png|right]]


{| class="mw-collapsible mw-collapsed wikitable" width="80%"
;Create Surface Model
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add POI
: creates a polygonal surface model from the current segmentation label. It uses a marching cubes algorithm to find an isosurface from the set of labelled voxels. For best results, the labelled voxels should not have any holes in the interior.
|-
|
The ''Add POI'' button adds a new point of interest to the object. After pressing the button, click in one of the 2D image windows to set the location of the point. Surface3D then creates the POI with a default name and adds it to the table. To change the name, double-click on it and type in a new name.
|}


{| class="mw-collapsible mw-collapsed wikitable" width="80%"
;Decimate Surface Model...
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove POI
: reduces the number of vertices and polygons in the surface model. Decimation is controlled by the ''Decimation Factor'' parameter, which specifies the approximate percentage of polygons that will be removed from the surface. For example, if the parameter is set to 0.2, approximately 20% of the polygons will be removed each time the decimate command is performed. Decimating too much may remove small details of the surface model that are needed for tracking. This action cannot be undone.
|-
|
The ''Remove POI'' button deletes the currently selected POI from the object. To select a POI, click on its row in the table.
|}


{| class="mw-collapsible mw-collapsed wikitable" width="80%"
;Smooth Surface Model...
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Table
: smooths the surface model by making small adjustments to the vertex positions using a windowed sinc function. This algorithm is controlled by the following three parameters. ''Pass-Band Frequency'' specifies the low-pass cutoff frequency (normalized to the range 0.0 to 2.0). Lower values produce more smoothing. ''Smoothing Iterations'' is the number of iterations performed each time the smoothing command is executed. ''Preserve Feature Edges'' controls the smoothing of sharp interior edges on the surface model. When this option is selected, edges with angles greater than ''Feature Angle'' will not be smoothed. Smoothing may shrink the surface model towards its center, and this action cannot be undone.
|-
|
The table shows all of the object's points of interest. The columns are the name of the POI, and the X, Y and Z coordinates in the image data's reference frame. A POI name can be changed by double-clicking on it and typing in a new name. To change the XYZ coordinates, select the POI by clicking on its row in the table, and then click on the new location in one of the 2D image windows.
|}
|}


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
;Delete Surface Model
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Landmarks
: deletes the current surface model.
|-
|


[[Image:S3D_LandmarksWidget.png|left]]
</div>


{| class="mw-collapsible mw-collapsed wikitable" width="80%"
<h4><span class="mw-customtoggle-Options"><span class="mw-customtoggletext" style="color:rgb(6,69,173);">Options Menu</span></span></h4>
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add Landmark
<div id="mw-customcollapsible-Options" class="toccolours mw-collapsible mw-collapsed" style="margin-left:1em; width:80%;">
|-
|
The ''Add Landmark'' button adds a new landmark to the object. After pressing the button, click in one of the 2D image windows to set the location of the point. Surface3D then creates the landmark with a default name and adds it to the table. To change the name, double-click on it and type in a new name.
|}


{| class="mw-collapsible mw-collapsed wikitable" width="80%"
[[File:S3D_OptionsMenu.png|right]]
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove Landmark
|-
|
The ''Remove Landmark'' button deletes the currently selected landmark from the object. To select a landmark, click on its row in the table.
|}


{| class="mw-collapsible mw-collapsed wikitable" width="80%"
;Settings...
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Table
: opens the ''Settings'' dialog.
|-
|
The table shows all of the object's landmarks. The columns are the name of the landmark, and the X, Y and Z coordinates in the image data's reference frame. A landmark name can be changed by double-clicking on it and typing in a new name. To change the XYZ coordinates, select the landmark by clicking on its row in the table, and then click on the new location in one of the 2D image windows.
|}
|}


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
</div>
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Segmentation
|-
|
[[Image:S3D_SegmentationWidget.png]]


The ''Segmentation'' widget provides access to the labels that you use to identify and segment objects (bones, implants, etc.) in the image data. The labels are contained in a table with their name, color, and upper and lower threshold values. For most applications, it is recommended that you segment one object at a time, as described in [[Surface3D_HowTo_Segment_Image_Data|How To: Segment Image Data and Create Surface Models]]. When you are finished with the first object, remove the label and create a new one for the next object. To create a label, use the command ''Segmentation -> Add Object Label''. To remove a label, use the command ''Segmentation -> Remove Object Label''. To change the name of a label, double-click on the name and type in a new one. To change its color, double-click on the color cell in the table and select a new color from the dialog. The upper and lower threshold values can be changed by dragging the vertical lines in the ''Histogram of Image'' widget, or by double-clicking on the cells in the table and typing in new values.
<h4><span class="mw-customtoggle-Help"><span class="mw-customtoggletext" style="color:rgb(6,69,173);">Help Menu</span></span></h4>
|}
<div id="mw-customcollapsible-Help" class="toccolours mw-collapsible mw-collapsed" style="margin-left:1em; width:80%;">


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
[[File:S3D_HelpMenu.png|right]]
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Settings
|-
|
[[Image:S3D_Settings.png|right|300px]]


<ul>
;Help (F1)
<li>
: opens the Surface3D wiki page in the default browser.
'''Undo Limit''': maximum number of label editing actions that can be undone. The default value is 10.
</li>
<li>
'''Paintbrush Radius''': the radius (in voxels) of the circular paintbrush that is used for painting and erasing segmentation labels. The default value is 5. The radius can also be increased or decreased using the mouse wheel, while pressing 'p' to paint or 'e' to erase.
</li>
<li>
'''Text Scale''': the scale factor for POI and landmark text labels. The default value is 0.75.
</li>
<li>
'''Color Theme''': the user can choose between a light or a dark color theme.
</li>
</ul>


|}
;About...
: displays a dialog with information about Surface3D, including the installed version number. It also contains the ''Deactivate'' button, for deactivating your DSX suite license.


==Image Data Windows==
</div>


[[Image:S3D_2D3D_Views.png]]
==Widgets==


{| class="mw-collapsible mw-collapsed wikitable" width="80%"
<!-- Note: '====' gives '[edit] link; '<h4> doesn't -->
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2D Views
<h4><span id="Surface3DWidget01"></span>[[Surface3D: Object Configuration|Object Configuration]]</h4>
|-
<h4><span id="Surface3DWidget01"></span>[[Surface3D: Histogram of Image|Histogram of Image]]</h4>
|
<h4><span id="Surface3DWidget01"></span>[[Surface3D: Points of Interest|Points of Interest]]</h4>
The three 2D views show cross sections of the image data along the X, Y, and Z axes. The upper-left view, with the red border around the image data, shows a slice perpendicular to the X axis. The lower-right view (green) shows a slice perpendicular to the Y axis, and the upper-right view (blue) shows a Z slice. When the mouse cursor hovers over a 2D view, its border turns yellow indicating the window has become active. The following interaction is possible in an active 2D view:
<h4><span id="Surface3DWidget01"></span>[[Surface3D: Landmarks|Landmarks]]</h4>
<h4><span id="Surface3DWidget01"></span>[[Surface3D: Segmentation|Segmentation]]</h4>
<h4><span id="Surface3DWidget01"></span>[[Surface3D: Settings|Settings]]</h4>


:zooming using the '''mouse wheel''',
==Image Data Windows==
:panning using the '''right mouse button''',
:image contrast can be adjusted by pressing the '''left mouse button''' and '''Shift key''' and dragging the cursor left and right,
:image brightness can be adjusted by pressing the '''left mouse button''' and '''Shift key''' and dragging the cursor up and down, and
:scrolling through the image slices using the '''Page Up/Down keys'''.
:pressing the '''ESC''' key will exit the interaction mode, i.e. cancel the selection of a segmentation seed, poi, or landmark location.
:pressing the '''R''' key will reset the camera vi
:pressing the '''HOME'''/'''END''' key will move to the first/last image slice.
:pressing the '''P''' key activates ''paint'' mode. In this mode you can label additional voxels in the segmentation by pressing the left mouse button. It is also possible to drag the mouse while keeping the left button depressed. The radius of the paintbrush can be changed while in paint mode using the mouse wheel. It can also be changed in the dialog accessible by selecting ''Options'' -> ''Settings'' in the menu bar.
:pressing the '''E''' key activates ''erase'' mode. In this mode you can unlabel voxels in the segmentation by pressing the left mouse button. It is also possible to drag the mouse while keeping the left button depressed. The radius of the paintbrush can be changed while in erase mode using the mouse wheel. It can also be changed in the dialog accessible by selecting ''Options'' -> ''Settings'' in the menu bar.
:pressing the '''M''' key activates ''manual hole filling'' mode. In this mode you can use the left mouse button to select holes in the segmentation that need to be filled.
:pressing the '''S''' key toggles the display of the segmentation labels.
|}


{| class="mw-collapsible mw-collapsed wikitable" width="80%"
<div class="res-img"> <!-- custom class defined in MediaWiki:Common.css -->
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3D View
[[Image:S3D_2D3D_Views.png|800px|right]]
|-
</div>
|
The 3D view in the lower-right shows the image slices from the 2D views as well as the current object's surface model, if one exists. It also shows the reference frame of the image data, with its origin in the lower-left corner of the first image slice in the data file. When the mouse cursor hovers over the 3D view, its border turns yellow indicating the window has become active. The following interaction is possible in an active 3D view:


:3D rotation (virtual trackball) using the '''left mouse button''',
<!-- Note: '====' gives '[edit] link; '<h4> doesn't -->
:panning using the '''middle mouse button''',
<h4><span id="Surface3DWin01"></span>[[Surface3D: 2D Views|2D Views]]</h4>
:zooming using the '''mouse wheel''' or '''right mouse button''', and
<h4><span id="Surface3DWin02"></span>[[Surface3D: 3D View|3D View]]</h4>
:spinning (in-window-plane rotation) using the '''left mouse button''' while pressing the '''Ctrl key'''.
|}

Latest revision as of 14:59, 6 July 2021

Language:  English  • français • italiano • português • español 

Surface3D segments objects (bones, implants, etc.) from CT data for use in model-based tracking, and it creates surface models of these objects for subsequent kinematic analysis of the tracking results. After segmenting an object from the CT data, the CT data can be cropped and masked, and then saved to a RAW or TIFF file. These cropped image files with just one object in them, are used by X4D to generate DRRs for model-based tracking. It can also generate a polygonal surface model from the currently segmented object using a marching cubes algorithm, and save it to an OBJ file. The surface models are used by Orient3D to define anatomical references and regions of interest (for distance map calculations), and by Visual3D for kinematic analysis. Surface3D also allows you to identify landmarks (e.g., ligament attachments) and points of interest (e.g., implanted beads) in the image data.

Tutorials

Surface3D Basics

How To: Segment Image Data and Create Surface Models

How To: Work with Multiple DICOM Stacks

Image and Surface Files

How To: Import Third-Party Image and Surface Files

Menus

File Menu

Load Subject... (Ctrl + O)
loads a subject file.
Save Subject (Ctrl + S)
saves the currently loaded subject to its existing subject file.
Save Subject As...
saves the currently loaded subject to a new subject file.
Load Image... (Ctrl + I)
loads 3D image data for segmentation. This command is meant to be used when you do not have a subject file, but just want to load image data and segment it. Currently, Surface3D supports DICOM, RAW, and TIFF formats. At least one of the image files needs to have the appropriate extension so that it can be selected in the file dialog. If a subject is currently loaded, it is closed.
Load Supplemental Image...
loads 3D image data for an object that already has a segmented image file. This command is meant to be used for handling multiple DICOM stacks related to processing a single object. For example, when modeling the femur for a knee study, you might have one image stack for the distal femur and a second one with a few slices of the femoral head for locating the hip center. In this case you would load the distal femur stack for segmentation and surface model creation, then load the hip stack as a supplemental image for defining the hip center landmark.
Load Label... (Ctrl + L)
loads an earlier saved segmentation from file. Surface3D supports the TIFF and RAW formats. Loading a segmentation from file will erase the current label and label edits. The menu item becomes enabled after image data has been loaded. The size of the segmented image data in the selected file must be the same as the size of the currently loaded image data.
Export Label... (Ctrl + E)
saves the current segmentation to file. Surface3D supports the TIFF and RAW formats.
Save Segmented Object
saves the currently loaded image data to a RAW or TIFF file. It is meant to be called after the data has been masked and cropped to a label. If a subject is loaded and the object in the subject already has a link to a segmented image file, this file will be overwritten without notification. If a link does not already exist, you will be prompted to select a new file name. You can then also choose the desired format (OBJ or IV) and units.
Save Surface Model
saves the polygonal surface model to an OBJ or IV file. If a subject is loaded and the object in the subject already has a link to a surface model file, this file will be overwritten without notification. If a link does not already exist, you will be prompted to select a new file name.
Exit
exits the program. The program can also be closed using the X in the top right corner of the program window.

View Menu

Object Configuration (Ctrl + Shift + O)
toggles the appearance of the dockable Object Configuration widget.
Landmarks (Ctrl + Shift + L)
toggles the dockable Landmarks widget, which has a list of the landmarks in the selected object. This item appears in the menu only when a subject file is loaded and an object is selected.
POIs (Ctrl + Shift + P)
toggles the dockable POIs widget, which has a list of the points of interest in the selected object. This item appears in the menu only when a subject file is loaded and an object is selected.
Segmentation (Ctrl + Shift + S)
toggles the dockable Segmentation widget, which contains the editable list of object labels that can be used for segmentation.
Histogram of Image (Ctrl + Shift + H)
toggles the dockable widget with the histogram of the image data.

Segmentation Menu

Add Object Label (Ctrl + A)
adds a segmentation label to the Segmentation widget. Surface3D currently only supports one segmentation label.
Remove Object Label (Ctrl + R)
deletes the currently selected segmentation label.
Undo (Ctrl + Z)
undoes the last manual edit to the segmentation label.
Redo (Ctrl + Y)
redoes the last undone manual edit to the segmentation label.
Select Thresholding Seed
allows the user to pick a point(pixel) in any of the 2d render windows, which will then be used as a seed for 3d thresholding using the threshold values set in the Histogram widget.
Fill 3D Holes... (Ctrl + H)
first opens a dialog with some descriptive text and the opportunity to change the value of the 3D Hole Threshold parameter (default: 2000). When the user decides to go ahead, the command automatically fills all 3D holes in the current segmentation. The algorithm finds each unlabelled voxel next to a labelled voxel and uses a flood-fill algorithm to find all unlabelled voxels that are connected to it. If the size of this region is less than the value of the 3D Hole Threshold parameter, then the region is labelled with the current label.
Erode Label
automatically erodes the segmentation. The basic effect is to erode away the boundaries of regions of the currently selected label. Thus areas of label pixels shrink in size, and holes within those areas become larger.
Dilate Label
automatically dilates the segmentation. The basic effect is to gradually enlarge the boundaries of regions of the currently selected label. Thus areas of label pixels grow in size, and holes within those areas become smaller.
Unlabel Disconnected Regions
unlabels all voxels that are not connected to the selected voxel. It is useful for unlabelling large sections of the image data after you have labelled the bone of interest. For example, when segmenting a vertebra from spine images, the appropriate threshold settings often label all of the vertebrae because of their close proximity. Rather than manually erase the label from all of these unwanted voxels, you can use this command. Start by completely labelling the bone of interest. Then erase the label from all unwanted voxels bordering this bone, so that the bone is not connected to any other labelled regions. Then choose this command and select any voxel in the bone of interest.

Image Menu

Toggle Voxel Interpolation
toggles the method used to render the image data voxels and the segmentation label voxels. When this option is unchecked, each voxel is rendered with a constant color (flat shading). When this option is checked a smooth shading technique is used, in which a voxel's color is smoothly interpolated between its neighbors.
Reverse Image Slice Order
reverses the slices of the loaded image, i.e., the first slice becomes the last one, and the last slice the first one. The segmentation and its edits are automatically adjusted, as are the locations of the POIs and landmarks.
Mask Labeled Image Data
sets all unlabeled voxels in the current image to zero. This action cannot be undone.
Crop Image Data to Labels
reduces the size of the image to the bounding box of the current segmentation label (i.e., the minimum dimensions that include all labeled voxels). This action cannot be undone.

Model Menu

Create Surface Model
creates a polygonal surface model from the current segmentation label. It uses a marching cubes algorithm to find an isosurface from the set of labelled voxels. For best results, the labelled voxels should not have any holes in the interior.
Decimate Surface Model...
reduces the number of vertices and polygons in the surface model. Decimation is controlled by the Decimation Factor parameter, which specifies the approximate percentage of polygons that will be removed from the surface. For example, if the parameter is set to 0.2, approximately 20% of the polygons will be removed each time the decimate command is performed. Decimating too much may remove small details of the surface model that are needed for tracking. This action cannot be undone.
Smooth Surface Model...
smooths the surface model by making small adjustments to the vertex positions using a windowed sinc function. This algorithm is controlled by the following three parameters. Pass-Band Frequency specifies the low-pass cutoff frequency (normalized to the range 0.0 to 2.0). Lower values produce more smoothing. Smoothing Iterations is the number of iterations performed each time the smoothing command is executed. Preserve Feature Edges controls the smoothing of sharp interior edges on the surface model. When this option is selected, edges with angles greater than Feature Angle will not be smoothed. Smoothing may shrink the surface model towards its center, and this action cannot be undone.
Delete Surface Model
deletes the current surface model.

Options Menu

Settings...
opens the Settings dialog.

Help Menu

Help (F1)
opens the Surface3D wiki page in the default browser.
About...
displays a dialog with information about Surface3D, including the installed version number. It also contains the Deactivate button, for deactivating your DSX suite license.

Widgets

Object Configuration

Histogram of Image

Points of Interest

Landmarks

Segmentation

Settings

Image Data Windows

2D Views

3D View

Retrieved from ""