hole_detect — DRIVE kendama op

• 資料種類:image2d → table

• 呼叫: import fullseye as fs; fs.ledger.hole_detect(img, ball_center, ball_radius, *, dark_ratio: 'float' = 0.45, min_sat: 'float' = 0.35, min_chroma: 'float' = 0.1, min_area: 'int' = 3) -> 'dict'(要直接呼叫實作,import kendama; kendama.hole_detect(img, ball_center, ball_radius, *, dark_ratio: 'float' = 0.45, min_sat: 'float' = 0.35, min_chroma: 'float' = 0.1, min_area: 'int' = 3) -> 'dict';從台帳取用則 opsdrive.get("hole_detect"))

用法

在球的影像中尋找暗圓盤(劍尖的孔):在球心 ball_center (col, row)、影像半徑 ball_radius [px] 的圓內,亮度(RGB 平均)低於球亮度中位數的 dark_ratio 倍、飽和度 (max − min)/max ≥ min_sat(排除灰色的繩)、且色度(RGB / |RGB|)與球色度中位數相差 min_chroma 以上(處於陰影中的球面只是亮度降低而色度不變 —— 僅憑亮度擷取會把陰影誤認為孔,經實測後排除)的像素的連通分量中最大者。回傳 {"found", "col", "row", "angle" (球心 → 孔重心的影像角度 [rad], atan2(Δrow, Δcol)), "offset" (距離 / ball_radius: 0 = 正面, → 1 = 邊緣), "ellipticity" (短軸 / 長軸, 由 2 階矩求得: 1 = 正面的圓, → 0 = 正側面), "area" [px]}。找不到則 found 為 False(其餘為 NaN)。從正面看,孔的中心與球心重合,越轉向側面越靠近邊緣並被壓扁(offset ≈ sin φ,ellipticity ≈ cos φ,φ = 孔軸與視線的夾角)。若 img 不是 (H, W, 3) 或 ball_radius > 0 不成立則 ValueError。

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

• 演算法的正典(作者、年份)與用途見上面的族使用指南。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• poc_kendama — py -3.11 examples/poc_kendama.py

型別可銜接的下一個運算子(可接受 table 作為輸入)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

同類別(kendama)

kendama_params · elliptic_k_agm · pendulum_period_exact · pendulum_launch_speed · pendulum_rod_simulate · tether_tension_fixed · tether_slack_angle · swing_up_plan


*Provenance: kendama.py — DRIVE 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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