Przetwarzanie sygnałów w systemach diagnostyki medycznej

Transkrypt

Przetwarzanie sygnałów w systemach diagnostyki medycznej
Przetwarzanie sygnałów w systemach
diagnostyki medycznej
Klasyfikacja uderzeń serca
Raport częściowy
Informatyka Stosowana, rok V
Autorzy:
Tomasz Gabiga
Rafał Rudol
1. Abstrakt
Autorzy: Tomasz Gabiga, Rafał Rudol – Akademia Górniczo-Hutnicza, Informatyka
Stosowana
Słowa kluczowe: EKG, QRS, klasyfikacja, klasy QRS, parametry morfologiczne QRS
Klasyfikacja uderzeń serca w oparciu o zapis sygnału EKG jest tematem ważnym
z punktu widzenia współczesnej medycyny i jednocześnie nietrywialnym pod
względem automatycznej klasyfikacji komputerowej z racji pozyskiwania sygnału z
organizmu biologicznego. Opisany w niniejszym raporcie projekt jest częścią systemu
analizy i przetwarzania elektrokardiogramu. Klasyfikację zespołów QRS opisujących
elektrokardiogram wykonano w oparciu o analizę morfologiczną. Podstawą działania
systemu jest definiowanie klas dla zespołów QRS. Za pomocą algorytmu klasyfikacji
zespoły QRS trafiają do klas zespołów prawidłowych oraz tych odbiegających od
normy. Algorytm klasyfikacji składa się z trzech podalgorytmów wiązanych ze sobą za
pomocą średniej ważonej. Podalgorytmy to kolejno: pole powierzchni załamków,
wysokość względna załamków i wysokość bezwzględna załamka. Otrzymane wyniki
przekazywane są do podsystemu wyznaczającego morfologię uderzeń serca.
2. Wstęp
Celem projektu opisywanego w niniejszym raporcie była klasyfikacja zespołów
QRS na podstawie ich cech morfologicznych. Badanie EKG rejestruje zapis akcji pracy
serca pacjenta. Każde cykl pracy serca zapisywany jest jako zespół QRS. Na podstawie
kształtu tych zespołów możliwe jest określenie prawidłowości rytmu pracy serca
pacjenta, a co za tym idzie zdiagnozowanie ewentualnych chorób.
Jak pokazuje doświadczenie, nieregularności pracy serca mogą mieć charakter
sporadyczny, a tylko po ich zarejestrowaniu możliwe jest stwierdzenie rodzaju
nieprawidłowości. Wychodząc naprzeciw temu zagadnieniu powstało badanie metodą
Holtera, mierzące parametry pracy serca przez ok 24 godziny. Nietrudno stwierdzić, że
ilość danych zebranych podczas takiego badania jest ogromna.
Jak zatem wybrać spośród nich tylko te zdradzające objawy ewentualnych
schorzeń? Tu z pomocą przychodzi system zrealizowany w ramach niniejszego
projektu. Za pomocą klasyfikacji parametrów kształtu zespołów QRS system określa,
czy prezentowany zapis pracy serca jest prawidłowy, czy też zawiera błędy.
3. Proponowane rozwiązanie
3.1. Przetwarzanie wstępne
Zakłada się, że otrzymano dane zawierające punkty detekcji zespołu QRS
wydzielone z sygnału wejściowego za pomocą algorytmu QRS Det.
W zaproponowanym tutaj algorytmie wycina się okna czasowe wokół wcześniej
wykrytych
punktów
czasowych
o
szerokości
300ms
-
podobne
rozwiązanie
wykorzystano w [2]. Tak wyznaczone zespoły QRS są ze sobą synchronizowane. W tym
celu rozważone zostały dwa algorytmy:
•
dla wszystkich zespołów QRS wyznaczane są maksima w oknie - przy
prawidłowo zidentyfikowanym zespole QRS będzie to załamek R. Punkt ten
będzie środkiem danego okna, na jego podstawie wszystkie inne okna "nakłada"
się na siebie,
•
optymalizacja funkcji celu będąca różnicą pól powierzchni zespołów QRS.
W aplikacji planowane jest wykorzystanie pierwszego algorytmu. Drugi z nich -
optymalizacja funkcji celu - jest dużo bardziej problematyczny w implementacji.
Konieczna była by implementacja heurystycznego algorytmu optymalizacji oraz
dokładnego całkowania numerycznego. Warto zauważyć, że przy zwiększaniu liczby
zespołów QRS zwiększa się liczba wymiarów funkcji celu, co powoduje drastyczny
wzrost złożoności obliczeniowej. Dlatego też opisany mechanizm został odrzucony w
toku prac nad określeniem rozwiązania problemu.
Należy pamiętać, że dla zapisu wielokanałowego synchronizację przeprowadza
się dla wszystkich kanałów jednocześnie.
Tak przygotowane fragmenty sygnałów poddawane są dalszemu przetwarzaniu.
W tym kontekście problem klasyfikacji sygnałów można podzielić na dwa mniejsze
zagadnienia:
•
ekstrakcja cech - to przetwarzanie sygnału mające na celu stworzenie wektora
cech dla danego okna. Stanie się ono wejściem dla następnego stopnia
przetwarzania,
•
klasteryzacja - na tym etapie dokonuje się przyporządkowania każdego z
sygnałów do dokładnie jednej z k klas.
Taka separacja zagadnień pozwoli na łatwą implementację rozwiązania oraz przy
późniejszej
rozbudowie
aplikacji
-
szybkie
wdrożenie
nowych,
bardziej
efektywnych algorytmów.
Poniżej
przedstawiono
szerszy
ekstrakcji cech oraz klasteryzacji.
opis
konkretnych
rozwiązań
mechanizmu
3.2. Ekstrakcja cech
Pozycja literaturowa [6] przedstawia bardzo ciekawy przegląd metod ekstrakcji
cech wraz oraz klasyfikacji. Przeważają tam metody bazujące na transformacji
falkowej. W projekcie planuje się wykorzystanie rozwiązania zaproponowanego w
pozycji [7], opierającego się na metodzie statystycznej. Schemat przetwarzania
przedstawiono na rysunku 3.1.
Należy przypomnieć, że przetwarzanie dotyczy tylko jednego okna otrzymanego
w poprzednim kroku, a wszystkie poniższe kroki wykonuje się dla każdego z nich
osobno.
Obliczanie pierwszej pochodnej sygnału nie wymaga dodatkowego komentarza.
Normalizację przeprowadza się dzieląc każdą dyskretną wartość sygnału w danym
oknie przez wartość maksymalną z tego samego przedziału.
Kwantyzację znormalizowanego sygnału przeprowadza się dla arbitralnie
przyjętej wartości przedziałów. Utworzenie histogramu ze skwantyfikowanych wartości
pozwoli łatwo uwypuklić statystyczne cechy sygnału.
Operacja określona jako PCA oznacza nic innego jak analizę składowych
głównych (ang. principal component analysis, PCA). Jest ona szeroko opisana w
literaturze [8][9][10]. Celem tej metody jest ograniczenie zbioru danych wejściowych
(obserwacji) przez taki obrót układu współrzędnych by zmaksymalizować wariancję w
pierwszej kolejności pierwszej współrzędnej, następnie drugiej, etc. Metodę te
wykorzystuje się również często w kompresji sygnałów.
Z punktu widzenia implementacji algorytmu wykonanie PCA na wykonaniu
przekształceń
macierzowych.
poddawanych
klasteryzacji.
Po
W
wykonaniu
języku
C
PCA
dość
otrzymujemy
wektor
problematyczne
okazało
cech
się
zaimplementowanie biblioteki operacji na macierzach.
Schemat przetwarzania danych w PCA przedstawiono na rysunku 2.
W metodzie PCA najbardziej problematyczne jest obliczenie wartości własnych i
metod własnych macierzy kowariancji. Wykorzystano tutaj algorytm zaproponowany w
pozycji [13]. Jest to szeroko znana i opisywana metoda Jacobiego. Zaadoptowanie kodu
podanego w książce do wykorzystania w projekcie wymagało stworzenia wrappera osobnej funkcji tłumaczącej typy wykorzystane w projekcie na typy wykorzystane w
pozycji [13]
Sygnał wejściowy
Obliczenie pierwszej
pochodnej
Utworzenie histogramu
PCA
Klasteryzacja
Rysunek 1: Schemat algorytmu ekstrakcji cech
Ekstrakcja cech
Normalizacja i kwantyzacja
Dane wejściowe
normalizacja danych
obliczenie wartości własnych i
wektorów własnych
redukcja wymiarowości danych
dalsze przetwarzanie
rysunek 2. schemat algorytmu PCA
Analiza głównych skład owych
obliczenie macierzy kowariancji
3.3. Klasteryzacja
Otrzymane podczas ekstrakcji cech należy zaklasyfikować do odpowiednich
kategorii. Do wykonania tego zadania wybrano algorytm k-means clustering, czyli
algorytm centroidów. To rozwiązanie szeroko stosowane w analizie skupień. W
przypadku analizy zespołów QRS algorytm będzie umieszczał dostarczone zespoły w
jednej z kilku odgórnie ustalonych klas na podstawie analizy cech wyznaczonych w
poprzednim kroku. Przebieg działania algorytmu wygląda następująco:
1.
Wybierane jest losowo kilka punktów startowych dla lepszej minimalizacji funkcji
celu – na tej podstawie wybierane będzie optymalne rozwiązanie.
2.
Algorytm rozpoczyna cykliczne działanie przypasowując punkty reprezentujące
wyekstrahowane cechy do jednego z ustalonych klastrów na podstawie
wzajemnej odległości punktów.
3.
Jeżeli średnia odległość punktów osiągnęła zakładane minimum (przypasowanie
do klas nie zmienia się w kolejnych krokach) algorytm przerywa działanie. W
przeciwnym razie powraca do punktu 2. Dla bezpieczeństwa warunku stopu
zakłada się także maksymalny limit iteracji.
4.
W oparciu o średnią odległość punktów w klasach wybierany jest najlepszy
wynik (zależnie od punktu startowego).
5.
Zwracane są zestawy zespołów QRS przypasowanych do konkretnych klas.
Wyekstrahowane
zestawy cech
K–means clustering
Start algorytmu z kilku
losowych punktów startowych
Przypasowanie cech do
jednego z dostępnych klastrów
Weryfikacja rozwiązania
kolejny krok lub zwrócenie wyników
Analiza jakości rozwiązania
w oparciu o wybrane punkty startowe
Zwrócenie wyników
Rysunek 2: Schemat algorytmu k-means clustering
3.4. Kwestie techniczne
Całość algorytmów ekstrakcji cech oraz klasteryzacji zostanie napisana w języku
C bez wykorzystania funkcji Windows API. Ułatwi to wykorzystanie funkcji w innych
programach stworzonych dla innych systemów operacyjnych. Program bezproblemowo
kompiluje i wykonuje się pod platformą UNIX z wykorzystaniem GNU Compiler.
Przewiduje się wykorzystanie w implementacji wzorca projektowego odwrócenia
kontroli (ang. inversion of controll, IoC). Pociągnie to za sobą konieczność stworzenia
prostego kontenera wstrzykiwania zależności, lecz umożliwi łatwą zmianę konfiguracji
programu bez konieczności rekompilacji - przykładowo za pomocą pliku xml. Znacznie
ułatwi to późniejsze testowanie aplikacji.
4. Alternatywne rozwiązania
Nie da się ukryć, że klasyfikacja zespołów QRS ze względu na ich morfologię jest
problemem dobrze znanym. Powstało wiele algorytmicznych rozwiązań tego problemu.
Część z nich, ze względu na wymagania pamięciowe, lub typy struktur danych była nie
możliwa to implementacji w przedstawianym projekcie. Niektóre, jednak, zapewniały
działanie analogiczne do wybranego sposobu opisanego powyżej. Wybór metody
klasyfikacji został dokonany arbitralnie przez twórców projektu. Aby uczynić to
opracowanie kompletnym, nie sposób jednak nie wspomnieć o odrzuconych metodach
poznanych w trakcie analizy literaturowej.
Alternatywne rozwiązania problemu klasyfikacji zespołów QRS ze względu na
cechy morfologiczne:
- budowa samouczącej, dwuwarstwowej sieci neuronowej. Neurony wejściowe
odpowiadają
cechom
charakterystycznym
zespołu
QRS,
takim
jak:
wartości
maksymalne, pole powierzchni pod wykresem, etc.
- algorytm genetyczny klasyfikujący załamki zespołu QRS działający bez
nauczyciela.
–
analiza zespołów QRS w oparciu o współczynniki kształtu. Wymaga
przetworzenie sygnału na wektor cech. Możliwe jest stosowanie praktycznie
dowolnych współczynników kształtu. Przykładem popularnego rozwiązania
jest stosowanie współczynnika Malinowskiej.
Ilustracja 1: Wykres obrazujący wybranych reprezentantów wydzielonych klas
Ilustracja 2: Działanie algorytmu kmeans++ dla przykładowych danych
Ilustracja 3: Klasa 0 - mało liczna
Ilustracja 4: Klasa 1 - wyraźna charakterystyka klasyfikowanych zespołów
Ilustracja 5: Klasa 2 - wyraźnie widoczna charakterystyka poszczególnych załamków
Ilustracja 6: Rozkład ilościowy elementów w poszczególnych klasach
5. Rezultaty i wnioski
W toku prac nad obranym sposobem rozwiązania problemu zaimplementowano
wszystkie przewidziane w założeniach składowe algorytmu. Są to kolejno:
–
obliczenie pierwszej pochodnej przetwarzanego sygnału
–
normalizacja
–
kwantyzacja
–
utworzenie histogramu dla analizowanego fragmentu sygnału
–
wykonanie algorytmu PCA (Principal Component Analysis)
–
wykonanie algorytmu k-means clustering dla kilku punktów startowych
Dla
zachowania
wydzielono
osobne
skalowalności
kontenery
oraz
zawierające
elegancji
stosowanego
algorytmy
operacji
rozwiązania
macierzowych,
przekształceń liniowych oraz tworzenia map danych.
Tak przygotowany mechanizm klasyfikacji zespołów QRS poddano testom.
Do
przeprowadzenia
zautomatyzowanych
testów
jednostkowych
użytych
elementów i struktur danych zastosowano pakiet CUnit.
Warto
zauważyć,
że
dzięki
zastosowaniu
szeregu
optymalizacji
oraz
wykorzystywaniu języka C czas wykonywania algorytmu jest bardzo niewielki i dla
sygnału o długości 30 sekund wynosi ok. 1 sekundy. Algorytm testowano na
komputerze klasy:
–
Intel Core2Duo 1,86GHZ
–
4GB RAM
Ponadto, do wizualizacji otrzymywanych wyników użyto prostego programu
napisanego w języku Python wraz z wykorzystaniem bibliotek matplotlib. Dzięki temu
uzyskano graficzną reprezentację otrzymanych przypasowań, wielkości klas oraz
zakresu klas. Powyżej zamieszczono niewielką galerię obrazującą wyniki działania
algorytmu.
Przedstawione wykresy obrazują efektywność wybranego rozwiązania. Śmiało
można stwierdzić, że algorytm dokonuje poprawnej klasyfikacji zespołów QRS
pozostawiając niewielki zakres błędu.
Poniżej zebrano w tabeli wyniki działania programu dla przykładowych danych.
nazwa pliku z sygnałem
test/sample_data/ah_23_2/ah_23_2.dcm
nazwa pliku danych referencyjnych
test/sample_data/ah_23_2/qrs_attr.out
liczba zespołów QRS
1121
liczba klas
14
klasa
liczba zespołów
reprezentant (nr próbki)
0
395
65819
1
44
105178
2
18
93140
3
71
60181
4
93
88556
5
18
9473
6
16
26333
7
27
30015
8
53
19982
9
76
23608
10
159
51746
11
22
101145
12
81
10103
13
48
66853
nazwa pliku z sygnałem
test/sample_data/ah_21_1/ah_21_1.dcm
nazwa pliku danych referencyjnych
test/sample_data/ah_23_2/qrs_attr.out
liczba zespołów QRS
1067
liczba klas
10
klasa
liczba zespołów
reprezentant (nr próbki)
0
395
106265
1
44
54036
2
18
6167
3
71
39370
4
93
31878
5
18
74820
6
16
92891
7
27
12785
8
53
102821
9
76
48812
10
159
74343
nazwa pliku z sygnałem
test/sample_data/ah_23_1/ah_23_1.dcm
nazwa pliku danych referencyjnych
test/sample_data/ah_23_2/qrs_attr.out
liczba zespołów QRS
4633
liczba klas
10
klasa
liczba zespołów
reprezentant (nr próbki)
0
1896
199626
1
161
51195
2
56
118307
3
112
138288
4
497
449237
5
652
319618
6
519
173372
7
0
29396
8
227
118697
9
91
122026
10
313
29238
nazwa pliku z sygnałem
test/sample_data/ah_29_1/ah_29_1.dcm
nazwa pliku danych referencyjnych
test/sample_data/ah_29_1/qrs_attr.out
liczba zespołów QRS
2591
liczba klas
21
klasa
liczba zespołów
reprezentant (nr próbki)
0
165
159586
1
9
168659
2
4
27328
3
162
171654
4
564
74967
5
165
210042
6
157
183539
7
122
209719
8
4
67766
9
75
4612
10
136
143809
11
164
172982
12
5
38821
13
254
203963
14
122
177429
15
141
194861
16
3
82680
17
18
161520
18
4
89245
19
167
3811
20
0
199283
5.1 Źródła błędów, możliwości rozwoju.
Błędy w przedstawionym rozwiązaniu są niewielkie, choć ich występowanie jest
w dużej mierze losowe. Są one spowodowane zastosowaniem algorytmu k-means do
klasyfikacji sygnałów. Algorytm ten musi mieć określone punkty startowe – jego
efektywność zależy od wybrania punktu startu. Zgodnie z dostępną literaturą wybrano
metodę losowego inicjowania algorytmu k-means z kilku wybranych losowo punktów
startowych. To właśnie owa losowość jest przyczyną niewielkich wahań skali błędu,
jakimi obarczone są zwracane wyniki.
Alternatywnym rozwiązaniem do losowania punktów startowych jest mechanizm
minimalizacji funkcji celu złożonej z punktów startowych podczas działania algorytmu
k-means. Rozwiązanie to jest jednak obarczone dużymi nakładami algorytmicznymi a
otrzymany zysk w postaci zmniejszenia błędu klasyfikacji został uznany za zbyt
niewielki w stosunku do kosztów. Dlatego też postanowiono pozostać przy losowaniu
punktów startowych algorytmu.
Dodatkową możliwością potencjalnego ulepszenia algorytmu jest wprowadzenie
sortowania
tabeli
tworzonej
przez
algorytm
PCA.
Jest
to
jednak
propozycja
hipotetyczna, niepoparta opisami literaturowymi – dlatego też nie była weryfikowana.
Możliwe jest także zupełnie inne rozwiązanie klasyfikacji zespołów QRS,
zakładające wykorzystanie algorytmu Expectation-maximization algorithm. Jest to
rozwiązanie równoważne dla zastosowania k-means.
Podobnie istnieje także możliwość zastąpienia algorytmu PCA innym, choć podobnie
działającym algorytmem LDA (Linear discriminant analysis). Oba rozwiązania są ze
sobą
powiązane
porównywalne.
i
zawierają
części
wspólne.
Pod
względem
jakościowym
są
5.2 Dodatkowe badania
Założeniem projektu był podział posiadanego sygnału na niewielką ilość klas
celem ułatwienia dalszego przetwarzania. Nierozwiązaną kwestią pozostaje jednak
skuteczność zastosowanego rozwiązania w przypadku podziału na dużo większą liczbę
klas. Wartym zbadania wydaje się próg skuteczności działania algorytmu klasyfikacji
przy sztucznym zwiększaniu ilości wyznaczanych klas, oraz granica ilościowa, przy
której rozwiązanie to pozostaje skuteczne.
5.3 Wykorzystanie praktyczne
Ze względu na swoją szybkość oraz niewielkie zapotrzebowanie na zasoby
systemowe
uznano,
że
zaproponowane
rozwiązanie
z
powodzeniem
można
wykorzystać przy analizowaniu dużych partii zapisów EKG w przypadku, gdy konieczny
jest podział analizowanego materiału na klasy ze względu na charakter morfologiczny.
Ponadto warto zauważyć, że po niewielkich modyfikacjach opracowany algorytm może
być z powodzeniem wykorzystywany do analizy dowolnego sygnału (nie tylko
biometrycznego), w którym występuje charakterystyczny przebieg, oraz gdzie możliwe
jest wydzielenie unikalnego przebiegu morfologicznego.
6. Podsumowanie
Reasumując, w toku prac nad projektem klasyfikacji zespołów QRS udało się
uzyskać dobry uniwersalny mechanizm klasyfikacji sygnałów ze względu na parametry
morfologiczne. Otrzymane rezultaty są zadowalające i sugerują kontynuowanie prac
nad zaproponowanym rozwiązaniem. W kontekście analizy literaturowej stwierdzić
można, że stworzone rozwiązanie nie jest unikalne, jednak należy do jednej z
najwydajniejszych implementacji istniejących algorytmów.
Bibliografia:
1.
QRS Detection and Classification using Morphological and Rhythm information - A.I. Rasiah, R. Togneri and Y.
Attikiouzel
2.
Open Source ECG Analysis Software Documentation - Patrick S. Hamilton (E.P. Limited)
3.
A Wavelet-Based Algorithm for Delineation and Classification ofWave Patterns in Continuous Holter ECG
Recordings - L. Johannesen, USL. Grove, JS. Sørensen, ML. Schmidt, J-P. Couderc, C. Graff.
4.
Optymalizacja wyboru reprezentacji zespołów skurczowych dla celów klasyfikacji zapisów holterowskich - Piotr
Augustyniak.
5.
Klasyfikacja zespołów QRS - opracowanie zbiorowe pracowników katedry Informatyki Collegium Medicum UJ.
6.
ECG Feature Extraction Techniques - A Survey Approach - S.Karpagachelvi, Dr.M.Arthanari, Prof. & Head,
M.Sivakumar.
7.
ECG Pattern Classification Based on Generic Feature Extraction - Hee-Soo Park, Soo-Min Woo, Yang-Soo Kim,
Bub-Joo Kang, Sang-Woo Ban.
8.
Pattern Recognition and Machine Learning - Christopher M. Bishop.
9.
An Introduction to Multivariate Statistical Analysis - T.W. Anderson.
10. Data Mining. Practical Machine Learning Tools and Techniques - Ian H. Witten, Eibe Frank.
11. http://pl.wikipedia.org/wiki/Algorytm_centroid%C3%B3w
12. http://en.wikipedia.org/wiki/K-means_clustering
13. Numerical Recipes in C - William H. Press, Brian P. Flannery, Saul A. Teukolsky, and William T. Vetterling