(57)【要約】【課題】複数の部品が任意に配置されている場合であっても、部品の配置による見え方の相違を吸収して大きさや形状等の外観を検査する。【解決手段】複数の部品を撮影した画像をブロブ処理し、抽出されたエッジから求まるエッジ接線ベクトルを用いてエッジ接線画像に変換し、サンプルエッジ接線画像に対するマスターエッジ接線画像の畳み込み処理により抽出された個々のブロブに基づいて、マスター部品の所定部位のサイズ、位置ｘｍ、及び角度θｍを定めたテーブルを用いて、検出されたサンプル部品の位置ｘｓ及び角度θｓに対応するサイズを補完計算して、検出されたサンプル部品の所定部位のサイズと比較して、サンプル部品を検査する。【選択図】図８
2011141202.tif 000002
【特許請求の範囲】
【請求項１】
複数の部品が撮影された画像から抽出された前記部品の各々の輪郭に基づいて、基準方向を基準とした前記部品の各々の回転角度、画像内での前記部品の各々の位置、及び前記部品の各々の所定部位のサイズを検出する検出手段と、
複数のマスター部品が撮影された学習用画像から、前記検出手段により検出された前記マスター部品の各々の前記回転角度、前記位置、及び前記サイズを対応させて記憶したテーブルを生成する生成手段と、
前記検出手段により検出されたサンプル部品の前記回転角度及び前記位置に対応するサイズを、前記テーブルに記憶された前記回転角度、前記位置、及び前記サイズに基づいて計算する計算手段と、
前記計算手段で計算されたサイズと、前記検出手段で検出されたサンプル部品の所定部位のサイズとに基づいて、前記サンプル部品を検査する検査手段と、
を含む部品検査装置。
【請求項２】
前記検出手段は、前記複数の部品が撮影され画像から抽出された輪郭で囲まれた面積が、１つの部品の面積を表す予め定めた面積以上の場合には、前記輪郭内に複数の部品が含まれていると判断して、前記輪郭で囲まれた面積が前記予め定めた面積より小さくなるように分割する分割手段を含む請求項１記載の部品検査装置。
【請求項３】
複数の部品が撮影された画像からエッジを抽出するエッジ抽出手段と、
抽出された前記エッジから、曲率が所定値以下の直線エッジ部分を抽出し、該直線エッジ部分の方向のヒストグラムを生成する生成手段と、
抽出された前記エッジから求まるエッジの接線ベクトルを、可視化されたサンプルエッジ接線画像に変換する変換手段と、
前記ヒストグラムのピーク毎に、予め学習により生成された１つの部品を表すマスターテンプレートを前記ピークの方向に回転した画像から抽出されたエッジから求まるエッジの接線ベクトルを、可視化されたマスターエッジ接線画像に変換し、前記サンプルエッジ接線画像に対して前記マスターエッジ接線画像を畳み込み処理して、前記サンプルエッジ接線画像から、前記マスターエッジ接線画像との一致度を示す値が所定値以上となる部分を候補として抽出する候補抽出手段と、
抽出された候補を、１つの部品の輪郭を表す画像に変換し、変換した画像とマスターテンプレートとに基づいて、前記部品の各々を検査する検査手段と、
を含む部品検査装置。
【請求項４】
前記候補抽出手段は、抽出された候補と前記マスターエッジ接線画像とを位置合せして、前記候補の連続していない部分を、前記マスターエッジ接線画像から補完する請求項３記載の部品検査装置。
【請求項５】
前記検査手段は、前記複数の部品が撮影された画像内で、１つの部品の輪郭を表す画像の各々を真候補または偽候補とした場合の組み合わせについて、組み合せ毎に以下の（条件１）〜（条件３）に従った評価値を算出し、該評価値が最も高い組み合わせのときの真候補を最終的な１つの部品の輪郭を表す画像の各々として決定する請求項３または請求項４記載の部品検査装置。
（条件１）真候補の和が、前記複数の部品の輪郭の全体を覆うこと
（条件２）真候補同士の重なりが少ないこと
（条件３）真候補の数が、前記複数の部品の輪郭で囲まれた面積により定まる上限及び下限の範囲に入ること
（条件４）前記複数の部品の輪郭が存在しない箇所を真候補が覆わないこと
【請求項６】
コンピュータを、
複数の部品が撮影された画像から抽出された前記部品の各々の輪郭に基づいて、の基準方向を基準とした前記部品の各々回転角度、画像内での前記部品の各々の位置、及び前記部品の各々の所定部位のサイズを検出する検出手段、
複数のマスター部品が撮影された学習用画像から、前記検出手段により検出された前記マスター部品の各々の前記回転角度、前記位置、及び前記サイズを対応させて記憶したテーブルを生成する生成手段、
前記検出手段により検出されたサンプル部品の前記回転角度及び前記位置に対応するサイズを、前記テーブルに記憶された前記回転角度、前記位置、及び前記サイズに基づいて計算する計算手段、及び
前記計算手段で計算されたサイズと、前記検出手段で検出されたサンプル部品の所定部位のサイズとに基づいて、前記サンプル部品を検査する検査手段
として機能させるための部品検査プログラム。
【請求項７】
コンピュータを、
複数の部品が撮影された画像からエッジを抽出するエッジ抽出手段、
抽出された前記エッジから、曲率が所定値以下の直線エッジ部分を抽出し、該直線エッジ部分の方向のヒストグラムを生成する生成手段、
抽出された前記エッジから求まるエッジの接線ベクトルを、可視化されたサンプルエッジ接線画像に変換する変換手段、
前記ヒストグラムのピーク毎に、予め学習により生成された１つの部品を表すマスターテンプレートを前記ピークの方向に回転した画像から抽出されたエッジから求まるエッジの接線ベクトルを、可視化されたマスターエッジ接線画像に変換し、前記サンプルエッジ接線画像に対して前記マスターエッジ接線画像を畳み込み処理して、前記サンプルエッジ接線画像から、前記マスターエッジ接線画像との一致度を示す値が所定値以上となる部分を候補として抽出する候補抽出手段、及び
抽出された候補を、１つの部品の輪郭を表す画像に変換し、変換した画像とマスターテンプレートとに基づいて、前記部品の各々を検査する検査手段
として機能させるための部品検査プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、部品検査装置及びプログラムに係り、特に、検査対象の部品を撮影した画像に対する画像処理により、部品の検査を行うための部品検査装置及びプログラムに関する。
【背景技術】
【０００２】
従来より、部品の大きさ、形状、色等の外観の異常を、マスターテンプレートとの比較により検査することが行われている。
【０００３】
例えば、画像処理を用いた、マスターパターンを撮像した画像データと作製パターンを撮像した画像データとを比較するマッチング法が知られている。このマッチング法は、マスターパターンを撮像したときの各画素と作製パターンを撮像したときの各画素とを画素毎に２値化した画像データを比較してパターン同士が一致しているか否かを判定する。また、マスターパターンをテンプレートとして一つの作製パターンの中の複数のパターンを比較することもできる。このように比較することによって、作製パターンの欠陥を検出することができる。このような技術として、パターン欠陥検出装置が提案されている（特許文献１及び２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−８３４５２号公報
【特許文献２】特開２００６−１２６９４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１及び２記載の技術では、検査対象物である部品を所定の位置及び角度に配置することを前提としているが、図１６に示すように、画像上の部品は、部品の配置により見え方が相違するため、画像上での各部位のサイズも相違してしまう。従って、上記特許文献１及び２記載の技術を、任意に配置された部品の検査に適用した場合には、マスターテンプレートとのマッチングが困難になる、という問題がある。
【０００６】
また、部品が任意に配置されている場合には、部品同士が接触している可能性も高く、画像処理により個々の部品として識別する必要が生じる、という問題がある。
【０００７】
本発明は上記問題点を解消するためになされたもので、複数の部品が任意に配置されている場合であっても、部品の配置による見え方の相違を吸収して大きさや形状等の外観を検査することができる部品検査装置及びプログラムを提供することを第１の目的とする。
【０００８】
また、部品同士が接触している場合であっても、個々の部品を精度良く識別した上で、大きさや形状等の外観を検査することができる部品検査装置及びプログラムを提供することを第２の目的とする。
【課題を解決するための手段】
【０００９】
上記第１の目的を達成するために、第１の発明の部品検査装置は、複数の部品が撮影された画像から抽出された前記部品の各々の輪郭に基づいて、基準方向を基準とした前記部品の各々の回転角度、画像内での前記部品の各々の位置、及び前記部品の各々の所定部位のサイズを検出する検出手段と、複数のマスター部品が撮影された学習用画像から、前記検出手段により検出された前記マスター部品の各々の前記回転角度、前記位置、及び前記サイズを対応させて記憶したテーブルを生成する生成手段と、前記検出手段により検出されたサンプル部品の前記回転角度及び前記位置に対応するサイズを、前記テーブルに記憶された前記回転角度、前記位置、及び前記サイズに基づいて計算する計算手段と、前記計算手段で計算されたサイズと、前記検出手段で検出されたサンプル部品の所定部位のサイズとに基づいて、前記サンプル部品を検査する検査手段と、を含んで構成されている。
【００１０】
第１の発明の部品検査装置は、検出手段が、複数の部品が撮影された画像から抽出された部品の各々の輪郭に基づいて、基準方向を基準とした部品の各々の回転角度、画像内での部品の各々の位置、及び部品の各々の所定部位のサイズを検出する。そして、学習段階では、生成手段が、複数のマスター部品が撮影された学習用画像から、検出手段により検出されたマスター部品の各々の回転角度、位置、及びサイズを対応させて記憶したテーブルを生成する。また、検査段階では、計算手段が、検出手段により検出されたサンプル部品の回転角度及び位置に対応するサイズを、テーブルに記憶された回転角度、位置、及びサイズに基づいて計算し、検査手段が、計算手段で計算されたサイズと、検出手段で検出されたサンプル部品の所定部位のサイズとに基づいて、サンプル部品を検査する。
【００１１】
このように、マスター部品の位置、角度、及びサイズを記憶したテーブルを用いて、検出されたサンプル部品の位置及び角度に対応するサイズを計算して、検出されたサンプル部品の所定部位のサイズと比較するため、複数個の部品が任意に配置されている場合であっても、部品の配置による見え方の相違を吸収して大きさや形状等の外観を検査することができる。
【００１２】
また、第１の発明の前記検出手段は、前記複数の部品が撮影され画像から抽出された輪郭で囲まれた面積が、１つの部品の面積を表す予め定めた面積以上の場合には、前記輪郭内に複数の部品が含まれていると判断して、前記輪郭で囲まれた面積が前記予め定めた面積より小さくなるように分割する分割手段を含んで構成するようにすることができる。
【００１３】
また、上記第２の目的を達成するために、第２の発明の部品検査装置は、複数の部品が撮影された画像からエッジを抽出するエッジ抽出手段と、抽出された前記エッジから、曲率が所定値以下の直線エッジ部分を抽出し、該直線エッジ部分の方向のヒストグラムを生成する生成手段と、抽出された前記エッジから求まるエッジの接線ベクトルを、可視化されたサンプルエッジ接線画像に変換する変換手段と、前記ヒストグラムのピーク毎に、予め学習により生成された１つの部品を表すマスターテンプレートを前記ピークの方向に回転した画像から抽出されたエッジから求まるエッジの接線ベクトルを、可視化されたマスターエッジ接線画像に変換し、前記サンプルエッジ接線画像に対して前記マスターエッジ接線画像を畳み込み処理して、前記サンプルエッジ接線画像から、前記マスターエッジ接線画像との一致度を示す値が所定値以上となる部分を候補として抽出する候補抽出手段と、抽出された候補を、１つの部品の輪郭を表す画像に変換し、変換した画像とマスターテンプレートとに基づいて、前記部品の各々を検査する検査手段と、を含んで構成されている。
【００１４】
第２の発明の画像処理装置は、エッジ抽出手段が、複数の部品が撮影された画像からエッジを抽出し、生成手段が、抽出されたエッジから、曲率が所定値以下の直線エッジ部分を抽出し、直線エッジ部分の方向のヒストグラムを生成する。また、変換手段が、抽出されたエッジから求まるエッジの接線ベクトルを、可視化されたサンプルエッジ接線画像に変換し、候補抽出手段が、ヒストグラムのピーク毎に、予め学習により生成された１つの部品を表すマスターテンプレートをピークの方向に回転した画像から抽出されたエッジから求まるエッジの接線ベクトルを、可視化されたマスターエッジ接線画像に変換し、サンプルエッジ接線画像に対してマスターエッジ接線画像を畳み込み処理して、サンプルエッジ接線画像から、マスターエッジ接線画像との一致度を示す値が所定値以上となる部分を候補として抽出する。そして、検査手段が、抽出された候補を、１つの部品の輪郭を表す画像に変換し、変換した画像とマスターテンプレートとに基づいて、部品の各々を検査する。
【００１５】
このように、サンプルエッジ接線画像に対するマスターエッジ接線画像の畳み込み処理により、エッジの位置だけでなく、エッジの方向も加味して形状を抽出して複数の部品を個々の部品に分割するため、部品同士が接触している場合であっても、個々の部品を精度良く識別した上で、大きさや形状等の外観を検査することができる。
【００１６】
また、第２の発明の前記候補抽出手段は、抽出された候補と前記マスターエッジ接線画像とを位置合せして、前記候補の連続していない部分を、前記マスターエッジ接線画像から補完するようにすることができる。
【００１７】
また、第２の発明の前記検査手段は、前記複数の部品が撮影された画像内で、１つの部品の輪郭を表す画像の各々を真候補または偽候補とした場合の組み合わせについて、組み合せ毎に以下の（条件１）〜（条件４）に従った評価値を算出し、該評価値が最も高い組み合わせのときの真候補を最終的な１つの部品の輪郭を表す画像の各々として決定するようにすることができる。
（条件１）真候補の和が、前記複数の部品の輪郭の全体を覆うこと
（条件２）真候補同士の重なりが少ないこと
（条件３）真候補の数が、前記複数の部品の輪郭で囲まれた面積により定まる上限及び下限の範囲に入ること
（条件４）前記複数の部品の輪郭が存在しない箇所を真候補が覆わないこと
【００１８】
また、第３の発明の部品検査プログラムは、コンピュータを、複数の部品が撮影された画像から抽出された前記部品の各々の輪郭に基づいて、基準方向を基準とした前記部品の各々の回転角度、画像内での前記部品の各々の位置、及び前記部品の各々の所定部位のサイズを検出する検出手段、複数のマスター部品が撮影された学習用画像から、前記検出手段により検出された前記マスター部品の各々の前記回転角度、前記位置、及び前記サイズを対応させて記憶したテーブルを生成する生成手段、前記検出手段により検出されたサンプル部品の前記回転角度及び前記位置に対応するサイズを、前記テーブルに記憶された前記回転角度、前記位置、及び前記サイズに基づいて計算する計算手段、及び前記計算手段で計算されたサイズと、前記検出手段で検出されたサンプル部品の所定部位のサイズとに基づいて、前記サンプル部品を検査する検査手段として機能させるためのプログラムである。
【００１９】
また、第４の発明の部品検査プログラムは、コンピュータを、複数の部品が撮影された画像からエッジを抽出するエッジ抽出手段、抽出された前記エッジから、曲率が所定値以下の直線エッジ部分を抽出し、該直線エッジ部分の方向のヒストグラムを生成する生成手段、抽出された前記エッジから求まるエッジの接線ベクトルを、可視化されたサンプルエッジ接線画像に変換する変換手段、前記ヒストグラムのピーク毎に、予め学習により生成された１つの部品を表すマスターテンプレートを前記ピークの方向に回転した画像から抽出されたエッジから求まるエッジの接線ベクトルを、可視化されたマスターエッジ接線画像に変換し、前記サンプルエッジ接線画像に対して前記マスターエッジ接線画像を畳み込み処理して、前記サンプルエッジ接線画像から、前記マスターエッジ接線画像との一致度を示す値が所定値以上となる部分を候補として抽出する候補抽出手段、及び抽出された候補を、１つの部品の輪郭を表す画像に変換し、変換した画像とマスターテンプレートとに基づいて、前記部品の各々を検査する検査手段として機能させるためのプログラムである。
【００２０】
なお、本発明のプログラムを記憶する記憶媒体は、特に限定されず、ハードディスクであってもよいし、ＲＯＭであってもよい。また、ＣＤ−ＲＯＭやＤＶＤディスク、光磁気ディスクやＩＣカードであってもよい。更にまた、該プログラムを、ネットワークに接続されたサーバ等からダウンロードするようにしてもよい。
【発明の効果】
【００２１】
以上説明したように、本発明によれば、マスター部品の所定部位のサイズを、マスター部品の位置及び角度毎に定めたテーブルを用いて、検出されたサンプル部品の位置及び角度に対応する所定部位のサイズを補完計算して、検出されたサンプル部品の所定部位のサイズと比較するため、複数個の部品が任意に配置されている場合であっても、部品の配置による見え方の相違を吸収して大きさや形状等の外観を検査することができる、という効果が得られる。
【００２２】
また、サンプルエッジ接線画像に対するマスターエッジ接線画像の畳み込み処理により、エッジの位置だけでなく、エッジの方向も加味して形状を抽出して複数の部品を個々の部品に分割するため、部品同士が接触している場合であっても、個々の部品を精度良く識別した上で、大きさや形状等の外観を検査することができる、という効果が得られる。
【図面の簡単な説明】
【００２３】
【図１】本実施の形態の部品検査装置の構成を示す外観図である。
【図２】本実施の形態の部品検査装置の検査位置部分の概略を示す構成図である。
【図３】本実施の形態の部品検査装置の概略を示すブロック図である。
【図４】本実施の形態の部品検査装置におけるテンプレート選択及びテーブル生成処理ルーチンの内容を示すフローチャートである。
【図５】部品（ボルト）の所定部位のサイズの一例を説明するための図である。
【図６】本実施の形態の部品検査装置におけるブロブ処理ルーチンの内容を示すフローチャートである。
【図７】ブロブ処理における、（ａ）元画像、（ｂ）赤成分画像、（ｃ）２値化画像、及び（ｄ）修正後画像である。
【図８】本実施の形態の部品検査装置における部品検査処理ルーチンの内容を示すフローチャートである。
【図９】本実施の形態の部品検査装置における第１の領域分割処理ルーチンの内容を示すフローチャートである。
【図１０】ブロブ毎に分割された２次元画像の一例を示す図である。
【図１１】（ａ）サンプルエッジ接線画像、（ｂ）マスターエッジ接線画像、（ｃ）サンプルエッジ画像、及び（ｄ）マスターエッジ画像の一例を示す図である。
【図１２】畳み込み処理を説明するための図である。
【図１３】ファインフィット処理を説明するための図である。
【図１４】本実施の形態の部品検査装置における第２の領域分割処理ルーチンの内容を示すフローチャートである。
【図１５】本実施の形態の部品検査装置における検査処理ルーチンの内容を示すフローチャートである。
【図１６】部品の配置された位置及び角度による見え方の相違を説明するための図である。
【発明を実施するための形態】
【００２４】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００２５】
図１に示すように、本実施の形態に係る部品検査装置１０は、トレー及び滑り台で構成され、検査対象の複数の部品が供給される供給部１２、供給部１２の滑り台に連続して配置され、供給部１２から供給された複数の部品を載置して、検査位置まで搬送する透明または半透明のベルトコンベヤー１４、検査位置に搬送された部品に対して検査用の照明を照射する照射装置１６、検査位置に搬送された部品を撮影して画像データを出力するためのラインカメラ１８、ラインカメラ１８で撮影された画像の画像処理に関する操作を行うための画像処理操作部２０、装置全体の電源や、ベルトコンベヤー１４、照射装置１６及びラインカメラ１８の駆動に関する操作を行うための駆動操作部２２、並びに、ラインカメラ１８で撮影された画像、画像処理された画像、検査結果等を表示するための表示装置２４を含んで構成されている。
【００２６】
図２に、検査位置部分の概略構成図を示す。ラインカメラ１８は、検査位置の真上に配置されている。ラインカメラ１８は、ベルトコンベヤー１４の幅方向（図２中の矢印Ａで示す搬送方向と直交する方向）に画素が配列されている。また、ベルトコンベヤー１４の上方であって、ラインカメラ１８を挟む位置に、検査位置を青色光で照射する照射装置１６Ｂ、及び緑色光で照射する照射装置１６Ｇが配置され、ベルトコンベヤー１４の下方であって、検査位置の真下に、検査位置を赤色光で照射する照射装置１６Ｒが配置されている。
【００２７】
部品検査装置１０は、さらにコンピュータ２６及び駆動回路２８を含んで構成されている。ラインカメラ１８で撮影された１ラインずつの画像データは、一旦図示しないメモリに記憶され、１フレーム分の画像データとしてコンピュータ２６に入力される。コンピュータ２６では、後述する部品検査処理が実行され、検査結果に応じて、ベルトコンベヤー１４等の駆動を制御するための信号を駆動回路２８に出力する。
【００２８】
図３に示すように、コンピュータ２６は、部品検査装置１０全体の制御を司るＣＰＵ３０、後述するテンプレート選択及びテーブル生成処理、及び部品検査処理のプログラム等各種プログラムを記憶した記憶媒体としてのＲＯＭ３２、ワークエリアとしてデータを一時的に格納するＲＡＭ３４、各種情報が記憶された記憶手段としてのハードディスク（ＨＤＤ）３６、入出力ポート（Ｉ／Ｏポート）３８、ネットワークインターフェース（ネットワークＩ／Ｆ）４０、及びこれらを接続するバスを含んで構成されている。Ｉ／Ｏポート３８には、画像処理操作部２０、駆動操作部２２、表示装置２４、及び駆動回路２８が接続されている。
【００２９】
次に、本実施の形態の部品検査装置１０の動作について説明する。
【００３０】
まず、駆動操作部２２を操作して、部品検査装置１０の電源をオンし、ベルトコンベヤー１４、照射装置１６、及びラインカメラ１８の駆動を開始する。そして、後述するテンプレートの選択、及びテーブルの生成のために、全ての検査対象の部品またはその中から任意に選択した複数の部品を、供給部１２のトレー及び滑り台を介して供給する。供給された部品は、滑り台からベルトコンベヤー１４に移動して、検査位置に搬送される。この際、複数の部品の各々は任意の位置及び角度で配置される。そして、検査位置で撮影された部品の画像がコンピュータ２６に入力され、後述するテンプレート選択及びテーブル生成処理が実行されることにより、テンプレートを選択、及びテーブルを生成するための元となる部品（マスター部品）が選択されて、テンプレートの選択、及びテーブルの生成が行われる。
【００３１】
次に、全ての検査対象の部品（サンプル部品）を、上記と同様に供給部１２から供給する。供給された部品は、検査位置に搬送される。ここでも同様に、複数個の部品の各々は任意の位置及び角度で配置される。そして、検査位置で撮影された部品の画像がコンピュータ２６に入力され、後述する部品検査処理が実行される。
【００３２】
図４を参照して、コンピュータ２６で実行されるテンプレート選択及びテーブル生成処理ルーチンについて説明する。
【００３３】
ステップ１００で、ラインカメラ１８で１ラインずつ撮影され、メモリに記憶された１フレーム分の画像データを取得する。
【００３４】
次に、ステップ１０２で、後述するブロブ処理を実行して、画像を隣接する画素集合の領域であるブロブ毎に分割する。
【００３５】
次に、ステップ１０４で、ブロブを１つ選択し、そのブロブの面積が閾値以下か否かを判定する。この判定は、ブロブが１つの部品を示しているか、複数の部品を示しているかを判定するものである。閾値は、全ブロブの面積の中央値、最頻値、平均値等を用いたり、予め所定の値を設定したりして定める。また、面積に変えてその他のサイズを用いたり、面積とその他のサイズとを組み合わせて用いたりしてもよい。ブロブの面積が閾値以下の場合には、ブロブが１つの部品を示していると判定されて、ステップ１０６へ移行し、そのブロブをＯＫ＿ブロブバッファへ格納して、ステップ１０８へ移行する。このブロブが示す部品がマスター部品となる。一方、ブロブの面積が閾値より大きい場合には、ブロブが複数の部品を含んでいると判定されて、そのブロブをＯＫ＿ブロブバッファへ格納することなく、そのままステップ１０８へ移行する。
【００３６】
ステップ１０８では、１フレームの画像からブロブ処理により分割された全てのブロブについて処理が終了したか否かを判定する。全てのブロブについて処理が終了した場合には、ステップ１１０へ移行し、未処理のブロブが存在する場合には、ステップ１０４へ戻って、次のブロブを選択して、処理を繰り返す。
【００３７】
ステップ１１０では、ＯＫ＿ブロブバッファに格納されたブロブ毎に、部品の所定部位の各種サイズ、画像のライン方向の位置ｘｍ、及び角度θｍを検出する。図５に示すように、例えば、部品がボルトの場合には、部品の所定部位の各種サイズは、全体の軸方向の長さ（Ａ）、スレッド部分の軸方向の長さ（Ｂ）、頭部分の軸方向の長さ（Ｃ）、頭部分の直径（Ｄ）、スレッドの山部の直径（Ｅ）、及びスレッドの谷部の直径（Ｆ）等とすることができる。これらの部品の所定部位のサイズは、部品の配置、すなわちライン方向の位置ｘｍ、及び角度θｍによって画像上での見え方が相違するため、検出される値が異なる。そこで、部品の所定部位のサイズと部品の配置とを対応付けて、テンプレートを選択したりテーブルを生成したりするために、部品のライン方向の位置ｘｍ、及び角度θｍを検出する。
【００３８】
ライン方向の位置ｘｍは、例えば、ライン方向の一端を０、他端をＸとして、０〜Ｘの値を割り当てることができる。なお、ここでは、ラインカメラ１８を用いているため、ライン方向に直交する方向（ベルトコンベヤー１４の搬送方向）の位置については考慮する必要がないが、エリアカメラを用いた場合等には、ライン方向に直交する方向の位置も検出するようにするとよい。
【００３９】
また、角度θｍは、例えば、ライン方向に平行な線と部品の軸方向とのなす角度であって、部品の一端がライン方向に平行な線より上方にある場合を０〜１８０°、下方にある場合を１８０〜３６０°として表した角度とすることができる。
【００４０】
次に、ステップ１１２で、各ブロブが示す部品の画像の中から代表テンプレートを選択する。選択の基準は、例えば、ライン方向の位置ｘｍが中央（Ｘ／２）で、角度θｍが０°のもの、またはこれに最も近いもの等を選択するように定めておくとよい。代表テンプレートは、後述する部品検査処理の第１の領域分割処理の畳み込み処理で用いられる。
【００４１】
次に、ステップ１１４で、検出された位置ｘｍ及び角度θｍ毎の位置角度別テンプレートを選択する。１つの位置ｘｍ及び角度θｍに対するブロブが１つしかない場合には、そのブロブを位置ｘｍ及び角度θｍに対応する位置角度別テンプレートとして選択する。１つの位置ｘｍ及び角度θｍに対応して複数のブロブが存在する場合には、いずれかのブロブを選択して、選択したブロブを位置ｘｍ及び角度θｍに対応する位置角度別テンプレートとする。位置角度別テンプレートは、後述する部品検査処理の第１の領域分割処理のファインフィット処理で用いられる。
【００４２】
次に、ステップ１１６で、検出された位置ｘｍ及び角度θｍ毎に対応する部品の所定部位のサイズを定めた位置角度別ルックアップテーブル（ＬＵＴ）を生成する。１つの位置ｘｍ及び角度θｍに対応して複数のブロブが存在する場合には、いずれかのブロブを選択して、そのブロブから検出されるサイズを対応させてもよいし、複数のブロブから検出されるサイズの各々の平均値等を対応させてもよい。位置角度別ＬＵＴは、後述する部品検査処理の検査処理で用いられる。
【００４３】
選択された代表テンプレート、位置角度別テンプレート、及び生成された位置角度別ＬＵＴを所定の記憶領域に記憶して、処理を終了する。
【００４４】
次に、図６を参照して、テンプレート選択及びテーブル生成処理（図５）のステップ１０２で実行されるブロブ処理ルーチンについて説明する。
【００４５】
ステップ１２０で、赤成分を閾値処理して、取得した画像を２値化する。具体的には、例えば、透明または半透明のベルトコンベヤー１４上に載置された部品には、赤色光が下から照射され、青色光及び緑色光が上から照射されるため、取得された画像は、図７（ａ）に示すように、部品部分が青成分及び緑成分（白部分）、背景部分が赤成分（ドット部分）の画像となる。同図（ｂ）に示すように、取得された画像の赤成分（網掛け部分）を抽出し、同図（ｃ）に示すように、固定の閾値以上の画素を赤成分として「１」を割り当て（白部分）、閾値以下の画素をその他の成分として「０」を割り当てて（斜線部分）２値化する。
【００４６】
次に、ステップ１２２で、ブロブ解析処理により、隣接する「１」が割り当てられた画素同士の画素集合領域を１つのブロブとして分割する。
【００４７】
次に、ステップ１２４で、図７（ｃ）及び（ｄ）に示すように、小さい面積のブロブ内の画素を「０」に変換する。この処理により、青成分及び緑成分が純粋でないことにより、部品の表面に表れる一部の赤成分部分を処理して、中抜けのない部品の外形に沿ったブロブに分割することができる。
【００４８】
次に、図８を参照して、コンピュータ２６で実行される部品検査処理ルーチンについて説明する。
【００４９】
ステップ１００及び１０２で、テンプレート選択及びテーブル生成処理と同様に、１フレーム分の画像を取得して、ブロブ処理を実行する。
【００５０】
次に、ステップ１４０で、ブロブを１つ選択し、そのブロブの面積が閾値以上か否かを判定する。ブロブの面積が閾値以上の場合には、ブロブが複数の部品を含んでいると判定されて、ステップ１４２で後述する第１の領域分割処理、及びステップ１４４で後述する第２の領域分割処理を実行して、ステップ１４６へ移行する。一方、ブロブの面積が閾値より小さい場合には、ブロブが１つの部品を示していると判定されて、ステップ１４２及び１４４を経ることなく、ステップ１４６へ移行する。
【００５１】
ステップ１４６では、後述する検査処理を実行して、処理を終了する。このルーチンを１フレーム毎に繰り返し実行することにより、供給されたサンプル部品の全てを検査する。なお、サンプル部品の各々がいずれかのフレームに完全に含まれるように、画像の隣接するフレーム間を、サンプル部品の大きさに応じた所定ライン数分重複させるようにする。
【００５２】
次に、図９を参照して、部品検査処理（図８）のステップ１４２で実行される第１の領域分割処理について説明する。なお、第１の領域分割処理は、後述する第２の領域分割処理と比較して、精度は多少低くても、計算が速いアルゴリズムを用い、大まかに分割することを目的としている。
【００５３】
ステップ１６０で、図１０に示すようなブロブ毎に分割された２次元画像を、チェーンコードに変換する。そして、チェーンコードをフィルタ処理して、例えばボルトのスレッドのような雑音や微小な特徴を除去する。さらに、フィルタ処理されたチェーンコードからエッジ位置ベクトル、エッジ接線ベクトル、エッジ曲率、及びエッジ微分曲率を抽出する。
【００５４】
次に、ステップ１６２で、エッジ曲率が所定の閾値以下の略直線部分であるストレートエッジを抽出する。ストレートエッジの方向をヒストグラムに集積して、ストレートエッジの方向ヒストグラムを生成する。生成された方向ヒストグラムのピーク毎に通し番号１〜ｉｍａｘを付与する。
【００５５】
次に、ステップ１６４で、エッジ接線ベクトルをチェーンコード形式から２次元画像に変換して可視化する。この２次元画像をサンプルエッジ接線画像ＥＩ＿ｓという。サンプルエッジ接線画像ＥＩ＿ｓの各画素は２次元ベクトルであり、エッジに近くない画素は（０，０）であり、エッジの近くの画素は、エッジ接線ベクトルの方向に対応する値を持つ。このエッジ接線ベクトルの方向に対応する値を画素値の差で表現した例を図１１（ａ）に示す。なお、同図（ｃ）に、比較のために、エッジ位置ベクトルのチェーンコードを２次元画像に変換したサンプルエッジ画像Ｅ＿ｓを示す。また、雑音の影響を抑制するために画像にボケ処理を施したり、計算速度向上のために適当なサブサンプリングを行ったりしてもよい。
【００５６】
次に、ステップ１６６で、変数ｉに１をセットする。変数ｉは、方向ヒストグラムのピーク毎に付与された通し番号に対応しており、以下の畳み込み処理を方向ヒストグラム毎に実行するためのものである。
【００５７】
次に、ステップ１６８で、テンプレート選択及びテーブル生成処理（図４）のステップ１１２で選択された代表テンプレートを読み出し、代表テンプレートをピークｉの方向に回転して、サンプルエッジ接線画像ＥＩ＿ｓに変換したのと同様の手法により、マスターエッジ接線画像ＥＩ＿ｍに変換する。マスターエッジ接線画像ＥＩ＿ｍの一例を図１１（ｂ）に示す。なお、同図（ｂ）は、同図（ａ）のサンプルエッジ接線画像ＥＩ＿ｓに対して拡大して表示している。また、同図（ｄ）に、比較のために、代表テンプレートのエッジ位置ベクトルのチェーンコードを２次元画像に変換したマスターエッジ画像Ｅ＿ｍを示す。
【００５８】
次に、ステップ１７０で、図１２に示すように、サンプルエッジ接線画像ＥＩ＿ｓに対して、マスターエッジ接線画像ＥＩ＿ｍを平行移動させながらマッチング度を算出する畳み込み処理を実行する。マスターエッジ接線画像ＥＩ＿ｍとのマッチング度が閾値以上の部分を、サンプルエッジ接線画像ＥＩ＿ｓから候補として抽出する。抽出された候補には、通し番号１〜ｊｍａｘを付与する。
【００５９】
次に、ステップ１７２で、変数ｊに１をセットする。変数ｊは、抽出された候補毎に付与された通し番号に対応しており、以下のファインフィット処理を候補毎に実行するためのものである。
【００６０】
次に、ステップ１７４で、候補ｊのライン方向の位置ｘｓ及び角度θｓを検出し、テンプレート選択及びテーブル生成処理のステップ１１４で位置ｘｍ及び角度θｍ毎に選択された位置角度別テンプレートの中から、候補ｊから検出された位置ｘｓ及び角度θｓに最も近い位置ｘｍ及び角度θｍに対応する位置角度別テンプレートを選択して読み出す。
【００６１】
次に、ステップ１７６で、図１３に示すように、位置角度別テンプレートのエッジ上に等間隔に設定されたマッチポイント毎に、距離及び接線方向が近い候補ｊのエッジ上の対応する点を検出する。同図では、マッチポイント１〜４（５以降のマッチポイントは図示省略）のうち、マッチポイント１〜３については、候補ｊのエッジ上に対応する点が検出されているが、マッチポイント４については、対応する点が検出されなかったことを示している。位置角度別テンプレート上のマッチポイントの各々から、対応する候補ｊのエッジ上の点までのベクトル群を用いて、アフィン変換して、位置角度別テンプレートを移動する。
【００６２】
次に、ステップ１７８で、位置角度別テンプレートのマッチポイントとの対応がとれていない候補ｊのエッジの欠陥部分が閾値より小さいか否かを判定する。ここで、エッジの欠陥部分とは、画像的に見えない部分のことであり、部品自体の欠陥を意味するものではない。図１３の例では、マッチポイント４に対応する部分がエッジの欠陥部分となっている。エッジの欠陥部分が閾値より小さい場合には、ステップ１８０へ移行し、エッジの欠陥部分が閾値以上の場合には、ステップ１８２へ移行する。
【００６３】
ステップ１８０では、図１３に示すように、候補ｊのエッジの欠陥部分に対応する位置角度別テンプレートの部分を切り出して、候補ｊのエッジの欠陥部分に補完する。エッジの欠陥部分は、上述したように画像的に見えない部分であり、部品自体は良品であるとの前提の下、位置角度別テンプレートからそのエッジの欠陥部分を補完するものである。エッジの欠陥部分が補完された候補ｊに対して、逆フィルタ処理を施して、チェーンコードから２値化画像に変換して１つのブロブとして抽出する。
【００６４】
一方、候補ｊのエッジの欠陥部分が閾値以上であると判定されてステップ１８２へ移行した場合には、候補ｊが１つの部品を示すブロブではないと判断して、候補ｊを候補から除外して、ステップ１８４へ移行する。
【００６５】
次に、ステップ１８４で、変数ｊがｊｍａｘになったか否かを判定することにより、上記ステップ１７０で抽出された全ての候補について処理が終了したか否かを判定する。ｊ≠ｊｍａｘの場合には、ステップ１８６へ移行し、変数ｊを１インクリメントして、ステップ１７４へ戻り、次の候補について処理を繰り返す。一方、ｊ＝ｊｍａｘとなった場合には、ステップ１８８へ移行し、変数ｉがｉｍａｘになったか否かを判定することにより、上記ステップ１６２で生成した方向ヒストグラムの全てのピークについて処理が終了したか否かを判定する。ｉ≠ｉｍａｘの場合には、ステップ１９０へ移行し、変数ｉを１インクリメントして、ステップ１６８へ戻り、次のピークについて処理を繰り返す。一方、ｉ＝ｉｍａｘとなった場合には、処理を終了してリターンする。
【００６６】
なお、全てのピークについて上記ステップ１８０で抽出された全てのブロブの和を、元のブロブの画像から引いた差分画像に対して、更に本ルーチンを繰り返してもよい。方向ヒストグラムのピークが近接していた場合等により、見逃された部分が存在する可能性があるからである。
【００６７】
また、ここでは、候補ｊを抽出する畳み込み処理の際に、エッジ画像ではなく、エッジ接線画像を用いているが、このように、形状のみでなく接線方向も合わせてマッチング度を算出しているため、エッジ画像で畳み込み処理を行う場合と比較して、精度良く候補を抽出することができる。以下に、エッジ画像で畳み込み処理を行う場合と比較して、エッジ接線画像で畳み込み処理を行う方が形状抽出の性能が良いことを証明する。
【００６８】
（定義１）エッジ位置ベクトルリストＥを次のように定義する。
・Ｅは、素子Ｅ［Ｉ］（Ｉ＝０，・・・，Ｎ−１）からなる１次元列である。
・素子Ｅ［ｉ］は、２つの２次元ベクトルからなる。
Ｅ［Ｉ］＝（（ｘ＿ｉ，ｙ＿ｉ），（ｇｘ＿ｉ，ｇｙ＿ｉ））
（ｘ＿ｉ，ｙ＿ｉ）は、エッジ点の位置を表し、ｘ＿ｉ及びｙ＿ｉは実数である。
（ｇｘ＿ｉ，ｇｙ＿ｉ）は、エッジ点の接線ベクトルを表し、ｇｘ＿ｉ及びｇｙ＿ｉは実数である。
【００６９】
（定義２）エッジ接線画像ＥＩを次のように定義する。
・ＥＩは、素子Ｅ［ｘ，ｙ］（ｘ＝０，・・・，ｘ−１、ｙ＝０，・・・，ｙ−１）からなる２次元行列である。
・素子ＥＩ［ｘ，ｙ］は、１つの２次元ベクトルからなる。
ＥＩ［ｘ，ｙ］＝（ｇｘ＿ｉ，ｇｙ＿ｉ）
（ｇｘ＿ｉ，ｇｙ＿ｉ）は、位置［ｘ，ｙ］におけるエッジ点の接線ベクトルを表し、ｘ，ｙは、整数に限る。
【００７０】
（定義３）エッジ位置ベクトルリストＥを元にして、エッジ接線画像ＥＩを作成する方法を定義する。
（ステップ１）初期化：ＥＩ（ｘ，ｙ）＝０  ０，・・・，ｘ−１、０，・・・，ｙ−１の全てのｘ，ｙ
（ステップ２）Ｅの各素子Ｅ［Ｉ］＝（ｘ＿ｉ，ｙ＿ｉ），（ｇｘ＿ｉ，ｇｙ＿ｉ）において、
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
【００７１】
（定義４）２つのエッジ接線画像ＥＩ＿ｍ及びＥＩ＿ｓの畳み込み処理を定義する。
Ｘｍ，ＹｍはＥＩ＿ｍの縦横のサイズ、Ｘｓ，ＹｓはＥＩ＿ｓの縦横のサイズであり、Ｘｍ＜Ｘｓ、及びＹｍ＜Ｙｓを前提とする。
結果ＲＥＩは、サイズ２次元スカラー行列、サイズはＸｒ（Ｘｒ＝Ｘｓ−Ｘｍ＋１），Ｙｒ（Ｙｒ＝Ｙｓ−Ｙｍ＋１）となる。
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
【００７２】
（定義５）エッジ接線画像ＥＩから、２次元実数「エッジ絶対値」というイメージを作る方法を定義する。
２次元実数「エッジ絶対値」イメージをＥＩ＿Ｍａｇとする。ＥＩ＿Ｍａｇ［ｘ，ｙ］はスカラーである。
ＥＩ＿Ｍag[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)
【００７３】
（定義６）２つのエッジ絶対値イメージＥＩ＿Ｍａｇ＿ｍ及びＥＩ＿Ｍａｇ＿ｓの畳み込み処理を定義する。
ＥＩ＿Ｍａｇ＿ｍは、上記定義４のＥＩ＿ｍを元に定義５によって作られたものであり、ＥＩ＿Ｍａｇ＿ｓは、上記定義４のＥＩ＿ｓを元に定義５によって作られたものである。
結果ＲＥＩは２次元スカラー行列、サイズはＸｒ（Ｘｒ＝Ｘｓ−Ｘｍ＋１），Ｙｒ（Ｙｒ＝Ｙｓ−Ｙｍ＋１）となる。
RＥＩ＿Ｍag(x,y)
= sum[i,j] ＥＩ＿Ｍag_s(x+i, y+j) * ＥＩ＿Ｍag_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
【００７４】
（定理１）REI(x,y) <= RＥＩ＿Ｍag(x,y) for all x,y=0..Xr-1, y=0..Yr-1
証明：RＥＩ＿Ｍag(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
但し、各ｉ，ｊにて、  1-cos(EI_s(x+i, y+j) , EI_m(x+i, y+j))  >= 0
なので、証明となる。
【００７５】
（定理２）あるｘ，ｙに対して、REI(x,y) ＝ RＥＩ＿Ｍag(x,y)  が成り立つために必要な条件として、  cos(EI_s(x+i, y+j) , EI_m(x+i, y+j))=1  i,j=0..Xm-1,0..Ym-1
つまり、方向ベクトルは全て同じである。
証明：RＥＩ＿Ｍag(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
であるので、各ｉ，ｊにて、  cos(EI_s(x+i, y+j) , EI_m(x+i, y+j))  = 1
でなければ、  RＥＩ＿Ｍag(x,y) ＞ REI(x,y)  が成り立つ。
【００７６】
次に、図１４を参照して、部品検査処理（図８）のステップ１４４で実行される第２の領域分割処理について説明する。第２の領域分割処理では、第１の領域分割処理で大まかに抽出されたブロブの各々について、真候補及び偽候補の組み合わせ最適化処理により、更に精度良く１つの部品を示すブロブに分割するものである。
【００７７】
ステップ２００で、第１の領域分割処理（図９）のステップ１８０で抽出されたブロブの各々を真候補または偽候補とした任意の組み合わせを設定する。
【００７８】
次に、ステップ２０２で、設定された組み合わせについて、以下の（条件１）〜（条件４）に従った評価関数に基づき、評価値を算出する。
（条件１）真候補の和が、ブロブ全体を覆うこと
（条件２）真候補同士の重なりが少ないこと
（条件３）真候補の数が、ブロブ全体の面積により定まる上限及び下限の範囲に入ること
（条件４）ブロブが存在しない箇所を真候補が覆わないこと
【００７９】
ここで、（条件１）〜（条件４）に従った組み合わせ空間（解決空間）を評価する評価関数について説明する。
【００８０】
解決空間はベクトルC={ c[i]=0 or 1 , i=0..Nc-1  }で表せる。Ｎｃは候補数であり、ｃ［ｉ］がｉ番目の候補の推定状態を表し、０の場合は「偽」、１の場合は「真」である。
【００８１】
そして、ブロブを含む長方形を横Ｘ×縦Ｙとする。また、IM_blob(x,y)= 0 or 1をブロブのイメージとし、IM_cand[i](x,y)= 0 or 1をｉ番目のイメージとすると、「真」と判断された画素数は、
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
により条件１を表す。
【００８２】
次に、DT_blob(x,y)をブロブの距離変換イメージとし、DT_cand[i](x,y)をｉ番目の距離変換イメージとすると、
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)
により条件２を表す。
【００８３】
次に、CandNum_llimを候補数の下限、CandNum_ulimを候補数の上限として、条件３を表す。
【００８４】
次に、
Overcovered(x,y)= 1 if IM_blob(x,y)=0 AND Num_cand(x,y)>0, else 0
により条件４を表す。
【００８５】
そして、評価関数を次の通り定義する。
Eval(C) = weight_CandOverlap * Eval_CandOverlap(C) 
+ weight_uncovered * Eval_Uncovered(C)
+ weight_numcand * Eval_NumCand(C)
+ weight_overcover * Eval_Overcovered(C)
【００８６】
ただし、
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]
である。
【００８７】
次に、ステップ２０４で、評価値が最大値になったか否かを判定する。最大値になった場合には、ステップ２０６へ移行し、最大値になっていない場合には、ステップ２００へ戻って、異なる組み合わせを設定して処理を繰り返す。
【００８８】
ステップ２０６では、評価値が最大となったときの組み合わせの真候補のブロブの各々を、最終的な１つの部品を表すブロブとして決定して、リターンする。
【００８９】
なお、ここでは、評価値が最大となったか否かを判定する場合について説明したが、最適な組み合わせを決定することができる手法であれば、これに限定されない。
【００９０】
次に、図１５を参照して、部品検査処理（図８）のステップ１４６で実行される検査処理について説明する。
【００９１】
ステップ２２０で、テンプレート選択及びテーブル生成処理（図４）のステップ１１０と同様の処理により、ブロブ毎に、部品の所定部位の各種サイズ、画像のライン方向の位置ｘｓ、及び角度θｓを検出する。
【００９２】
次に、ステップ２２２で、テンプレート選択及びテーブル生成処理（図４）のステップ１１６で生成した位置角度別ＬＵＴを読み出して、検出した位置ｘｓ、及び角度θｓに対応するサイズを、位置角度別ＬＵＴに記憶された位置ｘｍ、角度θｍ、及びサイズに基づいて計算する。サイズの計算は、例えば、シンプレートスプライン等のアルゴリズムを用いて補完計算することができる。
【００９３】
次に、ステップ２２４で、上記ステップ２２０で検出されたサイズと、上記ステップ２２２で計算されたサイズとを比較することにより、ブロブが示す部品のサイズを検査し、検査結果を表示装置２４に表示したり、異常が検出された場合には、ベルトコンベヤー１４、照射装置１６、ラインカメラ１８等の駆動を停止したりするように制御して、リターンする。
【００９４】
以上説明したように、本実施の形態の部品検査装置によれば、マスター部品の所定部位のサイズ、位置ｘｍ、及び角度θｍを定めたテーブルを用いて、検出されたサンプル部品の位置ｘｓ及び角度θｓに対応するサイズを補完計算して、検出されたサンプル部品の所定部位のサイズと比較するため、複数の部品が任意に配置されている場合であっても、部品の配置による見え方の相違を吸収して大きさや形状等の外観を検査することができる。また、１つの部品に対応するブロブを抽出するために、サンプルエッジ接線画像に対するマスターエッジ接線画像の畳み込み処理により、エッジの位置だけでなく、エッジの方向も加味して形状を抽出して複数の部品を個々の部品に分割するため、部品同士が接触している場合であっても、個々の部品を精度良く識別した上で、大きさや形状等の外観を検査することができる。これにより、高価な機械的フィダー等を要することもない。
【００９５】
なお、本実施の形態では、部品（ボルト）の各種サイズを検査対象とする場合について説明したが、取得された画像から抽出される色情報も検査対象としてもよい。位置及び角度により光の反射も異なるため、色情報を検査する場合にも本発明を適用する意義がある。また、検査対象とする部品もボルトに限られず、部品の配置される位置及び角度により見え方が相違する部品に適用することができる。
【符号の説明】
【００９６】
１０   部品検査装置
１２   供給部
１４   ベルトコンベヤー
１６   照射装置
１８   ラインカメラ
２０   画像処理操作部
２２   駆動操作部
２４   表示装置
２６   コンピュータ
２８   駆動回路
【図１】
2011141202.tif 000003
【図２】
2011141202.tif 000004
【図３】
2011141202.tif 000005
【図４】
2011141202.tif 000006
【図５】
2011141202.tif 000007
【図６】
2011141202.tif 000008
【図７】
2011141202.tif 000009
【図８】
2011141202.tif 000010
【図９】
2011141202.tif 000011
【図１０】
2011141202.tif 000012
【図１１】
2011141202.tif 000013
【図１２】
2011141202.tif 000014
【図１３】
2011141202.tif 000015
【図１４】
2011141202.tif 000016
【図１５】
2011141202.tif 000017
【図１６】
2011141202.tif 000018