Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

点群のレジストレーションとマッピングの概要

"点群" とは、3 次元空間における点の集合です。点群は、通常、LIDAR や Kinect® デバイスなどの 3 次元スキャナーから取得されます。点群はロボットの操縦および認識、深度推定、ステレオ ビジョン、視覚レジストレーション、および先進運転者支援システム (ADAS) といった分野に応用されています。

"点群のレジストレーション" とは、同じシーンの 2 つ以上の 3 次元点群の位置を合わせて、共通の座標系にするプロセスです。マッピングは、ロボットまたはセンサーの周囲の環境のマップを作成するプロセスです。レジストレーションとマッピングを使用して、3 次元シーンを再構成することや、位置推定用に道路マップを作成することができます。通常、レジストレーションの後にマッピングを行いますが、変形するものを追跡するなど、マッピングを必要としないレジストレーションの適用もいくつかあります。Computer Vision Toolbox™ アルゴリズムは、点群のレジストレーションとマッピングを実行する関数を提供します。ワークフローは、前処理、レジストレーション、ドリフト補正、および点群の位置合わせで構成されます。

レジストレーションとマッピングのワークフロー

次の手順に従って、点群のレジストレーションと、一連の点群でのマッピングを実行します。

  1. 点群の前処理 — レジストレーションのために点群を準備するには、ダウンサンプリングして、不要な特徴とノイズを削除します。

  2. 点群のレジストレーション — 各点群をその前の点群に対してレジストレーションします。これらのレジストレーションは、"オドメトリ" で使用されます。これは、連続するフレーム全体のレジストレーション推定を累積するプロセスです。オドメトリを単独で使用すると、測定された姿勢とグラウンド トゥルースの姿勢の間でドリフトが発生する可能性があります。

  3. ループの検出 — ドリフトを最小限に抑えるには、以前に訪れた場所へのセンサーの戻り値を特定し、センサーの軌道にループを形成しなければなりません。これは、"ループ クロージャ検出" と呼ばれます。

  4. ドリフトの修正 — 検出されたループを使用し、"姿勢グラフの最適化" によってドリフトを最小化します。これには、ノードとエッジを追加して姿勢グラフをインクリメンタルに構築し、十分なループが見つかったら姿勢グラフを最適化することが含まれます。姿勢グラフの最適化の結果は、最適化された絶対姿勢のセットです。

  5. マップの組み立て — 最適化された絶対姿勢を使用して、レジストレーションされた点群を位置合わせすることにより、マップを組み立てます。

点群のレジストレーションとデータのマッピングの管理

点群のレジストレーションとマッピングのワークフローに関連するデータを管理するために、次のオブジェクトを使用します。

  • pointCloud オブジェクト — 点群オブジェクトは、3 次元空間に配置された点のセットを格納します。効率的なインデックス作成手法を使用して、最近傍検索を実行します。これは点群の前処理とレジストレーション関数で利用されます。

  • rigid3d オブジェクト — 剛体 3 次元オブジェクトは、3 次元剛体幾何学的変換を格納します。このワークフローでは、相対姿勢と絶対姿勢を表します。

  • pcviewset オブジェクト — 点群ビュー セット オブジェクトは、オドメトリとマッピング プロセスに関連するデータを管理します。一連のビューおよびビュー間のペアワイズ接続としてデータを整理します。また、姿勢グラフを作成および更新します。

    • "ビュー" は、点群とそれに関連する絶対姿勢の変換で構成されます。各ビューには、ビュー セット内に一意の識別子があり、姿勢グラフのノードを形成します。

    • "接続" には、あるビューを別のビューに結び付ける情報が格納されます。これには、接続されたビュー間の相対的な変換と、測定の計算に伴う不確実性が含まれます。各接続は、姿勢グラフのエッジを形成します。

点群の前処理

前処理には、点群から不要な特徴やノイズを削除することや、セグメント化やダウンサンプリングすることが含まれます。前処理には、次の関数を含めることができます。

点群のレジストレーション

関数 pcregistericppcregistercpdpcregisterndt、または pcregistercorr を使用して、移動点群を固定点群にレジストレーションすることができます。これらの関数で使用されているレジストレーション アルゴリズムは、それぞれ反復最近接点 (ICP) アルゴリズム、コヒーレント点ドリフト (CPD) アルゴリズム、正規分布変換 (NDT) アルゴリズム、および位相相関アルゴリズムに基づいています。これらのアルゴリズムの詳細については、参照を参照してください。

点群のレジストレーションを行う際には、シーン内のオブジェクトが点群間でどのように変化するかを表す変換のタイプを選択できます。

変換説明
剛体剛体変換は、シーン内のオブジェクトの形状とサイズを保持します。シーン内のオブジェクトには、平行移動、回転、またはその両方を実行できます。同じ変換がすべての点に適用されます。
アフィンアフィン変換では、オブジェクトの平行移動と回転に加え、せん断とスケール変更が可能です。
非剛体非剛体変換では、シーン内のオブジェクトの形状を変更できます。点は個別に変換されます。変位場は変換を表します。

次の表では、点群レジストレーション関数の選択肢と、それぞれの変換タイプおよびパフォーマンス特性を比較しています。この表を使用して、ユース ケースに適したレジストレーション関数を選択できます。

レジストレーション手法 (関数)変換タイプ説明パフォーマンス特性
pcregisterndt剛体
  • 初期変換推定値に依存するローカルなレジストレーション手法

  • 外れ値に対してロバスト

  • 解像度と密度が異なる点群により適している

高速なレジストレーション手法だが、一般に ICP よりも低速
pcregistericp剛体

初期変換推定値に依存するローカルなレジストレーション手法

最も高速なレジストレーション手法
pcregistercpd剛体、アフィン、および非剛体

初期変換推定値に依存しないグローバルな手法

最も低速なレジストレーション手法
pcregistercorr剛体占有グリッドに依存するレジストレーション手法。各グリッド セル内の点の Z 座標値に基づいて確率値をグリッドに割り当てる。

地上車両のナビゲーションに最適

占有グリッドのサイズを大きくすると、関数の計算要件が大きくなる。

現在の (移動) 点群を前の (固定) 点群に対してレジストレーションを行うと、固定点群のフレーム内における移動点群の推定相対姿勢を表す rigid3d 変換が返されます。この相対姿勢変換を以前に蓄積されたすべての相対姿勢変換で構成すると、絶対姿勢変換の推定が得られます。

移動点群とその絶対姿勢変換によって形成されるビューを追加します。関数 addView を使用して、ビューを pcviewset オブジェクトに追加できます。

関数 addConnection を使用して、"オドメトリ エッジ"pcviewset オブジェクトに追加します。オドメトリ エッジは、連続するビュー間の接続によって定義されるエッジで、固定点群と移動点群の間の相対姿勢変換によって形成されます。

ループの検出

オドメトリを単独で使用すると、誤差の累積によるドリフトが発生します。これらの誤差は、長距離において深刻な不正確さをもたらす可能性があります。グラフベースの Simultaneous localization and mapping (SLAM) を使用すると、ドリフトが修正されます。これを行うために、記述子マッチングを使用して、前の点群で訪れた場所を見つけることにより、ループ クロージャを検出します。ループを閉じてドリフトを修正します。ループの検出と終了については、次の手順に従います。

  1. 関数 scanContextDescriptor を使用して、ビュー セット内の 2 つの点群から、ビューの特徴を取得するスキャン コンテキストの記述子を抽出します。

  2. 関数 scanContextDistance を使用して、2 つのスキャン コンテキスト記述子間の記述子距離を計算します。2 つの記述子間の距離が指定されたしきい値を下回っている場合、ループ クロージャの可能性があります。

  3. 点群のレジストレーションを行い、ビュー間の相対姿勢変換と、位置合わせされた点群間のユークリッド距離の平方根平均二乗誤差 (RMSE) を決定します。RMSE を使用して、無効なループ クロージャをフィルター処理します。相対姿勢変換は、2 つのビュー間の接続を表します。連続しないビュー間の接続によって形成されるエッジは、"ループ クロージャ エッジ" と呼ばれます。関数 addConnection を使用して、pcviewset オブジェクトに接続を追加できます。

ドリフトの修正

pcviewset オブジェクトは、ビューと接続が追加されると、姿勢グラフを内部的に更新します。ドリフトを最小限に抑えるには、十分なループ クロージャが見つかったら、関数 optimizePoses を使用して姿勢グラフの最適化を実行します。関数 optimizePoses は、ビューごとに最適化された絶対姿勢変換をもつ pcviewset オブジェクトを返します。

関数 createPoseGraph を使用して、姿勢グラフを MATLAB® digraph オブジェクトとして返すことができます。MATLAB のグラフ アルゴリズムを使用して、姿勢グラフを検査、表示、または変更できます。Navigation Toolbox™ の関数 optimizePoseGraph (Navigation Toolbox) を使用して変更された姿勢グラフを最適化し、関数 updateView を使用してビュー セット内の姿勢を更新します。

マップの組み立て

関数 pcalign を使用して、ビュー セットからの点群とそれらの最適化された絶対姿勢変換を使用して点群マップを作成します。

ヒント

  • NDT または ICP を使用するようなローカル レジストレーション手法 (それぞれ pcregisterndt または pcregistericp) では初期推定値が必要です。初期推定値を取得するには、慣性測定装置 (IMU) などの別のセンサーや、他の形式のオドメトリを使用します。初期推定値を改善すると、レジストレーション アルゴリズムの収束が速くなります。

  • 引数 'MaxIterations' に高い値を指定するか、'Tolerance' プロパティに低い値を指定すると、レジストレーションの結果がより正確になりますが、レジストレーションの速度は遅くなります。

参照

[1] Myronenko, Andriy and Xubo Song. “Point Set Registration: Coherent Point Drift.” IEEE Transactions on Pattern Analysis and Machine Intelligence 32, no. 12 (December 2010): 2262–75.

[2] Chen, Yang, and Gérard Medioni. “Object Modelling by Registration of Multiple Range Images.” Image and Vision Computing 10, no. 3 (April 1992): 145–55.

[3] Besl, P.J., and Neil D. McKay. “A Method for Registration of 3-D Shapes.” IEEE Transactions on Pattern Analysis and Machine Intelligence 14, no. 2 (February 1992): 239–56.

[4] Biber, P., and W. Strasser. “The Normal Distributions Transform: A New Approach to Laser Scan Matching.” In Proceedings 2003 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2003) (Cat. No.03CH37453), 3:2743–48. Las Vegas, Nevada, USA: IEEE, 2003.

[5] Magnusson, Martin. “The Three-Dimensional Normal-Distributions Transform: An Efficient Representation for Registration, Surface Analysis, and Loop Detection.” Örebro University, 2009.

[6] Dimitrievski, Martin, David Van Hamme, Peter Veelaert, and Wilfried Philips. “Robust Matching of Occupancy Maps for Odometry in Autonomous Vehicles:” In Proceedings of the 11th Joint Conference on Computer Vision, Imaging and Computer Graphics Theory and Applications, 626–33. Rome, Italy: SCITEPRESS - Science and and Technology Publications, 2016.

参考

関数

オブジェクト

関連するトピック