Main Content

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

pcregrigid

(削除予定) ICP アルゴリズムを使用した 2 つの点群のレジストレーション

pcregrigid は将来のリリースで削除される予定です。代わりに pcregistericp を使用してください。

説明

tform = pcregrigid(moving,fixed) は、移動点群を固定点群にレジストレーションする剛体変換を返します。

レジストレーション アルゴリズムは "反復最近接点" (ICP) アルゴリズムに基づいています。この反復処理で最良のパフォーマンスを得るには、データのプロパティを調整しなければなりません。レジストレーションの精度と効率を向上させるには、pcregrigid を使用する前に、pcdownsample を使って点群のダウンサンプリングを行うことを検討してください。

'pointToPlane' メトリクスを選択した場合には、レジストレーション アルゴリズムにおいて点群の法線が必要です。そのため、入力点群の Normal プロパティが空の場合、関数がそれを指定します。関数が Normal プロパティを指定するとき、6 個の点を使用して局所平面への適合を行います。6 個の点でうまく適合できない場合もあります。'pointToPlane' メトリクスを使用したレジストレーションに失敗した場合、使用する点の数を選択できる、関数 pcnormals を呼び出すことを検討してください。

[tform,movingReg] = pcregrigid(moving,fixed) はさらに、固定点群に位置合わせされた変換後の点群を返します。

[___,rmse] = pcregrigid(moving,fixed) は、前述の構文のいずれかを使用し、位置合わせされた点群間のユークリッド距離の平方根平均二乗誤差を追加で返します。

[___] = pcregrigid(moving,fixed,Name,Value) は、Name,Value ペアの引数を 1 つ以上指定したオプションを追加で使用します。

すべて折りたたむ

  1. 点群データを読み込みます。

    ptCloud = pcread("teapot.ply");
    figure
    pcshow(ptCloud); 
    title("Teapot");

  2. z 軸に沿って 30 度の回転と [5,5,10] の移動を行う変換オブジェクトを作成します。

    A = [cos(pi/6) sin(pi/6) 0 0; ...
        -sin(pi/6) cos(pi/6) 0 0; ...
                0         0  1 0; ...
                5         5 10 1];
    tform1 = affine3d(A);
  3. 点群を変換します。

    ptCloudTformed = pctransform(ptCloud,tform1);
    
    figure
    pcshow(ptCloudTformed);
    title("Transformed Teapot");
  4. 剛体レジストレーションを適用します。

    tform = pcregrigid(ptCloudTformed,ptCloud,Extrapolate=true);
  5. 結果を真の変換と比較します。

    disp(tform1.T);
    tform2 = invert(tform);
    disp(tform2.T);

入力引数

すべて折りたたむ

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

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

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: 'Metric','pointToPoint' は、ICP アルゴリズムのメトリクスを 'pointToPoint' に設定します。

最小化メトリクス。'Metric' と、'pointToPoint' または 'pointToPlane' で構成されるコンマ区切りのペアとして指定します。移動点群と固定点群間の剛体変換の推定は、反復最近接点 (ICP) アルゴリズムによって行われます。ICP アルゴリズムは、指定されたメトリクスに従って 2 つの点群間の距離を最小化します。

'Metric' を 'pointToPlane' に設定すると、処理する反復回数を減らすことができます。ただし、このメトリクスを指定すると、それぞれの反復処理内でアルゴリズムの追加のステップが必要になります。'pointToPlane' メトリクスは、平面のレジストレーションを改善します。

ダウンサンプリング方法の選択:
関数 pcdownsample を使用して点群をダウンサンプリングします。次に示す Metric の表に従って、関数 pcdownsample'random' 入力または 'gridAverage' 入力を使用します。

Metric点群 A のダウンサンプリング方法点群 B のダウンサンプリング方法
'pointToPoint''random''random'
'gridAverage''gridAverage'
'pointToPlane''gridAverage''gridAverage'
'random''nonuniformGridSample'

外挿。'Extrapolate' と boolean の true または false で構成されるコンマ区切りのペアとして指定します。このプロパティを true に設定すると、[2] で説明されているように、関数がレジストレーション状態空間でパスをトレースする外挿ステップを追加します。このプロパティを true に設定すると、収束にかかる反復の数を減らすことができます。

インライアのパーセント比。'InlierRatio' とスカラー値で構成されるコンマ区切りのペアとして指定します。この値を使用して、マッチするペアがインライアと見なされるパーセント比を設定します。マッチする点のペアのユークリッド距離がマッチング距離のパーセント比の範囲内にある場合、これらのペアはインライアと見なされます。既定の設定では、マッチするすべてのペアが使用されます。

最大反復回数。'MaxIterations' と正の整数で構成されるコンマ区切りのペアとして指定します。この値は、ICP が停止するまでの最大反復回数を指定します。

連続する ICP 反復間の許容誤差。'Tolerance' と 2 要素ベクトルで構成されるコンマ区切りのペアとして指定します。2 要素ベクトル [Tdiff, Rdiff] は、連続する ICP 反復で推定される並進と回転の差の絶対許容誤差を表します。Tdiff は、2 つの並進ベクトル間のユークリッド距離を測定します。Rdiff は、角度差をラジアン単位で測定します。最新の 3 つの連続する反復において推定された剛体変換間の平均の差が指定された許容誤差の値より小さくなると、アルゴリズムが停止します。

初期剛体変換。'InitialTransform' と affine3d オブジェクトで構成されるコンマ区切りのペアとして指定します。初期剛体変換は、外部での大まかな推定結果を指定する場合に役立ちます。

進行状況の表示。'Verbose' と logical スカラーで構成されるコンマ区切りのペアとして指定します。進行状況を表示するには、Verbosetrue に設定します。

出力引数

すべて折りたたむ

剛体変換。affine3d オブジェクトとして返されます。剛体変換は、移動点群を固定点群にレジストレーションします。affine3d オブジェクトは、3 次元剛体変換を示します。反復最近接点 (ICP) アルゴリズムは、移動点群と固定点群間の剛体変換を推定します。

変換後の点群。pointCloud オブジェクトとして返されます。変換後の点群は、固定点群と位置合わせされています。

平方根平均二乗誤差。位置合わせされた点群間のユークリッド距離として返されます。

参照

[1] Chen, Y. and G. Medioni. “Object Modelling by Registration of Multiple Range Images.” Image Vision Computing. Butterworth-Heinemann . Vol. 10, Issue 3, April 1992, pp. 145-155.

[2] Besl, Paul J., N. D. McKay. “A Method for Registration of 3-D Shapes.” IEEE Transactions on Pattern Analysis and Machine Intelligence. Los Alamitos, CA: IEEE Computer Society. Vol. 14, Issue 2, 1992, pp. 239-256.

バージョン履歴

R2015a で導入

すべて折りたたむ

R2023b: pcregrigid は将来のリリースで削除予定

関数 pcregrigid は将来のリリースで削除される予定です。ICP 点群のレジストレーションを実行するには、代わりに pcregistericp オブジェクトを使用してください。