5
6

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 1 year has passed since last update.

【DICOM】【入門】Pydicomの使い方

Posted at

はじめに

はじめてPydicomでDICOMファイルをどうにかしたい!という方向けです。
ここでは、Pydicomのインストール方法、DICOMファイルの情報表示・画像表示の方法までご紹介します。

1. Pydicomをインストールする

$ pip install pydicom

2. DICOMのメタデータを表示する

まず、JIRAが公開しているDICOMサンプルデータをダウンロードしましょう。(どれか1つ選んでください。)
DICOMのメタデータには、患者情報、モダリティ情報など様々な情報が詰まっています。
メタデータ一覧はこちらから確認できます。

■ 全メタデータを表示する

example.py
import pydicom

file = pydicom.dcmread('sample/sample.dcm')

print(file)

出力結果

Dataset.file_meta -------------------------------
(0002, 0000) File Meta Information Group Length  UL: 174
(0002, 0001) File Meta Information Version       OB: b'\x00\x01'
(0002, 0002) Media Storage SOP Class UID         UI: Computed Radiography Image Storage
....

■ 特定のメタデータのみ表示する

特定のメタデータのみ表示するには、keywordで指定する方法・タグで指定する方法の2種類あります。

example.py
import pydicom

file = pydicom.dcmread('sample/sample.dcm')

print(file.PatientName)           # keywordで指定
print(file.[(0x0010, 0x0010)])    # タグで指定

ちなみに、keywordの確認はこのようにできます。

example.py
ds[0x00100010].keyword
# 'PatientName'とコンソール出力される

3. DICOM画像を表示する

DICOM画像の表示には、Matplotlib、GDCM、pylibjpegが必要なのでインストールしておきます。

$ pip install matplotlib
$ pip install -U python-gdcm
$ pip install pylibjpeg

■ 画像を表示する

example.py
import pydicom
import matplotlib.pyplot as plt

file = pydicom.dcmread('sample/sample.dcm')
img = file.pixel_array
plt.imshow(img)
plt.show()

■ ウィンドウ処理をして画像表示する

ウィンドウ処理とは、幅広い幅の画素値を持つ画像のある特定の濃度域のみを,表示系の濃度域[0(暗)~255(明)]に変換して表示する処理のことです。

つまり、画像を見やすくするために、コントラストや明るさを調整する処理のことを指します。

DICOMデータに、WindowCenterやWindowWidthなどのデータがある場合はこの処理を行なったほうが良いです。

example.py
import pydicom
import matplotlib.pyplot as plt

file = pydicom.dcmread('filepath')
wc = file.WindowCenter
ww = file.WindowWidth
img = file.pixel_array

#ウィンドウ処理
window_max = wc + ww /2
window_min = wc - ww /2
img = 255*(img-window_min)/(window_max - window_min)
img[img > 255] = 255
img[img < 0] = 0
plt.show(img)
plt.show()
5
6
2

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
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?