Subject-specific information is what enables a skeleton labeling template (VST) to be converted to a subject-specific labeling skeleton (VSK). All of the skeleton calibration operations make changes to the labeling skeleton, as can be seen inside the VSK file. For VST version 3 files, the attributes that are modified by at least one of the existing skeleton calibration operations are:
- Parameters. These control the pose of joints and the position of markers in the parent segment coordinate frame. A single parameter can be applied to both a segment and a marker or any combination of markers and segments. The calibration operations can change the value stored in the parameter.
- Segments. Bone lengths can be changed due to the parameters changing. The VST format doesn't have a concept of bone length. Bone lengths are inferred from the pose transformation between a pair of joints. This is made up of a pre- and a post-transformation. It is quite common for this transformation to have only one parameter that can be changed: this parameter is often named SomeBoneLength. The calibrated values are written to the VSK but are not reloaded on VSK import.
- Joints. Various attributes on the joint can be changed by the calibration operations. The mean, covariance, range-center and range can all be calculated from data.
- Targets. Target (marker) mean and covariance can be calculated from data.
Deciding which of the different skeleton calibration operations is best in your situation depends on a number of considerations including trial type, processing time, and desired labeling quality.
The following descriptions cover the various operations that use the same underlying skeleton calibration algorithm.
The operations change the following pieces of information in the skeleton:
|Functional Skeleton Calibration operation
|Functional Skeleton Calibration - Markers Only operation
|Static Skeleton Calibration operation
|Static Skeleton Calibration - Markers Only operation
|Calculate Skeleton Joint & Marker Statistics operation
For information on how to use the operations in common Nexus workflows, see Choose the appropriate subject calibration workflow.
Functional Skeleton Calibration operation
This operation is the most general of the skeleton calibration operations. It is used to fully calibrate a labeling skeleton from a trial in which the subject is moving. This is normally a ROM trial but can sometimes be a movement trial.
Functional Skeleton Calibration optimizes both joint and marker positions. It also calculates joint and marker statistics.
Ensure the trial covers the full range of motion that is expected in the movement trials.
The Functional Skeleton Calibration operation runs two algorithms:
- The first optimizes the skeleton segment and marker parameters. This is done using a subset of the frames in the trial. These are chosen to get the subject in a variety of poses. The more frames that are considered, the better the skeleton will be, however, using more frames makes the calibration take longer.
The calibration algorithm simultaneously tries to get the skeleton marker positions to be as close as possible to the corresponding labeled reconstructions. It does this by changing the joint angles, segment poses and marker positions. It considers only the selected frames, so selecting more frames gives the algorithm more poses to try to match. The algorithm minimizes a statistical distance measuring how close the skeleton markers are to the reconstructions. This distance accounts for the fact that some skeleton markers (with a larger covariance) are expected to be found a larger physical distance away from their reconstructions. The default parameters reset this covariance to the template covariance (in the VST). The motion that is allowed between segments is constrained by the joint type. Any joint type mis-modeling is not absorbed into the joint, but by either the segment or marker positions, where the effect has less impact. In sparse marker sets this is sometimes a necessary trade-off.
- The second algorithm calculates the joint and marker statistics (see Calculate Skeleton Joint & Marker Statistics operation).
Examples of using Functional Skeleton Calibration
- Generating a skeleton with the best quality labeling results. This is because the method provides a large amount of data for markers and joint movement.
- Creating a custom labeling skeleton template defined using the Labeling Template Builder.
For information on how to use this operation in common Nexus workflows, see Calibrate a labeling skeleton using a ROM trial in the Vicon Nexus User Guide.
Functional Skeleton Calibration - Markers Only operation
This operation calculates the skeleton's marker positions from a ROM trial. This operation is useful if the skeleton has already been scaled appropriately for the subject and more accurate marker position information is required. Any parameters that are shared between bones and markers are not altered. The operation finishes by calculating joint and marker statistics (see Calculate Skeleton Joint & Marker Statistics operation).
The Functional Skeleton Calibration - Markers Only operation is very similar to the full Functional Skeleton Calibration algorithm (see Functional Skeleton Calibration operation). The only difference is that the parameters that refer to segments positions are kept constant. For this algorithm to provide good labeling results, the skeleton must already be the correct size. You can achieve this in the following ways:
- Scale the template skeleton to a reconstruction point cloud.
- Recalibrate a subject after adjusting its markers.
Compared with the full Functional Skeleton Calibration operation, the Markers Only version has an extra step at the beginning. In this step, the parameters that influence segment properties (bone lengths) are identified. These parameters are held constant during the operation. If a parameter refers to both a segment and a marker, it is also held constant. This reduction in parameters to estimate means that a Markers Only calibration tends to be faster than a full calibration.
The algorithm uses the same criteria as the full skeleton calibration to decide how to move the marker parameters and joint angles for each selected frame. It also runs the algorithm to calculate the joint and marker statistics.
Examples of using Functional Skeleton Calibration - Markers Only
Recalibration of an existing skeleton when the markers have moved, for example, when an orthosis has been applied. If the orthosis is expected to move significantly with respect to the underlying segment, this operation is more suitable than Static Skeleton Calibration - Markers Only because this operation updates the marker covariances as well as the marker positions.
Static Skeleton Calibration operation
Static Skeleton Calibration attempts to calibrate a skeleton from a single frame. It tries to optimize both joint and marker positions. The subject is usually in a T-pose for the entire trial.
This operation calibrates the joint and marker positions from a single frame. It also tries to fit the skeleton joint angles. To do this, it runs the same algorithm as Functional Skeleton Calibration with only one frame selected. It is not normally advisable to run this operation on a general skeleton template because it is not possible to determine the joint centers without any motion. For this operation to succeed, every joint center must be defined by a linear combination of marker positions. As it is not possible to estimate the joint and marker statistics from a single frame, the subject statistics are left unchanged.
Static Skeleton Calibration - Markers Only operation
This operation calculates the skeleton's marker positions from a single frame. This operation is only useful if the skeleton has already been scaled appropriately for the subject.
The Static Skeleton Calibration - Markers Only operation provides a quick way to update a skeleton's marker positions. It usually operates on a static trial in which the subject is in the T-pose. Sometimes it is run on a single frame from a full ROM as part of the Auto Initialize Labeling pipeline. Static Skeleton Calibration - Markers Only estimates both the joint angles and the marker positions for the selected frame. Before running this operation, the subject skeleton must be correctly scaled. This is usually done by scaling the subject, as is done by the Auto Initialize Labeling pipeline. You could also use a previously calibrated skeleton for the same subject.
As happens in Functional Skeleton Calibration - Markers Only, the parameters that refer to segments are identified and held constant by the operation. The calibration then optimizes the joint angles and marker positions for the frame selected. Optimizing the joint angles allows the subject to be in a pose that is different from the T-pose. This protects against the calibration from introducing marker position errors due to the subject being in a slightly incorrect base pose.
As with Static Skeleton Calibration, the joint and marker statistics are left unchanged.
Examples of using Static Skeleton Calibration - Markers Only
This operation is used for recalibration of an existing correctly scaled skeleton. It is part of the Auto Initialize Labeling pipeline and runs after the Scale subject operation. It can also be used to recalibrate markers if they have fallen off and been replaced.
Calculate Skeleton Joint & Marker Statistics operation
This operation calculates joint and marker statistics from either a movement trial or a ROM trial. Both the Functional Skeleton Calibration and the Functional Skeleton Calibration - Markers Only operations run this operation after calculating the skeleton parameters.
This operation calculates joint and marker statistics for the subject. Joint and particularly marker statistics are used in the labeling algorithms. Joint statistics tell the labelers how much a particular joint is expected to move. Marker statistics give information about how much soft tissue motion is expected for the markers. Good marker statistics can improve labeling significantly.
This operation assumes that the skeleton has already been calibrated. It does not change any joint or marker positions. If it is run on an uncalibrated skeleton, the covariances and ranges calculated will be large.
For joints, this operation calculates values for: mean, covariance, range center, and range matrix. For markers, it calculates mean and covariance. The statistics are calculated from all of the frames in the trial.
The values stored in the mean and covariance are not calculated directly from the data. During a ROM trial the subject has only a few joints moving at a time, the rest are not moving much. If you plot the joint position samples over a trial you tend to see a large peak of samples and a few spread across the joint range.
In some cases, such as the knee, a mean and covariance calculated from the samples does a very bad job of representing the distribution. In the case of the knee, the majority of the samples are collected with the knee straight. This leads to a mean that is nearly straight and a covariance that suggests the knee can bend forward and backward equally well.
Instead of calculating the mean and covariance directly, a range and range center is calculated. This applies to both joints and markers. It is then assumed that the samples that really represent the distribution are uniformly distributed across the range. If you look in the VSK, you can see that joint means and joint range centers are the same.
Examples of using Calculate Skeleton Joint & Marker Statistics
Calculate Skeleton Joint & Marker Statistics can be used when a skeleton has been calibrated using a single frame but doesn't label well. This operation can be used on a movement trial to calculate better joint and marker statistics which will improve the labeling performance.
For information on how to use this operation in common Nexus workflows, see Choose the appropriate subject calibration workflow.