(57)【要約】【課題】 効率のよい画像処理のロジック（処理フロー）の構築を実現する。【解決手段】 ＰＣ１１０では、カメラ１４０から入力された画像の処理を行う際に、以下の処理を行う。まず、画像に対する処理を示すモジュールを複数組み合わせた処理フローの各モジュールと、当該各モジュールの実行の順序を示す情報等とを含む処理フロー・入出力情報テーブルと分岐処理に係る条件情報を含む分岐処理条件テーブルとを記憶する。次に処理フローに対するモジュールに関する変更の指示がされた際にこれが分岐処理に関するモジュールであった場合には、条件式テーブルを作成し、条件式テーブルと関連づける情報を含め処理フロー・入出力情報テーブルの情報を変更する。そして、変更された処理フロー・入出力情報テーブルのモジュールごとに処理を実行して、当該実行により得られたモジュールごとの結果画像をＣＲＴ１３０に表示する。【選択図】 図２
2010244507.tif 000002
【特許請求の範囲】
【請求項１】
画像の処理を行う情報処理装置であって、
画像の処理に関する処理を示すモジュールと、各モジュールに対応するソースコードとが関連付けられているモジュール・ソースコードマスタテーブルと、前記モジュールを複数組み合わせた処理フローの各モジュールと当該各モジュールの実行の順序を示す情報と当該各モジュールの処理に係る入力情報及び出力情報とを含む処理フロー・入出力情報テーブルと、分岐処理に係る条件情報を含む分岐処理条件テーブルとを記憶するテーブル記憶手段と、
前記処理フローに対して前記モジュールに関する変更の指示がされた際に、当該モジュールを特定するモジュール特定手段と、
前記モジュール特定手段で当該モジュールが分岐処理に関するモジュールであると特定した場合には、分岐処理に関する情報である条件式テーブルを作成する条件式テーブル作成手段と、
当該変更の指示に応じて、前記条件式テーブルを関連づける情報を含め前記処理フロー・入出力情報テーブルの情報を変更する変更手段と、
前記変更手段により変更された処理フロー・入出力情報テーブルの情報及び前記モジュール・ソースコードマスタテーブルの情報を用いて、前記モジュールごとにソースコードを生成するソースコード生成手段と、
前記ソースコード生成手段により生成されたソースコードに基づいてオブジェクトコードを生成するオブジェクトコード生成手段と、
前記オブジェクトコード生成手段により生成されたオブジェクトコードを用いて、前記変更手段により変更された処理フロー・入出力情報テーブルの前記モジュールごとに前記処理を実行する処理実行手段と、
前記処理実行手段による処理の実行により得られた前記モジュールごとの結果画像を表示装置に表示する結果画像表示手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記処理フローに対して前記分岐処理に関するモジュール変更の指示がされた後、さらに次のステップであるモジュールに関する変更の指示がされた際に、前記条件式テーブルの次のステップの情報を変更する条件式テーブル変更手段と
を有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
当該変更の指示に応じて、
前記処理フローに対して前記分岐処理に関するモジュール変更の指示がされた後、さらに次のステップであるモジュールに関する変更の指示がされた際に、前記変更手段は処理フロー・入出力情報テーブルの次のステップの情報に分岐するノード数の情報を変更すること
を特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
分岐処理に関するモジュールにかかる前記分岐の条件情報は、前記処理フロー・入出力情報テーブルに記憶されている情報と関連した条件であること
を特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記結果画像表示手段は、前記変更手段により変更された処理フロー・入出力情報テーブルの前記順序を示す情報および分岐処理に係る条件情報にしたがって、前記結果画像の表示を行うこと
を特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記モジュール特定手段で当該モジュールが反復処理に関するモジュールであると特定した場合には、前記結果画像表示手段は反復処理の回数をインクリメントした結果画像を並べて表示すること
を特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記モジュールに関する変更の指示は、前記モジュールの新規追加処理、前記モジュールの移動処理、前記モジュールの挿入処理、及び、前記モジュールのパラメータの変更処理に係る指示のうち、少なくともいずれかの処理の指示を含むものであること
を特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記処理フローに対して前記分岐処理に関するモジュール変更の指示がされた後、さらに次のステップであるモジュールに関する変更の指示がされた場合に、分岐処理に関するモジュールをすくめそれ以降のモジュールについて、前記変更手段により変更された処理フロー・入出力情報テーブルの情報と前記モジュール・ソースコードマスタテーブルの情報と分岐処理条件テーブルの情報とを用いて、前記モジュールごとにソースコードを生成すること
を特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記処理フロー・入出力情報テーブルの前記入力情報及び前記出力情報には、それぞれ、前記各モジュールの処理を行う画像を格納する画像バッファの情報、及び、当該各モジュールの処理の実行により得られた前記結果画像を格納する画像バッファの情報が設定されており、
前記変更手段は、前記モジュールに関する変更の指示にしたがって、必要に応じて、前記入力情報及び前記出力情報を変更すること
を特徴とする請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
画像の処理を行う情報処理装置の制御方法であって、
画像の処理に関する処理を示すモジュールと、各モジュールに対応するソースコードとが関連付けられているモジュール・ソースコードマスタテーブルと、前記モジュールを複数組み合わせた処理フローの各モジュールと当該各モジュールの実行の順序を示す情報と当該各モジュールの処理に係る入力情報及び出力情報とを含む処理フロー・入出力情報テーブルと、分岐処理に係る条件情報を含む分岐処理条件テーブルとをテーブル記憶手段に記憶する記憶ステップと、
前記処理フローに対して前記モジュールに関する変更の指示がされた際に、当該モジュールを特定するモジュール特定ステップと、
前記モジュール特定ステップで当該モジュールが分岐処理に関するモジュールであると特定した場合には、分岐処理に関する情報である条件式テーブルを作成する条件式テーブル作成ステップと、
当該変更の指示に応じて、前記条件式テーブルを関連づける情報を含め前記処理フロー・入出力情報テーブルの情報を変更する変更ステップと、
前記変更ステップにより変更された処理フロー・入出力情報テーブルの情報及び前記モジュール・ソースコードマスタテーブルの情報を用いて、前記モジュールごとにソースコードを生成するソースコード生成ステップと、
前記ソースコード生成ステップにより生成されたソースコードに基づいてオブジェクトコードを生成するオブジェクトコード生成ステップと、
前記オブジェクトコード生成ステップにより生成されたオブジェクトコードを用いて、前記変更ステップにより変更された処理フロー・入出力情報テーブルの前記モジュールごとに前記処理を実行する処理実行ステップと、
前記処理実行ステップによる処理の実行により得られた前記モジュールごとの結果画像を表示装置に表示する結果画像表示ステップと
を有することを特徴とする情報処理装置の制御方法。
【請求項１１】
画像の処理を行う情報処理装置の制御方法をコンピュータに実行させるためのプログラムであって、
画像の処理に関する処理を示すモジュールと、各モジュールに対応するソースコードとが関連付けられているモジュール・ソースコードマスタテーブルと、前記モジュールを複数組み合わせた処理フローの各モジュールと当該各モジュールの実行の順序を示す情報と当該各モジュールの処理に係る入力情報及び出力情報とを含む処理フロー・入出力情報テーブルと、分岐処理に係る条件情報を含む分岐処理条件テーブルとをテーブル記憶手段に記憶する記憶ステップと、
前記処理フローに対して前記モジュールに関する変更の指示がされた際に、当該モジュールを特定するモジュール特定ステップと、
前記モジュール特定ステップで当該モジュールが分岐処理に関するモジュールであると特定した場合には、分岐処理に関する情報である条件式テーブルを作成する条件式テーブル作成ステップと、
当該変更の指示に応じて、前記条件式テーブルを関連づける情報を含め前記処理フロー・入出力情報テーブルの情報を変更する変更ステップと、
前記変更ステップにより変更された処理フロー・入出力情報テーブルの情報及び前記モジュール・ソースコードマスタテーブルの情報を用いて、前記モジュールごとにソースコードを生成するソースコード生成ステップと、
前記ソースコード生成ステップにより生成されたソースコードに基づいてオブジェクトコードを生成するオブジェクトコード生成ステップと、
前記オブジェクトコード生成ステップにより生成されたオブジェクトコードを用いて、前記変更ステップにより変更された処理フロー・入出力情報テーブルの前記モジュールごとに前記処理を実行する処理実行ステップと、
前記処理実行ステップによる処理の実行により得られた前記モジュールごとの結果画像を表示装置に表示する結果画像表示ステップと
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像の処理を行う情報処理装置及びその制御方法、並びに、当該制御方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
従来、例えば、チップマウンターにおける基板や部品の位置決めや、出来上がった製品の検査などを目的として、カメラで撮影した検査対象の画像データを、一定のロジック（処理フロー）で画像処理する画像処理装置が広く用いられている。
【０００３】
このような用途の画像処理装置としては、例えば、予め決められた画像処理のロジックを搭載した汎用タイプの画像処理装置や、ユーザのニーズに合致するロジックをユーザ自身が構築することが可能な専用タイプの画像処理装置がある。
【０００４】
ここで、汎用タイプの画像処理装置は、画像処理のロジック（処理フロー）を新規に構築する必要がないため、実際の製造工程等への導入に際してユーザの労力はかからないが、ユーザのニーズを完全に満たすロジックであることは少ない。一方、専用タイプの画像処理装置は、ユーザのニーズを完全に満たす画像処理のロジックを構築することが可能であるが、そのために画像処理のロジックを都度開発する必要があるため、多大な開発労力と開発期間、更には多大なコストがかかるものであった。
【０００５】
そこで、従来、例えば下記の特許文献１に示すようなロジックの開発を効率化する技術が提案されている。具体的に、特許文献１では、ロジックを開発するコンピュータに予め複数の画像処理に係るモジュールを登録しておき、開発者が使用者のニーズに合致するモジュールを選択し、選択したモジュールに必要なパラメータを設定して、ソースコード化した上でオブジェクトコードを作成することにより、ロジックの開発を効率化するものである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−２９６１１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、上述した専用タイプの画像処理装置においてロジック（処理フロー）を構築する場合、通常、複数のモジュールを組み合わせることにより行われる。この場合、１つ１つが理想的な結果を得る画像処理のモジュールを複数組み合わせて作ったロジック（処理フロー）であっても、画像処理対象の画像にはいろいろなものがあるため、全ての画像に対して目標とする結果が得られない可能性もある。そこで通常は、構築したロジックを用いて各種の画像に対して、それぞれのモジュールのパラメータを変更したり、モジュールの順序を変更したり、更には新規のモジュールを追加したりして、試行錯誤を繰り返して調整を行う必要がある。特に、判断処理をはじめとした分岐処理や反復処理があれば、必ず判断のための閾値や反復回数などのパラメータについての調整を行うものである。
【０００８】
しかしながら、このようなモジュールの調整を行う場合、上述した特許文献１の技術では、その調整の都度、始めからモジュールを選択しパラメータを設定するといった作業を行うことが必要になり、開発者にとって負荷の大きい作業を行わなければならないといった問題がある。
【０００９】
また、構築したロジック（処理フロー）において、組み合わされた複数のモジュールのうちのどのモジュールについて、パラメータや順序の変更、或いは新規に追加する等の調整を行うのか、即ち、調整対象となるモジュールを特定する必要がある。
【００１０】
しかしながら、上述した特許文献１の技術では、構築したロジックにおいては処理フローの途中のモジュールの処理結果が不明で最終的な処理結果しか分からないため、調整対象となるモジュールを特定することは、やはり、開発者にとって負荷の大きい作業を行わなければならないといった問題がある。
【００１１】
特に、分岐処理や反復処理を含む場合には、それらのパラメータを調整するべきか、前後の処理自体を調整するべきかの判断が必要になる。しかし上述した特許文献１の技術では、最終的な処理結果しか分からないため、結局は試行錯誤による調整が必要になったり、あるいは調整のための特別なプログラムを作成する必要があったりと、開発者にとって負荷の大きい作業を行わなければならないといった問題があった。
【００１２】
さらに、分岐処理のあと複数の処理を別々に行って、それぞれの処理結果を用いて次の処理を行う並列分岐処理を含む場合においても、並列分岐処理のモジュールのパラメータを調整すべきか、前後の処理自体を調整するべきかの判断が必要になるが、同様の問題があった。
【００１３】
本発明は、このような問題点に鑑みてなされたものであり、効率のよい画像処理のロジック（処理フロー）の構築を実現し得る情報処理装置及びその制御方法、並びに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の情報処理装置は、画像の処理を行う情報処理装置であって、画像の処理に関する処理を示すモジュールと、各モジュールに対応するソースコードとが関連付けられているモジュール・ソースコードマスタテーブルと、前記モジュールを複数組み合わせた処理フローの各モジュールと当該各モジュールの実行の順序を示す情報と当該各モジュールの処理に係る入力情報及び出力情報とを含む処理フロー・入出力情報テーブルと、分岐処理に係る条件情報を含む分岐処理条件テーブルとを記憶するテーブル記憶手段と、前記処理フローに対して前記モジュールに関する変更の指示がされた際に、当該モジュールを特定するモジュール特定手段と、前記モジュール特定手段で当該モジュールが分岐処理に関するモジュールであると特定した場合には、分岐処理に関する情報である条件式テーブルを作成する条件式テーブル作成手段と、当該変更の指示に応じて、前記条件式テーブルとを関連づける情報を含め前記処理フロー・入出力情報テーブルの情報を変更する変更手段と、前記変更手段により変更された処理フロー・入出力情報テーブルの情報及び前記モジュール・ソースコードマスタテーブルの情報を用いて、前記モジュールごとにソースコードを生成するソースコード生成手段と、前記ソースコード生成手段により生成されたソースコードに基づいてオブジェクトコードを生成するオブジェクトコード生成手段と、前記オブジェクトコード生成手段により生成されたオブジェクトコードを用いて、前記変更手段により変更された処理フロー・入出力情報テーブルの前記モジュールごとに前記処理を実行する処理実行手段と、前記処理実行手段による処理の実行により得られた前記モジュールごとの結果画像を表示装置に表示する結果画像表示手段とを有する。
【００１５】
本発明の情報処理装置の制御方法は、画像の処理を行う情報処理装置の制御方法であって、
画像の処理に関する処理を示すモジュールと、各モジュールに対応するソースコードとが関連付けられているモジュール・ソースコードマスタテーブルと、前記モジュールを複数組み合わせた処理フローの各モジュールと当該各モジュールの実行の順序を示す情報と当該各モジュールの処理に係る入力情報及び出力情報とを含む処理フロー・入出力情報テーブルと、分岐処理に係る条件情報を含む分岐処理条件テーブルとをテーブル記憶手段に記憶する記憶ステップと、前記処理フローに対して前記モジュールに関する変更の指示がされた際に、当該モジュールを特定するモジュール特定ステップと、前記モジュール特定ステップで当該モジュールが分岐処理に関するモジュールであると特定した場合には、分岐処理に関する情報である条件式テーブルを作成する条件式テーブル作成ステップと、当該変更の指示に応じて、前記条件式テーブルとを関連づける情報を含め前記処理フロー・入出力情報テーブルの情報を変更する変更ステップと、前記変更ステップにより変更された処理フロー・入出力情報テーブルの情報及び前記モジュール・ソースコードマスタテーブルの情報を用いて、前記モジュールごとにソースコードを生成するソースコード生成ステップと、前記ソースコード生成ステップにより生成されたソースコードに基づいてオブジェクトコードを生成するオブジェクトコード生成ステップと、
前記オブジェクトコード生成ステップにより生成されたオブジェクトコードを用いて、前記変更ステップにより変更された処理フロー・入出力情報テーブルの前記モジュールごとに前記処理を実行する処理実行ステップと、前記処理実行ステップによる処理の実行により得られた前記モジュールごとの結果画像を表示装置に表示する結果画像表示ステップとを有する。
【００１６】
本発明のプログラムは、画像の処理に関する処理を示すモジュールと、各モジュールに対応するソースコードとが関連付けられているモジュール・ソースコードマスタテーブルと、前記モジュールを複数組み合わせた処理フローの各モジュールと当該各モジュールの実行の順序を示す情報と当該各モジュールの処理に係る入力情報及び出力情報とを含む処理フロー・入出力情報テーブルと、分岐処理に係る条件情報を含む分岐処理条件テーブルとをテーブル記憶手段に記憶する記憶ステップと、
前記処理フローに対して前記モジュールに関する変更の指示がされた際に、当該モジュールを特定するモジュール特定ステップと、前記モジュール特定ステップで当該モジュールが分岐処理に関するモジュールであると特定した場合には、分岐処理に関する情報である条件式テーブルを作成する条件式テーブル作成ステップと、当該変更の指示に応じて、前記条件式テーブルとを関連づける情報を含め前記処理フロー・入出力情報テーブルの情報を変更する変更ステップと、前記変更ステップにより変更された処理フロー・入出力情報テーブルの情報及び前記モジュール・ソースコードマスタテーブルの情報を用いて、前記モジュールごとにソースコードを生成するソースコード生成ステップと、前記ソースコード生成ステップにより生成されたソースコードに基づいてオブジェクトコードを生成するオブジェクトコード生成ステップと、前記オブジェクトコード生成ステップにより生成されたオブジェクトコードを用いて、前記変更ステップにより変更された処理フロー・入出力情報テーブルの前記モジュールごとに前記処理を実行する処理実行ステップと、前記処理実行ステップによる処理の実行により得られた前記モジュールごとの結果画像を表示装置に表示する結果画像表示ステップとをコンピュータに実行させるためのものである。
【発明の効果】
【００１７】
本発明によれば、効率のよい画像処理のロジック（処理フロー）の構築を実現することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係る画像処理システムの概略構成の一例を示す模式図である。
【図２】図１に示すＰＣの内部のハードウェア構成の一例を示す模式図である。
【図３】図１に示すＰＣの機能構成の一例を示す模式図である。
【図４】図３に示すモジュール・ソースコードマスタテーブルの一例を示す模式図である。
【図５】図３に示す処理フロー・入出力パラメータテーブルの一例を示す模式図である。
【図６】図１に示すＰＣによる制御方法の処理手順の一例を示すフローチャートである。
【図７】本発明の実施形態を示し、画像処理プログラム開発画面の一例を示す模式図である。
【図８】図６のステップＳ１０７におけるモジュールの「新規追加処理」の詳細な処理手順の一例を示すフローチャートである。
【図９】図６のステップＳ１０９におけるモジュールのパラメータの「変更処理」の詳細な処理手順の一例を示すフローチャートである。
【図１０】本発明の実施形態を示し、パラメータ編集画面の一例を示す模式図である。
【図１１】図６のステップＳ１１１におけるモジュールの「移動処理」の詳細な処理手順の一例を示すフローチャートである。
【図１２】図６のステップＳ１１３におけるモジュールの「挿入処理」の詳細な処理手順の一例を示すフローチャートである。
【図１３】図６のステップＳ１１５における処理フローの「全体実行処理」の詳細な処理手順の一例を示すフローチャートである。
【図１４】分岐処理を含む処理手順の一例を示すフローチャートである。
【図１５】本発明の実施形態を示し、条件式入力画面の一例を示す模式図である。
【図１６】分岐処理モジュールが追加された際の処理手順の一例を示すフローチャートである。
【図１７】前回の設定値での処理結果画像比較ウィンドウの一例を示す。
【図１８】分岐処理を含む、処理フロー・入出力パラメータテーブルの一例を示す模式図である。
【図１９】分岐処理に使用する条件式テーブルの一例を示す模式図である。
【図２０】反復処理中の経過画像を表示するウィンドウの一例を示す。
【図２１】「並列分岐処理」の詳細な処理手順の一例を示すフローチャートである。
【図２２】ノード処理テーブルの一例を示す模式図である。
【図２３】分岐処理入力画面の一例を示す模式図である。
【図２４】第２の実施例における、新規追加処理の詳細な処理手順の一例を示すフローチャートである。
【図２５】第２の実施例における処理フロー・入出力パラメータテーブルの一例を示す模式図である。
【図２６】第３の実施例における新規追加処理の詳細な手順の一例を示すフローチャートである。
【図２７】第３の実施例における処理フロー・入出力パラメータテーブルの一例を示す模式図である。
【図２８】画面作成処理の一例を示すフローチャートである。
【図２９】画面作成処理で使用されるレイアウト画面の一例を示す模式図である。
【図３０】図２８のステップＳ２８０５の新規ボタン追加処理の詳細を示すフローチャートである。
【図３１】図２８のステップＳ２８０７の新規画面追加処理の詳細を示すフローチャートである。
【図３２】図２８のステップＳ２８０９の新規ボックス追加処理の詳細を示すフローチャートである。
【図３３】図２８のステップＳ２８１１の変更・移動処理の詳細を示すフローチャートである。
【図３４】図２８のステップＳ２８１３の保存処理の詳細を示すフローチャートである。
【図３５】画面レイアウトテーブルの一例を示す模式図である。
【図３６】ボタンコントロールテーブルの一例を示す模式図である。
【図３７】画面コントロールテーブルの一例を示す模式図である。
【図３８】ボックスコントロールテーブルの一例を示す模式図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照しながら、本発明の実施の形態について説明する。
【００２０】
＜第１の実施例＞
図１は、本発明の実施の形態に係る画像処理システム１００の概略構成の一例を示す模式図である。
【００２１】
画像処理システム１００は、図１に示すように、パーソナルコンピュータ（以下、「ＰＣ」と称する）１１０と、操作入力装置１２０と、ＣＲＴディスプレイ（以下、「ＣＲＴ」と称する）１３０と、カメラ１４０と、照明装置コントローラ１５０と、照明装置１６０と、外部機器コントローラ１７０と、検査対象１８１が載置されたステージ１８０を有して構成されている。
【００２２】
ＰＣ１１０は、画像処理システム１００における動作を統括的に制御する情報処理装置である。ここで、本実施形態においては、ＰＣ１１０は、実際の製造工程等に導入される画像処理装置の画像処理プログラムの開発を支援する装置として適用した例を説明するが、本発明においてはこれに限定されるわけではなく、例えば、実際の製造工程等に導入される画像処理装置として適用する形態も本発明に含まれる。
【００２３】
ＰＣ１１０は、所定のケーブル等を介して、検査対象１８１の撮像（撮影）を行うカメラ１４０と通信可能に構成されている。また、ＰＣ１１０は、所定のケーブル等を介して、照明装置１６０の制御を行う照明装置コントローラ１５０と通信可能に構成されている。また、ＰＣ１１０は、所定のケーブル等を介して、ステージ１８０を制御するプログラムマブルコントローラ（ＰＬＣ）などの外部機器コントローラ１７０と予め設定した通信が可能に構成されている。さらに、ＰＣ１１０は、所定のケーブル等を介して、それぞれ、操作入力装置１２０及びＣＲＴ１３０と通信可能に構成されている。即ち、ＰＣ１１０は、所定のケーブル等を介して接続された、操作入力装置１２０、ＣＲＴ１３０、カメラ１４０、照明装置コントローラ１５０及び外部機器コントローラ１７０を制御することによって、画像処理システム１００における動作を統括的に制御する。
【００２４】
操作入力装置１２０は、例えばユーザがＰＣ１１０に対して入力指示を行う際にユーザによって操作されるものであり、ユーザから入力指示があった場合に、当該入力指示をＰＣ１１０に対して入力するものである。この操作入力装置１２０は、例えば、キーボード（ＫＢ）やマウス等で構成されている。
【００２５】
ＣＲＴ１３０は、ＰＣ１１０の制御にしたがって、各種の画像や各種の情報などを表示画面に表示する。
【００２６】
カメラ１４０は、ＰＣ１１０の制御にしたがって、ステージ１８０上に載置された検査対象１８１の撮影（撮像）を行い、撮影により得られた画像データを所定のケーブル等を介してＰＣ１１０に送信する。
【００２７】
照明装置コントローラ１５０は、ＰＣ１１０の制御にしたがって、照明装置１６０における照明を制御する。照明装置１６０は、照明装置コントローラ１５０の制御に基づき、検査対象１８１における検査内容に応じて、当該検査対象１８１に対する照明の点灯／非点灯を切り替え等する。
【００２８】
外部機器コントローラ１７０は、ＰＣ１１０の制御にしたがって、ステージ１８０を制御する。ステージ１８０は、外部機器コントローラ１７０の制御に基づき、載置された検査対象１８１を目的の位置に移動させたり、検査対象１８１の搬入や搬出をしたりする。
【００２９】
次に、ＰＣ１１０の内部のハードウェア構成について説明する。図２は、図１に示すＰＣ１１０の内部のハードウェア構成の一例を示す模式図である。ここで、図２には、ＰＣ１１０の内部構成に加えて、当該ＰＣ１１０と接続される装置についても記載している。
【００３０】
ＰＣ１１０は、図２に示すように、ＣＰＵ１１１と、ＲＡＭ１１２と、ＲＯＭ１１３と、システムバス１１４と、各種のコントローラ１１５（１１５ａ〜１１５ｆ）と、外部メモリ１１６のハードウェア構成を有して構成されている。具体的に、各種のコントローラ１１５として、入力コントローラ１１５ａ、ビデオコントローラ１１５ｂ、メモリコントローラ１１５ｃ、通信Ｉ／Ｆコントローラ１１５ｄ及び１１５ｅ、画像入力コントローラ１１５ｆが構成されている。ＣＰＵ１１１は、ＲＯＭ１１３或いは外部メモリ１１６に記憶されたプログラム等に基づいてシステムバス１１４に接続された各デバイスを制御して、ＰＣ１１０における動作を統括的に制御する。ＲＡＭ１１２は、ＣＰＵ１１１の主メモリ、ワークエリア等として機能する。ＣＰＵ１１１は、処理の実行に際して、必要なプログラム等をＲＡＭ１１２にロードして、プログラムを実行することにより、ＰＣ１１０における各種の動作を実現する。ＲＯＭ１１３には、ＣＰＵ１１１の制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ
／ Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）やオペレーティングシステムプログラム（以下、「ＯＳ」と称する）、ＣＰＵ１１１がＰＣ１１０の機能を実現するために必要な各種のプログラム等が記憶されている。なお、これらのプログラムは、外部メモリ１１６に記憶されている形態であってもよい。
【００３１】
システムバス１１４は、ＣＰＵ１１１、ＲＡＭ１１２、ＲＯＭ１１３、入力コントローラ１１５ａ、ビデオコントローラ１１５ｂ、メモリコントローラ１１５ｃ、通信Ｉ／Ｆコントローラ１１５ｄ及び１１５ｅ、画像入力コントローラ１１５ｆを、相互に通信可能に接続する。
【００３２】
入力コントローラ１１５ａは、キーボード（ＫＢ）やマウスなどからなる操作入力装置１２０からの入力を制御する。ビデオコントローラ１１５ｂは、表示装置であるＣＲＴ１３０への表示を制御する。メモリコントローラ１１５ｃは、外部メモリ１１６へのアクセスを制御する。ここで、外部メモリ１１６は、例えばハードディスク（ＨＤ）やフレキシブルディスク（ＦＤ）等で構成され、ブートプログラムや、各種のアプリケーションプログラム、編集ファイル、各種のデータや各種の情報等を記憶する。また、外部メモリ１１６は、ＣＰＵ１１１がプログラムを用いた処理を行う際に使用する各種のテーブルや各種の検査結果情報等も記憶する。通信Ｉ／Ｆコントローラ１１５ｄは、外部機器コントローラ１７０との通信を制御する。また、通信Ｉ／Ｆコントローラ１１５ｅは、照明装置コントローラ１５０との通信を制御する。画像入力コントローラ１１５ｆは、カメラ１４０と通信を行って、カメラ１４０から画像データの受信が可能に構成されている。なお、本実施形態では、カメラ１４０からの画像データの入力を前提に説明を行うが、画像ファイルを読み込んで入力する形態であってもよい。
【００３３】
次に、ＰＣ１１０の機能構成について説明する。図３は、図１に示すＰＣ１１０の機能構成の一例を示す模式図である。
【００３４】
ＰＣ１１０には、図３に示すように、テーブル記憶部３１０、フロー作成部３２０、ソースコード変換部３３０、コンパイル部３４０、（検証）実行部３５０、データ保存部３６０、及び、データ入力・出力部３７０の各機能構成が構成される。また、テーブル記憶部３１０には、モジュール・ソースコードマスタテーブル３１１、処理フロー・入出力パラメータテーブル３１２、ソースコードテーブル３１３、オブジェクトコードテーブル３１４、及び、プロジェクトファイルテーブル３１５が保持されている。さらに、図示はしていないが、条件式テーブルやノード処理フラグテーブルも保持されている。
【００３５】
ここで、本実施形態においては、図３のテーブル記憶部３１０が、例えば図２に示す外部メモリ１１６に構成される（一旦ＲＡＭ１１２に構成された後に外部メモリ１１６に構成される場合も含む）。また、図３のフロー作成部３２０、ソースコード変換部３３０、コンパイル部３４０、（検証）実行部３５０、データ保存部３６０及びデータ入力・出力部３７０が、例えば図２に示すＣＰＵ１１１とＲＯＭ１１３或いは外部メモリ１１６に記憶されているプログラムとから構成される。
【００３６】
まず、図３のテーブル記憶部３１０に保持される各種のテーブルについて説明する。図４は、図３に示すモジュール・ソースコードマスタテーブル３１１の一例を示す模式図である。
【００３７】
モジュール・ソースコードマスタテーブル３１１には、図４に示すように、インデックス（Ｉｎｄｅｘ）ごとに、画像処理に係るモジュール（画像処理モジュール）と、各モジュールに対応するソースコードが関連付けられている。このソースコードは、ソースコード変換部３３０で処理対象のモジュールをソースコードに変換する際に用いられるものである。
【００３８】
図５は、図３に示す処理フロー・入出力パラメータテーブル３１２の一例を示す模式図である。処理フロー・入出力パラメータテーブル３１２は、図５に示すように、インデックス（Ｉｎｄｅｘ）５０１ごとに、画像処理に係るモジュール５０３と、各モジュール５０３の順序５０２と、各モジュール５０３のフロー登録名５０４と、各モジュール５０３における入力パラメータ５０５及び出力パラメータ５０６が関連付けられている。入力パラメータ５０５は、各モジュールで使用する画像バッファや処理領域等を示す。出力パラメータ５０６は、各モジュールが実行された際の結果画像バッファや閾値等を示す。次ステップ５０７は、次に処理されるべきステップのインデックス（Ｉｎｄｅｘ）５０１を示す。なお、この項目は、複数のインデックス（Ｉｎｄｅｘ）を持つこともある。また、分岐参照５０８は、モジュール５０３に「反復処理」モジュール、「条件分岐処理」モジュールを設定した際に、各条件（ノード）が次にどのステップを処理するかを指定する条件式テーブルを示す。
【００３９】
なお、図５に示す処理フロー・入出力パラメータテーブル３１２におけるインデックス（Ｉｎｄｅｘ）５０１と、図４に示すモジュール・ソースコードマスタテーブル３１１におけるインデックス（Ｉｎｄｅｘ）とは特に対応させていないが、相互に対応させて各テーブルを作成する形態であってもよい。
【００４０】
ソースコードテーブル３１３は、処理フロー・入出力パラメータテーブル３１２に記憶されているモジュール５０３について、ソースコード変換部３３０でモジュール・ソースコードマスタテーブル３１１を用いてソースコードに変換し登録している、全てのモジュール或いは一部のモジュールにおけるソースコードを記憶する。
【００４１】
オブジェクトコードテーブル３１４は、ソースコードテーブル３１３に記憶されているソースコードについてコンパイル部３４０で変換した実行可能なモジュールのオブジェクトコードを記憶する。プロジェクトファイルテーブル３１５は、画像処理に係る初期設定パラメータや、処理フローシーケンス、ソースコード、入出力パラメータ等を記憶する。
【００４２】
続いて、図３のフロー作成部３２０、ソースコード変換部３３０、コンパイル部３４０、（検証）実行部３５０、データ保存部３６０、及び、データ入力・出力部３７０について説明する。
【００４３】
フロー作成部３２０は、モジュール・ソースコードマスタテーブル３１１に含まれているモジュールの処理シーケンスを管理する処理フロー・入出力パラメータテーブル３１２の作成等と、処理フロー描画領域（後述する図７の７０２）へのモジュールの描画を行う機能を有する。
【００４４】
ソースコード変換部３３０は、フロー作成部３２０により作成された処理フロー・入出力パラメータテーブル３１２に記憶されている各モジュールの処理データをモジュール・ソースコードマスタテーブル３１１と照合して、各モジュールをソースコードに変換し、ソースコードテーブル３１３に記憶する機能を有する。
【００４５】
なお、図４及び図５に示すテーブルのモジュールとしては、画像に対する処理だけでなく、画像を取得するための事前処理や、処理結果を出力するための事後処理を含む外部機器に対する処理など画像の処理に関する処理であればよい。例えば、カメラ１４０の撮像条件を設定する制御指令や、照明装置１６０を制御するための照明装置コントローラ１５０への制御指令、或いは、ステージの移動などを制御するための外部機器コントローラ１７０への制御指令を行うものであってもよい。
【００４６】
コンパイル部３４０は、ソースコードテーブル３１３に記憶されているソースコードから実行可能なオブジェクトコードを生成し、生成したオブジェクトコードをオブジェクトコードテーブル３１４に記憶する機能を有する。
【００４７】
なお、コンパイル部３４０が行うコンパイルには、デバッグ・コンパイルとリリース・コンパイルの２つのタイプがある。ここで、本実施形態においては、処理フロー作成中には、ソースコードレベルでのステップ実行を可能とするデバッグ・コンパイルを行い、データ保存時には、オンラインで利用可能なファイルを生成するリリース・コンパイルを行う。この際、デバッグ・コンパイル及びリリース・コンパイルの両者は、同じ変換手法で生成されたソースコードを参照するものとする。
【００４８】
（検証）実行部３５０は、コンパイル部３４０により作成されたオブジェクトコードテーブル３１４に記憶されているオブジェクトコードを実行し、結果画像表示領域（後述する図７の７０３）と処理フロー・入出力パラメータテーブル３１２を更新する機能を有する。
【００４９】
データ保存部３６０は、例えば、ＲＡＭ１１２にあるソースコードテーブル３１３、オブジェクトコードテーブル３１４及びプロジェクトファイルテーブル３１５を外部メモリ１１６に出力して、データの保存処理を行う。
【００５０】
データ入力・出力部３７０は、各モジュールで使用する入出力パラメータを管理する機能を有する。
【００５１】
次に、ＰＣ１１０による制御方法の処理手順について説明する。図６は、図１に示すＰＣ１１０による制御方法の処理手順の一例を示すフローチャートである。
【００５２】
まず、図６のステップＳ１０１において、ＰＣ１１０のＣＰＵ１１１は、例えば、操作入力装置１２０からの入力指示に基づいて、画像処理プログラムの開発を行うための画像処理プログラム開発画面をＣＲＴ１３０に表示する処理を行う。
【００５３】
図７は、本発明の実施形態を示し、画像処理プログラム開発画面７００の一例を示す模式図である。この画像処理プログラム開発画面７００は、例えばＧＵＩで構成されている。
【００５４】
図７に示す画像処理プログラム開発画面７００には、利用可能な処理ユニット（即ち、「カメラ取込」等の画像処理に係る各モジュール）を表示するツールボックス７０１と、画像処理の実行順序（即ち、各モジュールの実行順序）をフローチャートで描画する処理フロー描画領域７０２と、各画像処理（即ち、各モジュールの処理）で実行した結果画像を表示する結果画像表示領域７０３と、メニューバー７０６及びツールバー７０７と、画像処理プログラムの開発を終了する際に操作される閉じるボタン７０８等が設けられている。また、図７に示す画像処理プログラム開発画面７００には、例えば、新規モジュールの登録時もしくはパラメータの編集時等に、処理フロー描画領域７０２のフローチャートの各ステップ（即ち、各モジュール）で利用するパラメータを設定するパラメータ編集画面７０４と、そのパラメータの設定で実行された結果画像を表示する結果画像表示ウィンドウ７０５が表示される。図７に示す例では、パラメータ編集画面７０４には、「二値化」のモジュールに係るパラメータを設定する画面が示されている。ここで、再び、図６の説明に戻る。
【００５５】
ステップＳ１０１の処理が終了すると、ステップＳ１０２に進む。ステップＳ１０２に進むと、ＰＣ１１０のＣＰＵ１１１は、操作入力装置１２０からの入力指示に基づいて、ステップＳ１０１で表示された画像処理プログラム開発画面７００を用いて新規に画像処理プログラムを開発するか否かを判断する。具体的に、本例では、画像処理プログラム開発画面７００のツールバー７０７における新規作成ボタン７０７ａの選択の有無に応じて、新規に画像処理プログラムを開発するか否かを判断する。即ち、本例では、新規作成ボタン７０７ａが選択された場合に、新規に画像処理プログラムを開発すると判断される。
【００５６】
ステップＳ１０２の判断の結果、新規に画像処理プログラムを開発しない場合には（ステップＳ１０２／ＮＯ）、ステップＳ１０３に進む。
【００５７】
ステップＳ１０３に進むと、ＰＣ１１０のＣＰＵ１１１は、外部メモリ１１６に保存されているプロジェクトファイルテーブル３１５を読み出して、これをＲＡＭ１１２に記憶する。
【００５８】
ステップＳ１０３の処理が終了した場合、或いは、ステップＳ１０２で新規に画像処理プログラムを開発すると判断された場合には（ステップＳ１０２／ＹＥＳ）、ステップＳ１０４に進む。
【００５９】
ステップＳ１０４に進むと、ＰＣ１１０のＣＰＵ１１１は、操作入力装置１２０からの入力指示（具体的には、ステップＳ１０１で表示された画像処理プログラム開発画面７００に対する入力指示）があったか否かを判断する。
【００６０】
ステップＳ１０４の判断の結果、操作入力装置１２０からの入力指示がなかった場合には（ステップＳ１０４／ＮＯ）、操作入力装置１２０からの入力指示があるまで、ステップＳ１０４で待機する。一方、ステップＳ１０４の判断の結果、操作入力装置１２０からの入力指示があった場合には（ステップＳ１０４／ＹＥＳ）、ステップＳ１０５に進む。
【００６１】
ステップＳ１０５に進むと、ＰＣ１１０のＣＰＵ１１１は、操作入力装置１２０からの入力指示に基づいて、選択された処理内容の判定処理を行う。このステップＳ１０５で判定される処理内容としては、本例では、「新規追加処理」、「変更処理」、「移動処理」、「挿入処理」、「全体実行処理」、「保存処理」及び「開発終了処理」である。なお、ここで挙げた処理内容は一例を示したものであり、その他の処理内容をステップＳ１０５で判定することも可能である。
【００６２】
ここで、ステップＳ１０５の判定処理では、例えば、図７に示す画像処理プログラム開発画面７００において以下の入力がなされることによって、上述した各処理を判定するようにしている。
【００６３】
まず、図７に示すツールボックス７０１からモジュールが選択され、処理フロー描画領域７０２の処理フローシーケンスの最後尾にドラッグ＆ドロップ、またはツールボックス７０１のモジュールがダブルクリックされると、ＰＣ１１０のＣＰＵ１１１は、モジュールの「新規追加処理」のイベントであると判定する。また、処理フロー描画領域７０２に既に登録されているモジュールがダブルクリックされると、ＰＣ１１０のＣＰＵ１１１は、モジュールのパラメータの「変更処理」のイベントであると判定する。また、処理フロー描画領域７０２に既に登録されているモジュールが他のモジュールの間にドラッグ＆ドロップされると、ＰＣ１１０のＣＰＵ１１１は、モジュールの「移動処理」のイベントであると判定する。また、図７に示すツールボックス７０１からモジュールが選択され、処理フロー描画領域７０２に既に登録されているモジュールの間にドラッグ＆ドロップされると、ＰＣ１１０のＣＰＵ１１１は、モジュールの「挿入処理」のイベントであると判定する。また、メニューバー７０６もしくはツールバー７０７の実行が選択されると、ＰＣ１１０のＣＰＵ１１１は、処理フロー描画領域７０２に設定された処理フローの「全体実行処理」のイベントであると判定する。また、メニューバー７０６もしくはツールバー７０７の保存が選択されると、ＰＣ１１０のＣＰＵ１１１は、処理フロー描画領域７０２に設定された処理フローの「保存処理」のイベントであると判定する。また、例えば閉じるボタン７０８もしくはメニューバー７０６の終了が選択されると、ＰＣ１１０のＣＰＵ１１１は、画像処理プログラムの「開発終了処理」のイベントであると判定する。
【００６４】
なお、本実施形態ではこのようにして処理内容の判定を行うようにしているが、これは一例であり、例えばメニューバー７０６もしくはツールバー７０７に「新規追加」などの処理内容に応じたアイコン等の機能を設けてもよく、上述した形態に限定されるものではない。
【００６５】
続いて、ステップＳ１０６において、ＰＣ１１０のＣＰＵ１１１は、ステップＳ１０５で判定した処理内容が、モジュールの「新規追加処理」であるか否かを判断する。
【００６６】
ステップＳ１０６の判断の結果、ステップＳ１０５で判定した処理内容が、モジュールの「新規追加処理」である場合には（ステップＳ１０６／ＹＥＳ）、ステップＳ１０７に進む。
【００６７】
ステップＳ１０７に進むと、ＰＣ１１０のＣＰＵ１１１は、選択されたモジュールの「新規追加処理」を行う。このステップＳ１０７の詳細については、図８を用いて後述する。そして、ステップＳ１０７の処理が終了すると、ステップＳ１０４に戻り、操作入力装置１２０から次の入力指示があるまで待機する。
【００６８】
一方、ステップＳ１０６の判断の結果、ステップＳ１０５で判定した処理内容が、モジュールの「新規追加処理」でない場合には（ステップＳ１０６／ＮＯ）、ステップＳ１０８に進む。
【００６９】
ステップＳ１０８に進むと、ＰＣ１１０のＣＰＵ１１１は、ステップＳ１０５で判定した処理内容が、モジュールのパラメータの「変更処理」であるか否かを判断する。
【００７０】
ステップＳ１０８の判断の結果、ステップＳ１０５で判定した処理内容が、モジュールのパラメータの「変更処理」である場合には（ステップＳ１０８／ＹＥＳ）、ステップＳ１０９に進む。
【００７１】
ステップＳ１０９に進むと、ＰＣ１１０のＣＰＵ１１１は、選択されたモジュールのパラメータの「変更処理」を行う。このステップＳ１０９の詳細については、図９を用いて後述する。そして、ステップＳ１０９の処理が終了すると、ステップＳ１０４に戻り、操作入力装置１２０から次の入力指示があるまで待機する。
【００７２】
一方、ステップＳ１０８の判断の結果、ステップＳ１０５で判定した処理内容が、モジュールのパラメータの「変更処理」でない場合には（ステップＳ１０８／ＮＯ）、ステップＳ１１０に進む。ステップＳ１１０に進むと、ＰＣ１１０のＣＰＵ１１１は、ステップＳ１０５で判定した処理内容が、モジュールの「移動処理」であるか否かを判断する。
【００７３】
ステップＳ１１０の判断の結果、ステップＳ１０５で判定した処理内容が、モジュールの「移動処理」である場合には（ステップＳ１１０／ＹＥＳ）、ステップＳ１１１に進む。
【００７４】
ステップＳ１１１に進むと、ＰＣ１１０のＣＰＵ１１１は、選択されたモジュールの「移動処理」を行う。このステップＳ１１１の詳細については、図１１を用いて後述する。そして、ステップＳ１１１の処理が終了すると、ステップＳ１０４に戻り、操作入力装置１２０から次の入力指示があるまで待機する。
【００７５】
一方、ステップＳ１１０の判断の結果、ステップＳ１０５で判定した処理内容が、モジュールの「移動処理」でない場合には（ステップＳ１１０／ＮＯ）、ステップＳ１１２に進む。ステップＳ１１２に進むと、ＰＣ１１０のＣＰＵ１１１は、ステップＳ１０５で判定した処理内容が、モジュールの「挿入処理」であるか否かを判断する。
【００７６】
ステップＳ１１２の判断の結果、ステップＳ１０５で判定した処理内容が、モジュールの「挿入処理」である場合には（ステップＳ１１２／ＹＥＳ）、ステップＳ１１３に進む。
【００７７】
ステップＳ１１３に進むと、ＰＣ１１０のＣＰＵ１１１は、選択されたモジュールの「挿入処理」を行う。このステップＳ１１３の詳細については、図１２を用いて後述する。そして、ステップＳ１１３の処理が終了すると、ステップＳ１０４に戻り、操作入力装置１２０から次の入力指示があるまで待機する。
【００７８】
一方、ステップＳ１１２の判断の結果、ステップＳ１０５で判定した処理内容が、モジュールの「挿入処理」でない場合には（ステップＳ１１２／ＮＯ）、ステップＳ１１４に進む。ステップＳ１１４に進むと、ＰＣ１１０のＣＰＵ１１１は、ステップＳ１０５で判定した処理内容が、処理フローの「全体実行処理」であるか否かを判断する。
【００７９】
ステップＳ１１４の判断の結果、ステップＳ１０５で判定した処理内容が、処理フローの「全体実行処理」である場合には（ステップＳ１１４／ＹＥＳ）、ステップＳ１１５に進む。
【００８０】
ステップＳ１１５に進むと、ＰＣ１１０のＣＰＵ１１１は、処理フロー描画領域７０２に設定された処理フローの「全体実行処理」を行う。このステップＳ１１５の詳細については、図１３を用いて後述する。そして、ステップＳ１１５の処理が終了すると、ステップＳ１０４に戻り、操作入力装置１２０から次の入力指示があるまで待機する。一方、ステップＳ１１４の判断の結果、ステップＳ１０５で判定した処理内容が、処理フローの「全体実行処理」でない場合には（ステップＳ１１４／ＮＯ）、ステップＳ１１６に進む。
【００８１】
ステップＳ１１６に進むと、ＰＣ１１０のＣＰＵ１１１は、ステップＳ１０５で判定した処理内容が、処理フローの「保存処理」であるか否かを判断する。
【００８２】
ステップＳ１１６の判断の結果、ステップＳ１０５で判定した処理内容が、処理フローの「保存処理」である場合には（ステップＳ１１６／ＹＥＳ）、ステップＳ１１７に進む。
【００８３】
ステップＳ１１７に進むと、ＰＣ１１０のＣＰＵ１１１は、処理フロー描画領域７０２に設定された処理フローの全体をソース変換する処理を行う。具体的に、ステップＳ１１７では、ＰＣ１１０のＣＰＵ１１１（例えばソースコード変換部３３０）は、ＲＡＭ１１２に記憶されている処理フロー・入出力パラメータテーブル３１２をソースコードに変換して、ＲＡＭ１１２に記憶されているソースコードテーブル３１３を更新する処理を行う。また、ＰＣ１１０のＣＰＵ１１１（例えばコンパイル部３４０）は、ソースコードテーブル３１３のソースコードをリリース・コンパイルしてリリース版のオブジェクトコードに変換して、ＲＡＭ１１２に記憶されているオブジェクトコードテーブル３１４を更新する処理を行う。
【００８４】
続いて、ステップＳ１１８において、ＰＣ１１０のＣＰＵ１１１（例えばデータ保存部３６０）は、ＲＡＭ１１２上にある、ソースコードテーブル３１３をソースファイルとして、オブジェクトコードテーブル３１４をＥＸＥファイルまたはＤＬＬファイルとして、また、プロジェクトファイルテーブル３１５を外部メモリ１１６に保存する処理を行う。そして、ステップＳ１１８の処理が終了すると、ステップＳ１０４に戻り、操作入力装置１２０から次の入力指示があるまで待機する。
【００８５】
一方、ステップＳ１１６の判断の結果、ステップＳ１０５で判定した処理内容が、処理フローの「保存処理」でない場合には（ステップＳ１１６／ＮＯ）、ステップＳ１１９に進む。
【００８６】
ステップＳ１１９に進むと、ＰＣ１１０のＣＰＵ１１１は、ステップＳ１０５で判定した処理内容が、画像処理プログラムの「開発終了処理」であるか否かを判断する。
【００８７】
ステップＳ１１９の判断の結果、ステップＳ１０５で判定した処理内容が、画像処理プログラムの「開発終了処理」でない場合には（ステップＳ１１９／ＮＯ）、ステップＳ１０４に戻り、操作入力装置１２０から入力指示があるまで待機する。
【００８８】
一方、ステップＳ１１９の判断の結果、ステップＳ１０５で判定した処理内容が、画像処理プログラムの「開発終了処理」である場合には（ステップＳ１１９／ＹＥＳ）、図６の示すフローチャートの処理を終了する。
【００８９】
次に、図６のステップＳ１０７、Ｓ１０９、Ｓ１１１、Ｓ１１３及びＳ１１５の詳細について説明を行うが、具体的に、「カメラ取込」→「二値化」→「粒子解析」のモジュールの順序で処理フローを登録し、また、その後の処理を行う例について説明を行う。まず、図６のステップＳ１０７の詳細な処理について説明する。図８は、図６のステップＳ１０７におけるモジュールの「新規追加処理」の詳細な処理手順の一例を示すフローチャートである。
【００９０】
図６のステップＳ１０７の処理では、まず、図８のステップＳ２０１において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、ステップＳ１０４の入力において選択されたモジュールを特定する処理を行う。ここで、本例では、まず、最初の「カメラ取込」のモジュールが特定される。
【００９１】
続いて、ステップＳ２１０では、ステップＳ２０１で特定されたモジュールが反復処理か条件分岐処理かのモジュールであるかを判断する。この場合、反復処理か条件分岐処理かのモジュールの場合、ステップＳ２１１に進むが、今回は「カメラ取込」のモジュールであるのでＮＯ、つまり、ステップＳ２０２に進む。
【００９２】
ステップＳ２０２において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、ＣＲＴ１３０に、ステップＳ２０１で特定されたモジュールのパラメータ編集画面７０４を表示する処理を行う。そして、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、パラメータ編集画面７０４に関して、操作入力装置１２０による編集を受け付ける。なお、ステップＳ２０１で「カメラ取込」のモジュールが特定された場合には、図７に示す画像処理プログラム開発画面７００には、「カメラ取込」のモジュールに係るパラメータ編集画面７０４が表示されることになる。
【００９３】
また、パラメータ編集画面７０４では、各モジュールに関するパラメータ、及び、処理領域などの入力パラメータ（図５に示す入力パラメータ５０５）や処理結果を記憶する出力パラメータ（図５に示す出力パラメータ５０６)の設定が可能に構成されている。
【００９４】
続いて、ステップＳ２０３において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、操作入力装置１２０からの入力指示に基づいて、パラメータ編集画面７０４で編集されたパラメータを登録するか否かを判断する。具体的に、ここでは、図７に示すパラメータ編集画面７０４のＯＫボタン７０４１が選択された際に当該パラメータ編集画面７０４で編集されたパラメータを登録すると判断し、また、図８に示すパラメータ編集画面７０４の中止ボタン７０４２等が選択された際に当該パラメータ編集画面７０４で編集されたパラメータを登録しないと判断する。
【００９５】
ステップＳ２０３の判断の結果、パラメータ編集画面７０４で編集されたパラメータを登録する場合には（ステップＳ２０３／ＹＥＳ）、ステップＳ２０４に進む。
【００９６】
ステップＳ２０４に進むと、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、ステップＳ２０１及びＳ２０２の処理で得られた情報を、処理フロー・入出力パラメータテーブル３１２に１レコードとして追加する処理を行う。
【００９７】
例えば、図５に示す処理フロー・入出力パラメータテーブル３１２に、最初に「カメラ取込」のモジュールに関するレコードを追加する場合について説明する。
【００９８】
この場合、モジュール５０３として「カメラ取込」が設定され、インデックス（Ｉｎｄｅｘ）５０１として「１」が設定され、順序５０２として「１」が設定され、フロー登録名５０４として「Ｕ００００１」が設定される。また、例えば、出力パラメータ５０６として、結果画像の格納先である「画像バッファＡ」の情報（アドレス等）が設定される。ここで「カメラ取込」処理は、処理フローの第１番目のモジュールであるため、入力パラメータ５０５には、画像バッファの情報（アドレス等）は格納されない。ここで、再び、図８の説明に戻る。
【００９９】
ステップＳ２０４の処理が終了すると、続いて、ステップＳ２０５において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、ステップＳ２０１で特定したモジュールを処理フロー描画領域７０２に追加して描画（表示）する。なお、本実施形態においては、ステップＳ２０４の処理フロー・入出力パラメータテーブル３１２に関する処理とステップＳ２０５の処理フロー描画領域７０２の描画処理との処理の順番を、逆にする形態であってもよい。
【０１００】
続いて、ステップＳ２１４では、ステップＳ２０１で特定されたモジュールが並列分岐処理のモジュールであるかを判断する。この場合、並列分岐処理のモジュールの場合、ＹＥＳに進み処理は終了となるが、今回は「カメラ取込」のモジュールであるのでＮＯ、つまり、ステップＳ２０６に進む。
【０１０１】
ステップＳ２０６において、ＰＣ１１０のＣＰＵ１１１（例えばソースコード変換部３３０）は、ステップＳ２０５で処理フロー描画領域７０２に追加したモジュールを、モジュール・ソースコードマスタテーブル３１１を用いてソースコードに変換し、変換により得られたソースコードをソースコードテーブル３１３に記憶する。この際、ＰＣ１１０のＣＰＵ１１１（例えばソースコード変換部３３０）は、モジュール・ソースコードマスタテーブル３１１から読み出したソースコードに対して、必要に応じて、ステップＳ２０２で編集されたパラメータを反映させる等の修正を行って、得られたソースコードをソースコードテーブル３１３に記憶する。
【０１０２】
その後、ＰＣ１１０のＣＰＵ１１１（例えばコンパイル部３４０）は、ソースコードテーブル３１３に記憶されているソースコードから実行可能なオブジェクトコードを生成し、生成したオブジェクトコードをオブジェクトコードテーブル３１４に記憶する。この際、ＰＣ１１０のＣＰＵ１１１（例えばコンパイル部３４０）は、ソースコードテーブル３１３のソースコードをデバッグ・コンパイルして、デバッグ版のオブジェクトコードとしてオブジェクトコードテーブル３１４に記憶する。
【０１０３】
続いて、ステップＳ２０７において、ＰＣ１１０のＣＰＵ１１１（例えば（検証）実行部３５０）は、必要に応じて、処理フロー・入出力パラメータテーブル３１２の入力パラメータ５０５として記憶されている、前ステップの結果画像バッファに格納されている画像データを用いて、ステップＳ２０６で生成されたオブジェクトコードを実行する処理を行う。これにより、カメラ１４０からの画像データが処理結果画像として取得され、例えば、フロー作成部３２０は、当該処理結果画像を格納するバッファの情報を処理フロー・入出力パラメータテーブル３１２の出力パラメータ５０６に設定する。
【０１０４】
ただし、「カメラ取込」のモジュールの場合には、最初のステップであるため、入力パラメータ５０５に画像バッファの情報（アドレス等）が格納されていない。このため、最初の「カメラ取込」の場合には、単に、カメラ１４０からの画像データを取り込むことになる。したがって、ステップＳ２０７の実行処理に際しては、ステップＳ２０２で設定された入力パラメータや出力パラメータを参照して処理を実行し、結果画像表示ウィンドウ７０５に結果画像（カメラ１４０から取り込んだ画像データ）を表示することになる。
【０１０５】
続いて、ステップＳ２０８において、ＰＣ１１０のＣＰＵ１１１（例えば（検証）実行部３５０）は、ステップＳ２０４で追加したレコードの出力パラメータ５０６における画像バッファＡのアドレスに格納されている結果画像データに基づく結果画像を結果画像表示領域７０３に描画（表示）する。なお、結果画像表示領域７０３には、モジュールごとの処理結果画像を表示することになるが、これにより、開発者は、どこの処理に問題があるのか、どのモジュールに対して修正処理するべきかの判断をすることが可能となる。
【０１０６】
ステップＳ２０８の処理が終了した場合、或いは、ステップＳ２０３においてパラメータ編集画面７０４で編集されたパラメータを登録しないと判断された場合には（ステップＳ２０３／ＮＯ）、操作入力装置１２０から「新規追加処理」の終了が指示されたときは図８のフローチャートの処理を終了し、また、操作入力装置１２０から「新規追加処理」の継続が指示されたときはステップＳ２０１に戻って、ステップＳ２０１以降の処理を再度行うことになる。
【０１０７】
ここで、本例では、上述したように、「カメラ取込」→「二値化」→「粒子解析」のモジュールの順序で処理フローを登録するものであるため、以下に、同様の手順で、処理フローに「二値化」及び「粒子解析」のモジュールを追加する場合について説明する。なお、以下の説明では、上述した「カメラ取込」のモジュールにおける処理と異なる点を中心に説明を行う。
【０１０８】
「二値化」のモジュールを処理フローに追加する場合も、上述した「カメラ取込」の場合と基本的に同様の処理となるが、ステップＳ２０４では、新たに、図５に示すインデックス（Ｉｎｄｅｘ）５０１の「２」に、モジュール５０３として「二値化」が設定され、順序５０２として「２」が設定され、フロー登録名５０４として「Ｕ００００２」が設定される。また、入力パラメータ５０５としては、前ステップ（即ち、「カメラ取込」）の結果画像を格納する画像バッファＡの情報（アドレス等）が格納される。即ち、「二値化」のモジュールの入力パラメータ５０５には、前ステップである「カメラ取込」の入力パラメータ５０５に格納されている画像バッファの情報が格納される。
【０１０９】
続いて、ステップＳ２０５では、ステップＳ２０１で特定したモジュール（「二値化」）を処理フロー描画領域７０２に追加して描画（表示）する。そして、ステップＳ２０６では、ステップＳ２０５で追加登録したモジュールを、モジュール・ソースコードマスタテーブル３１１を用いてソースコードに変換し、変換により得られたソースコードをソースコードテーブル３１３に記憶して更新する。また、ソースコードテーブル３１３のソースコードをデバッグ・コンパイルして、これをオブジェクトコードテーブル３１４に記憶して更新する。
【０１１０】
続いて、ステップＳ２０７では、オブジェクトコードテーブル３１４に記憶されているオブジェクトコードを実行して、「二値化」のモジュールの入力パラメータ５０５を用いた二値化処理を行う。これにより、二値化処理がなされた画像データが処理結果画像として取得され、例えば、フロー作成部３２０は、当該処理結果画像を格納するバッファＢの情報及びその際の閾値（例えば数値＝９８）の情報を処理フロー・入出力パラメータテーブル３１２の出力パラメータ５０６に設定する。
【０１１１】
その後、ステップＳ２０８では、ステップＳ２０４で追加したレコードの出力パラメータ５０６における画像バッファＢのアドレスに格納されている画像データに基づく結果画像を結果画像表示領域７０３に描画（表示）する。
【０１１２】
また、「粒子解析」のモジュールを処理フローに追加する場合も、上述したモジュールの場合と基本的に同様の処理となるが、ステップＳ２０４では、インデックス（Ｉｎｄｅｘ）５０１の「３」に、モジュール５０３として「粒子解析」が設定され、順序５０２としてここでは「３」が設定され、フロー登録名５０４としてここでは「Ｕ００００３」が設定される。また、入力パラメータ５０５としては、前ステップ（ここでは、「二値化」）の結果画像を格納する画像バッファＢの情報（アドレス等）が格納される。
【０１１３】
続いて、ステップＳ２０５では、ステップＳ２０１で特定したモジュール（「粒子解析」）を処理フロー描画領域７０２に描画（表示）する。そして、ステップＳ２０６では、ステップＳ２０５で追加登録したモジュールを、モジュール・ソースコードマスタテーブル３１１を用いてソースコードに変換し、変換により得られたソースコードをソースコードテーブル３１３に記憶して更新する。また、ソースコードテーブル３１３のソースコードをデバッグ・コンパイルして、これをオブジェクトコードテーブル３１４に記憶して更新する。
【０１１４】
続いて、ステップＳ２０７では、オブジェクトコードテーブル３１４に記憶されているオブジェクトコードを実行して、「粒子解析」のモジュールの入力パラメータ５０５を用いた粒子解析処理を行う。これにより、粒子解析がなされた画像データが処理結果画像として取得され、例えば、フロー作成部３２０は、当該処理結果画像を格納するバッファＣの情報及びその際の粒子数（ここでは、例えば粒子数＝５１）の情報を処理フロー・入出力パラメータテーブル３１２の出力パラメータ５０６に設定する。
【０１１５】
その後、ステップＳ２０８では、ステップＳ２０４で追加したレコードの出力パラメータ５０６における画像バッファＣのアドレスに格納されている画像データに基づく結果画像を結果画像表示領域７０３に描画（表示）する。ここで、本例では、結果画像表示領域７０３には、例えば、図７に示すように、その左側から順番に、処理フロー描画領域７０２に設定された処理フローの順序（即ち、「カメラ取込」→「二値化」→「粒子解析」のモジュールの順序）に応じて、その処理結果画像が表示される。以上のようにして、図６のステップＳ１０７におけるモジュールの「新規追加処理」が行われる。
【０１１６】
次に、図６のステップＳ１０９の詳細な処理について説明する。
【０１１７】
図９は、図６のステップＳ１０９におけるモジュールのパラメータの「変更処理」の詳細な処理手順の一例を示すフローチャートである。ここでは、図８に示す処理により処理フロー描画領域７０２の処理フローに既に登録されている「二値化」のモジュールのパラメータを変更する例について説明する。
【０１１８】
図６のステップＳ１０９の処理では、まず、図９のステップＳ３０１において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、ステップＳ１０４の入力において選択された、既に処理フローとして登録されているモジュールを特定する処理を行う。ここで、本例では、「二値化」のモジュールが特定される。
【０１１９】
続いて、ステップＳ３０２において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、ＣＲＴ１３０に、ステップＳ３０１で特定されたモジュールのパラメータ編集画面７０４を表示する処理を行う。本例では、「二値化」のモジュールに係るパラメータ編集画面７０４が表示される。
【０１２０】
図１０は、本発明の実施形態を示し、パラメータ編集画面７０４の一例を示す模式図である。この図１０に示すパラメータ編集画面７０４は、「二値化」のモジュールのパラメータの編集を行うための画面であり、二値化のタイプを設定する二値化タイプ設定部１００１や、二値化の閾値を設定する閾値設定部１００２、ＯＫボタン７０４１及び中止ボタン７０４２等が設けられている。
【０１２１】
そして、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、パラメータ編集画面７０４に関して、操作入力装置１２０による編集を受け付ける。ここで、図１０に示す閾値設定部１００２の閾値が変更されると、当該閾値の変更に応じて、結果画像表示ウィンドウ７０５に表示している画像が随時更新されて表示される。
【０１２２】
続いて、ステップＳ３０３において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、操作入力装置１２０からの入力指示に基づいて、ステップＳ３０１で特定したモジュールのパラメータをパラメータ編集画面７０４で編集されたパラメータに変更するか否かを判断する。具体的に、ここでは、パラメータ編集画面７０４でパラメータが変更されて、図１０に示すパラメータ編集画面７０４のＯＫボタン７０４１が選択された際に、ステップＳ３０１で特定したモジュールのパラメータを変更すると判断する。
【０１２３】
ステップＳ３０３の判断の結果、ステップＳ３０１で特定したモジュールのパラメータをパラメータ編集画面７０４で編集されたパラメータに変更する場合には（ステップＳ３０３／ＹＥＳ）、ステップＳ３０４に進む。
【０１２４】
ステップＳ３０４に進むと、ＰＣ１１０のＣＰＵ１１１（例えばソースコード変換部３３０）は、ステップＳ３０３でパラメータを変更すると判断されたモジュール以降のモジュールについて、モジュール・ソースコードマスタテーブル３１１を用いてソースコードに変換し、変換により得られたソースコードをソースコードテーブル３１３に記憶して更新する。具体的に、本例では、「二値化」のモジュールのパラメータを変更するものであるため、図８の処理で登録された処理フロー、即ち、「カメラ取込」→「二値化」→「粒子解析」のモジュールのうち、「二値化」及び「粒子解析」のモジュールについてソースコード変換が行われる。この際、ＰＣ１１０のＣＰＵ１１１（例えばソースコード変換部３３０）は、モジュール・ソースコードマスタテーブル３１１から読み出したソースコードに対して、必要に応じて、ステップＳ３０２で編集されたパラメータを反映させる等の修正を行って、得られたソースコードをソースコードテーブル３１３に記憶する。このように、変更すると判断されたモジュール以降のモジュールについてのみソースコード変換処理することで、この後説明するコンパイル処理と合わせて、開発時間の短縮が可能となり、効率のよい画像処理のロジック（処理フロー）の構築を実現することができる。
【０１２５】
その後、ＰＣ１１０のＣＰＵ１１１（例えばコンパイル部３４０）は、ソースコードテーブル３１３に記憶されているソースコードから実行可能なオブジェクトコードを生成し、生成したオブジェクトコードをオブジェクトコードテーブル３１４に記憶する。この際、ＰＣ１１０のＣＰＵ１１１（例えばコンパイル部３４０）は、ソースコードテーブル３１３のソースコードをデバッグ・コンパイルして、デバッグ版のオブジェクトコードとしてオブジェクトコードテーブル３１４に記憶して更新する。
【０１２６】
続いて、ステップＳ３０５において、ＰＣ１１０のＣＰＵ１１１（例えば（検証）実行部３５０）は、必要に応じて、処理フロー・入出力パラメータテーブル３１２の入力パラメータ５０５として示されている画像バッファに格納されている画像データを用いて、ステップＳ３０４で生成されたオブジェクトコードを実行する処理を行う。具体的に、本例では、処理対象が「二値化」のモジュールであるため、図５に示す処理フロー・入出力パラメータテーブル３１２の入力パラメータ５０５として記憶されている画像バッファＡに格納されている画像データを用いて、ステップＳ３０４で生成されたオブジェクトコードを実行して二値化処理を行う。これにより、二値化処理がなされた画像データが処理結果画像として取得され、例えば、フロー作成部３２０は、当該処理結果画像を格納するバッファＢの情報及びその際の閾値の情報を処理フロー・入出力パラメータテーブル３１２の出力パラメータ５０６に設定する。
【０１２７】
続いて、ステップＳ３０６において、ＰＣ１１０のＣＰＵ１１１（例えば（検証）実行部３５０）は、処理フロー・入出力パラメータテーブル３１２の出力パラメータ５０６における画像バッファのアドレスに格納されている結果画像データに基づく結果画像を結果画像表示領域７０３に描画（表示）する。本例では、結果画像表示領域７０３には、例えば、その左側から順番に、処理フロー描画領域７０２に設定された処理フローの順序（即ち、「カメラ取込」→「二値化」→「粒子解析」のモジュールの順序）に応じて、その処理結果画像が表示されるが、例えば図８のステップＳ２０８の表示に対して、「二値化」のモジュール以降の処理結果画像が変更されて表示されることになる。
【０１２８】
ステップＳ３０６の処理が終了した場合、或いは、ステップＳ３０３において該当モジュールのパラメータをパラメータ編集画面７０４で編集されたパラメータに変更しないと判断された場合には（ステップＳ３０３／ＮＯ）、操作入力装置１２０から「変更処理」の終了が指示されたときは図９のフローチャートの処理を終了し、また、操作入力装置１２０から「変更処理」の継続が指示されたときはステップＳ３０１に戻って、ステップＳ３０１以降の処理を再度行うことになる。以上のようにして、図６のステップＳ１０９におけるモジュールのパラメータの「変更処理」が行われる。
【０１２９】
次に、図６のステップＳ１１１の詳細な処理について説明する。
【０１３０】
図１１は、図６のステップＳ１１１におけるモジュールの「移動処理」の詳細な処理手順の一例を示すフローチャートである。このモジュールの移動処理により、処理フローの順序が変更されることになる。
【０１３１】
図６のステップＳ１１１の処理では、まず、図１１のステップＳ４０１において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、ステップＳ１０４の入力において選択された、既に処理フローとして登録されているモジュールを特定する処理を行う。
【０１３２】
続いて、ステップＳ４０２において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、処理フロー描画領域７０２に描画（表示）されている処理フローについて、ステップＳ４０１で特定したモジュールを、ステップＳ１０４でドロップされたモジュールの間へ移動し、処理フロー描画領域７０２を再描画（再表示）する処理を行う。
【０１３３】
この際、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、ステップＳ４０１で特定したモジュールの移動処理に伴って、処理フロー・入出力パラメータテーブル３１２の変更処理も行う。ここでは、具体例を示さないが、まず、ステップＳ４０２で再描画された処理フロー描画領域７０２の処理フローにおけるモジュールの順序に従って、処理フロー・入出力パラメータテーブル３１２の順序５０２（更にはフロー登録名５０４）を変更する。次に、ステップＳ４０２で再描画された処理フロー描画領域７０２の処理フローにおけるモジュールの順序に従って、当該順序の変更に伴うモジュールの入力パラメータ５０５及び出力パラメータ５０６を変更する。例えば、移動対象のモジュールの入力パラメータ５０５には、１つ前の順序のモジュールにおける出力パラメータ５０６の画像バッファの情報を格納する。この際、移動対象のモジュールの出力パラメータ５０６は変更しないようにすることもできる。ただし、１つ後の順序のモジュールにおける入力パラメータ５０５は、移動対象のモジュールの出力パラメータ５０６の画像バッファの情報を格納する。
【０１３４】
続いて、ステップＳ４０３において、ＰＣ１１０のＣＰＵ１１１（例えばソースコード変換部３３０）は、処理フロー・入出力パラメータテーブル３１２において、順序５０２が変更されたモジュール以降のモジュールについて、モジュール・ソースコードマスタテーブル３１１を用いてソースコードに変換し、変換により得られたソースコードをソースコードテーブル３１３に記憶して更新する。この際、ＰＣ１１０のＣＰＵ１１１（例えばソースコード変換部３３０）は、ソースコードテーブル３１３において、順序の変更が行われたモジュールに対応するソースコードをいったん消去し、再度、ソースコードへの変
換を行ってソースコードテーブル３１３を更新する。
【０１３５】
その後、ＰＣ１１０のＣＰＵ１１１（例えばコンパイル部３４０）は、ソースコードテーブル３１３に記憶されているソースコードから実行可能なオブジェクトコードを生成し、生成したオブジェクトコードをオブジェクトコードテーブル３１４に記憶する。この際、ＰＣ１１０のＣＰＵ１１１（例えばコンパイル部３４０）は、ソースコードテーブル３１３のソースコードをデバッグ・コンパイルして、デバッグ版のオブジェクトコードとしてオブジェクトコードテーブル３１４に記憶して更新する。
【０１３６】
続いて、ステップＳ４０４において、ＰＣ１１０のＣＰＵ１１１（例えば（検証）実行部３５０）は、必要に応じて、処理フロー・入出力パラメータテーブル３１２の入力パラメータ５０５として示されている画像バッファに格納されている画像データを用いて、ステップＳ４０３で生成されたオブジェクトコードを実行する処理を行う。
【０１３７】
続いて、ステップＳ４０５において、ＰＣ１１０のＣＰＵ１１１（例えば（検証）実行部３５０）は、処理フロー・入出力パラメータテーブル３１２の出力パラメータ５０６における画像バッファのアドレスに格納されている結果画像データに基づく結果画像を結果画像表示領域７０３に描画（表示）する。本例では、結果画像表示領域７０３には、例えば、その左側から順番に、処理フロー描画領域７０２に設定された処理フローの順序に応じて、その処理結果画像が表示されることになる。
【０１３８】
ステップＳ４０５の処理が終了した場合には、操作入力装置１２０から「移動処理」の終了が指示されたときは図１１のフローチャートの処理を終了し、また、操作入力装置１２０から「移動処理」の継続が指示されたときはステップＳ４０１に戻って、ステップＳ４０１以降の処理を再度行うことになる。以上のようにして、図６のステップＳ１１１におけるモジュールの「移動処理」が行われる。
【０１３９】
次に、図６のステップＳ１１３の詳細な処理について説明する。
【０１４０】
図１２は、図６のステップＳ１１３におけるモジュールの「挿入処理」の詳細な処理手順の一例を示すフローチャートである。ここでは、図８に示す処理により処理フロー描画領域７０２に登録された処理フロー（「カメラ取込」→「二値化」→「粒子解析」）に対して、「粒子解析」のモジュールに前に、「モフォロジ」のモジュールを追加する「挿入処理」について説明する。即ち、ここでは、図７に示す処理フロー描画領域７０２のように、「カメラ取込」→「二値化」→「モフォロジ」→「粒子解析」とする例について説明する。
【０１４１】
図６のステップＳ１１３の処理では、まず、図１２のステップＳ５０１において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、ステップＳ１０４の入力においてドロップされた、新規にモジュールを挿入する挿入先を特定する処理を行う。ここで、本例では、「二値化」と「粒子解析」との間が挿入先として特定される。
【０１４２】
続いて、ステップＳ５０２において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、ステップＳ１０４の入力において選択されたモジュールを特定する処理を行う。ここで、本例では、「モフォロジ」のモジュールが特定される。なお、本実施形態においては、ステップＳ５０１の挿入先の特定処理とステップＳ５０２のモジュールの特定処理との処理の順番を、逆にする形態であってもよい。
【０１４３】
続いて、ステップＳ５０３において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、ＣＲＴ１３０に、ステップＳ５０２で特定されたモジュールのパラメータ編集画面７０４を表示する処理を行う。そして、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、パラメータ編集画面７０４に関して、操作入力装置１２０による編集を受け付ける。なお、本例では、図７に示す画像処理プログラム開発画面７００には、「モフォロジ」のモジュールに係るパラメータ編集画面７０４が表示されることになる。
【０１４４】
続いて、ステップＳ５０４において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、操作入力装置１２０からの入力指示に基づいて、パラメータ編集画面７０４で編集されたパラメータを登録するか否かを判断する。このステップＳ５０４における具体的な判断方法については、図８のステップＳ２０３と同様の方法を用いる。
【０１４５】
ステップＳ５０４の判断の結果、パラメータ編集画面７０４で編集されたパラメータを登録する場合には（ステップＳ５０４／ＹＥＳ）、ステップＳ５０５に進む。
【０１４６】
ステップＳ５０５に進むと、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、ステップＳ５０２及びＳ５０３の処理で得られた情報を、処理フロー・入出力パラメータテーブル３１２に１レコードとして追加する処理を行うとともに、ステップＳ５０１で特定された挿入先の情報に基づいて、処理フロー・入出力パラメータテーブル３１２の情報を変更して更新する。
【０１４７】
本例では、まず、図５に示すように、処理フロー・入出力パラメータテーブル３１２のインデックス（Ｉｎｄｅｘ）５０１の「４」に、挿入対象のモジュールである「モフォロジ」のモジュールの情報を追加する。具体的に、モジュール５０３として「モフォロジ」が設定され、順序５０２として「３」が設定され、フロー登録名５０４として「Ｕ００００３」が設定され、さらに、入力パラメータ５０５の画像バッファの情報（アドレス等）として前ステップ（「二値化」）の出力パラメータ５０６に示す画像バッファＢの情報（アドレス等）が設定され、出力パラメータ５０６の画像バッファの情報（アドレス等）として画像バッファＣの情報（アドレス等）が設定される。この際、処理フロー・入出力パラメータテーブル３１２にインデックス（Ｉｎｄｅｘ）５０１が「３」として登録されている「粒子解析」のモジュールの情報については、順序５０２が「３」から「４」に変更され、例えば、入力パラメータ５０５の画像バッファの情報（アドレス等）として画像バッファＣが設定され、出力パラメータ５０６の画像バッファの情報（アドレス等）として画像バッファＤが設定される。
【０１４８】
続いて、ステップＳ５０６において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、処理フロー描画領域７０２において、ステップＳ５０１で特定した挿入先に、ステップＳ５０２で特定したモジュールを追加して描画（表示）する。なお、本実施形態においては、ステップＳ５０５の処理フロー・入出力パラメータテーブル３１２に関する処理とステップＳ５０６の処理フロー描画領域７０２の描画処理との処理の順番を、逆にする形態であってもよい。
【０１４９】
続いて、ステップＳ５０７において、ＰＣ１１０のＣＰＵ１１１（例えばソースコード変換部３３０）は、処理フロー・入出力パラメータテーブル３１２において、順序５０２が変更されたモジュール以降（即ち、ステップＳ５０６で挿入されたモジュール以降）のモジュールについて、モジュール・ソースコードマスタテーブル３１１を用いてソースコードに変換し、変換により得られたソースコードをソースコードテーブル３１３に記憶して更新する。
【０１５０】
その後、ＰＣ１１０のＣＰＵ１１１（例えばコンパイル部３４０）は、ソースコードテーブル３１３に記憶されているソースコードから実行可能なオブジェクトコードを生成し、生成したオブジェクトコードをオブジェクトコードテーブル３１４に記憶する。この際、ＰＣ１１０のＣＰＵ１１１（例えばコンパイル部３４０）は、ソースコードテーブル３１３のソースコードをデバッグ・コンパイルして、デバッグ版のオブジェクトコードとしてオブジェクトコードテーブル３１４に記憶して更新する。
【０１５１】
続いて、ステップＳ５０８において、ＰＣ１１０のＣＰＵ１１１（例えば（検証）実行部３５０）は、必要に応じて、処理フロー・入出力パラメータテーブル３１２の入力パラメータ５０５として示されている画像バッファに格納されている画像データを用いて、ステップＳ４０３で生成されたオブジェクトコードを実行する処理を行う。具体的に、例えば、今回の処理で挿入された「モフォロジ」のモジュールについては、１つ前の処理のモジュール（本例では「二値化」のモジュール）の結果画像データ（画像バッファＢに格納されている結果画像データ）を用いて、ステップＳ５０７で生成されたオブジェクトコードを実行することになる。本例の場合、モフォロジ処理がなされた画像データが処理結果画像として取得され、例えば、フロー作成部３２０は、当該処理結果画像を格納するバッファの情報及びその際の粒子数（ここでは、例えば粒子数＝４６）の情報を処理フロー・入出力パラメータテーブル３１２の出力パラメータ５０６に設定することになる。
【０１５２】
続いて、ステップＳ５０９において、ＰＣ１１０のＣＰＵ１１１（例えば（検証）実行部３５０）は、処理フロー・入出力パラメータテーブル３１２の出力パラメータ５０６における画像バッファのアドレスに格納されている結果画像データに基づく結果画像を結果画像表示領域７０３に描画（表示）する。本例では、結果画像表示領域７０３には、例えば、その左側から順番に、処理フロー描画領域７０２に設定された処理フローの順序（即ち、「カメラ取込」→「二値化」→「モフォロジ」→「粒子解析」のモジュールの順序）に応じて、その処理結果画像が表示されることになる。以上のようにして、図６のステップＳ１１３におけるモジュールの「挿入処理」が行われる。
【０１５３】
次に、図６のステップＳ１１５の詳細な処理について説明する。
【０１５４】
図１３は、図６のステップＳ１１５における処理フローの「全体実行処理」の詳細な処理手順の一例を示すフローチャートである。
【０１５５】
図６のステップＳ１１５の処理では、まず、図１３のステップＳ６０１において、ＰＣ１１０のＣＰＵ１１１（例えばソースコード変換部３３０）は、処理フロー・入出力パラメータテーブル３１２に設定されている一連の処理フローに係るモジュールをソースコードに変換し、変換により得られたソースコードをソースコードテーブル３１３に記憶する。その後、ＰＣ１１０のＣＰＵ１１１（例えばコンパイル部３４０）は、ソースコードテーブル３１３に記憶されているソースコードから実行可能なオブジェクトコードを生成し、生成したオブジェクトコードをオブジェクトコードテーブル３１４に記憶する。この際、ＰＣ１１０のＣＰＵ１１１（例えばコンパイル部３４０）は、ソースコードテーブル３１３のソースコードをリリース・コンパイルして、リリース版のオブジェクトコードとしてオブジェクトコードテーブル３１４に記憶する。
【０１５６】
続いて、ステップＳ６０２において、ＰＣ１１０のＣＰＵ１１１（例えば（検証）実行部３５０）は、処理フロー・入出力パラメータテーブル３１２の入力パラメータ５０５として記憶されている結果画像バッファに格納されている画像データを用いて、ステップＳ６０１で生成されたオブジェクトコードを実行する処理を行う。これにより、画像処理等が施された複数の画像データが処理結果画像として取得され、例えば、フロー作成部３２０は、当該処理結果画像を格納するバッファの情報及びその際の数値の情報を処理フロー・入出力パラメータテーブル３１２の出力パラメータ５０６に設定する。
【０１５７】
続いて、ステップＳ６０３において、ＰＣ１１０のＣＰＵ１１１（例えば（検証）実行部３５０）は、処理フロー描画領域７０２に設定された処理フローの順序に応じて、各種の結果画像を結果画像表示領域７０３に描画（表示）する。
【０１５８】
ステップＳ６０３の処理が終了すると、図１３のフローチャートの処理を終了する。
【０１５９】
以上のようにして、図６のステップＳ１１５における処理フローの「全体実行処理」が行われる。
【０１６０】
以上説明したように、本実施形態に係る画像処理システム１００のＰＣ１１０（情報処理装置）では、以下に示す処理を行うようにしている。
【０１６１】
具体的に、ＰＣ１１０では、画像の処理に関する処理を示すモジュールと、各モジュールに対応するソースコードとが関連付けられているモジュール・ソースコードマスタテーブル３１１（図４）と、モジュールを複数組み合わせた処理フローの各モジュールと、当該各モジュールの実行の順序を示す情報、当該各モジュールの処理に係る入力情報及び出力情報とを含む処理フロー・入出力情報テーブル（図５の処理フロー・入出力パラメータテーブル３１２）を外部メモリ１１６（或いはＲＡＭ１１２）に記憶するようにしている（記憶ステップ）。
【０１６２】
そして、処理フローに対してモジュールに関する変更の指示がされた際に（例えば図６のＳ１０４／ＹＥＳ）、当該変更の指示に応じて、処理フロー・入出力パラメータテーブル３１２の情報を変更するようにしている（例えば、図８のＳ２０４、図１１のＳ４０２、図１２のＳ５０５等：変更ステップ）。
【０１６３】
そして、変更ステップにより変更された処理フロー・入出力パラメータテーブル３１２の情報及びモジュール・ソースコードマスタテーブル３１１の情報を用いて、モジュールごとにソースコードを生成するようにしている（例えば、図８のＳ２０６、図９のＳ３０４、図１１のＳ４０３、図１２のＳ５０７等：ソースコード生成ステップ）。その後、ソースコード生成ステップにより生成されたソースコードに基づいてオブジェクトコードを生成するようにしている（オブジェクトコード生成ステップ）。
【０１６４】
そして、生成されたオブジェクトコードを用いて、変更ステップにより変更された処理フロー・入出力パラメータテーブル３１２のモジュールごとに処理を実行するようにしている（例えば、図８のＳ２０７、図９のＳ３０５、図１１のＳ４０４、図１２のＳ５０８等：処理実行ステップ）。その後、処理実行ステップによる処理の実行により得られたモジュールごとの結果画像を表示装置であるＣＲＴ１３０の結果画像表示領域７０３に表示するようにしている（例えば、図８のＳ２０８、図９のＳ３０６、図１１のＳ４０５、図１２のＳ５０９等：結果画像表示ステップ）。
【０１６５】
かかる構成によれば、モジュールを複数組み合わせた処理フローの各モジュールごとに、その処理の結果画像を表示装置に表示するようにしたので、モジュールに関する変更の指示がされた際においても、変更対象のモジュールを特定することができ、画像処理に係るロジック（即ち、画像処理に係る処理フロー）の開発の負荷を軽減することができる。これにより、効率のよい画像処理のロジック（処理フロー）を構築することが可能となる。
【０１６６】
さらに、ＰＣ１１０では、処理フロー・入出力パラメータテーブル３１２に設定されている処理フローをＣＲＴ１３０の処理フロー描画領域７０２に表示し（処理フロー表示ステップ）、さらに、変更ステップにより変更された処理フロー・入出力パラメータテーブル３１２の処理フローをＣＲＴ１３０の処理フロー描画領域７０２に変更表示するようにしている（例えば、図８のＳ２０５、図１１のＳ４０２、図１２のＳ５０６等：処理フロー変更表示ステップ）。
【０１６７】
さらに、ＰＣ１１０では、処理フロー描画領域７０２の処理フローに対してモジュールに関する変更の指示がされた際に、当該モジュールのパラメータを編集するためのパラメータ編集画面７０４をＣＲＴ１３０に更に表示し（例えば、図８のＳ２０２、図９のＳ３０２、図１２のＳ５０３等：パラメータ編集画面表示ステップ）、前記ソースコード生成ステップでは、更に、パラメータ編集画面７０４により編集された当該モジュールのパラメータを用いて、ソースコードを生成するようにしている。
【０１６８】
次に、反復処理、条件分岐処理、並列分岐処理をはじめとする分岐処理モジュールを含む処理フローを登録し、また、その後の処理を行う例について説明する。
【０１６９】
具体的には、「二値化」処理をし、「モフォロジ」処理を３ 回行い、その後、「位置決め」処理を実施し、位置決めのマッチング個数「条件分岐」処理を行う。「条件分岐」処理内では、条件を満たす場合（ＹＥＳ）は、「回転補正」処理を、条件を満たさない場合（ＮＯ）は、「ミラー」処理を行う。続いて、「メディアン」処理を行い、その後「コード認識」処理と「欠陥検査」処理を並列して行い、最後に「ＩＯ
出力」処理を行う例を使い説明する。
【０１７０】
図１４は、本発明の実施形態を示し、画像処理プログラム開発画面１４００の一例を示す模式図である。この画像処理プログラム開発画面１４００は、例えばＧＵＩで構成されている。
【０１７１】
図１４に示す画像処理プログラム開発画面１４００には、利用可能な処理ユニット（即ち、「二値化」等の画像処理に係る各モジュール）を表示するツールボックス１４０４と、画像処理の実行順序（即ち、各モジュールの実行順序）をフローチャートで描画する処理フロー描画領域１４０１と、各画像処理（即ち、各モジュールの処理）で実行した結果画像を表示する結果画像表示領域１４０２と、メニューバー（不図示）及びツールバー１４０７と、画像処理プログラムの開発を終了する際に操作される閉じるボタン１４０８等が設けられている。また、図１４に示す画像処理プログラム開発画面１４００には、例えば、新規モジュールの登録時もしくはパラメータの編集時等に、処理フロー描画領域１４０１のフローチャートの各ステップ（即ち、各モジュール）で利用するパラメータを設定するパラメータ編集画面（不図示）と、そのパラメータの設定で実行された結果画像を表示する結果画像１４０３が表示される。
【０１７２】
なお、ツールボックス１４０４に「条件分岐処理」「反復処理」「並列分岐処理」など、分岐処理によるフローを制御するモジュールも含んでいる。これらを使った処理フローの例が、１４１０ａの「反復処理」、１４１１ａの「条件分岐処理」、１４１２ａの「並列分岐処理」である。ここで、結果画像表示領域１４０２は、フロー描画領域１４０１の各モジュールの結果画像である。これは、プレビュー画像や縮小画像であってもよい。たとえば、反復処理であれば、１４１０ｂのように表示し、反復処理を行った際の最終の結果画像を表示する。条件分岐処理であれば、１４１１ｂのように条件を満たしたノード（枝）の画像を表示し、条件を満たさないノードについては処理が行われないのでブラックアウトした画像を表示する。また、並列分岐処理であれば、１４１２ｂのように表示し、すべてのノードの結果画像を表示する。このとき、すべての処理フローの結果が結果画像表示領域１４０２に収まらない場合は、水平・垂直方向のスクロールバーを用いて表示領域を変更することとしてもよい。
【０１７３】
次に、分岐処理モジュールを含む場合の処理フロー・入出力パラメータテーブル３１２について図１８を用いて説明する。
【０１７４】
図１８は、「分岐処理」モジュールを含む場合の図３に示す処理フロー・入出力パラメータテーブル３１２の一例を示す模式図Ｔ１８００である。
【０１７５】
処理フロー・入出力パラメータテーブルＴ１８００は、図１８に示すように、インデックス（Ｉｎｄｅｘ）１８０１ごとに、画像処理に係るモジュール１８０３と、各モジュール１８０３の順序１８０２と、各モジュール１８０３のフロー登録名１８０４と、各モジュール１８０３における入力パラメータ１８０５及び出力パラメータ１８０６が関連付けられている。入力パラメータ１８０５は、各モジュールで使用する画像バッファや処理領域等を示す。出力パラメータ１８０６は、各モジュールが実行された際の結果画像バッファや閾値等を示す。次ステップ１８０７は、次に処理されるべきステップのインデックス（Ｉｎｄｅｘ）１８０１を示す。なお、この項目は、複数のインデックス（Ｉｎｄｅｘ）を持つこともある。また、分岐参照１８０８は、モジュール１８０３に「反復処理」モジュール、「条件分岐処理」モジュールを指定した際に、各条件（ノード）が次にどのステップを処理するかを指定する条件式テーブルを示す。
【０１７６】
なお、処理フロー・入出力パラメータテーブルＴ１８００において、インデックス（Ｉｎｄｅｘ）１８０１の２および３は反復処理、インデックス（Ｉｎｄｅｘ）１８０１の５から７は条件分岐処理、インデックス（Ｉｎｄｅｘ）１８０１の９および１０は並列分岐処理の一例である。
【０１７７】
「分岐処理」における詳細な処理条件などを登録する条件式テーブルＴ１９００について図１９を用いて説明する。
【０１７８】
図１９は条件式テーブルＴ１９００の一例であり、インデックス（Ｉｎｄｅｘ）１９０１、条件式１９０４、閾値１（１９０５）及び閾値２（１９０６）、次ステップ１９０７を登録する。なお、この条件式テーブルＴ１９００は、「分岐処理」モジュール１つに対してテーブルを１つ作成する。
【０１７９】
特徴量１９０３は、結果を比較する際に用いる特徴量、例えば、マッチングの検出個数や粒子解析の粒子数などを登録する。また条件式列１９０４には、Ｇｒｅａｔｅｒ
／ ＧｒｅａｔｅｒＯｒＥｑｕａｌ ／Ｅｑｕａｌ
／ ＬｅｓｓＯｒＥｑｕａｌ ／ Ｌｅｓｓ ／ ＩｎＲａｎｇｅ ／ ＯｕｔＲａｎｇｅなどが、閾値１列１９０５及び閾値２列１９０６には、特徴量と比較する値を登録する。次ステップ列１９０７には、条件ごとに次に行うステップ（処理フロー・入出力パラメータテーブルのインデックス（Ｉｎｄｅｘ）１８０１）を設定する。複数の条件がある場合には、条件式テーブルＴ１９００の行数を追加して対応する。次に、「分岐処理」モジュールを含む場合のＰＣ１１０による制御方法の処理手順について説明する。
【０１８０】
まず、「二値化」と「モフォロジ」のモジュールについて、図８で説明した手順に従い新規追加処理するが、詳細の説明は重複するので省略する。続いて、「モフォロジ」処理を３
回実施する「反復処理」モジュールを、処理フローとして図８の手順に従い、新規追加登録する処理を説明する。ステップＳ２０１では、選択されたモジュールを特定する。
【０１８１】
ステップＳ２１０では、ステップＳ２０１で特定されたモジュールが「反復処理」と判断した場合、ステップＳ２１１に進み、分岐処理モジュールの登録処理を行う。この分岐処理モジュールの登録処理について図１６を用いて説明する。図１６は、分岐処理モジュールを含む場合の図１に示すＰＣ１１０のＣＰＵ１１１による制御方法の処理手順の一例を示すフローチャートである。
【０１８２】
ステップＳ８０１では、処理フロー・入出力パラメータテーブルＴ１８００のインデックス（Ｉｎｄｅｘ）１８０１の１および２、さらに、登録対象のモジュールに対して出力パラメータ１８０６を元に、選択可能な特徴量を特定する。すなわち、この場合は、反復処理の「カウンタ」のみであるため、「カウンタ」を選択可能な特徴量としてＲＡＭ１１２に記憶する。
【０１８３】
ステップＳ８０２では、条件式入力画面を表示する。図１５は、条件式入力画面１５００の一例であり、特徴量を指定する特徴量リストボックス１５０１や、判断するための条件を設定するための条件式１５０２および閾値入力ボックス１５０３を有する。特徴量リストボックス１５０１はこの後の判断処理に対してとり得る特徴量を選択可能にリスト表示している。
【０１８４】
このとき、ＲＡＭ１１２に選択可能な特徴量として「カウンタ」が記憶されているので、図１５の特徴量リスト１５０１には、「カウンタ」−「カウント数」のみを表示するものでもよい。また、条件式１５０２においても、設定可能な項目のみを表示するものでもよい。
【０１８５】
ステップＳ８０３では、条件式入力画面１５００の所定の項目に対して、入力装置１２０から値が入力されたか否かを判断する。ステップＳ８０３で、入力装置１２０から入力がない（ステップＳ８０３／NO）の場合、入力待ちとする。一方、ステップＳ８０３において、入力装置１２０から入力があった（ステップＳ８０３／ＹＥＳ）場合、ステップＳ８０４へ進む。本例では、特徴量を「カウンタ数」、条件式を「＜」、下限値を「３」として入力されたものとして説明する。
【０１８６】
ステップＳ８０４では、ＰＣ１１０のＣＰＵ１１１は、ステップＳ８０３で入力された値が妥当か否かの判断をする。
【０１８７】
ここで判断する項目としては、モジュールごとにあらかじめ設定された条件式入力画面１５００の下限値１５０３、および上限値１５０４に入力された数値や文字列である。たとえば、上で説明している反復処理の場合、比較する特徴量はカウンターカウント数で数値となり、「０」や「負」の値が入力されると、入力された値が正しくないと判定する。また、二値化処理の閾値と比較する場合は、処理バッファの最大輝度値、つまり８ビットであれば数値で２５５、を超える値が入力されると正しくない値と判定する。
【０１８８】
ステップＳ８０５では、ステップＳ８０４で特定した値が正しいか否かを判定する。ステップＳ８０５にて判定した結果、値が正しくないと判断した（ステップＳ８０５／ＮＯ）場合は、入力装置１２０からの入力待ちとする。一方、値が正しいと判断した（ステップＳ８０５／ＹＥＳ）場合、ステップＳ８０６に進む。
【０１８９】
ステップＳ８０６では、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、操作入力装置１２０からの入力指示に基づいて、条件式入力画面１５００で編集されたパラメータを登録するか否かを判断する。具体的に、ここでは、図１５に示す条件式入力画面１５００の設定ボタン１５０５が選択された際に当該条件式入力画面１５００で編集されたパラメータを登録すると判断し、また、図１５に示す条件式入力画面１５００のキャンセルボタン１５０６等が選択された際に当該条件式入力画面１５００で編集されたパラメータを登録しないと判断する。ここでステップＳ８０６／ＹＥＳはステップＳ２０３／ＹＥＳに対応し、ステップＳ８０６／ＮＯはＳ２０３／ＮＯに対応する。つまり、ステップＳ８０６／ＹＥS の場合は、ステップＳ８０７へ進み、Ｓ８０６／ＮＯの場合は、反復処理モジュールを登録せずに終了する。
【０１９０】
ステップＳ８０７では、ＰＣ１１０のＣＰＵ１１１はＲＡＭ１１２上に条件式テーブルＴ１９００を、新規に作成する。
【０１９１】
ステップＳ８０８では、ステップＳ８０７で作成した条件式テーブルＴ１９００に、レコードを追加する。このとき、まず、インデックス（Ｉｎｄｅｘ）１９０１を「１」として1 コード追加し、条件を満たす場合の設定値を書き込む。つまり、特徴量１９０３に、反復処理のカウント数
である「Ｕ００００３−Ｃｏｕｎｔ」、条件式１９０４に「Ｌｅｓｓ」、閾値１の１９０５には「３」を登録する。なお、条件式１９０４で「Ｌｅｓｓ」、が設定されているので閾値２の１９０６には、「ＮＵＬＬ」を設定する。次ステップ１９０７には、反復処理を行う最初の処理モジュールを指定することになり、ここでは、「Ｕ００００２」の「モフォロジ」モジュールを示す、処理フロー・入出力パラメータテーブルＴ１８００のインデックス（Ｉｎｄｅｘ）１８０１である「３」を登録する。さらに、条件式テーブルT１９００のインデックス（Ｉｎｄｅｘ）１９０１を「２」として、１レコード追加し、特徴量１９０３に「Ｕ００００３-Ｃｏｕｎｔ」、条件式１９０４「Ｅｌｓｅ」とする。次ステップには、反復処理を終えて次に実行するステップを設定することになるが、現段階ではまだ次にステップが登録されていないため、次ステップ１９０７は一時的に「ＮＵＬＬ」とする。
【０１９２】
図８の説明に戻る。Ｓ２１２では、処理フロー・入出力パラメータテーブルＴ１８００の更新も行うが、インデックス（Ｉｎｄｅｘ）１８０１が「３」の行の次ステップ８０５に条件式テーブルＴ１９００の次ステップ１９０６の値「２」を、また参照する条件式テーブルであるT１９００を分岐参照１８０８に登録する。
【０１９３】
ステップＳ２１３では、処理フロー描画領域１４０１へ反復処理モジュールを描画し、「反復処理」モジュールの登録処理が一旦終了することになる。なお、ここでは、反復処理を行う最初の処理モジュールである「モフォロジ」モジュールの入力側に矢印を指すことになる。次に、「反復処理」モジュールの後に「位置決め」モジュールを処理フローとして図８の手順に従い、新規追加登録する処理を説明する。ここで、ステップＳ２０１からステップＳ２０３は同様の処理である。
【０１９４】
ステップＳ２０４では、反復処理モジュールに続くモジュールの登録に該当するので、条件式テーブルＴ１９００のインデックス（Ｉｎｄｅｘ）１９０１が「２」の次ステップ１９０７に、処理フロー・入出力パラメータテーブルＴ１８００において「位置決め」処理を表すインデックス（Ｉｎｄｅｘ）１８０１の「４」を登録する。あわせて、処理フロー・入出力パラメータテーブルＴ１８００のインデックス（Ｉｎｄｅｘ）１８０１が「３」の次ステップ１８０７に「４」を登録する。しかし、インデックス（Ｉｎｄｅｘ）１８０１が「３」の次ステップ１８０７には、すでに「２」が登録されているので、カンマ「，」等を用いて接続し、登録することとする。つまり、インデックス（Ｉｎｄｅｘ）１８０１が「３」の次ステップ１８０７には、「２，４」と登録する。
【０１９５】
ステップＳ２０５以降の処理は図８の先の説明と同様であるが、ステップＳ２０６のソース変換の処理は「反復処理」及び「位置決め」のモジュールについてモジュール・ソースコードマスタテーブル３１１を用いてソースコードに変換し、変換により得られたソースコードをソースコードテーブル３１３に記憶して更新する。また、ソースコードテーブル３１３のソースコードをデバッグ・コンパイルして、これをオブジェクトコードテーブル３１４に記憶して更新する。
【０１９６】
なお、結果画像表示領域１４０２に表示される結果画像は、反復処理の最終の結果画像を表示する。また結果画像表示領域１４０２において、反復処理モジュールをダブルクリック、もしくはコンテキストメニューを選択されると、反復処理経過画像ウィンドウを表示する。図２０で反復処理経過画像ウィンドウの一例を示す。本ウィンドウの一番左の画像が、反復処理の全ての回数の処理結果をRAM１１２に記憶したうえで、最初（1
回目）の結果画像を表し、右に移るに従い、反復処理の回数をインクリメントした結果画像となる。また、パラメータ変更処理がなされると、変更処理前の反復処理結果をRAM１１２に記憶したまま、新たに、全ての回数の処理結果をRAM１１２に記憶する。そのうえで、上段にパラメータ変更前、下段にパラメータ変更後の画像を表示する。なお本ウィンドウは、スクロールバーの移動指示を受け付け、表示する画像を切り替えるようにしてもよい。以上で、「反復処理」モジュールの登録およびプログラムの作成が終了することになる。
【０１９７】
次に、「条件分岐処理」モジュールを含む場合のＰＣ１１０による制御方法の処理手順について説明する。具体的には、先の位置決め処理で行われた結果を用いて、条件を満たす場合（ＹＥＳ）は、「回転補正」処理を、条件を満たさない場合（NO）は、「ミラー」処理を行う場合を例にして説明する。ステップＳ２０１では、選択されたモジュールを特定する。
【０１９８】
ステップＳ２１０では、ステップＳ２０１で特定されたモジュールが「条件分岐処理」と判断し、ステップＳ２１１にて「条件分岐処理」モジュールの登録処理を行う。この「条件分岐処理」モジュールの登録処理について図１６を用いて説明するが、「反復処理」モジュールの登録処理と重複する説明は省略する。なお、「条件分岐処理」で使用する条件式テーブルについては、図１９のＴ１９１０で一例を示す。
【０１９９】
ステップＳ８０１では、処理フロー・入出力パラメータテーブルＴ１８００の出力パラメータ１８０６を元に、現在のステップまでで選択可能な特徴量を特定する。ここでは、ＰＣ１１０のＣＰＵ１１１は、出力パラメータ１８０６を参照するが、本例では、選択できる特徴量としては、二値化の閾値「Ｕ００００１−Ｔｈｒｅｓｈ」，反復処理の回「Ｕ００００３−Ｃｏｕｎｔ」、位置決めの個数「Ｕ００００４−Ｎｕｍ」である。
【０２００】
ステップＳ８０２では、ステップＳ８０１で特定した特徴量をもとに条件式入力画面１５００を表示し、入力を受け付ける。ここでは、特徴量１９１３を前ステップの位置決めの個数「Ｕ００００４−Ｎｕｍ」、条件式１９１４を「==」、閾値１の１９１４を「１」の入力があったものとする。
【０２０１】
ステップＳ８０３からステップＳ８０５は先の説明と同様である。
【０２０２】
ステップＳ８０６では、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、操作入力装置１２０からの入力指示に基づいて、条件式入力画面１５００で編集されたパラメータを登録するか否かを判断する。具体的に、ここでは、図１５に示す条件式入力画面１５００の設定ボタン１５０５が選択された際に当該条件式入力画面１５００で編集されたパラメータを登録すると判断し（ステップＳ８０６／YES）次のステップに進む。一方、キャンセルボタン１５０６が選択された際には、当該条件式入力画面１５００で編集されたパラメータを登録しないと判断し（ステップＳ８０６／NO）、終了する。
【０２０３】
ステップＳ８０７では、ＰＣ１１０のＣＰＵ１１１は、RAM１１２上に条件式テーブルＴ１９１０を、新規に作成する。
【０２０４】
ステップＳ８０８では、ステップＳ８０７で作成した条件式テーブルＴ１９１０に、レコードを追加する。このとき、まず、インデックス（Ｉｎｄｅｘ）１９１１を「１」として1 コード追加し、条件を満たす場合の設定値を書き込む。特徴量１９１３に、位置決め処理の個数である「Ｕ００００４−Ｎｕｍ」を、条件式１９１４に「Ｅｑｕａｌ」、閾値１の１９１５には「１」を登録する。なお、条件式１９１４で「Ｌｅｓｓ」が設定されているので閾値２の１９１６には、「ＮＵＬＬ」を設定する。次ステップ１９１７には、「条件分岐処理」を行った際の分岐先の処理モジュールを指定することになるが、ここではまだ次ステップが登録されていないため、一時的に「ＮＵＬＬ」とする。
【０２０５】
さらに、条件式テーブルT１９１０にインデックス（Ｉｎｄｅｘ）１９０１を「２」として、1 レコード追加し、特徴量１９１３に「Ｕ００００４−Ｎｕｍ」、条件式１９１４を「Ｅｌｓｅ」とする。同様に次ステップには、「条件分岐処理」を終えて次に実行するステップを設定することになるが、現段階ではまだ次にステップが登録されていないため、次ステップ１９１７は一時的に「ＮＵＬＬ」とする。
【０２０６】
図８の説明に戻る。ステップＳ２１２では、処理フロー・入出力パラメータテーブルＴ１８００の更新も行うが、インデックス（Ｉｎｄｅｘ）１８０１が「４」の行に参照する条件式テーブルＴ１９１０を分岐参照１８０８に登録する。本モジュールでは、画像に対して処理を行わないので、入力パラメータ１８０５と出力パラメータ１８０６の画像バッファを同じポインタを指定する。
【０２０７】
ステップＳ２１３では、処理フロー描画領域１４０１へ条件分岐モジュールを描画し、「条件分岐処理」モジュールの登録が一旦終了することになる。
【０２０８】
次に、「条件分岐」モジュールの後に、条件分岐内のノードの処理を追加登録する処理を  説明する。ここでは、位置決めの個数が「１」の場合には回転補正、「１」以外の場合にはミラー変換を行うものとし、「回転補正」処理のモジュールと「ミラー変換」処理のモジュールをそれぞれのノードに追加登録する処理について説明する。なお、ステップＳ２０１からステップＳ２０４は同様の処理であるので説明は省略する。
【０２０９】
ステップＳ２０４では、条件分岐モジュールに続くモジュールの登録に該当するので、条件式テーブルＴ１９１０で条件を満たす場合の次ステップ、つまりインデックス（Ｉｎｄｅｘ）１９１１が「１」の次ステップ１９１７には、「６」を登録する。一方、条件を満たさない場合、つまりインデックス（Ｉｎｄｅｘ）１９１１が「２」の次ステップ１９１７には「７」を登録する。あわせて、処理フロー・入出力パラメータテーブルＴ１８００のインデックス（Ｉｎｄｅｘ）１８０１が「５」の次ステップ１８０７には、「６，７」が登録されることになる。
【０２１０】
なお、ここで、処理フロー・入出力パラメータテーブルＴ１８００においては、インデックス（Ｉｎｄｅｘ）１８０１の「６」の「回転補正」、および「７」の「ミラー変換」の入力パラメータ１８０５の画像バッファは、インデックス（Ｉｎｄｅｘ）１８０１の「５」の「条件分岐処理」の出力パラメータ１８０６の画像バッファのポインタを使用することになる。つまり「条件分岐処理」の前ステップであるインデックス（Ｉｎｄｅｘ）１８０１の「４」の位置決めの出力画像１８０７を使用することになる。
【０２１１】
ステップＳ２０５以降の処理は図８の先の説明と同様である。が、ステップＳ２０６のソース変換の処理は「条件分岐処理」、「回転処理」、「ミラー処理」のモジュールについてモジュール・ソースコードマスタテーブル３１１を用いてソースコードに変換し、変換により得られたソースコードをソースコードテーブル３１３に記憶して更新する。また、ソースコードテーブル３１３のソースコードをデバッグ・コンパイルして、これをオブジェクトコードテーブル３１４に記憶して更新する。以上で、「条件分岐処理」モジュールの登録およびプログラムの作成が終了することになる。
【０２１２】
次に、「並列分岐処理」を含む場合のＰＣ１１０による制御方法の処理手順について説明する。具体的には、「メディアン」処理に続いて、「コード認識」処理と「欠陥検査」処理を並列して行い、最後に「IO 出力」処理を行う例を使い説明する。まず、「メディアン」のモジュールの登録について図８で説明した手順に従い新規追加処理するが、詳細の説明は重複するので省略する。引き続き、「並列分岐処理」のモジュールの登録について図８で説明した手順に従い新規追加処理する。
【０２１３】
ステップＳ２０１では、選択されたモジュールを特定する。
【０２１４】
ステップＳ２１０では、ステップＳ２０１で特定されたモジュールが並列分岐と判断し、ステップＳ２０２のパラメータ編集画面表示へと進む。
【０２１５】
ステップＳ２０２では並列分岐処理のためのパラメータ編集画面を開く。図２３にパラメータ編集画面の一例であり、分岐設定２３０１で並列して処理を行うノード（枝）数を指定する並列分岐ウィンドウ２３００を示す。ここでは、「２」を入力する。
【０２１６】
ステップＳ２０３において、ＰＣ１１０のＣＰＵ１１１（例えばフロー作成部３２０）は、操作入力装置１２０からの入力指示に基づいて、並列分岐ウィンドウ２３００で編集されたパラメータを登録するか否かを判断する。具体的に、ここでは、図２３に示す並列分岐ウィンドウ２３００の設定ボタン２３０２が選択された際に当該並列分岐ウィンドウ２３００で編集されたパラメータを登録すると判断し、また、図２３に示す並列分岐ウィンドウ２３００のキャンセルボタン２３０３等が選択された際に当該並列分岐ウィンドウ２３００で編集されたパラメータを登録しないと判断する。
【０２１７】
ステップＳ２０４では、並列分岐ウィンドウ２３００で指定した分岐の数だけ、処理フロー・入出力パラメータテーブルＴ１８００にレコードを追加する。ここでは、ノード数は２であるので、インデックス（Ｉｎｄｅｘ）１８０１に、「９」と「１０」を追加し、それぞれの次ステップ１８０６は「ＮＵＬＬ」を設定する。
【０２１８】
ステップＳ２０５では、処理フロー描画領域７０２に並列分岐モジュールを描画するが、ここではまだ各ノード（枝）内に処理を含んでいない接続線のみを描画する。なお、このとき、ステップＳ２０４で処理フロー・入出力パラメータテーブルＴ１８００に追加したインデックス（Ｉｎｄｅｘ）の小さい数字を、分岐モジュールの左に割り当て、インデックス（Ｉｎｄｅｘ）が大きくなるに従い、右のノード（枝）を示すものとする。ステップＳ２１４では、ステップＳ２０１で特定されたモジュールが並列分岐と判断しているので、処理を抜ける。
【０２１９】
次に、「並列分岐処理」モジュールの後に、並列処理の各ノードの処理を追加登録する処理を説明する。ここでは、例として「コード認識」と「欠陥検査」のモジュールを追加登録する処理について説明する。なお、ステップＳ２０１からステップＳ２０３は同様の処理であるので説明は省略する。
【０２２０】
ステップＳ２０４では、処理フロー・入出力パラメータテーブルＴ１８００のインデックス（Ｉｎｄｅｘ）１８０１が「９」にコード認識を、インデックス（Ｉｎｄｅｘ）１８０１が「１０」に欠陥検査を登録されるものとする。このとき、各ノードで使用される画像は前ステップのメディアン処理後の画像、つまり処理フロー・入出力パラメータテーブルＴ１８００のインデックス（Ｉｎｄｅｘ）１８０１が「８」の出力パラメータ１８０６で指定されている画像バッファとなり、インデックス（Ｉｎｄｅｘ）１８０１が「９」および「１０」の入力パラメータ１８０５の画像バッファに指定する。この時点では、次ステップが登録されていないため、次ステップ１８０７には「ＮＵＬＬ」を設定する。また、分岐参照も使用しないため、「ＮＵＬＬ」と設定する。さらに、前ステップのインデックス（Ｉｎｄｅｘ）１８０１が「８」の次ステップ１８０７には、分岐先が２つとなり、「９，１０」と設定されることになる。
【０２２１】
ステップＳ２０５以降の処理は図８の先の説明と同様である。が、ステップＳ２０６のソース変換の処理は「並列分岐処理」、「コード認識」と「欠陥検査」のモジュールについてモジュール・ソースコードマスタテーブル３１１を用いてソースコードに変換し、変換により得られたソースコードをソースコードテーブル３１３に記憶して更新する。また、ソースコードテーブル３１３のソースコードをデバッグ・コンパイルして、これをオブジェクトコードテーブル３１４に記憶して更新する。図２１に並列処理を実行する際の、処理手順の詳細について説明する。ここで、ステップＳ１４０２ａ及びステップＳ１４０２ｂは、並列分岐処理１４１２ａで示すように「コード認識」処理と「欠陥検査」処理を示す。
【０２２２】
ステップＳ１４０１では、前ステップの結果を各ノードの次ステップへ割り振るための前処理やノード処理フラグテーブルの作成などを行う。図２２は、ノード処理フラグテーブルＴ２２００の一例である。
【０２２３】
ノード処理フラグテーブルＴ２２００をRAM１１２上に新規に作成する。あわせて並列で処理するノード数のコードを追加する。その後、各インデックス（Ｉｎｄｅｘ）１８０１のノード名に「ＮＯＤＥｘ」、終了フラグに「０」を登録する。また、処理フロー・入出力パラメータテーブルＴ１８００のインデックス（Ｉｎｄｅｘ）１８０１が「９」および「１０」の分岐参照１８０８には、ノード処理フラグテーブルＴ２２００を指定する。なお、終了フラグに登録する値の一例として、完了を「１」とし、未完了を「０」とする。図２２にノード処理フラグの一例を示す。
【０２２４】
ステップＳ１４０２ａでは、処理フロー・入出力パラメータテーブルにインデックス（Ｉｎｄｅｘ）が「９」として登録されている処理モジュール（コード認識処理）を実行する。
続いて、ステップＳ１４０３ａでは、ＰＣ１１０のＣＰＵ１１１は、RAM１１２上のノード処理フラグテーブルＴ２２００の終了フラグを「１」と設定する。
【０２２５】
同様に、ステップＳ１４０２ａが開始されると同時に、ノード（枝）２において、ステップＳ１４０２ｂ（欠陥検査処理）からＳ１４０３ｂの処理を順次実行し、ノード処理フラグテーブルＴ２２００に終了フラグを更新する。ノード（枝）が３つ以上となる場合も、同様の手順で処理を行う。
【０２２６】
次に、ステップＳ１４０４では、ＰＣ１１０のＣＰＵ１１１は、ノード処理フラグテーブルＴ２２００の終了フラグを調べ、すべてのノードの処理が完了しているかの判定処理を行う。
【０２２７】
ステップＳ１４０４の判断の結果、ステップＳ１４０５で判定した処理内容が、「完了」である場合には（ステップＳ１４０５／ＹＥＳ）、並列分岐処理を終了し、処理フローのステップに戻る。一方、「完了」でない場合には（ステップＳ１４０５／ＮＯ）、ステップＳ１４０４に戻り、実行中のすべてのノードが完了するのを待機する。つまりこの処理により各ノードの処理を同期することになり、その後の処理タイミングを揃えることが可能となる。最後に、ステップＳ１０７の手順に従い、「Ｉ／Ｏ
出力」処理のモジュールを追加登録する。
【０２２８】
ここで、並列分岐処理の次のステップを登録したので、ステップＳ２０４において、条件式テーブルＴ１９００のインデックス（Ｉｎｄｅｘ）１９０１が「９」および「１０」の次ステップ１９０７に、処理フロー・入出力パラメータテーブルＴ１８００において「Ｉ／Ｏ
出力」処理を表すインデックス（Ｉｎｄｅｘ）１９０１の「１１」を登録する。
【０２２９】
本ステップが、処理フローの最終ステップとなるため、処理フロー・入出力パラメータテーブルＴ１８００のインデックス（Ｉｎｄｅｘ）１８０１が「１１」の次ステップ１８０７は「ＮＵＬＬ」となる。なお、次ステップ１８０７が「ＮＵＬＬ」となるステップが最終ステップとなる。
【０２３０】
図１７に、すべてのモジュールにおいて、パラメータを変更した際に、前回のパラメータでの処理結果画像と今回の処理結果画像の画像比較ウィンドウを示す。結果画像表示領域の各モジュールの結果画像をダブルクリック、もしくはコンテキストメニューを選択することで、画像比較ウィンドウを表示する。
【０２３１】
たとえば、図１７では、ステップＳ１０９の手順に従い、処理フロー中の「二値化」処理モジュールのパラメータ（閾値）を「１２８」から「６４」に変更した場合の一例を示す。
【０２３２】
前回結果画像５００１は、前回のパラメータ（閾値＝１８２）の処理結果画像を表わし、今回結果画像５００２は今回の設定パラメータ（閾値＝６４）での処理結果画像を表わす。なお、結果画像はＲＡＭ１１２、もしくは外部メモリ１１６のどちらかに保持しておくものとする。
【０２３３】
以上説明では新規追加処理を例に説明をしたが、モジュールの移動処理や挿入処理、及び、パラメータの変更処理等についても、以上説明および図９等を用いて説明したときと重複するため説明は省略する。
【０２３４】
＜第２の実施例＞
以下、本願発明の第２の実施例の説明をする。この実施例では、前処理のうち、一部又は全部の処理を図２の画像入力コントローラが備えるＣＰＵ（近傍演算処理チップやＦＰＧＡなどのハードウェアを含む）に行わせることにより、すなわち、一連の前処理を情報処理装置のＣＰＵと画像入力装置のＣＰＵとに処理分担をさせることで、処理の高速化を図るためのプログラムを作成するためのフローチャートの作成処理について説明する。
【０２３５】
図２４は、第２の実施例におけるモジュールの新規追加処理の詳細な手順の一例を示すフローチャートである。尚、第１の実施例におけるモジュールの新規追加処理（図８）と同様の処理を行うステップには、図８と同じステップ番号を付与し、処理の詳細な説明は割愛する。
【０２３６】
図２４のステップＳ２０２において表示されるパラメータ表示画面には、前処理を行う処理主体が、プログラムを実行する情報処理装置のＣＰＵであるかそれとも画像入力コントローラのＣＰＵであるかを指定するために用いられる入力フィールド（処理主体入力フィールド）が設けられており、この処理主体入力フィールドに設定された入力内容に従い、ＣＰＵ１１１は処理主体がＣＰＵであるか、それとも画像入力コントローラであるかを判定する（ステップＳ２４０１）。
【０２３７】
ステップＳ２４０１でＣＰＵ１１１がＹＥＳと判定した（情報処理装置のＣＰＵにより処理する）場合には、処理フロー・入出力パラメータテーブル（図２５）の当該処理を示すレコードの処理主体フィールドに「０」を設定する。一方、ＮＯと判定した（画像入力装置のＣＰＵにより処理する）場合には、「１」を設定する。その他の処理ステップについては図８と同様であるので詳細な説明は割愛する。
【０２３８】
図２５は第２の実施例における処理フロー・入出力パラメータテーブルの一例を示す模式図である。図５に示す処理フロー・入出力パラメータテーブルに加えて、処理主体フィールド２５０１を備えている。この数値が「０」の場合には、情報処理装置のＣＰＵが、「１」の場合には、画像入力コントローラのＣＰＵが処理主体となるプログラムを作成することになる。この例では、カメラ取込、二値化、メディアンの実行を画像入力コントローラのＣＰＵが、モフォロジ、回転の実行を情報処理装置のＣＰＵが行うためのプログラムが作成されることになる。なお、情報処理装置のＣＰＵと画像入力コントローラのＣＰＵとが作業メモリを共有することにより、データのやり取りを行うよう、プログラムは作成される。
【０２３９】
以上が、第２の実施例である一連の前処理を情報処理装置のＣＰＵと画像入力装置のＣＰＵとに処理分担をさせることで、処理の高速化を図るためのプログラムを作成するためのフローチャートの作成処理の説明である。
【０２４０】
＜第３の実施例＞
次に、本願発明の第３の実施例について説明する。第３の実施例では、他のプログラムとのによる処理と同期処理を行うためのプログラムの作成について説明する。
【０２４１】
図２６は、第３の実施例におけるモジュールの新規追加処理の詳細な手順の一例を示すフローチャートである。尚、第１の実施例におけるモジュールの新規追加処理（図８）や第２の実施例におけるモジュールの新規追加処理（図２４）と同様の処理を行うステップには、それぞれの図と同じステップ番号を付与し、処理の詳細な説明は割愛する。
【０２４２】
第３の実施例においては、イベントセットモジュール、及びイベント待機モジュールが用意されている。イベントセットモジュールは、特定のイベントを発生させるために用いられるモジュールである。イベント待機モジュールは、イベントセットモジュールにより発生されるイベントを待機するために用いられるモジュールである。これらモジュールは、図７に示す画像処理プログラム開発画面のツールボックス７０１に処理ユニットとして用意されている。
【０２４３】
図２６のステップＳ２６０１において、ＣＰＵ１１１は、指定されたモジュールがイベントセット処理であるかを判定する。イベントセット処理であると判定した場合には（ステップＳ２６０１でＹＥＳ）、処理フロー・入出力パラメータテーブル（図２７）中の当該処理を示すレコードのイベント参照フィールド２７０１に、当該イベントセット処理で発行するイベント情報を設定する（ステップＳ２６０２）。尚、イベント情報についてはステップＳ２０２で表示されるパラメータ編集画面に設けられたイベント入力フィールドに入力された値をＣＰＵ１１１はイベント情報として取得し、その値をイベント情報に設定することになる。
【０２４４】
次に、ＣＰＵ１１１は、指定されたモジュールがイベント待機処理であるかを判定する。イベント待機処理であると判定した場合には（ステップＳ２６０１でＹＥＳ）、処理フロー・入出力パラメータテーブル（図２７）中の当該処理を示すレコードのイベント参照フィールド２７０１に、当該イベント待機処理で待機するイベント情報を設定する（ステップＳ２６０２）。尚、イベント情報についてはステップＳ２０２で表示されるパラメータ編集画面に設けられたイベント入力フィールドに入力された値をＣＰＵ１１１はイベント情報として取得し、その値をイベント情報に設定することになる。
【０２４５】
そして、その後、待機イベント情報として設定されたイベントを発行するためのイベントセット処理が設定されている処理フロー・入出力パラメータテーブル（図２７）が示す処理フロー（関連処理フロー）が既に表示済みであるかを判定し、表示されていないと判断した場合には（ステップＳ２６０５でＮＯ）、当該関連処理フローを画面表示する（ステップＳ２６０６）。なお、待機すると設定されたイベントを発行するイベントセット処理が他の何れの処理フローに設定されていない場合（すなわち、そのフローの処理を示す処理フロー・入出力パラメータテーブルがない場合）には、関連処理フローの表示は行わない。
【０２４６】
図２６のその他のステップについては、第１の実施例における新規追加処理（図８）及び第２の実施例における新規追加処理（図２４）と略同様の処理であるため、詳細な説明は割愛する。
【０２４７】
次に、図２７を参照して、第３の実施例における処理フロー・入出力パラメータテーブルについて説明する。第３の実施例における処理フロー・入出力パラメータテーブルは第２の実施例における処理フロー・入出力パラメータテーブルが備えるフィールドに加えて、イベント参照フィールド２７０１が追加されている。モジュール５０３にイベントセットが設定されているレコードの場合には、イベント参照フィールド２７０１には当該処理で発行するイベントの情報が、モジュール５０３にイベント待機が設定されているレコードの場合には、イベント参照フィールド２７０１には当該処理で待機するイベントの情報が設定されることになる。
【０２４８】
ここで、図２７を例にして、これらの処理フロー・入出力パラメータテーブルが示す処理について説明する。尚、図２７の（１）と（２）は異なる処理を示す処理フロー・入出力パラメータテーブルを示す。
【０２４９】
図２７の（１）の処理では、カメラ取込→モフォロジ→イベント待機→タイリングという処理が設定されており、（２）の処理ではカメラ取込→イベントセットが設定されている。そして、（１）の処理のイベント待機では、（２）の処理のイベントセットで設定されるイベントを待機するものとして設定されている（イベント参照がともにＴ９９９９）。
【０２５０】
つまりは、図２７の（１）の処理では、カメラ取込とモフォロジの処理が終了後、（２）の処理でのカメラ取込とイベントセット処理が終了するまで待機し、それら処理が終了後に、タイリング処理を行うことを示している。
【０２５１】
以上が、第３の実施例である他のプログラムとのによる処理と同期処理を行うためのプログラムの作成について説明する。
【０２５２】
（作成したプログラムを実行するための画面の作成）
次に、上記第１乃至第３の実施例で作成されたプログラムを実行させるための画面作成処理について説明する。
【０２５３】
図２８は、画面作成処理の一例を示すフローチャートである。本処理を、ＣＰＵ１１１に実行させるためのプログラムは外部メモリ１１６に記憶されており、ＣＰＵは本処理を行う際に、当該プログラムをＲＡＭ１１２にロードし、当該プログラムの制御に従って、本処理を行うことになる。
【０２５４】
まず、ＣＰＵ１１１は、図２９に示すレイアウト画面を、ビデオコントローラ１１５ｂを介して、ＣＲＴ１３０に表示させる（ステップＳ２８０１）。レイアウト画面の詳細については、図２９を参照して説明する。
【０２５５】
次に、図２９の画面に対する操作入力装置を介してのユーザによる操作に基づき、コントロールの入力指示を受け付けたか（入力あり？）を判定する（ステップＳ２８０２）。入力指示を受け付けた場合（ステップＳ２８０２でＹＥＳ）と判定して場合には、入力指示の処理内容を判定する（ステップＳ２８０３）。
【０２５６】
ステップＳ２８０３での入力内容の判定結果、その入力内容が、新規ボタン追加処理であると判定した場合には（ステップＳ２８０４でＹＥＳ）、処理をステップＳ２８０５に移行させ、新規ボタン追加処理を行うことになる。新規ボタン追加処理の詳細については、図３０を参照して説明する。
【０２５７】
ステップＳ２８０４での入力内容の判定結果、その入力内容が、新規画面追加処理であると判定した場合には（ステップＳ２８０６でＹＥＳ）、処理をステップＳ２８０７に移行させ、新規画面追加処理を行うことになる。新規画面追加処理の詳細については、図３１を参照して説明する。
【０２５８】
ステップＳ２８０４での入力内容の判定結果、その入力内容が、新規ボックス追加処理であると判定した場合には（ステップＳ２８０８でＹＥＳ）、処理をステップＳ２８０９に移行させ、新規ボックス追加処理を行うことになる。新規ボックス追加処理の詳細については、図３２を参照して説明する。
【０２５９】
ステップＳ２８０４での入力内容の判定結果、その入力内容が、変更・移動処理であると判定した場合には（ステップＳ２８１０でＹＥＳ）、処理をステップＳ２８１１に移行させ、変更・移動処理を行うことになる。変更・移動処理の詳細については、図３３を参照して説明する。
【０２６０】
ステップＳ２８０４での入力内容の判定結果、その入力内容が、保存処理であると判定した場合には（ステップＳ２８１２でＹＥＳ）、処理をステップＳ２８１３に移行させ、保存処理を行うことになる。保存処理の詳細については、図３４を参照して説明する。
【０２６１】
そして、以上の処理をステップＳ２８１４で開発終了指示を受け付けたと判断するまで繰り返すことになる。以上が、画面作成処理の大まかな説明である。
【０２６２】
次に、図２９を参照して、図２８のステップＳ２８０１でＣＲＴに表示されるレイアウト画面の一例について説明する。レイアウト画面２９００には、利用可能な処理コントロール（即ち、数値結果を表示するテキストボックスなどオンラインGUIの構成に係るコントロール）を表示するツールボックス２９０１と、画面構成（即ち、テキストボックスやボタンなど）を表示するデザイン領域２９０２と、各コントロールに係るプロパティを表示するプロパティ表示領域２９０３等が設けられている。
【０２６３】
ユーザは、ツールボックス２９０１に表示されている処理コントロールをデザイン領域にドラッグアンドドロップ処理をすることにより、希望の位置に配置し、その後、当該処理コントロールのサイズの変更や、プロパティ表示欄に表示されているプロパティを変更することで、画面の作成が可能となっている。以上が、レイアウト画面２９００の説明である。
【０２６４】
次に、図３０を参照して、図２８のステップＳ２８０５の新規ボタン追加処理について説明する。まず、ＣＰＵ１１１は、新規ボタンの追加処理の指示を受け付けると、当該ボタンを配置する画面レイアウトテーブルが既に作成されているかを判定する（ステップＳ３００１）。そして、ステップＳ３００１の判定処理の結果、テーブルがまだ作成されていない（テーブルありでＮＯ）と判定された場合（ステップＳ３００２でＮＯ）、画面レイアウトテーブルを作成する。画面レイアウトテーブルの一例については、図３５を参照して説明する。
【０２６５】
図３５は、画面レイアウトテーブルの一例を示す模式図である。図３５の画面レイアウトテーブル３５００には、Ｉｎｄｅｘ３５０１、コントロール種別３５０２、デザイン登録名３５０３、プロパティテーブル３５０４が設定されている。
【０２６６】
コントロール種別３５０２には、画面に設定されている各コントロールの種別が、デザイン登録名にはコントロールのＩＤが、プロパティテーブル３５０４には、当該コントロールの詳細を管理するプロパティテーブルのＩＤが登録されることになる。以上が、画面レイアウトテーブルの説明である。
【０２６７】
図３０の説明に戻る。そして、その後、追加されたボタンコントロールの種類を特定する（ステップＳ３００４）。ボタンコントロールの種類としては、「単発検査」「連続検査」「検査停止」「検査設定」及び「終了」などが用意されている。
【０２６８】
その後、ボタンコントロールの詳細を示すボタンコントロールテーブル（図３６）に、当該追加されたボタンコントロールの詳細を登録するためのレコードを追加し（ステップＳ３００５）、ボタンの基本プロパティを外部メモリ１１６から読み出し、当該レコードに設定する（ステップＳ３００６）。そして、ステップＳ３００６で読み出したプロパティを図２９のプロパティ表示領域２９０３に表示するとともに、追加されたコントロールをデザイン領域２９０２に描画する。以上が、図２８のステップＳ２８０５の新規ボタン追加処理の詳細である。
【０２６９】
図３６を参照して、ボタンコントロールテーブルの一例について説明する。図３６に示すボタンコントロールテーブルＴ３６００には、Ｉｎｄｅｘ（３６０１）、基本プロパティ（３６０２）、実行内容（３６０３）、カスタム１（３６０４）、カスタム２（３６０５）・・・が設定されている。
【０２７０】
Ｉｎｄｅｘ（３６０１）には、当該コントロールのＩｎｄｅｘ情報が、基本プロパティ（３６０２）にはボタンコントロールの基本プロパティ情報が、実行内容（３６０３）には、当該ボタンが押下指示された場合に実行する実行内容が、カスタム１（３６０４）、カスタム２（３６０５）・・・には、ボタンコントロールの位置情報、ボタンのサイズ、形状等の情報が登録されることになる。以上が図３６のボタンコントロールテーブルの説明である。
【０２７１】
次に、図３１を参照して、図２８のステップＳ２８０７の新規画面追加処理の詳細について説明する。この処理は、図３０で説明した新規ボタン追加処理と略同等である。
【０２７２】
まず、ＣＰＵ１１１は、画像処理結果を表示するための新規画面追加処理の指示を受け付けると、処理の結果を表示するための画面を配置する画面レイアウトテーブルが既に作成されているかを判定する（ステップＳ３１０１）。そして、ステップＳ３１０１の判定処理の結果、テーブルがまだ作成されていない（テーブルありでＮＯ）と判定された場合（ステップＳ３１０２でＮＯ）、画面レイアウトテーブルを作成する（ステップＳ３１０３）。
【０２７３】
その後、追加された画面に表示するデータを設定する（ステップＳ３１０４）。ここで設定するデータは、例えば、当該画面に設定されている画面コントロールにより実行される処理フローでの処理結果であり、具体的には当該処理フローを示す処理フロー・入出力パラメータテーブル中の入力パラメータ若しくは出力パラメータとして設定されている変数が指定される。
【０２７４】
その後、画面コントロールの詳細を示す画面コントロールテーブル（図３７）に、当該追加されたボタンコントロールの詳細を登録するためのレコードを追加し（ステップＳ３１０５）、画面の基本プロパティを外部メモリ１１６から読み出し、当該レコードに設定する（ステップＳ３１０６）。そして、ステップＳ３１０６で読み出したプロパティを図２９のプロパティ表示領域２９０３に表示するとともに、追加されたコントロールをデザイン領域２９０２に描画する。以上が、図２８のステップＳ２８０７の新規画面追加処理の詳細である。
【０２７５】
図３７を参照して、画面コントロールテーブルの一例について説明する。画面コントロールテーブルＴ３７００には、Ｉｎｄｅｘ（３７０１）、基本プロパティ（３７０２）、リソース（３７０３）、カスタム１（３７０４）、カスタム２（３７０５）・・・等が設定されている。
【０２７６】
Ｉｎｄｅｘ（３７０１）には、当該コントロールのＩｎｄｅｘ情報が、基本プロパティ（３７０２）には画面コントロールの基本プロパティ情報が、リソースには、当該画面に表示されるデータを保持する変数が、カスタム１（３６０４）、カスタム２（３６０５）・・・には、画面コントロールの位置情報、画面コントロールのサイズ、等の情報が登録されることになる。以上が図３７の画面コントロールテーブルの説明である。
【０２７７】
次に、図３２を参照して、図２８のステップＳ２８０９の新規ボックス追加処理の詳細について説明する。この処理は、図３０で説明した新規ボタン追加処理と略同等である。
【０２７８】
まず、ＣＰＵ１１１は、画像処理結果を表示するための新規ボックス追加処理の指示を受け付けると、処理の結果を表示するためのボックスを配置する画面レイアウトテーブルが既に作成されているかを判定する（ステップＳ３２０１）。そして、ステップＳ３２０１の判定処理の結果、テーブルがまだ作成されていない（テーブルありでＮＯ）と判定された場合（ステップＳ３１０２でＮＯ）、画面レイアウトテーブルを作成する（ステップＳ３２０３）。
【０２７９】
その後、追加された画面に表示するデータを設定する（ステップＳ３２０４）。ここで設定するデータは、例えば、当該画面に設定されているボタンコントロールにより実行される処理フローでの処理結果であり、具体的には当該処理フローを示す処理フロー・入出力パラメータテーブル中の入力パラメータ若しくは出力パラメータとして設定されている変数が指定される。
【０２８０】
その後、ボックスコントロールの詳細を示すボックスコントロールテーブル（図３８）に、当該追加されたボックスコントロールの詳細を登録するためのレコードを追加し（ステップＳ３２０５）、画面の基本プロパティを外部メモリ１１６から読み出し、当該レコードに設定する（ステップＳ３２０６）。そして、ステップＳ３２０６で読み出したプロパティを図２９のプロパティ表示領域２９０３に表示するとともに、追加されたコントロールをデザイン領域２９０２に描画する。以上が、図２８のステップＳ２８０９の新規ボックス追加処理の詳細である。
【０２８１】
図３８を参照して、ボックスコントロールテーブルの一例について説明する。ボックスコントロールテーブル３８００には、Ｉｎｄｅｘ（３８０１）、基本プロパティ（３８０２）、表示変数（３８０３）、カスタム１（３８０４）、カスタム２（３８０５）・・・等が設定されている。
【０２８２】
Ｉｎｄｅｘ（３８０１）には、当該コントロールのＩｎｄｅｘ情報が、基本プロパティ（３８０２）には画面コントロールの基本プロパティ情報が、表示変数（３８０３）には、当該画面に表示されるデータを保持する変数が、カスタム１（３８０４）、カスタム２（３８０５）・・・には、ボックスコントロールの位置情報、ボックスコントロールのサイズ、等の情報が登録されることになる。以上が図３８の画面コントロールテーブルの説明である。
【０２８３】
次に、図３３を参照して、図２８のステップＳ２８１１に示す、変更・移動処理の詳細について説明する。ＣＰＵ１１１は、変更若しくは移動指示を受け付けた場合に、まず変更対象となるコントロールを特定する（ステップＳ３３０１）。その後、当該変更要求を受け付けた種別コントロールの詳細を管理するコントロールテーブルから変更対象のコントロールのレコードを取得する（ステップＳ３３０２）。
【０２８４】
そしてステップＳ３３０２で取得したレコードに対して、ユーザから受け付けた変更内容に従った変更処理を行う（ステップＳ３３０３）。例えば、コントロールの移動の場合には、コントロールの座標値を示す情報に対する変更処理が行われることになる。
【０２８５】
そして、変更されたプロパティ情報を図２９のプロパティ表示領域２９０３に表示するとともに、変更されたコントロールの再描画処理を行う。以上が、図３３ステップＳ２８１１の変更・移動処理の詳細である。
【０２８６】
図３４を参照して、図２８のステップＳ２８１３の保存処理の詳細について説明する。まず、ＣＰＵ１１１は、外部メモリ１１６に記憶されているソースプログラムに従って、図２８〜図３３の処理により作成された画面に対する操作指示等により発生するイベントに応じて、設定された処理を実行するためのソースプログラムを作成する（ステップＳ３４０１）。そして、そのソースプログラムを外部メモリ１１６に保存する（ステップＳ３４０２）。この処理を行う際に、実際にソースプログラムのコンパイル処理、リンク処理を実行し、その後、デバッグ処理を行わせるようにしても勿論かまわない。
【０２８７】
＜本発明の他の実施形態＞
前述した本発明の実施形態に係るＰＣ１１０（情報処理装置）を構成する図３の各構成部、並びに、ＰＣ１１０の制御方法を示す図６、図８、図９、図１１〜図１３の各ステップは、コンピュータのＣＰＵ（１１１）がＲＯＭ（１１３）や外部メモリ（１１６）などに記憶されたプログラムを実行することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【０２８８】
また、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、１つの機器からなる装置に適用してもよい。
【０２８９】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム（実施形態では図６、図８、図９、図１１〜図１３、図１６、図２１、図２４、図２６、図２８、図３０〜３４に示すフローチャートに対応したプログラム）を、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
【０２９０】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０２９１】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【０２９２】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷなどがある。また、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などもある。
【０２９３】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【０２９４】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０２９５】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０２９６】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０２９７】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【０２９８】
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【０２９９】
１００ 画像処理システム
１１０ ＰＣ（情報処理装置）
１２０ 操作入力装置
１３０ ＣＲＴ（ＣＲＴディスプレイ）
１４０ カメラ
１５０ 照明装置コントローラ
１６０ 照明装置
１７０ 外部機器コントローラ
１８１ 検査対象
１８０ ステージ
１１１ ＣＰＵ
１１２ ＲＡＭ
１１３ ＲＯＭ
１１４ システムバス
１１５ａ 入力コントローラ
１１５ｂ ビデオコントローラ
１１５ｃ メモリコントローラ
１１５ｄ、１１５ｅ 通信Ｉ／Ｆコントローラ
１１５ｆ 画像入力コントローラ
１１６ 外部メモリ
【図１】
2010244507.tif 000003
【図２】
2010244507.tif 000004
【図３】
2010244507.tif 000005
【図４】
2010244507.tif 000006
【図５】
2010244507.tif 000007
【図６】
2010244507.tif 000008
【図７】
2010244507.tif 000009
【図８】
2010244507.tif 000010
【図９】
2010244507.tif 000011
【図１０】
2010244507.tif 000012
【図１１】
2010244507.tif 000013
【図１２】
2010244507.tif 000014
【図１３】
2010244507.tif 000015
【図１４】
2010244507.tif 000016
【図１５】
2010244507.tif 000017
【図１６】
2010244507.tif 000018
【図１７】
2010244507.tif 000019
【図１８】
2010244507.tif 000020
【図１９】
2010244507.tif 000021
【図２０】
2010244507.tif 000022
【図２１】
2010244507.tif 000023
【図２２】
2010244507.tif 000024
【図２３】
2010244507.tif 000025
【図２４】
2010244507.tif 000026
【図２５】
2010244507.tif 000027
【図２６】
2010244507.tif 000028
【図２７】
2010244507.tif 000029
【図２８】
2010244507.tif 000030
【図２９】
2010244507.tif 000031
【図３０】
2010244507.tif 000032
【図３１】
2010244507.tif 000033
【図３２】
2010244507.tif 000034
【図３３】
2010244507.tif 000035
【図３４】
2010244507.tif 000036
【図３５】
2010244507.tif 000037
【図３６】
2010244507.tif 000038
【図３７】
2010244507.tif 000039
【図３８】
2010244507.tif 000040