このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
"点群"とは3次元空間における点の集合です。点群は,通常,激光雷达やKinect®デバイスなどの3次元スキャナーから取得されます。点群はロボットの操縦および認識,深度推定,ステレオビジョン,視覚レジストレーション,および先進運転者支援システム(ADAS)といった分野に応用されています。
“点群のレジストレーション”とは,同じシーンの2つ以上の3次元点群の位置を合わせて,共通の座標系にするプロセスです。マッピングは,ロボットまたはセンサーの周囲の環境のマップを作成するプロセスです。レジストレーションとマッピングを使用して,3次元シーンを再構成することや,位置推定用に道路マップを作成することができます。通常,レジストレーションの後にマッピングを行いますが,変形するものを追跡するなど,マッピングを必要としないレジストレーションの適用もいくつかあります。计算机视觉工具箱™アルゴリズムは,点群のレジストレーションとマッピングを実行する関数を提供します。ワークフローは,前処理,レジストレーション,ドリフト補正,および点群の位置合わせで構成されます。
次の手順に従って,点群のレジストレーションと,一連の点群でのマッピングを実行します。
点群の前処理——レジストレーションのために点群を準備するには,ダウンサンプリングして,不要な特徴とノイズを削除します。
点群のレジストレーション——各点群をその前の点群に対してレジストレーションします。これらのレジストレーションは,“オドメトリ”で使用されます。これは,連続するフレーム全体のレジストレーション推定を累積するプロセスです。オドメトリを単独で使用すると、測定された姿勢とグラウンド トゥルースの姿勢の間でドリフトが発生する可能性があります。
ループの検出——ドリフトを最小限に抑えるには,以前に訪れた場所へのセンサーの戻り値を特定し,センサーの軌道にループを形成しなければなりません。これは,“ループクロージャ検出”と呼ばれます。
ドリフトの修正——検出されたループを使用し,“姿勢グラフの最適化”によってドリフトを最小化します。これには,ノードとエッジを追加して姿勢グラフをインクリメンタルに構築し,十分なループが見つかったら姿勢グラフを最適化することが含まれます。姿勢グラフの最適化の結果は,最適化された絶対姿勢のセットです。
マップの組み立て——最適化された絶対姿勢を使用して,レジストレーションされた点群を位置合わせすることにより,マップを組み立てます。
点群のレジストレーションとマッピングのワークフローに関連するデータを管理するために,次のオブジェクトを使用します。
pointCloud
オブジェクト——点群オブジェクトは,3次元空間に配置された点のセットを格納します。効率的なインデックス作成手法を使用して,最近傍検索を実行します。これは点群の前処理とレジストレーション関数で利用されます。
rigid3d
オブジェクト——剛体3次元オブジェクトは,3次元剛体幾何学的変換を格納します。このワークフローでは,相対姿勢と絶対姿勢を表します。
pcviewset
オブジェクト——点群ビューセットオブジェクトは,オドメトリとマッピングプロセスに関連するデータを管理します。一連のビューおよびビュー間のペアワイズ接続としてデータを整理します。また,姿勢グラフを作成および更新します。
各“ビュー”は,点群とそれに関連する絶対姿勢の変換で構成されます。各ビューには、ビュー セット内に一意の識別子があり、姿勢グラフのノードを形成します。
各"接続"には,あるビューを別のビューに結び付ける情報が格納されます。これには,接続されたビュー間の相対的な変換と,測定の計算に伴う不確実性が含まれます。各接続は,姿勢グラフのエッジを形成します。
前処理には,点群から不要な特徴やノイズを削除することや,セグメント化やダウンサンプリングすることが含まれます。前処理には,次の関数を含めることができます。
pcsegdist
またはsegmentLidarData
——点群データをクラスターにセグメント化し,関数选择
を使用して目的の点を選択します。
pcfitplane
またはsegmentGroundFromLidarData
——地面をセグメント化し,関数选择
を使用して目的の点を選択します。
pcdenoise
——点群から不要なノイズを削除します。
関数pcregistericp
、pcregistercpd
、pcregisterndt
,またはpcregistercorr
を使用して,移動点群を固定点群にレジストレーションすることができます。これらの関数で使用されているレジストレーションアルゴリズムは,それぞれ反復最近接点(ICP)アルゴリズム,コヒーレント点ドリフト(CPD)アルゴリズム,正規分布変換(无损检测)アルゴリズム,および位相相関アルゴリズムに基づいています。これらのアルゴリズムの詳細については,参照を参照してください。
点群のレジストレーションを行う際には,シーン内のオブジェクトが点群間でどのように変化するかを表す変換のタイプを選択できます。
変換 | 説明 |
---|---|
剛体 | 剛体変換は,シーン内のオブジェクトの形状とサイズを保持します。シーン内のオブジェクトには,平行移動,回転,またはその両方を実行できます。同じ変換がすべての点に適用されます。 |
アフィン | アフィン変換では,オブジェクトの平行移動と回転に加え,せん断とスケール変更が可能です。 |
非剛体 | 非剛体変換では,シーン内のオブジェクトの形状を変更できます。点は個別に変換されます。変位場は変換を表します。 |
次の表では,点群レジストレーション関数の選択肢と,それぞれの変換タイプおよびパフォーマンス特性を比較しています。この表を使用して,ユースケースに適したレジストレーション関数を選択できます。
レジストレーション手法(関数) | 変換タイプ | 説明 | パフォーマンス特性 |
---|---|---|---|
pcregisterndt |
剛体 |
|
高速なレジストレーション手法だが,一般にICPよりも低速 |
pcregistericp |
剛体 | 初期変換推定値に依存するローカルなレジストレーション手法 |
最も高速なレジストレーション手法 |
pcregistercpd |
剛体,アフィン,および非剛体 | 初期変換推定値に依存しないグローバルな手法 |
最も低速なレジストレーション手法 |
pcregistercorr |
剛体 | 占有グリッドに依存するレジストレーション手法。各グリッド セル内の点の Z 座標値に基づいて確率値をグリッドに割り当てる。 | 地上車両のナビゲーションに最適 占有グリッドのサイズを大きくすると,関数の計算要件が大きくなる。 |
現在の(移動)点群を前の(固定)点群に対してレジストレーションを行うと,固定点群のフレーム内における移動点群の推定相対姿勢を表すrigid3d
変換が返されます。この相対姿勢変換を以前に蓄積されたすべての相対姿勢変換で構成すると,絶対姿勢変換の推定が得られます。
移動点群とその絶対姿勢変換によって形成されるビューを追加します。関数addView
を使用して,ビューをpcviewset
オブジェクトに追加できます。
関数addConnection
を使用して,“オドメトリエッジ”をpcviewset
オブジェクトに追加します。オドメトリエッジは,連続するビュー間の接続によって定義されるエッジで,固定点群と移動点群の間の相対姿勢変換によって形成されます。
オドメトリを単独で使用すると,誤差の累積によるドリフトが発生します。これらの誤差は,長距離において深刻な不正確さをもたらす可能性があります。グラフベースの同步定位和映射(大满贯)を使用すると,ドリフトが修正されます。これを行うために,記述子マッチングを使用して,前の点群で訪れた場所を見つけることにより,ループクロージャを検出します。ループを閉じてドリフトを修正します。ループの検出と終了については、次の手順に従います。
関数scanContextDescriptor
を使用して,ビューセット内の2つの点群から,ビューの特徴を取得するスキャンコンテキストの記述子を抽出します。
関数scanContextDistance
を使用して2つのスキャンコンテキスト記述子間の記述子距離を計算します。2つの記述子間の距離が指定されたしきい値を下回っている場合,ループクロージャの可能性があります。
点群のレジストレーションを行い,ビュー間の相対姿勢変換と,位置合わせされた点群間のユークリッド距離の平方根平均二乗誤差(RMSE)を決定します。RMSEを使用して,無効なループクロージャをフィルター処理します。相対姿勢変換は2つのビュー間の接続を表します。連続しないビュー間の接続によって形成されるエッジは,“ループクロージャエッジ”と呼ばれます。関数addConnection
を使用して,pcviewset
オブジェクトに接続を追加できます。
pcviewset
オブジェクトは,ビューと接続が追加されると,姿勢グラフを内部的に更新します。ドリフトを最小限に抑えるには,十分なループクロージャが見つかったら,関数optimizePoses
を使用して姿勢グラフの最適化を実行します。関数optimizePoses
は,ビューごとに最適化された絶対姿勢変換をもつpcviewset
オブジェクトを返します。
関数createPoseGraph
を使用して,姿勢グラフをMATLAB®有向图
オブジェクトとして返すことができます。MATLABのグラフ アルゴリズムを使用して、姿勢グラフを検査、表示、または変更できます。Navigation Toolbox™ の関数optimizePoseGraph
(导航工具箱)を使用して変更された姿勢グラフを最適化し,関数updateView
を使用してビューセット内の姿勢を更新します。
関数pcalign
を使用して,ビューセットからの点群とそれらの最適化された絶対姿勢変換を使用して点群マップを作成します。
无损检测またはICPを使用するようなローカルレジストレーション手法(それぞれpcregisterndt
またはpcregistericp
)では初期推定値が必要です。初期推定値を取得するには,慣性測定装置(IMU)などの別のセンサーや,他の形式のオドメトリを使用します。初期推定値を改善すると,レジストレーションアルゴリズムの収束が速くなります。
引数“MaxIterations”
に高い値を指定するか,“宽容”
プロパティに低い値を指定すると,レジストレーションの結果がより正確になりますが,レジストレーションの速度は遅くなります。
Myronenko, Andriy and Xubo Song。点集配准:相干点漂移电子学报(电子版),第32期。12(2010年12月):2262-75。
[2]陈,杨,Gérard Medioni。"多距离图像配准的物体建模"图像与视觉计算10,no. 23(1992年4月):145-55。
[3] Besl, pj,和Neil D. McKay。一种三维形状的配准方法电子学报(电子版),vol . 43, no. 32(1992年2月):239-56。
P.比伯和W.斯特拉瑟。正态分布变换:激光扫描匹配的新方法。IEEE/RSJ智能机器人与系统国际会议论文集(IROS 2003)No.03CH37453), 3:2743-48。拉斯维加斯,内华达州,美国:IEEE, 2003。
[5] Magnusson,马丁。三维正态分布变换:配准、表面分析和环路检测的有效表示。据英国大学,2009。
[6] Dimitrievski, Martin, David Van Hamme, Peter Veelaert, Wilfried Philips。“用于自动驾驶汽车里程计的占位地图鲁棒匹配”,《第11届计算机视觉、图像和计算机图形学理论与应用联合会议论文集》,626-33。罗马,意大利:sciestpress -科学技术出版物,2016。