顔の位置を合わせたい
複数の顔画像の位置合わせをしたい。
face alignmentなどというやつ。
第一段階として顔の回転角度を平行に合わせる。
1. 結果
こんな感じになる↓
元画像
回転後
2. 角度を合わせる方法
多くの人間は両目が水平についている。
そこで両目が水平である状態を基準として入力顔画像を回転させることにする。
2.1. 両目の座標を取得する
顔の特徴点を抽出する方法がいくつかある。
今回は以前に試したfacenet_pytorch
を使用。
これにより入力画像から両目の座標が得られる。
2.2. 回転角を計算する
両目の座標が水平になるような回転角Θを求める。
回転角Θは以下の図のような感じになる
ここでtanΘ = (dy / dx)
なのでΘ = arctan(dy / dx)
numpy
に良い感じの関数があるので良い感じに計算できる。numpy
のarctan()
で出てくる値はラジアンなので度数に変換する。
得られた回転角Θだけ画像を回転させると両目が水平になった画像が得られる。
3. コード
今回作成したコード。
以前試したfacenet_pytorch
を使用しているが、両目の座標が取得できればなんでもいい。
1 | from facenet_pytorch import MTCNN |