| home | wall motion | 2003-11-17 |
|
I recently spent a few man-months modelling left ventricle wall motion
using data from a magnetic six-degree-of-freedom sensor attached
to an intra-ventricular catheter.
The end of the catherter is placed against the endocardial surface
and allowed to rest there for several heartbeats.
A key assumption underlying my modeling is that
the endocardial surface is rough enough to hold the catheter tip in place
through the heartbeat without slipping.
We also assume that the pressure of the catheter against the endocardium
does not significantly alter the motion.
Note thar example shown here is a diseased heart, so the wall motion may not be repesentative of a normal heart. In the example shown here, there were initially 74 trajectories. Each trajectory covers 3 seconds, with 3d position and orientation sampled 50 times per second. Each trajectory is accompanied with an ECG (sampled every millisecond). The trajectory sampling is done so that 2.5 seconds corresponds to the end diastole phase of some heart beat. |
|
|
|
|
The first challenge is to synchronize motion data from different
trajectories.
I do this by fitting periodic 1d bsplines to each ECG, optimizing both
the positions of the spline's control points and the period of the spline.
This is a variation on smoothing splines --- the fit is done by minimizing
a penalty that combines smoothness with the fit of the spline to the ECG samples.
I reject abnormal heart beats and ones where the period changes noticeably over the 3 second sample. This leaves 64 trajectories where the period is reasonably constant. The period determined from the ECG, and the fact the 2.5 seconds corresponds to end-diastole is used to convert each trajectory's time coordinate into a synchronized heartbeat phase parameter. A periodic 3d bspline curve (with fixed knots and period) is then fit to each synchronized trajectory, transforming the set of 64 trajectories into 64 bspline trajectory curves. The resulting bspline curves should be filtered to remove ones where the curve fits the trajectory data badly --- this is evidence that the catheter tip is slipping --- but that has not been done in this example. |
|
The final step is to fit a periodic subdivision surface to the set of
periodic bspline curves.
This turned out to be surprisingly easy.
The basic idea is to treat the set 3d periodic bspline curves
(with given, fixed knots) as a finite dimensional vector space.
Then existing Java code
for fitting subdivision surfaces to 3d point data could be used
almost wihtout modification.
The subdivision surface and data fitting code only assume
that data points and vertex positions are instances of some class
that implements The result is shown in the animation at right. The bspline trajectories are in green. A red line connects the trajectory to the corresponding point on the surface at every phase of the heart beat. |
|
| home | wall motion | 2003-11-15 |