360 度カメラを用いた SfM の精度に関する検討
西島 啓斗†

蚊野 浩†

京都産業大学大学院 先端情報学研究科†

1. はじめに
Structure from Motion（SfM）は，複数の画像からシーンの 3 次元構造を復元する技術である．通常のカメラで広い空間を SfM する場合，大量の画像を撮影する必要がある．これは通常のカメラの視野が狭く，一度に広い範囲を写すことができないことが原因の一つである．
一方，360 度全周囲を撮影できる 360 度カメラが手軽に入手できるようになっている．本研究は，通常のカメラによる SfM と比較して，360 度画像による SfM の復元精度がどの程度向上するかをシミュレーションで明らかにする．

2. Structure from Motion
2 枚の画像を撮影したとき，対応点の画像座標の間に，式(1)のエピポーラ拘束条件が成り立つ．
𝑚" !" 𝐹𝑚"# = 0…(1)ここで，𝑚"#, 𝑚" ! は対応する画像座標の同次座標表現である．行列 F は，2 点の間の関係を表現する3×3 の行列であり，基礎行列と呼ばれる．基礎行列は，画像を撮影したカメラの内部パラメータと，カメラ間の移動情報である外部パラメータによって決まる．基礎行列と内部パラメータから，外部パラメータのみでエピポーラ拘束条件を表現する行列 E を得る．これを基本行列と呼び，式(1)と類似の関係が成り立つ．基本行列 E
によるエピポーラ拘束条件は，焦点距離が 1 で画像の原点が画像中心と一致する，正規化されたピンホールカメラで成立する条件である[1]．
通常のカメラによる撮影画像から対応点の組を複数抽出し，8 点アルゴリズムなどを用いて，基礎行列を求めることができる．基礎行列から基本行列を求め，基本行列から 2 つの画像間でのカメラの移動量を表す外部パラメータを求めることができる．外部パラメータは並進量と回転量からなる．これらが分かれば，対応点の 3 次元位置を計算することができる．SfM は次のような流れで，連続的に上記の計算を行う．
A Study on the accuracy of SfM using a 360-degree camera†Hiroto Nishijima, Hiroshi Kano, Division of Frontier
Informatics, Kyoto Sangyo University Graduate School

1. 2 枚の画像から多数の対応点を抽出する
2. 対応点の集合から F 行列を推定する
3. F 行列から E 行列を求め，E 行列を回転行列 R と並進ベクトル t に分解する
4. 対応点の 3 次元位置を計算する
5. 復元誤差を最小化するバンドル調整を行う

3. 360 度カメラ
全天 360 度を手軽に撮影できるカメラとして
RICHO THETA などがある．360 度カメラは，360度の風景を正距円筒形式で保存する．図 1 に正距円筒画像の例を示す．本論文では，360 度カメラを単位球面でモデル化し，半径 1 の単位球面上に像が投影されると考える．

図 1 正距円筒画像の例

4. 提案手法
360 度画像を単位球面に投影すると，元の正距円筒画像の画像座標は，単位球面上の 3 次元座標に変換される．異なる位置で撮影した 2 つの 360度画像に関して，単位球面に投影した 3 次元座標の間で式(2)のエピポーラ拘束条件が成り立つことが知られている[2]．
𝑒!" 𝐸𝑒# = 0…(2)ここで，𝑒# , 𝑒! は単位球面上の 3 次元座標で，シーン中の同じ位置を観察する対応点である．単位球面は正規化された 360 度カメラであり，エピポーラ拘束条件の行列は基本行列 E である．
8 点アルゴリズムを使って，E 行列の初期値を推定する．正しい E 行列は，第 1 特異値と第 2 特異値が等しく，第 3 特異値が 0 であることが知られているので，E 行列の初期値をそのように調整し，E 行列の推定値とする．そして E 行列を回転行列 R と並進ベクトル t に分解する．並進ベクト
ル t のスケールは決定することができないので，並進ベクトルは単位行列として求める．

5. 実験!"
1.20E-03
1.20×10

通常のカメラで撮影した画像と 360 度カメラで撮影した画像の観察点座標を，次のようにシミュレーションで作成した．まず，原点から 2000〜5000 の距離に，10000 個の 3 次元点をランダムに生成する．通常カメラは，画像面が 1024 画素×1024 画素の正方形で画角を 90 度に設定した．
このように設定すると，すべての 3 次元点の中で，およそ 1500 点が投影される．投影される画像座標は整数化せず，浮動小数点精度で求めた．単位球面への投影は，3 次元点の長さを 1 とすることで行った．360 度カメラにおける観察点の数が，通常カメラでの観察点の数と等しくなるように，投影されたすべての観察点のうち，およそ 1500点をランダムに選んで残した．
また比較のために，すべての点が投影された単位球面画像から，通常画像に投影された 3 次元点を写した観察点のみを残した画像を作成した．
この単位球面画像を単位球面 1 と呼ぶ．先に説明した，全方向の点を投影した単位球面画像を単位球面 2 と呼ぶ．
3 つの画像それぞれで，観察点にノイズを加える．通常画像には，x 軸，y 軸それぞれに標準偏差 1 の正規分布乱数を加えた．これは，ノイズの標準偏差が１画素に相当することを意味する．
画角 90 度で 1024 画素×1024 画素の１画素の大きさを，単位球面上に対応させると，(2π/4)/1024 =0.001533…となる．このことを考慮して，単位球面上で通常画像と同じ効果を持つノイズとして，観察点の接平面を考え，接平面を構成する 2 軸それぞれに標準偏差 0.001533…の正規分布ノイズを加え，再度，単位球面に投影した．
通常画像に対しては，特徴点の座標を正規化した後，MATLAB の自作プログラムを用いてSfM を行った．360 度画像に対する SfM についても，MATLAB の自作プログラムで行った．
カメラを x,y,z 軸それぞれに 100 動かした場合の復元誤差を検証した．回転行列 R は，オイラー角に変換した後，真値との差のノルムを誤差とした．並進ベクトル t は真値との差のノルムを誤差とした．100 回実行したときの平均値を表 1 に，結果をグラフにしたものを図 2 に示す．
表 1 回転量・並進量の推定誤差
移動量!の誤差の平均"の誤差の平均

通常画像

単位球⾯１ 単位球⾯２

通常画像

x=100

3.52×10!"

4.45×10!" 2.85×10!"

1.46×10!# 2.13×10!# 4.27×10!$

y=100

3.43×10!"

4.22×10!" 2.67×10!"

1.49×10!# 1.84×10!# 3.95×10!$

z=100!"

7.21×10!"

6.92×10!"

2.41×10

単位球⾯１ 単位球⾯２

1.61×10!# 1.55×10!# 4.23×10!$オイ!#8.00E-04
ラ 8.00×10$
⾓の!#4.00E-04誤 4.00×10
差の平0.00
均 0.00E+00

x=100(右)通常画像

y=100(上)

単位球⾯１z=100(前)

単位球⾯２!"
4.50E-02
4.50×10並進ベ!"
3.00E-02
ク 3.00×10
トルの!"1.50E-02
誤 1.50×10
差の平0.00
0.00E+00
均x=100(右)通常画像

y=100(上)
単位球⾯１z=100(前)

単位球⾯２

図 2 推定誤差
上：回転量 下：並進量

6. 考察
通常画像を用いた SfM と比較して，単位球面画像を用いた場合精度が向上していることが確認できた．特に，カメラを前方向に動かした
z=100 の場合，通常画像では誤差が増加しているが，単位球面画像では変化が見られない．
単位球面 1 の復元精度と，通常画像の精度に大きな差が出ている．通常画像の周辺部は，中央部に比べて，引き伸ばされ，1 ピクセル幅で観察する角度範囲が狭くなる．この影響で，周辺部は観察点の密度が低くなる．これが原因で，通常画像で SfM を行ったときの精度が低くなっているのではないかと考えられる．

7. むすび本研究では，2 枚の 360 度画像を使った SfM を実装した．結果として，通常画像を用いた SfMと比較した場合，精度の向上が確認できた．今後の取り組みとして，精度が向上する理由を明確にすることや，実際の 360 度画像を用いて，高精度な SfM を行うことがある．
参考文献[1] R.Hartley and A.Zisserman, “ Multiple viewgeometry in computer vision,” 2004.
[2] A. Torii, et.al., “Two- and Three- View Geometryfor Spherical Cameras,” Proceedings of the 6thworkshop on omnidirectional vision, camera networks
and non-classical camera, pp.81-88, 2005.