LoginSignup
1
3

More than 5 years have passed since last update.

アフィン変換後の座標から元の画像での位置を求める(Python + OpenCV)

Last updated at Posted at 2016-07-16

アフィン変換後の座標から元の画像での位置を求める

アフィン変換(cv2.warpAffine)後に切り出した画像が元の画像に収まっているか調べたい。
切り出した画像の四隅の座標が、元の画像の中にあればいいはず

考え方

warpAffineに渡したマトリクスを見てみると(2×3)の行列になっている
これに[0, 0, 1]の行を加えて、転置すれば最初に使用した回転行列が得られそう
アフィン変換後の座標を(x, y)とすると、[x, y, 1]に回転行列の逆行列をかける回転行列の逆行列に[[x], [y], [1]](3×1)をかけると元の座標が得られる気がする
OpenCVに対応するメソッドがあるんじゃないかとは思うが、探すのが面倒くさいどれを使えばいいのか、どう使えばいいのかわからない

コード

inverseWarpAffine.py
import cv2
import numpy as np

def getOriginalPosition(p, M):
  origin = np.array([[p.x], [p.y], [1]])
  rotateM = np.array([M[0], M[1], [0, 0, 1]])
  invM = np.linalg.inv(rotateM.T)
  return np.dot(invM, origin)[:2, 0]
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3