没有正确使用ITK阅读DICOM图像系列

时间:2011-11-29 12:45:31

标签: c++ dicom vtk medical itk

我想阅读一系列DICOM图像,使用ITK将它们转换为3D图像。我按照文档中的示例进行操作:"实例/ IO / DicomSeriesReadImageWrite2.cxx" 。但是我仍然遇到问题,我解决了一些问题,但是我想听听任何提示!

问题在于下划线的代码行,代码就在这里,而且不是很长。它编译,变量'seriesItr'的值=" 1.2.392.200036.9116.2.6.1.48.1214834239.1284941923.42443543.0512512" 。但是变量'seriesEnd'是一个空指针!我究竟做错了什么?感谢您的高级帮助!

// Reading a 2D DICOM Series and Writing a Volume 
  ReaderType::Pointer reader = ReaderType::New();

  ImageIOType::Pointer dicomIO = ImageIOType::New();
  reader->SetImageIO( dicomIO );
  NamesGeneratorType::Pointer nameGenerator = NamesGeneratorType::New();
  nameGenerator->SetUseSeriesDetails( true ); 

  std::string folder;
  folder = "C:\\Documents and Settings\\GTTS\\Mis documentos\\Visual Studio 2008\\Projects\\Reg_mono3D\\Reg_mono3D\\DICOM_SERIES\\T\\";
  nameGenerator->SetDirectory(folder);

  const SeriesIdContainer & seriesUID = nameGenerator->GetSeriesUIDs();
  SeriesIdContainer::const_iterator seriesItr = seriesUID.begin();
  ***SeriesIdContainer::const_iterator seriesEnd = seriesUID.end();***
  while( seriesItr != seriesEnd )
  {
        std::cout << seriesItr->c_str() << std::endl;
        seriesItr++;
  }

  std::string seriesIdentifier;
  seriesIdentifier = seriesUID.begin()->c_str();
  FileNamesContainer fileNames;
  fileNames = nameGenerator->GetFileNames( seriesIdentifier );

  reader->SetFileNames( fileNames );

  try
  {
        reader->Update();
  }
  catch (itk::ExceptionObject &ex)
  {
        cout << ex << std::endl;
  }

1 个答案:

答案 0 :(得分:4)

图像是否可能100%兼容?许多工具包都没有很强的容错能力,似乎90%的供应商都不是100%兼容的。我会尝试通过DCMtk工具dcmconv运行图像来“转换”文件。我在引号中使用convert,因为我经常使用它们当前具有的完全相同的设置来运行文件,因为dcmconv将以100%兼容的方式导出副本。

有关dcmconv的信息,请访问:http://support.dcmtk.org/docs/dcmconv.html

威尔