(57)【特許請求の範囲】
【請求項１】
１つの検査対象物を撮像することにより生成される電子画像データに対して画像処理を実行し、前記画像処理が実行された電子画像データの表示を行う情報処理装置であって、
前記電子画像データに対して、所定の画像処理を実行する画像処理実行手段と、
前記画像処理実行手段によって画像処理が実行された電子画像データと、前記画像処理の結果を示す画像処理結果とを対応づけて記憶する電子画像データ記憶手段と、
前記画像処理実行手段によって所定の画像処理が実行され、前記電子画像データ記憶手段に電子画像データが複数蓄積されているか否かを判定する複数蓄積判定手段と、
前記画像処理実行手段によって所定の画像処理が実行され、前記電子画像データ記憶手段に記憶された電子画像データのうち、１枚の電子画像データを取得して表示する表示手段とを備え、
前記表示手段は、前記複数蓄積判定手段によって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていると判定された場合には、前記電子画像データ記憶手段に記憶された電子画像データのうち少なくとも１以上の電子画像データの表示枚数を間引いて表示し、前記複数蓄積判定手段によって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていないと判定された場合には、前記電子画像データ記憶手段に記憶された電子画像データの表示枚数を間引かずに表示するものであり、
かつ、前記表示手段は、前記画像処理実行手段によって画像処理が実行された電子画像データに対応する前記画像処理結果を前記電子画像データ記憶手段から取得し、当該画像処理結果が異常または処理に失敗したことを示す電子画像データについては、前記複数蓄積判定手段によって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていると判定されたか否かに関わらず、表示枚数を間引かずに表示することを特徴とする情報処理装置。
【請求項２】
前記表示手段は、前記複数蓄積判定手段によって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていると判定されたことにより表示枚数の間引き対象となった電子画像データのうち、前記画像処理結果が異常または処理に失敗したことを示す電子画像データについては、表示枚数を間引かずに表示することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記表示手段は、前記電子画像データの画像処理結果を前記電子画像データ記憶手段から取得し、当該画像処理結果が連続して同一の画像処理結果を示す場合には、当該画像処理結果に対応づいた複数の電子画像データをグルーピングし、当該グルーピングされたまとまりで表示することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記画像処理結果に対応づいた電子画像データをグルーピングして表示する場合に、異なる画像処理結果の電子画像データが連続して含まれてもよい枚数を示す許容値を設定する許容値設定手段を更に備え、
前記表示手段は、前記表示手段によって表示される前記電子画像データの画像処理結果を前記電子画像データ記憶手段から取得し、当該画像処理結果のうち、前記異なる画像処理結果の電子画像データの連続した枚数が前記許容値以下または前記許容値より小さい場合には、当該異なる画像処理結果の電子画像データを含めて、前記電子画像データをグルーピングして表示し、前記異なる画像処理結果の電子画像データの連続した枚数が前記許容値以上または前記許容値より大きい場合には、当該異なる画像処理結果の電子画像データまでをグルーピングして表示することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記グルーピングして表示された電子画像データのグルーピングされた枚数を識別表示することを特徴とする請求項３または４に記載の情報処理装置。
【請求項６】
前記表示手段によって表示または間引かれた電子画像データを記憶する処理済みデータ記憶手段を更に備え、
前記グルーピングして表示された電子画像データは、グルーピングされた電子画像データごとに前記処理済みデータ記憶手段に格納されることを特徴とする請求項３乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記画像処理実行手段は、並列処理により、複数の電子画像データそれぞれに対して所定の画像処理を実行し、
前記複数蓄積判定手段は、前記画像処理実行手段において所定の画像処理を並列処理することにより、前記電子画像データ記憶手段に電子画像データが複数蓄積されているか否かを判定し、
前記表示手段は、前記複数蓄積判定手段によって、前記画像処理実行手段において所定の画像処理を並列処理することにより、前記電子画像データ記憶手段に電子画像データが複数蓄積されていると判定された場合には、前記電子画像データ記憶手段に記憶された電子画像データのうち少なくとも１以上の電子画像データの表示枚数を間引いて表示し、前記複数蓄積判定手段によって、前記画像処理実行手段において所定の画像処理を並列処理することにより、前記電子画像データ記憶手段に電子画像データが複数蓄積されていないと判定された場合には、前記電子画像データ記憶手段に記憶された電子画像データの表示枚数を間引かずに表示することを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記画像処理実行手段により実行される画像処理は、前記電子画像データに対して実行可能な画像処理アイテムがユーザから指定された処理順に構成され、前記処理順に構成された画像処理アイテムに係る一連の画像処理であって、前記電子画像データに対して前記処理順に実行することを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記表示手段は、前記情報処理装置と通信可能に接続されたディスプレイ装置に各種情報を表示させることを特徴とする請求項１乃至８のいずれか1項に記載の情報処理装置。
【請求項１０】
所定の画像処理が実行された電子画像データと、前記画像処理の結果を示す画像処理結果とを対応づけて記憶する電子画像データ記憶手段を備え、１つの検査対象物を撮像することにより生成される電子画像データに対して画像処理を実行し、前記画像処理が実行された電子画像データの表示を行う情報処理装置の制御方法であって、
前記情報処理装置の画像処理実行手段が、前記電子画像データに対して、所定の画像処理を実行する画像処理実行ステップと、
前記情報処理装置の複数蓄積判定手段が、前記画像処理実行ステップによって所定の画像処理が実行され、前記電子画像データ記憶手段に電子画像データが複数蓄積されているか否かを判定する複数蓄積判定ステップと、
前記情報処理装置の表示手段が、前記画像処理実行ステップによって所定の画像処理が実行され、前記電子画像データ記憶手段に記憶された電子画像データのうち、１枚の電子画像データを取得して表示する表示ステップとを備え、
前記表示ステップは、前記複数蓄積判定ステップによって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていると判定された場合には、前記電子画像データ記憶手段に記憶された電子画像データのうち少なくとも１以上の電子画像データの表示枚数を間引いて表示し、前記複数蓄積判定ステップによって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていないと判定された場合には、前記電子画像データ記憶手段に記憶された電子画像データの表示枚数を間引かずに表示するものであり、
かつ、前記表示ステップは、前記画像処理実行ステップによって画像処理が実行された電子画像データに対応する前記画像処理結果を前記電子画像データ記憶手段から取得し、当該画像処理結果が異常または処理に失敗したことを示す電子画像データについては、前記複数蓄積判定ステップによって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていると判定されたか否かに関わらず、表示枚数を間引かずに表示することを特徴とする情報処理装置の制御方法。
【請求項１１】
前記表示ステップは、前記複数蓄積判定ステップによって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていると判定されたことにより表示枚数の間引き対象となった電子画像データのうち、前記画像処理結果が異常または処理に失敗したことを示す電子画像データについては、表示枚数を間引かずに表示することを特徴とする請求項１０に記載の情報処理装置の制御方法。
【請求項１２】
前記表示ステップは、前記電子画像データの画像処理結果を前記電子画像データ記憶手段から取得し、当該画像処理結果が連続して同一の画像処理結果を示す場合には、当該画像処理結果に対応づいた複数の電子画像データをグルーピングし、当該グルーピングされたまとまりで表示することを特徴とする請求項１０または１１に記載の情報処理装置の制御方法。
【請求項１３】
所定の画像処理が実行された電子画像データと、前記画像処理の結果を示す画像処理結果とを対応づけて記憶する電子画像データ記憶手段を備え、１つの検査対象物を撮像することにより生成される電子画像データに対して画像処理を実行し、前記画像処理が実行された電子画像データの表示を行う情報処理装置の制御方法をコンピュータに実行させるためのコンピュータに読み取り実行可能なプログラムであって、
前記情報処理装置を、
前記電子画像データに対して、所定の画像処理を実行する画像処理実行手段と、
前記画像処理実行手段によって所定の画像処理が実行され、前記電子画像データ記憶手段に電子画像データが複数蓄積されているか否かを判定する複数蓄積判定手段と、
前記画像処理実行手段によって所定の画像処理が実行され、前記電子画像データ記憶手段に記憶された電子画像データのうち、１枚の電子画像データを取得して表示する表示手段として機能させ、
前記表示手段は、前記複数蓄積判定手段によって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていると判定された場合には、前記電子画像データ記憶手段に記憶された電子画像データのうち少なくとも１以上の電子画像データの表示枚数を間引いて表示し、前記複数蓄積判定手段によって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていないと判定された場合には、前記電子画像データ記憶手段に記憶された電子画像データの表示枚数を間引かずに表示するものであり、
かつ、前記表示手段は、前記画像処理実行手段によって画像処理が実行された電子画像データに対応する前記画像処理結果を前記電子画像データ記憶手段から取得し、当該画像処理結果が異常または処理に失敗したことを示す電子画像データについては、前記複数蓄積判定手段によって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていると判定されたか否かに関わらず、表示枚数を間引かずに表示することを特徴とするコンピュータに読み取り実行可能なプログラム。
【請求項１４】
前記表示手段は、前記複数蓄積判定手段によって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていると判定されたことにより表示枚数の間引き対象となった電子画像データのうち、前記画像処理結果が異常または処理に失敗したことを示す電子画像データについては、表示枚数を間引かずに表示することを特徴とする請求項１３に記載のコンピュータに読み取り実行可能なプログラム。
【請求項１５】
前記表示手段は、前記電子画像データの画像処理結果を前記電子画像データ記憶手段から取得し、当該画像処理結果が連続して同一の画像処理結果を示す場合には、当該画像処理結果に対応づいた複数の電子画像データをグルーピングし、当該グルーピングされたまとまりで表示することを特徴とする請求項１３または１４に記載のコンピュータに読み取り実行可能なプログラム。
【請求項１６】
請求項１３に記載のプログラムを格納することを特徴とするコンピュータで読み取り可能な記録媒体。
【請求項１７】
請求項１４に記載のプログラムを格納することを特徴とするコンピュータで読み取り可能な記録媒体。
【請求項１８】
請求項１５に記載のプログラムを格納することを特徴とするコンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理によって画像の検査を行う情報処理装置において、各画像検査結果を情報処理装置の負荷に応じて自動的に表示を間引く際に、異常が発見された画像検査結果は間引かないように制御する情報処理装置、情報処理装置の制御方法、プログラム、及びプログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
従来、例えば、チップマウンターにおける基板や部品の位置決めや、出来上がった製品の検査などを目的として、カメラで撮影した検査対象の画像データを、一定のロジック（処理フロー）で画像検査する画像検査装置が広く用いられている。
【０００３】
このような用途の画像検査装置としては、例えば、予め決められた画像検査のロジックを搭載した汎用タイプの画像検査装置や、ユーザのニーズに合致するロジックをユーザ自身が構築することが可能な専用タイプの画像検査装置がある。
【０００４】
ここで、汎用タイプの画像検査装置は、画像検査のロジックを新規に構築する必要がないため、実際の製造工程等への導入に際してユーザの労力はかからないが、ユーザのニーズを完全に満たすロジックであることは少ない。一方、専用タイプの画像検査装置は、ユーザのニーズを完全に満たす画像検査のロジックを構築することが可能であるが、そのために画像検査のロジックを都度開発する必要があるため、多大な開発労力と開発期間、更には多大なコストがかかるものであった。
【０００５】
そこで、従来、例えば下記の特許文献１に示すようなロジックの開発を効率化する技術が提案されている。具体的に、特許文献１では、ロジックを開発するコンピュータに予め複数の画像検査に係るモジュールを登録しておき、開発者が使用者のニーズに合致するモジュールを選択し、選択したモジュールに必要なパラメータを設定して、ソースコード化した上でオブジェクトコードを作成することにより、ロジックの開発を効率化するものである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−２９６１１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、このような一連の画像処理を実行する際には、複数のカメラから画像検査を行う画像が入力され、当該複数の画像が情報処理装置のマルチスレッドまたはマルチプロセスにより並列処理されるが、表示を行う画面は１つのため、情報処理装置の処理能力の限界で表示が間に合わないことがあった。つまり、複数画像をそれぞれ複数のＣＰＵで処理するが、表示画面は１つのため、情報処理装置が処理された複数画像を次々表示する必要がある。しかし、情報処理装置の処理能力によっては表示が遅れてしまい、表示待ちの画像が溜まってしまう問題があった。また、画像検査処理と画像検査後の結果画像を表示する処理とを同時に複数おこなった場合、上述した特許文献１の技術では、情報処理装置の処理能力が足りず、画像検査の速度が低下するといった問題がある。
【０００８】
このような問題を解決するために、情報処理装置に負荷がかかった場合、画像処理が行われた結果画像をすべて表示せず、結果画像を間引くことで画像検査を優先させる仕組みが存在する。しかしながら、画像検査の結果、異常な画像を検知した場合、それらの原因を調査して、パラメータに反映することがある。本来は異常として検知されなくてもよい画像までも検知してしまうことを防ぐために、異常として検知された画像を元にパラメータ設定を行い、より適切なパラメータに変更していく。しかしながら、結果画像を間引いてしまうと、どの画像で異常と検知されたのかがわからない問題がある。つまり、単純に結果画像の間引き処理を行ってしまうと、本来作業者にとって必要な結果画像までも間引くこととなってしまう。
【０００９】
本発明は、複数の画像検査を行い、情報処理装置の負荷が高くなった場合に、画像検査後の結果画像を自動的に間引き、ユーザに必要な結果画像であった場合には間引かずに表示する仕組みを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の目的を達成するために、請求項１に記載の情報処理装置は、１つの検査対象物を撮像することにより生成される電子画像データに対して画像処理を実行し、前記画像処理が実行された電子画像データの表示を行う情報処理装置であって、前記電子画像データに対して、所定の画像処理を実行する画像処理実行手段と、前記画像処理実行手段によって画像処理が実行された電子画像データと、前記画像処理の結果を示す画像処理結果とを対応づけて記憶する電子画像データ記憶手段と、前記画像処理実行手段によって所定の画像処理が実行され、前記電子画像データ記憶手段に電子画像データが複数蓄積されているか否かを判定する複数蓄積判定手段と、前記画像処理実行手段によって所定の画像処理が実行され、前記電子画像データ記憶手段に記憶された電子画像データのうち、１枚の電子画像データを取得して表示する表示手段とを備え、前記表示手段は、前記複数蓄積判定手段によって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていると判定された場合には、前記電子画像データ記憶手段に記憶された電子画像データのうち少なくとも１以上の電子画像データの表示枚数を間引いて表示し、前記複数蓄積判定手段によって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていないと判定された場合には、前記電子画像データ記憶手段に記憶された電子画像データの表示枚数を間引かずに表示するものであり、かつ、前記表示手段は、前記画像処理実行手段によって画像処理が実行された電子画像データに対応する前記画像処理結果を前記電子画像データ記憶手段から取得し、当該画像処理結果が異常または処理に失敗したことを示す電子画像データについては、前記複数蓄積判定手段によって、前記電子画像データ記憶手段に前記電子画像データが複数蓄積されていると判定されたか否かに関わらず、表示枚数を間引かずに表示することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、画像検査後の結果画像を表示する画像処理において、情報処理装置の負荷が高い場合には結果画像の表示を間引くが、ユーザにとって必要な結果画像であった場合には、間引かずに表示させることができる効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態に係る画像検査システムの概略構成の一例を示す模式図である。
【図２】図１に示す情報処理装置１１０の内部のハードウェア構成の一例を示す模式図である。
【図３】図２に示す画像入力コントローラ１１５ｆのハードウェア構成の一例を示す模式図である。
【図４】図１に示す情報処理装置１１０の機能構成の一例を示す模式図である。
【図５】図４に示すモジュール・ソースコードマスタテーブル４１１の一例を示す模式図である。
【図６】図４に示す処理フロー・入出力パラメータテーブル４１２の一例を示す模式図である。
【図７】図１に示す情報処理装置１１０による制御方法の処理手順の一例を示す模式図である。
【図８】画像検査システム開発画面のメインメニューの一例を示す模式図である。
【図９】図７のステップＳ１０９におけるモジュールのオンライン検査処理の詳細な処理手順の一例を示すフローチャートである。
【図１０】オンライン検査画面の一例を示す模式図である。
【図１１】図４に示す検査パラメータテーブル４８０の一例を示す模式図である。
【図１２】図４に示す検査テーブル４８１の一例を示す模式図である。
【図１３】図９のステップＳ２１１におけるモジュールの検査スレッド処理の詳細な処理手順の一例を示すフローチャートである。
【図１４】図４に示す検査結果テーブル４１８の一例を示す模式図である。
【図１５】図９のオンライン検査処理と並行して動作する検査結果表示処理の詳細な処理手順の一例を示すフローチャートである。
【図１６】画像検査結果の画像の一例を示す模式図である。
【図１７】画像記録テーブル４８２の構成の一例を示す模式図である。
【図１８】オンライン検査画面においてＮＧ画像が間引かれずに動作することを示す模式図である。
【図１９】サムネイル表示されている結果の詳細を示す詳細結果表示画面の一例を示す模式図である。
【図２０】保存データのフォルダ構成を示す模式図である。
【図２１】画像処理フロー構築画面の一例を示す模式図である。
【図２２】画像処理フローが並列処理によって動作することを示す模式図である。
【図２３】実施例２における検査結果表示処理の詳細な処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら、本発明の実施の形態について説明する。まず、実施例１について説明する。図１は、本発明の実施の形態に係る画像検査システム１００の概略構成の一例を示す模式図である。図１に示す通り、画像検査システム１００は、情報処理装置１１０と、入力装置１２０と、ディスプレイ装置１３０と、カメラ１４０と、照明装置コントローラ１５０と、照明装置１６０と、外部機器コントローラ１７０と、検査対象１８１が載置されたステージ１８０を有して構成されている。
【００１４】
情報処理装置１１０は、画像検査システム１００における動作を統括的に制御する装置である。ここで、本実施形態においては、情報処理装置１１０は、実際の製造工程に導入される画像検査装置で動作する画像検査アプリケーションプログラムの開発を支援する装置として適用した例を説明するが、本発明においてはこれに限定されるわけではなく、たとえば、実際の製造工程に導入されている画像検査装置として適用する形態も本発明に含まれる。
【００１５】
情報処理装置１１０は、所定のケーブル等を介して、検査対象１８１の撮像（撮影）を行うカメラ１４０と通信可能に構成されている。また、情報処理装置１１０は、所定のケーブル等を介して、照明装置１６０の制御を行う照明装置コントローラ１５０と通信可能に構成されている。また、情報処理装置１１０は、所定のケーブル等を介して、ステージ１８０を制御するプログラマブルコントローラ（ＰＣＬ）などの外部機器コントローラ１７０と、あらかじめ設定した通信が可能に構成されている。さらに、情報処理装置１１０は、所定のケーブル等を介して、それぞれ、入力装置１２０およびディスプレイ装置１３０と通信可能に構成されている。すなわち、情報処理装置１１０は、所定のケーブル等を介して接続された、入力装置１２０、ディスプレイ装置１３０、カメラ１４０、照明装置コントローラ１５０および外部機器コントローラ１７０を制御することによって、画像検査システム１００における動作を統括的に制御する。
【００１６】
入力装置１２０は、例えばユーザが情報処理装置１１０に対して各種の指示の入力を行う際にユーザによって操作されるものであり、ユーザからの入力指示操作に従って、当該入力指示を情報処理装置１１０に対して入力するものである。この入力装置１２０は、例えば、キーボード（ＫＢ）やポインティングデバイス等で構成されている。
【００１７】
ディスプレイ装置１３０は、情報処理装置１１０の制御に従って、各種の画像や各種の情報などを表示画面に表示する。
【００１８】
カメラ１４０は、情報処理装置１１０の制御に従って、ステージ１８０上に載置された検査対象１８１の撮影（撮像）を行い、撮影により得られた画像データ（電子画像データ）を所定のケーブル等を介して情報処理装置１１０に送信する。
【００１９】
照明装置コントローラ１５０は、情報処理装置１１０の制御に従って、照明装置１６０の照明を制御する。照明装置１６０は、照明装置コントローラ１５０の制御に基づき、検査対象１８１における検査内容に応じて、当該検査対象１８１に対する照明の点灯／非点灯の切り替えや明るさの調整等を行う。
【００２０】
外部機器コントローラ１７０は、情報処理装置１１０の制御に従って、ステージ１８０を制御する。ステージ１８０は、外部機器コントローラ１７０の制御に基づき、載置された検査対象１８１を目的の位置に移動させたり、検査対象１８１の搬入や搬出をしたりする。以上が画像検査システムの構成の一例の説明である。
【００２１】
次に、情報処理装置１１０のハードウェア構成について説明する。図２は、図１に示す情報処理装置１１０のハードウェア構成の一例を示す模式図である。図２には、情報処理装置１１０の内部構成に加えて、当該情報処理装置１１０と接続される各種装置についても記載している。
【００２２】
情報処理装置１１０は、図２に示すように、ＣＰＵ１１１と、ＲＡＭ１１２と、ＲＯＭ１１３と、システムバス１１４と、各種のコントローラ１１５（１１５ａ〜１１５ｇ）と、外部メモリ１１６と、を備えている。各種のコントローラ１１５として、入力コントローラ１１５ａ、ビデオコントローラ１１５ｂ、メモリコントローラ１１５ｃ、通信Ｉ／Ｆコントローラ１１５ｄ、１１５ｅ、及び１１５ｇ、画像入力コントローラ１１５ｆが構成されている。ＣＰＵ１１１は、ＲＯＭ１１３或いは外部メモリ１１６に記憶されたプログラム等に基づいてシステムバス１１４に接続された各デバイスを制御して、情報処理装置１１０における動作を統括的に制御する。ＲＡＭ１１２は、ＣＰＵ１１１の主メモリ、ワークエリア等として機能する。ＣＰＵ１１１は、検査の実行に際して、必要なプログラム等をＲＡＭ１１２にロードして、プログラムを実行することにより、情報処理装置１１０における各種の動作を実現する。ＲＯＭ１１３には、ＣＰＵ１１１の制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ
／ Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）等が記憶されている。
【００２３】
システムバス１１４は、ＣＰＵ１１１、ＲＡＭ１１２、ＲＯＭ１１３、入力コントローラ１１５ａ、ビデオコントローラ１１５ｂ、メモリコントローラ１１５ｃ、通信Ｉ／Ｆコントローラ１１５ｄ及び１１５ｅ、１１５ｇ、画像入力コントローラ１１５ｆを、相互に通信可能に接続する。
【００２４】
入力コントローラ１１５ａは、キーボード（ＫＢ）やポインティングデバイスなどからなる入力装置１２０からの入力を制御する。ビデオコントローラ１１５ｂは、表示装置であるディスプレイ装置１３０への表示を制御する。メモリコントローラ１１５ｃは、外部メモリ１１６へのアクセスを制御する。ここで、外部メモリ１１６は、例えばハードディスク（ＨＤ）やフレキシブルディスク（ＦＤ）等で構成され、ブートプログラムや、各種のアプリケーションプログラム、編集ファイル、各種のデータや各種の情報等を記憶する。また、外部メモリ１１６は、オペレーティングシステム（以下、「ＯＳ」とする）や、ＣＰＵ１１１に後述する各種の検査を実行させるためのプログラム、当該プログラムの制御に従った検査を行う際に使用する各種のテーブルや各種の検査結果情報等も記憶する。
【００２５】
通信Ｉ／Ｆコントローラ１１５ｄは、外部機器コントローラ１７０との通信を制御する。また、通信Ｉ／Ｆコントローラ１１５ｅは、照明装置コントローラ１５０との通信を制御する。画像入力コントローラ１１５ｆは、カメラ１４０と通信を行って、カメラ１４０から画像データの受信が可能に構成されている。ここで、画像入力コントローラ１１５ｆは、コントローラ上で演算処理が可能なハードウェアを搭載しているものであってもよい。なお、本実施形態では、カメラ１４０からの画像データの入力を前提に説明を行うが、画像ファイルを読み込んで入力する形態であってもよい。さらに、通信Ｉ／Ｆコントローラ１１５ｇは、ローカルエリアネットワーク（ＬＡＮ）１９０等のネットワークに接続され、当該ネットワークに接続されている各種装置との通信を制御する。
【００２６】
次に、図３を用いて、画像入力コントローラ１１５ｆのハードウェア構成について説明する。図３に示す通り、画像入力コントローラ１１５ｆは、ＣＰＵ（演算チップ）３０１、メモリコントローラ３０２、入力コントローラ３０３、オンボードメモリ３０４を備えている。
【００２７】
ＣＰＵ（演算チップ）３０１は、後述する各種の画像検査を実行する。メモリコントローラ３０２はＣＰＵ（演算チップ）３０１の制御に従って、オンボードメモリ３０４への各種データの入出力を制御する。入力コントローラ３０３はカメラ１４０からの画像データの入力を制御する。オンボードメモリ３０４はＣＰＵ（演算チップ）３０１の主記憶として機能する。以上が、画像入力コントローラ１１５ｆのハードウェア構成の説明である。
【００２８】
次に、情報処理装置１１０の機能構成の一例について説明する。図４は、図１に示す情報処理装置１１０の機能構成の一例を示す模式図である。
【００２９】
情報処理装置１１０には、図４に示すように、テーブル記憶部４１０、フロー作成部４２０、ソースコード変換部４３０、コンパイル部４４０、（検証）実行部４５０、データ保存部４６０、及び、データ入力・出力部４７０の各機能構成が構成される。また、テーブル記憶部４１０には、モジュール・ソースコードマスタテーブル４１１、処理フロー・入出力パラメータテーブル４１２、ソースコードテーブル４１３、オブジェクトコードテーブル４１４、及びプロジェクトファイルテーブル４１５が記憶されている。また、条件式テーブル４１６、ノード処理フラグテーブル４１７、検査結果テーブル４１８、検査パラメータテーブル４８０、及び検査テーブル４８１も記憶されている。
【００３０】
ここで、本実施形態においては、図４のテーブル記憶部４１０が、例えば図２に示す外部メモリ１１６に構成される（一旦、ＲＡＭ１１２に構成された後に外部メモリ１１６に構成される場合も含む）。また、図４のフロー作成部４２０、ソースコード変換部４３０、コンパイル部４４０、（検証）実行部４５０、データ保存部４６０及びデータ入力・出力部４７０が、例えば図２に示すＣＰＵ１１１と、ＲＯＭ１１３或いは外部メモリ１１６に記憶されているプログラムと、から構成される。
【００３１】
図５を参照して、図４のテーブル記憶部４１０に記憶されるモジュール・ソースコードマスタテーブル４１１について説明する。図５はモジュール・ソースコードマスタテーブル４１１の構成の一例を示す模式図である。
【００３２】
図５に示すように、モジュール・ソースコードマスタテーブル４１１には、インデックス（Ｉｎｄｅｘ）５０１ごとに、画像検査に係る処理アイテム５０２と、各処理アイテムに対応するソースコード５０３、またその処理アイテムを実現するためのモジュールに対する初期値５０４と処理主体５０５が関連付けられている。このソースコードは、ソースコード変換部４３０で検査対象のモジュールをソースコードに変換する際に用いられるものである。
【００３３】
次に、図６を参照して、図４のテーブル記憶部４１０に記憶される処理フロー・入出力パラメータテーブル４１２について説明する。図６は、図４に示す処理フロー・入出力パラメータテーブル４１２の構成の一例を示す模式図である。図６に示すように、処理フロー・入出力パラメータテーブル４１２は、インデックス（Ｉｎｄｅｘ）６０１ごとに、画像検査に係るモジュール６０３と、各モジュール６０３の順序６０２と、各モジュール６０３のフロー登録名６０４と、各モジュール６０３における入力パラメータ６０５及び出力パラメータ６０６が関連付けられている。入力パラメータ６０５は、各モジュールで使用する各種のデータが格納される画像バッファや記憶領域等を示す。出力パラメータ６０６は、各モジュールが実行された際の結果画像バッファや各種の検査に用いた閾値等を記憶する記憶領域を示す。次ステップ６０７は、次に処理されるべきステップのインデックス（Ｉｎｄｅｘ）６０１を示す。なお、この次ステップ６０７は、複数のインデックス（Ｉｎｄｅｘ）を持つこともある。また、分岐参照６０８は、モジュール６０３に「反復処理」モジュール、「条件分岐処理」モジュールを設定した際に、各条件（ノード）が次にどのステップを処理するかを指定する条件式テーブルを示す。さらに、処理主体６０９は、各モジュールにおいて処理をＣＰＵ１１１と、画像入力コントローラ１１５ｆのＣＰＵ（演算チップ）３０１のどちらで行うかを示す項目である。
【００３４】
なお、図６に示す処理フロー・入出力パラメータテーブル４１２におけるインデックス（Ｉｎｄｅｘ）６０１と、図４に示すモジュール・ソースコードマスタテーブル４１１におけるインデックス（Ｉｎｄｅｘ）とは特に対応させていないが、相互に対応させて各テーブルを作成する形態であってもよい。なお、処理フロー・入出力パラメータテーブルＴ６００において、インデックス（Ｉｎｄｅｘ）６０１の２および３は反復処理、処理フロー・入出力パラメータテーブルＴ６０１のインデックス（Ｉｎｄｅｘ）６０１の２から４は条件分岐処理の一例である。
【００３５】
ソースコードテーブル４１３は、処理フロー・入出力パラメータテーブル４１２に記憶されているモジュール６０３について、ソースコード変換部４３０でモジュール・ソースコードマスタテーブル４１１を用いてソースコードに変換し登録している、全てのモジュール或いは一部のモジュールにおけるソースコードを記憶する。
【００３６】
オブジェクトコードテーブル４１４は、ソースコードテーブル４１３に記憶されているソースコードをコンパイル部４４０で変換した、実行可能なモジュールであるオブジェクトコードを記憶する。プロジェクトファイルテーブル４１５は、画像検査に係る初期設定パラメータや、処理フローシーケンス、ソースコード、入出力パラメータ等を記憶する。また条件式テーブル４１６は、「条件分岐処理」モジュールが設定された際の、条件式等を記憶し、ノード処理フラグテーブル４１７は、「並列分岐処理」モジュールが設定された際の、呼び出し側のノード名等を記憶する。
【００３７】
図１４を参照して、図４のテーブル記憶部４１０に記憶される検査結果テーブル４１８について説明する。図１４は検査結果テーブル４１８の構成の一例を示す模式図である。
【００３８】
図１４に示すように、検査結果テーブル４１８には、処理フロー・入出力パラメータテーブル４１２におけるインデックス（Ｉｎｄｅｘ）６０１と紐づいたインデックス（Ｉｎｄｅｘ）１４０１、検査結果ごとに割り振られる識別ＩＤ１４０２、検査対象の識別箇所を座標で示す識別箇所１４０３、識別箇所１４０３の検査結果を示す識別結果１４０４、検査対象である画像名を示す検査画像名１４０５が関連付けられている。尚、識別箇所１４０３は、検査画像の左上頂点を（０，０）とする座標から構成され、識別箇所の左上の座標と、識別箇所の右下の座標を組み合わせて格納される。識別箇所は矩形であるので、識別箇所を特定できるのであれば、これに限らない。
【００３９】
次に、図１１を参照して、図４のテーブル記憶部４１０に記憶される検査パラメータテーブル４８０について説明する。図１１は検査パラメータテーブル４８０の構成の一例を示す模式図である。
【００４０】
図１１に示すように、検査パラメータテーブル４８０には、検査パラメータごとに割り振られるＮＯ１１０１、当該検査パラメータが使用中か否かを示す使用中フラグ１１０２が関連付けられている。
【００４１】
次に、図１２を参照して、図４のテーブル記憶部４１０に記憶される検査テーブル４８１（電子画像データ記憶手段）について説明する。図１２は検査テーブル４８１の構成の一例を示す模式図である。
【００４２】
図１２に示すように、検査テーブル４８１には、検査をおこなうスレッドのスレッド名を示す検査スレッド１２０１、検査スレッド１２０１が実行中か否かを示す実行中フラグ１２０２、検査の結果を示す検査結果１２０３（画像処理結果）、図１４の検査画像名１４０５と対応し、検査対象の画像名を示す検査画像名１２０４、当該検査スレッドが検査パラメータテーブル４８０のうち、どこで検査されているかを示す検査パラメータ１２０５が関連付けられている。
【００４３】
図１７を参照して、図４のテーブル記憶部４１０に記憶される画像記録テーブル４８２について説明する。図１７は画像記録テーブル４８２の構成の一例を示す模式図である。
【００４４】
図１７に示すように、画像記録テーブル４８２には、画像記録された順番に割り振られるインデックス（Ｉｎｄｅｘ）１８０１、データを判別するために用いる判別名（タイムスタンプ）１８０２、連続した同一のグルーピングとして記録された画像枚数１８０３が格納される。判別名１８０２には、データを判別特定できるのであれば、これに限らない。
【００４５】
続いて、図４のフロー作成部４２０、ソースコード変換部４３０、コンパイル部４４０、実行部４５０、データ保存部４６０、及び、データ入力・出力部４７０について説明する。
【００４６】
フロー作成部４２０は、モジュール・ソースコードマスタテーブル４１１に含まれているモジュールの処理シーケンスを管理する処理フロー・入出力パラメータテーブル４１２の作成等と、処理フロー描画領域２１０２（図２１参照）へのモジュールの描画を行う機能を有する。
【００４７】
ソースコード変換部４３０は、フロー作成部４２０により作成された処理フロー・入出力パラメータテーブル４１２に記憶されている各モジュールの処理データをモジュール・ソースコードマスタテーブル４１１と照合して、各モジュールをソースコードに変換し、ソースコードテーブル４１３に記憶する機能を有する。
【００４８】
なお、図５及び図６に示すテーブルのモジュールには、画像に対する検査だけでなく、画像を取得するための事前処理や、検査結果を出力するための事後処理を含む外部機器に対する処理などを含めても勿論構わない。例えば、カメラ１４０の撮像条件を設定する制御指令や、照明装置１６０を制御するための照明装置コントローラ１５０への制御指令、或いは、ステージの移動などを制御するための外部機器コントローラ１７０への制御指令、ＬＡＮ上に接続されたＰＣにデータを送信する等の制御指令を行うものであってもよい。
【００４９】
コンパイル部４４０は、ソースコードテーブル４１３に記憶されているソースコードから実行可能なオブジェクトコードを生成し、生成したオブジェクトコードをオブジェクトコードテーブル４１４に記憶する機能を有する。
【００５０】
なお、コンパイル部４４０が行うコンパイルには、デバッグ・コンパイルとリリース・コンパイルの２つのタイプがある。ここで、本実施形態においては、処理フロー作成中には、ソースコードレベルでのステップ実行を可能とするデバッグ・コンパイルを行い、データ保存時には、後述するオンライン検査で利用可能なファイルを生成するリリース・コンパイルを行う。この際、デバッグ・コンパイル及びリリース・コンパイルの両者は、同じ変換手法で生成されたソースコードを参照するものとする。
【００５１】
（検証）実行部４５０は、コンパイル部４４０により作成されたオブジェクトコードテーブル４１４に記憶されているオブジェクトコードを実行し、結果画像表示領域２１０３（図２１参照）及び検査画像表示領域１００２と処理フロー・入出力パラメータテーブル４１２を更新する機能を有する。
【００５２】
データ保存部４６０は、例えば、ＲＡＭ１１２にあるソースコードテーブル４１３、オブジェクトコードテーブル４１４及びプロジェクトファイルテーブル４１５を外部メモリ１１６に出力して、データの保存処理を行う。
【００５３】
データ入力・出力部４７０は、各モジュールで使用する入出力パラメータを管理する機能を有する。
【００５４】
次に、情報処理装置１１０によって実行される画像検査アプリケーションプログラム作成処理の処理手順について説明する。図７は、図１に示す情報処理装置１１０による画像検査プログラム作成処理の処理手順の一例を示すフローチャートである。本処理をＣＰＵ１１１に実行させるためのプログラムは外部メモリ１１６に記憶されており、本処理の実行要求を入力装置１２０より受け付けた場合に、ＣＰＵ１１１は、当該プログラムをＲＡＭ１１２にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。
【００５５】
まず、図７のステップＳ１０３において、情報処理装置１１０のＣＰＵ１１１は、例えば、入力装置１２０からの入力指示に基づいて、画像検査システム開発やシステム設定を行うためのメインメニューをディスプレイ装置１３０に表示する処理を行う。メインメニューは図８に示すようなものである。
【００５６】
図８は、画像検査システム開発画面のメインメニュー８００の一例を示す模式図である。図８に示す画像検査システム開発画面のメインメニュー８００には、ロジック（処理フロー）の新規作成、若しくは作成済みの処理フローの編集を行う「プロジェクト構築」メニュー８０１、「プロジェクト構築」メニュー８０１で作成した処理フローをオンライン検査モードで実行するための「オンライン検査」メニュー８０２、メインメニューを終了する「終了」メニュー８０５が設けられている。
【００５７】
図７の説明に戻る。ステップＳ１０３のメインメニュー表示処理を終えると、ＣＰＵ１１１は処理をステップＳ１０４に進める。そして、情報処理装置１１０のＣＰＵ１１１は、ステップＳ１０３で表示された画像検査システム開発画面のメインメニュー８００上の各メニュー項目に対して、入力装置１２０からの入力指示があったか否かを判断する。
【００５８】
ステップＳ１０４の判断の結果、入力装置１２０からメインメニュー８００の各メニュー項目に対する入力指示がなかったと判断した場合には（ステップＳ１０４／ＮＯ）、入力装置１２０からの入力指示があるまで、ステップＳ１０４で待機する。一方、ステップ１０２の判断の結果、入力装置１２０からの入力指示あったと判断した場合には（ステップＳ１０４／ＹＥＳ）、ステップＳ１０５に進む。
【００５９】
ステップＳ１０５に進むと、情報処理装置１１０のＣＰＵ１１１は、入力装置１２０からの入力指示に基づいて、選択された処理内容の判定処理を行う。このステップＳ１０５で判定される処理内容としては、本例では、「プロジェクト構築処理」、「オンライン検査処理」「終了」である。なお、ここで挙げた処理内容は一例を示したものであり、その他のメニュー項目をメインメニューに追加し、そのメニュー項目に対応するその他の処理内容をステップＳ１０５で判定することも可能である。
【００６０】
続いて、ステップＳ１０６において、情報処理装置１１０のＣＰＵ１１１は、ステップＳ１０５で判定した処理内容が、「プロジェクト構築処理」であるか否かを判断する。ステップＳ１０６の判断の結果、ステップＳ１０５で判定した処理内容が、「プロジェクト構築処理」であると判断した場合には（ステップＳ１０６／ＹＥＳ）、処理をステップＳ１０７に進める。
【００６１】
ステップＳ１０７に進むと、情報処理装置１１０のＣＰＵ１１１は、「プロジェクト構築処理」を行う。この「プロジェクト構築処理」は、画像検査プログラムを構築する処理である。
【００６２】
まず、情報処理装置１１０のＣＰＵ１１１は、例えば、入力装置１２０からの入力指示に基づいて、図２１に示す画像処理システムの開発を行うための画像処理プロジェクト開発画面２１００をディスプレイ装置１３０に表示する処理を行う。
【００６３】
図２１は、画像処理プロジェクト開発画面２１００の一例を示す模式図である。図２１に示す画像処理プロジェクト開発画面２１００には、利用可能な処理ユニット（即ち、画像処理に係る各モジュール）を表示するツールボックス２１０１と、画像処理の実行順序（即ち、各モジュールの実行順序）をフローチャートで描画する処理フロー描画領域２１０２と、各画像処理（即ち、各モジュールの処理）で実行した結果画像を表示する結果画像表示領域２１０３と、ツールバー２１０７と、処理実行結果を表示する処理結果表示領域２１０８と、処理された画像が複数枚あった場合に画像の選択を行う画像選択領域２１０９と、画像選択領域２１０９に備えられた前へボタン２１１０と、次へボタン２１１１や、画像処理プログラムの開発を終了する際に操作される不図示の閉じるボタン等も設けられている。
【００６４】
また、図２１に示す画像処理プロジェクト開発画面２１００には、例えば、新規モジュールの登録時もしくはパラメータの編集時等に、処理フロー描画領域２１０２のフローチャートの各ステップ（即ち、各モジュール）で利用するパラメータを設定するパラメータ編集画面２１０４と、そのパラメータの設定で実行された結果画像を表示する結果画像表示領域２１０３が表示される。図２１の、プロジェクト構築画面の例では、分岐処理によるフローを制御するモジュールも含んでいる。ここで、結果画像表示領域２１０３は、処理フロー描画領域２１０２の各モジュールの結果画像を表示する領域である。これは、プレビュー画像や縮小画像であってもよい。条件分岐処理の場合には、条件を満たしたノード（枝）の画像を表示し、条件を満たさないノードについては処理が行われないのでブラックアウトした画像を表示する。本発明では、結果画像表示領域２１０３にブラックアウトした画像を表示するが、一つ前のモジュールで処理された結果画像を表示してもよい。このとき、すべての処理フローの結果が結果画像表示領域２１０３に収まらない場合は、水平・垂直方向のスクロールバーを用いて表示領域を変更することとしてもよい。
【００６５】
また、処理結果表示領域２１０８は、処理フロー描画領域２１０２の各モジュールのうちの１つをユーザからの操作により選択された場合、当該モジュールの結果画像を表示する領域である。ユーザからの操作により選択されたモジュールが、条件分岐処理等の画像処理を伴わないモジュールである場合には、処理結果表示領域２１０８にブラックアウトした画像を表示する。本発明では、処理結果表示領域２１０８にブラックアウトした画像を表示するが、一つ前のモジュールで処理された結果画像を表示してもよい。以上が、画像処理プロジェクト開発画面２１００の構成の一例の説明である。
【００６６】
モジュール・ソースコードマスタテーブル４１１に記憶された各モジュールを、ユーザからの操作により、処理フロー描画領域２１０２において画像検査の順にフローチャート形式で組み合わせ、その組み合わせた結果を処理フロー・入出力パラメータテーブル４１２に格納する。その後、ソースコード変換部４３０によってモジュール・ソースコードマスタテーブル４１１と、処理フロー・入出力パラメータテーブル４１２から一連の画像検査のソースコードを生成し、ソースコードテーブル４１３に格納する。ソースコードテーブル４１３に格納された画像検査のソースコードは、コンパイル部４４０によってコンパイルされ、実行可能なオブジェクトコードを生成し、生成したオブジェクトコードをオブジェクトコードテーブル４１４に記憶する。
【００６７】
本発明では、このようにフローチャート形式で作成されたオブジェクトコードを情報処理装置のマルチスレッドまたはマルチプロセスにより並列動作させることで、複数のカメラ１４０から送信された複数画像に対して画像処理を行う。つまり、並列処理で動作する１つ１つの画像処理は、処理フロー描画領域２１０２において構築された画像処理フローの画像処理である。
【００６８】
図２２は、処理フロー描画領域２１０２において構築された画像処理フローの画像処理が並列処理により動作する概念図である。図２２に示すように、検査スレッドが複数存在し、そのスレッドごとに処理フロー描画領域２１０２において構築された画像処理フローの画像処理が動作する。本実施例では、同一の画像処理フローの画像処理が各スレッドにおいて並列処理されるが、スレッドごとに異なる画像処理フローの画像処理が動作してもよい。例えば、カメラ１４０が異なる目的で設置されている場合、一般的に同じ画像処理フローを利用することは少ない。よって、情報処理装置１１０のＣＰU１１１は、スレッドごとにことなる画像処理フローを構築し、実行する形態が考えられる。この場合も同様にスレッドごとに構築されたそれぞれ異なる画像処理フローを並列処理によって動作させる。
【００６９】
以上が、プロジェクト構築処理の概要である。そして、ステップＳ１０７の処理が終了すると、ステップＳ１０４に戻り、入力装置１２０から次の入力指示があるまで待機する。
【００７０】
一方、ステップＳ１０６の判断の結果、ステップＳ１０５で判定した処理内容が、「プロジェクト構築処理」ではないと判断した場合には（ステップＳ１０６／ＮＯ）、処理をステップＳ１０８に進める。
【００７１】
ステップＳ１０８では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ１０５で判定した処理内容が、「オンライン検査処理」であるか否かを判断する。
【００７２】
ステップＳ１０８の判断の結果、ステップＳ１０５で判定した処理内容が、「オンライン検査処理」であると判断した場合には（ステップＳ１０８／ＹＥＳ）、ＣＰＵ１１１は処理をステップＳ１０９に進める。
【００７３】
ステップＳ１０９に進むと、情報処理装置１１０のＣＰＵ１１１は、「オンライン検査処理」処理を行う。この「オンライン検査処理」の詳細について、図９を用いて後述する。そして、ステップＳ１０９の処理が終了すると、ステップＳ１０４に戻り、入力装置１２０から次の入力指示があるまで待機する。
【００７４】
一方、ステップＳ１０８の判断の結果、ステップＳ１０５で判定した処理内容が、「オンライン検査処理」ではないと判断した場合には（ステップＳ１０８／ＮＯ）、ＣＰＵ１１１は、処理をステップＳ１１４に進める。
【００７５】
ステップＳ１１４では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ１０５で判定した処理内容が、「終了処理」であるか否かを判断する。
【００７６】
ステップＳ１１４の判断の結果、ステップＳ１０５で判定した処理内容が、「終了処理」であると判断した場合には（ステップＳ１１４／ＹＥＳ）、本プログラムによる処理を終了する。
【００７７】
一方、ステップＳ１１４の判断の結果、ステップＳ１０５で判定した処理内容が、「終了処理」ではないと判断した場合には（ステップＳ１１４／ＮＯ）、処理をステップＳ１０４に進め、入力装置１２０から次の入力指示があるまで待機する。
【００７８】
次に、図９を参照して、図７のステップＳ１０９のオンライン検査処理の詳細な手順について説明する。図９は、図７のステップＳ１０９における「オンライン検査処理」の詳細な処理手順の一例を示すフローチャートである。本処理をＣＰＵ１１１に実行させるためのプログラムは外部メモリ１１６に記憶されており、本処理の実行要求を入力装置１２０より受け付けた場合に、ＣＰＵ１１１は、当該プログラムをＲＡＭ１１２にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。尚、本実施例では、オンライン検査処理と、後述する検査スレッド処理（図１３参照）と、後述する検査結果表示処理（図１５参照）は、マルチスレッド処理により、ＣＰＵ１１１において並列して動作しているものとする。
【００７９】
まず、ステップＳ２０１において、情報処理装置１１０のＣＰＵ１１１は、オンライン検査画面１０００（図１０参照）をビデオコントローラ１１５ｂからディスプレイ装置１３０上に表示をし、ユーザからの操作を受け付ける。
【００８０】
図１０は、オンライン検査画面１０００の一例を示す模式図である。図１０に示すオンライン検査画面１０００には、ステップＳ１０７において構築された画像検査プログラムを実行する検査開始ボタン１００１、検査開始ボタン１００１の押下に伴って実行された画像検査プログラムの検査結果画像を表示する検査画像表示領域１００２、画像処理により異常である又は検査に失敗したと判定された画像（ＮＧ画像）を表示するＮＧ画像表示領域１００３、検査した処理数と表示間引きされた結果を表示するカウント結果１００５から構成される。以上が、オンライン検査画面１０００の構成の一例の説明である。
【００８１】
ステップＳ２０２では、情報処理装置１１０のＣＰＵ１１１は、ユーザからの操作によって、検査開始ボタン１００１が押下されたか否かを判断する。検査開始ボタン１００１が押下されたと判断した場合には（ステップＳ２０２／ＹＥＳ）、ＣＰＵ１１１は、検査カウンタを初期化（０クリア）して、処理をステップＳ２０３に進める。検査カウンタは、画像検査を行った枚数をかぞえる変数であり、本実施例では、検査カウンタの値を後述するステップＳ３０８においてオンライン検査画面１０００のカウント結果１００５に表示するための変数である。一方、ステップＳ２０２の判断処理で、検査開始ボタン１００１が押下されたと判断できない場合には（ステップＳ２０２／ＮＯ）、ステップＳ２０２で待機する。
【００８２】
ステップＳ２０３では、情報処理装置１１０のＣＰＵ１１１は、カメラ１４０から入力された画像を画像入力コントローラ１１５ｆから取り込み、ＲＡＭ１１２に記憶する。尚、既に外部メモリ１１６に記憶された画像をＲＡＭ１１２に展開して用いてもよい。
【００８３】
ステップＳ２０４では、情報処理装置１１０のＣＰＵ１１１は、検査パラメータテーブル４８０を検索し、使用中フラグ１１０２が「ＯＦＦ」のレコードが存在するか否かを判断する。使用中フラグ１１０２が「ＯＦＦ」のレコードが存在すると判断した場合には（ステップＳ２０４／ＹＥＳ）、ＣＰＵ１１１は、処理をステップＳ２０６に進める。一方、ステップＳ２０４の判断処理で、使用中フラグ１１０２が「ＯＦＦ」のレコードが存在すると判断できない場合には（ステップＳ２０４／ＮＯ）、ＣＰＵ１１１は、ステップＳ２０５に進める。
【００８４】
ステップＳ２０５では、情報処理装置１１０のＣＰＵ１１１は、検査テーブル４８１に格納されたレコードのうち、先頭のレコードの検査結果に「中断」を格納し、対応する検査スレッドを強制終了する。検査テーブル４８１には、後述するステップＳ２０６において、画像取込順にレコードが追加されるため、最も古い検査である先頭のレコードを削除する。これにより、ある検査が滞っていても、当該検査を強制的に終了させることで一連の画像検査の効率を向上させることができる。
【００８５】
ステップＳ２０６では、情報処理装置１１０のＣＰＵ１１１は、新規に検査スレッドを作成し、検査テーブル４８１に存在するレコードの末尾に新たなレコードを追加し、検査スレッド１２０１に検査スレッド名を格納する。検査スレッド名は、他の検査スレッド名と重複しなければ、どのような名称でもよい。
【００８６】
ステップＳ２０７では、情報処理装置１１０のＣＰＵ１１１は、検査パラメータテーブル４８０を検索し、使用中フラグ１１０２が「ＯＦＦ」のレコードが存在するか否かを判断する。使用中フラグ１１０２が「ＯＦＦ」のレコードが存在すると判断した場合には（ステップＳ２０７／ＹＥＳ）、ＣＰＵ１１１は、処理をステップＳ２０８に進める。
【００８７】
ステップＳ２０８では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ２０７において検索された使用中フラグ１１０２に「ＯＮ」を格納する。
【００８８】
ステップＳ２０９では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ２０６において作成されたレコードの実行中フラグ１２０２に「ＯＮ」を格納する。
【００８９】
ステップＳ２１０では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ２０６において作成されたレコードの検査画像名１２０４に、ステップＳ２０３においてＲＡＭ１１２に記憶された画像の画像名を格納し、検査パラメータ１２０５に、ステップＳ２０８において「ＯＮ」を格納した使用中フラグ１１０２に対応する、ＮＯ１１０１を示す情報を格納する。本実施例では、「検査パラメータテーブル［ＮＯ］」という形式で格納するが、これ以外の表記方法でもよい。ステップＳ２１０の終了後、情報処理装置１１０のＣＰＵ１１１は、ステップＳ２１１、及びステップＳ２１４の並列処理を行う。つまり、ＣＰＵ１１１は、ステップＳ２１１の処理完了を待たずとも、ステップＳ２１４の処理を実行することができるため、効率的な検査を行うことができる。
【００９０】
ステップＳ２１１では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ２０６において作成された検査スレッドを実行する検査スレッド処理を実行する。ステップＳ２１１の検査スレッド処理の詳細については、図１３を用いて後述する。
【００９１】
一方、ステップＳ２０７の判断処理で、使用中フラグ１１０２が「ＯＦＦ」のレコードが存在すると判断できない場合には（ステップＳ２０７／ＮＯ）、ＣＰＵ１１１は、ステップＳ２１２に進める。
【００９２】
ステップＳ２１２では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ２０６において作成されたレコードの実行中フラグ１２０２に「ＯＦＦ」を格納し、検査結果１２０３に「未実行」を格納する。これにより、検査漏れが発生した画像をカウントすることができる。
【００９３】
ステップＳ２１３では、情報処理装置１１０のＣＰＵ１１１は、ユーザからの操作によって取込停止の指示がなされたか否かを判断する。取込停止の指示は、事前に設定されたボタンの押下によるものでもよいし、その他の方法でもよい。取込停止の指示がなされたと判断した場合には（ステップＳ２１３／ＹＥＳ）、処理を終了し、ステップＳ１０９に処理を戻す。一方、ステップＳ２１３の判断処理で、取込停止の指示がなされたと判断できない場合には（ステップＳ２１３／ＮＯ）、ＣＰＵ１１１は、ステップＳ２０３に処理を戻す。これにより、取込停止がなされるまで、ステップＳ２０３乃至ステップＳ２１３の処理を繰り返す。
【００９４】
次に、図１３を参照して、図９のステップＳ２１１の検査スレッド処理の詳細な手順について説明する。図１３は、図９のステップＳ２１１における検査スレッド処理の詳細な処理手順の一例を示すフローチャートである。本処理をＣＰＵ１１１に実行させるためのプログラムは外部メモリ１１６に記憶されており、本処理の実行要求を受け付けた場合に、ＣＰＵ１１１は、当該プログラムをＲＡＭ１１２にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。尚、本実施例では、前述したオンライン検査処理（図９参照）と、検査スレッド処理と、後述する検査結果表示処理（図１５参照）は、マルチスレッド処理により、ＣＰＵ１１１において並列して動作しているものとする。
【００９５】
ステップＳ３０１では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ１０７において構築された画像検査プログラムを実行し、ステップＳ２１０において設定された検査画像名１２０４に対応する画像を検査する（画像処理実行手段）。実行される画像検査プログラムは、オブジェクトコードテーブル４１４に記憶されたオブジェクトコードとして記憶されている。
【００９６】
ステップＳ３０２では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ３０１において実行された結果を検査結果テーブル４１８に記憶する。インデックス（Ｉｎｄｅｘ）１４０１には、処理を行ったモジュールのインデックス（Ｉｎｄｅｘ）６０１を格納し、識別ＩＤ１４０２には、モジュールごとに各処理を識別する番号を割振り、識別箇所１４０３には、ステップＳ３０１において検査された結果、識別した箇所を座標形式等で格納し、識別結果１４０４には、識別箇所１４０３の識別結果を格納し、検査画像名１４０５には、ステップＳ３０１において検査された画像の画像名を格納する。
【００９７】
ステップＳ３０３では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ３０１において検査された画像をＲＡＭ１１２から外部メモリ１１６に記憶する。但し、後述するステップＳ４０９において当該画像を表示する表示速度を考慮する場合、読み出し速度がより高速なＲＡＭ１１２に記憶したままでもよい。また、後述するステップＳ４１６において、外部メモリ１１６に記憶してもよい。この場合、ステップＳ３０３は不要である。
【００９８】
ステップＳ３０４では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ２０６において作成されたレコードの実行中フラグ１２０２に「ＯＦＦ」を格納する。
【００９９】
ステップＳ３０５では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ２０７において検索された使用中フラグ１１０２に「ＯＦＦ」を格納する。
【０１００】
ステップＳ３０６では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ２０６において作成されたレコードの検査結果１２０３に検査結果を格納する。画像の検査が成功した場合には、「ＯＫ」と格納し、失敗した場合には「ＮＧ」を格納する。尚、格納する情報はこれに限らない。このように、検査結果１２０３に画像検査の結果を格納することで、画像検査結果を集計させることができる。
【０１０１】
ステップＳ３０７では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ２０２において初期化された検査カウンタをインクリメントする。具体的には、ステップＳ３０１における画像検査が終了する度に、検査カウンタを１増加させる。これにより、検査カウンタでカウントした検査回数を後述するステップＳ３０８において表示させることができる。
【０１０２】
ステップＳ３０８では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ３０７においてインクリメントされた検査カウンタをオンライン検査画面１０００のカウント結果１００５に表示する。検査カウンタをカウント結果１００５に表示させることにより、後述するステップＳ４０８において結果画像の間引き処理がなされていたとしても、画像処理が正常に動作していることをユーザに通知することができる。
【０１０３】
次に、図１５を参照して、図１３の検査スレッド処理において検査された結果画像を表示する検査結果表示処理の詳細な手順について説明する。図１５は、検査結果表示処理の詳細な処理手順の一例を示すフローチャートである。本処理をＣＰＵ１１１に実行させるためのプログラムは外部メモリ１１６に記憶されており、本処理の実行要求を受け付けた場合に、ＣＰＵ１１１は、当該プログラムをＲＡＭ１１２にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。尚、本実施例では、前述したオンライン検査処理（図９参照）と、前述した検査スレッド処理（図１３参照）と、検査結果表示処理は、マルチスレッド処理により、ＣＰＵ１１１において並列して動作しているものとする。また、本実施例では、検査結果１２０３の結果がＮＧである画像（ＮＧ画像）は間引かずに表示する例について説明する。
【０１０４】
まず、ステップＳ４０１では、情報処理装置１１０のＣＰＵ１１１は、ＯＫ個数の設定を受け付ける（許容値設定手段）。ＯＫ個数とは、ＮＧ画像としてグルーピングを行うための許容値である。まず、本実施例におけるグルーピングについて説明する。生産ラインを流れる製品を検査し、異常が発見された場合、連続して同じエラーが発生することがある。これは、生産を行う機械や同じロットの素材が問題となっている場合に起こることであり、同一のエラーとして見なすべきものが多い。つまり、連続したＮＧ画像は同一のエラーである可能性が高いため、１つのグループとしてグルーピングしておく。これにより、エラー画像に対してまとまったデータを得ることができ、その後のパラメータ設定や原因特定に役立つ。図１８に示すオンライン検査画面１０００ではＮＧ画像表示領域１００３においてグルーピングされたＮＧ画像を表示する。例えば、グルーピング画像１００４のようにグルーピングされたＮＧ画像を重ねて表示させる。
【０１０５】
このようなグルーピングにおいて、本来ＮＧ画像とすべき結果画像が画像検査に成功した、または正常な画像（ＯＫ画像）として判定されてしまう場合がある。具体的には、「ＮＧ、ＮＧ、ＮＧ、ＯＫ、ＮＧ、ＮＧ、ＮＧ」という判定がなされた場合、ひとつだけ挟まれたＯＫ画像はパラメータ設定不足により誤判定された可能性が高い。よって、これら７枚の結果画像は１つのＮＧ画像グループとしてグルーピングする。この際に、ＯＫ画像がグルーピングされる許容値を示すのが前述したＯＫ個数である。例えばＯＫ個数を「２」として設定した場合には、ＮＧ画像に挟まれたＯＫ画像が２枚以下であった際に、グルーピングを行い、ＮＧ画像に挟まれたＯＫ画像が３枚よりも多かった場合にはグルーピングを行わない。このような設定を設けることで、柔軟なグルーピング設定を行うことができる。ステップＳ４０１における設定の受付は、入力受付画面を表示してもよいし、それ以外の方法でもよい。事前に設定されていてもよいし、これに限らない。
【０１０６】
ステップＳ４０２では、情報処理装置１１０のＣＰＵ１１１は、表示カウンタを初期化（０クリア）する。表示カウンタは、検査結果画像を検査画像表示領域１００２に表示した枚数をかぞえる変数であり、本実施例では表示カウンタの値をオンライン検査画面１０００のカウント結果１００５に表示するための変数である。後述するステップＳ４１０において表示カウンタを増加させ、カウント結果１００５に表示させる。
【０１０７】
ステップＳ４０４では、情報処理装置１１０のＣＰＵ１１１は、ＮＧカウンタを初期化（０クリア）する。ＮＧカウンタは、グルーピングしたNG画像を数える変数である。
【０１０８】
ステップＳ４０５では、情報処理装置１１０のＣＰＵ１１１は、ＯＫカウンタを初期化（０クリア）する。ＯＫカウンタは、前述したＯＫ個数分、ＯＫ画像が連続しているのか否かを判定するために使用する変数である。
【０１０９】
ステップＳ４０６では、情報処理装置１１０のＣＰＵ１１１は、検査テーブル４８１に格納されたレコードのうち、先頭のレコードを参照する。
【０１１０】
ステップＳ４０７では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ４０６において参照されたレコードの実行中フラグ１２０２が「ＯＦＦ」であるか否かを判断する。実行中フラグ１２０２が「ＯＦＦ」であると判断した場合には（ステップＳ４０７／ＹＥＳ）、ＣＰＵ１１１は、処理をステップＳ４０８に進める。一方、ステップＳ４０７の判断処理で、実行中フラグ１２０２が「ＯＦＦ」であると判断できない場合には（ステップＳ４０７／ＮＯ）、ＣＰＵ１１１は、ステップＳ４０６に処理を戻す。これにより、検査の終了していない検査スレッドの検査結果表示を防ぐことができる。
【０１１１】
ステップＳ４０８では、情報処理装置１１０のＣＰＵ１１１は、現在参照しているレコードが検査テーブル４８１の先頭のレコードか否かを判断する。先頭のレコードであると判断した場合には（ステップＳ４０８／ＹＥＳ）、ＣＰＵ１１１は、処理をステップＳ４０９に進める。つまり、検査テーブル４８１の先頭レコードを参照している場合（検査スレッド１において処理された画像）のみ、後述するステップＳ４０４の検査を行い、検査結果の画像を表示させる。
【０１１２】
ステップＳ４０９では、情報処理装置１１０のＣＰＵ１１１は、検査結果テーブル４１８と検査テーブル４８１から、ステップＳ３０１の検査結果をビデオコントローラ１１５ｂからディスプレイ装置１３０上の検査画像表示領域１００２に表示する（表示手段）。尚、本実施例では、ステップＳ１０９におけるオンライン検査中に検査結果画像の表示を行うものである。しかしながら、ステップＳ１０７におけるプロジェクト構築処理で構築された画像処理フローの動作を確認すべく、処理結果表示領域２１０８に表示させるような形態でもよい。
【０１１３】
具体的には、まず現在参照されている先頭のレコードに格納された検査画像名１２０４と一致する画像を外部メモリ１１６、又はＲＡＭ１１２から取得する。また、検査画像名１２０４と一致する検査画像名１４０５に対応するレコードを、検査結果テーブル４１８からすべて取得し、ＲＡＭ１１２に記憶する。取得したレコードの識別箇所１４０３を用いて、取得した画像上に識別箇所を表示させ、識別結果１４０４にデータが格納されている場合は、識別箇所１４０３に対応する識別結果１４０４を表示させる。例えば、図１６に示す検査結果画面１６００では、マッチング箇所１６０２の部分は、識別箇所を識別可能に表示しており、文字認識箇所１６０１には、識別結果１４０４も補足表示させる。
【０１１４】
図１６は、検査結果画面１６００の一例を示す模式図である。図１６に示す検査結果画面１６００には、文字認識をした結果を示す文字認識箇所１６０１と、既定の画像と比較した結果を示すマッチング箇所１６０２から構成される。以上が、検査結果画面１６００の構成の一例の説明である。
【０１１５】
ステップＳ４１０では、情報処理装置１１０のＣＰＵ１１１は、表示カウンタをインクリメントする。具体的には、表示カウンタに格納された数値に対して「１」を加算する。表示カウンタの値は、オンライン検査画面１０００のカウント結果１００５に表示する。前述した検査カウンタと合わせてカウント結果１００５に表示させることで、画像の検査数と、表示数を表示させることができる。つまり、結果画像の表示間引きが行われている場合には、「検査数＞表示数」となる。また間引きされた画像の枚数は、検査数から表示数を減じることで求めることができる。
【０１１６】
一方、ステップＳ４０８の判断処理で、先頭のレコードであると判断できない場合には（ステップＳ４０８／ＮＯ）、ＣＰＵ１１１は、処理をステップＳ４１１に進める。つまり、現在参照しているレコードが検査テーブル４８１の先頭レコードでないということは、検査テーブル４８１に複数のレコードが蓄積されている。よって、カメラ１４０から送信された画像の処理が１スレッドでは間に合わず、マルチスレッドで並列処理していると判定できるため、ステップＳ４０４においては結果画像の表示を行わない（表示を間引く）。尚、本実施例では検査テーブル４８１に複数レコードが蓄積されていた場合に、先頭レコード以外の検査結果の画像表示を間引くが、検査パラメータテーブル４８０の使用中フラグ１１０２に「ＯＮ」が一定数以上存在した場合や、ＣＰＵ１１１等の負荷を計測し、一定以上負荷がかかった場合に画像表示を間引くようにしてもよい。検査結果の画像表示を間引く判断基準は、これに限らない。また、間引く枚数は何枚でもよく、ユーザによって設定可能とする。これにより、結果画像を表示する負荷を軽減し、並列処理で動作している画像検査を優先させることができる。
【０１１７】
ステップＳ４１１では、情報処理装置１１０のＣＰＵ１１１は、現在参照しているレコードの結果が「ＮＧ」であるか否かを判定する（間引き判定手段）。具体的には、現在参照しているレコードの検査結果１２０３が「ＮＧ」であるか否かを判定する。「ＮＧ」であると判定された場合には（ステップＳ４１１／ＹＥＳ）、処理をステップＳ４１２に進める。後述するステップＳ４１２乃至ステップＳ４１９はＮＧ画像であっても間引かないように制御する処理である。
【０１１８】
ステップＳ４１２では、情報処理装置１１０のＣＰＵ１１１は、ＮＧカウンタに「０」が格納されているか否かを判断する。ステップＳ４１２の判断の結果、ステップＳ４１２で判定した処理内容が、ＮＧカウンタは「０」であると判断した場合には（ステップＳ４１２／ＹＥＳ）、処理をステップＳ４１３に進める。つまり、ＮＧ画像をグーピングして保存するための、保存先を作成するか否かを判断する。本実施例では、ＮＧ画像をグルーピングするために当該グルーピングされたＮＧ画像を外部メモリ１１６に保存するためのフォルダを作成する。作成されたフォルダにＮＧ画像を保存し、グルーピングされた画像として扱う。尚、グルーピングの方法に関してはこれに限らない。テーブルで対応づけてもよいし、それ以外の方法でもよい。
【０１１９】
ステップＳ４１３では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ３０１の検査結果の保存先として親フォルダ２００１を作成する。本実施例では、情報処理装置１１０のタイムスタンプを取得し、フォルダ名とするがこれに限らない。尚、ＲＡＭ１１２に親フォルダ２００１を作成してもよい。図２０は、本実施例におけるフォルダ構成の一例を示した模式図である。ステップＳ４１３においては、ＮＧ画像の保存場所としてまず親フォルダ２００１を作成する。尚、フォルダ構成はこれに限らない。
【０１２０】
ステップＳ４１４では、情報処理装置１１０のＣＰＵ１１１は、画像記録テーブル４８２に新しくレコードを追加し、Ｉｎｄｅｘ１８０１に一意に値を割り振り、現在時刻を判別名１８０２に格納する。ステップＳ４１３及びステップＳ４１４の処理により、ＮＧ画像のグルーピング準備が完了する。
【０１２１】
一方、ステップＳ４１２の判断処理で、ＮＧカウンタが０以外の場合には（ステップＳ４１２／ＮＯ）、ＣＰＵ１１１は、ステップＳ４１５に進める。つまり、既にＮＧ画像の保存先が存在し、グルーピングされたフォルダに結果画像を保存することができる状態であるので、ステップＳ４１３及びステップＳ４１４の処理を行わない。
【０１２２】
ステップＳ４１５では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ３０１の検査結果の保存先として、ステップＳ４１３で作成した親フォルダ２００１の下に子フォルダ２００２を作成する。本実施例では、情報処理装置１１０のタイムスタンプを取得し、子フォルダのフォルダ名とするが、これに限らない。
【０１２３】
ステップＳ４１６では、情報処理装置１１０のＣＰＵ１１１は、現在参照中のレコードであって、検査テーブル４８１のレコードの結果画像を、ステップＳ４１５で作成した子フォルダの下に保存する。また、ステップＳ３０６において作成された当該レコードの検査結果１２０３の内容を保存する。保存内容は、各画像処理（即ち、各モジュールの処理）で実行した結果を保存してもよい。図２０に示す模式図では、親フォルダ２００１の下に子フォルダ２００２が作成され、現在参照中の検査テーブル４８１のレコードの結果画像２００３が保存される。また、各画像処理（即ち、各モジュールの処理）で実行した結果２００４も合わせて保存しておくことができる。
【０１２４】
ステップＳ４１７では、情報処理装置１１０のＣＰＵ１１１は、ＮＧカウンタをインクリメント（１増加）し、ＮＧカウンタの数をステップＳ４１４で作成したレコードのＮＧ数１７０３に格納する。ＮＧ数１７０３は、グルーピングされた結果画像の枚数を示す。
【０１２５】
ステップＳ４１８では、情報処理装置１１０のＣＰＵ１１１は、検査結果テーブル４１８と検査テーブル４８１から、ステップＳ３０１の検査結果をビデオコントローラ１１５ｂからディスプレイ装置１３０上のＮＧ画像表示領域１００３に表示する（表示手段）。また、ＮＧ数１７０３に格納された数値も識別表示させる。これにより、グルーピングされた結果画像の枚数をユーザに通知することができる。尚、表示されたＮＧ画像のグループがユーザから選択されると、図１９に示す通り、グルーピングされたＮＧ画像の結果一覧を表示する。結果一覧１９０１に表示された結果のうち、１つが選択されると当該結果のＮＧ画像またはＯＫ画像が表示される。当該結果の詳細なパラメータや検査結果を表示させてもよい。
【０１２６】
ステップＳ４１９では、情報処理装置１１０のＣＰＵ１１１は、ＯＫカウンタを初期化「０」
する。以上のステップＳ４１２乃至ステップＳ４１９の処理がＮＧ画像であった場合の処理である。
【０１２７】
一方、ステップＳ４１１の判断処理で、検査結果はＮＧであると判断できない場合には（ステップＳ４１１／ＮＯ）、ＣＰＵ１１１は、ステップＳ４２６に進める。
【０１２８】
ステップＳ４２６では、情報処理装置１１０のＣＰＵ１１１は、ＮＧカウンタが「０」以外であるか否かを判断する。つまり、ＮＧカウンタが「０」以外であるということは、ステップＳ４１７においてＮＧカウンタがインクリメントされていることを示す。よって、ＮＧ画像が発生しているため、ＮＧ画像のグルーピングを行っていると判断できる。前述した通り、ＯＫ画像であっても、連続したＯＫ画像がＯＫ個数以下であった場合には、ＮＧ画像としてグルーピングを行うため、ステップＳ４２６においてＮＧカウンタに対して判断を行う。ＮＧカウンタが「０」以外であると判断した場合には（ステップＳ４２６／ＹＥＳ）、処理をステップＳ４２７に進める。
【０１２９】
一方、ステップＳ４２６の判断処理で、ＮＧカウンタが「０」である場合には（ステップＳ４２６／ＮＯ）、ＣＰＵ１１１は、ステップＳ４２０に進める。つまり、ＮＧ画像は発生しておらず、ＯＫ画像が続いているものとして、処理を行う。
【０１３０】
ステップＳ４２７では、情報処理装置１１０のＣＰＵ１１１は、ＯＫカウンタをインクリメント（１増加）する。
【０１３１】
ステップＳ４２８では、情報処理装置１１０のＣＰＵ１１１は、ＯＫカウンタがステップＳ４０１で設定されたＯＫ個数より多いか否かを判断する。ステップＳ４２８の判断の結果、ＯＫカウンタがＯＫ個数より多いと判断した場合には（ステップＳ４２８／ＹＥＳ）、処理をステップＳ４２９に進める。つまり、ＯＫ個数以上連続してＯＫ画像が続いているため、ＮＧ画像として表示を行わない。
【０１３２】
一方、ステップＳ４２８の判断処理で、ＯＫカウンタがＯＫ個数より多いと判断できない場合には（ステップＳ４２８／ＮＧ）、ＣＰＵ１１１は、ステップＳ４１５に進める。つまり、ＯＫ画像であってもＮＧ画像として保存する。前述の通り、パラメータの設定によって、本来ＮＧ画像として判定されるべき結果画像がＯＫ画像として表示されている可能性があるため、一旦ＮＧ画像として保存を行う。
【０１３３】
ステップＳ４２９では情報処理装置１１０のＣＰＵ１１１は、ステップＳ４２８においてＯＫカウンタがＯＫ個数よりも多いと判定されたので、ステップＳ４２８においてＯＫカウンタがＯＫ個数よりも多いと判定できなかったためにステップＳ４１６において保存されてしまったＯＫ画像を削除して、ＮＧ画像表示領域１００３から当該ＯＫ画像の表示を消す。具体的には、例えばＯＫ個数が「２」で、「ＮＧ、ＯＫ、ＯＫ、ＯＫ」という順で結果画像が出力された場合、最初にＮＧ画像があるため、グルーピングが開始される。２番目のＯＫ画像は、ＮＧカウンタが「１」であるため、ステップＳ４２６の判断処理でステップＳ４２７へ進み、ステップＳ４２８の判断処理では、ステップＳ４１５へ進む。つまりＯＫ画像だがＮＧ画像としてグルーピングがなされる。しかし、ＯＫ画像は３つ連続するため、ＯＫ個数の「２」より大きくなる。つまり、これらのＯＫ画像はＮＧ画像ではないと判断すべきである。よって、ステップＳ４２９において、ステップＳ４１６で保存されたＯＫ画像の削除と、ステップＳ４１８で表示されたサムネイル画像の非表示を行う。
【０１３４】
ステップＳ４３０では、情報処理装置１１０のＣＰＵ１１１は、ＮＧカウンタを初期化（０クリア）する。ステップＳ４２８においてＯＫカウンタがＯＫ個数よりも多いと判断されたので、ＮＧ画像のグルーピングを終了すべく、ＮＧカウンタを初期化する。以上のステップＳ４２６乃至ステップＳ４３０の処理がＯＫ画像であった場合の処理である。
【０１３５】
ステップＳ４１９またはステップＳ４３０が終了すると、ステップＳ４２０では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ３０１において画像検査された結果に応じて、ユーザにより設定された各種処理を行う。具体的には、検査結果１２０３に「ＮＧ」が格納されていた場合には、生産ラインを流れる当該画像の対象物を生産ラインから排除する外部装置制御や、ステップＳ３０３において検査画像を記憶していなければ、外部メモリ１１６に記憶する検査画像記憶や、検査結果の各種情報送信等をおこなう。
【０１３６】
尚、ステップＳ４２０において検査結果の情報を外部装置に送信することで、画像検査順に検査結果を送信することもできる。つまり、検査テーブル４８１に格納された各レコードの検査スレッド処理（図１３参照）は並列で動作しており、画像によって検査速度が異なるため、後から検査が開始された検査スレッドが、先に終了してしまうことがある。よって、検査スレッド処理において、検査結果の情報を外部装置へ送信する場合、画像の検査順と検査結果の送信順に不整合が生じる可能性がある。しかし、検査結果表示処理において処理されることで、このような不整合を防ぐことが可能となる。尚、外部制御処理等、不整合が発生すると不具合が発生する処理の場合には、同様の効果がある。
【０１３７】
ステップＳ４２２では、情報処理装置１１０のＣＰＵ１１１は、現在参照しているレコードを検査テーブル４８１から削除する。
【０１３８】
ステップＳ４２３では、情報処理装置１１０のＣＰＵ１１１は、検査テーブル４８１にレコードが存在するか否かを判断する。レコードが存在すると判断した場合には（ステップＳ４２３／ＹＥＳ）、ＣＰＵ１１１は、処理をステップＳ４２４に進める。
【０１３９】
ステップＳ４２４では、情報処理装置１１０のＣＰＵ１１１は、ステップＳ４２２において削除したレコードの次のレコードを参照し、処理をステップＳ４０７に戻す。
【０１４０】
一方、ステップＳ４２３の判断処理で、レコードが存在すると判断できない場合には（ステップＳ４２３／ＮＯ）、ＣＰＵ１１１は、処理をステップＳ４２５に進める。
【０１４１】
ステップＳ４２５では、情報処理装置１１０のＣＰＵ１１１は、オンライン検査処理（図９参照）が終了しているか否かを判断する。オンライン検査処理と、検査結果表示処理は並列して動作しているので、オンライン検査処理が処理中か否かを参照してもよいし、他の形式でもよい。オンライン検査処理が終了していると判断した場合には（ステップＳ４２５／ＹＥＳ）、ＣＰＵ１１１は、処理を終了する。一方、ステップＳ４２５の判断処理で、オンライン検査処理が終了していると判断できない場合には（ステップＳ４２５／ＮＯ）、ＣＰＵ１１１は、ステップＳ４０６に進める。これにより、オンライン検査処理が動作し続ける限り、画像の検査結果を表示させることができる。
【０１４２】
次に、実施例２について説明する。実施例２では、実施例１における検査結果表示処理（図１５参照）の別の形態について説明する。よって、それ以外のシステム構成、ハードウェア構成、機能構成、テーブル構成は、実施例１と同様である。また、各処理のフローも同様である。もちろん、他の構成であってもよい。
【０１４３】
実施例２では、検査の終了した結果画像を表示する場合に、当該結果画像の表示が間引かれたが、当該結果画像がＮＧ画像であった場合には表示を間引かずに表示する形態について説明する。
【０１４４】
まず、図２３を参照して、図１３の検査スレッド処理において検査された結果画像を表示する検査結果表示処理の詳細な手順について説明する。図２３は、検査結果表示処理の詳細な処理手順の一例を示すフローチャートである。本処理をＣＰＵ１１１に実行させるためのプログラムは外部メモリ１１６に記憶されており、本処理の実行要求を受け付けた場合に、ＣＰＵ１１１は、当該プログラムをＲＡＭ１１２にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。尚、本実施例では、前述したオンライン検査処理（図９参照）と、前述した検査スレッド処理（図１３参照）と、検査結果表示処理は、マルチスレッド処理により、ＣＰＵ１１１において並列して動作しているものとする。また、本実施例では、検査結果１２０３の結果がＮＧである画像（ＮＧ画像）は間引かずに表示する例について説明する。
【０１４５】
ステップＳ４０６乃至ステップＳ４０７の各ステップは、図１５のステップＳ４０６乃至ステップＳ４０８と同様であるので、説明は省略する。
【０１４６】
ステップＳ５０１では、情報処理装置１１０のＣＰＵ１１１は、現在参照しているレコードが検査テーブル４８１の先頭のレコードか否かを判断する。先頭のレコードであると判断した場合には（ステップＳ５０１／ＹＥＳ）、ＣＰＵ１１１は、処理をステップＳ５０３に進める。つまり、検査テーブル４８１の先頭レコードを参照している場合（検査スレッド１において処理された画像）のみ、後述するステップＳ４０４の検査を行い、検査結果の画像を表示させる。
【０１４７】
一方、ステップＳ５０１の判断処理で、先頭のレコードであると判断できない場合には（ステップＳ５０１／ＮＯ）、ＣＰＵ１１１は、処理をステップＳ５０２に進める。つまり、現在参照しているレコードが検査テーブル４８１の先頭レコードでないということは、検査テーブル４８１に複数のレコードが蓄積されている。よって、カメラ１４０から送信された画像の処理が１スレッドでは間に合わず、マルチスレッドで並列処理していると判定できるため、ステップＳ５０３においては結果画像の表示を行わない（表示を間引く）。尚、本実施例では検査テーブル４８１に複数レコードが蓄積されていた場合に、先頭レコード以外の検査結果の画像表示を間引くが、検査パラメータテーブル４８０の使用中フラグ１１０２に「ＯＮ」が一定数以上存在した場合や、ＣＰＵ１１１等の負荷を計測し、一定以上負荷がかかった場合に画像表示を間引くようにしてもよい。検査結果の画像表示を間引く判断基準は、これに限らない。また、間引く枚数は何枚でもよく、ユーザによって設定可能とする。これにより、結果画像を表示する負荷を軽減し、並列処理で動作している画像検査を優先させることができる。
【０１４８】
ステップＳ５０２では、情報処理装置１１０のＣＰＵ１１１は、現在参照しているレコードの結果が「ＮＧ」であるか否かを判定する。具体的には、現在参照しているレコードの検査結果１２０３が「ＮＧ」であるか否かを判定する。「ＮＧ」であると判定された場合には（ステップＳ５０２／ＹＥＳ）、処理をステップＳ５０３に進める。一方、ステップＳ５０２の判断処理で、現在参照しているレコードの結果が「ＮＧ」であると判断できない場合には（ステップＳ５０２／ＮＯ）、ＣＰＵ１１１は、処理を前述したステップＳ４２０に進める。これにより、ステップＳ５０１において結果画像の間引きが行われたとしても、検査の結果ＮＧと判定された結果画像である場合には、検査結果を表示させることができる。
【０１４９】
ステップＳ５０３では、情報処理装置１１０のＣＰＵ１１１は、検査結果テーブル４１８と検査テーブル４８１から、ステップＳ３０１の検査結果をビデオコントローラ１１５ｂからディスプレイ装置１３０上の検査画像表示領域１００２に表示する。尚、本実施例では、ステップＳ１０９におけるオンライン検査中に検査結果画像の表示を行うものである。しかしながら、ステップＳ１０７におけるプロジェクト構築処理で構築された画像処理フローの動作を確認すべく、処理結果表示領域２１０８に表示させるような形態でもよい。
【０１５０】
具体的には、まず現在参照されている先頭のレコードに格納された検査画像名１２０４と一致する画像を外部メモリ１１６、又はＲＡＭ１１２から取得する。また、検査画像名１２０４と一致する検査画像名１４０５に対応するレコードを、検査結果テーブル４１８からすべて取得し、ＲＡＭ１１２に記憶する。取得したレコードの識別箇所１４０３を用いて、取得した画像上に識別箇所を表示させ、識別結果１４０４にデータが格納されている場合は、識別箇所１４０３に対応する識別結果１４０４を表示させる。例えば、図１６に示す検査結果画面１６００では、マッチング箇所１６０２の部分は、識別箇所を識別可能に表示しており、文字認識箇所１６０１には、識別結果１４０４も補足表示させる。
【０１５１】
ステップＳ４１０、ステップＳ４２０、ステップＳ４２３乃至ステップＳ４２５の各ステップは、図１５のステップＳ４１０、ステップＳ４２０、ステップＳ４２３乃至ステップＳ４２５と同様であるので、説明を省略する。
【０１５２】
以上説明したように、本実施形態によれば、画像検査後の結果画像を表示する画像処理において、情報処理装置の負荷が高い場合には結果画像の表示を間引くが、ユーザにとって必要な結果画像であった場合には、間引かずに表示させることができる効果を奏する。
【０１５３】
以上、実施形態例を詳述したが、本発明は、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。
【０１５４】
また、本発明におけるプログラムは、各処理方法をコンピュータが実行可能（読み取り可能）なプログラムであり、本発明の記憶媒体は、各処理方法をコンピュータが実行可能なプログラムが記憶されている。
【０１５５】
なお、本発明におけるプログラムは、各装置の処理方法ごとのプログラムであってもよい。
【０１５６】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読取り実行することによっても、本発明の目的が達成されることは言うまでもない。
【０１５７】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記憶した記録媒体は本発明を構成することになる。
【０１５８】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＤＶＤ−ＲＯＭ，磁気テープ，不揮発性のメモリカード，ＲＯＭ，ＥＥＰＲＯＭ，シリコンディスク等を用いることができる。
【０１５９】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１６０】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１６１】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。
【０１６２】
また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１６３】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ，データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１６４】
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【０１６５】
１００  画像検査システム
１１０  情報処理装置
１２０  入力装置
１３０  ディスプレイ装置
１４０  カメラ
１５０  照明装置コントローラ
１６０  照明装置
１７０  外部機器コントローラ
１８０  ステージ
１８１  検査対象
１９０  ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）
１１１  ＣＰＵ
１１２  ＲＡＭ
１１３  ＲＯＭ
１１４  システムバス
１１５ａ  入力コントローラ
１１５ｂ  ビデオコントローラ
１１５ｃ  メモリコントローラ
１１５ｄ、１１５ｅ、１１５ｇ  通信Ｉ／Ｆコントローラ
１１５ｆ  画像入力コントローラ
１１６  外部メモリ
【要約】
【課題】  画像検査を行う一連の処理を実行し、画像検査と画像検査後の結果画像を表示する処理を同時に複数おこなった場合、情報処理装置の処理能力が足りず、画像検査の結果画像を間引いて負荷の軽減をするが、作業者に必要な結果画像までも間引かれてしまう。
【解決手段】  検査結果の画像を間引き処理が発生した場合に、当該間引き処理の行われた結果画像の検査結果１２０３がＮＧか否かを判定し、ＮＧであった場合には間引かずに当該ＮＧ画像を表示し、ＮＧでなかった場合には結果画像を間引く。
【選択図】  図１５【図１】
0004801791.tif 000002
【図２】
0004801791.tif 000003
【図３】
0004801791.tif 000004
【図４】
0004801791.tif 000005
【図５】
0004801791.tif 000006
【図６】
0004801791.tif 000007
【図７】
0004801791.tif 000008
【図８】
0004801791.tif 000009
【図９】
0004801791.tif 000010
【図１０】
0004801791.tif 000011
【図１１】
0004801791.tif 000012
【図１２】
0004801791.tif 000013
【図１３】
0004801791.tif 000014
【図１４】
0004801791.tif 000015
【図１５】
0004801791.tif 000016
【図１６】
0004801791.tif 000017
【図１７】
0004801791.tif 000018
【図１８】
0004801791.tif 000019
【図１９】
0004801791.tif 000020
【図２０】
0004801791.tif 000021
【図２１】
0004801791.tif 000022
【図２２】
0004801791.tif 000023
【図２３】
0004801791.tif 000024