scene_flow_lk — 3D motion op

• Data kinds: voxel × voxel → flow_dense

• Call: import fullseye as fs; fs.ledger.scene_flow_lk(vol0, vol1, device='cpu', win=3, levels=3, iters=3, reg=0.001) (implementation को सीधे call करना हो तो import match3d; match3d.scene_flow_lk(vol0, vol1, device='cpu', win=3, levels=3, iters=3, reg=0.001), registry से लेना हो तो ops3d.get("scene_flow_lk"))

• GPU: इस op का GPU path है (device="cuda")

उपयोग

Lucas-Kanade scene flow (2D optical flow का 3D संस्करण)। हर voxel का motion field d=(dz,dy,dx)।

template matching के विपरीत यह dense motion/deformation का अनुमान लगाता है। brightness constancy ∇I·d + I_t = 0 को window के भीतर least squares से per-voxel हल करता है (3x3 structure tensor A=Σ∇I∇Iᵀ, b=-Σ∇I·I_t, window sum वाले conv3d से)। pyramid + warp के coarse-to-fine से बड़े displacement संभालता है (हर level पर I1 को मौजूदा flow से वापस लाकर residual को बार-बार सुधारता है = Gauss-Newton)। vol1(x) ≈ vol0(x - d)। flow (3,D,H,W) लौटाता है। translation, expansion (divergence) और rotation (vortex) fields पकड़ता है।

मापा गया: uniform translation [1.5,-2,1] पर केंद्रीय क्षेत्र के औसत में error 0.044 voxel, expansion field में बाहर की ओर divergence सही पहचाना गया। grad_scale=32 sobel3d (deriv[-1,0,1]×smooth[1,2,1]²) का मापा गया scale है। GPU समर्थित (सब conv3d)।

Arguments: vol0, vol1 समान shape के 3-D हैं (अलग हों तो ValueError; NaN/Inf या float32 overflow पर भी ValueError)। win window की आधी चौड़ाई है (window की भुजा 2·win+1), levels pyramid के levels की संख्या है (हर level avg_pool3d से 2 गुना छोटा होता है; displacement जितना बड़ा, उतने अधिक levels), iters हर level के warp iterations, reg structure tensor के diagonal पर regularisation है (flat हिस्सों में 0 से भाग से बचाव; जितना बड़ा, flat हिस्सों का flow उतना 0 की ओर)। 1 iteration का update हर axis पर ±2 voxel तक clamp होता है। (3, D, H, W) float32 numpy लौटाता है, flow[0]=dz, flow[1]=dy, flow[2]=dx (voxel इकाई में)। vol1(x) ≈ vol0(x − d), यानी vol0 की संरचना +d खिसककर vol1 बनती है। किनारे border interpolation से भरे जाते हैं, इसलिए किनारे के 1-2 voxel के मानों पर भरोसा न करें। rigid motion का R,t चाहिए तो point cloud बनाकर icp_point2point_3d / fit_rigid में दें।

संदर्भ (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 करते हैं)

• motion_scene — py -3.11 examples_3d/motion_scene.py

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

fuse_to_voxel

इसी category के (motion)

—


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

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