주요 콘텐츠

pcfitsphere

3차원 포인트 클라우드에 구 피팅

설명

model = pcfitsphere(ptCloudIn,maxDistance)는 정상값 점부터 구까지의 허용 가능한 최대 거리를 지정하여 포인트 클라우드에 구를 피팅합니다. 이 함수는 구를 설명하는 기하학적 모델을 반환합니다.

이 함수는 MSAC(M-estimator SAmple Consensus) 알고리즘을 사용하여 구를 찾습니다. MSAC 알고리즘은 RANSAC(RANdom SAmple Consensus) 알고리즘의 변형입니다.

예제

[model,inlierIndices,outlierIndices] = pcfitsphere(___)는 포인트 클라우드 입력값에 있는 정상값과 이상값 점에 대한 선형 인덱스를 추가로 반환합니다.

[model,inlierIndices,outlierIndices,meanError] = pcfitsphere(___)는 위에 열거된 구문 중 하나를 사용하여 정상값 점부터 모델까지의 거리의 평균 오차를 추가로 반환합니다.

[___] = pcfitsphere(___,Name=Value)는 위에 열거된 구문의 인수 조합 외에 하나 이상의 이름-값 인수를 사용하여 옵션을 지정합니다. 예를 들어, MaxNumTrials=1000은 최대 무작위 시행 횟수를 1000으로 설정합니다.

예제

모두 축소

포인트 클라우드를 작업 공간으로 불러옵니다.

load("object3d.mat");

포인트 클라우드를 표시하고 Figure에 레이블을 지정합니다.

figure
pcshow(ptCloud)
title("Detect a sphere in a point cloud")

Figure contains an axes object. The axes object with title Detect a sphere in a point cloud contains an object of type scatter.

구 피팅에 사용할 최대 점-구 거리를 1cm로 설정합니다.

maxDistance = 0.01;

관심 영역을 설정하여 탐색을 제한합니다.

roi = [-inf,0.5;0.2,0.4;0.1,inf];
sampleIndices = findPointsInROI(ptCloud,roi);

포인트 클라우드에서 지구본을 검출하고 추출합니다.

[model,inlierIndices] = pcfitsphere(ptCloud,maxDistance,SampleIndices=sampleIndices);
globe = select(ptCloud,inlierIndices);

추출된 지구본을 플로팅합니다.

figure
pcshow(globe)
title("Globe Point Cloud")

Figure contains an axes object. The axes object with title Globe Point Cloud contains an object of type scatter.

입력 인수

모두 축소

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

정상값 점부터 구까지의 최대 거리로, 스칼라 값으로 지정됩니다. 포인트 클라우드에 사용하는 단위와 일치하는 단위로 거리를 지정합니다.

데이터형: single | double

이름-값 인수

모두 축소

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

예: MaxNumTrials=1000은 최대 무작위 시행 횟수를 1000으로 설정합니다.

입력 포인트 클라우드에서 샘플링할 점의 선형 인덱스로, 열 벡터로 지정됩니다. 벡터가 비어 있으면 구 피팅을 위한 RANSAC 반복에서 모든 점이 샘플링 후보임을 의미합니다. 서브셋을 지정하면 모델 피팅 시 서브셋에 포함된 점만 샘플링됩니다. 점의 서브셋을 제공하면 처리 속도를 크게 높이고 시행 횟수를 줄일 수 있습니다. pointCloud 객체의 findPointsInROI 객체 함수를 사용하여 인덱스 벡터를 생성할 수 있습니다.

정상값을 찾기 위한 최대 무작위 시행 횟수로, 양의 정수로 지정됩니다. 이 값을 늘리면 출력값이 더 견고해지지만 추가적인 계산이 필요합니다.

최대 정상값 수를 찾기 위한 신뢰 백분율로, (0 100) 범위의 백분율을 나타내는 숫자형 스칼라로 지정됩니다. 이 값을 늘리면 출력값이 더 견고해지지만 추가적인 계산이 필요합니다.

출력 인수

모두 축소

구의 기하학적 모델로, sphereModel 객체로 반환됩니다.

입력 포인트 클라우드에 유효한 점이 충분하지 않거나 함수에서 충분한 정상값 점을 찾을 수 없는 경우 출력 모델 계수는 0으로 설정됩니다.

입력 포인트 클라우드 내 정상값 점의 선형 인덱스로, 열 벡터로 반환됩니다.

입력 포인트 클라우드 내 이상값 점의 선형 인덱스로, 열 벡터로 반환됩니다.

정상값 점부터 모델까지의 거리의 평균 오차로, 스칼라 값으로 반환됩니다.

참고 문헌

[1] Torr, P. H. S. and A. Zisserman. “MLESAC: A New Robust Estimator with Application to Estimating Image Geometry.” Computer Vision and Image Understanding. 2000.

확장 기능

모두 확장

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

버전 내역

R2015b에 개발됨