Warning
This page is located in archive.

Zobrazení a zpracování EKG signálu

Zadání

Vytvořte kód pro načtení, zpracování a zobrazení signálu EKG.


Následující části úlohy jsou povinné!

Jednotlivé úkoly pro část úlohy tvořenou na cvičení jsou:

  1. Načtení signálu EKG a impulsové odezvy filtru (0.2 bodu)
    • Signál EKG společně s dalšími informacemi o signálu je v souboru ekg.csv.
    • Soubor kromě signálu 1) obsahuje také název svodu EKG 2) a informaci o vzorkovací frekvenci a senzitivitě signálu 3).
    • Impulsová odezva filtru je umístěna v souboru impulsova_odezva.txt.
    • Jednotlivé části souborů nahrajte do vhodných datových struktur vhodných datových typů 4).
  2. Filtrace signálu (konvoluce signálů EKG a impulsové odezvy) (0.3 bodu)
    • Kód pro konvoluci je dostupný v souboru Convolution.java. Tento kód můžete přímo použít.
    • Pro správnou délku výsledného signálu je potřeba vhodným způsobem upravit výstup konvoluce.
  3. Vykreslení signálů EKG (0.5 bodu)
    • Vykreslení EKG signálů bude v jednom obsahovat jak nevyfiltrovaný tak vyfiltrovaný signál (signály budou odlišeny minimálně barvou).
    • U vykreslení bude možné změnit koeficient horizontálního i vertikálního měřítka (pomocí nastavení jedné hodnoty pro každou škálu).
    • Vykreslení by mělo mít ošetřeno podvzorkování signálu.
    • Pokud bude Vaše vykreslení založeno pouze na vynechání hodnot, lze jej hodnotit maximálně 0.2 body!
  4. Detekce a vykreslení vrcholů R kmitů (0.5 bodu)
    • Pro detekci vrcholů R kmitů doporučuji použít prahování a detekci špiček (viz. poznámky k implemetaci)
    • Jako hodnotu prahu doporučuji volit hodnoty > 1 mV 5)
    • Vykreslení proveďte jednoduše, např. vykreslením vertikálních úseček u detekovaných bodů (viz. Obrázek 1).
  5. Vytvoření a vykreslení tachogramu (záznamu průběhu srdečního rytmu v čase) z detekovaných vrcholů R kmitů (0.5 bodu)
    • Tachogram vytvořte jako samostatný signál z hodnot poloh vrcholů R kmitů (viz. Obrázek 2).
    • Hodnoty tachogramu budou ve vteřinách.
    • Nezapomeňte, že tachogram musí mít jako hodnoty časové osy detekované polohy vrcholů R kmitů.

Následující části úlohy jsou povinné!

Jednotlivé úkoly pro domácí část úlohy jsou:

  1. Vytvoření časové osy v závislosti na vzorkovací frekvenci a zvoleném koeficientu měřítka časové osy. Tzn. časová osa bude ve vteřinách a počet vzorků na vteřinu bude odpovídat vzorkovací frekvenci a zvolené škále (škála = 1 je co vzorek to pixel) (0.5 bodu)
    1. pro signál EKG (0.25 bodu)
    2. pro vytvořený tachogram (0.25 bodu)
  2. Vytvoření hodnotové osy v závislosti na sezitivitě a zvoleném koeficientu měřítka hodnotové osy. Tzn. hodnotová osa bude v mV a hodnota v pixelech bude odpovídat hodnotě ze souboru upravené podle senzitivity a zvolené škále (škála = 1 odpovídá stavu, kdy počet pixelů je přímo dán hodnotou signálu načtenou ze souboru) (0.5 bodu)
    1. pro signál EKG (0.25 bodu)
    2. pro vytvořený tachogram (0.25 bodu)

Následující části úlohy jsou nepovinné!

Jednotlivé úkoly bonusové části úlohy:

  1. Úpravu měřítka os tak, aby odpovídaly zvyklostem v oblasti EKG signálu 6). (0.2 bodu)
  2. Přidání vykreslení souřadnicové mřížky k osám grafů. (0.2 bodu)
  3. Vytvoření ovládacího prvku pro měřítko časové osy, tak aby odpovídaly zvyklostem v oblasti EKG signálu. (0.3 bodu)
    1. pro signál EKG (0.15 bodu)
    2. pro vytvořený tachogram (0.15 bodu)
  4. Vytvoření ovládacího prvku pro měřítko hodnotové osy, tak aby odpovídaly zvyklostem v oblasti EKG signálu. (0.3 bodu)
    1. pro signál EKG (0.15 bodu)
    2. pro vytvořený tachogram (0.15 bodu)

Poznámky k implementaci

Poznámky k úkolům z části úlohy tvořené na cvičení:

add 1.:

  • Pro načítání dat z ascii souborů doporučuji použít metody BufferedReader a FileReader (či jejich obdobu).
  • Využijte možnosti vyšších programovacích jazyků, které obsahují např. také funkce pro práci s třídou String.
  • Nezapomeňte načtená data přetypovat na vhodný datový typ.

add 2.:

  • Při číslicové filtraci dochází k určitému zpoždění signálu. Avšak když si uvědomíte jaký výsledek má konvoluce, dokážete toto zpoždění odstranit.

add 3.:

add 4.:

  • Detekce vrcholů R kmitů je prosté procházení pole hodnot signálu a hledání indexů na nichž hodnoty odpovídají:
    • jednak podmínce prahování
    • jednak detekci vrcholu, která představuje implementaci podmínky x(i-1) < x(i) > x(i+1)

add 5.:

  • Tachogram je tvořen vzdálenostmi jednotlivých R vln (tedy RR intervaly).
  • Při vytvoření tachogramu nejprve zjistíte rozdíly mezi jednotlivými detekovanými indexy a následně tyto rozdíly musíte převést na čas.

Obrázek 1: Příklad zobrazení signálů EKG a detekovaných vrcholů R kmitů

Obrázek 1: Příklad zobrazení signálů EKG a detekovaných vrcholů R kmitů

Obrázek 2: Příklad zobrazení průběhu srdečního rytmu

Obrázek 2: Příklad zobrazení průběhu srdečního rytmu

Hodnocení

  • Povinné: Na cvičení je hodnocení maximálně 2 body.
  • Povinné: Domácí úloha je hodnocena maximálně 1 bodem.
  • Nepovinné: Bonus (domácí úloha) je hodnocena maximálně 1 bodem.

Důležité: Před odevzdáním si ověřte, zda práce splňuje jednotlivé body zadání PŘESNĚ. Pokud si nejste jisti, co některá část zadání znamená, včas se ptejte. Při nedodržení specifikace neočekávejte body z milosti.

Za část úlohy ze cvičení můžete získat až 2 body. Pokud nestihnete odevzdat na cvičení, musíte ji dopracovat doma (bez bodového ohodnocení).

Do dalšího cvičení máte možnost vypracovat domácí úlohu (a bonus), za jejíž splnění můžete získat další body. Odevzdává se prostřednictvím UploadSystemu, kontrola proběhne na dalším cvičení.

1)
třetí řádek souboru
2)
první řádek souboru
3)
druhý řádek souboru
4)
samotné proměnné či pole datových typů double, int, String, atd.
5)
Pozor! Před použitím v implementaci musí být tato hodnota upravena podle senzitivity.
6)
tj. pro horizontální osu 10, 25 a 50 mm/sec; pro vertikální osu 5 mm/mV, 10 mm/mV a 20 mm/mV
courses/17bieht/ecg_display_and_processing.txt · Last modified: 2016/05/09 14:30 by bursam