Program można pobrać ze strony: http://www.greyc.ensicaen.fr/~regis/Ariane/
Pokazywanie postów oznaczonych etykietą rekomendowane technologie. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą rekomendowane technologie. Pokaż wszystkie posty
piątek, 5 czerwca 2009
Ariane - interfejs graficzny dla Pandore
Etykiety:
pandore,
rekomendowane technologie
0
komentarze
Praca z analizatorem obrazu Pandore dla użytkowników przyzwyczajonych do aplikacji okienkowych może być uciążliwa. Wpisywanie kolejnych komend w okienku terminala nie wszystkim odpowiada i może szybko zniechęcić do używania tego narzędzia. Zdają sobie również z tego sprawę twórcy Pandore, dlatego przygotowali graficzną nakładkę Ariane wspomagającą konstruowanie algorytmów. Dzięki niej możemy łatwo projektować kolejne etapy przetwarzania obrazu łącząc ze sobą odpowiednie bloczki operacyjne. Z programem dodatkowo została zintegrowana pomoc, co dodatkowo upraszcza jego użytkowanie.

Program można pobrać ze strony: http://www.greyc.ensicaen.fr/~regis/Ariane/
Program można pobrać ze strony: http://www.greyc.ensicaen.fr/~regis/Ariane/
poniedziałek, 2 lutego 2009
Kompleksowe pakiety wizualizacji medycznej
Etykiety:
Insight Toolkit (ITK),
rekomendowane technologie,
Visualization ToolKit (VTK),
wizualizacja
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ę:



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ć.
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:
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.
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.
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:
- VisIt [strona WWW]
- VisTrails [strona WWW]
- VTK Designer [strona WWW]
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.
środa, 20 sierpnia 2008
Qt
Etykiety:
Qt,
rekomendowane technologie
5
komentarze
Najlepsze narzędzie w kategorii: Międzyplatformowe aplikacje okienkowe
Do tej pory w cyklu artykułów 'Najlepsze w swojej klasie' starałem się wskazać narzędzia, które mają kontakt przede wszystkim z danymi (obrazy, obiekty trójwymiarowe, video). Nadeszła pora, aby wskazać technologie i gotowe programy, które umożliwiają interakcję z użytkownikiem. Zaczniemy dzisiaj od bibliotek służących do tworzenia międzyplatformowych interfejsów użytkownika.
Zdecydowanym liderem w tej kategorii jest Qt - narzędzie rozwijane przez firmę Trolltech, przejętą w ostatnim czasie przez Nokię. Qt pomimo tego, że ma już swoje lata, jest bardzo nowoczesną technologią i znajduje zastosowanie nie tylko w aplikacjach okienkowych dla komputerów osobistych, ale również w urządzeniach multimedialnych - telefonach i palmtopach. Co ważne, Qt nie służy tylko do tworzenia okienek, ale również posiada wbudowaną obsługę multimediów, protokołów sieciowych, xmla, dostępu do baz danych i wielu innych.
Zalety:
Konkurencja:
GTK+
Patrząc jeszcze raz na przedstawione w porównaniu biblioteki, można zauważyć, że lider tej kategorii - Qt, oferuje znacznie większe możliwości i wygodę pracy, aniżeli konkurenci, ale w odróżnieniu od nich, wprowadza większe ograniczenia licencyjne. Podwójna licencja z jaką mamy tutaj do czynienia nie musi być kłopotliwa, ponieważ dla firm tworzących zamknięte oprogramowanie koszt zakupu licencji nie jest wysoki w porównaniu do innych kosztów operacyjnych. Natomiast twórcy projektów Open Source dostają dobrze zaprojektowaną i przetestowaną bibliotekę bez ponoszenia jakichkolwiek kosztów.
Niezależnie od tego, która biblioteka swoimi funkcjami najbardziej przekona nas do siebie, sam fakt tworzenia aplikacji niezależnych od platformy, czyni ją bardziej dostępną dla potencjalnych użytkowników, którzy sami mogą zdecydować, czy będą z niej korzystać na pececie, komórce, czy też superkomputerze.
Do tej pory w cyklu artykułów 'Najlepsze w swojej klasie' starałem się wskazać narzędzia, które mają kontakt przede wszystkim z danymi (obrazy, obiekty trójwymiarowe, video). Nadeszła pora, aby wskazać technologie i gotowe programy, które umożliwiają interakcję z użytkownikiem. Zaczniemy dzisiaj od bibliotek służących do tworzenia międzyplatformowych interfejsów użytkownika.
Zdecydowanym liderem w tej kategorii jest Qt - narzędzie rozwijane przez firmę Trolltech, przejętą w ostatnim czasie przez Nokię. Qt pomimo tego, że ma już swoje lata, jest bardzo nowoczesną technologią i znajduje zastosowanie nie tylko w aplikacjach okienkowych dla komputerów osobistych, ale również w urządzeniach multimedialnych - telefonach i palmtopach. Co ważne, Qt nie służy tylko do tworzenia okienek, ale również posiada wbudowaną obsługę multimediów, protokołów sieciowych, xmla, dostępu do baz danych i wielu innych.
Zalety:
- Bardzo dobre wsparcie dla różnych systemów operacyjnych i różnych kompilatorów
- W Windows bardzo dobrze dopracowana współpraca z Visual Studio
- Często stosowana w projektach Open Source; jest podstawą środowiska graficznego KDE, które od wersji 4.0 dostępne jest nie tylko dla Linuksa, ale również Windowsa, Mac OSa i Solarisa
- Natywne wsparcie dla wielu technologii, takich jak: xml, multimedia, bazy danych, protokoły sieciowe (wiecej informacji)
- Wygodny zestaw narzędzi wspierających:
- qmake - przygotowywanie plików makefile, lub plików projektowych dla Visual Studio
- Qt Designer - graficzne narzędzie do projektowania interfejsów
- Qt Linguist - przygotowywanie różnych wersji językowych
- Qt Assistant - system pomocy dla programistów
- Szeroko wykorzystywana w różnych projektach Open Source związanych z przetwarzaniem obrazów, m.in.: ParaView, VTK Designer, MeVisLab, Pandore (aplikacja pvisu), MITK
- Wykorzystywana w wielu komercyjnych aplikacjach (Skype, Google Earth, Gadu-gadu, inne)
- Wsparcie dla technologii mobilnych (więcej informacji)
- Bardzo dobrze opracowana dokumentacja; wiele przykładów
- Posiada zaawansowane kontrolki graficzne (więcej informacji)
- Programowanie kontrolek danych według modelu MVC
- Pluginy pozwalające na rozszerzanie możliwości programów bez ich rekompilacji
- Dostępny język skryptowy (QtScript)
- Droga licencja do zastosowań komercyjnych. Możemy oczywiście wybrać licencję GPL i również sprzedawać napisane przez siebie programy, ale pod warunkiem przekazania użytkownikowi pełnego kodu źródłowego (łącznie z kodem bibliotek dołączanych dynamicznie)
- Mała ilość zaawansowanych kontrolek
Konkurencja:
GTK+
- Duże wsparcie społeczności, widoczne przede wszystkim w środowisku graficznym dla Linuksa: GNOME oraz miedzyplatformowym edytorze grafiki: GIMP
- Biblioteka wykorzystywana w aplikacjach mobilnych (więcej informacji)
- Przygotowanie wersji pod Windowsa wymaga znacznie więcej wysiłku aniżeli w przypadku Qt
- Niepełna obiektowość; piszemy głównie w C
- Rzadko wybierana przez użytkowników zajmujących się analizą obrazu
- Przykłady wykorzystania: MedicalStudio
- Licencja LGPL
- Strona WWW
- Dobrze pracuje pod Windows
- Bogaty zestaw kontrolek
- Chętnie wybierana jako interfejs w aplikacjach komercyjnych (więcej informacji)
- Mniejsza popularność w środowisku Open Source w porównaniu z Qt i GTK
- Przykładowe aplikacje: DeVIDE
- Licencja LGPL
- Strona WWW
- Bardzo mała i szybka biblioteka
- Prostota programowania i kompilacji
- Dostępne wygodne narzędzie do projektowania interfejsu
- Bardzo dobrze współpracuje z VTK i ITK
- Powolny rozwój; niewielka społeczność i małe zainteresowanie firm komercyjnych
- Przykłady zastosowań: kilka aplikacji z pakietu ITK Applications, ITK-Snap, IGSTK
- Licencja LGPL
- Strona WWW
Patrząc jeszcze raz na przedstawione w porównaniu biblioteki, można zauważyć, że lider tej kategorii - Qt, oferuje znacznie większe możliwości i wygodę pracy, aniżeli konkurenci, ale w odróżnieniu od nich, wprowadza większe ograniczenia licencyjne. Podwójna licencja z jaką mamy tutaj do czynienia nie musi być kłopotliwa, ponieważ dla firm tworzących zamknięte oprogramowanie koszt zakupu licencji nie jest wysoki w porównaniu do innych kosztów operacyjnych. Natomiast twórcy projektów Open Source dostają dobrze zaprojektowaną i przetestowaną bibliotekę bez ponoszenia jakichkolwiek kosztów.
Niezależnie od tego, która biblioteka swoimi funkcjami najbardziej przekona nas do siebie, sam fakt tworzenia aplikacji niezależnych od platformy, czyni ją bardziej dostępną dla potencjalnych użytkowników, którzy sami mogą zdecydować, czy będą z niej korzystać na pececie, komórce, czy też superkomputerze.
wtorek, 12 sierpnia 2008
Biblioteki do obsługi formatu DICOM
Etykiety:
dicom,
rekomendowane technologie
0
komentarze
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.:
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)
Co ważne, wszystkie opisywane powyżej biblioteki, ze względu na swoje licencje (BSD, LGPL) mogą być wykorzystywane w aplikacjach komercyjnych.
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)
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
- 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
- biblioteka C++, oraz przeglądarka DICOM
- dobra integracja z biblioteką GTK+
- jest wykorzystywana przez CImg do obsługi DICOM
- licencja LGPL
- strona WWW
- 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
Co ważne, wszystkie opisywane powyżej biblioteki, ze względu na swoje licencje (BSD, LGPL) mogą być wykorzystywane w aplikacjach komercyjnych.
piątek, 1 sierpnia 2008
OpenCV
Etykiety:
OpenCV,
rekomendowane technologie
2
komentarze
Pisałem już o bibliotekach 2D oraz 3D, natomiast dzisiaj przyszła kolej na obsługę wideo. W tym zakresie nie mam dużego doświadczenia, ale nie trzeba było długo szukać w Internecie, aby ocenić, która biblioteka jest najpopularniejsza i jakich ma konkurentów. W kategorii 'Analiza obrazu w czasie rzeczywistym' wyraźnie na prowadzenie wysuwa się OpenCV - narzędzie opracowane i udostępnione na licencji BSD przez firmę Intel.
Zastanówmy się teraz, czy ogromna popularność biblioteki przekłada się na jej jakość. Pierwszym czynnikiem, który może o tym świadczyć, jest duża ilość obsługiwanych kamer - wystarczy tania kamerka internetowa, aby napisać swój pierwszy program. Następnym czynnikiem jest szybkość działania. Biblioteka OpenCV została zoptymalizowana, żeby działać w czasie rzeczywistym i w zdecydowanej większości przypadków się sprawdza. Świadczyć może o tym m.in. częste jej stosowanie do sterowania robotami. Ważną cechą OpenCV jest również to, że posiada bogaty zestaw wbudowanych funkcji przetwarzania obrazu, zarówno tych podstawowych (filtracje, wykrywanie krawędzi, operacje morfologiczne), jak i bardziej złożonych (detekcja obiektów, analiza ruchu).
Co do konkurencyjnych bibliotek, trudno mi wskazać taką, która miałaby chociaż część funkcjonalności OpenCV.
Materiały:
Zastanówmy się teraz, czy ogromna popularność biblioteki przekłada się na jej jakość. Pierwszym czynnikiem, który może o tym świadczyć, jest duża ilość obsługiwanych kamer - wystarczy tania kamerka internetowa, aby napisać swój pierwszy program. Następnym czynnikiem jest szybkość działania. Biblioteka OpenCV została zoptymalizowana, żeby działać w czasie rzeczywistym i w zdecydowanej większości przypadków się sprawdza. Świadczyć może o tym m.in. częste jej stosowanie do sterowania robotami. Ważną cechą OpenCV jest również to, że posiada bogaty zestaw wbudowanych funkcji przetwarzania obrazu, zarówno tych podstawowych (filtracje, wykrywanie krawędzi, operacje morfologiczne), jak i bardziej złożonych (detekcja obiektów, analiza ruchu).
Co do konkurencyjnych bibliotek, trudno mi wskazać taką, która miałaby chociaż część funkcjonalności OpenCV.
Materiały:
poniedziałek, 28 lipca 2008
Visualization ToolKit - VTK
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:
Materiały:
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
- Pomimo dobrej dokumentacji i licznych przykładów, poznanie możliwości VTK wymaga sporo czasu
- Open Inventor (licencja LGPL)
- Coin 3D (licencja GPL oraz komercyjna)
- Hoops 3D (komercyjna i darmowa dla celów edukacyjnych)
- Visualization Library (licencja GPL oraz komercyjna)
Materiały:
środa, 23 lipca 2008
Insight Toolkit
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:
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)
- Mała ilość operatorów morfologicznych
- Trudna do nauczenia
- W tym momencie w dziedzinie segmentacji i dopasowania biblioteka ITK jest bezkonkurencyjna
poniedziałek, 21 lipca 2008
Pandore
Etykiety:
pandore,
rekomendowane technologie
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:
Biblioteki w C/C++ zawierające funkcje morfologii matematycznej:
Materiały:
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
- 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.
Biblioteki w C/C++ zawierające funkcje morfologii matematycznej:
Materiały:
sobota, 19 lipca 2008
CImg
Etykiety:
cimg,
rekomendowane technologie
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:
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)
- 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)
- FreeImage, Adobe GIL, ITK, DevIL, OpenCV, VIGRA, Olena, EasyBMP, VXL, paintlib, ADISL, restoreInpaint
piątek, 18 lipca 2008
Najlepsze w swojej klasie
Etykiety:
rekomendowane technologie
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.
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.
Subskrybuj:
Posty (Atom)
