Main Content

pc2surfacemesh

3 次元点群からの表面メッシュの作成

R2022b 以降

    説明

    [mesh,depth,perVertexDensity] = pc2surfacemesh(ptCloudIn,"poisson") は、ポアソン再構成法を使用して入力点群 ptCloudIn から表面メッシュを作成します。この関数は、再構成で使用される八分木の深さ depth と頂点密度 perVertexDensity も返します。

    [mesh,depth,perVertexDensity] = pc2surfacemesh(ptCloudIn,'poisson',inputDepth) は、ポアソン再構成法の八分木の深さの値を追加で指定します。

    [mesh,radii] = pc2surfacemesh(ptCloudIn,"ball-pivot") は、ボールピボット法を使用して点群データから表面メッシュを作成します。この関数は、再構成で使用される半径も返します。

    [mesh,radii] = pc2surfacemesh(ptCloudIn,'ball-pivot',inputRadii) は、ボールピボット再構成法の半径を追加で指定します。

    すべて折りたたむ

    PLY ファイルからワークスペースに点群データを読み込みます。

    ptCloud = pcread("teapot.ply");

    入力点群を表示します。

    pcshow(ptCloud)

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

    点群をダウンサンプリングします。

    gridstep = 0.05;
    ptCloudDownSampled = pcdownsample(ptCloud,"gridAverage",gridstep);

    ポアソン法を使用して点群データから表面メッシュを作成し、表面メッシュを表示します。

    depth = 8;
    mesh = pc2surfacemesh(ptCloudDownSampled,"poisson",depth);
    surfaceMeshShow(mesh)

    PLY ファイルからワークスペースに点群データを読み込みます。

    ptCloud = pcread("teapot.ply");

    入力点群を表示します。

    pcshow(ptCloud)

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

    点群をダウンサンプリングします。

    gridstep = 0.05;
    ptCloudDownSampled = pcdownsample(ptCloud,"gridAverage",gridstep);

    ボールピボット法を使用して点群データから表面メッシュを作成し、表面メッシュを表示します。

    mesh = pc2surfacemesh(ptCloudDownSampled,"ball-pivot");
    surfaceMeshShow(mesh)

    入力引数

    すべて折りたたむ

    入力点群データ。pointCloud オブジェクトとして指定します。

    ポアソン再構成で使用する八分木の深さ。範囲 [2, 12] の正の整数として指定します。ポアソン再構成の八分木の深さを大きくすると、表面メッシュがより詳細になります。

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

    ボールピボット再構成の半径の値。M 要素ベクトルとして指定します。この値は点群の密度に従って指定する必要があります。値はメートル単位です。

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

    出力引数

    すべて折りたたむ

    点群から作成される表面メッシュ。surfaceMesh オブジェクトとして返されます。

    ポアソン再構成で使用する八分木の深さ。正の整数として返されます。

    ボールピボット再構成の半径の値。3 要素ベクトルとして返されます。単位はメートルです。

    メッシュ頂点での密度。M 要素ベクトルとして返されます。M は出力表面メッシュ内のメッシュ頂点の数です。有意でない密度をもつ頂点を除外することにより、メッシュをより精細にすることができます。

    アルゴリズム

    すべて折りたたむ

    ポアソン再構成

    "ポアソン" 再構成法は次のステップで構成されます。

    1. 点のサンプルを連続するベクトル場に変換します。

    2. 3 次元ラプラシアン方程式を含むポアソン系を解いて、点群の説明として最適な勾配をもつ関数を求めます。

    3. 関数方程式から表面を再構成します。

    ボールピボット再構成

    "ボールピボット" 法は、半径が "r" のボールを点群上で転がすことにより、一連の点を三角形分割します。このアルゴリズムは次のステップで構成されます。

    1. 3 つのサンプル点に接するようにボールを配置します。これらの点は "シード" 三角形を形成します。

    2. ボールをこれらの初期点のうち 2 つ (シード三角形の "エッジ") と接触させたまま、別の点に触れるまでボールをピボットします。エッジと新しい点が、新しい三角形を定義します。

    3. 新しい三角形のエッジを使用してボールをピボットします。新しい三角形のエッジを使用して、ピボットして触れた点で新しい三角形を定義する処理を繰り返します。この処理を通して形成された三角形が内挿メッシュを構成します。

    4. 到達可能なすべてのエッジがカバーされるまでこの処理を続け、その後、別のシード三角形で開始します。

    5. より大きい半径で全体の処理を繰り返し、平らでない表面を再構成します。

    バージョン履歴

    R2022b で導入

    すべて展開する