[Insight-users] Save DICOM file with IntensityWindowingImageFilterType

Brenno Ribeiro brennobr at gmail.com
Fri Feb 8 06:58:58 EST 2013


Hi, i'm trying to saving a DICOM file into another DICOM file with some
transformation like IntensityWindowingImageFilterType adapted from the
http://www.itk.org/Wiki/ITK/Examples/DICOM/ResampleDICOM example. The only
problem that occurs it the "brightness" doesn't change on the new DICOM
file created during the process but the "contrast" changes is ok. This
snippet of code corresponds the moment that occurs the passage of
parameters to the transformation of the IntensityWindowingImageFilterType
and the moment that is written a new DICOM file.

////////////////////////////////////////////////
// "filter" is the type IntensityWindowingImageFilterType

rescaler->SetInput(reader->GetOutput());
rescaler->SetOutputMinimum( 0 ); //rescaler default to view the original
colors [0,255]
rescaler->SetOutputMaximum( 255 ); //


filter->SetInput(rescaler->GetOutput());//
filter->SetWindowLevel(intMaxWindowGlobal, intMinWindowGlobal); //(window,
level)
//parameters from a Dialog created by the main class
   filter->SetWindowMinimum(intMinWindowGlobal);//Minimum Contrast
   filter->SetWindowMaximum(intMaxWindowGlobal);//Maximum Contrast
   filter->SetOutputMinimum(intOutMinGlobal);//Minimum Brightness
   filter->SetOutputMaximum(intOutMaxGlobal);//Maximum Brightness

try
     {
      filter->Update();
      }
    catch( itk::ExceptionObject & err )
      {
      std::cerr << "ExceptionObject caught !" << std::endl;
      std::cerr << err << std::endl;
      }



////////////////////////////////////////////////
// 5) Write the new DICOM series

  // Generate the file names
  OutputNamesGeneratorType::Pointer outputNames =
OutputNamesGeneratorType::New();
  std::string
seriesFormat("/home/brennobr/Source/dcm-files/teste-resample/output");
  seriesFormat = seriesFormat + "/" + "IM%d.dcm";
  outputNames->SetSeriesFormat (seriesFormat.c_str());
  outputNames->SetStartIndex (1);
  outputNames->SetEndIndex (outputSize[2]);

    SeriesWriterType::Pointer seriesWriter = SeriesWriterType::New();
    seriesWriter->SetInput( filter->GetOutput() );
    seriesWriter->SetImageIO( gdcmIO );
    seriesWriter->SetFileNames( outputNames->GetFileNames() );
    seriesWriter->SetMetaDataDictionaryArray( &outputArray );
  try
    {
    seriesWriter->Update();
    }
  catch( itk::ExceptionObject & excp )
    {
    std::cerr << "Exception thrown while writing the series " << std::endl;
    std::cerr << excp << std::endl;
    }
  std::cout << "The output series in directory " <<
"/home/brennobr/Source/dcm-files/teste-resample/output"
            << " has " << outputSize[2] << " files with spacing "
            << outputSpacing
            << std::endl;

-- 
Brenno Bernardes Ribeiro

Engenharia da Computação
Universidade Federal do Pará
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20130208/14c07cb3/attachment.htm>


More information about the Insight-users mailing list