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 度。

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 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 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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