[scikit-image] 85. EuclideanTransformによるユークリッド変換(skimage.transform.EuclideanTransform)

python

はじめに

skimage.transformのEuclideanTransformでユークリッド変換(剛体変換)により、画像を回転させる方法、平行移動させる方法について解説する。

コード

コードをダウンロード(.pyファイル)コードをダウンロード(.ipynbファイル)

解説

モジュールのインポートなど

バージョン

画像の読み込み

2年前に100円ショップ(ダイソー)で購入し、つい最近ようやく花が咲いたテロカクタス属大統領の画像を用いる。 

この画像をplt.imreadで読み込み、img_as_floatでで0〜1のデータ範囲に変換した。

2Dユークリッド変換

transform.EuclideanTransformで回転角度と平行移動量を設定することで、変換行列を作成する。

画像のユークリッド変換

変換行列を画像に適用する。出力画像のすべてのピクセルについて、入力画像のどこから取得したかを把握する必要があるので、変換行列をそのまま使用するのではなく、変換行列の逆行列を使用する必要がある。

回転角を変化させた場合

anglesで回転させたい角度のリストを作成し、transform.EuclideanTransform(rotation=angles[i])で各要素における回転行列を作成しておく。transform.warp(img, tforms[i].inverse)で回転行列を適用した画像を作成し、subplotsで並べて表示した。
plt.suptitleで図全体のタイトルを設定できる。

平行移動量を変化させた場合

平行移動量を変化させたときの画像の変化も角度を変化させた場合と同様にして表示した。

参考

Types of homographies — skimage v0.18.dev0 docs
Module: transform — skimage v0.18.dev0 docs
Module: transform — skimage v0.18.dev0 docs

コメント