Study Dcmtk: itk/gdcm 無法儲存序列DICOM影像(StudyInstanceUID、SeriesInstanceUID、SOPInstanceUID)
阿新 • • 發佈:2020-12-30
技術標籤:# 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/