Child pages
  • z_*OBSOLETE* Calculate Rigid Body Motion in Matlab

This page was moved to

Click in the link above if you are not automatically redirected in 10 seconds.

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »


Despite the high precision of the biplanar fluoroscopy system, digitized data contain errors compounded from several potential sources. (1) The undistortion relies on accurately determining the centroids of the grid. Image quality and/or imperfection in flattening the grid may cause small error. (2) camera calibration provides a "best estimate" of camera position based on digitized clicks on the image and the "true" measured distances of the points on the calibration object. Digitizing error and/or offsets in the calibration object point distances can also add uncertaintly. (3) Digitizing, whether automated or by hand can also add error and finally (4) 3D reconstruction between the two cameras may also add error.

Even very small error for individual markers can cause larger and more noticeable errors in rigid object orientation. This is clearly visible as "jittery bones" when raw data are used to drive animations.

Two Smoothing Steps

1. "Smart" smoothing. - using "measured" intermarker distances from CT data to constrain digitized data

2. Standard smoothing - butterworth filter to remove high frequency noise from bone orientations

"Smart" smoothing - basic instructions

What you need:

  • CT Marker locator coordinates (from the "Create a Setup Scene" step)
  • xyzpts file from DLTdataviewer
  • smoothData.m, rigidFilter2.m, and rigidOrientation2.m. click here to download CTXmatlab tools

What to do:

  • Open matlab and type smoothData
  • You will be asked for the [prefix]xyzpts file. Select it.

  • You will then be asked for the CT Marker coordinate file. Select it.
  • Input how many bones
  • Select the markers associated with bone1 and click OK
  • Repeat last for all other bones
  • Save the output file (default is [prefix]xyzpointsBones.csv)

What you get:

  • The .csv file contains 6 columns per bone. 3 translations and 3 rotations
  • This format can be read in maya using imRg. see maya animation step 4
  • You will probably get a less jittery but not perfect animation using only this smoothing step. Continue to Standard smoothing for best results.

Standard Smoothing

under construction 

  • No labels