repose_angle_silhouette — DRIVE granular op

• 데이터 종류: image2d → table

• 호출: import fullseye as fs; fs.ledger.repose_angle_silhouette(side, *, threshold: 'float' = 0.5, toe_frac: 'float' = 0.15, apex_frac: 'float' = 0.15, min_points: 'int' = 8, correct_ground: 'bool' = False, method: 'str' = 'edge') -> 'dict'(구현을 직접 호출하려면 import granular; granular.repose_angle_silhouette(side, *, threshold: 'float' = 0.5, toe_frac: 'float' = 0.15, apex_frac: 'float' = 0.15, min_points: 'int' = 8, correct_ground: 'bool' = False, method: 'str' = 'edge') -> 'dict', 원장에서 가져오려면 opsdrive.get("repose_angle_silhouette"))

사용법

측면 영상(분체 피복률)에서 안식각 φ를 읽습니다 — 좌우 사면에 각각 직선을 피팅하고 밑자락과 꼭대기는 제외합니다.

절차(Sunday 외 2020 §5.3 의 방식을 규칙화): ① 열마다 가루 면의 높이 = 피복률이 threshold 를 밑도는 가장자리 화소의위치 + 그 피복률(부화소; method="edge", 기본) ② 지면 = 각 열의 가장 아래 교차(같은 보간) → measure.fit_line 으로지면의 기울기 β. method="column_sum" 은 피복률의 열 합(가장자리가 안티에일리어싱이면 엄밀한 부화소지만, 가루의 화소값이 1 에서 벗어나면 그 비율로 tan φ 가 어긋난다: 균일 잡음 ±0.1 을 [0, 1] 로 자르기만 해도 0.62 도 낮게 나왔다, 실측) ③ 꼭대기 = 높이가 최대인 열 ④ 지면으로부터의 높이가 toe_frac·H 이상·(1 − apex_frac)·H 이하인 점만을좌우 따로 fit_line(전최소제곱) ⑤ φ = 좌우의 평균.

• correct_ground: 기준면의 기울기 β 를 tan 의 뺄셈으로 제거한다(tan φ' = tan θ ∓ tan β; 전단형 datum 기울기에 대해 엄밀). 카메라의 롤이라면 각의 뺄셈이 옳고, 둘은 β = 5 도에서 1 도 이상 다르므로기본값은 제거하지 않는다. 좌우의 차 asymmetry_deg 가 클 때만 기준면을 의심한다.

• 반환: phi_deg, phi_left_deg, phi_right_deg, asymmetry_deg, ground_deg, height_px, base_px, apex_col, left_cols / right_cols(맞춘 열의 범위), rms_left / rms_right(직선으로부터의 잔차 [px]), n_left / n_right.

• Raises ValueError: 이미지가 아님 / 피복률이 [0, 1] 밖 / 가루가 찍혀 있지 않음 / 더미가 이미지의위·왼쪽·오른쪽 가장자리에 닿음(잘림) / 맞출 점이 min_points 미만(더미가 너무 작음) / toe_frac + apex_frac ≥ 1 / method 철자 오류.

분해능 기준(피복률에 균일 잡음 ±0.1, 4 각도 × 6 seed 의 실측): 더미 폭 400 px 에서 0.007 도, 50 px 에서 0.2 도, 25 px 에서 0.6 도.

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

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

• poc_granular_heap_repose — py -3.11 examples/poc_granular_heap_repose.py

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

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

같은 카테고리(granular)

heap_volume_cone · heap_mass · heap_volume_heightmap · beverloo_rate · beverloo_fit · discharge_synth · dispense_mass_from_video · hopper_discharge_rate


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

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