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"))

• GPU: 없음(CPU 참조 구현만)

사용법

사진에서 열마다의 하늘과 지형 경계의 행을 동적 계획법으로 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 패밀리 가이드

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL 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 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

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