はじめに
skimage.transformのEuclideanTransformでユークリッド変換(剛体変換)により、画像を中心を原点として回転させる方法について説明する。
コード

解説
モジュールのインポートなど
バージョン
画像の読み込み
下記サイトのジャスミン茶の画像を用いる。

ペットボトルのジャスミン茶のイラスト
いらすとやは季節のイベント・動物・子供などのかわいいイラストが沢山見つかるフリー素材サイトです。

この画像をplt.imreadで読み込み、img_as_floatでで0〜1のデータ範囲に変換した。
原点を画像中心として回転
transform.EuclideanTransformで回転角度と平行移動量をそれぞれ設定する。平行移動量は-np.array(img.shape[:2]) / 2とすることで画像の中心とする。
@演算子を使って行列積を計算する。画像中心を原点として回転したい場合は、
平行移動の逆行列@回転行列@平行移動行列とする。
逆行列と正則行列の積は単位行列となる。
画像のユークリッド変換と表示
transform.EuclideanTransform(matrix)をtransform.warpで画像に適用することで画像中心を原点として回転した画像が得られる。

参考
Types of homographies — skimage 0.25.2rc1.dev0 documentation
skimage.transform — skimage 0.25.2rc1.dev0 documentation
skimage.transform — skimage 0.25.2rc1.dev0 documentation
numpy.linalg.inv — NumPy v2.2 Manual
コメント