poniedziałek, 9 lutego 2009

Łączymy VTK i ITK

0 komentarze
Visualization Toolkit i Insight Toolkit pomimo tego, że są zupełnie niezależnymi narzędziami, to potrafią świetnie ze sobą współpracować. Istotny wpływ na to ma na pewno fakt, że nad ich rozwojem czuwa ta sama firma (Kitware), która nie tylko wspiera rozwój tych dwóch wolnych bibliotek, ale również sama tworzy oprogramowanie na nich bazujące (np. VolView).

W domyślnej konfiguracji obu bibliotek nie ma przykładów jak sobie poradzić z ich połączeniem. Najlepiej w takim wypadku pobrać dodatkowe przykłady ze strony ITK, tzw. InsightApplications. Po rozpakowaniu przygotowujemy proces kompilacji z użyciem narzędzia CMake, w którym musimy zaznaczyć zmienną USE_VTK oraz USE_AUXILIARY. Po zakończonej kompilacji możemy zajrzeć do katalogu Auxiliary/vtk, w którym jest kilka prostych przykładów wspólnego wykorzystania VTK i ITK.

Poniżej przedstawiam fragment programu do segmentacji obrazu za pomocą algorytmu działów wodnych (ang. watershed). Przetwarzanie obrazu jest tutaj wykonywane przez ITK, a wizualizacje, które znajdują się poniżej zostały przygotowane w VTK.
DiffusionFilterType::Pointer diffusion = DiffusionFilterType::New();
diffusion->SetNumberOfIterations(20);
diffusion->SetConductanceParameter(2.0);
diffusion->SetTimeStep(0.0625);

GradientMagnitudeFilterType::Pointer gradient = GradientMagnitudeFilterType::New();

WatershedFilterType::Pointer watershed = WatershedFilterType::New();
watershed->SetLevel(0.25);
watershed->SetThreshold(0.01);

diffusion->SetInput( castFilter1->GetOutput() );
gradient->SetInput( diffusion->GetOutput() );
watershed->SetInput( gradient->GetOutput() );

Zrzuty ekranu prezentujące działanie algorytmu działów wodnych:

wtorek, 3 lutego 2009

Wizualizacja stóp (galeria)

0 komentarze
Zapraszam do obejrzenia galerii z wizualizacją zdjęć tomograficznych stóp. Dane zostały pobrane ze strony przeglądarki OsiriX (seria VIX, link do zdjęć) i wyświetlone przy użyciu narzędzi, o których pisałem w poprzednim poście.

poniedziałek, 2 lutego 2009

Kompleksowe pakiety wizualizacji medycznej

6 komentarze
Kontynuując serię wpisów "Najlepsze w swojej klasie" tym razem chciałbym napisać o narzędziach szczególnie przydatnych dla końcowego użytkownika, a nie jak to miało miejsce wcześniej dla twórcy aplikacji.
Narzędzi do wizualizacji medycznej, bo to o nich dzisiaj będzie mowa, jest naprawdę sporo. Postaram się omówić te z nich, które oferują największą funkcjonalność i są łatwo dostępne dla każdego. Większość z nich to oprogramowanie Open Source, a pozostałe to okrojone wersje komercyjnych programów.

Aby nie powtażać przy każdym programie z osobna, od razu na początku dodam, że wszystkie poniżej wskazane programy jako silnik do wizualizacji korzystają z VTK, a jeśli umożliwiają przetwarzanie obrazu to opiera się ono na ITK.

Wszystkie zrzuty ekranu, które zostały zamieszczone przy opisach programów wygenerowałem z użyciem pliku tooth.nhdr dołączonego do pakietu SCIRun (opis poniżej).

3D Slicer
[strona WWW]
Bardzo zaawansowane oprogramowanie wykorzystywane głównie w zastosowaniach medycznych. Slicer posiada pokaźną liczbę modułów służących nie tylko do wizualizacji danych przestrzennych, ale również do ich przetwarzania. Bardzo dobrze radzi sobie z formatem DICOM oraz Nrrd. Wbudowany edytor segmentacji obiektów pozwala na szybkie i wygodne oddzielanie poszczególnych struktur anatomicznych. Program pozwala na tworzenie własnych modułów z wykorzystaniem języka Tcl. 3D Slicer jest finansowany przez różne ośrodki medyczne w Stanach, co zapewnia mu stabilny rozwój.



VolView
[strona WWW]
VolView jest komercyjnym programem opracowanym przez firmę Kitware. Istnieje jednak wersja o ograniczonej funkcjonalności, która może być wykorzystywana za darmo również do komercyjnych zastosowań.
Pomimo tego, że w darmowej wersji programu większość modułów jest zablokowanych, to te które są aktywne mają naprawdę duże możliwości. Jednym z nich jest moduł Volume rendering, pozwalający na przygotowanie bardzo realistycznych wizualizacji. Inny moduł gromadzi zewnętrzne moduły Open Source pisane przez różnych użytkowników. Można tu znaleźć wiele przydatnych narzędzi do przetwarzania obrazu w 3D.



Programy SCIRun, BioImage oraz Seg3D rozwijane na uniwersytecie UTAH.
Uniwersytet w UTAH od zawsze był aktywnie zaangażowany w rozwój VTK oraz ITK. Tworzą oni również własne programy, które pokazują możliwości tych dwóch bibliotek. Wśród nich znajdują się:
  • SCIRun [strona WWW] - oprogramowanie ogólnego przeznaczenia służące do wizualizacji i symulacji. W podstawowym trybie pracy algorytmy tworzymy w sposób wizualny. Dodatkowo mamy dostęp do konsoli Tcl, w której możemy pisać własne moduły.
  • BioImage [strona WWW] - wydzielona część SCIRun i oprawiona innym interfejsem. Służy przede wszystkim do wizualizacji 3D.
  • Seg3D [strona WWW] - głównym zadaniem tego programu jest interaktywna segmentacja obrazu w 3D.
    Bazuje on głównie na algorytmach typu region growing dostępnych w ITK. Po wykonaniu segmentacji obiekty mogą zostać wyświetlone w widoku 3D.


MeVisLab
[strona WWW]
O tym programie można śmiało powiedzieć, że jest obecnie najlepszym środowiskiem deweloperskim do tworzenia wizualizacji i algorytmów dla danych przestrzennych. Posiada niemal pełne wsparcie dla VTK i ITK, a także sporą grupę modułów własnych. Dzięki wbudowanemu interpreterowi Pythona łatwo możemy tworzyć własne moduły.
Program posiada wersję do zastosowań niekomercyjnych (edukacja, nauka, prywatne użycie), która ma ograniczenie na liczbę własnych modułów uruchomionych w tym samym czasie.



DeVIDE
[strona WWW]
DeVIDE można określić jako otwarto-źródłowy (Open Source) konkurent dla MeVisLab. Tutaj również programy tworzymy za pomocą schematów blokowych, a moduły wewnętrzne przy użyciu Pythona. W chwili obecnej mamy dostęp do znacznej funkcjonalności VTK, a obsługa ITK może nie jest tak rozbudowana jak w MeVisLab, ale wystarcza do wykonania prostej segmentacji obrazu.



Pozostałe programy do wizualizacji medycznej
Jest jeszcze kilka programów, których nie przetestowałem, ale o których warto wiedzieć.
  • OsiriX [strona WWW] - "rozwijany przez radiologów i dla radiologów" - tak o programie mówią sami jego twórcy. Na początek warto obejrzeć zrzuty ekranu prezentujące możliwości programu. Teraz możemy się zastanowić czy jest on wart zakupu komputera Apple, ponieważ istnieje wersja tylko dla systemu MacOS X. Sam program jest oczywiście darmowy.
  • BioImage Suite [strona WWW] - program rozwijany na Uniwersytecie Yale przy dużym zaangażowaniu Xenios Papademetris, autora książki Introduction to Programming for Image Analysis with VTK
  • GIMIAS [strona WWW] - wyglada zachęcająco, szczególnie tryb manualnej segmentacji.
  • eXtensible Imaging Platform (XIP) [strona WWW] - udostępniony przez Simensa na licencji Open Source program do wizualnego budowania algorytmów z wykorzystaniem VTK i ITK.
  • ImageVis3D [strona WWW] - kolejny program do wizualizacji medycznej opracowany na Uniwersytecie w UTAH. Zachęcająco brzmi deklaracja na stronie projektu o możliwości analizy ogromnej ilości danych, przekraczających ilość dostępnej pamięci RAM.
Programy ogólnego przeznaczenia
Jeśli nie chcemy przetwarzać obrazów 3D, a jedynie je wyświetlać, dodatkowo możemy skorzystać z jednego z poniższych programów.

ParaView
[strona WWW]
Bardzo zaawansowane narzędzie do wizualizacji. Często wykorzystywane do wyświetlania dużych zbiorów danych. Został tak skonstruowany, że może działać w trybie równoległym, przez co bywa instalowany nawet na dużych superkomputerach (więcej o tym, gdzie korzysta się z tego programu można przeczytać na stronie WWW).



MayaVi2
[strona WWW]
Zdecydowanie "lżejszy" program od ParaView. Obsługuje tryb wizualizacji przestrzennej, powierzchniowej oraz przekrojowej.



Pozostałe programy ogólnego przeznaczenia:
Podsumowanie
Wiele osób ciągle przegląda przestrzenne dane medyczne oglądając każdy plik osobno. Często nie zdają one sobie sprawy, że istnieje wiele darmowych programów, które potrafią robić świetne wizualizacje 3D. Mam nadzieje, że ten wpis okaże się dla nich przydatny i znajdą dla siebie odpowiednie narzędzie.