X4D HowTo Track Bones
|Language:||English • français • italiano • português • español|
It is recommended that you track bones one at a time in xray images, unless two or more bones overlap in the images and accounting for this overlap improves tracking. While tracking with optimization, the optimizer randomly positions each bone during each iteration and then evaluates the fit of all of them together. If one bone was moved to a slightly better pose while the others were moved to worse ones (a common occurrence), the overall fit would be worse and the poses of all bones would be discarded. The recommended procedure is to track the largest/easiest bone first, with all others turned off. Then track an adjacent bone, with all others turned off. If the tracking results with the second bone are not good and you suspect it is because of overlap with the first bone, then try tracking both together, as explained in How To: Track Multiple Bones. However, most of the time it is sufficient to track each bone independently of all others. Here is the general procedure for doing so:
- Load the subject into X4D and select the session, configuration, and trial.
- Scroll through the xray images and identify the range of reporting times over which the bone is trackable.
- Check the Show Processed Xray checkbox above each xray image to view the processed xray images. The processing that is performed on the Xray and DRR images is explained in Matching Xray and DRR Images.
- Experiment with the xray processing parameters in the Xray/DRR Settings widget. You generally want strong bone edges, to facilitate tracking, but you don't want to "wash out" the finer edges that can help fine tune bone poses. The settings that are particularly important for tracking are the Xray Edge/Intensity Merge value and the lower value of the Xray Edge Capping.
- If you have motion capture data, use the guide How To: Calculate Bone Poses from Mocap Data to calculate initial poses for all of the bones. Then skip to step 8.
- Manually define poses for the bone every 5 - 10 reporting times through the trackable range. This will keep the pose map splines from extrapolating to unrealistic values, and provide reasonable initial poses for the entire trackable range. You do not need to spend a lot of time carefully adjusting the bone pose at each reporting time; this is just a first-pass manual initialization to replace mocap seeding. Putting the bone within about 10 mm and 10 degrees from its correct pose is sufficient. To do this:
- Select the bone in the DSX Configuration widget. Turn on the display of the processed DRR image in each Xray window using the Show DRR and Show Processed DRR checkboxes above each window. If the DRR is not visible in one or both windows, it probably has an initial pose that puts it outside the window. Zooming out in the Xray window with the mouse wheel should enable you to see the DRR.
- In the Xray windows, there are two ways to move the bone, and they are both described in the section Xray Windows.
- You can also manually pose the bone in the 3D view. Select 3D View from the View menu to open the window with the 3D view of the xray lab. With the checkboxes above that window you can turn on the display of bone and the xray images. The commands for moving the bone are described in the section 3D View below.
- When you are done moving a bone for the current reporting time, be sure to save the pose to the pose map by selecting Add Current Poses to Maps in the Pose Maps widget. If you do not, any changes you made to the pose will be discarded when you change the reporting time.
- To see graphs of these initial bone poses, open the Graphs widget from the View menu. Select the bone from the pull-down menu in the upper left of the window to see graphs of all 6 DOFs for this bone.
- Save the initial bone poses to a file by selecting Save Pose Maps from the File menu. You will be prompted to browse for a file to create. Then save the subject file with File -> Save Subject.
- Go to one of the reporting times where it looks like tracking will be easiest. Manually move the bone so that it's within 2-3 mm and 2-3 degrees of the correct pose.
- Open the Object Tracking widget from the View menu.
- Set the 6 DOF ranges to 3-4 mm and 3-4 degrees. Set Max iterations to 2000.
- Select Solve Current Frame. Turn off the display of the DRRs to make the optimization run faster.
- Turn the DRRs back on and check the result. You may need to run the optimization longer or manually move the bone closer to the correct pose. The goal here is to determine a good tradeoff between taking the time to manually adjust the bone to get it close, and taking the time to run a longer optimization. At one extreme you can spend 1-2 minutes manually adjusting the bone to get it as close as possible (at each reporting time), then set the max iterations low (500) and DOF ranges tight (1-2 mm/deg), then run a short optimization. At the other extreme you can rely on mocap data or very quick manual adjustment to get the bone within about 10 mm and 10 degrees, then set the DOF ranges to 15 mm and 15 degrees and run a 5000 - 10000 iteration optimization.
- If you find that the optimization does not lock into the correct pose even when you start it close, this could be because the DRR image and xray image are not a good match to each other. This is usually because the intensities and thicknesses of the edges in the DRR image do not match those in the xray image. This can often (though not always) be fixed by adjusting the Xray and DRR image-processing settings in the Xray/DRR Settings widget. If some quick trial and error does not resolve the problem, you can try the guide How To: Optimize Xray/DRR Settings.
- File -> Save Pose Maps.
- Go to the next or previous reporting time. The initial pose for this time should be pretty close to correct because it's calculated by interpolating the pose map splines. Try Solve Current Frame and check the results. If they are not optimal, try adjusting the tracking parameters and/or manually adjusting the bone pose.
- Proceed to solve 2 or 3 more reporting times one at a time. If the results are good and no adjustments are needed, set the Tracking range to a small range of adjacent reporting times and solve them continually with Solve Range.
- File -> Save Pose Maps.
- Once you have solved a small range of reporting times you can try a larger range (or possibly even the entire trackable range).
- File -> Save Pose Maps.
- Once the trackable range is solved, you can try fine-tuning and smoothing the results with 4D solving, which is described in the section 4D Optimization. Use the command Solve Range 4D to try it.