poniedziałek, 28 lipca 2008

Visualization ToolKit - VTK

0 komentarze
Najlepsze narzędzie w kategorii: Wizualizacja 3D

VTK (Visualization ToolKit), podobnie jak Insigh Toolkit, o którym pisałem ostatnio, został zaprojektowany we współpracy amerykańskich uczelni i firmy Kitware w celu przygotowania ujednoliconego narzędzia wizualizacyjnego na potrzeby diagnostyki medycznej. Jego modułowa budowa i wielość różnych funkcji, czyni z niego uniwersalne narzędzie, które może być z powodzeniem wykorzystywane w każdej dziedzinie zastosowań, gdzie pojawia się potrzeba obejrzenia danych wejściowych, bądź też wyników obliczeń.

Technicznie rzecz biorąc, VTK nie jest gotowym programem okienkowym gotowym do użycia, a jedynie biblioteką programistyczną, którą możemy wykorzystać w naszych własnych programach lub skryptach. Stanowi on nadbudowę na OpenGl, co daje gwarancję szybkości działania i przenośności na różne platformy sprzętowo-programowe.

Zalety:
  • Interfejsy programistyczne dla C++, Java, Python, Tcl
  • Możliwość pisania skryptów z wykorzystaniem Pythona, bądź Tcla
  • Programowanie potokowe (wyjście jednej funkcji staje się wejściem następnej)
  • Wsparcie dla przetwarzania równoległego dzięki zastosowaniu standardu MPI
  • Oficjalne wsparcie dla następujących bibliotek GUI: MFC, Qt, Tcl/TK, KWidget. W Internecie można znaleźć przykłady połączenia z innymi bibliotekami, m.in. GTK, WxWidget, Fltk. Więcej informacji: VTK Wiki
  • Wykorzystywany w wielu zaawansowanych programach, zarówno darmowych jak i komercyjnych (m.in. ParaView, VolView, Slicer3D, OsiriX, Aphelion). Więcej informacji: VTK Wiki
  • Łatwa integracja z Insight ToolKit
  • Bardzo dobra dokumentacja
  • Licencja (BSD) pozwala na zamknięcie kodu
Wady:
  • Pomimo dobrej dokumentacji i licznych przykładów, poznanie możliwości VTK wymaga sporo czasu
Konkurencja:
Porównanie VTK i konkurencji można znaleźć w artykule: "Comparing and evaluating computer graphics and visualization software", Robert S. Laramee, Software-Practice & Experience, John Wiley & Sons, Inc.

Materiały:

środa, 23 lipca 2008

Insight Toolkit

0 komentarze
Najlepsze narzędzie w kategorii: Analiza obrazu - segmentacja, Analiza obrazu - dopasowanie

Insight Toolkit (ITK) jest wspólną inicjatywą amerykańskich naukowców (Uniwersytet Utah, Uniwersytet Pensylwania, inne) mającą na celu ujednolicenie narzędzi przetwarzania obrazu dla potrzeb diagnostyki obrazowej. Główny nacisk został położony na opracowanie algorytmów segmentacji obiektów (ang. image segmentation) oraz dopasowania dwóch obrazów (ang. image registration).

Warto wspomnieć, że w odróżnieniu od Pandory, jest to tylko biblioteka programistyczna C++, a nie gotowe narzędzie. Korzystanie z niej wymaga podstawowych umiejętności programistycznych od użytkownika.

Zalety:
  • Przygotowane interfejsy programistyczne dla Javy, TCLa i Pythona
  • Korzystając z TCLa można pisać skrypty
  • Wykorzystywana w wielu zaawansowanych narzędziach (m.in. Slicer3D, OsiriX)
  • Możliwość potokowego konstruowania algorytmów (wyjście jednej funkcji staje się wejściem następnej)
  • Duże wsparcie finansowe amerykańskich instytucji medycznych daje gwarancje ciągłego rozwoju
  • Pozwala na zamkniecie kodu (licencja BSD)
Wady:
  • Mała ilość operatorów morfologicznych
  • Trudna do nauczenia
Konkurencja:
  • W tym momencie w dziedzinie segmentacji i dopasowania biblioteka ITK jest bezkonkurencyjna
Materiały:

poniedziałek, 21 lipca 2008

Pandore

0 komentarze
Najlepsze narzędzie w kategorii: Analiza obrazu - morfologia matematyczna

Pandore - kolejne narzędzie po CImg opracowywane na Uniwersytecie w Caen we Francji jest przeznaczone do tworzenia kompleksowych algorytmów analizy obrazu. Wielość dostępnych operatorów (ok. 350) pozwala jej na konkurowanie z wieloma komercyjnymi narzędziami, szczególnie w zakresie morfologii matematycznej.

Zalety:
  • Możliwość tworzenia skryptów w Bash (Linux), bądź też DOS (Windows)
  • Dostępny graficzny interfejs Ariane, pozwalający na konstruowanie algorytmów z wykorzystaniem schematów blokowych
  • Pandore jest również biblioteką programistyczną C++, co ułatwia opracowywanie interfejsów graficznych dla tworzonego algorytmu
Wady:
  • Brak okienkowego narzędzia, które pozwalałoby na bardziej intuicyjną pracę z programem (dobór parametrów, podgląd rezultatów)
  • Wymaga dystrybucji kodu programu wraz z wersją wykonywalną (licencja CeCILL). Wymaganie to dotyczy programów w C/C++, a nie skryptów.
Konkurencja:

Biblioteki w C/C++ zawierające funkcje morfologii matematycznej:
Materiały:

sobota, 19 lipca 2008

CImg

0 komentarze
Najlepsze narzędzie w kategorii: Programowanie grafiki rastrowej

Niewiarygodne jest to, jak ta mała biblioteka potrafi ułatwić życie podczas konstruowania nowych algorytmów przetwarzania obrazu. Nie tylko wspiera ona odczyt i zapis dokumentów oraz ich przechowywanie w wygodnej do operowania tablicy dwuwymiarowej, ale potrafi również wyświetlać obrazki i obsługuje zdarzenia myszki i klawiatury.

Zalety:
  • Wyświetlanie obrazków i obsługa zdarzeń myszy
  • Obsługa formatu DICOM (po zainstalowaniu pluginu XMedCon)
  • Wbudowany zestaw filtrów graficznych
  • Możliwość rysowania prostych kształtów (punkt, linia, prostokąt, elipsa, strzałka)
  • Wyświetlanie obiektów w 3D
  • Dobrze dopracowana obiektowość (szablony klas i funkcji, przeładowanie operatorów, konstruktory kopiujące i inne)
  • Prosta w użyciu - wystarczy dołączyć plik cimg.h
  • Pozwala na zamknięcie kodu (licencja CeCILL-C)
Wady:
  • CImg domyślnie potrafi czytać i zapisywać kilka rodzajów plików (m.in. BMP). Obsługa pozostałych formatów graficznych (w tym JPG, GIF, PNG, TIF) możliwa jest dopiero po zainstalowaniu ImageMagicka.
  • Brak przykładów integracji z bibliotekami do tworzenia interfejsu użytkownika (Visual Studio, Borland)
Konkurencja:
Informacje dodatkowe:

piątek, 18 lipca 2008

Najlepsze w swojej klasie

0 komentarze
W ostatnim czasie wiele uwagi poświęciłem na przegląd różnego rodzaju narzędzi (bibliotek programistycznych, aplikacji okienkowych) wspomagających prace w dziedzinie przetwarzania i analizy obrazu. Moje doświadczenia postaram się opisać w kolejnych wpisach wskazując ich wady, zalety i konkurencję. Priorytetem w ich wyborze zawsze były otwarte źródła (Open Source), niezależność od platformy systemowej oraz implementacja w C/C++.

Narzędzi komercyjnych nie analizowałem z kilku powodów. Aby uwzględnić je w porównaniach musiałbym wykupić licencję każdego z nich, lub testować wersje demonstracyjne z ograniczoną funkcjonalnością. Żadna z tych opcji nie wydaje się dobrym pomysłem. Z drugiej strony analizując oprogramowanie z dostępnym kodem źródłowym zauważyłem, iż szybciej wprowadzane są tutaj najnowsze algorytmy, aniżeli we własnościowym oprogramowaniu.

Osoby, które miały styczność z prezentowanymi przeze mnie narzędziami zapraszam do podzielenia się swoimi doświadczeniami w komentarzach.