feature_register op• 데이터 종류: points × points → pose
• 호출: import fullseye as fs; fs.ledger.register_shot(src, dst, radius=None, normal_k=16, ratio=0.9, ransac_iters=2000, inlier_thr=None, refine_icp=True, max_kp=400, device='cpu', seed=0)(구현을 직접 호출하려면 import feat_shot; feat_shot.register_shot(src, dst, radius=None, normal_k=16, ratio=0.9, ransac_iters=2000, inlier_thr=None, refine_icp=True, max_kp=400, device='cpu', seed=0), 원장에서 가져오려면 ops3d.get("register_shot"))
SHOT 기술자에 의한 희소 특징 매칭 + RANSAC 강체 자세 추정(전체 파이프라인).
초기 추정 없이 대회전·부분 중첩인 2 개 점군을 대응시켜 강체 변환(회전 R + 병진 t)을 반환한다. 밀집 매칭(NCC/Hough/PCA)과 달리 ISS 키포인트마다 국소 참조 프레임(LRF)을 세우고, 구형 분할 셀의법선 각도 히스토그램(SHOT)으로 기술 → Lowe 비율 테스트 + 상호 최근접으로매칭 → RANSAC으로 이상값에 강건하게 자세를 추정한다. 얻은 자세는 ICP의거친 초기값(coarse init) 공급에도 쓸 수 있다.
LRF의 부호 모호성: 거리 가중 공분산의 고유벡터는 부호가 정해지지 않으므로, 각 축(x=최대, z=최소 고윳값)을 근방 벡터 (p_i-p)의 투영 다수파쪽으로 맞추고(Tombari의 부호 규칙), y=z×x로 오른손 좌표계를 구성한다. 점 법선도 같은 규칙으로근방 질량에서 멀어지는 방향(국소 바깥쪽)으로 통일하므로 회전에 공변이고 부분중첩에도 안정적이다. 두 점군에 동일한 규칙을 적용함으로써 기술자의 repeatability를 담보한다.
인수:
src, dst: (N,3)/(M,3) 점군(numpy 또는 torch). src를 dst에 맞춘다.
radius: SHOT 지지 반경. None이면 각 점군 자신의 bbox 대각선(작은 쪽)의 0.15 배
(결합 bbox는 병진으로 대각선이 부풀려져 스케일이 어긋나므로 쓰지 않는다).
normal_k: 법선 추정의 knn 수.
ratio: Lowe 비율 테스트 임계값(작을수록 엄격).
ransac_iters: RANSAC 반복 수.
inlier_thr: RANSAC 인라이어 거리. None이면 bbox 대각선의 0.03 배.
refine_icp: True이면 얻은 자세를 초기값으로 Trimmed ICP(icp_point2point_3d)로 정밀화.
max_kp: 키포인트 상한.
device: torch 디바이스("cpu" 등). SVD/ICP를 이 위에서 푼다.
seed: RANSAC 난수 시드.
반환값:
R: (3,3) numpy. dst ≈ src @ R.T + t를 만족하는 회전(icp와 같은 규약).
t: (3,) numpy. 병진.
info: dict. "n_kp_src","n_kp_dst","n_matches","n_inliers","inlier_ratio",
"icp_rmse"(refine_icp 시),"ok"(True=추정 성공; 인라이어<4는
신뢰 불가로 False + 단위 변환을 반환).
• blas_threads_and_memory — 행렬 분해가 느린 이유 — BLAS 스레드·캐시·메모리 배치
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• feature_register — py -3.11 examples_3d/feature_register.py
pose 를 입력으로 받는 것)fuse_to_voxel · pose_error · bundle_adjust · mean_reprojection_error · optimize_pose_graph · relative_pose · mean_edge_error · rotation_translation_error
feature_register)harris3d_keypoints · iss_keypoints · compute_fpfh · shot_descriptor · register_spin · register_fpfh
*Provenance: feat_shot.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.