ステレオカメラを使って前方車両を検知する自動運転車

世の中には様々な測距可能なセンサが出てきています。今回は画像と同時に3D-Lidarの様な3次元点群データの取得可能なステレオカメラについて、基本技術と応用例について紹介します。

ところで、読者の皆様がステレオカメラの記事を検索する理由は何でしょうか?自社の製品や工場、工事現場などで自動化に必要な機能の実現や効率改善、安全性向上のために、より良い測距センサを探していることが多いのではないでしょうか。そのような期待を持って記事を読み、検討した結果、技術としては面白いけれど、結局実用化できないというケースが多く聞かれます。そこで本記事では、実用可能なITDLab製のステレオカメラについて取り上げ、実用化に必要な機能についてもご紹介します。

ステレオカメラとは?

ステレオカメラとはその名の通り2つのカメラで構成されている、距離測定のできるセンサ、即ち測距センサの一つです。

既に車載分野では自動車の運転支援システムに使われていることからも、移動体での衝突防止アシストや障害物検知はイメージをしやすいと思います。最近ではセンサの発達による距離精度の向上により、ピッキングロボットなど他の様々な分野への活用についても注目を集めています。どちらのケースも人間が持つ素早く判断することができる、優れた空間把握能力を、それぞれのシステムで実現するための”人間の眼”の替りとして選ばれています。

ではなぜステレオカメラでは、人間が赤ちゃんの頃からある種の訓練を経て身に着けた、優れた空間把握能力を再現することができるのか、次の項で測距原理と共に説明します。

ITDLab社のステレオカメラ

ITDLab社のステレオカメラ

ステレオカメラの測距原理

図1のように、カメラの前に黒点の物体があった場合を例に測距原理を説明します。

ステレオカメラの測距原理イメージ

図1:ステレオカメラの測距原理イメージ

物体と左右のCMOSセンサを結ぶと、カメラ間距離を底辺とする赤三角形ができあがります。その赤三角形と同じ角度で入射した光の線を考え、左のCMOSセンサへの入射線を右のCMOSセンサ部分に外挿すると撮像面を底面とする緑三角形が出来上がります。この緑三角形の底面は、左右のCMOSセンサからの見え方の差、すなわち”視差”と呼ばれています。ここで赤三角形と緑三角形は相似関係が成り立ちますので、ステレオカメラから物体までの距離Zは、カメラ間距離BとCMOSセンサの焦点距離F及び視差Dから、上記の式で求めることができます。

カメラ間距離Bと焦点距離Fはそれぞれのカメラで固有の値を持ちますので、視差と呼ばれる左右のズレが分かれば、ある箇所までの距離Zが求められるとも言うことができます。同様に、画面内のすべての特徴点に対し距離を算出することで、画面内の奥行情報とCMOSセンサで縦横の画素位置情報(VGAであれば横640×縦480ピクセルで表現)から3次元の位置情報、所謂XYZの位置情報を得られ、人間に近いの空間把握をすることができます。

では、同様にXYZの情報が得られるLiDARやミリ波でも、人間と同様の空間把握が出来るのではないか?と疑問に思いますが、その答えはNoです。3次元の位置情報は分かるのですが、LiDARやミリ波では単なる点群でしかなく、人間の空間把握とは異なります。私たちが通いなれた道を頭の中で想像をしたとき、点群では思い出さないですよね?そうです、人に近い空間把握をするためには画像が必要なのです。ステレオカメラでは、XYZの位置情報を持つ点群と同時に画像を得ることができます。RGB-D(RGB:画像情報+D:深度/距離情報)とも言われる情報を60fpsなどの高速で得ることにより、初めて人間に近い空間把握が実現できます。

 ところで、人間に近い空間把握と述べてしまいましたが、人間の距離間隔というのはどれくらい正確なものでしょうか?何か高い建物、東京タワーやスカイツリーなどが500mほど離れた場所にある情景を思い浮かべてみて下さい。そこまでの距離を皆さんは予測することができますか?私は無理でした。ステレオカメラの実験中にある場所からの東京タワーを見て、精々300m先にあると思っていたところ、1km近く離れていることを知り自分の距離間隔と東京都内での地理間隔の無さに唖然としました。一方でステレオカメラでは1km先であることをしっかりと把握していました。

ステレオカメラで見た東京タワー周辺の景色と距離間隔

ステレオ画像マッチング手法

前項の通り、ステレオカメラは視差Dが分かれば距離が分かるのですが、その視差を正確に得ることがステレオカメラの性能を大きく左右します。視差を求めるマッチング手法は数多くありますが、ここでは代表的な2点についてご紹介します。

・SGM(Semi Global Matching)方式
ステレオカメラは画像パターンがない部分の視差が得られないことが弱点となっていますが、SGM方式はパターンがないところでも視差が得られる高密度視差画像の手法を用いているため、全面で一様にデータが得られるきれいな視差画像が得られます。一方で、補正構成が正しく出来ていなくても良いため、誤った視差が拡散し、信頼性の低い距離分布が得られてしまう傾向があります。

・SAD(Sum of Absolute Difference)方式
SAD方式では視差の得られない部分はデータ無しで割り切り、信頼性の高い視差のみを用います。4×4画素の様な小領域で最適な視差Dを求める方式でです。

ITDLab社では上記のSAD方式を用い、更に独自の画像処理技術を加えたステレオカメラ技術を提供しています。補正校正を工夫し、通常0.2~0.3画素程度のずれが出るところを0.1画素に抑える技術を用いることで、補正校正の精度を上げ、正しい視差の密度が上がり、その結果として十分な密度で精度の高い視差画像を得ることができます。

ステレオ画像マッチング方式の違いイメージ

図2:マッチング方式の違い

図2の右写真からも人や木、タイルが張られている様子など、エッジの視差を鮮明に得ることができることが分かると思います。ここでいう”エッジ”とは輝度差がある場所、即ち明暗差がある場所を指しますので、物体の外周のみならず、洋服のシワや道路や盛り土、コンクリート面ンなどの凹凸などでも視差を得ることができます。一方で、表面がツルツルしていて輝度差が得られないような真っ白な壁などでは、SGM、SADどちらの方式でも視差を得ることはできません。その場合は、赤外線や可視光などでパターン照射などでの対策などを施す必要がありますが、人間でも距離間隔が分からなくなってしまう白壁だらけの様な場所は多くなく、人々が暮らす多くのシーンでは視差が得られる環境にあります。

ステレオカメラにご興味がある方は、どこに何があるか?を正確な位置情報を把握したいという期待があるかと思います。その場合、SGM方式とSAD方式のどちらが適しているでしょうか?正確な位置を知るということに関しては、SADの方が優れていると私たちは考えています。

ステレオカメラの左右から得られる富士山の写真
図3:左右のカメラから得られる写真

図3をご覧下さい。ステレオカメラでは2枚の少しズレた写真が得られます。富士山が映っていますが、左右の富士山で一致する場所を黒点、赤点で示しています。富士山の頂の左上部分を示している黒点については誰が見ても同一の個所と判断ができると思います。一方で中腹の赤点については、一致している個所かどうかは人間の眼では判断が付きません。ステレオカメラでは画像上のズレ量から視差及び距離を算出するため、実はエッジ部分の距離が正確に得られ、富士山の中腹部分の様に輝度差がないエッジ以外の個所では、正確に距離が出しにくいという特徴があります。これらの理由から、物体の正確な位置情報を把握し、安全に避けるような“障害物センサ”や正確なピッキングをするための”ロボットの眼”として、搬送車やピッキングロボット用センサなどで検討が進んでいます。
また、精度の高い距離データ(点群データ)と画像を同時、同座標に得ることができるため、LiDAR+単眼カメラの置き換え用途にも期待されています。

ステレオカメラの実用例

実際にステレオカメラでの実画像がどのように使用できるかデモを実施してみました。
図4では平面にスパナを置いて撮影しましたが、スパナの厚み分平面との視差が発生することで、物体検出をすることができます。この時、作業台が同系色のステンレスであったとしても検知するのは視差であるため、問題なく検出することは可能です。

図5の障害物検知例では、3.5m先の小さな箱(15cm×20cm)の検知をしています。色付きの画像は距離データに色を付けビューアーとして表示した”視差画像”と呼ばれるものです。実用例の画像だけでは周りに同じ様な色がある中、何故箱を検出できるのか疑問が湧いてきます。

スパナの原画像と視差画像(距離が取れているドットに色付け)

図4:スパナの原画像と視差画像(距離が取れているドットに色付け)

ステレオカメラでみた小さい物体の障害物検知例と検知エリアのイメージ

図5:障害物検知例

そこで図6のように箱近辺を拡大して見てみると、周りに比べ箱を示す赤枠内は若干色が違うことが分かります。色が違いは距離の違いを示しており、赤破線部のそれぞれの地点での距離イメージを表示しています。破線部の下から見ていくと、3.00mから始まり、画像の上に行くに従って距離が遠くなっていくのですが、あるところから3.50mの距離が続くようになり、”3.50mの距離の塊がある”と判断することが出来ます。床の距離も取れていますが、少し画面の上に行くと距離が増えていくため、同じ距離の塊としては見えません。今回のケース(30万画素、90°画角のステレオカメラを使用)では、箱部分に約3.5mの距離データが100ドット以上あり、容易に検出ができました。

図6:図5の拡大画像

また、床面に青色のノイズが見られますが、今回は5m以上のデータを青色で表示しているため、同じ距離の塊に見えてしまいます。しかし、実際はノイズ部分では5mや7m、10mなど隣り合ったドットでもバラバラの距離であるため、検出に対して影響はなく、更に応用例で用いた検知ソリューションではカメラの設置高さや角度を設定し、床面以上の高さの物体をより検出しやすくしています。

ITDLabでは今回使用した30万画素の他に、高解像度の100万画素ステレオカメラもラインナップとしてあります。カメラの画素数を上げ、画角を50°、30°と絞ることにより、同じ対象物でもより多くの距離データを得ることが可能となるため、より小さな物、遠くの物も検出が可能となります。ユーザー様のターゲットサイズやエリアに応じて、ハードウェアとソフトウェアをすぐに使える状態で納入させていただく、物体検知ソリューションパッケージをご用意しています。

課題とオートキャリブレーション

ここまでステレオカメラの原理から、実用例などを紹介してきました。読者の皆さんもステレオカメラで解決が出来そうな課題がいくつか浮かんでいるのではないでしょうか?ここで、ステレオカメラを実用化するために最も重要な課題をお伝えします。ステレオカメラは上述の通り、非常に優れたセンサなのですが、実用化が難しいとも思われてきました。その理由は初期設定の難しさや経時変化によるメンテナンスの必要性でした。ステレオカメラは2つの平行に保たれたカメラにより撮像をし、2枚間のズレ量から距離を算出するため、2つのカメラの位置関係が非常に重要です。一見、設計通りに作られていても、初期設定としてカメラ間の正確な位置関係を知るために、特殊なキャリブレーションボードを準備して調整が必要なケースもあります。また、夏の暑い日差しでカメラ基盤が極微小な変形をしてしまう様な経時変化によっても、カメラ間の位置関係が変わってしまうため、キャリブレーション(調整)の作業がユーザー側で必要となります。折角、ステレオカメラを用いたシステムを開発し、自動化や効率化を実現しても、ステレオカメラの初期設定やメンテナンスが必要となると、そのための施設や装置などを準備しなければならず、実用化は難しくなります。

ITDLab社のステレオカメラでは、独自開発をしたリアルタイム自動調整機能(オートキャリブレーション)を搭載しています。図7の写真のように特定パターンは必要とせず、日常にある場面でキャリブレーションが実行されます。左右のカメラの位置関係がズレた場合、図7②の様に視差が出なくなり距離が正しく出ない状況となります。その状態を検知すると、自動調整機能(オートキャリブレーション)により僅か6~7秒程度で正しい状態へ復帰します。この機能が搭載されているため、ITDLabのステレオカメラ技術はあらゆる環境やアプリケーションで実用化可能なものと考えています。

ITD Labのオートキャリブレーション時の画像と推移

図7:オートキャリブレーション時の画像と推移

 

今回はステレオカメラの基本技術と応用例、実用化に必須機能であるITDLab社の自動調整機能を紹介しました。関連資料を提供しておりますので、以下よりダウンロード下さい。また、その他ご不明点やご質問につきましても、以下よりお問い合わせ下さい。