#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[]) |
|
Definition at line 45 of file vtkgdcmViewer2.cxx. |
|
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 }
|