orientation op• Datenarten: signal × table → table
• Aufruf: import fullseye as fs; fs.ledger.camera_orientation_from_skyline(skyline_rows, K, sky_table, yaw_step_deg=1.0, pitch_range=(-15.0, 15.0), roll_range=(-10.0, 10.0), coarse_step_deg=2.5) (die Implementierung direkt: import geocam; geocam.camera_orientation_from_skyline(skyline_rows, K, sky_table, yaw_step_deg=1.0, pitch_range=(-15.0, 15.0), roll_range=(-10.0, 10.0), coarse_step_deg=2.5); aus dem Register: opsgeocam.get("camera_orientation_from_skyline"))
Bestimmt (yaw, pitch, roll) aus der Skyline eines Fotos (Zeile je Spalte) und der Skyline des DEM → table.
Macht man die Grenzpixel (u, v) des Fotos zu Kamerastrahlen und dreht sie mit einer Versuchspose in die Welt, wird jede Spalte zu einem Punkt (Azimut, Elevation). Der RMS der Differenz zwischen dieser Elevation und der in diesem Azimut aus der DEM-Skyline nachgeschlagenen Elevation ist die Kosten der Pose. yaw wird in Schritten von yaw_step_deg einmal ganz umlaufen, pitch und roll werden in Schritten von coarse_step_deg per Gittersuche abgetastet; vom Minimum aus wird mit Nelder–Mead auf stetige Werte verfeinert (scipy). Das Skyline-Matching von Baatz et al. 2012, eingeengt auf bekannte Position und 1 Kamera.
Die Mehrdeutigkeit wird zurückgegeben: die Kurve der besten Kosten pro yaw (yaw_profile_deg / yaw_profile_residual_deg) und die Differenz zwischen dem besten und dem 2. Tal, margin_deg (2. Tal = das Minimum, das mindestens 20° vom besten entfernt ist). Fotos, die nur flaches Land, symmetrische Grate oder einen Halbkreis zeigen, haben mehrere Täler und eine kleine margin. Liegt die margin etwa beim Residuum von coarse, ist die Ausrichtung nicht bestimmt (es wird nicht stillschweigend 1 zurückgegeben: ambiguous).
Args:
skyline_rows: (W,) Ausgabe von skyline_extract (Zeile pro Spalte).
K: (fx, fy, cx, cy).
sky_table: Ausgabe von dem_skyline.
yaw_step_deg / coarse_step_deg: Schrittweite des groben Gitters. pitch_range / roll_range: Suchbereich [Grad].
Returns:
table: yaw_deg / pitch_deg / roll_deg / residual_deg (Elevationsresiduum-RMS) /
margin_deg / runner_up_yaw_deg / ambiguous (bool) / yaw_profile_deg (M,) /
yaw_profile_residual_deg (M,) / n_columns.
• Leitfaden zur Familie geocam
• 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.
• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.
• poc_public_camera_heading — py -3.11 examples/poc_public_camera_heading.py
table als Eingabe)orientation)—
*Provenance: geocam.py — GEOCAM 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.