エッジ抽出のやり方

エッジ抽出のやり方の一つとして、
今回は基板サンプルの上端エッジと下端エッジの抽出を例示します。

タスクコネクション

タスク説明
①「領域検出」タスクで、抽出したいエッジを含む領域(基板)を塗って学習する。

②「スコアマップ加工」タスクで、上端エッジ抽出を検出します。
「スコアマップ加工」タスクの構成は下記の通り。
image

まずは、二値化する。
image
image

ソーベルフィルターのX微分の次数「0」、Y微分の次数「1」で、設定して上端エッジを抽出する。
(但し、面積の小さいゴミは残る)
image
image

ブロブ解析で、面積の小さいゴミを削除する。(今回は最小サイズ10以下は削除)
image

③「スコアマップ加工」タスクで、下端エッジ抽出を検出します。
「スコアマップ加工」タスクの構成は2と同様のため、割愛。

二値化の部分で「反転」の項目にチェックを入れる。
image
image

ソーベルフィルターのX微分の次数「0」、Y微分の次数「1」で、設定して下端エッジを抽出する。
(但し、面積の小さいゴミは残る)
image

ブロブ解析で、面積の小さいゴミを削除する。

右端と左端の検出のやり方は?
ソーベルフィルターのX微分の次数「1」、Y微分の次数「0」で、右端と左端のエッジ抽出が可能です。

エッジ抽出して、どんなことに使えるの?
製品の包装フィルムのエッジ部を検出。
検出したエッジ部の「長さ」「傾き角度」「直線性」などを評価することで、フィルムがきれいに張り付いているか、などの包装フィルムの評価に使えます。

「いいね!」 1

検出したエッジ部の「長さ」「傾き角度」「直線性」の評価をするには、どういった手順で行えばよいのでしょうか?

ご質問、ありがとうございます。

■検査対象イメージ
「フィルム包装がくしゃっとなっていないか?正常に貼り付けされているか?」の検査をイメージしています。
「領域検出」でくしゃっとなったフィルム部を塗って学習させて判断するやり方もありますが、くしゃっとした形状には無数のパターンがあるため、「領域検出」で学習させるにはある程度の学習枚数が必要になります。
また、いざ塗ろうとしたけど、くしゃって部分は具体的にどこ?どこを塗って学習すれば良いの?ということにも悩むと思います。
なので、「領域検出」ではなく、ルールベースで代替して対処してみようといった試みになります。

■設定の手順
エッジ検出後に「形状抽出」のタスクを追加し、エッジ部の①傾き、②長さ、③直線性を評価します。

image

①傾きの「形状抽出」

image

置いた基板の傾きが0のものは、ほぼ傾き0の結果が出ます。
image

一方、斜めに置いた基板の傾きは、約10度との結果が出ました。
image

5度傾いたらNGと設定した場合、0度=OK判定、10度=NG判定と検査結果を分けることが出来ます。
image

②長さ、③直線性も同様のやり方で対処できます。
image

image

e$B$*@$OC$K$J$j$^$9!#e(B
e$B%j%s%J%$e(B e$BHSDM$G$9!#e(B

e$B2sEz$"$j$,$H$&$4$6$$$^$9!#e(B

e$B;29M$K$J$j$^$7$?!#e(B

e$B0J>e!"59$7$/$*4j$$CW$7$^$9!#e(B