fusion op• 資料種類:any × any → pose
• 呼叫: import fullseye as fs; fs.ledger.register_cross(src, src_kind, dst, dst_kind, method='fpfh', samples=15000, **kw)(要直接呼叫實作,import fuse3d; fuse3d.register_cross(src, src_kind, dst, dst_kind, method='fpfh', samples=15000, **kw);從台帳取用則 ops3d.get("register_cross"))
異構結構間的剛體配準。兩者轉為點雲 → 配準器(fpfh=大旋轉 / icp=需 coarse init)。
例: register_cross((verts,faces),"mesh", scan_pts,"points") 實現 CAD↔掃描對齊。回傳值 (R, t)。
步驟: 以 to_points(src, src_kind, samples, **kw) 與 to_points(dst, dst_kind, samples, **kw) 將兩者轉為點雲,由 method 選擇對位器。
• "fpfh"(預設): 以預設參數呼叫 feat_fpfh.register_fpfh(ps, pd) (FPFH 描述子 + RANSAC,無需初始位姿,適用於大旋轉、部分重疊)。
• "icp": match3d.icp_point2point_3d(ps, pd, iters=50)(最近鄰對應 + Kabsch)。不傳入初始位姿參數,因此前提是 src 接近 dst(大致對齊)。
• 其他值則 ValueError。
回傳值: (R, t) —— R 為 (3, 3)、t 為 (3,) 的 numpy 陣列(torch tensor 會轉換為 CPU 上的 numpy 後回傳)。慣例為 dst ≈ src @ R.T + t。
注意:
• **kw 會原樣傳給兩個 to_points(無法只給一側提供 "depth" 的 fx, fy, cx, cy 或 "voxel" 的 iso)。
• samples 是 "mesh" 的取樣數(預設 15000)。不檢查點雲的個數與形狀。
• 不吸收座標系的差異(參見 to_points: voxel 為 (z, y, x) index,depth 為相機 (x, y, z))。
• 若要收緊精度,以 fpfh 的結果為初始值直接呼叫 icp_point2point_3d。
• depth_sensors — 深度感測器知識 —— 測距原理、實機數值、缺測的表現
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• transforms_repr — py -3.11 examples_3d/transforms_repr.py
pose 作為輸入)fuse_to_voxel · pose_error · bundle_adjust · mean_reprojection_error · optimize_pose_graph · relative_pose · mean_edge_error · rotation_translation_error
fusion)*Provenance: fuse3d.py — 3D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.