AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w Krakowie WEAIiE, Katedra Automatyki Laboratorium Biocybernetyki Przedmiot: Przetwarzanie sygnałów w systemach diagnostyki medycznej. Temat projektu: Wyznaczanie morfologii uderzeń serca raport końcowy QRS_MORPH Spis treści: 1. ABSTRAKT... 2 2. WSTĘP... 2 3. KONCEPCJA PROPONOWANEGO ROZWIĄZANIA... 3 4. REZULTATY I WNIOSKI... 5 5. PODSUMOWANIE... 6 6. LITERATURA... 6 7. DODATEK A: OPIS OPRACOWANYCH NARZĘDZI I METODY POSTĘPOWANIA... 6 8. DODATEK B: REALIZACJA PROPONOWANEGO ROZWIĄZANIA... 7 9. DODATEK C: OPIS INFORMATYCZNY PROCEDUR... 9 10. DODATEK D: SPIS ZAWARTOŚCI DOŁĄCZONEGO CD-ROMU... 11 Wykonali: Maciej Baran, Maciej KruŜel V rok IS konsultant: dr hab. inŝ. Piotr Augustyniak Wersja 1.1. Kraków, styczeń 2011. -1-
1. Abstrakt Wyznaczanie morfologii uderzeń serca. Określenie morfologii zespołów QRS jest istotną częścią analizy EKG, gdyŝ pozwala ustalić ich prawdopodobne pochodzenie. Celem tego projektu jest stworzenie programu, który stanowić będzie część większej całości, przetwarzając listę wykrytych i sklasyfikowanych uprzednio zespołów w celu uzupełnienia jej o typy morfologii. Zaproponowane tu rozwiązanie opiera się na mierzeniu długości oraz względnej szybkości zespołów QRS i we wstępnych testach osiągnęło sprawdzalność powyŝej 99%, są więc podstawy by twierdzić, Ŝe jest to skuteczne podejście do problemu, choć kwestia rozpoznawania artefaktów pozostaje wciąŝ nierozstrzygnięta. Słowa kluczowe: EKG, rytm serca, morfologia, QRS 2. Wstęp a) Cele i załoŝenia projektu Celem projektu jest stworzenie programu implementującego algorytm określający morfologię zespołu QRS, ustalając w ten sposób jego prawdopodobne pochodzenie. Powinien on rozróŝniać zespoły nadkomorowe SV (generowane przez węzeł zatokowoprzedsionkowy SA), zespoły komorowe V (generowane przez leŝący w obrębie komór ośrodek bodźcotwórczy), oraz artefakty błędnie uznane przez automatyczną detekcję jako zespołu QRS, na ustalonym poziomie ufności, jak równieŝ oznaczać klasy, których pochodzenia na tym poziomie ufności nie moŝna określić automatycznie. Na wejściu program otrzyma sygnały zespołów QRS podzielone na klasy, na wyjściu kaŝdej klasie zostanie przypisana jedna z czterech wyŝej wymienionych kategorii. Komunikacja wejście/wyjście odbywać się będzie za pomocą plików. b) Zarys ogólny proponowanego rozwiązania Program będzie grupował klasy zespołów QRS na podstawie czterech współczynników: - długości sygnału - współczynnika kształtu (stosunku pola powierzchni do obwodu) - stosunku maksymalnej prędkości do maksymalnej amplitudy - ilości próbek, w których prędkość przekracza 40% prędkości maksymalnej -2-
Według [1] i [2] są to parametry dobrze rozróŝniające zespoły komorowe od nadkomorowych. c) Alternatywne rozwiązania I. Według [1], warunkiem wystarczającym wystąpienia zespołu nadkomorowego jest potwierdzenie, Ŝe załamek P znajduje sie w odległości opisanej fizjologią węzła przedsionkowo-komorowego. Metoda ta jednak wymaga wykrycia załamka P, które zgodnie z załoŝeniami dokonywane będzie dopiero w dalszym etapie przetwarzania. II. Klasyfikacji morfologicznej moŝna dokonać za pomocą sieci neuronowych, jak demonstruje [3] - w szczególności sieci Kohonena, najlepszych w grupowaniu obrazów, co dokładniej omawia [4]. Zaletą tych technologii jest ich umiejętność radzenia sobie z nietypowymi przypadkami, wadą natomiast stosunkowo duŝa nieprzewidywalność. W praktyce sieci neuronowe najlepiej sprawdzają się, gdy otrzymują zestaw nauczający stworzony z danych konkretnego pacjenta. 3. Koncepcja proponowanego rozwiązania Program wczytuje dane z pliku zawierającego sygnał, oraz punkty detekcji i odpowiadające im numery klas z pliku referencyjnego zawierającego atrybuty QRS. Następnie dla kaŝdego punktu detekcji obliczane jest siedem współczynników: stosunku prędkości do maksymalnej amplitudy (dla kaŝdego kanału), ilości próbek, w których prędkość przekracza 40% prędkości maksymalnej (dla kaŝdego kanału), oraz długości zespołu QRS (dla pierwszego kanału). Wszystkie współczynniki obliczane są wewnątrz przedziału 20 próbek, z czego 8 poprzedza punkt detekcji, a 12 następuje po nim. Metody zostały wybrane, gdyŝ dobrze rozróŝniały zespoły QRS w otrzymanych sygnałach testowych. Kiedy wyliczony współczynnik znajdzie się w określonym przedziale liczbowym, zwiększony zostaje współczynnik prawdopodobieństwa przyporządkowania danej klasie morfologii odpowiadającej temu przedziałowi liczbowemu. Przedziały liczbowe zostały ustalone na podstawie uprzedniego zbadania rozkładu statystycznego wyników metod dla danych testowych. Po sprawdzeniu wszystkich punktów detekcji, klasy zostaje przyporządkowana morfologia V lub SV, odpowiadający której współczynnik prawdopodobieństwa jest większy. Najliczniejsza klasa SV zostaje oznaczona jako dominująca. Punkty detekcji bez przyporządkowanej klasy, oraz klasy, dla których nie udało się określić morfologii zostają oznaczone jako nierozpoznane. Na koniec wyniki zostają zapisane w pliku wyjściowym. Otwórz plik sygnału do odczytu. Otwórz plik atrybutów do odczytu. -3-
Otwórz plik wyjściowy do zapisu. Dla kaŝdego punktu detekcji z pliku atrybutów: Wczytaj próbkę z pliku sygnału. Wczytaj klasę z pliku atrybutów. Zwiększ o 1 częstość występowania klasy. Dla kaŝdej metody klasyfikującej: Oblicz współczynnik klasyfikacji dla próbki. JeŜeli współczynnik klasyfikacji leŝy w przedziale SV: Zwiększ o 1 współczynnik prawdopodobieństwa SV dla klasy. JeŜeli współczynnik klasyfikacji leŝy w przedziale V: Zwiększ o 1 współczynnik prawdopodobieństwa V dla klasy. Koniec pętli. Koniec pętli. Przypisz klasie dominującej wartość -1. Przypisz częstości występowania klasy dominującej wartość 0. Dla kaŝdej klasy k: JeŜeli współczynnik prawdopodobieństwa SV klasy k jest większy niŝ współczynnik prawdopodobieństwa V klasy k i częstość występowania klasy k jest większa niŝ częstość występowania klasy dominującej: Przypisz klasie dominującej wartość klasy k. Przypisz częstości występowania klasy dominującej wartość częstości występowania klasy k. Koniec warunku. Koniec pętli. Dla kaŝdego punktu detekcji w pliku atrybutów: Zapisz do pliku wyjściowego wartość punktu detekcji. JeŜeli klasa jest mniejsza od zera: Zapisz do pliku wyjściowego wartość -1. W przeciwnym wypadku, jeŝeli klasa jest równa klasie dominującej: Zapisz do pliku wyjściowego wartość 0. -4-
W przeciwnym wypadku, jeŝeli współczynnik prawdopodobieństwa SV jest większy od współczynnika prawdopodobieństwa V: Zapisz do pliku wyjściowego wartość 1. W przeciwnym wypadku, jeŝeli współczynnik prawdopodobieństwa SV jest mniejszy od współczynnika prawdopodobieństwa V: Zapisz do pliku wyjściowego wartość 2. W przeciwnym wypadku: Zapisz do pliku wyjściowego wartość -1. Koniec warunku. Zapisz do pliku wyjściowego wartość klasy. Zapisz do pliku wyjściowego wartość znaku końca linii. Koniec pętli. Zamknij wszystkie otwarte pliki. Koniec programu. 4. Rezultaty i wnioski Projekt zakłada, za [1], Ŝe morfologię dominującą przypisuje się najliczniej reprezentowanej klasie zespołów nadkomorowych. PoniewaŜ w otrzymanych plikach referencyjnych występują liczne klasy oznaczone jako dominujące, a jedynie niewielka liczba określona jest jako nadkomorowe, w celach testowych oba rezultaty zostały zgrupowane jako nadkomorowe, gdyŝ przeprowadzenie innego porównania wymagałoby redefiniowania sposobu, w jaki traktowane są te typy morfologii w projekcie, a w rezultacie do zmiany wyników. Porównując otrzymane wyniki z referencyjnymi otrzymano wysoką skuteczność separacji typów morfologicznych. PoniŜej przedstawiono skuteczność w % dla kaŝdego z testowanych plików: Nazwa Pliku Skuteczność % ah_21_1.dcm 99,6 ah_21_2.dcm 99,1 ah_21_3.dcm 99,8 ah_21_4.dcm 99,8 ah_23_1.dcm 99,9 ah_23_2.dcm 98,8 ah_29_1.dcm 99,5 ah_29_2.dcm 99,8 ah_29_3.dcm 99,7 ah_29_4.dcm 99,6-5-
Z powyŝszego zestawienia moŝna wnioskować, Ŝe wybrane metody skutecznie separują zespoły nadkomorowe od komorowych. PoniewaŜ jednak w plikach testowych nie znalazły się Ŝadne przypadki artefaktów, nie moŝna stwierdzić, jak zostaną one potraktowane. 5. Podsumowanie Projekt spełnia postawione wymagania i osiąga duŝą skuteczność na podstawie przyjętych załoŝeń i otrzymanych danych wejściowych. Ze względu na małe zróŝnicowanie tych drugich, nie było moŝliwości zrealizowania rozpoznawania artefaktów, ani przetestowania, czy zaproponowane metody się do tego nadają. 6. Literatura [1] Augustyniak P. Przetwarzanie sygnałów elektrodiagnostycznych. Wydawnictwa AGH, 2001. [2] Augustyniak P. Optymalizacja wyboru reprezentacji zespołów skurczowych dla celów klasyfikacji zapisów holterowskich. [3] Al-Nashash H. Cardiac arrhythmia classification using neural networks. Technol Health Care 2000;8:363 72. [4] Lagerholm M, Peterson G, Braccini G, Edenbrandt L, S ornmo L. Clustering ECG complex using Hermite Functions and self-organizing maps. IEEE Trans Biomed Eng 2000;47(7):838 48. 7. DODATEK A: Opis opracowanych narzędzi i metody postępowania Algorytm wyznaczania morfologii uderzenia serca został zaimplementowany w języku ANSI C99 w środowisku Microsoft Visual Studio 8.0. Argumentem wejściowym jest trzy-kanałowy sygnał holterowski zapisany w formacie DICOM oraz plik tekstowy pierwsza kolumna oznaczająca punkt detekcyjny zespołu QRS i szósta kolumna oznaczająca numer klasy zespołu QRS. Piąta kolumna tego samego pliku tekstowego jest kolumną referencyjną oznaczającą typ morfologii. Na potrzeby projektu wygenerowano pliki z wynikami czterech proponowanych miar opisujących zespoły QRS ( jeden plik dla jednego typu morfologii) oraz pliki z danymi statystycznymi wynikającymi z zastosowania proponowanych metod. PoŜądanym wynikiem działania algorytmu jest przypisanie, kaŝdemu zespołowi QRS odpowiedniej morfologii określonej wartością liczbową: -1 zespół oznaczony jako nieznanej morfologii 0 dominujący 1 nadkomorowy 2 komorowy 3 inny 4 artefakt typu uskok 5 artefakt typu szum -6-
Program jest wywoływany z wiersza poleceń jako argumenty podając kolejno plik wejściowy, plik referencyjny, plik wynikowy: morfologia.exe plik_wejsciowy.dcm plik_referencyjny.out plik_wyjsciowy.out Program był testowany na bazie składającej się z 10 plików trzy-kanałowych zapisów holterowskich, gdzie sygnał był próbkowany z częstotliwością 128 Hz o skali amplitudowej 1mV=45LSB (5,7mV pełnej skali, 1 LSB=22uV). Ze względu na brak artefaktów w otrzymanej bazie, oraz na nieokreślenie róŝnicy między morfologią inną a nieznaną, wyniki 3, 4 i 5 nie są obsługiwane przez obecną wersję programu. 8. DODATEK B: Realizacja proponowanego rozwiązania I. Długość zespołu QRS. a. Metoda obliczania: Program wyszukuje do trzech pierwszych minima i/lub maksima lokalne w próbce. JeŜeli nie znajdzie Ŝadnego, zwraca długość badanego przedziału. JeŜeli znajdzie jedno lub dwa, zwraca odcinek od pierwszego do końca badanego przedziału. JeŜeli znajdzie trzy, zwraca odcinek od pierwszego do trzeciego. W kaŝdym przypadku długość w jednostkach zostaje przemnoŝona przez odstęp czasu między próbkami. Dla zadanej częstotliwości próbkowania 128 Hz, obliczony odstęp czasu wynosi ok. 7.8 milisekundy. b. Dane statystyczne uzyskane z plików testowych: Kanał wartości funkcji dla zespołów nadkomorowych SV wartości funkcji dla zespołów komorowych V I 15.0 156.0 36.936253 12.161572 15.0 156.0 63.737877 19.073421 II 15.0 156.0 51.324184 30.175419 15.0 148.0 55.149242 21.781992 III 15.0 156.0 62.428387 26.747671 15.0 156.0 71.481064 40.038986 c. Przyjęte przedziały czułości: Kanał Zespoły komorowe V Zespoły nadkomorowe SV I <65, 82> <25, 55> d. Uwagi: Współczynnik nie rozróŝnia zespołów V i SV w kanale drugim i trzecim, moŝliwą przyczyną jest zbyt mała dokładność metody obliczania, podatność na zakłócenia, -7-
II. lub zbyt mała liczba próbek (20) w przeszukiwanym przedziale. Długość przyjmuje teŝ dwu- do trzykrotnie mniejsze wartości niŝ oczekiwane, co sugeruje błędnie dobrany odstęp czasu, nie ma to jednak wpływu na skuteczność metody. Współczynnik kształtu. a. Metoda obliczania: Według wzoru: b. Dane statystyczne uzyskane z plików testowych: Kanał wartości funkcji dla zespołów nadkomorowych SV wartości funkcji dla zespołów komorowych V I 40.0 3043.0 120.011513 55.973953 43.0 602.0 79.643936 33.777821 II 23.0 12795.0 152.442688 156.939011 28.0 1960.0 97.645454 129.132187 III 11.0 12810.0 96.080231 124.715111 37.0 857.0 130.444702 59.797779 III. c. Uwagi: Metoda okazała się nieskuteczna dla zadanych sygnałów, wobec czego nie została uŝyta w końcowym projekcie. Stosunek maksymalnej prędkości do maksymalnej amplitudy. a. Metoda obliczania: Według wzoru: b. Dane statystyczne uzyskane z plików testowych: Kanał wartości funkcji dla zespołów nadkomorowych SV wartości funkcji dla zespołów komorowych V I 1.0 1120.689697 535.859680 78.757858 33.898304 539.473694 296.269867 49.772511 II 1.0 2000.0 516.771729 124.510406 157.608688 863.354065 290.464172 57.725792-8-
III 1.0 1521.739136 506.743744 98.294060-1.000000 973.404236 353.091339 93.543976 c. Przyjęte przedziały czułości: Kanał Zespoły komorowe V Zespoły nadkomorowe SV I <225,375> <425,625> II <225,350> <400,650> III <260,400> <450,625> IV. d. Uwagi: Metoda najlepiej rozróŝnia zespoły SV i V w sygnałach testowych. Ilość próbek, w których prędkość przekracza 40% prędkości maksymalnej. a. Metoda obliczania: b. Dane statystyczne uzyskane z plików testowych: Kanał wartości funkcji dla zespołów nadkomorowych SV wartości funkcji dla zespołów komorowych V I 0.0 15.0 3.170674 0.705086 0.0 10.0 5.196970 1.477340 II 0.0 18.0 3.140503 1.291237 1.0 13.0 6.354546 1.609315 III 0.0 12.0 2.158483 0.827752 0.0 9.0 3.306061 1.277419 c. Przyjęte przedziały czułości: Kanał Zespoły komorowe V Zespoły nadkomorowe SV I <4,6.75> <2.25,3.5> II <1.5, 4.25> <4.75, 8> III <1.0, 2> <3, 5> 9. DODATEK C: Opis informatyczny procedur Środowisko programowania: Microsoft Visual Studio 8.0 Język programowania: ANSI C System operacyjny: Aplikacja linii komend systemu Windows Opis głównych funkcji programu: -9-
/* float complen */ /* Przeznaczenie: */ /* Funkcja słuŝy do pomiaru długości zespołu QRS. */ /* Argumenty funkcji: */ /* int *in tablica z sygnałem z jednego kanału */ /* int len długość in */ /* float t czas pomiędzy próbkami */ /* Funkcja zwraca: */ /* długość zespołu QRS */ /* float waveshape */ /* Przeznaczenie: */ /* Funkcja słuŝy do obliczana współczynnika kształtu Malinowskiej, */ /* który posłuŝy do separacji typów morfologicznych zespołów QRS. */ /* Argumenty funkcji: */ /* int *in tablica z sygnałem z jednego kanału */ /* int len długość in */ /* Funkcja zwraca: */ /* Stosunek pola powierzchni do obwodu sygnału. */ /* int** getsignal */ /* Przeznaczenie: */ /* Funkcja słuŝy do pobrania 20 próbek sygnału 8 próbek przed punktem */ /* detekcji, 12 próbek za punktem detekcji. */ /* Argumenty funkcji: */ /* char *sig_fname nazwa pliku z sygnałem */ /* int det_point punkt detekcji */ /* Funkcja zwraca: */ /* Wskaźnik do tablicy dwuwymiarowej [3][20], gdzie pierwszy wymiar to */ /* kanał, natomiast drugi oznacza wartości próbek sygnału. */ -10-
/* float h10shapefactor */ /* Przeznaczenie: */ /* Funkcja słuŝy do obliczania współczynnika kształtu opisującego zespół */ /* QRS dokładnie ilość próbek, których prędkość przekracza 40 % prędkości */ /* maksymalnej. */ /* Argumenty funkcji: */ /* int *samples wskaźnik do tablicy próbek */ /* int N długość tablicy próbek */ /* Funkcja zwraca: */ /* Ilość próbek, których prędkość przekracza 40 % prędkości maksymalnej */ /* float h5shapefactor */ /* Przeznaczenie: */ /* Funkcja słuŝy do obliczania współczynnika kształtu opisującego zespół */ /* QRS dokładnie stosunek maksymalnej prędkości sygnału do maksymalnej */ /* amplitudy. */ /* Argumenty funkcji: */ /* int *samples wskaźnik do danych z sygnałem */ /* int N długość sygnału */ /* Funkcja zwraca: */ /* Stosunek maksymalnej prędkości sygnału do maksymalnej amplitudy. */ 10. DODATEK D: Spis zawartości dołączonego CD-ROMu W poszczególnych katalogach znajdują się: SRC pliki źródłowe (projekt VS 2008) EXE postać programu gotowa do uruchomienia DOC tekst raportu PDF TEST baza testowa z przykładowymi wynikami -11-