sun op• 資料種類:image2d → table
• 呼叫: import fullseye as fs; fs.ledger.sun_bloom_fit(image, threshold=0.97, ignore_top_rows=0, min_area=30, max_area_frac=0.15, min_rim_fraction=0.3)(要直接呼叫實作,import geocam; geocam.sun_bloom_fit(image, threshold=0.97, ignore_top_rows=0, min_area=30, max_area_frac=0.15, min_rim_fraction=0.3);從台帳取用則 opsgeocam.get("sun_bloom_fit"))
實拍中的太陽 = 使感測器飽和的光暈(bloom)(比圓盤大,大小隨曝光變化,會被影像邊緣或文字帶截斷)。 對最大的飽和團塊的邊緣擬合圓並回傳圓心 → table。團塊被截斷時重心會偏向截斷側的反方向(實測 15 px),因此 捨棄被截斷的邊緣(接觸影像外周與 ignore_top_rows 帶的像素),對剩餘的弧以代數最小平方(Kåsa 1976)擬合圓。
sun_pixel_position 是以「緊密的小圓盤」為前提、針對合成資料的門檻,在實拍的道路相機上會把台名的白色文字、交通標誌、白色車輛讀成太陽(Fintraffic 氣象相機上 24/24 誤判,2026-09-21)。本 op 不判定是太陽:
只回傳圓的中心與半徑、殘差、是否被截斷,是否為太陽由它是否依時刻移動來決定(camera_orientation_from_sun_candidates)。
Args:
image: (H, W) float,0~1。
threshold: 視為飽和的絕對值。
ignore_top_rows: 忽略上端多少列(台名等文字的帶)。
min_area: 團塊的最小像素數。
max_area_frac: 團塊的最大面積(相對於影像的比值)—— 拒絕整個天空過曝的照片。
min_rim_fraction: 未被截斷的邊緣需占圓周的多少比例以上(低於此則「截斷過多」而 ValueError)。
Returns:
table: u / v(圓心)/ r(半徑 px)/ rms_px(邊緣的半徑殘差)/ area(團塊像素數)/
clipped(1 = 邊緣某處被截斷)/ rim_fraction / centroid_u / centroid_v(用於比較的質心)。
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• 演算法的正典(作者、年份)與用途見上面的族使用指南。
• (尚無)
table 作為輸入)render_skyline_view · camera_orientation_from_skyline
sun)sun_position · sun_pixel_position · camera_orientation_from_sun · camera_orientation_from_sun_candidates
*Provenance: geocam.py — GEOCAM 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.