以下、図面を参照して、本発明の実施形態を詳細に説明する。
図1は、情報処理装置100のハードウェア構成の一例を示す図である。本発明の情報処理装置100は、画像処理を実行可能なプログラム(以下、画像処理プログラム)を生成可能な装置である。情報処理装置100には画像処理プログラムを構築するためのアプリケーション(以下、画像処理プログラム構築アプリケーション)がインストールされており、当該アプリケーションを用いて画像処理プログラムを生成する。
画像処理プログラム構築アプリケーションでは、あらかじめ用意されたモジュールをフローチャート形式で組み合わせることにより、画像処理プログラムを構築する。各モジュールには、画像処理を実行可能なモジュールや、ループや分岐を行うモジュール等が存在する。これらがソースコード形式で用意されているため、ユーザは所望の画像処理プログラムとなるよう、これらのモジュールを組み合わせてフローチャート(以下、処理フロー)にし、当該フローチャートの処理順でモジュールのソースコードを組み合わせることで、画像処理プログラムが生成できる。
CPU101は、システムバス104に接続される各デバイスやコントローラを統括的に制御する。
また、ROM102あるいは外部メモリ111(記憶手段)には、CPU101の制御プログラムであるBIOS(Basic Input / OutputSystem)やオペレーティングシステムプログラム(以下、OS)や、情報処理装置100の実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。RAM103は、CPU101の主メモリ、ワークエリア等として機能する。
CPU101は、処理の実行に際して必要なプログラム等をRAM103にロードして、プログラムを実行することで各種動作を実現するものである。
また、入力コントローラ(入力C)105は、キーボードや不図示のマウス等のポインティングデバイス等の入力デバイス109からの入力を制御する。
ビデオコントローラ(VC)106は、ディスプレイ110等の表示器への表示を制御する。表示器の種類はCRTや、液晶ディスプレイを想定するが、これに限らない。
メモリコントローラ(MC)107は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフレキシブルディスク(FD)或いはPCMCIAカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ111へのアクセスを制御する。
通信I/Fコントローラ(通信I/FC)108は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。
尚、CPU101は、例えばRAM103内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ110上での表示を可能としている。また、CPU101は、ディスプレイ110上の不図示のマウスカーソル等でのユーザ指示を可能とする。
本発明の情報処理装置100が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ111に記録されており、必要に応じてRAM103にロードされることによりCPU101によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ111に格納されている。
次に、情報処理装置100の機能構成を示す機能構成図について、図3を用いて説明する。尚、図3の機能構成は一例であり、用途や目的に応じて様々な構成例がある。
情報処理装置100は、テーブル記憶部200、処理フロー作成部210、ソースコード変換部220、コンパイル部230、処理フロー実行部240、処理フロー保存部250、画像バッファ管理部260を備える。
テーブル記憶部200は、本実施形態で用いる各種テーブルを記憶する機能部である。テーブル記憶部200には、モジュールテーブル300、処理フローテーブル400、ループテーブル500、分岐テーブル600、スイッチテーブル700、検索結果テーブル800、画像バッファテーブル900が記憶されている。
ここで、本実施形態においては、図3のテーブル記憶部200が、例えば図1に示す外部メモリ111に構成される(一旦、RAM103に構成された後に外部メモリ111に構成される場合も含む)。また、図3の処理フロー作成部210、ソースコード変換部220、コンパイル部230、処理フロー実行部240、処理フロー保存部250、画像バッファ管理部260が、例えば図1に示すCPU101と、ROM102或いは外部メモリ111に記憶されているプログラムと、から構成される。
モジュールテーブル300は、画像処理ロジック構築プログラムで用いるモジュールに関する情報を格納するテーブルである。モジュールテーブル300のテーブル構成の一例を図3に示す。
モジュールテーブル300は、情報処理装置100の外部メモリ111等に記憶されており、INDEX301、モジュール名302、ソースコード303、入力パラメータ304、出力パラメータ305から構成される。
INDEX301は、モジュールテーブル300のレコードごとに割り振られる識別情報である。モジュール名302は、モジュールの名称を示す。ソースコード303は、当該モジュールのソースコードが格納されている。ソースコードの保存先を格納しておいてもよい。入力パラメータ304と出力パラメータ305とは、当該モジュールが当該モジュールの処理を実行する際に設定可能な入力パラメータと出力パラメータを示す。例えば、INDEX301が「7」の二値化モジュールは、入力パラメータとして「入力画像バッファ」と「閾値」とが設定可能であり、出力パラメータとして「出力画像バッファ」が設定可能であることがわかる。入力画像バッファとは、モジュールが処理を実行する際に用いる画像データの入力元である画像バッファを示す。出力画像バッファとは、モジュールが処理を実行した結果の画像データの出力先である画像バッファを示す。
また、処理フローテーブル400は、処理フローを構成しているモジュールに関する情報を格納するテーブルである。処理フローテーブル400のテーブル構成の一例を図4に示す。
処理フローテーブル400は、情報処理装置100の外部メモリ111等に記憶されており、INDEX401、モジュールID402、モジュール名403、入力パラメータ404、出力パラメータ405、参照先テーブル406から構成される。
INDEX401は、処理フローの上流から下流に向けて昇順となるよう割り振られた識別情報である。すなわち、処理フローの最も上流に配置されたモジュールのINDEX401が「1」となる。その次の位置に配置されたモジュールのINDEX401が「2」となる。モジュールID402は、処理フローに配置されたモジュールに一意に割り振られる識別情報である。モジュール名403は、当該モジュールのモジュール名302に対応するモジュールの名称が格納される。入力パラメータ404と出力パラメータ405とは、当該モジュールに設定された入力パラメータと出力パラメータとが格納される。例えば、図4の処理フローテーブル400のINDEX401が「1」であるカメラモジュールは、出力パラメータのうち、出力画像バッファとして「画像バッファ1」が設定されている。参照先テーブル406は、ループや分岐などのモジュールである場合に参照すべき他のテーブルを示す。例えば、図4の処理フローテーブル400のINDEX401が「3」である分岐モジュールの参照先テーブル406には、分岐先として「TD003−1」と「TD003−2」とが設定されている。つまり、分岐モジュールの判定結果に応じて、この2つのテーブルのいずれかを参照することを示している。参照先テーブル406が示す各種テーブルにも、処理フローテーブル400と同様に処理フローに配置されたモジュールに関する情報が格納されている。
参照先テーブル406が示すテーブルとして、ループテーブル500、分岐テーブル600、スイッチテーブル700がある。
ループテーブル500(図5参照)は、ループモジュールの参照先として用いられるテーブルである。ループテーブル500は、情報処理装置100の外部メモリ111等に記憶され、INDEX501、モジュールID502、モジュール名503、入力パラメータ504、出力パラメータ505、参照先テーブル506から構成される。ループテーブル500を構成する各項目は、前述した処理フローテーブル400を構成する各項目と同様である。
また、分岐テーブル600(図6参照)は、分岐モジュールの参照先として用いられるテーブルであり、分岐THENテーブル610及び分岐ELSEテーブル620から構成される。分岐THENテーブル610は、分岐モジュールの判定結果が真(TRUE)である場合に参照され、分岐ELSEテーブル620は、分岐モジュールの判定結果が偽(FALSE)に参照される。
分岐THENテーブル610は、情報処理装置の外部メモリ111等に記憶され、INDEX611、モジュールID612、モジュール名613、入力パラメータ614、出力パラメータ615、参照先テーブル616から構成される。また、分岐ELSEテーブル620は、情報処理装置の外部メモリ111に記憶され、INDEX621、モジュールID622、モジュール名623、入力パラメータ624、出力パラメータ625、参照先テーブル626から構成される。
分岐THENテーブル610を構成する各項目と、分岐ELSEテーブル620を構成する各項目とを、前述した処理フローテーブル400を構成する各項目と同様である。
更にスイッチテーブル700(図7参照)は、スイッチモジュールの参照先として用いられるテーブルであり、スイッチ条件テーブル710、スイッチELSEテーブル720、スイッチCASEテーブル730、スイッチCASEテーブル740から構成される。スイッチ条件テーブル710は、多方向に分岐するための条件が格納されており、スイッチELSEテーブル720は、どの条件にも当てはまらなかった場合に参照され、スイッチCASEテーブル730、スイッチCASEテーブル740はスイッチ条件テーブル710に格納された条件に応じて参照する。
スイッチ条件テーブル710は、情報処理装置100の外部メモリ111等に記憶され、INDEX711、CASE条件712、参照先テーブル713から構成される。INDEX711は、条件ごとに割り振られる識別情報である。CASE条件712は、分岐のための条件を示す。参照先テーブル713は、当該条件の判定結果が真(TRUE)であった場合に参照するスイッチCASEテーブルを示す。図7に示すスイッチ条件テーブル710の例では、分岐条件が2つあり、その2つの条件のいずれかで真と判定されると、真と判定された条件に設定されたスイッチCASEテーブル730またはスイッチCASEテーブル740を参照することになる。一方、いずれの条件が一致しない場合には、スイッチELSEテーブル720を参照することになる。
スイッチELSEテーブル720は、情報処理装置100の外部メモリ111等に記憶され、INDEX721、モジュールID722、モジュール名723、入力パラメータ724、出力パラメータ725、参照先テーブル726から構成される。また、スイッチCASEテーブル730は、情報処理装置100の外部メモリ111に記憶され、INDEX731、モジュールID732、モジュール名733、入力パラメータ734、出力パラメータ735、参照先テーブル736から構成される。また、スイッチCASEテーブル740は、情報処理装置100の外部メモリ111に記憶され、INDEX741、モジュールID742、モジュール名743、入力パラメータ744、出力パラメータ745、参照先テーブル746から構成される。スイッチELSEテーブル720を構成する各項目と、スイッチCASEテーブル730を構成する各項目と、スイッチCASEテーブル740を構成する各項目とは、前述した処理フローテーブル400を構成する各項目と同様である。
検索結果テーブル800(図8参照)は、後述する画像バッファ検索処理で用いられるテーブルである。処理フローに配置されたモジュールのうち、ユーザから指定されたモジュールが持つ画像バッファを同じ画像バッファを持つ他のモジュールを検索する。その検索した結果、特定したモジュールを格納するテーブルが、検索結果テーブル800である。
検索結果テーブル800は、情報処理装置100の外部メモリ111等に記憶され、INDEX801、モジュールID802、モジュール名803、一致画像バッファ804、上流フラグ805から構成される。INDEX801は、検索結果ごとに割り振られる識別情報である。モジュールID802、モジュール名803は、検索した結果特定されたモジュールのモジュールID802、モジュール名302に対応する情報が格納される。一致画像バッファ804は、同じ画像バッファであると判定された画像バッファが、入力画像バッファと出力画像バッファのいずれに設定されているのかを示す情報である。上流フラグ805は、検索した結果特定されたモジュールが、検索元となるモジュールよりも上流に配置されたもの(検索元となるモジュールよりも前に処理が実行されるもの)であるか否か、つまり検索した結果特定されたモジュールが、検索元となるモジュールよりも処理順が早いか否かを示すフラグである。上流フラグ805に「1」が格納されていれば、検索した結果特定されたモジュールが、検索元となるモジュールよりも上流に配置されたものである。上流フラグ805に「0」が格納されていれば、検索した結果特定されたモジュールが、検索元となるモジュールよりも下流に配置されたものである。
画像バッファテーブル900(図9参照)は、処理フローを構成する各モジュールが使用する画像バッファに関する情報を示す。画像バッファテーブル900は、情報処理装置100の外部メモリ111等に記憶され、INDEX901、画像バッファ名902から構成される。INDEX901は、作成された画像バッファごとに割り振られる識別情報である。また画像バッファ名902は、作成された画像バッファの名称を示す。画像バッファの名称は自由に付与することが可能である。
テーブル記憶部200は、以上のような各種テーブルを記憶している。
図2に説明を戻す。処理フロー作成部210は、ユーザからの指示に応じて、モジュールテーブル300に格納された各モジュールをフローチャート形式に構築する機能部である。モジュールを処理フローに追加、処理フローに配置されたモジュールを処理フローから削除、処理フローに配置されたモジュールの位置を移動、処理フローに配置されたモジュールのパラメータ変更等を行うことができる。
ソースコード変換部220は、処理フロー作成部210で作成された処理フローが示す画像処理ロジックを、ソースコードに変換する機能部である。処理フローを構成する各モジュールのソースコード303を取得し、処理フローが示す処理順となるよう取得したソースコードを組み合わせる。
コンパイル部230は、ソースコード変換部220で変換されたソースコードをコンパイルし、オブジェクトコードを生成する機能部である。
処理フロー実行部240は、コンパイル部230でコンパイルされたオブジェクトコードを実行する機能部である。
処理フロー保存部250は、処理フロー作成部210で作成された処理フローを保存する機能部である。
画像バッファ管理部260は、処理フロー作成部210で作成された処理フローを構成するモジュールが使用する画像バッファを管理する機能部である。画像バッファは、あらかじめユーザによって作成される。
次に、本発明の実施形態における一連の処理の流れについて、図10を用いて説明する。
まず、ステップS1001では、情報処理装置100のCPU101は、ユーザからの指示に応じて画像処理ロジック構築アプリケーションを起動し、処理フロー構築画面1100をディスプレイ110に表示する。
処理フロー構築画面1100の画面構成の一例を図11に示す。処理フロー構築画面1100は、処理フロー描画領域1101、モジュール一覧領域1102、パラメータ一覧領域1103、通知領域1104を備える。ユーザは、モジュール一覧領域1102に表示された、モジュールテーブル300が示すモジュールの一覧から、所望の画像処理ロジックを構築するために必要なモジュールを選択し、ドラッグアンドドロップで処理フロー描画領域1101処理フローに追加していく。処理フロー描画領域1101に表示された処理フローを構成するモジュールのうち、パラメータを閲覧・設定したいモジュールを選択することで、選択されたモジュールのパラメータをパラメータ一覧領域1103に表示される。また、何かユーザに対して通知すべきことがあれば、通知領域1104で通知がなされる。
ステップS1002では、情報処理装置100のCPU101は、ユーザから入力デバイス109を通じて入力を受け付けたか否かを判定する(操作受付手段)。入力を受け付けたと判定した場合には、ステップS1003に処理を進める。入力を受け付けたと判定できなかった、すなわち入力を受け付けていない場合には、ユーザからの入力があるまで待機する。
ステップS1103では、情報処理装置100のCPU101は、ユーザからの入力が画像バッファの設定を行う指示であるか否かを判定する。より具体的には、処理フロー構築画面1100のプロジェクトメニューに備える画像バッファの設定項目(不図示)が選択されたか否かで判定する。ユーザからの入力が画像バッファの設定を行う指示であると判定した場合には、ステップS1004に処理を進める。ユーザからの入力が画像バッファの設定を行う指示でないと判定した場合には、ステップS1005に処理を進める。
ステップS1104では、情報処理装置100のCPU101は、画像バッファ設定画面1200を表示し、ユーザからの指示に応じて画像バッファの設定を行う。図12に画像バッファ設定画面1200の画面構成の一例を示す。画像バッファ設定画面1200では、処理フロー描画領域1101に描画された処理フローで利用する画像バッファの追加や削除を行うことが可能である。追加ボタン1201の押下を受け付けると、新しく画像バッファの記憶領域が確保される。また、削除する画像バッファに対応するチェックボックス1202においてチェックを受け付けて、削除ボタン1203が押下されると、指示された画像バッファが記憶領域から削除される。画像バッファの追加や削除を行うことで、前述した画像バッファテーブル900が更新される。画像バッファが追加されれば、新しくレコードが作成される。画像バッファが削除されれば、対象の画像バッファのレコードが削除される。画像バッファ名902は画像バッファごとに一意な名称が割り振られる。このような画面を通じて、あらかじめ必要な数の画像バッファを生成しておく。処理が終わったら(閉じるボタン等が押下されたら)、ステップS1002に処理を戻す。
ステップS1005では、情報処理装置100のCPU101は、ユーザからの入力が処理フローにモジュールの追加を行う指示であるか否かを判定する。より具体的には、モジュール一覧領域1102からいずれかのモジュールが処理フローにドラッグアンドドロップされたか否かに応じて判定する。ユーザからの入力が処理フローにモジュールの追加を行う指示であったと判定した場合には、ステップS1106に処理を進める。ユーザからの入力が処理フローにモジュールの追加を行う指示でないと判定した場合には、ステップS1007に処理を進める。
ステップS1006では、情報処理装置100のCPU101は、処理フローにモジュールを追加する処理を行う。モジュール追加処理の詳細は、後述する図13に示す。モジュール追加処理が終了したら、ステップS1002に処理を戻す。
ステップS1007では、情報処理装置100のCPU101は、ユーザからの入力が処理フローに配置されたモジュールの選択を行う指示(選択操作)であるか否かを判定する。すなわち、処理フローに配置されたモジュールのいずれかがユーザから選択されたか否かを判定する。ユーザからの入力が処理フローに配置されたモジュールの選択を行う指示であると判定した場合には、ステップS1008に処理を進める。ユーザからの入力が処理フローに配置されたモジュールの選択を行う指示でないと判定した場合には、ステップS1009に処理を進める。
ステップS1008では、情報処理装置100のCPU101は、処理フローに配置されたモジュールを選択する処理を行う。モジュール選択処理の詳細は、後述する図17に示す。モジュール選択処理が終了したら、ステップS1002に処理を戻す。
ステップS1009では、情報処理装置100のCPU101は、ユーザからの入力が処理フローに配置されたモジュールのパラメータを変更する指示であるか否かを判定する。すなわち、ユーザからモジュールが選択されると当該モジュールのパラメータがパラメータ一覧領域1103に表示されるので、このパラメータ一覧領域1103においてパラメータの設定変更を受け付けたか否かを判定する。ユーザからの入力が処理フローに配置されたモジュールのパラメータを変更する指示であると判定した場合には、ステップS1010に処理を進める。ユーザからの入力が処理フローに配置されたモジュールのパラメータを変更する指示でないと判定した場合には、ステップS1011に処理を進める。
ステップS1010では、情報処理装置100のCPU101は、ユーザから選択されたモジュールのパラメータを変更する処理を行う。パラメータ変更処理の詳細は、後述する図20に示す。パラメータ変更処理が終了したら、ステップS1002に処理を戻す。
ステップS1011では、情報処理装置100のCPU101は、ユーザからの入力が処理フローに配置されたモジュールの配置位置を変更する指示であるか否かを判定する。すなわち、処理フローに配置されたモジュールをドラッグアンドドロップにより処理フローのいずれかの位置に移動されたかを判定する。ユーザからの入力が処理フローに配置されたモジュールの配置位置を変更する指示であると判定した場合には、ステップS1012に処理を進める。ユーザからの入力が処理フローに配置されたモジュールの配置位置を変更する指示でないと判定した場合には、ステップS1013に処理を進める。
ステップS1012では、情報処理装置100のCPU101は、ユーザから選択された処理フロー上のモジュールをユーザから指示された処理フロー上の位置に移動する。この移動に伴い処理フローの処理順が変更となるので、処理フローテーブル400、ループテーブル500、分岐テーブル600、スイッチテーブル700のいずれかから移動したモジュールのレコードを取得し、これらのテーブルの適切な位置に取得したレコードを挿入する。そして、処理順となるよう、これらのテーブルごとにINDEXを更新する。また、モジュールをユーザから指定された処理フロー上の位置に移動すると、後述するモジュール追加処理で処理フロー描画領域1101の処理フロー上に表示される入力画像バッファ表示領域及び出力画像バッファ表示領域も当該モジュールの移動に併せて移動する。すなわち、移動先のモジュールの近傍に入力画像バッファ表示領域及び出力画像バッファ表示領域を表示する。処理が終了したら、ステップS1002に処理を戻す。
ステップS1013では、情報処理装置100のCPU101は、ユーザからの入力が処理フローに配置されたモジュールを削除する指示であるか否かを判定する。すなわち、処理フローに配置されたモジュールから、削除したいモジュールが選択され、不図示の削除ボタンが選択されたか否かを判定する。ユーザからの入力が処理フローに配置されたモジュールを削除する指示であると判定した場合には、ステップS1014に処理を進める。ユーザからの入力が処理フローに配置されたモジュールを削除する指示でないと判定した場合には、ステップS1015に処理を進める。
ステップS1014では、情報処理装置100のCPU101は、ユーザから選択された処理フロー上のモジュールを処理フロー上から削除する。この削除に伴い、処理フローの処理順が変更となるので、処理フローテーブル400、ループテーブル500、分岐テーブル600、スイッチテーブル700のいずれかから対象のモジュールを削除し、INDEXを処理順となるように更新する。また、モジュールを処理フロー上から削除されると、後述するモジュール追加処理で処理フロー描画領域1101の処理フロー上に表示される入力画像バッファ表示領域及び出力画像バッファ表示領域も削除する(または非表示にする)。処理が終了したら、ステップS1002に処理を戻す。
ステップS1015では、情報処理装置100のCPU101は、ユーザからの入力が処理フローで構築した画像処理ロジックを実行する指示であるか否かを判定する。より具体的には、不図示の実行ボタンが押下されたか否かを判定する。ユーザからの入力が処理フローで構築した画像処理ロジックを実行する指示であると判定した場合には、ステップS1016に処理を進める。ユーザからの入力が処理フローで構築した画像処理ロジックを実行する指示でないと判定した場合には、ステップS1017に処理を進める。
ステップS1016では、情報処理装置100のCPU101は、処理フローに配置された各モジュールを、処理フローが示す処理順に実行する。より具体的には、処理フローに配置された各モジュールのソースコードをモジュールテーブル300のソースコード303から取得し、取得したソースコードを処理順に組み合わせて、コンパイルする。そしてコンパイルした結果得られるオブジェクトコードを実行することで、これを実現する。処理が終わったら、ステップS1002に処理を戻す。
ステップS1017では、情報処理装置100のCPU101は、ユーザからの入力が処理フローを保存する指示であるか否かを判定する。より具体的には、不図示の保存ボタンが押下されたか否かを判定する。ユーザからの入力が処理フローを保存する指示であると判定した場合には、ステップS1018に処理を進める。ユーザからの入力が処理フローを保存する指示でないと判定した場合には、ステップS1019に処理を進める。
ステップS1018では、情報処理装置100のCPU101は、処理フロー描画領域1101で構築された処理フローを保存する。より具体的には、処理フローテーブル400、ループテーブル500、分岐テーブル600、スイッチテーブル700を外部メモリ111等に保存する。こうしておくことで、あとで作業を再開することができる。
ステップS1019では、情報処理装置100のCPU101は、ユーザからの入力が画像処理ロジック構築アプリケーションの終了指示であるか否かを判定する。より具体的には、不図示の終了ボタンが押下されたか否かを判定する。ユーザからの入力が画像処理ロジック構築アプリケーションの終了指示であると判定した場合には、ステップS1020に処理を進める。ユーザからの入力が画像処理ロジック構築アプリケーションの終了指示でないと判定した場合、すなわち前述した処理以外の処理を実行する、または入力内容が特定できないのでエラーを通知し、ステップS1002に処理を戻す。
ステップS1020では、情報処理装置100のCPU101は、ステップS1001で表示した処理フロー構築画面1100を閉じて、画像処理ロジック構築アプリケーションを終了する。
次に、モジュール追加処理について図13を用いて説明する。
まずステップS1301では、情報処理装置100のCPU101は、処理フローに追加するモジュールを特定する。より具体的には、モジュール一覧領域1102からドラッグされたモジュールを特定する。
ステップS1302では、情報処理装置100のCPU101は、処理フローに追加する位置を特定する。より具体的には、モジュール一覧領域1102からドラッグされたモジュールがドロップされた処理フロー上の位置を特定する。
ステップS1303では、情報処理装置100のCPU101は、ステップS1301で特定したモジュールをステップS1302で特定した位置に追加する(モジュール追加手段)。より具体的には、ステップS1302で特定した位置に対応する、処理フローテーブル400、ループテーブル500、分岐テーブル600、スイッチテーブル700のいずれかを特定する。そして、ステップS1302で特定した位置に対応するレコードを特定したテーブルに生成する。例えば、図11の処理フロー描画領域1101のうち、追加位置1105に示すところにメディアンモジュールを追加する場合を想定する。この場合、追加する位置は、分岐モジュールの内部であって、分岐の条件が偽(FALSE)の時に実行される位置なので、分岐ELSEテーブル620が特定される。そして、分岐ELSEテーブル620に新しくレコードを生成し、メディアンモジュールに関する情報をモジュールテーブル300から取得して、当該レコードに格納する。このとき、INDEX621は分岐ELSEテーブル620の中で処理順となるように振り直す。また、モジュールID622には、処理フロー全体で一意となる識別情報を割り振って格納し、入力パラメータ624、出力パラメータ625には、空の値を入力する。
ステップS1304では、情報処理装置100のCPU101は、追加したモジュールが画像バッファを設定可能なモジュールであるか否かを判定する。より具体的には、追加したモジュールの入力パラメータ304と出力パラメータ305とを参照し、入力画像バッファまたは出力画像バッファが設定可能か否かを判定する。追加したモジュールが画像バッファを設定可能なモジュールであると判定した場合には、ステップS1305に処理を進める。追加したモジュールが画像バッファを設定可能なモジュールでない、すなわち入力画像バッファと出力画像バッファのいずれも設定できないモジュールであると判定した場合には、モジュール追加処理を終了する。
ステップS1305では、情報処理装置100のCPU101は、追加したモジュールに入力画像バッファが設定可能であるか否かを判定する。より具体的には、追加したモジュールの入力パラメータ304を参照し、入力画像バッファが設定可能か否かを判定する。追加したモジュールに入力画像バッファが設定可能であると判定した場合には、ステップS1306に処理を進める。追加したモジュールに入力画像バッファが設定可能でない、すなわち出力画像バッファだけが設定可能であると判定した場合には、ステップS1307に処理を進める。
ステップS1306では、情報処理装置100のCPU101は、ステップS1303で追加されたモジュールの入力画像バッファに設定される画像バッファを示す情報を表示可能な領域(以下、入力画像バッファ表示領域)を、前記処理フローにおいて表示する。図14に入力画像バッファ表示領域の一例を示す。図14は、図11の処理フローの追加位置1105にメディアンモジュールを追加した場合を示す。このメディアンモジュールには、入力画像バッファが設定可能であるので、当該メディアンモジュールの近傍に入力画像バッファ表示領域1401が表示される。また、入力画像バッファ表示領域を表示する際には、追加されたモジュールの入力パラメータ304に入力画像バッファが設定されていれば、設定されている画像バッファを示す情報を入力画像バッファ表示領域に表示する。そうでなければ、入力画像バッファ表示領域を表示して、画像バッファを示す情報は表示しない。
従来は、画像バッファのようなパラメータはパラメータ一覧領域1103に示す箇所でしか確認することができなかった。しかしながら、このように処理フロー上の各モジュールの近傍に画像バッファに関する情報を表示することで、どのモジュールでどの画像バッファを使用しているかが把握しやすくなる。
ステップS1307では、情報処理装置100のCPU101は、追加したモジュールに出力画像バッファが設定可能であるか否かを判定する。より具体的には、追加したモジュールの出力パラメータ305を参照し、出力画像バッファが設定可能か否かを判定する。追加したモジュールに出力画像バッファが設定可能であると判定した場合には、ステップS1308に処理を進める。追加したモジュールに出力画像バッファが設定可能でない、すなわち入力画像バッファだけが設定可能であると判定した場合には、モジュール追加処理を終了する。
ステップS1308では、情報処理装置100のCPU101は、ステップS1303で追加されたモジュールの出力画像バッファに設定される画像バッファを示す情報を表示可能な領域(以下、出力画像バッファ表示領域)を、前記処理フローにおいて表示する。図14に出力画像バッファ表示領域の一例を示す。図14は、図11の処理フローの追加位置1105にメディアンモジュールを追加した場合を示す。このメディアンモジュールには、出力画像バッファが設定可能であるので、当該メディアンモジュールの近傍に出力画像バッファ表示領域1402が表示される。また、出力画像バッファ表示領域を表示する際には、追加されたモジュールの出力パラメータ305に出力画像バッファが設定されていれば、設定されている画像バッファを示す情報を出力画像バッファ表示領域に表示する。そうでなければ、出力画像バッファ表示領域を表示して、画像バッファを示す情報は表示しない。
このようにして、入力画像バッファや出力画像バッファが設定可能なモジュールが処理フローに追加された場合には、入力画像バッファ表示領域や出力画像バッファ表示領域を表示する。
ここで、モジュールによっては、入力画像バッファと出力画像バッファのいずれかだけが設定可能なモジュールもある。すなわち、ステップS1306またはステップS1308のいずれか一方だけが実行される場合である。この場合には、入力画像バッファ表示領域と出力画像バッファ表示領域のいずれか一方のみが表示されることになる。図15は、図11の処理フローの追加位置1105に画像表示モジュールを追加した場合を示す。モジュールテーブル300を参照すると、画像表示モジュールは入力画像バッファのみが設定可能なことがわかる。よって、ステップS1306が実行されて、ステップS1308が実行されない。よって、入力画像バッファ表示領域1401が表示され、出力画像バッファ表示領域1402が非表示となる。
更には、モジュールによっては、画像バッファを使用しないモジュールが存在する。すなわち、ステップS1304で画像バッファが設定可能でないと判定されたモジュールである。この場合には、入力画像バッファ表示領域及び出力画像バッファ表示領域のいずれも表示されない。図16は、図11の処理フローの追加位置1105に分岐モジュールを追加した場合を示す。モジュールテーブル300を参照すると、分岐モジュールは入力画像バッファ及び出力画像バッファのいずれも設定できないことがわかる。よって、入力画像バッファ表示領域1401及び出力画像バッファ表示領域1402のいずれも表示されない。
このように、処理フローに追加されるモジュールが、画像バッファを設定可能なモジュールであるか否かに応じて、入力画像バッファ表示領域または出力画像バッファ表示領域の表示制御を行うことができるので、不要な情報を表示せずに済む効果がある。特に、入力画像バッファ表示領域と出力画像バッファ表示領域とをすべてのモジュールに表示してしまうと、処理フローが閲覧しにくくなってしまう。そこで、前述したような仕組みによってこれを解決している。
次に、モジュール選択処理について図17を用いて説明する。
まずステップS1701では、情報処理装置100のCPU101は、処理フローを構築するモジュールのうち、ユーザから選択されたモジュールを特定する。
ステップS1702では、情報処理装置100のCPU101は、ステップS1701で特定されたモジュールの入力パラメータと出力パラメータとを取得する。より具体的には、特定されたモジュールに設定されている入力パラメータと出力パラメータとを、処理フローテーブル400、ループテーブル500、分岐テーブル600、スイッチテーブル700のいずれかから取得する。どのテーブルから取得するのかは、特定されたモジュールが配置されている位置に応じる。図18に示す処理フローのうち、モジュールIDが「U00031」のメディアンモジュールが選択された場合には、分岐テーブル600から当該メディアンモジュールの入力パラメータと出力パラメータとを取得する。
ステップS1703では、情報処理装置100のCPU101は、ステップS1702で取得した入力パラメータと出力パラメータとを処理フロー構築画面1100のパラメータ一覧領域1103に表示する。こうして表示した各パラメータは、ユーザからの入力によって自由に変更できる。
ステップS1704では、情報処理装置100のCPU101は、ステップS1701で特定したモジュールに入力画像バッファが設定済みであるか否かを判定する。より具体的には、ステップS1702で取得した入力パラメータの入力画像バッファに、あらかじめ作成した画像バッファの画像バッファ名が含まれているか否かを判定する。入力画像バッファが設定済みであると判定した場合には、ステップS1705に処理を進める。入力画像バッファが設定済みでないと判定した場合には、ステップS1710に処理を進める。
ステップS1705では、情報処理装置100のCPU101は、ステップS1701で特定したモジュールの入力画像バッファに設定されている画像バッファを特定する(画像バッファ特定手段)。より具体的には、当該画像バッファの画像バッファ名902を特定する。
ステップS1706では、情報処理装置100のCPU101は、ステップS1701で特定したモジュールとは異なるモジュールのうち、ステップS1705で特定した画像バッファを用いて画像処理を行うモジュール(当該画像バッファが入力画像バッファまたは出力画像バッファに設定されているモジュール)を、処理フローに配置されたモジュールから検索する処理を実行する(モジュール特定手段)。画像バッファ検索処理の詳細は、後述する図24に示す。
ステップS1707では、情報処理装置100のCPU101は、ステップS1706で検索した結果、ステップS1705で特定した画像バッファを用いて処理を実行するモジュールが特定できたか否かを判定する。より具体的には、ステップS1706で出力される検索結果テーブル800に検索結果が格納されていれば、特定できたと判定する。特定できたと判定した場合には、ステップS1708に処理を進める。特定できなかったと判定した場合には、ステップS1709に処理を進める。
ステップS1708では、情報処理装置100のCPU101は、ステップS1706で検索し特定したモジュールの画像バッファであって、ステップS1705で特定した画像バッファと同じ画像バッファを識別表示する(表示制御手段)。
図18の例でいえば、モジュールIDが「U00031」のメディアンモジュールが選択された場合、当該メディアンモジュールの入力画像バッファに「画像バッファ1」が設定されているので、「画像バッファ1」を用いているモジュールをステップS1706で検索する。すると、図8に示すような検索結果テーブル800が生成される。
次に、ステップS1708では、この検索結果テーブル800を参照して、処理フロー上のモジュール(モジュールID「U00001」のカメラモジュール、モジュールID「00022」のメディアンモジュール、モジュールID「00041」の画像表示モジュール)を特定する。そして、当該特定したモジュールの一致画像バッファ804が示す入力画像バッファまたは出力画像バッファ、もしくは両方に設定された画像バッファに関する情報を識別表示する。
例えば、検索結果テーブル800のINDEX801が「1」のレコードには、モジュールIDが「U00001」であるカメラモジュールを示す情報が格納されている。ステップS1706では、このカメラモジュールの出力画像バッファに設定されている画像バッファが、ステップS1705で特定した画像バッファと同じであると特定されたので、当該レコードの一致画像バッファ804に「出力画像バッファ」と格納されている。つまり、このレコードの情報に基づいて、処理フロー上のカメラモジュールの出力画像バッファ表示領域に表示されている「画像バッファ1」という文字列を識別表示する。こうすることで、ユーザから選択されたモジュールに設定されている画像バッファと同じ画像バッファを使用しているモジュールで、当該画像バッファに関する情報を識別表示することができる。
尚、本実施形態では、入力画像バッファ表示領域に表示された画像バッファに関する情報を識別表示しているが、同じ画像バッファが使われていることをユーザに認識させることができればよい。つまり、ユーザから選択されたモジュールと同じ画像バッファを用いるモジュール自体を処理フロー上で識別表示する形態でもよい。
一方ステップS1709では、情報処理装置100のCPU101は、ステップS1706で検索した結果、ステップS1705で特定した画像バッファを用いて処理を行うモジュールが存在しないので、その旨を通知するために、ユーザから選択されたモジュールの入力画像バッファに設定されている画像バッファを識別表示する(表示制御手段)。より具体的には、ユーザから選択されたモジュールの入力画像バッファ表示領域に表示されている画像バッファに関する情報を識別表示する。図19に示す例では、モジュールID「U00031」のメディアンモジュールが選択されている。しかし、このメディアンモジュールの入力画像バッファに設定されている「画像バッファ3」は、処理フロー上のどのモジュールでも使用されていない。そのため、この「画像バッファ3」自体を識別表示することで、「画像バッファ3」が処理フロー上のどのモジュールにおいても設定されていない旨を通知する。
ステップS1710では、情報処理装置100のCPU101は、ステップS1701で特定したモジュールに出力画像バッファが設定済みであるか否かを判定する。より具体的には、ステップS1702で取得した出力パラメータの出力画像バッファに、あらかじめ作成した画像バッファの画像バッファ名が含まれているか否かを判定する。出力画像バッファが設定済みであると判定した場合には、ステップS1711に処理を進める。出力画像バッファが設定済みでないと判定した場合には、モジュール選択処理を終了する。
ステップS1711では、情報処理装置100のCPU101は、ステップS1701で特定したモジュールの出力画像バッファに設定されている画像バッファを特定する。より具体的には、当該画像バッファの画像バッファ名902を特定する。
ステップS1712では、情報処理装置100のCPU101は、ステップS1701で特定したモジュールとは異なるモジュールのうち、ステップS1711で特定した画像バッファを用いて画像処理を行うモジュール(当該画像バッファが入力画像バッファまたは出力画像バッファに設定されているモジュール)を、処理フローに配置されたモジュールから検索する処理を実行する。画像バッファ検索処理の詳細は、後述する図24に示す。
ステップS1713では、情報処理装置100のCPU101は、ステップS1712で検索した結果、ステップS1711で特定した画像バッファを用いて処理を実行するモジュールが特定できたか否かを判定する。より具体的には、ステップS1712で出力される検索結果テーブル800に検索結果が格納されていれば、特定できたと判定する。特定できたと判定した場合には、ステップS1714に処理を進める。特定できなかったと判定した場合には、ステップS1715に処理を進める。
ステップS1714では、情報処理装置100のCPU101は、ステップS1706で検索し特定したモジュールの画像バッファであって、ステップS1705で特定した画像バッファと同じ画像バッファを識別表示する(表示制御手段)。ステップS1714においても、前述したステップS1708と同様の処理を実行する。ここで、ステップS1708またはステップS1709で識別表示がなされているのであれば、ステップS1714または後述するステップS1715では、ステップS1708またはステップS1709とは異なる識別表示を行う。つまり、ユーザから選択されたモジュールの入力画像バッファに設定されている画像バッファと同一の画像バッファに関する情報の識別表示と、ユーザから選択されたモジュールの出力画像バッファに設定されている画像バッファと同一の画像バッファに関する情報の識別表示とを異なる色や形等で表現する。図18では、モジュールID「U00031」のメディアンモジュールには、入力画像バッファとして「画像バッファ1」が設定されており、出力画像バッファとして「画像バッファ2」が設定されている。つまり、ステップS1708とステップS1714の両方が実行されるため、どちらの実行結果が表示されているのかをユーザに識別させなければならない。そのため、図18ではそれぞれを異なる色で識別させている。
ステップS1715では、情報処理装置100のCPU101は、ステップS1712で検索した結果、ステップS1711で特定した画像バッファを用いて処理を行うモジュールが存在しないので、その旨を通知するために、ユーザから選択されたモジュールの出力画像バッファに設定されている画像バッファを識別表示する(表示制御手段)。
次に、パラメータ変更処理について図20、及び図21を用いて説明を行う。
まず、ステップS2001では、情報処理装置100のCPU101は、現在選択されている処理フロー上のモジュール(例えば、前述したモジュール選択処理で選択されたモジュール)の入力画像バッファの設定がなされたか否かを判定する。より具体的には、選択されたモジュールのパラメータ一覧領域1103において、入力画像バッファとしてあらかじめ作成された画像バッファが選択されたか否かを判定する。入力画像バッファの設定がなされたと判定した場合には、ステップS2002に処理を進める。入力画像バッファの設定がなされていないと判定した場合には、後述する図21のステップS2101に処理を進める。
ステップS2002では、情報処理装置100のCPU101は、パラメータ一覧領域1103で選択された画像バッファを特定する(画像バッファ特定手段)。そして、ステップS2003では、情報処理装置100のCPU101は、ステップS2002で特定した画像バッファを選択されているモジュールの入力画像バッファとして設定する。より具体的には、処理フローテーブル400、ループテーブル500、分岐テーブル600、スイッチテーブル700のいずれかに格納されている、選択中のモジュールのレコードの入力パラメータに、選択された画像バッファを設定する。
ステップS2004では、情報処理装置100のCPU101は、ステップS2003で設定した画像バッファの画像バッファ名902をパラメータ一覧領域1103に表示する。
ステップS2005では、情報処理装置100のCPU101は、処理フロー上で選択されているモジュールとは異なるモジュールのうち、ステップS2002で特定した画像バッファを用いて画像処理を行うモジュール(当該画像バッファが入力画像バッファまたは出力画像バッファに設定されているモジュール)を、処理フローに配置されたモジュールから検索する処理を実行する(モジュール特定手段)。画像バッファ検索処理の詳細は、後述する図24に示す。
ステップS2006では、情報処理装置100のCPU101は、選択中のモジュールが配置された位置よりも上流に配置されている(選択中のモジュールよりも前に処理が実行される)モジュールのうち、ステップS2002で特定した画像バッファと同じ画像バッファが出力画像バッファに設定されているモジュールが存在するか否かを判定する。例えば、図22のモジュールIDが「U00031」であるメディアンモジュールよりも上流のモジュールは、そのメディアンモジュールよりも前に処理が実行されるものであるから、モジュールIDが「U00001」のカメラモジュールから、モジュールIDが「U00003」の分岐モジュールまでに配置されているモジュールがこれに該当する。そして、これらのうち、ステップS2002で特定した画像バッファと同じ画像バッファが出力画像バッファに設定されているモジュールが存在するか否かを判定する。より具体的には、ステップS2005で出力された検索結果テーブル800の上流フラグ805に「1」が格納されているモジュールのうち、一致画像バッファ804が「出力画像バッファ」となっているモジュールがあるか否かを判定する。選択中のモジュールよりも上流のモジュールの出力画像バッファにステップS2002で特定した画像バッファが設定されていないと判定した場合には、ステップS2007に処理を進める。選択中のモジュールよりも上流のモジュールの出力画像バッファにステップS2002で特定した画像バッファが設定されていると判定した場合には、ステップS2008に処理を進める。
ステップS2007では、情報処理装置100のCPU101は、選択中のモジュールよりも上流のモジュールの出力画像バッファにステップS2002で特定した画像バッファが設定されていない旨を通知する。通知の方法は特に問わないが、例えば図22に示すように通知領域1104で通知してもよい。選択中のモジュールよりも上流のモジュールの出力画像バッファにステップS2002で特定した画像バッファが設定されていない旨をユーザに通知することで、設定の誤りをユーザに認識させる効果がある。入力画像バッファに設定する画像バッファには、画像データが出力されていなければならない。すなわち、入力画像バッファが設定可能なモジュールは、当該入力画像バッファに設定された画像バッファから画像データを取得して所定の処理を実行するのだが、そもそも当該画像バッファに何も画像データが格納されていない状態では、当該所定の処理を実行できない。当該所定の処理を実行するためには、入力画像バッファの設定を行うモジュールよりも処理順が前のモジュール(上流のモジュール)で、前記画像バッファが出力画像バッファとして設定されていなければならない。そこで、ステップS2006において、選択中のモジュールよりも上流のモジュールの出力画像バッファにステップS2002で特定した画像バッファが設定されているか否かを判定し、設定されていなければユーザに通知するようにしている。図22の例では、モジュールIDが「U00031」のメディアンモジュールよりも上流に配置されたモジュールの出力画像バッファには、メディアンモジュールの入力画像バッファである「画像バッファ2」が設定されていないことがわかる。そのため、通知領域1104でユーザにこの旨を通知している。
ステップS2008では、情報処理装置100のCPU101は、ステップS2005で検索した結果、ステップS2002で特定した画像バッファを用いて処理を実行するモジュールが特定できたか否かを判定する。詳細な処理はステップS1707と同様である。
ステップS2009では、情報処理装置100のCPU101は、ステップS2005で検索し特定したモジュールの画像バッファであって、ステップS2002で特定した画像バッファと同じ画像バッファを識別表示する(表示制御手段)。詳細な処理はステップS1708と同様である。
ステップS2010では、情報処理装置100のCPU101は、ステップS2005で検索した結果、ステップS2002で特定した画像バッファを用いて処理を行うモジュールが存在しないので、その旨を通知するために、ユーザから選択されたモジュールの入力画像バッファに設定されている画像バッファを識別表示する(表示制御手段)。詳細な処理はステップS1709と同様である。
ステップS2009、またはステップS2010の処理が終了したら、図21のステップS2101に処理を進める。
続いて図21の説明に移る。ステップS2101では、情報処理装置100のCPU101は、現在選択されている処理フロー上のモジュール(例えば、前述したモジュール選択処理で選択されたモジュール)の出力画像バッファの設定がなされたか否かを判定する。より具体的には、選択されたモジュールのパラメータ一覧領域1103において、出力画像バッファとしてあらかじめ作成された画像バッファが選択されたか否かを判定する。出力画像バッファの設定がなされたと判定した場合には、ステップS2102に処理を進める。出力画像バッファの設定がなされていないと判定した場合には、パラメータ変更処理を終了する。
ステップS2102では、情報処理装置100のCPU101は、パラメータ一覧領域1103で選択された画像バッファを特定する(画像バッファ特定手段)。そして、ステップS2103では、情報処理装置100のCPU101は、ステップS2102で特定した画像バッファを選択されているモジュールの出力画像バッファとして設定する。詳細な処理はステップS2003と同様である。
ステップS2104では、情報処理装置100のCPU101は、ステップS2103で設定した画像バッファの画像バッファ名902をパラメータ一覧領域1103に表示する。
ステップS2105では、情報処理装置100のCPU101は、処理フロー上で選択されているモジュールとは異なるモジュールのうち、ステップS2102で特定した画像バッファを用いて画像処理を行うモジュール(当該画像バッファが入力画像バッファまたは出力画像バッファに設定されているモジュール)を、処理フローに配置されたモジュールから検索する処理を実行する(モジュール特定手段)。画像バッファ検索処理の詳細は、後述する図24に示す。
ステップS2106では、情報処理装置100のCPU101は、選択中のモジュールが配置された位置よりも上流に配置されている(選択中のモジュールよりも前に処理が実行される)モジュールのうち、ステップS2102で特定した画像バッファと同じ画像バッファが出力画像バッファに設定されているモジュールが存在するか否かを判定する。詳細な処理はステップS2006と同様である。選択中のモジュールよりも上流のモジュールの出力画像バッファにステップS2102で特定した画像バッファが設定されていると判定した場合には、ステップS2107に処理を進める。選択中のモジュールよりも上流のモジュールの出力画像バッファにステップS2102で特定した画像バッファが設定されていないと判定した場合には、ステップS2108に処理を進める。
ステップS2107では、情報処理装置100のCPU101は、選択中のモジュールよりも上流のモジュールの出力画像バッファにステップS2102で特定した画像バッファが設定されている旨を通知する。通知の方法は特に問わないが、例えば図23に示すように通知領域1104で通知してもよい。選択中のモジュールよりも上流のモジュールの出力画像バッファにステップS2002で特定した画像バッファが設定されている旨をユーザに通知することで、設定の誤りをユーザに認識させる効果がある。ユーザによっては、あるモジュールで出力された処理結果の画像データを画像バッファに残しておきたい場合がある。しかしながら、当該画像バッファに他のモジュールが処理結果の画像データを出力してしまうと、当該画像バッファに一時記憶されている画像データが上書きされてしまう。これを防止するために、ステップS2106において、選択中のモジュールよりも上流のモジュールの出力画像バッファにステップS2102で特定した画像バッファが設定されているか否かを判定し、設定されていればユーザに通知するようにしている。図23の例では、モジュールIDが「U00031」のメディアンモジュールよりも上流に配置されたモジュールの出力画像バッファに、メディアンモジュールの出力画像バッファである「画像バッファ1」が設定されていることがわかる。そのため、通知領域1104でユーザにこの旨を通知している。
ステップS2108では、情報処理装置100のCPU101は、ステップS2105で検索した結果、ステップS2102で特定した画像バッファを用いて処理を実行するモジュールが特定できたか否かを判定する。詳細な処理はステップS1713と同様である。
ステップS2109では、情報処理装置100のCPU101は、ステップS2105で検索し特定したモジュールの画像バッファであって、ステップS2102で特定した画像バッファと同じ画像バッファを識別表示する(表示制御手段)。詳細な処理はステップS1714と同様である。
ステップS2110では、情報処理装置100のCPU101は、ステップS2105で検索した結果、ステップS2102で特定した画像バッファを用いて処理を行うモジュールが存在しないので、その旨を通知するために、ユーザから選択されたモジュールの出力画像バッファに設定されている画像バッファを識別表示する(表示制御手段)。詳細な処理はステップS1715と同様である。
次に、画像バッファ検索処理について図24及び図25を用いて説明する。
まず、ステップS2401では、情報処理装置100のCPU101は、処理フロー描画領域1101で構築された処理フローのうち、先頭に配置されたモジュール(処理順が最も早いモジュール)を参照する。処理フローテーブル400のINDEX401が最も小さいレコードを参照すればよい。
ステップS2402では、情報処理装置100のCPU101は、参照中のモジュールが分岐モジュールであるか否かを判定する。参照中のモジュールのモジュール名に応じて判定すればよい。参照中のモジュールが分岐モジュールであると判定した場合には、ステップS2403に処理を進める。参照中のモジュールが分岐モジュールでないと判定した場合には、ステップS2407に処理を進める。
ステップS2403では、情報処理装置100のCPU101は、参照中のモジュールが分岐モジュールであったので、分岐先のモジュールを検索するべく、分岐THENテーブル610を参照する。そして、ステップS2404では、情報処理装置100のCPU101は、参照している分岐THENテーブル610に含まれる各モジュールに対して、対象の画像バッファと同じ画像バッファを入力画像バッファまたは出力画像バッファに設定しているモジュールを検索する(画像バッファ検索処理を実行する)。すなわち、再帰呼び出しを実行する。
ステップS2405では、情報処理装置100のCPU101は、他の分岐先のモジュールを検索するべく、分岐ELSEテーブル620を参照する。そして、ステップS2406では、情報処理装置100のCPU101は、参照している分岐ELSEテーブル620に含まれる各モジュールに対して、対象の画像バッファと同じ画像バッファを入力画像バッファまたは出力画像バッファに設定しているモジュールを検索する(画像バッファ検索処理を実行する)。すなわち、再帰呼び出しを実行する。
ステップS2407では、情報処理装置100のCPU101は、参照中のモジュールがループモジュールであるか否かを判定する。参照中のモジュールのモジュール名に応じて判定すればよい。参照中のモジュールがループモジュールであると判定した場合には、ステップS2408に処理を進める。参照中のモジュールがループモジュールでないと判定した場合には、ステップS2410に処理を進める。
ステップS2408では、情報処理装置100のCPU101は、参照中のモジュールがループモジュールであったので、ループするモジュールを検索するべく、ループテーブル500を参照する。そして、ステップS2409では、情報処理装置100のCPU101は、参照しているループテーブル500に含まれる各モジュールに対して、対象の画像バッファと同じ画像バッファを入力画像バッファまたは出力画像バッファに設定しているモジュールを検索する(画像バッファ検索処理を実行する)。すなわち、再帰呼び出しを実行する。
ステップS2410では、情報処理装置100のCPU101は、参照中のモジュールがスイッチモジュールであるか否かを判定する。参照中のモジュールのモジュール名に応じて判定すればよい。参照中のモジュールがスイッチモジュールであると判定した場合には、ステップS2411に処理を進める。参照中のモジュールがスイッチモジュールでないと判定した場合には、後述する図25のステップS2501に処理を進める。
ステップS2411では、情報処理装置100のCPU101は、参照中のモジュールがスイッチモジュールであったので、分岐先のモジュールを検索するべく、スイッチELSEテーブル720を参照する。そして、ステップS2409では、情報処理装置100のCPU101は、参照しているスイッチELSEテーブル720に含まれる各モジュールに対して、対象の画像バッファと同じ画像バッファを入力画像バッファまたは出力画像バッファに設定しているモジュールを検索する(画像バッファ検索処理を実行する)。すなわち、再帰呼び出しを実行する。
ステップS2413では、情報処理装置100のCPU101は、他の分岐先のモジュールを検索するべく、スイッチCASEテーブル730を参照する。そして、ステップS2414では、情報処理装置100のCPU101は、参照しているスイッチCASEテーブル730に含まれる各モジュールに対して、対象の画像バッファと同じ画像バッファを入力画像バッファまたは出力画像バッファに設定しているモジュールを検索する(画像バッファ検索処理を実行する)。すなわち、再帰呼び出しを実行する。
ステップS2415では、情報処理装置100のCPU101は、ステップS2414を未処理のスイッチCASEテーブルが存在するか否かを判定する。未処理のスイッチCASEテーブルが存在すると判定した場合には、ステップS2416に処理を進める。未処理のスイッチCASEテーブルが存在しないと判定した場合には、後述する図25のステップS2501に処理を進める。
ステップS2416では、情報処理装置100のCPU101は、未処理のスイッチCASEテーブルを参照する。例えば、図7に示すスイッチテーブル700には、スイッチCASEテーブル730とスイッチCASEテーブル740の2つのスイッチCASEテーブルがある。ステップS2413でスイッチCASEテーブル730を参照し、ステップS2414を実行した場合には、残りのスイッチCASEテーブル740を処理しなければならないので、ステップS2416では、このスイッチCASEテーブル740を参照する。
説明を図25に移す。ステップS2501では、情報処理装置100のCPU101は、参照中のモジュールに入力画像バッファが設定可能であるか否かを判定する。参照中のモジュールの入力パラメータを参照して判定する。参照中のモジュールに入力画像バッファが設定可能であると判定した場合には、ステップS2502に処理を進める。参照中のモジュールに入力画像バッファが設定可能でないと判定した場合には、ステップS2506に処理を進める。
ステップS2502では、情報処理装置100のCPU101は、対象の画像バッファと同じ画像バッファが参照中のモジュールの入力画像バッファに設定されているか否かを判定する。より具体的には、参照中のモジュールの入力パラメータのうち、入力画像バッファに設定されている画像バッファの名称が、対象の画像バッファの名称と同じであるか否かを判定する。対象の画像バッファと同じ画像バッファが参照中のモジュールの入力画像バッファに設定されていると判定した場合には、ステップS2503に処理を進める。対象の画像バッファと同じ画像バッファが参照中のモジュールの入力画像バッファに設定されていないと判定した場合には、ステップS2506に処理を進める。
ステップS2503では、情報処理装置100のCPU101は、ステップS2502で選択中のモジュールと同じ画像バッファが入力画像バッファに設定されていると判定されたモジュールが、当該選択中のモジュールよりも上流にあるか(処理順が早いか)否かを判定する。選択中のモジュールよりも上流にあると判定した場合には、ステップS2504に処理を進める。選択中のモジュールより上流にないと判定した場合には、ステップS2505に処理を進める。
ステップS2504では、情報処理装置100のCPU101は、検索結果テーブル800に新しくレコードを追加し、参照中のモジュールのモジュールIDをモジュールID802に格納し、参照中のモジュールのモジュール名をモジュール名803に格納する。そして、一致画像バッファ804に「入力画像バッファ」と格納し、上流フラグ805に「1」を格納する。
一方、ステップS2505では、情報処理装置100のCPU101は、検索結果テーブル800に新しくレコードを追加し、ステップS2504と同様に情報を格納する。ただし、上流フラグ805には「0」を格納する。
ステップS2506では、情報処理装置100のCPU101は、参照中のモジュールに出力画像バッファが設定可能であるか否かを判定する。参照中のモジュールの出力パラメータを参照して判定する。参照中のモジュールに出力画像バッファが設定可能であると判定した場合には、ステップS2507に処理を進める。参照中のモジュールに出力画像バッファが設定可能でないと判定した場合には、ステップS2511に処理を進める。
ステップS2507では、情報処理装置100のCPU101は、対象の画像バッファと同じ画像バッファが参照中のモジュールの出力画像バッファに設定されているか否かを判定する。より具体的には、参照中のモジュールの出力パラメータのうち、出力画像バッファに設定されている画像バッファの名称が、対象の画像バッファの名称と同じであるか否かを判定する。対象の画像バッファと同じ画像バッファが参照中のモジュールの出力画像バッファに設定されていると判定した場合には、ステップS2508に処理を進める。対象の画像バッファと同じ画像バッファが参照中のモジュールの出力画像バッファに設定されていないと判定した場合には、ステップS2511に処理を進める。
ステップS2508では、情報処理装置100のCPU101は、ステップS2507で選択中のモジュールと同じ画像バッファが出力画像バッファに設定されていると判定されたモジュールが、当該選択中のモジュールよりも上流にあるか(処理順が早いか)否かを判定する。選択中のモジュールよりも上流にあると判定した場合には、ステップS2509に処理を進める。選択中のモジュールより上流にないと判定した場合には、ステップS2510に処理を進める。
ステップS2509では、情報処理装置100のCPU101は、検索結果テーブル800に新しくレコードを追加し、参照中のモジュールのモジュールIDをモジュールID802に格納し、参照中のモジュールのモジュール名をモジュール名803に格納する。そして、一致画像バッファ804に「出力画像バッファ」と格納し、上流フラグ805に「1」を格納する。
一方、ステップS2510では、情報処理装置100のCPU101は、検索結果テーブル800に新しくレコードを追加し、ステップS2509と同様に情報を格納する。ただし、上流フラグ805には「0」を格納する。
ステップS2511では、情報処理装置100のCPU101は、参照中のモジュールの処理順が参照中のテーブル(処理フローテーブル400、ループテーブル500、分岐THENテーブル610、分岐ELSEテーブル620、スイッチELSEテーブル720、スイッチCASEテーブル730、スイッチCASEテーブル740のいずれかのテーブル)において最後であるか否かを判定する。すなわち、参照中のテーブルに格納されているすべてのモジュールに対して、ステップS2402乃至ステップS2510の処理を実行したか否かを判定する。処理順が最後であると判定した場合には、ステップS2512に処理を進める。処理順が最後でないと判定した場合には、画像バッファ検索処理を終了する。
ステップS2512では、情報処理装置100のCPU101は、参照中のモジュールの次のモジュールを参照し、ステップS2402に処理を戻す。尚、ユーザから選択されているモジュールは参照しないので、当該モジュールの次のモジュールを参照するようにする。
以上のようにして、処理フローを構成するモジュールをユーザから指示された処理順に参照していき、ユーザから選択されているモジュールに設定された画像バッファと同じ画像バッファが入力画像バッファまたは出力画像バッファに設定されているモジュールを検索していく。該当するモジュールがあれば、その結果を検索結果テーブル800に記録しておくので、前述したモジュール選択処理やパラメータ変更処理において、同じ画像バッファが設定されているモジュールの画像バッファに関する情報を識別表示することができる。
以上説明したように、本実施形態によれば、画像処理を実行する処理フローを構成するモジュールに設定された画像バッファに関する情報を表示するための領域を処理フローにおいて表示することの可能な効果を奏する。
次に、第2の実施形態について説明を行う。第2の実施形態は、前述した実施形態の図20及び図21に示すパラメータ変更処理の変形例である。
前述した実施形態は、選択中のモジュールの入力画像バッファまたは出力画像バッファの設定がなされると、設定された画像バッファと同じ画像バッファを用いるモジュールはどれなのかを識別表示する仕組みである。第2の実施形態ではこれをより改善する仕組みである。
入力画像バッファの設定を行う際には、設定しようとする画像バッファにどのモジュールの処理結果が出力されるのかがわかりにくい。そのため前述した実施形態では、設定した画像バッファと同じ画像バッファを用いているモジュールがどれなのかを識別表示していた。しかしながら、入力画像バッファの設定を行うモジュールよりも下流のモジュールが識別表示されてもあまり意味がない。
そこで、第2の実施形態では、設定された画像バッファと同じ画像バッファを用いているモジュールのうち、画像バッファの設定を行うモジュールよりも上流のモジュールを特定する。そして特定されたモジュールのうち、最も下流に位置するモジュールを識別表示する。すなわち、設定する画像バッファに対して直前に処理結果を出力するモジュールを特定してこれを識別表示する仕組みである。また、出力画像バッファの設定を行う際にも同様の処理を実行することで、どのモジュールの処理結果を上書きすることになるのかがわかりやすくなる。
以下、このような第2の実施形態について説明を行う。第2の実施形態は前述した通り、前述した実施形態の図20及び図21に示すパラメータ変更処理の変形例である。そのため、ハードウェア構成や機能構成、テーブル構成やフローチャート等は前述した実施形態と同じであるので、説明を省略する。
図26及び図27は、パラメータ変更処理(図20及び図21の変形例)の流れを示すフローチャートである。前述した実施形態におけるパラメータ変更処理と同じ処理については、同じ番号を付してある。第2の実施形態の説明では、前述した実施形態とは処理が異なる部分について説明を行う。
図26のステップS2001乃至ステップS2007は、前述した図20のステップS2001乃至ステップS2007と同様の処理であるので説明を省略する。
ステップS2601では、情報処理装置100のCPU101は、前述した図17のステップS1708等の処理において識別表示された、画像バッファ表示領域の画像バッファに関する情報を元の表示形態に戻す。つまり、識別表示される前の状態に戻す。こうすることで、過去に識別表示したものを一度リセットし、今回の操作に応じて識別表示されるものがどれなのかをユーザに認識させることができる。ステップS2601の処理が完了したら、図26のステップS2008に処理を進める。図26のステップS2008は、前述した図20のステップS2008と同様の処理である。検索した結果特定できたと判定した場合には、ステップS2602に処理を進める。特定できなかったと判定した場合には、図26のステップS2010に処理を進める。
ステップS2602では、情報処理装置100のCPU101は、図26のステップS2005で検索し特定したモジュールの画像バッファのうち、選択中のモジュールよりも上流に配置されているモジュールを特定する。そして、特定したモジュールのうち、最も下流に配置されているモジュールの出力画像バッファを識別表示する。
より具体的に説明する。図26のステップS2005で生成される検索結果テーブル800には、上流フラグ805が存在する。この上流フラグ805が「1」のモジュールを特定し、このモジュールの中で最もINDEX801の示す数が大きく、かつ一致画像バッファ804が「出力画像バッファ」となっているレコードを特定する。そして、このレコードのモジュールID802が示すモジュールの出力画像バッファを処理フロー描画領域1101上で識別表示する。
図28は、処理フロー上で「U00031:メディアン」のアイコンが選択され、パラメータ一覧領域1103で入力画像バッファの設定を受け付けた場合の処理フロー構築画面1100を示す。図28に示すように、「U00031:メディアン」の入力画像バッファが「画像バッファ1」に設定されると、画像バッファ検索処理によって「画像バッファ1」が設定されているモジュールを検索する。その結果、「U00001:カメラ」と「U00022:メディアン」と「U00041:画像表示」が特定される。この3つのうち、「U00031:メディアン」と処理順が近い「U00022:メディアン」が特定され、「U00022:メディアン」の出力画像バッファに関する情報が図28に示すように識別表示される。
図27に説明を移す。図27のステップS2101乃至ステップS2107は、前述した図21のステップS2101乃至ステップS2107と同様の処理であるので説明を省略する。
ステップS2701では、情報処理装置100のCPU101は、前述した図17のステップS1708等の処理において識別表示された、画像バッファ表示領域の画像バッファに関する情報を元の表示形態に戻す。つまり、識別表示される前の状態に戻す。ステップS2701では、図26のステップS2602またはステップS2010の処理により識別表示された画像バッファに関する情報はそのままの表示形態にしておく。
ステップS2701の処理が完了したら、図27のステップS2108に処理を進める。図27のステップS2108は、前述した図21のステップS2108と同様の処理である。検索した結果特定できたと判定した場合には、ステップS2702に処理を進める。特定できなかったと判定した場合には、図27のステップS2010に処理を進める。
ステップS2702では、情報処理装置100のCPU101は、図27のステップS2105で検索し特定したモジュールの画像バッファのうち、選択中のモジュールよりも上流に配置されているモジュールを特定する。そして、特定したモジュールのうち、最も下流に配置されているモジュールの出力画像バッファを識別表示する。処理の詳細は、ステップS2602と同様である。
図29は、処理フロー上で「U00031:メディアン」のアイコンが選択され、パラメータ一覧領域1103で出力画像バッファの設定を受け付けた場合の処理フロー構築画面1100を示す。図29に示すように、「U00031:メディアン」の出力画像バッファが「画像バッファ1」に設定されると、画像バッファ検索処理によって「画像バッファ1」が設定されているモジュールを検索する。その結果、「U00001:カメラ」と「U00022:メディアン」と「U00041:画像表示」が特定される。この3つのうち、「U00031:メディアン」と処理順が近い「U00022:メディアン」が特定され、「U00022:メディアン」の出力画像バッファに関する情報が図29に示すように識別表示される。
以上説明したように、第2の実施形態によれば、画像処理プログラムの作成に際して設定する画像バッファの使用状況をユーザに対して容易に把握させることの可能な効果を奏する。
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。