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