Main Content

pointCloud

3차원 포인트 클라우드를 저장하기 위한 객체

설명

pointCloud 객체는 3차원 좌표계의 점 집합에서 포인트 클라우드 데이터를 만듭니다. 이 점들은 일반적으로 어떤 면이나 환경의 샘플에 대응되는 x,y, z 기하 좌표를 나타냅니다. 각 점을 RGB 색과 같은 추가 정보와 함께 나타낼 수도 있습니다. 포인트 클라우드 데이터는 속성에 나열된 속성을 갖는 객체로 저장됩니다. 객체 함수를 사용하여 포인트 클라우드 데이터에서 원하는 점을 검색, 선택 및 제거하십시오.

생성

설명

ptCloud = pointCloud(xyzPoints)xyzPoints로 지정된 좌표를 갖는 point cloud 객체를 반환합니다.

예제

ptCloud = pointCloud(___,Name=Value)는 위에 열거된 구문 외에 하나 이상의 이름-값 인수를 사용하여 옵션을 설정합니다. 예를 들어, Color=[1 0 0]은 포인트 클라우드의 색을 빨간색으로 설정합니다.

입력 인수

모두 확장

3차원 좌표 점으로, M×3 점 목록 또는 정렬 포인트 클라우드의 M×N×3 배열로 지정됩니다. 3차원 좌표 점은 3차원 좌표 공간에서 점의 x, y, z 위치를 지정합니다. 정렬 포인트 클라우드의 처음 2개 차원은 RGBD 또는 라이다와 같은 센서에서의 스캔 순서에 해당합니다. 이 인수는 Location 속성을 설정합니다.

데이터형: single | double

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: Color=[1 0 0]은 포인트 클라우드의 색을 빨간색으로 설정합니다.

포인트 클라우드 색으로, 색 문자열, 1×3 벡터, M×3 또는 M×N×3 행렬 중 하나로 지정되는 RGB 값입니다. M×N은 포인트 클라우드의 차원을 지정합니다. 각 요소는 포인트 클라우드 데이터에 있는 점의 RGB 색을 지정합니다. 따라서 모든 점에 동일한 색을 지정하거나 각각의 점에 다른 색을 지정할 수 있습니다.

  • single 또는 double 데이터형의 경우 Color RGB 값을 [0, 1] 범위로 지정해야 합니다.

  • uint8 데이터형의 경우 Color RGB 값을 [0, 255] 범위로 지정해야 합니다.

  • uint16 데이터형의 경우 Color RGB 값을 [0, 65535] 범위로 지정해야 합니다.

  • 이 함수는 Color 값을 M×3 또는 M×N×3으로 저장합니다. 색을 문자열 또는 1×3 벡터로 지정하면 함수는 색을 다음의 차원 중 하나로 변환합니다.

형식
모든 점에 대해 하나의 색 지정

string형 스칼라 또는 문자형 벡터

"r"

"red"

1×3 벡터

[255 0 0]1-by-3 grid, with columns labeled r,g,b respectively.

각 점에 대해 색 지정

M×3 행렬(RGB 값 목록으로 지정)

255 0 0
255 0 0
0 255 255
M-by-3 grid, with columns labeled r,g,b respectively.

각 점의 RGB 값이 포함된 정렬 포인트 클라우드를 나타내는 M×N×3 행렬. 여기서 M×N은 포인트 클라우드의 차원입니다.

M-by-N-by3 grid, with 3 m-by-n matrices labeled r,g,b respectively.

데이터형: uint8 | uint16

곡면 법선으로, M×3 또는 M×N×3 배열로 지정됩니다. 이 속성을 사용하여 포인트 클라우드의 각 점에 대한 법선 벡터를 지정합니다. 곡면 법선의 각 요소는 법선 벡터의 x, y, z 성분을 지정합니다.

좌표곡면 법선
M×3 배열M×3 배열. 여기서 각 행은 대응하는 법선 벡터를 포함합니다.
M×N×3 배열각 점의 1×1×3 법선 벡터가 포함된 M×N×3 배열.

데이터형: single | double

각 점에서의 회색조 명암으로, M×1 벡터 또는 M×N 행렬로 지정됩니다. 이 함수는 현재 컬러맵의 색 값에 각 명암 값을 매핑합니다.

좌표명암
M×3 배열M×1 벡터. 여기서 각 행은 대응하는 명암 값을 포함합니다.
M×N×3 배열각 점의 명암 값이 포함된 M×N 행렬.

데이터형: single | double | uint8 | uint16

출력 인수

모두 확장

포인트 클라우드로, 속성에 나열된 속성을 갖는 pointCloud 객체로 반환됩니다.

속성

모두 확장

읽기 전용 속성입니다.

3차원 좌표 공간에서 점들의 위치로, M×3 또는 M×N×3 배열로 지정됩니다. 각 요소는 3차원 좌표 공간에서 점의 x, y, z 좌표를 지정합니다. xyzPoints 입력 인수가 이 속성을 설정합니다. 메모리 사용량을 줄이기 위해 점 위치를 single 데이터형으로 저장할 수 있습니다.

  • 비정렬 포인트 클라우드의 경우 Location은 M×3 배열로 지정되어야 합니다. 여기서 M은 점의 총 개수이고 배열은 각 점의 x,y,z 좌표를 제공합니다.

  • 정렬 포인트 클라우드의 경우 Location은 M×N×3 배열로 지정되어야 합니다. 여기서 M*N은 점의 총 개수이고 배열은 각 점의 x,y,z 좌표를 제공합니다. 투영 카메라(예: Kinect® 또는 라이다 센서)에서 얻은 점은 정렬 포인트 클라우드로 저장됩니다. 정렬 포인트 클라우드는 영상과 유사한 구조의 점들로 구성된 2차원 배열로 배치됩니다.

데이터형: single | double

읽기 전용 속성입니다.

포인트 클라우드의 점 개수로, 양의 정수로 저장됩니다.

읽기 전용 속성입니다.

x축을 따르는 좌표의 범위로, 1×2 벡터로 저장됩니다.

읽기 전용 속성입니다.

y축을 따르는 좌표의 범위로, 1×2 벡터로 저장됩니다.

읽기 전용 속성입니다.

z축을 따르는 좌표의 범위로, 1×2 벡터로 저장됩니다.

객체 함수

findNearestNeighborsFind nearest neighbors of a point in point cloud
findNeighborsInRadiusFind neighbors within a radius of a point in the point cloud
findPointsInROIFind points within a region of interest in the point cloud
findPointsInCylinderFind points within a cylindrical region in a point cloud
removeInvalidPointsRemove invalid points from point cloud
selectSelect points in point cloud
copyCopy array of point cloud objects

예제

모두 축소

3차원 좌표 점을 작업 공간으로 읽어 들입니다.

load("xyzPoints");

입력 점 좌표로부터 point cloud 객체를 만듭니다.

ptCloud = pointCloud(xyzPoints);

point cloud 객체의 속성을 검사합니다.

ptCloud
ptCloud = 
  pointCloud with properties:

     Location: [5184x3 single]
        Count: 5184
      XLimits: [-3 3.4338]
      YLimits: [-2 2]
      ZLimits: [0.0016 3.1437]
        Color: []
       Normal: []
    Intensity: []

pcshow를 사용하여 포인트 클라우드를 표시합니다.

pcshow(ptCloud)

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

포인트 클라우드 데이터의 색 수정하기

포인트 클라우드 데이터와 동일한 크기의 RGB 색 배열을 만듭니다. 점 색을 빨간색으로 설정합니다.

cmatrix = ones(size(ptCloud.Location)).*[1 0 0];

색 속성이 RGB 색 배열로 설정된 point cloud 객체를 만듭니다.

ptCloud = pointCloud(xyzPoints,Color=cmatrix);
pcshow(ptCloud)

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

포인트 클라우드 데이터에 곡면 법선 추가하기

pcnormals를 사용하여 포인트 클라우드 데이터에 대응하는 곡면 법선을 계산합니다.

normals = pcnormals(ptCloud);

입력 점 좌표로부터 point cloud 객체를 만듭니다. 계산된 곡면 법선을 point cloud 객체에 추가합니다.

ptCloud = pointCloud(xyzPoints,Normal=normals);

포인트 클라우드를 표시하고 곡면 법선을 플로팅합니다.

pcshow(ptCloud)
x = ptCloud.Location(:,1);
y = ptCloud.Location(:,2);
z = ptCloud.Location(:,3);
u = normals(:,1);
v = normals(:,2);
w = normals(:,3);
hold on
quiver3(x,y,z,u,v,w);
hold off

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

pointCloud 객체는 handle 객체입니다. 포인트 클라우드의 개별 복사본을 만들기 위해 MATLAB® copy 메서드를 사용할 수 있습니다.

ptCloudB = copy(ptCloudA)

포인트 클라우드 함수로 포인트 클라우드를 수정하고 그 사본 한 개만 유지하는 경우에는 입력 인수와 출력 인수에 동일한 포인트 클라우드 변수 이름을 사용하십시오.

ptCloud = pcFunction(ptCloud)

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2015a에 개발됨

모두 확장