(57)【特許請求の範囲】
【請求項１】
画像処理を実行するオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群の各オブジェクトで、入力画像データにより示される入力画像が部分領域毎に分割された各分割画像データに対して部分処理を行う画像処理装置であって、
連結された前記オブジェクト間の前記部分処理に処理の依存関係を付与し、かつ各部分処理に優先度を付与する付与部と、
前記依存関係に基づいて実行可能となった部分処理を、付与された前記優先度に従って整列して実行可能部分処理リストに登録する登録部と、
前記登録部によって登録された実行可能部分処理リストにおける優先度の高い順に前記部分処理を実行させる実行部と、
を備え、
前記付与部は、後段に連結された前記オブジェクトで実行される部分処理に対して、前段に連結された前記オブジェクトで実行される部分処理よりも高い優先度を付与する、
画像処理装置。
【請求項２】
前記依存関係は、連結された前記オブジェクト間において、前段に連結された前記オブジェクトの部分処理が終了した場合に、後段に連結された前記オブジェクトの部分処理が実行可能となる関係である
請求項１記載の画像処理装置。
【請求項３】
前記付与部は、前記依存関係のある各部分処理について、前段に連結された前記オブジェクトの部分処理の優先度に従った優先度を、後段に連結された前記オブジェクトの部分処理に付与する
請求項１又は請求項２記載の画像処理装置。
【請求項４】
前記付与部は、前記オブジェクト群において並列に実行されるオブジェクトが存在する場合、並列に実行されるオブジェクト間の部分処理に、処理の順番が交互となる優先度を付与する
請求項１から請求項３の何れか１項記載の画像処理装置。
【請求項５】
前記分割画像データは、前記入力画像が正面視上下に分割された分割画像を示す画像データであり、
前記付与部は、出力画像の正面視下に位置する分割画像を示す分割画像データを処理する部分処理よりも、出力画像の正面視上に位置する分割画像を示す分割画像データを処理する部分処理に高い優先度を付与する
請求項１から請求項４の何れか１項記載の画像処理装置。
【請求項６】
画像処理を実行するオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群の各オブジェクトで、入力画像データにより示される入力画像が部分領域毎に分割された各分割画像データに対して部分処理を行う画像処理装置による画像処理方法であって、
連結された前記オブジェクト間の前記部分処理に処理の依存関係を付与し、かつ各部分処理に優先度を付与し、
前記依存関係に基づいて実行可能となった部分処理を、付与した前記優先度に従って整列して実行可能部分処理リストに登録し、
登録した前記実行可能部分処理リストにおける優先度の高い順に前記部分処理を実行させる
ことを含み、
前記付与において、後段に連結された前記オブジェクトで実行される部分処理に対して、前段に連結された前記オブジェクトで実行される部分処理よりも高い優先度を付与する、画像処理方法。
【請求項７】
コンピュータを、請求項１から請求項５の何れか１項記載の画像処理装置の付与部、登録部、及び実行部として機能させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の技術は、画像処理装置、画像処理方法、及び画像処理プログラムに関する。
【背景技術】
【０００２】
従来、画像処理を実行するオブジェクトが、ＤＡＧ（Directed Acyclic Graph：有向非循環（非巡回）グラフ）形態で複数連結されたオブジェクト群に従って、画像処理を行う技術が知られている（特許第４６９４２６４号公報参照）。【０００３】
また、ＤＡＧ形態で複数のノード（タスク）が連結されたグラフに従って処理を実行する場合に、各ノードの実行時に、グラフを辿って次に実行するノードを探索する技術が知られている（特許第４４９１０２６号公報参照）。【０００４】
また、画像処理を実行するオブジェクトが、ＤＡＧ形態で複数連結されたオブジェクト群に従って画像処理を実行する場合に、画像処理の実行時に、画像処理の進行に伴って後段側に位置するオブジェクトの優先度を高くする技術が知られている（特開２００７−３２３３９３号公報参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許第４６９４２６４号公報に記載の技術は、例えばアプリケーションプログラムの指示により構築された上記オブジェクト群に従って実行可能となった処理を順次実行するものであり、処理効率が高い順番で処理が実行されない場合があった。【０００６】
また、特許第４４９１０２６号公報に記載の技術では、各ノードの実行時にグラフを辿って次に実行するノードを探索するため、処理の実行時における探索処理の負荷が比較的高く、処理効率が低下してしまう場合があった。【０００７】
また、特開２００７−３２３３９３号公報に記載の技術でも、上記オブジェクト群による画像処理の実行時に、後段側に位置するオブジェクトの優先度を変更するため、画像処理の実行時における優先度の変更処理の負荷が比較的高く、処理効率が低下してしまう場合があった。【０００８】
本開示の技術は、実行可能な処理が複数存在する場合に、処理効率の低下を抑制しつつ実行可能な処理を選択することができる画像処理装置、画像処理方法、及び画像処理プログラムを提供する。
【課題を解決するための手段】
【０００９】
本発明の第１の態様の画像処理装置は、画像処理を実行するオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群の各オブジェクトで、入力画像データにより示される入力画像が部分領域毎に分割された各分割画像データに対して部分処理を行う画像処理装置であって、連結されたオブジェクト間の部分処理に処理の依存関係を付与し、かつ各部分処理に優先度を付与する付与部と、依存関係に基づいて実行可能となった部分処理を、付与された優先度に従って整列して実行可能部分処理リストに登録する登録部と、登録部によって登録された実行可能部分処理リストにおける優先度の高い順に部分処理を実行させる実行部と、を備えている。【００１０】
なお、本発明の第２の態様の画像処理装置は、第１の態様の画像処理装置において、依存関係が、連結されたオブジェクト間において、前段に連結されたオブジェクトの部分処理が終了した場合に、後段に連結されたオブジェクトの部分処理が実行可能となる関係であってもよい。【００１１】
また、本発明の第３の態様の画像処理装置は、第１の態様又は第２の態様の画像処理装置において、付与部が、後段に連結されたオブジェクトで実行される部分処理に対して、前段に連結されたオブジェクトで実行される部分処理よりも高い優先度を付与してもよい。【００１２】
また、本発明の第４の態様の画像処理装置は、第１の態様から第３の態様の何れか１つの態様の画像処理装置において、付与部が、依存関係のある各部分処理について、前段に連結されたオブジェクトの部分処理の優先度に従った優先度を、後段に連結されたオブジェクトの部分処理に付与してもよい。【００１３】
また、本発明の第５の態様の画像処理装置は、第１の態様から第４の態様の何れか１つの態様の画像処理装置において、付与部が、オブジェクト群において並列に実行されるオブジェクトが存在する場合、並列に実行されるオブジェクト間の部分処理に、処理の順番が交互となる優先度を付与してもよい。【００１４】
また、本発明の第６の態様の画像処理装置は、第１の態様から第５の態様の何れか１つの態様の画像処理装置において、分割画像データが、入力画像が正面視上下に分割された分割画像を示す画像データであり、付与部が、出力画像の正面視下に位置する分割画像を示す分割画像データを処理する部分処理よりも、正面視上に位置する分割画像を示す分割画像データを処理する部分処理に高い優先度を付与してもよい。【００１５】
本発明の第７の態様の画像処理方法は、画像処理を実行するオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群の各オブジェクトで、入力画像データにより示される入力画像が部分領域毎に分割された各分割画像データに対して部分処理を行う画像処理装置による画像処理方法であって、連結されたオブジェクト間の部分処理に処理の依存関係を付与し、かつ各部分処理に優先度を付与し、依存関係に基づいて実行可能となった部分処理を、付与した優先度に従って整列して実行可能部分処理リストに登録し、登録した実行可能部分処理リストにおける優先度の高い順に部分処理を実行させるものである。【００１６】
本発明の第８の態様の画像処理プログラムは、コンピュータを、本発明の第１の態様から第６の態様の何れか１つの態様の画像処理装置の付与部、登録部、及び実行部として機能させるためのものである。
【発明の効果】
【００１７】
本発明の一実施形態によれば、実行可能な処理が複数存在する場合に、処理効率の低下を抑制しつつ実行可能な処理を選択することができる。
【図面の簡単な説明】
【００１８】
【図１】実施の形態に係る画像処理装置として機能するコンピュータの構成の一例を示すブロック図である。
【図２Ａ】画像処理ＤＡＧの一例を示す概略図である。
【図２Ｂ】画像処理ＤＡＧに入出力用のメモリを加えた場合の一例を示す概略図である。
【図３】実施の形態に係る処理制御部の機能的な構成の一例を示すブロック図である。
【図４Ａ】入力画像の分割処理の一例の説明に供する概略図である。
【図４Ｂ】入力画像の分割処理の一例の説明に供する概略図である。
【図５】画像処理モジュールが部分処理に分割された画像処理ＤＡＧの一例を示す概略図である。
【図６】部分処理に優先度が付与された画像処理ＤＡＧの一例を示す概略図である。
【図７】画像の色変換処理を行う場合に部分処理に付与される優先度の一例を示す概略図である。
【図８】画像の上下を反転する処理を行う場合に部分処理に付与される優先度の一例を示す概略図である。
【図９】部分処理に優先度が付与された画像処理ＤＡＧの一例を示す概略図である。
【図１０】実施の形態に係る実行可能部分処理リストの一例を示す概略図である。
【図１１】実施の形態に係る画像処理プログラムの処理の流れを示すフローチャートである。
【図１２】実施の形態に係る画像処理ＤＡＧによる画像処理の時系列の遷移の一例を示す模式図である。
【図１３】実施の形態に係る画像処理ＤＡＧによる画像処理の時系列の遷移の一例を示す模式図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照して、本開示の技術を実施するための形態例を詳細に説明する。
【００２０】
まず、図１を参照して、画像処理装置として機能するコンピュータ１０の構成を説明する。なお、コンピュータ１０は、複写機、プリンタ、ファクシミリ装置、これらの装置の機能を兼ね備えた複合機、及びスキャナ等の内部で画像処理を行う画像取扱機器に組み込まれたコンピュータであってもよい。また、コンピュータ１０は、ＰＣ（Personal Computer）等の独立したコンピュータであってもよく、ＰＤＡ（Personal Digital Assistant）及び携帯電話機等の携帯機器に組み込まれたコンピュータであってもよい。
【００２１】
図１に示すように、本実施の形態に係るコンピュータ１０は、第１演算部１２Ａ、第２演算部１２Ｂ、メモリ１４、表示部１６、操作部１８、記憶部２０、画像データ供給部２２、及び画像出力部２４を備えている。また、第１演算部１２Ａ、第２演算部１２Ｂ、メモリ１４、表示部１６、操作部１８、記憶部２０、画像データ供給部２２、及び画像出力部２４の各部は、バス２６を介して互いに接続されている。
【００２２】
本実施の形態に係る第１演算部１２Ａは、コンピュータ１０のメイン・プロセッサであり、一例として複数のプロセッサ・コアを有するＣＰＵ（Central Processing Unit）である。また、本実施の形態に係る第２演算部１２Ｂは、一例として内部にローカルメモリ１３を有するＧＰＵ（Graphics Processing Unit）である。なお、第２演算部１２Ｂは、第１演算部１２Ａと同じ種類のＣＰＵでもよいし、異なる種類のＣＰＵでもよい。また、第２演算部１２Ｂは、第１演算部１２Ａに内蔵されたＧＰＵでもよい。また、第２演算部１２Ｂは内部にローカルメモリ１３を有さないＧＰＵでもよい。また、第１演算部１２Ａ及び第２演算部１２Ｂは、ＦＰＧＡ（Field Programmable Gate Array）等の演算器でもよい。
【００２３】
メモリ１４は、第１演算部１２Ａ及び第２演算部１２Ｂが一時的にデータを記憶する不揮発性の記憶手段である。本実施の形態に係る第２演算部１２Ｂにより画像処理を行う場合、第１演算部１２Ａはメモリ１４又は記憶部２０の記憶領域に記憶された画像データを第２演算部１２Ｂにバス２６を介して転送する。そして、第２演算部１２Ｂは、第１演算部１２Ａから転送された画像データをローカルメモリ１３に記憶し、記憶した画像データに対して画像処理を行う。なお、第２演算部１２Ｂは、メモリ１４又は記憶部２０に記憶された画像データを直接読み出して画像処理を行ってもよい。
【００２４】
コンピュータ１０が前述した画像取扱機器に組み込まれている場合、表示部１６及び操作部１８は、例えば画像取扱機器に設けられたＬＣＤ（Liquid Crystal Display）等の表示パネル及びテンキー等が適用される。また、コンピュータ１０が独立したコンピュータである場合、表示部１６及び操作部１８は、例えばコンピュータ１０に接続されたディスプレイ、及びキーボード、マウス等が適用される。また、表示部１６及び操作部１８は、タッチパネル及びディスプレイが一体化して構成されたタッチパネルディスプレイ等でもよい。また、記憶部２０は、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）、及びフラッシュメモリ等の不揮発性の記憶媒体が適用される。
【００２５】
画像データ供給部２２は、処理対象の画像データを供給するものであればよく、例えば紙又は写真フィルム等の記録材料に記録されている画像を読み取って画像データを出力する画像読取部が適用される。また、画像データ供給部２２は、例えば通信回線を介して外部装置から画像データを受信する受信部、及び画像データを記憶する画像記憶部（メモリ１４又は記憶部２０）等が適用される。
【００２６】
画像出力部２４は、画像処理を経た画像データ又は画像処理を経た画像データが表す画像を出力するものであればよく、例えば画像データが表す画像を紙又は感光材料等の記録材料に記録する画像記録部が適用される。また、画像出力部２４は、画像データが表す画像をディスプレイ等に表示する表示部（表示部１６）、画像データをＣＤ−ＲＯＭ（Compact Disk Read Only Memory）等の記録媒体に書き込む書込装置が適用される。また、画像出力部２４は、画像処理を経た画像データを、通信回線を介して外部装置に送信する送信部が適用される。また、画像出力部２４は、画像処理を経た画像データを記憶する画像記憶部（メモリ１４又は記憶部２０）であってもよい。
【００２７】
図１に示すように、記憶部２０には、第１演算部１２Ａ及び第２演算部１２Ｂによって実行される各種プログラムが記憶されている。記憶部２０には、各種プログラムとして、リソースの管理、プログラムの実行の管理、及びコンピュータ１０と外部装置との通信等を司るオペレーティングシステム３０のプログラムが記憶されている。また、記憶部２０には、各種プログラムとして、コンピュータ１０を画像処理装置として機能させるための画像処理プログラム群３４が記憶されている。また、記憶部２０には、各種プログラムとして、上記画像処理装置に対して所望の画像処理を行わせる各種のアプリケーションプログラム群３２（以下、「アプリケーション３２」という。）が記憶されている。
【００２８】
画像処理プログラム群３４は、前述した画像取扱機器、携帯機器、及びＰＣ等で実行される画像処理プログラムを開発する際の負荷を軽減することを目的として開発されたプログラムである。また、画像処理プログラム群３４は、前述した画像取扱機器、携帯機器、及びＰＣ等の各種機器（プラットフォーム）で共通に実行可能に開発されたプログラムである。
【００２９】
画像処理プログラム群３４によって実現される画像処理装置は、アプリケーション３２からの構築指示に従い、アプリケーション３２が指示した画像処理を行う画像処理ＤＡＧ５０Ａ（詳細は後述）を構築する。そして、上記画像処理装置は、アプリケーション３２からの実行指示に従い画像処理ＤＡＧ５０Ａの処理を実行する。このため、画像処理プログラム群３４は、所望の画像処理を行う画像処理ＤＡＧ５０Ａの構築を指示したり、構築された画像処理ＤＡＧ５０Ａによる画像処理の実行を指示したりするためのインタフェースをアプリケーション３２に提供している。
【００３０】
以上の構成により、内部で画像処理を行う必要のある任意の機器を新規に開発する場合等にも、上記画像処理を行うプログラムの開発に関しては、以下に示すように開発すればよい。この場合、上記任意の機器で必要とされる画像処理を、上記インタフェースを利用して画像処理プログラム群３４に行わせるアプリケーション３２を開発すればよい。従って、開発者は、実際に画像処理を行うプログラムを新たに開発する必要が無くなり、開発者の負荷が軽減される。
【００３１】
次に、本実施の形態に係る画像処理プログラム群３４について詳細に説明する。図１に示すように、画像処理プログラム群３４は、モジュールライブラリ３６、処理構築部４２のプログラム、及び処理制御部４６のプログラムを含む。
【００３２】
モジュールライブラリ３６は、予め定められた互いに異なる画像処理を行う複数種類の画像処理モジュール３８のプログラムが各々登録されている。この画像処理としては、例えば、入力処理、フィルタ処理、色変換処理、拡大・縮小処理（図１では「拡縮処理」と表記）、スキュー角検知処理、画像回転処理、画像合成処理、及び出力処理等が挙げられる。
【００３３】
また、モジュールライブラリ３６には、画像処理の種類が同一で、かつ実行する画像処理の内容が異なる画像処理モジュール３８も登録されている。図１では、この種の画像処理モジュールを「モジュール１」、「モジュール２」と、末尾に数字を付して区別している。例えば、拡大・縮小処理を行う画像処理モジュール３８については、入力された画像データを、水平方向及び垂直方向の各方向ともに１画素おきに間引くことで画像の縦横のサイズを５０％に縮小する縮小処理を行う画像処理モジュール３８が用意されている。さらに、例えば、拡大・縮小処理を行う画像処理モジュール３８については、入力された画像データに対して指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール３８等が用意されている。
【００３４】
また、例えば、色変換処理を行う画像処理モジュール３８については、ＲＧＢ（Red Green Blue）色空間の画像をＣＭＹＫ（Cyan Magenta Yellow Key-Plate（黒））色空間の画像へ変換する画像処理モジュール３８、及びＣＭＹＫ色空間の画像をＲＧＢ色空間の画像へ変換する画像処理モジュール３８が用意されている。さらに、例えば、色変換処理を行う画像処理モジュール３８については、ＲＧＢ色空間の画像をＹＣｂＣｒ色空間の画像へ変換する画像処理モジュール３８、及びＹＣｂＣｒ色空間の画像をＲＧＢ色空間の画像へ変換する画像処理モジュール３８等が用意されている。
【００３５】
また、本実施の形態に係る画像処理モジュール３８には、個々の画像処理モジュール３８を、第１演算部１２Ａ及び第２演算部１２Ｂの何れの演算部で実行するかを示す演算部情報が含まれている。なお、演算部情報は、画像処理モジュール３８の種類及び画像処理の内容の少なくとも一方に応じて予め設定されていてもよいし、アプリケーション３２からの指示により、後述する処理構築部４２による画像処理ＤＡＧ５０Ａの構築時に設定されてもよい。
【００３６】
また、モジュールライブラリ３６には、画像データを記憶するための記憶領域（バッファ）を備えたバッファモジュール４０も登録されている。
【００３７】
本実施の形態に係る処理構築部４２は、アプリケーション３２からの指示により、ＤＡＧ形態の画像処理ＤＡＧ５０Ａを構築する。画像処理ＤＡＧ５０Ａは、一例として図２Ａに示すように、１つ以上の画像処理モジュール３８が、個々の画像処理モジュール３８の前段及び後段の少なくとも一方に配置されたバッファモジュール４０を介して連結される。
【００３８】
なお、個々の画像処理モジュール３８は、入力画像データに対して画像処理を実行して出力画像データを出力するオブジェクトの一例である。また、画像処理ＤＡＧ５０Ａは、画像処理モジュール３８が複数連結されたオブジェクト群の一例である。また、図２Ａに示す例では、バッファモジュール４０を介して前段に画像処理モジュール３８が連結された画像処理モジュール３８は、前段の画像処理モジュール３８による画像処理が終了した場合に、自身の画像処理の実行が可能となることを示している。また、バッファモジュール４０を介して前段に複数の画像処理モジュール３８が連結された画像処理モジュール３８は、前段の複数の画像処理モジュール３８の全ての画像処理が終了した場合に、自身の画像処理の実行が可能となることを示している。
【００３９】
また、図２Ａでは、各モジュールのみが処理の順に接続されたＤＡＧを示しているが、このＤＡＧが実行される際には、図２Ｂに示すようにメモリ１４に記憶された画像データが入力されてＤＡＧに従って画像処理が行われる。そして、最終的にメモリ１４に処理済みの画像データ等の処理結果が記憶される。なお、各画像処理モジュール３８で実行される画像処理を第２演算部１２Ｂにより実行する場合は、図２Ｂに示したメモリ１４がローカルメモリ１３となる。
【００４０】
次に、図３を参照して、本実施の形態に係る処理制御部４６の機能的な構成を説明する。図３に示すように、処理制御部４６は、分割部６０、付与部６２、リスト記憶部６４、登録部６８、実行部７０、及び出力部７２を備えている。
【００４１】
本実施の形態に係る分割部６０は、入力画像データの処理対象とする部分により示される画像を複数の部分領域（以下、「分割画像」という。）に分割する。一例として図４Ａに示すように、分割部６０は、入力画像データの処理対象とする部分により示される画像Ｇを、複数（図４Ａに示す例では３つ）の分割画像Ｂ１〜Ｂ３に分割する。なお、以下では分割画像を示す画像データを「分割画像データ」という。また、入力画像データの処理対象とする部分とは、色変換処理のように入力画像全体を処理対象とする画像処理では、入力画像データ全体が処理対象とする部分を意味する。また、入力画像データの処理対象とする部分とは、切り抜き（トリミング）処理のように、入力画像の一部を処理対象とする画像処理では、入力画像の一部を意味する。以下では、錯綜を回避するために、入力画像データの処理対象とする部分を、単に「入力画像データ」という。
【００４２】
また、図４Ａに示した例では、分割部６０が画像Ｇを正面視上下に分割しているが、これに限定されない。例えば分割部６０は画像Ｇを正面視左右に分割してもよいし、図４Ｂに示すように、正面視上下左右に分割してもよい。
【００４３】
なお、分割部６０による入力画像データの分割数は特に限定されない。例えば、分割部６０は、予め定められた数又はサイズで入力画像データを分割してもよい。また、例えば、分割部６０は、画像処理モジュール３８による画像処理を実行する演算部が有するプロセッサ・コア数以下で、かつ２以上の数に入力画像データを分割してもよい。
【００４４】
また、例えば、分割部６０は、画像処理モジュール３８による画像処理を実行する演算部が有するキャッシュメモリの容量以下のサイズで入力画像データを分割してもよい。この場合、例えば、分割部６０は、画像処理モジュール３８による画像処理を実行する演算部のプロセッサから最も遠いレベルのキャッシュメモリ、所謂ＬＬＣ（Last Level Cache）の容量以下で、かつＬＬＣの容量に極力一致するサイズで入力画像データを分割する形態が例示される。
【００４５】
また、一例として図５に示すように、分割部６０は、画像処理ＤＡＧ５０Ａに対し、各画像処理モジュール３８で実行される画像処理を、分割画像データの各々に対応する部分処理３９（タスク）に分割して画像処理ＤＡＧ５０Ｂを構築する。なお、図５は、図２Ａに示した画像処理ＤＡＧ５０Ａにおいて、入力画像データを４つの分割画像データに分割した場合の画像処理ＤＡＧ５０Ｂを示している。図５では、錯綜を回避するために、バッファモジュール４０の図示を省略している。また、後述する図６及び図９でも同様に、バッファモジュール４０の図示を省略している。
【００４６】
本実施の形態に係る付与部６２は、画像処理モジュール３８で実行される画像処理の種類に応じて、前段に連結された画像処理モジュール３８の部分処理３９と、後段に連結された画像処理モジュール３８の部分処理３９との間で依存関係を付与する。なお、図５では、この依存関係を破線の矢印で示している。
【００４７】
例えば、色変換処理のように、処理対象とする画素のみに対して画像処理を行う処理は、各部分処理３９も１対１の依存関係となる。一方、例えば、フィルタ処理のように、処理対象とする画素の周辺画素も必要な画像処理では、周辺画素に対して画像処理を行う前段の部分処理３９にも依存関係を付与することとなる。すなわち、この依存関係は、連結された画像処理モジュール３８間において、前段に連結された画像処理モジュール３８の部分処理３９が終了した場合に、後段に連結された画像処理モジュール３８の部分処理３９が実行可能となる関係である。従って、各部分処理３９は、前段に依存関係が付与された部分処理３９が存在しない場合か、又は依存関係が付与された前段の全ての部分処理３９が終了した場合に実行可能となる。
【００４８】
具体的には、例えば、図５に示す部分処理３９Ａ及び部分処理３９Ｂは、画像処理ＤＡＧ５０Ｂによる画像処理の実行開始時に実行可能となる。また、例えば、図５に示す部分処理３９Ｃは、依存関係が付与された前段の部分処理３９Ａ及び部分処理３９Ｂの双方の処理が終了した場合に実行可能となる。
【００４９】
また、付与部６２は、画像処理ＤＡＧ５０Ｂの各部分処理３９に優先度を付与する。なお、この優先度とは、部分処理３９を実行する際の優先度であり、同時に複数の部分処理３９が実行可能となった場合は、優先度が高いものから順番に実行されることを意味する。本実施の形態に係る付与部６２は、一例として図６に示すように、後段に連結された画像処理モジュール３８で実行される部分処理３９に対して、前段に連結された画像処理ＤＡＧ５０Ｂで実行される部分処理３９よりも高い優先度を付与する。
【００５０】
なお、図６における各部分処理３９の内部の文字列（「Ｔ１１」等）は、各部分処理３９を区別するための文字列であり、以下では、各部分処理３９を区別して説明する場合は、部分処理Ｔ１１のように末尾に内部の文字列を付与して説明する。また、図６における部分処理３９の左上端部の数字（「１０」等）は、各部分処理３９に付与された優先度を示している。本実施の形態では、この数字の値が大きいほど優先度が高いものとして説明する。なお、図６を例にして説明した部分処理３９の内部の文字列、及び優先度は、後述する図７〜図１０、図１２、及び図１３についても同様である。
【００５１】
また、本実施の形態に係る付与部６２は、依存関係のある各部分処理３９について、前段に連結された画像処理モジュール３８の部分処理３９の優先度に従った優先度を、後段に連結された画像処理モジュール３８の部分処理３９に付与する。例えば、図６に示すように、付与部６２が、最前段の画像処理モジュール３８の部分処理Ｔ１１、Ｔ１２、Ｔ１３に対し、部分処理Ｔ１１、Ｔ１２、Ｔ１３の順番で低くなる優先度を付与した場合について説明する。この場合、付与部６２は、中段の画像処理モジュール３８の部分処理Ｔ２１、Ｔ２２、Ｔ２３に対し、依存関係のある前段の部分処理Ｔ１１、Ｔ１２、Ｔ１３の優先度と同じ順番の優先度を付与する。
【００５２】
また、本実施の形態に係る付与部６２は、出力画像の正面視下に位置する分割画像を示す分割画像データを処理する部分処理３９よりも、出力画像の正面視上に位置する分割画像を示す分割画像データを処理する部分処理３９に高い優先度を付与する。この優先度の付与について、図７及び図８を参照して詳細に説明する。なお、以下では、単に画像の「上」、「下」、及び「上下」と記載した場合は、画像の「正面視上」、「正面視下」、及び「正面視上下」を意味するものとする。
【００５３】
例えば、図７に示すように、色変換処理等のように、入力画像の各画素と、対応する出力画像の各画素とが同じ位置となる画像処理の場合、付与部６２は、部分処理Ｔ１３よりも部分処理Ｔ１２、Ｔ１１に高い優先度を付与する。また、この場合、付与部６２は、部分処理Ｔ１２よりも部分処理Ｔ１１に高い優先度を付与する。
【００５４】
一方、例えば、図８に示すように、画像の上下を反転させる処理等のように、入力画像の各画素と、対応する出力画像の各画素との位置が上下方向で入れ替わる画像処理の場合、付与部６２は、部分処理Ｔ１１よりも部分処理Ｔ１２、Ｔ１３に高い優先度を付与する。また、この場合、付与部６２は、部分処理Ｔ１２よりも部分処理Ｔ１３に高い優先度を付与する。
【００５５】
また、本実施の形態に係る付与部６２は、画像処理ＤＡＧ５０Ｂにおいて並列に実行される画像処理モジュール３８が存在する場合、並列に実行される画像処理モジュール３８の部分処理３９に、処理の順番が交互となる優先度を付与する。
【００５６】
一例として図９に示すように、付与部６２は互いに依存関係が付与されていない部分処理Ｔ１１、Ｔ１２、Ｔ１３及び部分処理Ｔ４１、Ｔ４２、Ｔ４３に対して、部分処理Ｔ１１、Ｔ４１、Ｔ１２、Ｔ４２、Ｔ１３、Ｔ４３の順番に低くなる優先度を付与する。
【００５７】
本実施の形態に係るリスト記憶部６４は、後述する実行可能部分処理リスト６６の記憶領域を含む。
【００５８】
本実施の形態に係る登録部６８は、画像処理ＤＡＧ５０Ｂに従って、各部分処理３９間で付与された依存関係に基づいて実行可能となった部分処理３９を、付与された優先度に従って整列して実行可能部分処理リスト６６に登録する。一例として、図６に示した画像処理ＤＡＧ５０Ｂによる画像処理の実行開始直後の実行可能部分処理リスト６６を図１０に示す。
【００５９】
図６に示すように、画像処理ＤＡＧ５０Ｂによる画像処理の実行開始直後は、最前段の画像処理モジュール３８の部分処理Ｔ１１、Ｔ１２、Ｔ１３が実行可能となる。すなわち、図１０に示すように、登録部６８は、実行可能となった部分処理Ｔ１１、Ｔ１２、Ｔ１３を、優先度が高い順番である部分処理Ｔ１１、Ｔ１２、Ｔ１３の順番に整列して実行可能部分処理リスト６６に登録する。
【００６０】
本実施の形態に係る実行部７０は、登録部６８によって登録された実行可能部分処理リスト６６における優先度の高い順に部分処理３９を実行させる。この部分処理３９を実行させる際に、本実施の形態では、実行部７０は、一例として画像処理モジュール３８の演算部情報により示される演算部（第１演算部１２Ａ又は第２演算部１２Ｂ）に部分処理３９を実行させる。
【００６１】
本実施の形態に係る出力部７２は、画像処理ＤＡＧ５０Ｂの最終段の画像処理モジュール３８により実行された画像処理の結果得られた出力画像データを出力する。本実施の形態では、出力部７２は、得られた出力画像データを表示部１６に表示する。なお、出力部７２は、出力画像データを外部装置に出力（送信）してもよい。また、コンピュータ１０がプリンタに組み込まれている場合は、出力部７２は、出力画像データにより示される出力画像を紙等の記録材料に出力（形成）してもよい。
【００６２】
次に、図１１を参照して、本実施の形態に係るコンピュータ１０の作用を説明する。なお、図１１は、アプリケーション３２により画像処理の実行開始の指示が入力された場合に第１演算部１２Ａによって実行される画像処理プログラムの処理の流れを示すフローチャートである。また、この画像処理プログラムは記憶部２０に予めインストールされている。また、第１演算部１２Ａが画像処理プログラムを実行することにより、第１演算部１２Ａが前述した処理構築部４２、分割部６０、付与部６２、登録部６８、実行部７０、及び出力部７２として機能する。
【００６３】
図１１のステップ１００で、処理構築部４２は、アプリケーション３２からの構築指示に従い、アプリケーション３２が指示した画像処理を行う画像処理ＤＡＧ５０Ａを構築する。次のステップ１０２で、分割部６０は、前述したように、入力画像データを複数の分割画像データに分割する。そして、分割部６０は、ステップ１００で構築された画像処理ＤＡＧ５０Ａに対し、各画像処理モジュール３８で実行される画像処理を、分割画像データの各々に対応する部分処理３９に分割して画像処理ＤＡＧ５０Ｂを構築する。
【００６４】
次のステップ１０４で、付与部６２は、画像処理モジュール３８で実行される画像処理の種類に応じて、前段に連結された画像処理モジュール３８の部分処理３９と、後段に連結された画像処理モジュール３８の部分処理３９との間で依存関係を付与する。また、付与部６２は、前述したように、画像処理ＤＡＧ５０Ｂの各部分処理３９に優先度を付与する。次のステップ１０６で、登録部６８は、前述したように、ステップ１０４で付与された依存関係に基づいて実行可能となった部分処理３９を、付与された優先度に従って整列して実行可能部分処理リスト６６に登録する。
【００６５】
次のステップ１０８で、実行部７０は、実行可能部分処理リスト６６の先頭から、予め設定された、並列して実行される部分処理３９の数を表す並列度の部分処理３９を取得し、実行可能部分処理リスト６６から、取得した部分処理３９を削除する。次のステップ１１０で、実行部７０は、ステップ１０８で取得された部分処理３９を、取得された部分処理３９を含む画像処理モジュール３８の演算部情報により示される演算部に実行させる。
【００６６】
次のステップ１１２で、実行部７０は、ステップ１１０で実行されて終了した部分処理３９に画像処理ＤＡＧ５０Ｂの最終段の画像処理モジュール３８の部分処理３９が含まれるか否かを判定する。実行部７０は、この判定が否定判定となった場合はステップ１１６に移行する一方、肯定判定となった場合はステップ１１４に移行する。
【００６７】
ステップ１１４で、出力部７２は、画像処理ＤＡＧ５０Ｂの最終段の画像処理モジュール３８の部分処理３９により出力された出力画像データを表示部１６に出力した後、ステップ１１６に移行する。ステップ１１６で、実行部７０は、画像処理ＤＡＧ５０Ｂの全ての部分処理３９の実行が終了したか否かを判定する。実行部７０は、この判定が否定判定となった場合はステップ１１８に移行する。
【００６８】
ステップ１１８で、登録部６８は、画像処理ＤＡＧ５０Ｂの依存関係に基づいて、新たに実行可能となった部分処理３９を実行可能部分処理リスト６６に登録した後、ステップ１０８に戻る。この登録の際、登録部６８は、例えば二分挿入ソート等の整列手法を用いて、新たに実行可能となった部分処理３９の登録後も、実行可能部分処理リスト６６の部分処理３９が、優先度に従って整列された状態となる位置に部分処理３９を登録する。一方、実行部７０は、ステップ１１６の判定が肯定判定となった場合は本画像処理を終了する。
【００６９】
次に、図１２及び図１３を参照して、以上説明した画像処理プログラムによって、実行される部分処理３９、実行可能部分処理リスト６６、及び新たに実行可能となった部分処理３９の時系列の遷移について説明する。なお、図１２は図６に示した画像処理ＤＡＧ５０Ｂに従って、並列度が「１」で画像処理が行われた場合の時系列の遷移を示している。また、図１３は図９に示した画像処理ＤＡＧ５０Ｂに従って、並列度が「２」で画像処理が行われた場合の時系列の遷移を示している。また、説明を簡単にするために、図１３の並列に実行される部分処理３９（例えば時点Ｂで実行される部分処理Ｔ１１、Ｔ４１）は同時に実行が終了するものとして説明する。
【００７０】
図１２に示すように、図６に示した画像処理ＤＡＧ５０Ｂによる画像処理の実行開始直後の時点Ａで、次に示すように実行可能な部分処理３９が実行可能部分処理リスト６６に登録される。すなわち、時点Ａで、上記ステップ１０６の処理により、部分処理Ｔ１１、Ｔ１２、Ｔ１３が、優先度の高い順に、部分処理Ｔ１１、Ｔ１２、Ｔ１３の順番で整列されて実行可能部分処理リスト６６に登録される。
【００７１】
次の時点Ｂで、上記ステップ１０８の処理により、実行可能部分処理リスト６６の先頭から並列度の数（ここでは１つ）の部分処理Ｔ１１が取得され、かつ削除される。そして、上記ステップ１１０の処理により、取得された部分処理Ｔ１１が実行される。部分処理Ｔ１１の実行が終了した時点Ｃで、部分処理Ｔ２１が新たに実行可能となる。次の時点Ｄで、ステップ１１８の処理により、部分処理Ｔ２１が、付与された優先度に従って実行可能部分処理リスト６６の先頭に登録される。
【００７２】
次の時点Ｅで、上記ステップ１０８の処理により、実行可能部分処理リスト６６の先頭から並列度の数の部分処理Ｔ２１が取得され、かつ削除される。そして、上記ステップ１１０の処理により、取得された部分処理Ｔ２１が実行される。部分処理Ｔ２１の実行が終了した時点Ｆで、部分処理Ｔ３１が新たに実行可能となる。次の時点Ｇで、上記ステップ１１８の処理により、部分処理Ｔ３１が、付与された優先度に従って実行可能部分処理リスト６６の先頭に登録される。以降も同様の処理が繰り返されるため、ここでの説明は省略する。
【００７３】
一方、図１３に示すように、図９に示した画像処理ＤＡＧ５０Ｂによる画像処理の実行開始直後の時点Ａで、次に示すように実行可能な部分処理３９が実行可能部分処理リスト６６に登録される。すなわち、時点Ａで、上記ステップ１０６の処理により、部分処理Ｔ１１〜Ｔ１３、Ｔ４１〜Ｔ４３が、優先度の高い順に、部分処理Ｔ１１、Ｔ４１、Ｔ１２、Ｔ４２、Ｔ１３、Ｔ４３の順番で整列されて実行可能部分処理リスト６６に登録される。
【００７４】
次の時点Ｂで、上記ステップ１０８の処理により、実行可能部分処理リスト６６の先頭から並列度の数（ここでは２つ）の部分処理Ｔ１１、Ｔ４１が取得され、かつ削除される。そして、上記ステップ１１０の処理により、取得された部分処理Ｔ１１、Ｔ４１が実行される。部分処理Ｔ１１、Ｔ４１の実行が終了した時点Ｃで、部分処理Ｔ２１が新たに実行可能となる。次の時点Ｄで、上記ステップ１１８の処理により、部分処理Ｔ２１が、付与された優先度に従って実行可能部分処理リスト６６の先頭に登録される。
【００７５】
次の時点Ｅで、上記ステップ１０８の処理により、実行可能部分処理リスト６６の先頭から並列度の数の部分処理Ｔ２１、Ｔ１２が取得され、かつ削除される。そして、上記ステップ１１０の処理により、取得された部分処理Ｔ２１、Ｔ１２が実行される。部分処理Ｔ２１、Ｔ１２の実行が終了した時点Ｆで、部分処理Ｔ２２、Ｔ３１、Ｔ５１が新たに実行可能となる。次の時点Ｇで、上記ステップ１１８の処理により、部分処理Ｔ２２、Ｔ３１、Ｔ５１が、付与された優先度に従って、部分処理Ｔ３１、Ｔ５１、Ｔ２２の順番で、実行可能部分処理リスト６６の先頭に登録される。以降も同様の処理が繰り返されるため、ここでの説明は省略する。
【００７６】
以上説明したように、本実施の形態によれば、連結された画像処理モジュール３８間の部分処理３９に処理の依存関係を付与し、かつ各部分処理３９に優先度を付与する。また、依存関係に基づいて実行可能となった部分処理３９を、付与された優先度に従って整列して実行可能部分処理リスト６６に登録する。そして、実行可能部分処理リスト６６における優先度の高い順に部分処理３９を実行させる。
【００７７】
画像処理の実行時に、複数のオブジェクトがＤＡＧ形態で連結されたオブジェクト群を辿って実行可能な処理を選択する場合、辿る対象のオブジェクトがｎ個であれば、実行可能な処理を選択するための計算量はＯ（ｎ）となる。これに対し、本実施の形態では、実行可能となった部分処理３９を、付与された優先度に従って整列して実行可能部分処理リスト６６に登録しており、画像処理を実行する際は、実行可能部分処理リスト６６に登録された部分処理３９を先頭から取得して実行すればよいため、計算量はＯ（１）で済む。従って、本実施の形態によれば、実行可能な処理が複数存在する場合に、処理効率の低下を抑制しつつ実行可能な処理を選択することができる。なお、上記のＯ（ｎ）及びＯ（１）は、Ｏ記法によるものであり、計算量（オーダー）を表す。
【００７８】
また、本実施の形態によれば、後段に連結された画像処理モジュール３８で実行される部分処理３９に対して、前段に連結された画像処理モジュール３８で実行される部分処理３９よりも高い優先度を付与する。この結果、例えば部分処理Ｔ１１、Ｔ２１、Ｔ３１のように、同じ領域の分割画像データを処理する部分処理３９は、連続的に実行される可能性が高まる。この場合、部分処理３９間でアクセスする記憶領域の時間的な局所性が高まるため、画像処理が高速に実行される可能性が高まる。従って、本実施の形態によれば、実行可能な処理が複数存在する場合に、処理効率の低下をより抑制しつつ実行可能な処理を選択することができる。
【００７９】
また、本実施の形態によれば、依存関係のある各部分処理３９について、前段に連結された画像処理モジュール３８の部分処理３９の優先度に従った優先度を、後段に連結された画像処理モジュール３８の部分処理３９に付与する。この結果、例えば部分処理Ｔ１１、Ｔ２１、Ｔ３１のように、同じ領域の分割画像データを処理する部分処理３９は、連続的に実行される可能性が高まる。この場合、部分処理３９間でアクセスする記憶領域の時間的な局所性が高まるため、画像処理が高速に実行される可能性が高まる。従って、本実施の形態によれば、実行可能な処理が複数存在する場合に、処理効率の低下をより抑制しつつ実行可能な処理を選択することができる。
【００８０】
また、本実施の形態によれば、画像処理ＤＡＧ５０Ｂにおいて並列に実行される画像処理モジュール３８が存在する場合、並列に実行される画像処理モジュール３８間の部分処理３９に、処理の順番が交互となる優先度を付与する。この結果、例えば部分処理Ｔ１１、Ｔ２１、Ｔ３１のように、部分処理Ｔ１１、Ｔ１２、Ｔ１３を含む画像処理モジュール３８の全ての部分処理３９の終了を待たずに、分割画像データ単位で画像処理が終了する可能性が高まる。この場合、各画像処理モジュール３８の全ての部分処理３９の終了を待たずに、画像処理が終了した部分処理３９毎に分割画像データを記憶領域から削除することができる。従って、本実施の形態によれば、記憶領域の使用量を低減することができる。
【００８１】
また、本実施の形態によれば、出力画像の正面視下に位置する分割画像を示す分割画像データを処理する部分処理３９よりも、出力画像の正面視上に位置する分割画像を示す分割画像データを処理する部分処理３９に高い優先度を付与する。これにより、正面視上に位置する分割画像を示す分割画像データを処理する部分処理３９は、正面視下に位置する分割画像を示す分割画像データを処理する部分処理３９よりも早く終了する。
【００８２】
一般に、表示部への画像の表示及び紙等の記録材料への画像の形成は、ラスタースキャンにより行われることが多い。本実施の形態では、正面視上に位置する分割画像を示す分割画像データを処理する部分処理３９から早く終了するため、正面視上から順番に分割画像を出力することができる。従って、本実施の形態によれば、画像処理ＤＡＧ５０Ｂの最終段の画像処理モジュール３８の全ての部分処理３９の終了を待たずに、処理が終了した部分処理３９から順次出力画像データを出力することで、画像の出力も含めた画像処理の所要時間を短縮できる。
【００８３】
なお、上記実施の形態では、各部分処理３９に異なる優先度を付与した場合について説明したが、これに限定されない。一部の部分処理３９に同じ優先度を付与する形態としてもよい。この形態例の場合、同じ優先度が付与された部分処理３９は、例えば実行可能部分処理リスト６６に登録された順番で実行する形態が例示される。
【００８４】
また、部分処理３９に優先度を付与する手法は、上記実施の形態で示した例に限定されない。例えば、演算部情報に従って部分処理３９に優先度を付与する形態としてもよい。この形態例の場合、例えば第１演算部１２Ａよりも第２演算部１２Ｂの方が、画像処理の速度性能が高い場合は、次に示す形態が例示される。すなわち、この場合、第２演算部１２Ｂで実行される画像処理モジュール３８の部分処理３９の優先度を、第１演算部１２Ａで実行される画像処理モジュール３８の部分処理３９の優先度よりも高くする形態が例示される。
【００８５】
また、上記実施の形態では、画像処理モジュール３８による画像処理を演算部情報により示される演算部に実行させる場合について説明したが、これに限定されない。例えば、図９の上段の連結された３つの画像処理モジュール３８のように、同じ画像に対して画像処理を行う画像処理モジュール３８による画像処理は同じ演算部に実行させる形態としてもよい。
【００８６】
また、上記実施の形態では、各種プログラムが記憶部２０に予め記憶（インストール）されている態様を説明したが、これに限定されない。各種プログラムは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ（Digital Versatile Disk Read Only Memory）、ＵＳＢ（Universal Serial Bus）メモリ等の記録媒体に記録された形態で提供されてもよい。また、各種プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【００８７】
２０１６年３月２４日出願の日本国特許出願２０１６−０６０５２４号の開示は、その全体が参照により本明細書に取り込まれる。
本明細書に記載された全ての文献、特許出願、及び技術規格は、個々の文献、特許出願、及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
【符号の説明】
【００８８】
１０  コンピュータ
１２Ａ  第１演算部
１２Ｂ  第２演算部
１３  ローカルメモリ
１４  メモリ
１６  表示部
１８  操作部
２０  記憶部
２２  画像データ供給部
２４  画像出力部
２６  バス
３０  オペレーティングシステム
３２  アプリケーションプログラム群
３４  画像処理プログラム群
３６  モジュールライブラリ
３８  画像処理モジュール
３９、３９Ａ〜３９Ｃ  部分処理
４０  バッファモジュール
４２  処理構築部
４６  処理制御部
５０Ａ、５０Ｂ  画像処理ＤＡＧ
６０  分割部
６２  付与部
６４  リスト記憶部
６６  実行可能部分処理リスト
６８  登録部
７０  実行部
７２  出力部
Ｂ１〜Ｂ３  分割画像
Ｇ  画像
【図１】
0006592184.tif 000002
【図２Ａ】
0006592184.tif 000003
【図２Ｂ】
0006592184.tif 000004
【図３】
0006592184.tif 000005
【図４Ａ】
0006592184.tif 000006
【図４Ｂ】
0006592184.tif 000007
【図５】
0006592184.tif 000008
【図６】
0006592184.tif 000009
【図７】
0006592184.tif 000010
【図８】
0006592184.tif 000011
【図９】
0006592184.tif 000012
【図１０】
0006592184.tif 000013
【図１１】
0006592184.tif 000014
【図１２】
0006592184.tif 000015
【図１３】
0006592184.tif 000016