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