空間変換

Python による生体医療画像解析

Stephen Bailey

Instructor

OASISデータベース

OASISロゴ

Python による生体医療画像解析

大きな個体差

複数の脳の配列

Python による生体医療画像解析

位置合わせ(レジストレーション)

  • テンプレートに画像を位置合わせ
  • 空間的なばらつきを最小化

  • テンプレートの特徴:

    • 複数の被験者を表す場合がある
    • 「平均」画像である場合がある
  • 多くの空間変換を伴う

3枚の画像の位置合わせ

Python による生体医療画像解析

アフィン変換は点・直線・平面を保持する

変換の例

Python による生体医療画像解析

平行移動

シフトされた頭部

import imageio.v2 as imageio
import scipy.ndimage as ndi

im=imageio.imread('OAS1036-2d.dcm')
im.shape
(256, 256)
com = ndi.center_of_mass(im)

d0 = 128 - com[0] d1 = 128 - com[1]
xfm = ndi.shift(im, shift=[d0, d1])
Python による生体医療画像解析

回転

ndi.rotate(im,
           angle=25,
           axes=(0,1))

回転された頭部

Python による生体医療画像解析

画像の回転

xfm = ndi.rotate(im, angle=25)

xfm.shape
(297, 297)

リシェイプされた回転画像

xfm = ndi.rotate(im, angle=25, 
              reshape=False)
xfm.shape
(256, 256)

通常の回転画像

Python による生体医療画像解析

変換行列

変換行列:位置合わせのために1つの画像に適用されます。

行列の各要素が、異なるアフィン変換の「指示」をエンコードします。

4種類の変換を示す画像

Python による生体医療画像解析

変換行列の適用

# Identity matrix
mat = [[1, 0, 0],
       [0, 1, 0],
       [0, 0, 1]]

xfm = ndi.affine_transform(im, mat)

元の画像

# Translate and rescale
mat = [[0.8, 0,   -20],
       [0,   0.8, -10],
       [0,   0,   1]]
xfm = ndi.affine_transform(im,
                           mat)

変換後の画像

Python による生体医療画像解析

練習しましょう!

Python による生体医療画像解析

Preparing Video For Download...