Jaka wiedza pozwoliła mi na zrozumienie mojej tematyki badawczej?





 Dawno mnie na blogu nie było, ale planuję wrócić. Zapewne zastanawiacie się jaka wiedza mi przydała się na doktoracie. Wracam na bloga z obszerniejszym wpisem, który pojawił się już na Instagramie. 

Początki na doktoracie

Skąd wziął się pomysł na tematykę badawczą? Krążyłam przez wiele lat pomiędzy informatyką a medycyną. Szukałam obszaru, w którym będę mogła się realizować. Okazało się, że algorytmy rekonstrukcyjny pasują, chociaż do odpowiedzialna praca i pełna niespodzianek, a co najważniejsze - jest to trudne zadanie. Nie zliczę ile musiałam przeczytać książek na temat samego Pythona i przetwarzania cyfrowych sygnałów. Bawiłam się biblioteką scipy, numpy a w późniejszym czasie bardziej zaawansowanych bibliotek obliczeniowych. Pomyślałam sobie wtedy... A co gdyby przekształcić to moje kodowanie bez celu w coś wartościowego? Zaczęłam programować numerycznie w Pythonie. We wczesnych wersjach algorytmu rekonstrukcyjnego używałam bibliotek, ale postanowiłam iść o krok dalej. Bez interfejsu graficznego używałam tylko dwóch bibliotek: matplotlib i numpy. Brzmi jak szalony pomysł? Oj wierzcie mi, taki był. 

Jak w ogóle zacząć programować typowo backendowo, kiedy przez 7 lat byłam frontendowcem? Nie było łatwo nawet przestawić się na myślenie backendowe. Na 2 roku stuidów lubiłam programować w OpenGL w języku C. 

Ta wizja wydawała mi się naprawdę szalona, ale... Skoro byłam zdolna programować w OpenGL i innych językach polegających na rozmieszczeniu grafiki na danym obszarze, to dlaczego nie spróbować z tomografią komputerową? Tak właśnie narodziła się moja tematyka. Promotor zatwierdził i oczywiście się zgodził wziąć w tym udział. Nie wiedziałam tylko jak będą wyglądać najbliższe 4 lata mojego doktoratu.

Jaki wybrałam język programowania?

Wybór języka programowania na początku był prosty. Wiedziałam na początku, że to będzie C#. Nie wiedziałam dlaczego. Może... Znałam ten język dość długo i programowałam w nim obiektowo, generycznie, szukałam rozwiązań funkcyjnych ale nigdy nie zmagałam się z operacjami numerycznymi. Język znałam długo, ale czy dobrze? Później okazało się, że nie znałam go zbyt dobrze. Po pierwszym roku doktoratu byłam nawet skłonna z niego zrezygnować.

W wakacje 2020 roku zdecydowałam się na zmianę. Skoro świat nas zaskoczył pandemią, to ja siebie też zaskoczę. Zmieniłam język programowania na język Python. Wtedy jeszcze nie wiedziałam, że to będzie strzał w dziesiątkę. Moje początki z językiem sięgają roku 2016, kiedy to na przedmiocie Środowisko Programisty po raz pierwszy poznałam składnię języka Python. Był dla mnie bardzo lekkim językiem, który był przyjemny w odbiorze. Przynajmniej na tle języków z którymi miałam do czynienia. 

Ciąg dalszy był taki, że... porzuciłam programowanie w nim. Nie widziałam dla niego żadnego poważnego zastosowania. Dopiero w 2018 roku, kiedy popularne zaczęło być Data Science powróciłam do niego. W tamtych latach poznałam inne zastosowanie Pythona, a mianowicie budowanie sztucznych sieci neuronowych, a później głębokich sieci neuronowych. Nie powiem, że byłam oczarowana i to było dla mnie wielkie "wow", zastanawiałam się po prostu co kryje się za tymi wszystkimi bibliotekami. Naukę języka kontynuowałam hobbistycznie. W 2020 roku zaczęłam programować pierwsze algorytmy rekonstrukcyjne, najpierw z wykorzystaniem różnych bibliotek, a później wdrożyłam już autorskie implementacje. 


Znajomość rzutów izometrycznych

Po raz pierwszy z rzutami izometrycznymi spotkałam się w technikum, a dokładnie w 1 klasie na lekcjach rysunku technicznego. Wtedy zaczęła się moja przygoda z rzutowaniem. Jak studiowałam Inżynierię Biomedyczną miałam okazję uczęszczać na zajęcia z rysunku technicznego, nazwanego wtedy Grafiką Inżynierską. Rysowaliśmy w prawdziwej pracowni kreślarskiej na kartkach o formacie A3. Bardzo mi się te zajęcia podobały, bez problemu zaliczyłam je na 5.0, ale też słuchałam wskazówek prowadzącego co poprawić oraz że powinnam spróbować wykonywać rysunki w Autocadzie. Miałam Autocada w szkole średniej, więc podstawową wiedzę miałam. Nie sądziłam, że to między innymi zdecyduje o tym, co będę robiła w przyszłości. 

Na doktoracie rzuty izometryczne przydają mi się do uzyskania różnych rzutów modelu oraz pokazało mi wzorzec, jak taki model pociąć na plastry. 




Geometria analityczna w tomografii komputerowej

Moja tematyka jest bardziej matematyczna niż informatyczna. Aby zaimplementować algorytm rekonstrukcyjny muszę dość dobrze znać geometrię analityczną. Geometria analityczna to dział geometrii zajmujący się badaniem figur geometrycznych metodami analitycznymi i algebraicznymi. Złożone rozważania geometryczne zostają w geometrii analitycznej sprowadzone do rozwiązywania układów równań, które opisują badane figury.

W swojej symulacji używam modelu Shepp-Logana, który składa się z 10 elips o różnych parametrach. Fantom Sheppa-Logana jest standardowym obrazem testowym stworzonym przez Larry'ego Sheppa i Benjamina F. Logana na potrzeby ich pracy z 1974 roku The Fourier Reconstruction of a Head Section. Służy on jako model ludzkiej głowy podczas opracowywania i testowania algorytmów rekonstrukcji obrazu. Poniżej znajduje się fantom 3D z 8 elipsami. Dwie pozostałe elipsy znajdują się na innym rzucie. Obraz został wygenerowany za pomocą Pythona z użyciem bibliotek numpy i matplotlib. 


Obraz CT jest umieszczony w przestrzeni z układem współrzędnych. Powszechnie stosowane są całki, na przykład projekcji równoległej (całka liniowa). W CT w 3 wymiarach stosuje się tzw. pomost, będący potrójną całką, zwaną całką powierzchniową (całka, w której obszarem całkowania jest płat powierzchni). Spotkać się można też z całą krzywoliniową, czyli całka, w której całkowana funkcja przyjmuje wartości wzdłuż pewnej krzywej (regularnej). Gdy krzywa całkowania jest zamknięta, to całkę nazywa się niekiedy całką okrężną.

Znajomość cyfrowego przetwarzania sygnałów

W mojej pracy przydaje się też znajomość cyfrowego przetwarzania sygnałów. Cyfrowe przetwarzanie sygnałów, CPS (ang. Digital Signal Processing, DSP) to dziedzina nauki i techniki zajmująca się sygnałami cyfrowymi i metodami ich przetwarzania. Tutaj skupiłam się na analizie sygnałów medycznych. Mamy różne typy sygnałów medycznych:
  • mechaniczny,
  • elektryczny,
  • magnetyczny,
  • chemiczny,
  • akustyczny,
  • cieplny.
Tomografia jest badaniem transmisyjnym, podobnym do RTG. Cały proces pozyskiwania sygnału polega na obracaniu "wachlarza" wiązek promieni X wokół pacjenta. Efektem są pozyskane sygnały (analogowe), które są zamieniane na cyfrowe. Wynikiem są obrazy, które wydają się nieco rozmazane. Konieczne jest dokonanie rekonstrukcji z wielu projekcji. Wszystkie projekcje znajdują się w tzw. tablicy projekcji, czyli sinogramie. Poniżej znajduje się sinogram, który "przekroiłam" o indeksie równym 100. Przypomina nam to po prostu zebrane sygnały. 


Tematyka tomografii komputerowej i implementacji algorytmu rekonstrukcyjnego to po prostu matematyczna rekonstrukcja na podstawie osłabień (attenuation) promieniowania przy różnych kątach projekcji. W porównaniu do RTG, generuje przekroje na tzw. plastry danego obiektu (w tym przypadku pacjenta). Generuje też lepszy kontrast. 

Inną sprawą jest jeszcze zastosowanie transformaty Fouriera. Jedną z takich metod jest właśnie transformata Radona czy też metoda projekcji wstecznej z filtracją, stosowana we współczesnych tomografach komputerowych.

Jak jest zbudowany tomograf komputerowy?

Bez znajomości budowy tomografu komputerowego tak naprawdę nie ma algorytmów rekonstrukcyjnych. Potrzebna jest wiedza, jak algorytm rekonstrukcyjny steruje pracą tomografu komputerowego. Dobrze znać jego budowę oraz w jakim trybie pracuje. Ja na początku swojej drogi nie mogłam wejść do pracowni TK, dlatego też oglądałam filmiki z pracy TK na Youtubie. Polecam całą gamę filmików z tego zakresu. 


Polecam również kanał How Radiology Works. Kanał raczkował akurat na początku mojego doktoratu, ale obecnie jest mnóstwo filmików, które tłumaczą podstawowe zakresy z działania tomografu komputerowego oraz algorytmów rekonstrukcyjnych. Podobała mi się też seria, którą zrobił Mr P. Solver na temat algorytmów rekonstrukcyjnych w języku Python.



Na uwagę też zasługują inni twórcy, jak na przykład Will Creene. 



Książki i artykuły naukowe o CT

Książka, która mi się przydała to oczywiście książka mojego promotora: Robert Cierniak, X-Ray Computed Tomography in Biomedical Engineering. Moim zdaniem to jest jedna z lepszych pozycji na rynku. Jednak trzeba pamiętać, że to książka bardzo techniczna. Bez podstaw na temat budowy tomografu i podstawowych informacji o algorytmach rekonstrukcyjnych może być trudna w odbiorze. Na rynku istnieją też lżejsze książki, na przykład ja zaczynałam od pozycji Informatyka medyczna pod redakcją Roberta Rudowskiego. Książka jest monografią i prowadzi nas w świat informatyki medycznej. Miła w odbiorze jest też książka Piotra Augustyniaka, Elektroniczna aparatura medyczna. Dość ogólnie jeden z rozdziałów zapoznaje nas z tematyką tomografii komputerowej.

Specjalista z zakresu algorytmów rekonstrukcyjnych

Ostatnia rzecz, ale nie najmniej ważna. Warto czerpać inspiracje od specjalisty, bo przechodził dokładnie przez to samo, co ja. Na początku współpracy często myślałam, że jak przeczytam 2-3 książki to będę już wszystko wiedziała o tej tematyce. Prawda okazała się jednak brutalna. Taka osoba może być światłem w tunelu w gąszczu informacji, które nie są potrzebne, a wprowadzają tylko dodatkowe zamieszanie. 

Który punkt Cię zszokował najbardziej? Daj koniecznie znać w komentarzu!




Komentarze

Popularne posty