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. 함수 방정식에서 곡면을 복원합니다.

    볼-피벗(ball-pivot) 복원

    볼-피벗 방법은 포인트 클라우드에서 반지름이 r인 공을 굴려서 일련의 점들을 삼각형으로 만듭니다. 알고리즘은 다음 단계로 구성됩니다.

    1. 공을 3개의 샘플 점과 접촉하도록 배치합니다. 이러한 점은 시드 삼각형을 형성합니다.

    2. 볼이 이러한 초기 점(시드 삼각형의 모서리) 중 두 점과 접촉하도록 유지하고 볼이 또 다른 점에 닿을 때까지 볼을 회전합니다. 모서리와 새 점은 새 삼각형을 정의합니다.

    3. 새 삼각형 모서리를 사용하여 볼을 회전합니다. 새 삼각형의 모서리를 사용하여 피벗 연산 과정을 반복하고 접촉된 점으로 새 삼각형을 정의합니다. 이 과정을 통해 형성된 삼각형들은 보간 메시를 구성합니다.

    4. 모든 도달 가능한 모서리가 포함될 때까지 이 과정을 계속 수행한 다음, 또 다른 시드 삼각형으로 시작합니다.

    5. 더 큰 반지름으로 전체 과정을 반복하여 균일하지 않은 곡면을 복원합니다.

    버전 내역

    R2022b에 개발됨

    모두 확장