X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=appli%2Fexamples%2Fexample_ImageAlgorithmDijkstra_03.cxx;h=0de81262791453d8f802238ce15b6ebbb3e37385;hb=dc4791c63d865f011d4fcac4112deb69e860491c;hp=c07dc8ef3d23b5303bee7c4c5bc261f558086f6e;hpb=37d7623729a0100a6517f8bfe4e3417db8367697;p=FrontAlgorithms.git diff --git a/appli/examples/example_ImageAlgorithmDijkstra_03.cxx b/appli/examples/example_ImageAlgorithmDijkstra_03.cxx index c07dc8e..0de8126 100644 --- a/appli/examples/example_ImageAlgorithmDijkstra_03.cxx +++ b/appli/examples/example_ImageAlgorithmDijkstra_03.cxx @@ -14,11 +14,15 @@ #include #include +#include +#include + #include #include #include #include #include +#include #include #include @@ -26,13 +30,13 @@ // ------------------------------------------------------------------------- const unsigned int Dim = 3; -typedef double TPixel; -typedef double TScalar; +typedef float TPixel; +typedef float TScalar; typedef itk::Image< TPixel, Dim > TImage; typedef itk::ImageToVTKImageFilter< TImage > TVTKImage; typedef itk::ImageFileReader< TImage > TImageReader; -typedef itk::ImageFileWriter< TImage > TImageWriter; +typedef itk::ImageFileWriter< TImage > TImageWriter; typedef fpa::Image::DijkstraWithSphereBacktracking< TImage, TScalar > TDijkstra; typedef fpa::VTK::ImageMPR TMPR; @@ -41,23 +45,25 @@ typedef fpa::VTK::Image3DObserver< TDijkstra, vtkRenderWindow > TDijkstraObs; // ------------------------------------------------------------------------- int main( int argc, char* argv[] ) { - if( argc < 4 ) + if( argc < 6 ) { std::cerr << "Usage: " << argv[ 0 ] - << " input_image output_image" - << " neighborhood_order" + << " input_image x y z output_image" << " visual_debug" << std::endl; return( 1 ); } // fi std::string input_image_fn = argv[ 1 ]; - std::string output_image_fn = argv[ 2 ]; - unsigned int neighborhood_order = std::atoi( argv[ 3 ] ); + TImage::PointType seed_pnt; + seed_pnt[ 0 ] = std::atof( argv[ 2 ] ); + seed_pnt[ 1 ] = std::atof( argv[ 3 ] ); + seed_pnt[ 2 ] = std::atof( argv[ 4 ] ); + std::string output_image_fn = argv[ 5 ]; bool visual_debug = false; - if( argc > 4 ) - visual_debug = ( std::atoi( argv[ 4 ] ) == 1 ); + if( argc > 6 ) + visual_debug = ( std::atoi( argv[ 6 ] ) == 1 ); // Read image TImageReader::Pointer input_image_reader = TImageReader::New( ); @@ -84,25 +90,29 @@ int main( int argc, char* argv[] ) view.SetSize( 800, 800 ); view.SetImage( vtk_image->GetOutput( ) ); - // Wait for a seed to be given - while( view.GetNumberOfSeeds( ) == 0 ) - view.Start( ); + vtkSmartPointer< vtkImageMarchingCubes > mc = + vtkSmartPointer< vtkImageMarchingCubes >::New( ); + mc->SetInputData( vtk_image->GetOutput( ) ); + mc->SetValue( 0, 1e-2 ); + mc->Update( ); + view.AddPolyData( mc->GetOutput( ), 1, 1, 1, 0.4 ); + + // Allow some interaction + view.Render( ); + view.Start( ); - // Get seed from user - double seed[ 3 ]; - view.GetSeed( 0, seed ); - TImage::PointType seed_pnt; - seed_pnt[ 0 ] = seed[ 0 ]; - seed_pnt[ 1 ] = seed[ 1 ]; - seed_pnt[ 2 ] = seed[ 2 ]; TImage::IndexType seed_idx; input_image->TransformPhysicalPointToIndex( seed_pnt, seed_idx ); + std::cout << seed_idx << " " << seed_pnt << std::endl; + seed_idx[ 0 ] = 256; + seed_idx[ 1 ] = 313; + seed_idx[ 2 ] = 381; // Extract paths TDijkstra::Pointer paths = TDijkstra::New( ); paths->AddSeed( seed_idx, TScalar( 0 ) ); paths->SetInput( input_image ); - paths->SetNeighborhoodOrder( neighborhood_order ); + paths->SetNeighborhoodOrder( 2 ); if( visual_debug ) {