【画像処理ノウハウ】膨張とは

初・中級者でもわかりやすくまとめました

この記事では画像・外観検査で使われる画像の前処理(フィルター処理)についての知識や検出アルゴリズムについてまとめています。特にルールベースにおける重要度では、前処理>検出アルゴリズムと考えています。

この記事では、初・中級者向けに
「仕組みや計算方法だけ書かれてもわからない…」
「どういうシーンで使うか、理解を深めたい」といったお悩みにこたえるまとめ方をしています。
*学術的な考え方についてはこの頁では記載しません。

「膨張」とは、明るい画素を大きくすること

膨張は中心画素から指定された範囲の周辺画素から、最も明るい画素を中心へ置き換える処理です。簡単に言えば、明るい部分が大きくなります。
埃の画像を例に見てみましょう。

膨張処理の仕組みを解説

この処理を全ての画素に行います。

次に2つの画像を比べてみましょう。
右側の画像の方が、白い画素がより大きく見えていると思います。
画像右上の明るい画素の塊と左下の明るい塊が「膨張」して接近しています。
これが膨張処理の効果です。

膨張処理の効果を説明

逆に白画素を小さくする処理は「収縮」と呼びます。黒画素を大きくすると言い換えることもできます。

収縮についてはこちらをご覧ください。

膨張を使うシーン:埃の検出で考える

例えば、この埃をブロブ検出(二値化で抽出)する場合、埃を1つの塊として検出することが理想ですが、下図のように部分的に埃が途切れてしまうことがあります。

二値化した画像

この場合、埃を安定して検出することが難しくなります。この問題を解決するため、膨張処理により明るい画素同士をつなげることが考えられます。

サイズを変えれば、明るい部分がより強調される

ところで、サイズ(青枠の範囲)は任意で設定することができます。

膨張処理のサイズ変更について

今回のケースで言えば、青枠の範囲を大きくするほど、埃の明るい画素がより大きくなります。埃がつながるよう、適切な数値を確認します。

サイズ(青枠の範囲)を変えた画像を見比べてみましょう。

膨張処理のサイズによる効果の違い

サイズが大きくなるほど、膨張し1つの塊として認識しやすくなっていそうです。

結果を確認する

実際に二値化処理にて確認してみましょう。下段は二値化画像(閾値:200)です。

膨張処理した画像を二値化画像で比較

膨張処理を11×11サイズで処理すると、埃が全体で繋がりました。
これで安定した検出が可能です。

膨張処理を使う目的は、大きく2つある

膨張や収縮を使うのは大きく2つのケースがあります。

  1. ノイズ消去
    黒ノイズなら膨張(黒い画素を小さくする)、白ノイズであれば収縮処理(白い画素を小さくする)をし、ノイズを消去します。
  2. 検出対象を膨張させ繋げる。
    今回のケースが該当します。対象を塊として認識しやすくさせる目的です。
    対象が途中で分断されると、面積値や長さで分類する際に検査が安定しなくなるため、
    その解決策として用います。

また、おそらく膨張・収縮処理はそれ単体で使うことは少ないと思います。
例えば、今回のケースで埃を膨張処理した結果、細かな白い画素までノイズとして強調されてしまうこともあり得ます。
これでは対象と塊として認識しやすくなっても、ノイズを誤検出するリスクが増えてしまいます。

これの問題を解決するため、膨張・収集はセットで使うこともあります。
このことは別記事にて解説したいと思います。

Youtubeで解説動画を上げています。併せてご覧ください。

前処理を使って検査を安定させよう

前処理はルールベースでもAIでも重要な処理です。これらを適切に扱うことで検査能力アップや安定性が向上します。

現在、検査装置でお困りごとはありませんか?
例えば、
「欠陥が未検出で流れてしまった」
「誤判定が多すぎて、検査機が使い物にならない」

お困りのことがありましたら、下記フォームよりお気軽にお問い合わせください。

この記事を書いた人