Main Content

projectLidarPointsOnImage

영상 좌표 프레임에 라이다 포인트 클라우드 데이터 투영

R2020b 이후

설명

예제

imPts = projectLidarPointsOnImage(ptCloudIn,intrinsics,tform)은 라이다 센서와 카메라 간의 강체 변환 tform과 일련의 카메라 내부 파라미터 intrinsics를 사용하여 영상 좌표 프레임에 라이다 포인트 클라우드 데이터를 투영합니다. 출력 imPts는 영상 프레임에 투영된 점들의 2차원 좌표를 포함합니다.

imPts = projectLidarPointsOnImage(worldPoints,intrinsics,tform)은 세계 프레임의 3차원 좌표로 지정된 라이다 점들을 영상 좌표 프레임에 투영합니다.

[imPts,indices] = projectLidarPointsOnImage(___)는 위에 열거된 구문의 입력 인수를 조합하여, 포인트 클라우드에서 투영된 점들의 선형 인덱스를 반환합니다.

[___] = projectLidarPointsOnImage(___,Name,Value)는 위에 열거된 구문의 인수 조합 외에 하나 이상의 이름-값 인수를 사용하여 옵션을 지정합니다. 예를 들어 'ImageSize',[250 400]은 점들이 투영될 영상의 크기를 250×400 픽셀로 설정합니다.

예제

모두 축소

MAT 파일에 있는 ground truth 데이터를 작업 공간으로 불러옵니다. ground truth 데이터에서 영상 데이터와 포인트 클라우드 데이터를 추출합니다.

dataPath = fullfile(toolboxdir('lidar'),'lidardata','lcc','sampleColoredPtCloud.mat');
gt  = load(dataPath);
img = gt.im;
pc = gt.ptCloud;

ground truth 데이터에서 카메라 내부 파라미터를 추출합니다.

intrinsics = gt.camParams;

ground truth 데이터로부터 카메라에서 라이다로의 변환 행렬을 추출하고, 역변환하여 라이다에서 카메라로의 변환 행렬을 구합니다.

tform = invert(gt.tform);

포인트 클라우드 데이터를 다운샘플링합니다.

p1 = pcdownsample(pc,'gridAverage',0.5);

영상 프레임에 포인트 클라우드를 투영합니다.

imPts = projectLidarPointsOnImage(p1,intrinsics,tform);

투영된 점들을 영상에 겹칩니다.

figure
imshow(img)
hold on
plot(imPts(:,1),imPts(:,2),'.','Color','r')
hold off

Figure contains an axes object. The axes object contains 2 objects of type image, line. One or more of the lines displays its values using only markers

입력 인수

모두 축소

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

세계 좌표 프레임의 점들로, M×3 행렬 또는 M×N×3 배열로 지정됩니다. M×3 행렬을 지정하는 경우, 각 행은 총 M개 점을 포함하는 비정렬 포인트 클라우드에 있는 한 점의 3차원 세계 좌표를 포함합니다. M×N×3 배열을 지정하는 경우, M과 N은 각각 정렬 포인트 클라우드의 행 개수와 열 개수를 나타냅니다. 배열의 각 채널은 해당 점의 3차원 세계 좌표를 포함합니다.

데이터형: single | double

카메라 내부 파라미터로, cameraIntrinsics 객체로 지정됩니다.

라이다에서 카메라로의 강체 변환으로, rigidtform3d 객체로 지정됩니다.

이름-값 인수

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

예: ImageSize=[250 400]은 점들이 투영될 영상의 크기를 250×400 픽셀로 설정합니다.

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

예: 'ImageSize',[250 400]은 점들이 투영될 영상의 크기를 250×400 픽셀로 설정합니다.

영상 좌표 프레임에 투영하기 위해 선택한 인덱스로, 양의 정수로 구성된 벡터로 지정됩니다.

데이터형: single | double

점들이 투영되는 영상의 크기로, [width height] 형식의, 요소를 2개 가진 행 벡터로 지정됩니다(단위: 픽셀). 이 함수는 지정된 크기를 사용하여 카메라의 시야에 들어오지 않는 투영된 점들을 필터링합니다.

'ImageSize' 인수를 지정하지 않으면 함수는 카메라 내부 파라미터 intrinsics에 있는 ImageSize 속성을 사용하여 카메라의 시야를 추정합니다.

참고

디폴트 인수보다 큰 'ImageSize' 인수를 지정하면 함수는 디폴트 인수를 사용합니다.

데이터형: single | double

출력 인수

모두 축소

영상에 투영된 점들로, M×2 행렬로 반환됩니다. 각 행은 영상 프레임의 한 점인 [x y] 형식의 2차원 좌표를 포함합니다.

데이터형: single | double

포인트 클라우드의 투영된 점들의 선형 인덱스로, 양의 정수로 구성된 벡터로 반환됩니다.

데이터형: single | double

확장 기능

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

버전 내역

R2020b에 개발됨

모두 확장