structured_light op• Datenarten: images → image2d
• Aufruf: import fullseye as fs; fs.ledger.graycode_decode(bit_images, thresh=0.5) -> 'np.ndarray' (die Implementierung direkt: import fringe; fringe.graycode_decode(bit_images, thresh=0.5) -> 'np.ndarray'; aus dem Register: ops3d.get("graycode_decode"))
Eine Serie von Gray-Code-Bitbildern → eine ganzzahlige Streifenordnungskarte (die absolute Ordnung).
bit_images: Sequenz der Länge K (jeweils ein 2D-Bild, hell=1 / dunkel=0). MSB first (bit_images[0] ist
das höchstwertige Bit). Mit thresh binarisiert.
thresh: Binarisierungsschwellwert (Pixelwert >= thresh ergibt 1).
Verarbeitung: jede Bitebene binarisieren → Gray-Wert MSB first zusammensetzen → Gray→binary-Umwandlung
(binary = gray ^ (gray>>1) ^ ... ^ (gray>>(K-1))), zurückgegeben wird die absolute Ordnung (ganze Zahl).
Rückgabewert: 2D-Ordnungskarte vom dtype int64 (Wertebereich 0..2**K-1).
Prüfung (ValueError): None / nicht in (K, H, W) umwandelbar / K < 1 / K > 62 (passt nicht in int64) / enthält NaN oder Inf. thresh wird nicht geprüft (auf derselben Skala wie die Pixelwerte angeben; für ein [0, 1]-Bild ist 0.5 der Standard).
Binarisiert wird nur mit dem festen Schwellwert >= thresh -- kein Vergleich mit einem invertierten Muster (Negativbild) und kein lokaler Schwellwert. Pixel, die wegen Schatten oder geringer Reflexion dunkel ausfallen, werden als 0-Bits dekodiert und ergeben ohne Fehler eine falsche Ordnung; daher sollte der Aufrufer eine mit modulation o. Ä. erzeugte Vertrauensmaske separat bereithalten.
Bedeutung der Ordnung: benachbarte Gray-Codes unterscheiden sich in nur 1 Bit, daher verschiebt ein Binarisierungsfehler an einem Grenzpixel die Ordnung nur um ±1 (bei einem Binärcode würde sie weit springen). Die zurückgegebene ganze Zahl als Projektorspaltennummer oder absolute Streifenordnung für coarse von absolute_phase (als 2π * Ordnung in Phase umgerechnet) oder für column von triangulate_column verwenden.
• depth_sensors — Tiefensensoren — Messprinzipien, Werte realer Geräte, wie Messlücken entstehen
• 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.
• graycode_structured_light — py -3.11 examples_3d/graycode_structured_light.py
• structured_light_scan — py -3.11 examples_3d/structured_light_scan.py
image2d als Eingabe)fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade
structured_light)wrapped_phase · unwrap_phase_2d · decode_fringe · 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.