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.

a smoothed ecg
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 ahn.geometry.Point. Creating a periodic 3d bspline class that implemented this interface was straightforward.

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