camera_orientation_from_sun — GEOCAM sun op

• Datenarten: keypoints × signal → table

• Aufruf: import fullseye as fs; fs.ledger.camera_orientation_from_sun(sun_pixels, unix_times, lat_deg, lon_deg, K) (die Implementierung direkt: import geocam; geocam.camera_orientation_from_sun(sun_pixels, unix_times, lat_deg, lon_deg, K); aus dem Register: opsgeocam.get("camera_orientation_from_sun"))

• GPU: nein (nur CPU-Referenzimplementierung)

Verwendung

Zeitgestempelte Pixelpositionen der Sonne, ≥ 2 Punkte → Kameraorientierung (yaw, pitch, roll) (SVD-Lösung des Wahba-Problems = Kabsch).

Für jede Beobachtung, Pixel → Kamerakoordinatenstrahl d_c(von K), Zeit → globale Sonnenrichtung s_w(sun_position, Verwenden Sie einen Elevationswinkel mit Refraktion: Die Kamera sieht die scheinbare Sonne. „R = argmin Σ |R d_c − s_w|²“. Lösen Sie es in geschlossener Form mit SVD (Kabsch 1976 / Markley 1988) und zerlegen Sie es in „(yaw, pitch, roll)“.

Es wird eindeutig durch zwei Punkte bestimmt (erfordert eine Fläche, die sich in zwei Richtungen erstreckt). Wenn die Beobachtungen an einem Punkt oder alle in die gleiche Richtung erfolgen (kollinear) ValueError – Zum Beispiel zwei Fotos gleichzeitig oder viele Tage lang nur mittags. Die Richtung der Sonne ändert sich an einem Tag stark. Da es sich bewegt, benötigen Sie nur zwei Fotos vom selben Tag, eines morgens und eines abends.

Argumente:

sun_pixels: (u, v) von (N, 2). Die Ausgabe von „sun_pixel_position“ ist gestapelt.

unix_times: (N,) UNIX-Sekunden (UTC).

lat_deg, lon_deg: Kameraposition.

K: (fx, fy, cx, cy).

Rückgaben:

Tabelle: „yaw_deg“ / „pitch_deg“ / „roll_deg“ / „residual_deg“ (Strahl- und Sonnenrichtung).

RMS des Winkelresiduals)/ „max_residual_deg“ / „n“ / „Bedingung“ (Breite der Oberfläche in Beobachtungsrichtung =

Das Verhältnis des zweiten und größten Singulärwerts, der näher an 0 liegt, ist unbestimmt.

Ausführlicher Anwendungsleitfaden

• Leitfaden zur Familie geocam

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.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

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

• poc_public_camera_heading — py -3.11 examples/poc_public_camera_heading.py

Typkompatible Folge-Operatoren (nehmen table als Eingabe)

render_skyline_view · camera_orientation_from_skyline

Gleiche Kategorie (sun)

sun_position · sun_pixel_position · sun_bloom_fit · camera_orientation_from_sun_candidates


*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.