「カメラの較正」の版間の差分
(初版) |
細 (スペースなどの調整) |
||
25行: | 25行: | ||
* カメラ座標系と画像座標系のy軸は平行・同じ向き | * カメラ座標系と画像座標系のy軸は平行・同じ向き | ||
* 平面の法線(z軸)は平面の表側が正 | * 平面の法線(z軸)は平面の表側が正 | ||
− | とする ( | + | とする (図参照)。 |
== ホモグラフィ == | == ホモグラフィ == | ||
− | + | i 回目の観測画像における j 番目の画像座標<math>\tilde{\boldsymbol{m}}_{ij}</math>と参照平面上の座標<math>\tilde{\boldsymbol{p}}_{ij}</math>はホモグラフィ<math>H_i</math>を通して次の関係があるとする。 | |
<math> | <math> | ||
65行: | 65行: | ||
</math> | </math> | ||
− | + | で、平面の x 軸 (= <math>\boldsymbol{r}_{1i}</math>)、 y 軸 (= <math>\boldsymbol{r}_{2i}</math>)と世界座標系における平面の原点位置 (= <math>\boldsymbol{t}_i</math>)から、平面上の点<math>\tilde{\boldsymbol{p}}_{ij}</math>は次のようになる。 | |
<math> | <math> | ||
104行: | 104行: | ||
とした。 | とした。 | ||
− | 未知数は対称行列<math>\omega</math>の成分(6自由度)のみで、1回の観測で得られる拘束式が2本なので、異なる位置・姿勢の参照平面を3回以上観測すれば解く事ができる。 | + | 未知数は対称行列<math>\omega</math>の成分 (6自由度)のみで、1回の観測で得られる拘束式が2本なので、異なる位置・姿勢の参照平面を3回以上観測すれば解く事ができる。 |
これによって<math>\omega</math>が求まれば<math>K</math>が計算できる。 | これによって<math>\omega</math>が求まれば<math>K</math>が計算できる。 | ||
155行: | 155行: | ||
<math> | <math> | ||
− | e^2 = \sum_{ij} || \text{proj}(\boldsymbol{p}_{ij} | K, R_i, \boldsymbol{t}_i) - \boldsymbol{m}_{ij} ||^2 | + | e^2 = \sum_{ij} || \text{proj}(\boldsymbol{p}_{ij} | K, R_i, \boldsymbol{t}_i) - \boldsymbol{m}_{ij} ||^2 \rightarrow \min |
</math><br /> | </math><br /> | ||
ただし<math>\text{proj}(\boldsymbol{p}_{ij} | K, R_i, \boldsymbol{t}_i)</math>は平面上の点<math>\boldsymbol{p}_{ij}</math>を推定したパラメータで画像平面へ投影した座標とする。 | ただし<math>\text{proj}(\boldsymbol{p}_{ij} | K, R_i, \boldsymbol{t}_i)</math>は平面上の点<math>\boldsymbol{p}_{ij}</math>を推定したパラメータで画像平面へ投影した座標とする。 | ||
歪みパラメータも推定するなら(適当な初期値を設定して)この式に入れとけばいいはず。 | 歪みパラメータも推定するなら(適当な初期値を設定して)この式に入れとけばいいはず。 |
2011年10月23日 (日) 20:36時点における最新版
目次 |
平面を使った較正
まあ、定番の手法。撮影した物体の3次元的な形状を計算するだけなら何もやらなくていいけど、対象物の大きさも知るためには既知の大きさの物体(参照物体)を撮影してみてそれが画像上で何画素になるか調べる必要がある。
例えば一辺20 [cm]位の立方体を用意して各頂点が画像上のどこになるか観測すると、3次元空間でそれぞれの方向に20 [cm]動いたら画像上でどう変化するかがわかるので簡単に3次元座標と画像座標の関係を求められる。 これが直感的で分かりやすいけど、その立方体を用意するのが大変。 この立方体が長さと角度の基準になるから、精密に作らないと復元結果が歪んじゃう。 もちろん画像上の点と3次元座標の関係が得られればいいので、立方体じゃ無くても、球とかタワシとかフィギュアとか3次元物体であれば何でも使えるけど、いずれにせよ精密に作るのは難しい。それに丁寧に扱わないといけないし。
そこで平面ですよ。奥さん。
真っ直ぐな板とプリンタさえあれば、誰でも簡単に作れちゃうスグレモノ。 壊れたってすぐ作り直せるし、ぞんざいに扱っても大丈夫。投げようが踏もうが噛み付こうが問題なし。 まあ、本当に精度良く較正しようとするなら、それなりに注意深く作る必要があるけどね。。
座標系の設定
座標系は自由に決められるから何でもいいけど、後々混乱の元になるのできちんと決めておくべし。 ここでは、
- 右手座標系
- 回転は右ネジ
- 世界座標系=カメラ座標系 (世界座標系の原点にカメラ)
- 画像座標系は右向きにx軸、下向きにy軸
- カメラ座標系と画像座標系のy軸は平行・同じ向き
- 平面の法線(z軸)は平面の表側が正
とする (図参照)。
ホモグラフィ
i 回目の観測画像における j 番目の画像座標と参照平面上の座標はホモグラフィを通して次の関係があるとする。
は参照平面に設定した座標と観測した画像座標の組が4点以上あれば計算できる。 あと、この時参照平面に設定した単位系が世界座標系の単位系になる。つまり、平面上の座標を適当な原点から[mm]で表現すれば世界座標系も[mm]になる。
カメラパラメータとの関係
世界座標系からカメラ座標系への変換行列を、モデル座標系から世界座標系への変換行列をとすると、モデル座標系の3次元点は以下のように投影される。
ただし、
で、平面の x 軸 (= )、 y 軸 (= )と世界座標系における平面の原点位置 (= )から、平面上の点は次のようになる。
そんな訳で、カメラパラメータとホモグラフィは以下の関係が成り立つ。
ただし、は定数倍の係数。
左辺のは大きさ1で互いに直交するので、とすると次を得る。
ここで、
とした。
未知数は対称行列の成分 (6自由度)のみで、1回の観測で得られる拘束式が2本なので、異なる位置・姿勢の参照平面を3回以上観測すれば解く事ができる。 これによってが求まればが計算できる。
の算出
をについて整理する。 とすると、
となるから、各観測に対して求めたホモグラフィをこの式に従って並べて0固有値に対応する固有ベクトルを求めればになっているはず。 あ、この式はとして並び替えただけなので、確かめてから使ってね。
外部パラメータの算出
からが計算できるので、
から外部パラメータ()が求まる。 ここではを利用して定める。 これは、各観測における平面の位置・姿勢を表す。
仕上げ
これで大体のパラメータが求まったけど、なんだかんだで誤差が大きかったりする。なので、求めたパラメータを初期値にして例えば再投影誤差を最小化したりする;
ただしは平面上の点を推定したパラメータで画像平面へ投影した座標とする。
歪みパラメータも推定するなら(適当な初期値を設定して)この式に入れとけばいいはず。