]> Creatis software - FrontAlgorithms.git/blobdiff - appli/examples/example_ImageAlgorithmDijkstra_03.cxx
More tests
[FrontAlgorithms.git] / appli / examples / example_ImageAlgorithmDijkstra_03.cxx
index c07dc8ef3d23b5303bee7c4c5bc261f558086f6e..185991f46e96b45c0cab430e823e8276969ccd4b 100644 (file)
@@ -14,6 +14,9 @@
 #include <itkImageFileWriter.h>
 #include <itkImageToVTKImageFilter.h>
 
+#include <itkMinimumMaximumImageCalculator.h>
+#include <itkInvertIntensityImageFilter.h>
+
 #include <vtkPoints.h>
 #include <vtkCellArray.h>
 #include <vtkFloatArray.h>
 
 // -------------------------------------------------------------------------
 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 +44,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 +89,21 @@ 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( );
+  // Allow some interaction
+  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 )
   {