高精度なステレオ画像高速処理システムの開発

2B13
高精度なステレオ画像高速処理システムの開発
○澤幡浩章
青木孝之
実吉敬二(東京工業大学)
Development of the High-Accuracy Stereo Vision System
*Hiroaki SAWAHATA, Takayuki AOKI, Keji SANEYOSHI, Tokyo Institute of Technology
Abstract -We made a Real Time Stereo Vision System. This system doesn’t only have an all-in-one translating table for distortion correction and camera calibration but also correct degradation caused by shading,
intensity discrepancy, occlusion and weak pattern. This system achieved 50 fps stereo correlation on the vision which width is 1024 and height is 384.
Key Words: stereo vision, distortion correction, calibration, vision sensing, obstacle recognition
1. はじめに
ステレオ法は複数のカメラで同時撮影し,三角測
量に基づいて撮影物体の距離情報を得るという立
体物認識手法で,広範囲の距離情報を高精度かつ同
時に得られるのが特長である.自動車用のリアルタ
イムステレオカメラは20年近く前から研究が進め
られ,既に商品化もされている.我々は更なる高速
化を狙い,レンズ歪みの補正とカメラ位置の校正を
一体化したパラメータテーブルを用いて高速に行
う手法[1]を開発してきたが,今回はシェーディング
とカメラ間の感度差の補正や,オクルージョンや弱
パターンによるミスマッチングの補正,サブピクセ
ル精度の視差計算を含め1024×384サイズの画像で
50fpsの処理能力を持つステレオ画像処理システム
を開発した.我々のシステムは2つのカメラで同時
撮影を行った後,各画像をパラメータテーブルにし
たがって変換,ステレオマッチングを行い,ミスマ
ッチングの補正と4分の1ピクセル精度の計算を並
行して行った上で最終的な視差を出力する.マッチ
ングの手法はarea-based methodで,評価関数はSAD
(Sum of Absolute Difference)関数,ウィンドウサイ
ズは8×4,探索範囲は120ピクセルである.
2. シェーディングとカメラ間感度差の補正
2.1 シェーディング補正
シェーディングとは光学中心から離れるほど輝
度が減衰してしまう現象で,これは光源から離れ射
影される角度が大きくなるほど,撮像面に当たる単
位面積当たりの光量が減ってしまうためである.
我々はシェーディングの補正を行うために,一定の
強さのレーザー光を画像内の様々な位置に置いて
撮影し,撮影された画像からレーザー光の写ってい
る各画素の輝度を求め,この値からシェーディング
補正の変換テーブルを作成した.レーザー光を動か
すとカメラへの入射角が変わることによる影響が
考えられるが,それは事前の実験により無視できる
ことを確認した.なお,光が散乱光である必要があ
り,またハレーションを防ぐ必要があるのでレーザ
ー光源に乳白色のアクリルキャップを付けて撮影
した.変換テーブルを格納するメモリ容量を削減す
るため,変換係数は 16×16 画素の範囲に付き 1 つ
を作成した.
2.2 カメラ間感度差の補正
2.2.1 カメラの個体差
同一の製品でもカメラチップごとに個体差があ
り,光に対する感度も少しずつ異なっている.これ
もミスマッチングを引き起こす一因となる.
2.2.2 カメラ間感度差の補正手法
ステレオカメラで撮影を行い,シェーディング補
正を行った後に 2 つの画像から目視で対応点を見つ
ける.この対応点の輝度が一致するように感度差の
補正テーブルを作成する.実際のステレオシステム
では LUT(Look Up Table)にシェーディングとカメ
ラ間感度差補正の複合テーブルを格納しておき,ア
ドレスとして変換前の画像の座標と輝度を入力す
ることで変換後の輝度を出力する.
3. ミスマッチングの補正
3.1 オクルージョン補正
物陰などで,一方のカメラからは見えるが他方のカ
メラからは見えない現象をオクルージョンと呼ぶ.こ
れによって基準画像のある点に対応する点が比較画
像には存在しないという状況が引き起こされ,基準画
像の点のうち対応点を持たないものは,他の点の対応
点に 2 重マッチングをしてしまう.そこで,基準画像
の点と比較画像の点の正しく対応したペアを作るこ
とで 2 重マッチングを解決した.すなわち, 2 重マ
ッチングが発見された場合には視差が小さい方を正
しい対応とし,視差が大きい方はミスマッチングとし
て視差を持たない領域とする.ここで視差が小さい方,
つまり距離が遠い方を正しいデータとするのは,ミス
マッチングの起こる確率が視差に対して一様である
のに対し,物体の出現率は距離に対して一様であるこ
とによっている.
3.2 弱パターン除去
パターンの弱い領域ではミスマッチングが起こり
やすくなる.したがって基準画像の隣接画素の輝度差
第24回日本ロボット学会学術講演会(2006年9月14日~16日)
にある閾値を設け,それより弱いパターンしか持たな
い領域はマッチングの信頼性が低く,視差を持たない
領域とする.
4. サブピクセル精度の視差計算
4.1 サブピクセル精度の必要性
通常のステレオマッチングで視差を求めることが
出来るのは整数精度までで,視差の小さな領域では
精度不足である.例えば,視差が 1 の領域と 2 の領
域では距離が倍も違ってしまう.よって,特に遠く
の距離情報をより良い精度で得ようと考えると,サ
ブピクセル精度で視差を求めることは必須である.
5. ステレオ画像高速処理システム
5.1 システム構成
5.1.1 処理の流れ
システム全体の構成を図 2 に示す.FPGA デバイス
は Altera 社 の Cyclone Ⅱ を , カ メ ラ チ ッ プ は
OmniVision 社の OV9121 を採用した.OV9121 は
CMOS の白黒カメラチップで,SXGA(1280×1024)
サイズの画像を最大 15fps の速さで出力できる.今回
のシステムでは、このカメラからのデータ出力がク
リティカルパスになっている.
4.2 線形近似を用いたサブピクセル計算
SAD 関数が最小値付近では線形近似出来ると仮定
し,サブピクセル精度の視差を求めた.SAD の最小
値とその前後の SAD 値のうち大きい方の値を直線で
結び,更にその直線と逆符号の傾きを持ち小さい方
の値を通る直線を引く(図 1).
図 2 ステレオ画像高速処理システム
ステレオカメラで同時撮影された画像はそれぞれ
LUT に通され,そこでシェーディングと感度差の補
正のために輝度変換された後,DPRAM(Dual Port
Random Access Memory)に保存される.DPRAM か
ら読み出された画像は,補正校正部で外部の SRAM
図 1 サブピクセル精度の視差
に収められたパラメータテーブルを参照しながら歪
み 補 正 と カ メ ラ 位 置 校 正 を さ れ , FPGA 内 部 の
図から,確かに整数値で計算された SAD 関数の最小
DPRAM に格納される.その後,画像データは随時ス
値よりも更に小さな値が現れていることが分かる.
テレオマッチング部と弱パターン除去部に読み出さ
この 2 直線の交点がサブピクセル精度の視差となり, れ,それぞれの処理が並行して施される.ステレオ
図 1 の記号を用い,整数の視差を D として式で表す
マッチング部から出力された視差データは,オクル
と以下のようになる.
ージョン処理部とサブピクセル部に入力され,それ
ら 2 つの出力と弱パターン除去部の出力から最終的
s1 − s 2

(
)
D
+
s
>
s
な出力が決定される.
1
2

2(s1 − s 0 )

5.1.2 初期化処理
Dsub = 
s
−
s
リアルタイム処理の際に高速アクセスをするため
2
1
D −
(s1 < s 2 )
画像変換用のパラメータを格納するメモリは RAM

2(s 2 − s 0 )
になっているが,これは電源を落とすとデータが消
今回のシステムではこの式を計算する回路を作成し, えてしまう.そこで,アクセス速度は遅いが電源を
視差を 4 分の 1 ピクセル精度で求めた.回路につい
落としてもデータの保持が可能な Flash Memory を用
ては 5.5 節で述べる.
い,システムが立ち上がった直後には FPGA によっ
て初期化が行われ,Flash Memory から LUT と SRAM
にパラメータが読み出される.
5.2 画像入力部
5.2.1 ステレオカメラ
2 つのカメラに対し FPGA からクロックを出して
同期させ,同時撮影を行う.今回,画像サイズは 1024
×768 とした.また,自律移動ロボットの障害物認識
センサとして用いることを考えると画像の上 4 分の
1 は高さが上すぎるため,下 4 分の 1 は距離が手前す
ぎるために必要ない.よって,今後の画像変換やス
テレオマッチングの処理を行う部分は 1024×384 の
サイズとする.
5.3 補正校正部
5.3.1 外部 SRAM
補正校正パラメータとは,具体的には変換後の画
像の各点に対応する変換前の画像の座標であり,外
部 SRAM にはこのパラメータが変換後画像の座標順
に収められている.変換前の座標は一般に整数値を
取らないためパラメータは整数部分と小数部分に分
けられ,整数部分を x,y,小数部分を a,b とすると
変換前の座標は(x+a,y+b)と表される.この整数
部分はアドレス発生回路で,小数部分は輝度合成回
路でそれぞれ使われる.
5.3.2 アドレス発生回路
アドレス発生回路は SRAM から整数パラメータを
読み出し,DPRAM への読み出しアドレスと作業用バ
ッファへの書き込み/読み出しアドレスを発生させ
る回路である.だが座標そのものをメモリに格納す
ると x,y につきそれぞれ 10bit も必要で,容量があ
まりに大きくなりすぎてしまう.そこで,変換後の
画像の各行の先頭画素についてのみ座標そのものを
格納し,他の画素については前の画素からの x,y の
変化量を格納することとした.x,y の変化量はそれ
ぞれ±1 または 0 であるため,必要なメモリは 2bit
ずつと大幅に削減される. DPRAM から読み出され
た輝度データは,輝度合成回路に入力される前に
FPGA 内の作業用バッファに一時保存される.外部の
DPRAM から同じ画素の輝度を繰り返し読み出す手
間を省き,効率良く処理を行うためである.
5.3.3 輝度合成回路
変換前の画素がまたがる 4 画素の輝度と面積比(図
3)から変換後の画素の輝度を計算するのが輝度合成
回路である.輝度合成回路は SRAM から小数パラメ
ータ a,b を,作業用バッファから変換前画像の 4 つ
の画素の輝度を入力として受け取り,変換後画像の 1
画素の輝度を出力する.変換後の輝度 I は以下の式
で表される.
I = (1 − a )(1 − b )i1 + a (1 − b )i2 + (1 − a )bi3 + abi4
出力された輝度は FPGA 内部の DPRAM に一時保存
され,ステレオマッチングを行うのに必要な 4 行分
のデータが揃った後,随時ステレオマッチング部に
出力される.また,同時に弱パターン除去部にも基
準画像のデータが出力され,並行して処理が行われ
る.
図 3 変換前の画素
5.4 ステレオマッチング部
5.4.1 ローテーションシフトレジスタ
DPRAM から画像データが読み出された後,比較画
像のデータはシフトレジスタでローテーションして
使用される.視差が算出され,基準画像のウィンド
ウが更新されるとき,比較画像のデータの大部分は
再び利用され,更新されるのはやはり 1 ウィンドウ
分のデータだけだからである(図 4).
図 4 ウィンドウの更新
このようにすることでメモリへのアクセス回数を削
減し,システム全体の動作速度を向上させることが
できる.
5.4.2 ウィンドウ内の輝度平均値減算
SAD 関数の計算を行う前に各画素の輝度からウィ
ンドウ内の画素の輝度平均値を減算することで,シ
ェーディングやカメラ感度差の影響をさらに小さく
することが出来る.輝度の絶対値の情報が失われて
しまうが,このシステムではウィンドウサイズが十
分であるためマッチングの結果に大きな支障はない.
平均値の減算をされた後,SAD 関数の計算を行い,
計算された値は最小値決定回路へと出力される.
5.4.3 最小値決定回路
視差を求めるために SAD 関数の最小値を調べる必
要があるが,SAD の値を現在の最小値と比較し,よ
り小さければ最小値を更新するといった処理をまと
めて行うとシステム全体の動作速度を落とすことに
なってしまう.そこで SAD 値と最小値の比較と最小
値の更新を 2 ステップに分けて行うこととした.こ
の場合,最小値の更新が 2 ステップ分遅れてしまい,
SAD 値が比較されるのは現在の最小値ではなく,2
つ前の最小値となる.よって,その SAD 値が新たな
最小値であるか調べるためにはその時点で保持され
ている最小値だけでなく,1 つ前と 2 つ前の SAD 値
との比較をする必要がある.以上より図 5 のような
回路を製作した.
5.6 マッチング後の処理
オクルージョン処理部は探索範囲である 120 ピク
セル分,15 ウィンドウ分の視差が出揃わなければ処
理を行うことが出来ない.よって,並行して処理が
行われるサブピクセル部と弱パターン除去部の計算
は先に終了し,オクルージョン処理部のデータ出力
に合わせて最終的な視差の出力が行われることにな
る.
6. まとめと今後
図 5 SAD 関数最小値決定回路
現在の SAD 値と最小値,2 つ前までの SAD 値との
比較は減算器を用いる.3 つの値からそれぞれ現在の
SAD 値を減算した結果の符合を AND 回路でまとめ,
すべてが+なら現在の SAD 値が最小であることにな
る.AND 回路の出力は現在の SAD 値が保持されて
いるレジスタのイネーブル信号になっており,イネ
ーブル信号が立ち上がれば最小値が現在の SAD 値で
置き換えられる.探索範囲全てについて SAD 計算を
行った後,最小値はオクルージョン処理部とサブピ
クセル部に出力される.
5.5 サブピクセル部
4.で述べたサブピクセルの計算をする回路である.
ステレオマッチング部から視差 D と SAD の最小値
s0,その前後の SAD 値 s1,s2 の入力を受け,サブピ
クセル精度の視差 Dsub を出力する.s1 と s2 の大小関
係で計算式が場合分けされるが,高速化のためにそ
れらの計算は並行して行い,マルチプレクサで最終
的な出力を選択する.回路図は下図 6 の通り.
FPGA デバイスを用いてステレオ画像高速処理シ
ステムの開発を行い,本論文では高速化,高精度化
のための工夫を中心に報告した.このシステムはシ
ェーディングと感度差補正の複合テーブル,レンズ
歪み補正とカメラ位置校正の一体化テーブルを参照
して高速で画像変換を行い,ステレオマッチングと
ミスマッチングの補正を行う.そして,以上の処理
を並列して行うことで,高精度な距離情報を高速で
算出することを可能としている.現時点ではまだ実
機の動作確認は行われていないが,Altera 社の総合開
発環境ソフトウェア QuartusⅡによる FPGA の動作シ
ミュレーションでは 1024×384 の画像サイズで 50fps
を超える速度での動作が可能という結果を得ている.
これは自動車が向きを変え,景色が大きく回転した
場合でも追従できる速度であり,自律移動ロボット
だけでなく車載の衝突防止センサとしても十分な効
果が期待できる.現在はカメラの動作速度によって
処理速度が 15fps まで抑えられてしまっているため,
より高速なカメラの入手が待たれるところである.
今後は状況によって最適なウィンドウサイズを自動
的に選択する機能などを搭載し,距離の測定精度を
より向上させる.
参 考
文
献
[1] 実吉敬二, 片平聡, 菊地正芳:“ステレオ画像の歪み補
正とカメラ校正の一体化及び高速化”, ロボティクス
シンポジア, 7, pp. 137-142, 2002.
[2] K.Saneyoshi, H.Hanawa, K.Kise:“Image Recognition System for Active Drive Assist”, Proc.Int.Symp.
on Advanced Vehicle Control, pp. 280-285, 1992.
[3] K.Saneyoshi: “3-D Image Recognition System by
Means of Stereoscopy Combined with Ordinary Image Processing”, Proc. Intelligent Vehicles, pp. 57-62,
1994.
図 6 サブピクセル部