Цифрова фільтрація кардіосигналу на основі БПФ - Моя автоматика

У цій статті ми розповімо про класичну побудову цифрового фільтра на основі швидкого перетворення Фур'є. Схожий алгоритм цифрової фільтрації кардіограми використовується в ECG Control. Наприклад відфільтруємо фрагмент реальної кардіограми в програмному пакеті Mathcad.
Двома словами про те, що таке цифровий фільтр. Цифровий фільтр - це програмний алгоритм, спрямований на придушення перешкод у вихідному сигналі за рахунок корекції його (сигналу) спектрального складу. Працює це досить просто.
З любов'ю згадаємо студентські роки і серед безлічі корисних і не дуже приємно. занять знайдемо у глибинах пам'яті основи теорії радіоелектронних кіл. А говорила вона про таке: кожен періодичний сигнал можна як суму синусоїдальних сигналів різної амплітуди і частоти. Ці синусоїдальні сигнали називаються гармоніки або в рамках радіотехніки спектральні складові (а сам результат розкладання сигналу на синусоїдальні функції називається спектром). Якщо дуже просто (хай вибачать мене теоретики, які вважають себе фізиками-практиками) спектр сигналу є залежність амплітуди гармоніки сигналу від її частоти. Подання функції сумою її гармонік у матаналізі називається перетворенням Фур'є. Уявляємо далі: якщо будь-який сигнал розкладається на гармоніки, що і кардіограма теж, адже вона ще якась періодична (нагадаю, що періодичний сигнал - той, який повторюється через рівні проміжки часу). Розкласти ми кардіограму можемо, але назріває питання – а навіщо? Потім, що в реальних умовах, хоч би як ми давили перешкоду освітлювальної мережі 50 Гц аналоговими фільтрами, частотно-залежними негативними зворотнимизв'язками підсилювачів, ланцюгами активної нейтралізації, у кінцевому сигналі, що прийде на АЦП, вона все одно буде. Причому перешкод цієї буде багато. Дуже багато щоб там не говорили теоретики-розробники аналогових схем, у яких розробка закінчується програмними пакетами Matlab/Simulink або NI Multisim. Як її, гадини, позбудеться, повністю? З використанням обчислювальних потужностей вашого ПК вигнання бісів перешкод стає завданням розв'язуваного: розкладаємо сигнал на спектральні складові (отримуємо спектр), тобто. здійснюємо пряме перетворення Фур'є. Знаходимо в діапазоні кардіосигналу перешкоду 50 Гц і її амплітуду встановлюємо в нуль (так її!). Після цієї процедури проводимо зворотне перетворення Фур'є - тобто повертаємо наш сигнал із задавленою перешкодою назад у тимчасову область - отримуємо кардіосигнал без 50 Гц. Ось, власне, і вся хитрість цифрової фільтрації. Доповню, що процедура дискретного перетворення Фур'є, хоч прямого, хоч зворотного, у класичному її вигляді, моторошна та повільна. Але знайшлися розумники, які придумали швидке перетворення Фур'є, зменшивши, тим самим, кількість необхідних операцій з N^2 до N * log(N), де N - кількість відліків у фрагемнті, що фільтрується. Зупинятись на алгоритмі БПФ не будемо – кому цікаво, читаємо тут. А ми переходимо до практики.
Цифрову фільтрацію зробимо з фрагментом кардіосигналу, тривалість якого становить 5 секунд, частота дискретизації - 2 кГц (тобто розмір вибірки становить 10 000 відліків). На малюнку зліва представлений досліджуваний фрагмент сигналу в часовій області, в якому є сигнал перешкоди 50 Гц і вищі гармоніки. Зробимо зменшення тестової вибірки до розміру 8192 точки для коректного застосування алгоритмів швидкого перетворення Фур'є(Алгоритм працює лише з такою кількістю вибірок, яке являють собою ступінь двійки - у нашому випадку, найближче число до 10 000 - це два в тринадцятому ступені = 8192). На малюнку праворуч показаний спектр потужності досліджуваного сигналу, отриманий алгоритмом БПФ.
Для корекції спектрального складу сигналу реалізуємо функцію смугової цифрової фільтрації, аргументом якої передаються коефіцієнти Фур'є перетворення k, частота зрізу f0 і число вищих гармонік перешкоди numH, які необхідно придушити.

У представленому вираженні fd визначає ширину частотної смуги придушення, fi зв'язує частоту спектральної складової з її індексом k в загальній послідовності, res - змінна, яка повертає результат обчислень. Пригнічення перешкоди 50 Гц і чотирьох її вищих гармонік проводиться шляхом множення спектра сигналу на реалізовану функцію коригуючу смугової цифрової

На малюнку ліворуч представлений спектр кардіосигналу після застосування смугової фільтрації, малюнку праворуч – ЕКГ сигнал після корекції його спектрального складу з використанням цифрового фільтра на основі БПФ.
Роботу алгоритму можна перевірити у програмі Mathcad; Запис кардіограми, зареєстрованої без цифрової фільтрації, у текстовому файлі можна завантажити тут.
Обробка ЕКГ, цифровий фільтр на основі БПФ, фільтрація кардіограми, як забрати перешкоду, зашумлена ЕКГ, спектр кардіограми