車載用ステレオカメラとは
1.ステレオカメラとは何か、その原理と特徴
自動車を運転するとき、眼は不可欠である。五感のうち眼以外の機能がなくても眼さえあれば運転できる。ビデオゲームでも画面の中のクルマを運転できる。逆に眼が見えなければ全く運転できない。
これは眼が周囲の様々な物体の位置や動きを瞬時に捉え、クルマがぶつからずに進める道筋を判断するための情報を提供できる唯一のセンサーだからである。
しかも人間は両眼を使って、物体までの距離も測ってしまう。両眼立体視と言われているもので、ぶつからないためには距離の情報も重要で両眼立体視はそのための手段の一つである。
多くの動物たちは2つの眼を持っているが、意外なことに両眼立体視を行なっている動物は少なく、哺乳類では猫科と霊長類だけである。そして、ライオンやトラなど猫科は弱肉強食の世界にあって、その頂点に君臨している(図1)。
このように両眼立体視が優れていることは猫科が実証しているが、人間の場合も、物体の認識時間を調べると片目で見た時と両眼で見た時では、両眼のほうが1.5倍も速いことが示されている。
では、人間はどうやって両眼を使って物体までの距離を測るのだろうか。目の前に人差し指を立ててみよう。そのまま遠くを見ると、指は2本に見える。これは左右の眼で指の見える位置が違うためである。
指を遠ざけると2本に見える指の間隔は狭まり、近付けると広がる。この指の間隔を視差と呼び、この視差の逆数から距離を求めることが出来る。人間はこの視差を目で見えている映像のあらゆる部分で求めて、全体として立体映像を得ている。
カメラの場合も同じ原理で立体画像を得ることができる。2台のカメラを横に並べ画像を撮る。片方のカメラ、例えば右カメラの画像を細かく分割し、その一つ一つの領域に対して、同じパターンの写っている左画像の領域を見付ける。このパターンの左右カメラでの位置の差が視差になる。
この視差を元の画像に沿って順番に並べていけば、立体画像が出来上がる。このようにして得られた立体画像を図2に示す。近いほうから赤、黄、緑、水色、青の順で遠くなっていく。画像全体の大きさは1024×720画素で、パターンの大きさは4×4画素である。
2.ステレオカメラによる立体物の検出
立体画像を見るとわかるように、物体の検出が簡単にできる。同じような色の塊を見付ければよいのである。画像処理的にはグループ化という処理で行う。これは画期的なことで、例えば図3に示した歩行者の写っている画像から歩行者を抽出するには、歩行者はこういう形をしているという知識が必要である。
するとすべての種類の立体物を見付けるためにはすべての立体物の形を知識として持っていなければならない。一方、図4に立体画像から歩行者を抽出した例を示す。このようにステレオカメラでは立体物に関する知識なしであらゆる立体物を簡単に見付けられる。障害物回避にとって圧倒的に有利である。
もちろん距離を測定する手段は他にも色々とあって、車載用ではミリ波レーダーやLiDAR(Laser Imaging Detection and Ranging)がむしろ主流である。この情報とカメラからの情報を使って、立体物を見付け、その距離を計測する。ただしミリ波レーダーやLiDARは画像に比べるとデータの密度が桁違いに低く、これらのみで立体物の形状まで得ることはできない。
図5に15m先で投げ込まれたボールの画像を示す、このボールをステレオカメラで検出した場合を図6に、LiDARで検出した場合を図7に示す。
ステレオカメラはボールの形状までわかるが、LiDARではデータが3点あるのみである。したがって実際には、上で述べた知識による方法で画像から物体を検出し、その距離をミリ波レーダーやLiDARで計測するという方法が取られている。こうなると膨大な知識が必要という欠点は残ったままである。
衝突防止のための立体物検出は、その場所に立体物が存在するというだけの情報では不十分である。その立体物の動きも検出しなければ衝突するかどうかの判断はできない。ステレオカメラは画像に存在するパターンまでの3次元位置を計測する。
画像上でよく現れるパターンは立体物の境界が作るパターンであり、その3次元位置を計測するので、その物体の位置や形状が正確に検出される。そして距離画像は時間的に連続して生成されるので、位置や形状を時間的につなげていくことでその物体の動きがわかる。
3.短時間での処理
いくら正確な測定ができても時間が掛かってしまってはその間に衝突してしまう。人間は0.3秒で衝突の判断を行なう。ステレオカメラでもその程度の時間で動きも含めた情報を出力しなければならない。動きを求めるためには1枚の距離画像では出来ず、5-10枚程度の連続画像が必要である。
すると少なくとも毎秒30フレーム(30fps)の処理速度が必要になる。画素数の少ないカメラであれば、パソコン程度のCPUで処理できるが、数百万画素以上のカメラになると、GPUやFPGAでの処理が必要になる。
とはいえ、最近ではこれらの素子も安価で使いやすくなってきたので、比較的容易に高速処理が可能になった。研究レベルでは数百fpsの処理速度も実現されている。一昔前まではASIC化した専用素子でコストダウンを図っていたが、最近の車載用ステレオカメラはFPGAを用いることが多くなってきている。
FPGAを使う理由はコストが下がってきたこともあるが、ステレオ処理自体がまだ発展途上にあり、システムとして固め切れていない、という理由もある。
4.車載レーダー(ステレオカメラ/ミリ波レーダー/LiDAR)の比較・違い・メリットデメリット
まず大きな違いとしてあげたいことは、ステレオカメラが完全に受動式ということである。ミリ波レーダーやLiDARは電磁波や光を測定器側から発射して物体からの反射波を利用する。自ら行動を起こして距離を測るので能動式と呼ばれる。これらは物体から反射さえしてくれれば距離を測ることが出来る。
したがって真暗で光のない状態でも動作する。一方受動式は真暗闇では動作できないが、光があって物体が見えてさえいれば、どんなに遠くても精度の問題は別にして測距できる。両方式ともにそれぞれ特長を持つが、ステレオカメラは単に照明を点けるだけである程度は能動式になるということを付け加えておきたい。
次にあげたい特徴は、ミリ波レーダーやLiDARが面までの距離を測定するのに対し、ステレオカメラの場合は、物体境界や面に描かれた模様など輝度が変化するパターンまでの距離を測定することである。
これも根本的な違いで、レーザー測距計やミリ波レーダーでは物体の境界を検出できず、ステレオカメラでは模様のない面は測定できない。車載用センサーとしてはあらゆる状況で動作できなくてはいけないので、2つのセンサーを融合して使うことが最適な解である。
ただしこの場合でも、パターン光を投映すれば、何もなかった平面にパターンが映し出されるので、ステレオカメラで測距できるようになる。パターン光の届く近距離では有力な解決策であり、市販されている多くのステレオカメラは投光器付きになっている。
ステレオカメラの大きな問題として言われることに、距離が遠いと測距精度が急激に悪化するということがある。細かい話は省くが、パーセントで表した測距精度が距離に比例するのである。例えば10mで±1%、すなわち±0.1mの測距精度のあるステレオカメラは100m先では10倍の±10%、距離にして±10mで100倍も悪くなってしまう。
そのためステレオカメラは測距精度が悪いので距離精度が必要な衝突防止用には使えない、という言葉を時々耳にする。しかしこれはちょっと違う。遠方で精度が悪いのは確かだが、逆に1mの近さでは測距精度は±1mmにまで上がる。100m先で障害物を見付けて掛けるブレーキの強さは90m先と判断して掛けるブレーキの強さと10%しか変わらない。
そして距離が近付くと測距精度が上がり、最後は1mmの精度でピタリと止めることができる。人間も同じで、100m先にいる人を見た時、その人が100m先なのか90m先なのかは区別できない。しかし、ブレーキを掛け、寸止めとはいかなくてもぶつからずに止まれる。もちろんミリ波レーダーでもLiDARでも止まれるが、ステレオカメラのほうがより精度の高い制御を行える。
5.ITDLab社製ステレオカメラの特徴と精度
最後に弊社のステレオカメラの特長を少し述べさせていただく。図8に外観を示す。弊社のステレオカメラの大きな特長は次の3つである。
- ①高精度な補正校正法を採用し、0.1画素以下の精度を実現している。その結果、精度の高い視差データが高密度に得られている。SGMのような補間するやり方より密度は劣るが、精度の高いデータが得られるので、信頼性の高い障害物検出ができる。
- ②2つ目の特長は、自動調整機能を備えていることである。出荷時に精度の高い補正校正を行なっても、温度や経年変化で0.1画素程度の狂いは生じてしまう。そこでこの劣化を自動的に検知して調整する機能を常に動作させている。ある閾値以上の劣化が検出されると、調整回路が作動して、精度を元に戻す。
- ③そして、認識を含むすべての機能をFPGAで実現していることである。1チップですべての機能を実現するので、この種のセンサーで求められる、「軽くて」「小さくて」「低電力で」「安価」という要求をすべて満たしている。また後処理がいらないので、後段に設置するパソコンやマイコン、GPUなどが不要になる。
以上、弊社のステレオカメラの特長を簡単に述べさせていただいた。仕様など詳しくは弊社ホームページをご覧いただきたい。