QRS_DET

Transkrypt

QRS_DET
Przetwarzanie sygnałów w systemach diagnostyki medycznej
AKADEMIA GÓRNICZO-HUTNICZA
im. St. Staszica w Krakowie
WEAIiE, Katedra Automatyki
Laboratorium Biocybernetyki
QRS_DET
Przedmiot: Przetwarzanie sygnałów w systemach diagnostyki medycznej.
Temat projektu: Detekcja i synchronizacja reprezentacji uderzeń serca
(zespołu QRS).
Spis treści:
1 Abstrakt...............................................................................................................2
2 Wstęp..................................................................................................................3
3 Dyskusja wybranych metod..............................................................................10
4 Omówienie proponowanego rozwiązania........................................................14
5 Implementacja..................................................................................................16
6 Testy..................................................................................................................17
7 Wnioski.............................................................................................................22
8 Bibliografia........................................................................................................24
Dodatek A: Zawartość katalogów projektu........................................................25
Dodatek B: Opis kompilacji i uruchomienia........................................................26
Dodatek C: Narzędzia testujące..........................................................................27
Wykonali: Szymon Reszczyński, Maciej Ślimak
V rok IS
konsultant: dr hab. inż. Piotr Augustyniak
Wersja 1.0
Kraków, 16.01.2011
1 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
1 Abstrakt
Słowa kluczowe: QRS, detekcja QRS, punkt detekcji
W ramach niniejszego raportu przedstawione zostaną wyniki prac
projektowych, mających na celu stworzenie fragmentu systemu (pierwszego
z
wymaganych),
pozwalającego
na
automatyczną
analizę
zapisu
3-odprowadzeniowego badania EKG.
Realizowana część systemu ma odpowiadać za detekcję zespołu QRS. Jako
dane wejściowe program ma przyjmować sygnał zapisu badania EKG, a jako
wyjście ma przedstawić strukturę danych z zaznaczonymi numerami próbek
będącymi punktami detekcji. Całość projektu realizowana jest w języku
ANSI C.
Testy sprawdzające poprawność działania wykonane zostały w oparciu
o dostarczoną bazę sygnałów biometrycznych - rejestrowane metodą Holtera
(3-odprowadzeniowy zapis sygnału o częstotliwości próbkowania 128 Hz).
2 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
2 Wstęp
Elektrokardiografia zajmuje się przede wszystkim analizą pracy serca w
oparciu o zapis zmian elektrycznych zachodzących we włóknach mięśniowych
podczas jego pracy. Wszystkie zdrowe i nieuszkodzone włókna mięśniowe biorą
udział w pełnym cyklu pracy serca. Dynamika oraz synchronizacja pracy
mięśnia sercowego powoduje, że zapis EKG cechuje stosunkowa wyrazistość,
powtarzalność oraz możliwość prostego przypisania poszczególnych zjawisk
elektrycznych do określonych faz pracy. W kwestii istotnych z diagnostycznego
punktu widzenia informacji powstających w oparciu o analizę zapisu EKG
należy wymienić: parametry czasowe (określające kolejność oraz odstępy
czasowe pobudzenia oraz relaksacji mięśnia sercowego) oraz parametry
morfologiczne (określające miejsce powstawania impulsu przewodzenia oraz
drogę przez niego pokonywaną). Jednym z parametrów, który jest pomijany
(pomimo iż dla sygnałów w ogólnym znaczeniu jest on niezwykle istotny), jest
amplituda sygnału. Wiąże się to z faktem występowania szeregu zakłóceń
pozakardiologicznych oraz zakłóceń rejestracji, które nakładają się na sygnał.
Wraz
z
rozwojem
elektrokardiografii:
medycyny
wyodrębniono
cztery
●
standardowe 12-odprowadzeniowe EKG,
●
elektrokardiografia próby wysiłkowej,
●
24-godzinna rejestracja metodą Holtera,
●
wektokardiografia oraz elektrokardiografia wysokiej rozdzielczości.
gałęzie
W ramach realizacji niniejszego projektu (w zależności od decyzji
Prowadzącego),
uwaga
skupiona
zostanie
na
pełnym
12-sto
odprowadzeniowym zapisie badania EKG (skrócone do miarodajnego okresu
czasu) lub też zapis zostanie ogranczony jedynie do 3 odprowadzeń. Dane do
testów i weryfikacji pochodzić mają z bazy MIT-BIH.
Standardowe 12-odprowadzeniowe badanie EKG wykonywane jest w
spoczynkowej pozycji leżącej, przez około 10-15 sekund oraz w temperaturze
około 22 stopni Celsiusza (ze względu na możliwość wystąpienia drgań mięśni
spowodowanych zbyt niską temperaturą lub nadmierną potliwością mogącą
doprowadzić do powstania zakłóceń na styku elektrod i skóry).
3 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
Zastosowane odprowadzenia to:
●
●
●
3 dwubiegunowe kończynowe Einthovena (I - III),
3 jednobiegunowe kończynowe wzmocnione Goldbergera (aVR, aVL oraz
aVF),
6 jednobiegunowych przedsercowych Wilsona (V1-V6).
Przykładowy zapis wykonanego badania EKG został przedstawiony na
poniższej ilustracji:
Ilustracja 1: Przykładowy zapis EKG
Analizując zapis badania EKG można potwierdzić poprawność pracy
mięśnia sercowego lub wskazać pewne zmiany o charakterze patologicznym,
których potwierdzenie niejednokrotnie wymaga szeregu znacznie bardziej
zaawansowanych badań. Jest to jednak podstawowe badanie o charakterze
przesiewowym, które dzięki niskim kosztom i któtkiemu czasowi oczekiwania
na wyniki jest wykonywane jako pierwsze w przypadku podejrzenia chorób
serca.
4 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
Analizując zapis EKG zwraca się w pierwszej kolejności uwagę na obecność
oraz kształt załamków (dodatnich lub ujemnych odchyleń od linii
izoelektrycznej). Wśród nich wymienić należy:
●
●
●
●
załamek P – jest wyrazem depolaryzacji mięśnia przedsionków, cechuje
go dodatnie wychylenie,
zespół załamków QRS – odpowiada depolaryzacji mięśnia komór, załamki
Q oraz S cechuje wychylenie ujemne, podczas gdy załamek R cechuje
wychylenie dodatnie,
załamek T – odpowiada repolaryzacji komór, cechuje go wychylenie
dodatnie,
czasami występujący załamek U, cechuje go wychylenie dodatnie.
Oprócz załamków, istotnymi elementami (o określonym oraz niemogącym
ulec pominięciu znaczeniu) są odcinki oraz odstępy. Wśród nich wymienić
należy:
●
●
●
●
●
odcinek PQ – wyraża czas przewodzenia depolaryzacji przez węzeł
przedsionkowo-komorowy,
odcinek ST – okres repolaryzacji komór,
odstęp PQ – wyraża czas przewodzenia depolaryzacji od węzła od węzła
zatokowo-przedsionkowego do węzła przedsionkowo-komorowego,
odstęp ST – wyraża czas wolnej i szybkiej repolaryzacji mięśnia komór,
odstęp QT – wyraża sumę czasów depolaryzacji oraz repolaryzacji
mięśnia komór.
Wśród istotnych, z punktu
wyczytywanych z analizy zapisu
badania EKG należy wymienić:
●
●
●
widzenia diagnostycznego, informacji
standardowego 12-odprowadzeniowego
wartość rytmu serca uśredniona w ocenianym odcinku,
liczba czynników bodźcotwórczych oraz ich udział w pracy mięśnia
sercowego,
stwierdzenie występowania
odstępów i odcinków,
załamków,
5 / 28
ich
długości
oraz
wartości
Przetwarzanie sygnałów w systemach diagnostyki medycznej
●
określenie parametrów odcinka ST w każdym z odprowadzeń,
●
określenie osi serca.
Celem realizacji niniejszego projektu jest skupienie uwagi na opracowaniu
algorytmu automatycznej detekcji zespołu QRS. Program ma działać jako
pierwszy etap automatycznej analizy zapisu badania QRS. Sam zespół QRS
cechuje się amplitudą w przedziale od 15 do 20 mm od linii izoelektrycznej
oraz jego czas trwania nie powinien przekraczać 0.1 sekundy. Każde
przekroczenie tej rozciągłości czasowej świadczy o występowaniu chorób
mięśnia sercowego. Na całość analizy automatycznej 12-odprowadzeniowego
zapisu badania EKG składają się następujące czynniki:
●
określenie jakości sygnału oraz zastosowanie ewentualnej filtracji,
●
detekcja zespołów załamków QRS,
●
określenie poziomu linii izoelektrycznej oraz stosunku sygnału do szumu,
●
określenie przybliżonych rozmiarów
położenia punktu synchronizacji,
zespołu
załamków
QRS
oraz
●
obliczenie częstości rytmu,
●
klasyfikacja i wskazanie reprezentantów klas zespołów załamków QRS,
●
określenie morfologii reprezentantów klas,
●
określenie położenia początków oraz końców wszystkich załamków,
●
obliczenie parametrów oraz długości odcinka ST,
●
określenie parametrów załamka T,
●
stwierdzenie występowania późnych potencjałów komorowych,
●
obliczenie osi serca.
W ramach prac nad niniejszym projektem uwaga realizujących skupiona
zostanie maksymalnie na pierwszych 5 spośród wymienionych powyżej
podpunktów. Dane do analizy wczytywane będą z plików tekstowych o
ustalonym formacie, a wyniki detekcji wyprowadzane mają być do określonej
struktury danych (format zdefiniowany przez Prowadzącego), która na etapie
testowym będzie zapisywana do pliku tekstowego. W dalszej części niniejszego
punktu przedstawiona zostanie ogólna metodologia detekcji zespołów QRS
6 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
wraz z ewentualnym procesem przygotowania sygnału. Dopiero kolejny punkt
skupia się na bliższej analizie wybranych metod.
Przystępując zatem do analizy sygnału zapisu badania EKG w pierwszej
kolejności należy zbadać jakość sygnału. Dokonuje się tego poprzez
porównanie dwóch pierwszych maksimów w okresie 2 sekund od początku
badania (w tym czasie powinny już wystąpić zespoły QRS) do najmniejszego z
maksimów występujących w kolejnych 250 milisekundach (powinien to być
okres czasu wolny od zespołu QRS). Dodatkowo należy zbadać możliwość
przekroczenia wartości progowej przez stosunek energii w paśmie
przekraczającym 35 Hz do całkowitej energii sygnału (jest to niezbędne z
powodu możliwej konieczności usunięcia zakłóceń pochodzących z sieci). W
przypadku zbyt dużego zaszumienia sygnału konieczne jest analizowanie
danych pochodzących z innego (o lepszych parametrach) kanału lub też
usunięcie zakłóceń specjalnym filtrem cyfrowym (dotyczy to głównie zakłóceń
pochodzenia sieciowego).
Podstawowe założenia dotyczące pracy detektora
analizującego badanie EKG zostały przedstawione poniżej:
zespołu
QRS
●
oznaczone zostają tylko zespoły QRS,
●
oznaczone zostają wszystkie zespoły QRS,
●
każdy zespół QRS jest oznaczony tylko jednokrotnie,
●
numer próbki wskazanej jako położenie zespołu QRS leży w jego obrębie,
●
punkt detekcji zespołów QRS dla różnych kanałów leży w takiej samej
odległości od początku zespołu QRS.
Proces detekcji w ogólnej metodologii przebiega dwuetapowo. W pierwszej
kolejności dokonuje się przekształcenia sygnału zapisu badania EKG tak aby
uwypuklić obszary charakterystyczne dla zespołów QRS kosztem reszty
danych. Dokonuje się tego poprzez dobranie odpowiedniej funkcji detekcyjnej,
aby przyjmowała ona możliwie największe wartości w obrębie zespołów QRS, w
pozostałych obszarach powinna mieć możliwie najniższe wartości oraz
przyjmować maksymalnie jedno maksimum w obrębie zespołu QRS.
Dodatkowo sygnałe całkuje się w zmiennym oknie czasowym aby założenia
stawiane funkcji detekcyjnej zostały spełnione. Po tym procesie można
przystąpić do drugiego etapu w ramach którego należy dokonać progowania
funkcji detekcyjnej, w celu zaznaczenia punktów detekcyjnych. W ramach
7 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
progowania przyjmowany jest stały lub modyfikowalny próg, którego
przekroczenie powoduje uznanie danej próbki jako kandydata na próg detekcji.
Zmienianie wartości progu może następować jedynie w oparciu o wartości
maksymalne punktów detekcji lub również biorąc pod uwagę wartości
maksymalne szumów. Algorytm progowania jest względnie prosty. W pierwszej
kolejności badane są maksima. Jeśli przekraczają wartość progu detekcji to
punkty te uważane są za kandydatów na punkt detekcji. Jeśli nie. to uznawane
są za szum. Dalej następuje analiza kandydatów na próg detekcji. Jeśli punkt
ten znajduje się w odległości (od poprzedniego punktu detekcji)
prawdopodobnej dla wystąpienia kolejnego załamka to wtedy jeśli maksimum
to jest większe od poprzedniego to jest ono uznawane za obecnego kandydata
na punkt detekcji (poprzedni uznawany jest za załamek P). Jeśli natomiast nie
jest spełniony powyższy warunek to analizowany punkt zostaje uznany za
załamek T (poprzednie maksimum uważane jest nadal za kandydata na punkt
detekcji). Gdy odległość między punktami detekcji jest jednak zbyt mała,
punkt ten nadal jest uważany za kandydata na punkt detekcji. Ostateczna
weryfikacjakandydata na punkt detekcji występuje w oparciu o minimalna
liczbę przekroczonych wartości podprogowych. Jeśli została ona osiągnięta to
punkt ten uznawany jest za punkt detekcji. Jeśli natomiast nie została
osiągnięta to punkt ten uznawany jest za załamek T.
W przygotowaniu sygnału do dalszej obróbki i analizy niezwykle użyteczne
jest także wskazanie poziomu linii izoelektrycznej oraz stosunku sygnału do
szumu. Pierwszy z algorytmów opiera się na analizowaniu odcinka P-Q (w
szczególności około 250 milisekund poprzedzających punkt detekcji). Najpierw
wyznaczany jest obszar odpowiadający 30 milisekundom w okolicach punktu
detekcji o jednakowym (dodatnim) znaku prędkości narastania. W obrębie tego
obszaru wyznaczana jest wartość średnia (w szczególności jej ¼) potrzebna do
dalszych obliczeń. Dalej w obrębie 250 milisekund poprzedzających punkt
detekcji poszukiwany jest ciąg próbek odpowiadający czasowi 60 milisekund
(może ulec stopniowemu zmniejszaniu w ramach algorytmu jeśli taki odcinek
jest niewykrywalny), gdzie każda próbka ma mieć wartość prędkości
nieprzekraczająca ¼ prędkości średniej w obrębie zespołu QRS. W dalszym
etapie uśredniane są wagowo wszystkie próbki z tego odcinka a w wyniku
powstaje poziom linii izoelektrycznej mięśnia sercowego. Za stosunek sygnału
użytecznego do szumu przyjmuje się iloraz wartości bezwzględnej amplitudy
sygnału w obrębie zespołu QRS oraz średniej wartości bezwzględnej punktów
na izolinii. Badanie tego stosunku może być użyteczne do wykluczania
pewnych kanałów z 12-odprowadzeniowego badania EKG lub też do pomijania
8 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
pewnych zespołów QRS w procesie dalszej analizy (w szczególności w procesie
klasyfikacji).
Tak przygotowane wyniki zapisywane są w specjalnie przygotowanej
strukturze do pliku, z którego kolejny składnik systemu będzie mógł je
odczytać i przetworzyć. Dalsza część dokumentu przybliża analizę grupy metod
detekcji
zespołów
QRS
oraz
przedstawia
metodę
wybraną
do
zaimplementowania w dalszym toku prac projektowych.
9 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
3 Dyskusja wybranych metod
We wcześniejszym punkcie niniejszego raportu przedstawiony został
pewien ogólny model detektora zespołów QRS. Z uwagi na ogrom i
różnorodność proponowanych w literaturze metod postanowiono przedstawić
pewne założenia oraz myśli przewodnie pewnych reprezentantów grup
rozwiązań. W najogólniejszym zarysie metody detekcji zespołów QRS można
podzielić na algorytmy opierające się na pochodnych sygnału, sztucznej
inteligencji lub przekształceniach falkowych. Przytaczane w ramach niniejszego
punktu metody pozwolą pokazać zasadnicze różnice w podejściach
ideologicznych poszczególnych typów rozwiązań.
Najprostsza z metodologii tworzenia funkcji umożliwiającej prostszą
detekcję zespołów QRS opiera się na prostym zastosowaniu filtra
wysokopasmowego jako narzędzia różniczkującego. Różnice między tego typu
algorytmami opierają się przede wszystkim na różnicach w stosowanych
numerycznych przybliżeniach procesu różniczkowania. Z reguły użyteczne są
pierwsze pochodne, jednak niekiedy dodatkowo stosuje się kombinacje
pierwszych i drugich różniczek podczas tworzenia funkcji opisującej QRS,
której podstawowym celem jest uwypuklenie cech charakterystycznych zespołu
załamków. Tak przygotowany sygnał podlega dalszej analizie, poprzez
porównywanie go z odpowiednie ustalanym progiem (z reguły jest on
modyfikowany oraz przede wszystkim dobrany do konkretnego sygnału).
Dalsza analiza kandydatów na punkty detekcji przebiega również
różnorodnie i jest szeregiem ściśle określonych algorytmicznie reguł
charakterystycznych dla danej metody. Bardzo często stosowany jest
dodatkowy próg pozwalający na wykluczanie fałszywie wykrytych zespołów
QRS. Metody tego typu, pomimo swojej prostoty, są obecnie dosyć rzadko
stosowane, ze względu na niekoniecznie zadowalającą efektywność,
a przede wszystkim dość skomplikowane ciągi decyzyjne. Ich implementacja
pomimo prostoty idei, nastraja niejednokrotnie niemałych problemów, aby
algorytm osiągnął zadowalającą efektywność, a co za tym idzie spełniał
podstawowe wymagania stawiane mu jako narzędziu wspomagającemu służbę
zdrowia.
Istnieje również wiele metod działających w oparciu o zastosowanie wielu
połączonych filtrów wysoko oraz niskoprzepustowych, które pozwalają na
10 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
znacznie bardziej efektywne wycięcie sygnału o niewielkich amplitudach.
Następnie stosowane są funkcje (głównie o charakterze kwadratowym)
pozwalające na wygładzenie krawędzi przebiegu wykresu. Kolejny jednak etap
nie odbiega znacząco od dotychczas przedstawionego – to znaczy analizowane
i porównywane są przygotowane funkcje z modyfikowalnymi wartościami
progowymi. Wśród stosowanych najczęściej filtrów występują specjalnie
przygotowane filtry medianowe, które łączone są poprzez zastosowanie dosyć
klasycznej metody AND. Również i w tych przypadkach istnieje szereg metod
dających zadowalające efekty, jednak algorytmy nie należą do wygodnych do
zaimplementowania
i
obarczone
są
ogromną
liczbą
zależności
charakterystycznych dla pewnych grup zapisów badań EKG.
Dosyć innowacyjną metodologią automatycznej detekcji zespołów QRS
jest stosowanie do tego celu sieci neuronowych typu wielowarstwowego
perceptronu lub sieci LVQ. Dla sieci MLP budowa ich jest dosyć prosta – opiera
się bowiem na konstrukcji z prostych neuronów o funkcji przejścia w postaci
tangensa hiperbolicznego lub sigmoidy. Liczba warstw sieci nie powinna
przekraczać 3 a liczba neuronów również powinna być ograniczona rozsądkiem
(w jednym z proponowanych rozwiązań warstwa wejściowa składała się z 8 do
10 neuronów, warstwa ukryta składała się z 5 nieliniowych neuronów, a
warstwa wyjściowa składała się z jednego neuronu).
Sieć neuronowa MPL działa na zasadzie próby przewidzenia stanu
przyszłego w oparciu o stan poprzedni. Rozwiązanie powstałe w oparciu o sieć
MLP zapewniało akceptowalne rezultaty, jednak wymagało w pierwszej
kolejności dokonania procesu nauczania oraz miało pewne problemy ze zbyt
zaszumionym sygnałem EKG. Sieci typu LVQ działają w oparciu o zupełnie inną
zasadę. Tutaj neurony środkowej warstwy musiały się nauczyć rozpoznawania
sygnałów określonego typu. Ich liczba określała liczbę grup tych sygnałów.
Niestety sieć LVQ jest zdecydowanie bardziej rozbudowana (warstwy pierwsza
oraz druga wymagają stworzenia nawet kilkudziesięciu neuronów) oraz
wymaga dosyć dużego zbioru testowego. Co jest jednak bardzo ważne, to to że
dobrze nauczona sieć typu LVQ działa w zasadzie dla każdego zapisu EKG.
Podsumowując metody opierające się na sieciach neuronowych należy w
pierwszej kolejności stwierdzić ich innowacyjność, jednak wymagają one
dużego nakładu pracy przy ich tworzeniu oraz uczeniu. Jest to istotne
zwłaszcza w kontekście możliwości popełniania błędów, bowiem nie do końca
nauczona sieć neuronowa może ich popełniać znacznie więcej niż w
szczegółach dopracowane rozwiązanie algorytmiczne.
11 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
Jedna spośród znalezionych metod określana mianem P-spektrum opiera
się na stworzeniu specjalnie spreparowanej macierzy współczynników, która w
sposób całkowity pozwala na analizę ostatecznej funkcji poprzez szukanie
maksimów, dzięki czemu udaje się odnaleźć punkty czasowe w których
występuje zespół QRS. O ile sama metoda wydaje się być dosyć interesującą i
cechującą się prostotą implementacyjną, o tyle niestety znalezione materiały
traktują tematykę dosyć pobieżnie, nie przedstawiając zbyt wiele konkretnych i
szczegółowych informacji.
Ostatnią z przytoczonych metodologii jest zaprzęgnięcie do detekcji
zespołów QRS z zapisu badania EKG jest zastosowanie transformaty falkowej.
Sama matematyczna idea transformaty falkowej opiera się na splocie
(konwolucji) sygnału pochodzącego z zapisu badania EKG z wybraną falką.
Zbiór falek jest dosyć obfity i stale rozwijający się z uwagi na fakt iż ta
metodologia jest wspołcześnie niezwykle popularna w procesie detekcji
zespołów QRS. Podobnie jak w przypadku transformaty Fouriera i tutaj mamy
do czy nienie a ciągłą oraz dyskretną transformatą falkową, które to
przekształcenie jest współcześnie najczęściej stosowanym. Ze względu na
popularność algorytmów opartych o transformatę falkową to ta metodologia
została wybrana przez realizujących projekt do zaimplementowania w toku
dalszych prac. Szczegóły dotyczące wybranego rozwiązania zostaną
przedstawione w kolejnym punkcie.
Wśród wielu innych wymienianych metod detekcji zespołów QRS istniało
wiele rozwiązań, których założenia opierały się na filtracji adaptacyjnej,
zastosowaniu ukrytych modeli Markova, algorytmów genetycznych lub
transformaty Hilberta. Wszystkie te propozycjie pokazują, że tematyka
stworzenia detektora zespołów QRS, działającego w 100% przypadków, tak na
prawdę jest jeszcze otwarta. Naukowcy i inżynierowie na całym świecie starają
się odnajdywać możliwość zastosowania nowości lub dobrze znanych rozwiązań
z dziedziny matematyki, informatyki lub algorytmiki. Wszystkie one działają w
oparciu o tę samą ogólną zasadę, jednak pozwalają jedynie na dropną poprawę
skuteczności lub szybkości działania. Jest to co prawda dosyć dużo, jednak
należy pamiętać, że mają one charakter głównie akademicki lub naukowy a nie
praktycznych zastosowań. Głównie ze względu na wysoki stopień
skomplikowania algorytmów.
Przytoczone powyżej metodologie automatycznej detekcji zespołów QRS
nie wyczerpują w pełni poruszanej tematyki, jednak pozwoliły się one
zorientować w dostępnych algorytmach oraz skuteczności działania, dzięki
12 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
czemu możliwym było dokonanie wyboru metody podlegającej dalszej
implementacji. Szczegóły dotyczące metody oraz algorytmu zostaną
przedstawione w kolejnym punkcie.
13 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
4 Omówienie proponowanego rozwiązania
Po przeanalizowaniu grupy artykułów przytaczających różnorodne
metodologie automatycznej detekcji zespołów QRS, wybór metody do
zaimplementowania padł w ostateczności na algorytmy oparte o transformatę
falkową - przy wykorzystaniu falek Daubechies. Zastosowanie falek Daubechies
w detekcji zespołów QRS jest popularne i bardzo skuteczne.
Z matematycznego punktu widzenia, transformata falkowa to splot funkcji
falkowej ψ (t) z sygnałem x(t). Z ortonormalnymi dyskretnymi falkami
związane są funkcje skalujące φ (t) - po wykonaniu splotu z sygnałem
prowadzą do otrzymania współczynników aproksymacji (S).
Dyskretna aproksymacja sygnału może być przedstawiona jako:
x0(t) = xM(t) +
dm(t)
gdzie średnia aproksymacja przy skali M wynosi:
xM(t) = SM, nφ M,n (t)
Wybór falek Daubechies powodowany jest tym, że ich kształt zbliżony jest
do kształtu zespołów QRS, a ich energia skupiona jest wokół niskich
częstotliwości.
Illustration 2: Zespół QRS
14 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
Illustration 3: Kształty falek Daubechies (rzędy parzyste)
Najczęściej stosowane falki Daubechies są to te falki, które należą do
grupy falek o parzystych wartościach rzędu w zakresie D2-D20. Numer grupy
określna liczbę współczynników. Każda falka ma dokładnie dwukrotnie mniej
punktów zanikania niż wynosi liczba jej współczynników. Wraz ze wzrostem
rzędu wzrasta gładkość falek.
Badania przeprowadzone na Uniwersystecie Zielonogórskim [2] wskazują
na niski średni błąd detekcji dla falek Daubechies w stosunku do pozostałych
metod. Zgodnie z przewidywaniami, błąd detekcji ma niższą wartość dla falek
wyższych rzędów.
Szczególy implementacji zastosowanego rozwiązania
projekcie zostaną przedstawione w końcowej wersji raportu.
15 / 28
w
niniejszym
Przetwarzanie sygnałów w systemach diagnostyki medycznej
5 Implementacja
Program realizujący detekcję zespołów QRS zaimplementowany został,
zgodnie z założeniami, w języku ANSI C. Dane dotyczące trójkanałowego
sygnału wczytywane są ze strumienia wejściowego, a wyniki zwracane do pliku
qrs_attr.out.
Plik wejściowy zawiera trójkanałowy sygnał o częstotliwości próbkowania
równej 128 Hz i skali amplitudowej 1mV = 45 LSB i zapisany jest 8-bitowo bez
znaku. Podczas wczytywania danych z pliku, wartości sygnału dla danych
próbek są przeliczane na liczby zmiennoprzecinkowej, wyrażające natężenie
sygnalu w mV.
Dane wczytywane są po jednym znaku do tablicy Signal, której rozmiar
jest realokowany. Tablica jest dwuwymiarowa - pierwszy wymiar dzieli dane na
kanały, w drugim znajdują się konkretne wartości dla danego kanału. Przed
rozpoczęciem detekcji, dane ze wszystkich kanałów są uśredniane
i analizowany jest już sygnał uśredniony.
Detekcja realizowana jest przy użyciu algorytmu opartego falki
Daubechies [8]. Algorytm został przerobiony i zoptymalizowany poprzez
ustawienie najoptymalniejszych parametrów. Ponadto, zamiast uruchamiać go
jako zewnętrzny program, do którego przekazywany jest sygnał, algorytm
został dołączony do całości aplikacji jako zestaw funkcji (plik daubwave.c).
Takie działanie znacząco poprawiło szybkość działania całej aplikacji.
Funkcja DaubWave przyjmuje fragment sygnału - tzw. “okno” (window).
Okno tworzone jest z 1024 próbek sygnału w ten sposób, że dwa kolejne okna
posiadają część wspólną. Dzięki temu, sytuacje, w których załamki Q, R lub S
zostałyby pominięte, gdyby znajdowały się na granicy okien, są
wyeliminowane.
Aplikacja jako wynik generuje plik qrs_attr.out zawierający wartości
struktury QRS_ATTR. Jedynym polem struktury, które jest ustalane przez
niniejszą aplikację jest punkt detekcji (DetPt) - numer próbki w sygnale
oryginalnym, dla której nastąpiła detekcja zespołu QRS.
16 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
6 Testy
Aplikacja kompilowana i testowana była w 32-bitowym środowisku Linux
na komputerze z procesorem klasy Intel Core 2 Duo.
Poniższe wykresy prezentują wczytany sygnał wraz z zaznaczonymi
załamkami QRS - wykrytymi przy użyciu aplikacji. Wykresy utworzone zostały
na podstawie przetworzonego pliku z sygnałem oraz pliku zawierającego
szczegóły detekcji załamków (wypisywanie tych wyników stanowi modyfikację
oryginalnego programu, który zwraca wyłącznie tablicę QRS_ATTR do pliku).
Za generowanie wykresu fragmentu sygnału odpowiada poniższy skrypt
Matlab:
% signal
filename = 'ah_29_1.signal';
fid = fopen(filename, 'r');
S = fscanf(fid, '%f', [1 inf]);
% qrs data
filename = 'ah_29_1.data';
fid = fopen(filename, 'r');
D = fscanf(fid, '%d %f %f %d %f %f %d %f %f', [9 inf]);
limit = 100000;
x = 1:limit;
figure;
plot(x,S(x));
hold on;
n = 0;
i = 1;
while (n < limit)
A = D(:,i); % data row
n = A(1); % sample count
plot(A(1)+1, A(3), 'ro');
plot(A(4)+1, A(6), 'go');
plot(A(7)+1, A(9), 'ko');
i = i + 1;
end
17 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
Na poniższych wykresach zaznaczono punkty detekcji załamków QRS
(Q - czerwony, R - zielony, S - czarny).
Wykres 1: Fragment sygnału z pliku ah_21_1 z zaznaczonymi załamkami QRS
Wykres 2: Fragment sygnału z pliku ah_21_1 z zaznaczonymi załamkami QRS
18 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
Wykres 3: Fragment sygnału z pliku ah_29_1 z zaznaczonymi załamkami QRS
Wykres 4: Fragment sygnału z pliku ah_29_1 z zaznaczonymi załamkami QRS
19 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
Katalog test zawiera plik z wyznaczonymi punktami detekcji (w formacie
takim jak wyjściowy plik qrs_attr.out) oraz pliki referencyjne (poprawnie
wyznaczone punkty).
Czas wykonywania programu obliczany był przy użyciu dostępnego w
systemie Linux programu time. Średnia długość wykonywania programu dla
pliku zawierającego 15-minutowy sygnał (115 200 próbek) wyniosła
24 milisekundy (0.024 s). Dla dwukrotnie dłuższego sygnału (30 minut)
wartość ta wyniosła około 40 milisekund. Dane te świadczą o dobrej
optymalizacji algorytmu oraz wysokiej skalowalności aplikacji.
Na podstawie danych wyjściowych stworzona została tabela, zawierająca
szczegóły dokładności działania aplikacji dla poszczególnych plików
wejściowych.
plik
QRS
ERR = 0s
ERR <= 0.008s
ERR <= 0.015s
ah_21_1.dcm
1078
45.083 %
(486)
85.158 %
(918)
94.712 %
(1021)
ah_21_2.dcm
1408
13.636 %
(192)
45.313 %
(638)
80.895 %
(1139)
ah_21_3.dcm
1087
33.027 %
(359)
82.797 %
(900)
93.836 %
(1020)
ah_21_4.dcm
963
49.221 %
(474)
92.835 %
(894)
94.289 %
(908)
ah_23_1.dcm
4691
21.616 %
(1014)
81.326 %
(3815)
92.773 %
(4352)
ah_23_2.dcm
1129
27.458 %
(310)
86.271 %
(974)
92.471 %
(1044)
ah_29_1.dcm
2593
23.872 %
(619)
61.473 %
(1594)
87.582 %
(2271)
ah_29_2.dcm
1183
34.742 %
(411)
80.304 %
(950)
94.421 %
(1117)
ah_29_3.dcm
959
50.261 %
(482)
93.743 %
(899)
94.891 %
(910)
ah_29_4.dcm
1074
39.106 %
(420)
84.078 %
(903)
93.762 %
(1007)
20 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
W kolejnych kolumnach, oprócz nazwy pliku znajdują się dane:
●
●
●
●
liczba wykrytych zespołów QRS
Err = 0s - procent i liczba zespołów, dla których detekcja przebiegła
bezbłędnie (w stosunku do danych z plików referencyjnych)
Err <= 0.008s - procent i liczba zespołów, dla których błąd jest mniejszy
lub równy przesunięciu o jedną próbkę (1/128 sekundy)
Err <= 0.015s - procent i liczba zespołów, dla których błąd jest mniejszy
lub równy przesunięciu o dwie próbki (2/128 sekundy)
Jak można zauważyć, wyniki działania algorytmu odbiegają od wartości
dostępnych w plikach referencyjnych. Może na to mieć wpływ kwestia
uśredniania sygnału przed detekcją lub wartości niektórych parametrów.
Pomimo prób kalibracji i testowania różnych zestawów parametrów, nie
udało się uzyskać wyników, dla których zerowy błąd występowałby częściej.
Widać jednak, że punkty detekcji w znaczącej większości przypadków (średnio
ponad 90%) są po prostu przesunięte o 1 lub 2 próbki, ale sam punkt detekcji
wykrywany jest poprawnie. Potwierdzenie tego znaleźć można na
umieszczonych wyżej wykresach załamków QRS zaznaczonych w ramach
wykresu sygnału.
W opinii autorów, dokładniejsze wyniki i skuteczniejsza kalibracja
parametrów byłaby możliwia w przypadku wyższej wartości częstotliwości
próbkowania sygnału. Początkowe testy, przeprowadzane na wybranych
plikach z bazy MIT-BIH, gdzie częstotliwość próbkowania sygnału wynosi
360 Hz, dawały bardziej satysfakcjonujące sygnały.
Skrypty umożliwiające generowanie wyników
aplikacje opisane są szczegółowo w sekcji Dodatek C.
21 / 28
efektywności
działania
Przetwarzanie sygnałów w systemach diagnostyki medycznej
7 Wnioski
Biorąc pod uwagę nakład prac poświęconych na realizację projektu, należy
z całą stanowczością stwierdzić, że otrzymane wyniki odzwierciedlają nie tylko
czas poświęcony analizie literaturowej, ale przede wszystkim optymalizacjom,
modyfikacjom oraz testom, w celu stworzenia programu dającego w wyniku
efekty o najwyższym stopniu korelacji z danymi referencyjnymi.
Proces analizy literaturowej ze względu na olbrzymi wachlarz propozycji
rozwiązań opartych o różnorodne oraz niejednokrotnie zbyt „wydumane”
metodologie, pochłonął znaczącą ilość czasu prac projektowych. Z uwagi na
dosyć rozsądne źródła informacji, zadowalające wyniki testów oraz popularność
transformacji falkowej, wybór padł na rozwiązanie opierające się na falkach
Daubechies. Implementacja dostarczyła problemów głównie z optymalizacją
czasu działania, w szczególności dla badań o długim okresie. Początkowe czasy
działania okazały się stanowczo zbyt długimi, uniemożliwiającymi pracę takiego
elementu podsystemu analizatora EKG odpowiedzialnego za analizę wstępną
(detekcję sespołów QRS).
Próbując podsumować otrzymane wyniki należy w pierwszej kolejności
określić sygnał otrzymywany na wejściu systemu. Sygnał ten posiada dosyć
niską wartość częstotliwości próbkowania, z reguły stosowaną dla badań
rozciągających się na długi okres czasu (na przykład badania 24-godzinne). Dla
badań krótkotrwałych lub monitorowania stanu zdrowia pacjenta stosuje się
wyższą częstotliwość (dla większości zapisów zawartych w bazie MIT-BIH
częstotliwość ta wynosi 360 Hz).
Testy początkowe przeprowadzane w oparciu o dostępne w Internecie
sygnały próbkowane z wyższą częstotliwością dały wyniki o akceptowalnym
poziomie błędów detekcji. Otrzymane natomiast w wyniku testów rezultaty
poprawnej detekcji zespołów QRS na poziomie poniżej 50% są całkowicie
niedopuszczalne. Jednak po przeanalizowaniu wyników oraz wykresów
przebiegu sygnałów testowych okazało się, że punkty wykrycia przesunięte są
w czasie o jedną lub maksymalnie dwie próbki. W opinii autorów, efekt
uzależniony jest od częstotliwości próbkowania sygnału wejściowego lub
przekształceń dokonywanych w obrębie aplikacji. Analizując wyniki końcowe na
wykresach przebiegów należy zauważyć, że same załamki Q, R oraz S
wykrywane są w prawidłowych obszarach zespołu QRS. Uwzględniając
22 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
przesunięcie próbek, sama skuteczność detekcji wzrosła średnio do ponad
90%, co stanowi znaczną poprawę, jednak z punktu widzenia wartości
diagnostycznej skuteczność ta pozostawia nadal wiele do życzenia. Bardzo
ważnym mankamentem dodatkowo jest fakt nieregularności przesunięć
wykrywania załamków Q, R, oraz S, który uniemożliwił ustalenie
jednoznacznych sposobów poprawny dokładności detekcji.
Zadowalającym jest natomiast efekt uzyskany poprzez optymalizację
czasu działania aplikacji. Stanowi on wartość dobrą z punktu widzenia
diagnostycznego oraz co najważniejsze, w przypadku systemów ratowania
życia lub zdrowia, możliwą do zastosowania w systemach pracujących w czasie
rzeczywistym. Średnia długość czasu działania programu dla pliku
zawierającego 15-minutowy zapis badania EKG wyniosła 24 milisekundy
(0.024 s). Dla dwukrotnie dłuższego sygnału (30 minut) wartość ta
kształtowała się na poziomie zbliżonym do 40 milisekund. Dane te świadczą
o dobrej optymalizacji algorytmu oraz wysokiej skalowalności aplikacji.
Podsumowując rezultaty realizacji niniejszego projektu, należy z całą
stanowczością stwierdzić, że entuzjastyczne wyniki badań przedstawione
w artykule będącym podstawą wyboru niniejszej metody detekcji zespołów
QRS, były niemożliwe do osiągnięcia dla danych zapisanych w innym formacie
i próbkowanych z mniejszą częstotliwością. Zastosowana metdoda
w wyniku dała rezultaty poprawne w kontekście wizualnym (na przebiegach
sygnału zapisu badania EKG) jednak mało wartościowe w kontekście
zastosowania w automatycznej analizie zapisu elektrokardiograficznego.
Odnosi się to w szczególności do niejednoznaczności oraz nieregularności
przemieszczeń punktów detekcji między wynikami referencyjnymi oraz
otrzymanymi w oparciu o przygotowany program. Dodatkowo należy z całą
stanowczością stwierdzić, że skuteczność poprawnego wykrywania załamków
Q, R oraz S na poziomie kształtującym się nawet w okolicach 90% stanowi
rozwiązanie niepraktyczne w zastosowaniu w realnych systemach ratowania
życia lub zdrowia. Jako badania o charakterze naukowo-poznawczym
otrzymane wyniki można uznać za zadowalające. Komercyjne oprogramowania
otrzymują poprawność detekcji na poziomie kolejnych miejsc po przecinku dla
wartości podstawowej przekraczającej 99%.
Praca nad realizacją niniejszego projektu pokazała w szczególności
złożoność procesu analizy badania EKG, znaczenie podstawowych parametrów
badania oraz niezwyklą trudność osiągnięcia wyników dopuszczalnych dla
zastosowań stricte medycznych.
23 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
8 Bibliografia
[1] Augustyniak Piotr: “Przetwarzanie sygnałów elektrodiagnostycznych”;
Wydawnistwo AGH, Kraków 2001,
[2] Duraj Agnieszka: “Algorytmy rozpoznawania zespołu QRS w sygnałach
elektrokardiograficznych pochodzących od pacjentów z wszczepionym układem
stymulującym”; Zielona Góra 2007,
[3] Kohler Bert-Uwe, Henning Casten, Orglmaister Reinhold: “The principles of
software QRS detection”; IEEE Engineering in Medicine and Biology,
January/February 2002,
[4] Elgendi Mohamed, Jonkman Miriam, De Boer Friso: “Improved QRS
detection using dynamic thresholds”; International Journal of Hybrid
Information Technology, vol.2 No. 1 January 2009,
[5] Green Geoffrey: “Implementation of algorithms for QRS detection from
ECG signals using TMS320C6713 processor platform”, Final report, March
2006,
[6] Qiu Peng, Liu K. J. Ray: “A robust method for QRS detection based on
modified P-spectrum; ICASSP, 2008,
[7] Vaessen M. J.: “A QRS detection method using analog wavelet transform in
ECG analysis”; 2005,
[8] Mahmoodabadi S.Z., Ahmadian A., Abolhasani M. D.: “ECG feature
extraction using Daubachies wavelets”; 2005,
[9] Daubwave, Steven Gollmer, http://archives.math.utk.edu/software/msdos/
modelling/daubwave/.html
24 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
Dodatek A: Zawartość katalogów projektu
Główny katalog z projektem zawiera, oprócz implementacji w plikach
źródłowych (*.c, *.h) również bazę testowanych sygnałów oraz wyniki testów.
Ponadto, do projektu dołączone są narzędzia wspomagające testowanie
efektywności, czasu działania i wartości błędów.
Struktura katalogów przedstawia się następująco:
qrs_detect
baza
podkatalogi z sygnałami wejściowymi
ah_21_1
ah_21_2
...
source
kod źródłowy programu, Makefile
test
ref
poprawne (referencyjne) wyniki detekcji
result
wyniki detekcji niniejszej aplikacji
Dodatkowo, katalog główny zawiera dwa skrypty w języku bash (*.sh),
wspomagające generowanie wyników i ich testowanie - są one opisane w sekcji
Dodatek C.
25 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
Dodatek B: Opis kompilacji i uruchomienia
Kod źródłowy aplikacji kompilowany i uruchamiany był bez komplikacji na
systemach klasy Linux (Ubuntu 9.10 32-bit, Ubuntu 10.10 64-bit). W celu
kompilacji wykorzystany jest program g++, jako nowszy i lepiej
zoptymalizowany niż gcc. Dodatkowo przy kompilacji używana jest flaga -O4,
mająca na celu optymalizację kodu i przyspieszenie czasu wykonywania
aplikacji (efektem jest ponad dwukrotne skrócenie tego czasu).
Kompilacja kodu źródłowego odbywa się z poziomu katalogu source:
~/qrs_detect/source$ make
g++ read.c daubwave.c detection.c -O4 -o qrs_detect
Efektem jest binary plik wykonywalny qrs_detect.
Uruchomienie aplikacji wymaga przekazania poprzez standardowe wejście
pliku wejściowego (sygnał):
~/qrs_detect/source$ ./qrs_detect < ../baza/ah_21_1/ah_21_1.dcm
W efekcie tego, w bieżącym katalogu tworzony jest plik qrs_attr.out
o formacie zgodnym z wymaganym w projekcie. Tylko dane z pierwszej
kolumny mają wartości niezerowe i wskazują na numer próbki, w której
wystąpiła detekcja zespołu QRS.
26 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
Dodatek C: Narzędzia testujące
Do projektu dołączone zostały pomocnicze skrypty w języku bash, które
umożliwiają zautomatyzowane generowanie wyników i ich testowanie.
Korzystanie z tych narzędzi wymaga skompilowania kodu źródłowego
aplikacji i skopiowania pliku wykonywalnego do katalogu głównego projektu:
~/qrs_detect/source$ make
g++ read.c daubwave.c detection.c -O4 -o qrs_detect
~/qrs_detect/source$ cp qrs_detect ../
~/qrs_detect/source$ cd ../
~/qrs_detect$
Plik generate_results.sh realizuje akcję generowania wyników dla
wszystkich zdefiniowanych sygnałów wejściowych - wykorzystuje w tym celu
pliki dostępne w katalogu baza. Dla każdego sygnału wejściowego
uruchamiany jest program qrs_detect i generowany plik qrs_attr.out.
Następnie plik ten jest kopiowany do katalogu test/result/ pod nazwą zgodną
z nazwą sygnału wejściowego (21_1 dla ah_21_1, etc.).
~/qrs_detect$ ./generate_results.sh
baza/ah_21_1/ah_21_1.dcm
generated
baza/ah_21_2/ah_21_2.dcm
generated
baza/ah_21_3/ah_21_3.dcm
generated
...
Plik compare.sh umożliwia porównanie wyników działania aplikacji
(wykrytych punktów detekcji zespołów QRS) z danymi referencyjnymi
(poprawnymi), dostępnymi w katalogu test/ref/ (dane te stanowią pliki
qrs_attr.out skopiowane z odpowiednich podkatalogów katalogu baza).
Dla każdego pliku wynikowego, znajdującego się w katalogu test/result/,
skrypt uruchamia skrypt PHP (compare.php), który dokonuje analizy zbieżności
27 / 28
Przetwarzanie sygnałów w systemach diagnostyki medycznej
wyników z danymi referencyjnymi. Obliczana jest bezbłędnie wykrytych
punktów detekcji oraz tych, dla których błąd przesunięcia wyniósł 1 lub 2
próbki. Dane zwracane są na standardowe wyjście w zaprezentowanej poniżej
formie:
~/qrs_detect$ ./compare.sh
test/result/21_1
Err == 0s 45.083 % (486 / 1078)
Err <= 0.008s 85.158 % (918 / 1078)
Err <= 0.015s 94.712 % (1021 / 1078)
test/result/21_2
Err == 0s 13.636 % (192 / 1408)
Err <= 0.008s 45.313 % (638 / 1408)
Err <= 0.015s 80.966 % (1140 / 1408)
test/result/21_3
Err == 0s 33.027 % (359 / 1087)
Err <= 0.008s 82.889 % (901 / 1087)
Err <= 0.015s 93.836 % (1020 / 1087)
...
Oprócz wartości procentowych, wypisana jest także liczba poprawnie
wyznaczonych punktów detekcji w stosunku do wszystkich wykrytych.
28 / 28

Podobne dokumenty