przetwarzanie sygnałów w systemach diagnostyki medycznej

12
-1- AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w Krakowie Wydział EAIiE, Katedra Automatyki Laboratorium Biocybernetyki Przedmiot: Przetwarzanie sygnałów w systemach diagnostyki medycznej. Temat projektu: Detekcja arytmii. Spis treści: 1. ABSTRAKT .................................................................................................................................................. 2 2. WSTĘP.......................................................................................................................................................... 3 3. KONCEPCJA PROPONOWANEGO ROZWIĄZANIA......................................................................... 4 4. REZULTATY I WNIOSKI ......................................................................................................................... 6 5. PODSUMOWANIE ..................................................................................................................................... 6 6. LITERATURA ............................................................................................................................................. 6 7. DODATEK A: OPIS OPRACOWANYCH NARZĘDZI I METODY POSTĘPOWANIA .................. 8 8. DODATEK B: REALIZACJA PROPONOWANEGO ROZWIĄZANIA.............................................. 9 9. DODATEK C. OPIS INFORMATYCZNY PROCEDUR ...................................................................... 10 10. DODATEK D. SPIS ZAWARTOŚCI DOŁĄCZONYCH NOŚNIKÓW (DYSKIETEK, CD ROMU)12 Wykonali: Urszula Ciaputa, Janusz Kamieński V rok Informatyki Stosowane, Wydział EAIiE, AGH-UST Konsultant: prof. dr hab. inż. Piotr Augustryniak Wersja 1.0 Kraków, styczeń 2011. ARRH_DET

Upload: others

Post on 04-Nov-2021

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Przetwarzanie sygnałów w systemach diagnostyki medycznej

-1-

AKADEMIA GÓRNICZO-HUTNICZA

im. St. Staszica w Krakowie

Wydział EAIiE, Katedra Automatyki

Laboratorium Biocybernetyki

Przedmiot: Przetwarzanie sygnałów w systemach diagnostyki medycznej.

Temat projektu: Detekcja arytmii.

Spis treści:

1. ABSTRAKT .................................................................................................................................................. 2

2. WSTĘP .......................................................................................................................................................... 3

3. KONCEPCJA PROPONOWANEGO ROZWIĄZANIA ......................................................................... 4

4. REZULTATY I WNIOSKI ......................................................................................................................... 6

5. PODSUMOWANIE ..................................................................................................................................... 6

6. LITERATURA ............................................................................................................................................. 6

7. DODATEK A: OPIS OPRACOWANYCH NARZĘDZI I METODY POSTĘPOWANIA .................. 8

8. DODATEK B: REALIZACJA PROPONOWANEGO ROZWIĄZANIA .............................................. 9

9. DODATEK C. OPIS INFORMATYCZNY PROCEDUR ...................................................................... 10

10. DODATEK D. SPIS ZAWARTOŚCI DOŁĄCZONYCH NOŚNIKÓW (DYSKIETEK, CD ROMU)12

Wykonali: Urszula Ciaputa, Janusz Kamieński

V rok Informatyki Stosowane, Wydział EAIiE, AGH-UST

Konsultant: prof. dr hab. inż. Piotr Augustryniak

Wersja 1.0

Kraków, styczeń 2011.

ARRH_DET

Page 2: Przetwarzanie sygnałów w systemach diagnostyki medycznej

-2-

1. Abstrakt

Celem niniejszego projektu było przygotowanie biblioteki oraz programu, który pozwalałby na

rozpoznawanie typu arytmii serca z danych przekazywanych z zewnątrz. W ramach pracy

przygotowano bibliotekę napisaną w języku ANSI C, która pozwala na wykorzystanie

rozpoznawania arytmii serca w osobnym programie, który może realizować więcej zadań.

Rozpoznawanie arytmii odbywa się przy zastosowaniu sztucznych sieci neuronowych uczonych

przez przykładowe dane z wykorzystaniem biblioteki FANN. Ponadto przygotowano program,

który pozwala nauczyć sieć neuronową rozpoznawania arytmii oraz sprawdzenie pracy biblioteki

rozpoznającej arytmie serca.

Słowa kluczowe: arytmia serca, sztuczne sieci neuronowe, ANN, FANN, ANSI C

Page 3: Przetwarzanie sygnałów w systemach diagnostyki medycznej

-3-

2. Wstęp

Cele i założenia projektu

Celem projektu jest zaimplementowanie algorytmu detekcji podstawowych arytmii na podstawie

sekwencji morfologii zespołu QRS. Program ma stanowić część bardziej złożonego systemu, musi

więc zachowywać kompatybilną strukturę opisu sygnału EKG i sygnałów sterujących. Jakość

detekotora ma zostać przetestowana z użyciem generatora sygnałów wzorcowych EKG oraz bazy

danych MIT-BIH.

Rodzaje arytmii

Według [1] arytmie to sekwencje pobudzeń o ustalonych wzorcach, zdefiniowane przez następstwo

zespołów o określonej morfologii, interwał międzyuderzeniowy RR i niekiedy liczbę zespołów w

sekwencji. Podstawowo arytmie dzieli się na nadkomorowe i komorowe.

Do arytmii nadkomorowych zaliczane są m.in.:

pauza - zbyt długa przerwa pomiędzy uderzeniami

tachykardia nadkomorowa (częstoskurcz nadkomorowy; ang. Supraventricular

Tachykardia, SVT) – szybki (powyżej 100 uderzeń na minutę) rytm serca pochodzący z

przedsionków lub węzła przedsionkowo-komorowego

migotanie przedsionków (ang. Atrial Fbrillation, AF, A-fib)

bradykardia nadkomorowa – bardzo wolny (poniżej 60 uderzeń na minutę) rytm serca

napadowy częstoskurcz nadkomorowy (ang. Paroxysmal Supraventricular Tachykardia,

PSVT)

Do arytmii komorowych zaliczane są m.in.:

tachykardia komorowa (częstoskurcz komorowy; ang. Ventricular Tachykardia, VT)

migotanie komór (ang. Ventricular Fibrillation, VF, V-fib)

przedwczesny skurcz komorowy serca (ang. Premature Ventricular Contraction, PVC;

Ventricular Premature Beat, VPB):

◦ bigeminia – przedwczesny skurcz występuje po każdym normalnym uderzeniu

◦ trigeminia – po każdym normalnym uderzeniu występują dwa skurcze

Istotne jest zwrócenie uwagi na możliwość występowania konfliktów (wystąpienie jednej z

sekwencji arytmii w czasie trwania innej). Rozwiązywane są one dzięki nadaniu priorytetów

różnym rodzajom arytmii.

W zależności od podejścia (jednoprzebiegowe lub wieloprzebiegowe) uzyskuje się nieco odmienne

rezultaty: przy jednokrotnym przeglądzie sekwencji zespołów QRS arytmia o niższym priorytecie

ustępuje arytmii o wyższym priorytecie dopóki ta się nie zakończy, natomiast w przypadku trzech

Page 4: Przetwarzanie sygnałów w systemach diagnostyki medycznej

-4-

przebiegów najpierw wykrywa się arytmie o najwyższym priorytecie, a następnie (pomijając już

zidentyfikowane odcinki) te o niższym.

Istniejące rozwiązania

W literaturze znaleźć można wiele przykładów algorytmów służących do wykrywania zaburzeń

pracy serca. Niektóre z nich służą do wykrywania konkretnego rodzaju (rodzajów) arytmii, podczas

gdy inne mają bardziej ogólne zastosowanie. Wiele istniejących, komercyjnych rozwiązań używa

parametrów morfologicznych (takich jak dopasowanie szablonów), autokorelacji i różnych

parametrów z dziedziny czasu (amplitudy, szerokości, energii itp.) w celu klasyfikowania zespołów

QRS jako należących do danego typu arytmii. Wśród propozycji znajdujących się w literaturze

można znaleźć przykłady użycia transformaty Karhunena-Loevego (analizy głównych składowych)

wraz z analizą sekwencyjną do wykrywania tachykardii komorowych i migotania komór [3],

wykorzystania ukrytych modeli Markowa do lepszej detekcji arytmii nadkomorowych [4],

zastosowania funkcji probablistycznych w celu poprawienia jakości detekcji arytmii [5,6], próby

zastosowania analizy spektralnej do wykrywania bigeminii i trigeminii [7], użycia transformacji

falkowej do klasyfikacji bradykardii i tachykardii [8,9] czy wykorzystania fraktali do

wyodrębnienia charakterystycznych cech zespołów QRS [10][11]. Oprócz wymienionych wcześniej

propozycji znaleźć można jeszcze wiele innych, naszą uwagę przyciągnęły jednak próby

wykorzystania sieci neuronowych w detekcji i klasyfikacji arytmii.

Sieci neuronowe wykorzystywane są do klasyfikacji zespołów QRS na podstawi wyodrębnionych

wcześniej (na różne sposoby) cech. Przykładem może tu być [11], gdzie sieć neuronowa została

wykorzystana do klasyfikacji na podstawie cech uzyskanych przy użyciu transformacji fraktalnej.

Detekcja arytmii przy użyciu sieci neuronowych i jej rezultaty opisane zostały także w [12].

Ciekawa metoda wykrywania i klasyfikacji arytmii znajduje się w [13]. Wykorzystuje ona

przedstawienie sygnału EKG w przestrzeni fazowej, a następnie klasyfikuje tak powstały kształt

przy pomocy sieci neuronowej z propagacją wsteczną jako jeden z pięciu możliwych rodzajów:

1. normalne uderzenie (NSR)

2. przedwczesny skurcz komorowy serca (PVC)

3. migotanie przedsionków (AF)

4. tachykardia komorowa (VT)

5. migotanie komór (VF)

3. Koncepcja proponowanego rozwiązania

Dane wejściowe i wyjściowe

Dostępnymi danymi wejściowymi dla algorytmu będą:

Page 5: Przetwarzanie sygnałów w systemach diagnostyki medycznej

-5-

1. sygnał EKG o ustalonej częstotliwości próbkowania

2. wykryte zespoły QRS

2.1. morfologia zespołu QRS

a) zespół nadkomorowy SV

b) zespół komorowy V

c) zespół inny, którego pochodzenia nie da się automatycznie określić

d) artefakt, omyłkowo uznany za zespół QRS

Na wyjściu algorytm ma zwracać listę wykrytych typów arytmii, wraz z odniesieniami do sygnału

wejściowego (początek i koniec wykrytej arytmii).

Przekształcenie sygnału EKG do przestrzeni fazowej

Załóżmy, że sygnał EKG jest reprezentowany przez współrzędne X(k) w przestrzeni fazowej. W

takim wypadku dynamiczne zachowanie sygnału może zostać odtworzone poprzez następstwo

punktów X(k) w przestrzeni fazowej.

Wektory X(k) w wielowymiarowej przestrzeni fazowej konstruowane są przy użyciu opóźnionych

w czasie wartości sygnału, co określa współrzędne wykresu przestrzeni fazowej.

X(k) = { x(k), x(k+t), ..., x(k+(E-1)t)}

k = 1,2,...,M-E

Gdzie X(k) to punkt trajektorii w chwili k, x(k + it) to współrzędne w przestrzeni fazowej

odpowiadające opóźnionym w czasie wartościom sygnału, t to opóźnienie pomiędzy kolejnymi

punktami sygnału, M to ilość próbek użytych do rekonstrukcji, a E to ilość wymiarów.

Opóźnienie czasowe powinno wynosić między 7 a 15 ms.

W przypadku dwuwymiarowej rekonstrukcji macierz A otrzymuje się używając sygnału x(k) oraz

x(k+t).

A = [ x(1) x(2) ... x(M) || x(1+t) x(2+t) ... x(M+t) ]

Wykres przestrzeni fazowej otrzymuje się robiąc wykres wiersza drugiego w zależności od wiersza

pierwszego macierzy A. Wartości powinny być znormalizowane, co osiąga się poprzez dzielenie

każdego elementu przez q, gdzie:

q = | max[x(k)] – min[x(k)] | 1 <= k <= M

Po znormalizowaniu zakresy na obu osiach powinny wynosić -1 do 1.

Page 6: Przetwarzanie sygnałów w systemach diagnostyki medycznej

-6-

Stworzenie macierzy gęstości przestrzeni fazowej

Aby stworzyć macierz gęstości dzielimy przestrzeń fazową przy pomocy siatki 20x20 i sumujemy

ilość elementów w każdym z tak powstałych kwadratów, otrzymując c(i,j). Dzięki zastosowaniu

normalizacji ograniczyliśmy możliwe położenia punktów na wykresie. Wartości c(i,j) ze 100

kwadratów położonych w regionie -0.5,0.5 na każdej z osi będą wykorzystywane do dalszej

klasyfikacji.

Sieć neuronowa

Sieć jest trójwarstwowa, posiada 301 wejść i 16 wyjść, odpowiadającym wykrywanym rodzajom

arytmii. Uczenie sieci odbywa się za pomocą algorytmu Quickprop.

Do zaimplementowania sieci wykorzystana zostanie biblioteka FANN (Fast Artificial Neural

Network).

Dodatkowe dane

Na podstawie dodatkowych danych może nastąpić identyfikacja innych elementów. Interwał RR

(między szczytami R zespołów QRS) może zostać wykorzystany do określenia wystąpienia pauzy

oraz bradykardii/tachykardii. Informacja o rodzajach występujących po sobie zespołów QRS może

posłużyć do identyfikacji bigeminii (NSR po którym występuje jeden PVC) oraz trigeminii (NSR

po którym występują dwa PVC). Dodatkowo, posiadając informacje o uprzednio

zidentyfikowanych artefaktach można z góry je odrzucić.

Wyniki

W przypadku zidentyfikowania zespołu innego niż NSR zapamiętywany jest numer tego zespołu,

dzięki czemu możliwe jest późniejsze wskazanie miejsca w sygnale w którym wystąpiła arytmia.

4. Rezultaty i wnioski

Program charakteryzuje się długim czasem oczekiwania na wyniki (przetwarzany jest bowiem na

raz cały sygnał) i niskim poziomem skuteczności (spowodowanym prawdopodobnie przez

dominację arytmii typu pojedyncze przedwczesne pobudzenie komorowe – VE – w bazie testowej

oraz ogólną małą ilość przykładów). W skrajnym przypadku wszystkie (nawet prawidłowe)

uderzenia są klasyfikowane jako VE, mimo iż błąd średniokwadratowy osiągany przez sieć w

trakcie nauki jest bardzo niski (rzędu 0.05).

5. Podsumowanie

Zaimplementowana przez nas metoda niestety okazała się nieskuteczna. Dobranie odpowiednich

parametrów sieci neuronowej (liczba warstw ukrytych i ilość neuronów, które się w nich znajdują,

Page 7: Przetwarzanie sygnałów w systemach diagnostyki medycznej

-7-

próg od którego dane wyjście jest uznawane za wybrane przez sieć) okazało się bardzo trudne, a

wręcz niemożliwe. Ponadto baza testowa zawiera głównie jeden typ arytmii (pojedyncze

przedwczesne pobudzenie komorowe), co sprawiło, że program nauczył się rozpoznawać tylko

jego, resztę rodzajów ignorując – do tego stopnia, że nawet prawidłowe uderzenia często były

mylone z tymże.

Rezultaty te nie są zachęcające, jednakże wynika to prawdopodobnie ze zbyt małej ilości

przykładów testowych oraz zbytniej generalizacji oczekiwań w stosunku do możliwości sieci (w

artykule [13], na którym oparliśmy swoją pracę, autorzy używali sieci do bardzo ogólnej

klasyfikacji arytmii). Lepsze efekty miało by więc prawdopodobnie podejście mieszane, w którym

(dobrze nauczona) sieć wykorzystywana jest do ogólnej klasyfikacji, natomiast szczegółowe

rodzaje arytmii klasyfikowane są z pomocą innych metod.

6. Literatura

[1] Augustyniak, P.; Przetwarzanie Sygnałów Elektrodiagnostycznych, UWND-AGH 2001

[2] http://en.wikipedia.org/wiki/Arrhythmia, dostęp: 2.12.2010

[3]Dorsett, T.J.; Guilak, F.; Taylor, L.A.; A real-time ventricular arrhythmia detection system based

on the KL transform and sequential-hypothesis testing, Engineering in Medicine and Biology

Society, 1995, Volume 2, p. 1007 - 1008

[4] Coast, D.A.; Stern, R.M.; Cano, G.G.; Briller, S.A. An approach to cardiac arrhythmia analysis

using hidden Markov models, IEEE Transactions on Biomedical Engineering, 1990, Volume 37,

Issue 9, p. 826 - 836

[5] Elghazzawi, Z.; Geheb, F.; A knowledge-based system for arrhythmia detection, Computers in

Cardiology, 1996, p. 541 – 544

[6] Owis, M.I.; Abou-Zied, A.H.; Youssef, A.-B.M.; Kadah, Y.M.; Study of features based on

nonlinear dynamical modeling in ECG arrhythmia detection and classification, IEEE Transactions

on Biomedical Engineering, 2002, Volume 49, Issue 7, p. 733 – 736

[7] Szilagyi, L.; Application of the Kalman filter in cardiac arrhythmia detection, Engineering in

Medicine and Biology Society, 1998, Volume 1, p. 98 – 100

[8] Daqrouq, K.; Abu-Isbeih, I.N.; Arrhythmia Detection using Wavelet Transform, EUROCON,

2007, p. 122 – 126

[9] Yang Shan-xiao; Chen Cai-ming; Dai Yu-liang; Yang Guang-ying; The Research of Arrhythmia

Algorithm Based on Fuzzy Neural Network, Electronic Commerce and Security (ISECS), 2010 , p.

131 – 133

Page 8: Przetwarzanie sygnałów w systemach diagnostyki medycznej

-8-

[10] Raghav, S.; Mishra, A.K.; Fractal feature based ECG arrhythmia classification, TENCON

2008 - 2008 IEEE Region 10 Conference, p. 1 – 5

[11] Chia-Hung Lin; Chao-Lin Kuo; Jian-Liung Chen; Wei-Der Chang; Fractal features for cardiac

arrhythmias recognition using neural network based classifier, International Conference on

Networking, Sensing and Control, 2009, p. 930 – 935

[12] Jadhav, S.M.; Nalbalwar, S.L.; Ghatol, A.; Artificial Neural Network based cardiac

arrhythmia classification using ECG signal data, International Conference On Electronics and

Information Engineering (ICEIE), 2010, Volume 1, p. 228 – 231

[13] Srinivasan, N.; Wong, M.T.; Krishnan, S.M.; A new phase space analysis algorithm for

cardiac arrhythmia detection, Engineering in Medicine and Biology Society, 2003. Proceedings of

the 25th Annual International Conference of the IEEE, Volume 1, p. 82 – 85

7. DODATEK A: Opis opracowanych narzędzi i metody postępowania

Program należy uruchamiać z poziomu konsoli. Aplikacja może jest zrealizowana tak, by można

było z niej korzystać zarówno w systemie GNU/Linux jak i Windows. Aby korzystać z projektu

wymagana jest obecność zainstalowanej w systemie biblioteki FANN 2.0. Ponieważ działanie tej

biblioteki jest ściśle zależne od systemu operacyjnego należy dokonać indywidualnej jej instalacji

bądź kompilacji w systemie operacyjnym. W przypadku systemów GNU/Linux można dokonać

instalacji za pomocą pakietów (zależy od dystrybucji). W systemie Windows należy przeprowadzić

kompilację biblioteki FANN (szczegóły na stronie twórców biblioteki: http://leenissen.dk/fann/ ).

Także z tego powodu uruchomienie programu wymaga jego skompilowania przy skonfigurowanym

odpowiednio środowisku IDE (ustawionych poprawnie ścieżkach do biblioteki FANN). Projekt

nasz został przygotowany w środowisku Eclipse.

Do programu należy przekazać parametry niezbędne do jego pracy:

1. mode – tryb pracy programu; do wyboru: learning (tryb nauczania sieci neuronowej) oraz

working (tryb pracy sieci, w którym przyjmuje ona wyjście i zwraca wyniki);

2. signal_filename – ścieżka do pliku binarnego, który zawierającego sygnał EKG;

3. qrs_filename – ścieżka do pliku z danymi wykrytych QRS w sygnale EKG podanym jako

parametr 2;

4. output_arrhythmia_filename – ścieżka do pliku wyjściowego, w którym mają być zapisane

dane o wykrytych arytmiach;

Page 9: Przetwarzanie sygnałów w systemach diagnostyki medycznej

-9-

5. nn_configuration_filename – plik zawierający strukturę sieci neuronowej. Jeżeli nie istnieje,

w trybie learning zostanie utworzony;

6. arrhythmia_comparison_filename – [opcjonalny parametr] plik z przykładowymi danymi

wyjściowymi, służącymi sieci neuronowej do porównania ze swoim wyjściem w trybie

learning.

Na podstawie parametrów wejściowych program przeprowadzi nauczanie sieci i wygeneruje plik ze

strukturą i wagami sztucznej sieci neuronowej lub przeprowadzi operację obliczeń na danych

wejściowych i zapisze do pliku wyjściowego wykryte przez sieć arytmie serca.

Przykład polecenia uruchamiającego (znak „\” oznacza kontynuację linii poniżej):

arrhythmia_detector.exe learning ah_21_1/ah_21_1.dcm ah_21_1/qrs_attr.out \

arrh_detected.out network1.net ah_21_1/arh_attr.out

arrhythmia_detector.exe working my_signal_data.dcm my_signal_data_qrs_attr.out \

arrh_detected_live.out network5.net

W efekcie działania programu w trybie working zostanie utworzony wyjściowy plik tekstowy z

wykrytymi arytmiami serca.

8. DODATEK B: Realizacja proponowanego rozwiązania

Projekty wykonany został w systemie GNU/Linux, dystrybucja Fedora 13 w środowisku Eclipse z

użyciem kompilatora gcc. Nic nie stoi jednak na przeszkodzie, by przenieść projekt na system

Windows. Wymagana jest wtedy obecność skompilowanej biblioteki FANN (informacja w

poprzednim rozdziale) oraz poprawne podanie ścieżek do nagłówków i plików bibliotecznych.

Program został napisany w języku C, stylu ANSI.

Aby móc wykonać projekt w stylu ANSI C konieczna była modyfikacja nagłówkowych plików

dostarczonych przez prowadzącego tak, by były one poprawnie przetwarzane przez kompilator.

Konieczne było dodanie definicji typów dla struktur:

typedef struct QRS_ATTR QRS_ATTR;

typedef struct ARH_ATTR_ITEM ARH_ATTR_ITEM;

Ponadto konieczna była zmiana typów danych wewnątrz struktur uchar na unsigned char.

Page 10: Przetwarzanie sygnałów w systemach diagnostyki medycznej

-10-

9. DODATEK C. Opis informatyczny procedur

Program podzielony został na kilka plików, z których każdy posiada osobną funkcjonalność:

arrhythmia_detector.c

Plik ten jest plikiem głównym programu, który posiada tylko funkcję main.

int main(int argc, char** argv)

Funkcja ta odpowiada za przetworzenie parametrów z linii poleceń, załadowanie danych z plików

wejściowych do struktur oraz uruchomienie algorytmów uczenia (learning mode) lub przetwarzania

danych przez sieć (working mode). Na koniec funkcja zapisuje dane wyjściowe do podanego w

parametrach uruchomieniowych pliku.

nnarrhythmia.c

Plik ten zawiera dwie główne funkcje implementujące algorytmy uczenia sieci neuronowych

rozpoznawania arytmii serca oraz detekcji tych arytmii w trybie pracy.

float arrhythmia_detection_learning(unsigned char** sig,unsigned int sig_size,

QRS_ATTR* qrs_data, unsigned int qrs_size, ARH_ATTR_ITEM** comp_results,

unsigned int arh_size[], char* nn_configuration_filename)

Funkcja ta odpowiada za przeprowadzenie nauczania sieci neuronowej. Argumenty przekazane do

funkcji to:

sig – załadowany sygnał EKG z pliku wejściowego

sig_size – ilość próbek sygnału wejściowego

qrs_data – tablica struktur zawierających wykryte zespoły QRS

qrs_size – rozmiar tablicy qrs_data

comp_results – tablica dwuwymiarowa: pierwszy wymiar to kolejne numery wykrytych

arytmii, drugi wymiar zawiera struktury z danymi wykrytych arytmii serca (dane do

porównania dla uczącej się sieci neuronowej)

arh_size – tablica z wielkością poszczególnych podtablic comp_results

nn_configuration_filename – ścieżka do pliku ze strukturą sieci neuronowej

Page 11: Przetwarzanie sygnałów w systemach diagnostyki medycznej

-11-

ARH_ATTR_ITEM** arrhythmia_detection(unsigned char** sig,unsigned int

sig_size, QRS_ATTR* qrs_data, unsigned int qrs_size, char*

nn_configuration_filename)

Funkcja ta odpowiada za przeprowadzenie symulacji na sieci neuronowej, mającej na celu wykrycie

arytmii serca. Argumenty wejściowe są takie same jak w przypadku funkcji

arrhythmia_detection_learning, z tą różnicą, że nie podajemy danych do porównania.

nnarrhythmia_helpers.c

Plik zawierający funkcje pomocnicze dla implementacji z pliku nnarrhythmia.c.

unsigned char* signal2phase(unsigned char** sig, unsigned int sig_len, unsigned

int det_point, unsigned short channel_no);

Funkcja ma za zadanie utworzenie przestrzeni fazowej na bazie wejściowego sygnału EKG. Jako

parametry przekazujemy także długość sygnału (ilość jego próbek), punkt wykrycia zespołu QRS

oraz numer kanału, dla którego wykonywane są obliczenia.

unsigned int* generate_density_matrix(unsigned char* phase_space);

Funkcja ma za zadanie utworzenie tablicy gęstości na bazie przestrzeni fazowej.

fann_type* create_input_data(unsigned int** density_matrix,QRS_ATTR

qrs_info);

Funkcja odpowiada za utworzenie tablicy wejściowych danych do sieci neuronowej na podstawie

macierzy gęstości oraz informacji o wykrytych zespołach QRS.

ARH_ATTR_ITEM** fann_output2arrh(fann_type** fann_output,unsigned int

size,QRS_ATTR* qrs_data)

Funkcja odpowiadająca za przekształcenie wyjść sieci neuronowej w tablicę struktur wynikowych.

signal_loader.c

Plik zawiera funkcje odpowiedzialne za załadowanie sygnału EKG z pliku.

Page 12: Przetwarzanie sygnałów w systemach diagnostyki medycznej

-12-

unsigned int load_signal(char* filename, unsigned char ***sig,unsigned int

channels_number,unsigned int *num)

Funkcja ma za zadanie otworzenie pliku z sygnałem, sprawdzenie jego rozmiaru i utworzenie

tablicy, która będzie przechowywała sygnał w pamięci programu, a następnie załadowanie danych z

pliku.

unsigned int load_signal_all_data(FILE* sig_file, unsigned int channels_number,

unsigned char *** ppSig, unsigned int *num)

Funkcja ładuje dane z otwartego pliku do pamięci.

arr_config.h

Plik konfiguracyjny biblioteki i programu. Zawiera podstawowe parametry wykorzystywane

wewnątrz funkcji:

CHANNELS_NUMBER 3 – liczba kanałów w sygnale EKG

SAMPLING 128 – próbkowanie sygnału EKG wyrażone w Hz

RESOLUTION 20 – rozdzielczość tablicy gęstości

INNER_TAB_START 5 – indeks początku tablicy zawierającej się wewnątrz tablicy

gęstości, która będzie wykorzystana do obliczeń

INNER_TAB_END 15 – indeks końca tablicy zawierającej się wewnątrz tablicy gęstości

PHASE_SPACE_LEN 40 – ilość próbek pobieranych od początku zespołu QRS, do

stworzenia przestrzeni fazowej; wyrażona w liczbie próbek

PHASE_SPACE_OFFSET 2 - przesunięcie sygnału używane do stworzenia przestrzeni

fazowej; wyrażone w liczbie próbek, powinno odpowiadać 7-15 ms.

10. DODATEK D. Spis zawartości dołączonych nośników (dyskietek, CD

ROMu)

BAZA – dane testowe, zawierające sygnały i prawidłowe wyniki

SRC – projekt środowiska programistycznego Eclipse

DOC - tekst raportu w postaci elektronicznej (MS WORD oraz PDF)