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 distance data. click here for instructions
- 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 impRigid. 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.