以下、図面を参照しながら、本発明の実施の形態について説明する。まず、実施例1について説明する。図1は、本発明の実施の形態に係る画像検査システム100の概略構成の一例を示す模式図である。図1に示す通り、画像検査システム100は、情報処理装置110と、入力装置120と、ディスプレイ装置130と、カメラ140と、照明装置コントローラ150と、照明装置160と、外部機器コントローラ170と、検査対象181が載置されたステージ180を有して構成されている。
情報処理装置110は、画像検査システム100における動作を統括的に制御する装置である。ここで、本実施形態においては、情報処理装置110は、実際の製造工程に導入される画像検査装置で動作する画像検査アプリケーションプログラムの開発を支援する装置として適用した例を説明するが、本発明においてはこれに限定されるわけではなく、たとえば、実際の製造工程に導入されている画像検査装置として適用する形態も本発明に含まれる。
情報処理装置110は、所定のケーブル等を介して、検査対象181の撮像(撮影)を行うカメラ140と通信可能に構成されている。また、情報処理装置110は、所定のケーブル等を介して、照明装置160の制御を行う照明装置コントローラ150と通信可能に構成されている。また、情報処理装置110は、所定のケーブル等を介して、ステージ180を制御するプログラマブルコントローラ(PCL)などの外部機器コントローラ170と、あらかじめ設定した通信が可能に構成されている。さらに、情報処理装置110は、所定のケーブル等を介して、それぞれ、入力装置120およびディスプレイ装置130と通信可能に構成されている。すなわち、情報処理装置110は、所定のケーブル等を介して接続された、入力装置120、ディスプレイ装置130、カメラ140、照明装置コントローラ150および外部機器コントローラ170を制御することによって、画像検査システム100における動作を統括的に制御する。
入力装置120は、例えばユーザが情報処理装置110に対して各種の指示の入力を行う際にユーザによって操作されるものであり、ユーザからの入力指示操作に従って、当該入力指示を情報処理装置110に対して入力するものである。この入力装置120は、例えば、キーボード(KB)やポインティングデバイス等で構成されている。
ディスプレイ装置130は、情報処理装置110の制御に従って、各種の画像や各種の情報などを表示画面に表示する。
カメラ140は、情報処理装置110の制御に従って、ステージ180上に載置された検査対象181の撮影(撮像)を行い、撮影により得られた画像データ(電子画像データ)を所定のケーブル等を介して情報処理装置110に送信する。
照明装置コントローラ150は、情報処理装置110の制御に従って、照明装置160の照明を制御する。照明装置160は、照明装置コントローラ150の制御に基づき、検査対象181における検査内容に応じて、当該検査対象181に対する照明の点灯/非点灯の切り替えや明るさの調整等を行う。
外部機器コントローラ170は、情報処理装置110の制御に従って、ステージ180を制御する。ステージ180は、外部機器コントローラ170の制御に基づき、載置された検査対象181を目的の位置に移動させたり、検査対象181の搬入や搬出をしたりする。以上が画像検査システムの構成の一例の説明である。
次に、情報処理装置110のハードウェア構成について説明する。図2は、図1に示す情報処理装置110のハードウェア構成の一例を示す模式図である。図2には、情報処理装置110の内部構成に加えて、当該情報処理装置110と接続される各種装置についても記載している。
情報処理装置110は、図2に示すように、CPU111と、RAM112と、ROM113と、システムバス114と、各種のコントローラ115(115a〜115g)と、外部メモリ116と、を備えている。各種のコントローラ115として、入力コントローラ115a、ビデオコントローラ115b、メモリコントローラ115c、通信I/Fコントローラ115d、115e、及び115g、画像入力コントローラ115fが構成されている。CPU111は、ROM113或いは外部メモリ116に記憶されたプログラム等に基づいてシステムバス114に接続された各デバイスを制御して、情報処理装置110における動作を統括的に制御する。RAM112は、CPU111の主メモリ、ワークエリア等として機能する。CPU111は、検査の実行に際して、必要なプログラム等をRAM112にロードして、プログラムを実行することにより、情報処理装置110における各種の動作を実現する。ROM113には、CPU111の制御プログラムであるBIOS(Basic Input
/ Output System)等が記憶されている。
システムバス114は、CPU111、RAM112、ROM113、入力コントローラ115a、ビデオコントローラ115b、メモリコントローラ115c、通信I/Fコントローラ115d及び115e、115g、画像入力コントローラ115fを、相互に通信可能に接続する。
入力コントローラ115aは、キーボード(KB)やポインティングデバイスなどからなる入力装置120からの入力を制御する。ビデオコントローラ115bは、表示装置であるディスプレイ装置130への表示を制御する。メモリコントローラ115cは、外部メモリ116へのアクセスを制御する。ここで、外部メモリ116は、例えばハードディスク(HD)やフレキシブルディスク(FD)等で構成され、ブートプログラムや、各種のアプリケーションプログラム、編集ファイル、各種のデータや各種の情報等を記憶する。また、外部メモリ116は、オペレーティングシステム(以下、「OS」とする)や、CPU111に後述する各種の検査を実行させるためのプログラム、当該プログラムの制御に従った検査を行う際に使用する各種のテーブルや各種の検査結果情報等も記憶する。
通信I/Fコントローラ115dは、外部機器コントローラ170との通信を制御する。また、通信I/Fコントローラ115eは、照明装置コントローラ150との通信を制御する。画像入力コントローラ115fは、カメラ140と通信を行って、カメラ140から画像データの受信が可能に構成されている。ここで、画像入力コントローラ115fは、コントローラ上で演算処理が可能なハードウェアを搭載しているものであってもよい。なお、本実施形態では、カメラ140からの画像データの入力を前提に説明を行うが、画像ファイルを読み込んで入力する形態であってもよい。さらに、通信I/Fコントローラ115gは、ローカルエリアネットワーク(LAN)190等のネットワークに接続され、当該ネットワークに接続されている各種装置との通信を制御する。
次に、図3を用いて、画像入力コントローラ115fのハードウェア構成について説明する。図3に示す通り、画像入力コントローラ115fは、CPU(演算チップ)301、メモリコントローラ302、入力コントローラ303、オンボードメモリ304を備えている。
CPU(演算チップ)301は、後述する各種の画像検査を実行する。メモリコントローラ302はCPU(演算チップ)301の制御に従って、オンボードメモリ304への各種データの入出力を制御する。入力コントローラ303はカメラ140からの画像データの入力を制御する。オンボードメモリ304はCPU(演算チップ)301の主記憶として機能する。以上が、画像入力コントローラ115fのハードウェア構成の説明である。
次に、情報処理装置110の機能構成の一例について説明する。図4は、図1に示す情報処理装置110の機能構成の一例を示す模式図である。
情報処理装置110には、図4に示すように、テーブル記憶部410、フロー作成部420、ソースコード変換部430、コンパイル部440、(検証)実行部450、データ保存部460、及び、データ入力・出力部470の各機能構成が構成される。また、テーブル記憶部410には、モジュール・ソースコードマスタテーブル411、処理フロー・入出力パラメータテーブル412、ソースコードテーブル413、オブジェクトコードテーブル414、及びプロジェクトファイルテーブル415が記憶されている。また、条件式テーブル416、ノード処理フラグテーブル417、検査結果テーブル418、検査パラメータテーブル480、及び検査テーブル481も記憶されている。
ここで、本実施形態においては、図4のテーブル記憶部410が、例えば図2に示す外部メモリ116に構成される(一旦、RAM112に構成された後に外部メモリ116に構成される場合も含む)。また、図4のフロー作成部420、ソースコード変換部430、コンパイル部440、(検証)実行部450、データ保存部460及びデータ入力・出力部470が、例えば図2に示すCPU111と、ROM113或いは外部メモリ116に記憶されているプログラムと、から構成される。
図5を参照して、図4のテーブル記憶部410に記憶されるモジュール・ソースコードマスタテーブル411について説明する。図5はモジュール・ソースコードマスタテーブル411の構成の一例を示す模式図である。
図5に示すように、モジュール・ソースコードマスタテーブル411には、インデックス(Index)501ごとに、画像検査に係る処理アイテム502と、各処理アイテムに対応するソースコード503、またその処理アイテムを実現するためのモジュールに対する初期値504と処理主体505が関連付けられている。このソースコードは、ソースコード変換部430で検査対象のモジュールをソースコードに変換する際に用いられるものである。
次に、図6を参照して、図4のテーブル記憶部410に記憶される処理フロー・入出力パラメータテーブル412について説明する。図6は、図4に示す処理フロー・入出力パラメータテーブル412の構成の一例を示す模式図である。図6に示すように、処理フロー・入出力パラメータテーブル412は、インデックス(Index)601ごとに、画像検査に係るモジュール603と、各モジュール603の順序602と、各モジュール603のフロー登録名604と、各モジュール603における入力パラメータ605及び出力パラメータ606が関連付けられている。入力パラメータ605は、各モジュールで使用する各種のデータが格納される画像バッファや記憶領域等を示す。出力パラメータ606は、各モジュールが実行された際の結果画像バッファや各種の検査に用いた閾値等を記憶する記憶領域を示す。次ステップ607は、次に処理されるべきステップのインデックス(Index)601を示す。なお、この次ステップ607は、複数のインデックス(Index)を持つこともある。また、分岐参照608は、モジュール603に「反復処理」モジュール、「条件分岐処理」モジュールを設定した際に、各条件(ノード)が次にどのステップを処理するかを指定する条件式テーブルを示す。さらに、処理主体609は、各モジュールにおいて処理をCPU111と、画像入力コントローラ115fのCPU(演算チップ)301のどちらで行うかを示す項目である。
なお、図6に示す処理フロー・入出力パラメータテーブル412におけるインデックス(Index)601と、図4に示すモジュール・ソースコードマスタテーブル411におけるインデックス(Index)とは特に対応させていないが、相互に対応させて各テーブルを作成する形態であってもよい。なお、処理フロー・入出力パラメータテーブルT600において、インデックス(Index)601の2および3は反復処理、処理フロー・入出力パラメータテーブルT601のインデックス(Index)601の2から4は条件分岐処理の一例である。
ソースコードテーブル413は、処理フロー・入出力パラメータテーブル412に記憶されているモジュール603について、ソースコード変換部430でモジュール・ソースコードマスタテーブル411を用いてソースコードに変換し登録している、全てのモジュール或いは一部のモジュールにおけるソースコードを記憶する。
オブジェクトコードテーブル414は、ソースコードテーブル413に記憶されているソースコードをコンパイル部440で変換した、実行可能なモジュールであるオブジェクトコードを記憶する。プロジェクトファイルテーブル415は、画像検査に係る初期設定パラメータや、処理フローシーケンス、ソースコード、入出力パラメータ等を記憶する。また条件式テーブル416は、「条件分岐処理」モジュールが設定された際の、条件式等を記憶し、ノード処理フラグテーブル417は、「並列分岐処理」モジュールが設定された際の、呼び出し側のノード名等を記憶する。
図14を参照して、図4のテーブル記憶部410に記憶される検査結果テーブル418について説明する。図14は検査結果テーブル418の構成の一例を示す模式図である。
図14に示すように、検査結果テーブル418には、処理フロー・入出力パラメータテーブル412におけるインデックス(Index)601と紐づいたインデックス(Index)1401、検査結果ごとに割り振られる識別ID1402、検査対象の識別箇所を座標で示す識別箇所1403、識別箇所1403の検査結果を示す識別結果1404、検査対象である画像名を示す検査画像名1405が関連付けられている。尚、識別箇所1403は、検査画像の左上頂点を(0,0)とする座標から構成され、識別箇所の左上の座標と、識別箇所の右下の座標を組み合わせて格納される。識別箇所は矩形であるので、識別箇所を特定できるのであれば、これに限らない。
次に、図11を参照して、図4のテーブル記憶部410に記憶される検査パラメータテーブル480について説明する。図11は検査パラメータテーブル480の構成の一例を示す模式図である。
図11に示すように、検査パラメータテーブル480には、検査パラメータごとに割り振られるNO1101、当該検査パラメータが使用中か否かを示す使用中フラグ1102が関連付けられている。
次に、図12を参照して、図4のテーブル記憶部410に記憶される検査テーブル481(電子画像データ記憶手段)について説明する。図12は検査テーブル481の構成の一例を示す模式図である。
図12に示すように、検査テーブル481には、検査をおこなうスレッドのスレッド名を示す検査スレッド1201、検査スレッド1201が実行中か否かを示す実行中フラグ1202、検査の結果を示す検査結果1203(画像処理結果)、図14の検査画像名1405と対応し、検査対象の画像名を示す検査画像名1204、当該検査スレッドが検査パラメータテーブル480のうち、どこで検査されているかを示す検査パラメータ1205が関連付けられている。
図17を参照して、図4のテーブル記憶部410に記憶される画像記録テーブル482について説明する。図17は画像記録テーブル482の構成の一例を示す模式図である。
図17に示すように、画像記録テーブル482には、画像記録された順番に割り振られるインデックス(Index)1801、データを判別するために用いる判別名(タイムスタンプ)1802、連続した同一のグルーピングとして記録された画像枚数1803が格納される。判別名1802には、データを判別特定できるのであれば、これに限らない。
続いて、図4のフロー作成部420、ソースコード変換部430、コンパイル部440、実行部450、データ保存部460、及び、データ入力・出力部470について説明する。
フロー作成部420は、モジュール・ソースコードマスタテーブル411に含まれているモジュールの処理シーケンスを管理する処理フロー・入出力パラメータテーブル412の作成等と、処理フロー描画領域2102(図21参照)へのモジュールの描画を行う機能を有する。
ソースコード変換部430は、フロー作成部420により作成された処理フロー・入出力パラメータテーブル412に記憶されている各モジュールの処理データをモジュール・ソースコードマスタテーブル411と照合して、各モジュールをソースコードに変換し、ソースコードテーブル413に記憶する機能を有する。
なお、図5及び図6に示すテーブルのモジュールには、画像に対する検査だけでなく、画像を取得するための事前処理や、検査結果を出力するための事後処理を含む外部機器に対する処理などを含めても勿論構わない。例えば、カメラ140の撮像条件を設定する制御指令や、照明装置160を制御するための照明装置コントローラ150への制御指令、或いは、ステージの移動などを制御するための外部機器コントローラ170への制御指令、LAN上に接続されたPCにデータを送信する等の制御指令を行うものであってもよい。
コンパイル部440は、ソースコードテーブル413に記憶されているソースコードから実行可能なオブジェクトコードを生成し、生成したオブジェクトコードをオブジェクトコードテーブル414に記憶する機能を有する。
なお、コンパイル部440が行うコンパイルには、デバッグ・コンパイルとリリース・コンパイルの2つのタイプがある。ここで、本実施形態においては、処理フロー作成中には、ソースコードレベルでのステップ実行を可能とするデバッグ・コンパイルを行い、データ保存時には、後述するオンライン検査で利用可能なファイルを生成するリリース・コンパイルを行う。この際、デバッグ・コンパイル及びリリース・コンパイルの両者は、同じ変換手法で生成されたソースコードを参照するものとする。
(検証)実行部450は、コンパイル部440により作成されたオブジェクトコードテーブル414に記憶されているオブジェクトコードを実行し、結果画像表示領域2103(図21参照)及び検査画像表示領域1002と処理フロー・入出力パラメータテーブル412を更新する機能を有する。
データ保存部460は、例えば、RAM112にあるソースコードテーブル413、オブジェクトコードテーブル414及びプロジェクトファイルテーブル415を外部メモリ116に出力して、データの保存処理を行う。
データ入力・出力部470は、各モジュールで使用する入出力パラメータを管理する機能を有する。
次に、情報処理装置110によって実行される画像検査アプリケーションプログラム作成処理の処理手順について説明する。図7は、図1に示す情報処理装置110による画像検査プログラム作成処理の処理手順の一例を示すフローチャートである。本処理をCPU111に実行させるためのプログラムは外部メモリ116に記憶されており、本処理の実行要求を入力装置120より受け付けた場合に、CPU111は、当該プログラムをRAM112にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。
まず、図7のステップS103において、情報処理装置110のCPU111は、例えば、入力装置120からの入力指示に基づいて、画像検査システム開発やシステム設定を行うためのメインメニューをディスプレイ装置130に表示する処理を行う。メインメニューは図8に示すようなものである。
図8は、画像検査システム開発画面のメインメニュー800の一例を示す模式図である。図8に示す画像検査システム開発画面のメインメニュー800には、ロジック(処理フロー)の新規作成、若しくは作成済みの処理フローの編集を行う「プロジェクト構築」メニュー801、「プロジェクト構築」メニュー801で作成した処理フローをオンライン検査モードで実行するための「オンライン検査」メニュー802、メインメニューを終了する「終了」メニュー805が設けられている。
図7の説明に戻る。ステップS103のメインメニュー表示処理を終えると、CPU111は処理をステップS104に進める。そして、情報処理装置110のCPU111は、ステップS103で表示された画像検査システム開発画面のメインメニュー800上の各メニュー項目に対して、入力装置120からの入力指示があったか否かを判断する。
ステップS104の判断の結果、入力装置120からメインメニュー800の各メニュー項目に対する入力指示がなかったと判断した場合には(ステップS104/NO)、入力装置120からの入力指示があるまで、ステップS104で待機する。一方、ステップ102の判断の結果、入力装置120からの入力指示あったと判断した場合には(ステップS104/YES)、ステップS105に進む。
ステップS105に進むと、情報処理装置110のCPU111は、入力装置120からの入力指示に基づいて、選択された処理内容の判定処理を行う。このステップS105で判定される処理内容としては、本例では、「プロジェクト構築処理」、「オンライン検査処理」「終了」である。なお、ここで挙げた処理内容は一例を示したものであり、その他のメニュー項目をメインメニューに追加し、そのメニュー項目に対応するその他の処理内容をステップS105で判定することも可能である。
続いて、ステップS106において、情報処理装置110のCPU111は、ステップS105で判定した処理内容が、「プロジェクト構築処理」であるか否かを判断する。ステップS106の判断の結果、ステップS105で判定した処理内容が、「プロジェクト構築処理」であると判断した場合には(ステップS106/YES)、処理をステップS107に進める。
ステップS107に進むと、情報処理装置110のCPU111は、「プロジェクト構築処理」を行う。この「プロジェクト構築処理」は、画像検査プログラムを構築する処理である。
まず、情報処理装置110のCPU111は、例えば、入力装置120からの入力指示に基づいて、図21に示す画像処理システムの開発を行うための画像処理プロジェクト開発画面2100をディスプレイ装置130に表示する処理を行う。
図21は、画像処理プロジェクト開発画面2100の一例を示す模式図である。図21に示す画像処理プロジェクト開発画面2100には、利用可能な処理ユニット(即ち、画像処理に係る各モジュール)を表示するツールボックス2101と、画像処理の実行順序(即ち、各モジュールの実行順序)をフローチャートで描画する処理フロー描画領域2102と、各画像処理(即ち、各モジュールの処理)で実行した結果画像を表示する結果画像表示領域2103と、ツールバー2107と、処理実行結果を表示する処理結果表示領域2108と、処理された画像が複数枚あった場合に画像の選択を行う画像選択領域2109と、画像選択領域2109に備えられた前へボタン2110と、次へボタン2111や、画像処理プログラムの開発を終了する際に操作される不図示の閉じるボタン等も設けられている。
また、図21に示す画像処理プロジェクト開発画面2100には、例えば、新規モジュールの登録時もしくはパラメータの編集時等に、処理フロー描画領域2102のフローチャートの各ステップ(即ち、各モジュール)で利用するパラメータを設定するパラメータ編集画面2104と、そのパラメータの設定で実行された結果画像を表示する結果画像表示領域2103が表示される。図21の、プロジェクト構築画面の例では、分岐処理によるフローを制御するモジュールも含んでいる。ここで、結果画像表示領域2103は、処理フロー描画領域2102の各モジュールの結果画像を表示する領域である。これは、プレビュー画像や縮小画像であってもよい。条件分岐処理の場合には、条件を満たしたノード(枝)の画像を表示し、条件を満たさないノードについては処理が行われないのでブラックアウトした画像を表示する。本発明では、結果画像表示領域2103にブラックアウトした画像を表示するが、一つ前のモジュールで処理された結果画像を表示してもよい。このとき、すべての処理フローの結果が結果画像表示領域2103に収まらない場合は、水平・垂直方向のスクロールバーを用いて表示領域を変更することとしてもよい。
また、処理結果表示領域2108は、処理フロー描画領域2102の各モジュールのうちの1つをユーザからの操作により選択された場合、当該モジュールの結果画像を表示する領域である。ユーザからの操作により選択されたモジュールが、条件分岐処理等の画像処理を伴わないモジュールである場合には、処理結果表示領域2108にブラックアウトした画像を表示する。本発明では、処理結果表示領域2108にブラックアウトした画像を表示するが、一つ前のモジュールで処理された結果画像を表示してもよい。以上が、画像処理プロジェクト開発画面2100の構成の一例の説明である。
モジュール・ソースコードマスタテーブル411に記憶された各モジュールを、ユーザからの操作により、処理フロー描画領域2102において画像検査の順にフローチャート形式で組み合わせ、その組み合わせた結果を処理フロー・入出力パラメータテーブル412に格納する。その後、ソースコード変換部430によってモジュール・ソースコードマスタテーブル411と、処理フロー・入出力パラメータテーブル412から一連の画像検査のソースコードを生成し、ソースコードテーブル413に格納する。ソースコードテーブル413に格納された画像検査のソースコードは、コンパイル部440によってコンパイルされ、実行可能なオブジェクトコードを生成し、生成したオブジェクトコードをオブジェクトコードテーブル414に記憶する。
本発明では、このようにフローチャート形式で作成されたオブジェクトコードを情報処理装置のマルチスレッドまたはマルチプロセスにより並列動作させることで、複数のカメラ140から送信された複数画像に対して画像処理を行う。つまり、並列処理で動作する1つ1つの画像処理は、処理フロー描画領域2102において構築された画像処理フローの画像処理である。
図22は、処理フロー描画領域2102において構築された画像処理フローの画像処理が並列処理により動作する概念図である。図22に示すように、検査スレッドが複数存在し、そのスレッドごとに処理フロー描画領域2102において構築された画像処理フローの画像処理が動作する。本実施例では、同一の画像処理フローの画像処理が各スレッドにおいて並列処理されるが、スレッドごとに異なる画像処理フローの画像処理が動作してもよい。例えば、カメラ140が異なる目的で設置されている場合、一般的に同じ画像処理フローを利用することは少ない。よって、情報処理装置110のCPU111は、スレッドごとにことなる画像処理フローを構築し、実行する形態が考えられる。この場合も同様にスレッドごとに構築されたそれぞれ異なる画像処理フローを並列処理によって動作させる。
以上が、プロジェクト構築処理の概要である。そして、ステップS107の処理が終了すると、ステップS104に戻り、入力装置120から次の入力指示があるまで待機する。
一方、ステップS106の判断の結果、ステップS105で判定した処理内容が、「プロジェクト構築処理」ではないと判断した場合には(ステップS106/NO)、処理をステップS108に進める。
ステップS108では、情報処理装置110のCPU111は、ステップS105で判定した処理内容が、「オンライン検査処理」であるか否かを判断する。
ステップS108の判断の結果、ステップS105で判定した処理内容が、「オンライン検査処理」であると判断した場合には(ステップS108/YES)、CPU111は処理をステップS109に進める。
ステップS109に進むと、情報処理装置110のCPU111は、「オンライン検査処理」処理を行う。この「オンライン検査処理」の詳細について、図9を用いて後述する。そして、ステップS109の処理が終了すると、ステップS104に戻り、入力装置120から次の入力指示があるまで待機する。
一方、ステップS108の判断の結果、ステップS105で判定した処理内容が、「オンライン検査処理」ではないと判断した場合には(ステップS108/NO)、CPU111は、処理をステップS114に進める。
ステップS114では、情報処理装置110のCPU111は、ステップS105で判定した処理内容が、「終了処理」であるか否かを判断する。
ステップS114の判断の結果、ステップS105で判定した処理内容が、「終了処理」であると判断した場合には(ステップS114/YES)、本プログラムによる処理を終了する。
一方、ステップS114の判断の結果、ステップS105で判定した処理内容が、「終了処理」ではないと判断した場合には(ステップS114/NO)、処理をステップS104に進め、入力装置120から次の入力指示があるまで待機する。
次に、図9を参照して、図7のステップS109のオンライン検査処理の詳細な手順について説明する。図9は、図7のステップS109における「オンライン検査処理」の詳細な処理手順の一例を示すフローチャートである。本処理をCPU111に実行させるためのプログラムは外部メモリ116に記憶されており、本処理の実行要求を入力装置120より受け付けた場合に、CPU111は、当該プログラムをRAM112にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。尚、本実施例では、オンライン検査処理と、後述する検査スレッド処理(図13参照)と、後述する検査結果表示処理(図15参照)は、マルチスレッド処理により、CPU111において並列して動作しているものとする。
まず、ステップS201において、情報処理装置110のCPU111は、オンライン検査画面1000(図10参照)をビデオコントローラ115bからディスプレイ装置130上に表示をし、ユーザからの操作を受け付ける。
図10は、オンライン検査画面1000の一例を示す模式図である。図10に示すオンライン検査画面1000には、ステップS107において構築された画像検査プログラムを実行する検査開始ボタン1001、検査開始ボタン1001の押下に伴って実行された画像検査プログラムの検査結果画像を表示する検査画像表示領域1002、画像処理により異常である又は検査に失敗したと判定された画像(NG画像)を表示するNG画像表示領域1003、検査した処理数と表示間引きされた結果を表示するカウント結果1005から構成される。以上が、オンライン検査画面1000の構成の一例の説明である。
ステップS202では、情報処理装置110のCPU111は、ユーザからの操作によって、検査開始ボタン1001が押下されたか否かを判断する。検査開始ボタン1001が押下されたと判断した場合には(ステップS202/YES)、CPU111は、検査カウンタを初期化(0クリア)して、処理をステップS203に進める。検査カウンタは、画像検査を行った枚数をかぞえる変数であり、本実施例では、検査カウンタの値を後述するステップS308においてオンライン検査画面1000のカウント結果1005に表示するための変数である。一方、ステップS202の判断処理で、検査開始ボタン1001が押下されたと判断できない場合には(ステップS202/NO)、ステップS202で待機する。
ステップS203では、情報処理装置110のCPU111は、カメラ140から入力された画像を画像入力コントローラ115fから取り込み、RAM112に記憶する。尚、既に外部メモリ116に記憶された画像をRAM112に展開して用いてもよい。
ステップS204では、情報処理装置110のCPU111は、検査パラメータテーブル480を検索し、使用中フラグ1102が「OFF」のレコードが存在するか否かを判断する。使用中フラグ1102が「OFF」のレコードが存在すると判断した場合には(ステップS204/YES)、CPU111は、処理をステップS206に進める。一方、ステップS204の判断処理で、使用中フラグ1102が「OFF」のレコードが存在すると判断できない場合には(ステップS204/NO)、CPU111は、ステップS205に進める。
ステップS205では、情報処理装置110のCPU111は、検査テーブル481に格納されたレコードのうち、先頭のレコードの検査結果に「中断」を格納し、対応する検査スレッドを強制終了する。検査テーブル481には、後述するステップS206において、画像取込順にレコードが追加されるため、最も古い検査である先頭のレコードを削除する。これにより、ある検査が滞っていても、当該検査を強制的に終了させることで一連の画像検査の効率を向上させることができる。
ステップS206では、情報処理装置110のCPU111は、新規に検査スレッドを作成し、検査テーブル481に存在するレコードの末尾に新たなレコードを追加し、検査スレッド1201に検査スレッド名を格納する。検査スレッド名は、他の検査スレッド名と重複しなければ、どのような名称でもよい。
ステップS207では、情報処理装置110のCPU111は、検査パラメータテーブル480を検索し、使用中フラグ1102が「OFF」のレコードが存在するか否かを判断する。使用中フラグ1102が「OFF」のレコードが存在すると判断した場合には(ステップS207/YES)、CPU111は、処理をステップS208に進める。
ステップS208では、情報処理装置110のCPU111は、ステップS207において検索された使用中フラグ1102に「ON」を格納する。
ステップS209では、情報処理装置110のCPU111は、ステップS206において作成されたレコードの実行中フラグ1202に「ON」を格納する。
ステップS210では、情報処理装置110のCPU111は、ステップS206において作成されたレコードの検査画像名1204に、ステップS203においてRAM112に記憶された画像の画像名を格納し、検査パラメータ1205に、ステップS208において「ON」を格納した使用中フラグ1102に対応する、NO1101を示す情報を格納する。本実施例では、「検査パラメータテーブル[NO]」という形式で格納するが、これ以外の表記方法でもよい。ステップS210の終了後、情報処理装置110のCPU111は、ステップS211、及びステップS214の並列処理を行う。つまり、CPU111は、ステップS211の処理完了を待たずとも、ステップS214の処理を実行することができるため、効率的な検査を行うことができる。
ステップS211では、情報処理装置110のCPU111は、ステップS206において作成された検査スレッドを実行する検査スレッド処理を実行する。ステップS211の検査スレッド処理の詳細については、図13を用いて後述する。
一方、ステップS207の判断処理で、使用中フラグ1102が「OFF」のレコードが存在すると判断できない場合には(ステップS207/NO)、CPU111は、ステップS212に進める。
ステップS212では、情報処理装置110のCPU111は、ステップS206において作成されたレコードの実行中フラグ1202に「OFF」を格納し、検査結果1203に「未実行」を格納する。これにより、検査漏れが発生した画像をカウントすることができる。
ステップS213では、情報処理装置110のCPU111は、ユーザからの操作によって取込停止の指示がなされたか否かを判断する。取込停止の指示は、事前に設定されたボタンの押下によるものでもよいし、その他の方法でもよい。取込停止の指示がなされたと判断した場合には(ステップS213/YES)、処理を終了し、ステップS109に処理を戻す。一方、ステップS213の判断処理で、取込停止の指示がなされたと判断できない場合には(ステップS213/NO)、CPU111は、ステップS203に処理を戻す。これにより、取込停止がなされるまで、ステップS203乃至ステップS213の処理を繰り返す。
次に、図13を参照して、図9のステップS211の検査スレッド処理の詳細な手順について説明する。図13は、図9のステップS211における検査スレッド処理の詳細な処理手順の一例を示すフローチャートである。本処理をCPU111に実行させるためのプログラムは外部メモリ116に記憶されており、本処理の実行要求を受け付けた場合に、CPU111は、当該プログラムをRAM112にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。尚、本実施例では、前述したオンライン検査処理(図9参照)と、検査スレッド処理と、後述する検査結果表示処理(図15参照)は、マルチスレッド処理により、CPU111において並列して動作しているものとする。
ステップS301では、情報処理装置110のCPU111は、ステップS107において構築された画像検査プログラムを実行し、ステップS210において設定された検査画像名1204に対応する画像を検査する(画像処理実行手段)。実行される画像検査プログラムは、オブジェクトコードテーブル414に記憶されたオブジェクトコードとして記憶されている。
ステップS302では、情報処理装置110のCPU111は、ステップS301において実行された結果を検査結果テーブル418に記憶する。インデックス(Index)1401には、処理を行ったモジュールのインデックス(Index)601を格納し、識別ID1402には、モジュールごとに各処理を識別する番号を割振り、識別箇所1403には、ステップS301において検査された結果、識別した箇所を座標形式等で格納し、識別結果1404には、識別箇所1403の識別結果を格納し、検査画像名1405には、ステップS301において検査された画像の画像名を格納する。
ステップS303では、情報処理装置110のCPU111は、ステップS301において検査された画像をRAM112から外部メモリ116に記憶する。但し、後述するステップS409において当該画像を表示する表示速度を考慮する場合、読み出し速度がより高速なRAM112に記憶したままでもよい。また、後述するステップS416において、外部メモリ116に記憶してもよい。この場合、ステップS303は不要である。
ステップS304では、情報処理装置110のCPU111は、ステップS206において作成されたレコードの実行中フラグ1202に「OFF」を格納する。
ステップS305では、情報処理装置110のCPU111は、ステップS207において検索された使用中フラグ1102に「OFF」を格納する。
ステップS306では、情報処理装置110のCPU111は、ステップS206において作成されたレコードの検査結果1203に検査結果を格納する。画像の検査が成功した場合には、「OK」と格納し、失敗した場合には「NG」を格納する。尚、格納する情報はこれに限らない。このように、検査結果1203に画像検査の結果を格納することで、画像検査結果を集計させることができる。
ステップS307では、情報処理装置110のCPU111は、ステップS202において初期化された検査カウンタをインクリメントする。具体的には、ステップS301における画像検査が終了する度に、検査カウンタを1増加させる。これにより、検査カウンタでカウントした検査回数を後述するステップS308において表示させることができる。
ステップS308では、情報処理装置110のCPU111は、ステップS307においてインクリメントされた検査カウンタをオンライン検査画面1000のカウント結果1005に表示する。検査カウンタをカウント結果1005に表示させることにより、後述するステップS408において結果画像の間引き処理がなされていたとしても、画像処理が正常に動作していることをユーザに通知することができる。
次に、図15を参照して、図13の検査スレッド処理において検査された結果画像を表示する検査結果表示処理の詳細な手順について説明する。図15は、検査結果表示処理の詳細な処理手順の一例を示すフローチャートである。本処理をCPU111に実行させるためのプログラムは外部メモリ116に記憶されており、本処理の実行要求を受け付けた場合に、CPU111は、当該プログラムをRAM112にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。尚、本実施例では、前述したオンライン検査処理(図9参照)と、前述した検査スレッド処理(図13参照)と、検査結果表示処理は、マルチスレッド処理により、CPU111において並列して動作しているものとする。また、本実施例では、検査結果1203の結果がNGである画像(NG画像)は間引かずに表示する例について説明する。
まず、ステップS401では、情報処理装置110のCPU111は、OK個数の設定を受け付ける(許容値設定手段)。OK個数とは、NG画像としてグルーピングを行うための許容値である。まず、本実施例におけるグルーピングについて説明する。生産ラインを流れる製品を検査し、異常が発見された場合、連続して同じエラーが発生することがある。これは、生産を行う機械や同じロットの素材が問題となっている場合に起こることであり、同一のエラーとして見なすべきものが多い。つまり、連続したNG画像は同一のエラーである可能性が高いため、1つのグループとしてグルーピングしておく。これにより、エラー画像に対してまとまったデータを得ることができ、その後のパラメータ設定や原因特定に役立つ。図18に示すオンライン検査画面1000ではNG画像表示領域1003においてグルーピングされたNG画像を表示する。例えば、グルーピング画像1004のようにグルーピングされたNG画像を重ねて表示させる。
このようなグルーピングにおいて、本来NG画像とすべき結果画像が画像検査に成功した、または正常な画像(OK画像)として判定されてしまう場合がある。具体的には、「NG、NG、NG、OK、NG、NG、NG」という判定がなされた場合、ひとつだけ挟まれたOK画像はパラメータ設定不足により誤判定された可能性が高い。よって、これら7枚の結果画像は1つのNG画像グループとしてグルーピングする。この際に、OK画像がグルーピングされる許容値を示すのが前述したOK個数である。例えばOK個数を「2」として設定した場合には、NG画像に挟まれたOK画像が2枚以下であった際に、グルーピングを行い、NG画像に挟まれたOK画像が3枚よりも多かった場合にはグルーピングを行わない。このような設定を設けることで、柔軟なグルーピング設定を行うことができる。ステップS401における設定の受付は、入力受付画面を表示してもよいし、それ以外の方法でもよい。事前に設定されていてもよいし、これに限らない。
ステップS402では、情報処理装置110のCPU111は、表示カウンタを初期化(0クリア)する。表示カウンタは、検査結果画像を検査画像表示領域1002に表示した枚数をかぞえる変数であり、本実施例では表示カウンタの値をオンライン検査画面1000のカウント結果1005に表示するための変数である。後述するステップS410において表示カウンタを増加させ、カウント結果1005に表示させる。
ステップS404では、情報処理装置110のCPU111は、NGカウンタを初期化(0クリア)する。NGカウンタは、グルーピングしたNG画像を数える変数である。
ステップS405では、情報処理装置110のCPU111は、OKカウンタを初期化(0クリア)する。OKカウンタは、前述したOK個数分、OK画像が連続しているのか否かを判定するために使用する変数である。
ステップS406では、情報処理装置110のCPU111は、検査テーブル481に格納されたレコードのうち、先頭のレコードを参照する。
ステップS407では、情報処理装置110のCPU111は、ステップS406において参照されたレコードの実行中フラグ1202が「OFF」であるか否かを判断する。実行中フラグ1202が「OFF」であると判断した場合には(ステップS407/YES)、CPU111は、処理をステップS408に進める。一方、ステップS407の判断処理で、実行中フラグ1202が「OFF」であると判断できない場合には(ステップS407/NO)、CPU111は、ステップS406に処理を戻す。これにより、検査の終了していない検査スレッドの検査結果表示を防ぐことができる。
ステップS408では、情報処理装置110のCPU111は、現在参照しているレコードが検査テーブル481の先頭のレコードか否かを判断する。先頭のレコードであると判断した場合には(ステップS408/YES)、CPU111は、処理をステップS409に進める。つまり、検査テーブル481の先頭レコードを参照している場合(検査スレッド1において処理された画像)のみ、後述するステップS404の検査を行い、検査結果の画像を表示させる。
ステップS409では、情報処理装置110のCPU111は、検査結果テーブル418と検査テーブル481から、ステップS301の検査結果をビデオコントローラ115bからディスプレイ装置130上の検査画像表示領域1002に表示する(表示手段)。尚、本実施例では、ステップS109におけるオンライン検査中に検査結果画像の表示を行うものである。しかしながら、ステップS107におけるプロジェクト構築処理で構築された画像処理フローの動作を確認すべく、処理結果表示領域2108に表示させるような形態でもよい。
具体的には、まず現在参照されている先頭のレコードに格納された検査画像名1204と一致する画像を外部メモリ116、又はRAM112から取得する。また、検査画像名1204と一致する検査画像名1405に対応するレコードを、検査結果テーブル418からすべて取得し、RAM112に記憶する。取得したレコードの識別箇所1403を用いて、取得した画像上に識別箇所を表示させ、識別結果1404にデータが格納されている場合は、識別箇所1403に対応する識別結果1404を表示させる。例えば、図16に示す検査結果画面1600では、マッチング箇所1602の部分は、識別箇所を識別可能に表示しており、文字認識箇所1601には、識別結果1404も補足表示させる。
図16は、検査結果画面1600の一例を示す模式図である。図16に示す検査結果画面1600には、文字認識をした結果を示す文字認識箇所1601と、既定の画像と比較した結果を示すマッチング箇所1602から構成される。以上が、検査結果画面1600の構成の一例の説明である。
ステップS410では、情報処理装置110のCPU111は、表示カウンタをインクリメントする。具体的には、表示カウンタに格納された数値に対して「1」を加算する。表示カウンタの値は、オンライン検査画面1000のカウント結果1005に表示する。前述した検査カウンタと合わせてカウント結果1005に表示させることで、画像の検査数と、表示数を表示させることができる。つまり、結果画像の表示間引きが行われている場合には、「検査数>表示数」となる。また間引きされた画像の枚数は、検査数から表示数を減じることで求めることができる。
一方、ステップS408の判断処理で、先頭のレコードであると判断できない場合には(ステップS408/NO)、CPU111は、処理をステップS411に進める。つまり、現在参照しているレコードが検査テーブル481の先頭レコードでないということは、検査テーブル481に複数のレコードが蓄積されている。よって、カメラ140から送信された画像の処理が1スレッドでは間に合わず、マルチスレッドで並列処理していると判定できるため、ステップS404においては結果画像の表示を行わない(表示を間引く)。尚、本実施例では検査テーブル481に複数レコードが蓄積されていた場合に、先頭レコード以外の検査結果の画像表示を間引くが、検査パラメータテーブル480の使用中フラグ1102に「ON」が一定数以上存在した場合や、CPU111等の負荷を計測し、一定以上負荷がかかった場合に画像表示を間引くようにしてもよい。検査結果の画像表示を間引く判断基準は、これに限らない。また、間引く枚数は何枚でもよく、ユーザによって設定可能とする。これにより、結果画像を表示する負荷を軽減し、並列処理で動作している画像検査を優先させることができる。
ステップS411では、情報処理装置110のCPU111は、現在参照しているレコードの結果が「NG」であるか否かを判定する(間引き判定手段)。具体的には、現在参照しているレコードの検査結果1203が「NG」であるか否かを判定する。「NG」であると判定された場合には(ステップS411/YES)、処理をステップS412に進める。後述するステップS412乃至ステップS419はNG画像であっても間引かないように制御する処理である。
ステップS412では、情報処理装置110のCPU111は、NGカウンタに「0」が格納されているか否かを判断する。ステップS412の判断の結果、ステップS412で判定した処理内容が、NGカウンタは「0」であると判断した場合には(ステップS412/YES)、処理をステップS413に進める。つまり、NG画像をグーピングして保存するための、保存先を作成するか否かを判断する。本実施例では、NG画像をグルーピングするために当該グルーピングされたNG画像を外部メモリ116に保存するためのフォルダを作成する。作成されたフォルダにNG画像を保存し、グルーピングされた画像として扱う。尚、グルーピングの方法に関してはこれに限らない。テーブルで対応づけてもよいし、それ以外の方法でもよい。
ステップS413では、情報処理装置110のCPU111は、ステップS301の検査結果の保存先として親フォルダ2001を作成する。本実施例では、情報処理装置110のタイムスタンプを取得し、フォルダ名とするがこれに限らない。尚、RAM112に親フォルダ2001を作成してもよい。図20は、本実施例におけるフォルダ構成の一例を示した模式図である。ステップS413においては、NG画像の保存場所としてまず親フォルダ2001を作成する。尚、フォルダ構成はこれに限らない。
ステップS414では、情報処理装置110のCPU111は、画像記録テーブル482に新しくレコードを追加し、Index1801に一意に値を割り振り、現在時刻を判別名1802に格納する。ステップS413及びステップS414の処理により、NG画像のグルーピング準備が完了する。
一方、ステップS412の判断処理で、NGカウンタが0以外の場合には(ステップS412/NO)、CPU111は、ステップS415に進める。つまり、既にNG画像の保存先が存在し、グルーピングされたフォルダに結果画像を保存することができる状態であるので、ステップS413及びステップS414の処理を行わない。
ステップS415では、情報処理装置110のCPU111は、ステップS301の検査結果の保存先として、ステップS413で作成した親フォルダ2001の下に子フォルダ2002を作成する。本実施例では、情報処理装置110のタイムスタンプを取得し、子フォルダのフォルダ名とするが、これに限らない。
ステップS416では、情報処理装置110のCPU111は、現在参照中のレコードであって、検査テーブル481のレコードの結果画像を、ステップS415で作成した子フォルダの下に保存する。また、ステップS306において作成された当該レコードの検査結果1203の内容を保存する。保存内容は、各画像処理(即ち、各モジュールの処理)で実行した結果を保存してもよい。図20に示す模式図では、親フォルダ2001の下に子フォルダ2002が作成され、現在参照中の検査テーブル481のレコードの結果画像2003が保存される。また、各画像処理(即ち、各モジュールの処理)で実行した結果2004も合わせて保存しておくことができる。
ステップS417では、情報処理装置110のCPU111は、NGカウンタをインクリメント(1増加)し、NGカウンタの数をステップS414で作成したレコードのNG数1703に格納する。NG数1703は、グルーピングされた結果画像の枚数を示す。
ステップS418では、情報処理装置110のCPU111は、検査結果テーブル418と検査テーブル481から、ステップS301の検査結果をビデオコントローラ115bからディスプレイ装置130上のNG画像表示領域1003に表示する(表示手段)。また、NG数1703に格納された数値も識別表示させる。これにより、グルーピングされた結果画像の枚数をユーザに通知することができる。尚、表示されたNG画像のグループがユーザから選択されると、図19に示す通り、グルーピングされたNG画像の結果一覧を表示する。結果一覧1901に表示された結果のうち、1つが選択されると当該結果のNG画像またはOK画像が表示される。当該結果の詳細なパラメータや検査結果を表示させてもよい。
ステップS419では、情報処理装置110のCPU111は、OKカウンタを初期化「0」
する。以上のステップS412乃至ステップS419の処理がNG画像であった場合の処理である。
一方、ステップS411の判断処理で、検査結果はNGであると判断できない場合には(ステップS411/NO)、CPU111は、ステップS426に進める。
ステップS426では、情報処理装置110のCPU111は、NGカウンタが「0」以外であるか否かを判断する。つまり、NGカウンタが「0」以外であるということは、ステップS417においてNGカウンタがインクリメントされていることを示す。よって、NG画像が発生しているため、NG画像のグルーピングを行っていると判断できる。前述した通り、OK画像であっても、連続したOK画像がOK個数以下であった場合には、NG画像としてグルーピングを行うため、ステップS426においてNGカウンタに対して判断を行う。NGカウンタが「0」以外であると判断した場合には(ステップS426/YES)、処理をステップS427に進める。
一方、ステップS426の判断処理で、NGカウンタが「0」である場合には(ステップS426/NO)、CPU111は、ステップS420に進める。つまり、NG画像は発生しておらず、OK画像が続いているものとして、処理を行う。
ステップS427では、情報処理装置110のCPU111は、OKカウンタをインクリメント(1増加)する。
ステップS428では、情報処理装置110のCPU111は、OKカウンタがステップS401で設定されたOK個数より多いか否かを判断する。ステップS428の判断の結果、OKカウンタがOK個数より多いと判断した場合には(ステップS428/YES)、処理をステップS429に進める。つまり、OK個数以上連続してOK画像が続いているため、NG画像として表示を行わない。
一方、ステップS428の判断処理で、OKカウンタがOK個数より多いと判断できない場合には(ステップS428/NG)、CPU111は、ステップS415に進める。つまり、OK画像であってもNG画像として保存する。前述の通り、パラメータの設定によって、本来NG画像として判定されるべき結果画像がOK画像として表示されている可能性があるため、一旦NG画像として保存を行う。
ステップS429では情報処理装置110のCPU111は、ステップS428においてOKカウンタがOK個数よりも多いと判定されたので、ステップS428においてOKカウンタがOK個数よりも多いと判定できなかったためにステップS416において保存されてしまったOK画像を削除して、NG画像表示領域1003から当該OK画像の表示を消す。具体的には、例えばOK個数が「2」で、「NG、OK、OK、OK」という順で結果画像が出力された場合、最初にNG画像があるため、グルーピングが開始される。2番目のOK画像は、NGカウンタが「1」であるため、ステップS426の判断処理でステップS427へ進み、ステップS428の判断処理では、ステップS415へ進む。つまりOK画像だがNG画像としてグルーピングがなされる。しかし、OK画像は3つ連続するため、OK個数の「2」より大きくなる。つまり、これらのOK画像はNG画像ではないと判断すべきである。よって、ステップS429において、ステップS416で保存されたOK画像の削除と、ステップS418で表示されたサムネイル画像の非表示を行う。
ステップS430では、情報処理装置110のCPU111は、NGカウンタを初期化(0クリア)する。ステップS428においてOKカウンタがOK個数よりも多いと判断されたので、NG画像のグルーピングを終了すべく、NGカウンタを初期化する。以上のステップS426乃至ステップS430の処理がOK画像であった場合の処理である。
ステップS419またはステップS430が終了すると、ステップS420では、情報処理装置110のCPU111は、ステップS301において画像検査された結果に応じて、ユーザにより設定された各種処理を行う。具体的には、検査結果1203に「NG」が格納されていた場合には、生産ラインを流れる当該画像の対象物を生産ラインから排除する外部装置制御や、ステップS303において検査画像を記憶していなければ、外部メモリ116に記憶する検査画像記憶や、検査結果の各種情報送信等をおこなう。
尚、ステップS420において検査結果の情報を外部装置に送信することで、画像検査順に検査結果を送信することもできる。つまり、検査テーブル481に格納された各レコードの検査スレッド処理(図13参照)は並列で動作しており、画像によって検査速度が異なるため、後から検査が開始された検査スレッドが、先に終了してしまうことがある。よって、検査スレッド処理において、検査結果の情報を外部装置へ送信する場合、画像の検査順と検査結果の送信順に不整合が生じる可能性がある。しかし、検査結果表示処理において処理されることで、このような不整合を防ぐことが可能となる。尚、外部制御処理等、不整合が発生すると不具合が発生する処理の場合には、同様の効果がある。
ステップS422では、情報処理装置110のCPU111は、現在参照しているレコードを検査テーブル481から削除する。
ステップS423では、情報処理装置110のCPU111は、検査テーブル481にレコードが存在するか否かを判断する。レコードが存在すると判断した場合には(ステップS423/YES)、CPU111は、処理をステップS424に進める。
ステップS424では、情報処理装置110のCPU111は、ステップS422において削除したレコードの次のレコードを参照し、処理をステップS407に戻す。
一方、ステップS423の判断処理で、レコードが存在すると判断できない場合には(ステップS423/NO)、CPU111は、処理をステップS425に進める。
ステップS425では、情報処理装置110のCPU111は、オンライン検査処理(図9参照)が終了しているか否かを判断する。オンライン検査処理と、検査結果表示処理は並列して動作しているので、オンライン検査処理が処理中か否かを参照してもよいし、他の形式でもよい。オンライン検査処理が終了していると判断した場合には(ステップS425/YES)、CPU111は、処理を終了する。一方、ステップS425の判断処理で、オンライン検査処理が終了していると判断できない場合には(ステップS425/NO)、CPU111は、ステップS406に進める。これにより、オンライン検査処理が動作し続ける限り、画像の検査結果を表示させることができる。
次に、実施例2について説明する。実施例2では、実施例1における検査結果表示処理(図15参照)の別の形態について説明する。よって、それ以外のシステム構成、ハードウェア構成、機能構成、テーブル構成は、実施例1と同様である。また、各処理のフローも同様である。もちろん、他の構成であってもよい。
実施例2では、検査の終了した結果画像を表示する場合に、当該結果画像の表示が間引かれたが、当該結果画像がNG画像であった場合には表示を間引かずに表示する形態について説明する。
まず、図23を参照して、図13の検査スレッド処理において検査された結果画像を表示する検査結果表示処理の詳細な手順について説明する。図23は、検査結果表示処理の詳細な処理手順の一例を示すフローチャートである。本処理をCPU111に実行させるためのプログラムは外部メモリ116に記憶されており、本処理の実行要求を受け付けた場合に、CPU111は、当該プログラムをRAM112にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。尚、本実施例では、前述したオンライン検査処理(図9参照)と、前述した検査スレッド処理(図13参照)と、検査結果表示処理は、マルチスレッド処理により、CPU111において並列して動作しているものとする。また、本実施例では、検査結果1203の結果がNGである画像(NG画像)は間引かずに表示する例について説明する。
ステップS406乃至ステップS407の各ステップは、図15のステップS406乃至ステップS408と同様であるので、説明は省略する。
ステップS501では、情報処理装置110のCPU111は、現在参照しているレコードが検査テーブル481の先頭のレコードか否かを判断する。先頭のレコードであると判断した場合には(ステップS501/YES)、CPU111は、処理をステップS503に進める。つまり、検査テーブル481の先頭レコードを参照している場合(検査スレッド1において処理された画像)のみ、後述するステップS404の検査を行い、検査結果の画像を表示させる。
一方、ステップS501の判断処理で、先頭のレコードであると判断できない場合には(ステップS501/NO)、CPU111は、処理をステップS502に進める。つまり、現在参照しているレコードが検査テーブル481の先頭レコードでないということは、検査テーブル481に複数のレコードが蓄積されている。よって、カメラ140から送信された画像の処理が1スレッドでは間に合わず、マルチスレッドで並列処理していると判定できるため、ステップS503においては結果画像の表示を行わない(表示を間引く)。尚、本実施例では検査テーブル481に複数レコードが蓄積されていた場合に、先頭レコード以外の検査結果の画像表示を間引くが、検査パラメータテーブル480の使用中フラグ1102に「ON」が一定数以上存在した場合や、CPU111等の負荷を計測し、一定以上負荷がかかった場合に画像表示を間引くようにしてもよい。検査結果の画像表示を間引く判断基準は、これに限らない。また、間引く枚数は何枚でもよく、ユーザによって設定可能とする。これにより、結果画像を表示する負荷を軽減し、並列処理で動作している画像検査を優先させることができる。
ステップS502では、情報処理装置110のCPU111は、現在参照しているレコードの結果が「NG」であるか否かを判定する。具体的には、現在参照しているレコードの検査結果1203が「NG」であるか否かを判定する。「NG」であると判定された場合には(ステップS502/YES)、処理をステップS503に進める。一方、ステップS502の判断処理で、現在参照しているレコードの結果が「NG」であると判断できない場合には(ステップS502/NO)、CPU111は、処理を前述したステップS420に進める。これにより、ステップS501において結果画像の間引きが行われたとしても、検査の結果NGと判定された結果画像である場合には、検査結果を表示させることができる。
ステップS503では、情報処理装置110のCPU111は、検査結果テーブル418と検査テーブル481から、ステップS301の検査結果をビデオコントローラ115bからディスプレイ装置130上の検査画像表示領域1002に表示する。尚、本実施例では、ステップS109におけるオンライン検査中に検査結果画像の表示を行うものである。しかしながら、ステップS107におけるプロジェクト構築処理で構築された画像処理フローの動作を確認すべく、処理結果表示領域2108に表示させるような形態でもよい。
具体的には、まず現在参照されている先頭のレコードに格納された検査画像名1204と一致する画像を外部メモリ116、又はRAM112から取得する。また、検査画像名1204と一致する検査画像名1405に対応するレコードを、検査結果テーブル418からすべて取得し、RAM112に記憶する。取得したレコードの識別箇所1403を用いて、取得した画像上に識別箇所を表示させ、識別結果1404にデータが格納されている場合は、識別箇所1403に対応する識別結果1404を表示させる。例えば、図16に示す検査結果画面1600では、マッチング箇所1602の部分は、識別箇所を識別可能に表示しており、文字認識箇所1601には、識別結果1404も補足表示させる。
ステップS410、ステップS420、ステップS423乃至ステップS425の各ステップは、図15のステップS410、ステップS420、ステップS423乃至ステップS425と同様であるので、説明を省略する。
以上説明したように、本実施形態によれば、画像検査後の結果画像を表示する画像処理において、情報処理装置の負荷が高い場合には結果画像の表示を間引くが、ユーザにとって必要な結果画像であった場合には、間引かずに表示させることができる効果を奏する。
以上、実施形態例を詳述したが、本発明は、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。
また、本発明におけるプログラムは、各処理方法をコンピュータが実行可能(読み取り可能)なプログラムであり、本発明の記憶媒体は、各処理方法をコンピュータが実行可能なプログラムが記憶されている。
なお、本発明におけるプログラムは、各装置の処理方法ごとのプログラムであってもよい。
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読取り実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記憶した記録媒体は本発明を構成することになる。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。
また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。