【要注意】 外観検査の落とし穴 佐藤の失敗から学ぶ画像処理(異物と汚れ編)

画像検査を導入されている方々はこのような経験や思いを持ったことはないでしょうか?

「メーカーが調整してくれたのに、NG流出が発生してしまった。」
「細かい欠陥は検出したのに、なぜか大きな欠陥が検出出来なかった。」
「検出出来る欠陥と、出来ない欠陥の違いは何なんだろう?」

ユーザーは内部で処理されている原理や詳細が分かりにくいため、見逃しが発生すると非常に不安になりますよね。

私の経験上、主な原因は3つあります。

  1. 画像処理設定の作りこみの甘さ
    • 欠陥は把握できているが、最適な設定が出来ていない
  2. 製品自体や搬送の条件バラつき
    • 外部要因により、画像条件が変動し設定が安定しない
  3. ユーザーとメーカーの認識のギャップ
    • 発生し得る欠陥やトラブルの想定の甘さ

1.2.についてはユーザー・メーカーで共同で調整を追い込んでいくしかありませんが、
3.のケースは非常に厄介です。トラブルが起きるまで気づかないリスクがあります。

実は私自身が過去に3.にあたる失敗を犯したことがあります。
お恥ずかしい話しではありますが、私の実体験をみなさまも共有いただき、
問題が発生しない運用を進めて頂ければ幸いです。

見逃しが発生する要因とは

問題なく検査設定を作りこんだつもりだったが…

それは私が画像検査の仕事を初めて2年目の頃です。
当時、私は営業技術職でお客様からの検査依頼に対し評価・デモ・設備立ち上げを対応する立場でした。
私が担当したプロジェクトで1つで、不織布の製造メーカー様へラインスキャンカメラを使った検査システムを納入することになりました。

不織布工場
  • 検査仕様
    • ラインスキャンカメラ:2000画素モノクロ 合計4台
    • 検査対象:不織布
    • 搬送速度:50m/分
  • 検出対象は3つ
    • Φ0.5㎜の黒点
    • Φ2㎜ほどの穴
    • 毛髪

お客様から見本サンプルもお預かりし、検査設定を作りこみランニングチェックでも無事に検出可能と判断。
安心して横浜の自宅へ帰りました。
ところがお客様から連絡があったのは2日後のこと。

「大きな汚れが流出してしまった。すぐに来てくれ!」

そんなはずはないが…。疑問を持ちながらひとまず翌日急ぎで現場に向かうことになりました。

想定の甘さとお客様が考える検査機

工場に到着し、かなり険しい表情のお客様に連れられて現場に行く間は
「何が問題だったんだ?見せてもらったNGは全て検出できたはず・・・」と
冷や汗をかきながら考えていました。

現場に到着し、お客様から見せられた流出したワークは
今まで見たこともないような10センチに渡る大きな油汚れでした。
「えっ、こんなの見たことも指示されたこともない。今更そんなこと言われても・・・」
そんなことを考えていた若い私はそのまま口にしてしまいました。

私「いや、この欠陥は今まで拝見したことがないんですが…」

お客様「伝えてなくても、こんなに大きな汚れが検出できないなんておかしいだろ!!」

お客様の仰る通りで、Φ0.5㎜の異物が検出できるのに、10センチに渡る汚れが取れないなんて、お客様が分かるはずもありません。
そんなに大きな汚れは検出できて当たり前だと思うでしょう。
どんなトラブルが起きるかも想定しながら、逆にこちらが提案・確認して対応を進めるのがプロです。それを完全に怠っていました。

その場はプログラムを修正し、お許しを頂きましたが、そのお客様には本当に御迷惑をおかけしました。

メーカーとユーザーはお互いに知識や認識のギャップがあることを自覚しなければなりません。(お互いにいい仕事をするうえで必要なことですよね。)
ユーザー担当者とのコミュニケーションを通して想定し得る欠陥や環境を理解して、検出プログラムを作る必要があります。

当時のお客様にはご迷惑をおかけしてしまいましたが、この経験で以後のプログラム作成時にはより安定するためにお客様からのヒアリングを深めて対応できるようになりました。

画像処理側の原因とは?

ところで、なぜΦ0.5㎜の異物が検出できるのに、10センチの汚れは検出できなかったのでしょうか。
当時の欠陥を再現し、画像を見てましょう。

不織布上の汚れ
スマホで撮像した実際の汚れや黒点
カメラで撮像した不織布の汚れ
産業カメラで撮像した汚れや黒点

ここで黒点を検出することを考えてみましょう。
例えば、産業カメラで撮像した画像では外側が暗くなっています。この場合、黒点を二値化で検出しようとするとこのようになります。

二値化処理で黒点検出は難しい
黒点と背景の明るさが近似しており、二値化処理での検出は難しい。

私は異物を安定して検出するため、前処理として明るさ補正を入れていました。
この明るさ補正の特徴は
・入力画像の明るさが変動しても、一定の明るさに補正する。
・コントラストがはっきりしている箇所は残し、影などグラデーションになる部分は除去する。

明るさ補正を入れた結果がこちらです。

明るさ補正を入れた不織布上の黒点

ご覧の通り、汚れが見えなくなってしまいました。明るさは全体的に均一になりましたが、汚れまで背景と一緒に補正されてしまったのです。
これが私が失敗した原因です。汚れが発生する可能性を確認せず、黒点検出に特化した前処理を入れたため、汚れは検出できなかったのです。
このようなケースは汚れ用・黒点用、それぞれの検査設定を作る必要があります。幸いなことにそのお客様はその後も引き続きその検査システムをご利用いただきましたが、場合によってはシステムの仕様を巡り大きな問題になりかねない事例でした。

参考ですが、明るさ補正を入れた画像では容易に黒点を検出可能です。

二値化で検出された黒点

トラブル回避方法:リストで確認しよう

検査設定ができた後は、メーカーへ設定したプログラムの意図や狙いを質問してみるのもいいでしょう。意図した欠陥が網羅されているのか、確認できれば事前にトラブルを回避することもできます。

個人的なお勧めは、リストにして確認することです。

検査ユニット①検査ユニット②検査ユニット③検査ユニット④
異物
毛髪
汚れ
1つの設定で複数種類の欠陥をターゲットにしていることもあります。

このようにまとめると、ユーザー・メーカー双方の抜けもなくなるでしょう。複数のアングルで撮像する場合はそれぞれで作成するなど工夫してみてください。

まとめ

画像検査は様々な欠陥や状況を想定した設定構築が不可欠です。(ルールベースもAIでも同じです。)
ユーザー・メーカー間のコミュニケーションを深め、安定した検査装置を導入しましょう。

また、外観検査システムを導入した方で、不安定な検査に悩んでいる方はいませんか?メーカーに相談してうまく行かなったとしても、お気軽にご相談ください。納入済み検査システムの改善提案も承っております。

この記事を書いた人