Documente Academic
Documente Profesional
Documente Cultură
Lucrare de licent, ă
Procesare de semnal ECG
Coordonator:
Absolvent:
Prof. dr. ing. Radu Vărbanescu
Dan Iorga
Asis. drd. ing. Daniel Rosner
1 Introducere 6
2 Inima s, i Electrocardiografia 9
2.4 Electrocardiograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3 Solut, ii hardware 17
4 Filtrarea zgomotului 22
1
4.2.1 Filtru linear - alocare manuala a zerourilor s, i polilor . . . . . . . . 28
5 Detect, ia caracteristicilor 39
5.1.3 Undine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
6 Implementare Labview 49
A Cod Matlab 55
B Cod Labview 61
2
Listă de figuri
4.1 Caracteristica de modul a unui filtrul FIR de ordinul 10, proiectat folosind
o fereastră gausiană. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2 Caracteristica de modul a unui filtrul FIR de ordinul 100, proiectat folosind
o fereastră gausiană. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3 Caracteristica de modul a unui filtrul FIR de ordinul 1800, proiectat folosind
o fereastră gausiană. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3
4.7 Zerourile s, i polii filtrului de 50 Hz. . . . . . . . . . . . . . . . . . . . . . . 29
4
Listă de tabele
5
1. Introducere
Prin această lucrare am dorit să găsesc o metodă care să monitorizeze ı̂n timp real
starea de sănătate a pacient, ilor ce suferă 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ă ajute medicii să 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.
Unu din motivele principale pentru utilizarea analizei asiste de calculator a semnalului
ECG este capacitatea de a ı̂mbunătăt, ii calitatea semnalului.Indiferent de performant, a
echipamentului fizic, semnalul obt, inut nu va fi niciodată perfect. Dificultatea realizării
filtrelor analogice de ordin mare face indispensabilă procesarea digitală a semnalului.
Discretizarea s, i cuantificarea produc aliere ce trebuie eliminat pe cât posibil. Dezvoltarea
echipamentelor numerice s, i mărirea semnificativă a puterii de calcul a us, urat considerabil
6
tot procesul de prelucrare. Până s, i dispozitivele de foarte mici dimensiuni, precum
telefoanele mobile, au suficientă putere pentru a procesa cantităt, i mari de semnal.
Motivul principal pentru care am vrut să realizez această lucrare de licent, ă a
fost dorint, a de a aplica ı̂n practică cunos, tint, ele de prelucrare de semnal acumulate ı̂n
facultate. A durat destul de mult până mi-am consolidat cunos, tint, ele teoretice s, i am
reus, it să implementez primul filtru digital, dar după acel moment, totul a mers destul de
fluid iar rezultatele au ı̂nceput să apară. Init, ial am dorit să realizez ı̂ntreaga implementare
ı̂n Matlab dar ulterior am realizat că Labview oferă posibilităt, i de procesare ı̂n timp real
superioare Matlab.
Implementarea hardware este explicată foarte pe scurt. Am dorit să mă axez
doar pe partea de procesare de semnal. În momentul de fat, ă există suficient de multe
solut, ii pe piat, ă care facilitează achizit, ia de semnal. Printre producătorii care oferă un
astfel de sistem se numără Olimex, Texas Instruments sau Freescale.
Testele au fost realizate init, ial pe semnalele din baza de date MIT ce se poate
găsi 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ă, problemele au fost rezolvate. În foarte multe teste am folosit o plăcut, ă de
dezvoltare Arduino ı̂mpreună cu un scut de EKG produs de Olimex .
Identificarea pacient, ilor care suferă de anumite boli cardiace a devenit un factor
important pentru multe t, ări. Detectarea bolilor ı̂n indivizi care nu prezintă semne sau
simptome poate fi critic ı̂n prevenirea deteriorării calităt, ii viet, i. În ultimii ani s-au
dezvoltat din ce ı̂n ce mai multe unelte pentru identificarea anumitor afect, iuni. Diagnosticarea
timpurie poate mări considerabil s, ansa de ı̂nsănătos, ire. As, adar rolul inginerului este din
ce ı̂n ce mai important ı̂n medicină.
7
O altă ramură a medicinii care devine din ce ı̂n ce mai importantă este telemedicina.
În unele zone greu accesibile precum Delta Dunării la noi ı̂n România, accesul medicilor
este ı̂ngreunat considerabil. Din acest motiv, unelte eficiente pentru diagnosticarea la
distant, ă 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ă fie dotat, i ı̂n
schimb cu echipamente precise cu posibilitatea de a transmite informat, ia achizit, ionată la
distant, ă.
Bolile de inimă sunt unele dintre cele mai răspândite boli din ı̂ntreaga lume. Stilul
de viat, ă nesănătos, concretizat prin sedentarism s, i alimentat, ie nesănătoasă au contribuit
la acest lucru. Poluarea este de asemenea un motiv ce a contribuit la scăderea nivelului
de sănătate 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
Înainte de a efectua orice fel de interpretare a datelor, este necesar cunoas, terea
minimală a structurii s, i funct, ionării inimii.
- două cavităt, i mai mici - atriile (stâng s, i drept), situate ı̂n partea superioară, spre
baza organului,
- două cavităt, i mai mari - ventriculele (stâng s, i drept), situate ı̂n partea inferioară,
spre vârful organului.
Cordul se află ı̂n sacul pericardic ı̂mpreună cu care se găses, te ı̂n mediastinul
mijlociu. Pozit, ia oblică a cordului poate fi descrisă prin asemănarea cu o piramidă
deformată, cu baza dispusă posterior s, i la dreapta, iar apexul - anterior s, i la stânga.
Cordul adult măsoară, ı̂n medie, 12 cm de la bază la apex, 8-9 cm diametrul transversal
s, i 6 cm diametrul anteroposterior. Greutatea cordului, la adult, variază ı̂n limitele de 325
± 75 g la bărbat s, i 275 ± 75 g la femeie.
Baza cordului
- corespunde atriului stâng s, i unei mici port, iuni din partea posterioară a atriului
drept.
- limita superioară se află la nivelul bifurcat, iei arterei pulmonare, iar cea inferioară
corespunde s, ant, ului coronar.
9
Apexul cardiac - corespunde vârfului ventriculului stâng, orientat inferior,
anterior s, i la stânga. Obis, nuit, se proiectează ı̂n spat, iul intercostal V stâng, pe linia
medioclaviculară, sau put, in medial de acesta.
Fat, a sternocostală este orientată anterior s, i superior s, i este alcătuită, ı̂n raport
cu s, ant, ul coronar, dintr-o port, iune atrială, situată superior s, i la dreapta, s, i o port, iune
ventriculară, inferior s, i la stânga. Port, iunea atrială apart, ine aproape ı̂n ı̂ntregime atriului
drept, atriul stâng fiind ı̂n mare parte acoperit de aorta ascendentă s, i trunchiul arterei
pulmonare.
Fat, a diafragmatică este o suprafat, ă orizontală mare care ı̂n apropierea vârfului,
se curbează spre inferior s, i anterior. Este reprezentată de ventriculi, ı̂n principal cel stâng,
limita dintre cei doi ventriculi fiind marcată prin s, ant, ul interventricular posterior.
Fat, a diafragmatică se sprijină, ı̂n cea mai mare parte, pe centru tendinos al
diafragmei, iar o mică parte, pe partea musculară stângă a acestuia. Astfel, această fat, ă
are raporturi cu fat, a diafragmatică a lobului stâng hepatic s, i fornixul gastric. Posterior
se găses, te o mică zonă, formată din atrii.
Fat, a pulmonară formată, ı̂n cea mai mare parte, de ventriculul stâng; doar o
mică zonă, situată posterior de s, ant, ul coronar, este formată de atriul stâng. La acest
nivel, ı̂ntre pleură şi pericard, se găsesc nervul frenic stâng s, i vasele pericardofrenice.
Marginea dreaptă vizibilă pe cordul formolizat, este situată ı̂ntre fet, ele sternocostală
s, i diafragmatică s, i apart, ine ventriculului drept.
10
Figure 2.1: Fat, a diafragmatică a cordului.
se deschide ı̂n partea superioară s, i posterioară, iar vena cavă inferioară se varsă ı̂n partea
postero-inferioară.
Atriul stâng este situat pe linia mediană, ı̂n partea postero-superioară. Are
formă cuboidală s, i se prelunges, te ı̂n spatele atriului drept, de care este separat prin
septul interatrial. Auriculul stâng este lung, subt, ire s, i mai curbat decât cel drept, iar
marginile sale prezintă crestături mai adânci. Are un volum mai mic decât atriul drept,
dar prezintă peret, i mai gros, i.
Ventriculul stâng are forma unei jumătăt, i de elipsoid, conică sau de piramida
triunghiulară, fiind mai lung s, i mai ı̂ngust decât cel drept; are o pozit, ie posterioară s, i
la stânga, iar pe imaginea radiologica formează marginea stângă. Cavitatea ventriculară
11
stângă are un volum de 125 ±15 ml ı̂n sistola; volumul de sânge evacuat ı̂n timpul sistolei
de 80 ± 15 ml, iar fract, ia de eject, ie, de 70
- are formă alungită, cu un traiect postero-inferior pană ı̂n partea superioară a cristei
terminalis.
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ă de
ulei pe apa “ cu o viteza de aproximativ 1m/s s, i prin intermediul acestuia, mai departe
nodului atrioventricular.
Nodul atrioventricular este alcătuit 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ă de
celulele Purkinje.
- Numărul mare de miocite tranzit, ionale, cu conducere lentă, din nodul atrioventricular
este responsabil de ı̂ntârzierea impulsului electric de la nivelul acestui nod ( viteza
impulsului scade la aproximativ 0,2 m/s) ceea ce asigură o ı̂ntârziere minima,
necesară departajării s, i succesiunii sistolelor atrială s, i ventriculară.
12
Figure 2.2: Sistemul excitoconducător.
2.4. Electrocardiograma
Un ECG este folosit pentru măsurarea ritmul s, i regularităt, ii bătăilor inimii precum
s, i a dimensiunii s, i pozit, iei compartimentelor. Acesta mai poate fi folosit s, i pentru
detectarea oricărui defect apărut 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ă sau cercetări asupra inimii
umane, dar pot fi folosite s, i asupra animalelor, de obicei pentru diagnoza anomaliilor sau
pentru cercetări.
Pentru studiul fenomenelor electrice ale inimii se aplică electrozi, adică piese
metalice care se fixează 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ă derivat, ii directe a
căror electrozi sunt as, ezat, i ı̂n interiorul cavităt, ii cardiace prin cateterism, semidirecte
(esofagiene) s, i indirecte, ı̂n care electrozii sunt plasat, i pe membre sau pe regiunea precordială.
”Un semnal tipic produs de un ciclu cardiac ( o bătaie) este alcătuit dintr-o undă
P, un complex QRS, o undă T, si o undă U (care este vizibilă doar ı̂n 50-75% din cazuri).
14
Figure 2.4: Frecvent, ele ce se pot observa ı̂ntr-un semnal de EKG. Imagine obt, inută din
(Afonsor, 2004)
În această lucrare de licent, a am ı̂ncercat să monitorizez cele mai importante
intervale din cadrul semnalului pentru a oferi un diagnostic minimal asupra stării de
sănătate a pacientului. Dacă oricare din aceste intervale nu se află ı̂n limita corespunzătoare,
atunci pacientul este suspect de o anumită afect, iune cardiacă. În mod normal, acest lucru
este efectual manual de către medic, pe hârtie milimetrică
La ı̂nceput, au fost observate doar patru unde, dar după corect, ia matematică
a artefactelor introduse de amplificatoarele timpurii, a fost observată s, i a cincea undă.
Einthoven a ales literele P, Q, R, S s, i T pentru a identifica undele.
15
Table 2.1: Scurtă descriere a caracteristicilor semnalului EKG
16
3. Solut, ii hardware
Pentru testarea aplicat, iei este indispensabilă o sursă de semnal medical. Des, i
init, ial am folosit baza de date MIT de semnale medicale, care este foarte comprehensivă
s, i utilă, ı̂n cele din urmă am simt, it nevoia de un semnal ı̂n timp real pentru a vedea dacă
obt, in rezultate similare.
Datorită popularităt, ii acestui tip de semnal medical, ı̂n momentul de fat, ă există o
multitudine de oferte de solut, ii de achizit, ie a semnalului pe piat, ă. Pret, urile sunt mai mult
decât acceptabile iar dezvoltarea de algoritmi poate ı̂ncepe foarte repede. Voi prezenta
pe scurt solut, iile hardware utilizate.
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ăcut, ă de dezvoltare de genul Arduino
(cu un pret, aproximativ de 25 de euro) pentru a obt, ine semnal. Poate fi folosită s, i altă
plăcut, ă echivalentă Arduino precum Pinguino sau Maple.
Din păcate semnalul obt, inut nu este de calitate foarte bună 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ă s, i după cum se vede din figura 3.2, ı̂n jurul frecvent, ei de 50Hz avem
un zgomot foarte pronunt, at.
Ca o concluzie, pot spune că acest sistem des, i este departe de a fi ideal, poate fi
folosit cu succes pentru designul algoritmilor.
Pe site-ul oficial este disponibilă o aplicat, ie numită ”Electric guru” (figura 3.4)
pentru vizionarea semnalului obt, inut, dar calitatea acestuia nu este cea dorită. Semnalul
nu este filtrat digital pentru eliminarea zgomotului de ret, ea sau pentru eliminarea oricărui
18
Figure 3.2: Semnalul EKG nefiltrat obt, inut cu ajutorul plăcut, ei Olimex. Se poate
observa us, or că zgomotul de ret, ea este foarte pronunt, at din cauza unei filtrări hardware
necorespunzătoare.
19
Figure 3.4: Interfat, a ElectricGuru disponibilă 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ă această aplicat, ie este
disponibilă gratuit.
Pentru a obt, ine un semnal de calitate mai bună, am folosit un sistem hardware
realizat de către studentul Dumitru-Cristian Trancă, grupa 342C2. Acesta oferă un semnal
de calitate superioară solut, iei Olimex s, i astfel us, urează interpretarea stării de sănătate a
pacientului.
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ătate din
tensiunea de alimentare. Sistemul ı̂s, i generează tensiunea de referint, ă folosind un repetor
s, i un divizor de tensiune.
21
4. Filtrarea zgomotului
Ca orice semnal achizit, ionat din natură, ECG-ul poate fi afectat de către zgomot
Acesta poate fi cauzat de ret, eaua de alimentare, de mis, cările pacientului sau de de către
alte semnale electrice prezente ı̂n corpul uman, cum ar fi cel produs de sistemul muscular.
Aceste elemente trebuie ı̂nlăturate ı̂nainte ca semnalul să fie folosit pentru procesarea
efectivă. 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ăt, ii MIT ce pot fi accesate utilizând următorul toolbox (The WFDB
Toolbox for MATLAB, 2013). A fost uneori necesar să introduc un zgomot artificial
pentru a face testele, ı̂ntrucât echipamentul utilizat de aces, tia este de calitate superioară
s, i introduce foarte put, in zgomot.
Datorită mis, cării corpului pacientului este foarte posibil să avem o variat, ie destul
de puternică a componentei continue a semnalului obt, inut. Din acest motiv ar fi necesar
ca semnalul să fie filtrat cu un filtru trece sus. Frecvent, a de tăiere a acestui filtru ar trebui
să fie mai mică decât a oricărui semnal produs de către inimă.
O valoarea sigură pentru acest filtru ar fi undeva ı̂ntre 0.5Hz si 0.8Hz. Există
totus, i s, i tehnici mult mai avansate de eliminare a componentei continue. În articolul
”Time-varying digital filtering of ECG baseline wander””, propune o tehnică prin care
frecvent, a de tăiere a a filtrului este determinată de ritmul inimii. Astfel, când un pacient
depune efort fizic sust, inut, bătăile inimii vor avea un ritm mult mai ridicat, miscarea
acestuia va determina o variat, ie mai rapidă a componentei continue s, i prin urmare ar fi
foarte să mărim frecvent, a de tăiere a filtrului. Un astfel de filtrul necesită ı̂n prealabil
detect, ia bătăilor inimii s, i este mai greu de implementat(Sörnmo, 1993). În această lucrare
am ales să evit implementarea acestui filtru, axându-mă pe tehnici mult mai facile.
22
Pentru a proiecta filtrul trece-sus propus, putem porni de la răspunsul ı̂n frecvent, ă
ideal a acestuia.
jω 0 , 0 ≤ |ω| ≤ ωc
H(e ) =
1 , ωc < |ω| < π
unde ωc = 2 ∗ π ∗ fc , fc fiind frecvet, a de tăiere normalizată, adică
Fc
fc =
Fs
Pentru a estima acest filtru am ı̂ncercat diverse metode.
Un filtru cu răspuns finit la impuls este primul tip de filtru pe care am decis să
testez. Filtrele cu răspuns finit la impuls (prescurtat RFI ı̂n română sau FIR ı̂n engleză)
au funcţia pondere h[n] nenulă pentru n ∈ {0, 1, . . . , N − 1}. Se spune că N reprezintă
lungimea răspunsului la impuls. Pentru aceste filtre implementarea operaţiei de filtrare
are la bază produsul de convoluţie particularizat corespunzător:
N
X −1
y[n] = x[n] ∗ h[n] = h[k]x[n − k]
k=0
Deci funct, ia de transfer nu prezintă poli, fiind o funct, ie polinomială de ordinul N - 1 ı̂n
z −1 . Coeficient, ii filtrului sunt chiar valorile răspunsului la impuls.
unde
F
ω = 2πf = 2π
Fs
23
Funct, ia de transfer evaluată la frecvent, e fizice, periodică ı̂n frecvent, ă cu perioada
2π, poate fi exprimată ı̂n formă polară:
H(ejω ) = |H(ejω )|ejϕ(ω)
unde |H(ejω )| s, i ϕ(ω) sunt părt, i ale funct, iei de sistem, purtând denumirea de caracteristică
de modul ( de amplitudine), respectiv caracteristică de fază. În practică ne interesează
filtrele cu coeficient, i reali, adicp cu h[n] ∈ R. Pentru aceste filtre caracteristica de modul
este o funct, ie pară iar cea de fază, o funct, ie impară, adică:
|H(e−jω )| = |H(ejω )|; ϕ(−ω) = −ϕ(ω)
Filtrele FIR pot avea o caracteristică de fază liniară prin obligarea funct, iei pondere
h[n] să prezinte proprietatea de simetrie sau de antisimetrie fat, ă de axa sa centrală.
Figure 4.1: Caracteristica de modul a unui filtrul FIR de ordinul 10, proiectat folosind o
fereastră gausiană.
Experimental am observat ( după cum se vede poate observa ı̂n figura 4.3 ) că este
necesar un filtru de ordin cel put, in 1800 pentru a obt, ine o atenuare satisfăcătoare.
Schimbarea tipului de fereastră folosit la proiectare nu a ajutat la reducerea gradului
filtrului. Experimentând cu diverse alte tehnici de proiectare rezultatele au fost similare.
24
Figure 4.2: Caracteristica de modul a unui filtrul FIR de ordinul 100, proiectat folosind
o fereastră gausiană.
Figure 4.3: Caracteristica de modul a unui filtrul FIR de ordinul 1800, proiectat folosind
o fereastră gausiană.
Filtrele cu răspuns infinit la impuls(RII ı̂n română sau IIR ı̂n engleză) se dovedesc
ı̂n anumite aplicat, ii mai avantajoase decât filtrele FIR datorită faptului că 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ă de fază lineară.
Imposibilitatea realizării unei faze liniare are implicat, ii ı̂n ceea ce prives, te proiectarea
filtrelor IIR, ı̂n sensul că acesta presupune fie aproximarea simultană atât a specificat, iilor
pentru caracteristica de amplitudine cât s, i a celor referitoare la fază, fie corect, ia ulterioară
a distorsiunilor de fază ı̂n ipoteza că proiectarea s-a bazat numai pe aproximarea caracteristicii
de amplitudine. Există un singur tip de filtru IIR la care una din cele două caracteristici
este constantă ( filtrul trece tot ).
Filtrul IIR este descris ı̂n domeniul timp prin ecuat, iile cu diferent, e finite:
M
X N
X
y[n] = bi x[n − i] − ai y[n − i]
i=0 i=1
25
În această situat, ie funct, ia de transfer devine
M
bi z −i
P
i=0
H(z) = N
P
1+ ai z −i
i=1
Proiectarea unui filtru digital IIR constă ı̂n determinarea coeficient, ilor ai s, i bi
astfel ı̂ncât răspunsul la impuls al acestuia sau răspunsul ı̂n frecvent, ă, H(ejω ), să aproximeze
ı̂ntr-un anumit mod specificat, iile ı̂n timp discret sau ı̂n frecvent, ă impuse la proiectare.
Domeniul ı̂n care este rezolvată problema aproximării (timp sau ı̂n frecvent, ă) este determinat
de aplicat, ia specifică.
Am ı̂ncercat filtrarea variat, iei componentei continue folosind un filtru IIR de tip
Cebasev. Din păcate, faza nelineară a acestuia a produs rezultate dorite. După cum se
observă din figura 4.5 distorsiunile produse sunt prea mari. Din acest mtiv am căutat
altă metodă de filtrare a zgomotului.
Figure 4.4: Caracteristica de modul a unui filtrul IIR de ordinul 3, de tip Cebasev.
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. În stânga avem semnalul ı̂n domeniul timp
iar ı̂n dreapta avem semnalul ı̂n domeniul frecvent, ă.
y3 [n] = y2 ] − n]
Tot ı̂n figura 4.5 se pot observa rezultatele filtrării folosind această tehnică.
Des, i aceasta este o tehnică destinată ı̂n special prelucrării offline, ea se poate
utilza s, i online, acceptând o ı̂ntârziere a semnalului. Pentru implementare, am ales să
folosesc ı̂n continuare această tehnică.
27
Chiar dacă dispozitivul ar fi alimentat folosind o baterie, numeroasele dispozitive ce sunt ı̂n
momentul de fată conectate la ret, eaua electrică pot crea interferent, e ce ar afecta sistemul.
Din acest motiv am ı̂ncercat câteva metode de a filtra acest zgomot. În proiectarea filtrelor
s-a urmărit minimizarea artefactelor introduse de către filtru, păstrarea caracteristicii de
timp real s, i eliminarea cât mai eficientă a zgomotelor.
Figure 4.6: Semnalul achizitionat de la primul prototip al EKG-ului. După cum se vede,
este foarte perturbat de către zgomotul de ret, ea.
Din păcate, ı̂n România frecvent, a ret, elei de alimentare variază destul de mult s, i
se poate observa că avem zgomot de la aproximativ 47Hz până pe la 53Hz. Acest lucru
se datorează s, i faptului că es, antionarea nu este făcută cu precizie infinită. Ideal ar fi
ca filtrul proiectat să elimine toate aceste frecvent, e parazite, dacă nu să elimine măcar
componenta cea mai puternică, centrată la 50Hz.
În continuare sunt prezentate trei tipuri de filtre. Primul filtru a fost creat prin
alocarea manuală a polilor s, i a zerourilor, al doi filtru este bazat pe extragerea unei
sinusoide de frecvent, ă egală cu ret, eaua din semnal iar al treilea filtru este creat folosind
funt, ia cheby1 ı̂n Matlab.
O primă metodă simplă de filtrare poate fi realizată folosind un filtru linear ı̂n care
se amplasează doua zerouri, complex conjugate pe cercul unitate la pozit, ia corespunzătoare
28
Figure 4.7: Zerourile s, i polii filtrului de 50 Hz.
pentru 50Hz, după cum este sugerat ı̂n (Prandoni and Vetterlli, 2008) ( sau 60Hz dacă
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ăugarea
unei perechi de poli complex conjugat, i ı̂n apropierea zerourilor cu o raza mai mica decât
a acestora. Cu cât se apropie raza polilor de cercul unitate cu atât lungimea benzii va
scade.
p1,2 = re±jω0
(1 − z1 z −1 )(1 − z2 z −1 )
H(z) =
(1 − p1 z −1 )(1 − p2 z −1 )
Din păcate, după cum se poate observa din funct, ia pondere, filtrul nu are un
timp tranzitoriu foarte bun s, i poate să producă zgomot ce ar putea deteriora semnalul.
Am testat filtrul pe un semnal de ECG corupt cu zgomot de 50Hz iar după mai multe
ı̂ncercări, am găsit o valoare acceptabilă pentru raza r a polilor.
După cum se observa din figura 4.10 filtrul nu oferă rezultate foarte bune după
un complex QRS, ba chiar crează oscilat, ii similare cu cele care apar atunci când se
29
Figure 4.8: Functia pondere a filtrului proiectat.
l
30
Figure 4.10: Rezultatul filtrarii in apropierea unui complexului QRS. Verde reprezintă
semnalul original iar albastru reprezintă semnalu filtrat.
Rezultate similare am obt, inut folosind funct, ia ”butter” din Matlab. Cres, terea
ordinului filtrului (s, i implicit a numărului de poli din jurul zeroului) nu a ajutat, observându-se
ı̂n continuare perturbat, ii la sfârs, itul complexului QRS. Din acest motiv, am ı̂ncercat să
implementez un alt tip de filtru, filtru detaliat ı̂n lucrarea (Sörnmo and Laguna, 2005)
După cum se observă din figură, rezultatele sunt us, or ı̂mbunătăt, ite. Artefactele
apărute imediat după complexul QRS sunt mai mici iar atenuarea frecvent, ei nedorite este
31
Figure 4.11: Functia pondere a filtrului proiectat.
32
Figure 4.13: Rezultatul filtrarii in apropierea unui complex QRS. Verde reprezintă
semnalul original iar albastru reprezintă semnalu filtrat.
Des, i acest filtru nu a obt, inut cele mai bune rezultate, putem considera că semnalul
este acceptabil. Aceasta este o variantă care ar putea fi implementată foarte us, or iar
artefactele introduse ar fi neglijabile. Am explorat totus, i s, i altă variantă pentru eliminarea
zgomotului de ret, ea.
Ideea care stă la baza acestui filtru este scăderea unei sinusoide generate de către
filtru din cadrul semnalului. Amplitudinea sinusoidei este adaptata continuu ı̂n funct, ie de
zgomotul ret, elei electrice. Sinusoida internă este generată de către următoarea ecuat, ie.
v[n] = A ∗ sin(wo n)
1
H(z) =
1 − 2cosω0 z −1 + z −2
33
v[n] = 2cosω0 v[n − 1] − v[n − 2] + u[n]
0
e [n] = e[n] − e[n − 1] = x[n] − v[n] − x[n − 1] + v[n − 1]
Unde prin valoarea lui alpha putem seta viteză de convergent, ă a sinusoidei
generate intern. Similar cu alte metode iterative ( exemplu: metode de tip gradient),
o valoare prea mică pentru alpha va seta un pas prea mic, iar viteza de convergent, ă va fi
prea mică, iar un pas prea mare poate face ca algoritmul să sare peste valoarea optimă,
făcând convergent, a imposibilă. Experimentând, 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ăcate, filtrul fiind neliniar, analiza lui este mult mai grea decât a celui linear. În acest
caz, nu dispunem de unelte precum in Matlab precum fvtool care us, urează foarte mult
proiectarea filtrului.
Dacă se dores, te, pentru liniarizarea filtrului se poate ı̂nlocui ecuat, ia de actualizare
a amplitudinii erorii cu una lineară.
0 0
v [n] = v[n] + αe [n]
Se poate observa din figura 4.10 că performant, ele sunt cu mult ı̂mbunătăt, ite.
Atenuarea este aproape perfectă iar semnalul este recuperat. În literatura de specialitate
există tehnici mai inteligente dar ı̂ntrucât 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ă este relativ mică, am decis ca pentru partea de implementare
să mă opresc aici.
Ulterior am testat s, i pe prototip. După cum se poate vedea din figura 4.14
rezultatul filtrarii semnalului de pe prototip este acceptabil. Des, i semnalul obt, inut de
către noi are zgomot s, i ı̂n vecinătatea frecvent, ei de 50Hz, se pare că acestea nu sunt
foarte deranjante. Am ales ca ı̂n varianta finală a proiectului să implementez acest tip de
filtru deoarece nu introduce nici un fel de perturbat, ii.
Există totus, i s, i imperfect, iuni pe care filtrele proiectate anterior nu reus, esc să le
elimine. Aici intervine filtrul Savitzky-Golay pentru netezirea datelor. Acest filtru a fost
pentru prima dată descris ı̂n anul 1964 de către 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ă acest tip de filtru poate fi
folosit cu succes s, i ı̂n prelucrarea datelor de la electrocardiogramă s, i inevitabil acesta a
devenit indispensabil pentru aplicat, ii similare.
Acest tip de filtru se bazează pe ideea aproximării ı̂n sensul celor mai mici pătrate
a unor bucăt, 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ă metodă
35
sunt foarte cunoscute ı̂n unele sectoare ca filtre Savitzky-Golay. Savitzky s, i Golay au
reus, it să netezească datele cu zgomot obt, inute ı̂n urma analizei spectrale chimice, s, i au
demonstrat că netezirea ı̂n sensul celor mai mici pătrate reduce zgomotul ment, inând forma
s, i ı̂nălt, imea vârfurilor semnalului . Unii cercetători au recunoscut important, a proprietăt, ii
de conservare a vârfurilor semnalului ı̂n diverse aplicat, ii medicale. De asemenea conceptul
de bază de netezire polinomială ı̂n sensul celor mai mici pătrate a fost extins la două
dimensiuni s, i aplicat la procesarea imaginilor cum ar fi cele obt, inute prin ultrasunete sau
radar.
Ideea de bază din spatele aproximării polinomiale ı̂n sensul celor mai mici pătrate
este prezentată ı̂n figura 4.15, care arată o secvent, ă de es, antioane x[n] ale unui semnal
ca puncte pline. Considerând pentru moment grupul de 2M + 1 es, antioane centrate la
n=0, vrem să obt, inem coeficient, ii polinomului
N
X
p(n) = ak n k
k=0
care minimizează eroarea ı̂n sensul celor mai mici pătrate a grupului de es, antioane centrate
la n=0,
X M XM XN
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. În
figura 4.15, unde N=2 s, i M=2, linia plină este polinomul p(n) evaluat ı̂ntre punctele -2 s, i
+2, s, i ies, irea netezită este obt, inută evaluând 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ă cu coeficientul de ordin zero al polinomului. În
general, intervalul de aproximarea nu trebuie să fie ı̂n mod necesar simetric punctului
ı̂n care se face evaluarea. Acest lucru conduce la filtre cu fază nelineară, care pot fi
utile pentru netezirea la sfârs, itul secvent, elor de dimensiune finită. Ies, irea la următorul
es, antion este obt, inut prin mutarea intervalului de analiză la dreapta cu un es, antion,
redefinind originea la pozit, ia mijlocului noului bloc de date de dimensiune 2M+1, s, i
repetând aproximarea polinomială s, i evaluând ı̂n pozit, ia centrală.
Derivând eroarea ı̂n funct, ie de coeficient, ii polinomului obt, inem un set de ecuat, ii
care pot fi rezolvate atât timp cât lungimea ferestrei este mai mare decât gradul polinomului.
Pentru a obt, ine totus, i o netezire, este necesar ca gradul polinomului să fie mult mai mic
decât lungimea ferestrei. Ajungem astfel la o ecuat, ie normală.
a = (A| A)−1 A| x = Hx
Pentru aflarea coeficient, ilor filtrului se poate rezolva ecuat, ia normală specifică
numărului 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ă din (Schafer, 2011).Ilustrare a netezirii folosind cele mai
mici pătrate 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ăspunsul la impuls a filtrului
37
În urma filtrării datelor, se poate observa atenuarea semnificativă a frecvent, elor
ı̂nalte, fără a se pierde informat, ii utile din cadrul semnalului. Se observă cum forma s, i
ı̂nălt, imea au fost conservate iar zgomotul de frecvent, ă ı̂naltă a fost eliminat. Dacă dorim,
putem mics, ora gradul polinomului pentru a obt, ine o netezire mai pronunt, ată. Din păcate,
acest lucru poate duce la pierderea de date utile, precum ı̂nălt, imea undei R.
38
5. Detect, ia caracteristicilor
Detect, ia complexului QRS este un element ce poate oferii date foarte importante
despre starea de sănătate a pacientului. Măsurarea acestuia este folosită ı̂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ă de a obt, ine ritmul cardiac este de a-l extrage din semnalul
ECG.În momentul de fat, ă există 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, ă ı̂naltă
similar cu cea a complexului.
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ă putere
de procesare foarte mică, lucru dovedit de faptul că init, ial acesta a fost implementat pe
un microprocesor Z80 produs de către compania Zilog. O referint, ă pentru implementarea
acestuia se poate găsi ı̂n (Lascu and Lascu, 2007)
Pentru a implementa acest algoritm este necesar să trecem semnalul mai ı̂ntâi
printr-un filtru trece-jos, apoi printr-un filtru trece-sus. După aceea semnalul trebuie
derivat, apoi ridicat la pătrat s, i ı̂n cele din urmă integrat pe 150ms.
Filtru trece-banda
Filtru trece bandă are ca principal scop reducerea influent, ei zgomotului produs
de către mus, chi, a celui introdus de ret, eaua electrică, a variat, iei componentei continue s, i
a undei T. Banda de trecere uzuală pentru a face acest lucru este de 5-15Hz. Pentru a
implementa acest lucru, am folosit două filtre Cebâs, ev de ordin 3 cu riplu setat la 0.1 .
Derivativa
După filtrare, semnalul este derivat pentru a afla informat, ia necesară despre
pantă. Derivata de ordin ı̂ntâi se comportă bine dar folosind derivata de ordin doi, se pot
obt, ine rezultate mai bune.
Ridicarea la pătrat
După derivare, semnalul este ridicat la pătrat ı̂n fiecare punct. Acest lucru face
ca toate punctele să fie pozitive s, i amplifică frecvent, ele pozitive scoase de derivare.
Integrarea
Scopul integrării este de a obt, ine informat, ii despre forma de undă, pe lângă cea
legată de panta undei R. În general lungimea intervalului pe care se face integrarea trebuie
să fie egală ca lungimea complexului QRS
Ajustarea pragului
40
După ce au fost efectuate toate aceste operat, ii asupra semnalului, este necesar
găsirea unui prag de la care putem spune că 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ă multe tehnici inteligente pentru a determina acest prag dar se pare
că dacă aplicăm o fereastră dreptunghiulară pe ultimele es, antioane, apoi facem o medie,
obt, inem o valoare acceptabilă. Fereastra este absolut necesara deoarece primele es, antioane
ale filtrării vor avea o valoare foarte mare iar acest lucru va seta pragul la o valoare
nerealistă.
În concluzie, pot spune că acest algoritm oferă rezultate foarte bune s, i are marele
avantaj că funct, ionează ı̂n timp real. Din păcate, el nu ne poate ajuta să determinăm
cu exactitate pozit, ia undei R. De aceea, ı̂n continuare am ales să explorez s, i alte metode
pentru a determina acest lucru.
Figure 5.2: Rezultatul ı̂n urma procesării semnalului cu algoritmul Pan-Tomkins. După
cum se vede, este necesară aplicarea unei ferestre pentru a determina un prag.
În aplicat, ia finală ı̂n Labview, am folosit acest algoritm pentru a afis, a ı̂n timp
real intervalul R-R s, i implicit numărul de bătăi pe minut. De asemenea, am folosit acest
algoritm s, i pentru a produce un efect sonor de fiecare dată când este detectată o bătaie
a inimii.
Transformata Fourier clasică este o unealtă foarte utilă pentru analiza spectrului
unui semnal dar din păcate nu poate oferi informat, ii despre pozit, ia ı̂n timp a acestor
frecvent, e. Dacă semnalul este nestat, ionar, transformata nu mai oferă informat, ii satisfăcătoare.
41
Acest lucru este realizat alegând o fereastră pentru care va fi aplicată transformata Fourier.
Fereastra este mutată dea lungul ı̂ntregului semnal s, i ı̂n fiecare pozit, ie noua este aplicată
o nouă transformată. Prin această metodă obt, inem informat, ie atât despre frecvent, a dar
cât s, i despre momentul de timp la care sunt ı̂ntâlnite acestea.
Des, i compromisul STFT dintre timp s, i frecvent, ă poate fi util, dezavantajul este
dat de faptul că odată aleasă dimensiunea ferestrei, aceasta va fi aceeas, i pentru toate
frecvent, ele. Multe semnale necesită o abordare mai flexibilă, una ı̂n care se poate varia
lungimea ferestrei pentru a determina mai cu acuratet, e fie timpul, fie frecvent, a.
Să presupunem ca avem un semnal f(t) compus din mai multe frecvent, e s, i având o
caracteristică nestat, ionară. Abordarea folosită este să ı̂mpărt, im f ı̂n port, iuni de lungime
aproximativ egale s, i să o analizăm pe fiecare ı̂n mod individual. Această analiză are
dezavantajul evident de a fi oarecum aleatorie, deoarece este imposibil să afirmăm că o
frecvent, ă aleasă ı̂ncepe s, i când se termină. În funct, ie de natura semnalului, trebuie să
alegem o fereastră de dimensiune corespunzătoare, iar acest lucru este destul de dificil.
Informat, ie legată de domeniul frecvent, ei s, i domeniul timp trebuie obt, inută ı̂n
acelas, i timp. Prin urmare. ies, irea funct, iei rezultate depinde atât de timp cât s, i de
frecvent, ă.
Făcut faimos de către aplicarea lui ı̂n mecanica cuantică, principiul de incertitudine
a lui Heisenberg poate fi formulat ı̂n diferite moduri. Totus, i, indiferent de ce formă va lua,
42
esent, a este aceeas, i: măsurarea precisă a timpului s, i a frecvent, ei sunt ı̂n mod fundamental
incompatibile, deoarece frecvent, a nu poate fi măsurată instantaneu. As, adar, dacă vrem să
afirmăm că un semnal are o frecvent, ă ω0 putem face acest lucru dacă observăm semnalul
pentru un anumit moment de timp ( cu cât mai mare această perioadă, cu atât putem
afirma mai sigur acest lucru). As, adar nu putem specifica când exact un semnal are o
anumită frecvent, ă, ci doar un interval pentru acest lucru.
Într-o lucrare publicată de doi tailandezi (Uchaipichat and Inban, 2010) , folosind
STFT aces, tia afirmă că au ajuns la o precizie de 99”%” pe baza de date MIT-BIH. Acest
lucru dovedes, te faptul că metoda are performant, e suficient de bune.
5.1.3. Undine
Transformata Fourier de timp scurt este o unealtă foarte utilă pentru analiza timp
frecvent, ă a semnalelor biomedicale dar din păcate are un defect foarte mare. Lungimea
ferestrei limitează rezolut, ia ı̂n frecvent, ă a acesteia. O alternativă a transformatei Fourier
este transformata wavelet (sau undină ı̂n română)
Transformata undine folosita ı̂n prezent se ı̂mparte ı̂n două mari categorii: transformata
continuă undine s, i transformata discretă undine. Des, i principiul care stă la baza acestora
este acelas, i, diferent, a dintre aceste transformate este foarte mare.
43
(1) Trebuie să aibă energie finită:
Z+∞
E= |ψ|2 dt < inf ty
−∞
(2) Nu trebuie să cont, ină o componentă continuă, adică transformata Fourier a
acestuia să aibă valoarea 0 ı̂n origine.
(3) Pentru undine complexe, transformata Fourier trebuie să fie reală s, i să nu
cont, ină valori negative.
Figura 5.4 a fost obt, inută aplicând transformata continuă undine (folosind o
undină de tipul ”haar”) asupra unui semnal EKG. După cum se poate observa, au fost
identificate undele R ca având frecvent, a mult mai ı̂naltă decât restul undelor. Des, i oferă
rezultate foarte bune, acest tip de transformată este destul de lentă s, i din acest motiv
este mai des utilizată transformata discretă.
44
discrete. Crochiere, Weber s, i Flanagan au realizat un lucru similar ı̂ncercând să codifice
semnalele audio ı̂n acelas, i an.” (Polikar, 1999)
Rezolut, ia semnalului, care este o măsură a cât de detaliat este semnalul, este
schimbat de operat, ia de filtrare iar scalarea este schimbată de către interpolare s, i decimare.
Figure 5.5: Rezultatul căutării vârfului undei R folosind undine. Se poate observa precizia
foarte bună a acestei metode.
În general este recomandat să se utilizeze o undină care să aibă o formă similară cu
a complexului căutat. Într-un articol (Senhadji et al., 1995) este comparată performant, a
diferitelor tipuri de undine pentru găsirea undei R. Undinele de tipul Daubechies, spline
s, i Morlet s-au dovedit foarte eficiente pentru acest lucru.
45
5.2. Detect, ia altor caracteristici
Există tehnici foarte avansate de detect, ie a diferitelor intervale din cadrul semnalului
EKG dar majoritatea se bazează pe detect, ia ı̂n prealabil a undei R. Astfel, cu cât unda
R este găsită cu precizie mai bună, cu atât s, ansele de identificare corectă a celorlalte
caracteristici cres, te.
Detect, ia undei P
Detect, ia undei Q
Detect, ia undei S
În cazul ı̂n care este utilă detect, ia undei S, aceasta se poate determina printr-o
metodă asemănătoare. Întrucât nu am considerat unda relevantă, detect, ia acesteia nu a
fost implementată ı̂n program.
Detect, ia undei T
Unda T este singura care poate crea probleme. Deoarece are o frecvent, a similară
cu a undei R, poate fi confundată cu aceasta. Din fericire, aceasta are o amplitudine mult
mai mică decât unda R s, i dacă pragul pentru detect, ia undei R este setat corespunzător,
confuzia nu va avea loc. Pentru a detecta aceasta undă, am căutat la dreapta undei R,
pe un interval de 0.3 secunde.
După detect, ia pozit, iei fiecărui unde, putem ı̂ncepe măsurarea intervalelor de
interes.
46
Figure 5.6: Rezultatul căutării celorlalte caracteristici. Cu ros, u sunt marcate vârful
undelor R, cu verde vârful 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ă depolarizări ale
ventriculilor. Durata acestuia se măsoară ca distant, a dintre două vârfuri consecutive ale
undei R.
Intervalul PP
Intervalul PP este util pentru determinarea timpului ı̂ntre două depolarizări ale
atriilor. Durata acestuia se măsoară ı̂ntre două vârfuri ale undei P.
Intervalul PR
Intervalul QT
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
Pentru a obt, ine o procesare eficientă a semnalului EKG, programul a fost structurat
ı̂n următoarele etape:
49
3. Filtrarea prin intermediul filtrului Savitzky-Golay
Prima etapă, cea de achizit, ie de semnal prin intermediul protocolului serial putem
spune că este cea care face legătura ı̂ntre componenta hardware s, i cea software a sistemului.
Pentru a nu avea probleme legate de ı̂ntârzierea transmisiei, am folosit viteza de transmisie
mare de 115200 bauds. Restul opt, iunilor au fost setate pe valorile implicite. Totus, i,
pentru eventualele modificări am inclus ı̂n interfat, a posibilitatea de a modifica parametrii
transmisiei.
După cum am ment, ionat ı̂n capitolul 3, filtrul neliniar se comportă foarte bine
atunci când frecvent, a ret, elei de alimentare nu variază foarte tare. În acest caz, filtrul
neliniar nu introduce zgomot după complexul QRS. Dacă ı̂nsă frecvent, a ret, elei variază
foarte mult, atunci un filtru de tip Butterworth sau Cebâs, ev este de dorit. Din păcate,
ı̂n acest caz trebuie să acceptăm perturbat, iile introduse de acesta.
50
Aplicarea filtrului Savitzky–Golay
Folosind algoritmul Pan-Tomkins se pot detecta ı̂n timp real bătăile inimii. Cu
ajutorul acestui algoritm am putut realiza sunetul caracteristic al unui aparat EKG la
fiecare aparit, ie a complexului QRS. Dacă acest sunet devine obositor, el poate fi oprit
us, or cu ajutorul unui buton prezent ı̂n interfat, ă.
Acest pas marchează 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ăcate a trebuit să elimin ultimele
es, antioane, deoarece acestea au fost perturbate de către filtru.
Pe baza detect, iei undei R de către pasul anterior se face detect, ia s, i intervalele de
interes. Acest lucru se face căutând ı̂n proximitatea undei găsite.
Filtrarea s-a dovedit a fi o parte esent, ială a realizării EKG-ului care depinde
foare mult de sistemul hardware folosit. Prin această filtrare ı̂ncerc să elimin pe cât
posibil imperfect, iunile care nu au putut fi eliminate de către filtrele analogice.
51
Figure 6.3: Rezultatele finale ale filtrării. Cu albastru este reprezentat semnalul original,
nefiltrat iar cu ros, u este reprezentat semnalul final
Pe baza pozit, iei fiecărei unde găsite la anterior, se poate face o interpretare
minimală a stării de sănătate a pacientului. Des, i acest sistem nu poate substitui un
medic, el poate oferi un indicator al posibilelor afect, iuni ale pacientului.
Simptom Diagnostic
Interval R-R sub 0.6 s Inima bate prea repede, pacient suspect de tahicardie
Interval R-R peste 1.2 s Inima bate prea ı̂ncet, pacient suspect de bradicardie
Diferent, a mare ı̂ntre R-R s, i P-P Risc de blocaj atrio-ventricular
Interval PR peste 0.2 s Risc de torsada vârfurilor
Interval PR sub 0.12 s Risc de preexcitat, ie
În urma detectării 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, ă pentru a adăuga sau elimina diverse afect, iuni.
Pentru a elimina detectarea falsă a unei afect, iuni, am ales să procesez datele pe
un interval de timp mai larg. Astfel sistemul nu va emite avertizări dacă de exemplu
pacientul se mis, că 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ă obt, in o condit, ionare bună a semnalului,
extragerea principalelor caracteristici de interes s, i oferirea unui diagnostic minimal. În
concluzie, pot spune că am reus, it să ı̂ndeplinesc ce mi-am propus s, i ı̂n plus am reus, it să
realizez o interfat, ă intuitivă pentru utilizator.
În urma testelor pot spune că pentru eliminarea zgomotului de ret, ea, filtrul
neliniar a oferit rezultatele cele mai bune, ı̂ntrucât nu a introdus perturbat, ii după complexul
QRS. Eliminarea variat, iei componentei continue a fost mai dificilă dar ı̂n cele din urmă,
am reus, it să scap de aceasta folosind tehnica ”forward-backwards IIR filtering”. Filtrul
Savitzky-Golay s-a dovedit a fi o unealtă indispensabilă deoarece prin intermediul acestuia
am reus, it să elimin restul de zgomot nedorit.
Programul funct, ionează corespunzător s, i poate oferi date importante despre pacientul
monitorizat. Des, i niciodată nu va ı̂nlocui un medic, un astfel de program oferă indicat, ii
utile pentru diagnosticare. Pe semnalele testate, sistemul se comportă corespunzător ;i,
ca orice unealtă utilizată de către medici, trebuie testată intensiv ı̂nainte de a fi utilizată.
Ca direct, ie de continuare, ment, ionez că se poate utiliza o ret, ea neurală, 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ă pe tehnici de inteligent, a artificială ar
putea fi utilizat, i ı̂ntr-o astfel de aplicat, ie.
Filtrarea semnalului se poate realiza de asemenea ı̂ntr-un mod mult mai inteligent.
Există 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ă aducă un spor de performant, a foarte bun. Există tehnici moderne ce
53
utilizează undine care s-au dovedit a fi extraordinar de eficiente ı̂n eliminarea zgomotului.
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
%% 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
%% 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; % hertz
f = −Fs/2:dF:Fs/2−dF; % hertz
%% Plot the spectrum:
figure;
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
%% 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'); % Transformata undine pe primul nivel
[ca2,cd2] = dwt(ca1,'haar'); % 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);
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
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
60
B. Cod Labview
61
Figure B.2: Aplicarea algoritmului Pan-Tomkins
62
Figure B.3: Aplicarea transformatei undine
63
Bibliografie
Addison, P. S. (2005), ‘Wavelet transforms and the ecg: a review’, Physiol. Meas 26.
Afonsor, V. X. (2004), ‘Method and apparatus for catheter navigation and location and
mapping in the heart’.
Clifford, G. D., Azuaje, F. and McSharry, P. E. (2006), Advanced Methods and Tools for
ECG Data Analysis, Artech House.
Gupta, R., Bera, J. and Mitra, M. (2010), ‘Development of an embedded system and
matlab-based gui for online acquisition and analysis of ecg signal’, Elsevir Journal. .
Lascu, M. and Lascu, D. (2007), ‘Labview event detection using pan –tompkins algorithm’,
Proceedings of the 7th WSEAS Int. Conf. on Signal Processing. .
Polikar, R. (1999), ‘The wavelet tutorial’, Rowan University, College of Engineering, Web
Servers .
Senhadji, L., Carrault, G., Bellanger, J. and Passariello, G. (1995), ‘Comparing wavelet
transforms for recognizing cardiac patterns’, IEEE Trans. Med. Biol. pp. 167–173.
64
Sörnmo, L. (1993), ‘Time-varying digital filtering of ecg baseline wander’, Med. & Biol.
Eng & Comput. 14(3), 342–351.
65