+/*=========================================================================
+
+ Program: gdcm
+ Module: $RCSfile: vtkgdcmViewer.cxx,v $
+ Language: C++
+ Date: $Date: 2011/03/29 07:36:02 $
+ Version: $Revision: 1.33 $
+
+ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
+ l'Image). All rights reserved. See Doc/License.txt or
+ http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notices for more information.
+
+=========================================================================*/
// This example illustrates how the vtkGdcmReader vtk class can be
// used in order to:
// * produce a simple (vtk based) Dicom image STACK VIEWER.
// * the produced vtk file is named "foo.vtk" (in the invocation directory).
//
//----------------------------------------------------------------------------
-#include <iostream>
-
#include <vtkRenderWindowInteractor.h>
-#include <vtkImageViewer2.h>
+#include <vtkImageViewer.h>
#include <vtkStructuredPoints.h>
#include <vtkStructuredPointsWriter.h>
#include <vtkCommand.h>
#include <vtkLookupTable.h>
#include "vtkGdcmReader.h"
-
+#include "gdcmDocument.h" // for NO_SHADOWSEQ
#ifndef vtkFloatingPointType
#define vtkFloatingPointType float
#endif
int max = ImageViewer->GetWholeZMax();
int slice = (ImageViewer->GetZSlice() + 1 ) % ++max;
ImageViewer->SetZSlice( slice );
- ImageViewer->GetRenderer()->ResetCameraClippingRange();
ImageViewer->Render();
}
}
}
- vtkImageViewer2 *ImageViewer;
+ vtkImageViewer *ImageViewer;
};
for(int i=1; i< argc; i++)
reader->AddFileName( argv[i] );
+// TODO : allow user to choose Load Mode
+ reader->SetLoadMode(GDCM_NAME_SPACE::LD_NOSHADOWSEQ);
reader->Update();
+
+
+std::cout << "[0][0]==========" <<
+reader->GetOutput()->GetScalarComponentAsFloat(0,0,0,0) <<
+"===================="
+<< std::endl;
+std::cout << "[127][127]==========" <<
+reader->GetOutput()->GetScalarComponentAsFloat(0,127,0,0) <<
+"===================="
+<< std::endl;
+
+
//print debug info:
reader->GetOutput()->Print( cout );
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
- vtkImageViewer2 *viewer = vtkImageViewer2::New();
+ vtkImageViewer *viewer = vtkImageViewer::New();
if( reader->GetLookupTable() )
{
}
else
{
- double *range = reader->GetOutput()->GetScalarRange();
+
+ // For a single medical image, it would be more efficient to use
+ // 0028|1050 [DS] [Window Center]
+ // 0028|1051 [DS] [Window Width]
+ // but vtkgdcmReader doesn't know about them :-(
+
+ vtkFloatingPointType *range = reader->GetOutput()->GetScalarRange();
viewer->SetColorLevel (0.5 * (range[1] + range[0]));
viewer->SetColorWindow (range[1] - range[0]);
iren->AddObserver(vtkCommand::CharEvent,obs);
obs->Delete();
+ //viewer->Render();
iren->Initialize();
iren->Start();
- //if you wish you can export dicom to a vtk file
+ //if you wish you can export dicom to a vtk file
vtkStructuredPointsWriter *writer = vtkStructuredPointsWriter::New();
writer->SetInput( reader->GetOutput());
writer->SetFileName( "foo.vtk" );
writer->SetFileTypeToBinary();
- writer->Write();
+ //writer->Write();
+
+std::cout << "==========" << std::endl;
+
+std::cout << "==========" <<
+reader->GetOutput()->GetScalarComponentAsFloat(0,0,0,0) <<
+"===================="
+<< std::endl;
+
+
reader->Delete();
iren->Delete();