iT邦幫忙

0

批量將DICOM(.dcm)檔案,預設RGB轉黑白(GARY)的方法

  • 分享至 

  • xImage

如題目,目前是透過 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")

froce iT邦大師 1 級 ‧ 2023-03-20 14:50:00 檢舉
os.listdir
https://blog.gtwang.org/programming/python-list-all-files-in-directory/

搭配迴圈做。
import os
from pydicom import dcmread

input_folder = "C:/Users/USER/Desktop/test"
output_folder = "C:/Users/USER/Desktop/test2"

# Loop through all files in the input folder
for filename in os.listdir(input_folder):
if filename.endswith(".dcm"):
# Read DICOM file
ds = dcmread(os.path.join(input_folder, filename))

# Change Patient Name data
ds.PhotometricInterpretation = "gary"

# Save DICOM file as
output_filename = os.path.join(output_folder, filename)
ds.save_as(output_filename)

print(f"File {filename} processed and saved as {output_filename}")


嘗試修改如上,但是無法產生檔案,不清楚錯誤為何
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
re.Zero
iT邦研究生 5 級 ‧ 2023-03-21 23:43:38
最佳解答

因為你的發問與發問討論內沒有提供錯誤訊息與可測試用的資料, 所以只給個我用 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 , 感覺能給你(或其他人)參考看看。

【**此則訊息已被站方移除**】

我要發表回答

立即登入回答