Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

vtkgdcmViewer2.cxx File Reference

#include <vtkRenderWindowInteractor.h>
#include <vtkImageViewer2.h>
#include <vtkStructuredPoints.h>
#include <vtkStructuredPointsWriter.h>
#include <vtkCommand.h>
#include <vtkRenderer.h>
#include <vtkImageMapToColors.h>
#include <vtkLookupTable.h>
#include "vtkGdcmReader.h"
#include "gdcmDocument.h"

Include dependency graph for vtkgdcmViewer2.cxx:

Go to the source code of this file.

Classes

class  vtkgdcmObserver

Defines

#define vtkFloatingPointType   float

Functions

int main (int argc, char *argv[])


Define Documentation

#define vtkFloatingPointType   float
 

Definition at line 45 of file vtkgdcmViewer2.cxx.


Function Documentation

int main int  argc,
char *  argv[]
 

Definition at line 83 of file vtkgdcmViewer2.cxx.

References vtkGdcmReader::AddFileName(), vtkgdcmObserver::ImageViewer, gdcm::LD_NOSHADOWSEQ, vtkgdcmObserver::New(), vtkGdcmReader::New(), vtkGdcmReader::SetFileName(), and vtkFloatingPointType.

00084 {
00085    if( argc < 2 )
00086       return 0;
00087   
00088    vtkGdcmReader *reader = vtkGdcmReader::New();
00089    reader->AllowLookupTableOff();
00090 
00091    if( argc == 2 )
00092       reader->SetFileName( argv[1] );
00093    else
00094       for(int i=1; i< argc; i++)
00095          reader->AddFileName( argv[i] );
00096 
00097 // TODO : allow user to choose Load Mode
00098    reader->SetLoadMode(gdcm::LD_NOSHADOWSEQ);  
00099    reader->Update();
00100 
00101    //print debug info:
00102    reader->GetOutput()->Print( cout );
00103 
00104    vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
00105 
00106    vtkImageViewer2 *viewer = vtkImageViewer2::New();
00107 
00108    if( reader->GetLookupTable() )
00109    {
00110       //convert to color:
00111       vtkImageMapToColors *map = vtkImageMapToColors::New ();
00112       map->SetInput (reader->GetOutput());
00113       map->SetLookupTable (reader->GetLookupTable());
00114       map->SetOutputFormatToRGB();
00115       viewer->SetInput ( map->GetOutput() );
00116       map->Delete();
00117    }
00118    else
00119    {
00120       vtkFloatingPointType *range = reader->GetOutput()->GetScalarRange();
00121       viewer->SetColorLevel (0.5 * (range[1] + range[0]));
00122       viewer->SetColorWindow (range[1] - range[0]);
00123 
00124       viewer->SetInput ( reader->GetOutput() );
00125    }
00126    viewer->SetupInteractor (iren);
00127   
00128    //vtkFloatingPointType *range = reader->GetOutput()->GetScalarRange();
00129    //viewer->SetColorWindow (range[1] - range[0]);
00130    //viewer->SetColorLevel (0.5 * (range[1] + range[0]));
00131 
00132    // Here is where we setup the observer, 
00133    vtkgdcmObserver *obs = vtkgdcmObserver::New();
00134    obs->ImageViewer = viewer;
00135    iren->AddObserver(vtkCommand::CharEvent,obs);
00136    obs->Delete();
00137 
00138    //viewer->Render();
00139    iren->Initialize();
00140    iren->Start();
00141 
00142    //if you wish you can export dicom to a vtk file  
00143    vtkStructuredPointsWriter *writer = vtkStructuredPointsWriter::New();
00144    writer->SetInput( reader->GetOutput());
00145    writer->SetFileName( "foo.vtk" );
00146    writer->SetFileTypeToBinary();
00147    //writer->Write();
00148 
00149    reader->Delete();
00150    iren->Delete();
00151    viewer->Delete();
00152    writer->Delete();
00153 
00154    return 0;
00155 }


Generated on Fri Jan 20 10:14:29 2006 for gdcm by  doxygen 1.4.4