DICOMファイルをPythonで扱うなら、pydicom一択です。
これ以上は、検索して調査する必要はありません。
本記事の内容
- pydicomとは?
- pydicomのシステム要件
- pydicomのインストール
- pydicomの動作確認
それでは、上記に沿って解説していきます。
pydicomとは?
pydicomは、DICOMファイルを扱うためのPythonライブラリです。
すべてPythonだけで記述されています。
C言語のAPIを利用(バインディング)などは、一切していません。
特殊な処理をする場合、バインディングはよくあることです。
でも、pydicomはそうではなく、すべてPythonで開発されています。
その意味では、pydicomをPure Pythonと呼ぶことができますね。
なお、DICOMファイルを普通は見れません。
Windows標準のビューワーなどでは、開くことすらできません。
GIMPでなんとか次のように開くことができました。
pydicomで処理(pngに変換)した場合は、次のようにちゃんと見れています。
だからこそ、pydicomスゴイねとなるわけです。
以上、pydicomについて説明しました。
次は、pydicomのシステム要件を確認します。
pydicomのシステム要件
現時点(2021年7月)でのpydicomの最新バージョンは、2.1.2となります。
この最新バージョンは、2020年12月10日にリリースされています。
pydicomのシステム要件は、次の点に注意しましょう。
- OS
- Pythonバージョン
- Numpy
下記でそれぞれの説明をします。
OS
サポートOSに関しては、以下を含むクロスプラットフォーム対応となります。
- Windows
- macOS
- Linux
基本的には、pydicomはOSを問わないということです。
ただ、Pythonのバージョンには注意が必要となります。
Pythonバージョン
サポート対象となるPythonのバージョンは以下。
- Python 3.6
- Python 3.7
- Python 3.8
- Python 3.9
これを見る限り、古いPythonはダメということです。
それに、近いうちにPython 3.6もサポート対象外になるでしょう。
以下は、Python公式開発サイクルです。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
pydicomは、この公式サイクルに準じています。
そうだとすれば、pydicomも2021年中にPython 3.6のサポートをやめるということです。
Numpy
Numpy公式
https://numpy.org/
Numpyに関しては、必須ではありません。
ただし、Pixel Dataをndarrayに変換する場合は必要なライブラリとなります。
Pixel Dataからndarrayへの変換ができると、何が嬉しいのでしょうか?
DICOMをJPEGなどに変換できるようになります。
つまり、DICOMを一般的な画像形式に変換できるようになるのです。
これは、嬉しいですね。
したがって、Numpyは必ず事前にインストールしておきましょう。
NumpyをインストールせずにPixel Dataをndarrayへの変換しようとすると、次のエラーが出ます。
RuntimeError: The following handlers are available to decode the pixel data however they are missing required dependencies: Numpy (req. NumPy)
Numpyのインストールは、次の記事で説明しています。
まとめ
Numpyのインストールを必須とすると、Python 3.7以降が要件となります。
そうなると、pydicomはそこそこ新しいPythonじゃないとインストールできないと言えます。
pydicomのシステム要件は、Pythonのバージョンに最も注意すべきでしょうね。
あと、Numpyは事前にインストールしておきます。
以上、pydicomのシステム要件について説明しました。
次は、pydicomをインストールしていきます。
pydicomのインストール
最初に、Pythonのバージョンを確認しておきます。
>python -V Python 3.9.6
現時点(2021年7月)で最新版のPython 3.9.6となります。
Pythonのアップグレード方法については、次の記事でまとめています。
次に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- numpy 1.21.0 pip 21.1.3 setuptools 57.0.0
事前にNumpyはインストール済みです。
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、pydicomのインストールです。
pydicomのインストールは、以下のコマンドとなります。
pip install pydicom
インストールは、すぐに終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ---------- ------- numpy 1.21.0 pip 21.1.3 pydicom 2.1.2 setuptools 57.0.0
pydicomパッケージのみが、インストールされました。
依存するパッケージが少ないと、pydicomを導入するのは容易です。
これだけシンプルだと、すでに動いている環境にもpydicomを導入しやすいですね。
以上、pydicomのインストールについて説明しました。
次は、pydicomの動作確認を行います。
pydicomの動作確認
pydicomの動作確認を行います。
事前準備として、次のURLからDICOMファイルをダウンロードします。
pydicomのGitHubページ
https://github.com/pydicom/pydicom/blob/master/pydicom/data/test_files/CT_small.dcm
以下が、動作確認用のコードとなります。
from pydicom import dcmread from pydicom.data import get_testdata_file path = get_testdata_file("CT_small.dcm") ds = dcmread(path) print(len(ds.PixelData))
「CT_small.dcm」は、ダウンロードしたDICOMファイルです。
上記コードを実行した結果は、次のような表示となります。
32768
「CT_small.dcm」のバイト数を表示しています。
ただ、表面上に見えるバイト数とは異なるようです。
これは、そういうモノなのでしょうね。
ここまで確認できれば、pydicomの動作確認としては十分です。
以上、pydicomの動作確認についての説明でした。