画像内の部品の検出を行いたいです
機械加工されたものなので形、サイズはほぼ同じですが
向きはばらばらです
あらかじめ登録しておいた基準となる部品の画像に対して
今回撮影した部品が画像内のx,y座標のどこにあって
基準の画像に対してどれだけ傾いているかθを検出したいのですが
OpenCVのどういった関数を使えば今回の目的が達成できますか?
画像例を示してください.
何らかの理由で示せないならばその旨を明記して,考えている実施環境に関する情報を述べるべきです.
例えば,
「平らな面に部品を1個置いた様子を撮影しており,部品を置く面というのは(その色か何かに基づいて)容易に背景として部品の領域とは区別できる想定である」
とかいう話なのか,
「背景と部品との領域の区別はわりとやっかいそうな様子である」という話かによって考えることは違うでしょうし.
「カメラの視野のどこに写るかによって,部品の見え方が割と変わる」とかであれば相応の面倒さがあるのかもしれませんし(e.g. 円柱を真上から見ればその像の形は円だが,視野の外周部に写る(≒斜め上から見る形になる)場合にはその像の形は円ではない)
今回検出したい物体は鉄(濃灰色)の単純な直方体の部品で
真上から見ると目印となる穴が1か所あります
穴は中央にあいていないため位相が存在し、その向きが知りたいです
部品を置く台は単純な平面で若干模様の入った白色であり
部品は穴の開いてる面が常に上を向くように置いてあり側面が上を向くことはありません
重なっていることもありません カメラの撮影範囲上、部品の側面は若干見えるかもしれません
上記の条件から前処理によるパラメータは試行錯誤で決めようと思いますが
今回の目的である座標と角度x,y,θを求めるアルゴリズムが知りたいです
輪郭抽出で空いている穴の座標を検出できるなら、「輪郭の中心→穴」 のベクトルの角度を求めれば、それがθになるのではないでしょうか
回答2件
あなたの回答
tips
プレビュー