F行列から運動パラメータ推定

SVDを用いた方法

クォータニオンを用いた方法

同じ平面上の特徴点の対応付け

これも, あることをしようとして調べたのでメモ.
ステレオペアが1組与えられた時に, そこに写っている平面上の特徴点を対応付けすることを考える.

以下, 静止画の場合であって, 動画を使える場合はKLTトラッカ等で対応付けすればよい.

平面上のある点を2視点から見ると, 射影変換のため以下のような関係がある. 画像座標系での座標\(x,y\),\(x^',y^'\)をそれぞれ画像1, 画像2で得られた特徴点の射影位置とする. パラメータA,..,F,P,Q,Rは射影変換行列の要素.

x^'=\frac{\(Ax+By+C\)}{\(Px+Qy+R\)}
y^'=\frac{\(Dx+Ey+F\)}{\(Px+Qy+R\)}

よって, 観測ノイズがなければ, 特徴点ペアはerr\(x,y,x^',y^'\)=0を満たす.

err\(x,y,x^',y^'\)=\(x^'-\frac{\(Ax+By+C\)}{\(Px+Qy+R\)}\)^2+\(y^'-\frac{\(Dx+Ey+F\)}{\(Px+Qy+R\)}\)^2

実際には観測ノイズがあるため, 特徴点ペアはerr\(x,y,x^',y^'\)が最小となるペアとみなすことができる. つまり, err\(x,y,x^',y^'\)が閾値以内である特徴点ペア(インライア)の個数が最も多くなるパラメータを求め, そのパラメータでのインライアが解となる.

ただし, すべての特徴点の組み合わせを用いて計算するのは大変なので, 最初にペア候補を求めておき, そのペアに対してRANSACを適用する. 手順は以下の通り.
  1. 2枚の画像からそれぞれm,n個の特徴点を抽出
  2. ブロックマッチングによりペア候補を\min\(m,n\)個求める. すべてのペアに対して残差平方和を計算しておき, その値が小さいペアから\min\(m,n\)選択する
  3. RANSACにより正しいペアを求める

ここで, 特徴点座標の関係から, パラメータをすべて定数倍しても同じであることがわかる. よって, 重要なのは係数の比なので, P=1とすると,

Qyx^'+Rx^'-Ax-By-C=-xx^'
Qyy^'+Ry^'-Dx-Ey-F=-xy^'

となり, パラメータは8個となる. 1組のペアで2本の方程式が得られるので, 4個のペアがあればパラメータを決定できる.

よって, RANSACの処理は
  1. ランダムに4個のペアを選択してパラメータを計算
  2. そのパラメータでerr\(x,y,x^',y^'\)<\epsilonとなるペア(インライア)の個数を求める
  3. インライアの個数が最も多くなるパラメータと, そのときのインライアを解とする

やってみたらこんなかんじ
結構きれいにでるんだなー

SSDが最小のものをペアとした場合

RANSACでrefine


OpenCVとOpenGLでARしてみる

ひまだったので作ってみた.
肝はcvFindChessboardCorners(), cvCalibrateCamera2(). あとは, 得られた内部, 外部パラメータをOpenGLの行列に設定するだけ.
やっぱOpenCV便利だわ. そのうち作り方まとめる.

ユークリッド復元


FASTコーナー検出

ためしにActionscriptで実装. やっぱ軽い.



自校正

回転カメラから

同じ回転するカメラで撮影された画像がN>=3枚得られるとし, その画像から自校正を行う.
ただし撮影方法には以下の制約がある.
  • 内部行列は変化しない
  • 並進無し
  • 回転軸は2軸以上
並進0と仮定すればホモグラフィ行列は
H^i=K R^i K^{-1}
とみなせる. ここで, H^i, R^iはカメラ0-カメラi間の画像間ホモグラフィ行列, 回転行列, Kは内部行列. 上式を式変形し
\omega={H^i}^{-T} \omega {H^i}^{-1}
を得る. ここで, \omega=\( KK^T\)^{-1}. 対称行列であることに注意.
あとは, \omegaの要素を未知数とする斉次連立一次方程式を解き, \omegaのコレスキー分解により内部行列Kを得る.

まとめると
  1. H^i (i=1, 2, \cdots, N-1)を求める( \| H^i \| = 1となるように正規化)
  2. \omegaの要素を未知数とする斉次連立一次方程式を解く
  3. 求めた\omegaをコレスキー分解. Kを得る
  4. 3.の解を初期値とし, 再投影誤差が最小になるように非線形最適化(マーカート法とか)
Richard I. Hartley, "Self-Calibration from Multiple Views with a Rotating Camera"

カウンタ -
最終更新:2010年11月25日 17:54