PSB lab 2 - Zakład Inżynierii Biomedycznej

Transkrypt

PSB lab 2 - Zakład Inżynierii Biomedycznej
Laboratorium Przetwarzania
Sygnałów Biomedycznych
Ćwiczenie 2
„Analiza sygnału EKG przy użyciu transformacji falkowej”
Opracowali:
- prof. nzw. dr hab. inż. Krzysztof Kałużyński
- inż. Tomasz Kubik
Politechnika Warszawska, Wydział Mechatroniki,
Instytut Metrologii i Inżynierii Biomedycznej,
Zakład Inżynierii Biomedycznej
Warszawa, 2011
1. Wstęp.
Celem ćwiczenia jest zapoznanie się z dekompozycją oraz rekonstrukcją sygnału przy
wykorzystaniu dyskretnej transformacji falkowej (ang. DWT- discrete wavlete transform).
Studenci odrabiający ćwiczenie zapoznają się z falkową dekompozycją sygnału EKG, badają
wpływ doboru produktów dekompozycji na wynik rekonstrukcji sygnału oraz dokonują oceny
stopnia kompresji sygnału EKG przy pomocy DWT.
W ćwiczeniu wykorzystywane będą falki biortogonalne, falki symlet oraz falki
Daubechies (Rys.1.). Literatura [3] podaje, iż falki biortogonalne są jednymi z dających
najlepsze rezultaty przy kompresji sygnału EKG z wykorzystaniem transformacji falkowej.
Rys. 1. Od lewej do prawej: falka biortogonalna ‘bior1.5’, falka symlet ‘sym4’, falka Daubechies ‘db4’
2. Wymagane wiadomości.
1.
2.
3.
4.
Funkcja falkowa i jej właściwości.
Funkcja skalująca i jej właściwości.
Ciągła i dyskretna transformacja falkowa – różnice.
Dekompozycja i rekonstrukcja falkowa: diadyczna dyskretna transformacja falkowa,
podział na podpasma, banki filtrów, współczynniki transformacji falkowej,
decymacja i interpolacja współczynników, filtry lustrzane.
5. Zastosowania analizy falkowej sygnału.
6. Podstawowe własności sygnału EKG.
3. Literatura
1. T. P. Zieliński „Cyfrowe przetwarzanie sygnałów. Od teorii do zastosowań, WKŁ,
Warszawa 2007.
2. J. T. Białasiewicz, Falki i aproksymacje, WNT, Warszawa 2000.
3. S.G. Miaou, S.N. Chao. Wavelet-Based Lossy-to-Lossless ECG Compression in a
Unified Vector Quantization Framework, IEEE Transactions on biomedical
engineering, March 2005
4. materiały wykładowe.
2
4. Spis niestandardowych funkcji Matlaba
wykorzystywanych podczas realizacji ćwiczenia.
sig = prepare(signal, n, dec, fd)
Funkcja odpowiadająca za wstępne przetworzenie sygnału przed analizą. Funkcja kolejno:
- przeprowadza filtracją dolnoprzepustową,
- dokonuje decymacji sygnału,
- ogranicza sygnał do początkowych n próbek.
Parametry wejściowe:
1. signal - sygnał wejściowy, który ma zostać poddany wstępnemu przetworzeniu;
2. n – ilość próbek sygnału, która ma zostać zachowana;
3. dec – krotność decymacji;
4. fd – częstotliwość graniczna filtru dolnoprzepustowego.
Parametry wyjściowe:
1. sig – wektor zawierający sygnał po wstępnym przetworzeniu.
Funkcja korzysta z filtru dolnoprzepustowego typu FIR (o skończonej odpowiedzi
impulsowej) rzędu 200. zaprojektowanego przy użyciu polecenia fir1.
Przykład użycia:
sig = prepare(signal, 1000, 5, 50);
Powyższe wywołanie spowoduje wstępne przetworzenie sygnału zawartego w wektorze
signal. Sygnał filtrowany jest dolnoprzepustowo filtrem o górnej częstotliwości granicznej
50 Hz, następnie częstotliwości próbkowania obniżana jest 5-krotnie, a na koniec pobierane
jest 1000 pierwszych próbek sygnału po decymacji. Wynik zwracany jest do wektora sig.
3
[C L aproks det] = DiR(signal, level, wave)
Funkcja przeprowadza dekompozycję falkową sygnału oraz rysuje wykresy współczynników
falkowych na poszczególnych poziomach dekompozycji. Funkcja przeprowadza następnie
rekonstrukcję poszczególnych produktów dekompozycji.
Parametry wejściowe:
1. signal – wektor zawierający kolejne próbki dekomponowanego sygnału;
2. level – ilość poziomów dekompozycji, na które rozkładany jest sygnał;
3. wave – rodzaj falki użytej do dekompozycji np. ‘bior1.5’, ‘sym4’, ‘db5’. Informacje
nt. Różnych falek można uzyskać wpisując do okna poleceń MATLABa komendę
waveinfo.
Parametry wyjściowe:
1. C - wektor zawierający współczynniki dekompozycji falkowej ułożone w formacie
zwracanym przez funkcję wavedec: [aproksymacja detale_poziom_ostatni
detale_poziom_ostatni-1 … detale_poziom_1];
2. L – wektor zawierający liczby współczynników w kolejnych produktach
dekompozycji umieszczonych w wektorze C. Wektor L zawiera kolejno: liczba
współczynników aproksymacji, ilość współczynników na poziomie level skali, liczba
współczynników na poziomie level-1 skali, …, liczba współczynników na poziomie 1wszym skali, liczba próbek sygnału;
3. aproks – wektor o długości C zawierający jedynie współczynniki aproksymacji
(pozostałe miejsca zapełnione zerami);
4. det – macierz o wymiarze „level x długość C” zawierająca w każdym wierszu
współczynniki detali na danym poziomie skali, uzupełniony zerami do długości
wektora C. Ostatni wiersz zawiera współczynniki detali na poziomie 1-wszym,
przedostatni na poziomie 2-gim, … itd.
Przykład użycia:
[C L aproks det] = DiR(signal, 4, ‘bior1.5’);
Funkcja przeprowadza dekompozycję sygnału zawartego w signal na 4 poziomach skali przy
użyciu falki biortogonalnej. Produkty rekonstrukcji umieszczone zostaną w zmiennych: C
(wszystkie współczynniki), aproks (aproksymacja), det (detale na 1, 2, 3 i 4 poziomie).
4
newC = quickCompress(C, n, draw)
Funkcja dokonująca kompresji produktów dekompozycji falkowej. Kompresja polega na
zachowaniu n współczynników o najwyższych wartościach bezwzględnych i zastąpienie
pozostałych zerami.
Parametry wejściowe:
1. C - wektor zawierający współczynniki dekompozycji falkowej ułożone w formacie
zwracanym przez funkcję wavedec: [aproksymacja detale_poziom_ostatni
detale_poziom_ostatni-1 … detale_poziom_1];
2. n – liczba zachowanych współczynników falkowych po kompresji;
3. draw – parametr determinujący rysowanie wykresu. Jeżeli przyjmuje wartość ‘plot’,
wywołanie funkcji spowoduje narysowanie wykresu współczynników falkowych
przed i po kompresji.
Parametry wyjściowe:
1. newC – wektor zawierający współczynniki dekompozycji falkowej, analogicznie do
wektora C, z tą różnicą, że współczynniki o najmniejszej wartości bezwzględnej są
zastępowane zerami. Ilość zachowanych współczynników określa parametr n.
Przykład użycia:
[newC, perc] = quickCompress(C, 50, ‘rysuj’);
Powyższe wywołanie spowoduje, z wektora C zostanie zachowanych 50% współczynników
rozwinięcia falkowego o największych wartościach bezwzględnych, które zostaną
umieszczone w wektorze newC na tych samych pozycjach, jak w wektorze C. Pozostałe
pozycje zostaną wypełnione zerami. Następnie na ekranie zostaną wyświetlone wykresy
współczynników przed i po kompresji wraz z informacją o procentowym współczynniku
kompresji, który określa stosunek liczby niezerowych współczynników przed kompresją i po
niej.
5
signal = rekonstruuj(aproks, det, num, L, wave)
Funkcja przeprowadza rekonstrukcję falkową sygnału z wykorzystaniem wybranych
produktów dekompozycji sygnału.
Parametry wejściowe:
1. aproks – wektor o długości C zawierający jedynie współczynniki aproksymacji
(pozostałe miejsca zapełnione zerami), jest produktem działania funkcji DiR;
2. det – macierz o wymiarze „level x długość C” zawierający w każdym wierszu
współczynniki dekompozycji detali na odpowiednim poziomie, uzupełnione zerami do
długości wektora C, jest produktem działania funkcji DiR. Ostatni wiersz zawiera
współczynniki na poziomie 1-wszym, przedostatni na poziomie 2-gim, … itd.;
3. num – wektor zawierający informację, z których poziomów detali przeprowadzana
jest rekonstrukcja sygnału, np. num = [1 3 4] oznacza, że użyte będą detale z 1, 3 i 4
poziomu.;
4. L – wektor zawierający liczby współczynników w kolejnych produktach rekonstrukcji
umieszczonych w wektorze C, kolejno: liczbę współczynników aproksymacji, liczbę
współczynników na poziomie level detali, liczbę współczynników na poziomie level-1
detali, …, liczbę współczynników na poziomie 1-wszym detali, liczbą próbek w
sygnale, jest produktem działania funkcji DiR;
5. wave – rodzaj falki użytej do rekonstrukcji np. ‘bior1.5’, ‘sym4’, ‘db5’. Informacje nt.
Różnych falek można uzyskać wpisując do okna poleceń MATLABa komendę
waveinfo.
Parametr wyjściowy:
1. signal – wektor zawierający kolejne zrekonstruowany sygnał.
Przykład użycia:
signal = rekonstruuj(aproks, det, [1 3 4], L, ‘bior1.5’);
Powyższe wywołanie spowoduje, że do zmiennej signal zapisany będzie sygnał
zrekonstruowany przy użyciu falki biortogonalnej i współczynników falkowych zapisanych
w zmiennych: aproks i det. Do rekonstrukcji użyte zostaną współczynniki detali z 1, 3 i 4
poziomu dekompozycji.
6
sd = PRD(root, signal, draw)
Funkcja obliczająca względną miarę różnicy dwóch sygnałów w procentach:
^


f
(
i
)
−
f
(i )
∑


i =1
n
PRD =
n
∑ f (i)
2
× 100
2
i =1
gdzie f(i) i f^(i) są porównywanymi sygnałami.
Parametry wejściowe:
1. root – sygnał oryginalny.
2. signal – sygnał porównywany.
3. draw – parametr determinujący wykonanie rysunku. Jeżeli jest równy ‘plot’ wykonany
zostanie rysunek na którym umieszczone zostaną wykresy sygnałów oryginalnego i
porównywanego.
Parametr wyjściowy:
1. sd – wartość błędu średniokwadratowego mocy.
sd = MSD(root, signal, draw)
Funkcja obliczająca pierwiastkowy błąd średniokwadratowy (RMSE) między dwoma
sygnałami.
^


∑ f (i) − f (i)
MSD = i=1
n
2
n
gdzie f(i) i f^(i) są porównywanymi sygnałami.
Parametry wejściowe:
1. root – sygnał oryginalny.
2. signal – sygnał porównywany.
3. draw – parametr determinujący wykonanie rysunku. Jeżeli jest równy ‘rysuj’ wykonany
zostanie rysunek na którym umieszczone zostaną oba wykresy sygnałów oryginalnego
i porównywanego.
Parametr wyjściowy:
1. sd – wartość błędu średniokwadratowego.
7
5. Przebieg ćwiczenia.
1. Przygotowanie sygnału.
Z pliku tekstowego ekg60.txt wczytać do przestrzeni roboczej sygnał EKG. Można to
przeprowadzić przy pomocy polecenia dlmread. Analizowany sygnał został spróbkowany z
częstotliwością 1 kHz.
Narysować na wykresie przebieg sygnału (plot) oraz jego spektrogram. Wykorzystać
standardowe polecenie MATLABa spectrogram:
spectrogram(x,window,overlap,nfft,fp,’yaxis’)
gdzie, x – sygnał analizowany, window – długość (w próbkach) okna danych, overlap –
stopień (w próbkach) nakładania się okien danych, nfft – długość transformaty Fouriera, fp =
częstotliwość próbkowania, ‘yaxis’ określa oś poziomą jako oś czasu.
Na podstawie spektrogramu dobrać parametry wstępnego przetwarzania tak, żeby
spełniał następujące wymagania:
- częstotliwość próbkowania powinna wynosić 200 Hz;
- sygnał powinien zawierać około 10 ewolucji QRS;
- sygnał powinien zawierać jak najniższy poziom zakłóceń przy możliwie najmniejszej
utracie informacji użytecznej;
Przykład uzycia:
sig = prepare(signal, 1000, 5, 50); - zwrócenie do wektora sig sygnału
signal zawierającego 1000 próbek, po odfiltrowaniu częstotliwości powyżej 50 Hz i
pięciokrotnej decymacji próbek.
Kolejne punkty ćwiczenia wykonywać na wstępnie przetworzonym sygnale.
2. Dekompozycja falkowa sygnału EKG
Używając funkcji DiR przeprowadzić falkową dekompozycję sygnału EKG. Użyć falki
biortogonalnej ‘bior1.5’ a dekompozycję przeprowadzić na 5 poziomach. Ocenić na
podstawie wartości współczynników dekompozycji oraz uzyskanych przebiegów funkcji
zrekonstruowanych, detale których poziomów zawierają najbardziej istotne informacje
sygnału.
Przykład:
[C L aproks det] = DiR(signal, 4, ‘bior1.5’); - dekompozycja sygnału
signal na 5 poziomów przy użyciu falki ‘bior1.5’.
Analogiczną analizę przeprowadzić dla innych dwóch wybranych przez siebie falek.
Zaleca się zastosowanie falek z rodziny symlet ‘sym4’ oraz falek Daubechies ‘db4’.
Informacje o zaimplementowanych w MATLABie rodzinach falek można uzyskać wpisując
w oknie poleceń MATLABa polecenie waveinfo.
Przeprowadzić dekompozycję przy uzyciu innej falki, np. ‘db10’
8
Określić pasma częstotliwościowe poszczególnych produktów dekompozycji.
Omówić różnice w dekompozycji i rekonstrukcji przy użyciu różnych rodzajów falek.
3. Rekonstrukcja falkowa sygnału EKG
Używając funkcji rekonstruuj dokonać rekonstrukcji sygnału EKG przy użyciu różnych
produktów dekompozycji uzyskanych w punkcie 2., tj. uzyskać kilka różnych przebiegów
sygnału, każdy zrekonstruowany przy użyciu innego zestawu produktów dekompozycji.
Zrekonstruować sygnały zdekomponowane przy użycu falek ‘bior1.5’ oraz ‘db4’.
Przykład:
signal = rekonstruuj(aproks, det, [1 3 4], L, ‘bior1.5’); rekonstrukcja sygnału przy użyciu falki ‘bior1.5’ na podstawie aproksymacji aproks,
macierzy detali det z wykorzystaniem poziomów 1, 3 i 4.
Rekonstrukcje wykonać dla trzech kombinacji uwzględnianych produktów dekompozycji:
a. rekonstrukcja na podstawie wszystkich poziomów detali, ale bez aproksymacji,
b. rekonstrukcja na podstawie aproksymacji i detali na poziomach 1, 2 i 3,
c. rekonstrukcje na podstawie aproksymacji i detali na poziomach 2, 3, 4 i 5.
Zbadać, jak dobór produktów dekompozycji oraz obecność aproksymacji wpływa na
jakość rekonstrukcji sygnału. Rekonstrukcję bez aproksymacji można przeprowadzić podając
jako parametr aproks wypełniony zerami wektor o długości równej wektorowi C będącego
wynikiem działania funkcji DiR (np. zeros(1,length(C)).
Ilościową ocenę jakości rekonstrukcji sygnału przeprowadzić przy użyciu PRD oraz
MSD.
Omówić wpływ doboru produktów dekompozycji na rekonstrukcję sygnału.
Wyjaśnić znaczenie kryterium oceny jakości rekonstrukcji sygnału (PRD, MSD) i
zinterpretować uzyskane wyniki porównania sygnałów oryginalnego i zrekonstruowanego.
Wskazać, które produkty dekompozycji falkowej sygnału EKG mają największy wspływ na
wynik rekonstrukcji takiego sygnału.
9
4. Sprawozdanie
Ćwiczenie nr 2
Data................................
L.p.
1.
2.
Imię i nazwisko
Punkt
ćwiczenia
Liczba
punktów
1
1,5
2
2
3
2,5
Grupa
Uzyskana liczba punktów
10
Data
Uwagi
prowadzącego