camera_orientation_from_skyline — GEOCAM orientation op

• 데이터 종류: signal × table → table

• 호출: import fullseye as fs; fs.ledger.camera_orientation_from_skyline(skyline_rows, K, sky_table, yaw_step_deg=1.0, pitch_range=(-15.0, 15.0), roll_range=(-10.0, 10.0), coarse_step_deg=2.5)(구현을 직접 호출하려면 import geocam; geocam.camera_orientation_from_skyline(skyline_rows, K, sky_table, yaw_step_deg=1.0, pitch_range=(-15.0, 15.0), roll_range=(-10.0, 10.0), coarse_step_deg=2.5), 원장에서 가져오려면 opsgeocam.get("camera_orientation_from_skyline"))

사용법

사진의 스카이라인(열마다의 행)과 DEM의 스카이라인으로부터 (yaw, pitch, roll)을 결정한다 → table.

사진의 경계 화소 (u, v) 를 카메라 광선으로 하고, 임시 자세로 월드로 돌리면, 각 열은 (방위, 앙각) 의 점이 된다. 그 앙각과, DEM 의 스카이라인을 그 방위에서 찾은 앙각의 차의 RMS 가 자세의 비용. yaw 를 yaw_step_deg 스텝으로 한 바퀴, pitch·roll 을 coarse_step_deg 스텝으로 격자 탐색하고, 최소의 점에서 Nelder–Mead 로 연속값으로 좁힌다(scipy). Baatz 등 2012 의 스카이라인 대조를, 위치 기지· 1 대의 카메라로 좁힌 형태.

모호함을 반환한다: yaw 마다의 최선 비용 곡선(yaw_profile_deg / yaw_profile_residual_deg) 과, 최선과 2 번째 골의 차 margin_deg(2 번째 골 = 최선에서 20° 이상 떨어진 최소). 평지· 대칭인 능선·반원밖에 찍히지 않는 사진에서는 골이 여러 개 있어, margin 이 작다. margin 이 coarse 의 잔차 정도라면 방향은 정해져 있지 않다고 읽는다(조용히 1 개를 반환하지 않는다: ambiguous).

Args:

skyline_rows: (W,) skyline_extract 의 출력(열마다의 행).

K: (fx, fy, cx, cy).

sky_table: dem_skyline 의 출력.

yaw_step_deg / coarse_step_deg: 거친 격자의 스텝. pitch_range / roll_range: 탐색 범위 [도].

Returns:

table: yaw_deg / pitch_deg / roll_deg / residual_deg(앙각 잔차 RMS)/

margin_deg / runner_up_yaw_deg / ambiguous(bool)/ yaw_profile_deg (M,) /

yaw_profile_residual_deg (M,) / n_columns.

자세한 사용 가이드

• 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

타입이 이어지는 다음 연산자(table 를 입력으로 받는 것)

render_skyline_view

같은 카테고리(orientation)

—


*Provenance: geocam.py — GEOCAM 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

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