WHITE BOX DETECTION — THREE METHODS
METHOD 01
テンプレートマッチング
古い3枚
FAILED → 54mm offset / 廃止
0.547
MAX SCORE
TEMPLATES
white_box.png + auto学習2枚。いずれもマット位置変更・homography再キャリブより前の撮影。
SCORES
3枚×5スケール=15通り、全て0.44〜0.55の団子状態。最大スケール1.30が選ばれる=テンプレートが実物より小さい。
RESULT
Blue枠が実物より一回り大きくマッチ。Unity座標で54mmズレ。アームの白筐体誤検出ではないが、精度不足。
ROOT CAUSE
データ(テンプレート)が現環境と合っていない。方式の問題ではなかった。
METHOD 02
OpenCV HSV白色マスク
WORSE → アーム筐体を誤検出 / 廃止
N/A
MAX SCORE
METHOD
HSV [0,0,180]〜[180,50,255] で白抽出 → モルフォロジー → マット範囲クリップ → 最大面積輪郭。
RESULT
ロボットアームの白い筐体がマット上に侵入しており、最大の白色領域として検出される。実物の白箱は無視。914行→808行に削減したが機能的に退行。
ROOT CAUSE
「白い」だけでは白箱とアームを区別できない。マット範囲フィルタでも「マット上のアーム」は除外不可。
DEBUG
_save_white_debug() で白色マスクを可視化。アーム筐体が広大な青領域として塗りつぶされているのを確認。
METHOD 03
テンプレートマッチング
新規12枚 + ROIクリップ
SUCCESS → pixel-perfect / 採用
0.994
MAX SCORE
CHANGE
cv2.matchTemplate をマット範囲ROI内でのみ実行。ROI座標+min_x/min_yでframe座標に復元。
TEMPLATES
現環境で撮影した12枚(四隅・四辺・中央の3×4グリッド、向き0°/15°/30°/45°を循環)。capture_white_box_templates.py で収集。
SCORES
複数テンプレートが0.8〜0.9台を出す冗長性。最高0.994はscale=1.00で発生(前回は1.30が最高だった)。
INSIGHT
方式ではなく、データを現環境に合わせて更新することで解決した。
TAP TO EXPAND