#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"
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 vtkgdcmViewer2.cxx. |
|
Definition at line 82 of file vtkgdcmViewer2.cxx. References vtkGdcmReader::AddFileName(), vtkgdcmObserver::ImageViewer, vtkgdcmObserver::New(), 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 reader->Update(); 00097 00098 //print debug info: 00099 reader->GetOutput()->Print( cout ); 00100 00101 vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); 00102 00103 vtkImageViewer2 *viewer = vtkImageViewer2::New(); 00104 00105 if( reader->GetLookupTable() ) 00106 { 00107 //convert to color: 00108 vtkImageMapToColors *map = vtkImageMapToColors::New (); 00109 map->SetInput (reader->GetOutput()); 00110 map->SetLookupTable (reader->GetLookupTable()); 00111 map->SetOutputFormatToRGB(); 00112 viewer->SetInput ( map->GetOutput() ); 00113 map->Delete(); 00114 } 00115 else 00116 { 00117 double *range = reader->GetOutput()->GetScalarRange(); 00118 viewer->SetColorLevel (0.5 * (range[1] + range[0])); 00119 viewer->SetColorWindow (range[1] - range[0]); 00120 00121 viewer->SetInput ( reader->GetOutput() ); 00122 } 00123 viewer->SetupInteractor (iren); 00124 00125 //vtkFloatingPointType *range = reader->GetOutput()->GetScalarRange(); 00126 //viewer->SetColorWindow (range[1] - range[0]); 00127 //viewer->SetColorLevel (0.5 * (range[1] + range[0])); 00128 00129 // Here is where we setup the observer, 00130 vtkgdcmObserver *obs = vtkgdcmObserver::New(); 00131 obs->ImageViewer = viewer; 00132 iren->AddObserver(vtkCommand::CharEvent,obs); 00133 obs->Delete(); 00134 00135 //viewer->Render(); 00136 iren->Initialize(); 00137 iren->Start(); 00138 00139 //if you wish you can export dicom to a vtk file 00140 vtkStructuredPointsWriter *writer = vtkStructuredPointsWriter::New(); 00141 writer->SetInput( reader->GetOutput()); 00142 writer->SetFileName( "foo.vtk" ); 00143 writer->SetFileTypeToBinary(); 00144 //writer->Write(); 00145 00146 reader->Delete(); 00147 iren->Delete(); 00148 viewer->Delete(); 00149 writer->Delete(); 00150 00151 return 0; 00152 } |