skyline_extract — GEOCAM skyline op

• Datenarten: image2d → signal

• Aufruf: import fullseye as fs; fs.ledger.skyline_extract(image, sky_is_bright=True, smooth=1.5, max_jump=3, jump_penalty=0.5) (die Implementierung direkt: import geocam; geocam.skyline_extract(image, sky_is_bright=True, smooth=1.5, max_jump=3, jump_penalty=0.5); aus dem Register: opsgeocam.get("skyline_extract"))

• GPU: nein (nur CPU-Referenzimplementierung)

Verwendung

Extrahiert aus einem Foto per dynamischer Programmierung 1 Linie mit der Zeile der Grenze zwischen Himmel und Gelände für jede Spalte → signal (W,).

Dieselbe Idee wie Lie, Lin und Hsu 2005 (*Pattern Recognition*: Robust Skyline Extraction for Navigation):

Helligkeitsänderungen in vertikaler Richtung (wenn der Himmel darüber hell ist, ist „I[v−1] − I[v+1]“ positiv) werden als „Grenzähnlichkeit“ betrachtet, Wählen Sie unter aufeinanderfolgenden Pfaden, die nicht mehr als „max_jump“ Zeilen von der nächsten Spalte überspringen, den Pfad mit den niedrigsten Kosten aus („jump_penalty“ × Liniensprung). Auch wenn es an den vertikalen Rändern von Wolken oder Gebäuden zu einer lokal starken Reaktion kommt, wird der Pfad beeinträchtigt Kontinuität hinterlässt echte Gratlinien.

Argumente:

Bild: (H, W) float. Für RGB machen Sie es zuerst grau.

sky_is_bright: Der Himmel ist heller als das Gelände (tagsüber). Falsch, wenn es in der Nachtsicht/Hintergrundbeleuchtung umgekehrt ist.

glatt: Vertikales Gaußsches σ [Pixel] (Rauschen). 0 deaktiviert.

max_jump: Erlaubter Zeilensprung in benachbarten Spalten [Pixel].

jump_penalty: Kosten pro Sprungpixel (Grenzwahrscheinlichkeit wird von 0 auf 1 normalisiert).

Rückgaben:

Signal (W,) Float: Grenzzeile für jede Spalte (0 ist die oberste Zeile). ** Es wird nur der Himmel/die Topographie angezeigt

In Bildern, die nicht angezeigt werden, liegt die durchschnittliche Grenzantwort nahe bei 0, also ValueError

Stoppen Sie bei (Stille und kehren Sie nicht zur Lärmlinie zurück).

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 signal als Eingabe)

sun_position · camera_orientation_from_sun · camera_orientation_from_sun_candidates · camera_orientation_from_skyline

Gleiche Kategorie (skyline)

dem_skyline · render_skyline_view


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