# ConvertRGBToLuminance.cxx

    /*=========================================================================

      Program: GDCM (Grassroots DICOM). A DICOM library
      Module:  $URL$

      Copyright (c) 2006-2010 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();
      luminance->SetInput( reader->GetOutput() );

      vtkGDCMImageWriter *writer = vtkGDCMImageWriter::New();
      writer->SetFileName( "/tmp/bla.dcm" );
      writer->SetInput( luminance->GetOutput() );
      //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;
    }