Обработка цифрового сигнала ЭКГ в С#

Я ищу библиотеку С#.NET для цифровой фильтрации (lowpass, highpass, notch) для фильтрации сигналов ЭКГ в режиме реального времени. Любые предложения?

Ответ 1

Если это некоммерческое использование, я хорошо слышал о библиотеке Signal Lab. Он бесплатный для некоммерческого использования, 570 долларов США для коммерческого использования. Это немного перехитрит, если вам просто нужны фильтры с низким проходом, высоким уровнем пропускания и полосовым фильтром. но он поставляется с элементами управления для визуализации данных, если у вас их еще нет.

Если вам просто нужны фильтры, вы можете просто написать свой собственный код для 3-х фильтров. Вы можете проверить страницы wikipedia для примеров psudocode Фильтр нижних частот и Высокочастотный фильтр, я быстро не нашел пример кода фильтра noch.

Вот несколько примеров C различных фильтров, чтобы помочь вам понять, что вам нужно делать.

Ответ 2

Если ваши данные поступают в дискретные фрагменты, я бы использовал Reactive Extensions. Это позволяет вводу управлять тем, что происходит дальше (реагируя на данные), вместо использования операций "pull". Затем вы можете реагировать на эти данные, передавая их через фильтры, а затем реагировать на эти данные, отображая их или выполняя дополнительные вычисления.

Если вам нужны только фильтры с надрезом, высоким и низким, это тривиально для записи. По мере поступления каждого фрагмента данных вы можете решить, передавать ли его на следующий шаг (или сначала изменить данные). Я бы предположил, что вы можете написать весь этот раздел кода менее чем за 20 строк (может быть, менее 10) с помощью Rx. Это приведет к некоторому довольно элегантному коду для этого варианта использования.

Ответ 3

Насколько я знаю, вы можете написать свое, потому что я это сделал.

Это должно быть хорошим стартером для вас (закодировано на С++, но вы можете легко скрывать синтаксис до С#) - http://www.codeproject.com/KB/cpp/ecg_dsp.aspx

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

Я рекомендую сначала использовать алгоритм wavehaping, чтобы получить гладкий сигнал на стороне С#, прежде чем применять фильтры, если частота дискретизации ЭКГ низкая.