【画像処理ノウハウ】収縮とは

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

この記事ではルールベース・AIどちらでも重要度が高い前処理(フィルター処理)についての知識や検出アルゴリズムについてまとめています。特にルールベースにおける重要度では、前処理>検出アルゴリズムと考えています。

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

「収縮」とは、暗い部分を強調すること

収縮は中心画素から指定された範囲の周辺画素から、最も暗い画素に置き換える処理です。簡単に言えば、暗い部分が大きくなります。

収縮の処理方法

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

下の画像で比べてみましょう。右側の画像の方が、黒い画素がより大きく見えていると思います。これが収縮の効果です。

収縮処理後の画像を比較する

”3×3サイズ”については後述します。

ではこの「収縮」をどのように使えばいいでしょうか。

収縮を使うシーン:ナットの打痕を例に考える

ナットの打痕を例に見てみましょう。

ナットの打痕

この打痕は概ね黒く表示されていますが、中心部分がやや明るくなっているのが分かります。例えば、二値化でこの打痕を検出する場合、打痕の暗い部分は検出しやすいのですが、中心部分は少し明るいため検出しにくくなります。この場合、欠陥全体を捉えられず、検査が不安定になる可能性があります。

解決策として、「収縮」を適用することができます。やや明るい部分が暗くなってくれれば、検出は容易になるはずです。

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

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

フィルターサイズについて

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

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

サイズごとの処理効果を比べる

3×3や5×5では、黒い画素が大きくなっていますがまだ中心部に少し明るい画素が残っています。7×7になるとほぼ黒い画素で埋められており、安定した検出が見込まれます。

結果を確認する

オリジナル画像と処理後(7×7)を比べてみましょう。下段は2値化画像(閾値:80)です。

2値化して結果を比較する。

実際に2値化処理してみると、収縮した方がより打痕部分を塊として捉えることができ、検出が容易になりました。

Youtubeで解説動画をアップしました。併せてご覧ください。

注意

収縮を適用することで、暗い画素のノイズまで強調される場合があります。その場合はノイズを消すための処理も追加する必要があります。

他の処理との組合せでノイズを消す方法などは随時アップデートしていきます。

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

他の処理と組わせることで、より検査が安定することもあります。

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

下記フォームよりお気軽にお問い合わせください。

この記事を書いた人