fullseye

decode_fringe — 3D structured_light op

使い方

位相シフト画像列を一括復号: wrapped → unwrap →(参照減算で)高さ。

phase_shift_images: N-step 位相シフト縞画像列((N,H,W) または長さ N のシーケンス)。 ref_phase: 参照平面(高さ 0)のアンラップ済み位相。None なら高さ = k·(unwrapped)。 k: 位相→高さ較正定数。 mask: 省略可。True=有効画素。無効画素は NaN。 min_modulation: 省略可。指定すると modulation < この値の画素を低信頼として無効化。

返り値: 高さマップ(2D float)。ref_phase=None のときは k を掛けた連続位相を返す。 無効画素は NaN。

手順(実装どおり): wrapped_phase → 信頼マスクを組む(min_modulation が あれば modulation(stack) >= min_modulationmask があればそれと AND)→ unwrap_phase_2d(wrapped, mask=信頼マスク)ref_phaseNone なら k * unwrapped、あれば phase_to_height(k * (unwrapped - ref_phase))。

引数:

検証(ValueError): 画像列が 3-D でない・N < 3・非有限 / mask の形が 違う / ref_phase の形が違う / 有効画素がゼロ。scikit-image が無ければ RuntimeError

返り値: (H, W) float64。無効画素は NaN。単位は k の単位。

注意: 空間アンラップに依存するので、段差・オクルージョンで島に分かれた場面では 島ごとに 2πm k の高さオフセットが残りうる。絶対高さが要る場面は graycode_decodeabsolute_phasetriangulate_column の経路。

背景知識ガイド(この op の手前にある物理・規約)

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(depth を入力に取れる)

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

同カテゴリ(structured_light)

wrapped_phase · unwrap_phase_2d · graycode_decode · synthesize_fringes · absolute_phase · triangulate_column


Provenance: fringe.py — 3D operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

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