Orient3D Overview: Difference between revisions
m (→Widgets) |
m (→Widgets) |
||
Line 289: | Line 289: | ||
<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: | '''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> | <li> | ||
Rotating about | Rotating about the ROI center - moving the mouse while pressing the left mouse button | ||
</li> | </li> | ||
<li> | <li> | ||
Spinning - moving mouse while pressing left button and | Spinning - moving the mouse while pressing the left mouse button and the Ctrl key | ||
</li> | </li> | ||
<li> | <li> | ||
Translation - moving mouse while pressing left button and | 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> | ||
<li> | <li> | ||
Scaling - moving mouse while pressing right button | Scaling - moving the mouse while pressing the right mouse button | ||
</li> | </li> | ||
</ | </ul> | ||
Note that the yellow search box adjusts itself with the ROI. | Note that the yellow search box adjusts itself with the ROI. | ||
Pressing the <i>Adjust</i> button a second time exits manual adjustment mode. | Pressing the <i>Adjust</i> button a second time exits manual adjustment mode. | ||
Line 375: | Line 375: | ||
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. | 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| | [[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. | |||
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. | |||
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. | '''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> | |||
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).'' | |||
|} | |} |
Revision as of 20:35, 25 June 2020
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
Menus
File Menu |
---|
![]()
|
Options Menu |
---|
![]()
|
Widgets
Landmarks |
---|
Landmarks are 3D locations on a surface model, such as ligament attachment points, that you digitize for later use in other applications. 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.
|
Local Coordinate System (LCS) | ||||
---|---|---|---|---|
![]() 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 How To: Define the LCS of an Object.
|
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 Data Generator | ||||||||
---|---|---|---|---|---|---|---|---|
This widget creates 3D image data from surface models of objects. X4D tracks objects in xray 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. ![]()
|
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:
R: Resets the view camera such that the surface model is centered in the window.
|
Settings |
---|
|