はじめに
実例とありますが、
私が用意したデータに対して私がやりたいことを実現していった例となりますのでご了承ください。
今回はウッドブロックの形と穴の有無を検出していきたいと思います。
まずは画像加工と形状抽出で検出していきたいと思います。
画像加工と形状抽出で穴あき四角形ウッドブロックを検出
-
ノイズ除去用の画像加工を追加
-
画像加工の設定
ウッドブロックの部分だけ抽出したいので二値化します。
しかし、つぶつぶのノイズが入り込んでしまいました。
なので、オープニングという処理を追加してノイズを除去します。
すると綺麗につぶつぶのノイズを消すことが出来ました。
オープニング処理とは白い領域を一度収縮してから膨張させる処理でして、
小さい領域は収縮したときに消えてしまうので膨張できず、
元々大きい領域は収縮した後に膨張するので概ね元通りの形になるという処理です。 -
穴あきの四角形を検出する形状抽出を追加
-
形状抽出の設定
画像加工でノイズ除去したおかげで綺麗にウッドブロックの輪郭が取れています。
まずはこの中から穴のあるブロックだけ見つけ出したいと思います。
穴数ブロック追加して穴の最小数と最大数を1にします。
すると穴のあるブロックだけ残すことが出来ました。
次は四角形だけ残したいと思います。
多角形近似ブロックを追加して辺の数を4にします。
すると四角形が取れていますが、余計なものも取れてしまっています。
近似したものを全て許容している状態になっているので、
辺の長さの許容範囲を指定して、余計なものを取り除いていきます。
今回は辺の最小長を200、最大長を350としました。
これで目的の穴あき四角形のみを検出することが出来ました。
次は領域検出と形状抽出を組み合わせて検出していきたいと思います。
画像加工でのノイズ除去が難しい場合はこちらの組み合わせの方が良いと思います。
領域検出と形状抽出で穴なし三角形ウッドブロックを検出
-
ウッドブロック検出用の領域検出を追加
-
ウッドブロック検出のアノテーション及び学習
ここでは結果だけ表示します。
ノイズが無く、穴もちゃんと空いていますね。 -
穴なし三角形を検出する形状抽出を追加
-
穴なし三角形を検出する形状抽出の設定
領域検出の結果に対して輪郭を検出したいと思います。
ここで気を付けなければならないのは、
最初は入力輪郭タイプが画像になっているのでスコアマップに変更する必要があります。
すると綺麗にウッドブロックの輪郭を検出することが出来ました。
次に穴数0のウッドブロックを検出します。
しかし、穴なし六角形が取れず、穴あき六角形に小さいノイズがあることがわかりました。
ちょっと六角形の学習が甘かったみたいです。
そのため入力輪郭の閾値を調整します。
今回は0.5から0.33に変更しました。
すると六角形が正しく取れるようになりました。
最後に三角形だけ残したいと思います。
多角形近似を追加して、辺の数3、最小長200、最大長600とします。
これで目的の穴なし三角形のみを検出することが出来ました。
動画版もあります。
ウッドブロックの例は以上となります。