+ if( visual_debug )
+ {
+ // Configure observer
+ TObserver::Pointer obs = TObserver::New( );
+ obs->SetImage( input_image, view.GetWindow( ) );
+ algorithm->AddObserver( itk::AnyEvent( ), obs );
+ algorithm->ThrowEventsOn( );
+ }
+ else
+ algorithm->ThrowEventsOff( );
+
+ std::clock_t start = std::clock( );
+ algorithm->Update( );
+ std::clock_t end = std::clock( );
+ double seconds = double( end - start ) / double( CLOCKS_PER_SEC );
+ std::cout << "Execution time = " << seconds << std::endl;
+
+ // Show result
+ TVTKImage::Pointer output_image_vtk = TVTKImage::New( );
+ output_image_vtk->SetInput( algorithm->GetOutput( ) );
+ output_image_vtk->Update( );
+
+ vtkSmartPointer< vtkImageMarchingCubes > mc =
+ vtkSmartPointer< vtkImageMarchingCubes >::New( );
+ mc->SetInputData( output_image_vtk->GetOutput( ) );
+ mc->SetValue(
+ 0,
+ double( algorithm->GetInsideValue( ) ) * double( 0.95 )
+ );
+ mc->Update( );
+
+ // Let some interaction and close program
+ view.AddPolyData( mc->GetOutput( ), 0.1, 0.6, 0.8, 0.5 );