USG/PWI: Różnice pomiędzy wersjami
Linia 2: | Linia 2: | ||
W obrazowaniu fala płaską (PWI - Plane Wave Imaging) wykres opóźnień nadawczych względem przetworników ma postać prostej - przetworniki odpalane są w równych odstępach czasu, aby uformować wiązkę o (w przybliżeniu) płaskim froncie falowym. W przeciwieństwie do rozważanej wcześniej metody klasycznej, wiązka taka jest nieogniskowana - stąd oczekujemy podobnej ostrości / rozdzielczości na całej głębokości pomiarowej. O froncie falowym w PWI możemy myśleć jak o froncie fali pochodzącej ze źródła punktowego (ognisko wirtualne) oddalonego istotnie daleko za aperturą. <br> | W obrazowaniu fala płaską (PWI - Plane Wave Imaging) wykres opóźnień nadawczych względem przetworników ma postać prostej - przetworniki odpalane są w równych odstępach czasu, aby uformować wiązkę o (w przybliżeniu) płaskim froncie falowym. W przeciwieństwie do rozważanej wcześniej metody klasycznej, wiązka taka jest nieogniskowana - stąd oczekujemy podobnej ostrości / rozdzielczości na całej głębokości pomiarowej. O froncie falowym w PWI możemy myśleć jak o froncie fali pochodzącej ze źródła punktowego (ognisko wirtualne) oddalonego istotnie daleko za aperturą. <br> | ||
O ile nie ograniczają nas możliwości techniczne sprzętu (np. mała moc obliczeniowa), w PWI staramy się nadawać i odbierać pełną aperturą. Punktem wyjścia jest sytuacja w której wszystkie przetworniki nadają jednocześnie. Obrót wykresu opóźnień nadawczych odpowiada przesunięciu ogniska wirtualnego. | O ile nie ograniczają nas możliwości techniczne sprzętu (np. mała moc obliczeniowa), w PWI staramy się nadawać i odbierać pełną aperturą. Punktem wyjścia jest sytuacja w której wszystkie przetworniki nadają jednocześnie. Obrót wykresu opóźnień nadawczych odpowiada przesunięciu ogniska wirtualnego. | ||
+ | |||
+ | Parametry potrzebne do dalszej pracy: | ||
+ | <source lang = python> | ||
+ | f0=5.5e6 # Częstotliwość nadawcza przetworników [Hz] | ||
+ | fs=50e6 # Częstotliwość próbkowania [Hz] | ||
+ | pitch = 0.00021 # Deklarowana odległość między środkami przetworników nadawczo-odbiorczych | ||
+ | |||
+ | na = 11 # Liczba nadań | ||
+ | |||
+ | NT=192 # Liczba przetworników w pełnej aperturze | ||
+ | Ntr=192 # Pełna subapertura nadawcza | ||
+ | |||
+ | </source> | ||
+ | |||
+ | ===Surowe dane RF=== | ||
+ | Do dyspozycji mamy ponownie dwa pliki z pomiarów na fantomie nitkowym (usg2_nitki.npy) i cystowym (usg2_cysty.npy). W każdym pliku znajduje się trójwymiarowa tablica <math>NT\times N \times na </math> | ||
+ | <br> gdzie <math>N</math> odpowiada czasowi rejestracji (maksymalnej głębokości obrazowanej) danych z pojedynczego nadania. | ||
+ | Tak jak na poprzednich ćwiczeniach, proszę zacząć od podejrzenia tablicy RF dla kilku kolejnych nadań. Czy z samych surowych danych RF da się określić kształt frontu falowego? | ||
===Rekonstrukcja obrazu z pojedynczego strzału=== | ===Rekonstrukcja obrazu z pojedynczego strzału=== | ||
− | + | W przypadku klasycznej rekonstrukcji dokonywaliśmy najpierw przesunięcia w czasie próbek RF, a następnie przesunięty (syntezowany) obraz interpolowaliśmy do siatki odpowiadającej rzeczywistym proporcjom obrazowanej struktury. W przypadku PWI wygodniej będzie nam najpierw określić siatkę, a następnie dla kolejnych punktów na tej siatce liczyć wartość natężenia. | |
+ | Poniższy kod wygeneruje dwie tablice w których przechowywane są współrzędne poziome i pionowe w [m] kolejnych punktów siatki. Siatka jest generowana przy założeniu, że punkt (0,0) znajduje się w środku apertury. | ||
+ | <source lang = python> | ||
+ | maxWidth=0.02 # Połowa szerokości obrazowania [m] | ||
+ | l2mbd = c/(fs*2) | ||
+ | ar=int(2*maxWidth/l2mbd)+1 #Określamy gęstość poziomą siatki zgodnie z twierdzeniem ??? | ||
+ | maxdepth=0.0610304 #maksymalna głębokość [m] | ||
+ | mindepth=0.00298 # minimalna głębokość [m] | ||
+ | br=(maxdepth-mindepth)/((maxWidth*2)/ar) | ||
+ | |||
+ | X0 = np.linspace(-maxWidth,maxWidth,ar) | ||
+ | R0 = np.linspace(mindepth,maxdepth,br) | ||
+ | Grid_div_x,Grid_div_z = np.meshgrid(X0,R0,indexing='xy') #tablice ze współrzędnymi | ||
+ | </source> | ||
+ | |||
===Złożenie (compounding) obrazów z nadań pod różnymi kątami=== | ===Złożenie (compounding) obrazów z nadań pod różnymi kątami=== |
Wersja z 10:41, 28 kwi 2016
Spis treści
Obrazowanie falą płaską
W obrazowaniu fala płaską (PWI - Plane Wave Imaging) wykres opóźnień nadawczych względem przetworników ma postać prostej - przetworniki odpalane są w równych odstępach czasu, aby uformować wiązkę o (w przybliżeniu) płaskim froncie falowym. W przeciwieństwie do rozważanej wcześniej metody klasycznej, wiązka taka jest nieogniskowana - stąd oczekujemy podobnej ostrości / rozdzielczości na całej głębokości pomiarowej. O froncie falowym w PWI możemy myśleć jak o froncie fali pochodzącej ze źródła punktowego (ognisko wirtualne) oddalonego istotnie daleko za aperturą.
O ile nie ograniczają nas możliwości techniczne sprzętu (np. mała moc obliczeniowa), w PWI staramy się nadawać i odbierać pełną aperturą. Punktem wyjścia jest sytuacja w której wszystkie przetworniki nadają jednocześnie. Obrót wykresu opóźnień nadawczych odpowiada przesunięciu ogniska wirtualnego.
Parametry potrzebne do dalszej pracy:
f0=5.5e6 # Częstotliwość nadawcza przetworników [Hz]
fs=50e6 # Częstotliwość próbkowania [Hz]
pitch = 0.00021 # Deklarowana odległość między środkami przetworników nadawczo-odbiorczych
na = 11 # Liczba nadań
NT=192 # Liczba przetworników w pełnej aperturze
Ntr=192 # Pełna subapertura nadawcza
Surowe dane RF
Do dyspozycji mamy ponownie dwa pliki z pomiarów na fantomie nitkowym (usg2_nitki.npy) i cystowym (usg2_cysty.npy). W każdym pliku znajduje się trójwymiarowa tablica [math]NT\times N \times na [/math]
gdzie [math]N[/math] odpowiada czasowi rejestracji (maksymalnej głębokości obrazowanej) danych z pojedynczego nadania.
Tak jak na poprzednich ćwiczeniach, proszę zacząć od podejrzenia tablicy RF dla kilku kolejnych nadań. Czy z samych surowych danych RF da się określić kształt frontu falowego?
Rekonstrukcja obrazu z pojedynczego strzału
W przypadku klasycznej rekonstrukcji dokonywaliśmy najpierw przesunięcia w czasie próbek RF, a następnie przesunięty (syntezowany) obraz interpolowaliśmy do siatki odpowiadającej rzeczywistym proporcjom obrazowanej struktury. W przypadku PWI wygodniej będzie nam najpierw określić siatkę, a następnie dla kolejnych punktów na tej siatce liczyć wartość natężenia. Poniższy kod wygeneruje dwie tablice w których przechowywane są współrzędne poziome i pionowe w [m] kolejnych punktów siatki. Siatka jest generowana przy założeniu, że punkt (0,0) znajduje się w środku apertury.
maxWidth=0.02 # Połowa szerokości obrazowania [m]
l2mbd = c/(fs*2)
ar=int(2*maxWidth/l2mbd)+1 #Określamy gęstość poziomą siatki zgodnie z twierdzeniem ???
maxdepth=0.0610304 #maksymalna głębokość [m]
mindepth=0.00298 # minimalna głębokość [m]
br=(maxdepth-mindepth)/((maxWidth*2)/ar)
X0 = np.linspace(-maxWidth,maxWidth,ar)
R0 = np.linspace(mindepth,maxdepth,br)
Grid_div_x,Grid_div_z = np.meshgrid(X0,R0,indexing='xy') #tablice ze współrzędnymi