wtorek, 12 sierpnia 2008

Biblioteki do obsługi formatu DICOM

Kolejna analiza narzędzi, którą się zająłem, dotyczyła bibliotek służących do obsługi formatu DICOM. Podobnie jak w poprzednich wpisach, główny nacisk został położony na technologie mogące być interesujące z punktu widzenia programisty lub osoby zajmującej się analizą obrazu, a nie użytkownika końcowego. Osoby zainteresowane gotowymi programami, a nie ich tworzeniem odsyłam do internetowej bazy oprogramowania IDoImaging.com, poświęconej diagnostyce obrazowej, w której znajduje się lista ok. 80 przeglądarek DICOM, dostępnych w znaczniej mierze nieodpłatnie.

Większość osób, z którymi rozmawiam na temat analizy obrazu, przetwarza zdjęcia medyczne po ich uprzednim przekonwertowaniu z formatu DICOM do jednego z bardziej popularnych formatów, takich jak BMP, JPEG, TIFF. Jest to związane z jednej z strony z nabytymi przyzwyczajeniami do reprezentacji obrazu w skali szarości w zakresie od 0 do 255 (w DICOM często mamy inną skalę), a z drugiej strony z faktem, że dostępne oprogramowanie nie zawsze wspiera format DICOM. Jednakże, jeśli sami tworzymy algorytmy 'od zera' implementując je np. w C++ lub zastanawiamy się nad tworzeniem bardziej złożonego oprogramowania, warto wprowadzić natywną obsługę formatu DICOM. Przyniesie nam to wiele korzyści, m.in.:
  • dostęp do pełnej informacji obrazowych
  • dostęp do opisu zdjęcia w tym samym pliku
  • przyspieszenie obliczeń (pomijamy etap konwersji)
Oczywiście sami nie musimy implementować funkcji obsługujących DICOM - wystarczy, że skorzystamy z jednej z gotowych bibliotek programistycznych, która już taką obsługę oferuje.

Poniżej, chciałbym przedstawić cztery biblioteki, które mogą zainteresować czytelnika. Trudno mi wskazać, która z nich jest bezwzględnie najlepsza, ponieważ każda z nich sprawdza się lepiej od innych w zastosowaniach, do których została przygotowana.

DCMTK (DICOM Toolkit)
  • najbardziej kompleksowa biblioteka ze wszystkich opisywanych; implementuje największą cześć standardu DICOM
  • poza biblioteką programistyczną, cześć funkcjonalności jest gotowa od razu do użycia dzięki przygotowanym programom konsolowym
  • wykorzystywana przez takie programy jak: OsiriX, Medical Studio
  • kompilacja z użyciem CMake
  • licencja BSD
  • strona WWW
GDCM (Grass roots DiCoM)
  • dobra obsługa standardu DICOM
  • biblioteka 'lżejsza' od DCMTK
  • w odróżnieniu do DCMTK brakuje obsługi DICOM network file exchange protocol i DICOM media storage formats (więcej informacji)
  • podobnie jak w DCMTK dostępna jest grupa narzędzi konsolowych
  • jest ona domyślnie wbudowana w ITK oraz VTK
  • przygotowany interfejs (ang. wrapping) dla Pythona
  • kompilacja z użyciem CMake
  • licencja BSD
  • strona WWW
(X)MedCon
  • biblioteka C++, oraz przeglądarka DICOM
  • dobra integracja z biblioteką GTK+
  • jest wykorzystywana przez CImg do obsługi DICOM
  • licencja LGPL
  • strona WWW
OpenDicom.Net
  • biblioteka C# - została uwzględniona w analizie, ponieważ jest tworzona z wykorzystaniem Mono, co czyni ją niezależną od systemu operacyjnego
  • oferuje również przeglądarkę DICOM oraz zestaw narzędzi konsolowych
  • strona WWW
Podsumowując przedstawione powyżej narzędzia, można zauważyć, że ich stopień złożoności jest różny, przez co ich wykorzystanie również może być inne. Z biblioteką GDCM warto bliżej się zapoznać, jeśli korzystamy lub planujemy korzystać z tandemu VTK - ITK. Tworząc bardziej zaawansowane aplikacje, które będą łączyć sie z serwerami PACS, najlepszym rozwiązaniem będzie skorzystanie z DCMTK. Osoby, które nie tworzą aplikacji pod klienta, a jedynie projektują algorytmy, powinny być zadowolone z możliwości MedCon, szczególnie po jej połączeniu z CImg. OpenDicom.Net będzie najlepszym wyborem dla programistów platformy .NET, którzy nie chcą uzależniać swoich aplikacji od systemu Windows.

Co ważne, wszystkie opisywane powyżej biblioteki, ze względu na swoje licencje (BSD, LGPL) mogą być wykorzystywane w aplikacjach komercyjnych.

0 komentarze:

Prześlij komentarz