3D 포인트 클라우드와 직육면체
PCD, PLY, LAS, KITTI 포인트 클라우드에 방향이 있는 3D 직육면체, 점, 폴리라인, 점별 세그먼트로 주석을 답니다. 옥트리 세부 수준, 슬랩 패널, 그리고 왕복을 견디는 쿼터니언 회전.
Potato는 라이다와 사진측량 포인트 클라우드에 방향이 있는 3D 직육면체, 점, 폴리라인, 점별 세그먼트로 브라우저 안에서 주석을 답니다. 옥트리 세부 수준 덕분에 수백만 점짜리 스캔도 노트북에서 반응성을 유지하고, 카메라 캘리브레이션이 모든 박스를 이미지에 투영하므로 3D에서 편집하면서 2D에서 확인할 수 있습니다.
annotation_schemes:
- annotation_type: spatial_annotation
name: objects
description: "Put a 3D box around every vehicle and pedestrian."
source_field: point_cloud
tools: [cuboid_3d, point_3d]
labels:
- {name: car, color: "#FF6B6B", key_value: "1"}
- {name: pedestrian, color: "#FFD93D", key_value: "2"}
color_mode: height
point_size: 2.0
max_points: 400000동작하는 예시: examples/spatial/kitti-cuboids/.
형식
클라우드는 서버에서 읽어 브라우저가 이해하는 하나의 조밀한 이진 형식으로 변환됩니다. 각 형식을 자바스크립트로 파싱하면 파서가 넷, 엔디안과 레코드 배치 버그가 네 벌이 되고, 게다가 페이지가 로드될 때마다 200만 점짜리 스캔을 다시 파싱하게 됩니다.
| 형식 | 비고 |
|---|---|
KITTI velodyne .bin | 원시 float32 x, y, z, intensity. 헤더 없음 |
| PCD | ascii, binary, binary_compressed(LZF) |
| PLY | ascii, binary_little_endian, binary_big_endian |
| LAS | 1.0부터 1.4까지, 점 레코드 형식 0 |
.xyz / .pts | 한 줄에 x y z [r g b] |
| LAZ | 직접 읽지 않습니다. 먼저 변환: laszip -i scan.laz -o scan.las |
형식이 색을 담고 있으면 색을 읽고, intensity는 KITTI, PCD, LAS에서 읽습니다. 색이 없는 파일에 color_mode: rgb를 요청하면 높이로 물러나면서 그 사실을 상태 줄에 밝힙니다. 요청한 모드처럼 보이는 무언가를 조용히 렌더링하지 않습니다.
도구
| 도구 | 그리는 것 |
|---|---|
cuboid_3d | 방향이 있는 3D 박스 |
point_3d | 단일 3D 점 |
polyline_3d | 클라우드를 가로지르는 경로 |
segment_3d | 선택한 점 집합에 대한 점별 라벨 |
회전은 요 각이 아니라 쿼터니언이다
Potato는 직육면체의 회전을 완전한 쿼터니언으로 저장합니다. 대부분의 형식은 요 하나만 저장하므로, 왕복에서 무언가를 잃기 전까지는 과잉 설계처럼 보입니다.
이 덕분에 KITTI 가져오기가 무손실이 됩니다. 요만 담는 필드가 아무 말 없이 버리는, 약 0.85°의 카메라-라이다 장착 기울기까지 포함해서입니다. KITTI로 되돌려 내보낼 때는 여전히 피치와 롤을 떨궈야 하지만, 박스를 조용히 평평하게 만드는 대신 얼마나 많은 방향 정보를 버렸는지 보고합니다.
Potato가 표현할 수 있는 것과 형식이 저장할 수 있는 것 사이의 간극은, 저장 계층에서 조용히가 아니라 형식별 코드에서 드러나게 건넙니다.
일치도는 정확한 회전 3D IoU로 잰다
같은 자동차에 박스를 치는 두 주석자가 같은 박스를 만들지는 않습니다. Potato는 정확한 회전 3D IoU로 일치도를 계산합니다. 이는 축에 정렬된 박스뿐 아니라 임의의 회전 아래에서도 옳습니다.
이것은 데이터가 수평이 아니게 되는 순간부터 문제가 됩니다. 드론, 손에 든 장비, 실내 스캔은 모두 실제 피치와 롤을 가진 박스를 만들고, 축에 정렬된 근사는 주석자가 아니라 측도 자체에서 비롯된 불일치를 보고합니다. 도형 일치도를 보십시오.
큰 규모에서 작업하기
- 옥트리 세부 수준은 기본으로 켜져 있습니다(
lod: true). 점은 영역별로, 거리별로 로드되므로 큰 스캔도 반응성을 유지합니다. max_points는 간축의 상한입니다. 데이터 설정이 아니라 뷰어 설정입니다.- 정사영 슬랩 패널(
mpr: true)은 정밀하고 전부 키보드로 조작하는 편집을 위한 축 정렬 뷰 세 개를 제공합니다. 한 면을 끌어도 반대편 면은 고정된 채 남습니다.
표시가 아니라 저장된 데이터에 영향을 주었기에 알아 둘 만한 버그가 하나 있습니다. segment_3d의 점 인덱스는 예전에 고정된 간축을 가정했고, max_points를 낮추면 기존 점별 라벨이 조용히 다른 점을 가리키게 되었습니다. 이제 인덱스는 원본 파일을 가리키므로, 뷰어 설정이 주석을 옮길 수 없습니다.
관련 문서
- 캘리브레이션과 2D 검증
- 깊이 맵 — 깊이를 같은 뷰어로 역투영합니다
- 도형 일치도
- 가이드: 포인트 클라우드 주석
- 소스 문서