If you would like to make this program work better, here are a few
ideas:
- Extending it to make measurements on multiple signals is an easy project.
Allow the user to set measurement reference points on each signal separately.
- It's also not too difficult to copy the input annotation file, writing
the measurements into the num fields of the annotations, so that
WAVE can display them as a signal. If you try this, keep in mind
that num values must be integers in the -128 to 127 range, so
don't record the deviations in V. If you want to write the
measurements into a signal file (as we did with tach
earlier in this chapter), this can get complicated--see the source
for tach for hints about doing this.
- The measurement point should move closer to the J point at high heart rates;
see any reference on the ECG for a discussion of this issue.
- The measurements as made above are very easily contaminated by small amounts
of noise in the signals. You should be able to improve them significantly by
averaging the amplitudes of several samples in the neighborhoods of
the isoelectric point and the ST level measurement point.
- The program should not produce measurements for ventricular ectopic beats,
or for beats that are extremely noisy. Noise detection is an
interesting research problem in itself.
- You may wish to examine using beat averaging (or median filtering) to reduce
noise in the measurements further; the
WFDB Programmer's Guide
describes a beat averager that may be a useful starting point.
- Another source of measurement error is baseline wander in the ECG,
visible as slopes in the intervals between beats. You can reduce this
error by modelling the baseline drift and subtracting it from
the signal. Simple linear models, or quadratic or cubic splines, can
be used.
George B. Moody (george@mit.edu)
2019-03-08