R&D
CENTER

円形でない部品を整列する — モーメントと主軸(PCA)

形状に関わらず、部品の向きをそろえると学習が安定します。1次・2次・3次モーメントで位置、向き、前後を決める方法をまとめました。

Image Processing Tool v1.6.1 で Shape (PCA) 整列を追加しました。従来の Ring 方式は円形の製品を前提としているため、シートベルトバックルのような任意形状の部品は向きを決められませんでした。

3つの段階で向きを決める

  1. 位置 — 画像モーメントの重心(1次モーメント)から部品の中心を求めます。
  2. 方向 — 2次モーメントから主軸を求めます。部品が最も長く伸びている方向です。
  3. 前後 — 主軸だけでは180°の曖昧さが残ります。3次モーメント(歪度)で質量が偏っている側を前方とします。

左右対称の部品でも、突起などの非対称な特徴によって向きが1つに定まります。

設定

[aligner]
method = shape
shape_axis = auto      ; auto | major | minor
open_ksize = 5         ; ノイズ除去(モルフォロジー open)カーネル
target_x = 0.5         ; 整列後の中心位置(0.5, 0.5 = 中央)
target_y = 0.5

検証

シートベルトバックル13枚すべてでタブが上を向くように整列し、平均中心誤差は約1.7px でした。この整列設定は Multi-Inspector の yolo_align モードでそのまま再利用されます。