주요 콘텐츠

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 | single | double

곡면 법선으로, 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 배열로 표현됩니다. 각 요소는 점의 좌표를 지정하며, 다음 중 하나일 수 있습니다.

xyzPoints 입력 인수가 이 속성을 설정합니다. 메모리 사용량을 줄이기 위해 점 위치를 single 데이터형으로 저장할 수 있습니다.

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

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

데이터형: single | double

읽기 전용 속성입니다.

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

읽기 전용 속성입니다.

x축 상의 좌표 범위로, 요소를 2개 가진 벡터로 표현됩니다.

읽기 전용 속성입니다.

y축 상의 좌표 범위로, 요소를 2개 가진 벡터로 표현됩니다.

읽기 전용 속성입니다.

z축 상의 좌표 범위로, 요소를 2개 가진 벡터로 표현됩니다.

객체 함수

findNearestNeighborsFind nearest neighbors of query points in point cloud
findNeighborsInRadiusFind neighbors within radius for query points in 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: [5184×3 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에 개발됨

모두 확장