OpenCVのカメラ内部行列とカメラ外部行列からOpenGLのPROJECTION行列とMODELVIEW行列を計算する方法

Tweet


カメラ内部行列とPROJECTION行列

OpenCV等のカメラ内部行列が以下のように表現されているとする.

W: 画像の横方向の画素数
H: 画像の縦方向の画素数
fx: 横方向の焦点距離
fy: 縦方向の焦点距離
ここでは,画像中心が画像の真ん中であるとしている.それ以外の場合は適切に変更すること.

OpenGLのPROJECTION行列は以下のように計算できる.

zn: 前方クリッピング面までの距離(例えば0.1など)
zf: 後方クリッピング面までの距離(例えば1000など)

ただし,OpenGL行列double pm[16]と対応する順番は以下の通りとする.

座標系の定義などによって,上記の行列ではうまくいかない可能性もある.その場合は各自で適切に修正してから利用すること.


カメラ外部行列とMODELVIEW行列

OpenCV等のカメラ外部行列が以下のように表現されているとする.

OpenGLのMODELVIEW行列は以下のように計算できる.

または

どちらが適切かは座標系の定義によって変わってくる.

ただし,OpenGL行列vm[16]と対応する順番は以下の通りとする.

座標系の定義などによって,上記のいずれの行列でもうまくいかない可能性もある.その場合は各自で適切に修正してから利用すること.


もどる