pydicomを使ってDICOM形式の医療画像を扱いたい

Python
しぃたけ
しぃたけ

医療用画像の標準規格、DICOMをPythonで扱う方法を備忘録としてまとめます。

背景

男の子なら誰でも一度は、MRIやCTなどの医療用画像を解析したいと思ったことがあるのではないでしょうか??

ちなみに自分は思ったことありません。


何故こんな記事を書いているかというと、Kaggleの「OSIC Pulmonary Fibrosis Progression」というCTの画像を扱うコンペに参加したところ、DICOM(ダイコム)とかいう初めて見る形式の画像を扱うことになったためです。(コンペ詳細

自分のようにDICOM形式初めての人の力になれればと思います。

DICOMの扱い方

DICOM(ダイコム)とは?

以下、Wikipediaからの引用です。

DICOMとは、CTやMRI、CRなどで撮影した医用画像のフォーマットと、それらを扱う医用画像機器間の通信プロトコルを定義した標準規格である。 名称はDigital Imaging and COmmunications in Medicineの略である。

https://ja.wikipedia.org/wiki/DICOM

CT、MRI、CRなどの画像診断では、DICOMという規格で統一されているみたいです。

拡張子は[.dcm」になります。

pydicomインストール

Python上でDICOM形式のデータを扱う場合は、「pydicom」を利用するのが一般的です。公式ドキュメントこちらです。(pydicom公式

とりあえずインストールします。

できました。


メタデータの確認

インストールが完了したので、遊んでみます。

なお、データは上記の「OSIC Pulmonary Fibrosis Progression」のデータを利用しています。

まずは、DICOM形式のデータがどのような情報をもっているか確認しましょう。

なんかめっちゃ出た。

中身を見てみると「Patient’s Name」(患者の名前)、「Manufacturer」(医療機器の製造会社)、「Rows」「Columns」(画像のサイズ) など様々なデータがDICOMデータの中に格納されています。

各データの取り出し

メタデータから欲しい情報を取り出していきます。

患者のIDを知りたいときは、PatientID

メーカー名を知りたい時は、Manufacturer

CTのスライスの厚さは、[0x0018,0x0050]

で取得できます。

できました。

CT機械はGE製で、CTのスライス厚さは1.25mmみたいです。

画像を取得

最後に画像を取得します。

画像は、pixel_array で取得できます。

出力結果

出ました。

ちなみにコンペでは、30枚のdicom形式のデータが与えられているので並べてみます。

出力結果

気分は外科医ですね。



まとめ

pydicomを使って医療画像を扱う方法を記載しました。

お医者さんの気分を味わえるのでお勧めです。



コメント

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