+// This example illustrates how the vtkGdcmReader vtk class can be
+// used in order to:
+// * produce a simple (vtk based) Dicom image STACK VIEWER.
+// * dump the stack considered as a volume in a vtkStructuredPoints
+// vtk file: the vtk gdcm wrappers can be seen as a simple way to convert
+// a stack of Dicom images into a native vtk volume.
+//
+// Usage:
+// * the filenames of the Dicom images constituting the stack should be
+// given as command line arguments,
+// * you can navigate through the stack by hitting any character key,
+// * the produced vtk file is named "foo.vtk" (in the invocation directory).
+//
+//----------------------------------------------------------------------------
#include <iostream>
#include <vtkRenderWindowInteractor.h>
#include "vtkGdcmReader.h"
+#ifndef vtkFloatingPointType
+#define vtkFloatingPointType float
+#endif
+
//----------------------------------------------------------------------------
// Callback for the interaction
class vtkgdcmObserver : public vtkCommand
{
this->ImageViewer = NULL;
}
- virtual void Execute(vtkObject *wdg, unsigned long event, void* calldata)
+ virtual void Execute(vtkObject *, unsigned long event, void* )
{
if ( this->ImageViewer )
{
return 0;
vtkGdcmReader *reader = vtkGdcmReader::New();
+ reader->AllowLookupTableOff();
if( argc == 2 )
reader->SetFileName( argv[1] );
for(int i=1; i< argc; i++)
reader->AddFileName( argv[i] );
- //reader->DebugOn();
+ reader->DebugOn();
reader->Update();
//print debug info:
- reader->GetOutput()->Print( std::cout );
+ reader->GetOutput()->Print( cout );
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
vtkImageViewer2 *viewer = vtkImageViewer2::New();
+
if( reader->GetLookupTable() )
{
//convert to color:
}
viewer->SetupInteractor (iren);
- vtkFloatingPointType *range = reader->GetOutput()->GetScalarRange();
- viewer->SetColorWindow (range[1] - range[0]);
- viewer->SetColorLevel (0.5 * (range[1] + range[0]));
+ //vtkFloatingPointType *range = reader->GetOutput()->GetScalarRange();
+ //viewer->SetColorWindow (range[1] - range[0]);
+ //viewer->SetColorLevel (0.5 * (range[1] + range[0]));
// Here is where we setup the observer,
vtkgdcmObserver *obs = vtkgdcmObserver::New();