R обнаружение волны в ECG

В этом примере показано, как использовать вейвлеты, чтобы анализировать электрокардиограмму (ECG) сигналы. Сигналы ECG являются часто неустановившимся подразумевать, что их содержимое частоты изменяется в зависимости от времени. Эти изменения являются мероприятиями.

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

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

Загрузите и постройте форму волны ECG, где peaks R комплекса QRS был аннотирован двумя или больше кардиологами. Данные о ECG и аннотации взяты из Базы данных Аритмии 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')

Можно использовать вейвлеты, чтобы создать автоматический детектор 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')

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

Во-первых, анализируйте форму волны ECG вниз к уровню 5 с помощью значения по умолчанию 'sym4' вейвлет. Затем восстановите локализованную версию частоты формы волны ECG с помощью только коэффициенты вейвлета в шкалах 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')

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

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

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

При попытке работать над квадратными величинами исходных данных, вы находите, что возможность вейвлета преобразовывает, чтобы изолировать peaks R, делает проблему обнаружения намного легче. Работа над необработанными данными может вызвать ошибочные дешифрирования такой как тогда, когда пик 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')

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

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

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

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')

Используйте 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');

Частота успешных обращений - снова 100% с нулевыми ложными предупреждениями.

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

Ссылки

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

Капризный, G. B. "Оценивая ECG Анализаторы". http://www.physionet.org/physiotools/wfdb/doc/wag-src/eval0.tex

Муди Г. Б., Р. Г. Марк. "Удар Базы данных Аритмии MIT-BIH". Инженер IEEE в Med и Biol. Издание 20, Номер 3, 2001), стр 45-50.