random_rotation — 3D augment op

• 데이터 종류: points → points

• 호출: import fullseye as fs; fs.ledger.random_rotation(points, seed: 'int' = 0, max_angle: 'Optional[float]' = None) -> 'Tuple[np.ndarray, np.ndarray]'(구현을 직접 호출하려면 import pcl_augment; pcl_augment.random_rotation(points, seed: 'int' = 0, max_angle: 'Optional[float]' = None) -> 'Tuple[np.ndarray, np.ndarray]', 원장에서 가져오려면 ops3d.get("random_rotation"))

• 원장 경유의 반환값: fullseye.ledger.random_rotation(...) 는 선언된 out 형 points 의 값만 반환합니다(실제 함수는 보조 정보도 반환). 버려진 쪽이 필요하면 fullseye.ledger.random_rotation.raw(...) 를 쓰거나 pcl_augment.random_rotation 를 직접 호출하세요.

• 실제 반환: (points, R)

사용법

무작위 회전을 적용하고 (rotated, R) 을 돌려줍니다(시점 변화 모사).

R 은 정규직교·det=+1(rotated = points @ R.T = 각 점에 R 을 왼쪽에서 작용, 역변환은 rotated @ R). max_angle=None 이면 Shoemake 법으로 균일 랜덤 회전, max_angle 지정(라디안, 기대 [0, π]) 시에는 축을 구면 균일·각을 [0, max_angle] 균일로 취해 회전각을 제한한다(arccos((tr R -1)/2) ≤ max_angle 를 엄밀히 보장).

max_angle < 0 은 ValueError, max_angle=0 은 단위 행렬. 단위는 라디안(도로넘기면 자릿수가 다르게 커진다). max_angle=None 의 균일 회전은 상한 π 까지의 큰 회전도흔히 나오므로, 시점 변화 범위를 좁히고 싶을 때는 max_angle 를 쓴다. 회전은 원점 주위이므로, 점군이 원점에서 떨어져 있으면 무게중심도 움직인다. R 의 규약 rotated = points @ R.T 는 register_fpfh·register_shot 이 반환하는 dst ≈ src @ R.T + t 와 같은 방향이므로, 추정 결과와의 각도 오차는 arccos((tr(R_est·Rᵀ)-1)/2) 로 잴 수 있다. seed 로 결정론적(같은 seed 면 같은 R). 반환값은 float64 의 (N,3) 와 (3,3).

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

• augment_pointcloud — py -3.11 examples_3d/augment_pointcloud.py

• sh_descriptor_retrieval — py -3.11 examples_3d/sh_descriptor_retrieval.py

• shape_retrieval — py -3.11 examples_3d/shape_retrieval.py

타입이 이어지는 다음 연산자(points 를 입력으로 받는 것)

points_to_voxel · gaussians_to_voxel · estimate_point_normals · to_points · match_points_ncc · match_pca · moment_axes · icp_point2point_3d

같은 카테고리(augment)

jitter · random_scale · random_dropout · elastic_deform · cutout


*Provenance: pcl_augment.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.