同じ特徴の検知区別について

ブロック状のワークを数個横に並べて検査する方法で
ワークが隣接する境目とワークにある欠陥が酷似していて
欠陥の領域検出で境目も検知してしまうので
境目を検知する領域検出の下に欠陥の領域検出でマスクをかけると
逆に欠陥もマスクしてしまいます。

面積で閾値を設定しようにも境目の検知が途切れ途切れになる場合や欠陥のほうが大きくなる場合もあるので厳しいかなと思います。

画像加工でいろいろ試してみましたが、結局は同じ特徴のため区別することができないのですが何かいい方法はありますでしょうか?

ちなみにワークは3辺の形状が異なりますが、同モデルで検査したいので境目の位置は面を変えるごとに変わってしまうのでどうにか追従できる方法がいいと思っています。

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

ワーク単位で領域を分けてしまえば、境界部分を避けて欠陥部分のみを検出できるのではないかと思います。

以下の画像の白がワーク、ワーク内の黒が欠陥、ワーク外の黒を境界とした時に対しての失敗例と成功例を紹介いたします。
無題

タスクコネクション
image

失敗例

  1. 欠陥領域検出のアノテーション

  2. 欠陥領域検出の解析結果


    境界部分を検出してしまったので失敗です。

成功例

  1. ワーク検出のアノテーション

  2. ワーク検出の解析結果

  3. 欠陥領域のみ検出のアノテーション


    この時に解析領域を自動にして、検出対象をワーク領域のみに限定します。
    image

  4. 欠陥領域のみ検出の解析結果


    境界部分を除いた欠陥のみを検出することが出来ました。

なお、ワーク検出は形状によって解析領域の分離が難しいケースもあると思います。
そういった場合は、以下のように少し小さめにアノテーションを行ったり、


以下のトピックで紹介しているスコアマップ加工のオープニング処理などを行って領域を分離していただければと思います。
スコアマップ加工機能

ありがとうございます。

同じようにやってみたら理想の通りの検出結果になりました!

今までは境目の検知は背景も一緒に検出していたのでワーク検出に変えたことで軽くもなりました!

ずっと悩んでいたのでスッキリしました!

「いいね!」 1

境目をはっきりさせるためにワーク検出の前の画像加工タスクでオープニングを使うことで境目が分かりやすくなりワークを並べる度に発生してしまう若干の隙間も埋めてくれます。隙間があると最初の質問とは別の種類の欠陥と酷似しているのでこれまた誤検知してしまいます。

問題はオープニングの加工で隙間がしっかり埋まるのはいいのですが、入力画像時点で絶妙な隙間があると境目がわからない画像となりワーク検出で複数のワークが繋がる検出となってしまいます。

そうすると欠陥検出タスクでは入力画像を使っているので隙間を誤検知してしまうということに困っています。

他に最適な画像加工、またはアプローチの仕方はありますでしょうか?

現状を把握しきれていないですが、ワークの色が白黒であるならば容易に実現できます。

ワークの塗りつぶし例

  1. 上記で説明したタスクコネクションのワーク検出下に画像加工を配置します。

  2. 輪郭塗りつぶしの追加
    塗りつぶし前


    塗りつぶし後

    塗りつぶしたい領域の大きさは以下の最小/最大面積で指定できます
    image

塗りつぶしたい部分とそうでない部分があり、その領域の大きさが明確に異なるのであればこの方法で行けると思います。

この方法で解決しなかった場合は、お手数ですがコメントをお願いいたします。

ご回答ありがとうござます。

今のタスクコネクションを示します。

入力画像
(隣接するワーク同士の境目が隙間があったりぴったりくっついてたりとまちまち)

画像加工
(オープニング処理で隙間が埋まるかつ境目がはっきりとするが隙間幅によっては境目がわからなくなるものもある)

ワーク検出
(最初の質問でご回答いただいた例のように境目を除いたワーク部分だけを学習させるが境目がわからないような画像はワーク同士がつながった検出となってしまう)

欠陥検出(ワーク同士の隙間と酷似タイプ)
(ここでは入力画像を使用しているためワーク検出で繋がってしまったものは境目も含めた解析領域となるため入力画像で隙間があるものだと隙間を欠陥と誤検知してしまう)
(入力画像でないと欠陥が検知できない)

こんな感じです。

ワークは撮像する面を変えれば縦横の長さも変わるので固定解析領域は使えません。

誤検知しないためのなにかいい方法はありますでしょうか?

「いいね!」 1

画像加工のオープニングを無くせば上手く行きそうですが、ワーク検出で②と③が繋がってしまい、欠陥検出で②と③の間を誤検知してしまうということでしょうか

今のワーク検出の方法だとオープニングをしないと入力画像時点でワーク①②、ワーク③④間のように隙間があると欠陥検出でその隙間を誤検知します。
②③は隙間がないので誤検知しないです。

オープニングをしている理由は下図のような
境目が途中で切れているような画像でも境目がわかるようにするためです。(当然オープニング処理で欠陥は消えてしまうので欠陥タスクで入力画像を使用しています。)

言ってしまえばこの図が誤検知なく欠陥だけを検出できれば解決だと思っています。

「いいね!」 2

こちら、問題が複雑なので個別に対応いたします。