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