Metoda dopplerowska impulsowa (Pulsed Wave)
Transkrypt
Metoda dopplerowska impulsowa (Pulsed Wave)
Spis treści 1 Metoda dopplerowska impulsowa (Pulsed Wave) 1.1 Demodulacja sygnału RF 1.1.1 Zadanie 1.2 Estymator autokorelacyjny 1.2.1 Rys teoretyczny 1.2.1.1 Estymator Millera-Rochwargera 1.2.2 Zadanie 1.3 Prezentacja Kolor 1.3.1 Zadanie 1.4 Filtracja obrazu 1.4.1 Rozpoznawanie ruchu 1.4.1.1 Zadanie 1.4.2 Filtr medianowy 1.4.2.1 Zadanie Metoda dopplerowska impulsowa (Pulsed Wave) Do dyspozycji mamy zestaw zrekonstruowanych danych RF (link) z 64 kolejnych nadań pod stałym kątem (zerowym) falą płaską o parametrach: f0 = 5.5e6 # Częstotliwość nadawcza [Hz] z_step = 3.079291762894534e-05 # Odległość między kolejnymi punktami w głębokości na siatce rekonstruowanego obrazu [m] PRF = 1000 # Pulse Repetition Frequency [Hz] T_PRF = 1./PRF # czas między kolejnymi nadaniami [s] Obrazowany jest przekrój fantomu przepływowego złożonego z rurek umieszczonych w materiale tkankopodobnym. Zdjęcie fantomu przepływowego. Schemat obrazujący przekrój fantomu odpowiadający w przybliżeniu płaszczyźnie obrazowania. Pompa wymusza jednostajny przepływ płynu krwiopodobnego znajdującego się w rurkach. Będziemy starali się wykorzystać metodę dopplerowską do stworzenia mapy obrazującej zwrot i prędkość przepływu. Średnie odchylenie dopplerowskie szacować będziemy przy użyciu estymatora autokorelacyjnego. Demodulacja sygnału RF Estymator autokorelacyjny stosowany jest na zdemodulowanym sygnale kwadraturowym I/Q (ang. In-Phase/Quadrature). Sygnał RF rejestrowany bezpośrednio z przetworników odbiorczych jest sygnałem rzeczywistym (zerowa część urojona) o pasmowej charakterystyce widmowej. Informacja istotna z naszego punktu widzenia położona jest w paśmie, którego środek znajduje się częstotliwości nadawczej; szerokość tego pasma zależna jest od fizycznych właściwości głowicy ultradźwiękowej i nazywana jest pasmem przenoszenia głowicy. Demodulacja jest operacją pozwalającą na przekształcenie takiego sygnału w sygnał zespolony o paśmie położonym wokół częstotliwości zerowej. Taki zabieg pozwala na zmniejszenie częstotliwości próbkowania potencjalnie poniżej częstotliwości Nyquista określonej dla składowych sygnału niezdemodulowanego. Widmo sygnału: a) przed demodulacją; b) po demodulacji; c) po demodulacji i filtrowaniu. Demodulację możemy przeprowadzić zarówno na danych surowych RF, jak i na danych po rekonstrukcji. W naszym wypadku zastosujemy to drugie rozwiązanie. Na początku stworzymy funkcję dokonującą demodulacji każdego z obrazów, tj. dla każdej próbki o współrzędnych gdzie - sygnał po demodulacji; - sygnał przed demodulacją; - czas odpowiadający momentowi akwizycji próbki z danej głębokości; możemy przyjąć uproszczone założenie, że: ; jak widać, pierwszy wymiar (szerokość) jest w naszej procedurze nieistotny. Po demodulacji sygnał należy przefiltrować dolnoprzepustowo w zakresie pasma podstawowego (tzw. baseband). Dla naszych danych wystarczający powinien być filtr o częstotliwości odcięcia równej 5.55MHz. Zadanie 1. Zbadać widmo amplitudowe sygnału przed i po demodulacji (po filtrowaniu). Jak zmieniło się widmo? Gdzie jest położona średnia widma? Czy rozkłady dla ujemnych i dodatnich częstotliwości są swoimi odbiciami? 2. Porównać widmo amplitudowe sygnału zdemodulowanego przed i po filtracji. Jakich składowych w częstości się pozbyliśmy (nie licząc szumu)? 3. Zmienić w demodulacji wartość częstotliwości nośnej (np. zmniejszyć o połowę) i ponownie porównać widmo przed i po demodulacji. Estymator autokorelacyjny Rys teoretyczny Dotychczas traktowaliśmy rekonstruowane obrazy jako sygnały dwuwymiarowe. Teraz, do zmierzenia średniej prędkości obiektów poruszających się w danym punkcie, konieczna będzie analiza wielu następujących po sobie obrazów, które zostały zebrane ze stałym interwałem czasowym (tzw. PRF - Pulse Repetition Frequency). W poniższych rozważaniach pomijamy wymiary przestrzenne - całe rozumowania przeprowadzone są dla sygnału na ustalonej głębokości i szerokości. Należy mieć na uwadze, że w praktyce ciężko mówić o estymacji prędkości w punkcie, ponieważ w naszej procedurze estymacji uwzględniamy efektywnie informacje z pewnego obszaru pomiarowego (energia danego piksela zawiera informację z pewnej objętości pomiarowej, co wynika z kształtu wiązki ultradźwiękowej). Średnią prędkość będziemy mogli obliczyć korzystając ze średniego przesunięcia dopplerowskiego w oparciu o szkolny wzór na częstotliwość Dopplera: , gdzie średnia prędkość w punkcie pomiarowym; kąt między kierunkiem przepływu a wiązką nadawczą. Przesunięcie dopplerowskie jest różnicą między średnią częstotliwością sygnału nadanego a średnią częstotliwością sygnału odebranego (pochodzącego od rozpraszaczy przemieszczających się w kierunku do lub od głowicy). Przypomnijmy, że zdemodulowany sygnał jest sygnałem o widmie pasmowym położonym w pobliżu częstości zerowej. Pozwala nam to przyjąć, że średnie przesunięcie częstotliwości odpowiada średniej częstotliwości tego sygnału . Średnią częstotliwość możemy estymować na wiele sposób - np. licząc średnią ważoną z widma otrzymanego przez dyskretną transformację Fouriera. My zastosujemy do tego estymator autokorelacyjny[1], oparty na czasowej reprezentacji sygnału. Średnia częstość kołowa widma dopplerowskiego może być zdefiniowana jako Jednocześnie, przy założeniu słabej stacjonarności sygnału dopplerowskiego, na mocy twierdzenia Wienera-Chinczyna, funkcję autokorelacji tego sygnału możemy wyrazić jako: Różniczkując powyższe dostajemy: oraz . Stąd, częstotliwość średnia możemy być również przedstawiona jako W celu uproszczenia obliczeń przyjmuje się często następujące uproszczenie , gdzie jest funkcją parzystą i jest funkcją nieparzystą. Wtedy i stąd oraz . Korzystając ze wcześniejszych równań dostajemy , gdzie - czas między kolejnymi strzałami (odwrotność PRF). Estymator Millera-Rochwargera Wartość estymować możemy np. w oparciu o estymator Millera-Rochwargera [2]. Jest to estymator maksymalnej wiarygodności (maximum likehood estimator). Estymator ten jest skonstruowany dla par obserwacji zespolonego procesu próbkowanych w równych odstępach czasu (w naszym przypadku ). W naszym przypadku jako pary obserwacji traktuje się pary próbek z kolejnych par następujących po sobie pomiarów (oddzielonych wartością ). Otrzymujemy wtedy oszacowanie wartości autokorelacji w oknie czasowym długości Pamiętając zależność między średnią częstotliwością dostajemy a średnią częstością kołową Zadanie Proszę przygotować funkcję estymującą częstotliwość średnią w oparciu o powyższy estymator dla jednowymiarowego sygnału zespolonego. Prezentacja Kolor Po estymacji średnich prędkości w obszarach odpowiadających punktom na siatce użytej do rekonstrukcji obrazu, możemy nałożyć taką mapę na obraz B-mode w celu uzyskania obrazu "Kolor". Mając tablicę z danymi B-mode oraz tablicę prędkości, możemy otrzymać połączony obraz za pomocą poniższego skryptu: # BMode - tablica zrekonstruowanych danych po przefiltrowaniu, obwiedni itp. # flow - tablica przepływów Frame = Image.fromarray(np.uint8(cm.bone(BMode)*255)) flowMask = np.copy(flow) flowMask = np.abs(flowMask) flowMask = flowMask/(np.max(flowMask))*255 flow = flow+np.abs(np.min(flow)) flow = flow/np.max(flow) flow = Image.fromarray(np.uint8(cm.jet(flow)*255)) flowMask = Image.fromarray(np.uint8(flowMask), 'L') flow.putalpha(flowMask) Frame.paste(flow, (,), flow) Zadanie Zaimplementować funkcję otrzymującą na wejściu trójwymiarową tablicę zawierającą obrazy RF z kolejnych chwil pomiarowych i zwracającą obrazy z nałożoną na nią mapą prędkości obliczonych przy użyciu estymatora autokorelacyjnego. Filtracja obrazu Mapa częstości estymowana metodą autokorelacyjną jest dość wrażliwa na błędy estymacji powodowane m.in. obecność w sygnale informacji z dużego obszaru pomiarowego. Stosować można kilka metod mających na celu poprawę wynikowego obrazu - progowanie (zignorowanie względnie małych prędkości), rozpoznawanie ruchu i filtrowanie. Rozpoznawanie ruchu Jedną z pierwszy obserwacji jakiej można dokonać, to zauważenie, że nasza mapa jest niezerowa w punktach w których nie spodziewamy się żadnego ruchu. Pewnym rozwiązaniem tego problemu może być zastosowanie prostego kryterium rozpoznawania ruchu. Możemy przyjąć, że sygnał pochodzący od struktur pozostających w spoczynku powinien być stały w czasie. W praktyce sygnały takie różnić będą się głównie o składową szumu elektronicznego. Jednocześnie, sygnał pochodzący od ruchomych struktur będzie charakteryzować się względnie dużą zmiennością w czasie. Zadanie Zaimplementować procedurę zerującą estymatę prędkości w punkcie, jeśli średnia różnica między wartościami sygnału w tym punkcie w kolejnych chwilach czasu jest względnie mała (próg proszę dobrać eksperymentalnie - zaczynając np. od progu 10% średniej różnicy w obrazie). Filtr medianowy Dobrym rozwiązaniem w tego typu przypadkach jest zastosowanie filtru medianowego. Filtr medianowy przekształca wartość w punkcie na medianę wartości sygnału w ustalonej liczbie sąsiednich próbek (w obu wymiarach): , gdzie - rozmiar okna filtru. Filtr taki usuwa skrajne wartości w dużo większym stopniu niż np. filtr oparty o średnią arytmetyczną. W bibliotece scipy istnieje gotowa funkcja filtrująca tablicę filtrem medianowym: scipy.signal.medfilt2d(array, K) Zadanie Porównać mapy prędkości przed i po filtracji medianowej (dla kilku różnych rozmiarów okna filtracji). 1. ↑ Kasai, Chihiro, et al. "Real-time two-dimensional blood flow imaging using an autocorrelation technique." IEEE Trans. Sonics Ultrason 32.3 (1985): 458-464. 2. ↑ Miller, Kenneth, and M. Rochwarger. "A covariance approach to spectral moment estimation." IEEE Transactions on Information Theory 18.5 (1972): 588-596.