平行等位ステレオカメラによる前方物体検出

2台のカメラから同時に撮影した映像中を、2台のカメラ間で成り立つ幾何学(エピポーラ幾何)を用いて3次元形状を復元することを、コンピュータビジョンでは俗に「ステレオビジョン」と呼びます。今回はステレオビジョンの中で最も計算が行いやすい構成である、カメラ2台を横並びに平行で同じ高さの位置に配置する「平行等位ステレオ」のカメラを用いた3次元形状復元の紹介をします。

スバル「Eyesight」のステレオカメラ(出所:富士重工業Webサイト)

Eyesightによる物体認識(車・人物)(出所:富士重工業Webサイト)

平行等位ステレオカメラは上図のスバルのEyesight2システムのように、2台のカメラを平行で正面向けに等しい高さ(等位)で配置するシステムです。これは、2台のカメラ間の映像が3次元空間では平行配置されているという、ステレオビジョンの中でも特に問題設定が容易な構成です(3次元座標の計算手順が単純の意味)。

前方カメラからのDepth Map動画

ステレオカメラで自動車前方を撮影すると、この動画のように各カメラごとの前方の3次元形状(Depth Map)が毎フレームごとに得られます。この形状のうち3次元的な曲面の傾きが同じ値である領域として道路平面だけを検出することができます。あとは、この道路平面部分を元の3次元形状から取り除けば、道路上に存在している車や人が残って検出できるわけです。

ステレオカメラの仕組みの理解には、カメラの「透視投影モデル」を知っておく必要があります。まずはその説明からはじめましょう。

透視投影モデル

「透視投影モデル」とは、ある1つの3次元点から来た光(色)がカメラ中心(受光素子など実際の画像データに変換される点)へ直線的に到達し、その直線が2次元のカメラ撮影平面と交わる頂点として2次元画像上の対応する点に投影されているとみなす、ピンホールカメラの撮影をあらわしたモデルです。

図:透視投影モデル

この透視投影モデルにより空間中の3次元点Xと画像上の2次元点xの間の変換を、行列Pをかけるだけという線形の行列計算の問題でとらえることが可能になります(図中下側参照)。ここでは触れませんが、これによりレンズの歪みもモデリングすることが可能で、商用のカメラで出荷前に行われるようなキャリブレーション(レンズ歪み補正)もこのモデルにレンズ歪みの行列加えることで可能になります。

それでは、1台のカメラにおける画像中の2次元座標と、空間中の3次元座標の対応がわかったところで、これが2台の平行等位ステレオカメラだとどのような関係になるかを考えていくことにします。

平行等位ステレオの処理

平行等位ステレオの処理は、同一の三次元座標を指し示している2点のペアを左カメラ画像と右カメラ画像から見つけ出し、そのペアのx座標のずれを求めると3次元の座標が計算できる、というのが基本原理です。

図:平行等位ステレオの原理

上記の図はその原理を説明したものです。2つのカメラを真上から見たと考えて下さい。対応する2点が定まると、それら2点のx座標の差である「視差」D(disparity)の値が求まります。平行等位ステレオでは、カメラ間の光学中心の距離b(基線長: base line length)と焦点距離f(focal length)の値があらかじめ決めているので、図中の計算式を用いてD,b,fの値から3次元点の深さZを計算できます。x,yの三次元座標は、ステレオカメラでなくとも、左か右のどちらかの画像上の座標から、先ほど説明した透視投影モデルにより焦点距離fの値を用いて計算できます。このように平行等位ステレオでは「視差が求まれば3次元座標が確定する」という仕組みになっています。

ブロックマッチングによるステレオ対応点ペアの探索

それでは視差を求めるのに必要な対応点ペアを求める探索方法「ブロックマッチング」の手順を説明しましょう。ある左画像の点に対して、右画像中で対応点になり得る座標は、平行等位な配置がされているので画像のy座標が同じ点に限ります。よって、探索はy方向にのみ行います。

y軸方向の探索を行う際、左画像の基準点と探索する右画像の各候補点において、5×5画素のような周辺領域(ブロック)内での画素の値がどの程度似ているかを計算する「評価関数」を計算していきます(評価関数には、5×5画素の各値をブロック内で合計を取ったものの自乗誤差であるSSD(sum of squared difference)などが用いられます)。

図:対応点ペアの探索(ブロックマッチング)

この評価関数(左画像のブロックの画素値と右ブロックの画素値の誤差値)が最も小さい点での視差が求まれば探索終了です。この点ペアは探索した範囲で一番見え方が似ている点であるので、同じ3次元上の点が投影されている点同士であるとみなすことができます。

後はこの対応付けが済んだ各座標ペアは、図に示した関係式を用いて視差により奥行き方向のデプスを算出することですべて3次元座標Pに変換でき、1フレームにおけるステレオカメラによる3次元復元の処理は完了です。

ステレオカメラによる3次元復元が終わればあとは簡単です。復元されている3次元データは、道路上ではすべて同じ平面に存在しているので、その同一平面である道路部分を計算で算出すれば、道路の上に移動しているのが車や人など「道路上で動くもの」として検出できるわけです。