dicom を jpg に変換する python

(2025-12-16)

先日、web カンファレンスのために病院で内視鏡画像を cdr に焼いてもらったのですが、どういうわけか dicom ファイルで渡されました。

閲覧しようとしたのですが当然ながら viewer がないと見られません。

jpg でのエクスポートを依頼しようかとも思ったのですがとても面倒なので、chatGPT に dicom ファイルを jpg ファイルに変換する python を作ってもらいました。

python

python のスクリプトです。

import os
import pydicom
from PIL import Image
import numpy as np
dicom_folder = "/home/moheno/dicom_folder"
output_folder = "/home/moheno/jpg_output"
os.makedirs(output_folder, exist_ok=True)
for root, dirs, files in os.walk(dicom_folder):
for file in files:
dicom_path = os.path.join(root, file)
try:
# 拡張子に関係なく DICOM として読み込めるか試す
ds = pydicom.dcmread(dicom_path)
# pixel_array がある場合だけ変換
if hasattr(ds, "pixel_array"):
pixel_array = ds.pixel_array
# 16bit → 8bit に変換
if pixel_array.dtype != np.uint8:
pixel_array = (pixel_array - np.min(pixel_array)) / (np.max(pixel_array) - np.min(pixel_array)) * 255
pixel_array = pixel_array.astype(np.uint8)
image = Image.fromarray(pixel_array)
# 出力パス(元のファイル名 + .jpg)
relative_path = os.path.relpath(root, dicom_folder)
save_dir = os.path.join(output_folder, relative_path)
os.makedirs(save_dir, exist_ok=True)
output_path = os.path.join(save_dir, file + ".jpg") # 拡張子なしファイルは .jpg を付ける
image.save(output_path)
print(f"変換成功: {dicom_path}{output_path}")
else:
print(f"pixel_array がありません: {dicom_path}")
except Exception as e:
print(f"DICOM 読み込み失敗: {dicom_path} ({e})")

これで一括変換できます。