メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

pcregisterfgr

FGR アルゴリズムを使用した 2 つの点群のレジストレーション

R2022b 以降

    説明

    関数 tform = pcregisterfgr(moving,fixed,gridSize) は、移動点群から固定点群へのレジストレーションを行う剛体変換を返します。

    この関数は、FPFH の特徴に基づく高速グローバル レジストレーション (FGR) アルゴリズムを使用して、点のレジストレーションを行います。

    [tform,rmse] = pcregisterfgr(moving,fixed,gridSize) はさらに、配置されたインライア点間のユークリッド距離の平方根平均二乗誤差を返します。

    [___] = pcregisterfgr(___,MaxIterations=numIterations) は、前述した構文の引数の任意の組み合わせに加え、FGR アルゴリズムの最大反復回数を指定します。

    すべて折りたたむ

    点群データをワークスペースに読み込みます。

    ld = load("livingRoom.mat");
    fixed = ld.livingRoomData{1};
    moving = ld.livingRoomData{2};

    レジストレーションの前に、点群データを可視化します。

    figure
    pcshowpair(moving,fixed,VerticalAxis="Y",VerticalAxisDir="Down") 

    Figure contains an axes object. The axes object contains 2 objects of type scatter.

    FGR レジストレーション アルゴリズムの精度と効率を向上させるために、点群をダウンサンプリングします。

    fixedDownsampled = pcdownsample(fixed,gridNearest=0.05);
    movingDownsampled = pcdownsample(moving,gridNearest=0.05);

    FGR アルゴリズムを使用して、点群のレジストレーションを行います。

    gridSize = 0.1;
    tform = pcregisterfgr(movingDownsampled,fixedDownsampled,gridSize,MaxIterations=100);

    配置を可視化します。

    movingRegistered = pctransform(moving,tform);
    pcshowpair(movingRegistered,fixed,VerticalAxis="Y",VerticalAxisDir="Down");

    Figure contains an axes object. The axes object contains 2 objects of type scatter.

    点群をマージし、マージ結果を可視化します。

    mergeSize = 0.01;
    merged = pcmerge(movingRegistered,fixed,mergeSize);
    figure(Name = "merged point cloud after Fast Global registration");
    pcshow(merged,VerticalAxis="Y",VerticalAxisDir ="Down");

    Figure merged point cloud after Fast Global registration contains an axes object. The axes object contains an object of type scatter.

    入力引数

    すべて折りたたむ

    移動点群。pointCloud オブジェクトとして指定します。

    固定点群。pointCloud オブジェクトとして指定します。

    点群間の対応を検索するためのグリッド サイズ。正のスカラーとして指定します。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    FGR アルゴリズムが停止するまでの最大反復回数。正の整数として指定します。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    出力引数

    すべて折りたたむ

    剛体変換。rigidtform3d オブジェクトとして返されます。剛体変換は、移動点群から固定点群へのレジストレーションを行います。rigidtform3d オブジェクトは 3 次元剛体変換を表します。FGR アルゴリズムは、移動点群と固定点群の間の剛体変換を推定します。

    平方根平均二乗誤差。配置されたインライア点間のユークリッド距離を表す正のスカラーとして返されます。誤差の値が低いほど、レジストレーションがより良好であることを示します。

    ヒント

    • レジストレーションの精度と効率を向上させるには、pcdownsample 関数を使用して点群をダウンサンプリングしてから、pcregisterfgr 関数を使用します。

    • 地上ビークルの点群の場合は、レジストレーションの前に pcfitplane または segmentGroundFromLidarData を使用して地面を削除することで、パフォーマンスと精度を向上できます。この方法の詳細については、LiDAR データからのマップの作成 (Automated Driving Toolbox)の例の helperProcessPointCloud 関数を参照してください。

    • 2 つより多くの点群をマージするには、pcmerge 関数の代わりに pccat 関数を使用できます。

    アルゴリズム

    次の図は、FGR アルゴリズムを使用した点群のレジストレーションのワークフローを示しています。

    Fast Global Registration (FGR) algorithm

    バージョン履歴

    R2022b で導入