採用ITK讀取DICOM數據並分類CT和MRI數據類型

DICOM V3.0 SOP類做爲SCU和SCP提供了的標準聽從性。

SOP Class Name
ide

SOP Class UIDspa

Computed Radiography Image Information Object計算射線照相術圖象信息對象orm

1.2.840.10008.5.1.4.1.1.1xml

CT Image Information ObjectCT圖象信息對象對象

1.2.840.10008.5.1.4.1.1.2blog

MR Image Information ObjectMR圖象信息對象ci

1.2.840.10008.5.1.4.1.1.4get

Nuclear Medicine Image Information Object核醫學圖象信息對象string

1.2.840.10008.5.1.4.1.1.5it

Ultrasound Image Information Object超聲圖象信息對象

1.2.840.10008.5.1.4.1.1.6

Secondary Capture Image Information Object繼發捕獲圖象信息對象

1.2.840.10008.5.1.4.1.1.7

  
  
           
  
  
  1. int _tmain(int argc, _TCHAR* argv[]) 
  2. typedef unsigned short PixelType; 
  3. const unsigned int Dimension = 3
  4. typedef itk::Image<PixelType,Dimension> ImageType; 
  5. typedef itk::ImageSeriesReader<ImageType> ReaderType; 
  6. ReaderType::Pointer reader = ReaderType::New(); 
  7.  
  8. typedef itk::GDCMImageIO ImageIOType; 
  9. ImageIOType::Pointer dicomIO = ImageIOType::New(); 
  10. reader->SetImageIO(dicomIO); 
  11.  
  12. typedef itk::GDCMSeriesFileNames NamesGeneratorType; 
  13. NamesGeneratorType::Pointer nameGenerator = NamesGeneratorType::New(); 
  14. nameGenerator->SetInputDirectory("E:\\CT\\serial2");//讀取目錄 
  15.  
  16. //存儲文件名字 
  17. typedef std::vector<std::string> FileNamesContainer; 
  18. FileNamesContainer fileNames = nameGenerator->GetInputFileNames(); 
  19.  
  20. int num = fileNames.size(); 
  21. std::cout<<num<<std::endl
  22.  
  23.  
  24. reader->SetFileNames(fileNames); 
  25. connector->SetInput(reader->GetOutput()); 
  26.  
  27. try 
  28. reader->Update(); 
  29. catch(itk::ExceptionObject &err) 
  30. std::cerr<<"Read Error"<<std::endl
  31. std::cerr<<err<<std::endl
  32. return EXIT_FAILURE; 
  33.  
  34. //create MetaDataDictionary 
  35. typedef itk::MetaDataDictionary DictionaryType; 
  36. const DictionaryType &dictionary = dicomIO->GetMetaDataDictionary(); 
  37.  
  38. typedef itk::MetaDataObject<std::string> MetaDataStringType; 
  39. DictionaryType::ConstIterator itr = dictionary.Begin(); 
  40. DictionaryType::ConstIterator end = dictionary.End(); 
  41.  
  42. while( itr != end ) 
  43. itk::MetaDataObjectBase::Pointer entry = itr->second; 
  44. MetaDataStringType::Pointer entryvalue =  
  45. dynamic_cast<MetaDataStringType *>(entry.GetPointer()); 
  46.  
  47. if(entryvalue) 
  48. std::string tagkey = itr->first; 
  49. std::string tagvalue = entryvalue->GetMetaDataObjectValue(); 
  50. std::cout<<tagkey<<"="<<tagvalue<<std::endl
  51. }/*0002|0002字段能夠標識SOP Class UID,若是是CT就是 
  52.  
  53. 1.2.840.10008.5.1.4.1.1.2,若是是MRI就是1.2.840.10008.5.1.4.1.1.4*/ 
  54. ++itr; 
  55.  
  56. } 

 

本文來源:http://buaagc.blog.163.com/blog/static/7278839420110510227639/

相關文章
相關標籤/搜索