カメラ内部パラメータとは

前回は外部パラメータの意味を解説しました。
なので今回は、外部パラメータと双璧をなす?内部パラメータの意味を解説してみたいと思います。

カメラ外部パラメータとは
外部パラメータとはなんぞや?という話ですが、一言でいうと 「世界座標をカメラ座標に変換する行列」のことです。 式で表すとこうですね。   待て待て、それだけ言われてもわからない。 という人の為に、もう少し詳しく解説してみた...

内部パラメータとは、一言でいうと
カメラ座標を画像座標へ変換する行列」のことです。

式で表すとこうなります。

例によって詳しく解説していきます。

ちょっと説明を簡単にするために、\(f=f_x=f_y\)と仮定して話を進めます。
なぜこのように仮定していいかは、こっちの記事を参考にしてください。

内部パラメータの単位の話 ~pixelとmmの変換~
さて、今回は内部パラメータの単位について解説してみたいと思います。 皆さんご存知の通り、透視投影変換は 世界座標 ↓ カメラ座標 ↓ 画像座標 の順で、世界座標を画像座標に変換していて、現実世界の3次元物体が画像上...

下の図のように、カメラ座標系上に複数の3次元点があるとします。
この点たちを、どうにかして青で示した画像平面に持って行ってやりたいわけです。

ちなみに、画像平面はカメラ座標系原点から\(Z_c\)方向に\(f\)離れた位置にあります。

いきなり画像平面に持っていくのは少し難しいので、まずは各カメラ座標点を正規化してやって、\(Z_{c}=1\)の平面に持ってきてやりましょう。

あとは簡単ですね!正規化したカメラ座標点たちを焦点距離\(f\)倍すれば画像平面に点を集められます!

この画像平面上に集めた3次元点の\(x_c\)軸と\(y_c\)軸の値が、画像座標になるわけです。

ただ、このままだと画像平面と\(z_c\)軸の交点、画像の中央が画像座標系の原点になってしまいます。
別に問題ないといえばないんですが、普通は画像の左上を原点にしますよね?
だからこのままじゃちょっと扱いにくい。。。

そこで、最後に左上が画像座標\((0, 0)\)になるように、原点をずらしてあげましょう。

これで一般的な画像の座標系上に、カメラ座標点を投影することができました!

この流れを数式にまとめるとこうなります。

あれ?なんか最初に紹介した式と違いますね…
安心してください。式を展開すればわかりますが、実は\(s=X_z\)なので、両方の式を展開すると同じ形になります。

きっと最初の方の式の形にした方が、透視投影変換で世界座標 → カメラ座標 → 画像座標の変換を1つの式で、しかも掛け算だけで表すことができるのでいろいろと楽なのでしょう。

これで内部パラメータの持つ意味はばっちりですね!!

ちなみに反対に、内部パラメータを使った画像座標系からカメラ座標系の情報の取り出し方については、こちらの記事で解説しています。

画像座標系からカメラ座標系への変換
画像座標点をカメラ座標点に変換することを考えてみます。 タイトル詐欺で申し訳ないですが、結論から言うと画像座標点をカメラ座標点への変換はできません。できるのはカメラ座標系原点からカメラ座標点方向へのベクトルを計算することだけです。まぁ、2...

コメント