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が使えなくなっている。
https://docs.scipy.org/doc/scipy-1.2.1/reference/generated/scipy.misc.imsave.html?highlight=misc%20imsave
imsave
is deprecated!imsave
is deprecated in SciPy 1.0.0, and will be removed in 1.2.0. Useimageio.imwrite
instead.
そのため、scipyで画像を保存する場合は1.2.0以前のバージョン、例えば1.1.0などをpipでインストールする必要がある。
pip install scipy==1.1.0
参考
scipy.misc.imsave — SciPy v1.2.1 Reference Guide
コメント