37 0 5MB
Universitatea Politehnica Bucures, ti Facultatea de Automatic˘a s, i Calculatoarei Departamentul de Automatic˘a ¸si Ingineria Sistemelori
˘ Lucrare de licent, a Procesare de semnal ECG
Coordonator: ˘ rbanescu Prof. dr. ing. Radu Va Asis. drd. ing. Daniel Rosner Bucures, ti, 2013
Absolvent: Dan Iorga
Cuprins
1 Introducere
6
2 Inima s, i Electrocardiografia
9
2.1
Anatomia cordului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2
Structura inimii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3
Sistemul excitoconductor al inimii. . . . . . . . . . . . . . . . . . . . . . . 12
2.4
Electrocardiograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5
Unde s, i intervale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3 Solut, ii hardware
9
17
3.1
Olimex Shield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2
Solut, ie alternativ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4 Filtrarea zgomotului 4.1
4.2
22
Variat, ia componentei continue . . . . . . . . . . . . . . . . . . . . . . . . 22 4.1.1
Filtru FIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.1.2
Filtru IIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.3
Forward-backward IIR filtering . . . . . . . . . . . . . . . . . . . . 26
Zgomotul de ret, ea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1
4.3
4.2.1
Filtru linear - alocare manuala a zerourilor s, i polilor . . . . . . . . 28
4.2.2
Filtru linear - Cebˆas, ev . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2.3
Filtru neliniar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Filtru Savitzky-Golay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5 Detect, ia caracteristicilor 5.1
5.2
39
Detect, ia complexului QRS . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.1.1
Algoritmul Pan-Tomkins . . . . . . . . . . . . . . . . . . . . . . . . 40
5.1.2
Transformata Fourier de timp scurt . . . . . . . . . . . . . . . . . . 41
5.1.3
Undine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Detect, ia altor caracteristici . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.2.1
Amplitudinea s, i pozit, ia
. . . . . . . . . . . . . . . . . . . . . . . . 46
5.2.2
Detect, ia intervalelor . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6 Implementare Labview
49
6.1
Structura programului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2
Rezultate filtrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.3
Interpretarea rezultatelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7 Concluzii s, i direct, ii de continuare
53
A Cod Matlab
55
B Cod Labview
61
2
List˘ a de figuri
2.1
Fat, a diafragmatic˘a a cordului. . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2
Sistemul excitoconduc˘ator. . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3
Forma general˘a a unui semnal de EKG. . . . . . . . . . . . . . . . . . . . . 14
2.4
Frecvent, e importante EKG . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1
Scutul de EKG disponibil de la Olimex. . . . . . . . . . . . . . . . . . . . . 18
3.2
Semnal nefiltrat Olimex . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3
Br˘at, a˘rile antistatice necesare pentru EKG. . . . . . . . . . . . . . . . . . . 19
3.4
Interfat, a ElectricGuru disponibil˘a pe site-ul Olimex . . . . . . . . . . . . . 20
3.5
Schema circuitului de achizit, ie de semnal . . . . . . . . . . . . . . . . . . . 20
4.1
Caracteristica de modul a unui filtrul FIR de ordinul 10, proiectat folosind o fereastr˘a gausian˘a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2
Caracteristica de modul a unui filtrul FIR de ordinul 100, proiectat folosind o fereastr˘a gausian˘a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3
Caracteristica de modul a unui filtrul FIR de ordinul 1800, proiectat folosind o fereastr˘a gausian˘a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.4
Caracteristica de modul a unui filtrul IIR de ordinul 3, de tip Cebasev. . . 26
4.5
Eliminarea componentei continue . . . . . . . . . . . . . . . . . . . . . . . 27
4.6
Semnalul achizitionat de la primul prototip al EKG-ului. Dup˘a cum se vede, este foarte perturbat de c˘atre zgomotul de ret, ea. . . . . . . . . . . . 28
3
4.7
Zerourile s, i polii filtrului de 50 Hz. . . . . . . . . . . . . . . . . . . . . . . 29
4.8
Functia pondere a filtrului proiectat. . . . . . . . . . . . . . . . . . . . . . 30
4.9
Caracteristica de modul a filtrului proiectat. . . . . . . . . . . . . . . . . . 30
4.10 Rezultatul filtrarii 50Hz cu alocarea manuala a polilor . . . . . . . . . . . . 31 4.11 Functia pondere a filtrului proiectat. . . . . . . . . . . . . . . . . . . . . . 32 4.12 Caracteristica amplitudine-pulsat, ie. . . . . . . . . . . . . . . . . . . . . . . 32 4.13 Rezultaul filtrului de 50Hz Cebasev . . . . . . . . . . . . . . . . . . . . . . 33 4.14 Rezultatul filtr˘arii de 50Hz . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.15 Principiul filtrului Savitzky-Golay . . . . . . . . . . . . . . . . . . . . . . . 37 4.16 Rezultatul filtr˘arii datelor achizit, ionate . . . . . . . . . . . . . . . . . . . . 37 5.1
Schema bloc a algoritmului Pan-Tomkins . . . . . . . . . . . . . . . . . . . 40
5.2
Detectarea complexului QRS cu ajutorul algoritmului Pan-Tomkins . . . . 41
5.3
Aplicarea ferestrei in cazul STFT. . . . . . . . . . . . . . . . . . . . . . . . 42
5.4
Aplicarea CWT asupra semnalului . . . . . . . . . . . . . . . . . . . . . . 44
5.5
Rezultatul c˘aut˘arii vˆarfului undei R folosind undine . . . . . . . . . . . . . 45
5.6
Rezultatul c˘aut˘arii celorlalte caracteristici . . . . . . . . . . . . . . . . . . 47
6.1
Interfata Labview creata . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2
Schema bloc a programului Labview . . . . . . . . . . . . . . . . . . . . . . 50
6.3
Rezultatele finale ale filtr˘arii . . . . . . . . . . . . . . . . . . . . . . . . . . 52
B.1 Achizitia de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 B.2 Aplicarea algoritmului Pan-Tomkins . . . . . . . . . . . . . . . . . . . . . . 62 B.3 Aplicarea transformatei undine . . . . . . . . . . . . . . . . . . . . . . . . 63
4
List˘ a de tabele
2.1
Scurt˘a descriere a caracteristicilor semnalului EKG . . . . . . . . . . . . . 16
6.1
Interpretarea rezultatelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5
1. Introducere Prin aceast˘a lucrare am dorit s˘a g˘asesc o metod˘a care s˘a monitorizeze ˆın timp real starea de s˘an˘atate a pacient, ilor ce sufer˘a de afect, iuni cardiace. Am analizat s, i ulterior implementat diferite tehnici de filtrare de zgomot s, i extragere de caracteristici pentru realizarea unui sistem eficient, care s˘a ajute medicii s˘a identifice mai us, or posibilele boli ce pot afecta pacient, i. Pentru analiza semnalelor s, i proiectarea filtrelor am folosit Matlab iar pentru implementarea softului de monitorizare am folosit Labview ˆın care am inserat cod de Matlab. Funct, ionarea corpului uman se bazeaz˘a pe semnale de origine electric˘a, chimic˘a sau acustic˘a. Astfel de semnale ofer˘a informat, ie ce nu poate fi perceput˘a imediat, aceasta fiind codat˘a ˆın structura semnalului. Informat, ia trebuie descifrat˘a ˆınainte ca semnalului s˘a ˆıi fie atribuit˘a o interpretare. Aceasta informat, ie este util˘a pentru diagnosticarea diverselor boli. Uneori diagnosticarea este facil˘a deoarece presupune doar inspect, ia vizual˘a a semnalului tip˘arit pe hˆartie sau afis, at pe monitorul unui calculator. Dar, exist˘a s, i semnale a c˘aror complexitate este sporit˘a s, i care necesit˘a o procesare suplimentar˘a. Des, i electrocardiograma a fost descoperit˘a acum mai bine de 100 de ani, ea r˘amˆane una dintre cele mai importante unelte pentru medici. Studiul EKG-ului poate oferi informat, ie relevant˘a despre starea de s˘an˘atate a pacientului. ˆIn prezent analiza acestui semnal se face pe hˆartie milimetric˘a de c˘atre un medic specialist, acest proces necesitˆand mult timp s, i efort. Am dorit s˘a realizez un sistem care s˘a us, ureze munca medicilor s, i chiar s˘a ofere informat, ii de baz˘a neinit, iat, ilor. Des, i tehnicile de procesare de semnal au evoluat semnificat ˆın ultima perioad˘a iar automatizarea diagnostic˘arii afect, iunilor pacient, ilor este facilitat˘a din ce ˆın ce mai mult, niciodat˘a nu va fi eliminat complet medicul din procesul de diagnosticare. Astfel, nu am ˆıncercat s˘a realizez o diagnosticare complet˘a a pacientului (deoarece acest lucru ar fi imposibil) dar am ˆıncercat s˘a ofer cˆat mai multe informat, ii relevante despre pacient s, i s˘a semnalez posibilele anomalii care apar ˆın electrocardiograma pacientului. Unu din motivele principale pentru utilizarea analizei asiste de calculator a semnalului ECG este capacitatea de a ˆımbun˘at˘at, ii calitatea semnalului.Indiferent de performant, a echipamentului fizic, semnalul obt, inut nu va fi niciodat˘a perfect. Dificultatea realiz˘arii filtrelor analogice de ordin mare face indispensabil˘a procesarea digital˘a a semnalului. Discretizarea s, i cuantificarea produc aliere ce trebuie eliminat pe cˆat posibil. Dezvoltarea echipamentelor numerice s, i m˘arirea semnificativ˘a a puterii de calcul a us, urat considerabil
6
tot procesul de prelucrare. Pˆan˘a s, i dispozitivele de foarte mici dimensiuni, precum telefoanele mobile, au suficient˘a putere pentru a procesa cantit˘at, i mari de semnal. Motivul principal pentru care am vrut s˘a realizez aceast˘a lucrare de licent, a˘ a fost dorint, a de a aplica ˆın practic˘a cunos, tint, ele de prelucrare de semnal acumulate ˆın facultate. A durat destul de mult pˆan˘a mi-am consolidat cunos, tint, ele teoretice s, i am reus, it s˘a implementez primul filtru digital, dar dup˘a acel moment, totul a mers destul de fluid iar rezultatele au ˆınceput s˘a apar˘a. Init, ial am dorit s˘a realizez ˆıntreaga implementare ˆın Matlab dar ulterior am realizat c˘a Labview ofer˘a posibilit˘at, i de procesare ˆın timp real superioare Matlab. Implementarea hardware este explicat˘a foarte pe scurt. Am dorit s˘a m˘a axez doar pe partea de procesare de semnal. ˆIn momentul de fat, a˘ exist˘a suficient de multe solut, ii pe piat, a˘ care faciliteaz˘a achizit, ia de semnal. Printre produc˘atorii care ofer˘a un astfel de sistem se num˘ar˘a Olimex, Texas Instruments sau Freescale. Testele au fost realizate init, ial pe semnalele din baza de date MIT ce se poate g˘asi la adresa www.physionet.org iar ulterior au fost realizate pe semnale culese de la un dispozitiv hardware. Au existat anumite probleme ˆın tranzit, ia de la semnalele din baza de date la semnale achizit, ionate ˆın timp real, iar unele filtre s-au comportat diferit dar ˆın cele din urm˘a, problemele au fost rezolvate. ˆIn foarte multe teste am folosit o pl˘acut, a˘ de dezvoltare Arduino ˆımpreun˘a cu un scut de EKG produs de Olimex . O mare problem˘a a fost condit, ionarea semnalului. Des, i aparent neimportant˘a, condit, ionare semnalului este un proces esent, ial pentru analiza ulterioar˘a a semnalului. Dorint, a principal˘a a fost s˘a nu distorsionez semnalul achizit, ionat s, i s˘a lucrez pe cˆat posibil ˆın timp real. Pentru partea de extragere de caracteristici din semnal, dup˘a destul de mult˘a documentat, ie, am ajuns la concluzia c˘a des, i algoritmi precum cel publicat ˆın (Pan and Tomkins, 1985), sau utilizarea STFT ofer˘a rezultate bune, tehnici moderne de analiz˘a timp-frecvent, a˘ precum Tranformata Discret˘a Undine ofer˘a cele mai bune rezultate. Dup˘a ce am extras aceste caracteristici,am ˆıncercat s˘a raportez orice fel de anomalie ˆıntˆampinat˘a. Aceste anomalii trebuie verificate de c˘atre medic, deoarece un inginer nu poate pune un diagnostic asupra pacientului. Dup˘a ce am ˆınceput s˘a utilizez undine, precizia m˘asur˘atorilor s-a ˆımbun˘at˘at, it considerabil iar rezultatele au fost peste as, tept˘ari. Pe viitor, solut, ia poate fi portat˘a ˆın alt limbaj de programare mai portabil precum C s, i implementat˘a pe un telefon mobil, realizˆand astfel un sistem mobil care s˘a ajute la monitorizarea pacient, ilor ce sufer˘a de afect, iuni cardiace. Identificarea pacient, ilor care sufer˘a de anumite boli cardiace a devenit un factor important pentru multe t, a˘ri. Detectarea bolilor ˆın indivizi care nu prezint˘a semne sau simptome poate fi critic ˆın prevenirea deterior˘arii calit˘at, ii viet, i. ˆIn ultimii ani s-au dezvoltat din ce ˆın ce mai multe unelte pentru identificarea anumitor afect, iuni. Diagnosticarea timpurie poate m˘ari considerabil s, ansa de ˆıns˘an˘atos, ire. As, adar rolul inginerului este din ce ˆın ce mai important ˆın medicin˘a.
7
O alt˘a ramur˘a a medicinii care devine din ce ˆın ce mai important˘a este telemedicina. ˆIn unele zone greu accesibile precum Delta Dun˘arii la noi ˆın Romˆania, accesul medicilor este ˆıngreunat considerabil. Din acest motiv, unelte eficiente pentru diagnosticarea la distant, a˘ devin din ce ˆın ce mai importante. Echipaje ce nu cont, in un medic specialist sunt folosite ˆın acest caz pentru deplasarea la pacient. Aces, tia trebuie s˘a fie dotat, i ˆın schimb cu echipamente precise cu posibilitatea de a transmite informat, ia achizit, ionat˘a la distant, a˘. Bolile de inim˘a sunt unele dintre cele mai r˘aspˆandite boli din ˆıntreaga lume. Stilul de viat, a˘ nes˘an˘atos, concretizat prin sedentarism s, i alimentat, ie nes˘an˘atoas˘a au contribuit la acest lucru. Poluarea este de asemenea un motiv ce a contribuit la sc˘aderea nivelului de s˘an˘atate general al populat, iei. Aproximativ 17 milioane de oameni mor ˆın fiecare an din cauza afect, iunilor cardiace(Senior, 2013).
8
2. Inima s, i Electrocardiografia ˆInainte de a efectua orice fel de interpretare a datelor, este necesar cunoas, terea minimal˘a a structurii s, i funct, ion˘arii inimii.
2.1.
Anatomia cordului
Cordul este un organ cavitar, cu structura fibromuscular˘a, de form˘a conic˘a. Prezint˘a o baz˘a, un apex, trei fet, e s, i o margine. Cordul prezint˘a patru cavit˘at, i: - dou˘a cavit˘at, i mai mici - atriile (stˆang s, i drept), situate ˆın partea superioar˘a, spre baza organului, - dou˘a cavit˘at, i mai mari - ventriculele (stˆang s, i drept), situate ˆın partea inferioar˘a, spre vˆarful organului. Cordul se afl˘a ˆın sacul pericardic ˆımpreun˘a cu care se g˘ases, te ˆın mediastinul mijlociu. Pozit, ia oblic˘a a cordului poate fi descris˘a prin asem˘anarea cu o piramid˘a deformat˘a, cu baza dispus˘a posterior s, i la dreapta, iar apexul - anterior s, i la stˆanga. Cordul adult m˘asoar˘a, ˆın medie, 12 cm de la baz˘a la apex, 8-9 cm diametrul transversal s, i 6 cm diametrul anteroposterior. Greutatea cordului, la adult, variaz˘a ˆın limitele de 325 ± 75 g la b˘arbat s, i 275 ± 75 g la femeie. Baza cordului - form˘a patrulater˘a orientat˘a posterior s, i spre dreapta - situat˘a ˆın dreptul vertebrelor toracice T4-T8, - corespunde atriului stˆang s, i unei mici port, iuni din partea posterioar˘a a atriului drept. - limita superioar˘a se afl˘a la nivelul bifurcat, iei arterei pulmonare, iar cea inferioar˘a corespunde s, ant, ului coronar. 9
Apexul cardiac - corespunde vˆarfului ventriculului stˆang, orientat inferior, anterior s, i la stˆanga. Obis, nuit, se proiecteaz˘a ˆın spat, iul intercostal V stˆang, pe linia medioclavicular˘a, sau put, in medial de acesta. Fat, a sternocostal˘ a este orientat˘a anterior s, i superior s, i este alc˘atuit˘a, ˆın raport cu s, ant, ul coronar, dintr-o port, iune atrial˘a, situat˘a superior s, i la dreapta, s, i o port, iune ventricular˘a, inferior s, i la stˆanga. Port, iunea atrial˘a apart, ine aproape ˆın ˆıntregime atriului drept, atriul stˆang fiind ˆın mare parte acoperit de aorta ascendent˘a s, i trunchiul arterei pulmonare. ˆIntre cele dou˘a auricule, prelungite lateral, se formeaz˘a o concavitate deschis˘a anterior, numit˘a coroana cordului (corona cordis), care cuprinde aorta ascendent˘a s, i trunchiul pulmonar. Din port, iunea ventricular˘a a fetei sternocostale, o treime apart, ine ventriculului stˆang, iar restul de dou˘a treimi celui drept. Septului interventricular ˆıi corespunde pe aceasta fat, a˘ s, ant, ul interventricular anterior. Fat, a diafragmatic˘ a este o suprafat, a˘ orizontal˘a mare care ˆın apropierea vˆarfului, se curbeaz˘a spre inferior s, i anterior. Este reprezentat˘a de ventriculi, ˆın principal cel stˆang, limita dintre cei doi ventriculi fiind marcat˘a prin s, ant, ul interventricular posterior. Fat, a diafragmatic˘a se sprijin˘a, ˆın cea mai mare parte, pe centru tendinos al diafragmei, iar o mic˘a parte, pe partea muscular˘a stˆang˘a a acestuia. Astfel, aceast˘a fat, a˘ are raporturi cu fat, a diafragmatic˘a a lobului stˆang hepatic s, i fornixul gastric. Posterior se g˘ases, te o mic˘a zon˘a, format˘a din atrii. Fat, a pulmonar˘ a format˘a, ˆın cea mai mare parte, de ventriculul stˆang; doar o mic˘a zon˘a, situat˘a posterior de s, ant, ul coronar, este format˘a de atriul stˆang. La acest nivel, ˆıntre pleur˘a ¸si pericard, se g˘asesc nervul frenic stˆang s, i vasele pericardofrenice. Marginea dreapt˘ a vizibil˘a pe cordul formolizat, este situat˘a ˆıntre fet, ele sternocostal˘a s, i diafragmatic˘a s, i apart, ine ventriculului drept. S, ant, ul coronar este dispus ˆıntre atrii s, i ventricule. Pe fat, a sternocostal˘a, el coboar˘a spre dreapta, separˆand atriul drept de marginea dreapt˘a a cordului, pe care o dep˘as, es, te trecˆand pe fat, a diafragmatic˘a; cont, ine artera coronar˘a dreapt˘a s, i vena coronar˘a mic˘a. ˆIn continuare, se curbeaz˘a spre stˆanga, trece pe fat, a pulmonar˘a, sfˆars, ind pe fat, a diafragmatic˘a; aceast˘a port, iune cont, ine artera circumflex˘a.
2.2.
Structura inimii
Atriul drept este situat posterolateral, spre dreapta. Pe imaginea radiologic˘a antero-posterioar˘a, el formeaz˘a marginea lateral˘a dreapt˘a. Atriul drept primes, te atˆat sˆangele drenat de sistemul venos prin venele cave superioar˘a s, i inferioar˘a, cˆat s, i cea mai mare parte a sˆangelui venos cardiac, colectat de sinusul coronarian. Vena cav˘a superioar˘a
10
Figure 2.1: Fat, a diafragmatic˘a a cordului. se deschide ˆın partea superioar˘a s, i posterioar˘a, iar vena cav˘a inferioar˘a se vars˘a ˆın partea postero-inferioar˘a. Ventriculul drept are forma de piramida triunghiular˘a, cu baza - ostiului atrioventricular drept s, i trei peret, i, anterior, posterior s, i septal. Lungimea de la apex la inelul tricuspidian este ˆın sistola, de 6,5 ± 1 cm, iar ˆın diastola de 8 ± 1 cm. Cavitatea ventricular˘a dreapt˘a are un volum diastolic de 120 ± 20 ml ¸si unul sistolic de 40 ± 10 cm. Ventriculul drept este ˆımp˘art, it ˆıntr-un compartiment de recept, ie al sˆangelui s, i unul de eject, ie, prin benzi musculare grupate ˆıntr-o format, iune inelar˘a format˘a din trabecula septomarginal˘a numit˘a s, i banda moderatoare (ˆımpiedica distensia exagerat˘a a ventriculului ˆın timpul diastolei) care se continu˘a superior, pe peretele septal cu creasta supraventricular˘a . Atriul stˆ ang este situat pe linia median˘a, ˆın partea postero-superioar˘a. Are form˘a cuboidal˘a s, i se prelunges, te ˆın spatele atriului drept, de care este separat prin septul interatrial. Auriculul stˆang este lung, subt, ire s, i mai curbat decˆat cel drept, iar marginile sale prezint˘a crest˘aturi mai adˆanci. Are un volum mai mic decˆat atriul drept, dar prezint˘a peret, i mai gros, i. Ventriculul stˆ ang are forma unei jum˘at˘at, i de elipsoid, conic˘a sau de piramida triunghiular˘a, fiind mai lung s, i mai ˆıngust decˆat cel drept; are o pozit, ie posterioar˘a s, i la stˆanga, iar pe imaginea radiologica formeaz˘a marginea stˆang˘a. Cavitatea ventricular˘a 11
stˆang˘a are un volum de 125 ±15 ml ˆın sistola; volumul de sˆange evacuat ˆın timpul sistolei de 80 ± 15 ml, iar fract, ia de eject, ie, de 70
2.3.
Sistemul excitoconductor al inimii.
Nodul sinoatrial (Keith-Flack) - pacemaker-ul inimii, localizat ˆın partea superioar˘a a s, ant, ului terminal, la dreapta ostiului venei cave superioare, la jonct, iunea dintre cele dou˘a p˘art, i ale atriului drept, cea derivat˘a din sinusul venos embrionar s, i cea din atriul primitiv. - ˆın mod fiziologic nodulul sinoatrial imprima frecvent, a b˘at˘ailor cordului - are form˘a alungit˘a, cu un traiect postero-inferior pan˘a ˆın partea superioar˘a a cristei terminalis. - dimensiunile sale sunt, ˆın general, de 20 mm lungime, 2 mm grosime s, i 3 mm l˘at, ime - el are o parte superioar˘a, subepicardic˘a ¸si o parte inferioar˘a, subendocardic˘a. Miocitele nodale (celulele P) - de form˘a rotund˘a, poligonala, fusiform˘a sau stelata - se g˘asesc doar la centrul nodului sinoatrial, dispuse circumferent, iar ˆın jurul arterei nodale s, i neregulat ˆın exteriorul ei. Se consider˘a ca aceste celule au un rol de pacemaker; ele realizeaz˘a un contact funct, ional cu miocitele tranzit, ionale adiacente, care sunt mult mai mici decˆat celulele miocardice obis, nuite. Miocitele tranzit, ionale sunt un grup mai complex de celule scurte s, i subt, iri , care conduc lent impulsul electric, fiind interpuse ˆıntre celulele P, celelalte celule miocardice sau celulele Purkinje. Celulele Purkinje conduc rapid impulsul electric; acesta este transmis apoi miocardului atrial contractil, prin unde de depolarizare concentrice sau “ ca o pat˘a de ulei pe apa “ cu o viteza de aproximativ 1m/s s, i prin intermediul acestuia, mai departe nodului atrioventricular. Nodul atrioventricular este alc˘atuit din miocite tranzit, ionale, dispuse neregulat ˆın partea dorsala, dar ordonandu-se progresiv ˆın tracturi longitudinale prelungite spre fasciculul atrioventricular. ˆıntreaga suprafat, a a nodului atrioventricular este acoperit˘a de celulele Purkinje. - Num˘arul mare de miocite tranzit, ionale, cu conducere lent˘a, din nodul atrioventricular este responsabil de ˆıntˆarzierea impulsului electric de la nivelul acestui nod ( viteza impulsului scade la aproximativ 0,2 m/s) ceea ce asigur˘a o ˆıntˆarziere minima, necesar˘a departaj˘arii s, i succesiunii sistolelor atrial˘a s, i ventricular˘a. 12
Figure 2.2: Sistemul excitoconduc˘ator. - cˆand activitatea nodulului sinoatrial este afectata, funct, ia sa poate fi preluata de nodulul atrioventricular, care va imprima astfel cordului un ritm nodal.
2.4.
Electrocardiograma
”Ca un rezultat al activit˘at, ii electrice a celulelor, curentul curge prin corp s, i diferent, e potent, iale sunt stabilite pe suprafat, a pielii care pot fi m˘asurate folosind echipament corespunz˘ator. Cel mai simplu model matematic pentru a face leg˘atura dintre sistemul cardiac s, i potent, ialele de la suprafat, a pielii este cel dipol. Acest model simplu este foarte util pentru furnizarea unui cadru pentru studierea electrocardiografiei s, i vectorcradiografiei, des, i o serie de modele mult mai complexe a fost stabilit.” (Clifford et al., 2006) Electrocardiografia (ECG sau EKG) este o interpretare electric˘a a activit˘at, ii inimii ˆıntr-o perioad˘a de timp, detectat˘a de electrozi atas, at, i pe suprafat, a pielii s, i ˆınregistrat˘a de un dispozitiv ˆın exteriorul corpului. ˆInregistrarea produs˘a de c˘atre aceast˘a procedur˘a neinvaziv˘a se numes, te electrocardiogram˘a ( ECG sau EKG) Un ECG este folosit pentru m˘asurarea ritmul s, i regularit˘at, ii b˘at˘ailor inimii precum s, i a dimensiunii s, i pozit, iei compartimentelor. Acesta mai poate fi folosit s, i pentru detectarea oric˘arui defect ap˘arut dar s, i pentru monitorizarea efectul medicamentelor sau dispozitivelor folosite pentru a regla ritmul inimii, cum ar fi pacemakerul. 13
Majoritatea ECG-urilor sunt folosite pentru diagnoz˘a sau cercet˘ari asupra inimii umane, dar pot fi folosite s, i asupra animalelor, de obicei pentru diagnoza anomaliilor sau pentru cercet˘ari. Pentru realizarea electrocardiogramei, pacientul este ˆıntins pe un pat ˆıntr-o camer˘a cu temperatura de aproximativ 20 de grade. Pielea pe care se aplic˘a electrozi va fi degresat˘a cu alcool, iar electrozii vor fi aplicat, i ˆın zone f˘ar˘a p˘ar peste fˆas, ii de pˆanz˘a udate cu solut, ie salin˘a. Electrozii pentru derivat, iile precordiale sunt fixat, i de torace cu o curea. Pentru studiul fenomenelor electrice ale inimii se aplic˘a electrozi, adic˘a piese metalice care se fixeaz˘a pe membre s, i torace prin benzi de cauciuc. Aces, tia sunt conectat, i la electrocardiograf prin conductori electrici. Locul diferit de aplicare a electrozilor ˆın funct, ie de pozit, ia cordului se defines, te derivat, ia. Astfel, exist˘a derivat, ii directe a c˘aror electrozi sunt as, ezat, i ˆın interiorul cavit˘at, ii cardiace prin cateterism, semidirecte (esofagiene) s, i indirecte, ˆın care electrozii sunt plasat, i pe membre sau pe regiunea precordial˘a.
2.5.
Unde s, i intervale
Figure 2.3: Forma general˘a a unui semnal de EKG. ”Un semnal tipic produs de un ciclu cardiac ( o b˘ataie) este alc˘atuit dintr-o und˘a P, un complex QRS, o und˘a T, si o und˘a U (care este vizibil˘a doar ˆın 50-75% din cazuri). 14
Figure 2.4: Frecvent, ele ce se pot observa ˆıntr-un semnal de EKG. Imagine obt, inut˘a din (Afonsor, 2004) Componenta continu˘a a electrocardiogramei este m˘asurat˘a ca port, iunea dintre unda T s, i unda P sau ca port, iunea dintre unda P s, i complexul QRS ( segmentul PR).”(Islam et al., 2012) ˆIntr-o inim˘a normal˘a s˘an˘atoas˘a, componenta continu˘a este echivalent˘a cu linia izoelectric˘a (0mV) s, i reprezint˘a perioada din ciclul cardiac cˆand nu circul˘a nici un fel de curent spre sonda pozitiv˘a sau negativ˘a a aparatului ECG-ului. ˆıns˘a, ˆıntr-o inim˘a bolnav˘a componenta continu˘a poate fi ridicat˘a ( ex ischemie cardiac˘a) sau sc˘azut˘a ( ex infarctul miocardic ) relativ la linia izoelectric˘a. Segmentul ST r˘amˆane ˆın mod tipic ˆınchis liniei izoelectrice deoarece ˆın aceast˘a perioad˘a ambii ventriculi sunt complet depolarizat, i s, i as, adar nici un curent nu poate circula catre sondele. ˆIn aceast˘a lucrare de licent, a am ˆıncercat s˘a monitorizez cele mai importante intervale din cadrul semnalului pentru a oferi un diagnostic minimal asupra st˘arii de s˘an˘atate a pacientului. Dac˘a oricare din aceste intervale nu se afl˘a ˆın limita corespunz˘atoare, atunci pacientul este suspect de o anumit˘a afect, iune cardiac˘a. ˆIn mod normal, acest lucru este efectual manual de c˘atre medic, pe hˆartie milimetric˘a
La ˆınceput, au fost observate doar patru unde, dar dup˘a corect, ia matematic˘a a artefactelor introduse de amplificatoarele timpurii, a fost observat˘a s, i a cincea und˘a. Einthoven a ales literele P, Q, R, S s, i T pentru a identifica undele. ˆIn electrocardiogramele intra-cardiace, ca cele obt, inute de la senzorii pacemakerului, o und˘a adit, ional˘a poate fi observat˘a, anume unda H, care reflect˘a depolarizarea firelor His. Intervalul H-V, in schimb, reprezint˘a durata de la unda H pˆan˘a la prima detectare a depolariz˘arii ventriculare, ˆınregistrat˘a ˆın orice electrod. 15
Table 2.1: Scurt˘a descriere a caracteristicilor semnalului EKG Caracteristic˘a Descriere Interval RR Intervalul dintre dou˘a unde R. Acest interval ne poate ajuta s˘a determinam numarul de batai pe minut ale inimii care de obicei se afl˘a ˆıntre ˆıntre 60 s, i 100 ˆ Unda P In timpul unei depolariz˘ari normale a atriului, vectorul electric principal este direct, ionat dinspre nodul SA c˘atre nodul AV. Astfel se formeaz˘a unda P Intervalul PR Intervalul PR este m˘asurat de la ˆınceputul undei P pˆan˘a la ˆınceputul complexului QRS. Intervalul PR reflect˘a timpul necesar impulsului electric s˘a ajung˘a de la nodul SA la nodul AV s, i s˘a intre ˆın ventricul. Intervalul PR este o estimare bun˘a a funct, ion˘arii nodului AV Segmentul Segmentul PR conecteaz˘a unda P de complexul QRS. PR Vectorul impuls este de la nodul AV c˘atre fibrele His c˘atre fibrele Purkinje. Aceast˘a activitate electric˘a nu produce o contract, ie direct˘a. Complexul Complexul QRS reflect˘a depolarizarea rapid˘a a QRS ventriculului stˆang s, i a celui drept. Aces, tia au o mas˘a muscular˘a mare ˆın comparat, ie cu atriul, prin urmare complexul QRS are o amplitudine mult mai mare decˆat unda P. Punctul J Punctul ˆın care complexul QRS se termin˘a s, i ˆıncepe segmentul ST. Acest punct este folosit ca referint, a˘ pentru m˘asurarea elev˘arii sau sc˘aderii segmentului ST. Segmentul ST Segmentul ST conecteaz˘a complexul QRS s, i unda T. Segmentul ST reprezint˘a perioada cˆand ambele ventricule sunt depolarizat, i. Este izoelectric Unda T Unda T reprezint˘a repolarizarea (sau recuperarea) ventriculelor. Intervalul ST Intervalul ST este m˘asurat de la punctul J pˆan˘a la sfˆars, itul undei T Intervalul QT Intervalul QT este m˘asurat de la ˆınceputul complexului QRS pˆan˘a la sfˆars, itul undei T. Un interval QT prelungit reprezint˘a un risc de tahicardie ventricular˘a s, i chiar moarte. . Unda U Unda U are de obicei o aptitudine mic˘a s, i ˆın foarte mult cazuri lipses, te. ˆIntotdeauna urmeaz˘a dup˘a unda T s, i urm˘ares, te aceeas, i direct, ie ˆın amplitudine. Aceast˘a reprezint˘a repolarizarea septului inter-ventricular Dac˘a este prea proeminent˘a, pacientul este suspect de hypokalemia, hypercalcemia sau hyperthyroidism Unda J Unda J apare ca o und˘a delta tˆarzie dup˘a QRS sau ca o und˘a R secundar˘a. ˆIn acest caz pacientul e suspect de hipotermie sau hipocalcemie.
16
Durat˘a 0.6 - 1.2s
80ms
120-200ms
50-120ms
80-120ms
N/A
80-120ms
160 ms 320ms Pˆan˘a la 420 ms la 60 bpm
3. Solut, ii hardware ”Odat˘a cu cres, terea utiliz˘arii microcontrolerelor ca dispozitive front-end programabile, achizit, ia de date bazat˘a pe calculatoare personale a c˘ap˘atat o popularitate imens˘a ˆın ultimul deceniu. Microcontrolerele sunt solut, ia preferat˘a pentru ˆın achizit, ia de date ieftin˘a datorit˘a puterii puterii consumate foarte mici, a pret, ului foarte mic s, i a vitezei foarte mari. Ies, irea senzorilor este amplificat˘a ˆınainte de discretizare s, i ˆın final un microcontroler genereaz˘a protocolul de comunicat, ie c˘atre PC. Astfel se creaz˘a o conect, iune dintre front-endul compact s, i PC. ˆIn multe configurat, ii, microcontrolerul ”vorbes, te” cu gazda pentru a primi diverse comenzi. Acest lucru face sistemul de achizit, ie flexibil s, i controlabilde la un PC.” (Gupta et al., 2010) Pentru testarea aplicat, iei este indispensabil˘a o surs˘a de semnal medical. Des, i init, ial am folosit baza de date MIT de semnale medicale, care este foarte comprehensiv˘a s, i util˘a, ˆın cele din urm˘a am simt, it nevoia de un semnal ˆın timp real pentru a vedea dac˘a obt, in rezultate similare. Datorit˘a popularit˘at, ii acestui tip de semnal medical, ˆın momentul de fat, a˘ exist˘a o multitudine de oferte de solut, ii de achizit, ie a semnalului pe piat, a˘. Pret, urile sunt mai mult decˆat acceptabile iar dezvoltarea de algoritmi poate ˆıncepe foarte repede. Voi prezenta pe scurt solut, iile hardware utilizate.
3.1.
Olimex Shield
Aceasta este solut, ia pe care am realizat cele mai teste. Este ieftina (aproximativ 20 de euro) s, i us, or de obt, inut. Este necesar o pl˘acut, a˘ de dezvoltare de genul Arduino (cu un pret, aproximativ de 25 de euro) pentru a obt, ine semnal. Poate fi folosit˘a s, i alt˘a pl˘acut, a˘ echivalent˘a Arduino precum Pinguino sau Maple. Transmisia de date c˘atre calculator se realizeaz˘a cu ajutorul protocolului serial ˆın pachete de dimensiune fix˘a. Frecvent, a de es, antionare este de 256Hz, o frecvent, a mai mult decˆat suficient˘a pentru acest tip de semnal. Din p˘acate semnalul obt, inut nu este de calitate foarte bun˘a s, i este necesar dezvoltarea unei sistem de prefiltrare eficient . Filtrarea hardware a zgomotului de ret, ea 17
Figure 3.1: Scutul de EKG disponibil de la Olimex. este foarte ineficient˘a s, i dup˘a cum se vede din figura 3.2, ˆın jurul frecvent, ei de 50Hz avem un zgomot foarte pronunt, at. Din p˘acate zgomotul de ret, ea nu este centrat la frecvent, a de 50Hz. Centrul zgomotului variaz˘a tot timpul, ceea ce face ca multe din filtrele proiectate s˘a nu se comporte as, a cum am dorit. B˘anuiesc c˘a acest lucru se datoreaz˘a faptului c˘a ret, eaua electric˘a nu se comport˘a as, a cum am dori dar s, i datorit˘a faptului c˘a es, antionarea nu este f˘acut˘a la intervale exacte de timp. Totus, i ˆın cele din urm˘a dup˘a aplicarea filtrelor descrise ˆın capitolele urm˘atoare, am reus, it s˘a obt, in un semnal de calitate acceptabil˘a. Scutul necesit˘a de asemenea br˘at, a˘ri antistatice pentru colectarea semnalului de la om. Acestea sunt disponibile pe site-ul oficial la pret, ul de 10 euro. De asemenea, acestea se pot achizit, iona s, i ˆın magazine romˆanes, ti la pret, uri mai mult decˆat accesibile. Ca o concluzie, pot spune c˘a acest sistem des, i este departe de a fi ideal, poate fi folosit cu succes pentru designul algoritmilor. Pe site-ul oficial este disponibil˘a o aplicat, ie numit˘a ”Electric guru” (figura 3.4) pentru vizionarea semnalului obt, inut, dar calitatea acestuia nu este cea dorit˘a. Semnalul nu este filtrat digital pentru eliminarea zgomotului de ret, ea sau pentru eliminarea oric˘arui
18
Figure 3.2: Semnalul EKG nefiltrat obt, inut cu ajutorul pl˘acut, ei Olimex. Se poate observa us, or c˘a zgomotul de ret, ea este foarte pronunt, at din cauza unei filtr˘ari hardware necorespunz˘atoare.
Figure 3.3: Br˘at, a˘rile antistatice necesare pentru EKG.
19
Figure 3.4: Interfat, a ElectricGuru disponibil˘a pe site-ul Olimex . alt tip de zgomot. Intervalele interesante nu sunt ment, ionate s, i nu se poate obt, ine nici un altfel de informat, ie despre pacient. Este de apreciat faptul c˘a aceast˘a aplicat, ie este disponibil˘a gratuit.
3.2.
Solut, ie alternativ˘ a
Pentru a obt, ine un semnal de calitate mai bun˘a, am folosit un sistem hardware realizat de c˘atre studentul Dumitru-Cristian Tranc˘a, grupa 342C2. Acesta ofer˘a un semnal de calitate superioar˘a solut, iei Olimex s, i astfel us, ureaz˘a interpretarea st˘arii de s˘an˘atate a pacientului.
Figure 3.5: Schema circuitului de achizit, ie de semnal. Dumitru-Cristian Tranc˘a.
Montaj realizat de c˘atre
Sistemul utilizat foloses, te un amplificator de instrumentat, ie INA129, cu cˆas, tig 20
reglabil pentru a amplifica semnalele joase ale semnalului EKG. La ies, irea din amplificator, semnalul este filtrat ˆın doua etape, filtrul realizat fiind un filtru trece jos, de 30Hz. Prima filtrare este realizata folosind un filtru de ordinul 2, activ, ˆın topologie Sallen-Key, iar a doua etapa de filtrare este realizata folosind un filtru de ordin 1. Filtrele include s, i amplificarea semnalului. Semnalul este amplificat, iar ies, irea are componenta continua la jum˘atate din tensiunea de alimentare. Sistemul ˆıs, i genereaz˘a tensiunea de referint, a˘ folosind un repetor s, i un divizor de tensiune. Pentru a ment, ine linia izoelectrica constanta, f˘ar˘a ca aceasta sa se deplaseze datorita mis, c˘arilor pacientului monitorizat, este creat un sistem de generare de tensiune, a c˘arui ies, ire este folosita pe post de masa pentru pacient.
21
4. Filtrarea zgomotului Ca orice semnal achizit, ionat din natur˘a, ECG-ul poate fi afectat de c˘atre zgomot Acesta poate fi cauzat de ret, eaua de alimentare, de mis, c˘arile pacientului sau de de c˘atre alte semnale electrice prezente ˆın corpul uman, cum ar fi cel produs de sistemul muscular. Aceste elemente trebuie ˆınl˘aturate ˆınainte ca semnalul s˘a fie folosit pentru procesarea efectiv˘a. Filtrele digitale s, i procesarea de semnal trebui proiectate foarte eficient pentru a funct, iona ˆın timp real pe un sistem integrat. Pentru a testa filtrele implementate, am folosit init, ial semnale reale din baza de date a universit˘at, ii MIT ce pot fi accesate utilizˆand urm˘atorul toolbox (The WFDB Toolbox for MATLAB, 2013). A fost uneori necesar s˘a introduc un zgomot artificial pentru a face testele, ˆıntrucˆat echipamentul utilizat de aces, tia este de calitate superioar˘a s, i introduce foarte put, in zgomot. Ulterior am folosit date achizit, ionate cu diverse sisteme hardware. Uneori, am s-a observat o diferent, a˘ foarte mare ˆıntre datele din baza de date MIT s, i cele achizit, ionate de mine. Imperfect, iunile hardware au fost mult mai mari decˆat m-as, fi as, teptat.
4.1.
Variat, ia componentei continue
Datorit˘a mis, c˘arii corpului pacientului este foarte posibil s˘a avem o variat, ie destul de puternic˘a a componentei continue a semnalului obt, inut. Din acest motiv ar fi necesar ca semnalul s˘a fie filtrat cu un filtru trece sus. Frecvent, a de t˘aiere a acestui filtru ar trebui s˘a fie mai mic˘a decˆat a oric˘arui semnal produs de c˘atre inim˘a. O valoarea sigur˘a pentru acest filtru ar fi undeva ˆıntre 0.5Hz si 0.8Hz. Exist˘a totus, i s, i tehnici mult mai avansate de eliminare a componentei continue. ˆIn articolul ”Time-varying digital filtering of ECG baseline wander””, propune o tehnic˘a prin care frecvent, a de t˘aiere a a filtrului este determinat˘a de ritmul inimii. Astfel, cˆand un pacient depune efort fizic sust, inut, b˘at˘aile inimii vor avea un ritm mult mai ridicat, miscarea acestuia va determina o variat, ie mai rapid˘a a componentei continue s, i prin urmare ar fi foarte s˘a m˘arim frecvent, a de t˘aiere a filtrului. Un astfel de filtrul necesit˘a ˆın prealabil detect, ia b˘at˘ailor inimii s, i este mai greu de implementat(S¨ornmo, 1993). ˆIn aceast˘a lucrare am ales s˘a evit implementarea acestui filtru, axˆandu-m˘a pe tehnici mult mai facile. 22
Pentru a proiecta filtrul trece-sus propus, putem porni de la r˘aspunsul ˆın frecvent, a˘ ideal a acestuia. 0 , 0 ≤ |ω| ≤ ωc jω H(e ) = 1 , ωc < |ω| < π unde ωc = 2 ∗ π ∗ fc , fc fiind frecvet, a de t˘aiere normalizat˘a, adic˘a fc =
Fc Fs
Pentru a estima acest filtru am ˆıncercat diverse metode.
4.1.1.
Filtru FIR
Un filtru cu r˘aspuns finit la impuls este primul tip de filtru pe care am decis s˘a testez. Filtrele cu r˘aspuns finit la impuls (prescurtat RFI ˆın romˆan˘a sau FIR ˆın englez˘a) au funct¸ia pondere h[n] nenul˘a pentru n ∈ {0, 1, . . . , N − 1}. Se spune c˘a N reprezint˘a lungimea r˘aspunsului la impuls. Pentru aceste filtre implementarea operat¸iei de filtrare are la baz˘a produsul de convolut¸ie particularizat corespunz˘ator: y[n] = x[n] ∗ h[n] =
N −1 X
h[k]x[n − k]
k=0
ˆIn aceast˘a situat, ie funct, ia de transfer devine H(z) =
N −1 X
h[n]z −n
n=0
Deci funct, ia de transfer nu prezint˘a poli, fiind o funct, ie polinomial˘a de ordinul N - 1 ˆın z −1 . Coeficient, ii filtrului sunt chiar valorile r˘aspunsului la impuls. Posibilitatea filtrelor FIR de a avea o caracteristic˘a de faz˘a linear˘a permite realizarea operat, iei de filtrare f˘ar˘a a introduce distorsiuni de faz˘a, aspect important ˆın reconstruct, ia fidel˘a a semnalelor. Transformata Fourier a r˘aspunsului la impuls, denumit˘a r˘aspuns ˆın frecvent, a˘ sau funct, ie de transfer Fourier, se obt, ine prin evaluarea lui H(z) de-a lungul cercului de raz˘a unitate din planul Z. N −1 X jω H(e ) = H(z)z=ejω = h[n]ejnω n=0
unde ω = 2πf = 2π
F Fs
Frecvent, a normal˘a f se calculeaz˘a ca raportul dintre valoarea frecvent, ei (F exprimat˘a ˆın Hz) s, i valoarea frecvent, ei de es, antionare (Fs exprimat˘a ˆın Hz). 23
Funct, ia de transfer evaluat˘a la frecvent, e fizice, periodic˘a ˆın frecvent, a˘ cu perioada 2π, poate fi exprimat˘a ˆın form˘a polar˘a: H(ejω ) = |H(ejω )|ejϕ(ω) unde |H(ejω )| s, i ϕ(ω) sunt p˘art, i ale funct, iei de sistem, purtˆand denumirea de caracteristic˘a de modul ( de amplitudine), respectiv caracteristic˘a de faz˘a. ˆIn practic˘a ne intereseaz˘a filtrele cu coeficient, i reali, adicp cu h[n] ∈ R. Pentru aceste filtre caracteristica de modul este o funct, ie par˘a iar cea de faz˘a, o funct, ie impar˘a, adic˘a: |H(e−jω )| = |H(ejω )|; ϕ(−ω) = −ϕ(ω) Filtrele FIR pot avea o caracteristic˘a de faz˘a liniar˘a prin obligarea funct, iei pondere h[n] s˘a prezinte proprietatea de simetrie sau de antisimetrie fat, a˘ de axa sa central˘a. ”Filtrele FIR sunt aproape ˆıntotdeauna restrictionate la implement˘ari discrete. Prin urmare, metodele de proiectare pentru filtrele FIR sunt bazate pe tehnici de aproximare direct˘a a r˘aspunsului ˆın frecvent, a˘ dorit. Mai mult, cele mai multe tehnici pentru pentru aproximarea magnitudinii r˘aspunsului unui sitem FIR ˆıncearc˘a s˘a aib˘a o faz˘a constant˘a, astfel evitˆand problema factoriz˘arii spectrului care complic˘a designul filtrelor IIR.” (Oppenheim et al., 1999) Caracteristica de faz˘a linear˘a este foarte tentant˘a deoarece ca inginer nu pot aprecia efectul oric˘arui zgomot introdus asupra semnalului ECG. Folosind ”Filter Design and Analysis Tool” din cadrul Matlab am comparat filtre FIR de diverse ordine.
Figure 4.1: Caracteristica de modul a unui filtrul FIR de ordinul 10, proiectat folosind o fereastr˘a gausian˘a. Experimental am observat ( dup˘a cum se vede poate observa ˆın figura 4.3 ) c˘a este necesar un filtru de ordin cel put, in 1800 pentru a obt, ine o atenuare satisf˘ac˘atoare. Schimbarea tipului de fereastr˘a folosit la proiectare nu a ajutat la reducerea gradului filtrului. Experimentˆand cu diverse alte tehnici de proiectare rezultatele au fost similare. Un astfel de filtru este impractic pentru o aplicat, ie de timp. Resursele consumate s, i ˆıntˆarzierea introdus˘a nu sunt acceptabile. Exist˘a totus, i metode de reducere a ordinului filtrului, precum insert, ia de zerouri ˆın filtru sau alternarea ratei de es, antionare dar ele nu sunt scopul acestei lucr˘ari. 24
Figure 4.2: Caracteristica de modul a unui filtrul FIR de ordinul 100, proiectat folosind o fereastr˘a gausian˘a.
Figure 4.3: Caracteristica de modul a unui filtrul FIR de ordinul 1800, proiectat folosind o fereastr˘a gausian˘a.
4.1.2.
Filtru IIR
Filtrele cu r˘aspuns infinit la impuls(RII ˆın romˆan˘a sau IIR ˆın englez˘a) se dovedesc ˆın anumite aplicat, ii mai avantajoase decˆat filtrele FIR datorit˘a faptului c˘a pot realiza caracteristici de selectivitate excelente cu un ordin mult mai mic al funct, iei de transfer. Spre deosebire de filtrele FIR, filtrele IIR nu pot avea caracteristic˘a de faz˘a linear˘a. Imposibilitatea realiz˘arii unei faze liniare are implicat, ii ˆın ceea ce prives, te proiectarea filtrelor IIR, ˆın sensul c˘a acesta presupune fie aproximarea simultan˘a atˆat a specificat, iilor pentru caracteristica de amplitudine cˆat s, i a celor referitoare la faz˘a, fie corect, ia ulterioar˘a a distorsiunilor de faz˘a ˆın ipoteza c˘a proiectarea s-a bazat numai pe aproximarea caracteristicii de amplitudine. Exist˘a un singur tip de filtru IIR la care una din cele dou˘a caracteristici este constant˘a ( filtrul trece tot ). Filtrul IIR este descris ˆın domeniul timp prin ecuat, iile cu diferent, e finite: y[n] =
M X
bi x[n − i] −
i=0
N X i=1
25
ai y[n − i]
ˆIn aceast˘a situat, ie funct, ia de transfer devine M P
H(z) =
bi z −i
i=0 N P
1+
ai z −i
i=1
ˆın care s-a presupus c˘a a0 = 1.
Proiectarea unui filtru digital IIR const˘a ˆın determinarea coeficient, ilor ai s, i bi astfel ˆıncˆat r˘aspunsul la impuls al acestuia sau r˘aspunsul ˆın frecvent, a˘, H(ejω ), s˘a aproximeze ˆıntr-un anumit mod specificat, iile ˆın timp discret sau ˆın frecvent, a˘ impuse la proiectare. Domeniul ˆın care este rezolvat˘a problema aproxim˘arii (timp sau ˆın frecvent, a˘) este determinat de aplicat, ia specific˘a. Am ˆıncercat filtrarea variat, iei componentei continue folosind un filtru IIR de tip Cebasev. Din p˘acate, faza nelinear˘a a acestuia a produs rezultate dorite. Dup˘a cum se observ˘a din figura 4.5 distorsiunile produse sunt prea mari. Din acest mtiv am c˘autat alt˘a metod˘a de filtrare a zgomotului.
Figure 4.4: Caracteristica de modul a unui filtrul IIR de ordinul 3, de tip Cebasev.
4.1.3.
Forward-backward IIR filtering
Avem nevoie de un filtru de ordin suficient de mic care sa nu distorsioneze semnalul. O metoda prin care putem obt, ine acest lucru este renunt, aˆnd la timpul real s, i acceptarea ˆın schimb a unui timp pseudo-real care s˘a produc˘a rezultate dorite. Aici intervine tehnica de filtrare numit˘a ”forward-backward IIR filtering”, o tehnic˘a neacauzal˘a care produce o filtrare de faz˘a zero. Implementarea unei astfel de filtru implic˘a trei pas, i: 26
Figure 4.5: Eliminarea variat, iei componentei continue cu doua tipuri de filtre. Cu albastru avem un filtru care nu produce distorsiuni (prin metoda forward-backwords IIR filtering) iar cu ros, u avem un filtru IIR de tip Cebasev. ˆIn stˆanga avem semnalul ˆın domeniul timp iar ˆın dreapta avem semnalul ˆın domeniul frecvent, a˘. 1. Filtrarea semnalului original cu un filtru de tip IIR . y1 [n] = h[n] ∗ x[n] 2. Inversarea rezultatului s, i trecerea acestuia din nou prin filtru. y2 [n] = h[n] ∗ y1 [−n] 3. Inversarea din nou a semnalului obt, inut. y3 [n] = y2 ] − n] Tot ˆın figura 4.5 se pot observa rezultatele filtr˘arii folosind aceast˘a tehnic˘a. Des, i aceasta este o tehnic˘a destinat˘a ˆın special prelucr˘arii offline, ea se poate utilza s, i online, acceptˆand o ˆıntˆarziere a semnalului. Pentru implementare, am ales s˘a folosesc ˆın continuare aceast˘a tehnic˘a.
4.2.
Zgomotul de ret, ea
Din cauza faptului c˘a tensiunile ce se afl˘a la suprafat, a corpului uman au o amplitudine foarte mic˘a, acestea pot fi foarte us, or perturbate de zgomotul de ret, ea. 27
Chiar dac˘a dispozitivul ar fi alimentat folosind o baterie, numeroasele dispozitive ce sunt ˆın momentul de fat˘a conectate la ret, eaua electric˘a pot crea interferent, e ce ar afecta sistemul. Din acest motiv am ˆıncercat cˆateva metode de a filtra acest zgomot. ˆIn proiectarea filtrelor s-a urm˘arit minimizarea artefactelor introduse de c˘atre filtru, p˘astrarea caracteristicii de timp real s, i eliminarea cˆat mai eficient˘a a zgomotelor.
Figure 4.6: Semnalul achizitionat de la primul prototip al EKG-ului. Dup˘a cum se vede, este foarte perturbat de c˘atre zgomotul de ret, ea. Din p˘acate, ˆın Romˆania frecvent, a ret, elei de alimentare variaz˘a destul de mult s, i se poate observa c˘a avem zgomot de la aproximativ 47Hz pˆan˘a pe la 53Hz. Acest lucru se datoreaz˘a s, i faptului c˘a es, antionarea nu este f˘acut˘a cu precizie infinit˘a. Ideal ar fi ca filtrul proiectat s˘a elimine toate aceste frecvent, e parazite, dac˘a nu s˘a elimine m˘acar componenta cea mai puternic˘a, centrat˘a la 50Hz. Se pot observa de asemenea cˆateva armonice 100Hz s, i la 150Hz. Acestea au intensitate mai mic˘a s, i des, i ar fi ideal s˘a le elimin˘am, acest lucru nu este ˆın mod obligatoriu necesar. ˆIn continuare sunt prezentate trei tipuri de filtre. Primul filtru a fost creat prin alocarea manual˘a a polilor s, i a zerourilor, al doi filtru este bazat pe extragerea unei sinusoide de frecvent, a˘ egal˘a cu ret, eaua din semnal iar al treilea filtru este creat folosind funt, ia cheby1 ˆın Matlab.
4.2.1.
Filtru linear - alocare manuala a zerourilor s, i polilor
O prim˘a metod˘a simpl˘a de filtrare poate fi realizat˘a folosind un filtru linear ˆın care se amplaseaz˘a doua zerouri, complex conjugate pe cercul unitate la pozit, ia corespunz˘atoare 28
Figure 4.7: Zerourile s, i polii filtrului de 50 Hz. pentru 50Hz, dup˘a cum este sugerat ˆın (Prandoni and Vetterlli, 2008) ( sau 60Hz dac˘a ne-am fi aflat ˆın America). z1,2 = e±jω0 Filtrul creat opres, te o banda destul de larga, din acest motiv este necesar ad˘augarea unei perechi de poli complex conjugat, i ˆın apropierea zerourilor cu o raza mai mica decˆat a acestora. Cu cˆat se apropie raza polilor de cercul unitate cu atˆat lungimea benzii va scade.
p1,2 = re±jω0 Obt, inem astfel un filtru de ordin 2 stabil cu urm˘atoarea funct, ie de transfer.
H(z) =
(1 − z1 z −1 )(1 − z2 z −1 ) (1 − p1 z −1 )(1 − p2 z −1 )
Din p˘acate, dup˘a cum se poate observa din funct, ia pondere, filtrul nu are un timp tranzitoriu foarte bun s, i poate s˘a produc˘a zgomot ce ar putea deteriora semnalul. Am testat filtrul pe un semnal de ECG corupt cu zgomot de 50Hz iar dup˘a mai multe ˆıncerc˘ari, am g˘asit o valoare acceptabil˘a pentru raza r a polilor.
Dup˘a cum se observa din figura 4.10 filtrul nu ofer˘a rezultate foarte bune dup˘a un complex QRS, ba chiar creaz˘a oscilat, ii similare cu cele care apar atunci cˆand se
29
Figure 4.8: Functia pondere a filtrului proiectat. l
Figure 4.9: Caracteristica de modul a filtrului proiectat.
30
Figure 4.10: Rezultatul filtrarii in apropierea unui complexului QRS. Verde reprezint˘a semnalul original iar albastru reprezint˘a semnalu filtrat. repolarizeaz˘a ventricolii (unda T). De asemenea se poate observa ca zgomotul de ret, ea nu a fost ˆın totalitate eliminat. Rezultate similare am obt, inut folosind funct, ia ”butter” din Matlab. Cres, terea ordinului filtrului (s, i implicit a num˘arului de poli din jurul zeroului) nu a ajutat, observˆandu-se ˆın continuare perturbat, ii la sfˆars, itul complexului QRS. Din acest motiv, am ˆıncercat s˘a implementez un alt tip de filtru, filtru detaliat ˆın lucrarea (S¨ornmo and Laguna, 2005)
4.2.2.
Filtru linear - Cebˆ as, ev
Filtrele Cebˆa¸sev de tipul I sunt filtre polinomiale , avˆand o caracteristic˘a de modul cu ripluri egale ˆın banda de trecere s, i monoton descresc˘atoare ˆın banda de oprire. Dintre toate filtrele polinomiale de ordinul N, filtrele Cebˆa¸sev de tipul I au zona de tranzit, ie cea mai ˆıngust˘a. ˆIn banda de oprire, caracteristica monoton descresc˘atoare a modulului funct, iei de transfer realizeaz˘a o aproximare de tip maxim plat a valorii ideale zero, deoarece toate derivatele sale se anuleaz˘a pentru ω → ∞ . Panta de c˘adere a caracteristicii este cu atˆat mai mare cu cˆat ordinul filtrului este mai mare, iar pentru dou˘a filtre de acelas, i ordin panta este mai abrupt˘a pentru cel cu ripluri mai mari ˆın banda de trecere. Performant, ele filtrului sunt complet precizate de parametrul ce fixeaz˘a m˘arimea riplului ˆın banda de trecere ¸si de ordinul N ce determin˘a cˆat de abrupt˘a este caracteristica de modul (sau atenuare). Dup˘a cum se observ˘a din figur˘a, rezultatele sunt us, or ˆımbun˘at˘at, ite. Artefactele ap˘arute imediat dup˘a complexul QRS sunt mai mici iar atenuarea frecvent, ei nedorite este 31
Figure 4.11: Functia pondere a filtrului proiectat.
Figure 4.12: Caracteristica amplitudine-pulsat, ie.
32
Figure 4.13: Rezultatul filtrarii in apropierea unui complex QRS. Verde reprezint˘a semnalul original iar albastru reprezint˘a semnalu filtrat. mult mai bun˘a Des, i acest filtru nu a obt, inut cele mai bune rezultate, putem considera c˘a semnalul este acceptabil. Aceasta este o variant˘a care ar putea fi implementat˘a foarte us, or iar artefactele introduse ar fi neglijabile. Am explorat totus, i s, i alt˘a variant˘a pentru eliminarea zgomotului de ret, ea.
4.2.3.
Filtru neliniar
Ideea care st˘a la baza acestui filtru este sc˘aderea unei sinusoide generate de c˘atre filtru din cadrul semnalului. Amplitudinea sinusoidei este adaptata continuu ˆın funct, ie de zgomotul ret, elei electrice. Sinusoida intern˘a este generat˘a de c˘atre urm˘atoarea ecuat, ie.
v[n] = A ∗ sin(wo n) Pentru a genera recursiv sinusoida, avem nevoie de un sistem discret, simplu, de forma urm˘atoare. (S¨ornmo and Laguna, 2005)
H(z) =
1 1 − 2cosω0 z −1 + z −2
Obt, inem astfel urm˘atoarea ecuat, ie de recurent, a˘. 33
v[n] = 2cosω0 v[n − 1] − v[n − 2] + u[n] Cu condit, iile init, iale v[-1]=v[-2] = 0 s, i intrarea u[n] = δ[n].
Pentru a adapta constant amplitudinea semnalului, avem nevoie de o funct, ie de eroare care ne va indica cum trebuie s˘a ajust˘am sinusoida generat˘a.
e[n] = x[n] − v[n] Dac˘a ˆın prealabil nu a fost filtrat˘a componenta continu˘a a semnalului, pentru a nu fi afectata calculul, se poate folosi derivata erorii, care poate fi calculat˘a folosind o sc˘adere. 0
e [n] = e[n] − e[n − 1] = x[n] − v[n] − x[n − 1] + v[n − 1] Obt, inem astfel urm˘atoarea ecuat, ie de actualizare. 0
0
v [n] = v[n] + αsgn(e [n])
Unde prin valoarea lui alpha putem seta vitez˘a de convergent, a˘ a sinusoidei generate intern. Similar cu alte metode iterative ( exemplu: metode de tip gradient), o valoare prea mic˘a pentru alpha va seta un pas prea mic, iar viteza de convergent, a˘ va fi prea mic˘a, iar un pas prea mare poate face ca algoritmul s˘a sare peste valoarea optim˘a, f˘acˆand convergent, a imposibil˘a. Experimentˆand, am observat un comportament foarte bun cu alpha la valoarea de 0.1 pentru semnalele din baza de date a celor de la MIT s, i o valoare de 40 pentru semnalul obt, inut de la EKG-ul nostru. Spre deosebire de filtrul IIR, nu apar artefacte ˆın jurul complexului QRS. Din p˘acate, filtrul fiind neliniar, analiza lui este mult mai grea decˆat a celui linear. ˆIn acest caz, nu dispunem de unelte precum in Matlab precum fvtool care us, ureaz˘a foarte mult proiectarea filtrului. Dac˘a se dores, te, pentru liniarizarea filtrului se poate ˆınlocui ecuat, ia de actualizare a amplitudinii erorii cu una linear˘a. 0
0
v [n] = v[n] + αe [n]
Se poate observa din figura 4.10 c˘a performant, ele sunt cu mult ˆımbun˘at˘at, ite. Atenuarea este aproape perfect˘a iar semnalul este recuperat. ˆIn literatura de specialitate exist˘a tehnici mai inteligente dar ˆıntrucˆat momentan performant, ele sunt foarte bune iar
34
Figure 4.14: Rezultatul filtrarii cu filtru de 50 de Hz a semnalului real(obt, inut de la prototipul de EKG). Cu verde avem semnalul brut obt, inut de la EKG iar cu ros, u avem semnalul filtrat cu fitrul nelinear puterea de calcul necesar˘a este relativ mic˘a, am decis ca pentru partea de implementare s˘a m˘a opresc aici. Ulterior am testat s, i pe prototip. Dup˘a cum se poate vedea din figura 4.14 rezultatul filtrarii semnalului de pe prototip este acceptabil. Des, i semnalul obt, inut de c˘atre noi are zgomot s, i ˆın vecin˘atatea frecvent, ei de 50Hz, se pare c˘a acestea nu sunt foarte deranjante. Am ales ca ˆın varianta final˘a a proiectului s˘a implementez acest tip de filtru deoarece nu introduce nici un fel de perturbat, ii.
4.3.
Filtru Savitzky-Golay
Exist˘a totus, i s, i imperfect, iuni pe care filtrele proiectate anterior nu reus, esc s˘a le elimine. Aici intervine filtrul Savitzky-Golay pentru netezirea datelor. Acest filtru a fost pentru prima dat˘a descris ˆın anul 1964 de c˘atre Savitzky s, i Golay ˆın lucrarea ”Soothing and differentiation of data by simplified least squares procedures” ˆın jurnalul ”Analytical Chemistry”. Acestia aveau nevoie de un filtru pentru a netezii datele achizit, ionate ˆın urma a diverse experimente de chimie. Ulterior s-a dovedit c˘a acest tip de filtru poate fi folosit cu succes s, i ˆın prelucrarea datelor de la electrocardiogram˘a s, i inevitabil acesta a devenit indispensabil pentru aplicat, ii similare. Acest tip de filtru se bazeaz˘a pe ideea aproxim˘arii ˆın sensul celor mai mici p˘atrate a unor buc˘at, i din semnal. Potrivirea unui polinom la un set de date de intrare s, i apoi evaluarea polinomului rezultat la un singur punct ˆın cadrul intervalului de aproximare este echivalent cu filtrarea cu un filtru FIR. Filtrul trece-jos obt, inut prin aceast˘a metod˘a 35
sunt foarte cunoscute ˆın unele sectoare ca filtre Savitzky-Golay. Savitzky s, i Golay au reus, it s˘a netezeasc˘a datele cu zgomot obt, inute ˆın urma analizei spectrale chimice, s, i au demonstrat c˘a netezirea ˆın sensul celor mai mici p˘atrate reduce zgomotul ment, inˆand forma s, i ˆın˘alt, imea vˆarfurilor semnalului . Unii cercet˘atori au recunoscut important, a propriet˘at, ii de conservare a vˆarfurilor semnalului ˆın diverse aplicat, ii medicale. De asemenea conceptul de baz˘a de netezire polinomial˘a ˆın sensul celor mai mici p˘atrate a fost extins la dou˘a dimensiuni s, i aplicat la procesarea imaginilor cum ar fi cele obt, inute prin ultrasunete sau radar. Ideea de baz˘a din spatele aproxim˘arii polinomiale ˆın sensul celor mai mici p˘atrate este prezentat˘a ˆın figura 4.15, care arat˘a o secvent, a˘ de es, antioane x[n] ale unui semnal ca puncte pline. Considerˆand pentru moment grupul de 2M + 1 es, antioane centrate la n=0, vrem s˘a obt, inem coeficient, ii polinomului
p(n) =
N X
ak n k
k=0
care minimizeaz˘a eroarea ˆın sensul celor mai mici p˘atrate a grupului de es, antioane centrate la n=0, M M N X X X N = (p(n) − x[n])2 = ( ak nk − x[n])2 n=−M
n=−M k=0
Analiza este aceeas, i pentru orice alt grup de 2M + 1 es, antioane de intrare. ˆIn figura 4.15, unde N=2 s, i M=2, linia plin˘a este polinomul p(n) evaluat ˆıntre punctele -2 s, i +2, s, i ies, irea netezit˘a este obt, inut˘a evaluˆand p(n) la punctul central n=0. As, adar, y[0], ies, irea la momentul y[0], este y[0] = p(0) = a0 prin urmare valoarea de ies, ire este egal˘a cu coeficientul de ordin zero al polinomului. ˆIn general, intervalul de aproximarea nu trebuie s˘a fie ˆın mod necesar simetric punctului ˆın care se face evaluarea. Acest lucru conduce la filtre cu faz˘a nelinear˘a, care pot fi utile pentru netezirea la sfˆars, itul secvent, elor de dimensiune finit˘a. Ies, irea la urm˘atorul es, antion este obt, inut prin mutarea intervalului de analiz˘a la dreapta cu un es, antion, redefinind originea la pozit, ia mijlocului noului bloc de date de dimensiune 2M+1, s, i repetˆand aproximarea polinomial˘a s, i evaluˆand ˆın pozit, ia central˘a. Derivˆand eroarea ˆın funct, ie de coeficient, ii polinomului obt, inem un set de ecuat, ii care pot fi rezolvate atˆat timp cˆat lungimea ferestrei este mai mare decˆat gradul polinomului. Pentru a obt, ine totus, i o netezire, este necesar ca gradul polinomului s˘a fie mult mai mic decˆat lungimea ferestrei. Ajungem astfel la o ecuat, ie normal˘a. a = (A| A)−1 A| x = Hx Pentru aflarea coeficient, ilor filtrului se poate rezolva ecuat, ia normal˘a specific˘a num˘arului de es, antioane s, i gradului polinomului sau se pot afla aceste date din tabele. Matlab ofera de asemenea o funct, ie sgolay pentru aflarea coeficient, ilor. 36
Figure 4.15: Imagine obt, inut˘a din (Schafer, 2011).Ilustrare a netezirii folosind cele mai mici p˘atrate prin potrivirea unui polinom de gradul doi la cinci esantioane de intrare. Cu puncte pline sunt notate es, antioanele de intrare, cu punctele goale sunt notate ies, irile filtrului iar cu x r˘aspunsul la impuls a filtrului
Figure 4.16: Rezultatele filtr˘arii a datelor achizit, ionate. Am folosit o fereastr˘a de 31 de es, antioane s, i un polinom de gradul 7.Cu albastru semnalul nefiltrat iar cu ros, u cel filtrat.
37
ˆIn urma filtr˘arii datelor, se poate observa atenuarea semnificativ˘a a frecvent, elor ˆınalte, f˘ar˘a a se pierde informat, ii utile din cadrul semnalului. Se observ˘a cum forma s, i ˆın˘alt, imea au fost conservate iar zgomotul de frecvent, a˘ ˆınalt˘a a fost eliminat. Dac˘a dorim, putem mics, ora gradul polinomului pentru a obt, ine o netezire mai pronunt, at˘a. Din p˘acate, acest lucru poate duce la pierderea de date utile, precum ˆın˘alt, imea undei R.
38
5. Detect, ia caracteristicilor Electrocardiograma este un element ce poate oferi foarte multe informat, ii despre starea de s˘an˘atate a unui pacient. Num˘arul de b˘at˘ai pe minut este cel mai important factor, care poate indica dac˘a pacientul este ˆıntr-un risc imediat, precum tahicardie sau bradicardie, dar exist˘a multe alte elemente care pot oferi informat, ii relevante despre condit, ia inimii. ˆIn mod normal, acestea sunt m˘asurate pe hˆartie milimetric˘a de c˘atre un medic cardiolog, dar progresul tehnologic din ultimii ani a f˘acut posibil detect, ia automat˘a a unor num˘ar semnificativ de elemente. Mult, i algoritmi pentru monitorizarea ritmului cardiac sunt bazat, i pe detect, ia complexului QRS apoi calcularea distant, ei dintre aceste complexe. Complexele QRS pot fi detectate de exemplu algoritmi din sfera ret, elelor neuronale artificiale, algoritmi genetici, undine sau bancuri de filtre.
5.1.
Detect, ia complexului QRS
Detect, ia complexului QRS este un element ce poate oferii date foarte importante despre starea de s˘an˘atate a pacientului. M˘asurarea acestuia este folosit˘a ˆın multe aplicat, ii medicale sau aplicat, ii sportive cum ar fi teste de stres sau predict, ia situat, iilor ce pot amenint, a viat, a. O metod˘a de a obt, ine ritmul cardiac este de a-l extrage din semnalul ECG.ˆIn momentul de fat, a˘ exist˘a mai multe tehnici s, i algoritmi care pot fi utilizat, i. Detect, ia complexului QRS este ˆın general destul de greu de realizat, nu doar din cauza variat, iei amplitudinii complexului, dar s, i din cauza zgomotului care poate afecta semnalul. Surse de zgomot precum mus, chii, artefacte produse de mis, carea electrozilor, interferent, a ret, elei electrice, variat, ia componentei continue, sau unde T de frecvent, a˘ ˆınalt˘a similar cu cea a complexului. Majoritatea tehnicilor pentru detect, ia intervalelor importante din cadrul ECG-ului se bazeaz˘a pe detect, ia ˆın prealabil a complexului QRS. ˆIn funct, ie de pozit, ia acestuia se poate estima cu o precizie relativ bun˘a locat, ia celorlalte unde de interes. Din acest motiv, trebuie ales un algoritm cu o precizie cˆat mai bun˘a.
39
5.1.1.
Algoritmul Pan-Tomkins
Des, i algoritmul Pan-Tomkins este relativ vechi (a fost publicat ˆın martie 1985), acesta este foarte eficient ˆın detect, ia complexului QRS. Este un algoritm ˆın timp real, cu o precizie de 99,3 pe baza de date MIT. Acesta foloses, te filtre simple s, i necesit˘a putere de procesare foarte mic˘a, lucru dovedit de faptul c˘a init, ial acesta a fost implementat pe un microprocesor Z80 produs de c˘atre compania Zilog. O referint, a˘ pentru implementarea acestuia se poate g˘asi ˆın (Lascu and Lascu, 2007) Pentru a implementa acest algoritm este necesar s˘a trecem semnalul mai ˆıntˆai printr-un filtru trece-jos, apoi printr-un filtru trece-sus. Dup˘a aceea semnalul trebuie derivat, apoi ridicat la p˘atrat s, i ˆın cele din urm˘a integrat pe 150ms. Filtru trece-banda Filtru trece band˘a are ca principal scop reducerea influent, ei zgomotului produs de c˘atre mus, chi, a celui introdus de ret, eaua electric˘a, a variat, iei componentei continue s, i a undei T. Banda de trecere uzual˘a pentru a face acest lucru este de 5-15Hz. Pentru a implementa acest lucru, am folosit dou˘a filtre Cebˆas, ev de ordin 3 cu riplu setat la 0.1 . Derivativa Dup˘a filtrare, semnalul este derivat pentru a afla informat, ia necesar˘a despre pant˘a. Derivata de ordin ˆıntˆai se comport˘a bine dar folosind derivata de ordin doi, se pot obt, ine rezultate mai bune. Ridicarea la p˘ atrat Dup˘a derivare, semnalul este ridicat la p˘atrat ˆın fiecare punct. Acest lucru face ca toate punctele s˘a fie pozitive s, i amplific˘a frecvent, ele pozitive scoase de derivare. Integrarea Scopul integr˘arii este de a obt, ine informat, ii despre forma de und˘a, pe lˆang˘a cea legat˘a de panta undei R. ˆIn general lungimea intervalului pe care se face integrarea trebuie s˘a fie egal˘a ca lungimea complexului QRS
Figure 5.1: Schema bloc a algoritmului Pan-Tomkins Ajustarea pragului 40
Dup˘a ce au fost efectuate toate aceste operat, ii asupra semnalului, este necesar g˘asirea unui prag de la care putem spune c˘a a fost detectat un complex QRS. Acesta trebuie ajustat permanent ˆın funct, ie de semnalul de la EKG, pentru a obt, ine rezultate acceptabile. Exist˘a multe tehnici inteligente pentru a determina acest prag dar se pare c˘a dac˘a aplic˘am o fereastr˘a dreptunghiular˘a pe ultimele es, antioane, apoi facem o medie, obt, inem o valoare acceptabil˘a. Fereastra este absolut necesara deoarece primele es, antioane ale filtr˘arii vor avea o valoare foarte mare iar acest lucru va seta pragul la o valoare nerealist˘a. ˆIn concluzie, pot spune c˘a acest algoritm ofer˘a rezultate foarte bune s, i are marele avantaj c˘a funct, ioneaz˘a ˆın timp real. Din p˘acate, el nu ne poate ajuta s˘a determin˘am cu exactitate pozit, ia undei R. De aceea, ˆın continuare am ales s˘a explorez s, i alte metode pentru a determina acest lucru.
Figure 5.2: Rezultatul ˆın urma proces˘arii semnalului cu algoritmul Pan-Tomkins. Dup˘a cum se vede, este necesar˘a aplicarea unei ferestre pentru a determina un prag. ˆIn aplicat, ia final˘a ˆın Labview, am folosit acest algoritm pentru a afis, a ˆın timp real intervalul R-R s, i implicit num˘arul de b˘at˘ai pe minut. De asemenea, am folosit acest algoritm s, i pentru a produce un efect sonor de fiecare dat˘a cˆand este detectat˘a o b˘ataie a inimii.
5.1.2.
Transformata Fourier de timp scurt
Transformata Fourier clasic˘a este o unealt˘a foarte util˘a pentru analiza spectrului unui semnal dar din p˘acate nu poate oferi informat, ii despre pozit, ia ˆın timp a acestor frecvent, e. Dac˘a semnalul este nestat, ionar, transformata nu mai ofer˘a informat, ii satisf˘ac˘atoare. Pentru a rezolva problema semnalelor nestat, ionare Dennis Gabor(1946) a venit cu urm˘atoarea solut, ie. Putem presupune c˘a unele port, iuni ale semnalului sunt stat, ionare. 41
Acest lucru este realizat alegˆand o fereastr˘a pentru care va fi aplicat˘a transformata Fourier. Fereastra este mutat˘a dea lungul ˆıntregului semnal s, i ˆın fiecare pozit, ie noua este aplicat˘a o nou˘a transformat˘a. Prin aceast˘a metod˘a obt, inem informat, ie atˆat despre frecvent, a dar cˆat s, i despre momentul de timp la care sunt ˆıntˆalnite acestea. STFT reprezint˘a un fel de compromis ˆıntre timp s, i frecvent, a˘ a vederii asupra semnalului. Ofer˘a informat, ii atˆat despre ce frecvent, e apar cˆat s, i despre cˆand apar acestea. Din p˘acate, aceste informat, ii se pot obt, ine cu precizie limitat˘a iar precizia este determinat˘a de lungimea ferestrei. ˆIn general pentru analiza acestui tip de semnal este utilizat˘a o fereastr˘a Hanning de 3,4s. Des, i compromisul STFT dintre timp s, i frecvent, a˘ poate fi util, dezavantajul este dat de faptul c˘a odat˘a aleas˘a dimensiunea ferestrei, aceasta va fi aceeas, i pentru toate frecvent, ele. Multe semnale necesit˘a o abordare mai flexibil˘a, una ˆın care se poate varia lungimea ferestrei pentru a determina mai cu acuratet, e fie timpul, fie frecvent, a.
Figure 5.3: Aplicarea ferestrei in cazul STFT.
S˘a presupunem ca avem un semnal f(t) compus din mai multe frecvent, e s, i avˆand o caracteristic˘a nestat, ionar˘a. Abordarea folosit˘a este s˘a ˆımp˘art, im f ˆın port, iuni de lungime aproximativ egale s, i s˘a o analiz˘am pe fiecare ˆın mod individual. Aceast˘a analiz˘a are dezavantajul evident de a fi oarecum aleatorie, deoarece este imposibil s˘a afirm˘am c˘a o frecvent, a˘ aleas˘a ˆıncepe s, i cˆand se termin˘a. ˆIn funct, ie de natura semnalului, trebuie s˘a alegem o fereastr˘a de dimensiune corespunz˘atoare, iar acest lucru este destul de dificil. Informat, ie legat˘a de domeniul frecvent, ei s, i domeniul timp trebuie obt, inut˘a ˆın acelas, i timp. Prin urmare. ies, irea funct, iei rezultate depinde atˆat de timp cˆat s, i de frecvent, a˘. F˘acut faimos de c˘atre aplicarea lui ˆın mecanica cuantic˘a, principiul de incertitudine a lui Heisenberg poate fi formulat ˆın diferite moduri. Totus, i, indiferent de ce form˘a va lua, 42
esent, a este aceeas, i: m˘asurarea precis˘a a timpului s, i a frecvent, ei sunt ˆın mod fundamental incompatibile, deoarece frecvent, a nu poate fi m˘asurat˘a instantaneu. As, adar, dac˘a vrem s˘a afirm˘am c˘a un semnal are o frecvent, a˘ ω0 putem face acest lucru dac˘a observ˘am semnalul pentru un anumit moment de timp ( cu cˆat mai mare aceast˘a perioad˘a, cu atˆat putem afirma mai sigur acest lucru). As, adar nu putem specifica cˆand exact un semnal are o anumit˘a frecvent, a˘, ci doar un interval pentru acest lucru. ˆIntr-o lucrare publicat˘a de doi tailandezi (Uchaipichat and Inban, 2010) , folosind STFT aces, tia afirm˘a c˘a au ajuns la o precizie de 99”%” pe baza de date MIT-BIH. Acest lucru dovedes, te faptul c˘a metoda are performant, e suficient de bune.
5.1.3.
Undine
Transformata Fourier de timp scurt este o unealt˘a foarte util˘a pentru analiza timp frecvent, a˘ a semnalelor biomedicale dar din p˘acate are un defect foarte mare. Lungimea ferestrei limiteaz˘a rezolut, ia ˆın frecvent, a˘ a acesteia. O alternativ˘a a transformatei Fourier este transformata wavelet (sau undin˘a ˆın romˆan˘a) ”Transformata undine a fost recunoscut˘a ˆın ultimii ca o puternic˘a unealt˘a pentru analiza timp-frecvent, a s, i codarea semnalelor, preferat˘a pentru interogarea semnalelor nestat, ionare complexe. Aplicarea ei ˆın domeniul prelucr˘arii semnalelor biologice poate fi considerat principalul motiv pentru acest lucru.”(Addison, 2005) Transformata undine a fost aplicat˘a cu succes la o gam˘a foarte larg˘a de semnale biomedicale, printre care se num˘ar˘a EMG-ul, EKG-ul, EEG-ul, analiza respirat, iei, analiza variat, iei presiunii sˆangelui, analiza ADN. De asemenea, undinele au fost utilizate cu succes s, i pentru compresia datelor. Dovada a acestui lucru st˘a ˆın faptul c˘a baza de date a FBI-ului este comprimat˘a folosind undine. Transformata undine folosita ˆın prezent se ˆımparte ˆın dou˘a mari categorii: transformata continu˘a undine s, i transformata discret˘a undine. Des, i principiul care st˘a la baza acestora este acelas, i, diferent, a dintre aceste transformate este foarte mare. Transformata continu˘ a - CWT Transformata continu˘a undine (CWT) este o metod˘a de analiz˘a timp-frecvent, a care difer˘a de tradit, ionala STFT prin faptul c˘a permite localizarea precis˘a ˆın timp a frecvent, elor ˆınalte. Transformata continu˘a undine a unui semnal continuu x(t) poate fi definit˘a ˆın felul urm˘ator. Z+∞ t−b 1 ∗ x(t)ψ dt T (a, b) = √ a a −∞ ∗
unde ψ este complex conjugatul funct, iei de analiz˘a ψ,variabila a este denumit˘a parametru de scal˘a (factor de scal˘a), iar variabila b parametru de translat, ie.Variabila a joac˘a rolul inversului frecvent, ei: cu cˆat a este mai mic˘a funct, ia wavelet este mai ˆıngust˘a ¸si frecvent¸a central˘a a spectrului s˘au este mai mare. Pentru a fi clasificat ca o undin˘a, o funct, ie trebuie s˘a ˆındeplineasc˘a anumite criterii. Acestea sunt: 43
(1) Trebuie s˘a aib˘a energie finit˘a: Z+∞ |ψ|2 dt < inf ty E= −∞
(2) Nu trebuie s˘a cont, in˘a o component˘a continu˘a, adic˘a transformata Fourier a acestuia s˘a aib˘a valoarea 0 ˆın origine. (3) Pentru undine complexe, transformata Fourier trebuie s˘a fie real˘a s, i s˘a nu cont, in˘a valori negative.
Figure 5.4: Aplicarea CWT asupra semnalului Figura 5.4 a fost obt, inut˘a aplicˆand transformata continu˘a undine (folosind o undin˘a de tipul ”haar”) asupra unui semnal EKG. Dup˘a cum se poate observa, au fost identificate undele R ca avˆand frecvent, a mult mai ˆınalt˘a decˆat restul undelor. Des, i ofer˘a rezultate foarte bune, acest tip de transformat˘a este destul de lent˘a s, i din acest motiv este mai des utilizat˘a transformata discret˘a. Transformata discret˘ a - DWT ”Fundat, iile transformatei discrete undine provin din 1976 cˆand Croiser,Esteban s, i Galand explorau metode pentru a descompune semnale 44
discrete. Crochiere, Weber s, i Flanagan au realizat un lucru similar ˆıncercˆand s˘a codifice semnalele audio ˆın acelas, i an.” (Polikar, 1999) Ideea de baz˘a este aceeas, i ca s, i la CWT. O reprezentare timp-scal˘a a unui semnal digital este obt, inut˘a folosind tehnici de filtrare digital˘a. Transformata continu˘a a fost calculat˘a schimbˆand scala ferestrei de analiz˘a, mutˆand fereastra ˆın timp, ˆınmult, ind-o cu semnalul s, i integrˆand peste tot timpul. ˆIn cazul discret, filtre cu diferite frecvent, e de t˘aiere sunt folosite pentru a analiza semnalul la diferite scale. Semnalul este pasat print-o serie de filtre trece-jos pentru a analiza frecvent, ele joase s, i printr-o serie de filtre trece-sus pentru a analiza frecvent, ele ˆınalte. Rezolut, ia semnalului, care este o m˘asur˘a a cˆat de detaliat este semnalul, este schimbat de operat, ia de filtrare iar scalarea este schimbat˘a de c˘atre interpolare s, i decimare.
Figure 5.5: Rezultatul c˘aut˘arii vˆarfului undei R folosind undine. Se poate observa precizia foarte bun˘a a acestei metode. Tipul de undin˘ a utilizat ˆIn general este recomandat s˘a se utilizeze o undin˘a care s˘a aib˘a o form˘a similar˘a cu a complexului c˘autat. ˆIntr-un articol (Senhadji et al., 1995) este comparat˘a performant, a diferitelor tipuri de undine pentru g˘asirea undei R. Undinele de tipul Daubechies, spline s, i Morlet s-au dovedit foarte eficiente pentru acest lucru. Pentru a evita localizarea inexact˘a datorat˘a alegerii necorespunz˘atoare a undinei, am realizat o c˘autare a maximului pe ˆın proximitatea zonei suerate de c˘atre transformata undine.
45
5.2.
Detect, ia altor caracteristici
Exist˘a tehnici foarte avansate de detect, ie a diferitelor intervale din cadrul semnalului EKG dar majoritatea se bazeaz˘a pe detect, ia ˆın prealabil a undei R. Astfel, cu cˆat unda R este g˘asit˘a cu precizie mai bun˘a, cu atˆat s, ansele de identificare corect˘a a celorlalte caracteristici cres, te.
5.2.1.
Amplitudinea s, i pozit, ia Detect, ia undei P
Dup˘a ce am g˘asit vˆarful undelor R, am c˘autat la stˆanga pe un domeniu de 0.3 secunde pentru a g˘asi maximul. Aici m-am bazat pe faptul c˘a ˆın general, distant, a dintre unda P s, i unda R nu este mai mare de 0.2s. Pentru a fi sigur de faptul c˘a aceast˘a und˘a a fost g˘asit˘a, putem seta un prag minim de amplitudine. Dac˘a acesta und˘a nu a fost g˘asit˘a ˆın acest interval, pacientul este suspect de anumite afect, iuni, printre care se num˘ar˘a sindromul Wolff-Parkinson-White. Detect, ia undei Q Similar, dup˘a g˘asirea vˆarfurilor undelor R, am c˘autat la stˆanga pe un domeniu de 0.1 secunde pentru a g˘asi minimul. Detect, ia undei S ˆIn cazul ˆın care este util˘a detect, ia undei S, aceasta se poate determina printr-o metod˘a asem˘an˘atoare. ˆIntrucˆat nu am considerat unda relevant˘a, detect, ia acesteia nu a fost implementat˘a ˆın program. Detect, ia undei T Unda T este singura care poate crea probleme. Deoarece are o frecvent, a similar˘a cu a undei R, poate fi confundat˘a cu aceasta. Din fericire, aceasta are o amplitudine mult mai mic˘a decˆat unda R s, i dac˘a pragul pentru detect, ia undei R este setat corespunz˘ator, confuzia nu va avea loc. Pentru a detecta aceasta und˘a, am c˘autat la dreapta undei R, pe un interval de 0.3 secunde.
5.2.2.
Detect, ia intervalelor Dup˘a detect, ia pozit, iei fiec˘arui unde, putem ˆıncepe m˘asurarea intervalelor de
interes.
46
Figure 5.6: Rezultatul c˘aut˘arii celorlalte caracteristici. Cu ros, u sunt marcate vˆarful undelor R, cu verde vˆarful undelor P, cu galben undele Q, cu albastru undele S iar cu negru undele T Intervalul RR Intervalul RR este util pentru determinarea timpului ˆıntre dou˘a depolariz˘ari ale ventriculilor. Durata acestuia se m˘asoar˘a ca distant, a dintre dou˘a vˆarfuri consecutive ale undei R. Intervalul PP Intervalul PP este util pentru determinarea timpului ˆıntre dou˘a depolariz˘ari ale atriilor. Durata acestuia se m˘asoar˘a ˆıntre dou˘a vˆarfuri ale undei P. Intervalul PR Intervalul PR oferi informat, ii despre circulat, ia dintre atriu s, i ventricul. Determinarea acestuia este us, or mai dificil˘a deoarece trebuie determinat ˆın prealabil momentul ˆınceperii depolariz˘arii atriului s, i a depolariz˘arii ventriculului. Pentru a face acest lucru, este necesar˘a determinarea momentului ˆın care unda P ˆıncepe s˘a creasc˘a s, i a momentului ˆın care unda Q ˆıncepe s˘a scad˘a. Intervalul QT Pentru determinarea intervalului QT, este necesar determinarea momentului ˆınceperii depolariz˘arii ventriculului s, i momentul sfˆars, irii repolariz˘arii ventriculului. Pentru afla cest lucru, trebui s˘a g˘asim momentul ˆın care unda Q ˆıncepe s˘a scad˘a s, i momentul sfˆars, irii undei T. Durata undei P 47
Durata undei P ne poate oferi informat, ii despre starea atriului. Similar metodelor anterioare, se poate determina s, i acesta
48
6. Implementare Labview Dup˘a studiere a filtrelor s, i a diverselor tehnici de detect, ie a componentelor semnalului urmeaz˘a partea de implementare a celor descrise. Des, i init, ial am dorit s˘a fac init, ial implementarea ˆın Matlab, posibilit˘at, ile superioare de procesare s, i plotare ˆın timp real ale suitei de programe Labview m-au f˘acut s˘a migrez spre acesta. Pentru a facilita tranzit, ia ˆıntre cele dou˘a programe am folosit un modul de Labview numit MathScript RT Module. Acesta mi-a permis s˘a apelez de fiecare dat˘a cˆand am avut nevoie cod de Matlab. Astfel pentru a funct, iona corect, avem nevoie s˘a fie instalat atˆat Labview cˆat s, i Matlab.
Figure 6.1: Interfata Labview creata
6.1.
Structura programului
Pentru a obt, ine o procesare eficient˘a a semnalului EKG, programul a fost structurat ˆın urm˘atoarele etape: 1. Achizit, ia de date prin intermediul protocolului serial 2. Filtrarea zgomotului de ret, ea 49
3. Filtrarea prin intermediul filtrului Savitzky-Golay 4. Detect, ia b˘at˘ailor inimii cu ajutorul algoritmului Pan-Tomkins 5. Eliminarea variat, iei componentei continue 6. Detect, ia undelor R din cadrul semnalului 7. Detect, ia celorlalte intervale de interes
Figure 6.2: Schema bloc a programului Labview Achizit, ia de date prin intermediul protocolului serial Prima etap˘a, cea de achizit, ie de semnal prin intermediul protocolului serial putem spune c˘a este cea care face leg˘atura ˆıntre componenta hardware s, i cea software a sistemului. Pentru a nu avea probleme legate de ˆıntˆarzierea transmisiei, am folosit viteza de transmisie mare de 115200 bauds. Restul opt, iunilor au fost setate pe valorile implicite. Totus, i, pentru eventualele modific˘ari am inclus ˆın interfat, a posibilitatea de a modifica parametrii transmisiei. Filtrarea zgomotului de ret, ea Pentru filtrarea zgomotului de ret, ea am ales s˘a las la dispozit, ia utilizatorului alegerea tipului de filtru. Des, i filtrul neliniar s-a comportat cel mai bine pe semnalul simulat, exist˘a unele cazuri ˆın care frecvent, a ret, elei variaz˘a foarte mult. ˆIn aceste cazuri, filtrul Butterworth se comport˘a mult mai bine. Alegˆand unul din cele trei tipuri de filtre puse la dispozit, ie se poate elimina cu succes zgomotul. Dup˘a cum am ment, ionat ˆın capitolul 3, filtrul neliniar se comport˘a foarte bine atunci cˆand frecvent, a ret, elei de alimentare nu variaz˘a foarte tare. ˆIn acest caz, filtrul neliniar nu introduce zgomot dup˘a complexul QRS. Dac˘a ˆıns˘a frecvent, a ret, elei variaz˘a foarte mult, atunci un filtru de tip Butterworth sau Cebˆas, ev este de dorit. Din p˘acate, ˆın acest caz trebuie s˘a accept˘am perturbat, iile introduse de acesta. 50
Aplicarea filtrului Savitzky–Golay Dup˘a eliminarea zgomotului de ret, ea, a urmat aplicarea filtrului Savitzky-Golay. Cu ajutorul acestuia am reus, it s˘a netezesc semnalul rezultat. Din p˘acate, a trebuit s˘a realizez un compromis ˆıntre gradul de netezire s, i p˘astrarea formei originale a semnalului. Dac˘a fort, ez filtrul s˘a realizeze o netezire foarte agresiv˘a a datelor, atunci pierd s, i din amplitudinea undei R. Detect, ia b˘ at˘ ailor inimii cu ajutorul algoritmului Pan-Tomkins Folosind algoritmul Pan-Tomkins se pot detecta ˆın timp real b˘at˘aile inimii. Cu ajutorul acestui algoritm am putut realiza sunetul caracteristic al unui aparat EKG la fiecare aparit, ie a complexului QRS. Dac˘a acest sunet devine obositor, el poate fi oprit us, or cu ajutorul unui buton prezent ˆın interfat, a˘. Eliminarea variat, iei componentei continue Acest pas marcheaz˘a renunt, area la timpul real s, i acceptarea unui timp ”aproape real”. Pentru a face acest lucru, am aplicat tehnica ”forward-backward IIR filtering” pe ultimele 1000 de es, antioane achizit, ionate. Din p˘acate a trebuit s˘a elimin ultimele es, antioane, deoarece acestea au fost perturbate de c˘atre filtru. Detect, ia undelor R din cadrul semnalului Folosind transformata undine pe dou˘a nivele am putut s˘a detectez momentul ˆın care apare unda R. Pentru a nu instala un nou toolkit labview anume ”Advanced signal processing toolkit” am f˘acut acest lucru aproape ˆın totalitate ˆın Matlab, apelˆand scripturile create anterior. Detect, ia celorlalte intervale de interes Pe baza detect, iei undei R de c˘atre pasul anterior se face detect, ia s, i intervalele de interes. Acest lucru se face c˘autˆand ˆın proximitatea undei g˘asite.
6.2.
Rezultate filtrare
Filtrarea s-a dovedit a fi o parte esent, ial˘a a realiz˘arii EKG-ului care depinde foare mult de sistemul hardware folosit. Prin aceast˘a filtrare ˆıncerc s˘a elimin pe cˆat posibil imperfect, iunile care nu au putut fi eliminate de c˘atre filtrele analogice. Dup˘a ce am realizat filtrarea zgomotului de ret, ea, a urmat aplicarea filtrului Savitzky-golay iar ˆın cele din urm˘a am aplicat filtrul pentru eliminarea componentei continue. Rezultatele acestor operat, ii pot fi v˘azute ˆın figura 6.3.
51
Figure 6.3: Rezultatele finale ale filtr˘arii. Cu albastru este reprezentat semnalul original, nefiltrat iar cu ros, u este reprezentat semnalul final
6.3.
Interpretarea rezultatelor
Pe baza pozit, iei fiec˘arei unde g˘asite la anterior, se poate face o interpretare minimal˘a a st˘arii de s˘an˘atate a pacientului. Des, i acest sistem nu poate substitui un medic, el poate oferi un indicator al posibilelor afect, iuni ale pacientului. Table 6.1: Interpretarea rezultatelor Simptom Interval R-R sub 0.6 s Interval R-R peste 1.2 s Diferent, a mare ˆıntre R-R s, i P-P Interval PR peste 0.2 s Interval PR sub 0.12 s
Diagnostic Inima bate prea repede, pacient suspect de tahicardie Inima bate prea ˆıncet, pacient suspect de bradicardie Risc de blocaj atrio-ventricular Risc de torsada vˆarfurilor Risc de preexcitat, ie
ˆIn urma detect˘arii unei afect, iuni cardiace, programul va emite o avertizare s, i va anunt, a utilizatorul de posibilitatea unei afect, iuni cardiace. Acest tabel poate fi modificat cu us, urint, a˘ pentru a ad˘auga sau elimina diverse afect, iuni. Pentru a elimina detectarea fals˘a a unei afect, iuni, am ales s˘a procesez datele pe un interval de timp mai larg. Astfel sistemul nu va emite avertiz˘ari dac˘a de exemplu pacientul se mis, c˘a prea tare s, i apar perturbat, ii semnificative ˆın semnal.
52
7. Concluzii s, i direct, ii de continuare Prin tehnicile implementate, am reus, it s˘a obt, in o condit, ionare bun˘a a semnalului, extragerea principalelor caracteristici de interes s, i oferirea unui diagnostic minimal. ˆIn concluzie, pot spune c˘a am reus, it s˘a ˆındeplinesc ce mi-am propus s, i ˆın plus am reus, it s˘a realizez o interfat, a˘ intuitiv˘a pentru utilizator. ˆIn urma testelor pot spune c˘a pentru eliminarea zgomotului de ret, ea, filtrul neliniar a oferit rezultatele cele mai bune, ˆıntrucˆat nu a introdus perturbat, ii dup˘a complexul QRS. Eliminarea variat, iei componentei continue a fost mai dificil˘a dar ˆın cele din urm˘a, am reus, it s˘a scap de aceasta folosind tehnica ”forward-backwards IIR filtering”. Filtrul Savitzky-Golay s-a dovedit a fi o unealt˘a indispensabil˘a deoarece prin intermediul acestuia am reus, it s˘a elimin restul de zgomot nedorit. Algoritmul Pan-Tomkins este destul de vechi dar tot r˘amˆane un algoritm ce poate fi utilizat cu ˆıncredere pentru detect, ia ˆın timp real a b˘at˘ailor inimii. Des, i STFT este eficient˘a ˆın detectarea caracteristicilor semnalului electrocardiogramei, undinele s-au dovedit a mult mai precise s, i sigure. Chiar s, i atunci cˆand semnalul este perturbat de c˘atre zgomot, informat, ia extras˘a este foarte bun˘a. Programul funct, ioneaz˘a corespunz˘ator s, i poate oferi date importante despre pacientul monitorizat. Des, i niciodat˘a nu va ˆınlocui un medic, un astfel de program ofer˘a indicat, ii utile pentru diagnosticare. Pe semnalele testate, sistemul se comport˘a corespunz˘ator ;i, ca orice unealt˘a utilizat˘a de c˘atre medici, trebuie testat˘a intensiv ˆınainte de a fi utilizat˘a. Ca direct, ie de continuare, ment, ionez c˘a se poate utiliza o ret, ea neural˘a, dar pentru o astfel de implementare avem nevoie de un set de date destul de mare pentru antrenare. De altfel, mult, i algoritmi ce se bazeaz˘a pe tehnici de inteligent, a artificial˘a ar putea fi utilizat, i ˆıntr-o astfel de aplicat, ie. Pentru evaluarea st˘arii de s˘an˘atate a pacientului pot fi utilizat, i algoritmi mult mai evoluat, i precum sisteme fuzzy sau algoritmi genetici. Filtrarea semnalului se poate realiza de asemenea ˆıntr-un mod mult mai inteligent. Exist˘a filtre neliniare pentru eliminarea zgomotului de ret, ea s, i pentru eliminarea variat, iei componentei continue cu performant, e mult superioare. Modelarea semnalului ar putea de asemenea s˘a aduc˘a un spor de performant, a foarte bun. Exist˘a tehnici moderne ce
53
utilizeaz˘a undine care s-au dovedit a fi extraordinar de eficiente ˆın eliminarea zgomotului. Avˆand ˆın vedere evolut, ia spectaculoas˘a a puterii de procesare a dispozitivelor mobile, sistemul ar putea fi portat us, or pe un astfel dispozitiv. Monitorizarea permanent˘a a pacient, ilor care sufer˘a de afect, iuni cardiace s-ar putea dovedi o unealta foarte util˘a. Des, i capacitatea de stocare s-a m˘arit considerabil ˆın ultima perioad˘a, un astfel de sistem ar beneficia enorm dac˘a ar include un algoritm de compresie a datelor. Momentan exist˘a foarte multe tehnici de compresie care profit˘a de natura redundant˘a a semnalului EKG s, i produc rezultate foarte bune.
54
A. Cod Matlab
function [ noisy signal ] = add noise( signal, Fs,noise freq, noise amp) %% Functie ce poate fi folosita pentru a simula zgomotul de retea sau orice % fel de zgomot la o anumita frecventa. %% Time specification dt= 1/Fs; N = size(signal,1); t = (0:dt:N*dt−dt)'; %% Noise noise = noise amp*sin(2*pi.*t.*noise freq); noisy signal = signal + noise; %% Plots figure(); subplot(3,1,1); plot(t, signal); xlabel('Timp [s]'); ylabel('Amplitudine'); title('Semnal original'); subplot(3,1,2); plot(t, noise); xlabel('Timp [s]'); ylabel('Amplitudine'); title('Zgomot'); subplot(3,1,3); plot(t, noisy signal); xlabel('Timp [s]'); ylabel('Amplitudine'); title('Semnal original + Zgomot'); end
function [ ] = cmp filters( original, noisy, filtered1,filtered2, Fs ) %% Functie utilizata pentru compararea semnalelor ce au rezultat in urma % filtrarii cu diverse filtre %% Time specification dt= 1/Fs; N = size(original, 1); N1 = size(noisy, 1); N2 = size(filtered1, 1); N3 = size(filtered2, 1);
55
if (N˜=N1) error('Dimenisiunea semnalului zgomotos nu e buna'); end if (N˜=N2) error('Dimenisiunea primului semnal filtrat nu e buna'); end if (N˜=N3) error('Dimenisiunea celui de−al doilea semnal filtrat nu e buna'); end t = (0:dt:N*dt−dt)'; %% Fourier Transform: X = fftshift(fft(original)); X1 = fftshift(fft(noisy)); X2 = fftshift(fft(filtered1)); X3 = fftshift(fft(filtered2)); %% Frequency specifications: dF = Fs/N; % hertz f = −Fs/2:dF:Fs/2−dF; % hertz %% Plot the spectrum: figure; subplot(1,2,1); hold on; plot(t, original,'b'); plot(t,noisy,'r'); % plot(t,filtered1,'b'); % plot(t,filtered2,'m'); hold off; xlabel('Timp [s]'); ylabel('Amplitudine'); title('Domeniu timp'); subplot(1,2,2); hold on; plot(f,10*log(abs(X)/N), 'b'); plot(f,10*log(abs(X1)/N),'r'); % plot(f,10*log(abs(X2)/N),'b'); % plot(f,10*log(abs(X3)/N),'m'); xlabel('Frecventa (in hertz)'); ylabel('Decibeli'); title('Domeniu frecventa'); end
function [ ] = fft analyse( signal, Fs) %% Functie utilizata pentru plotarea spectrului unui semnal %% Time specification dt= 1/Fs; N = size(signal,1); t = (0:dt:N*dt−dt)'; %% Fourier Transform: X = fftshift(fft(signal)); %% Frequency specifications: dF = Fs/N; f = −Fs/2:dF:Fs/2−dF; %% Plot the spectrum: figure;
% hertz % hertz
56
subplot(1,2,1); plot(t, signal); xlabel('Timp [s]'); ylabel('Amplitudine'); title('Semnal original'); subplot(1,2,2); plot(f,10*log(abs(X)/N)); xlabel('Frecventa (in hertz)'); title('Magnitude Response'); end
function [ filtered ] = ne linear( signal, Fs, alpha,Fc) %Filtru de 50Hz nelinear %% Time specification dt= 1/Fs; Fn = Fc/Fs; N = size(signal,1); t = (0:dt:N*dt−dt)'; %% Initial conditions v a = 1; v b = 2 * cos(2*pi* Fn); filtered = signal; vect = signal; vect(1) = v a; vect(2) = v b; for i=3:N v = 2 * cos(2 * pi * Fn ) * v b − v a; e = signal(i) − signal(i−1) − v + v b; v hat = v + alpha * sign(e); filtered(i) = signal(i) − v hat; v a = v b; v b= v hat; vect(i)=v hat; end
end
function [Rloc,Ramp,Ploc,Pamp,Pon,Qloc,Qamp,Qon,Sloc,Samp.. ,Tloc,Tamp,Toff]=wavelet(voltage,Fs) B f = 0.5; % Variatiei componentei continue W b = B f/ (Fs/2); [B b,A b]=cheby1(3,0.1,W b,'high'); voltage=filtfilt(B b,A b,voltage); voltage=voltage(200:end−200); % Eliminarea portiunii deformate A =voltage; z=zeros(1,200);
% Zero padding
A=[z A z];
57
[ca1,cd1] = dwt(A,'haar'); [ca2,cd2] = dwt(ca1,'haar');
% Transformata undine pe primul nivel % Transformata undine pe al doilea nivel
%% Gaseste R y1=ca2; m1=max(y1)*0.5; P=find(y1>=m1); P1=P; P2=[]; last=P1(1); P2=[P2 last]; for(i=2:1:length(P1)) if(P1(i)>(last+10)) last=P1(i); P2=[P2 last]; end end Rt=y1(P2);
%% Gaseste R in semnalul original P3=P2*4; Rloc=[]; for(i=1:length(P3)) range = [P3(i)−20:P3(i)+20]; m=max(A(range)); l=find(A(range)==m); pos=range(l); Rloc=[Rloc pos]; end Ramp=A(Rloc);
%% Dupa detectarea undei R, gaseste restul undelor si intervalelor X=Rloc; y1=A;
for(j=1:length(X)) % P Peak range=Rloc(j)−round(0.3*Fs):Rloc(j)−round(0.05*Fs); m=max(y1(range)); b=find(y1(range)==m); b=b(1); b=range(b); Ploc(j)=b; Pamp(j)=m;
%P onset range=Ploc(j)−round(0.08*Fs):Ploc(j)−10; m=min(y1(range)); b=find(y1(range)==m);
58
b=b(end); b=range(b); Pon(j)=b; Ponamp(j)=m;
% Q Peak range=Rloc(j)−round(0.05*Fs):Rloc(j)−5; m=min(y1(range)); b=find(y1(range)==m); b=b(1); b=range(b); Qloc(j)=b; Qamp(j)=m; %Q onset range=Qloc(j)−round(0.03*Fs):Qloc(j)−5; m=max(y1(range)); b=find(y1(range)==m); b=b(end); b=range(b); Qon(j)=b; Qonamp(j)=m; % S Peak range=Rloc(j)+5:Rloc(j)+50; m=min(y1(range)); b=find(y1(range)==m); b=b(1); b=range(b); Sloc(j)=b; Samp(j)=m; % T Peak range=Rloc(j)+25:Rloc(j)+150; m=max(y1(range)); b=find(y1(range)==m); b=b(1); b=range(b); Tloc(j)=b; Tamp(j)=m; %T offset range=Tloc(j)+5:Tloc(j)+round(0.1*Fs); m=min(y1(range)); b=find(y1(range)==m); b=b(1); b=range(b); Toff(j)=b; Toffamp(j)=m; end figure; plot(y1); hold on; plot(Rloc,Ramp,'r*','MarkerSize',25);
59
plot(Ploc,Pamp,'g.','MarkerSize',25); % plot(Pon,Ponamp,'gd','MarkerSize',15); plot(Qloc,Qamp,'y+','MarkerSize',25); % plot(Qon,Qonamp,'yd','MarkerSize',15); plot(Sloc,Samp,'c+','MarkerSize',25); plot(Tloc,Tamp,'kˆ','MarkerSize',25); % plot(Toff,Toffamp,'kd','MarkerSize',15); end
%%Calcularea intervalelor dupa ce pozitia lor a fost calculata anterior RR = diff(Rloc); RR = RR(2:end); RR=mean(RR); PR=mean(Rloc−Ploc); QT=mean(Tloc−Qloc); PP=diff(Ploc); PP=PP(2:end); PP=mean(PP); PQ=mean(Qloc−Ploc);
%%Diagnoza pacientului Stare = 'Pacient sanatos'; if (RR1.2) Stare=' Risc de brahicardie' end if (abs(RR−PP)0.42) Stare=' Risc de torsada Varfurilor' end if (PR>0.2) Stare=' Risc de blocaj atrioventricular' end if (PR