Spis treści 1 Metoda dopplerowska impulsowa (Pulsed Wave) 1.1 Demodulacja sygnału RF 1.1.1 1.2 Estymator autokorelacyjny 1.2.1 Rys teoretyczny 1.2.1.1 Estymator Millera-Rochwargera 1.2.2 1.3 Prezentacja Kolor 1.3.1 1.4 Filtracja obrazu 1.4.1 Rozpoznawanie ruchu 1.4.1.1 1.4.2 Filtr medianowy 1.4.2.1 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. 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ą 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) 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. 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) 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.