EEG 付き MRI の可視化

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、Python の Matplotlib を使って EEG トレース付きの MRI 画像の可視化を作成する方法を学びます。MRI と EEG データの読み込みと表示方法、MRI 画像の強度ヒストグラムのプロット方法、x 軸に時間、y 軸に電極チャネルを使った EEG トレースのプロット方法を学びます。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証は自動化できません。

学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

MRI データの読み込みと画像の表示

最初のステップは、MRI データを読み込み、画像を表示することです。画像を表示するにはimshow()関数を、軸のラベルを削除するにはaxis('off')を使用します。

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure("MRI_with_EEG")

## MRI データを読み込む (256x256 の 16 ビット整数)
im = np.load('mri_data.npy')

## MRI 画像をプロットする
ax0 = fig.add_subplot(2, 2, 1)
ax0.imshow(im, cmap='gray')
ax0.axis('off')

MRI 強度のヒストグラムをプロットする

次に、hist()関数を使って MRI 強度のヒストグラムをプロットします。強度値を 0 から 1 の範囲に正規化します。

## MRI 強度のヒストグラムをプロットする
ax1 = fig.add_subplot(2, 2, 2)
im = np.ravel(im)
im = im[np.nonzero(im)]  ## 背景を無視する
im = im / im.max()  ## 正規化する
ax1.hist(im, bins=100)
ax1.set_xlabel('Intensity (a.u.)')
ax1.set_ylabel('MRI density')

EEG データの読み込みとトレースのプロット

次のステップは、EEG データを読み込み、トレースをプロットすることです。データをファイルから読み込むにはfromfile()関数を、トレースをプロットするにはLineCollection()を使用します。また、y 軸の目盛りラベルを電極チャネルに設定します。

## EEG データを読み込む
n_samples, n_rows = 800, 4
data = np.load('eeg_data.npy')
t = 10 * np.arange(n_samples) / n_samples

## EEG をプロットする
ax2 = fig.add_subplot(2, 1, 2)
ax2.set_xlim(0, 10)
ax2.set_xticks(np.arange(10))
dmin = data.min()
dmax = data.max()
dr = (dmax - dmin) * 0.7  ## 少し詰める。
y0 = dmin
y1 = (n_rows - 1) * dr + dmax
ax2.set_ylim(y0, y1)

segs = []
for i in range(n_rows):
    segs.append(np.column_stack((t, data[:, i])))

offsets = np.zeros((n_rows, 2), dtype=float)
offsets[:, 1] = np.arange(n_rows) * dr

lines = LineCollection(segs, offsets=offsets, transOffset=None)
ax2.add_collection(lines)

## y 軸において軸座標を使用するように yticks を設定する
ax2.set_yticks(offsets[:, 1])
ax2.set_yticklabels(['PG3', 'PG5', 'PG7', 'PG9'])
ax2.set_xlabel('Time (s)')

可視化を表示する

最後に、show()関数を使って可視化を表示します。

plt.tight_layout()
plt.show()

まとめ

この実験では、Python の Matplotlib を使って EEG トレース付きの MRI 画像の可視化を作成する方法を学びました。MRI 画像を読み込んで表示し、MRI 画像の強度ヒストグラムをプロットし、x 軸に時間、y 軸に電極チャネルを持つ EEG トレースをプロットしました。