3D画像の合成アルゴリズムを活用し、ビジョン・センサーの視野を拡大する

概要

産業分野のアプリケーションでは、Time Of Flight(TOF)カメラが広く使用されるようになりました。特に、ロボットでの利用拡大は顕著です。TOFカメラは、深度の算出能力とIR(赤外)イメージングの能力の面で優れています。そのことが理由となって、産業分野での活用が進んでいるのです。そのような長所がある一方で、TOFカメラには、光学システムが本質的に複雑だという短所があります。それが原因で視野が制限され、スタンドアロンの機能に制約が生じるケースも少なくありません。本稿では、クラウド・コンピューティングを利用することなく、ホスト・プロセッサで実行できるように設計された3D画像の合成アルゴリズムを紹介します。このアルゴリズムは、複数のTOFカメラからのIRデータと深度データをリアルタイムかつシームレスに結合します。その上で、スタンドアロンのユニットを使う場合よりも視野が拡大された高品質な単一の3D画像を生成します。つまり、最先端のディープラーニング・ネットワークで活用可能な画像データを生成できます。このことは、モバイル型のロボット・アプリケーションにとって特に有用です。また、3Dの環境における視覚化と相互作用に革新がもたらされます。

はじめに

TOFカメラは、3Dスキャナなどの形で利用される優れた測域センサーです。TOF技術を利用することにより、カメラとイメージ内に含まれる各点の間の距離を測定することができます。この機能は、レーザやLEDから発した光が各点との間で往復するのにかかる時間を測定することにより実現します。特に産業分野では、高精度の測距と3Dの視覚化が不可欠なアプリケーションが少なくありません。例えば、安全を確保するために、270°の視野(FOV:Field of View)で衝突の検出や人間の存在の検出を実施できるようにするといった具合です。産業用のシステムやロボットでは、そのような機能が必要になるケースが多いでしょう。そうしたアプリケーションにとって、TOFカメラは非常に有用なツールとなります。なぜなら、TOFカメラを使用すれば、高い精度で深度の情報を取得できるからです。

アナログ・デバイセズは、TOFカメラとして機能するモジュール製品「ADTF3175」を提供しています。同モジュールを使用すれば、75°のFOV(キャリブレーション済み)が得られます。しかし、現実のアプリケーションでは、それより広いFOVが求められることも多いでしょう。その場合、複数のセンサーを使用してFOVの拡大を図ることになるはずです。ただ、個々のセンサーからのデータを統合し、ビュー全体の包括的な分析を可能にするのは容易ではありません。この問題に対する解決策としては、次のようなものが考えられるでしょう。すなわち、各センサーでFOVの一部を対象としてアルゴリズムを実行し、それらの出力をホストに送信して統合するというものです。しかし、この方法では、ゾーンの重複、デッド・ゾーンの発生、通信に伴う遅延といった問題が生じてしまいます。つまり、視野の問題は、効果的に対処するのが難しい複雑なものだということです。

上記の問題については、もう1つの解決策が考えられます。その方法では、各センサーで取得したすべてのデータをつなぎ合わせて単一の画像を合成します。そして、検出用のアルゴリズムはその画像に対して適用するという方法です。この一連の処理は、センサーとは別のホスト・プロセッサにオフロードすることができます。つまり、センサー・ユニットを演算の負荷から解放することが可能です。その結果、同ユニットによって高度な解析やその他の処理を行う余地が生まれます。ただ、画像の合成を実現する従来のアルゴリズムは本質的に複雑なものでした。そのため、ホスト・プロセッサでその処理を実行する場合、演算能力のかなりの部分を費やさなければならない可能性があります。その対策としては、クラウドにデータを送信して合成を実行する方法が考えられます。しかし、実際にはプライバシーの問題が生じる可能性があることから、多くのアプリケーションではその方法を採用することはできません。

本稿で紹介するのは、上記の問題に対応するためにアナログ・デバイセズが開発したアルゴリズムに基づくソリューションです。その方法では、深度のデータの点群(point cloud)投影を行うことで、複数のセンサーから取得した深度画像とIR画像を合成します。その際には、カメラの外部位置(extrinsic position)を使用して取得後のデータの変換を実行し、2Dの空間に投影し直す処理も実行します。それにより、連続した1つの画像が生成されます。

この方法であれば、演算量を最小限に抑えられます。そのため、エッジでもリアルタイムの処理を実現できます。また、ホスト・プロセッサの演算能力を、他の高度な解析に振り分けることも可能になります。

アルゴリズムによる処理の流れ

上述したように、アナログ・デバイセズは複数のTOFカメラで取得したデータを合成して単一の3D画像を生成するためのアルゴリズムを開発しました。その処理の流れは、以下に示すようなものになります。

【ステップ1】IRデータと深度データの前処理:IRデータと深度データの時間同期をとった上で前処理を実行します。

【ステップ2】深度データを3Dの点群に投影:カメラの固有パラメータを使用して、深度データを3Dの点群に投影します。

【ステップ3】各点の変換とマージ:カメラの外部位置を使用して各点の変換を実行し、重複している領域をマージします。

【ステップ4】点群を2D画像に投影:円筒図法を使用して、点群を2D画像に投影し直します。

図1は、上記の処理の概要を図として示したものです。

図1. 深度の合成を実現するアルゴリズム
図1. 深度の合成を実現するアルゴリズム

アルゴリズム/システムの課題と解決策

ここでは、上述したアルゴリズムと、それが稼働するシステムが抱えていた課題を列挙します。その上で、各課題を解決した方法について説明します。

深度フレームとIRフレームをホストで受信する

ホストとなるマシンは、USBなどの高速通信技術によって複数のTOFセンサーに接続されます。同マシンは、TOFセンサーから送信される深度フレームとIRフレームを収集し、それらをキューに格納します。

深度フレームとIRフレームの同期をとる

上記のとおり、ホストは各センサーから送信される深度フレームとIRフレームを受信します。両フレームはそれぞれ異なる瞬間に取得されたものです。物体の動きに起因する時間的なミスマッチを解消するためには、同一の時間を使用して、すべてのセンサーから取得したフレームの同期をとる必要があります。そのためには、時間同期モジュールを使用します。同モジュールは、キューからのタイムスタンプに基づいて、送信されてきたフレームのマッチング処理を実行します。

点群に投影する

各センサーから取得した深度データの同期をとったら、それらを使用してホスト上で点群を生成します。その後、各点群に対し、実世界におけるそれぞれのカメラの位置(図2)に基づいて変換(移動と回転)を施します。続いて、変換後の点群をマージすることにより、連続した単一の点群(以下、結合点群)を生成します(図3)。この結合点群は、各センサーのFOVを結合した状態になります。つまり、最終的に必要なFOV全体を網羅します。

図2. カメラの外部パラメータ
図2. カメラの外部パラメータ
図3. マージ後の点群
図3. マージ後の点群

3Dから2Dに投影する

FOV全体を網羅する結合点群を生成したら、それを2Dのキャンバスに投影します(図4)。この処理は、結合点群に円筒図法(正面投影としても知られる)のアルゴリズムを適用することで実現します。つまり、このアルゴリズムは結合点群の各点を2Dのプレーンなピクセル上に投影する処理を実行します。それにより、すべてのセンサーからのデータが結合され、FOV全体を網羅する連続した単一のパノラマ画像が得られます。また、その際には2Dの合成画像が2つ生成されます。1つは、合成されたIR画像を2Dのプレーンに投影したものです。もう1つは、合成された深度画像を2Dのプレーンに投影したものです。

図4. 円筒図法のアルゴリズム
図4. 円筒図法のアルゴリズム

投影の質を改善する

3Dの結合点群を2Dの画像に投影しても、依然として質の良い画像は得られません。それらの画像には歪みやノイズが含まれているからです。歪みやノイズは視覚上の質に影響を与え、投影を実行するアルゴリズムにも悪影響を及ぼします。図5に示したのは主要な3つの問題点です。以下では、それぞれの問題を改善する方法について説明します。

図5. 2Dの投影に伴う問題
図5. 2Dの投影に伴う問題

無効な深度領域の投影

ADTF3175の深度データには、0mmという無効な深度の値を持つ点が含まれます。それらの点は、同センサーの検出範囲(8000mm)の外に存在したものです。つまり、深度画像には大きな無効な領域が存在することになります。言い換えれば、点群は不完全なものになるということです。そこで、深度画像に含まれるすべての無効な点に対しては、8000mmという深度の値(カメラによってサポートされる最大深度)を割り当てた上で点群を生成するようにしました。このような処理によって、点群に隙間が生じないようにしたということです。

データがマッピングされていないピクセルにデータを埋め込む

3Dの点群を2Dのプレーンに投影すると、2Dの画像の中に、データがマッピングされず塗りつぶされていない領域が生じます。点群(3D)の多くのピクセルが、同じ2Dのピクセルにマッピングされることから、複数の2Dのピクセルが空白のままになるということです。その結果、図6(左)に示すような間延びしたパターンが生じます。これを改善するために、3×3のフィルタを使用し、データがマッピングされていないピクセルに対してデータを割り当てるようにしました。隣接する8つのピクセルは有効な値を備えているので、それらのIR/深度の平均値を埋め込む処理を施しました。その結果、アーティファクトが除去され、図6(右)に示すような、より質の高い画像が得られるようになりました。

図6. データがマッピングされていないピクセルへのデータの埋め込み
図6. データがマッピングされていないピクセルへのデータの埋め込み

重複する点によって生成されるノイズ

円筒図法のアルゴリズムにより、重複する領域内の点の多くは、2Dの出力上の同じ座標に投影されます。その結果、背景のピクセルが前景のピクセルに重なることになり、ノイズが生じます。これを改善するには、各点の半径の方向の距離を既存の点と比較し、カメラの原点からの距離が既存の点よりも短い場合だけ点を置き換えるようにします。そうすることで、前景の点だけが保持され、投影画像の質が向上します(図7)。

図7. 重複によって生じるノイズの除去
図7. 重複によって生じるノイズの除去

まとめ

従来使用されていたキー・ポイント・マッチングのアルゴリズムでは、最小20°の重複範囲を必要としていました。それに対し、本稿で紹介したアルゴリズムでは、複数のカメラで取得したデータの重複部分が5°未満であっても画像を合成することができます。演算はほとんど必要ないので、エッジ側のシステムに適用すべき理想的な選択肢になり得ます。また、画像には歪みが生じないので、合成後も深度データの質が維持されます。このソリューションは、ADTF3175のモジュール式の実装にも対応しており、所望のFOVを最小限の損失で実現することが可能です。

本稿で紹介したFOVの拡大手法は、水平次元に限られるものではありません。同じ手法を適用してビューを垂直方向に拡大すれば、真の球形ビジョンを取得できます。このソリューションにより、4つのセンサーを使用して275°のFOVを実現するケースを考えます。その場合、アルゴリズムはエッジに実装した6コアのArm® V8上で10fpsのフレーム・レートで動作します。センサーを2つしか使用しない場合には、フレーム・レートを30fpsに高められます。

このソリューションの主要な長所としては、演算量が非常に少ない点が挙げられます。旧来の手法と比較すると、基本的な演算の量を1/3未満に抑えられます(表1)。

表1. 演算の複雑さの比較。従来のアルゴリズムと本稿で紹介したアルゴリズムを比較しています(512×512のQMP入力の場合)。
アルゴリズム 浮動小数点演算の平均的な回数
従来の画像合成 8億5700万回
本稿で紹介したPCL深度合成 2億6000万回(1/3.29に削減)

図8、図9に、このソリューションによって取得した結果を示しました。

図8. 合成後のIRデータ。210°のFOVを実現しています。
図8. 合成後のIRデータ。210°のFOVを実現しています。
図9. 合成後のIR/深度画像。278°のFOVを実現しています。
図9. 合成後のIR/深度画像。278°のFOVを実現しています。

参考資料

Analog Devices 3DToF ADTF31xx(アナログ・デバイセズの3DToFモジュール「ADTF31xx」」GitHub, Inc.

Analog Devices 3DToF Floor Detector(アナログ・デバイセズの3DToF用フロア検出)」GitHub, Inc.

Analog Devices 3DToF Image Stitching(アナログ・デバイセズの3DToF用画像合成)」GitHub, Inc.

Analog Devices 3DToF Safety Bubble Detector(アナログ・デバイセズの3DToF用セーフティ・バブル検出)」GitHub, Inc.

Analog Devices 3D ToF Software Suite(アナログ・デバイセズの3D ToF用ソフトウェア・スイート)」GitHub, Inc.

Yingshen He、Ge Li、Yiting Shao、Jing Wang、Yueru Chen、 Shan Liu「A Point Cloud Compression Framework via Spherical Projection(球面投影を利用する点群圧縮フレームワーク)」2020 IEEE International Conference on Visual Communications and Image Processing、2020年

インダストリアル・ビジョン技術、Analog Devices

Anirudh Topiwala「Spherical Projection for Point Clouds(点群の球面投影)」Towards Data Science、2020年3月

著者

Rajesh Mahapatra

Rajesh Mahapatra

Rajesh Mahapatraは、アナログ・デバイセズのシニア・マネージャです。ソフトウェア&セキュリティ・グループ(インド バンガロール)に所属しています。アナログ・デバイセズのハードウェア・ソリューション上で実行される組み込みソフトウェアやアルゴリズムにより、お客様が抱える課題を解決することに力を注いでいます。職務経験は30年以上にわたり、画像処理とコンピュータ・ビジョンの分野を対象とした5件の特許を保有。NGO(非政府組織)と密に連携し、植樹を行ったり、都市部の経済的に恵まれない人々が生計を立てるためのトレーニングを提供したりしています。

Anil Sripadarao

Anil Sripadarao

Anil Sripadaraoは、アナログ・デバイセズのプリンシパル・エンジニアです。2007年に入社しました。ソフトウェア&セキュリティ・グループ(インド バンガロール)に所属。オーディオ/ビデオ・コーデック、AI/ML、コンピュータ・ビジョン・アルゴリズム、ロボティクスなどの分野に注力しています。画像処理、コンピュータ・ビジョンの分野を対象とした6件の特許を保有しています。

Swastik Mahapatra

Swastik Mahapatra

Swastik Mahapatraは、アナログ・デバイセズのシニア・エンジニアです。ソフトウェア/セキュリティ・グループで機械学習を担当しています。2018年の入社以来、様々なコンピュータ・ビジョン技術やロボット向けのセーフティ・ソリューションに注力。ディープラーニングを利用したエッジ向けの推論フレームワークの開発や、ロボット・アプリケーションの開発に従事してきました。畳み込みニューラル・ネットワークに精通しており、コンピュータ・ビジョン、3Dビジョン、機械学習、ロボティクス向けのアルゴリズム開発に尽力しています。