カメラの位置を世界座標で計算したい。これはかなり簡単なはずですが、期待した結果が得られません。このトピックに関するすべてを読んだと思いますが、コードが機能していません。これが私がすることです:
私はある地域を見ているカメラを持っています。
1)その地域の地図を描きました。
2)4つの画像ポイントをマップ上の4つのポイントに一致させることにより、ホモグラフィを計算しました。cv2.getPerspectiveTransform
3)Hホモグラフィは、すべての世界座標をカメラ座標に変換します。これは正しく機能しています
4)カメラマトリックスを計算するために私はこれに従いました:
translation = np.zeros((3,1))
translation[:,0] = homography[:,2]
rotation = np.zeros((3,3))
rotation[:,0] = homography[:,0]
rotation[:,1] = homography[:,1]
rotation[:,2] = np.cross(homography[0:3,0],homography[0:3,1])
cameraMatrix = np.zeros((3,4))
cameraMatrix[:,0:3] = rotation
cameraMatrix[:,3] = homography[:,2]
cameraMatrix = cameraMatrix/cameraMatrix[2][3] #normalize the matrix
5)これによると、カメラの位置は次のように計算する必要があります。
x,y,z = np.dot(-np.transpose(rotation),translation)
私が得ている座標は完全に間違っています。問題はステップ4または5のどこかにあるはずです。私の方法の何が問題になっていますか?