poniedziałek, 9 lutego 2009

Łączymy VTK i ITK

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:

0 komentarze:

Prześlij komentarz