#include <vtkCellArray.h>
#include <vtkFloatArray.h>
#include <vtkPolyData.h>
+#include <vtkPolyDataWriter.h>
#include <vtkSmartPointer.h>
#include <vtkImageMarchingCubes.h>
+#include <vtkLookupTable.h>
#include <fpa/Image/DijkstraWithSphereBacktracking.h>
#include <fpa/VTK/ImageMPR.h>
vtkSmartPointer< vtkFloatArray > scalars =
vtkSmartPointer< vtkFloatArray >::New( );
+ const TDijkstra::TMarkImage* marks = paths->GetOutputMarkImage( );
+ TDijkstra::TMark max_mark = paths->GetNumberOfBranches( );
const TDijkstra::TVertices& endpoints = paths->GetEndPoints( );
const TDijkstra::TTree& tree = paths->GetFinalTree( );
TDijkstra::TVertices::const_iterator epIt = endpoints.begin( );
for( unsigned int epId = 0; epIt != endpoints.end( ); ++epIt, ++epId )
{
- double pd = double( epId ) / double( endpoints.size( ) - 1 );
-
TDijkstra::TVertex idx = *epIt;
do
{
TImage::PointType pnt;
input_image->TransformIndexToPhysicalPoint( idx, pnt );
+ TDijkstra::TMark mark = marks->GetPixel( idx );
+ double pd = double( mark );
+
points->InsertNextPoint( pnt[ 0 ], pnt[ 1 ], pnt[ 2 ] );
scalars->InsertNextTuple1( pd );
if( idx != *epIt )
vtk_tree->SetLines( cells );
vtk_tree->GetPointData( )->SetScalars( scalars );
- view.AddPolyData( vtk_tree );
+ vtkSmartPointer<vtkLookupTable> lut =
+ vtkSmartPointer<vtkLookupTable>::New( );
+ lut->SetNumberOfTableValues( max_mark + 1 );
+ lut->SetTableRange( 0, max_mark );
+ lut->Build( );
+
+ view.AddPolyData( vtk_tree, lut );
view.Render( );
view.Start( );
+ vtkSmartPointer< vtkPolyDataWriter > writer =
+ vtkSmartPointer< vtkPolyDataWriter >::New( );
+ writer->SetInputData( vtk_tree );
+ writer->SetFileName( output_image_fn.c_str( ) );
+ writer->Update( );
+
+ itk::ImageFileWriter< TDijkstra::TMarkImage >::Pointer marks_writer =
+ itk::ImageFileWriter< TDijkstra::TMarkImage >::New( );
+ marks_writer->SetInput( marks );
+ marks_writer->SetFileName( "marks.mhd" );
+ marks_writer->Update( );
+
/* TODO
TImageWriter::Pointer dijkstra_writer =
TImageWriter::New( );