前回は外部パラメータの意味を解説しました。
なので今回は、外部パラメータと双璧をなす?内部パラメータの意味を解説してみたいと思います。
内部パラメータとは
内部パラメータとは、一言でいうと
「カメラ座標を画像座標へ変換する行列」のことです。
式で表すとこうなります。
例によって詳しく解説していきます。
内部パラメータの意味
ちょっと説明を簡単にするために、\(f=f_x=f_y\)と仮定して話を進めます。
なぜこのように仮定していいかは、こっちの記事を参考にしてください。
下の図のように、カメラ座標系上に複数の3次元点があるとします。
この点たちを、どうにかして青で示した画像平面に持って行ってやりたいわけです。
ちなみに、画像平面はカメラ座標系原点から\(Z_c\)方向に\(f\)離れた位置にあります。
いきなり画像平面に持っていくのは少し難しいので、まずは各カメラ座標点を正規化してやって、\(Z_{c}=1\)の平面に持ってきてやりましょう。
あとは簡単ですね!正規化したカメラ座標点たちを焦点距離\(f\)倍すれば画像平面に点を集められます!
この画像平面上に集めた3次元点の\(x_c\)軸と\(y_c\)軸の値が、画像座標になるわけです。
ただ、このままだと画像平面と\(z_c\)軸の交点、画像の中央が画像座標系の原点になってしまいます。
別に問題ないといえばないんですが、普通は画像の左上を原点にしますよね?
だからこのままじゃちょっと扱いにくい。。。
そこで、最後に左上が画像座標\((0, 0)\)になるように、原点をずらしてあげましょう。
これで一般的な画像の座標系上に、カメラ座標点を投影することができました!
この流れを数式にまとめるとこうなります。
あれ?なんか最初に紹介した式と違いますね…
安心してください。式を展開すればわかりますが、実は\(s=Z_c\)なので、両方の式を展開すると同じ形になります。
きっと最初の方の式の形にした方が、透視投影変換で世界座標 → カメラ座標 → 画像座標の変換を1つの式で、しかも掛け算だけで表すことができるのでいろいろと楽なのでしょう。
これで内部パラメータの持つ意味はばっちりですね!!
ちなみに反対に、内部パラメータを使った画像座標系からカメラ座標系の情報の取り出し方については、こちらの記事で解説しています。
コメント
s=Xzと書いていますが、Zcじゃないのでしょうか?
確かにZcで誤植だったの修正しました。