/*========================================================================= Program: GDCM (Grassroots DICOM). A DICOM library Copyright (c) 2006-2011 Mathieu Malaterre All rights reserved. See Copyright.txt or http://gdcm.sourceforge.net/Copyright.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 notice for more information. =========================================================================*/ #include "vtkGDCMImageReader.h" #include "vtkGDCMImageWriter.h" #include "vtkImageData.h" #include "vtkImageLuminance.h" #include "gdcmTesting.h" // There is no such thing as MR Image Storage + Photometric Interpretation = RGB // let's rewrite that into a proper single component image: int main(int, char *[]) { const char *directory = gdcm::Testing::GetDataRoot(); if(!directory) return 1; std::string file = std::string(directory) + "/SIEMENS-MR-RGB-16Bits.dcm"; std::cout << file << std::endl; vtkGDCMImageReader *reader = vtkGDCMImageReader::New(); reader->SetFileName( file.c_str() ); reader->Update(); //reader->GetOutput()->Print( std::cout ); vtkImageLuminance *luminance = vtkImageLuminance::New(); #if (VTK_MAJOR_VERSION >= 6) luminance->SetInputConnection( reader->GetOutputPort() ); #else luminance->SetInput( reader->GetOutput() ); #endif vtkGDCMImageWriter *writer = vtkGDCMImageWriter::New(); writer->SetFileName( "/tmp/bla.dcm" ); #if (VTK_MAJOR_VERSION >= 6) writer->SetInputConnection( luminance->GetOutputPort() ); #else writer->SetInput( luminance->GetOutput() ); #endif //writer->SetImageFormat( reader->GetImageFormat() ); // Do NOT pass image format writer->SetMedicalImageProperties( reader->GetMedicalImageProperties() ); writer->SetDirectionCosines( reader->GetDirectionCosines() ); writer->SetShift( reader->GetShift() ); writer->SetScale( reader->GetScale() ); writer->Write(); // TODO: //vtkImageAppendComponents.h reader->Delete(); luminance->Delete(); writer->Delete(); return 0; }