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.