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.

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

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

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