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
終止(不默默回傳雜訊的線)。
• 範例資料目錄(下載 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.