plane_sweep_depth — 3D plane_sweep_stereo op

• Data kinds: image2d × image2d → depth

• Call: import fullseye as fs; fs.ledger.plane_sweep_depth(img_ref: 'np.ndarray', img_src: 'np.ndarray', K: 'np.ndarray', R: 'np.ndarray', t: 'np.ndarray', depth_candidates, window: 'int' = 1, normal=(0.0, 0.0, 1.0)) -> 'np.ndarray' (implementation को सीधे call करना हो तो import plane_sweep; plane_sweep.plane_sweep_depth(img_ref: 'np.ndarray', img_src: 'np.ndarray', K: 'np.ndarray', R: 'np.ndarray', t: 'np.ndarray', depth_candidates, window: 'int' = 1, normal=(0.0, 0.0, 1.0)) -> 'np.ndarray', registry से लेना हो तो ops3d.get("plane_sweep_depth"))

उपयोग

plane-sweep stereo से dense depth map का अनुमान लगाता है। → (H,W) depth।

हर depth plane पर src को ref की ओर warp करता है, और हर pixel के लिए न्यूनतम photo-consistency वाली candidate depth चुनता है (winner-take-all)। सभी candidates में field of view के बाहर रहने वाले pixels NaN होते हैं। fail-closed (खाली/non-2D/shape मेल नहीं/non-positive depth)।

• img_ref / img_src: एक ही shape के (H,W) grayscale float। reference camera [I|0] है, source P_src = K [R|t] है (X_src = R X_ref + t)।

• K: साझा (3,3) intrinsic matrix (singular हो तो ValueError)।

• depth_candidates: reference camera coordinates में धनात्मक finite depths का क्रम (D)। लौटाई गई depth हमेशा इन्हीं में से कोई एक होती है, और quantization error लगभग candidate spacing जितना होता है। सामान्य तरीका है कि candidates पास की दूरी पर घने (inverse depth में बराबर अंतराल) लिए जाएँ।

• window: cost का box aggregation size (default 1 = हर pixel का absolute difference)। 2 या अधिक पर window के अंदर का SAD, valid pixels की संख्या से normalise किया गया मान बन जाता है, जो कम texture वाले क्षेत्रों में स्थिर है पर steps को धुंधला करता है। 1 से कम पर ValueError।

• normal: sweep plane का normal (default (0,0,1) = fronto-parallel)।

return value (H,W) float है। सभी candidates में src के field of view के बाहर पड़ने वाले pixels (cost ∞) NaN होते हैं। स्थिर brightness वाले क्षेत्रों में सभी candidates की cost बराबर होती है और argmin पहला candidate लौटाता है, इसलिए बिना विश्वसनीयता वाली depths मिल जाती हैं। cost volume (D,H,W) स्वयं चाहिए हो तो उसी module का cost_volume उपयोग करें। प्राप्त depth को depth_to_points से point cloud में बदला जा सकता है।

पृष्ठभूमि guides (इस op के पीछे की physics और conventions)

• depth_sensors — Depth sensors — ranging के सिद्धांत, असली devices के आँकड़े, dropouts कैसे दिखते हैं

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

• plane_sweep_depth — py -3.11 examples_3d/plane_sweep_depth.py

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

depth_to_points · tsdf_from_depth · to_points · fuse_to_voxel · depth_to_organized_points · normals_from_depth · occlusion_edges · bearing_angle_image

इसी category के (plane_sweep_stereo)

warp_by_plane


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

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