説明

部品検査装置及びプログラム

【課題】複数の部品が任意に配置されている場合であっても、部品の配置による見え方の相違を吸収して大きさや形状等の外観を検査する。
【解決手段】複数の部品を撮影した画像をブロブ処理し、抽出されたエッジから求まるエッジ接線ベクトルを用いてエッジ接線画像に変換し、サンプルエッジ接線画像に対するマスターエッジ接線画像の畳み込み処理により抽出された個々のブロブに基づいて、マスター部品の所定部位のサイズ、位置xm、及び角度θmを定めたテーブルを用いて、検出されたサンプル部品の位置xs及び角度θsに対応するサイズを補完計算して、検出されたサンプル部品の所定部位のサイズと比較して、サンプル部品を検査する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、部品検査装置及びプログラムに係り、特に、検査対象の部品を撮影した画像に対する画像処理により、部品の検査を行うための部品検査装置及びプログラムに関する。
【背景技術】
【0002】
従来より、部品の大きさ、形状、色等の外観の異常を、マスターテンプレートとの比較により検査することが行われている。
【0003】
例えば、画像処理を用いた、マスターパターンを撮像した画像データと作製パターンを撮像した画像データとを比較するマッチング法が知られている。このマッチング法は、マスターパターンを撮像したときの各画素と作製パターンを撮像したときの各画素とを画素毎に2値化した画像データを比較してパターン同士が一致しているか否かを判定する。また、マスターパターンをテンプレートとして一つの作製パターンの中の複数のパターンを比較することもできる。このように比較することによって、作製パターンの欠陥を検出することができる。このような技術として、パターン欠陥検出装置が提案されている(特許文献1及び2参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平10−83452号公報
【特許文献2】特開2006−126946号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記特許文献1及び2記載の技術では、検査対象物である部品を所定の位置及び角度に配置することを前提としているが、図16に示すように、画像上の部品は、部品の配置により見え方が相違するため、画像上での各部位のサイズも相違してしまう。従って、上記特許文献1及び2記載の技術を、任意に配置された部品の検査に適用した場合には、マスターテンプレートとのマッチングが困難になる、という問題がある。
【0006】
また、部品が任意に配置されている場合には、部品同士が接触している可能性も高く、画像処理により個々の部品として識別する必要が生じる、という問題がある。
【0007】
本発明は上記問題点を解消するためになされたもので、複数の部品が任意に配置されている場合であっても、部品の配置による見え方の相違を吸収して大きさや形状等の外観を検査することができる部品検査装置及びプログラムを提供することを第1の目的とする。
【0008】
また、部品同士が接触している場合であっても、個々の部品を精度良く識別した上で、大きさや形状等の外観を検査することができる部品検査装置及びプログラムを提供することを第2の目的とする。
【課題を解決するための手段】
【0009】
上記第1の目的を達成するために、第1の発明の部品検査装置は、複数の部品が撮影された画像から抽出された前記部品の各々の輪郭に基づいて、基準方向を基準とした前記部品の各々の回転角度、画像内での前記部品の各々の位置、及び前記部品の各々の所定部位のサイズを検出する検出手段と、複数のマスター部品が撮影された学習用画像から、前記検出手段により検出された前記マスター部品の各々の前記回転角度、前記位置、及び前記サイズを対応させて記憶したテーブルを生成する生成手段と、前記検出手段により検出されたサンプル部品の前記回転角度及び前記位置に対応するサイズを、前記テーブルに記憶された前記回転角度、前記位置、及び前記サイズに基づいて計算する計算手段と、前記計算手段で計算されたサイズと、前記検出手段で検出されたサンプル部品の所定部位のサイズとに基づいて、前記サンプル部品を検査する検査手段と、を含んで構成されている。
【0010】
第1の発明の部品検査装置は、検出手段が、複数の部品が撮影された画像から抽出された部品の各々の輪郭に基づいて、基準方向を基準とした部品の各々の回転角度、画像内での部品の各々の位置、及び部品の各々の所定部位のサイズを検出する。そして、学習段階では、生成手段が、複数のマスター部品が撮影された学習用画像から、検出手段により検出されたマスター部品の各々の回転角度、位置、及びサイズを対応させて記憶したテーブルを生成する。また、検査段階では、計算手段が、検出手段により検出されたサンプル部品の回転角度及び位置に対応するサイズを、テーブルに記憶された回転角度、位置、及びサイズに基づいて計算し、検査手段が、計算手段で計算されたサイズと、検出手段で検出されたサンプル部品の所定部位のサイズとに基づいて、サンプル部品を検査する。
【0011】
このように、マスター部品の位置、角度、及びサイズを記憶したテーブルを用いて、検出されたサンプル部品の位置及び角度に対応するサイズを計算して、検出されたサンプル部品の所定部位のサイズと比較するため、複数個の部品が任意に配置されている場合であっても、部品の配置による見え方の相違を吸収して大きさや形状等の外観を検査することができる。
【0012】
また、第1の発明の前記検出手段は、前記複数の部品が撮影され画像から抽出された輪郭で囲まれた面積が、1つの部品の面積を表す予め定めた面積以上の場合には、前記輪郭内に複数の部品が含まれていると判断して、前記輪郭で囲まれた面積が前記予め定めた面積より小さくなるように分割する分割手段を含んで構成するようにすることができる。
【0013】
また、上記第2の目的を達成するために、第2の発明の部品検査装置は、複数の部品が撮影された画像からエッジを抽出するエッジ抽出手段と、抽出された前記エッジから、曲率が所定値以下の直線エッジ部分を抽出し、該直線エッジ部分の方向のヒストグラムを生成する生成手段と、抽出された前記エッジから求まるエッジの接線ベクトルを、可視化されたサンプルエッジ接線画像に変換する変換手段と、前記ヒストグラムのピーク毎に、予め学習により生成された1つの部品を表すマスターテンプレートを前記ピークの方向に回転した画像から抽出されたエッジから求まるエッジの接線ベクトルを、可視化されたマスターエッジ接線画像に変換し、前記サンプルエッジ接線画像に対して前記マスターエッジ接線画像を畳み込み処理して、前記サンプルエッジ接線画像から、前記マスターエッジ接線画像との一致度を示す値が所定値以上となる部分を候補として抽出する候補抽出手段と、抽出された候補を、1つの部品の輪郭を表す画像に変換し、変換した画像とマスターテンプレートとに基づいて、前記部品の各々を検査する検査手段と、を含んで構成されている。
【0014】
第2の発明の画像処理装置は、エッジ抽出手段が、複数の部品が撮影された画像からエッジを抽出し、生成手段が、抽出されたエッジから、曲率が所定値以下の直線エッジ部分を抽出し、直線エッジ部分の方向のヒストグラムを生成する。また、変換手段が、抽出されたエッジから求まるエッジの接線ベクトルを、可視化されたサンプルエッジ接線画像に変換し、候補抽出手段が、ヒストグラムのピーク毎に、予め学習により生成された1つの部品を表すマスターテンプレートをピークの方向に回転した画像から抽出されたエッジから求まるエッジの接線ベクトルを、可視化されたマスターエッジ接線画像に変換し、サンプルエッジ接線画像に対してマスターエッジ接線画像を畳み込み処理して、サンプルエッジ接線画像から、マスターエッジ接線画像との一致度を示す値が所定値以上となる部分を候補として抽出する。そして、検査手段が、抽出された候補を、1つの部品の輪郭を表す画像に変換し、変換した画像とマスターテンプレートとに基づいて、部品の各々を検査する。
【0015】
このように、サンプルエッジ接線画像に対するマスターエッジ接線画像の畳み込み処理により、エッジの位置だけでなく、エッジの方向も加味して形状を抽出して複数の部品を個々の部品に分割するため、部品同士が接触している場合であっても、個々の部品を精度良く識別した上で、大きさや形状等の外観を検査することができる。
【0016】
また、第2の発明の前記候補抽出手段は、抽出された候補と前記マスターエッジ接線画像とを位置合せして、前記候補の連続していない部分を、前記マスターエッジ接線画像から補完するようにすることができる。
【0017】
また、第2の発明の前記検査手段は、前記複数の部品が撮影された画像内で、1つの部品の輪郭を表す画像の各々を真候補または偽候補とした場合の組み合わせについて、組み合せ毎に以下の(条件1)〜(条件4)に従った評価値を算出し、該評価値が最も高い組み合わせのときの真候補を最終的な1つの部品の輪郭を表す画像の各々として決定するようにすることができる。
(条件1)真候補の和が、前記複数の部品の輪郭の全体を覆うこと
(条件2)真候補同士の重なりが少ないこと
(条件3)真候補の数が、前記複数の部品の輪郭で囲まれた面積により定まる上限及び下限の範囲に入ること
(条件4)前記複数の部品の輪郭が存在しない箇所を真候補が覆わないこと
【0018】
また、第3の発明の部品検査プログラムは、コンピュータを、複数の部品が撮影された画像から抽出された前記部品の各々の輪郭に基づいて、基準方向を基準とした前記部品の各々の回転角度、画像内での前記部品の各々の位置、及び前記部品の各々の所定部位のサイズを検出する検出手段、複数のマスター部品が撮影された学習用画像から、前記検出手段により検出された前記マスター部品の各々の前記回転角度、前記位置、及び前記サイズを対応させて記憶したテーブルを生成する生成手段、前記検出手段により検出されたサンプル部品の前記回転角度及び前記位置に対応するサイズを、前記テーブルに記憶された前記回転角度、前記位置、及び前記サイズに基づいて計算する計算手段、及び前記計算手段で計算されたサイズと、前記検出手段で検出されたサンプル部品の所定部位のサイズとに基づいて、前記サンプル部品を検査する検査手段として機能させるためのプログラムである。
【0019】
また、第4の発明の部品検査プログラムは、コンピュータを、複数の部品が撮影された画像からエッジを抽出するエッジ抽出手段、抽出された前記エッジから、曲率が所定値以下の直線エッジ部分を抽出し、該直線エッジ部分の方向のヒストグラムを生成する生成手段、抽出された前記エッジから求まるエッジの接線ベクトルを、可視化されたサンプルエッジ接線画像に変換する変換手段、前記ヒストグラムのピーク毎に、予め学習により生成された1つの部品を表すマスターテンプレートを前記ピークの方向に回転した画像から抽出されたエッジから求まるエッジの接線ベクトルを、可視化されたマスターエッジ接線画像に変換し、前記サンプルエッジ接線画像に対して前記マスターエッジ接線画像を畳み込み処理して、前記サンプルエッジ接線画像から、前記マスターエッジ接線画像との一致度を示す値が所定値以上となる部分を候補として抽出する候補抽出手段、及び抽出された候補を、1つの部品の輪郭を表す画像に変換し、変換した画像とマスターテンプレートとに基づいて、前記部品の各々を検査する検査手段として機能させるためのプログラムである。
【0020】
なお、本発明のプログラムを記憶する記憶媒体は、特に限定されず、ハードディスクであってもよいし、ROMであってもよい。また、CD−ROMやDVDディスク、光磁気ディスクやICカードであってもよい。更にまた、該プログラムを、ネットワークに接続されたサーバ等からダウンロードするようにしてもよい。
【発明の効果】
【0021】
以上説明したように、本発明によれば、マスター部品の所定部位のサイズを、マスター部品の位置及び角度毎に定めたテーブルを用いて、検出されたサンプル部品の位置及び角度に対応する所定部位のサイズを補完計算して、検出されたサンプル部品の所定部位のサイズと比較するため、複数個の部品が任意に配置されている場合であっても、部品の配置による見え方の相違を吸収して大きさや形状等の外観を検査することができる、という効果が得られる。
【0022】
また、サンプルエッジ接線画像に対するマスターエッジ接線画像の畳み込み処理により、エッジの位置だけでなく、エッジの方向も加味して形状を抽出して複数の部品を個々の部品に分割するため、部品同士が接触している場合であっても、個々の部品を精度良く識別した上で、大きさや形状等の外観を検査することができる、という効果が得られる。
【図面の簡単な説明】
【0023】
【図1】本実施の形態の部品検査装置の構成を示す外観図である。
【図2】本実施の形態の部品検査装置の検査位置部分の概略を示す構成図である。
【図3】本実施の形態の部品検査装置の概略を示すブロック図である。
【図4】本実施の形態の部品検査装置におけるテンプレート選択及びテーブル生成処理ルーチンの内容を示すフローチャートである。
【図5】部品(ボルト)の所定部位のサイズの一例を説明するための図である。
【図6】本実施の形態の部品検査装置におけるブロブ処理ルーチンの内容を示すフローチャートである。
【図7】ブロブ処理における、(a)元画像、(b)赤成分画像、(c)2値化画像、及び(d)修正後画像である。
【図8】本実施の形態の部品検査装置における部品検査処理ルーチンの内容を示すフローチャートである。
【図9】本実施の形態の部品検査装置における第1の領域分割処理ルーチンの内容を示すフローチャートである。
【図10】ブロブ毎に分割された2次元画像の一例を示す図である。
【図11】(a)サンプルエッジ接線画像、(b)マスターエッジ接線画像、(c)サンプルエッジ画像、及び(d)マスターエッジ画像の一例を示す図である。
【図12】畳み込み処理を説明するための図である。
【図13】ファインフィット処理を説明するための図である。
【図14】本実施の形態の部品検査装置における第2の領域分割処理ルーチンの内容を示すフローチャートである。
【図15】本実施の形態の部品検査装置における検査処理ルーチンの内容を示すフローチャートである。
【図16】部品の配置された位置及び角度による見え方の相違を説明するための図である。
【発明を実施するための形態】
【0024】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【0025】
図1に示すように、本実施の形態に係る部品検査装置10は、トレー及び滑り台で構成され、検査対象の複数の部品が供給される供給部12、供給部12の滑り台に連続して配置され、供給部12から供給された複数の部品を載置して、検査位置まで搬送する透明または半透明のベルトコンベヤー14、検査位置に搬送された部品に対して検査用の照明を照射する照射装置16、検査位置に搬送された部品を撮影して画像データを出力するためのラインカメラ18、ラインカメラ18で撮影された画像の画像処理に関する操作を行うための画像処理操作部20、装置全体の電源や、ベルトコンベヤー14、照射装置16及びラインカメラ18の駆動に関する操作を行うための駆動操作部22、並びに、ラインカメラ18で撮影された画像、画像処理された画像、検査結果等を表示するための表示装置24を含んで構成されている。
【0026】
図2に、検査位置部分の概略構成図を示す。ラインカメラ18は、検査位置の真上に配置されている。ラインカメラ18は、ベルトコンベヤー14の幅方向(図2中の矢印Aで示す搬送方向と直交する方向)に画素が配列されている。また、ベルトコンベヤー14の上方であって、ラインカメラ18を挟む位置に、検査位置を青色光で照射する照射装置16B、及び緑色光で照射する照射装置16Gが配置され、ベルトコンベヤー14の下方であって、検査位置の真下に、検査位置を赤色光で照射する照射装置16Rが配置されている。
【0027】
部品検査装置10は、さらにコンピュータ26及び駆動回路28を含んで構成されている。ラインカメラ18で撮影された1ラインずつの画像データは、一旦図示しないメモリに記憶され、1フレーム分の画像データとしてコンピュータ26に入力される。コンピュータ26では、後述する部品検査処理が実行され、検査結果に応じて、ベルトコンベヤー14等の駆動を制御するための信号を駆動回路28に出力する。
【0028】
図3に示すように、コンピュータ26は、部品検査装置10全体の制御を司るCPU30、後述するテンプレート選択及びテーブル生成処理、及び部品検査処理のプログラム等各種プログラムを記憶した記憶媒体としてのROM32、ワークエリアとしてデータを一時的に格納するRAM34、各種情報が記憶された記憶手段としてのハードディスク(HDD)36、入出力ポート(I/Oポート)38、ネットワークインターフェース(ネットワークI/F)40、及びこれらを接続するバスを含んで構成されている。I/Oポート38には、画像処理操作部20、駆動操作部22、表示装置24、及び駆動回路28が接続されている。
【0029】
次に、本実施の形態の部品検査装置10の動作について説明する。
【0030】
まず、駆動操作部22を操作して、部品検査装置10の電源をオンし、ベルトコンベヤー14、照射装置16、及びラインカメラ18の駆動を開始する。そして、後述するテンプレートの選択、及びテーブルの生成のために、全ての検査対象の部品またはその中から任意に選択した複数の部品を、供給部12のトレー及び滑り台を介して供給する。供給された部品は、滑り台からベルトコンベヤー14に移動して、検査位置に搬送される。この際、複数の部品の各々は任意の位置及び角度で配置される。そして、検査位置で撮影された部品の画像がコンピュータ26に入力され、後述するテンプレート選択及びテーブル生成処理が実行されることにより、テンプレートを選択、及びテーブルを生成するための元となる部品(マスター部品)が選択されて、テンプレートの選択、及びテーブルの生成が行われる。
【0031】
次に、全ての検査対象の部品(サンプル部品)を、上記と同様に供給部12から供給する。供給された部品は、検査位置に搬送される。ここでも同様に、複数個の部品の各々は任意の位置及び角度で配置される。そして、検査位置で撮影された部品の画像がコンピュータ26に入力され、後述する部品検査処理が実行される。
【0032】
図4を参照して、コンピュータ26で実行されるテンプレート選択及びテーブル生成処理ルーチンについて説明する。
【0033】
ステップ100で、ラインカメラ18で1ラインずつ撮影され、メモリに記憶された1フレーム分の画像データを取得する。
【0034】
次に、ステップ102で、後述するブロブ処理を実行して、画像を隣接する画素集合の領域であるブロブ毎に分割する。
【0035】
次に、ステップ104で、ブロブを1つ選択し、そのブロブの面積が閾値以下か否かを判定する。この判定は、ブロブが1つの部品を示しているか、複数の部品を示しているかを判定するものである。閾値は、全ブロブの面積の中央値、最頻値、平均値等を用いたり、予め所定の値を設定したりして定める。また、面積に変えてその他のサイズを用いたり、面積とその他のサイズとを組み合わせて用いたりしてもよい。ブロブの面積が閾値以下の場合には、ブロブが1つの部品を示していると判定されて、ステップ106へ移行し、そのブロブをOK_ブロブバッファへ格納して、ステップ108へ移行する。このブロブが示す部品がマスター部品となる。一方、ブロブの面積が閾値より大きい場合には、ブロブが複数の部品を含んでいると判定されて、そのブロブをOK_ブロブバッファへ格納することなく、そのままステップ108へ移行する。
【0036】
ステップ108では、1フレームの画像からブロブ処理により分割された全てのブロブについて処理が終了したか否かを判定する。全てのブロブについて処理が終了した場合には、ステップ110へ移行し、未処理のブロブが存在する場合には、ステップ104へ戻って、次のブロブを選択して、処理を繰り返す。
【0037】
ステップ110では、OK_ブロブバッファに格納されたブロブ毎に、部品の所定部位の各種サイズ、画像のライン方向の位置xm、及び角度θmを検出する。図5に示すように、例えば、部品がボルトの場合には、部品の所定部位の各種サイズは、全体の軸方向の長さ(A)、スレッド部分の軸方向の長さ(B)、頭部分の軸方向の長さ(C)、頭部分の直径(D)、スレッドの山部の直径(E)、及びスレッドの谷部の直径(F)等とすることができる。これらの部品の所定部位のサイズは、部品の配置、すなわちライン方向の位置xm、及び角度θmによって画像上での見え方が相違するため、検出される値が異なる。そこで、部品の所定部位のサイズと部品の配置とを対応付けて、テンプレートを選択したりテーブルを生成したりするために、部品のライン方向の位置xm、及び角度θmを検出する。
【0038】
ライン方向の位置xmは、例えば、ライン方向の一端を0、他端をXとして、0〜Xの値を割り当てることができる。なお、ここでは、ラインカメラ18を用いているため、ライン方向に直交する方向(ベルトコンベヤー14の搬送方向)の位置については考慮する必要がないが、エリアカメラを用いた場合等には、ライン方向に直交する方向の位置も検出するようにするとよい。
【0039】
また、角度θmは、例えば、ライン方向に平行な線と部品の軸方向とのなす角度であって、部品の一端がライン方向に平行な線より上方にある場合を0〜180°、下方にある場合を180〜360°として表した角度とすることができる。
【0040】
次に、ステップ112で、各ブロブが示す部品の画像の中から代表テンプレートを選択する。選択の基準は、例えば、ライン方向の位置xmが中央(X/2)で、角度θmが0°のもの、またはこれに最も近いもの等を選択するように定めておくとよい。代表テンプレートは、後述する部品検査処理の第1の領域分割処理の畳み込み処理で用いられる。
【0041】
次に、ステップ114で、検出された位置xm及び角度θm毎の位置角度別テンプレートを選択する。1つの位置xm及び角度θmに対するブロブが1つしかない場合には、そのブロブを位置xm及び角度θmに対応する位置角度別テンプレートとして選択する。1つの位置xm及び角度θmに対応して複数のブロブが存在する場合には、いずれかのブロブを選択して、選択したブロブを位置xm及び角度θmに対応する位置角度別テンプレートとする。位置角度別テンプレートは、後述する部品検査処理の第1の領域分割処理のファインフィット処理で用いられる。
【0042】
次に、ステップ116で、検出された位置xm及び角度θm毎に対応する部品の所定部位のサイズを定めた位置角度別ルックアップテーブル(LUT)を生成する。1つの位置xm及び角度θmに対応して複数のブロブが存在する場合には、いずれかのブロブを選択して、そのブロブから検出されるサイズを対応させてもよいし、複数のブロブから検出されるサイズの各々の平均値等を対応させてもよい。位置角度別LUTは、後述する部品検査処理の検査処理で用いられる。
【0043】
選択された代表テンプレート、位置角度別テンプレート、及び生成された位置角度別LUTを所定の記憶領域に記憶して、処理を終了する。
【0044】
次に、図6を参照して、テンプレート選択及びテーブル生成処理(図5)のステップ102で実行されるブロブ処理ルーチンについて説明する。
【0045】
ステップ120で、赤成分を閾値処理して、取得した画像を2値化する。具体的には、例えば、透明または半透明のベルトコンベヤー14上に載置された部品には、赤色光が下から照射され、青色光及び緑色光が上から照射されるため、取得された画像は、図7(a)に示すように、部品部分が青成分及び緑成分(白部分)、背景部分が赤成分(ドット部分)の画像となる。同図(b)に示すように、取得された画像の赤成分(網掛け部分)を抽出し、同図(c)に示すように、固定の閾値以上の画素を赤成分として「1」を割り当て(白部分)、閾値以下の画素をその他の成分として「0」を割り当てて(斜線部分)2値化する。
【0046】
次に、ステップ122で、ブロブ解析処理により、隣接する「1」が割り当てられた画素同士の画素集合領域を1つのブロブとして分割する。
【0047】
次に、ステップ124で、図7(c)及び(d)に示すように、小さい面積のブロブ内の画素を「0」に変換する。この処理により、青成分及び緑成分が純粋でないことにより、部品の表面に表れる一部の赤成分部分を処理して、中抜けのない部品の外形に沿ったブロブに分割することができる。
【0048】
次に、図8を参照して、コンピュータ26で実行される部品検査処理ルーチンについて説明する。
【0049】
ステップ100及び102で、テンプレート選択及びテーブル生成処理と同様に、1フレーム分の画像を取得して、ブロブ処理を実行する。
【0050】
次に、ステップ140で、ブロブを1つ選択し、そのブロブの面積が閾値以上か否かを判定する。ブロブの面積が閾値以上の場合には、ブロブが複数の部品を含んでいると判定されて、ステップ142で後述する第1の領域分割処理、及びステップ144で後述する第2の領域分割処理を実行して、ステップ146へ移行する。一方、ブロブの面積が閾値より小さい場合には、ブロブが1つの部品を示していると判定されて、ステップ142及び144を経ることなく、ステップ146へ移行する。
【0051】
ステップ146では、後述する検査処理を実行して、処理を終了する。このルーチンを1フレーム毎に繰り返し実行することにより、供給されたサンプル部品の全てを検査する。なお、サンプル部品の各々がいずれかのフレームに完全に含まれるように、画像の隣接するフレーム間を、サンプル部品の大きさに応じた所定ライン数分重複させるようにする。
【0052】
次に、図9を参照して、部品検査処理(図8)のステップ142で実行される第1の領域分割処理について説明する。なお、第1の領域分割処理は、後述する第2の領域分割処理と比較して、精度は多少低くても、計算が速いアルゴリズムを用い、大まかに分割することを目的としている。
【0053】
ステップ160で、図10に示すようなブロブ毎に分割された2次元画像を、チェーンコードに変換する。そして、チェーンコードをフィルタ処理して、例えばボルトのスレッドのような雑音や微小な特徴を除去する。さらに、フィルタ処理されたチェーンコードからエッジ位置ベクトル、エッジ接線ベクトル、エッジ曲率、及びエッジ微分曲率を抽出する。
【0054】
次に、ステップ162で、エッジ曲率が所定の閾値以下の略直線部分であるストレートエッジを抽出する。ストレートエッジの方向をヒストグラムに集積して、ストレートエッジの方向ヒストグラムを生成する。生成された方向ヒストグラムのピーク毎に通し番号1〜imaxを付与する。
【0055】
次に、ステップ164で、エッジ接線ベクトルをチェーンコード形式から2次元画像に変換して可視化する。この2次元画像をサンプルエッジ接線画像EI_sという。サンプルエッジ接線画像EI_sの各画素は2次元ベクトルであり、エッジに近くない画素は(0,0)であり、エッジの近くの画素は、エッジ接線ベクトルの方向に対応する値を持つ。このエッジ接線ベクトルの方向に対応する値を画素値の差で表現した例を図11(a)に示す。なお、同図(c)に、比較のために、エッジ位置ベクトルのチェーンコードを2次元画像に変換したサンプルエッジ画像E_sを示す。また、雑音の影響を抑制するために画像にボケ処理を施したり、計算速度向上のために適当なサブサンプリングを行ったりしてもよい。
【0056】
次に、ステップ166で、変数iに1をセットする。変数iは、方向ヒストグラムのピーク毎に付与された通し番号に対応しており、以下の畳み込み処理を方向ヒストグラム毎に実行するためのものである。
【0057】
次に、ステップ168で、テンプレート選択及びテーブル生成処理(図4)のステップ112で選択された代表テンプレートを読み出し、代表テンプレートをピークiの方向に回転して、サンプルエッジ接線画像EI_sに変換したのと同様の手法により、マスターエッジ接線画像EI_mに変換する。マスターエッジ接線画像EI_mの一例を図11(b)に示す。なお、同図(b)は、同図(a)のサンプルエッジ接線画像EI_sに対して拡大して表示している。また、同図(d)に、比較のために、代表テンプレートのエッジ位置ベクトルのチェーンコードを2次元画像に変換したマスターエッジ画像E_mを示す。
【0058】
次に、ステップ170で、図12に示すように、サンプルエッジ接線画像EI_sに対して、マスターエッジ接線画像EI_mを平行移動させながらマッチング度を算出する畳み込み処理を実行する。マスターエッジ接線画像EI_mとのマッチング度が閾値以上の部分を、サンプルエッジ接線画像EI_sから候補として抽出する。抽出された候補には、通し番号1〜jmaxを付与する。
【0059】
次に、ステップ172で、変数jに1をセットする。変数jは、抽出された候補毎に付与された通し番号に対応しており、以下のファインフィット処理を候補毎に実行するためのものである。
【0060】
次に、ステップ174で、候補jのライン方向の位置xs及び角度θsを検出し、テンプレート選択及びテーブル生成処理のステップ114で位置xm及び角度θm毎に選択された位置角度別テンプレートの中から、候補jから検出された位置xs及び角度θsに最も近い位置xm及び角度θmに対応する位置角度別テンプレートを選択して読み出す。
【0061】
次に、ステップ176で、図13に示すように、位置角度別テンプレートのエッジ上に等間隔に設定されたマッチポイント毎に、距離及び接線方向が近い候補jのエッジ上の対応する点を検出する。同図では、マッチポイント1〜4(5以降のマッチポイントは図示省略)のうち、マッチポイント1〜3については、候補jのエッジ上に対応する点が検出されているが、マッチポイント4については、対応する点が検出されなかったことを示している。位置角度別テンプレート上のマッチポイントの各々から、対応する候補jのエッジ上の点までのベクトル群を用いて、アフィン変換して、位置角度別テンプレートを移動する。
【0062】
次に、ステップ178で、位置角度別テンプレートのマッチポイントとの対応がとれていない候補jのエッジの欠陥部分が閾値より小さいか否かを判定する。ここで、エッジの欠陥部分とは、画像的に見えない部分のことであり、部品自体の欠陥を意味するものではない。図13の例では、マッチポイント4に対応する部分がエッジの欠陥部分となっている。エッジの欠陥部分が閾値より小さい場合には、ステップ180へ移行し、エッジの欠陥部分が閾値以上の場合には、ステップ182へ移行する。
【0063】
ステップ180では、図13に示すように、候補jのエッジの欠陥部分に対応する位置角度別テンプレートの部分を切り出して、候補jのエッジの欠陥部分に補完する。エッジの欠陥部分は、上述したように画像的に見えない部分であり、部品自体は良品であるとの前提の下、位置角度別テンプレートからそのエッジの欠陥部分を補完するものである。エッジの欠陥部分が補完された候補jに対して、逆フィルタ処理を施して、チェーンコードから2値化画像に変換して1つのブロブとして抽出する。
【0064】
一方、候補jのエッジの欠陥部分が閾値以上であると判定されてステップ182へ移行した場合には、候補jが1つの部品を示すブロブではないと判断して、候補jを候補から除外して、ステップ184へ移行する。
【0065】
次に、ステップ184で、変数jがjmaxになったか否かを判定することにより、上記ステップ170で抽出された全ての候補について処理が終了したか否かを判定する。j≠jmaxの場合には、ステップ186へ移行し、変数jを1インクリメントして、ステップ174へ戻り、次の候補について処理を繰り返す。一方、j=jmaxとなった場合には、ステップ188へ移行し、変数iがimaxになったか否かを判定することにより、上記ステップ162で生成した方向ヒストグラムの全てのピークについて処理が終了したか否かを判定する。i≠imaxの場合には、ステップ190へ移行し、変数iを1インクリメントして、ステップ168へ戻り、次のピークについて処理を繰り返す。一方、i=imaxとなった場合には、処理を終了してリターンする。
【0066】
なお、全てのピークについて上記ステップ180で抽出された全てのブロブの和を、元のブロブの画像から引いた差分画像に対して、更に本ルーチンを繰り返してもよい。方向ヒストグラムのピークが近接していた場合等により、見逃された部分が存在する可能性があるからである。
【0067】
また、ここでは、候補jを抽出する畳み込み処理の際に、エッジ画像ではなく、エッジ接線画像を用いているが、このように、形状のみでなく接線方向も合わせてマッチング度を算出しているため、エッジ画像で畳み込み処理を行う場合と比較して、精度良く候補を抽出することができる。以下に、エッジ画像で畳み込み処理を行う場合と比較して、エッジ接線画像で畳み込み処理を行う方が形状抽出の性能が良いことを証明する。
【0068】
(定義1)エッジ位置ベクトルリストEを次のように定義する。
・Eは、素子E[I](I=0,・・・,N−1)からなる1次元列である。
・素子E[i]は、2つの2次元ベクトルからなる。
E[I]=((x_i,y_i),(gx_i,gy_i))
(x_i,y_i)は、エッジ点の位置を表し、x_i及びy_iは実数である。
(gx_i,gy_i)は、エッジ点の接線ベクトルを表し、gx_i及びgy_iは実数である。
【0069】
(定義2)エッジ接線画像EIを次のように定義する。
・EIは、素子E[x,y](x=0,・・・,x−1、y=0,・・・,y−1)からなる2次元行列である。
・素子EI[x,y]は、1つの2次元ベクトルからなる。
EI[x,y]=(gx_i,gy_i)
(gx_i,gy_i)は、位置[x,y]におけるエッジ点の接線ベクトルを表し、x,yは、整数に限る。
【0070】
(定義3)エッジ位置ベクトルリストEを元にして、エッジ接線画像EIを作成する方法を定義する。
(ステップ1)初期化:EI(x,y)=0 0,・・・,x−1、0,・・・,y−1の全てのx,y
(ステップ2)Eの各素子E[I]=(x_i,y_i),(gx_i,gy_i)において、
x0 = floor(x_i) y0 = floor(y_i)
ax = 1-(x_i-x0) ay = 1-(y_i-y0)
EI(x0,y0).x = EI(x0,y0).x + ax*ay * gx_i
EI(x0,y0).y = EI(x0,y0).x + ax*ay * gy_i
EI(x0,y0+1).x = EI(x0,y0+1).x + ax*(1-ay) * gx_i
EI(x0,y0+1).y = EI(x0,y0+1).x + ax*(1-ay) * gy_i
EI(x0+1,y0).x = EI(x0+1,y0).x + (1-ax)*ay * gx_i
EI(x0+1,y0).y = EI(x0+1,y0).x + (1-ax)*ay * gy_i
EI(x0+1,y0+1).x = EI(x0+1,y0+1).x + (1-ax)*(1-ay) * gx_i
EI(x0+1,y0+1).y = EI(x0+1,y0+1).x + (1-ax)*(1-ay) * gy_i
【0071】
(定義4)2つのエッジ接線画像EI_m及びEI_sの畳み込み処理を定義する。
Xm,YmはEI_mの縦横のサイズ、Xs,YsはEI_sの縦横のサイズであり、Xm<Xs、及びYm<Ysを前提とする。
結果REIは、サイズ2次元スカラー行列、サイズはXr(Xr=Xs−Xm+1),Yr(Yr=Ys−Ym+1)となる。
REI(x,y)
= sum[i,j] inner_product(EI_s(x+i, y+j),EI_m(i, j)) i,j=0..Xm-1,0..Ym-1
= sum[i,j] cos(EI_s(x+i, y+j) , EI_m(i, j))
* mag(EI_s(x+i, y+j)) * mag(EI_m(i, j)) i,j=0..Xm-1,0..Ym-1
【0072】
(定義5)エッジ接線画像EIから、2次元実数「エッジ絶対値」というイメージを作る方法を定義する。
2次元実数「エッジ絶対値」イメージをEI_Magとする。EI_Mag[x,y]はスカラーである。
EI_Mag[x,y] = mag(EI[x,y].x, EI[x,y].y)
= sqrt(EI[x,y].x*EI[x,y].x, EI[x,y].y*EI[x,y].y)
【0073】
(定義6)2つのエッジ絶対値イメージEI_Mag_m及びEI_Mag_sの畳み込み処理を定義する。
EI_Mag_mは、上記定義4のEI_mを元に定義5によって作られたものであり、EI_Mag_sは、上記定義4のEI_sを元に定義5によって作られたものである。
結果REIは2次元スカラー行列、サイズはXr(Xr=Xs−Xm+1),Yr(Yr=Ys−Ym+1)となる。
REI_Mag(x,y)
= sum[i,j] EI_Mag_s(x+i, y+j) * EI_Mag_m(i, j) i,j=0..Xm-1,0..Ym-1
= sum[i,j] mag(EI_s(x+i, y+j)) * mag(EI_m(i, j)) i,j=0..Xm-1,0..Ym-1
【0074】
(定理1)REI(x,y) <= REI_Mag(x,y) for all x,y=0..Xr-1, y=0..Yr-1
証明:REI_Mag(x,y) - REI(x,y) =
sum[i,j] 1-cos(EI_s(x+i, y+j) , EI_m(x+i, y+j)) i,j=0..Xm-1,0..Ym-1
但し、各i,jにて、 1-cos(EI_s(x+i, y+j) , EI_m(x+i, y+j)) >= 0
なので、証明となる。
【0075】
(定理2)あるx,yに対して、REI(x,y) = REI_Mag(x,y) が成り立つために必要な条件として、 cos(EI_s(x+i, y+j) , EI_m(x+i, y+j))=1 i,j=0..Xm-1,0..Ym-1
つまり、方向ベクトルは全て同じである。
証明:REI_Mag(x,y) - REI(x,y) =
sum[i,j] 1-cos(EI_s(x+i, y+j) , EI_m(x+i, y+j)) i,j=0..Xm-1,0..Ym-1
であるので、各i,jにて、 cos(EI_s(x+i, y+j) , EI_m(x+i, y+j)) = 1
でなければ、 REI_Mag(x,y) > REI(x,y) が成り立つ。
【0076】
次に、図14を参照して、部品検査処理(図8)のステップ144で実行される第2の領域分割処理について説明する。第2の領域分割処理では、第1の領域分割処理で大まかに抽出されたブロブの各々について、真候補及び偽候補の組み合わせ最適化処理により、更に精度良く1つの部品を示すブロブに分割するものである。
【0077】
ステップ200で、第1の領域分割処理(図9)のステップ180で抽出されたブロブの各々を真候補または偽候補とした任意の組み合わせを設定する。
【0078】
次に、ステップ202で、設定された組み合わせについて、以下の(条件1)〜(条件4)に従った評価関数に基づき、評価値を算出する。
(条件1)真候補の和が、ブロブ全体を覆うこと
(条件2)真候補同士の重なりが少ないこと
(条件3)真候補の数が、ブロブ全体の面積により定まる上限及び下限の範囲に入ること
(条件4)ブロブが存在しない箇所を真候補が覆わないこと
【0079】
ここで、(条件1)〜(条件4)に従った組み合わせ空間(解決空間)を評価する評価関数について説明する。
【0080】
解決空間はベクトルC={ c[i]=0 or 1 , i=0..Nc-1 }で表せる。Ncは候補数であり、c[i]がi番目の候補の推定状態を表し、0の場合は「偽」、1の場合は「真」である。
【0081】
そして、ブロブを含む長方形を横X×縦Yとする。また、IM_blob(x,y)= 0 or 1をブロブのイメージとし、IM_cand[i](x,y)= 0 or 1をi番目のイメージとすると、「真」と判断された画素数は、
Num_cand(x,y) = sum[i=0..Nc-1] { c[i] * IM_cand[i](x,y) }
となり、
Uncovered(x,y) = 1 if IM_blob(x,y)=1 AND Num_cand(x,y)=0, else 0
により条件1を表す。
【0082】
次に、DT_blob(x,y)をブロブの距離変換イメージとし、DT_cand[i](x,y)をi番目の距離変換イメージとすると、
CandOverlap(i,j) = InnerProduct( DT_cand[i], DT_cand[j] )
= sum[x,y in (0..X-1,0..Y-1)] { DT_cand[i](x,y) * DT_cand[j](x,y)
により条件2を表す。
【0083】
次に、CandNum_llimを候補数の下限、CandNum_ulimを候補数の上限として、条件3を表す。
【0084】
次に、
Overcovered(x,y)= 1 if IM_blob(x,y)=0 AND Num_cand(x,y)>0, else 0
により条件4を表す。
【0085】
そして、評価関数を次の通り定義する。
Eval(C) = weight_CandOverlap * Eval_CandOverlap(C)
+ weight_uncovered * Eval_Uncovered(C)
+ weight_numcand * Eval_NumCand(C)
+ weight_overcover * Eval_Overcovered(C)
【0086】
ただし、
Eval_CandOverlap(C) = sum[i=0..Nc-1][j=i+1..Nc-1] { CandOverlap(i,j) }
Eval_Uncovered(C)
= sum[x=0..X-1, y=0..Y-1] Uncovered(x,y) * DT_blob(x,y)
Eval_NumCand(C) = 0 if |C|_1 >= CandNum_llim AND |C|_1 <= CandNum_ulim
else 1
Eval_Overcovered = sum[i=0..Nc-1][j=i+1..Nc-1] { CandOverlap(i,j) }
|C|_1 = sum[i=0..Nc-1] c[i]
である。
【0087】
次に、ステップ204で、評価値が最大値になったか否かを判定する。最大値になった場合には、ステップ206へ移行し、最大値になっていない場合には、ステップ200へ戻って、異なる組み合わせを設定して処理を繰り返す。
【0088】
ステップ206では、評価値が最大となったときの組み合わせの真候補のブロブの各々を、最終的な1つの部品を表すブロブとして決定して、リターンする。
【0089】
なお、ここでは、評価値が最大となったか否かを判定する場合について説明したが、最適な組み合わせを決定することができる手法であれば、これに限定されない。
【0090】
次に、図15を参照して、部品検査処理(図8)のステップ146で実行される検査処理について説明する。
【0091】
ステップ220で、テンプレート選択及びテーブル生成処理(図4)のステップ110と同様の処理により、ブロブ毎に、部品の所定部位の各種サイズ、画像のライン方向の位置xs、及び角度θsを検出する。
【0092】
次に、ステップ222で、テンプレート選択及びテーブル生成処理(図4)のステップ116で生成した位置角度別LUTを読み出して、検出した位置xs、及び角度θsに対応するサイズを、位置角度別LUTに記憶された位置xm、角度θm、及びサイズに基づいて計算する。サイズの計算は、例えば、シンプレートスプライン等のアルゴリズムを用いて補完計算することができる。
【0093】
次に、ステップ224で、上記ステップ220で検出されたサイズと、上記ステップ222で計算されたサイズとを比較することにより、ブロブが示す部品のサイズを検査し、検査結果を表示装置24に表示したり、異常が検出された場合には、ベルトコンベヤー14、照射装置16、ラインカメラ18等の駆動を停止したりするように制御して、リターンする。
【0094】
以上説明したように、本実施の形態の部品検査装置によれば、マスター部品の所定部位のサイズ、位置xm、及び角度θmを定めたテーブルを用いて、検出されたサンプル部品の位置xs及び角度θsに対応するサイズを補完計算して、検出されたサンプル部品の所定部位のサイズと比較するため、複数の部品が任意に配置されている場合であっても、部品の配置による見え方の相違を吸収して大きさや形状等の外観を検査することができる。また、1つの部品に対応するブロブを抽出するために、サンプルエッジ接線画像に対するマスターエッジ接線画像の畳み込み処理により、エッジの位置だけでなく、エッジの方向も加味して形状を抽出して複数の部品を個々の部品に分割するため、部品同士が接触している場合であっても、個々の部品を精度良く識別した上で、大きさや形状等の外観を検査することができる。これにより、高価な機械的フィダー等を要することもない。
【0095】
なお、本実施の形態では、部品(ボルト)の各種サイズを検査対象とする場合について説明したが、取得された画像から抽出される色情報も検査対象としてもよい。位置及び角度により光の反射も異なるため、色情報を検査する場合にも本発明を適用する意義がある。また、検査対象とする部品もボルトに限られず、部品の配置される位置及び角度により見え方が相違する部品に適用することができる。
【符号の説明】
【0096】
10 部品検査装置
12 供給部
14 ベルトコンベヤー
16 照射装置
18 ラインカメラ
20 画像処理操作部
22 駆動操作部
24 表示装置
26 コンピュータ
28 駆動回路

【特許請求の範囲】
【請求項1】
複数の部品が撮影された画像から抽出された前記部品の各々の輪郭に基づいて、基準方向を基準とした前記部品の各々の回転角度、画像内での前記部品の各々の位置、及び前記部品の各々の所定部位のサイズを検出する検出手段と、
複数のマスター部品が撮影された学習用画像から、前記検出手段により検出された前記マスター部品の各々の前記回転角度、前記位置、及び前記サイズを対応させて記憶したテーブルを生成する生成手段と、
前記検出手段により検出されたサンプル部品の前記回転角度及び前記位置に対応するサイズを、前記テーブルに記憶された前記回転角度、前記位置、及び前記サイズに基づいて計算する計算手段と、
前記計算手段で計算されたサイズと、前記検出手段で検出されたサンプル部品の所定部位のサイズとに基づいて、前記サンプル部品を検査する検査手段と、
を含む部品検査装置。
【請求項2】
前記検出手段は、前記複数の部品が撮影され画像から抽出された輪郭で囲まれた面積が、1つの部品の面積を表す予め定めた面積以上の場合には、前記輪郭内に複数の部品が含まれていると判断して、前記輪郭で囲まれた面積が前記予め定めた面積より小さくなるように分割する分割手段を含む請求項1記載の部品検査装置。
【請求項3】
複数の部品が撮影された画像からエッジを抽出するエッジ抽出手段と、
抽出された前記エッジから、曲率が所定値以下の直線エッジ部分を抽出し、該直線エッジ部分の方向のヒストグラムを生成する生成手段と、
抽出された前記エッジから求まるエッジの接線ベクトルを、可視化されたサンプルエッジ接線画像に変換する変換手段と、
前記ヒストグラムのピーク毎に、予め学習により生成された1つの部品を表すマスターテンプレートを前記ピークの方向に回転した画像から抽出されたエッジから求まるエッジの接線ベクトルを、可視化されたマスターエッジ接線画像に変換し、前記サンプルエッジ接線画像に対して前記マスターエッジ接線画像を畳み込み処理して、前記サンプルエッジ接線画像から、前記マスターエッジ接線画像との一致度を示す値が所定値以上となる部分を候補として抽出する候補抽出手段と、
抽出された候補を、1つの部品の輪郭を表す画像に変換し、変換した画像とマスターテンプレートとに基づいて、前記部品の各々を検査する検査手段と、
を含む部品検査装置。
【請求項4】
前記候補抽出手段は、抽出された候補と前記マスターエッジ接線画像とを位置合せして、前記候補の連続していない部分を、前記マスターエッジ接線画像から補完する請求項3記載の部品検査装置。
【請求項5】
前記検査手段は、前記複数の部品が撮影された画像内で、1つの部品の輪郭を表す画像の各々を真候補または偽候補とした場合の組み合わせについて、組み合せ毎に以下の(条件1)〜(条件3)に従った評価値を算出し、該評価値が最も高い組み合わせのときの真候補を最終的な1つの部品の輪郭を表す画像の各々として決定する請求項3または請求項4記載の部品検査装置。
(条件1)真候補の和が、前記複数の部品の輪郭の全体を覆うこと
(条件2)真候補同士の重なりが少ないこと
(条件3)真候補の数が、前記複数の部品の輪郭で囲まれた面積により定まる上限及び下限の範囲に入ること
(条件4)前記複数の部品の輪郭が存在しない箇所を真候補が覆わないこと
【請求項6】
コンピュータを、
複数の部品が撮影された画像から抽出された前記部品の各々の輪郭に基づいて、の基準方向を基準とした前記部品の各々回転角度、画像内での前記部品の各々の位置、及び前記部品の各々の所定部位のサイズを検出する検出手段、
複数のマスター部品が撮影された学習用画像から、前記検出手段により検出された前記マスター部品の各々の前記回転角度、前記位置、及び前記サイズを対応させて記憶したテーブルを生成する生成手段、
前記検出手段により検出されたサンプル部品の前記回転角度及び前記位置に対応するサイズを、前記テーブルに記憶された前記回転角度、前記位置、及び前記サイズに基づいて計算する計算手段、及び
前記計算手段で計算されたサイズと、前記検出手段で検出されたサンプル部品の所定部位のサイズとに基づいて、前記サンプル部品を検査する検査手段
として機能させるための部品検査プログラム。
【請求項7】
コンピュータを、
複数の部品が撮影された画像からエッジを抽出するエッジ抽出手段、
抽出された前記エッジから、曲率が所定値以下の直線エッジ部分を抽出し、該直線エッジ部分の方向のヒストグラムを生成する生成手段、
抽出された前記エッジから求まるエッジの接線ベクトルを、可視化されたサンプルエッジ接線画像に変換する変換手段、
前記ヒストグラムのピーク毎に、予め学習により生成された1つの部品を表すマスターテンプレートを前記ピークの方向に回転した画像から抽出されたエッジから求まるエッジの接線ベクトルを、可視化されたマスターエッジ接線画像に変換し、前記サンプルエッジ接線画像に対して前記マスターエッジ接線画像を畳み込み処理して、前記サンプルエッジ接線画像から、前記マスターエッジ接線画像との一致度を示す値が所定値以上となる部分を候補として抽出する候補抽出手段、及び
抽出された候補を、1つの部品の輪郭を表す画像に変換し、変換した画像とマスターテンプレートとに基づいて、前記部品の各々を検査する検査手段
として機能させるための部品検査プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2011−141202(P2011−141202A)
【公開日】平成23年7月21日(2011.7.21)
【国際特許分類】
【出願番号】特願2010−1993(P2010−1993)
【出願日】平成22年1月7日(2010.1.7)
【出願人】(000170554)国際技術開発株式会社 (34)
【Fターム(参考)】