How to compare cross calibrations
Idea:
To compare different cross calibrations performing identical motions and computing the residual motion would be great. However, motion is only reproducible to a certain extent. The idea here is to use the cross-calibration sequences (single axis, step 1 and step 2) to compare the same motion (pose 1 to pose 2) with different cross calibrations. To that end, a single step 1 is measured and for each cross calibration an individual step 2 is measured while changing the cross-calibration in between. Therefore, the phantom is move only once and each calibration residual is computed for this motion rather than comparing the residuals of similar motions.
As the residual calibration error depends on the motion and error axis, it is advised to do this test for multiple motions.
Prerequisites:
- Phantom, marker, camera
- CacheSendMPT.exe
- Cross calibration sequence with protocols step 1 and step 2 (xpace_gre_cal)
- Disable the iterative cross-calibration computation in step 2
- At least 2 different cross-calibration which should be compared. If you want to compare different calibration stored with respect to the permanent marker in the MR bore, make sure to transform/recover them into camera position using the recall function
- Knowledge of the xpace folder and file structure
- Resilience against frustration
Files:
- xpace_fake_ref2.ice (this file is created by step 1 and automatically deleted after step 2)
- xpace_poslock.txt (this file saves the poslock created by step 1 and has to be adapted for each cross calibration)
- xpace_transform_mpt.txt (this file contains the currently used cross calibration, which is the first calibration, all others are ignored)
- xpace logs (each sequence save several log file, all with the same index/number)
- xpace_start_last.txt (this file is a copy of the last scanned xpace_start_XXX.txt, so the system knows which index/number was acquired at last)
Step-by-step:
Pose 1:
- Put the phantom in its initial position, all residual motion estimates by PACE will be computed with respect to this position
- Scan step 1
- Create a copy of <xpace_fake_ref2.ice> as backup
- Create poslock file for each calibration you want to test:
- Start CacheSendMPT.exe
- Enter the proper IP e.g. 192.168.2.7
- Open the Socket (usually default options are enough)
- Average the current position (pose 1) using the average button
- Stop the broadcast of the MPT system
- Start the broadcast of the Cache and Send Tool (press <Send>)
- Change the current cross calibration in the xpace_transform_mpt.txt to the calibration you want to test
- Create a new poslock with the Cache and Send Tool and rename the file to e.g. “…_CC2.txt”
- Repeat the last 2 steps for all calibrations you want to test
- Stop the broadcast of Cache and Send Tool, close it, and reactive the MPT/BOLT broadcast
- Change the currently used cross calibration back to the first/initial calibration
SUMMARY: You should have scanned step 1, have a backup of the fake_ref and for each calibration to test have an associated poslock file. The calibration currently used should be the first one used
Pose 2.1:
- Move the phantom to its second position (rotation, translation… up to you)
- Scan step 2
SUMMARY: This give you the residual error for the initially used calibration
Pose 2.X ([2..N] calibrations to be tested)
- Change the fake_ref: Create a copy of the of fake_ref backup and rename it “xpace_fake_ref2.ice”
- Change the cross calibration: Put the next calibration transform to be tested on top of the transform_mpt file
- Change the poslock: Delete/rename the old poslock and rename the next poslock created by the Cache and Send Tool (e.g. “xpace_poslock_CC2.txt”) to “xpace_poslock.txt”
- Move/Delete old logs: All logs created by the previous step e.g. “Pose 2.1” should be removed from the log folder including the xpace_start_last log
- Rename the xpace_start file from pose 1 into xpace_start_last. This way the calibration is referred to the step1 logs and not anything created by a step 2 scan
- Scan step 2 again
- Repeat this procedure for each calibration you want to test
SUMMARY: This will give you the residual for another cross-calibration using the same motion as before
For feedback please contact hendrik.mattern@ovgu.de