Python Python 活用 プログラミング

【python】 DICOMフォーマット(医療用画像)を読み込む方法

AIによる解析案件があり、普段一切触ることのない、DICOMファーマットに出会いました。

DICOM

DICOM(ダイコム)とは、CTやMRI、CRなどで撮影した医用画像のフォーマットと、それらを扱う医用画像機器間の通信プロトコルを定義した標準規格である。
wiki引用

医療画像をAIで解析することは、全世界で活用できるだろうし、医者によって判断の違いを補助できるとても素晴らしいことだと思います。

まぁもちろん、最終的な判断はお医者様なのは当然ですが

もし、医療関係の仕事を請けることがあれば、DICOMフォーマットにも出会うことだと思うので、この記事が参考になればと思います。

この記事では下記を説明します。

  • DICOMに必要なライブラリ
  • データの読み込み
  • 画像保存

スポンサーリンク

事例

私がよくみる事例は、下記のようなガン検知AIです。

顕微鏡とARディスプレイを使っているやり方も、とても参考になります。

1年前くらいに問い合わせしたことがありますが、開発段階で、そもそもカメラ自体が

数百万するようなものらしいです。

https://youtu.be/9Mz84cwVmS0

pythonコード

ここからDICOMを読み込むコード説明になります。

ライブラリ

ライブラリには「pydicom」を使います。

インストールは下記で実行

pip install git+https://github.com/pydicom/pydicom.git

データ読み込み

下記コードでデータが読み込めます。

import pydicom
d = pydicom.dcmread(g_drive + '/sample.dms')
# print(d)
print(d.Manufacturer)
rows = int(d.Rows)
cols = int(d.Columns)
print("Image size.......: {rows:d} x {cols:d}, {size:d} bytes".format(rows=rows, cols=cols, size=len(d.PixelData)))
#画像データ読み込み
img = d.pixel_array
img.shape

メーカー、画像サイズ、データシェイプなどをついでに確認しています。

Terumo Corporation
Image size.......: 512 x 512, 531515614 bytes
(6875, 512, 512)

データがおおきいなと思っていたら、グレースケールの画像が6875枚入っているようです。

画像表示

画像表示はここまでくれば、普通の画像と一緒です。

from matplotlib import pyplot as plt
import cv2
import numpy as np
%matplotlib inline
#1枚目を表示
plt.imshow(img[0])
plt.gray()
plt.show()

画像保存

画像保存も普通ですね。opencvを使って、下記コードで保存します。

cv2.imwrite('保存パス',  img[0])

 

 

-Python, Python 活用, プログラミング
-,