【実施例1】
【0028】
図3は、本実施例における検査装置の処理の流れを表すフローチャートである。センサSが搬送装置C上を搬送されるペットボトルPを検出すると(#01のYes分岐)、センサSからの信号が制御部1に入力される。制御部1は、その信号を受けてカメラ2および画像取得部3に対して画像を取得するよう指示を送信し、カメラ2および画像取得部3はその指示を受けてペットボトルPのネックリングを含む画像を取得する(#02)。
図4は、このようにして撮影された画像の例である。上述したように、本実施形態ではカメラ2はネックリングより下方に仰角を有するように設置しているため、画像にはネックリングの下面および側面が含まれている。また、このネックリングには図中に円で囲む位置に疵Dが生じている。当然ながら、カメラ2の設置位置は被検査物、検査部位に応じて適宜変更可能である。
【0029】
検査領域設定部4は、上述のようにして撮影された画像に対して検査領域Rを設定する(#03、
図5参照)。図から明らかなように、検査領域Rの高さは画像中におけるネックリングの高さに比べて大きく設定されている。したがって、搬送装置C上のペットボトルPの位置ずれに起因して画像中のネックリングの位置がずれても、ネックリングを検査領域Rに含めることができる。
【0030】
2値画像生成部5は、画像中の検査領域Rに含まれる画素に対して2値化処理を行い、2値画像を生成する(#04、
図6参照)。本実施例では、この2値画像は検査領域Rと同じサイズの画像として得られる。
【0031】
上述したように、2値化閾値は種々の方法により求めることができる。判別分析法等の統計的手法によれば、望ましい閾値が変動しても的確に閾値を求めることができるが、演算量が増大するという問題点がある。一方、固定閾値では望ましい閾値が変動した際に、検査精度を低下させるおそれがある。そのため、固定閾値を中心とした所定範囲において判別分析法を適用して閾値を決定すると好適である。
【0032】
図5に示すように、ネックリングは他の部分に比べて輝度値が低くなっている。そのため、本実施形態では、
図6に示すように閾値以下の画素値を1(白)、閾値よりも大きい画素値を0(黒)として2値化を行っている。
【0033】
検査マスク生成部6は、2値画像生成部5により生成された2値画像に基づいて検査マスクを生成する(#05)。具体的には、
図7のフローチャートの処理が行われる。
【0034】
先ず、検査マスク生成部6は2値画像中の一方の画素値を持つ画素に対してラベリング処理を行う(#11)。上述したように、本実施形態では、検査部位であるネックリングは2値画像中で白画素として表現されている。したがって、ここでは2値画像中の白画素に対してラベリングを行う。当然ながら、検査部位が2値画像中で黒画素として表現されている場合には、2値画像中の黒画素に対してラベリングを行う。例えば、
図6の2値画像には2つの領域m1,m2が含まれており、ラベリングによりこれらの領域を判別することができる。
【0035】
ここで
図5と
図6とを比較すると、領域m1はネックリングであり、領域m2はキャップであることが分かる。したがって、後の疵判定処理の精度を高めるためには、検査マスクにはネックリングに対応する領域m1のみを含ませることが望ましい。そのため、検査マスク生成部6は、検査部位に対応しない領域(この例では領域m2)を検査マスクから除外する(#12〜#15)。
【0036】
検査マスク生成部6は、ラベリングにより得られた各領域の特徴量を算出する(#12)。特徴量とは、例えば、面積、フィレ径、外接矩形のアスペクト比等、検査部位を表現しうる値であれば種々の値を用いることができる。
【0037】
検査マスク生成部6は、一の領域を選択し、その領域の特徴量と予め設定された検査部位を表す2値画像の特徴量とを比較することにより、その領域が検査マスクとして適した領域であるか否かを判定し(#13)、適していないと判定された場合には2値画像からその領域を削除(画素値を0に設定)する(#14)。上述の例の場合、
図6の2値画像から領域m2が除外され、
図8に示す検査マスクが得られる。この処理を全ての領域に対して行う(#12〜#15)。
【0038】
さらに、検査マスク生成部6は、上述の処理により得られた検査マスクを補正する(#16)。この補正処理は必須ではないが、ここまでの処理で得られた検査マスクは、単に2値画像を基準として生成しているため、撮影時のノイズや2値化閾値のずれ等の原因により、マスク中に穴が含まれていたり、検査マスクの輪郭線が検査部位からずれていたりしているおそれがある。それを補うために、本実施例では検査マスクの輪郭線を補正している。
【0039】
本実施例では、検査マスクに対して膨張、収縮処理を施している。このようにして
図8の検査マスクから
図9に示す検査マスクが得られる。これらの図を対比すると明らかなように、検査マスクの上方の輪郭線が補正により滑らかな曲線となっている。当然ながら、検査マスクの補正方法はこれに限定されるものではなく、平均化+2値化等他の方法を用いても構わない。
【0040】
このようにして検査マスクが生成されと、疵判定部7は、画像上に検査マスクを設定し、検査マスクの画素値が1である画素の座標に対応する画像中の画素の画素値に基づいて疵を判定する(#06)。
【0041】
上述したように、本実施例では2値画像は検査領域Rと同じサイズの画像であるため、検査マスクを表す画像も検査領域と同じサイズである。したがって、画像上に検査マスクを設定する際には、検査マスクと検査領域とが一致するように設定する。
【0042】
本実施例では以下の処理により疵の有無を判定するとともに疵を表す疵画像を生成する。先ず、処理に先立ち、初期化処理が行われる(#21)。本実施例では、検査部位を示す画素の数を表す検査部位画素数Nおよび疵を示す画素の数を表す疵画素数N
Dを0で初期化するとともに疵を示す疵画像の初期化(全ての画素値を0に設定)を行う。
【0043】
続いて前処理として、画像中の画素のうち検査マスクの画素値が1である画素の座標に対応する全ての画素の画素値を取得し、統計量を算出する(#22)。なお、本実施例では統計量として平均および標準偏差を用いる。
【0044】
次に、画像中の画素のうち検査マスクの画素値が1である画素の座標に対応する一の画素を選択し(#23)、その画素に対して統計量に基づく評価値を計算する(#24)。本実施例では、評価値として偏差値を用いる。このとき、併せて検査部位画素数Nをインクリメントする。
【0045】
選択された画素の評価値は所定の条件と比較され、その画素が疵であるか否かが判定される(#25)。本実施例では、標準偏差が下限閾値以下または上限閾値以上である場合に疵として判定し、疵画素数N
Dをインクリメントする(#26)。また、併せて疵と判定された画素の画素値を疵画像の対応する画素の画素値として設定する(#27)。
【0046】
この処理が全ての画素に対して行われると(#23〜#28)、疵判定部7は検査部位に疵があるか否かを判定する(#29)。本実施例では、検査部位画素数Nに対する疵画素数N
Dの割合が所定の閾値以上であれば、疵があると判定している。
【0047】
当然ながら、疵の判定方法はこれに限定されるものではなく、他の方法を用いても構わない。
【0048】
このようにして判定された結果は制御部1に伝達される。制御部1は、検査部位に疵が生じているとの情報を取得した際には、そのペットボトルPを搬送装置から排除するように制御してもよいし、疵がある旨をオペレータに通知する等しても構わない。また、オペレータに通知する際には、
図11に示すような疵位置を明示した画像を提示すると、オペレータが目視により疵の確認を行う際の助けとなり、好適である。この画像は疵判定処理により作成した疵画像を用いることにより作成することができる。
【実施例2】
【0049】
本実施例における処理は実施例1における処理と検査マスクの補正処理のみが異なっている。そのため、検査マスクの補正処理のみを説明する。
【0050】
上述したように、本実施形態ではカメラ2はネックリングの下方から仰角を有するように設置されている。そのため、撮影された画像にはネックリングの下面および側面が含まれている。このような画像に基づいて疵を判定すると、ネックリングの側面のみに生じている疵を看過するおそれがある。特に、実施例1のように面積比で疵を判定する場合には、ネックリングの側面のみに生じている疵は看過され易くなる。そのため、本実施例では検査マスクをネックリングの側面を示す画素に適合するように補正している。
【0051】
図12は本実施例における検査マスクの生成処理の流れを表すフローチャートである。#31から#36は
図7における#11から#16と同様である。本実施例では、このようにして得られた検査マスク(
図9参照)に対して、再度補正を行っている。
【0052】
本実施例では、検査マスクのうち下部がネックリングの下面に対応し、上部がネックリングの側面に対応している。そのため、検査マスクの下端を上方に所定割合収縮させている(#37)。これにより、ネックリングの側面に対応した検査マスクが得られる(
図13参照)。なお、収縮させる割合はネックリングの大きさやカメラ2の仰角に応じて適宜設定される。また、収縮させる割合は一定でなくとも構わない。例えば、中央部付近を小さく、端部付近を大きく設定しても構わない。
【0053】
なお、本実施例ではカメラ2が仰角を有する位置に設置されているため検査マスクの下端を上方に収縮させたが、カメラ2が俯角を有する位置に設置されている場合には検査マスクの上端を下方に収縮させる。