(57)【特許請求の範囲】
【請求項１】
画像を処理するための領域である画像バッファを用いて画像処理を実行可能な処理フローを生成する情報処理装置であって、
画像処理を行うための処理フローを構成するためのモジュールと、当該モジュールにかかる処理に用いる前記画像バッファの数を特定可能な情報を対応付けて記憶する記憶手段と、
前記処理フローに前記モジュールを追加するモジュール追加手段と、
前記追加手段で追加された前記モジュールに対応付けられた前記画像バッファの数を特定可能な情報に基づいて、前記処理フローにおいて用いられる画像バッファを確保するよう制御する確保制御手段と、
前記追加手段により追加されたモジュールに関連付けて、当該モジュールに対応付けられた画像バッファの数を特定可能な情報に基づいて特定された画像バッファを識別可能に表示する表示手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記確保制御手段は、前記画像バッファの数を特定可能な情報に基づいて特定される数の画像バッファを、前記処理フローに対応付けて確保するよう制御することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記確保制御手段は、前記処理フローに既に確保された画像バッファとは異なる画像バッファを新たに確保するよう制御することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記確保制御手段は、前記追加手段により追加されたモジュールが、複数のモジュールをまとめたフォルダモジュールである場合に、当該フォルダモジュールに対応付けられた画像バッファの数を特定可能な情報に基づいて、前記処理フローにおいて用いられる画像バッファを確保するよう制御することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記画像バッファは、前記モジュールにかかる処理に用いる画像の入力元として利用される入力画像バッファ、又は、前記モジュールが処理を実行した結果の画像の出力先である出力画像バッファのうち、少なくともいずれか一方を含むことを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
画像を処理するための領域である画像バッファを用いて画像処理を実行可能な処理フローを生成する情報処理装置であって、画像処理を行うための処理フローを構成するためのモジュールと、当該モジュールにかかる処理に用いる前記画像バッファの数を特定可能な情報を対応付けて記憶する記憶手段を備える前記情報処理装置の制御方法であって、
前記処理フローに前記モジュールを追加するモジュール追加工程と、
前記追加工程で追加された前記モジュールに対応付けられた前記画像バッファの数を特定可能な情報に基づいて、前記処理フローにおいて用いられる画像バッファを確保するよう制御する確保制御工程と、
前記追加工程により追加されたモジュールに関連付けて、当該モジュールに対応付けられた画像バッファの数を特定可能な情報に基づいて特定された画像バッファを識別可能に表示する表示工程と、
を備える制御方法。
【請求項７】
コンピュータを、請求項１乃至５のいずれか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、製品の検査を行うための画像処理プログラムに作成に関し、特に画像処理プログラムの作成に際して設定する画像バッファを適切に確保することの可能な情報処理装置、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、例えば、チップマウンターにおける基板や部品の位置決めや、出来上がった製品の検査などを目的として、カメラで撮影した検査対象の画像データを、一定のロジックで画像処理する画像処理装置が広く用いられている。
【０００３】
このような用途の画像処理装置としては、例えば、予め決められた画像処理のロジックを搭載した汎用タイプの画像処理装置や、ユーザのニーズに合致するロジックをユーザ自身が構築することが可能な専用タイプの画像処理装置がある。
【０００４】
ここで、汎用タイプの画像処理装置は、画像処理のロジックを新規に構築する必要がないため、実際の製造工程等への導入に際してユーザの労力はかからないが、ユーザのニーズを完全に満たすロジックであることは少ない。一方、専用タイプの画像処理装置は、ユーザのニーズを完全に満たす画像処理のロジックを構築することが可能であるが、そのために画像処理のロジックを都度開発する必要があるため、多大な開発労力と開発期間、更には多大なコストがかかるものであった。
【０００５】
そこで、従来、例えば下記の特許文献１に示すようなロジックの開発を効率化する技術が提案されている。具体的に、特許文献１では、ロジックを開発するコンピュータに予め複数の画像処理に係るモジュールを登録しておき、開発者が使用者のニーズに合致するモジュールを選択し、選択したモジュールに必要なパラメータを設定して、ソースコード化した上でオブジェクトコードを作成することにより、ロジックの開発を効率化するものである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−２９６１１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
このような画像処理のロジックを構築する際に、画像処理のモジュールをＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）上でフローチャート形式に構築することで、画像処理のプログラム（以下、画像処理プログラム）を生成するアプリケーションが存在する。このようなアプリケーションは、各画像処理のモジュールをドラッグ＆ドロップ等でフローチャート形式に構築すると、各モジュールに対応するソースコードをフローチャート（以下、処理フロー）の順序に基づいて組み合わせ、画像処理のプログラムを生成するものである。
【０００８】
前述した特許文献１やこのようなアプリケーションにおいては、画像処理に使用する画像データや、その出力結果の画像データを画像バッファから入出力している。この画像バッファは、従来は画像バッファが必要なモジュールを処理フローに追加すると、自動的に記憶領域に所定の容量で作成される。つまり、処理フローに配置されたモジュールごとに画像バッファが作成されることになる。
【０００９】
ところが、処理フローに配置されるモジュールの数が増えると、記憶領域に作成される画像バッファも増えるため、記憶領域が不足してしまう虞がある。そこで、モジュールごとに画像バッファを確保するのではなく、あらかじめ決められた数の画像バッファを作成しておき、これを処理フローに配置された複数のモジュールで使用する仕組みが考えられている。
【００１０】
このような仕組みではユーザは、新しくモジュールを追加すると、処理フローで既に使用している画像バッファに影響を及ぼさないように注意し、あらかじめ作成された画像バッファの中から画像バッファをモジュールに設定する必要がある。なぜならば、画像バッファが重複してしまうと画像処理の結果を上書きしてしまうため、他のモジュールで使用するはずの画像処理の結果を上書きしてしまう虞があるからである。
【００１１】
さらに従来の仕組みでは、モジュールごとに１つの画像バッファを作成するものであって、モジュールが複数の画像バッファを必要とする場合でも１つの画像バッファしか作成されなかった。
【００１２】
そこで本発明は、処理フローにモジュールを追加する際に適切に画像バッファを確保することを目的とする。
【課題を解決するための手段】
【００１３】
上記の目的を達成するために本発明の情報処理装置は、画像を処理するための領域である画像バッファを用いて画像処理を実行可能な処理フローを生成する情報処理装置であって、画像処理を行うための処理フローを構成するためのモジュールを記憶する記憶手段と、前記処理フローに前記モジュールを追加するモジュール追加手段と、前記追加手段で追加された前記モジュールに応じた画像バッファの数に基づいて、前記処理フローに対応付けて画像バッファを確保するよう制御する確保制御手段とを備えることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、処理フローにモジュールを追加する際に適切に画像バッファを確保することの可能な効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】情報処理装置１００のハードウェア構成の一例を示す図である。
【図２】情報処理装置１００の機能構成の一例を示す図である。
【図３】モジュールテーブル３００のテーブル構成の一例を示す図である。
【図４】処理フローテーブル４００のテーブル構成の一例を示す図である。
【図５】ループテーブル５００のテーブル構成の一例を示す図である。
【図６】分岐テーブル６００のテーブル構成の一例を示す図である。
【図７】スイッチテーブル７００のテーブル構成の一例を示す図である。
【図８】検索結果テーブル８００のテーブル構成の一例を示す図である。
【図９】画像バッファテーブル９００のテーブル構成の一例を示す図である。
【図１０】フォルダモジュールテーブル１０００のテーブル構成の一例を示す図である。
【図１１】フォルダモジュール画像バッファテーブル１１００のテーブル構成の一覧を示す図である。
【図１２】本発明の一連の処理の流れを示すフローチャートである。
【図１３】処理フロー構築画面１３００の画面構成の一例を示す図である。
【図１４】画像バッファ設定画面１４００の画面構成の一例を示す図である。
【図１５】モジュール追加処理の詳細を示すフローチャートである。
【図１６】モジュール選択処理の詳細を示すフローチャートである。
【図１７】処理フローを実行した後の処理フロー構築画面１４００の画面構成の一例を示す図である。
【図１８】パラメータ変更処理の詳細を示すフローチャートである。
【図１９】図１８に続き、パラメータ変更処理の詳細を示すフローチャートである。
【図２０】処理フロー実行処理の詳細を示すフローチャートである。
【図２１】図２０に示すフォルダモジュール実行処理の詳細を示すフローチャートである。
【図２２】処理フロー実行処理の詳細を示すフローチャートである。
【図２３】フォルダモジュール実行処理の詳細を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【００１７】
図１は、情報処理装置１００のハードウェア構成の一例を示す図である。本発明の情報処理装置１００は、画像処理を実行可能なプログラム（以下、画像処理プログラム）を生成可能な装置である。情報処理装置１００には画像処理プログラムを構築するためのアプリケーション（以下、画像処理プログラム構築アプリケーション）がインストールされており、当該アプリケーションを用いて画像処理プログラムを生成する。
【００１８】
画像処理プログラム構築アプリケーションでは、あらかじめ用意されたモジュールをフローチャート形式で組み合わせることにより、画像処理プログラムを構築する。各モジュールには、画像処理を実行可能なモジュールや、ループや分岐を行うモジュール等が存在する。これらがソースコード形式で用意されているため、ユーザは所望の画像処理プログラムとなるよう、これらのモジュールを組み合わせてフローチャート（以下、処理フロー）にし、当該フローチャートの処理順でモジュールのソースコードを組み合わせることで、画像処理プログラムが生成できる。
【００１９】
ＣＰＵ１０１は、システムバス１０４に接続される各デバイスやコントローラを統括的に制御する。
【００２０】
また、ＲＯＭ１０２あるいは外部メモリ１１１（記憶手段）には、ＣＰＵ１０１の制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  ／  ＯｕｔｐｕｔＳｙｓｔｅｍ）やオペレーティングシステムプログラム（以下、ＯＳ）や、情報処理装置１００の実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。ＲＡＭ１０３は、ＣＰＵ１０１の主メモリ、ワークエリア等として機能する。
【００２１】
ＣＰＵ１０１は、処理の実行に際して必要なプログラム等をＲＡＭ１０３にロードして、プログラムを実行することで各種動作を実現するものである。
【００２２】
また、入力コントローラ（入力Ｃ）１０５は、キーボードや不図示のマウス等のポインティングデバイス等の入力デバイス１０９からの入力を制御する。
【００２３】
ビデオコントローラ（ＶＣ）１０６は、ディスプレイ１１０等の表示器への表示を制御する。表示器の種類はＣＲＴや、液晶ディスプレイを想定するが、これに限らない。
【００２４】
メモリコントローラ（ＭＣ）１０７は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク（ＨＤ）やフレキシブルディスク（ＦＤ）或いはＰＣＭＣＩＡカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ１１１へのアクセスを制御する。
【００２５】
通信Ｉ／Ｆコントローラ（通信Ｉ／ＦＣ）１０８は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、ＴＣＰ／ＩＰを用いたインターネット通信等が可能である。
【００２６】
尚、ＣＰＵ１０１は、例えばＲＡＭ１０３内の表示情報用領域へアウトラインフォントの展開（ラスタライズ）処理を実行することにより、ディスプレイ１１０上での表示を可能としている。また、ＣＰＵ１０１は、ディスプレイ１１０上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【００２７】
本発明の情報処理装置１００が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ１１１に記録されており、必要に応じてＲＡＭ１０３にロードされることによりＣＰＵ１０１によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ１１１に格納されている。
【００２８】
次に、情報処理装置１００の機能構成を示す機能構成図について、図２を用いて説明する。尚、図２の機能構成は一例であり、用途や目的に応じて様々な構成例がある。
【００２９】
情報処理装置１００は、テーブル記憶部２００、処理フロー作成部２１０、ソースコード変換部２２０、コンパイル部２３０、処理フロー実行部２４０、処理フロー保存部２５０、画像バッファ管理部２６０、フォルダモジュール保存部２７０、画像バッファ使用領域特定部２８０を備える。
【００３０】
テーブル記憶部２００は、本実施形態で用いる各種テーブルを記憶する機能部である。テーブル記憶部２００には、モジュールテーブル３００、処理フローテーブル４００、ループテーブル５００、分岐テーブル６００、スイッチテーブル７００、検索結果テーブル８００、画像バッファテーブル９００、フォルダモジュールテーブル１０００、フォルダモジュール画像バッファテーブル１１００が記憶されている。
【００３１】
ここで、本実施形態においては、図２のテーブル記憶部２００が、例えば図１に示す外部メモリ１１１に構成される（一旦、ＲＡＭ１０３に構成された後に外部メモリ１１１に構成される場合も含む）。また、図２の処理フロー作成部２１０、ソースコード変換部２２０、コンパイル部２３０、処理フロー実行部２４０、処理フロー保存部２５０、画像バッファ管理部２６０、フォルダモジュール保存部２７０、画像バッファ使用領域特定部２８０が、例えば図１に示すＣＰＵ１０１と、ＲＯＭ１０２或いは外部メモリ１１１に記憶されているプログラムと、から構成される。
【００３２】
モジュールテーブル３００は、画像処理ロジック構築プログラムで用いるモジュールに関する情報を格納するテーブルである。モジュールテーブル３００のテーブル構成の一例を図３に示す。
【００３３】
モジュールテーブル３００は、情報処理装置１００の外部メモリ１１１等に記憶されており、モジュールＩＤ３０１、モジュール名３０２、ソースコード３０３、入力パラメータ３０４、出力パラメータ３０５、参照先テーブル３０６から構成される。
【００３４】
モジュールＩＤ３０１は、モジュールテーブル３００のレコードごとに割り振られる識別情報である。モジュール名３０２は、モジュールの名称を示す。ソースコード３０３は、当該モジュールのソースコードが格納されている。ソースコードの保存先を格納しておいてもよい。入力パラメータ３０４と出力パラメータ３０５とは、当該モジュールが当該モジュールの処理を実行する際に設定可能な入力パラメータと出力パラメータを示す。例えば、モジュールＩＤ３０１が「Ｕ００００７」の二値化モジュールは、入力パラメータとして「入力画像バッファ」と「閾値」とが設定可能であり、出力パラメータとして「出力画像バッファ」が設定可能であることがわかる。入力画像バッファとは、モジュールが処理を実行する際に用いる画像データの入力元である画像バッファを示す。出力画像バッファとは、モジュールが処理を実行した結果の画像データの出力先である画像バッファを示す。参照先テーブル３０６は、参照先のテーブルの識別番号（テーブルのＩＤ）を格納している。参照先のテーブルは、識別番号ごとにフォルダモジュールテーブル１０００がある。フォルダモジュールとは、図１０に示すテーブルに規定されるように、１つのモジュールの中に、複数のモジュールを格納するものである。この複数のモジュールは、処理フローのように一定の順列をなしていて、一連の処理により画像処理を行うまとまりを示すものである。
【００３５】
フォルダモジュールテーブル１０００は、例えば図１０に示すフォルダモジュールテーブル１０００である。フォルダモジュールテーブル１０００は、ＩＮＤＥＸ１００１、モジュールＩＤ１００２、モジュール名１００３、入力パラメータ１００４、出力パラメータ１００５から構成される。
【００３６】
ＩＮＤＥＸ１００１は処理フローの上流から下流に向けて昇順となるよう割り振られた識別情報である。すなわち、処理フローの最も上流に配置されたモジュールのＩＮＤＥＸ１００１が「１」となる。その次の位置に配置されたモジュールのＩＮＤＥＸ１００１が「２」となる。モジュールＩＤ１００２はモジュールごとに割り振られる識別情報である。モジュール名１００３はモジュールの名称を示す情報である。入力パラメータ１００４、出力パラメータ１００５には当該モジュールに設定された入力パラメータと出力パラメータとが格納される。
【００３７】
次に、処理フローテーブル４００の説明を行う。処理フローテーブル４００は、処理フローを構成しているモジュールに関する情報を格納するテーブルである。処理フローテーブル４００のテーブル構成の一例を図４に示す。
【００３８】
処理フローテーブル４００は、情報処理装置１００の外部メモリ１１１等に記憶されており、ＩＮＤＥＸ４０１、モジュールＩＤ４０２、モジュール名４０３、入力パラメータ４０４、出力パラメータ４０５、参照先テーブル４０６から構成される。
【００３９】
ＩＮＤＥＸ４０１は、処理フローの上流から下流に向けて昇順となるよう割り振られた識別情報である。すなわち、処理フローの最も上流に配置されたモジュールのＩＮＤＥＸ４０１が「１」となる。その次の位置に配置されたモジュールのＩＮＤＥＸ４０１が「２」となる。モジュールＩＤ４０２は、処理フローに配置されたモジュールに一意に割り振られる識別情報である。モジュール名４０３は、当該モジュールのモジュール名３０２に対応するモジュールの名称が格納される。入力パラメータ４０４と出力パラメータ４０５とは、当該モジュールに設定された入力パラメータと出力パラメータとが格納される。例えば、図４の処理フローテーブル４００のＩＮＤＥＸ４０１が「１」であるカメラモジュールは、入力パラメータのうち、入力画像バッファとして「画像バッファ１」が設定されている。参照先テーブル４０６は、フォルダモジュール、ループや分岐などのモジュールである場合に参照すべき他のテーブルを示す。例えば、図４の処理フローテーブル４００のＩＮＤＥＸ４０１が「３」である分岐モジュールの参照先テーブル４０６には、分岐先として「ＴＤ００３−１」と「ＴＤ００３−２」とが設定されている。つまり、分岐モジュールの判定結果に応じて、この２つのテーブルのいずれかを参照することを示している。参照先テーブル４０６が示す各種テーブルにも、処理フローテーブル４００と同様に処理フローに配置されたモジュールに関する情報が格納されている。
【００４０】
参照先テーブル４０６が示すテーブルとして、ループテーブル５００、分岐テーブル６００、スイッチテーブル７００、フォルダモジュールテーブル１０００がある。
【００４１】
ループテーブル５００（図５参照）は、ループモジュールの参照先として用いられるテーブルである。ループテーブル５００は、情報処理装置１００の外部メモリ１１１等に記憶され、ＩＮＤＥＸ５０１、モジュールＩＤ５０２、モジュール名５０３、入力パラメータ５０４、出力パラメータ５０５、参照先テーブル５０６から構成される。ループテーブル５００を構成する各項目は、前述した処理フローテーブル４００を構成する各項目と同様である。
【００４２】
また、分岐テーブル６００（図６参照）は、分岐モジュールの参照先として用いられるテーブルであり、分岐ＴＨＥＮテーブル６１０及び分岐ＥＬＳＥテーブル６２０から構成される。分岐ＴＨＥＮテーブル６１０は、分岐モジュールの判定結果が真（ＴＲＵＥ）である場合に参照され、分岐ＥＬＳＥテーブル６２０は、分岐モジュールの判定結果が偽（ＦＡＬＳＥ）に参照される。
【００４３】
分岐ＴＨＥＮテーブル６１０は、情報処理装置の外部メモリ１１１等に記憶され、ＩＮＤＥＸ６１１、モジュールＩＤ６１２、モジュール名６１３、入力パラメータ６１４、出力パラメータ６１５、参照先テーブル６１６から構成される。また、分岐ＥＬＳＥテーブル６２０は、情報処理装置の外部メモリ１１１に記憶され、ＩＮＤＥＸ６２１、モジュールＩＤ６２２、モジュール名６２３、入力パラメータ６２４、出力パラメータ６２５、参照先テーブル６２６から構成される。
【００４４】
分岐ＴＨＥＮテーブル６１０を構成する各項目と、分岐ＥＬＳＥテーブル６２０を構成する各項目とを、前述した処理フローテーブル４００を構成する各項目と同様である。
【００４５】
更にスイッチテーブル７００（図７参照）は、スイッチモジュールの参照先として用いられるテーブルであり、スイッチ条件テーブル７１０、スイッチＥＬＳＥテーブル７２０、スイッチＣＡＳＥテーブル７３０、スイッチＣＡＳＥテーブル７４０から構成される。スイッチ条件テーブル７１０は、多方向に分岐するための条件が格納されており、スイッチＥＬＳＥテーブル７２０は、どの条件にも当てはまらなかった場合に参照され、スイッチＣＡＳＥテーブル７３０、スイッチＣＡＳＥテーブル７４０はスイッチ条件テーブル７１０に格納された条件に応じて参照する。
【００４６】
スイッチ条件テーブル７１０は、情報処理装置１００の外部メモリ１１１等に記憶され、ＩＮＤＥＸ７１１、ＣＡＳＥ条件７１２、参照先テーブル７１３から構成される。ＩＮＤＥＸ７１１は、条件ごとに割り振られる識別情報である。ＣＡＳＥ条件７１２は、分岐のための条件を示す。参照先テーブル７１３は、当該条件の判定結果が真（ＴＲＵＥ）であった場合に参照するスイッチＣＡＳＥテーブルを示す。図７に示すスイッチ条件テーブル７１０の例では、分岐条件が２つあり、その２つの条件のいずれかで真と判定されると、真と判定された条件に設定されたスイッチＣＡＳＥテーブル７３０またはスイッチＣＡＳＥテーブル７４０を参照することになる。一方、いずれの条件が一致しない場合には、スイッチＥＬＳＥテーブル７２０を参照することになる。
【００４７】
スイッチＥＬＳＥテーブル７２０は、情報処理装置１００の外部メモリ１１１等に記憶され、ＩＮＤＥＸ７２１、モジュールＩＤ７２２、モジュール名７２３、入力パラメータ７２４、出力パラメータ７２５、参照先テーブル７２６から構成される。また、スイッチＣＡＳＥテーブル７３０は、情報処理装置１００の外部メモリ１１１に記憶され、ＩＮＤＥＸ７３１、モジュールＩＤ７３２、モジュール名７３３、入力パラメータ７３４、出力パラメータ７３５、参照先テーブル７３６から構成される。また、スイッチＣＡＳＥテーブル７４０は、情報処理装置１００の外部メモリ１１１に記憶され、ＩＮＤＥＸ７４１、モジュールＩＤ７４２、モジュール名７４３、入力パラメータ７４４、出力パラメータ７４５、参照先テーブル７４６から構成される。スイッチＥＬＳＥテーブル７２０を構成する各項目と、スイッチＣＡＳＥテーブル７３０を構成する各項目と、スイッチＣＡＳＥテーブル７４０を構成する各項目とは、前述した処理フローテーブル４００を構成する各項目と同様である。
【００４８】
検索結果テーブル８００（図８参照）は、後述する画像バッファ検索処理で用いられるテーブルである。処理フローに配置されたモジュールのうち、ユーザから指定されたモジュールが持つ画像バッファを同じ画像バッファを持つ他のモジュールを検索する。その検索した結果、特定したモジュールを格納するテーブルが、検索結果テーブル８００である。
【００４９】
検索結果テーブル８００は、情報処理装置１００の外部メモリ１１１等に記憶され、ＩＮＤＥＸ８０１、モジュールＩＤ８０２、モジュール名８０３、一致画像バッファ８０４、上流フラグ８０５から構成される。ＩＮＤＥＸ８０１は、検索結果ごとに割り振られる識別情報である。モジュールＩＤ８０２、モジュール名８０３は、検索した結果特定されたモジュールのモジュールＩＤ８０２、モジュール名３０２に対応する情報が格納される。一致画像バッファ８０４は、同じ画像バッファであると判定された画像バッファが、入力画像バッファと出力画像バッファのいずれに設定されているのかを示す情報である。上流フラグ８０５は、検索した結果特定されたモジュールが、検索元となるモジュールよりも上流に配置されたもの（検索元となるモジュールよりも前に処理が実行されるもの）であるか否か、つまり検索した結果特定されたモジュールが、検索元となるモジュールよりも処理順が早いか否かを示すフラグである。上流フラグ８０５に「１」が格納されていれば、検索した結果特定されたモジュールが、検索元となるモジュールよりも上流に配置されたものである。上流フラグ８０５に「０」が格納されていれば、検索した結果特定されたモジュールが、検索元となるモジュールよりも下流に配置されたものである。
【００５０】
画像バッファテーブル９００（図９参照）は、処理フローを構成する各モジュールが使用する画像バッファに関する情報を示す。画像バッファテーブル９００は、情報処理装置１００の外部メモリ１１１等に記憶され、ＩＮＤＥＸ９０１、画像バッファＩＤ９０２、名称９０３、画像情報９０４から構成される。ＩＮＤＥＸ９０１は、作成された画像バッファごとに割り振られる識別情報である。また画像バッファＩＤ９０２は、作成された画像バッファのＩＤを示す。画像バッファの名称は自由に付与することが可能である。名称９０３は、画像バッファの名称であり、ユーザが自由につけることの可能な名称である。画像情報９０４は、画像バッファの大きさやビット数を示すものであり、ＳｉｚｅＸ（横のピクセル数），ＳｉｚｅＹ（縦のピクセル数），Ｂｉｔ（１ピクセルあたりのビット数）を格納している。これらの情報により、画像バッファのサイズが規定される。
【００５１】
フォルダモジュール画像バッファテーブル１１００は、フォルダモジュールごとに作られる、フォルダモジュールに対応する画像バッファのテーブルである。例えば図１１に示すテーブルである。フォルダモジュール画像バッファテーブル１１００は、ＩＮＤＥＸ９０１、画像バッファＩＤ９０２、名称９０３、画像情報９０４から構成される。それぞれの項目の説明は、画像バッファテーブル９００と同様なので説明を省略する。
【００５２】
テーブル記憶部２００は、以上のような各種テーブルを記憶している。
【００５３】
図２に説明を戻す。処理フロー作成部２１０は、ユーザからの指示に応じて、モジュールテーブル３００に格納された各モジュールをフローチャート形式に構築する機能部である。モジュールを処理フローに追加、処理フローに配置されたモジュールを処理フローから削除、処理フローに配置されたモジュールの位置を移動、処理フローに配置されたモジュールのパラメータ変更等を行うことができる。
【００５４】
ソースコード変換部２２０は、処理フロー作成部２１０で作成された処理フローが示す画像処理ロジックを、ソースコードに変換する機能部である。処理フローを構成する各モジュールのソースコード３０３を取得し、処理フローが示す処理順となるよう取得したソースコードを組み合わせる。
【００５５】
コンパイル部２３０は、ソースコード変換部２２０で変換されたソースコードをコンパイルし、オブジェクトコードを生成する機能部である。
【００５６】
処理フロー実行部２４０は、コンパイル部２３０でコンパイルされたオブジェクトコードを実行する機能部である。
【００５７】
処理フロー保存部２５０は、処理フロー作成部２１０で作成された処理フローを保存する機能部である。
【００５８】
画像バッファ管理部２６０は、処理フロー作成部２１０で作成された処理フローを構成するモジュールが使用する画像バッファを管理する機能部である。画像バッファは、あらかじめユーザによって作成される。
【００５９】
フォルダモジュール保存部２７０は、処理フロー作成部２１０で作成された処理フローをフォルダモジュールとして保存する機能部である。
【００６０】
画像バッファ使用領域特定部２８０は、追加しようとするフォルダモジュールを実行するために必要とする画像バッファを特定し、必要となる画像バッファの容量を特定する機能部である。
【００６１】
次に、本発明の実施形態における一連の処理の流れについて、図１２を用いて説明する。
【００６２】
まず、ステップＳ１２０１では、情報処理装置１００のＣＰＵ１０１は、ユーザからの指示に応じて画像処理ロジック構築アプリケーションを起動し、処理フロー構築画面１３００をディスプレイ１１０に表示する。
【００６３】
処理フロー構築画面１３００の画面構成の一例を図１３に示す。処理フロー構築画面１３００は、処理フロー描画領域１３０１、モジュール一覧領域１３０２、パラメータ一覧領域１３０３、通知領域１３０４、実行結果欄１３０５、テンプレート一覧領域１３０６を備える。ユーザは、モジュール一覧領域１３０２に表示された、モジュールテーブル３００が示すモジュールの一覧から、所望の画像処理ロジックを構築するために必要なモジュールを選択し、ドラッグアンドドロップで処理フロー描画領域１３０１に追加していく。処理フロー描画領域１３０１に表示された処理フローを構成するモジュールのうち、パラメータを閲覧・設定したいモジュールを選択することで、選択されたモジュールのパラメータがパラメータ一覧領域１３０３に表示される。また、何かユーザに対して通知すべきことがあれば、通知領域１３０４で通知がなされる。後述する処理フローの実行を行うと、実行結果として、画像バッファがそれぞれ実行結果欄１３０５で確認可能に表示される。テンプレート一覧領域１３０６は、モジュールテーブル３００が示すフォルダモジュールを表示する領域である。フォルダモジュールか否かは、参照先テーブル３０６がフォルダモジュールか否かによって判定する。フォルダモジュールの判定方法はフラグなどによって判定してもよい。ユーザは、テンプレート一覧領域１３０６からフォルダモジュールを選択し、ドラッグアンドドロップで処理フロー描画領域１３０１に追加していく。
【００６４】
ステップＳ１２０２では、情報処理装置１００のＣＰＵ１０１は、ユーザから入力デバイス１０９を通じて入力を受け付けたか否かを判定する。入力を受け付けたと判定した場合には、ステップＳ１２０３に処理を進める。入力を受け付けたと判定できなかった、すなわち入力を受け付けていない場合には、ユーザからの入力があるまで待機する。
【００６５】
ステップＳ１２０３では、情報処理装置１００のＣＰＵ１０１は、ユーザからの入力が画像バッファの設定を行う指示であるか否かを判定する。より具体的には、処理フロー構築画面１３００のプロジェクトメニューに備える画像バッファの設定項目（不図示）が選択されたか否かで判定する。ユーザからの入力が画像バッファの設定を行う指示であると判定した場合には、ステップＳ１２０４に処理を進める。ユーザからの入力が画像バッファの設定を行う指示でないと判定した場合には、ステップＳ１２０５に処理を進める。
【００６６】
ステップＳ１２０４では、情報処理装置１００のＣＰＵ１０１は、画像バッファ設定画面１４００を表示し、ユーザからの指示に応じて画像バッファの設定を行う。図１４に画像バッファ設定画面１４００の画面構成の一例を示す。画像バッファ設定画面１４００では、処理フロー描画領域１３０１に描画された処理フローで利用する画像バッファの追加や削除を行うことが可能である。追加ボタン１４０１の押下を受け付けると、新しく画像バッファの記憶領域を確保するための入力項目が追加される。また、削除ボタン１４０２が押下されると、最下行の画像バッファの入力項目が削除される。画像バッファの追加や削除を行い、ＯＫボタンの押下を受け付けることで、前述した画像バッファテーブル９００が更新される。新しくレコードが作成されると画像バッファが追加されメモリ領域に確保される。画像バッファのレコードが削除されると、対象の画像バッファが削除される。このように処理フローに対して事前に画像バッファを確保しておくことで、無駄な画像バッファをＲＡＭ１０３に確保しない。画像バッファ設定画面１４００には、名称入力欄１４０３、横のサイズ１４０４、縦のサイズ１４０５、ビット数１４０６が設けられている。名称入力欄１４０３は名称９０３の入力を受け付けることの可能な入力欄である。横のサイズ１４０４、縦のサイズ１４０５、ビット数１４０６は、ユーザから画像バッファに関する情報の指定を受け付けることができる入力欄であり、それぞれ、画像情報９０４のＳｉｚｅＸ、ＳｉｚｅＹ、Ｂｉｔに対応するものである。このような画面を通じて、画像バッファテーブル９００を編集することが可能であり、あらかじめ必要な数の画像バッファを確保しておく。処理が終わったら（閉じるボタン等が押下されたら）、ステップＳ１２０２に処理を戻す。
【００６７】
ステップＳ１２０５では、情報処理装置１００のＣＰＵ１０１は、ユーザからの入力が処理フローにモジュールの追加を行う指示であるか否かを判定する。より具体的には、モジュール一覧領域１３０２からいずれかのモジュールが処理フローにドラッグアンドドロップされたか否かに応じて判定する。ユーザからの入力が処理フローにモジュールの追加を行う指示であったと判定した場合には、ステップＳ１２０６に処理を進める。ユーザからの入力が処理フローにモジュールの追加を行う指示でないと判定した場合には、ステップＳ１２０７に処理を進める。
【００６８】
ステップＳ１２０６では、情報処理装置１００のＣＰＵ１０１は、処理フローにモジュールを追加する処理を行う（モジュール追加手段）。モジュール追加処理の詳細は、後述する図１５に示す。モジュール追加処理が終了したら、ステップＳ１２０２に処理を戻す。
【００６９】
ステップＳ１２０７では、情報処理装置１００のＣＰＵ１０１は、ユーザからの入力が処理フローに配置されたモジュールの選択を行う指示（選択操作）であるか否かを判定する。すなわち、処理フローに配置されたモジュールのいずれかがユーザから選択されたか否かを判定する。ユーザからの入力が処理フローに配置されたモジュールの選択を行う指示であると判定した場合には、ステップＳ１２０８に処理を進める。ユーザからの入力が処理フローに配置されたモジュールの選択を行う指示でないと判定した場合には、ステップＳ１２０９に処理を進める。
【００７０】
ステップＳ１２０８では、情報処理装置１００のＣＰＵ１０１は、処理フローに配置されたモジュールを選択する処理を行う。モジュール選択処理の詳細は、後述する図１６に示す。モジュール選択処理が終了したら、ステップＳ１２０２に処理を戻す。
【００７１】
ステップＳ１２０９では、情報処理装置１００のＣＰＵ１０１は、ユーザからの入力が処理フローに配置されたモジュールのパラメータを変更する指示であるか否かを判定する。すなわち、ユーザからモジュールが選択されると当該モジュールのパラメータがパラメータ一覧領域１３０３に表示されるので、このパラメータ一覧領域１３０３においてパラメータの設定変更を受け付けたか否かを判定する。ユーザからの入力が処理フローに配置されたモジュールのパラメータを変更する指示であると判定した場合には、ステップＳ１２１０に処理を進める。ユーザからの入力が処理フローに配置されたモジュールのパラメータを変更する指示でないと判定した場合には、ステップＳ１２１１に処理を進める。
【００７２】
ステップＳ１２１０では、情報処理装置１００のＣＰＵ１０１は、ユーザから選択されたモジュールのパラメータを変更する処理を行う。パラメータ変更処理の詳細は、後述する図１８に示す。パラメータ変更処理が終了したら、ステップＳ１２０２に処理を戻す。
【００７３】
ステップＳ１２１１では、情報処理装置１００のＣＰＵ１０１は、ユーザからの入力が処理フローに配置されたモジュールの配置位置を変更する指示であるか否かを判定する。すなわち、処理フローに配置されたモジュールをドラッグアンドドロップにより処理フローのいずれかの位置に移動されたかを判定する。ユーザからの入力が処理フローに配置されたモジュールの配置位置を変更する指示であると判定した場合には、ステップＳ１２１２に処理を進める。ユーザからの入力が処理フローに配置されたモジュールの配置位置を変更する指示でないと判定した場合には、ステップＳ１２１３に処理を進める。
【００７４】
ステップＳ１２１２では、情報処理装置１００のＣＰＵ１０１は、ユーザから選択された処理フロー上のモジュールをユーザから指示された処理フロー上の位置に移動する。この移動に伴い処理フローの処理順が変更となるので、処理フローテーブル４００、ループテーブル５００、分岐テーブル６００、スイッチテーブル７００のいずれかから移動したモジュールのレコードを取得し、これらのテーブルの適切な位置に取得したレコードを挿入する。そして、処理順となるよう、これらのテーブルごとにＩＮＤＥＸを更新する。処理が終了したら、ステップＳ１２０２に処理を戻す。
【００７５】
ステップＳ１２１３では、情報処理装置１００のＣＰＵ１０１は、ユーザからの入力が処理フローに配置されたモジュールを削除する指示であるか否かを判定する。すなわち、処理フローに配置されたモジュールから、削除したいモジュールが選択され、不図示の削除ボタンが選択されたか否かを判定する。ユーザからの入力が処理フローに配置されたモジュールを削除する指示であると判定した場合には、ステップＳ１２１４に処理を進める。ユーザからの入力が処理フローに配置されたモジュールを削除する指示でないと判定した場合には、ステップＳ１２１５に処理を進める。
【００７６】
ステップＳ１２１４では、情報処理装置１００のＣＰＵ１０１は、ユーザから選択された処理フロー上のモジュールを処理フロー上から削除する。この削除に伴い、処理フローの処理順が変更となるので、処理フローテーブル４００、ループテーブル５００、分岐テーブル６００、スイッチテーブル７００のいずれかから対象のモジュールを削除し、ＩＮＤＥＸを処理順となるように更新する。処理が終了したら、ステップＳ１２０２に処理を戻す。
【００７７】
ステップＳ１２１５では、情報処理装置１００のＣＰＵ１０１は、ユーザからの入力が処理フローで構築した画像処理ロジックを実行する指示であるか否かを判定する。より具体的には、不図示の実行ボタンが押下されたか否かを判定する。ユーザからの入力が処理フローで構築した画像処理ロジックを実行する指示であると判定した場合には、ステップＳ１２１６に処理を進める。ユーザからの入力が処理フローで構築した画像処理ロジックを実行する指示でないと判定した場合には、ステップＳ１２１７に処理を進める。
【００７８】
ステップＳ１２１６では、情報処理装置１００のＣＰＵ１０１は、処理フローに配置された各モジュールを、処理フローが示す処理順に実行する。処理フローに配置された各モジュールのソースコードをモジュールテーブル３００のソースコード３０３から取得し、取得したソースコードを処理順に組み合わせて、コンパイルする。そしてコンパイルした結果得られるオブジェクトコードを実行することで、これを実現する。より具体的には、図２０に示す処理フロー実行処理で詳細に説明する。処理が終わったら、ステップＳ１２０２に処理を戻す。
【００７９】
ステップＳ１２１７では、情報処理装置１００のＣＰＵ１０１は、ユーザからの入力が処理フローを保存する指示であるか否かを判定する。より具体的には、不図示の保存ボタンが押下されたか否かを判定する。ユーザからの入力が処理フローを保存する指示であると判定した場合には、ステップＳ１２１８に処理を進める。ユーザからの入力が処理フローを保存する指示でないと判定した場合には、ステップＳ１２１９に処理を進める。
【００８０】
ステップＳ１２１８では、情報処理装置１００のＣＰＵ１０１は、処理フロー描画領域１３０１で構築された処理フローを保存する。より具体的には、処理フローテーブル４００、ループテーブル５００、分岐テーブル６００、スイッチテーブル７００を外部メモリ１１１等に保存する。こうしておくことで、あとで作業を再開することができる。
【００８１】
ステップＳ１２１９では、情報処理装置１００のＣＰＵ１０１は、ユーザからの入力が処理フローをフォルダモジュールとして保存する指示であるか否かを判定する。より具体的には、不図示のフォルダモジュール保存ボタンが押下されたか否かを判定する。ユーザからの入力がフォルダモジュールとして処理フローを保存する指示であると判定した場合には、ステップＳ１２２０に処理を進める。ユーザからの入力が処理フローを保存する指示でないと判定した場合には、ステップＳ１２２１に処理を進める。
【００８２】
ステップＳ１２２０では、情報処理装置１００のＣＰＵ１０１は、処理フロー描画領域１３０１で構築された処理フローをフォルダモジュールとして保存する（フォルダモジュール生成手段）。より具体的には、処理フローテーブル４００をコピーし、新しくフォルダモジュールテーブル１０００を生成する。更に処理フローの画像バッファテーブル９００をコピーすることで新しくフォルダモジュール画像バッファテーブル１１００を生成する。生成したフォルダモジュールテーブル１０００とフォルダモジュール画像バッファテーブル１１００は外部メモリ１１１等に保存する。
【００８３】
ステップＳ１２２１では、情報処理装置１００のＣＰＵ１０１は、ユーザからの入力が画像処理ロジック構築アプリケーションの終了指示であるか否かを判定する。より具体的には、不図示の終了ボタンが押下されたか否かを判定する。ユーザからの入力が画像処理ロジック構築アプリケーションの終了指示であると判定した場合には、ステップＳ１２２２に処理を進める。ユーザからの入力が画像処理ロジック構築アプリケーションの終了指示でないと判定した場合、すなわち前述した処理以外の処理を実行する、または入力内容が特定できないのでエラーを通知し、ステップＳ１２０２に処理を戻す。
【００８４】
ステップＳ１２２２では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１２０１で表示した処理フロー構築画面１３００を閉じて、画像処理ロジック構築アプリケーションを終了する。
【００８５】
次に、モジュール追加処理について図１５を用いて説明する。
【００８６】
まずステップＳ１５０１では、情報処理装置１００のＣＰＵ１０１は、処理フローに追加するモジュールを特定する。より具体的には、モジュール一覧領域１３０２からドラッグされたモジュールを特定する。
【００８７】
ステップＳ１５０２では、情報処理装置１００のＣＰＵ１０１は、処理フローに追加する位置を特定する。より具体的には、モジュール一覧領域１３０２からドラッグされたモジュールがドロップされた処理フロー上の位置を特定する。
【００８８】
ステップＳ１５０３では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１５０１で特定したモジュールをステップＳ１５０２で特定した位置に追加する。より具体的には、ステップＳ１５０２で特定した位置に対応する、処理フローテーブル４００、ループテーブル５００、分岐テーブル６００、スイッチテーブル７００のいずれかを特定する。そして、ステップＳ１５０２で特定した位置に対応するレコードを特定したテーブルに生成する。
【００８９】
ステップＳ１５０４では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１５０３で追加されたモジュールがフォルダモジュールか否かを判定する。より具体的にはステップＳ１５０１で特定したモジュールの参照先テーブル３０６がフォルダモジュールを参照しているか否かを判定する。フォルダモジュールを参照している場合には、モジュールがフォルダモジュールであると判定する。フォルダモジュールであると判定された場合には処理をステップＳ１５０５に進める。フォルダモジュールでないと判定された場合には処理をステップＳ１５１０に進める。
【００９０】
ステップＳ１５０５では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１５０３で追加されたモジュールの参照先テーブル３０６のテーブルであるフォルダモジュールテーブル１０００を読み込む。
【００９１】
ステップＳ１５０６では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１５０５で読み込んだフォルダモジュールテーブル１０００に対応するフォルダモジュール画像バッファテーブル１１００を取得する。
【００９２】
ステップＳ１５０７では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１５０５で読み込んだフォルダモジュールテーブル１０００の入力パラメータ１００４と出力パラメータ１００５に格納される画像バッファＩＤ１１０２を抽出することで画像バッファを特定する（特定手段）。重複する画像バッファＩＤ１１０２は抽出せず、フォルダモジュールテーブル１０００で使用する画像バッファＩＤを抽出する。ここでいう特定とは、画像バッファＩＤ１１０２と、画像バッファＩＤ１１０２の数と、画像バッファそれぞれの画像情報１１０４である。
【００９３】
ステップＳ１５０８では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１５０６で特定した画像バッファＩＤ１１０２に対応する名称１１０３、画像情報１１０４を画像バッファテーブル９００に追加する。
【００９４】
ステップＳ１５０９では、情報処理装置１００のＣＰＵ１０１は、画像バッファテーブル９００にレコードが追加されると、追加されたレコードの画像情報９０４が示す情報に基づいて記憶容量を算出し、ＲＡＭ１０３上に算出した記憶容量を確保（割り当て）し、これを画像バッファとする（画像バッファ確保手段）。より具体的には、画像情報９０４のＳｉｚｅＸとＳｉｚｅＹを乗じる。Ｂｉｔは、「２」を底とする色のビット数を示しており、１ピクセルあたり８ビットの色情報（この場合、２５６色）を持たせることとなる。ＳｉｚｅＸとＳｉｚｅＹを乗じたものに対して、ビット数を乗じると、画像バッファの容量を求めることができる。このようにして求めた画像バッファの容量を用いて、画像バッファテーブル９００に追加されたレコードの数（画像バッファの数）の記憶容量をメモリ上に確保（割り当て）する。本実施例では、画像バッファごとにサイズやビット数が可変であるが、サイズやビット数が固定である場合には、レコードの数（画像バッファの数）が特定できれば、レコードの数だけで記憶容量をメモリ上に確保することができる。
【００９５】
このように、追加するモジュールがフォルダモジュールである場合にフォルダモジュール内で必要となる画像バッファのメモリ領域と数を特定し、処理フローに既に設定された画像バッファとは異なる画像バッファとしてＲＡＭ１０３に新たに確保する。これにより、ユーザはフォルダモジュールの追加時に、既に処理フローのモジュールに設定されている画像バッファに影響を与えることなく自動でフォルダモジュールが使用する画像バッファを確保することを可能にする。さらに、フォルダモジュールが必要とする画像バッファを確保するため、無駄な記憶容量を確保しないという効果ももたらす。
【００９６】
更に、フォルダモジュール内の画像バッファは既に設定されているため、追加時に再び設定する必要がなく、作業効率の上昇を見込むことができる。
【００９７】
ステップＳ１５１０では、情報処理装置１００のＣＰＵ１０１は、追加したモジュールが画像バッファを設定可能なモジュールであるか否かを判定する。より具体的には、追加したモジュールの入力パラメータ３０４と出力パラメータ３０５とを参照し、入力画像バッファまたは出力画像バッファが設定可能か否かを判定する。追加したモジュールが画像バッファを設定可能なモジュールであると判定した場合には、ステップＳ１５１１に処理を進める。追加したモジュールが画像バッファを設定可能なモジュールでない、すなわち入力画像バッファと出力画像バッファのいずれも設定できないモジュールであると判定した場合には、モジュール追加処理を終了する。
【００９８】
ステップＳ１５１１では、情報処理装置１００のＣＰＵ１０１は、追加したモジュールに入力画像バッファが設定可能であるか否かを判定する。より具体的には、追加したモジュールの入力パラメータ３０４を参照し、入力画像バッファが設定可能か否かを判定する。追加したモジュールに入力画像バッファが設定可能であると判定した場合には、ステップＳ１５１２に処理を進める。追加したモジュールに入力画像バッファが設定可能でない、すなわち出力画像バッファだけが設定可能であると判定した場合には、ステップＳ１５１３に処理を進める。
【００９９】
ステップＳ１５１２では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１５０３で追加されたモジュールの入力画像バッファに設定される画像バッファを示す情報を表示可能な領域（以下、入力画像バッファ表示領域）を、前記処理フローにおいて表示する。
【０１００】
従来は、画像バッファのようなパラメータはパラメータ一覧領域１３０３に示す箇所でしか確認することができなかった。しかしながら、このように処理フロー上の各モジュールの近傍に画像バッファに関する情報を表示することで、どのモジュールでどの画像バッファを使用しているかが把握しやすくなる。
【０１０１】
ステップＳ１５１３では、情報処理装置１００のＣＰＵ１０１は、追加したモジュールに出力画像バッファが設定可能であるか否かを判定する。より具体的には、追加したモジュールの出力パラメータ３０５を参照し、出力画像バッファが設定可能か否かを判定する。追加したモジュールに出力画像バッファが設定可能であると判定した場合には、ステップＳ１５１４に処理を進める。追加したモジュールに出力画像バッファが設定可能でない、すなわち入力画像バッファだけが設定可能であると判定した場合には、モジュール追加処理を終了する。
【０１０２】
ステップＳ１５１４では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１５０３で追加されたモジュールの出力画像バッファに設定される画像バッファを示す情報を表示可能な領域（以下、出力画像バッファ表示領域）を、前記処理フローにおいて表示する。
【０１０３】
このようにして、入力画像バッファや出力画像バッファが設定可能なモジュールが処理フローに追加された場合には、入力画像バッファ表示領域や出力画像バッファ表示領域を表示する。
【０１０４】
ここで、モジュールによっては、入力画像バッファと出力画像バッファのいずれかだけが設定可能なモジュールもある。すなわち、ステップＳ１５１２またはステップＳ１５１４のいずれか一方だけが実行される場合である。この場合には、入力画像バッファ表示領域と出力画像バッファ表示領域のいずれか一方のみが表示されることになる。
【０１０５】
更には、モジュールによっては、画像バッファを使用しないモジュールが存在する。すなわち、ステップＳ１５１０で画像バッファが設定可能でないと判定されたモジュールである。この場合には、入力画像バッファ表示領域及び出力画像バッファ表示領域のいずれも表示されない。
【０１０６】
このように、処理フローに追加されるモジュールが、フォルダモジュールである場合にはフォルダモジュールが必要とする画像バッファを自動で追加することにより、ユーザは既に処理フローで使われている画像バッファへの影響を考える必要がなくなるという効果がある。さらに、フォルダモジュールには既に画像バッファの順列が設定されているので、従来のようにモジュール追加時に画像バッファを設定しなおす必要がなくなるという効果がある。
【０１０７】
次に、モジュール選択処理について図１６を用いて説明する。
【０１０８】
まずステップＳ１６０１では、情報処理装置１００のＣＰＵ１０１は、処理フローを構築するモジュールのうち、ユーザから選択されたモジュールを特定する。
【０１０９】
ステップＳ１６０２では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１６０１で特定されたモジュールの入力パラメータと出力パラメータとを取得する。より具体的には、特定されたモジュールに設定されている入力パラメータと出力パラメータとを、処理フローテーブル４００、ループテーブル５００、分岐テーブル６００、スイッチテーブル７００のいずれかから取得する。どのテーブルから取得するのかは、特定されたモジュールが配置されている位置に応じる。
【０１１０】
ステップＳ１６０３では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１６０２で取得した入力パラメータと出力パラメータとを処理フロー構築画面１３００のパラメータ一覧領域１３０３に表示する。こうして表示した各パラメータは、ユーザからの入力によって自由に変更できる。
【０１１１】
ステップＳ１６０４では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１６０１で特定したモジュールに入力画像バッファが設定済みであるか否かを判定する。より具体的には、ステップＳ１６０２で取得した入力パラメータの入力画像バッファに、あらかじめ作成した画像バッファの画像バッファ名が含まれているか否かを判定する。入力画像バッファが設定済みであると判定した場合には、ステップＳ１６０５に処理を進める。入力画像バッファが設定済みでないと判定した場合には、ステップＳ１６１０に処理を進める。
【０１１２】
ステップＳ１６０５では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１６０１で特定したモジュールの入力画像バッファに設定されている画像バッファを特定する。より具体的には、当該画像バッファの画像バッファＩＤ９０２を特定する。
【０１１３】
ステップＳ１６０６では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１６０１で特定したモジュールとは異なるモジュールのうち、ステップＳ１６０５で特定した画像バッファを用いて画像処理を行うモジュール（当該画像バッファが入力画像バッファまたは出力画像バッファに設定されているモジュール）を、処理フローに配置されたモジュールから検索する処理を実行する。画像バッファ検索処理の詳細は、後述する図２２に示す。
【０１１４】
ステップＳ１６０７では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１６０６で検索した結果、ステップＳ１６０５で特定した画像バッファを用いて処理を実行するモジュールが特定できたか否かを判定する。より具体的には、ステップＳ１６０６で出力される検索結果テーブル８００に検索結果が格納されていれば、特定できたと判定する。特定できたと判定した場合には、ステップＳ１６０８に処理を進める。特定できなかったと判定した場合には、ステップＳ１６０９に処理を進める。
【０１１５】
ステップＳ１６０８では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１６０６で検索し特定したモジュールの画像バッファであって、ステップＳ１６０５で特定した画像バッファと同じ画像バッファを識別表示する。
【０１１６】
次に、ステップＳ１６０８では、この検索結果テーブル８００を参照して、処理フロー上のモジュール（モジュールＩＤ「Ｕ００００１」のカメラモジュール、モジュールＩＤ「０００２２」のメディアンモジュール、モジュールＩＤ「０００４１」の画像表示モジュール）を特定する。そして、当該特定したモジュールの一致画像バッファ８０４が示す入力画像バッファまたは出力画像バッファ、もしくは両方に設定された画像バッファに関する情報を識別表示する。
【０１１７】
例えば、検索結果テーブル８００のＩＮＤＥＸ８０１が「１」のレコードには、モジュールＩＤが「Ｕ００００１」であるカメラモジュールを示す情報が格納されている。ステップＳ１６０６では、このカメラモジュールの入力画像バッファに設定されている画像バッファが、ステップＳ１６０５で特定した画像バッファと同じであると特定されたので、当該レコードの一致画像バッファ８０４に「入力画像バッファ」と格納されている。つまり、このレコードの情報に基づいて、処理フロー上のカメラモジュールの入力画像バッファ表示領域に表示されている「画像バッファ１」という文字列を識別表示する。こうすることで、ユーザから選択されたモジュールに設定されている画像バッファと同じ画像バッファを使用しているモジュールで、当該画像バッファに関する情報を識別表示することができる。
【０１１８】
尚、本実施形態では、入力画像バッファ表示領域に表示された画像バッファに関する情報を識別表示しているが、同じ画像バッファが使われていることをユーザに認識させることができればよい。つまり、ユーザから選択されたモジュールと同じ画像バッファを用いるモジュール自体を処理フロー上で識別表示する形態でもよい。
【０１１９】
一方ステップＳ１６０９では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１６０６で検索した結果、ステップＳ１６０５で特定した画像バッファを用いて処理を行うモジュールが存在しないので、その旨を通知するために、ユーザから選択されたモジュールの入力画像バッファに設定されている画像バッファを識別表示する。より具体的には、ユーザから選択されたモジュールの入力画像バッファ表示領域に表示されている画像バッファに関する情報を識別表示する。
【０１２０】
ステップＳ１６１０では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１６０１で特定したモジュールに出力画像バッファが設定済みであるか否かを判定する。より具体的には、ステップＳ１６０２で取得した出力パラメータの出力画像バッファに、あらかじめ作成した画像バッファの画像バッファ名が含まれているか否かを判定する。出力画像バッファが設定済みであると判定した場合には、ステップＳ１６１１に処理を進める。出力画像バッファが設定済みでないと判定した場合には、モジュール選択処理を終了する。
【０１２１】
ステップＳ１６１１では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１６０１で特定したモジュールの出力画像バッファに設定されている画像バッファを特定する。より具体的には、当該画像バッファの画像バッファＩＤ９０２を特定する。
【０１２２】
ステップＳ１６１２では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１６０１で特定したモジュールとは異なるモジュールのうち、ステップＳ１６１１で特定した画像バッファを用いて画像処理を行うモジュール（当該画像バッファが入力画像バッファまたは出力画像バッファに設定されているモジュール）を、処理フローに配置されたモジュールから検索する処理を実行する。画像バッファ検索処理の詳細は、後述する図２２に示す。
【０１２３】
ステップＳ１６１３では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１６１２で検索した結果、ステップＳ１６１１で特定した画像バッファを用いて処理を実行するモジュールが特定できたか否かを判定する。より具体的には、ステップＳ１６１２で出力される検索結果テーブル８００に検索結果が格納されていれば、特定できたと判定する。特定できたと判定した場合には、ステップＳ１６１４に処理を進める。特定できなかったと判定した場合には、ステップＳ１６１５に処理を進める。
【０１２４】
ステップＳ１６１４では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１６０６で検索し特定したモジュールの画像バッファであって、ステップＳ１６０５で特定した画像バッファと同じ画像バッファを識別表示する。ステップＳ１６１４においても、前述したステップＳ１６０８と同様の処理を実行する。ここで、ステップＳ１６０８またはステップＳ１６０９で識別表示がなされているのであれば、ステップＳ１６１４または後述するステップＳ１６１５では、ステップＳ１６０８またはステップＳ１６０９とは異なる識別表示を行う。つまり、ユーザから選択されたモジュールの入力画像バッファに設定されている画像バッファと同一の画像バッファに関する情報の識別表示と、ユーザから選択されたモジュールの出力画像バッファに設定されている画像バッファと同一の画像バッファに関する情報の識別表示とを異なる色や形等で表現する。
【０１２５】
ステップＳ１６１５では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１６１２で検索した結果、ステップＳ１６１１で特定した画像バッファを用いて処理を行うモジュールが存在しないので、その旨を通知するために、ユーザから選択されたモジュールの出力画像バッファに設定されている画像バッファを識別表示する。
【０１２６】
次に、パラメータ変更処理について図１８、及び図１９を用いて説明を行う。
【０１２７】
まず、ステップＳ１８０１では、情報処理装置１００のＣＰＵ１０１は、現在選択されている処理フロー上のモジュール（例えば、前述したモジュール選択処理で選択されたモジュール）の入力画像バッファの設定がなされたか否かを判定する。より具体的には、選択されたモジュールのパラメータ一覧領域１３０３において、入力画像バッファとしてあらかじめ作成された画像バッファが選択されたか否かを判定する。入力画像バッファの設定がなされたと判定した場合には、ステップＳ１８０２に処理を進める。入力画像バッファの設定がなされていないと判定した場合には、後述する図１９のステップＳ１９０１に処理を進める。
【０１２８】
ステップＳ１８０２では、情報処理装置１００のＣＰＵ１０１は、パラメータ一覧領域１３０３で選択された画像バッファを特定する。そして、ステップＳ１８０３では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１８０２で特定した画像バッファを選択されているモジュールの入力画像バッファとして設定する。より具体的には、処理フローテーブル４００、ループテーブル５００、分岐テーブル６００、スイッチテーブル７００のいずれかに格納されている、選択中のモジュールのレコードの入力パラメータに、選択された画像バッファを設定する。
【０１２９】
ステップＳ１８０４では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１８０３で設定した画像バッファの画像バッファＩＤ９０２をパラメータ一覧領域１３０３に表示する。
【０１３０】
ステップＳ１８０５では、情報処理装置１００のＣＰＵ１０１は、処理フロー上で選択されているモジュールとは異なるモジュールのうち、ステップＳ１８０２で特定した画像バッファを用いて画像処理を行うモジュール（当該画像バッファが入力画像バッファまたは出力画像バッファに設定されているモジュール）を、処理フローに配置されたモジュールから検索する処理を実行する。画像バッファ検索処理の詳細は、後述する図２２に示す。
【０１３１】
ステップＳ１８０６では、情報処理装置１００のＣＰＵ１０１は、選択中のモジュールが配置された位置よりも上流に配置されている（選択中のモジュールよりも前に処理が実行される）モジュールのうち、ステップＳ１８０２で特定した画像バッファと同じ画像バッファが出力画像バッファに設定されているモジュールが存在するか否かを判定する。より具体的には、ステップＳ１８０５で出力された検索結果テーブル８００の上流フラグ８０５に「１」が格納されているモジュールのうち、一致画像バッファ８０４が「出力画像バッファ」となっているモジュールがあるか否かを判定する。選択中のモジュールよりも上流のモジュールの出力画像バッファにステップＳ１８０２で特定した画像バッファが設定されていないと判定した場合には、ステップＳ１８０７に処理を進める。選択中のモジュールよりも上流のモジュールの出力画像バッファにステップＳ１８０２で特定した画像バッファが設定されていると判定した場合には、ステップＳ１８０８に処理を進める。
【０１３２】
ステップＳ１８０７では、情報処理装置１００のＣＰＵ１０１は、選択中のモジュールよりも上流のモジュールの出力画像バッファにステップＳ１８０２で特定した画像バッファが設定されていない旨を通知する。例えば通知領域１３０４で通知してもよい。選択中のモジュールよりも上流のモジュールの出力画像バッファにステップＳ１８０２で特定した画像バッファが設定されていない旨をユーザに通知することで、設定の誤りをユーザに認識させる効果がある。入力画像バッファに設定する画像バッファには、画像データが出力されていなければならない。すなわち、入力画像バッファが設定可能なモジュールは、当該入力画像バッファに設定された画像バッファから画像データを取得して所定の処理を実行するのだが、そもそも当該画像バッファに何も画像データが格納されていない状態では、当該所定の処理を実行できない。当該所定の処理を実行するためには、入力画像バッファの設定を行うモジュールよりも処理順が前のモジュール（上流のモジュール）で、前記画像バッファが出力画像バッファとして設定されていなければならない。そこで、ステップＳ１８０６において、選択中のモジュールよりも上流のモジュールの出力画像バッファにステップＳ１８０２で特定した画像バッファが設定されているか否かを判定し、設定されていなければユーザに通知するようにしている。
【０１３３】
ステップＳ１８０８では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１８０５で検索した結果、ステップＳ１８０２で特定した画像バッファを用いて処理を実行するモジュールが特定できたか否かを判定する。詳細な処理はステップＳ１６０７と同様である。
【０１３４】
ステップＳ１８０９では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１８０５で検索し特定したモジュールの画像バッファであって、ステップＳ１８０２で特定した画像バッファと同じ画像バッファを識別表示する。詳細な処理はステップＳ１６０８と同様である。
【０１３５】
ステップＳ１８１０では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１８０５で検索した結果、ステップＳ１８０２で特定した画像バッファを用いて処理を行うモジュールが存在しないので、その旨を通知するために、ユーザから選択されたモジュールの入力画像バッファに設定されている画像バッファを識別表示する。詳細な処理はステップＳ１６０９と同様である。
【０１３６】
ステップＳ１８０９、またはステップＳ１８１０の処理が終了したら、図１９のステップＳ１９０１に処理を進める。
【０１３７】
続いて図１９の説明に移る。ステップＳ１９０１では、情報処理装置１００のＣＰＵ１０１は、現在選択されている処理フロー上のモジュール（例えば、前述したモジュール選択処理で選択されたモジュール）の出力画像バッファの設定がなされたか否かを判定する。より具体的には、選択されたモジュールのパラメータ一覧領域１３０３において、出力画像バッファとしてあらかじめ作成された画像バッファが選択されたか否かを判定する。出力画像バッファの設定がなされたと判定した場合には、ステップＳ１９０２に処理を進める。出力画像バッファの設定がなされていないと判定した場合には、パラメータ変更処理を終了する。
【０１３８】
ステップＳ１９０２では、情報処理装置１００のＣＰＵ１０１は、パラメータ一覧領域１３０３で選択された画像バッファを特定する。そして、ステップＳ１９０３では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１９０２で特定した画像バッファを選択されているモジュールの出力画像バッファとして設定する。詳細な処理はステップＳ１８０３と同様である。
【０１３９】
ステップＳ１９０４では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１９０３で設定した画像バッファの画像バッファＩＤ９０２をパラメータ一覧領域１３０３に表示する。
【０１４０】
ステップＳ１９０５では、情報処理装置１００のＣＰＵ１０１は、処理フロー上で選択されているモジュールとは異なるモジュールのうち、ステップＳ１９０２で特定した画像バッファを用いて画像処理を行うモジュール（当該画像バッファが入力画像バッファまたは出力画像バッファに設定されているモジュール）を、処理フローに配置されたモジュールから検索する処理を実行する。画像バッファ検索処理の詳細は、後述する図２２に示す。
【０１４１】
ステップＳ１９０６では、情報処理装置１００のＣＰＵ１０１は、選択中のモジュールが配置された位置よりも上流に配置されている（選択中のモジュールよりも前に処理が実行される）モジュールのうち、ステップＳ１９０２で特定した画像バッファと同じ画像バッファが出力画像バッファに設定されているモジュールが存在するか否かを判定する。詳細な処理はステップＳ１８０６と同様である。選択中のモジュールよりも上流のモジュールの出力画像バッファにステップＳ１９０２で特定した画像バッファが設定されていると判定した場合には、ステップＳ１９０７に処理を進める。選択中のモジュールよりも上流のモジュールの出力画像バッファにステップＳ１９０２で特定した画像バッファが設定されていないと判定した場合には、ステップＳ１９０８に処理を進める。
【０１４２】
ステップＳ１９０７では、情報処理装置１００のＣＰＵ１０１は、選択中のモジュールよりも上流のモジュールの出力画像バッファにステップＳ１９０２で特定した画像バッファが設定されている旨を通知する。通知の方法は特に問わないが、通知領域１３０４で通知してもよい。選択中のモジュールよりも上流のモジュールの出力画像バッファにステップＳ１８０２で特定した画像バッファが設定されている旨をユーザに通知することで、設定の誤りをユーザに認識させる効果がある。ユーザによっては、あるモジュールで出力された処理結果の画像データを画像バッファに残しておきたい場合がある。しかしながら、当該画像バッファに他のモジュールが処理結果の画像データを出力してしまうと、当該画像バッファに一時記憶されている画像データが上書きされてしまう。これを防止するために、ステップＳ１９０６において、選択中のモジュールよりも上流のモジュールの出力画像バッファにステップＳ１９０２で特定した画像バッファが設定されているか否かを判定し、設定されていればユーザに通知するようにしている。
【０１４３】
ステップＳ１９０８では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１９０５で検索した結果、ステップＳ１９０２で特定した画像バッファを用いて処理を実行するモジュールが特定できたか否かを判定する。詳細な処理はステップＳ１６１３と同様である。
【０１４４】
ステップＳ１９０９では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１９０５で検索し特定したモジュールの画像バッファであって、ステップＳ１９０２で特定した画像バッファと同じ画像バッファを識別表示する。詳細な処理はステップＳ１６１４と同様である。
【０１４５】
ステップＳ１９１０では、情報処理装置１００のＣＰＵ１０１は、ステップＳ１９０５で検索した結果、ステップＳ１９０２で特定した画像バッファを用いて処理を行うモジュールが存在しないので、その旨を通知するために、ユーザから選択されたモジュールの出力画像バッファに設定されている画像バッファを識別表示する。詳細な処理はステップＳ１６１５と同様である。
【０１４６】
次に処理フロー実行処理について、図２０を用いて説明する。
【０１４７】
ステップＳ２００１では、情報処理装置１００のＣＰＵ１０１は、処理フローテーブル４００を参照し、先頭のモジュール（ＩＮＤＥＸ４０１が最小のモジュール）を参照する。
【０１４８】
ステップＳ２００２では、情報処理装置１００のＣＰＵ１０１は、モジュールがフォルダモジュールか否かを判定する。より具体的にはステップＳ１５０１で参照したモジュールに対応する参照先テーブル３０６がフォルダモジュールを参照しているか否かを判定する。フォルダモジュールを参照している場合には、モジュールがフォルダモジュールであると判定する。モジュールがフォルダモジュールであると判定された場合には処理をステップＳ２００３に進め、モジュールがフォルダモジュールでないと判定された場合には処理をステップＳ２００４に進める。
【０１４９】
ステップＳ２００３では、情報処理装置１００のＣＰＵ１０１は、フォルダモジュール実行処理を行う。フォルダモジュール実行処理の詳細な説明は後の図２１で説明する。
【０１５０】
ステップＳ２００４では、情報処理装置１００のＣＰＵ１０１は、モジュールに設定される画像処理を実行する。モジュールの実行を終えたあと、処理をステップＳ２００５に進める。
【０１５１】
ステップＳ２００５では、情報処理装置１００のＣＰＵ１０１は、ステップＳ２００４で処理を行ったモジュールのＩＮＤＥＸ４０１の次のＩＮＤＥＸ４０１のモジュールを参照する。
【０１５２】
ステップＳ２００６では、情報処理装置１００のＣＰＵ１０１は、ステップＳ２００５で参照したモジュールがあるか否かによって、すべてのモジュールの処理が終了したか否かを判定する。すべてのモジュールの処理が終了したと判定された場合には処理を終了する。すべてのモジュールの処理が終了したと判定されない場合には処理をステップＳ２００２に戻す。
【０１５３】
処理フロー実行処理を行った結果の処理フロー構築画面１７００の一例が図１７に示す図である。実行結果欄１７０５に、それぞれ処理を行った結果を確認することができ、追加されたフォルダモジュールが必要とする画像バッファを、処理フローに追加することにより、画像が上書きすることなく、処理フロー実行後に確認することが可能になる。フォルダモジュールの画像バッファ１７０９が追加されているため、元々処理フローのために確保されていた画像バッファ１７０８と重複することなく、実行結果を確認することが可能である。
【０１５４】
次にフォルダモジュール実行処理について、図２１を用いて説明する。
【０１５５】
ステップＳ２１０１では、情報処理装置１００のＣＰＵ１０１は、ステップＳ２００２で参照した参照先テーブル３０６が示すフォルダモジュールテーブルの先頭のモジュール（ＩＮＤＥＸ１００１が最小のモジュール）を参照する。
【０１５６】
ステップＳ２１０２では、情報処理装置１００のＣＰＵ１０１は、フォルダモジュールに設定されている入力画像バッファ（モジュールテーブル３００の入力パラメータ３０４）から、ステップＳ２１０１で参照したモジュール（フォルダモジュールテーブル１０００の入力パラメータ１００４：画像処理１．画像バッファ１）に画像をコピーする。画像をコピーすることで、画像を上書きしてしまうことを防ぐ効果がある。
【０１５７】
ステップＳ２１０３では、情報処理装置１００のＣＰＵ１０１は、ステップＳ２１０１で参照したモジュールを実行する。
【０１５８】
ステップＳ２１０４では、情報処理装置１００のＣＰＵ１０１は、ステップＳ２１０３で実行した次のモジュール（ＩＮＤＥＸ１００１が次に大きいモジュール）を参照する。
【０１５９】
ステップＳ２１０５では、情報処理装置１００のＣＰＵ１０１は、他に未処理のモジュールがあるかないかを判定する。具体的には、ステップＳ２１０４で参照したモジュールがある場合には他に未処理のモジュールがあると判定し処理をステップＳ２１０３に戻す。ステップＳ２１０４で参照することができなかった場合には、他に未処理のモジュールがないと判定し、処理をステップＳ２１０６に進める。
【０１６０】
ステップＳ２１０６では、情報処理装置１００のＣＰＵ１０１は、フォルダモジュールテーブル１０００の最後のモジュールの出力パラメータ１００５から、モジュールテーブル３００のフォルダモジュールに対応する出力パラメータ３０５に画像をコピーする。
【０１６１】
次に、画像バッファ検索処理について図２２及び図２３を用いて説明する。
【０１６２】
まず、ステップＳ２２０１では、情報処理装置１００のＣＰＵ１０１は、処理フロー描画領域１３０１で構築された処理フローのうち、先頭に配置されたモジュール（処理順が最も早いモジュール）を参照する。処理フローテーブル４００のＩＮＤＥＸ４０１が最も小さいレコードを参照すればよい。
【０１６３】
ステップＳ２２０２では、情報処理装置１００のＣＰＵ１０１は、参照中のモジュールが分岐モジュールであるか否かを判定する。参照中のモジュールのモジュール名に応じて判定すればよい。参照中のモジュールが分岐モジュールであると判定した場合には、ステップＳ２２０３に処理を進める。参照中のモジュールが分岐モジュールでないと判定した場合には、ステップＳ２２０７に処理を進める。
【０１６４】
ステップＳ２２０３では、情報処理装置１００のＣＰＵ１０１は、参照中のモジュールが分岐モジュールであったので、分岐先のモジュールを検索するべく、分岐ＴＨＥＮテーブル６１０を参照する。そして、ステップＳ２２０４では、情報処理装置１００のＣＰＵ１０１は、参照している分岐ＴＨＥＮテーブル６１０に含まれる各モジュールに対して、対象の画像バッファと同じ画像バッファを入力画像バッファまたは出力画像バッファに設定しているモジュールを検索する（画像バッファ検索処理を実行する）。すなわち、再帰呼び出しを実行する。
【０１６５】
ステップＳ２２０５では、情報処理装置１００のＣＰＵ１０１は、他の分岐先のモジュールを検索するべく、分岐ＥＬＳＥテーブル６２０を参照する。そして、ステップＳ２２０６では、情報処理装置１００のＣＰＵ１０１は、参照している分岐ＥＬＳＥテーブル６２０に含まれる各モジュールに対して、対象の画像バッファと同じ画像バッファを入力画像バッファまたは出力画像バッファに設定しているモジュールを検索する（画像バッファ検索処理を実行する）。すなわち、再帰呼び出しを実行する。
【０１６６】
ステップＳ２２０７では、情報処理装置１００のＣＰＵ１０１は、参照中のモジュールがループモジュールであるか否かを判定する。参照中のモジュールのモジュール名に応じて判定すればよい。参照中のモジュールがループモジュールであると判定した場合には、ステップＳ２２０８に処理を進める。参照中のモジュールがループモジュールでないと判定した場合には、ステップＳ２２１０に処理を進める。
【０１６７】
ステップＳ２２０８では、情報処理装置１００のＣＰＵ１０１は、参照中のモジュールがループモジュールであったので、ループするモジュールを検索するべく、ループテーブル５００を参照する。そして、ステップＳ２２０９では、情報処理装置１００のＣＰＵ１０１は、参照しているループテーブル５００に含まれる各モジュールに対して、対象の画像バッファと同じ画像バッファを入力画像バッファまたは出力画像バッファに設定しているモジュールを検索する（画像バッファ検索処理を実行する）。すなわち、再帰呼び出しを実行する。
【０１６８】
ステップＳ２２１０では、情報処理装置１００のＣＰＵ１０１は、参照中のモジュールがスイッチモジュールであるか否かを判定する。参照中のモジュールのモジュール名に応じて判定すればよい。参照中のモジュールがスイッチモジュールであると判定した場合には、ステップＳ２２１１に処理を進める。参照中のモジュールがスイッチモジュールでないと判定した場合には、後述する図２３のステップＳ２３０１に処理を進める。
【０１６９】
ステップＳ２２１１では、情報処理装置１００のＣＰＵ１０１は、参照中のモジュールがスイッチモジュールであったので、分岐先のモジュールを検索するべく、スイッチＥＬＳＥテーブル７２０を参照する。そして、ステップＳ２２０９では、情報処理装置１００のＣＰＵ１０１は、参照しているスイッチＥＬＳＥテーブル７２０に含まれる各モジュールに対して、対象の画像バッファと同じ画像バッファを入力画像バッファまたは出力画像バッファに設定しているモジュールを検索する（画像バッファ検索処理を実行する）。すなわち、再帰呼び出しを実行する。
【０１７０】
ステップＳ２２１３では、情報処理装置１００のＣＰＵ１０１は、他の分岐先のモジュールを検索するべく、スイッチＣＡＳＥテーブル７３０を参照する。そして、ステップＳ２２１４では、情報処理装置１００のＣＰＵ１０１は、参照しているスイッチＣＡＳＥテーブル７３０に含まれる各モジュールに対して、対象の画像バッファと同じ画像バッファを入力画像バッファまたは出力画像バッファに設定しているモジュールを検索する（画像バッファ検索処理を実行する）。すなわち、再帰呼び出しを実行する。
【０１７１】
ステップＳ２２１５では、情報処理装置１００のＣＰＵ１０１は、ステップＳ２２１４を未処理のスイッチＣＡＳＥテーブルが存在するか否かを判定する。未処理のスイッチＣＡＳＥテーブルが存在すると判定した場合には、ステップＳ２２１６に処理を進める。未処理のスイッチＣＡＳＥテーブルが存在しないと判定した場合には、後述する図２３のステップＳ２３０１に処理を進める。
【０１７２】
ステップＳ２２１６では、情報処理装置１００のＣＰＵ１０１は、未処理のスイッチＣＡＳＥテーブルを参照する。例えば、図７に示すスイッチテーブル７００には、スイッチＣＡＳＥテーブル７３０とスイッチＣＡＳＥテーブル７４０の２つのスイッチＣＡＳＥテーブルがある。ステップＳ２２１３でスイッチＣＡＳＥテーブル７３０を参照し、ステップＳ２２１４を実行した場合には、残りのスイッチＣＡＳＥテーブル７４０を処理しなければならないので、ステップＳ２２１６では、このスイッチＣＡＳＥテーブル７４０を参照する。
【０１７３】
説明を図２３に移す。ステップＳ２３０１では、情報処理装置１００のＣＰＵ１０１は、参照中のモジュールに入力画像バッファが設定可能であるか否かを判定する。参照中のモジュールの入力パラメータを参照して判定する。参照中のモジュールに入力画像バッファが設定可能であると判定した場合には、ステップＳ２３０２に処理を進める。参照中のモジュールに入力画像バッファが設定可能でないと判定した場合には、ステップＳ２３０６に処理を進める。
【０１７４】
ステップＳ２３０２では、情報処理装置１００のＣＰＵ１０１は、対象の画像バッファと同じ画像バッファが参照中のモジュールの入力画像バッファに設定されているか否かを判定する。より具体的には、参照中のモジュールの入力パラメータのうち、入力画像バッファに設定されている画像バッファの名称が、対象の画像バッファの名称と同じであるか否かを判定する。対象の画像バッファと同じ画像バッファが参照中のモジュールの入力画像バッファに設定されていると判定した場合には、ステップＳ２３０３に処理を進める。対象の画像バッファと同じ画像バッファが参照中のモジュールの入力画像バッファに設定されていないと判定した場合には、ステップＳ２３０６に処理を進める。
【０１７５】
ステップＳ２３０３では、情報処理装置１００のＣＰＵ１０１は、ステップＳ２３０２で選択中のモジュールと同じ画像バッファが入力画像バッファに設定されていると判定されたモジュールが、当該選択中のモジュールよりも上流にあるか（処理順が早いか）否かを判定する。選択中のモジュールよりも上流にあると判定した場合には、ステップＳ２３０４に処理を進める。選択中のモジュールより上流にないと判定した場合には、ステップＳ２３０５に処理を進める。
【０１７６】
ステップＳ２３０４では、情報処理装置１００のＣＰＵ１０１は、検索結果テーブル８００に新しくレコードを追加し、参照中のモジュールのモジュールＩＤをモジュールＩＤ８０２に格納し、参照中のモジュールのモジュール名をモジュール名８０３に格納する。そして、一致画像バッファ８０４に「入力画像バッファ」と格納し、上流フラグ８０５に「１」を格納する。
【０１７７】
一方、ステップＳ２３０５では、情報処理装置１００のＣＰＵ１０１は、検索結果テーブル８００に新しくレコードを追加し、ステップＳ２３０４と同様に情報を格納する。ただし、上流フラグ８０５には「０」を格納する。
【０１７８】
ステップＳ２３０６では、情報処理装置１００のＣＰＵ１０１は、参照中のモジュールに出力画像バッファが設定可能であるか否かを判定する。参照中のモジュールの出力パラメータを参照して判定する。参照中のモジュールに出力画像バッファが設定可能であると判定した場合には、ステップＳ２３０７に処理を進める。参照中のモジュールに出力画像バッファが設定可能でないと判定した場合には、ステップＳ２３１１に処理を進める。
【０１７９】
ステップＳ２３０７では、情報処理装置１００のＣＰＵ１０１は、対象の画像バッファと同じ画像バッファが参照中のモジュールの出力画像バッファに設定されているか否かを判定する。より具体的には、参照中のモジュールの出力パラメータのうち、出力画像バッファに設定されている画像バッファの名称が、対象の画像バッファの名称と同じであるか否かを判定する。対象の画像バッファと同じ画像バッファが参照中のモジュールの出力画像バッファに設定されていると判定した場合には、ステップＳ２３０８に処理を進める。対象の画像バッファと同じ画像バッファが参照中のモジュールの出力画像バッファに設定されていないと判定した場合には、ステップＳ２３１１に処理を進める。
【０１８０】
ステップＳ２３０８では、情報処理装置１００のＣＰＵ１０１は、ステップＳ２３０７で選択中のモジュールと同じ画像バッファが出力画像バッファに設定されていると判定されたモジュールが、当該選択中のモジュールよりも上流にあるか（処理順が早いか）否かを判定する。選択中のモジュールよりも上流にあると判定した場合には、ステップＳ２３０９に処理を進める。選択中のモジュールより上流にないと判定した場合には、ステップＳ２３１０に処理を進める。
【０１８１】
ステップＳ２３０９では、情報処理装置１００のＣＰＵ１０１は、検索結果テーブル８００に新しくレコードを追加し、参照中のモジュールのモジュールＩＤをモジュールＩＤ８０２に格納し、参照中のモジュールのモジュール名をモジュール名８０３に格納する。そして、一致画像バッファ８０４に「出力画像バッファ」と格納し、上流フラグ８０５に「１」を格納する。
【０１８２】
一方、ステップＳ２３１０では、情報処理装置１００のＣＰＵ１０１は、検索結果テーブル８００に新しくレコードを追加し、ステップＳ２３０９と同様に情報を格納する。ただし、上流フラグ８０５には「０」を格納する。
【０１８３】
ステップＳ２３１１では、情報処理装置１００のＣＰＵ１０１は、参照中のモジュールの処理順が参照中のテーブル（処理フローテーブル４００、ループテーブル５００、分岐ＴＨＥＮテーブル６１０、分岐ＥＬＳＥテーブル６２０、スイッチＥＬＳＥテーブル７２０、スイッチＣＡＳＥテーブル７３０、スイッチＣＡＳＥテーブル７４０のいずれかのテーブル）において最後であるか否かを判定する。すなわち、参照中のテーブルに格納されているすべてのモジュールに対して、ステップＳ２２０２乃至ステップＳ２３１０の処理を実行したか否かを判定する。処理順が最後であると判定した場合には、ステップＳ２３１２に処理を進める。処理順が最後でないと判定した場合には、画像バッファ検索処理を終了する。
【０１８４】
ステップＳ２３１２では、情報処理装置１００のＣＰＵ１０１は、参照中のモジュールの次のモジュールを参照し、ステップＳ２２０２に処理を戻す。尚、ユーザから選択されているモジュールは参照しないので、当該モジュールの次のモジュールを参照するようにする。
【０１８５】
以上のようにして、処理フローを構成するモジュールをユーザから指示された処理順に参照していき、ユーザから選択されているモジュールに設定された画像バッファと同じ画像バッファが入力画像バッファまたは出力画像バッファに設定されているモジュールを検索していく。該当するモジュールがあれば、その結果を検索結果テーブル８００に記録しておくので、前述したモジュール選択処理やパラメータ変更処理において、同じ画像バッファが設定されているモジュールの画像バッファに関する情報を識別表示することができる。
【０１８６】
以上説明したように、本実施形態によれば、処理フローにモジュールを追加する際に適切に画像バッファを確保することの可能な効果を奏する。
【０１８７】
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、１つの機器からなる装置に適用してもよい。
【０１８８】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
【０１８９】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１９０】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【０１９１】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷなどがある。また、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などもある。
【０１９２】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【０１９３】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０１９４】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１９５】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１９６】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【０１９７】
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【０１９８】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  システムバス
１０５  入力コントローラ
１０６  ビデオコントローラ
１０７  メモリコントローラ
１０８  通信Ｉ／Ｆ（インターフェース）コントローラ
１０９  入力デバイス
１１０  ディスプレイ
１１１  外部メモリ
【図１】
0006531374.tif 000002
【図２】
0006531374.tif 000003
【図３】
0006531374.tif 000004
【図４】
0006531374.tif 000005
【図５】
0006531374.tif 000006
【図６】
0006531374.tif 000007
【図７】
0006531374.tif 000008
【図８】
0006531374.tif 000009
【図９】
0006531374.tif 000010
【図１０】
0006531374.tif 000011
【図１１】
0006531374.tif 000012
【図１２】
0006531374.tif 000013
【図１３】
0006531374.tif 000014
【図１４】
0006531374.tif 000015
【図１５】
0006531374.tif 000016
【図１６】
0006531374.tif 000017
【図１７】
0006531374.tif 000018
【図１８】
0006531374.tif 000019
【図１９】
0006531374.tif 000020
【図２０】
0006531374.tif 000021
【図２１】
0006531374.tif 000022
【図２２】
0006531374.tif 000023
【図２３】
0006531374.tif 000024