skyline_extract — GEOCAM skyline op

• 資料種類:image2d → signal

• 呼叫: import fullseye as fs; fs.ledger.skyline_extract(image, sky_is_bright=True, smooth=1.5, max_jump=3, jump_penalty=0.5)(要直接呼叫實作,import geocam; geocam.skyline_extract(image, sky_is_bright=True, smooth=1.5, max_jump=3, jump_penalty=0.5);從台帳取用則 opsgeocam.get("skyline_extract"))

用法

以動態規劃從照片中擷取 1 條每欄的天空與地形分界所在列 → signal (W,)。

與 Lie、Lin、Hsu 2005(*Pattern Recognition*:用於導航的穩健天際線擷取)相同的思路:

把垂直方向的亮度變化(若天空在上方且較亮,則 I[v−1] − I[v+1] 為正)作為「邊界相似度」, 在相對相鄰行的列跳變不超過 max_jump 的連續路徑中選出代價最小的一條(jump_penalty × 列的跳變)。即使雲或建築物的垂直邊緣產生局部強響應,路徑的連續性也會保留真正的稜線。

Args:

image: (H, W) float。RGB 則先轉為灰階。

sky_is_bright: 天空比地形亮(白天)。夜景、逆光導致反轉時為 False。

smooth: 縱向的 Gaussian σ [像素] (雜訊)。0 為停用。

max_jump: 相鄰行之間允許的列跳變 [像素]。

jump_penalty: 每跳變 1 像素的代價(邊界相似度已正規化到 0~1)。

Returns:

signal (W,) float: 每行邊界所在的列(0 為最上端)。對只拍到天空、或只拍到地形的影像,邊界響應弱,路徑平均代價接近 0,因此以 ValueError

終止(不默默回傳雜訊的線)。

詳細使用指南

• geocam 族使用指南

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

• 演算法的正典(作者、年份)與用途見上面的族使用指南。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• poc_public_camera_heading — py -3.11 examples/poc_public_camera_heading.py

型別可銜接的下一個運算子(可接受 signal 作為輸入)

sun_position · camera_orientation_from_sun · camera_orientation_from_sun_candidates · camera_orientation_from_skyline

同類別(skyline)

dem_skyline · render_skyline_view


*Provenance: geocam.py — GEOCAM 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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