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. Funkcja falkowa i jej właściwości. 2. Funkcja skalująca i jej właściwości. 3. Ciągła i dyskretna transformacja falkowa różnice. 4. 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. 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. 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 1- wszym 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. 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. 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: PRD = n i= 1 f ( i) n i= 1 f ( i) ^ f ( i) 2 2 100 gdzie f(i) i f^(i) są porównywanymi sygnałami. 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. MSD = n i=1 f (i) f^ (i) n 2 gdzie f(i) i f^(i) są porównywanymi sygnałami. 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. Imię i nazwisko Grupa Data 1. 2. Punkt ćwiczenia Liczba punktów Uzyskana liczba punktów Uwagi prowadzącego 1 1,5 2 2 3 2,5 10