1. 程式人生 > 其它 >Study Dcmtk: itk/gdcm 無法儲存序列DICOM影像(StudyInstanceUID、SeriesInstanceUID、SOPInstanceUID)

Study Dcmtk: itk/gdcm 無法儲存序列DICOM影像(StudyInstanceUID、SeriesInstanceUID、SOPInstanceUID)

技術標籤:# Study Vtk Itk# Study Dcmtk

歡迎訪問個人部落格:http://118.25.63.144:501/


  
  
  
  

  工作時遇到的一個問題,需要自己構建一系列DICOM檔案,鼓搗了半天發現生成的DICOM的序列id都是在寫出的時候隨機生成的。

  • ITK的itk::ImageFileWriter
  • VTK的vtkDicomImageWriter
      上邊兩個其實都是使用GDCM的gdcm::pixmapWriter,這玩意好像加了個強制的保護,無法修改DICOM檔案屬性 。即使在寫入過程中,將DICOM檔案作為輸入傳入,輸出檔案也可能不包含輸入檔案中的所有DICOM欄位。

https://itk.org/Doxygen/html/classitk_1_1GDCMImageIO.html

在這裡插入圖片描述

  如果寫出的幾個ID無法修改,那麼其他軟體在讀取的時候肯定不會當成一個系列,也沒辦法做後續操作。
  也許ITK有專門修改ID的辦法,我是沒找到。換個思路,試了下DCMTK預設可以修改/新增所有的標籤,不需要額外的設定。
  最後實現的辦法,利用opencv和itk現成的方法生成並儲存需要的序列影像(DICOM檔案)。讓後用DCMTK強制修改幾個需要的ID。

		 DcmFileFormat fileformat;
        OFCondition oc = fileformat.
loadFile(in_path.toLocal8Bit().data()); fileformat.getDataset()->putAndInsertString(DCM_SeriesInstanceUID, "1.2.840.113619.2.292.65140653520588659061.1552006679.1484.33"); fileformat.getDataset()->putAndInsertString(DCM_StudyInstanceUID, "1.2.840.113619.2.292.65140653520588659061.1552005022.1480.86"
); fileformat.getDataset()->putAndInsertString(DCM_SOPInstanceUID, "1.2.840.113619.2.205.114374079573872.178409.1552386274354.14"); fileformat.saveFile(out_path.toLocal8Bit().data());

  
  
  
  


歡迎訪問個人部落格:http://118.25.63.144:501/