10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pydicomをgoogle colaboratoryで使う

Last updated at Posted at 2019-05-07

#やりたいこと
Google Colaboratoryを使って、pydicomでDICOMを処理する。

#環境

  1. Google Chrome
    インターネットブラウザはGoogle Chromeが必要なので、Edge、Safari、FireFoxなどを使っている人はChromeをインストールしておくこと。OSなどは、Chromeが動くものであればよい。(と思う)

  2. Google Drive
    Google ColaboratoryはGoogleDrive上で動作するので、Googleアカウント(G-mail)を取得しておくこと。

  3. Google Colaboratory
    この記事のように、GoogleColabをインストールしておく。
    https://deepinsider.jp/tutor/deeplearningenv/prepare

#必要なもの
テスト用にDICOM画像を用意しておく。
ここから好きなものをダウンロードしておく。
http://www.jira-net.or.jp/dicom/dicom_data_01_02.html)
同じ種類の画像でもJPEG圧縮、非圧縮など、種類があるが、pydicomのおかげで、リスト内のものであればどの画像でもよい。

失礼しました。圧縮されている場合は依存ライブラリによって制約がありました(https://pydicom.github.io/pydicom/stable/image_data_handlers.html)。
以下の操作は、非圧縮のDICOM画像で試して下さい。リンクのDICOMで言えば、JPGではなく、LEEのものを選択します。圧縮された画像を試したい場合は、Anaconda環境を構築して、GDCMのPythonラッパーをpydicomと一緒にインストールして使います。この手順はここにあります。(2019/11/6追記)
圧縮画像を解凍して使う場合は、この記事の最後の方を参照して下さい。

今回はいくつかダウンロードして、「JIRA_DICOM_SAMPLE」というフォルダにまとめておいた。
Screenshot from 2019-05-07 10-54-20.png

この記事では例としてこの胸部X線(CR_LEE_IR87a.dcm)の画像を使う。
CR_LEE_IR87a.jpg

#手順

はじめに

  1. GoogleDriveを開く。
  2. 「Colab Notebooks」フォルダを新規作成
    GoogleDrive内に「Colab Notebooks」フォルダを新規作成しておく(+新規>フォルダ)。
  3. DICOMデータをDriveに移動
    この例では、「JIRA_DICOM_SAMPLE」というフォルダにまとめているので、このフォルダごと、ドラッグアンドドロップでGoogleDrive内に新規作成した「Colab Notebooks」フォルダへコピーする。

Screenshot from 2019-05-07 11-18-48.png

  1. 「Colab Notebooks」フォルダを開き、ここへ新しいノートブックを作成する。
    +新規>その他>Colaboratoryを選択する。

Screenshot from 2019-05-07 10-58-19.png

開いたら、名前を直接編集しておく。例えば、「pydicom_how_to_open_dcm」。
あとの使い方は、基本的にJupyterというスクリプトエディタと同じ。

Screenshot from 2019-05-07 11-13-15.png

コードを書く

コードセルをファイルメニュー下の「+コード」ボタンから追加します。
まずは、pydicomの最新パッケージをロードします。 (これはあくまでもこのノートブックで利用するためのもので、 自分のローカル環境で使えるようにするわけではありません。)
次のように入力します。

!pip install pydicom

入力できたら、再生ボタンで実行します。実行すると、一時的にデータをダウンロードします。
Screenshot from 2019-05-07 11-28-17.png

これで、pydicomがこのノートブック内で使えるようになりました。
次に、Google Drive内の「JIRA_DICOM_SAMPLE」フォルダに、このノートブックからアクセスできるようにします。 次のように入力し、再生ボタンで実行してみましょう。

# Load the Drive helper and mount
from google.colab import drive

# This will prompt for authorization.
drive.mount('/content/drive')

実行すると、画面が遷移して、認証コードが自動で表示されるので、それをコピーしてEnterします。(この画面だけではわかりませんが、やってみればわかります)

Google Driveの内容を確認してみます。
次のようにコードを書き、再生ボタンで実行してみましょう。 「My Drive」というフォルダ名が出力されます。

!ls /content/drive

Screenshot from 2019-05-07 11-32-58.png

この'My Drive'という名称の仮のフォルダが、自分のGoogleDriveフォルダとして認識されます。

画像をpydicomを使って開いてみます。
このJIRA_DICOM_SAMPLEフォルダには、胸部レントゲン画像(CR_LEE_IR87a.dcm)を入れています。
このようにコードして、再生ボタンで実行してみましょう。
DICOMデータがロードされます。

import pydicom

drive = '/content/drive/My Drive/Colab Notebooks/JIRA_DICOM_SAMPLE/'
ds = pydicom.dcmread(drive+'CR_LEE_IR87a.dcm')

DICOMはメタデータの集まりですから、そのままでは画像は見れません。
メタデータ(つまりpydicomでいうデータセットという概念)からピクセルデータを取り出します。
このようになります。

#ピクセルを取り出す(ndarrayとして扱っています)
pixels = ds.pixel_array

#画像として表示してみます。
import matplotlib.pyplot as plt

plt.imshow(pixels)#2つとも必要
plt.show()  

Screenshot from 2019-05-07 11-40-59.png

白黒反転しているので、インバートしてみます。
(左右反転もしていますが、このデータのピクセルそのままなので、今回は無視します)

from skimage import util
pixels = util.invert(pixels)

plt.imshow(pixels)#2つとも必要
plt.show() 

Screenshot from 2019-05-07 11-42-02.png

グリッド線が入ってしまうので、色を変えるか、消すかします。

# plt.grid(c='grey')#色を変える
plt.grid(None)#グリッド線を消す
plt.imshow(pixels)#2つとも必要
plt.show()

Screenshot from 2019-05-07 11-43-04.png

今回は以上でゴールです。
お付き合い頂いた方、お疲れ様でした。

圧縮画像の解凍

上記の方法は非圧縮画像の操作でしたが、以下の操作は、JPEG/JPEG2000などに圧縮されている画像を扱う方法を示します。
新しいノートブックを作って試してください。
データは「CR_JPG_IR87a」で試しています。

minicondaを使ってGDCMを仮想環境にインストールしてから画像を操作する

Minicondaを用意します。

# install miniconda
!wget https://repo.continuum.io/miniconda/Miniconda3-4.5.4-Linux-x86_64.sh && bash Miniconda3-4.5.4-Linux-x86_64.sh -bfp /usr/local

順序があるので注意して下さい。
pydicomをインストールしてから、gdcmをインストールします。

!conda install -c conda-forge pydicom 
!conda install -c conda-forge gdcm

condaでインストールしたライブラリにパスを通します。

# for use conda
# 2019/11時点ではColabのデフォルトpythonバージョンは3.6
import sys
sys.path.append('/usr/local/lib/python3.6/site-packages')

画像を確認します。
上記のGoogleDrive操作を終えておきます。

import pydicom

# ここは上記のGoogleDrive操作を終えたことを想定しています。
drive = '/content/drive/My Drive/Colab Notebooks/JIRA_DICOM_SAMPLE/'
ds = pydicom.dcmread(drive+'CR_JPG_IR87a.dcm')

# ColabのFileタブにアップロードした場合
# ds = pydicom.dcmread('CR_JPG_IR87a.dcm')

ds.decompress()

#ピクセルを取り出す(ndarrayとして扱っています)
pixels = ds.pixel_array

#画像として表示してみます。
import matplotlib.pyplot as plt

plt.imshow(pixels)#2つとも必要
plt.show()  

#この記事を書いたモチベーション
学生や初学者がDICOMを扱うための障壁を薄く、低くするため。

#その他
コメント歓迎です。間違いなどありましたらご指摘いただけますと幸いです。

#参考URL
JIRA DICOMの世界:http://www.jira-net.or.jp/dicom/dicom_data_02_01.html
https://stackoverflow.com/questions/48376580/google-colab-how-to-read-data-from-my-google-drive/53592023

10
10
6

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
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?