ステレオビジョン (Stereo Vision) : 平行ステレオでのステレオマッチング

1. 概要

(パッシブな) ステレオビジョン(Stereo Vision) とは,隣り合って平行配置した2台のカメラで同一シーンを撮影し,画像間マッチングおよびステレオ幾何により3次元復元を行うことを指す.2画像間での3D空間上における同一点ペアの対応づけを,画像全体で最適化 (ステレオマッチング)を行なったのち,その対応づけ結果である視差(Disparity)をもとに,三角測量によるカメラ間の幾何関係を用いて各点の3D座標を復元を行う.投影光の情報も活用する「アクティブステレオビジョン」とは違い,(パッシブ) ステレオビジョンでは,シーンから受動的に受け取った画像情報しか用いない.

この記事では,伝統的な2台のカメラを平行配置する設定で行う「平行ステレオ」を用いた,2枚のステレオ画像ペアから3次元点座標を復元する深度推定の処理手順を紹介する.伝統的な解放にのみ焦点を当てて読みやすくする意味で,この記事では「Semi-global matching [Hirschmuller, 2008]」(2.3節) によるステレオマッチングの紹介に焦点を絞ることにした.よって,他の「Graph Cutを用いたGlobal手法」や,「Filteringを用いたLocalパッチ手法」,ま,その他の「DeepLearning以前の代表的ステレオマッチング手法」については,この記事では述べない.

1.1 記事の構成

以降は,2節において,以下の3パートに区切って,平行ステレオシステムを用いた2台のカメラによるステレオマッチングによる深度推定の概要を紹介する:

  • 2.1節:2画像間の対応点ペアが求まったのちの3次元点への投影(ステレオ幾何)
  • 2.2節 :ステレオマッチングによる深度推定の解き方の一般形
  • 2.3節 :Semi-Global Matching法を用いたステレオマッチング.

2. 平行ステレオ

「平行ステレオ」は『2カメラに同じ縦横の画素数のものを用いて平行に同じ高さで少しだけ左右に離して固定配置し,エピポーラ線のy座標(高さ)を2カメラ間で一致させておく』カメラ配置で行う.ステレオカメラでは2つのカメラの撮像平面が,3次元空間上で同一平面上に(すわなち平行に)配置されていることを仮定する.

ステレオビジョンでは,3次元空間上で2カメラの光学中心間を結んだ直線を基線(baseline)と呼ぶ,各種のステレオカメラでは10cm~30cm程度の基線長で2カメラ間を配置することが多い.

ステレオマッチングの結果として各座標の視差が推定されたのちは,ステレオカメラ特有の画像座標と3次元座標の変換式を用いて(2.1節),求まった視差とカメラの内部パラメータを元に,各対応点ペアをすぐに3次元点に投影することができる.

2.1 対応した座標ペアの3次元座標への変換

この節では,SGMなどのステレオマッチング処理の結果,2カメラ間での対応点ペアが推定された後に,それらの画像上の点がどのようにして3次元座標に変換できるかについて述べる.

まず,ステレオマッチングの結果,左カメラ画像上の点$\mathit{\bm{p_L}} = (u_L, v_L)$が,右カメラ画像上の$\mathit{\bm{p_R}} = (u_R, v_R)$と対応づいており,その2点が共通して指し示す3次元点座標が$\mathit{\bm{P}} = (X, Y, Z)$であるとする.ここで,$u_R < u_L$および$v_L = v_R$を満たす.

これらの3点と2カメラの画像平面の3次元空間上における位置関係を,2点$\mathit{\bm{p_L}}$,$\mathit{\bm{p_R}}$を通る水平断面上でみると,以下の図1のようになる(※ステレオ設定の場合,この断面はエピポーラ平面に相当する):

平行 stereo の3点間関係
図1 平行ステレオの三角測量を行うための3点関係.

この空間関係を元に考えると,マッチング結果の視差$d = p_L – p_R$,焦点距離$f$および基線長$b$を用いて(※これらの$f$と$b$はステレオカメラキャリブレーションであらかじめ取得済み),$\mathit{\bm{P}}$の座標は以下の関係式により求まる:

\begin{equation}X = \frac{b \cdot u_L}{d}, Y = \frac{b \cdot v_L}{d}, Z = \frac{b \cdot f}{\sigma d}\end{equation}

これにより,ステレオマッチング処理で各座標の視差さえ推定し終われば,実質3次元座標まで推定できたも同然であることがわかったと思う.

2.2 一般的な Stereo デプス推定

まずステレオ全般の一般的な定式化を行う.画素$p$における視差のラベル$l_p \in d_{max}$($d_{max}$は最大視差)を,画像全体の最適化により推定するために,以下のような「(画素ごとの)データ項」と「(隣接画素間の)平滑化項」の和を,目的関数$E$として用意すする:

\begin{equation}E = \sum_{p} E_{data}(l_p; W) + \sum_{p}\sum_{q \in N_{p}} E_{smooth}(l_p,l_q)\end{equation}

この$E$は各画素をノードとし,隣接画素間をエッジで結んだグラフの最適化エネルギーに相当する.右辺第一項$E_{data}(l_p; W)$は画素ごとのコスト関数を示し,左右2パッチ間で類似しているほどコストの値が低い関数を用意する.右辺第2項$E_{smooth}(l_p,l_q)$は,$p$と4(or 8)近傍画素$q \in N_{p}$の間での平滑化制約である.グラフ全体をこの$E$を用いてExactな全体最適化を行ってしまうと,多めの計算時間がかかってしまうので,SGMは高速化を目指して別の方針を取る.

ステレオカメラによる3D点推定の,一般的な処理手順は以下の通りとなる:

  1. [Cost 計算]: 各y座標において,左右のパッチ領域を用いてマッチングコスト(ある視差の値を仮定した時のパッチ同士の類似度)を,右画像の視差1から視差$d_{max}$の各画素において計算する.代表的なマッチングコストには「Census」がよく用いられる.これにより,各候補の視差において計算したマッチングコストを格納したコストボリューム(Cost Volume)と呼ばれる$W \times H \times (d_{max} +1)$次元の3階のテンソルが手に入る.(3Dコストボリュームは,Disparity Space Image (DSI)と呼ばれることも多い)
  2. [Cost Aggregation(ステレオマッチング処理)]:手順1で算出したコストボリュームを元に画像全体のエネルギー関数を用いて,ステレオマッチング処理を行うことにより,全体的最適化された画素ごとの視差を推定する.
  3. [三次元測量(triangulation)による3D投影]:左画像の各画素$\bm{p}_{L}$において,推定したその点の視差と焦点距離$f$を用いて,3次元座標点$(X,Y,Z)$に変換する.

以上が古典的な平行ステレオの処理手順である.

平行ステレオの利点

ここで平行ステレオ設定の主な利点をいくつか述べておく:

  • Rectificationによる画像変換を行わずに(撮影した画像を変形させないまま)直接元の撮影された2枚の画像を用いてステレオマッチングで3D化できる.
  • 平行カメラ配置により,三角化(Triangulation)も行いやすくカメラ配置幾何形状が単純化されており,視差(disparity)と基線長(baseline)の比例関係式のみで3次元点が簡潔に求められるのも嬉しい.

ステレオカメラキャリブレーション

エピポーラ幾何でチェッカーボードを用いた一台のカメラに対して行うカメラキャリブレーションとは違い,2台のカメラ間の相対的位置姿勢の対応を求めるステレオカメラキャリブレーションが,(パッシブでもアクティブでも)ステレオビジョンにおいては必要となる.従って,1~3の計算を行う前に,ステレオカメラペアに対してステレオキャリブレーションを行って,必要な平行ステレオ計算用のパラメータを事前に求めておく(この記事ではステレオキャリブレーションの手順については割愛した).

2.3 SGM (Semi-global matching) の処理手順と利点

この節ではSemi-global matching [Hirschmuller et al., 2008]の概要だけを紹介する(詳細なアルゴリズムまでは解説しない).

SGMでは注目点において,45度ずつに分けた8方向「パス」の直線上に存在する点からだけコスト値を集約する「半グローバル最適化」手法である.前述の「一般系 (2.2節)」のような全画素分のエネルギーを計算することは行わない.

各1方向パスの直線上において,平滑化項もペナルティとして加えながら動的計画法により視差$d$の最適パスを求める.8方向の各パスは動的計画法によって,(周辺での推定結果を頼りに) 視差を一画素ずつ推定して確定させていくので,グローバル最適化により全画素のコスト値を計算することはせずに,周辺8方向パス上のみからの必要最低限のコスト集約なので低計算コストで済む.

SGMはそのような半グローバル (Semi-global)な最適化で済ませていて計算効率優先であるが,その割にはグローバル最適化と同等もしくは少し劣る程度の精度で視差マップを取得できる利点がある.加えて,アルゴリズムの単純さから実装も容易であることも手伝って,産業界でもSGMが広く用いられるようになった (※ ただし,2019年現在では,Deep Neural Networks を用いた学習ベースのステレオ手法も,ロボット向けなどで積極的な応用が始まりつつある).

本記事ではSemi-Globalな手法であるSGMについてのみに注目して紹介したが,古典的なステレオマッチング手法には,他にも以下のような,(1) Localのコストのみを用いたフィルタリングベースの手法や,(2) 速度重視のSGMと違って,きちんとグラフ全体でGlobal 最適化する手法も存在する (詳しくは [Pears et al., 2012] などを参照):

  1. Local 手法: エッジ-awareな局所フィルタにより,Local窓内のみでコストを集めてフィルタリングする推定手法 (例:[Cost Volume Filtering, CVPR2012] など).
  2. Global 手法:Belief Propagationなどで全画素のコストを全体最適化 (例;[PatchMatch BP, IJCV2013] など).

3. まとめ

この記事では,2台のカメラを平行に配置するステレオカメラ画像対から3D深度復元を行うための「カメラ間の視差推定」について大まかに示した.

まず一般形を説明したのち,代表的な手法である Semi-global matchingの概要のみを紹介した.

References

  • [Kletter, 2014] R. Kletter. Concise Computer Vision: An Introduction into Theory and Algorithms. 1st edition, Springer, 2014.
  • [Pears et al., 2012] N. Pears, Y. Liu, and P. Bunting. 3D imaging, analysis and applications. Springer, 2012.
  • [Hirschmuller, 2008] H. Hirschmuller. Stereo processing by semiglobal matching and mutual information. IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI), 30(2):328–341, feb 2008.
  • デジタル画像処理[改訂新版], 画像情報教育振興協会, 2015.

外部リンク

関連記事