PydicomでDICOMをJPEGに変換する

DICOM(ダイコム)は医療用画像の規格の1つであり、Pydicomを使えばPythonでDICOMをあれこれ出来るようになる。

DICOMをJPEGに変換する必要が出てきたので、Pydicomでやってみた。

from pydicom.data import get_testdata_files
filename = get_testdata_files("CT_small.dcm")[0]
ds = pydicom.dcmread(filename)

print(ds.pixel_array)
# array([[175, 180, 166, ..., 203, 207, 216],
#       [186, 183, 157, ..., 181, 190, 239],
#       [184, 180, 171, ..., 152, 164, 235],
#       ...,
#       [906, 910, 923, ..., 922, 929, 927],
#       [914, 954, 938, ..., 942, 925, 905],
#       [959, 955, 916, ..., 911, 904, 909]], dtype=int16)

print(type(ds.pixel_array))
# numpy.ndarray

ndarrayで画像データが格納されている様子。

ndarrayを扱うことができるパッケージを使えば画像を保存できそうだが、自分の環境ではPillow(PIL)では上手く出来なかったのでscipyを使ってみた。

import scipy.misc
scipy.misc.imsave('hoge.jpg', ds.pixel_array)

これでDICOMをJPEGに変換することが出来るようになった。

ちなみに、scipyは1.2.0以降ではimsaveが使えなくなっている。

imsave is deprecated! imsave is deprecated in SciPy 1.0.0, and will be removed in 1.2.0. Use imageio.imwrite instead.

https://docs.scipy.org/doc/scipy-1.2.1/reference/generated/scipy.misc.imsave.html?highlight=misc%20imsave

そのため、scipyで画像を保存する場合は1.2.0以前のバージョン、例えば1.1.0などをpipでインストールする必要がある。

pip install scipy==1.1.0

参考

scipy.misc.imsave — SciPy v1.2.1 Reference Guide

コメント

タイトルとURLをコピーしました