如題目,目前是透過 Pydicom 讀取DICOM檔案的資訊,把檔案預設的RGB修改為Gary
想請問前輩們,若是我想將此步驟變成批量處理,該如何撰寫較為合適?
from pydicom import dcmread
from pydicom.data import get_testdata_files
# 取得 Pydicom 附帶的 DICOM 測試影像路徑
ds = dcmread("test.DCM")
# 更改 Patient Name 資料
ds.PhotometricInterpretation = "gary"
# 另存 DICOM 檔案,指定存檔位置
ds.save_as("de-identification.dcm")
因為你的發問與發問討論內沒有提供錯誤訊息與可測試用的資料, 所以只給個我用 Google-Colab 測試過的範例給你參考:
## Tested@Colab-Python-3.9.16;
import os, pydicom
from pydicom.data import get_testdata_file
##
mySrcBase = r'/usr/local/lib/python3.9/dist-packages/pydicom/data/test_files'
myDstBase = r'/usr/local/lib/python3.9/dist-packages/pydicom/data/myOut'
##
if not os.path.exists(myDstBase):
os.makedirs(myDstBase, exist_ok = True)
myFileNames = [
i for i in os.listdir(mySrcBase)
if (
os.path.isfile(os.path.join(mySrcBase, i))
and i.endswith('.dcm')
)
]
for i in myFileNames:
try:
ds = pydicom.dcmread(os.path.join(mySrcBase, i))
ds.PhotometricInterpretation = "gary"
ds.save_as(os.path.join(myDstBase, i))
except Exception as err:
print(f'□ Exception@[{i}]:[{type(err).__name__}]: {err}')
continue
提醒一下:
gray
並非 PhotometricInterpretation
所被規範的可用值。ds.PhotometricInterpretation = "gary"
這命令只是設定供參考用的資訊, 並沒有轉換 pixel_array (這屬性通常被用以儲存像素類型資訊) 內容的作用。因為 大量將DICOM(.dcm)圖檔轉換成PNG或JPG的方法 的內容, 我假設你知道你在做啥; 就算你不知道, 我也沒辦法~ 因為我跟 pydicom 不熟~
另, 如果你有需要的話, 閒閒看到的 My RGB ultrasound image has strange colours , 感覺能給你(或其他人)參考看看。