(57)【要約】【課題】利用者が、画像処理命令に用いられる属性の型を意識せずに、複数の画像処理の実行指示が記述された画像処理指示情報を作成できるようにする。【解決手段】解釈部１４は、条件を満足する場合に実行されることが画像処理指示情報に記述されている識別情報に対応付けられる命令を、実行対象の命令として設定し、当該命令が実行された後に実行される命令として、当該条件を満足する場合に当該命令の実行結果を戻り値として返し、当該条件を満足しない場合に値がないことを示す戻り値を返す命令を設定する。解釈部１４は、条件分岐での条件のすべてについて実行することが設定された命令が実行された後に実行される命令として、値がないことを示す戻り値とは異なる戻り値を画像処理指示情報に応じた命令での最終的な戻り値として返す命令を設定する。【選択図】図１
2014119848.tif 000002
【特許請求の範囲】
【請求項１】
複数の画像処理の識別情報、並びに、条件分岐が記述された画像処理指示情報を取得する取得手段と、
前記条件分岐での条件のそれぞれについて、条件を満足する場合に実行されることが前記画像処理指示情報に記述されている前記識別情報に対応付けられる命令を、実行対象の命令として設定する第１設定手段と、
前記条件分岐での条件のそれぞれについて、前記第１設定手段で設定された命令が実行された後に実行される命令として、当該条件を満足する場合に前記第１設定手段で設定された命令の実行結果を戻り値として返し、当該条件を満足しない場合に値がないことを示す戻り値を返す命令を設定する第２設定手段と、
前記条件分岐での条件のすべてについて前記第１設定手段及び前記第２設定手段で実行することが設定された命令が実行された後に実行される命令として、前記条件分岐での条件のそれぞれについての前記第２設定手段で設定された命令の戻り値のうち、値がないことを示す戻り値とは異なる戻り値を、前記画像処理指示情報に応じた命令での最終的な戻り値として返す命令を設定する第３設定手段と、
前記第１設定手段、前記第２設定手段、及び、前記第３設定手段で設定された命令を実行する実行手段と、
を含むことを特徴とする画像処理装置。
【請求項２】
前記条件分岐での条件のそれぞれについて、前記第１設定手段で設定された命令が実行される前に実行される命令として、当該条件を満足する場合に当該命令の前に実行される命令の実行結果を戻り値として返し、当該条件を満足しない場合に値がないことを示す戻り値を返す命令を設定する第４設定手段、をさらに含み、
前記実行手段は、前記第１設定手段、前記第２設定手段、前記第３設定手段、及び、前記第４設定手段で設定された命令を実行する、
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記画像処理指示情報には、条件分岐前に実行される画像処理の識別情報が記述されており、
前記第１設定手段は、条件分岐前に実行されることが前記画像処理指示情報に記述されている識別情報に対応付けられる命令を、条件を満足する場合に実行されることが前記画像処理指示情報に記述されている前記識別情報に対応付けられる命令よりも前に実行される命令として設定し、
前記第３設定手段は、満足する場合に実行される画像処理が前記画像処理指示情報に記述されていない前記条件分岐での条件が存在する際には、前記条件分岐での条件のすべてについて前記第１設定手段及び前記第２設定手段で実行することが設定された命令が実行された後に実行される命令として、前記条件分岐での条件のそれぞれについての前記第２設定手段で設定された命令の戻り値がすべて、値がないことを示す戻り値である場合は、条件分岐前に実行されることが前記画像処理指示情報に記述されている識別情報に対応付けられる命令の戻り値を、前記画像処理指示情報に応じた命令での最終的な戻り値として返す命令を設定する、
ことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記条件分岐での条件のそれぞれについて、当該条件を満足しない場合に、前記実行手段により命令が実行される際に発生するエラーが出力されることを抑制する抑制手段、をさらに含む、
ことを特徴とする請求項１から３のいずれか一項に記載の画像処理装置。
【請求項５】
複数の画像処理の識別情報、並びに、条件分岐が記述された画像処理指示情報を取得する取得手段、
前記条件分岐での条件のそれぞれについて、条件を満足する場合に実行されることが前記画像処理指示情報に記述されている前記識別情報に対応付けられる命令を、実行対象の命令として設定する第１設定手段、
前記条件分岐での条件のそれぞれについて、前記第１設定手段で設定された命令が実行された後に実行される命令として、当該条件を満足する場合に前記第１設定手段で設定された命令の実行結果を戻り値として返し、当該条件を満足しない場合に値がないことを示す戻り値を返す命令を設定する第２設定手段、
前記条件分岐での条件のすべてについて前記第１設定手段及び前記第２設定手段で実行することが設定された命令が実行された後に実行される命令として、前記条件分岐での条件のそれぞれについての前記第２設定手段で設定された命令の戻り値のうち、値がないことを示す戻り値とは異なる戻り値を、前記画像処理指示情報に応じた命令での最終的な戻り値として返す命令を設定する第３設定手段、
前記第１設定手段、前記第２設定手段、及び、前記第３設定手段で設定された命令を実行する実行手段、
としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及びプログラムに関する。
【背景技術】
【０００２】
画像に対して、例えば、フォーマット変換、色変換、拡大、縮小、などといった画像処理を実行する画像処理装置が存在する。特許文献１には、スクリプトが表す実行順序を解釈して、解釈された実行順序で画像処理を実行する技術が記載されている。特許文献２には、取得した画像を、指示書によって指定された複数種類の画像に変換する技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−２４３４６０号公報
【特許文献２】特開２００４−１１２５１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的の１つは、利用者が、画像処理命令に用いられる属性の型を意識せずに、複数の画像処理の実行指示が記述された画像処理指示情報を作成できるようにすることにある。
【課題を解決するための手段】
【０００５】
請求項１に記載の発明は、画像処理装置であって、複数の画像処理の識別情報、並びに、条件分岐が記述された画像処理指示情報を取得する取得手段と、前記条件分岐での条件のそれぞれについて、条件を満足する場合に実行されることが前記画像処理指示情報に記述されている前記識別情報に対応付けられる命令を、実行対象の命令として設定する第１設定手段と、前記条件分岐での条件のそれぞれについて、前記第１設定手段で設定された命令が実行された後に実行される命令として、当該条件を満足する場合に前記第１設定手段で設定された命令の実行結果を戻り値として返し、当該条件を満足しない場合に値がないことを示す戻り値を返す命令を設定する第２設定手段と、前記条件分岐での条件のすべてについて前記第１設定手段及び前記第２設定手段で実行することが設定された命令が実行された後に実行される命令として、前記条件分岐での条件のそれぞれについての前記第２設定手段で設定された命令の戻り値のうち、値がないことを示す戻り値とは異なる戻り値を、前記画像処理指示情報に応じた命令での最終的な戻り値として返す命令を設定する第３設定手段と、前記第１設定手段、前記第２設定手段、及び、前記第３設定手段で設定された命令を実行する実行手段と、を含むこととしたものである。
【０００６】
請求項２に記載の発明は、請求項１に記載の画像処理装置であって、前記条件分岐での条件のそれぞれについて、前記第１設定手段で設定された命令が実行される前に実行される命令として、当該条件を満足する場合に当該命令の前に実行される命令の実行結果を戻り値として返し、当該条件を満足しない場合に値がないことを示す戻り値を返す命令を設定する第４設定手段、をさらに含み、前記実行手段は、前記第１設定手段、前記第２設定手段、前記第３設定手段、及び、前記第４設定手段で設定された命令を実行することとしたものである。
【０００７】
請求項３に記載の発明は、請求項１又は２に記載の画像処理装置であって、前記画像処理指示情報には、条件分岐前に実行される画像処理の識別情報が記述されており、前記第１設定手段は、条件分岐前に実行されることが前記画像処理指示情報に記述されている識別情報に対応付けられる命令を、条件を満足する場合に実行されることが前記画像処理指示情報に記述されている前記識別情報に対応付けられる命令よりも前に実行される命令として設定し、前記第３設定手段は、満足する場合に実行される画像処理が前記画像処理指示情報に記述されていない前記条件分岐での条件が存在する際には、前記条件分岐での条件のすべてについて前記第１設定手段及び前記第２設定手段で実行することが設定された命令が実行された後に実行される命令として、前記条件分岐での条件のそれぞれについての前記第２設定手段で設定された命令の戻り値がすべて、値がないことを示す戻り値である場合は、条件分岐前に実行されることが前記画像処理指示情報に記述されている識別情報に対応付けられる命令の戻り値を、前記画像処理指示情報に応じた命令での最終的な戻り値として返す命令を設定することとしたものである。
【０００８】
請求項４に記載の発明は、請求項１から３のいずれか一項に記載の画像処理装置であって、前記条件分岐での条件のそれぞれについて、当該条件を満足しない場合に、前記実行手段により命令が実行される際に発生するエラーが出力されることを抑制する抑制手段、をさらに含むこととしたものである。
【０００９】
請求項５に記載の発明は、プログラムであって、複数の画像処理の識別情報、並びに、条件分岐が記述された画像処理指示情報を取得する取得手段、前記条件分岐での条件のそれぞれについて、条件を満足する場合に実行されることが前記画像処理指示情報に記述されている前記識別情報に対応付けられる命令を、実行対象の命令として設定する第１設定手段、前記条件分岐での条件のそれぞれについて、前記第１設定手段で設定された命令が実行された後に実行される命令として、当該条件を満足する場合に前記第１設定手段で設定された命令の実行結果を戻り値として返し、当該条件を満足しない場合に値がないことを示す戻り値を返す命令を設定する第２設定手段、前記条件分岐での条件のすべてについて前記第１設定手段及び前記第２設定手段で実行することが設定された命令が実行された後に実行される命令として、前記条件分岐での条件のそれぞれについての前記第２設定手段で設定された命令の戻り値のうち、値がないことを示す戻り値とは異なる戻り値を、前記画像処理指示情報に応じた命令での最終的な戻り値として返す命令を設定する第３設定手段、前記第１設定手段、前記第２設定手段、及び、前記第３設定手段で設定された命令を実行する実行手段、としてコンピュータを機能させることとしたものである。
【発明の効果】
【００１０】
請求項１，５に記載の発明によれば、利用者が、画像処理命令に用いられる属性の型を意識せずに、複数の画像処理の実行指示が記述された画像処理指示情報を作成できることとなる。
【００１１】
請求項２に記載の発明によれば、本構成を有しない場合と比較して、処理の負荷が低減される。
【００１２】
請求項３に記載の発明によれば、満足する場合に実行される画像処理が画像処理指示情報に記述されていない条件分岐での条件が存在する場合についても、利用者が、画像処理命令に用いられる属性の型を意識せずに、複数の画像処理の実行指示が記述された画像処理指示情報を作成できることとなる。
【００１３】
請求項４に記載の発明によれば、満足しない条件に対応付けて設定された命令について発生するエラーが出力されることが防止できる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態に係る画像処理装置により実現される機能の一例を示す機能ブロック図である。
【図２】画像処理指示書の一例を示す図である。
【図３】画像処理指示書に記述された内容の一例を模式的に示した図である。
【図４】本発明の一実施形態に係る画像処理装置により行われる処理の流れの一例を示すフロー図である。
【図５】サブパイプラインの一例を模式的に示す図である。
【図６】本発明の一実施形態に係る画像処理装置により行われる処理の流れの一例を示すフロー図である。
【図７】画像処理指示書に記述された内容の一例を模式的に示した図である。
【図８】サブパイプラインの一例を模式的に示す図である。
【図９】画像処理指示書に記述された内容の一例を模式的に示した図である。
【図１０】サブパイプラインの一例を模式的に示す図である。
【図１１】サブパイプラインの一例を模式的に示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施形態について図面に基づき詳細に説明する。
【００１６】
図１は、本実施形態における画像処理装置１０により実現される機能の一例を示す機能ブロック図である。図１に示すように、本実施形態における画像処理装置１０は、機能的には、例えば、取得部１２、解釈部１４、実行部１６、を含んでいる。
【００１７】
本実施形態に係る画像処理装置１０は、例えば、パーソナルコンピュータなどであり、画像処理装置１０にインストールされるプログラムに従って動作するＣＰＵ等のプログラム制御デバイスである制御部、ＲＯＭやＲＡＭ等の記憶素子やハードディスクドライブなどである記憶部、ディスプレイ、キーボード、マウス、等を含んでいる。そして、図１に示す各部の機能は、コンピュータである画像処理装置１０にインストールされた、図１に示す各部の機能に対応する命令を含むプログラムを、画像処理装置１０の制御部で実行することにより実現されている。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ可読な情報記憶媒体を介して、あるいは、インターネットなどの通信手段を介して画像処理装置１０に供給される。
【００１８】
取得部１２は、複数の画像処理の実行指示が記述された画像処理指示情報を取得する。本実施形態では、取得部１２は、例えば、画像処理指示情報の一例として、画像処理装置１０の記憶部に予め記憶されている、図２に例示する画像処理指示書２０を取得する。
【００１９】
図２に例示する画像処理指示書２０は、ＸＭＬ形式の文書である。本実施形態に係る画像処理指示書２０には、複数の画像処理の識別情報、並びに、条件分岐が記述されている。図３は、図２に例示する画像処理指示書２０に記述された内容の一例を模式的に示した図である。図２に例示する画像処理指示書２０には、以下の処理が記述されている。なお、図２には、以下に示す処理のそれぞれについて、画像処理指示書２０内における、処理に対応する文字列が記載されている位置に、以下の記載において当該処理に割り振られている番号と同一の番号が配置されている。
（１−１）画像処理装置１０は、ファイルパス“／ｔｍｐ／ｉｎｐｕｔ．ｔｉｆｆ”を、バイトストリームの出力元となるファイル入力ストレージの所在を示す情報として設定する。
（１−２）画像処理装置１０は、（１−１）で設定されたファイル入力ストレージから、バイトストリームをＴＩＦＦフォーマットと解釈して、情報を読み出す。
（１−３）画像処理装置１０は、（１−２）で読み出されたバイトストリームから画像の情報を取得する。
（１−４）画像処理装置１０は、（１−３）で取得された画像の情報のうち、チャンネル当たりのビット数を取得する。
（１−５）画像処理装置１０は、（１−４）で取得したビット数が１である場合は、画像を８ビット化する。
（１−６）画像処理装置１０は、（１−４）で取得したビット数が１でない場合は、画像をグレー化する。
（１−７）画像処理装置１０は、ファイルパス“／ｔｍｐ／ｏｕｔｐｕｔ．ｊｐｇ”を、バイトストリームの出力先となるファイル出力ストレージの所在を示す情報として設定する。
（１−８）画像処理装置１０は、（１−７）で設定されたファイル出力ストレージに、８ビット化又はグレー化された画像のバイトストリームをＪＰＥＧフォーマットで書き出す。
（１−９）画像処理装置１０は、以上のようにして設定された命令を実行する。
【００２０】
本実施形態では、処理の単位となる１又は複数の命令が、画像処理ライブラリ等のモジュールとして管理されている。そして、モジュールに対応するプログラムが、予め、画像処理装置１０の記憶部に記憶されている。そして、解釈部１４は、画像処理指示書２０を解釈して、複数のモジュールから構成されたパイプラインを構築する。また、本実施形態に係るパイプラインが、複数のサブパイプラインから構成されていてもよい。
【００２１】
本実施形態では、解釈部１４は、例えば、条件分岐までの処理である上述の（１−１）〜（１−４）の処理については、上述の（１−１）〜（１−４）の順序が実行順序として定義された、それぞれの処理に対応付けられるモジュールから構成されるサブパイプラインを構築する。そして、解釈部１４は、当該サブパイプラインに後続するサブパイプラインとして、条件分岐での条件のそれぞれについての、条件を満足する場合に実行される処理である上述の（１−５）、（１−６）に対応付けられるサブパイプライン（ここでは、例えば、２つのサブパイプライン）を接続する。上述の（１−５）、（１−６）の処理は、図３では、破線で囲まれた領域内の部分に相当する。そして、解釈部１４は、上述のようにして構成されたサブパイプライン群に後続するサブパイプラインとして、上述の（１−７）、（１−８）の順序が実行順序として定義された、それぞれの処理に対応付けられるモジュールから構成されるサブパイプラインを接続する。このようにして、複数のサブパイプラインから構成されるパイプラインが構築される。
【００２２】
そして、実行部１６は、解釈部１４が構築したパイプラインに相当する命令を実行する。本実施形態では、例えば、パイプラインを構成する最初のモジュールから順に、モジュールの出力が、当該モジュールに後続するモジュールへの入力として用いられることで、パイプラインを構成するモジュール群の全体に相当する命令が実行されることとなる。
【００２３】
ここで、解釈部１４による、条件分岐での条件のそれぞれについての、条件を満足する場合に実行される処理に対応付けられるサブパイプラインの構築処理の流れの一例を、図４に例示するフロー図を参照しながら説明する。
【００２４】
まず、解釈部１４は、条件分岐での条件の数（ここでは、例えば、ｎ）だけ、構築されるサブパイプラインへの入力となる画像を複製分岐させる命令に対応するモジュールを、最初のモジュールとして設定する（Ｓ１０１）。これによって、本実施形態では、例えば、入力画像が、要素の数がｎである配列ａｒｙの各要素から参照可能となる。当該配列ａｒｙの各要素を、ａｒｙ［０］〜ａｒｙ［ｎ−１］と呼ぶこととする。
【００２５】
そして、解釈部１４は、条件数カウンタｉの値に、０を設定する（Ｓ１０２）。そして、解釈部１４は、カウンタｉの値がｎ未満であるか否かを確認する（Ｓ１０３）。そして、カウンタｉの値がｎ未満である場合は（Ｓ１０３：Ｙ）、（ｉ＋１）番目の分岐、すなわち、（ｉ＋１）番目の配列要素であるａｒｙ［ｉ］に後続するモジュールとして、第１条件判定モジュールを接続する（Ｓ１０４）。ここで、第１条件判定モジュールとは、条件分岐における（ｉ＋１）番目の条件を満足する場合は、直前の処理の実行結果を戻り値として返し、条件分岐における（ｉ＋１）番目の条件を満足しない場合は、値がないことを示す戻り値を返す、すなわち、Ｎｕｌｌを戻り値として返す命令に対応するモジュールである。
【００２６】
そして、解釈部１４は、第１条件判定モジュールに後続するモジュールとして、条件分岐における（ｉ＋１）番目の条件を満足する場合に実行されることが記述されている画像処理に相当する１又は複数のモジュール（サブパイプライン）を接続する（Ｓ１０５）。Ｓ１０５に示す処理は、例えば、条件分岐における（ｉ＋１）番目の条件を満足する場合に実行されることが記述されている画像処理に相当する１又は複数のモジュール（サブパイプライン）への入力モジュール名を、第１条件判定モジュールの名称に変更した上で、当該サブパイプラインを構築することによって実装される。
【００２７】
そして、解釈部１４は、Ｓ１０５に示す処理で接続された１又は複数のモジュール（サブパイプライン）に後続するモジュールとして、第２条件判定モジュールを接続する（Ｓ１０６）。ここで、第２条件判定モジュールとは、条件分岐における（ｉ＋１）番目の条件を満足する場合は、直前の処理の実行結果を戻り値として返し、条件分岐における（ｉ＋１）番目の条件を満足しない場合は、値がないことを示す戻り値を返す、すなわち、Ｎｕｌｌを戻り値として返す命令に対応するモジュールである。
【００２８】
そして、解釈部１４は、（ｉ＋１）番目の配列要素であるａｒｙ［ｉ］を、第２条件判定モジュールの出力に置換する（Ｓ１０７）。
【００２９】
そして、解釈部１４は、カウンタｉの値を１増加させて（Ｓ１０８）、Ｓ１０３に示す処理に戻る。
【００３０】
Ｓ１０３に示す処理で、カウンタｉの値がｎ未満ではないことが確認された場合は（Ｓ１０３：Ｎ）、解釈部１４は、（ｉ＋１）番目の配列要素であるａｒｙ［ｉ］（ここでは、第２条件判定モジュールの出力（戻り値）である。）のうち、Ｎｕｌｌではないものの中で値ｉが最小であるものを出力するモジュールを、上述のＳ１０１〜Ｓ１０８に示す処理で構築されたパイプラインを構成するモジュールの実行後に実行されるモジュールとして設定して（Ｓ１０９）、本処理例に示す処理を終了する。このようにして構築されるサブパイプラインでは、（ｉ＋１）番目の配列要素であるａｒｙ［ｉ］のうち、Ｎｕｌｌではないものの中で値ｉが最小であるものが出力され、当該要素が、上述のようにして構築されたサブパイプラインに後続するサブパイプラインへの入力となる。
【００３１】
このように、本実施形態では、解釈部１４は、Ｓ１０５に示す処理で、条件分岐での条件のそれぞれについて、条件を満足する場合に実行されることが画像処理指示書２０に記述されている識別情報に対応付けられる命令を、実行対象の命令として設定する。
【００３２】
また、本実施形態では、Ｓ１０４に示す処理で、解釈部１４は、条件分岐での条件のそれぞれについて、Ｓ１０５に示す処理で接続されるサブパイプラインに相当する命令として設定された命令が実行される前に実行される命令として、当該条件を満足する場合に当該命令の前に実行される命令の実行結果を戻り値として返し、当該条件を満足しない場合に値がないことを示す戻り値（ここでは、Ｎｕｌｌ）を返す命令を設定する。
【００３３】
また、本実施形態では、Ｓ１０６に示す処理で、解釈部１４は、条件分岐での条件のそれぞれについて、Ｓ１０５に示す処理で接続されるサブパイプラインに相当する命令が実行された後に実行される命令として、当該条件を満足する場合に実行対象の命令として設定された命令の実行結果を戻り値として返し、当該条件を満足しない場合に値がないことを示す戻り値（ここでは、Ｎｕｌｌ）を返す命令を設定する。
【００３４】
また、本実施形態では、解釈部１４は、Ｓ１０９に示す処理で、条件分岐での条件のすべてについて、Ｓ１０１〜Ｓ１０８に示す処理で実行することが設定された命令が実行された後に実行される命令として、条件分岐での条件のそれぞれについての戻り値のうちの、Ｎｕｌｌでない戻り値を、以上のようにして構築されるサブパイプラインにおける最終的な戻り値として返す命令を設定する。
【００３５】
図５は、上述の処理によって、図２に例示する画像処理指示書における上述の（１−５）、（１−６）に示す処理に相当するサブパイプラインの一例を模式的に示す図である。図５には、上下に分かれて２つのサブパイプラインが示されている。
【００３６】
図５に示されている上側のサブパイプラインの左側には、ａｒｙ［０］のビット数が１である場合は、ａｒｙ［０］が戻り値として返され、８ビット化のモジュールへの入力となることが示されている。また、ａｒｙ［０］のビット数が１でない場合は、Ｎｕｌｌが戻り値として返され、８ビット化のモジュールへの入力となることが示されている。この場合は、８ビット化には、Ｎｕｌｌが入力されるため、８ビット化は実行されない。
【００３７】
また、図５に示されている上側のサブパイプラインの右側には、ａｒｙ［０］のビット数が１である場合は、ａｒｙ［０］に対する８ビット化の戻り値であるｂｉｔｃｏｎｖ０が、ａｒｙ［０］に設定され、ａｒｙ［０］のビット数が１でない場合は、Ｎｕｌｌがａｒｙ［０］に設定されることが示されている。
【００３８】
また、図５に示されている下側のサブパイプラインの左側には、ａｒｙ［１］のビット数が１でない場合は、ａｒｙ［１］が戻り値として返され、グレー化のモジュールへの入力となることが示されている。また、ａｒｙ［１］のビット数が１である場合は、Ｎｕｌｌが戻り値として返され、グレー化のモジュールへの入力となることが示されている。この場合は、グレー化には、Ｎｕｌｌが入力されるため、グレー化は実行されない。
【００３９】
また、図５に示されている下側のサブパイプラインの右側には、ａｒｙ［１］のビット数が１でない場合は、ａｒｙ［１］に対するグレー化の戻り値であるｇｒａｙ０が、ａｒｙ［１］に設定され、ａｒｙ［１］のビット数が１である場合は、Ｎｕｌｌがａｒｙ［１］に設定されることが示されている。
【００４０】
そして、図５の右端には、ａｒｙ［０］又はａｒｙ［１］のうち、Ｎｕｌｌでない最初の要素が、図５に示されているサブパイプラインに後続するサブパイプラインへの入力となることが示されている。
【００４１】
次に、解釈部１４による、条件分岐での条件のそれぞれについての、条件を満足する場合に実行される処理に対応付けられるパイプラインの構築処理の流れの別の一例を、図６に例示するフロー図を参照しながら説明する。
【００４２】
まず、解釈部１４は、条件分岐での条件の数（ここでは、例えば、ｎ）だけ、構築されるサブパイプラインへの入力となる画像を複製分岐させる命令に対応するモジュールを、最初のモジュールとして設定する（Ｓ２０１）。これによって、本実施形態では、例えば、入力画像が、要素の数がｎである配列ａｒｙの各要素から参照可能となる。当該配列ａｒｙの各要素を、ａｒｙ［０］〜ａｒｙ［ｎ−１］と呼ぶこととする。
【００４３】
そして、解釈部１４は、条件数カウンタｉの値に、０を設定する（Ｓ２０２）。そして、解釈部１４は、カウンタｉの値がｎ未満であるか否かを確認する（Ｓ２０３）。そして、カウンタｉの値がｎ未満である場合は（Ｓ２０３：Ｙ）、（ｉ＋１）番目の分岐、すなわち、（ｉ＋１）番目の配列要素であるａｒｙ［ｉ］に、条件分岐における（ｉ＋１）番目の条件を満足する場合に実行されることが記述されている画像処理に相当する１又は複数のモジュール（サブパイプライン）を接続する（Ｓ２０４）。Ｓ２０４に示す処理は、例えば、サブパイプラインへの入力モジュール名を、（ｉ＋１）番目の配列要素ａｒｙ［ｉ］に変更した上で、当該サブパイプラインを構築することによって実装される。
【００４４】
そして、解釈部１４は、Ｓ２０４に示す処理で接続された１又は複数のモジュール（サブパイプライン）に後続するモジュールとして、本処理例における条件判定モジュールを接続する（Ｓ２０５）。ここで、Ｓ２０５に示す処理で接続される条件判定モジュールとは、条件分岐における（ｉ＋１）番目の条件を満足する場合は、直前の処理の実行結果を戻り値として返し、条件分岐における（ｉ＋１）番目の条件を満足しない場合は、値がないことを示す戻り値を返す、すなわち、Ｎｕｌｌを戻り値として返す命令に対応するモジュールである。
【００４５】
そして、解釈部１４は、（ｉ＋１）番目の配列要素であるａｒｙ［ｉ］を、条件判定モジュールの出力に置換する（Ｓ２０６）。
【００４６】
そして、解釈部１４は、カウンタｉの値を１増加させて（Ｓ２０７）、Ｓ２０３に示す処理に戻る。
【００４７】
Ｓ２０３に示す処理で、カウンタｉの値がｎ未満ではないことが確認された場合は（Ｓ２０３：Ｎ）、解釈部１４は、（ｉ＋１）番目の配列要素であるａｒｙ［ｉ］（ここでは、条件判定モジュールの出力（戻り値）である。）のうち、Ｎｕｌｌではないものの中で値ｉが最小であるものを出力するモジュールを、上述のＳ２０１〜Ｓ２０７に示す処理で構築されたパイプラインを構成するモジュールの実行後に実行されるモジュールとして設定して（Ｓ２０８）、本処理例に示す処理を終了する。このようにして構築されるサブパイプラインでは、（ｉ＋１）番目の配列要素であるａｒｙ［ｉ］のうち、Ｎｕｌｌではないものの中で値ｉが最小であるものが出力され、当該要素が、上述のようにして構築されたサブパイプラインに後続するサブパイプラインへの入力となる。
【００４８】
図７は、上述のＳ２０１〜Ｓ２０８に示す処理の対象となる画像処理指示書２０に記述された内容の一例を模式的に示した図である。図７に示すように、上述のＳ２０１〜Ｓ２０８に示す処理の対象となる画像処理指示書２０には、以下の処理が記述されている。
（２−１）画像処理装置１０は、ファイルパス“／ｔｍｐ／ｉｎｐｕｔ．ｔｉｆｆ”を、バイトストリームの出力元となるファイル入力ストレージの所在を示す情報として設定する。
（２−２）画像処理装置１０は、（２−１）で設定されたファイル入力ストレージから、バイトストリームをＴＩＦＦフォーマットと解釈して、情報を読み出す。
（２−３）画像処理装置１０は、（２−２）で読み出されたバイトストリームから画像の情報を取得する。
（２−４）画像処理装置１０は、（２−３）で取得された画像の情報のうち、チャンネル当たりのビット数を取得する。
（２−５）画像処理装置１０は、（２−４）で取得したビット数が１である場合は、ファイルパス“／ｔｍｐ／ｉｎｐｕｔ．ｊｐｅｇ”を、新たなバイトストリームの出力元となるファイル入力ストレージの所在を示す情報として設定する。
（２−６）画像処理装置１０は、（２−５）で設定されたファイル入力ストレージから、バイトストリームをＪＰＥＧフォーマットと解釈して、情報を読み出す。
（２−７）画像処理装置１０は、（２−４）で取得したビット数が１でない場合は、画像をグレー化する。
（２−８）画像処理装置１０は、ファイルパス“／ｔｍｐ／ｏｕｔｐｕｔ．ｊｐｇ”を、バイトストリームの出力先となるファイル出力ストレージの所在を示す情報として設定する。
（２−９）画像処理装置１０は、（２−８）で設定されたファイル出力ストレージに、（２−５）で設定されたファイル入力ストレージから読み出されたバイトストリーム、又は、（２−７）によりグレー化された画像のバイトストリームをＪＰＥＧフォーマットで書き出す。
（２−１０）画像処理装置１０は、以上のようにして設定された命令を実行する。
【００４９】
上述の例では、解釈部１４は、例えば、条件分岐までの処理である上述の（２−１）〜（２−４）の処理については、上述の（２−１）〜（２−４）の順序が実行順序として定義された、それぞれの処理に対応付けられるモジュールから構成されるサブパイプラインを構築する。そして、解釈部１４は、当該サブパイプラインに後続するサブパイプラインとして、条件分岐での条件のそれぞれについての、条件を満足する場合に実行される処理である上述の（２−５）〜（２−７）に対応付けられるサブパイプライン（ここでは、例えば、２つのサブパイプライン）を接続する。上述の（２−５）〜（２−７）の処理は、図７では、破線で囲まれた領域内の部分に相当する。そして、解釈部１４は、上述のようにして構成されたサブパイプライン群に後続するサブパイプラインとして、上述の（２−８）、（２−９）の順序が実行順序として定義された、それぞれの処理に対応付けられるモジュールから構成されるサブパイプラインを接続する。このようにして、複数のサブパイプラインから構成されるパイプラインが構築される。
【００５０】
そして、実行部１６は、解釈部１４が構築したパイプラインに相当する命令を実行する。本実施形態では、例えば、パイプラインを構成する最初のモジュールから順に、モジュールの出力が、当該モジュールに後続するモジュールへの入力として用いられることで、パイプラインを構成するモジュール群の全体に相当する命令が実行されることとなる。
【００５１】
図８は、上述の（２−５）〜（２−７）に示す処理に相当するサブパイプラインの一例を模式的に示す図である。図８には、上下に分かれて２つのサブパイプラインが示されている。
【００５２】
図８に示されている上側のサブパイプラインには、ａｒｙ［０］のビット数が１である場合は、ＪＰＥＧ読み出しの戻り値であるｒｅａｄ１が、ａｒｙ［０］に設定され、ａｒｙ［０］のビット数が１でない場合は、Ｎｕｌｌがａｒｙ［０］に設定されることが示されている。
【００５３】
図８に示されている下側のサブパイプラインには、ａｒｙ［１］のビット数が１でない場合は、ａｒｙ［１］に対するグレー化の戻り値であるｇｒａｙ０がａｒｙ［１］に設定され、当該パイプラインに入力されるＴＩＦＦ画像のビット数が１である場合は、Ｎｕｌｌがａｒｙ［１］に設定されることが示されている。
【００５４】
そして、図８の右端には、ａｒｙ［０］又はａｒｙ［１］のうち、Ｎｕｌｌでない最初の要素が、図５に示されているサブパイプラインに後続するサブパイプラインへの入力となることが示されている。
【００５５】
なお、上述のＳ２０１に示す処理において、条件分岐での条件の数（ここでは、例えば、ｎ）だけ入力画像を複製分岐させる命令に対応するモジュールの代わりに、条件分岐での条件の数に１加えた数（ここでは、例えば、ｎ＋１）だけ入力画像を複製分岐させる命令に対応するモジュールを、最初のモジュールとして設定してもよい。
【００５６】
図９は、条件分岐での条件の数に１加えた数（ここでは、例えば、ｎ＋１）だけ入力画像を複製分岐させる命令に対応するモジュールが、最初のモジュールとして設定される場合における処理の対象となる画像処理指示書２０に記述された内容の一例を模式的に示した図である。図９に示すように、条件分岐での条件の数に１加えた数（ここでは、例えば、ｎ＋１）だけ入力画像を複製分岐させる命令に対応するモジュールが、最初のモジュールとして設定される場合における処理の対象となる画像処理指示書２０には、以下の処理が記述されている。
（３−１）画像処理装置１０は、ファイルパス“／ｔｍｐ／ｉｎｐｕｔ．ｔｉｆｆ”を、バイトストリームの出力元となるファイル入力ストレージの所在を示す情報として設定する。
（３−２）画像処理装置１０は、（３−１）で設定されたファイル入力ストレージから、バイトストリームをＴＩＦＦフォーマットと解釈して、情報を読み出す。
（３−３）画像処理装置１０は、（３−２）で読み出されたバイトストリームから画像の情報を取得する。
（３−４）画像処理装置１０は、（３−３）で取得された画像の情報のうち、チャンネル当たりのビット数とチャンネル数を取得する。
（３−５）画像処理装置１０は、（３−４）で取得したビット数とチャンネル数の積が１である場合は、画像を８ビット化する。
（３−６）画像処理装置１０は、（３−４）で取得したビット数とチャンネル数の積が３２である場合は、画像をＹＣｂＣｒ化する。
（３−７）画像処理装置１０は、ファイルパス“／ｔｍｐ／ｏｕｔｐｕｔ．ｊｐｇ”を、バイトストリームの出力先となるファイル出力ストレージの所在を示す情報として設定する。
（３−８）画像処理装置１０は、（３−７）で設定されたファイル出力ストレージに、（３−５）により８ビット化された画像、（３−６）によりＹＣｂＣｒ化された画像、又は、上記（３−５）若しくは（３−６）の処理が実行されなかった画像のバイトストリームをＪＰＥＧフォーマットで書き出す。
（３−９）画像処理装置１０は、以上のようにして設定された命令を実行する。
【００５７】
なお、以上の記述において、チャンネル数とは、画像の色空間の成分数を指す。例えば、ＣＭＹＫ色空間の画素値で表現された画像のチャンネル数は４であり。ＲＧＢ色空間、ＹＣｂＣｒ色空間で表現された画像のチャンネル数は３であり、グレースケールで表現された画像のチャンネル数は１である。
【００５８】
また、以上の記述における（３−８）において、（３−４）で取得したビット数とチャンネル数の積が１でも３２でもない場合に、上記（３−５）若しくは（３−６）の処理が実行されなかった画像のバイトストリームがＪＰＥＧフォーマットで書き出される。
【００５９】
上述の例では、解釈部１４は、例えば、条件分岐までの処理である上述の（３−１）〜（３−４）の処理については、上述の（３−１）〜（３−４）の順序が実行順序として定義された、それぞれの処理に対応付けられるモジュールから構成されるサブパイプラインを構築する。そして、解釈部１４は、当該サブパイプラインに後続するサブパイプラインとして、条件分岐での条件のそれぞれについての、条件を満足する場合に実行される処理である上述の（３−５）、（３−６）に対応付けられるサブパイプライン（ここでは、例えば、３つのサブパイプライン）を接続する。上述の（３−５）、（３−６）の処理は、図９では、破線で囲まれた領域内の部分に相当する。そして、解釈部１４は、上述のようにして構成されたサブパイプライン群に後続するサブパイプラインとして、上述の（３−７）、（３−８）の順序が実行順序として定義された、それぞれの処理に対応付けられるモジュールから構成されるサブパイプラインを接続する。このようにして、複数のサブパイプラインから構成されるパイプラインが構築される。
【００６０】
そして、実行部１６は、解釈部１４が構築したパイプラインに相当する命令を実行する。本実施形態では、例えば、パイプラインを構成する最初のモジュールから順に、モジュールの出力が、当該モジュールに後続するモジュールへの入力として用いられることで、パイプラインを構成するモジュール群の全体に相当する命令が実行されることとなる。
【００６１】
図１０は、上述の（３−５）、（３−６）に示す処理に相当するパイプラインの一例を模式的に示す図である。図１０には、上中下に分かれて３つのサブパイプラインが示されている。
【００６２】
図１０に示されている上側のサブパイプラインには、ａｒｙ［０］のビット数とチャンネル数との積が１である場合は、ａｒｙ［０］に対する８ビット化の戻り値であるｂｉｔｃｏｎｖ０が、ａｒｙ［０］に設定され、ａｒｙ［０］のビット数とチャンネル数との積が１でない場合は、Ｎｕｌｌがａｒｙ［０］に設定されることが示されている。
【００６３】
図１０に示されている中央のサブパイプラインには、ａｒｙ［１］のビット数とチャンネル数との積が３２である場合は、ａｒｙ［１］に対するＹＣｂＣｒ化の戻り値であるｃｏｌｏｒｃｏｎｖ０が、ａｒｙ［１］に設定され、ａｒｙ［１］のビット数とチャンネル数との積が３２でない場合は、Ｎｕｌｌがａｒｙ［１］に設定されることが示されている。
【００６４】
図１０に示されている下側のサブパイプラインには、ａｒｙ［２］がそのまま、図１０の右端に示されているモジュールへの入力となることが示されている。
【００６５】
そして、図１０の右端には、ａｒｙ［０］、ａｒｙ［１］、又は、ａｒｙ［２］のうち、Ｎｕｌｌでない最初の要素を戻り値として返し、後続の処理への入力となることが示されている。
【００６６】
このように、解釈部１４が、満足する場合に実行される画像処理が画像処理指示書２０に記述されていない条件分岐での条件が存在する際には、条件分岐での条件のすべてについて実行することが設定された命令が実行された後に実行される命令として、条件分岐での条件のそれぞれに対応するサブパイプラインに相当する戻り値がすべて、値がないことを示す戻り値（ここでは、Ｎｕｌｌ）である場合は、条件分岐前に実行されることが画像処理指示書２０に記述されている識別情報に対応付けられる命令の戻り値を、上述のようにして構築されるサブパイプラインに相当する命令における最終的な戻り値として返す命令を設定してもよい。
【００６７】
また、上述のＳ１０１に示す処理において、条件分岐での条件の数（ここでは、例えば、ｎ）だけ入力画像を複製分岐させる命令に対応するモジュールの代わりに、条件分岐での条件の数に１加えた数（ここでは、例えば、ｎ＋１）だけ入力画像を複製分岐させる命令に対応するモジュールを、最初のモジュールとして設定してもよい。
【００６８】
本実施形態では、属性の型は、画像処理ライブラリ等のモジュール側でのみ扱われ、画像処理指示書２０や、パイプラインを構築する解釈部１４といった、インタプリタ側では、属性の型を意識する必要がない。本実施形態によれば、画像処理装置１０の利用者が、画像処理命令に用いられる属性の型を意識せずに、複数の画像処理の実行指示が記述された画像処理指示情報を作成できることとなる。
【００６９】
また、本実施形態では、画像処理装置１０の利用者が、用いられるモジュールにおける属性の型を指定することなく、画像処理指示情報を作成できることとなる。
【００７０】
なお、本発明は上述の実施形態に限定されるものではない。
【００７１】
例えば、上述の図７および上述の（２−１）〜（２−１０）に模式的に示されている画像処理指示書２０の内容を実行するにあたって、条件に合致するサブパイプラインでの処理で発生したエラーだけが外部に出力されるようにしてもよい。具体的には、例えば、上述の図７に模式的に示されている画像処理指示書２０の内容を実行するにあたって、条件に合致するサブパイプラインでの処理で発生したエラーだけが、ディスプレイの画面を介して利用者に通知されるようにしてもよい。
【００７２】
図１１は、この場合における、上述の（２−５）〜（２−７）に示す処理に相当するパイプラインの一例を模式的に示す図である。図１１には、上下に分かれて２つのサブパイプラインが示されている。
【００７３】
当該パイプラインについては、実行部１６は、命令の実行を開始する際に、「未選択」、「選択中」、又は、「選択済」のいずれかの値をとるデータである分岐選択状態データｓｔを生成して、画像処理装置１０の記憶部に記憶させる。
【００７４】
図１１に示されている上側のサブパイプラインの左側には、分岐選択状態データｓｔの値が「未選択」であり、ａｒｙ［０］のビット数が１である場合は、分岐選択状態データｓｔの値が「選択中」に変更されるとともに、ａｒｙ［０］が戻り値として返され、ＪＰＥＧ読み込みモジュールへの入力となり、そうでない場合は、Ｎｕｌｌが戻り値として返され、ＪＰＥＧ読み込みモジュールへの入力となることが示されている。
【００７５】
その右には、ａｒｙ［０］のビット数が１である場合は、ＪＰＥＧ読み出しの戻り値であるｒｅａｄ１がａｒｙ［０］に設定され、ａｒｙ［０］のビット数が１でない場合は、Ｎｕｌｌがａｒｙ［０］に設定されることが示されている。
【００７６】
さらにその右には、分岐選択状態データｓｔの値が「選択中」でない場合に、ａｒｙ［０］についてのサブパイプラインでの処理で発生したエラーのクリアが実行され、そうでない場合に、分岐選択状態データｓｔの値が「選択済」に変更されることが示されている。
【００７７】
図１１に示されている下側のサブパイプラインの左側には、分岐選択状態データｓｔの値が「未選択」であり、ａｒｙ［１］のビット数が１でない場合は、分岐選択状態データｓｔの値が「選択中」に変更されるとともに、ａｒｙ［１］が戻り値として返され、グレー化モジュールへの入力となり、そうでない場合は、Ｎｕｌｌが戻り値として返され、グレー化モジュールへの入力となることが示されている。
【００７８】
その右には、ａｒｙ［１］のビット数が１でない場合は、ａｒｙ［１］に対するグレー化の戻り値であるｇｒａｙ０が、ａｒｙ［１］に設定され、ａｒｙ［１］のビット数が１である場合は、Ｎｕｌｌがａｒｙ［１］に設定されることが示されている。
【００７９】
さらにその右には、分岐選択状態データｓｔの値が「選択中」でない場合に、ａｒｙ［１］についてのサブパイプラインでの処理で発生したエラーのクリアが実行され、そうでない場合に、分岐選択状態データｓｔの値が「選択済」に変更されることが示されている。
【００８０】
そして、図１１の右端には、ａｒｙ［０］又はａｒｙ［１］のうち、Ｎｕｌｌでない最初の要素を戻り値として返し、後続の処理への入力となることが示されている。
【００８１】
以上の処理を実現するにあたって、例えば、解釈部１４が、以下説明する点以外については、上述のＳ１０１〜Ｓ１０９に示す処理を実行するようにしてもよい。
【００８２】
ここで、解釈部１４は、上述のＳ１０４に示す処理の代わりに、（ｉ＋１）番目の分岐、すなわち、（ｉ＋１）番目の配列要素であるａｒｙ［ｉ］に後続するモジュールとして、分岐選択状態データｓｔの値が「未選択」であり、条件分岐における（ｉ＋１）番目の条件を満足する場合に、分岐選択状態データｓｔの値を「選択中」に変更するとともに、ａｒｙ［ｉ］を戻り値として返し、そうでない場合は、値がないことを示す戻り値を返すモジュールである第３条件判定モジュールを接続する処理を実行してもよい。
【００８３】
そして、解釈部１４は、上述のＳ１０８に示す処理の代わりに、分岐選択状態データｓｔの値が「選択中」でない場合に、ａｒｙ［ｉ］についてのサブパイプラインでの処理で発生したエラーのクリアを実行し、そうでない場合に、分岐選択状態データｓｔの値が「選択済」に変更する処理を実行してから、カウンタｉの値を１増加させた上で、Ｓ１０３に示す処理に戻ってもよい。
【００８４】
実行部１６は、上述のようにして構築されたパイプラインに相当する命令を実行するにあたって、条件分岐での条件のそれぞれについて、当該条件を満足しない場合に、当該条件に対応するサブパイプラインに相当する命令が実行される際に発生するエラーが出力されることを抑制する。
【００８５】
なお、本実施形態における画像処理装置１０が複数の筐体から構成されていてもよい。また、明細書中の具体的な文字列や数値、並びに、図面中の具体的な文字列や数値は例示であり、これらの文字列や数値には限定されない。
【符号の説明】
【００８６】
１０  画像処理装置、１２  取得部、１４  解釈部、１６  実行部、２０  画像処理指示書。
【図１】
2014119848.tif 000003
【図２】
2014119848.tif 000004
【図３】
2014119848.tif 000005
【図４】
2014119848.tif 000006
【図５】
2014119848.tif 000007
【図６】
2014119848.tif 000008
【図７】
2014119848.tif 000009
【図８】
2014119848.tif 000010
【図９】
2014119848.tif 000011
【図１０】
2014119848.tif 000012
【図１１】
2014119848.tif 000013