以下、図面を参照しながら、本発明の実施の形態について説明する。図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、及びモジュール設定テーブル419も記憶されている。
ここで、本実施形態においては、図4のテーブル記憶部410が、例えば図2に示す外部メモリ116に構成される(一旦、RAM112に構成された後に外部メモリ116に構成される場合も含む)。また、図4のフロー作成部420、ソースコード変換部430、コンパイル部440、(検証)実行部450、データ保存部460及びデータ入力・出力部470が、例えば図2に示すCPU111と、ROM113或いは外部メモリ116に記憶されているプログラムと、から構成される。
図5を参照して、図4のテーブル記憶部410に記憶されるモジュール・ソースコードマスタテーブル411について説明する。図5のモジュール・ソースコードマスタテーブルT500は、モジュール・ソースコードマスタテーブル411の構成の一例を示す構成図である。
図5に示すように、モジュール・ソースコードマスタテーブルT500には、インデックス(Index)501ごとに、画像処理に係る処理アイテム502と、各処理アイテムに対応するソースコード503、またその処理アイテムを実現するためのモジュール(画像処理アイテム)に対する初期値504と処理主体505が関連付けられている。このソースコードは、ソースコード変換部430で処理対象のモジュールをソースコードに変換する際に用いられるものである。
次に、図5を参照して、図4のテーブル記憶部410に記憶される処理フロー・入出力パラメータテーブル412について説明する。図5に示す処理フロー・入出力パラメータテーブルT510は、図4に示す処理フロー・入出力パラメータテーブル412の構成の一例を示す構成図である。図5に示すように、処理フロー・入出力パラメータテーブルT510は、インデックス(Index)511ごとに、画像処理に係るモジュール513と、各モジュール513の処理順である順序512と、各モジュール513のフロー登録名514と、各モジュール513における入力パラメータ515及び出力パラメータ516が関連付けられている。入力パラメータ515は、各モジュールで使用する各種のデータが格納される画像バッファや記憶領域等を示す。出力パラメータ516は、各モジュールが実行された際の結果画像バッファや各種の処理に用いた閾値等を記憶する記憶領域を示す。次ステップ517は、次に処理されるべきステップのインデックス(Index)511を示す。なお、この次ステップ517は、複数のインデックス(Index)を持つこともある。また、分岐参照518は、モジュール513に「反復処理」モジュール、「条件分岐処理」モジュールなど、分岐が必要なモジュールを設定した際に、各条件(ノード)が次にどのステップを処理するかを指定する条件式テーブルを示す。さらに、処理主体519は、各モジュールにおいて処理をCPU111と、画像入力コントローラ115fのCPU(演算チップ)301のどちらで行うかを示す項目である。
なお、図5に示す処理フロー・入出力パラメータテーブルT510におけるインデックス(Index)511と、図5に示すモジュール・ソースコードマスタテーブルT500におけるインデックス(Index)501とは特に対応させていないが、相互に対応させて各テーブルを作成する形態であってもよい。なお、処理フロー・入出力パラメータテーブルT510において、インデックス(Index)511の3は反復処理の一例である。
ソースコードテーブル413は、処理フロー・入出力パラメータテーブル412に記憶されているモジュール513について、ソースコード変換部430でモジュール・ソースコードマスタテーブル411を用いてソースコードに変換し登録している、全てのモジュール或いは一部のモジュールにおけるソースコードを記憶する。
オブジェクトコードテーブル414は、ソースコードテーブル413に記憶されているソースコードをコンパイル部440で変換した、実行可能なモジュールであるオブジェクトコードを記憶する。プロジェクトファイルテーブル415は、画像処理に係る初期設定パラメータや、処理フローシーケンス、ソースコード、入出力パラメータ等を記憶する。また条件式テーブル416は、「条件分岐処理」モジュールが設定された際の、条件式等を記憶し、ノード処理フラグテーブル417は、「並列分岐処理」モジュールが設定された際の、呼び出し側のノード名等を記憶する。モジュール設定テーブル419は、各モジュールに設定されたパラメータや画像処理実行時に発生する値を記憶しておく。モジュール設定テーブル419は、モジュールごとに格納する情報が異なる。また、処理フロー・入出力パラメータテーブル412に含めてもよい。
続いて、図4のフロー作成部420、ソースコード変換部430、コンパイル部440、実行部450、データ保存部460、及び、データ入力・出力部470について説明する。
フロー作成部420は、モジュール・ソースコードマスタテーブル411に含まれているモジュールの処理シーケンスを管理する処理フロー・入出力パラメータテーブル412の作成等と、処理フロー描画領域(後述する図9の902)へのモジュールの描画を行う機能を有する。
ソースコード変換部430は、フロー作成部420により作成された処理フロー・入出力パラメータテーブル412に記憶されている各モジュールの処理データをモジュール・ソースコードマスタテーブル411と照合して、各モジュールをソースコードに変換し、ソースコードテーブル413に記憶する機能を有する。
なお、図5に示すテーブルのモジュールには、画像に対する処理だけでなく、画像を取得するための事前処理や、処理結果を出力するための事後処理を含む外部機器に対する処理などを含めても勿論構わない。例えば、カメラ140の撮像条件を設定する制御指令や、照明装置160を制御するための照明装置コントローラ150への制御指令、或いは、ステージの移動などを制御するための外部機器コントローラ170への制御指令、LAN上に接続されたPCにデータを送信する等の制御指令を行うものであってもよい。
コンパイル部440は、ソースコードテーブル413に記憶されているソースコードから実行可能なオブジェクトコードを生成し、生成したオブジェクトコードをオブジェクトコードテーブル414に記憶する機能を有する。
なお、コンパイル部440が行うコンパイルには、デバッグ・コンパイルとリリース・コンパイルの2つのタイプがある。ここで、本実施形態においては、処理フロー作成中には、ソースコードレベルでのステップ実行を可能とするデバッグ・コンパイルを行い、データ保存時には、オンラインで利用可能なファイルを生成するリリース・コンパイルを行う。この際、デバッグ・コンパイル及びリリース・コンパイルの両者は、同じ変換手法で生成されたソースコードを参照するものとする。
(検証)実行部450は、コンパイル部440により作成されたオブジェクトコードテーブル414に記憶されているオブジェクトコードを実行し、処理結果表示領域(後述する図9の906)と処理フロー・入出力パラメータテーブル412を更新する機能を有する。
データ保存部460は、例えば、RAM112にあるソースコードテーブル413、オブジェクトコードテーブル414及びプロジェクトファイルテーブル415を外部メモリ116に出力して、データの保存処理を行う。
データ入力・出力部470は、各モジュールで使用する入出力パラメータを管理する機能を有する。
次に、情報処理装置110によって実行される画像処理アプリケーションプログラム作成処理の処理手順について説明する。図6は、図1に示す情報処理装置110による画像処理プログラム作成処理の処理手順の一例を示すフローチャートである。本処理をCPU111に実行させるためのプログラムは外部メモリ116に記憶されており、本処理の実行要求を入力装置120より受け付けた場合に、CPU111は、当該プログラムをRAM112にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。
ステップS103において、情報処理装置110のCPU111は、例えば、入力装置120からの入力指示に基づいて、画像処理システム開発やシステム設定を行うためのメインメニューをディスプレイ装置130に表示する処理を行う。メインメニューは図7に示すようなものである。
図7は、画像処理システム開発画面のメインメニュー700の一例を示す構成図である。図7に示す画像処理システム開発画面のメインメニュー700には、ロジック(処理フロー)の新規作成、若しくは作成済みの処理フローの編集を行う「プロジェクト構築」メニュー701、「プロジェクト構築」メニュー701で作成した処理フローをオンライン検査モードで実行するための「オンライン検査」メニュー702、画像処理システム100において、カメラ140で画像を撮像する際の調整を行う「機器調整」メニュー703、「オンライン検査」メニュー702で読み出すプロジェクトの指定などを行う「システム設定」メニュー704、メインメニューを終了する「終了」メニュー705が設けられている。
図6の説明に戻る。ステップS103のメインメニュー表示処理を終えると、CPU111は処理をステップS104に進める。そして、情報処理装置110のCPU111は、ステップS103で表示された画像処理システム開発画面のメインメニュー700上の各メニュー項目に対して、入力装置120からの入力指示があったか否かを判断する。
ステップS104の判断の結果、入力装置120からメインメニュー700の各メニュー項目に対する入力指示がなかったと判断した場合には(ステップ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は、「プロジェクト構築処理」を行う。この「プロジェクト構築処理」の詳細については、図8を用いて後述する。そして、ステップS107の処理が終了すると、ステップS104に戻り、入力装置120から次の入力指示があるまで待機する。
一方、ステップS106の判断の結果、ステップS106で判定した処理内容が、「プロジェクト構築処理」ではないと判断した場合には(ステップS106/NO)、処理をステップS108に進める。
ステップS108では、情報処理装置110のCPU111は、ステップS105で判定した処理内容が、「オンライン検査処理」であるか否かを判断する。
ステップS108の判断の結果、ステップS105で判定した処理内容が、「オンライン検査処理」であると判断した場合には(ステップS108/YES)、CPU111は処理をステップS109に進める。
ステップS109に進むと、情報処理装置110のCPU111は、「オンライン検査処理」処理を行う。「オンライン検査処理」では、ステップS107の「プロジェクト構築処理」で構築された画像処理プログラムを実行する処理である。具体的には、「オンライン検査処理」が実行されると、情報処理装置110のCPU111は、カメラ140が検査対象181を撮像した画像データを受信し、(検証)実行部450において、コンパイル部440により作成されたオブジェクトコードテーブル414に記憶されているオブジェクトコードを前記受信した画像データに対して実行する。そして、実行結果(画像処理結果)を処理結果表示領域(後述する図9の906)に表示する。「オンライン検査処理」では、このように、ステップS107において実行された「プロジェクト構築処理」により生成された画像処理プログラムを用いて、画像処理を実行する。そして、ステップS109の処理が終了すると、ステップS104に戻り、入力装置120から次の入力指示があるまで待機する。
一方、ステップS108の判断の結果、ステップS106で判定した処理内容が、「オンライン検査処理」ではないと判断した場合には(ステップS108/NO)、CPU111は、処理をステップS110に進める。
ステップS110に進むと、情報処理装置110のCPU111は、ステップS105で判定した処理内容が、「機器調整処理」であるか否かを判断する。
ステップS110の判断の結果、ステップS105で判定した処理内容が、「機器調整処理」であると判定した場合には(ステップS110/YES)、CPU111は処理をステップS111に進める。
ステップS111では、情報処理装置110のCPU111は、「機器調整処理」を行う。「機器調整処理」では、情報処理装置110に接続された外部機器コントローラ170を通じてステージ180等の外部機器の調整を行う処理である。そして、ステップS111の処理が終了すると、ステップS104に戻り、入力装置120から次の入力指示があるまで待機する。
一方、ステップS110の判断の結果、ステップS105で判定した処理内容が、「機器調整画面表示処理」ではないと判断した場合には(ステップS110/NO)、CPU111は、処理をステップS112に進める。
ステップS112では、情報処理装置110のCPU111は、ステップS105で判定した処理内容が、「システム設定処理」であるか否かを判断する。
ステップS112の判断の結果、ステップS105で判定した処理内容が、「システム設定処理」であると判断した場合には(ステップS112/YES)、CPU111は処理をステップS113に進める。
ステップS113では、情報処理装置110のCPU111は、「システム設定処理」を行う。「システム設定処理」では、本プログラムの各種設定を行う処理である。そして、ステップS113の処理が終了すると、ステップS104に戻り、入力装置120から次の入力指示があるまで待機する。
一方、ステップS112の判断の結果、ステップS105で判定した処理内容が、「システム設定処理」ではないと判断した場合には(ステップS112/NO)、CPU111は、処理をステップS114に進める。
ステップS114では、情報処理装置110のCPU111は、ステップS105で判定した処理内容が、「終了処理」であるか否かを判断する。
ステップS114の判断の結果、ステップS105で判定した処理内容が、「終了処理」であると判断した場合には(ステップS114/YES)、本プログラムによる処理を終了する。
一方、ステップS114の判断の結果、ステップS106で判定した処理内容が、「終了処理」ではないと判断した場合には(ステップS114/NO)、処理をステップS104に進め、入力装置120から次の入力指示があるまで待機する。
次に、図8を参照して図6のステップS107の「プロジェクト構築処理」の詳細について説明する。図8は、情報処理装置110のCPU111によって行われる、「プロジェクト構築処理」の処理手順の一例を示すフローチャートである。本処理をCPU111に実行させるためのプログラムは外部メモリ116に記憶されており、本処理の実行要求を入力装置120より受け付けた場合に、CPU111は、当該プログラムをRAM112にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。
まず、ステップS201において、情報処理装置110のCPU111は、例えば、入力装置120からの入力指示に基づいて、図9に示す画像処理システムの開発を行うための画像処理プロジェクト開発画面900をディスプレイ装置130に表示する処理を行う。
図9は、画像処理プロジェクト開発画面900の一例を示す構成図である。図9に示す画像処理プロジェクト開発画面900には、利用可能な処理ユニット(即ち、「カメラ取込」等の画像処理に係る各モジュール)を表示する処理モジュール一覧901と、画像処理の実行順序(即ち、各モジュールの実行順序)をフローチャート形式で描画する処理フロー描画領域902と、各画像処理(即ち、各モジュールの処理)で実行した結果画像を表示する結果画像表示領域903と、ツールバー904や、画像処理プログラムの開発を終了する際に操作される不図示の閉じるボタン等も設けられている。また、図11に示す画像処理プロジェクト開発画面900には、マスター画像の設定を行うマスター設定ボタン905や、処理フロー描画領域902に表示された処理フローのうち、ユーザから選択されたモジュールの処理結果を表示する処理結果表示領域906、処理モジュール一覧901と処理結果表示領域906とを切り替えるための切り替えタブ907が設けられている。図9の画像処理プロジェクト開発画面900の例では、分岐処理によるフローを制御するモジュールも含んでいる。ここで、結果画像表示領域903は、処理フロー描画領域902の各モジュールの結果画像である。これは、プレビュー画像や縮小画像であってもよい。条件分岐処理の場合には、条件を満たしたノード(枝)の画像を表示し、条件を満たさないノードについては処理が行われないのでブラックアウトした画像を表示する。このとき、すべての処理フローの結果が結果画像表示領域903に収まらない場合は、水平・垂直方向のスクロールバーを用いて表示領域を変更することとしてもよい。以上が、画像処理プロジェクト開発画面の構成の一例の説明である。
図8の説明に戻る。ステップS201の処理が終了すると、CPU111は処理をステップS202に進める。ステップS202では、情報処理装置110のCPU111は、入力装置120からの入力指示に基づいて、ステップS201で表示された画像処理プロジェクト開発画面900を用いて新規に画像処理プログラムを開発するか否かを判断する。
ステップS202の判断の結果、新規に画像処理プログラムを開発しない場合、即ち既に作成している画像処理フローの編集を行う場合には(ステップS202/NO)、ステップS203に進む。
ステップS203に進むと、情報処理装置110のCPU111は、外部メモリ116に保存されているプロジェクトファイルテーブル415を読み出して、これをRAM112に記憶する。
ステップS203の処理が終了後、或いは、ステップS202で新規に画像処理プログラムを開発すると判断された場合には(ステップS202/YES)、CPU111は処理をステップS204に進める。
ステップS204では、情報処理装置110のCPU111は、入力装置120からの入力指示(具体的には、ステップS201で表示された画像処理プロジェクト開発画面900に対する入力指示)があったか否かを判断する。
ステップS204の判断の結果、入力装置120からの入力指示を受け付けていないと判断した場合には(ステップS204/NO)、入力装置120からの入力指示があるまで、ステップS204で待機する。一方、ステップS204の判断の結果、入力装置120からの入力指示を受け付けた(入力あり)と判断した場合には(ステップS204/YES)、処理をステップS205に進める。
ステップS205に進むと、情報処理装置110のCPU111は、入力装置120から受け付けた入力指示に基づいて、選択された処理内容の判定処理を行う。このステップS205で判定される処理内容としては、本例では、「新規追加処理」、「変更処理」、「移動処理」、「挿入処理」、「削除処理」、「実行処理」、「保存処理」である。なお、ここで挙げた処理内容は一例を示したものであり、その他の処理内容をステップS205で判定することも勿論可能である。
ここで、ステップS205の判定処理では、CPU111は、例えば、図9に示す画像処理プロジェクト開発画面900において以下の入力がなされることによって、上述した各処理を判定するようにしている。
まず、図9に示す処理モジュール一覧901からいずれかの処理アイテム(モジュール)が選択され、処理フロー描画領域902の処理フローシーケンスの最後尾にドラッグ&ドロップされると、情報処理装置110のCPU111は、モジュールの「新規追加処理」のイベントであると判定する。また、処理フロー描画領域902に既に登録されているモジュールがユーザからの操作によって指定され、後述する処理条件設定領域1201が表示されると、情報処理装置110のCPU111は、モジュールのパラメータの「変更処理」のイベントであると判定する。また、処理フロー描画領域902に既に登録されているモジュールが他のモジュールの間にドラッグ&ドロップされると、情報処理装置110のCPU111は、モジュールの「移動処理」のイベントであると判定する。また、図9に示す処理モジュール一覧901からモジュールが選択され、処理フロー描画領域902に既に登録されているモジュールの間にドラッグ&ドロップされると、情報処理装置110のCPU111は、モジュールの「挿入処理」のイベントであると判定する。また、処理フロー描画領域902に既に登録されているモジュールを選択し、削除キーが押下される、若しくはあるモジュールを指定して不図示のポップアップメニューを表示させ、削除メニュー項目が選択(クリック指示)されると、情報処理装置110のCPU111は、モジュールの「削除処理」のイベントであると判断する。また、不図示の「実行」が選択されると、情報処理装置110のCPU111は、処理フロー描画領域902に設定された処理フローの「実行処理」のイベントであると判定する。また、ツールバー904の「保存」が選択されると、情報処理装置110のCPU111は、処理フロー描画領域902に設定された処理フローの「保存処理」のイベントであると判定する。
なお、本実施形態ではこのようにして処理内容の判定を行うようにしているが、これは一例であり、例えばツールバー904に「新規追加」などの処理内容に応じたアイコン等の機能を設けてもよく、上述した形態に限定されるものではない。
続いて、ステップS206において、情報処理装置110のCPU111は、ステップS205で判定した処理内容が、モジュールの「新規追加処理」であるか否かを判断する。ステップS206の判断処理で、ステップS205で判定した処理内容が、モジュールの「新規追加処理」であると判断した場合には(ステップS206/YES)、CPU111は処理をステップS207に進める。
ステップS207では、情報処理装置110のCPU111は、選択されたモジュールの「新規追加処理」を行う。そして、ステップS207の処理が終了すると、ステップS204に戻り、入力装置120から次の入力指示があるまで待機する。
一方、ステップS206の判断処理、ステップS205で判定した処理内容が、モジュールの「新規追加処理」ではないと判断した場合には(ステップS206/NO)、CPU111は処理をステップS208に進める。
ステップS208では、情報処理装置110のCPU111は、ステップS205で判定した処理内容が、モジュールのパラメータの「変更処理」であるか否かを判断する。ステップS208の判断処理で、ステップS205で判定した処理内容が、モジュールのパラメータの「変更処理」であると判断した場合には(ステップS208/YES)、処理をステップS209に進める。
ステップS209では、情報処理装置110のCPU111は、選択されたモジュールのパラメータの「変更処理」を行う。このステップS209の変更処理の詳細については、図10を用いて後述する。そして、ステップS209の処理が終了すると、ステップS204に戻り、入力装置120から次の入力指示があるまで待機する。
一方、ステップS208の判断処理で、ステップS205で判定した処理内容が、モジュールのパラメータの「変更処理」ではないと判断した場合には(ステップS208/NO)、CPU111はステップS210に進める。ステップS210では、情報処理装置110のCPU111は、ステップS205で判定した処理内容が、モジュールの「移動処理」であるか否かを判断する。
ステップS210の判断処理で、ステップS205で判定した処理内容が、モジュールの「移動処理」であると判断した場合には(ステップS210/YES)、ステップS211に進む。
ステップS211では、情報処理装置110のCPU111は、選択されたモジュールの「移動処理」を行う。そして、ステップS211の処理が終了すると、ステップS204に戻り、入力装置120から次の入力指示があるまで待機する。
一方、ステップS210の判断処理で、ステップS205で判定した処理内容が、モジュールの「移動処理」ではないと判断した場合には(ステップS210/NO)、ステップS212に進む。ステップS212に進むと、情報処理装置110のCPU111は、ステップS205で判定した処理内容が、モジュールの「挿入処理」であるか否かを判断する。
ステップS212の判断処理で、ステップS205で判定した処理内容が、モジュールの「挿入処理」であると判断した場合には(ステップS212/YES)、処理をステップS213に進める。
ステップS213では、情報処理装置110のCPU111は、選択されたモジュールの「挿入処理」を行う。そして、ステップS213の処理が終了すると、ステップS204に戻り、入力装置120から次の入力指示があるまで待機する。
一方、ステップS212の判断処理で、ステップS205で判定した処理内容が、モジュールの「挿入処理」ではないと判断した場合には(ステップS212/NO)、CPU111は、処理をステップS214に進める。
ステップS214では、情報処理装置110のCPU111は、ステップS205で判定した処理内容が、モジュールの「削除処理」であるか否かを判断する。ステップS214の判断処理で、ステップS205で判定した処理内容が、モジュールの「削除処理」であると判断した場合には(ステップS214/YES)、処理をステップS215に進める。
ステップS215では、情報処理装置110のCPU111は、選択されたモジュールの「削除処理」を行う。そして、ステップS215の処理が終了すると、ステップS204に戻り、入力装置120から次の入力指示があるまで待機する。
一方、ステップS214の判断処理で、ステップS205で判定した処理内容が、モジュールの「挿入処理」ではないと判断した場合には(ステップS214/NO)、CPU111は、処理をステップS216に進める。
ステップS216では、情報処理装置110のCPU111は、ステップS205で判定した処理内容が、処理フローの「実行処理」であるか否かを判断する。ステップS216の判断処理で、ステップS205で判定した処理内容が、処理フローの「実行処理」であると判断した場合には(ステップS216/YES)、CPU111は、処理をステップS217に進める。
ステップS217では、情報処理装置110のCPU111は、処理フロー描画領域902に設定された処理フローの「実行処理」を行う。そして、ステップS217の処理が終了すると、ステップS204に戻り、入力装置120から次の入力指示があるまで待機する。
一方、ステップS216の判断処理で、ステップS205で判定した処理内容が、処理フローの「実行処理」ではないと判断した場合には(ステップS216/NO)、CPU111は、処理をステップS218に進める。
ステップS218では、情報処理装置110のCPU111は、ステップS205で判定した処理内容が、処理フローの「保存処理」であるか否かを判断する。ステップS218の判断処理で、ステップS205で判定した処理内容が、処理フローの「保存処理」であると判断した場合には(ステップS218/YES)、CPU111は、処理をステップS219に進める。
ステップS219では、情報処理装置110のCPU111は、画像処理プロジェクト開発画面900で設定された内容の「保存処理」を行う。そして、ステップS219の処理が終了すると、画像処理プロジェクト開発画面900を終了する。
一方、ステップS218の判断処理で、ステップS205で判定した処理内容が、処理フローの「保存処理」でないと判断した場合には(ステップS218/NO)、ステップS204に戻り、入力装置120から入力指示があるまで待機する。
次に、図10を参照して、図8のステップS209に示す変更処理の詳細な処理について説明する。図10は、図8のステップS209における「変更処理」の詳細な手順の一例を示すフローチャートである。本処理をCPU111に実行させるためのプログラムは外部メモリ116に記憶されており、本処理の実行要求を入力装置120より受け付けた場合に、CPU111は、当該プログラムをRAM112にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。
図13のステップS301において、情報処理装置110のCPU111は、既に処理フローとして登録されているモジュールを特定する処理を行う(画像処理アイテム選択受付手段)。開発者(ユーザ)は、図9に示す画像処理プロジェクト開発画面900中の処理フロー描画領域902に表示されているモジュールに対してクリック指示を行うことで処理対処とするモジュールの指定入力を行うことになるので、CPU111は、その指定入力に従ってモジュールを特定することになる。
ステップS302では、情報処理装置110のCPU111は、ステップS301で特定したモジュールの処理条件設定領域1201をディスプレイ装置130に表示する。処理条件設定領域1201は、例えば図12のオフセット設定画面1200に備えられた処理条件設定領域1201のように入力ボタン1202、オフセットボタン1203、座標ボタン1204、処理領域ボタン1205、処理条件設定ボタン1206等から構成される。
その後、処理をステップS303に進め、ステップS302で表示した処理条件設定領域1201で、入力装置120からの入力があったか否かを判断する。ステップS303の判断処理で、ユーザからの入力がなかったと判断した場合(ステップS303/NO)には、本変更処理を終了する。一方、ステップS303でユーザからの入力があったと判断した場合(ステップS303/YES)、CPU111は、処理をステップS304に進める。
ステップS304では、情報処理装置110のCPU111は、画像処理プロジェクト開発画面900中のマスター設定ボタン905が押下されたか否かを判定する。押下されたと判定した場合(ステップS304/YES)、CPU111は、処理をステップS305に進める。
ステップS305では、情報処理装置110のCPU111は、後述するステップS307の処理条件設定において画像の処理領域を決定する際の基準となる画像を登録する。不図示のマスター設定画面を表示し、マスター画像となる画像データを登録し、RAM112に記憶しておく。マスター画像の登録をしておくことで、画像処理が実行された後に処理領域を調整する場合でも、基準となる画像データに対して処理領域の調整を行える。つまり、マスター画像以外の画像データを取り込んで画像処理を行うと、マスター画像とは異なる位置に検査対象181が撮像されている場合があり、当該異なる位置に撮像された画像を用いて処理領域の調整を行ってしまうと、適切な位置で画像処理がなされなくなる。よって、このように基準となるマスター画像を登録しておくことで、後述するステップS307における処理条件設定を正確に行える。そして、ステップS305の処理が終了すると、処理をステップS316に進める。
一方、ステップS304の判断処理で、マスター設定ボタン905が押下されたと判断できなかった場合には(ステップS304/NO)、処理をステップS306に進める。
ステップS306では、情報処理装置110のCPU111は、処理条件設定ボタン1206が押下されたか否かを判定する。処理条件設定ボタン1206が押下されたと判定した場合には、処理をステップS307に進める。
ステップS307では、情報処理装置110のCPU111は、ステップS301において特定されたモジュールの処理条件を設定する。処理条件の設定では、従来と同様、ユーザからの手入力により処理領域の設定や各種パラメータの設定を行う。本実施例では、ステップS301において選択されたモジュールの処理領域を設定する。処理領域の設定は、ステップS305において登録されたマスター画像をRAM112から読み出し、表示させ、当該マスター画像上で矩形選択することによって、処理領域を決定してもよいし、他の方法でもよい。座標を直接入力することで、処理領域の設定を行ってもよい。また、画像に対する処理以外のパラメータ設定も行う。例えばパターンマッチングを行うモジュールの場合であれば、パターンマッチング元の画像の登録、分岐を行うモジュールであれば分岐の条件を登録する。処理条件の設定項目はこれらに限らないし、必要に応じて設定項目を変更してもよい。
設定された処理条件は、モジュール設定テーブル419に登録される。ステップS307では、情報処理装置110のCPU111は、ステップS301において特定されたモジュールに対応するモジュール設定テーブル419を読み出し、設定が必要な項目をディスプレイ装置130に表示する。また、設定された処理条件はモジュール設定テーブル419に記憶される。そして、ステップS307の処理が終了すると、処理をステップS316に進める。
一方、ステップS306の判断処理で、処理条件設定ボタン1206が押下されたと判断できなかった場合には(ステップS306/NO)、処理をステップS308に進める。
ステップS308では、情報処理装置110のCPU111は、入力ボタン1202が押下されたか否かを判定する。入力ボタン1202が押下されたと判定した場合には、処理をステップS309に進める。
ステップS309では、情報処理装置110のCPU111は、ステップS301において特定されたモジュールで処理を行う画像の出力元モジュールを設定する。通常であれば、処理フロー描画領域902において構築された処理フローの順に画像処理がなされるが、ステップS301において特定されたモジュールの直前のモジュールから出力される画像を利用せずに、他のモジュールから出力された画像を利用して画像処理を行いたい場合がある。そのために、このように画像の出力元であるモジュールを指定している。そして、ステップS309の処理が終了すると、処理をステップS316に進める。
一方、ステップS308の判断処理で、入力ボタン1202が押下されたと判断できなかった場合には(ステップS308/NO)、処理をステップS310に進める。
ステップS310では、情報処理装置110のCPU111は、オフセットボタン1203が押下されたか否かを判定する。オフセットボタン1203が押下されたと判定した場合には、処理をステップS311に進める。
ステップS311では、情報処理装置110のCPU111は、ステップS301において特定されたモジュールに対してオフセット設定処理を行う。このステップS311のオフセット設定処理の詳細については、図11を用いて後述する。そして、ステップS311の処理が終了すると、処理をステップS316に進める。
一方、ステップS310の判断処理で、オフセットボタン1203が押下されたと判断できなかった場合には(ステップS310/NO)、処理をステップS312に進める。
ステップS312では、情報処理装置110のCPU111は、座標ボタン1204が押下されたか否かを判定する。座標ボタン1204が押下されたと判定した場合には、処理をステップS313に進める。
ステップS313では、情報処理装置110のCPU111は、ステップS301において特定されたモジュールに対して座標制御設定処理を行う。このステップS313の座標制御設定処理の詳細については、図15を用いて後述する。そして、ステップS313の処理が終了すると、処理をステップS316に進める。
一方、ステップS312の判断処理で、座標ボタン1204が押下されたと判断できなかった場合には(ステップS312/NO)、処理をステップS314に進める。
ステップS314では、情報処理装置110のCPU111は、処理領域ボタン1205が押下されたか否かを判定する。処理領域ボタン1205が押下されたと判定した場合には、処理をステップS315に進める。
ステップS315では、情報処理装置110のCPU111は、ステップS301において特定されたモジュールに対して処理領域設定処理を行う。このステップS315の処理領域設定処理の詳細については、図19を用いて後述する。そして、ステップS315の処理が終了すると、処理をステップS316に進める。
一方、ステップS314の判断処理で、処理領域ボタン1205が押下されたと判断できなかった場合には(ステップS314/NO)、処理をステップS316に進める。
ステップS316では、CPU111は、処理フロー・入出力パラメータテーブルを更新し、RAM112に記憶する。
続いて、ステップS317では、CPU111は、処理フロー・入出力パラメータテーブルの情報を元に、ソースコードに変換し、ソースコードテーブル413に記憶する。以上で、変更処理が終了する。
次に、図11を参照して、図10のステップS311に示すオフセット設定処理の詳細な処理について説明する。図11は、図10のステップS311におけるオフセット設定処理の詳細な手順の一例を示すフローチャートである。本処理をCPU111に実行させるためのプログラムは外部メモリ116に記憶されており、本処理の実行要求を入力装置120より受け付けた場合に、CPU111は、当該プログラムをRAM112にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。
まずは、本実施例におけるオフセット処理の説明を行う。例えば、ステップS307において設定されたパターンマッチング箇所と、画像処理実行時のパターンマッチング箇所とを比較して、パターンマッチングした箇所が設定時から画像処理実行時で移動した分だけ、二値化の処理領域も移動したい場合がある。図14は、ステップS307において処理条件の設定中であるマスター画像1400と、画像処理実行後の処理結果画像1410である。処理条件設定中のマスター画像1400において、パターンマッチング対象として設定された中心座標1401は「(X座標,Y座標)=(170,200)」である。また、二値化の処理領域として設定した処理領域1402は「(左上X座標,左上Y座標),(右下X座標,右下Y座標)=(90,90),(250,120)」である。しかし、これらの設定された座標に検査対象181が撮像されていることは少ない。あくまでマスター画像1400を元にして処理領域の設定を行っているので、実際に撮像された場合に検査対象181が同じ位置に撮像されているとは限らない。つまり、パターンマッチングでマッチングした座標を基準に、二値化の処理領域を移動しないと、無駄な領域に対して二値化処理を行うこととなってしまう。
よって、配置されたモジュールの処理領域を、当該モジュールよりも前に配置されたモジュールの処理結果に応じて移動させる必要が生じる。このように、前に配置されたモジュールの処理結果に応じて、処理領域を移動させる処理がオフセット処理である。本実施例では、図14に示す通り、パターンマッチングされた中心座標1401が、画像処理実行時には処理条件設定時から(X座標,Y座標)が(−50,−50)移動しているため、二値化を行う領域も(X座標,Y座標)を(−50,−50)移動するオフセット処理が必要である。この場合に、移動すべき量を取得すべく、二値化モジュールが位置補正のモジュールを選択する処理について以下説明する。
本実施例の前提として、「パターンマッチング」「位置補正(位置補正アイテム)」「二値化」という順で構築された処理フローを元に説明する。よって、図13に示す処理フロー・入出力パラメータテーブルT510は、これら3つのモジュールを配置した場合の情報がそれぞれ格納されている。また、各モジュールのモジュール設定テーブルには、ステップS307の処理条件設定処理において設定されたパラメータが格納されている。
具体的には、パターンマッチングモジュール設定テーブルT1310は、パターンマッチングモジュールのIndex511とモジュール513をIndex1311とモジュール1312にそれぞれ格納する。パターンマッチング元となる画像であって、ステップS307の処理条件設定処理において設定されたパターンマッチング元の画像を参照マッチング画像1313に格納する。これはパターンマッチング元の画像に対するURLでもよいし、バイナリデータとして格納してもよい。また、パターンマッチング元の画像の中心座標1401を設定中心座標1314に格納する。移動量1315は、画像処理実行時のパターンマッチングした領域の中心座標1411が、設定中心座標1314に格納された座標と比較して、移動した分の数値を格納する。
位置補正モジュール設定テーブルT1320は、位置補正モジュールのIndex511とモジュール513をIndex1321とモジュール1322にそれぞれ格納する。ステップS307の処理条件設定処理において設定された位置補正の基準となるモジュールのIndex511を参照元モジュールIndex1323に格納する。本実施例の場合には、パターンマッチングのIndex511を格納するため、「1」が格納される。更に、参照元モジュールIndex1323に格納されたIndex511が示すモジュールの位置補正の参照元を位置補正参照元1324に格納する。この場合、移動量1315のX座標とY座標を参照する設定となっている。
二値化モジュール設定テーブルT1330は、二値化モジュールのIndex511とモジュール513をIndex1321とモジュール1322にそれぞれ格納する。ステップS307の処理条件設定処理において設定された処理領域1402を設定処理領域1333に格納する。更に、オフセット設定がされた場合には、オフセット対象であるモジュールのIndex511をオフセットIndex1334(画像処理アイテム参照情報)に格納する。画像処理が実行された場合には、実処理領域1335に実際の処理領域1412の情報を格納する。以上の各モジュールのテーブル構成は一例であり、他の項目が含まれてもよい。
まず、ステップS401では、情報処理装置110のCPU111は、処理フロー描画領域902に配置されたモジュールのうち、オフセットを行うための値を出力するモジュール(以下、オフセット設定モジュール)を抽出する。オフセット設定モジュールは、本実施例では「位置補正」モジュールであるが、これに限らない。「位置補正」モジュールは、図12の処理フロー描画領域902に示す通りである。
ステップS402では、情報処理装置110のCPU111は、ステップS401においてオフセット設定モジュールが存在したか否かを判定する。本実施例では、ステップS401において、「位置補正」モジュールが存在したか否かを判定する。オフセット設定モジュールが存在した場合には、処理をステップS403に進める。一方、オフセット設定モジュールが存在しない場合には、オフセット設定処理を終了する。
ステップS403では、情報処理装置110のCPU111は、ステップS401において抽出されたオフセット設定モジュールをディスプレイ装置130に一覧表示する。具体的には、ステップS401において抽出されたオフセット設定モジュールを、図12に示すようにオフセット設定モジュール一覧1207として表示する。オフセット設定モジュールは一覧表示でなくともよく、選択できればよい。
ステップS404では、情報処理装置110のCPU111は、ステップS403において表示されたオフセット設定モジュールのうち、いずれかがユーザによって選択されたか否かを判定する。選択されたと判定された場合には、処理をステップS405に進める。一方、選択されなかった場合には、選択されるまでそのまま待機する(参照先選択受付手段)。
ステップS405では、情報処理装置110のCPU111は、ステップS404において選択されたオフセット設定モジュールをオフセット対象として設定する(参照先設定手段)。具体的には、例えば図12に示すように処理フロー描画領域902に「パターンマッチング」「位置補正」「二値化」が配置されている場合、「二値化」モジュールが選択された状態で、オフセットボタン1203の押下を受け付けると、オフセット設定モジュール一覧1207が表示される。本実施例では、オフセット設定モジュールとして「位置補正」モジュールが抽出されるので、この「位置補正」モジュールの選択を受け付けると、「二値化」モジュールのオフセット対象として「位置補正」モジュールが登録される。オフセットは、図13に示す各モジュールのモジュール設定テーブルのうち、「二値化」モジュールの二値化モジュール設定テーブルT1330のオフセットIndex1334に、「位置補正」モジュールのIndex1321を格納することにより設定を行う。これにより複雑な設定をすることなく、オフセット設定モジュールを選択するだけで、容易にオフセット処理を行うフローを構築することができる。
ステップS406では、情報処理装置110のCPU111は、ステップS405において設定されたオフセットの設定を確認すべく、処理フロー描画領域902に配置された一連のモジュールを実行する(画像処理実行手段)。これにより、正しく動作するかどうかをユーザに確認させることができる。本実施例においては、ステップS406において処理の実行がなされると、まず図13に示す処理フロー・入出力パラメータテーブルT510を参照する。図13に示す処理フロー・入出力パラメータテーブルT510の順序512の「1」には「パターンマッチング」モジュールが格納されているので、パターンマッチングモジュール設定テーブルT1310を参照して、パターンマッチング処理を行う。入力画像のうち、参照マッチング画像1313と一致する領域があるかどうかを検査し、あった場合にはその領域の中心座標を取得する。当該取得した中心座標と設定中心座標1314との差を移動量1315に格納する。
続いて、図13に示す処理フロー・入出力パラメータテーブルT510の順序512の「2」には「位置補正」モジュールが格納されているので、位置補正モジュール設定テーブルT1320を参照して、位置補正処理を行う。位置補正モジュールでは、参照元モジュールIndex1323に格納されたIndexが示すモジュールの位置補正参照元1324を取得して、出力する。この場合、Indexの「1」が示すのは「パターンマッチング」モジュールであるので、「パターンマッチング」モジュールの「移動量の(X座標,Y座標)」を取得して出力する。つまり、移動量1315の「(−50,−50)」を出力する。
最後に、図13に示す処理フロー・入出力パラメータテーブルT510の順序512の「3」には「二値化」モジュールが格納されているので、二値化モジュール設定テーブルT1330を参照して、二値化処理を行う。「二値化」モジュールでは、オフセットの設定を行っているので、オフセットIndex1334に格納されたIndexが示すモジュールから処理領域の移動量を取得する。つまり、Indexの「2」が示すのは、「位置補正」モジュールであるので、「位置補正」モジュールが出力する値を受け取り、処理領域の移動量とする。「二値化」モジュールの設定処理領域1333が示す領域から、受け取った値の(−50,−50)だけ設定処理領域1333の(X座標,Y座標)を移動して二値化の処理を行う。よって、処理領域1412の領域に対して二値化処理がなされる。
以上の処理により、オフセット設定モジュール一覧を表示し、表示されたオフセット設定モジュールうち、いずれかの選択を受け付けるだけで、オフセット処理の設定が可能となる。従来であれば、「パターンマッチング」モジュール内においてオフセットの設定をユーザによる手入力で複雑なパラメータ入力を行う必要があった。しかし、以上の処理によりオフセット設定モジュールを選択するだけで、容易にオフセット処理の設定を行うことができる。
次に、図15を参照して、図10のステップS313に示す座標制御設定処理の詳細な処理について説明する。図15は、図10のステップS313における座標制御設定処理の詳細な手順の一例を示すフローチャートである。本処理をCPU111に実行させるためのプログラムは外部メモリ116に記憶されており、本処理の実行要求を入力装置120より受け付けた場合に、CPU111は、当該プログラムをRAM112にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。
まずは、本実施例における座標制御設定処理の説明を行う。例えば、パターンマッチングにより検出した領域すべてに対して二値化処理を行いたい場合がある。パターンマッチングで検出する領域は1箇所とは限らず、複数存在する場合がある。図18に示すようにパターンマッチングで検出した領域が12個あった場合に、これらすべての領域に対して二値化処理を行う際に、二値化を行う領域を移動させて、12個すべてに対して二値化処理を行う。つまり、座標制御の設定を行い、「1」から「12」までの領域に対して1つずつ順番に二値化処理を行っていく。この際に座標制御設定処理を行う。以下、このような座標制御設定処理について説明する。
本実施例の前提として、図16の処理フロー描画領域902に示す「パターンマッチング」「座標制御(座標制御アイテム)」「二値化」「分岐」という順で構築された処理フローを元に説明する。よって、図17に示す処理フロー・入出力パラメータテーブルT510は、これら4つのモジュールを配置した場合の情報がそれぞれ格納されている。また、各モジュールのモジュール設定テーブルには、ステップS307の処理条件設定処理において設定されたパラメータが格納されている。
具体的には、パターンマッチングモジュール設定テーブルT1710は、パターンマッチングモジュールのIndex511とモジュール513をIndex1711とモジュール1712にそれぞれ格納する。パターンマッチング元となる画像であって、ステップS307の処理条件設定処理において設定されたパターンマッチング元の画像を参照マッチング画像1713に格納する。これはパターンマッチング元の画像に対するURLでもよいし、バイナリデータとして格納してもよい。また、パターンマッチングにより検出した領域の中心座標を中心座標1714に格納する。中心座標1714に格納される中心座標は、複数あってもよい。
座標制御モジュール設定テーブルT1720は、座標制御モジュールのIndex511とモジュール513をIndex1721とモジュール1722にそれぞれ格納する。ステップS307の処理条件設定処理において設定された座標制御の基準となるモジュールのIndex511を参照元モジュールIndex1723に格納する。本実施例の場合には、パターンマッチングのIndex511を格納するため、「1」が格納される。更に、参照元モジュールIndex1723に格納されたIndex511が示すモジュールの座標制御の参照元を座標制御参照元1724に格納する。この場合、中心座標1714のX座標とY座標を参照する設定となっている。
二値化モジュール設定テーブルT1730は、二値化モジュールのIndex511とモジュール513をIndex1731とモジュール1732にそれぞれ格納する。ステップS307の処理条件設定処理において設定された処理領域の大きさを設定処理領域1733に格納する。本実施例では、設定処理領域1733には「(左上X座標,左上Y座標),(右下X座標,右下Y座標)=(0,0)(75,75)」が格納されている。つまり、処理領域の大きさは「矩形で縦75 横75」の大きさを示している。中心座標1714の箇所において、この設定処理領域1733で設定された処理領域の大きさ分だけ二値化を行う。更に、後述するステップS505において座標制御設定がされた場合には、座標制御を行うモジュール(以下、座標制御モジュール)のIndex511を座標制御Index1734(画像処理アイテム参照情報)に格納する。
分岐モジュール設定テーブルT1740は、分岐モジュールのIndex511とモジュール513をIndex1741とモジュール1742にそれぞれ格納する。ステップS307の処理条件設定処理において設定された分岐の終了条件を分岐終了条件1743に格納し、分岐終了条件1743を満たす場合の次ステップを真の場合のIndex1744に格納し、分岐終了条件1743を満たさない場合の次ステップを偽の場合のIndex1745に格納する。以上の各モジュールのテーブル構成は一例であり、他の項目が含まれてもよい。
ステップS501では、情報処理装置110のCPU111は、処理フロー描画領域902に配置されたモジュールのうち、座標制御モジュールを抽出する。座標制御モジュールは、本実施例では「座標制御」モジュールであるが、これに限らない。「座標制御」モジュールは、図16の処理フロー描画領域902に示す通りである。
ステップS502では、情報処理装置110のCPU111は、ステップS501において座標制御モジュールが存在したか否かを判定する。本実施例では、ステップS501において、「座標制御」モジュールが存在したか否かを判定する。座標制御モジュールが存在した場合には、処理をステップS503に進める。一方、座標制御モジュールが存在しない場合には、座標制御設定処理を終了する。
ステップS503では、情報処理装置110のCPU111は、ステップS501において抽出された座標制御モジュールをディスプレイ装置130に一覧表示する。具体的には、ステップS501において抽出された座標制御モジュールを、図16に示すように座標制御設定モジュール一覧1601として表示する。座標制御モジュールは一覧表示でなくともよく、選択できればよい。
ステップS504では、情報処理装置110のCPU111は、ステップS503において表示された座標制御モジュールのうち、いずれかがユーザによって選択されたか否かを判定する。選択されたと判定された場合には、処理をステップS505に進める。一方、選択されなかった場合には、選択されるまでそのまま待機する(参照先選択受付手段)。
ステップS505では、情報処理装置110のCPU111は、ステップS504において選択された座標制御モジュールを座標制御対象として設定する(参照先設定手段)。具体的には、例えば図16に示すように処理フロー描画領域902に「パターンマッチング」「座標制御」「二値化」「分岐(YES/STOPへ,NO/座標制御へ)」が配置されている場合、「二値化」モジュールが選択された状態で、座標ボタン1204の押下を受け付けると、座標制御設定モジュール一覧1601が表示される。本実施例では、座標制御設定モジュールとして「座標制御」モジュールが抽出されるので、この「座標制御」モジュールの選択を受け付けると、「二値化」モジュールの座標制御対象として「座標制御」モジュールが登録される。座標制御設定は、図17に示す各モジュールのモジュール設定テーブルのうち、「二値化」モジュールの二値化モジュール設定テーブルT1730の座標制御Index1734に、「座標制御」モジュールのIndex1721を格納することにより設定を行う。これにより複雑な設定をすることなく、座標制御設定モジュールを選択するだけで、容易に座標制御処理を行うフローを構築することができる。
ステップS506では、情報処理装置110のCPU111は、ステップS505において設定された座標制御の設定を確認すべく、処理フロー描画領域902に配置された一連のモジュールを実行する(画像処理実行手段)。これにより、正しく動作するかどうかをユーザに確認させることができる。本実施例においては、ステップS506において処理の実行がなされると、まず図17に示す処理フロー・入出力パラメータテーブルT510を参照する。図17に示す処理フロー・入出力パラメータテーブルT510の順序512の「1」には「パターンマッチング」モジュールが格納されているので、パターンマッチングモジュール設定テーブルT1710を参照して、パターンマッチング処理を行う。入力画像のうち、参照マッチング画像1713と一致する領域があるかどうかを検査し、あった場合にはその領域の中心座標を取得する。当該取得した中心座標を中心座標1714に格納する。中心座標を複数取得した場合には、中心座標1714に取得した分だけ格納する。
続いて、図17に示す処理フロー・入出力パラメータテーブルT510の順序512の「2」には「座標制御」モジュールが格納されているので、座標制御モジュール設定テーブルT1720を参照して、座標制御処理を行う。座標制御モジュールでは、参照元モジュールIndex1723に格納されたIndexが示すモジュールの座標制御参照元1724を取得して、出力する。この場合、Indexの「1」が示すのは「パターンマッチング」モジュールであるので、「パターンマッチング」モジュールの「中心座標の(X座標,Y座標)」を1つ取得して出力する。つまり、中心座標1714に格納された中心座標のうち1つだけを取得して出力する。例えば、先頭に格納されている「(50,50)」を出力する。
次に、図17に示す処理フロー・入出力パラメータテーブルT510の順序512の「3」には「二値化」モジュールが格納されているので、二値化モジュール設定テーブルT1730を参照して、二値化処理を行う。「二値化」モジュールでは、座標制御の設定を行っているので、座標制御Index1734に格納されたIndexが示すモジュールから二値化を行う領域の中心座標を取得する。つまり、Indexの「2」が示すのは、「座標制御」モジュールであるので、「座標制御」モジュールが出力する値(本実施例では(50,50))を受け取り、処理領域の中心座標とする。そして、受け取った中心座標を中心として、「二値化」モジュールの設定処理領域1733が示す範囲に対して二値化の処理を行う。「(X座標,Y座標)=(50,50)」を中心座標とする領域で、「矩形で縦75 横75」の大きさで二値化する。具体的には、処理領域1801の領域に対して二値化処理がなされる。
次に、図17に示す処理フロー・入出力パラメータテーブルT510の順序512の「4」には「分岐」モジュールが格納されているので、分岐モジュール設定テーブルT1740を参照して、分岐処理を行う。「分岐」モジュールでは、分岐終了条件1743に格納された終了条件を参照し、終了条件に合致しているか否かを判定する。終了条件に合致している場合には、真の場合のIndex1744を参照して処理を進め、終了条件に合致していない場合には、偽の場合のIndex1745を参照して処理を進める。尚、「NULL」が格納されていた場合には処理を終了する。本実施例では、分岐終了条件1743は「パターンマッチングの検出個数がすべて終了」であるので、「パターンマッチングの検出個数がすべて終了」した場合には処理を終了し、「パターンマッチングの検出個数がすべて終了」していない場合には、「座標制御」モジュールに処理を戻す。つまり、本実施例では、図18に示す通り、パターンマッチングで検出された個数は12個である。この12個すべての中心座標を中心として、「二値化」モジュールで設定された大きさに二値化するまで処理を継続する。処理する順番は問わない。「座標制御」モジュールは未処理の中心座標1714を取得し、出力する。
以上の処理により、座標制御モジュール一覧を表示し、表示された座標制御モジュールのうち、いずれかの選択を受け付けるだけで、座標制御処理の設定が可能となる。
次に、図19を参照して、図10のステップS315に示す処理領域設定処理の詳細な処理について説明する。図19は、図10のステップS315における処理領域設定処理の詳細な手順の一例を示すフローチャートである。本処理をCPU111に実行させるためのプログラムは外部メモリ116に記憶されており、本処理の実行要求を入力装置120より受け付けた場合に、CPU111は、当該プログラムをRAM112にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。
まずは、本実施例における処理領域設定処理の説明を行う。例えば、複数のモジュールで処理する領域(パラメータ)をすべて同一の領域としたい場合がある。例えば、「二値化」「輝度反転」という2つのモジュールから構築されていた場合に、「二値化」モジュールで設定した処理領域と同じ処理領域で輝度反転を行いたいことがある。図22は、同一の領域2201に二値化と輝度反転を行った処理結果画像である。このように、同じ領域に対して複数のモジュールが処理を行う場合があるが、各モジュールの処理領域の設定を行う場合には、従来ユーザが処理領域の座標値を各モジュールに対して一つ一つ入力していく必要があった。前述した「二値化」「輝度反転」では、「二値化」モジュールに処理領域Aの座標値を入力し、その後同じ処理領域Aの座標値を「輝度反転」モジュールに入力する。しかしながら、これでは誤入力を招きやすく、モジュールが多ければ多いほどユーザによる負荷が非常に高い。処理領域を変更する場合には、同じ処理領域を設定していたモジュールを探し、一つ一つ修正する必要がある。よって、後に配置された「輝度反転」モジュールの処理領域を設定する場合には、前に配置された「二値化」モジュールを選択するだけで、「二値化」モジュールで設定された処理領域を元に輝度反転を行う。これにより、「二値化」モジュールの処理領域を変更するだけで、「二値化」モジュールの処理領域を利用する設定がなされたモジュールすべての処理領域が変更でき、ユーザの負荷を大幅に軽減することができる。以下、このような処理領域設定処理について説明する。
本実施例の前提として、図20の処理フロー描画領域902に示す「二値化」「輝度反転」という順で構築された処理フローを元に説明する。よって、図21に示す処理フロー・入出力パラメータテーブルT510は、これら2つのモジュールを配置した場合の情報がそれぞれ格納されている。また、各モジュールのモジュール設定テーブルには、ステップS307の処理条件設定処理において設定されたパラメータが格納されている。
具体的には、二値化モジュール設定テーブルT2120は、二値化モジュールのIndex511とモジュール513をIndex2121とモジュール2122にそれぞれ格納する。ステップS307の処理条件設定処理において設定された処理領域の大きさを設定処理領域2123に格納する。本実施例では、設定処理領域2123には「(左上X座標,左上Y座標),(右下X座標,右下Y座標)=(50,200)(450,250)」が格納されている。
輝度反転モジュール設定テーブルT2130は、輝度反転モジュールのIndex511とモジュール513をIndex2131とモジュール2132にそれぞれ格納する。後述するステップS605において処理領域の引継設定(参照設定)がなされた場合には、処理領域の引き継ぎ元(参照元)であるモジュール(以下、処理領域設定モジュール)のIndex511を処理領域引継Index2133に格納する。
ステップS601では、情報処理装置110のCPU111は、処理フロー描画領域902に配置されたモジュールのうち、処理領域設定モジュールを抽出する。処理領域設定モジュールは、ステップS307において処理領域の設定がなされているモジュールを抽出する。本実施例においては、設定処理領域2123に処理領域の座標が格納された「二値化」モジュールが処理領域設定モジュールとして抽出される。また、抽出するモジュールはステップS301において特定されたモジュールよりも上流(上位)に配置されたモジュールを抽出する。具体的には、処理フロー・入出力パラメータテーブルT510の順序512を元に、特定されたモジュールよりも順序512に格納された値が小さいモジュールを抽出する。尚、本実施例においては上記の通り、特定されたモジュールよりも上流に配置されたモジュールを抽出するが、これに限らない。特定されたモジュールよりも下流に配置されたモジュールを抽出してもよい。
ステップS602では、情報処理装置110のCPU111は、ステップS601において処理領域設定モジュールが存在したか否かを判定する。本実施例では、ステップS601において、処理領域の設定がなされているモジュールが存在したか否かを判定する。処理領域の設定がなされているモジュールが存在した場合には、処理をステップS603に進める。一方、処理領域の設定がなされているモジュールが存在しない場合には、処理領域設定処理を終了する。
ステップS603では、情報処理装置110のCPU111は、ステップS601において抽出された処理領域設定モジュールをディスプレイ装置130に一覧表示する。具体的には、ステップS601において抽出された処理領域設定モジュールを、図20に示すように処理領域設定モジュール一覧2001として表示する。処理領域設定モジュールは一覧表示でなくともよく、選択できればよい。また、本実施例では処理領域設定モジュール自体の選択を受け付けるが、処理領域設定モジュールに設定されたパラメータ名等を表示することにより選択を受け付けてもよい。つまり、本実施例においては、後述するステップS605において、パラメータの参照先としてステップS604で選択された処理領域設定モジュールを参照先に設定するが、モジュール内のある特定のパラメータを参照先として設定してもよい。こうすることで、より細かな参照先設定が可能となる。
ステップS604では、情報処理装置110のCPU111は、ステップS603において表示された処理領域設定モジュールのうち、いずれかがユーザによって選択されたか否かを判定する。選択されたと判定された場合には、処理をステップS605に進める。一方、選択されなかった場合には、選択されるまでそのまま待機する(参照先選択受付手段)。
ステップS605では、情報処理装置110のCPU111は、ステップS604において選択された処理領域設定モジュールを処理領域の引継元(参照先)として設定する(参照先設定手段)。具体的には、例えば図20に示すように処理フロー描画領域902に「二値化」「輝度反転」が配置されている場合、「輝度反転」が選択された状態で、処理領域ボタン1205の押下を受け付けると、処理領域設定モジュール一覧2001が表示される。本実施例では、処理領域設定モジュールとして、「二値化」モジュールが抽出されるので、この「二値化」モジュールの選択を受け付けると、「輝度反転」モジュールの処理領域引継元として、「二値化」モジュールが登録される。処理領域設定は、図21に示す各モジュールのモジュール設定テーブルのうち、「輝度反転」モジュールの輝度反転モジュール設定テーブルT2130の処理領域引継Index2133に、「二値化」モジュールのIndex2121を格納することにより設定を行う。これにより、複雑な設定をすることなく、処理領域を引き継ぎたいモジュールを選択するだけで、容易に処理領域の設定ができる。
ステップS606では、情報処理装置110のCPU111は、ステップS605において設定された処理領域の設定を確認すべく、処理フロー描画領域902に配置された一連のモジュールを実行する(画像処理実行手段)。これにより、正しく動作するかどうかをユーザに確認させることができる。本実施例においては、ステップS606において処理の実行がなされると、まず図21に示す処理フロー・入出力パラメータテーブルT510を参照する。図21に示す処理フロー・入出力パラメータテーブルT510の順序512の「1」には「二値化」モジュールが格納されているので、二値化モジュール設定テーブルT2120を参照して、設定処理領域2123に対して二値化処理を行う。続いて、図21に示す処理フロー・入出力パラメータテーブルT510の順序512の「2」には「輝度反転」モジュールが格納されているので、輝度反転モジュール設定テーブルT2130を参照して、輝度反転処理を行う。当該輝度反転処理を行う場合には、処理領域引継設定がなされているので、処理領域引継Index2133を参照して、輝度反転を行う領域を決定する。具体的には、処理領域引継Index2133を参照すると、「1」が格納されている。Index511のうち「1」を示すモジュールは「二値化」モジュールである。つまり、「二値化」モジュールに設定されている設定処理領域2123に対して輝度反転処理を実行する。
以上の処理により、処理領域設定モジュール一覧2001を表示し、表示された処理領域設定モジュールのうち、いずれかの選択を受け付けるだけで、処理領域の引き継ぎが可能となる。つまり、同一の処理領域を使用する場合に、モジュールすべてに対して同じ座標値を毎回入力する手間を軽減し、また処理領域に変更があった場合でも、引継元のモジュールの処理領域の座標値を変更するだけで、当該引継元のモジュールを参照しているすべてのモジュールの処理領域を変更することができる。
尚、前述の説明ではステップS601においてパラメータが設定されているモジュールのみを抽出して、ステップS603において一覧表示させたが、ステップS605においてパラメータの参照先が設定されたモジュールも合わせて一覧表示させてもよい。例えば図24に示す通り、処理フロー描画領域902に「二値化」「輝度反転」「ガンマ補正」という順の処理フローが構築されており、輝度反転モジュールは二値化モジュールの処理領域を参照しているとする。この場合に、ガンマ補正モジュールの処理領域ボタン1205の押下を検知すると、ステップS601において処理領域が設定済みの二値化モジュールと、処理領域の参照先が設定済みの輝度反転モジュールが抽出され、ステップS603において処理領域設定モジュールとして一覧表示される。この一覧表示された中から、輝度反転モジュールを選択すると、ガンマ補正モジュールの参照先が輝度反転モジュールとなる。この処理フローを実行すると、ガンマ補正モジュールの処理領域は、輝度反転モジュールの参照先である二値化モジュールに設定された処理領域を引き継いで処理することができる。以下、上記の処理について説明する。
図23を参照して、図10のステップS315に示す処理領域設定処理の詳細な処理であって、参照先が設定済みのモジュールを参照する処理について説明する。図23は、図10のステップS315における処理領域設定処理の詳細な手順の一例を示すフローチャートである。本処理をCPU111に実行させるためのプログラムは外部メモリ116に記憶されており、本処理の実行要求を入力装置120より受け付けた場合に、CPU111は、当該プログラムをRAM112にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。
本実施例の前提として、図24の処理フロー描画領域902に示す「二値化」「輝度反転」「ガンマ補正」という順で構築された処理フローを元に説明する。つまり、前述した図20の処理フロー描画領域902の「二値化」と処理領域の参照先を「二値化」に設定された「輝度反転」の次の処理として、「ガンマ補正」が追加された場合を想定する。よって、図25に示す処理フロー・入出力パラメータテーブルT510は、これら3つのモジュールを配置した場合の情報がそれぞれ格納されている。また、各モジュールのモジュール設定テーブルには、ステップS307の処理条件設定処理において設定されたパラメータが格納されている。
具体的には、二値化モジュール設定テーブルT2120及び輝度反転モジュール設定テーブルT2130は、前述した図21と同様のパラメータが格納されている。更に、ガンマ補正モジュール設定テーブルT2510は、ガンマ補正モジュールのIndex511とモジュール513をIndex2511とモジュール2512にそれぞれ格納する。
ステップS701では、情報処理装置110のCPU111は、処理フロー描画領域902に配置されたモジュールのうち、処理領域設定モジュールを抽出する。処理領域設定モジュールは、ステップS307において処理領域の設定がなされているモジュールと、前述したステップS605または後述するステップS705においてパラメータの参照先を設定されたモジュールを抽出する。本実施例においては、設定処理領域2123に処理領域の座標が格納された二値化モジュールと、処理領域引継Index2133に参照先モジュールのIndexが格納された輝度反転モジュールが処理領域設定モジュールとして抽出される。また、抽出するモジュールはステップS301において特定されたモジュールよりも上流に配置されたモジュールを抽出する。具体的には、処理フロー・入出力パラメータテーブルT510の順序512を元に、特定されたモジュールよりも順序512に格納された値が小さいモジュールを抽出する。尚、本実施例においては上記の通り、特定されたモジュールよりも上流に配置されたモジュールを抽出するが、これに限らない。特定されたモジュールよりも下流に配置されたモジュールを抽出してもよい。
ステップS702では、情報処理装置110のCPU111は、ステップS701において処理領域設定モジュールが存在したか否かを判定する。本実施例では、ステップS701において、処理領域の設定がなされているモジュールが存在したか否かを判定する。処理領域の設定がなされているモジュールが存在した場合には、処理をステップS703に進める。一方、処理領域の設定がなされているモジュールが存在しない場合には、処理領域設定処理を終了する。
ステップS703では、情報処理装置110のCPU111は、ステップS701において抽出された処理領域設定モジュールをディスプレイ装置130に一覧表示する。具体的には、ステップS701において抽出された処理領域設定モジュールを、図24に示すように処理領域設定モジュール一覧2001として表示する。処理領域設定モジュールは一覧表示でなくともよく、選択できればよい。また、参照先が設定されているモジュールなのか否かを識別表示させるようにすることで、ユーザの選択を補助してもよい。具体的には、ステップS703において処理領域設定モジュール一覧2001を表示する際に、処理領域の引継設定がなされており、参照先のモジュールが指定されているのか否かを判定する。本実施例では、輝度反転モジュールは処理領域引継Index2133が設定されているため、処理領域設定モジュール一覧2001において輝度反転モジュールを一覧表示する場合には、図24の処理領域設定モジュール一覧2001に示すように「UI00002:輝度反転(UI00001参照)」という形式で識別表示させる。参照先が設定されているモジュールの識別表示する方法については、これに限らない。参照先が設定されているモジュールとそうでないモジュールとが識別できればよい。
ステップS704では、情報処理装置110のCPU111は、ステップS703において表示された処理領域設定モジュールのうち、いずれかがユーザによって選択されたか否かを判定する。選択されたと判定された場合には、処理をステップS705に進める。一方、選択されなかった場合には、選択されるまでそのまま待機する(参照先選択受付手段)。
ステップS705では、情報処理装置110のCPU111は、ステップS704において選択された処理領域設定モジュールを処理領域の引継元(参照先)として設定する(参照先設定手段)。具体的には、例えば図24に示すように処理フロー描画領域902に「二値化」「輝度反転」「ガンマ補正」が配置されている場合、「ガンマ補正」が選択された状態で、処理領域ボタン1205の押下を受け付けると、処理領域設定モジュール一覧2001が表示される。本実施例では、処理領域設定モジュールとして、二値化」モジュールと輝度反転モジュールが抽出されるので、今回は輝度反転モジュールの選択を受け付けると、ガンマ補正モジュールの処理領域引継元として、輝度反転モジュールが登録される。処理領域設定は、図25に示す各モジュールのモジュール設定テーブルのうち、ガンマ補正モジュールのガンマ補正モジュール設定テーブルT2510の処理領域引継Index2513に、「輝度反転」のIndex2131を格納することにより設定を行う。これにより、参照先が設定されているモジュールであっても、複雑な設定をすることなく、処理領域を引き継ぎたいモジュールを選択するだけで、容易に処理領域の設定ができる。
ステップS706では、情報処理装置110のCPU111は、ステップS705において設定された処理領域の設定を確認すべく、処理フロー描画領域902に配置された一連のモジュールを実行する(画像処理実行手段)。これにより、正しく動作するかどうかをユーザに確認させることができる。本実施例においては、ステップS706において処理の実行がなされると、まず図25に示す処理フロー・入出力パラメータテーブルT510を参照する。図25に示す処理フロー・入出力パラメータテーブルT510の順序512の「1」には二値化モジュールが格納されているので、二値化モジュール設定テーブルT2120を参照して、設定処理領域2123に対して二値化処理を行う。続いて、図25に示す処理フロー・入出力パラメータテーブルT510の順序512の「2」には輝度反転モジュールが格納されているので、輝度反転モジュール設定テーブルT2130を参照して、輝度反転処理を行う。当該輝度反転処理を行う場合には、処理領域引継設定がなされているので、処理領域引継Index2133を参照して、輝度反転を行う領域を決定する。具体的には、処理領域引継Index2133を参照すると、「1」が格納されている。Index511のうち「1」を示すモジュールは二値化モジュールである。つまり、二値化モジュールに設定されている設定処理領域2123に対して輝度反転処理を実行する。更に、図25に示す処理フロー・入出力パラメータテーブルT510の順序512の「3」にはガンマ補正モジュールが格納されているので、ガンマ補正モジュール設定テーブルT2510を参照して、ガンマ補正処理を行う。当該ガンマ補正処理を行う場合には、処理領域引継設定がなされているので、処理領域引継Index2513を参照して、ガンマ補正を行う領域を決定する。具体的には、処理領域引継Index2513が示すモジュールを参照すると、「2」が格納されている。Index511のうち「2」を示すモジュールが輝度反転モジュールである。しかし、輝度反転モジュールは前述の通り、更に二値化モジュールを参照している。よって、参照先を遡って二値化モジュールに設定されている設定処理領域2123に対してガンマ補正処理を実行する。
以上の処理により、参照先が設定されているモジュールについても、処理領域設定モジュール一覧2001に表示し、当該モジュールを選択することによっても、処理領域の引き継ぎが可能となる。
次に、前述の通り参照先が設定されているモジュールを参照しているモジュールがある場合、当該参照先が設定されているモジュールの参照設定を解除した場合の処理について、図26及び図27を元に説明する。前述の通り、「二値化」「輝度反転」「ガンマ補正」という順で処理フローが構築されており、輝度反転モジュールの処理領域は「二値化」を参照しており、ガンマ補正モジュールの処理領域は「輝度反転」を参照している場合を想定する。この場合に、輝度反転モジュールの参照設定を解除して、独自の処理領域を座標で設定すると、ガンマ補正モジュールの処理領域は輝度反転モジュールで新たに設定した座標の処理領域となってしまう。これでは、本来意図した二値化モジュールの処理領域とは異なってしまう。よって、このような場合に、ガンマ補正モジュールの参照先を輝度反転モジュールが参照していたモジュールである二値化モジュールに変更させることで、ユーザの利便性を向上させる。
図26を参照して、図8のステップS209に示す変更処理の詳細な処理について説明する。図26は、図8のステップS209における「変更処理」の詳細な手順の一例を示すフローチャートである。本処理をCPU111に実行させるためのプログラムは外部メモリ116に記憶されており、本処理の実行要求を入力装置120より受け付けた場合に、CPU111は、当該プログラムをRAM112にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。
尚、図26のステップS301乃至ステップS306、及びステップS308乃至ステップS317においては、前述した図10のステップS301乃至ステップS306、及びステップS308乃至ステップS317は同様の処理であるため、説明を省略する。尚、ステップS306において条件設定が選択されたと判定された場合には、ステップS801に処理を進める。
ステップS801では、情報処理装置110のCPU111は、ステップS301において特定されたモジュールの処理条件を設定する。このステップS801の処理条件設定処理の詳細については、図27を用いて後述する。そして、ステップS801の処理が終了すると、処理をステップS316に進める。
次に、図27を参照して、図26のステップS801に示す処理条件設定処理の詳細な処理について説明する。図27は、図26のステップS801における「処理条件設定処理」の詳細な手順の一例を示すフローチャートである。本処理をCPU111に実行させるためのプログラムは外部メモリ116に記憶されており、本処理の実行要求を入力装置120より受け付けた場合に、CPU111は、当該プログラムをRAM112にロードし、ロードしたプログラムによる制御に従って本処理を実行することになる。
本実施例の前提として、図28の処理フロー描画領域902に示す「二値化」「輝度反転」「ガンマ補正」という順で構築されている処理フローで、「輝度反転」の処理領域は「二値化」を参照しており、「ガンマ補正」の処理領域は「輝度反転」を参照している場合を元に説明する。つまり、前述した図23の各処理が完了した場合を想定する。よって、処理フロー・入出力パラメータテーブルT510は、図25に示すものと同様であり、各モジュールのモジュール設定テーブルに関しても、図25に示す通りである。
ステップS901では、情報処理装置110のCPU111は、ステップS301において特定されたモジュールが、パラメータ引き継ぎのために他のモジュールを参照しているか否かを判定する(参照先有無判定手段)。他のモジュールを参照していると判定した場合には、ステップS902に処理を進め、参照していないと判定した場合には、ステップS912に処理を進める。具体的には、ステップS301において特定されたモジュールのモジュール設定テーブル419に処理領域引継Indexが格納されているか否かで判定する。本実施例においては、ステップS301において特定された「輝度反転」のモジュール設定テーブル419である輝度反転モジュール設定テーブルT2130を参照すると、処理領域引継Index2133に「1」が格納されているので、他のモジュールを参照していると判定され、ステップS902に処理を進める。参照しているかどうかの判定方法はこれに限らない。
まず、ステップS901において他モジュールを参照していると判定された場合について、説明する。ステップS902では、情報処理装置110のCPU111は、ステップS301において特定されたモジュールが参照しているモジュールのパラメータを抽出して、取得する。具体的には、図25の輝度反転モジュール設定テーブルT2130の処理領域引継Index2133に格納された値と一致するIndex511が示すモジュールは二値化モジュールである。よって、二値化モジュール設定テーブルT2120の設定処理領域2123の座標を取得する。取得するパラメータは処理領域に限らない。
ステップS903では、情報処理装置110のCPU111は、ステップS902において取得したパラメータに基づいて、図29に示す処理条件設定画面2900を作成する。例えば、本実施例ではステップS902において処理領域の座標を二値化モジュール設定テーブルT2120の設定処理領域2123から取得したので、当該取得した座標値を適用した処理条件設定画面2900を作成する。つまり、元々参照設定してあった処理領域の範囲をデフォルト表示させる。図29に示す処理条件設定画面2900のように、輝度反転モジュールが参照していた二値化モジュールの設定を引き継いで、デフォルト値の入力等行っておく。他にステップS301で特定されたモジュールに設定すべきパラメータがあるのであれば、同時に設定できるよう画面の作成を行うのが望ましい。
ステップS904では、情報処理装置110のCPU111は、ステップS903において作成された処理条件設定画面2900をディスプレイ装置130に表示させる。
ステップS905では、情報処理装置110のCPU111は、ステップS904において表示された処理条件設定画面2900に対する入力装置120からの入力を受け付ける(パラメータ設定受付手段)。ユーザは処理条件設定画面2900に備えられたパラメータ調整項目を設定することで、モジュールのパラメータ設定を行う。尚、パラメータの設定を受け付けたということは、画像処理アイテムのパラメータの参照先を解除することを意味する。当該画像処理アイテムに設定されたパラメータの参照先よりも、設定を受け付けたパラメータの使用を優先したほうがよいと考えられるので、後述するステップS916において参照先の解除を行う。参照先の解除については、後述するステップS910において当該解除する参照先の情報を使用するため、当該参照先の情報をRAM112に一時的に退避させるか、ステップS905のタイミングでは解除せずに保持しておき、後述するステップS916において解除を行うこととする。
ステップS906では、情報処理装置110のCPU111は、ステップS905において各種パラメータの調整入力受付後、OKボタン2901が押下されたか否かを判定する。本実施例ではOKボタン2901の押下を検知することにより、各種パラメータの調整が完了したと判定するが、これに限らない。OKボタン2901が押下されたと判定された場合には、ステップS907に処理を進め、OKボタン2901が押下されたと判定できない場合には、OKボタン2901が押下されるまで待機する。
ステップS907では、情報処理装置110のCPU111は、ステップS905においてパラメータの調整を受け付けたモジュールを参照しているモジュールがあるか否かを判定する(被参照有無判定手段)。パラメータの調整を受け付けたモジュールを参照しているモジュールがあると判定された場合には、ステップS908に処理を進め、パラメータの調整を受け付けたモジュールを参照しているモジュールがないと判定された場合には、ステップS916に処理を進める。具体的には、他モジュールのモジュール設定テーブル419の処理領域引継Indexに、パラメータ調整を受け付けたモジュールのIndex511が格納されているか否かを判定する。本実施例においては、ステップS301において特定された「輝度反転」のIndex511に「2」が格納されている。他のモジュールのモジュール設定テーブル419を参照すると、図25のガンマ補正モジュール設定テーブルT2510の処理領域引継Index2513に「2」が格納されている。よって、パラメータの調整を受け付けた輝度反転モジュールを参照しているモジュールがあると判定され、ステップS908に処理を進める。
本来、パラメータ調整を行うモジュールを参照しているモジュールは、パラメータ調整を行うモジュールの参照先のパラメータを使用して処理を行う設定となっているはずである。例えば、図28の処理フロー描画領域902に示す通り、「二値化」「輝度反転」「ガンマ補正」という順で処理フローが構築されていて、「輝度反転」は「二値化」の処理領域を参照しており、「ガンマ補正」は「輝度反転」の処理領域を参照しているような場合を想定する。この場合に、「輝度反転」の参照先を解除して、独自の処理領域を設定した場合、「二値化」への参照はなくなってしまう。「ガンマ補正」は、「輝度反転」を参照しているので本来なら「二値化」の処理領域で画像処理を行うはずであったが、「輝度反転」が独自の処理領域を設定してしまったため、「二値化」の処理領域を参照できなくなってしまう。これを防止するために、以下、ステップS908乃至ステップS911の処理を行う。
ステップS908では、情報処理装置110のCPU111は、ステップS905においてパラメータ調整を受け付けたモジュールを参照しているモジュールを1つ抽出する。具体的には、パラメータ調整を受け付けたモジュールとは異なるモジュールのモジュール設定テーブル419の処理領域引継Indexに、パラメータ調整を受け付けたモジュールのIndex511が格納されているモジュールを抽出する。本実施例の場合には、ステップS907における説明の通り、ガンマ補正モジュールが抽出される。また、1つずつ抽出するのではなく、一度にすべてのモジュールを抽出してもよい。この場合、後述するステップS909を抽出したモジュール分繰り返す、または一度にすべてのモジュールに対して確認を行う方法を取ってもよい。
ステップS909では、情報処理装置110のCPU111は、ステップS908において抽出されたモジュールの参照先を、ステップS905においてパラメータ調整を受けつけたモジュールが参照していたモジュールに変更するか否かの選択を受け付け、変更する旨が入力されたか否かを判定する。変更する旨が入力されたと判定された場合には、ステップS910に処理を進め、変更しない旨が入力されたと判定された場合には、ステップS911に処理を進める。具体的には、図30に示すような確認画面3000を表示して、変更するボタン3001及び変更しないボタン3002の押下を受け付けることで判定を行う。
ステップS910では、情報処理装置110のCPU111は、ステップS908において抽出されたモジュールの参照先を、ステップS905においてパラメータ調整を受けつけたモジュールが参照していたモジュールに変更する。具体的には、図31に示す通り、ステップ905においてパラメータ調整を受け付けたモジュールである輝度反転モジュールの処理領域引継Index2133に格納された「1」を、ステップS908において抽出されたモジュールであるガンマ補正モジュールの処理領域引継Index2513に格納する。こうすることで、ガンマ補正モジュールは二値化モジュールの処理領域を参照可能になる。
ステップS911では、情報処理装置110のCPU111は、パラメータ調整するモジュールを参照中のすべてのモジュールがステップS909またはステップS910の処理を完了したか否かを判定する。すべて完了したと判定した場合には、ステップS916に処理を進め、すべて完了していないと判定した場合には、ステップS908に処理を戻し、すべて完了するまでステップS909乃至ステップS911を繰り返す。
以上のステップS907乃至ステップS911の処理を行うことで、参照先を解除して独自の処理領域(パラメータ)を設定した場合であっても、当該パラメータを設定したモジュールを参照しているモジュールの参照先を適切に設定することができる。
次に、ステップS901において他モジュールを参照していないと判定された場合について、説明する。
ステップS912では、情報処理装置110のCPU111は、ステップS901において参照先がないモジュールであると判定されたので、デフォルト値は設定せずに処理条件設定画面2900を作成する。この場合の処理条件設定画面2900は、ステップS301において特定されたモジュールに設定可能なパラメータの設定を受け付ける画面を作成する。基本的にステップS903とは異なり、各入力フォームのデフォルト値は空欄だが、別途デフォルト値の設定がなされているのであれば、それに従う。
ステップS913では、情報処理装置110のCPU111は、ステップS912において作成された処理条件設定画面2900をディスプレイ装置130に表示させる。
ステップS914では、情報処理装置110のCPU111は、ステップS913において表示された処理条件設定画面2900に対する入力装置120からの入力を受け付ける。ユーザは処理条件設定画面2900に備えられたパラメータ調整項目を設定することで、モジュールのパラメータ設定を行う。
ステップS915では、情報処理装置110のCPU111は、ステップS914において各種パラメータの調整入力受付後、OKボタン2901が押下されたか否かを判定する。本実施例ではOKボタン2901の押下を検知することにより、各種パラメータの調整が完了したと判定するが、これに限らない。OKボタン2901が押下されたと判定された場合には、ステップS916に処理を進め、OKボタン2901が押下されたと判定できない場合には、OKボタン2901が押下されるまで待機する。
以上がステップS901において他モジュールを参照していないと判定された場合についての説明である。
ステップS916では、情報処理装置110のCPU111は、ステップS905またはステップS914において入力を受け付けたパラメータを当該モジュールのモジュール設定テーブル419に対して反映する。本実施例では、輝度反転モジュールのパラメータ調整を行ったので、図29の処理領域のパラメータを輝度反転モジュール設定テーブルT2130に格納し、処理領域引継Indexの値を削除する。尚、本実施例では処理領域引継Indexの値を削除することによって参照先を解除しているが、削除しなくてもよい。この場合には参照先の他に処理領域が設定されているので、参照先から引き継ぐのではなく、処理領域を使用して画像処理を行う。参照先が設定されているが、処理領域を優先して使うことで削除しなくとも対応可能である。
ステップS916の処理を、図31を元に説明する。図31は、本フローチャート実行前と実行後の各モジュールのモジュール設定テーブル419の遷移を示す図である。本フローチャートを実行することにより、実行前モジュール設定テーブル3101に格納された各情報が実行後モジュール設定テーブル3102に変更となる。ステップS916の前に、本実施例ではガンマ補正モジュールの参照先をステップS910で変更しているので、実行後モジュール設定テーブル3102のガンマ補正モジュール設定テーブルT2510の処理領域引継Index2513は、「2」から「1」に変更となっている。ステップS910の処理内容については前述の通りである。次に、ステップS916では、ステップS905またはステップS914において入力を受け付けた輝度反転モジュールのパラメータを輝度反転モジュール設定テーブルT2130に格納する。そして、輝度反転モジュール設定テーブルT2130の処理領域引継Index2133の値を削除しておく。こうすることで、輝度反転モジュールは参照先が解除され、新たに独自の処理領域が設定される。反映結果は、実行後モジュール設定テーブル3102の輝度反転モジュール設定テーブルT2130に示す通りである。具体的には、処理領域引継Index2133が削除され、新たに設定処理領域3103に「(左上X座標,左上Y座標),(右下X座標,右下Y座標)=(55,205),(455,255)」が格納される。
ステップS917では、情報処理装置110のCPU111は、ステップS916において反映されたパラメータ設定を確認すべく、処理フロー描画領域902に配置された一連のモジュールを実行する。これにより、正しく動作するかどうかをユーザに確認させることができる。本実施例においては、ステップS917において処理の実行がなされると、まず図25に示す処理フロー・入出力パラメータテーブルT510を参照する。図25に示す処理フロー・入出力パラメータテーブルT510の順序512の「1」には「二値化」モジュールが格納されているので、図31の実行後モジュール設定テーブル3102に示す二値化モジュール設定テーブルT2120を参照して、設定処理領域2123に対して二値化処理を行う。続いて、図25に示す処理フロー・入出力パラメータテーブルT510の順序512の「2」には「輝度反転」モジュールが格納されているので、図31の実行後モジュール設定テーブル3102に示す輝度反転モジュール設定テーブルT2130を参照して、設定処理領域3103に対して輝度反転処理を行う。更に、図25に示す処理フロー・入出力パラメータテーブルT510の順序512の「3」には「ガンマ補正」モジュールが格納されているので、図31の実行後モジュール設定テーブル3102に示すガンマ補正モジュール設定テーブルT2510を参照して、ガンマ補正処理を行う。当該ガンマ補正処理を行う場合には、処理領域引継設定がなされているので、処理領域引継Index2513を参照して、ガンマ補正を行う領域を決定する。具体的には、図31の実行後モジュール設定テーブル3102の処理領域引継Index2513を参照すると、「1」が格納されている。Index511のうち「1」を示すモジュールは「二値化」モジュールである。つまり、「二値化」モジュールに設定されている設定処理領域2123に対して輝度反転処理を実行する。
ステップS917の処理が終了したら、本フローチャートの処理を終了し、ステップS801に処理を戻す。
以上、説明したように処理領域の設定されたモジュールを選択するだけで、当該モジュールの処理領域を引き継ぐことができるため、ユーザがすべてのモジュールに対して処理領域を設定する手間を軽減し、かつ処理領域が変更された場合であっても柔軟に対応することのできる効果を奏する。
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。