11
19

More than 3 years have passed since last update.

医療人としての初歩 PythonでDICOM画像を表示する

Last updated at Posted at 2020-04-11

診療放射線技師、医学物理士をやっている者です。
プログラミングを学習していく過程を備忘録として記事に残していきます。
今後誰かの参考になれば幸いです。

DICOM画像を表示したい

医療現場でPythonを使って何をしたいですか?
Pythonは医用画像処理において盛んに活用されており、機械学習の分野においても画像から病変を自動認識するというようなテーマはたくさんあります。
医療の現場で使う画像はDICOM(ダイコム)という形式のデータで、
医療分野でプログラミング、主に画像処理を行う上でDICOMの知識は必須と言えます。
そしてとりあえずやってみたい第一関門が「Pythonで画像を表示させる」です。

DICOMとは

まずはDICOMについて整理しておきましょう(自分のためにも)。

DICOMとは、"Digital Imaging and Communications in Medicine"の頭文字をつなげた略語で、
医療画像情報などを通信するために利用する標準規格で、世界的に利用されています。
通信されるデータには、一般的にイメージされる画像データだけではなく、患者名や患者ID、検査日、機器名、撮影条件など、多くの項目が付帯情報として定義されています。

検査に使う機械や通信機器には様々なメーカーのものがある中で、独自のルールでデータを扱うのではなく、DICOMのようなメーカーに依存しない共通のルールを使うことで、より円滑にデータ管理ができるのです。

昔は(今でも一部の施設では)フィルムのレントゲン写真等が診断で使用されていましたが、医療画像もアナログからデジタルに移行したことで、膨大な医療データを管理しやすくなりました。DICOMの存在もそれに役立っているのです。

余談ですが、放射線治療分野には診断分野にはない少し特殊なDICOMデータがあります。
今回画像を表示させる過程では必要のない知識ですが、私自身放射線治療部門に従事しておりますので、少しだけ触れておきます。
放射線治療のDICOMデータ(DICOM RT)には、他の画像モダリティのDICOMと同様に画像系のものと、座標情報や機器の設定情報などの非画像系のものがあります。
alt
RT doseは線量情報、RT Structureはコンツール情報、RT Planは機器の動作情報を表し、それぞれが情報として紐付いて治療が成り立っています。

【参考】DICOM逆引きBOOK 
(セミナースライドを閲覧できます→  DICOM勉強会資料

この他にも一般社団法人 日本画像医療システム工業会【JIRA】:DICOMの世界には、DICOMに関する有益な情報がたくさん掲載されていますので、是非参考にしてみてください。

画像表示もPythonなら超簡単!

C#を少し勉強していた時期があったのですが、
CT画像を1スライス表示させる事すらできませんでした。
なので私の中では画像を表示させる事すらかなり高いハードル...。
とりあえずでできることではないと思っていました。

しかし!!
Pythonだと簡単にそれができたのです!
驚きでした。こんなに簡単なのかと。
豊富なライブラリのおかげで簡単なコードを知っているだけで表示することができます。
ライブラリを作ってくれた方に感謝です。
Thanks, I appreciate it!(今日英会話教室で習ったフレーズ)

今回は無料で使えるDICOM画像を使いますので、
手元にDICOM画像がなくても問題ありません。
お世話になるのはまたしてもDICOMの世界です。
感謝しかないですね。
"CR_LEE_IR6a.dcm" という胸部のCR画像を用います。

環境(Mac)

python 3.7.4
matplotlib 3.1.1
pydicom 1.2.2
ターミナル(Jupyter Notebookは使っていません)
Atom(テキストエディタならなんでも可)

全体コード

show_dicom.py
from matplotlib import pyplot as plt
import pydicom

cr = pydicom.read_file("CR_LEE_IR6a.dcm")

plt.imshow(cr.pixel_array, cmap = "gray")
plt.show()

※使用するDICOMデータ(.dcm)はコード(.py)と同じディレクトリに保存しておきましょう。

出力画像

スクリーンショット 2020-04-11 19.16.57.png

以上です。
超簡単じゃないですか?
たったの5行で画像を表示することができました。
matplotlibやpydicomなど既存の素晴らしいモジュール活用することで、簡単なコードでここまでできます。

Pythonの文法については割愛します。
是非やってみて下さい。

最後に非常に有益なサイトをご紹介します。
ユーロメディック医学物理室 医学物理室ブログ
放射線治療分野でPythonを活用する際に大変ためになる情報が詳しく書かれております。
役に立つこと間違いなしですので、気になる方は要チェックです!

11
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
19