rigid_flow — 3D scene_flow3d op

• Data kinds: points × points → pose

• Call: import fullseye as fs; fs.ledger.rigid_flow(pts0, pts1, max_iter: 'int' = 20) -> 'dict' (implementation को सीधे call करना हो तो import scene_flow3d; scene_flow3d.rigid_flow(pts0, pts1, max_iter: 'int' = 20) -> 'dict', registry से लेना हो तो ops3d.get("rigid_flow"))

• Ledger के ज़रिए return value: fullseye.ledger.rigid_flow(...) केवल घोषित out type pose का value लौटाता है (मूल function सहायक जानकारी भी लौटाता है)। जो हिस्सा छोड़ दिया गया है उसकी ज़रूरत हो तो fullseye.ledger.rigid_flow.raw(...) का उपयोग करें, या scene_flow3d.rigid_flow को सीधे call करें।

उपयोग

pts0 -> pts1 को समझाने वाली single rigid motion का अनुमान nearest-neighbour correspondence + Kabsch (ICP जैसा) से लगाता है।

Identity transform से शुरू करके, हर iteration में मौजूदा pose वाले point cloud से pts1 तक nearest neighbour correspondences लेता है, registration.kabsch से closed form में (R, t) निकालता है और जोड़ता जाता है। जब correspondence index पिछले iteration से मेल खाएँ (= convergence) या max_iter पर रुकता है। Convergence की जाँच केवल index की स्थिरता पर निर्भर है, इसलिए यह scale-invariant है (absolute epsilon इस्तेमाल नहीं होता)।

Args:

pts0: (N, 3) समय 0 का point cloud (N >= 3, rotation को अद्वितीय रूप से तय करने के लिए)।

pts1: (M, 3) समय 1 का point cloud (M >= 1, N से मेल खाना ज़रूरी नहीं)।

max_iter: ICP iterations की ऊपरी सीमा।

Returns:

dict: {"R": (3,3) rotation, "t": (3,) translation, "rmse": alignment के बाद point-nearest neighbour RMS दूरी}। R सच्चा rotation है (det=+1)। rmse मापा गया मान है (कोई हेराफेरी नहीं)।

Raises:

ValueError: गलत shape, pts0 < 3 points, या pts1 खाली।

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• scene_flow_rigid — py -3.11 examples_3d/scene_flow_rigid.py

वे अगले ops जिनसे type जुड़ता है (pose को input के रूप में लेते हैं)

fuse_to_voxel · pose_error · bundle_adjust · mean_reprojection_error · optimize_pose_graph · relative_pose · mean_edge_error · rotation_translation_error

इसी category के (scene_flow3d)

nearest_neighbor_flow · smooth_flow


*Provenance: scene_flow3d.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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