Location via proxy:
[ UP ]
[Report a bug]
[Manage cookies]
No cookies
No scripts
No ads
No referrer
Show this form
Submit Search
Structure from Motion
•
Download as PPTX, PDF
•
8 likes
•
7,124 views
Ryutaro Yamauchi
Follow
【解説】Structure from Motion arXivTimes 勉強会 2018/09/20 株式会社ALBERT 山内隆太郎
Read less
Read more
1 of 23
Download now
More Related Content
Structure from Motion
1.
Structure from Motion 2018/09/20
arXivTimes勉強会 株式会社 ALBERT 山内隆太郎
2.
Structure from Motion
(SfM)とは • 二枚(またはそれ以上)の画像から3次元情報を復元する技術
3.
SfMの流れ 1. 特徴点の抽出およびマッチング(今回は省略) 2. カメラ姿勢の推定 3.
三角測量による3次元点の復元 4. カメラ位置と3次元点の位置の最適化(今回は省略)
4.
カメラモデル • 空間上の点から画像平面への投影をモデル化したもの • 以下の式で書ける 𝜆 𝑢 𝑣 1 =
𝐾(𝑅 𝑋 𝑌 𝑍 + 𝐭) ただし 𝑢 𝑣 は画像座標系、 𝑋 𝑌 𝑍 はワールド座標系上の点 𝐾はカメラ内部行列(camera intrinsic matrix) 𝑅, 𝐭 はそれぞれ回転と平行移動を表す(𝑅, 𝐭 合わせてカメラ外部行列と呼ぶことも) ※本来、上の式は同次座標を使って表現するのが普通ですが、慣れるまでは 分かりづらいので、今回は素朴に書いてます
5.
カメラモデル ピンホールカメラモデル • ピンホールカメラでは、点を出発した光はピンホールを通って画像平面 (スクリーン、フィルムなど)に当たる •
一般のカメラはレンズがあるので実態はもっと複雑だが、カメラ内部行列 𝐾(後述)にレンズの性質を押し込むことで、ピンホールカメラと同じよ うに扱うことができる 画像平面 仮想画像平面 3次元オブジェクト 焦点距離 𝑓
6.
カメラモデル 登場する座標系の紹介 • カメラモデルではワールド座標系、カメラ座標系、画像座標系 という3つの座標系を考える。 •
ワールド座標系:基準となる座標系。3次元 • カメラ座標系 :カメラの焦点を原点とする座標系。Z軸方向がカメラ の見ている向き。3次元 • 画像座標系 :画像平面上の座標系。単位はピクセルなど。2次元 • カメラモデルでは、ワールド座標系上の点→カメラ座標系上の 点→画像座標系上の点という流れでカメラをモデル化する
7.
カメラモデル 各座標系の関係 z x y Y X Z ワールド座標系 カメラ座標系 空間上の点 画像平面上の点 画像座標系 正規化画像座標系
8.
カメラモデル ワールド座標系→カメラ座標系 • ワールド座標系からカメラ座標系への変換は次のように書ける 𝑥 𝑦 𝑧
𝐶 = 𝑅 𝑋 𝑌 𝑍 𝑊 + 𝐭 𝑅 = 𝑟11 ⋯ 𝑟13 ⋮ ⋱ ⋮ 𝑟31 ⋯ 𝑟33 は3次元の回転行列、𝐭 = 𝑡 𝑥 𝑡 𝑦 𝑡 𝑧 は平行移動を表すベクトル (ワールド座標系上の点 𝑋 𝑌 𝑍 はカメラ座標系では 𝑥 𝑦 𝑧 と表される 、という意味)
9.
カメラモデル カメラ座標系→画像座標系 • 画像平面
𝑧 = 1 への投影は簡単 • 投影先を正規化画像座標系という 𝑥 𝑦 𝑧 → 𝑥 𝑧 𝑦 𝑧 1 • しかしコンピュータ上では画像はピクセルの配列として扱われ るので、投影先はピクセル座標で表されているとありがたい • ここで出てくるのがカメラ内部行列 𝐾 𝑥 𝑦 𝑧 𝑧 = 1 z x-y
10.
カメラモデル カメラ内部行列 • カメラ内部行列𝐾を 𝐾
= 𝑓𝑥 0 𝑐 𝑥 0 𝑓𝑦 𝑐 𝑦 0 0 1 とすると、カメラ座標上の点から画像座標系への投影は 𝜆 𝑢 𝑣 1 = 𝐾 𝑥 𝑦 𝑧 と書ける。 • 𝐾 を推定することをカメラキャリブレーションという ただし 𝑓𝑥, 𝑓𝑦 は焦点距離、𝑐 𝑥, 𝑐 𝑦 は画像中心の座標。どちらもピクセル単位である点に注意 ここでは 𝜆 = 𝑧 である
11.
カメラモデル • 以上をまとめると、 𝜆 𝑢 𝑣 1 = 𝐾(𝑅 𝑋 𝑌 𝑍 +
𝐭) となる ちなみに同次座標で表現すると 𝜆 𝑢 𝑣 1 = 𝐾 𝑅 𝐭 ] 𝑋 𝑌 𝑍 1 = 𝑃 𝑋 𝑌 𝑍 1 ※ 𝑃 を射影行列と呼ぶ
12.
エピポーラ幾何 𝑥1 𝑥2 𝑋 𝑋? 𝑋? 𝑂1 𝑂2 エピポール
𝑒1 エピポール 𝑒2 エピポーラ線 𝑙2 • エピポーラ平面:カメラ中心 𝑂1, 𝑂2 及び3次元点 𝑋 を通る平面 • エピポーラ線 :エピポーラ平面と画像平面の交わる線 • エピポール :直線𝑂1 𝑂2 と画像平面の交わる点 同じ 𝑋 を映した点
13.
エピポーラ幾何 • 画像平面上1の点𝑥1に対応する3次元点𝑋は、カメラ中心𝑂1と𝑥1 を結んだ直線上にある • 直線
𝑂1 𝑥1を 画像平面上2に投影した直線をエピポーラ線と呼ぶ。 三次元点𝑋はこのエピポーラ線上のどこかに映されていなくて はならない →この関係をエピポーラ拘束という
14.
エピポーラ拘束と基礎行列 • 2つの画像に写された同一の空間上の点が満たすべき拘束条件 • 𝐱1
= 𝑢1 𝑣1 1 をカメラ𝐶1の画像平面上の点、 𝐱2 = 𝑢2 𝑣2 1 をカメラ𝐶2の画像平面 上の点とすると、エピポーラ拘束は以下の式で表される。 𝑢2 𝑣2 1 𝑓11 𝑓12 𝑓13 𝑓21 𝑓22 𝑓23 𝑓31 𝑓32 𝑓33 𝑢1 𝑣1 1 = 𝐱2 ⊤ 𝐹𝐱 𝟏 = 0 F を基礎行列という。 • 𝐹は𝐶1と𝐶2それぞれのカメラの内部行列𝐾1, 𝐾2及び2カメラ間の位置関係 (𝑅, 𝐭)の情報を含む • 𝐥 𝟐 = 𝐹𝐱 𝟏はエピポーラ線である。実際、𝐱 𝟐 ⊤ 𝐥 𝟐 = 0 は直線のベクトル方程式 であり、 𝐱 𝟐が満たさねばならない条件を表している
15.
基礎行列 𝐹 を求める •
エピポーラ拘束の式は以下の線形方程式に書き直せる 𝑢2 1 𝑢1 1 𝑢2 1 𝑣1 1 𝑢2 1 𝑣2 1 𝑢1 1 𝑣2 1 𝑣1 1 𝑣2 1 𝑢1 1 𝑣1 1 1 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ 𝑢2 𝑛 𝑢1 𝑛 𝑢2 𝑛 𝑣1 𝑛 𝑢2 𝑛 𝑣2 𝑛 𝑢1 𝑛 𝑣2 𝑛 𝑣1 𝑛 𝑣2 𝑛 𝑢1 𝑛 𝑣1 𝑛 1 𝑓11 𝑓12 ⋮ 𝑓33 = 𝐴𝑓 = 0 • 𝐹は8自由度なので8つの対応点があれば解が求まる(8点アル ゴリズム) スケールが任意なため • 8つ以上の対応点がある場合はSVDなどを用いた最小二乗法で
16.
基礎行列 𝐹 を求める意味 •
アウトライヤ(間違った対応点)を取り除くことができる • RANSAC アルゴリズム:ランダムに8組の対応点を選び、基礎行列 𝐹’ を求めて、インライヤ(一定の誤差以内でエピポーラ線上にある 点)の割合を計算する。これを繰り返して、最もよい 𝐹’ のすべてのイ ンライヤを使って最終的な 𝐹 を求める。 • 基本行列 𝐸(後述)を求めることができる • ただし𝐹を使わずに𝐸を求めることもできる
17.
基本行列 𝐸 • 基礎行列𝐹にたいして𝐸
= 𝐾2 ⊤ 𝐹𝐾1を基本行列という • 𝐹 から求める方法と、直接求める方法(5点アルゴリズム)が ある • 𝐸は𝑅と𝐭の情報のみを含んでおり、𝐸を分解することでカメラの 移動を推定できる 𝐸の分解にはSVDを使う。𝐸にはいくつかの性質があり、それを加味す ると解を4つに絞れる。三次元点𝑋はカメラの前方にあるという制約 からそれをさらに1つに絞る 詳しくは参考文献[2]のEpipolar Geometry and the Fundamental Matrixの章を参照のこと
18.
結局のところ𝐸, 𝐹とは何か • カメラ座標系𝐶1から𝐶2への変換が
𝐱′ = 𝑅𝐱 + 𝐭 で書けるとすると、 𝐶1の原点 𝑂1 は𝐶2上で は 𝐭 で、 𝐶1の画像平面上の点 𝐱 𝟏 は𝐶2上では 𝑅𝐱 𝟏 + 𝐭 で表される。 注意:画像平面上の点は正規化画像座標系で考える • 𝐶2において 𝑅𝐱 𝟏 + 𝐭 は 𝜆𝐱 𝟐 と 𝐭 を結んだ線分上にある。すなわち 𝑅𝐱 𝟏 + 𝐭 = 𝑠𝜆𝐱 𝟐 + (1 − 𝑠)𝐭 ⇔ 𝑅𝐱 𝟏 = 𝑠𝜆𝐱 𝟐 − 𝑠𝐭 これは 𝑅𝐱 𝟏, 𝐭, 𝐱 𝟐 が同一平面上にあることを意味する 𝐱 𝟐は 𝐱 𝟏に対応する𝐶2の画像平面上の点 • 𝐭 × = 0 −𝑡 𝑧 𝑡 𝑦 𝑡 𝑧 0 𝑡 𝑥 −𝑡 𝑦 −𝑡 𝑥 0 とすると 𝐭 × 𝐯 は任意のベクトル 𝐯 と 𝐭 の外積 • したがって𝐱 𝟐 ⊤ 𝐭 × 𝑅𝐱 𝟏 = 𝟎. (𝐱 𝟐 と 𝐭 × 𝑅𝐱 𝟏 は直交するため) • 𝐸 = 𝐭 × 𝑅 である。このため𝐸は(スケールを除いて5自由度) • Fはこれに正規化画像座標系と画像座標系の間の変換(つまり𝐾)を加えたもの
19.
3次元点の復元 • カメラ間の姿勢の変化と特徴点の対応が求まれば、三角測量に より3次元点の位置を復元することができる • 以下の式を解けば良い 𝑃1
−𝐱 𝟏 0 𝑃2 0 −𝐱 𝟐 𝑋 𝜆1 𝜆2 = 𝟎 ※ 𝑃𝑖 は射影行列, 𝐱 𝒊 はそれぞれのカメラの画像座標形状の点
20.
射影行列について • カメラ内部行列が既知の場合 𝐸
が推定できるので、これを分解 して 𝑅, 𝐭 を求めればそれぞれのカメラの射影行列が定まる • カメラ内部行列が未知の場合は、6点法によって焦点距離 𝑓 と 基礎行列 𝐹 を推定し、バンドル調整によって正確な値を求める バンドル調整:再投影誤差を最小化することで各パラメタを修正する こと • また複数のカメラのうち1つのカメラ内部行列が既知の場合は、 それと 𝐹 を用いて他のカメラの射影行列を計算できる • この辺のアルゴリズムにはいろいろあるらしい • 参考文献[4]あたりに載ってる予感
21.
まとめ • SfM の流れ 対応点を求める
基礎行列𝐹を求める カメラの移動を推定 三角測量で空間復元 • 特徴点抽出 • 8点アルゴリズムな どを使う • アウトライヤの除去 • 基本行列Eを分解 • 内部行列が未知の場 合はそれも頑張って 推定する(𝐹のみから は不可能) • 最終的に射影行列を 求める • 連立方程式を解く • 推定された空間点を 再度射影し、再投影 誤差を最小化するこ とでパラメタを最適 化(バンドル調整)
22.
感想 • SfM の大まかな流れは共通だが、要素アルゴリズムに幅があり、 全体像を把握するのに苦労した(というかまだ出来ていない) •
ベストプラクティスを紹介できればよかったのですが… • 座標系が多すぎて混乱する • 特に画像座標系と正規化画像座標系 • 近いうちに自前で実装してみたい
23.
参考文献 • コンピュータビジョン: 広がる要素技術と応用[1] •
Multiple View Geometry in Computer Vision Second Edition[2] • http://www.robots.ox.ac.uk/~vgg/hzbook/ • 【コンピュータビジョン】ネコと学ぶエピポーラ幾何[3] • https://qiita.com/ykoga/items/14300e8cdf5aa7bd8d31 • Structure from Motion & Camera Self-Calibration[4] • https://www.researchgate.net/publication/272819947_Structure_from_Motion_Ca mera_Self-Calibration
Download