Обнаружение волны R в ЭКГ

Этот пример показывает, как использовать вейвлеты для анализа сигналов электрокардиограммы (ЭКГ). Сигналы ЭКГ часто являются нестационарными, что означает, что их содержимое изменяется с течением времени. Эти изменения представляют интерес.

Вейвлеты разлагают сигналы на изменяющиеся во времени частотные (масштабные) компоненты. Поскольку функции сигнала часто локализуются во времени и частоте, анализ и оценка легче при работе с более разреженными (редуцированными) представлениями.

Комплекс QRS состоит из трех отклонений в форме волны ЭКГ. Комплекс QRS отражает деполяризацию правого и левого желудочков и является наиболее заметной функцией ЭКГ человека.

Загрузка и построение графика формы волны ЭКГ, где peaks R комплекса QRS были аннотированы двумя или более кардиологами. Данные ЭКГ и аннотации взяты из базы данных аритмии MIT-BIH. Данные отбираются со скоростью 360 Гц.

load mit200
figure
plot(tm,ecgsig)
hold on
plot(tm(ann),ecgsig(ann),'ro')
xlabel('Seconds')
ylabel('Amplitude')
title('Subject - MIT-BIH 200')

Figure contains an axes. The axes with title Subject - MIT-BIH 200 contains 2 objects of type line.

Можно использовать вейвлеты, чтобы создать автоматический детектор QRS для использования в таких приложениях, как оценка интервала R-R.

Существует две клавиши для использования вейвлетов в качестве общих детекторов функций:

  • Вейвлет разделяет компоненты сигнала на различные полосы частот, позволяя более разреженное представление сигнала.

  • Вы часто можете найти вейвлет, который напоминает функцию, которую вы пытаетесь обнаружить.

Вейвлет 'sym4' напоминает комплекс QRS, что делает его хорошим выбором для обнаружения QRS. Чтобы проиллюстрировать это более четко, извлеките комплекс QRS и постройте график результата с расширенным и переведенным вейвлетом 'sym4' для сравнения.

qrsEx = ecgsig(4560:4810);
[mpdict,~,~,longs] = wmpdictionary(numel(qrsEx),'lstcpt',{{'sym4',3}});
figure
plot(qrsEx)
hold on
plot(2*circshift(mpdict(:,11),[-2 0]),'r')
axis tight
legend('QRS Complex','Sym4 Wavelet')
title('Comparison of Sym4 Wavelet and QRS Complex')

Figure contains an axes. The axes with title Comparison of Sym4 Wavelet and QRS Complex contains 2 objects of type line. These objects represent QRS Complex, Sym4 Wavelet.

Используйте максимальное перекрывание дискретного вейвлет (MODWT), чтобы увеличить peaks R в форме волны ECG. MODWT является неопределенным вейвлет, которое обрабатывает произвольные размеры выборки.

Во-первых, разложите сигнал ЭКГ до уровня 5 с помощью вейвлета 'sym4' по умолчанию. Затем восстановите локализованную по частоте версию формы волны ЭКГ, используя только коэффициенты вейвлета в шкалах 4 и 5. Шкалы соответствуют следующим приблизительным полосам.

  • Шкала 4 -- [11.25, 22.5) Гц

  • Шкала 5 - [5.625, 11.25) Гц.

Это охватывает полосу пропускания, показанную для максимизации энергии QRS.

wt = modwt(ecgsig,5);
wtrec = zeros(size(wt));
wtrec(4:5,:) = wt(4:5,:);
y = imodwt(wtrec,'sym4');

Используйте квадратные абсолютные значения аппроксимации сигнала, построенные из коэффициентов вейвлета, и используйте алгоритм пикового нахождения, чтобы идентифицировать peaks R.

Если у вас есть Signal Processing Toolbox™, можно использовать findpeaks для определения местоположения peaks. Постройте график формы волны R-пика, полученный с вейвлет, аннотированным автоматически обнаруженными пиковыми местоположениями.

y = abs(y).^2;
[qrspeaks,locs] = findpeaks(y,tm,'MinPeakHeight',0.35,...
    'MinPeakDistance',0.150);
figure
plot(tm,y)
hold on
plot(locs,qrspeaks,'ro')
xlabel('Seconds')
title('R Peaks Localized by Wavelet Transform with Automatic Annotations')

Figure contains an axes. The axes with title R Peaks Localized by Wavelet Transform with Automatic Annotations contains 2 objects of type line.

Добавьте экспертные аннотации к форме волны R-пика. Автоматическое время обнаружения пика считается точным, если в пределах 150 мс от истинного пика (±75 msec).

plot(tm(ann),y(ann),'k*')
title('R peaks Localized by Wavelet Transform with Expert Annotations')

Figure contains an axes. The axes with title R peaks Localized by Wavelet Transform with Expert Annotations contains 3 objects of type line.

В командной строке можно сравнить значения tm(ann) и locs, которые являются экспертным временем и автоматическим пиковым временем обнаружения соответственно. Улучшение peaks R с помощью вейвлет приводит к скорости попадания 100% и отсутствию ложных срабатываний. Вычисленная частота сердечных сокращений с использованием вейвлета преобразования составляет 88,60 ударов в минуту по сравнению с 88,72 ударов в минуту для аннотированной формы волны.

Если вы пытаетесь работать с квадратными величинами исходных данных, вы находите возможность вейвлета преобразования для изоляции R, peaks делает задачу обнаружения намного легче. Работа с необработанными данными может вызвать неправильные идентификации, такие как когда квадратный пик S-волны превышает пик R-волны около 10,4 секунд.

figure
plot(tm,ecgsig,'k--')
hold on
plot(tm,y,'r','linewidth',1.5)
plot(tm,abs(ecgsig).^2,'b')
plot(tm(ann),ecgsig(ann),'ro','markerfacecolor',[1 0 0])
set(gca,'xlim',[10.2 12])
legend('Raw Data','Wavelet Reconstruction','Raw Data Squared', ...
    'Location','SouthEast');
xlabel('Seconds')

Figure contains an axes. The axes contains 4 objects of type line. These objects represent Raw Data, Wavelet Reconstruction, Raw Data Squared.

Использование findpeaks на квадратичных величинах необработанных данных приводит к двенадцати ложным срабатываниям.

[qrspeaks,locs] = findpeaks(ecgsig.^2,tm,'MinPeakHeight',0.35,...
    'MinPeakDistance',0.150);

В дополнение к переключателям в полярности peaks R, ЭКГ часто повреждается шумом.

load mit203
figure
plot(tm,ecgsig)
hold on
plot(tm(ann),ecgsig(ann),'ro')
xlabel('Seconds')
ylabel('Amplitude')
title('Subject - MIT-BIH 203 with Expert Annotations')

Figure contains an axes. The axes with title Subject - MIT-BIH 203 with Expert Annotations contains 2 objects of type line.

Используйте MODWT, чтобы изолировать peaks R. Использование findpeaks для определения пиковых местоположений. Постройте график формы волны R-пика вместе с экспертной и автоматической аннотациями.

wt = modwt(ecgsig,5);
wtrec = zeros(size(wt));
wtrec(4:5,:) = wt(4:5,:);
y = imodwt(wtrec,'sym4');
y = abs(y).^2;
[qrspeaks,locs] = findpeaks(y,tm,'MinPeakHeight',0.1,...
    'MinPeakDistance',0.150);
figure
plot(tm,y)
title('R-Waves Localized by Wavelet Transform')
hold on
hwav = plot(locs,qrspeaks,'ro');
hexp = plot(tm(ann),y(ann),'k*');
xlabel('Seconds')
legend([hwav hexp],'Automatic','Expert','Location','NorthEast');

Figure contains an axes. The axes with title R-Waves Localized by Wavelet Transform contains 3 objects of type line. These objects represent Automatic, Expert.

Коэффициент попадания снова равен 100% с нулем ложных предупреждений.

В предыдущих примерах использовался очень простой вейвлет детектор QRS, основанный на приближении сигнала, созданной из modwt. Цель состояла в том, чтобы продемонстрировать способность преобразования вейвлета изолировать компоненты сигнала, а не создавать наиболее надежный вейвлет основанный на преобразовании детектор QRS. Возможно, например, использовать тот факт, что вейвлет обеспечивает многомасштабный анализ сигнала для усиления пикового обнаружения.

Ссылки

Гольдбергер А. Л., Л. А. Н. Амарал, Л. Гласс, Дж. М. Хаусдорф, П. Ч. Иванов, Р. Г. Марк, Дж. Е. Миетус, Г. Б. Муди, К-К Пенг, Х. Э. PhysioBank, PhysioToolkit и PhysioNet: компоненты нового исследовательского ресурса комплексных физиологических сигналов. Циркуляция 101. Vol.23, e215-e220, 2000. http://circ.ahajournals.org/cgi/content/full/101/23/e215

Муди, Г. Б. «Оценка анализаторов ЭКГ». http://www.physionet.org/physiotools/wfdb/doc/wag-src/eval0.tex

Муди Г. Б., Р. Г. Марк. «влияние базы данных аритмии MIT-BIH». IEEE Eng in Med and Biol. vol. 20, Number 3, 2001), стр. 45-50.

Похожие темы