00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include <vtkRenderer.h>
00018 #include <vtkRenderWindow.h>
00019 #include <vtkRenderWindowInteractor.h>
00020 #include <vtkPolyDataMapper.h>
00021 #include <vtkActor.h>
00022 #include <vtkImageMapper.h>
00023 #include <vtkImageData.h>
00024 #include <vtkImageViewer.h>
00025 #include <vtkMatrix4x4.h>
00026 #include <vtkLookupTable.h>
00027 #include <vtkMatrixToLinearTransform.h>
00028 #include <vtkTexture.h>
00029 #include <vtkPlaneSource.h>
00030 #include <vtkTextureMapToPlane.h>
00031 #include <vtkDataSetMapper.h>
00032 #include <vtkActor.h>
00033 #include <vtkImageCast.h>
00034 #include <vtkPNGWriter.h>
00035 #include <vtkTexture.h>
00036
00037 #include "vtkGdcmReader.h"
00038
00039
00040 int main( int argc, char *argv[] )
00041 {
00042 vtkGdcmReader *reader = vtkGdcmReader::New();
00043
00044 if (argc < 2)
00045 {
00046 cerr << "Usage: " << argv[0] << " image.dcm\n";
00047 return 0;
00048 }
00049
00050 reader->SetFileName( argv[1] );
00051
00052 reader->UpdateWholeExtent();
00053 vtkImageData* ima = reader->GetOutput();
00054
00056 int* Size = ima->GetDimensions();
00057 cout << "Dimensions of the picture as read with gdcm: "
00058 << Size[0] << " x " << Size[1] << endl;
00059
00061
00062 vtkLookupTable* VTKtable = vtkLookupTable::New();
00063 VTKtable->SetNumberOfColors(1000);
00064 VTKtable->SetTableRange(0,1000);
00065 VTKtable->SetSaturationRange(0,0);
00066 VTKtable->SetHueRange(0,1);
00067 VTKtable->SetValueRange(0,1);
00068 VTKtable->SetAlphaRange(1,1);
00069 VTKtable->Build();
00070
00072 vtkTexture* VTKtexture = vtkTexture::New();
00073 VTKtexture->SetInput(ima);
00074 VTKtexture->InterpolateOn();
00075 VTKtexture->SetLookupTable(VTKtable);
00076
00078 vtkPlaneSource* VTKplane = vtkPlaneSource::New();
00079 VTKplane->SetOrigin( -0.5, -0.5, 0.0);
00080 VTKplane->SetPoint1( 0.5, -0.5, 0.0);
00081 VTKplane->SetPoint2( -0.5, 0.5, 0.0);
00082
00084 vtkPolyDataMapper *VTKplaneMapper = vtkPolyDataMapper::New();
00085 VTKplaneMapper->SetInput(VTKplane->GetOutput());
00086
00088 vtkActor* VTKplaneActor = vtkActor::New();
00089 VTKplaneActor->SetTexture(VTKtexture);
00090 VTKplaneActor->SetMapper(VTKplaneMapper);
00091 VTKplaneActor->PickableOn();
00092
00094 vtkRenderer *ren = vtkRenderer::New();
00095 vtkRenderWindow *renwin = vtkRenderWindow::New();
00096 renwin->AddRenderer(ren);
00097 vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
00098 iren->SetRenderWindow(renwin);
00099 ren->AddActor(VTKplaneActor);
00100 ren->SetBackground(0,0,0.5);
00101 renwin->Render();
00102 iren->Start();
00103
00105 reader->Delete();
00106 VTKtable->Delete();
00107 VTKtexture->Delete();
00108 VTKplane->Delete();
00109 VTKplaneMapper->Delete();
00110 VTKplaneActor->Delete();
00111 ren->Delete();
00112 renwin->Delete();
00113 iren->Delete();
00114
00115 return(0);
00116 }