Orient3D Overview: Difference between revisions

From Software Product Documentation
Jump to navigation Jump to search
 
(25 intermediate revisions by the same user not shown)
Line 11: Line 11:
==Tutorials==
==Tutorials==


<!--[[Orient3D_Tutorials|How To: Using Orient3D]]-->
<!-- Note: '====' gives '[edit] link; '<h4> doesn't -->
<!--<h4>[[Orient3D_Tutorials|How To: Using Orient3D]]</h4>-->


[[Orient3D_HowTo_Define_LCS|How To: Define the LCS of an Object]]
<h4>[[Orient3D:_How_to_Define_the_LCS_of_an_Object|How To: Define the LCS of an Object]]</h4>


[[Orient3D_HowTo_Define_ROI|How To: Define Regions of Interest on an Object]]
<h4>[[Orient3D:_How_to_Define_ROIs_on_an_Object|How To: Define Regions of Interest on an Object]]</h4>
 
<h4>[[DSX:_Image_and_Surface_Files|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:O3D_FileMenu.png|right]]
[[File:O3D_FileMenu.png|right]]


<ul>
;Load Subject (Ctrl + O)
<li>
: loads a subject file. Note: Only available with a DSX Suite license.
'''Load Subject''' (Ctrl + O): loads a subject file. Note: Only available with a DSX Suite license.
</li>
<li>
'''Save Subject''' (Ctrl + S): saves the currently loaded subject to its existing subject file. Note: Only available with a DSX Suite license.
</li>
<li>
'''Save Subject As''': saves the currently loaded subject to a new subject file. Note: Only available with a DSX Suite license.
</li>
<li>
'''Load Surface...''': loads a single surface model file. If you load a surface with this command, there is no way to save the local coordinate system or any landmarks you may define, because these items are saved in the subject file. Orient3D is able to load the following formats:


::[https://en.wikipedia.org/wiki/Wavefront_.obj_file Wavefront<sup>1</sup> (*.obj)]
;Save Subject (Ctrl + S)
::Open Inventor (*.iv)
: saves the currently loaded subject to its existing subject file. Note: Only available with a DSX Suite license.


After the file is loaded the surface model is automatically triangulated to facilitate additional processing, such as decimation and smoothing. Note: Orient3D currently ignores color and texture definitions from MTL and COL files that sometimes accompany Wavefront OBJ files.
;Save Subject As
</li>
: saves the currently loaded subject to a new subject file. Note: Only available with a DSX Suite license.
<li>
'''Save Surface (global frame)''': saves the current surface model in the global reference frame as an OBJ file. If a subject file is loaded, it will be updated with the name of the saved surface file. The file dialog contains an option for specifying the units of the vertex coordinates.
</li>
<li>
'''Save Surface (local frame)''': saves the current surface model in its local reference frame as an OBJ file. If a subject file is loaded, it will be updated with the name of the saved surface file. The file dialog contains an option for specifying the units of the vertex coordinates. Meters should be chosen if you plan to import the surface model into Visual3D.
</li>
<li>
'''Exit''': exits the program. The program can also be closed using the X in the top right corner of the program window.
</li>
</ul>


|}
;Load Surface...
: loads a single surface model file. If you load a surface with this command, there is no way to save the local coordinate system or any landmarks you may define, because these items are saved in the subject file. Orient3D is able to load the following formats:


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
::[https://en.wikipedia.org/wiki/Wavefront_.obj_file Wavefront<sup>1</sup> (*.obj)]
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCS Menu
::Open Inventor (*.iv)
|-
|


[[File:O3D_LCSMenu.png|right]]
:After the file is loaded the surface model is automatically triangulated to facilitate additional processing, such as decimation and smoothing. Note: Orient3D currently ignores color and texture definitions from MTL and COL files that sometimes accompany Wavefront OBJ files.


<ul>
;Save Surface (global frame)
<li>
: saves the current surface model in the global reference frame as an OBJ file. If a subject file is loaded, it will be updated with the name of the saved surface file. The file dialog contains an option for specifying the units of the vertex coordinates.
'''Reset to Identity''': resets the LCS to the identity matrix (i.e., aligned with the global frame).
</li>
<li>
'''Load from File...''': loads a 4x4 transform matrix from a file and assigns it to the LCS. The transform must be specified as 16 comma-separated values defining the row-major transform from the global frame to the local frame.
</li>
<li>
'''Save to Subject Object''': saves the current LCS to the subject object in the subject file. It is useful for saving the LCS when you have manually moved it on the surface model in the 3D window. If you use an algorithm to calculate the LCS, or load it from a file, the subject file is automatically updated, so you do not need to use this command.
</li>
</ul>


|}
;Save Surface (local frame)
: saves the current surface model in its local reference frame as an OBJ file. If a subject file is loaded, it will be updated with the name of the saved surface file. The file dialog contains an option for specifying the units of the vertex coordinates. Meters should be chosen if you plan to import the surface model into Visual3D.


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
;Exit
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Surface Menu
: exits the program. The program can also be closed using the X in the top right corner of the program window.
|-
|


[[File:O3D_SurfaceMenu.png|right]]
</div>


<ul>
<h4><span class="mw-customtoggle-LCS"><span class="mw-customtoggletext" style="color:rgb(6,69,173);">LCS Menu</span></span></h4>
<li>
<div id="mw-customcollapsible-LCS" class="toccolours mw-collapsible mw-collapsed" style="margin-left:1em; width:80%;">
'''Erase ROI Polygons''' (Alt + E): Toggles in and out of <i>Erase ROI Polygons</i> mode. In this mode, the cursor changes to a crosshair with the label <i>ROI eraser</i>. If you press and hold the left mouse button and drag the cursor over the surface model, all polygons under the cursor will be removed from any ROIs. This is useful for "cleaning up" an ROI if it projected onto an undesired part of the surface model. Press <i>Esc</i> to exit this mode.</br>
Note: There is no undo for this command.
</li>
<li>
'''Align with Cylinder''': aligns and scales the oriented bounding box of the surface model with the "Visual3D cylinder". There is no undo for this command.</br>Note: This command is not intended to be used in a DSX context.
</li>
</ul>


|}
[[File:O3D_LCSMenu.png|right]]


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
;Reset to Identity
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;View Menu
: resets the LCS to the identity matrix (i.e., aligned with the global frame).
|-
|


[[File:O3D_ViewMenu.png|right]]
;Load from File...
: loads a 4x4 transform matrix from a file and assigns it to the LCS. The transform must be specified as 16 comma-separated values defining the row-major transform from the global frame to the local frame.


<ul>
;Save to Subject Object
<li>
: saves the current LCS to the subject object in the subject file. It is useful for saving the LCS when you have manually moved it on the surface model in the 3D window. If you use an algorithm to calculate the LCS, or load it from a file, the subject file is automatically updated, so you do not need to use this command.
'''Display Global Axes''' (Alt + G): toggles the display of the global coordinate system in the 3D view.  
</li>
<li>
'''Display Local Axes''' (Alt + L): toggles the display of the local coordinate system in the 3D view.  
</li>
<li>
'''Display Cylinder''' (Alt + C): toggles the display of a cylinder to which the surface model can be aligned when preparing the surface for use in Visual3D. The Z-coordinates of the cylinder range between -1.0 and 0.0 and its radius is currently hard-coded to 0.2.</br>
Note: This command is not intended to be used in a DSX context.
</li>
<li>
'''Display ROI Annotations''' (Alt + R): toggles the display of annotations on the subregions of each ROI.
</li>


<li>
</div>
'''Object Configuration (Ctrl + Shift + O): toggles the appearance of the dockable <i>Object Configuration</i> widget.</br>
Note: Only available with a DSX Suite license.
</li>
<li>
'''Image/Surface Match''' (Ctrl + Shift + I): toggles the appearance of the dockable <i>Image/Surface Match</i> widget.</br>
Note: Only available with a DSX Suite license.
</li>
<li>
'''Image Data Generator''' (Ctrl + Shift + G): toggles the appearance of the dockable <i>Image Data Generator</i> widget.</br>
Note: Only available with a DSX Suite license.
</li>
<li>
'''Landmarks''' (Ctrl + Shift + L): toggles the appearance of the dockable <i>Landmarks</i> widget.
</li>
<li>
'''Local Coordinate System''' (Ctrl + Shift + C): toggles the appearance of the dockable <i>Local Coordinate System</i> widget.
</li>
<li>
'''Regions of Interest''' (Ctrl + Shift + R): toggles the appearance of the dockable <i>Regions of Interest</i> widget.
</li>
</ul>


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


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


[[File:O3D_OptionsMenu.png|right]]
;Erase ROI Polygons (Alt + E)
: Toggles in and out of <i>Erase ROI Polygons</i> mode. In this mode, the cursor changes to a crosshair with the label <i>ROI eraser</i>. If you press and hold the left mouse button and drag the cursor over the surface model, all polygons under the cursor will be removed from any ROIs. This is useful for "cleaning up" an ROI if it projected onto an undesired part of the surface model. Press <i>Esc</i> to exit this mode.</br>
:Note: There is no undo for this command.


<ul>
;Align with Cylinder
<li>
: Aligns and scales the oriented bounding box of the surface model with the "Visual3D cylinder". There is no undo for this command.</br>Note: This command is not intended to be used in a DSX context.
'''Settings''': Opens the Settings dialog.
</li>
</ul>


|}
;Clean Polyhedral Model
: Fixes face and vertex normals so that they point outward, and fills in holes in the surface.
:Note: There is no undo for this command.


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


[[File:O3D_HelpMenu.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:O3D_ViewMenu.png|right]]
<li>
'''Help''' (F1): opens the Orient3D wiki page in the default browser.
</li>
<li>
'''About...''': displays a dialog with information about Orient3D, including the installed version number. It also contains the <i>Deactivate</i> button, for deactivating your license.
</li>
</ul>


|}
;Display Global Axes (Alt + G)
: toggles the display of the global coordinate system in the 3D view.


==Widgets==
;Display Local Axes (Alt + L)
: toggles the display of the local coordinate system in the 3D view.


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
;Display Cylinder (Alt + C)
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object Configuration
: toggles the display of a cylinder to which the surface model can be aligned when preparing the surface for use in Visual3D. The Z-coordinates of the cylinder range between -1.0 and 0.0 and its radius is currently hard-coded to 0.2. Note: This command is not intended to be used in a DSX context.
|-
|
[[Image:O3D_ObjectConfigurationWidget.png|right]]


<ul>
;Display ROI Annotations (Alt + R)
<li>
: toggles the display of annotations on the subregions of each ROI.
'''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 subject objects when you select a session. If the object has a <i>Surface File</i> or <i>ROI Surface File</i> specified for it, the object is enabled in the list so you can select it. The object that is selected is displayed in the 3D view. You can select only one object at a time.
</li>
</ul>


|}
;Object Configuration (Ctrl + Shift + O)
: toggles the appearance of the dockable <i>Object Configuration</i> widget. Note: Only available with a DSX Suite license.


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
;Image/Surface Match (Ctrl + Shift + I)
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Landmarks
: toggles the appearance of the dockable <i>Image/Surface Match</i> widget. Note: Only available with a DSX Suite license.
|-
|
[[Image:O3D_LandmarksWidget.png]]


Landmarks are 3D locations on a surface model, such as ligament attachment points, that you digitize for later use in other applications.
;Image Data Generator (Ctrl + Shift + G)
Their coordinates are expressed in the reference frame of the object’s segmented image data (not the “local coordinate system”), and are stored in the subject file.  
: toggles the appearance of the dockable <i>Image Data Generator</i> widget. Note: Only available with a DSX Suite license.


<ul>
;Landmarks (Ctrl + Shift + L)
<li>
: toggles the appearance of the dockable <i>Landmarks</i> widget.  
'''Landmarks Table''': The table lists all of the landmarks that are defined in the object, with their names and X, Y, and Z coordinates. To change the name of a landmark, double-click on the name and type in a new one. To move an existing landmark, select the landmark in the list and then click on the new location on the surface model.
</li>
<li>
'''Add Landmark''': creates a new landmark. Press the button and move the cursor into the 3D view. The cursor will change into a crosshair with the label "NEW LANDMARK." Click anywhere on the surface model to create a landmark at that location. Press <i>Esc</i> before clicking on the model to cancel the command. Once the landmark has been digitized and added to the table, you can double-click on its name and change it.
</li>
<li>
'''Remove Landmark''': deletes a landmark. Select the landmark in the table and then press this button to remove it.
</li>
</ul>


|}
;Local Coordinate System (Ctrl + Shift + C)
: toggles the appearance of the dockable <i>Local Coordinate System</i> widget.


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
;Regions of Interest (Ctrl + Shift + R)
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Local Coordinate System (LCS)
: toggles the appearance of the dockable <i>Regions of Interest</i> widget.
|-
|
[[Image:O3D_LocalCoordinateSystemWidget2.png|right|300px]]


This widget lets you create a local coordinate system (LCS) for each object in your data set. Before tracking an object in X4D or Locate3D, you should define an LCS for it because the tracking output for each X-ray frame is the transform from the X-ray lab frame to the object's LCS. The LCS is stored in the subject file, and is expressed as the transform from the object's segmented image frame to its local coordinate system (as if you were traveling from the segmented frame to the LCS). There are three methods of defining an LCS, as described in [[Orient3D_HowTo_Define_LCS|<i>How To: Define the LCS of an Object</i>]].
</div>


{| class="wikitable" width="70%"
<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;LCS Algorithms
<div id="mw-customcollapsible-Options" class="toccolours mw-collapsible mw-collapsed" style="margin-left:1em; width:80%;">
|-
|
<!--
{{Excerpt|Orient3D_LCS_Algorithms}}
-->
The LCS algorithms are implemented in a dll plugin framework, so it is possible to write your own and plug it into Orient3D. The currently implemented algorithms are:


<ol>
[[File:O3D_OptionsMenu.png|right]]
<li>
<b>Vertebra [Anderst]</b>    <i>Anderst, W., personal communication</i>. This algorithm is designed for vertebral disks, and puts the LCS in the middle of the disk with Y pointing superiorly and Z anteriorly. It requires placement of eight landmarks, four around the perimeter of the superior surface of the disk, and four around the perimeter of the inferior surface of the disk.
</li>


<li>
;Settings
<b>Distal Femur [Miranda]</b>    <i>Miranda, D., et al. J Biomech 43(8), pp. 1623–26, 2010</i>. This algorithm does not require any landmarks, but supports the use of three optional ones. It is recommended that you first try the algorithm without any landmarks. If the LCS is not calculated properly (which can happen if the femoral shaft is too short), try adding the <i>Anterior</i> landmark, which can go anywhere on the anterior side of the femur. If the LCS is still not right, try adding <i>ShaftProximal</i> and <i>ShaftDistal</i>, which are used to define the long axis of the femoral shaft.
: Opens the Settings dialog.
</li>


<li>
</div>
<b>Proximal Tibia [Miranda]</b>    <i>Miranda, D., et al. J Biomech 43(8), pp. 1623–26, 2010</i>. This algorithm does not require any landmarks, but supports the use of three optional ones. It is recommended that you first try the algorithm without any landmarks. If the LCS is not calculated properly (which can happen if the tibial shaft is too short), try adding the <i>Anterior</i> landmark, which can go anywhere on the anterior side of the tibia. If the LCS is still not right, try adding <i>ShaftProximal</i> and <i>ShaftDistal</i>, which are used to define the long axis of the tibial shaft.
</li>
</ol>


|}
<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="wikitable" width="70%"
[[File:O3D_HelpMenu.png|right]]
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Visual3D
|-
|
The Visual3D panel can be opened by checking its checkbox and lets you create an LCS using Visual3D's method of defining proximal and distal joints with targets. Consult the [[Coordinate_System|Visual3D documentation]] for details on this method.
|}
|}


{| class="mw-collapsible mw-collapsed wikitable" width="90%"
;Help (F1)
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Regions of Interest (ROIs)
: opens the Orient3D wiki page in the default browser.
|-
|


[[Image:O3D_ROIWidget2.png|right|300px]]
;About...
: displays a dialog with information about Orient3D, including the installed version number. It also contains the <i>Deactivate</i> button, for deactivating your license.


Regions of interest (ROIs) are portions of an object's surface model that have been labelled as belonging to a particular group. They are used to calculate distance maps for articulating bones by finding the shortest distance from each point in one ROI to the corresponding ROI on a neighboring bone. For example, on the distal femur it is common to define an ROI on the lateral condyle and another one on the medial condyle. On the proximal tibia, an ROI would cover the medial half of the plateau, and a second ROI would cover the lateral half. After both bones have been tracked for a motion trial, distance maps between the medial femur and medial tibia ROIs could be calculated, and the same for the lateral side. In Visual3D these maps can be displayed as color tables on the articulating bones, and used to graph shortest bone-to-bone distances during the trial. Before defining ROIs on an object, it is important to define the LCS first. When ROIs are created, they are aligned with the LCS so that it is easier to interpret distance calculations, and to ensure that all ROIs on an object align with each other. Like the LCS algorithms, the ROIs are implemented in a dll plugin framework, allowing you to integrate your own ROI types. <!--There are currently three types of ROIs:-->
</div>


{| class="wikitable" width="70%"
==Widgets==
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commands
|-
|
 
<ul>
<li>
'''Add''': creates a new ROI and adds it to the table.
</li>
<li>
'''Remove''': deletes the selected ROI, even if it has been placed (but not projected) on the surface model. However, if the ROI has already been projected, it does not remove it from the model.
</li>
<li>
'''Place''': displays the ROI floating above the surface model, based on the landmarks. You can then check and modify its positioning before actually projecting it onto the model. To assist with the positioning of the ROI, a yellow wire frame search box is displayed as well. The ROI is projected onto the portion of the surface model that is within this search box. The size of the search box can be adjusted using the parameters in the Parameters section.
</li>
<li>
'''Adjust''': enters and exits manual ROI adjustment mode. In this mode the placed ROI can be moved manually using the mouse buttons. The following interactions are defined:
<ul>
<li>
Rotating about the ROI center - moving the mouse while pressing the left mouse button
</li>
<li>
Spinning - moving the mouse while pressing the left mouse button and the Ctrl key
</li>
<li>
Translation - moving the mouse while pressing the left mouse button and the Shift key or moving the mouse while pressing the middle mouse button
</li>
<li>
Scaling - moving the mouse while pressing the right mouse button
</li>
</ul>
Note that the yellow search box adjusts itself with the ROI.
Pressing the <i>Adjust</i> button a second time exits manual adjustment mode.
</li>
<li>
'''Project''': projects the placed ROI onto the surface model. Each ROI subregion is projected along its normal to determine the polygons of the surface that it intersects. These polygons are labelled with that subregion's label.
</li>
<li>
'''Clear Surface''': clears all of the ROI labels from the surface model.
</li>
</ul>
 
|}
 
{| class="wikitable" width="70%"
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Parameters
|-
|
<ul>
<li>
'''Principal ROI Expand''': the scale factor for the search box in the principal direction of the ROI. The principal axis depends on the type of ROI, but is roughly equal to the direction of projection.
</li>
<li>
'''Secondary ROI Expand''': the scale factor for the search box along the width of the ROI.
</li>
<li>
'''Tertiary ROI Expand''': the scale factor for the search box along the length of the ROI.
</li>
<li>
'''ROI Offset Factor''': the amount to offset the ROI surface along the principal axis, specified as a percentage (0.0 to 1.0) of the maximum dimension of the object. The default value is 0.03. The principal axis depends on the type of ROI, but is roughly equal to the direction of projection.
</li>
</ul>
|}
 
{| class="mw-collapsible mw-collapsed wikitable" width="100%"
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Currently implemented ROI types
|-
|
 
{| class="mw-collapsible mw-collapsed wikitable" width="90%"
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rectangle [NxM]
|-
|
:'''Rectangle [NxM]''' is a flat rectangular ROI whose normal vector is specified by the orientation parameter. It is divided into NxM subregions, and is projected onto the object along the negative of its orientation axis. Its initial placement on the object is specified by four landmarks: <i>edge1</i>, <i>edge2</i>, <i>edge3</i>, and <i>edge4</i>. These landmarks do not need to be placed in any specific order, or in any specific locations relative to each other. They are used to define the minimum and maximum extents of the ROI in the two non-principal dimensions in the object’s local coordinate system. For example, if the ROI’s orientation is +Z or -Z, then the minimum and maximum X and Y coordinates of the four landmarks define the ROI rectangle in the XY plane.
[[File:O3D SampleRectangleROI.png|400px]]
|}
 
{| class="mw-collapsible mw-collapsed wikitable" width="90%"
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Swept Rectangle [NxM]
|-
|
:'''Swept Rectangle [NxM]''' is a curved rectangular surface divided into NxM subregions. It is useful for defining ROIs on curved bone surfaces such as the femoral condyles. Its placement is defined by four landmarks: <i>curve1</i>, <i>curve2</i>, <i>curve3A</i>, and <i>curve3B</i>. The first three landmarks define the arc along which the ROI is swept. They also define the direction with N subregions. <i>Curve3B</i> should be placed such that the vector from <i>curve3A</i> to <i>curve3B</i> is perpendicular to the arc, and along the orientation axis of the ROI. <i>Curve3A</i> and <i>curve3B</i> define the direction with M subregions and the distance between them defines the width of the ROI. When the ROI is projected, each subregion is projected along [the negative of] its normal. Because the normals of adjacent subregions along the length of the arc are not parallel, their projections on the object surface will overlap. In these cases the overlapping surface is bisected and divided equally between the two subregions.
[[File:O3D SampleSweptRectangleROI.png|400px]]
|}
 
{| class="mw-collapsible mw-collapsed wikitable" width="90%"
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disk
|-
|
:'''Disk''' is a circular flat circular ROI whose normal vector is specified by the orientation parameter. It is divided into NxM subregions, and is projected onto the object along the negative of its orientation axis. Its placement is defined by two mandatory and two optional landmarks. The mandatory landmarks are <i>Center</i> and <i>Outer Radius</i>, which define the center and outer perimeter of the ROI, respectively. These mandatory landmarks also define the direction with N subregions. The optional <i>Inner Radius</i> defines the radius of the hole inside the ROI, and the <i>Pie Angle</i> allows you to remove a pie-shaped slice from the disk. The slice is defined by the angle <i>Pie Angle-Center-Outer Radius</i> (the slice between <i>Pie Angle</i> and <i>Outer Radius</i> is removed).
[[File:O3D SampleDiskROI1.png|400px]]
[[File:O3D SampleDiskROI2.png|400px]]
|}
|}
 
|}
 
{| class="mw-collapsible mw-collapsed wikitable" width="90%"
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image/Surface Match
|-
|
This widget lets you check if an object's surface model is in the same reference frame as its image data. This is important in X4D so that the surface models are aligned with the DRRs. It works by creating an image surface from the image data, and displaying it in the 3D view with the object's surface model. If they are not aligned, you can use the widget controls to scale, rotate, and translate the image surface so that it aligns with the surface model. Then you can apply the inverse of this transformation to the surface model, so that it aligns with the initial pose of the image surface.
 
[[Image:O3D_ImageSurfaceMatchWidget.png|right]]
 
<ul>
<li>
'''Create Image Data''': creates a partially transparent surface (the image surface) directly from the object's image data and adds it to the 3D view. It loads the image file specified in the object definition in the loaded subject file. A surface model is created by running a marching cubes algorithm on the thresholded image. Before the surface is displayed it is smoothed and decimated. For the thresholding step the ''Render Threshold'' parameter (see: [[XManager_Tutorial|xManager]]->Objects->Complete Objects->File Data) is used if it is defined in the subject file. If the value of the Render Threshold parameter is not appropriate an error message is displayed.
</li>
<li>
'''Remove Image Surface''': removes the image surface from the 3D view, which should be done after you have aligned it with the surface model and transformed the model.
</li>
<li>
'''Scale, Rotation, Translation''': These number fields and sliders define the transformations that are applied to the image surface. They are applied in the order in which they are listed in the widget, and the rotations are body-fixed.
</li>
<li>
'''Store Transform''': builds a 4x4 transform from the current scale, rotation, and translation values, and stores it internally. It then resets the scales, rotations, and translations to their initial values. The total transform that is applied to the image surface is this stored transform followed by the current scale, rotation, and translation values. Storing the transform and then specifying additional manipulations of the image surface allows you to perform more complicated transformations, such as an X rotation followed by a Y rotation followed by another X rotation. If you store the transform when there is already one stored, the new one is concatenated onto the stored one.
</li>
<li>
'''Clear Transform''': resets the stored transform to the identity matrix.
</li>
<li>
'''ICP''': This command runs an iterative closest point algorithm to try to automatically align the image surface with the object's surface model. It starts with the surfaces in their current positions, then translates the image surface so its centroid coincides with the object surface's centroid, then runs the ICP algorithm. This algorithm often fails to align the surfaces if a rotation of more than 60 degrees is required, so for best results you should manually align them more closely than that before running the algorithm.
'''Note:''' Another limitation of ICP is that it usually doesn't produce perfect alignment because it operates on the vertices of the surfaces, and the surfaces usually have different vertex sets. Because of this, the pose that the ICP algorithm calculates is output to the scale, rotation, and translation sliders in the widget. Thus you can manually adjust the values to achieve better/perfect alignment before transforming the object.
</li>
<li>
'''Transform Object''': This command applies the inverse of the total transform to the object's surface model. The total transform is the stored transform followed by the scale, rotation, and translation specified by the number fields and sliders. The stored transform is then reset to the identity matrix, and the scales, rotations, and translations are reset to their initial values. After transforming the object you should save it to a file with ''File -> Save Surface (global frame).''
</li>
</ul>
 
|}
 
{| class="mw-collapsible mw-collapsed wikitable" width="90%"
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image Data Generator
|-
|
This widget creates 3D image data from surface models of objects. X4D tracks objects in X-ray images by generating DRRs from 3D image data (usually CT) of the objects. In some cases CT data is not appropriate for a particular subject and only surface models are available. These surface models could be CAD files of metal implants, or surfaces made from MRI or some other imaging modality that does not represent bone density. This widget creates simulated CT data from the surface models so that the objects can be tracked in X4D. For implants you would typically start with a CAD model of the device, and create a solid object within the image data. For bones, it is recommended that you obtain an outer surface (the outer boundary of the cortical bone), and an inner surface (the inner boundary of the cortical bone), to create more realistic image data. If an inner surface is not available, you can specify the cortical thickness in order to create a shell of constant depth.</br>
'''Note:''' this widget is only available when the computer has a CUDA-capable graphics card installed.
 
[[Image:O3D_ImageDataGeneratorWidget.png|right]]
 
{| class="wikitable" width="60%"
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Voxel Size
|-
|
These fields specify the XYZ dimensions of the voxels in model units (usually mm). As you change the values, the voxel count of the resulting image is updated.
|}
 
{| class="wikitable" width="60%"
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bone Densities
|-
|
:'''Cortical'''
:The density of the voxels at the outer boundary of the cortical bone.
:'''Cancellous'''
:The density of the voxels in the center of the bone. If an inner surface is defined, these are the voxels between the inner and outer surfaces. If no inner surface is defined, these are the voxels in the object that are more than ''cortical thickness'' from the outer surface.
:'''Variation'''
:The percent variation (noise) in densities in the cortical and cancellous regions of bone. Adding noise can make the image data look more realistic, and it helps reduce undesirable edge artifacts when performing edge detection on DRRs made from the image data.
:'''Note:''' The voxels between the inner and outer surfaces are not all given the cortical density (+/- the variation), because this produces a double edge in the edge detected DRR that is not in the X-ray images. Instead the voxels are given the cortical density right at the outer boundary, and then ramp down to the cancellous density at the inner boundary. This produces a DRR edge image that better matches the X-ray edge image.
|}
 
{| class="wikitable" width="60%"
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inner Surface
|-
|
If the current object has an OBJ file defining the inner surface of the cortical bone, the ''Use Inner Surface'' checkbox will be enabled. If the box is checked, this inner surface will be used when creating the image data. Voxels between the inner and outer surfaces will be given the specified cortical density, and voxels inside the inner surface will be given the specified cancellous density. If the box is not checked, the ''Cortical Thickness'' field is enabled. A cortical thickness of -1 means there is no inner boundary, so all voxels inside the outer surface will be given the cortical density. A value greater than zero will create an inner surface that is a constant distance (the specified thickness) from the outer surface. Voxels between the surfaces will have cortical density, and voxels inside the inner surface will have cancellous density.
|}
 
{| class="wikitable" width="60%"
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create Image Data
|-
|
Pressing this button creates the image data. The resulting TIFF file will be added to object definition in the subject file, replacing any previously defined image file.
|}
 
|}
 
{| class="mw-collapsible mw-collapsed wikitable" id="Settings" width="90%"
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3D View
|-
|
 
The 3D View shows the surface model of the currently loaded object. It can also display the global and local coordinate systems. You can change the view camera using these commands:
 
<ol>
<li>
Rotation: left mouse button
</li>
<li>
Zooming: right mouse button or mouse wheel
</li>
<li>
Panning: Shift + left mouse button or middle mouse button
</li>
<li>
Spinning: Ctrl + left button (spinning is rotating about an axis perpendicular to the screen)
</li>
</ol>
 
'''R''': Resets the view camera such that the surface model is centered in the window.
 
 
'''Manual LCS manipulation'''.</br>
The LCS is the only object that can be manipulated in the view. The LCS can be selected by clicking on it while holding the Ctrl key. A trackball consisting of three axes and three circles is then displayed. Clicking near one of these axes or circles will select it and a mouse move will result in a constraint manipulation of the LCS (translation along selected axis or rotation in selected circle plane). Clicking anywhere else within the trackball will enable free manipulation: free-form rotation with the left mouse button and free-form translation with the left mouse button while the Shift key depressed. When the trackball is displayed, zooming of the view camera can be achieved with the mouse wheel.</br>
Clicking anywhere outside of the trackball or pressing <i>Esc</i> will deselect the LCS and hide the trackball.</br>
Note: Don't forget to use the <i>Save to Subject Object</i> command to save the manually manipulated LCS to the subject object in the subject file.
 
[[Image:O3D_3DView.png|600px]]]
 
|}
 
{| class="mw-collapsible mw-collapsed wikitable" id="Settings" width="90%"
! style="text-align:left;" | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Settings
|-
|
 
<ul>
<li>
'''Color Theme''': You can choose between a light and dark color theme.
</li>
</ul>


|}
<!-- Note: '====' gives '[edit] link; '<h4> doesn't -->
<h4><span id="Orient3DWidget01"></span>[[Orient3D: Object Configuration|Object Configuration]]</h4>
<h4><span id="Orient3DWidget01"></span>[[Orient3D: Landmarks|Landmarks]]</h4>
<h4><span id="Orient3DWidget01"></span>[[Orient3D: Local Coordinate System|Local Coordinate System (LCS)]]</h4>
<h4><span id="Orient3DWidget01"></span>[[Orient3D: Regions of Interest|Regions of Interest (ROIs)]]</h4>
<h4><span id="Orient3DWidget01"></span>[[Orient3D: Image/Surface Match|Image/Surface Match]]</h4>
<h4><span id="Orient3DWidget01"></span>[[Orient3D: Image Data Generator|Image Data Generator]]</h4>
<h4><span id="Orient3DWidget01"></span>[[Orient3D: 3D View|3D View]]</h4>
<h4><span id="Orient3DWidget01"></span>[[Orient3D: Settings|Settings]]</h4>

Latest revision as of 14:18, 6 July 2021

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

Orient3D prepares surface models created by Surface3D (or third-party software such as Mimics and ScanIP) for use in kinematic analyses after they have been tracked in X4D or Locate3D. With it you can define a local coordinate system (LCS) for each object, landmarks, such as ligament attachment sites, and regions of interest (ROIs), which are used in the calculation of distance maps. The local coordinate system of an object is usually, but not necessarily, its “anatomical” reference frame. When a local coordinate system is defined for an object, it is stored in the subject file as a transform from the frame of the object’s segmented image data to the local coordinate system. To analyze tracking results from X4D in Visual3D, the surface model, landmarks, and regions of interest must be saved in the local coordinate system. Even if you are not exporting your data for kinematic analysis in Visual3D, it is still recommended to define the anatomical coordinate system in Orient3D. X4D's tracking results are output using this coordinate system, and it is easier to manipulate the bone in X4D when an anatomical coordinate system is defined.

Tutorials

How To: Define the LCS of an Object

How To: Define Regions of Interest on an Object

Image and Surface Files

Menus

File Menu

Load Subject (Ctrl + O)
loads a subject file. Note: Only available with a DSX Suite license.
Save Subject (Ctrl + S)
saves the currently loaded subject to its existing subject file. Note: Only available with a DSX Suite license.
Save Subject As
saves the currently loaded subject to a new subject file. Note: Only available with a DSX Suite license.
Load Surface...
loads a single surface model file. If you load a surface with this command, there is no way to save the local coordinate system or any landmarks you may define, because these items are saved in the subject file. Orient3D is able to load the following formats:
Wavefront1 (*.obj)
Open Inventor (*.iv)
After the file is loaded the surface model is automatically triangulated to facilitate additional processing, such as decimation and smoothing. Note: Orient3D currently ignores color and texture definitions from MTL and COL files that sometimes accompany Wavefront OBJ files.
Save Surface (global frame)
saves the current surface model in the global reference frame as an OBJ file. If a subject file is loaded, it will be updated with the name of the saved surface file. The file dialog contains an option for specifying the units of the vertex coordinates.
Save Surface (local frame)
saves the current surface model in its local reference frame as an OBJ file. If a subject file is loaded, it will be updated with the name of the saved surface file. The file dialog contains an option for specifying the units of the vertex coordinates. Meters should be chosen if you plan to import the surface model into Visual3D.
Exit
exits the program. The program can also be closed using the X in the top right corner of the program window.

LCS Menu

Reset to Identity
resets the LCS to the identity matrix (i.e., aligned with the global frame).
Load from File...
loads a 4x4 transform matrix from a file and assigns it to the LCS. The transform must be specified as 16 comma-separated values defining the row-major transform from the global frame to the local frame.
Save to Subject Object
saves the current LCS to the subject object in the subject file. It is useful for saving the LCS when you have manually moved it on the surface model in the 3D window. If you use an algorithm to calculate the LCS, or load it from a file, the subject file is automatically updated, so you do not need to use this command.

Surface Menu

Erase ROI Polygons (Alt + E)
Toggles in and out of Erase ROI Polygons mode. In this mode, the cursor changes to a crosshair with the label ROI eraser. If you press and hold the left mouse button and drag the cursor over the surface model, all polygons under the cursor will be removed from any ROIs. This is useful for "cleaning up" an ROI if it projected onto an undesired part of the surface model. Press Esc to exit this mode.
Note: There is no undo for this command.
Align with Cylinder
Aligns and scales the oriented bounding box of the surface model with the "Visual3D cylinder". There is no undo for this command.
Note: This command is not intended to be used in a DSX context.
Clean Polyhedral Model
Fixes face and vertex normals so that they point outward, and fills in holes in the surface.
Note: There is no undo for this command.

View Menu

Display Global Axes (Alt + G)
toggles the display of the global coordinate system in the 3D view.
Display Local Axes (Alt + L)
toggles the display of the local coordinate system in the 3D view.
Display Cylinder (Alt + C)
toggles the display of a cylinder to which the surface model can be aligned when preparing the surface for use in Visual3D. The Z-coordinates of the cylinder range between -1.0 and 0.0 and its radius is currently hard-coded to 0.2. Note: This command is not intended to be used in a DSX context.
Display ROI Annotations (Alt + R)
toggles the display of annotations on the subregions of each ROI.
Object Configuration (Ctrl + Shift + O)
toggles the appearance of the dockable Object Configuration widget. Note: Only available with a DSX Suite license.
Image/Surface Match (Ctrl + Shift + I)
toggles the appearance of the dockable Image/Surface Match widget. Note: Only available with a DSX Suite license.
Image Data Generator (Ctrl + Shift + G)
toggles the appearance of the dockable Image Data Generator widget. Note: Only available with a DSX Suite license.
Landmarks (Ctrl + Shift + L)
toggles the appearance of the dockable Landmarks widget.
Local Coordinate System (Ctrl + Shift + C)
toggles the appearance of the dockable Local Coordinate System widget.
Regions of Interest (Ctrl + Shift + R)
toggles the appearance of the dockable Regions of Interest widget.

Options Menu

Settings
Opens the Settings dialog.

Help Menu

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

Widgets

Object Configuration

Landmarks

Local Coordinate System (LCS)

Regions of Interest (ROIs)

Image/Surface Match

Image Data Generator

3D View

Settings

Retrieved from ""