Streszczenie rozprawy doktorskiej
Transkrypt
Streszczenie rozprawy doktorskiej
Uniwersytet Mikołaja Kopernika w Toruniu Wydział Fizyki, Astronomii i Informatyki Stosowanej Marcin Sylwestrzak Streszczenie rozprawy doktorskiej ANALIZA DANYCH SPEKTRALNEJ TOMOGRAFII OPTYCZNEJ OCT Z WYKORZYSTANIEM WIELORDZENIOWYCH KART GRAFICZNYCH Praca doktorska napisana pod kierunkiem prof. dr. hab. Piotra Targowskiego Toruń 2013 Wstęp Tomografia optyczna z użyciem światła częściowo spójnego (ang. Optical Coherence Tomgraphy) to nieinwazyjna technika pozwalająca na obrazowanie struktury wewnętrznej obiektów częściowo przeźroczystych dla światła. W wyniku pomiaru w sposób bezkontaktowy otrzymywane są dwuwymiarowe przekroje w głąb obiektu wzdłuż linii skanowania wiązką analizującą. Tak uzyskane tomogramy obrazują wszystkie nieciągłości struktury, które wiązka napotkała na swojej drodze. Dzięki nieinwazyjności metody tomografia optyczna jest obecnie powszechnie wykorzystywana w diagnostyce medycznej jako narzędzie do obrazowania struktur wewnętrznych tkanek i organów – przede wszystkim w okulistyce [1, 2], ale także w dermatologii [3, 4], gastrologii [5, 6] i innych [7, 8]. Poza zastosowaniami medycznymi tomografia optyczna wykorzystywana jest w badaniach materiałowych [9], w szczególności obiektów zabytkowych, takich jak obrazy olejne [10, 11] czy szkła witrażowe [12], w których ze względu na wartość zabytkową badanych obiektów metody inwazyjne są niedopuszczalne. Badania te pozwalają właściwie ocenić stan zachowania zabytków oraz zaplanować, a także monitorować w czasie rzeczywistym niektóre zabiegi konserwatorskie [13, 14]. Jednym z ograniczeń tomografii OCT jest czasochłonna analiza numeryczna danych, która wraz z wizualizacją przekrojów na ekranie zwykle zajmuje więcej czasu niż akwizycja. Obrazowanie w czasie rzeczywistym jest niezbędną funkcją oprogramowania sterującego tomografem. Pozwala ono na właściwe ustawienie pacjenta i przygotowanie go do pomiaru, a w przypadku badań materiałowych – odpowiednie umieszczenie badanego obiektu. Realizacja tego zadania wymaga przede wszystkim szybkiego obrazowania badanego obszaru. W chwili obecnej na dobrze zoptymalizowanym oprogramowaniu pracującym wielowątkowo na procesorze głównym (CPU) uzyskuje się wydajność obrazowania wynoszącą ok. 10 klatek na sekundę dla dwóch przekrojów w rozdzielczości 500 × 1024 piksele. Jakość takiego podglądu ze względu na liczbę zarejestrowanych i przetwarzanych widm nie jest zbyt wysoka i pozwala jedynie na przybliżone ustawienie pacjenta przed wykonaniem właściwego pomiaru. W tej sytuacji uzyskanie obrazu drobnych zmian, 2 istotnych dla diagnozowania, wymaga wykonania wielu pomiarów i jest w pewnym stopniu kwestią przypadku. Od kilku lat bardzo dynamicznie rozwija się technologia przetwarzania danych na procesorach graficznych. Już w 2010 roku NVIDIA deklarowała wydajność wykonywania obliczeń zmiennoprzecinkowych wyższą o rząd wielkości niż osiągalna przez najszybsze procesory główne [15]. Zastosowanie równoległego przetwarzania danych na wielordzeniowych procesorach graficznych otwiera wiele nowych możliwości w technice spektralnej tomografii optycznej, przede wszystkim zaś usuwa główne ograniczenie blokujące obrazowanie w czasie rzeczywistym – czasochłonną analizę danych. Rozprawa liczy 152 strony i podzielona została na sześć rozdziałów. W pierwszym rozdziale przedstawiona została ogólnie metoda spektralnej tomografii optycznej wraz z jej opisem matematycznym i fizycznym. Opisane zostały również metody analizy danych oraz ich wpływ na jakość otrzymywanego tomogramu. W drugim rozdziale została omówiona budowa tomografu, opisane podstawowe elementy i podzespoły wchodzące w jego skład oraz połączenia i zależności pomiędzy nimi. Rozdział ten zawiera również zwięzły opis całego oprogramowania przygotowanego przez autora w celu realizacji tego projektu w języku C/C++ oraz C#. W rozdziale trzecim znajduje się opis wykorzystywanej architektury sprzętowej i technologii równoległego przetwarzania danych na procesorach graficznych. Czwarty rozdział, objętościowo największy i jednocześnie najistotniejszy, przedstawia opis zastosowanych rozwiązań implementacyjnych oraz optymalizacyjnych wprowadzonych w rozwijanych algorytmach przetwarzania danych spektralnej tomografii optycznej. W piątym rozdziale przedstawiono rezultaty bazujące na szybkim przetwarzaniu danych za pomocą zaimplementowanych metod, a więc szybkie obrazowanie tomogramów dwuwymiarowych, wizualizacje trójwymiarowe uzyskane w czasie rzeczywistym oraz algorytmy automatycznej adaptacji protokołów skanowania. Szósty rozdział stanowi podsumowanie rozprawy. Cele projektu i teza rozprawy Zamiarem podjętego projektu reformułowania algorytmów obliczeniowych spektralnej tomografii OCT w celu równoległego przetwarzania danych na wielordzeniowych procesorach graficznych było: 1. umożliwienie wysokojakościowego obrazowania w czasie rzeczywistym, tak aby uzyskiwane przekroje wyświetlane były na ekranie jak najszybciej, bez zbędnych opóźnień, które bardzo utrudniają ustawienie pacjenta bądź obiektu w badaniach materiałowych, 2. obrazowanie bez żadnych ustępstw dotyczących jakości (w celu przyśpieszenia obliczeń) prezentowanego na ekranie przekroju – prezentowany w czasie 3 rzeczywistym tomogram ma być wyświetlony w najlepszej możliwej do osiągnięcia dla tej metody jakości, 3. trójwymiarowe obrazowanie w czasie rzeczywistym, dotychczas (w przypadku obliczeń na procesorze głównym) w ogóle nie osiągalne, 4. implementacja dodatkowych trybów obrazowania rozszerzających standardowe obrazowanie strukturalne w OCT o metodę dopplerowską (pozwalającą na obrazowanie przepływów naczyniach krwionośnych) oraz metodę redukcji szumu plamkowego, 5. implementacja algorytmów automatycznego dostosowywania protokołów skanowania w metodzie: dopplerowskiej – w celu samoczynnego dostosowania protokołu do mierzonego przepływu, tak aby wykorzystywał on cały dostępny zakres dynamiczny mierzonych prędkości, redukcji szumu plamkowego – w celu rejestracji danych w taki sposób, aby uśrednianie pozwalało na zminimalizowanie szumu plamkowego, jednocześnie nie pogarszając zbytnio rozdzielczości poprzecznej obrazowania. Wyżej przedstawione cele pozwoliły na sformułowanie następującej tezy niniejszej rozprawy: optymalne wykorzystanie typów pamięci i reformułowanie algorytmów w celu równoległego przetwarzania danych spektralnej tomografii optycznej na kartach graficznych pozwala na przyśpieszenie obliczeń, umożliwiające trójwymiarowe obrazowanie strukturalne oraz czynnościowe w czasie rzeczywistym z jednoczesnym adaptacyjnym modyfikowaniem protokołów skanowania. 1. Spektralna tomografia optyczna Metoda tomografii optycznej dzieli się na dwie podstawowe odmiany: pierwsza, tzw. czasowa (ang. Time domain OCT, TdOCT), została zaprezentowana już w 1991 roku [16], natomiast druga – fourierowska (ang. Fourier domain OCT, FdOCT) – pięć lat później [17]. Tą z kolei dzieli się na bardziej popularną spektralną tomografię optyczną (ang. Spectral domain OCT, SdOCT, albo: SOCT) oraz tomografię optyczną z użyciem laserów strojonych (ang. Swept Source OCT, SSOCT) [18]. Systemy pracujące w pierwszej odmianie (czasowej) wymagają skanowania w głąb obiektu poprzez zastosowanie mechanicznie przesuwanego zwierciadła w ramieniu interferometru. Natężenie odbitego światła mierzone jest podczas ruchu zwierciadła za pomocą fotodiody. W ten sposób otrzymywane są kolejne A-skany. Badanie tą metodą trwa stosunkowo długo, na tyle, że mimowolne ruchy pacjenta podczas 4 badania oka wpływają negatywnie na jakość otrzymywanego tomogramu. W układach spektralnych zwierciadło referencyjne utrzymywane jest w stałym położeniu, a rejestracja światła zamiast na fotodiodzie odbywa się za pośrednictwem spektrometru. Z uzyskanego w ten sposób widma interferencyjnego generowany jest jeden A-skan przez zastosowanie transformacji Fouriera. Usunięcie ruchomych elementów z interferometru i rejestracja widm na liniowej kamerze o bardzo szybkim transferze danych ze spektrometru pozwoliły na około stukrotne przyśpieszenie akwizycji i zwiększenie osiowej rozdzielczości obrazowania z 10 µm do ok. 3 µm [19, 20]. Mimo istotnej niedogodności, jaką stanowi ograniczony zakres obrazowania (zwykle 2-3 mm), metoda ta niemal całkowicie wyparła odmianę czasową – TdOCT, oferując nieporównywalnie wyższą jakość i szybkość obrazowania. Przetwarzanie danych w SOCT W przypadku detekcji fourierowskiej, z jaką mamy do czynienia w spektralnej tomografii optycznej, sygnał interferencyjny rejestrowany jest na liniowej kamerze w spektrometrze. Każde zebrane w ten sposób widmo wymaga wykonania szeregu procedur numerycznych, aby uzyskać z każdego z nich jeden A-skan. W wyniku rozwijania metody od ponad dziesięciu lat zarówno przez nasz zespół, jak i inne grupy badawcze na świecie, ustalił się standardowy zestaw procedur numerycznych wymaganych do uzyskania dobrej jakości obrazu tomograficznego. Składa się on z sześciu podstawowych kroków: 1. 2. 3. 4. 5. 6. odjęcie tła, transformacja – , numeryczna kompensacja dyspersji, kształtowanie widma, transformacja Fouriera, prezentacja w skali logarytmicznej. Wykonanie wszystkich tych kroków jest niezbędne w celu uzyskania tomogramów w najwyższej jakości. Metoda dopplerowska w SOCT Metoda dopplerowska pozwala na wyznaczanie składowej równoległej wektora prędkości cząstki rozpraszającej promieniowanie sondujące. Podstawą jej działania jest fakt, że zmiana częstotliwości promieniowania sondującego po odbiciu od poruszającej się cząstki (efekt Dopplera) powoduje niewielkie zmiany częstotliwości sygnału interferencyjnego, które wyznaczyć można za pomocą pomiaru zmiany fazy sygnału. Metoda ta polega na wykonaniu dwóch następujących po sobie pomiarów OCT w tym samym miejscu, a następnie wyznaczeniu różnicy w położeniu obserwowanego elementu 5 struktury obiektu poprzez pomiar różnic fazowych pomiędzy składowymi częstotliwościowymi zarejestrowanych widm. Pozwala to na znalezienie przemieszczeń centrów rozpraszających wewnątrz badanego obiektu w czasie, który upłynął pomiędzy tymi pomiarami. Dostosowywanie zakresu mierzonych prędkości odbywa się poprzez zmianę czasu pomiędzy kolejnymi pomiarami. Metoda uśredniania szumu plamkowego Metoda ta zaproponowana została przez M. Szkulmowskiego [21] z naszego zespołu, z punktu widzenia oprogramowania wykorzystuje najprostsze uśrednianie ze sobą sąsiednich A-skanów. Podstawą efektywności jej działania jest specyficzny sposób rejestracji danych. Aby była skuteczna, niezbędne jest rejestrowanie widm w taki sposób, aby były wzajemnie ze sobą jak najmniej skorelowane i jednocześnie pochodziły z możliwie bliskich fizycznie miejsc. Efekt taki uzyskuje się, rejestrując kolejne widma podczas skanowania specjalnym protokołem z nałożoną dodatkową oscylacją. Powoduje ona nieznaczny spadek poprzecznej rozdzielczości obrazowania poszczególnych przekrojów, podnosi natomiast w wysokim stopniu jakość tomogramu wynikowego, zwłaszcza jeśli analizowany obiekt nie posiada gwałtownych zmian w strukturze poprzecznej. 2. Budowa tomografu i architektura oprogramowania Zadaniem oprogramowania współpracującego z tomografem OCT jest nie tylko analiza numeryczna danych i ich wyświetlenie, ale również zarządzanie szeregiem czynności związanych ze sterowaniem kamerą spektrometru, skanerami galwanometrycznymi oraz synchronizacją pomiędzy podzespołami urządzenia. Przygotowanie oprogramowania do tego zadania jest więc nierozłącznie powiązane z opracowaniem procedur sterowania dodatkowymi urządzeniami zewnętrznymi. W rozdziale drugim zaprezentowany został ogólny schemat połączeń i zależności pomiędzy komputerem a podzespołami tomografu. Przedstawiona została także architektura aplikacji, która ze względu na wielozadaniowość została podzielona na oddzielnie kompilowane projekty (moduły) współpracujące ze sobą. Oprogramowanie do sterowania tomografem OCT i równoległego przetwarzania danych zostało przygotowane pod kontrolą systemu operacyjnego Microsoft® Windows™ 7 Professional w wersji 64 bitowej w programie Microsoft® Visual Studio 2010 Ultimate na licencji MSDNAA (ang. Microsoft Developer Network Academic Alliance). W celu optymalizacji przetwarzania danych na CPU oraz ich buforowania w pamięci operacyjnej 6 RAM wykorzystano biblioteki Intel® Integrated Performance Primitives zakupione do tego projektu przez autora. Do wizualizacji danych wykorzystano interfejs API OpenGL® (dostępny bezpłatnie) a w celu uproszczenia niektórych partii kodu dodatkowo użyto biblioteki pomocniczej Freeglut, stanowiącej nowszą i dystrybuowaną na licencji Open Source alternatywę dla nakładki GLUT (ang. OpenGL® Utility Toolkit). Rejestrację klatek generowanych na ekranie podczas obrazowania na żywo umożliwia biblioteka FreeImage (Open Source), pozwalająca na zapis ramki prezentowanej w OpenGL® do plików w formacie JPG. Oddzielny zestaw stanowią biblioteki DLL dostarczane przez producenta kart rozszerzeń – National Instruments w ramach środowiska LabView. Proces rejestracji danych poprzez kartę akwizycji realizowany jest za pomocą modułu NI Vision Acquisition Software, w skład którego wchodzi NI IMAQ – zestaw bibliotek pozwalających na pobieranie danych z kamery. Z kolei do sterowania wyjściami analogowymi wykorzystywana jest biblioteka NI DAQmx. Aplikacja sterowana jest zdarzeniami, w większości przypadków są to przeróżne zmiany trybów jej pracy. Przejście do trybu obrazowania w czasie rzeczywistym wymaga skonfigurowania wszystkich modułów domyślnymi parametrami, zainicjowania karty akwizycji, kamery oraz wygenerowania trajektorii dla skanerów i przesłania ich do karty sterującej. Ponadto rozpoczęcie obrazowania na żywo wymaga uruchomienia zadań powtarzanych w sposób ciągły: odbierania danych, ich przetwarzania i wizualizacji. Nad tymi czynnościami nadzór sprawują dwa główne wątki aplikacji uruchomione na procesorze głównym CPU. Pierwszy z nich, wątek akwizycyjny, odpowiedzialny jest za odbieranie danych ze spektrometru. Drugi główny wątek aplikacji uruchomiony na procesorze głównym to wątek obliczeniowo – wizualizacyjny. Jego podstawowym zadaniem jest pobieranie danych z kolejki buforów, przesłanie ich do pamięci karty graficznej, a następnie zarządzanie wielowątkowym procesem przetwarzania danych na procesorze graficznym oraz wizualizacja wyników na ekranie. 3. Równoległe przetwarzanie danych procesorach graficznych Procesory graficzne są układami przetwarzającymi dane w sposób równoległy, więc nie wszystkie algorytmy dobrze nadają się do implementacji i uruchamiania na GPU. Jeżeli w ogóle istnieje możliwość zrównoleglenia danej analizy numerycznej, to wydajność przetwarzania wzrasta z ilością danych poddawanych obliczeniom równoległym. W kontekście przedstawionych powyżej kwestii analiza danych spektralnej tomografii optycznej 7 dobrze nadaje się do zrównoleglenia z wykorzystaniem wielordzeniowych procesorów graficznych – obliczenia wykonywane na kolejnych widmach są niezależne od siebie, a złożoność związana jest przede wszystkim z ilością danych poddawanych przetworzeniu. Producenci procesorów graficznych, wychodząc naprzeciw zapotrzebowaniu rynku na szybkie układy generujące realistyczne obrazy w grach komputerowych, przygotowali urządzenia o ogromnej wydajności obliczeń. Kluczowym krokiem było uogólnienie specjalizowanych układów cieniowania na programowalne jednostki arytmetyczno-logiczne i zmiennoprzecinkowe ogólnego przeznaczenia oraz przygotowanie interfejsu API umożliwiającego wykorzystanie ich przez programistów. Dzięki temu procesory o mocy obliczeniowej osiągalnej do niedawna jedynie przez superkomputery stały się dostępne dla wszystkich. Tworzenie kodu dla procesorów graficznych nie jest tak intuicyjne, jak programowanie strukturalne aplikacji na procesory główne komputerów osobistych, które znalazło swoje stałe miejsce w ścieżkach edukacji uczelni technicznych i do którego absolwenci takich uczelni są przyzwyczajeni. Rosnąca popularność wykorzystania procesorów GPU do obliczeń ogólnych wprowadziła również to zagadnienie jako przedmiot wykładowy do wielu uczelni na świecie. Oczywiście nie każdy problem numeryczny nadaje się do implementacji na procesor graficzny i nie można przedstawiać układów GPU jako jedynych i najlepszych platform do obliczeń. Obecne wykorzystanie sugeruje, że dalszego kierunku rozwoju tej technologii można oczekiwać w ścisłej współpracy nowoczesnych procesorów CPU z wydajnymi wielordzeniowymi procesorami graficznymi. Najbardziej pozytywnym aspektem tak szybkiego rozwoju procesorów graficznych i udostępnienia go szerokiej rzeszy odbiorców jest fakt, że ogromna moc obliczeniowa tych układów pozwoliła na przyspieszenie rozwiązań wielu problemów naukowych i ciągle służy ludziom, wspomagając działanie aparatury biomedycznej. W trzecim rozdziale rozprawy krótko zarysowano historię rozwoju komputerów oraz przyczyny pojawienia się architektur wielordzeniowych. Przedstawiona została architektura procesorów graficznych na przykładzie procesorów rodziny Fermi™ (w kontekście programowania wielowątkowego w CUDA C), ze szczególnym uwzględnieniem dostępnych typów pamięci. 8 4. Implementacja algorytmów przetwarzania danych OCT na GPU Bardzo istotną różnicą pomiędzy procesorami głównymi stacji roboczych (CPU) a procesorami graficznymi (GPU) jest przydział tworzących je tranzystorów do pełnienia poszczególnych funkcji. W układach CPU większość tranzystorów wchodzi w skład pamięci podręcznej oraz układów sterowania przepływem danych, natomiast właściwym wykonywaniem obliczeń zajmuje się mniej więcej ich czwarta część. W procesorach graficznych tranzystory wchodzą przede wszystkim w skład jednostek arytmetyczno – logicznych oraz zmiennoprzecinkowych, natomiast znacznie mniejsza ich część zajmuje się sterowaniem przepływem danych. Z tego właśnie powodu pewne zadania związane z uruchamianiem wątków, podziałem zadań i przepływem danych muszą być ręcznie zaprogramowane przez użytkownika, aby przetwarzanie w procesorze graficznym było efektywne. Pierwszą stabilną wersję programu przetwarzającego dane spektralnej tomografii optycznej w procesorze graficznym autor uzyskał na początku 2010 roku a wyniki jego wydajności opublikował we wrześniu [22]. Uzyskano wtedy szybkość przetwarzania danych w obrazowaniu strukturalnym około sześciokrotnie wyższą (Rys. 4.1 b) niż w Rys. 4.1. Wpływ zastosowanych i zaimplementowanych w rozwijanym oprogramowaniu rozwiązań przyczyniających się do zwiększenia wydajności obliczeń, a) wydajność obliczeń równoległych na procesorze CPU, b – i) kolejne rozwiązania opisane w tekście 9 przypadku zastosowania zoptymalizowanych obliczeń równoległych na procesorze głównym (Rys. 4.1 a) [23]. Wówczas autor rozwijał oprogramowanie na karcie graficznej wyposażonej w procesor GTX 280 (240 rdzeni CUDA) i 2GB globalnej pamięci. Wymiana karty graficznej na nowszy model (GeForce CUDA GTX 580 MSI 3072MB) wyposażony w 512 rdzeni CUDA, pozwoliła na uzyskanie wydajności obliczeń wynoszącej 430 tys. Askanów na sekundę (Rys. 4.1 c). Następnie wprowadzono optymalizacje wyznaczania indeksów niezbędnych do pobierania danych, w obliczeniach w których istniała taka możliwość przeformułowano operacje matematyczne na operacje bitowe oraz zminimalizowano wykorzystanie rejestrów. W konsekwencji zmniejszono liczbę operacji mnożenia i dodawania dzięki temu uzyskano wydajność przetwarzania na poziomie 515 tys. A-skanów na sekundę (Rys. 4.1 d). Wykorzystanie jednostek funkcji specjalnych (SFU) pozwoliło na zwiększenie wydajności do 600 tysięcy widm na sekundę (Rys. 4.1 e). W dalszej kolejności zmodyfikowano implementację procedury transformacji – k. W obecnej wersji wykorzystuje ona o 4 rejestry więcej. Pomimo większego zapotrzebowania na zasoby sprzętowe, zgodnie z arkuszem CUDA Occupancy Calculator, zmiana ta nie spowodowała zmniejszenia liczby aktywnych wątków na multiprocesorze, a dzięki dodatkowym rejestrom świadome podzielono i uporządkowano operacje numeryczne i w konsekwencji osiągnięto wydajność przewyższającą 740 tys. A-skanów na sekundę (Rys. 4.1 f). Zastosowanie funkcji pojedynczej precyzji (w celu zaokrąglania do wartości całkowitych, logarytmowania i pierwiastkowania) w funkcjach jądra wykonujących obliczenia zarówno przed jak i po transformacji Fouriera pozwoliło na osiągnięcie wydajności przetwarzania na poziomie 877 tysięcy A-skanów na sekundę (Rys. 4.1 g). Reorganizacja rozmieszczenia bloków wątków w siatce bloków poprzez wprowadzenie dwuwymiarowego indeksowania odpowiadającego numerom A-skanów i B-skanów, pozwoliło na całkowitą rezygnację z konieczności wyznaczania reszty z dzielenia całkowitego i pozwoliło na znaczne uproszczenie obliczeń wskaźników do danych – wydajność obliczeń osiągnęła 980 tys. A-skanów na sekundę (Rys. 4.1 h). Ostatecznie, kompletu optymalizacji dopełnia właściwe umieszczenie polecenia __syncthreads() pozwalając na przetworzenie powyżej miliona widm na sekundę (Rys. 4.1 i). Przedstawione powyżej zestawienie dotyczy przetwarzania danych w obrazowaniu strukturalnym, w pozostałych metodach stosowano analogiczne rozwiązania. We wszystkich przypadkach przetwarzano widma złożone z 2048 pikseli. Zależność wydajności obliczeń od liczby przetwarzanych A-skanów przedstawiono na wykresie (Błąd! Nie można odnaleźć źródła odwołania.) i jest ona około dwudziestokrotne wyższa niż w przypadku do dobrze zoptymalizowanej, wielowątkowej aplikacji pracującej na wielordzeniowym procesorze głównym [23]). W rozdziale czwartym rozprawy przedstawiono krótki przegląd literatury przedmiotu wraz z wkładem autora. Zaprezentowano opracowaną podczas realizacji projektu implementację procedur równoległego przetwarzania danych SOCT na procesor graficzny (w 10 architekturze Fermi) oraz omówiono wpływ poszczególnych rozwiązań na wydajność całego procesu obliczeń. 5. Wykorzystanie uzyskanej szybkości przetwarzania danych Wykorzystanie kart graficznych w celu efektywniejszej analizy danych spektralnej tomografii optycznej pozwala na wprowadzenie nowej jakości do tej znanej od wielu lat metody. Dzięki uzyskanej szybkości przetwarzania wynoszącej powyżej miliona widm na sekundę możliwe jest zrealizowanie wysokojakościowego obrazowania dwu- oraz trójwymiarowego w czasie rzeczywistym, które nie było możliwe do uzyskania w przypadku przetwarzania danych na procesorze głównym. Warunkiem koniecznym do uzyskania obrazowania OCT w czasie rzeczywistym jest oczywiście odpowiednio szybkie przetwarzanie danych. Dzięki zastosowaniu procesorów graficznych oraz odpowiednio zoptymalizowanych algorytmów uzyskano bardzo wysoką wydajność obliczeń, przewyższającą milion A-skanów na sekundę. Drugim, równie ważnym warunkiem, jest możliwość odpowiednio szybkiego wyświetlenia przetworzonych danych. Połączenie przedstawionego w rozdziale czwartym rozprawy modułu do przetwarzania danych z opracowanym przez autora i szczegółowo opisanym w piątym rozdziale sposobem wizualizacji danych bezpośrednio z pamięci karty graficznej pozwala na wydajne obrazowanie w czasie rzeczywistym. Wydajność obrazowania techniką OCT z wykorzystaniem rozwijanego oprogramowania przedstawiono w tabeli (Tabela 5.1). Całkowita wydajność obrazowania zależy od czasu wykonania trzech kroków: akwizycji (zależnie od protokołu), transferu Tabela 5.1. Rzeczywista szybkość odświeżania strukturalnych obrazów OCT z zastosowaniem oprogramowania przygotowanego w trakcie realizacji projektu dla wybranych protokołów Protokół 1 Całkowita liczba A-skanów Czas transferu danych do GPU Czas Wydajność 2 3 4 5 Wydajność z uwzględnieniem czasu transferu do GPU 6 8,2 ms 9,5 ms 11 ms 24 ms 63 ms 110 ms 120 Hz* 105 Hz 93 Hz 42 Hz 16 Hz 9 Hz 76 Hz 52 Hz 31 Hz 15 Hz 11 Hz 6,5 Hz Krzyż 2x1600 3 200 5 ms Krzyż 2x2000 4 000 10 ms Cztery przekroje 4x2000 8 000 22 ms Cztery przekroje 4x5000 20 000 42 ms Podgląd 3D 100x100 10 000 28 ms Podgląd 3D 140x140 19 600 42 ms *ograniczone przez częstotliwość odświeżania monitora LCD Przetwarzanie i wizualizacja 11 surowych widm do pamięci karty graficznej (Tabela 5.1, kol. 3.) oraz czasu przetwarzania i wizualizacji (Tabela 5.1, kol. 4.). Gdyby czas rejestracji danych był równy czasowi wszystkich czynności związanych z przetworzeniem i wyświetleniem danych, każda wyświetlana na ekranie klatka zawierałaby tomogram uzyskany w wyniku przetworzenia za każdym razem nowego zestawu widm. W takiej sytuacji szybkość wyświetlanych na ekranie klatek zależałaby od dwóch czynników: czasu transferu danych (Tabela 5.1, kol. 3.) oraz przetwarzania i wizualizacji (Tabela 5.1, kol. 4.) i osiągałaby wartości przedstawione w ostatniej kolumnie tabeli (Tabela 5.1, kol. 6.). W obecnym stanie rozwoju technologii rejestracja danych wymaga jednak więcej czasu niż przetworzenie ich na procesorze graficznym, dlatego nowe zestawy widm dostępne są rzadziej niż co każdą klatkę wyświetlaną na ekranie. Z tego względu ten sam zestaw danych jest przetwarzany kilka razy, aż zakończy się proces rejestracji nowego tomogramu. Wielokrotne przetwarzanie tych samych danych pozwala na natychmiastowe uwzględnienie zmieniających się parametrów obliczeniowych (np. współczynnika kompensacji dyspersji) czy wizualizacyjnych (kątów obrotu), co zwiększa interaktywność aplikacji. Tak więc w trakcie obrazowania średnie szybkości odświeżania prezentowanych przekrojów uzyskują wartości zawierające się w zakresach ograniczonych przez liczby w kolumnach 5. i 6. (Tabela 5.1). Jedną z bardziej kłopotliwych czynności dla użytkownika tomografu OCT podczas pomiarów dopplerowskich jest dostosowanie protokołu skanowania tak, aby obrazowana prędkość przepływu optymalnie wykorzystywała zakres dynamiczny. Podobne problemy może sprawiać dostosowywanie amplitudy oscylacji dodatkowego skanera w metodzie redukcji szumu plamkowego. W obu metodach użytkownik obsługujący tomograf dobiera subiektywnie parametry protokołu na podstawie B-skanu wyświetlanego podczas podglądu na żywo. W przypadku obliczeń na procesorze głównym jakość tego tomogramu jest stosunkowo niska ze względu na stosunkowo małą liczbę wyświetlanych A-skanów. Korzystając z takiego przekroju oraz własnej wiedzy i doświadczenia użytkownik zmienia wybrany parametr protokołu, a następnie ponownie uruchamia akwizycję i ocenia, czy korekta, którą wprowadził, jest wystarczająca. Odpowiednie ustawienie parametrów wymaga zwykle kilku takich iteracji. Dostosowywanie protokołu na zasadzie prób i błędów jest bardzo uciążliwe, wymaga przede wszystkim skupienia i wielokrotnej modyfikacji parametrów oraz sprawdzania na wynikowym tomogramie, czy nie pojawiają się artefakty. Oczywistym jest, że podejście takie zawodzi w przypadku dynamicznie zmieniających się własności obiektu. Wykorzystanie szybkiej analizy numerycznej na procesorach graficznych pozwoliło uzyskać w czasie rzeczywistym wysokiej jakości przekroje oraz oceniać ich jakość w zależności od parametrów protokołu. W realizowanym projekcie autor przygotował dwa typy adaptacyjnych metod optymalizacji obrazów OCT. W przypadku analiz dopplerowskich w ciągu około pięciu sekund algorytm sam dostosowuje protokół do analizowanego przepływu 12 dobierając właściwy dla występującego w obiekcie przedziału prędkości przepływów. W metodzie redukcji szumu plamkowego efekt uzyskuje się poprzez dobranie parametrów skanowania – zadanie to wymaga kilkunastu sekund głównie ze względu na czas akwizycji dużych zbiorów danych oraz konieczność uzyskania odpowiedniej statystyki. 6. Podsumowanie rozprawy Przygotowane w trakcie realizacji projektu oprogramowanie, ze szczególnym uwzględnieniem wysoce zoptymalizowanych metod przetwarzania danych w procesorze graficznym i wizualizacji wyników bezpośrednio z pamięci karty graficznej, pozwoliło na osiągnięcie oczekiwanych rezultatów. Dzięki równoległej analizie danych w GPU uzyskano wysokojakościowe obrazowanie w czasie rzeczywistym w trybie dwuwymiarowym. Wyświetlane przekroje tworzone z kilku tysięcy rejestrowanych widm na każdy B-skan i uśrednianie sąsiadujących A-skanów pozwoliło na wyświetlanie z częstotliwością kilkudziesięciu ramek na sekundę tomogramów o jakości, którą dotychczas uzyskać można było jedynie w trybie post-processingu. Zastosowane rozwiązania pozwalają również na obrazowanie trójwymiarowe w czasie rzeczywistym, które dotychczas nie było w ogóle możliwe. Ten sposób obrazowania może być przydatny jako dodatkowe narzędzie np. podczas operacji na żywym oku (przeszczep rogówki, soczewki). Na tak duże przyspieszenie obliczeń dzięki wykorzystaniu GPU można spojrzeć jak na pewnego rodzaju „zaoszczędzenie” czasu w wykonywaniu pewnego zadania, który z kolei przeznaczyć można na zastosowanie dodatkowych analiz, np. szybką ocenę uzyskiwanego tomogramu i dostosowanie protokołu skanowania. W realizowanym projekcie autor przygotował dwa typy adaptacyjnych metod dostosowywania protokołów rejestracji danych OCT: w analizach dopplerowskich oraz w metodzie redukcji szumu plamkowego. Reasumując, zdaniem autora, uzyskane szybkości przetwarzania danych są w pełni wystarczające dla celów SOCT i o ile nie pojawią się zupełnie nowe pomysły w zakresie procedur obróbki danych, wysiłki w kierunku dalszego przyspieszania obliczeń nie mają uzasadnienia. Głównym ograniczeniem jest obecnie wymagany czas akwizycji danych, niezbędny dla uzyskania odpowiedniego stosunku sygnału do szumu – wynikający z natury procesów fizycznych zachodzących w detektorach. Jedynie jakościowo nowe rozwiązania w tym zakresie – jak dotąd nie znane i nie możliwe do przewidzenia – mogłyby na nowo postawić problem optymalizacji wydajności obrazowania OCT na drodze dalszej poprawy szybkości obliczeń. 13 Literatura [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] M. Wojtkowski, R. Leitgeb, A. Kowalczyk et al., In vivo human retinal imaging by Fourier domain optical coherence tomography, Journal of Biomedical Optics, 7 (3), 457-463 (2002). W. Drexler, and J. G. Fujimoto, State-of-the-art retinal optical coherence tomography, Prog Retin Eye Res, 27 (1), 45-88 (2008). J. Welzel, Optical coherence tomography in dermatology: a review, Skin Research and Technology, 7 (1), 1-9 (2001). J. K. Barton, K. W. Gossage, W. Xu et al., Investigating sun-damaged skin and actinic keratosis with optical coherence tomography: A pilot study, Technology in Cancer Research & Treatment, 2 (6), 525-535 (2003). B. E. Bouma, G. J. Tearney, C. C. Compton et al., High-resolution imaging of the human esophagus and stomach in vivo using optical coherence tomography, Gastrointestinal endoscopy, 51(4) Pt 1 467-74 (2000). M. Suter, B. J. Vakoc, N. S. Nishioka et al., Comprehensive three-dimensional microscopy of the porcine and human esophagus in vivo using optical frequency domain imaging, Gastroenterology, 130 (4), A103-A103 (2006). A. H. Huang, Y. K. Chen, L. M. Lin et al., Isolation and characterization of dental pulp stem cells from a supernumerary tooth, J Oral Pathol Med, (2008). G. J. Tearney, S. Waxman, M. Shishkov et al., Three-Dimensional Coronary Artery Microscopy by Intracoronary Optical Frequency Domain Imaging, JACC: Cardiovascular Imaging, 1 (6), 752-761 (2008). D. Stifter, Beyond biomedicine: a review of alternative applications and developments for optical coherence tomography, Applied Physics B Lasers and Optics, 88 (3), 337357 (2007). P. Targowski, M. Iwanicka, L. Tyminska-Widmer et al., Structural examination of easel paintings with optical coherence tomography, Acc Chem Res, 43 (6), 826-36 (2010). P. Targowski, B. J. Rouba, P. Karaszkiewicz et al., Optyczna Koherentna Tomografia OCT – nowe narzędzie do działań konserwatorskich i inwentaryzacyjnych / Optical Coherence Tomography OCT – a novel tool for art conservation and cataloguing, Wiadomości konserwatorskie, 26 94-107 (2009). 14 [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] J. Kunicki-Goldfinger, P. Targowski, M. Góra et al., Characterization of glass surface morphology by optical coherence tomography, Studies in Conservation, 54 117–128 (2009). P. Targowski, J. Marczak, K. E.A. et al., Optical coherence tomography for highresolution real time varnish ablation monitoring, 26-31 M. Iwanicka, E. A. Kwiatkowska, M. Sylwestrzak et al., Application of optical coherence tomography (OCT) for real time monitoring of consolidation of the paint layer in Hinterglasmalerei objects, Proc. SPIE, 8084 80840G (2011). NVIDIA, NVIDIA CUDA C Programming Guide v. 5.0, (2012). D. Huang, E. A. Swanson, C. P. Lin et al., Optical coherence tomography, Science, 254 (5035), 1178-1181 (1991). A. F. Fercher, Optical coherence tomography, Journal of Biomedical Optics, 1 (2), 157-173 (1996). S. R. Chinn, E. A. Swanson, and J. G. Fujimoto, Optical coherence tomography using a frequency-tunable optical source, Opt Lett, 22 (5), 340-342 (1997). M. Wojtkowski, High-speed optical coherence tomography: basics and applications, Appl. Opt., 49 (16), D30-D61 (2010). R. Leitgeb, C. K. Hitzenberger, and A. F. Fercher, Performance of Fourier domain vs. time domain optical coherence tomography, Optics Express, 11 (8), 889-894 (2003). M. Szkulmowski, I. Gorczynska, D. Szlag et al., Efficient reduction of speckle noise in Optical Coherence Tomography, Opt Express, 20 (2), 1337-59 (2012). M. Sylwestrzak, M. Szkulmowski, D. Szlag et al., Real-time imaging for Spectral Optical Coherence Tomography with massively parallel data processing, Photonics Letters of Poland, 2 (3), 137-139 (2010). G. Liu, J. Zhang, L. Yu et al., Real-time polarization-sensitive optical coherence tomography data processing with parallel computing, Appl. Opt., 48 (32), 6365-6370 (2009). 15