画像座標系からカメラ座標系への変換

画像座標点をカメラ座標点に変換することを考えてみます。
タイトル詐欺で申し訳ないですが、結論から言うと画像座標点をカメラ座標点への変換はできません。できるのはカメラ座標系原点からカメラ座標点方向へのベクトルを計算することだけです。まぁ、2次元から3次元への変換なんて、明らかに奥行きの情報が足りてないから当然ですよね。なので今回は、このベクトル変換方法についてまとめてみます。

画像座標点からカメラ座標ベクトルへの変換

内部パラメータが既知の場合、カメラ座標系原点からカメラ座標点方向を計算できます。これを説明しやすくするためカメラ座標ベクトルと呼ぶことにします。下の図の赤のベクトルのことですね。

このカメラ座標ベクトルの求め方を今回はまとめてみます。

カメラ座標ベクトルとか画像座標点に内部パラメータの逆行列を掛ければいいんでしょ?とか思ってるそこのあなた!!逆行列の計算コストはそれなりに高いです。そんなことしなくてもカメラ座標ベクトルは求められます。この辺の話は、内部パラメータの意味を理解してればわかると思います。内部パラメータの意味を知らない人はまずはこちらを理解しましょう。

カメラ内部パラメータとは
前回は外部パラメータの意味を解説しました。なので今回は、外部パラメータと双璧をなす?内部パラメータの意味を解説してみたいと思います。 内部パラメータとは 内部パラメータとは、一言でいうと「カメラ座標を画像座標へ変換する行列」のことです。 式...

 

それでは、カメラ座標ベクトルの求め方を順を追って説明します。

なお、内部パラメータは例によってこれで表記します。

1. 画像座標系原点を移動させる

まずは考えやすくするため、カメラ座標系のZ軸上に画像座標系原点があると考えます。すなわち、光学中心の\((u,v)\)分画像座標系原点を移動させるので、画像座標系\((u,v)\)は移動後\((u-c_x,v-c_y)\)となります。

2. カメラ座標ベクトルを求める

さて、ここで内部パラメータの意味を思い出してほしいのですが、カメラ座標点を焦点距離\(f\)の位置に集めたものが画像座標系でした。なので、画像座標点の奥行は\(f\)ということになるので、\((u-c_x, v-c_y,f)\)となります。

ですので、カメラ座標ベクトルは\((u-c_x, v-c_y,f)\)となります。

\(f_x\)と\(f_y\)の値が異なる場合は、\((\frac{u-c_x}{f_x},\frac{v-c_y}{f_y},1)\)とした方が考えやすいかもです。

コメント

  1. ぬいり より:

    レンズの歪み係数はどの段階で考慮したらいいのでしょうか?

    • 管理人 より:

      レンズの歪み係数が既知の場合は、前処理としてあらかじめ画像の歪みを補正しておくのが一般的かと思います。本記事でも歪みはあらかじめ補正済みとして考慮していません。