skyline_extract — GEOCAM skyline op

• Data kinds: image2d → signal

• Call: import fullseye as fs; fs.ledger.skyline_extract(image, sky_is_bright=True, smooth=1.5, max_jump=3, jump_penalty=0.5) (implementation को सीधे call करना हो तो import geocam; geocam.skyline_extract(image, sky_is_bright=True, smooth=1.5, max_jump=3, jump_penalty=0.5), registry से लेना हो तो opsgeocam.get("skyline_extract"))

उपयोग

photo से dynamic programming द्वारा हर column के लिए आकाश–terrain सीमा की row वाली 1 line निकालता है → signal (W,)।

Lie, Lin और Hsu 2005 (*Pattern Recognition*: navigation के लिए robust skyline extraction) जैसा ही विचार:

vertical दिशा में brightness के बदलाव (आसमान ऊपर ज़्यादा bright हो तो I[v−1] − I[v+1] positive) को "boundary जैसापन" माना जाता है, और उन continuous paths में से, जिनमें पास के column से row max_jump या उससे ज़्यादा नहीं उछलती, सबसे कम cost वाला चुना जाता है (jump_penalty × row की उछाल)। बादलों या इमारतों के vertical किनारों पर locally तेज़ response आए तब भी path की continuity असली ridge line को बचाए रखती है।

Args:

image: (H, W) float। RGB हो तो पहले grey में बदला जाता है।

sky_is_bright: आसमान terrain से ज़्यादा bright है (दिन)। रात के दृश्य या backlight से उलटा हो तो False।

smooth: vertical दिशा का Gaussian σ [pixels] (noise)। 0 पर बंद।

max_jump: पास के columns के बीच अनुमत row की उछाल [pixels]।

jump_penalty: हर 1 pixel उछाल की cost (boundary जैसापन 0 से 1 पर normalise है)।

Returns:

signal (W,) float: हर column की boundary वाली row (0 सबसे ऊपर)। जिनमें केवल आसमान या केवल terrain दिखता है ऐसी images में boundary response कमज़ोर होता है और path की औसत cost 0 के पास होती है, इसलिए ValueError

से रुकता है (चुपचाप noise की line नहीं लौटाता)।

उपयोग की विस्तृत guide

• geocam family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_public_camera_heading — py -3.11 examples/poc_public_camera_heading.py

वे अगले ops जिनसे type जुड़ता है (signal को input के रूप में लेते हैं)

sun_position · camera_orientation_from_sun · camera_orientation_from_sun_candidates · camera_orientation_from_skyline

इसी category के (skyline)

dem_skyline · render_skyline_view


*Provenance: geocam.py — GEOCAM operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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