Jasmin Ni"i! student prvog ciklusa studija Fakultet elektrotehnike Tuzla, Bosna i Hercegovina jasko.nisic@hotmail.com
Sadr!aj Razvoj medicinske opreme u dana!nje vrijeme, pored razvoja odgovaraju"eg hardvera, sve vi!e se vezuje i za razli#ita softverska rje!enja. Cilj je izrada preciznijih, ali i jeftinijih instrumenata. Kako je mjerenje osnovnih parametara kardio- vaskularnog sistema od velikog zna#aja za preventivu i lije#enje raznih bolesti jedan od #esto mjerenih parametara je puls sr#anog mi!i"a. U radu je opisan sistem za pra"enje sr#anog pulsa realizovan kao aplikacija na Apple mobilnoj platformi. Aplikacija komunicira sa senzorom ugra$ene kamere i flash osvjetljenjem na mobilnom ure$aju i nakon provjere potrebnog hardvera uspostavlja video sesiju za mjerenje. Softverska implementacija realizovana je u programskom jeziku Objective- C, kori!tenjem razvojnog okru%enja Xcode.
Klju!ne rije!i - Sr!ani puls; kamera; smartphone; iOS; Objective- C; algoritmi; I. UVOD Princip rada ovakvih ure#aja zasniva se na $injenici da srce pumpa krv oboga!enu kiseonikom iz plu!a u $itavo tijelo. Za snabdijevanje organizma kiseonikom i hranljivim materijama srce se u normalnim uslovima, kada je organizam u mirovanju, kontrahuje 60 do 70 puta u minutu [1]. Puls predstavlja sr$ani ritam (engl. Heart rate HR) i on se izra%ava brojem otkucaja u minutu. Pri optere!enju organizma broj otkucaja srca raste. Puls predstavlja dobar indikator fizi$ke spremnosti organizma. &to je organizam u boljoj kondiciji to srcu treba manje truda i manje otkucaja u minuti da pumpa krv u tijelo. Puls se naj$e"!e mjeri ure#ajima koji detektuju pulsiranje arterijskih krvnih sudova [3]. Iako pritisak slabi sa rastojanjem, on je dovoljno jak da se mo%e osjetiti i na ekstremitetima. Na primjer, otkucaje srca lako mo%emo osjetiti dodirivanjem vene na ru$nom zglobu. Pored ovog tradicionalnog na$ina, razvijeni su mnogi tehni$ki sofisticirani na$ini mjerenja sr$anog pulsa koji se mogu sresti u literaturi [4]. Najpoznatiji sistem za mjerenje parametara rada srca, pa i pulsa je elektrokardiogram, EKG, koji pomo!u odgovaraju!ih senzora, registruje elektri$nu aktivnost srca. U radu je dat opis i manifestacija sr$anog pulsa sa medicinske strane, a potom pregled naj$e"!e kori"!enih metoda za mjerenje pulsa sa posebnim osvrtom na metod koji je kori"!en u konkretnoj realizaciji. Razvoj tehnologije na dana"njem nivou omogu!ava da se do istih rezultata mo%e do!i na vi"e na$ina. Jedan od tih na$ina je i grafi$ki prikaz i mjerenje pulsa primjenom odgovaraju!eg softvera i danas "iroko rasprostranjenih mobilnih telefona. Akcenat je na primjeni Apple mobilnih ure#aja (iPhone, iPod Touch), kojima se instalira softver razvijen i opisan u ovom radu. U zaklju$ku su razmatrane prednosti i mane ovog metoda mjerenja, upore#eni rezultati virtuelnog i realnog instrumenta. II. PRINCIP RADA Fluktuacije krvi uzrokovane sr$anim kontrakcijama imaju za posljedicu promjenu gustine krvi u tkivu. Ova $injenica mo%e se iskoristiti za mjerenje pulsa. Potrebno je sa jedne strane prsta postaviti jak izvor svjetlosti a sa druge strane osjetljiv detektor svjetlosti. Elektri$ni signal na izlazu srazmjeran je intenzitetu svjetlosti koja pada na detektor. Kada do#e do kontrakcije srca pove!a!e se gustina krvi u prstu "to dovodi do slabljenja svjetlosti koja prolazi kroz prst. Promjena intenziteta detektovane svjetlosti dovodi do pojave odgovaraju!ih impulsa na izlazu detektora [2]. Isti efekat mo%e se ostvariti i kori"tenjem dana"njih smartphone-a koji imaju dovoljno osjetljive kamere sa flash osvjetljenjem. Jedni od takvih su i Apple mobilni ure#aji (iPhone, iPod Touch), za koje je i namijenjena aplikacija iz ovog rada. Da bi se moglo izvr"iti mjerenje dovoljno je pokrenuti aplikaciju i prst prisloniti na kameru ure#aja. Aplikacija !e sama aktivirati osvjetljenje koje je potrebno da bi senzor kamere mogao registrovati promjenu boje prsta uzrokovanu promjenom gustine krvi. Cijeli proces traje 30 sekundi, u "to je uklju$eno i vrijeme potrebno za stabilizaciju slike i pode"avanje fokusa, koje se naravno vr"i automatski kontrolisano od strane operativnog sistema ure#aja. O$igledno da proces traje veoma kratko, "to je zna$ajna prednost u odnosu na ostale metode mjerenja sr$anog pulsa. III. SOFTVERSKO RJE&ENJE Aplikacija preko AVFoundation i CoreVideo frameworka komunicira sa senzorom ugra#ene kamere i flash osvjetljenja i nakon provjere da li ure#aj posjeduje sav potrebni hardver (stariji iPhone i iPad ure#aji nemaju flashlight), uspostavlja video session. Odabrani su minimalni zahtjevi za rezolucijom jer kvalitet snimljene slike ne igra ulogu bitne su samo boje, a one se sasvim dovoljno dobro razlikuju i pri minimalnoj kvaliteti snimka.
Aplikacija hvata slike sa kamere frekvencijom 25 FPS i obra#uje ih u realnom vremenu: izme#u svakog dohvata informacija od senzora kamere vr"i se analiza i obrada prethodno dohva!enih 2
Slika 1. Slika registrovana senzorom kamere sa uklju$enim flash osvjetljenjem podataka. Kako se svaka digitalna slika sastoji od tri komponente, tj. tri matrice intenziteta odre#enih boja (crvene, plave i zelene), aplikacija na raspolaganju i ima samo ove podatke. Kako je plava komponenta gotovo jednaka nuli (zbog izrazito crvene slike koja se snima), nju i zanemarujemo, a peak sr$anog impulsa je definisan peakovima intenziteta zelene i crvene boje (Sl. 2).
Slika 2. Intenziteti crvene i zelene boje na slici snimljenoj u toku jedne sesije Ve! na (Sl. 2) vidimo da se lokalni maksimumi i jedne i druge krive nalaze na pribli%no istom mjestu, tj u pribli%no isto vrijeme, "to potvr#uje ono ranije napisano, da peak sr$anog impulsa mo%emo odrediti objedinjavanjem peak vrijednosti ova dva intenziteta. Informacije o boji koje dobijamo u RGB formatu mo%emo pretvoriti u ne"to mnogo zgodnije za analizu: ako RGB vrijednosti konvertujemo u HSV (hue, saturation, value) i pratimo samo promjenu nijanse (hue), mo%emo mnogo jasnije upratiti razlike u frameovima. Hue ozna$ava dominantnu talasnu du%inu boje, tj. dominantnu boju i kre!e se u rasponu od 0 do 360 i najbolje oslikava male promjene boje, "to upravo treba za ovu aplikaciju: promjene boje su jednostavno golim okom neprimijetne. Nakon konvertovanja RGB formata u HSV i snimanjem samo hue vrijednosti dobijamo sliku odakle ve! jasnije mo%emo vidjeti uzorak koji odgovara sr$anom impulsu (Sl. 3).
Slika 3. Promjena nijanse (hue) slike snimljene u toku jedne sesije Da bismo dobili ravniju funkciju sa manje oscilacija mo%emo primijeniti filter nepropusnik opsega sa jako uskim nepropusnim opsegom kako bismo odbacili DC komponentu i dobili "to je vi"e mogu!e glatku krivu (Sl. 4).
Slika 4. Filtriran signal promjene nijanse
Kori"tenjem ovih vrijednosti koje smo dobili filtriranjem i snimanjem u buffer mo%emo prikazati na displeju promjenu 3
sr$anog impulsa, i odre#enim algoritmima pro$itati informaciju o broju otkucaja u minuti. Zbog samog operativnog sistema koji kontroli"e senzor kamere i sam framework za video session, nismo uzimali sve vrijednosti od po$etka do kraja sesije, nego vrijednosti od kako je stabilizirana slika i pode"en fokus (koji je u ovom slu$aju automatski i kontrolisan od strane operativnog sistema). Kod ra$unanja broja otkucaja, jedna od opcija je da odredimo prosje$nu vrijednost dobijene funkcije na intervalu od stabiliziranja fokusa pa do kraja snimanja (u na"em konkretnom slu$aju 15 sekundi), te onda sve vrijednosti koje su manje od vrijednosti prosjeka pozitivnih ta$aka elimini"emo (kako bismo uklonili potencijalni "um i ne%eljene smetnje Sl. 5). Nakon toga pore#enjem svake vrijednosti sa 3 susjedne (ispred i iza trenutne) mo%emo dobiti stvarne vrijednosti peakova. Napisano pseudo kodom to bi izgledalo na sljede!i na$in:
for each value as vrijednosti[signal] if value > tri_ ispred i value<tri_iza peaks++;
Iz prilo%enog vidimo da je snimanje sr$anog impulsa tipi$an kauzalan sistem, dok izra$un broja otkucaja predstavlja akauzalan sistem, koji radi sa prethodno snimljenim vrijednostima.
Slika 5. Snimljene vrijednosti pulsa: samo pozitivne vrijednosti (gore) i samo pozitivne vrijednosti ve!e od prosjeka svih ta$aka (dole) IV. KAUZALAN ALGORITAM ZA DETEKCIJU OTKUCAJA Jo" jedan algoritam je implementiran i analiziran, a to je kauzalan algoritam za detekciju otkucaja koji radi real time, paralelno sa registrovanjem informacije sa senzora kamere na na$in da detektuje prolazak karakteristike kroz ta$ku y=0, gdje bi svaki prolazak zna$io jedan otkucaj. U ovom slu$aju pri samom snimanju promjene boje prsta, pazili smo na pojavu smetnji (zbog minimalnih pomjeranja prsta i sli$no) i sprije$ili pojavu ne%eljenih peakova jednostavnim prozorskim filterom propusnikom opsega. &irina prozora je 4 impulsa, tj. uzima 4 zadnje snimljene vrijednosti i trenutnu vrijednost poredi sa njima: ukoliko je manja, ne!e je snimiti u buffer, odnosno ne!e je prikazati. Pseudo kod bi izgledao na sljede!i na$in:
if ( snimljeno_uzoraka>5) { if(trenutna_vrijednost<buffer[n] or trenutna_vrijednost<buffer[n-1] or trenutna_vrijednost<buffer[n-2] or trenutna_vrijednost<buffer[n-3]) trenutna_vrijednost=0; }
"to je omogu!ilo jako $ist signal i dosta manje osjetljiv na smetnje. Kako se radi u ovom slu$aju o kauzalnom sistemu, brojanje i registracija peakova je mogu!a u realnom vremenu, paralelno sa snimanjem novih vrijednosti. Kako smo ve! rekli, prelazak iz negativnog dijela koordinatne ravni u pozitivni zna$i jedan novi peak.
if ( trenutna_vrijednost>0 and zadnja==prelaz_u_negativno) { otkucaji++; zadnja=prelaz_u_pozitivno; } if ( trenutna_vrijednost<=0 and zadnja==prelaz_u_pozitivno) zadnja=prelaz_u_negativno;
Drugi algoritam se pokazuje kao ta$niji i efikasniji u slu$aju da imamo dobro filtriran signal, bez ne%eljenih peakova blizu stvarnih peakova koji ozna$avaju sr$ani impuls (uzrokovanih pomjeranjem prsta, lo"om pozicijom prsta i sli$no), dobro je otporan na nivo osvijetljenosti (intenzitet pritiska prsta na so$ivo kamere). Prvi algoritam (akauzalni) se pokazao efikasnijim u radu u uslovima lo"ije filtriranog signala, gdje sam mo%e odlu$iti koji peak je zaista sr$ani impuls, i bolje podnosi slabi "um u vidu fluktuacija intenziteta svjetla oko apscise (dok kauzalni algoritam svaki prelazak iz negativnog u pozitivni dio registruje kao novi sr$ani impuls, negledaju!i okolne vrijednosti i sam intenzitet osvijetljenosti). Na Sl. 6 i Sl. 7 nalaze se oblici krive u razli$itim fazama: na Sl. 6 se nalazi izvorna kriva sa podacima dobivenim sa senzora kamere i primijenjenim osnovnim filterom nepropusnikom opsega radi eliminacije DC "uma. Na Sl. 7 se nalazi kriva sa filtriranim podacima pomo!u prozorskom 4
pomi$nog filtera o kojem je ranije pisano. Jasno se vidi da se nakon primjene ovog filtera za svaki sr$ani impuls de"ava ta$no jedan prelazak krive preko apscise, "to omogu!ava efikasno brojanje impulsa (brojanje ovakvih prelazaka). I na kraju i grafi$ki je predstavljena usporedba kauzalnog i akauzalnog algoritma u razli$itim uslovima (Sl. 8). Snimanje i analiza krivih, uvid u efikasnost i rad algoritama su vr"eni pomo!u programskog paketa Matlab.
Slika 6. Kriva snimljenog sr$anog impulsa
Slika 7. Kriva snimljenog sr$anog impulsa filtrirana pomi$nim prozorskim filterom
Apliciran prozorski filter i dovoljno jako pritisnut prst Apliciran prozorski filter i nedovoljno jako pritisnut/nemiran prst
Slika 8. Usporedba algoritama pri razli$itim uslovima rada V. ZAKLJU'AK U radu su analizirana dva razli$ita algoritma koji omogu!avaju mjerenje sr$anog pulsa primjenom Apple mobilnih ure#aja. Svaki od algoritama ima svoje prednosti i mane. Kauzalni algoritam se pokazuje kao ta$niji i efikasniji u slu$aju da imamo dobro filtriran signal, bez ne%eljenih peakova blizu stvarnih peakova koji ozna$avaju sr$ani impuls (uzrokovanih pomjeranjem prsta, lo"om pozicijom prsta i sli$no), dobro je otporan na nivo osvijetljenosti (intenzitet pritiska prsta na so$ivo kamere). Akauzalni algoritam se pokazao efikasnijim u radu u uslovima lo"ije filtriranog signala, gdje sam mo%e odlu$iti koji peak je zaista sr$ani impuls, i bolje podnosi slabi "um u vidu fluktuacija intenziteta svjetla oko apscise (dok kauzalni algoritam svaki prelazak iz negativnog u pozitivni dio registruje kao novi sr$ani impuls, negledaju!i okolne vrijednosti i sam intenzitet osvijetljenosti). Za eventualnu modifikaciju mjernog sistema mogu!e je i!i u pravcu izradu softverskog rje"enja koji objedinjava dobre strane akauzalnog i kauzalnog algoritma, naravno uva%avaju!i i daljnji razvoj hardvera mobilnih ure#aja, te "irenje aplikacije i na druge operativne sisteme. 5
ZAHVALNICA Projekat je realizovan kao samostalni studentski projekat, a u cilju dalje obrade ove problematike autor !e istu temu dodatno obraditi i u okviru zavr"nog rada na prvom ciklusu studija iz predmeta Razvoj softvera pod mentorstvom dr. sc. Amera Hasanovi!a, van. prof na Fakultetu elektrotehnike Univerziteta u Tuzli, kome se autor zahvaljuje na podr"ci. Autor tako#e duguje zahvalu za tehni$ku podr"ku dr. sc. Damiru Ismailovi!u, docentu na Tehni$kom univerzitetu u Minhenu. LITERATURA [1] R. Ani$i!, D. Kr$um, Monitor sr$anog pulsa, Stru$ni rad, Infoteh- Jahorina , 2012. [2] V. Drndarevi!, Personalni ra$unari u sistemima merenja i upravljanja, Akademska misao, Beograd, 2003. [3] R. Baican, D. Necsulescu, Applied Virtual Instrumentation, WIT Press Publishing, 2000. [4] G. Webster, Medical Instrumentation: Application and Design. 3rd Ed. Philadelphia: W.B. Saunders Company, 1998. [5] Maja Strgar Kure$i!, Kontrola boja - od percepcije do mjerenja, Katedra za reprodukcijsku fotografiju, Univerzitet u Zagrebu
ABSTRACT Today, development of medical equipment is more dependent than ever on the different software concepts. The main goal is production of precise and cheap instruments. Since cardiovascular measurements have a big role in different diseases prevention and treatment, one of the most commonly used parameters is actually heart rate. This work describes heart rate measuring system based on Apple mobile platform as an iPhone application. The application interacts with a built-in camera sensor and flashlight and starts a video session after checking all necessary things about hardware. Software implementation is done using Objective-C programming language in Xcode integrated development environment.
HEART RATE MEASUREMENT USING iOS APPLICATION Jasmin Ni"i!