decode_fringe — 3D structured_light op

Datenarten: imagesdepth

Aufruf: import fullseye as fs; fs.ledger.decode_fringe(phase_shift_images, ref_phase=None, k=1.0, mask=None, min_modulation=None) -> 'np.ndarray' (die Implementierung direkt: import fringe; fringe.decode_fringe(phase_shift_images, ref_phase=None, k=1.0, mask=None, min_modulation=None) -> 'np.ndarray'; aus dem Register: ops3d.get("decode_fringe"))

Verwendung

Decodiert eine Phasenschiebe-Bildserie in einem Zug: wrapped → Entfaltung → (per Referenzsubtraktion) Höhe.

> Die ausführliche Beschreibung unten ist der Originaltext — Zusammenfassung und Überschriften sind übersetzt.

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)`)。

引数:

• `phase_shift_images: (N, H, W)N >= 3`、等間隔位相シフト。

• `ref_phase: スカラまたは (H, W)`。参照面を同じ手順で展開した位相を

渡す(`unwrap_phase_2d` の大域オフセットが両者で同じ扱いになるよう、参照も

本 op で `ref_phase=None` として復号した結果を使うのが安全)。

• `k: 位相→高さの較正定数(単位/rad)。synthesize_fringes` の

`phase_gain` の逆数に対応。

• `mask: (H, W) の bool、True = 有効。min_modulation`: 変調度の下限

(`[0, 1]` 程度。影・飽和の画素を落とす)。

検証(`ValueError): 画像列が 3-D でない・N < 3・非有限 / mask` の形が

違う / `ref_phase` の形が違う / 有効画素がゼロ。scikit-image が無ければ

`RuntimeError`。

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

注意: 空間アンラップに依存するので、段差・オクルージョンで島に分かれた場面では

島ごとに `2πm k` の高さオフセットが残りうる。絶対高さが要る場面は

`graycode_decodeabsolute_phasetriangulate_column` の経路。

Hintergrundwissen (Physik und Konventionen hinter diesem Operator)

depth_sensors — 深度センサの知識 — 測距原理・実機の値・欠測の出方

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

structured_lightpy -3.11 examples_3d/structured_light.py

Typkompatible Folge-Operatoren (nehmen depth als Eingabe)

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

Gleiche Kategorie (structured_light)

wrapped_phase · unwrap_phase_2d · graycode_decode · synthesize_fringes · absolute_phase · triangulate_column


*Provenance: fringe.py — 3D Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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