Main Content

pcdenoise

3차원 포인트 클라우드에서 잡음 제거

설명

예제

ptCloudOut = pcdenoise(ptCloudIn)은 이상값을 제거하는 필터링된 포인트 클라우드를 반환합니다.

[ptCloudOut,inlierIndices,outlierIndices] = pcdenoise(ptCloudIn) 은 정상값과 이상값으로 식별된 점에 대한 선형 인덱스를 추가로 반환합니다.

[ptCloudOut,___] = pcdenoise(___Name=Value)는 위에 열거된 구문의 인수 조합 외에 이름-값 인수를 지정합니다. 예를 들어, Threshold=1.0은 이상값 임계값을 1.0으로 설정합니다.

예제

모두 축소

평면 포인트 클라우드를 만듭니다.

gv = 0:0.01:1;
[X,Y] = meshgrid(gv,gv);
ptCloud = pointCloud([X(:),Y(:),0.5*ones(numel(X),1)]);

figure
pcshow(ptCloud);
title('Original Data');

균일하게 분포된 랜덤 잡음을 추가합니다.

noise = rand(500, 3);
ptCloudA = pointCloud([ptCloud.Location; noise]);

figure
pcshow(ptCloudA);
title('Noisy Data');

이상값을 제거합니다.

ptCloudB = pcdenoise(ptCloudA);

figure;
pcshow(ptCloudB);
title('Denoised Data');

저장된 MAT 파일에서 정렬 포인트 클라우드를 불러옵니다.

ld = load('drivingLidarPoints.mat');
orgPtCloud = ld.ptCloud;

포인트 클라우드에서 잡음을 제거합니다.

orgPtCloudOut = pcdenoise(orgPtCloud,PreserveStructure=true);

입력 인수

모두 축소

포인트 클라우드로, pointCloud 객체로 지정됩니다.

이름-값 인수

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

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

예: Threshold=1.0은 임계값을 1.0으로 설정합니다.

최근접이웃 점 개수로, 'NumNeighbors'와 함께 양의 정수(단위: 픽셀)가 쉼표로 구분되어 지정됩니다. 이 값은 모든 점의 이웃까지의 평균 거리에 대한 평균을 추정하는 데 사용됩니다. 이 값을 낮추면 필터가 잡음에 더 민감해집니다. 이 값을 높이면 계산 횟수가 증가합니다.

데이터형: single | double

이상값 임계값으로, 'Threshold'와 함께 양의 스칼라가 쉼표로 구분되어 지정됩니다. 기본적으로, 임계값은 모든 점의 이웃까지의 평균 거리에 대한 평균에서 1 표준편차만큼 떨어진 값입니다. k-최근접이웃까지의 평균 거리가 지정된 임계값보다 높은 점은 이상값으로 간주됩니다.

데이터형: single | double

포인트 클라우드의 정렬 구조를 M×N×3 위치 행렬로 유지할지 여부로, true 또는 false로 지정됩니다. 다음 표에는 PreserveStructure의 값에 따른 포인트 클라우드 구조가 설명되어 있습니다.

PreserveStructure함수에서 반환되는 값
true

잡음이 제거된 정렬 포인트 클라우드.

포인트 클라우드의 구조를 설명하는 Location 속성은 M×N×3 행렬을 포함합니다.

잡음이 제거된 포인트 클라우드에서 선택되지 않은 점들은 NaN으로 채워지며 해당 색은 [0 0 0]으로 설정됩니다.

정렬 포인트 클라우드를 반환하려면 입력값이 정렬 포인트 클라우드여야 합니다.

false

잡음이 제거된 비정렬 포인트 클라우드.

포인트 클라우드의 구조를 설명하는 Location 속성은 M×3 행렬을 포함합니다.

출력 인수

모두 축소

필터링된 포인트 클라우드로, pointCloud 객체로 반환됩니다.

정상값 점의 선형 인덱스로, 1×N 벡터로 반환됩니다.

데이터형: uint32

이상값 점의 선형 인덱스로, 1×N 벡터로 반환됩니다.

데이터형: uint32

참고 문헌

[1] Rusu, R. B., Z. C. Marton, N. Blodow, M. Dolha, and M. Beetz. “Towards 3D Point Cloud Based Object Maps for Household Environments”. Robotics and Autonomous Systems Journal. 2008.

확장 기능

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

버전 내역

R2015a에 개발됨