(57)【特許請求の範囲】
【請求項１】
オブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群の各オブジェクトにより画像処理を実行する画像処理装置であって、
前記オブジェクト群の各オブジェクトが入力画像データに対して実行する画像処理を、前記入力画像データにより示される入力画像が複数の部分領域に分割された分割画像を示す各分割画像データに対する部分処理に更新する更新処理、及び、連結された前記オブジェクトの前記部分処理間に処理の依存関係を付与する付与処理を行う処理部と、
前記処理部による前記更新処理及び前記付与処理と、前記依存関係に基づいて実行可能となった前記部分処理と、を複数の演算装置に並列に実行させる制御を行う制御部と、
を備えた画像処理装置。
【請求項２】
前記制御部は、前記オブジェクト群について前記更新処理及び前記付与処理を前記オブジェクト毎に順次実行するタスクを、格納されたタスクを前記複数の演算装置の各々が順次取り出して実行するためのタスクキューに格納し、かつ前記依存関係に基づいて実行可能となった前記部分処理を順次前記タスクキューに格納することで、前記並列に実行させる制御を行う
請求項１記載の画像処理装置。
【請求項３】
複数の入力画像データに対して連続的に画像処理を行う場合、
前記処理部は、先に入力された入力画像データに対して画像処理を行う部分処理に対し、後に入力された入力画像データに対して画像処理を行う部分処理よりも高い優先度を付与する優先度付与処理をさらに行い、
前記制御部は、前記依存関係に基づいて複数の前記部分処理が実行可能となった場合、
前記優先度の高い順に前記部分処理を実行させる制御をさらに行う
請求項１又は請求項２記載の画像処理装置。
【請求項４】
前記依存関係は、連結された前記オブジェクト間において、前段に連結された前記オブジェクトの部分処理が終了した場合に、後段に連結された前記オブジェクトの部分処理が実行可能となる関係である
請求項１から請求項３の何れか１項記載の画像処理装置。
【請求項５】
オブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群の各オブジェクトにより画像処理を実行する画像処理装置による画像処理方法であって、
前記オブジェクト群の各オブジェクトが入力画像データに対して実行する画像処理を、前記入力画像データにより示される入力画像が複数の部分領域に分割された分割画像を示す各分割画像データに対する部分処理に更新する更新処理、及び、連結された前記オブジェクトの前記部分処理間に処理の依存関係を付与する付与処理と、前記依存関係に基づいて実行可能となった前記部分処理と、を複数の演算装置に並列に実行させる制御を行う
画像処理方法。
【請求項６】
コンピュータを、請求項１から請求項４の何れか１項記載の画像処理装置の処理部及び制御部として機能させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、及び画像処理プログラムに関する。
【背景技術】
【０００２】
特許文献１には、プログラムモジュールの組合せを表したグラフ構造を、分割した入力データ毎にノードを分割したグラフ構造に変換し、変換したグラフ構造の先行ノードの処理が終わったノードを並列に処理する情報処理装置が開示されている。【０００３】
また、非特許文献１及び非特許文献２には、ＤＡＧ（Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ：有向非循環（非巡回）グラフ）で表された画像処理の実行順序に従って、並列に画像処理を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】日本国特許第４９６５９９５号公報
【非特許文献】
【０００５】
【非特許文献１】遅延モード画像処理フレームワーク、［ｏｎｌｉｎｅ］、［平成２８年３月１１日検索］、インターネット＜ＵＲＬ：  ｈｔｔｐ：／／ｗｗｗ．ｉｓｕｓ．ｊｐ／ａｒｔｉｃｌｅ／ｌｉｂｒａｒｙ−ｓｐｅｃｉａｌ／ｄｅｆｅｒｒｅｄ−ｍｏｄｅ−ｉｍａｇｅ−ｐｒｏｃｅｓｓｉｎｇ−ｆｒａｍｅｗｏｒｋ／＞
【非特許文献２】Ｔｈｅ  ＯｐｅｎＶＸ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ、［ｏｎｌｉｎｅ］、［平成２８年３月１１日検索］、インターネット＜ＵＲＬ：  ｈｔｔｐｓ：／／ｗｗｗ．ｋｈｒｏｎｏｓ．ｏｒｇ／ｒｅｇｉｓｔｒｙ／ｖｘ／ｓｐｅｃｓ／１．０．１／ＯｐｅｎＶＸ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎ＿１＿０＿１．ｐｄｆ＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
画像処理を実行するオブジェクトがＤＡＧ形態で連結されたオブジェクト群の各オブジェクトを、複数の部分処理に更新する処理を全てのオブジェクトに対して行ってから、各部分処理を実行する場合、上記オブジェクト群による画像処理に時間がかかってしまう場合があった。【０００７】
本発明の少なくとも実施形態の目的は、画像処理を実行するオブジェクトがＤＡＧ形態で連結されたオブジェクト群の各オブジェクトを複数の部分処理に更新する処理を全てのオブジェクトに対して行ってから各部分処理を実行する場合に比較して、画像処理の処理速度を向上させることができる画像処理装置、画像処理方法、及び画像処理プログラムを提供することである。
【課題を解決するための手段】
【０００８】
［１］本発明のある観点によれば、オブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群の各オブジェクトにより画像処理を実行する画像処理装置が提供される。前記画像処理装置は、前記オブジェクト群の各オブジェクトが入力画像データに対して実行する画像処理を、前記入力画像データにより示される入力画像が複数の部分領域に分割された分割画像を示す各分割画像データに対する部分処理に更新する更新処理、及び、連結された前記オブジェクトの前記部分処理間に処理の依存関係を付与する付与処理を行う処理部と、前記処理部による前記更新処理及び前記付与処理と、前記依存関係に基づいて実行可能となった前記部分処理と、を複数の演算装置に並列に実行させる制御を行う制御部と、を備える。
【０００９】
［２］  ［１］に記載の画像処理装置において、前記制御部が、前記オブジェクト群について前記更新処理及び前記付与処理を前記オブジェクト毎に順次実行するタスクを、格納されたタスクを前記複数の演算装置の各々が順次取り出して実行するためのタスクキューに格納し、かつ前記依存関係に基づいて実行可能となった前記部分処理を順次前記タスクキューに格納することで、前記並列に実行させる制御を行うことが好ましい。【００１０】
［３］  ［１］又は［２］に記載の画像処理装置において、複数の入力画像データに対して連続的に画像処理を行う場合、前記処理部が、先に入力された入力画像データに対して画像処理を行う部分処理に対し、後に入力された入力画像データに対して画像処理を行う部分処理よりも高い優先度を付与する優先度付与処理をさらに行い、前記制御部が、前記依存関係に基づいて複数の前記部分処理が実行可能となった場合、前記優先度の高い順に前記部分処理を実行させる制御をさらに行うことが好ましい。【００１１】
［４］  ［１］から［３］の何れかに記載の画像処理装置において、前記依存関係が、連結された前記オブジェクト間において、前段に連結された前記オブジェクトの部分処理が終了した場合に、後段に連結された前記オブジェクトの部分処理が実行可能となる関係であることが好ましい。【００１２】
［５］  本発明の他の観点によればオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群の各オブジェクトにより画像処理を実行する画像処理装置による画像処理方法が提供される。前記画像処理方法では、前記オブジェクト群の各オブジェクトが入力画像データに対して実行する画像処理を、前記入力画像データにより示される入力画像が複数の部分領域に分割された分割画像を示す各分割画像データに対する部分処理に更新する更新処理、及び、連結された前記オブジェクトの前記部分処理間に処理の依存関係を付与する付与処理と、前記依存関係に基づいて実行可能となった前記部分処理と、を複数の演算装置に並列に実行させる制御を行う。
【００１３】
［６］  本発明の他の観点によれば、コンピュータを、［１］から［４］の何れか記載の画像処理装置の処理部及び制御部として機能させる画像処理プログラムが提供される。
【発明の効果】
【００１４】
［１］の装置、［５］の方法、及び［６］のプログラムによれば、画像処理を実行するオブジェクトがＤＡＧ形態で連結されたオブジェクト群の各オブジェクトを複数の部分処理に更新する処理を全てのオブジェクトに対して行ってから各部分処理を実行する場合に比較して、画像処理の処理速度を向上させることができる。【００１５】
［２］の装置によれば、タスクキューを用いることで、簡易に画像処理の処理速度を向上させることができる。【００１６】
［３］の装置によれば、複数の入力画像データに対して連続的に画像処理を行う場合に、先に入力された入力画像データに対する画像処理が終了するよりも前に、後に入力された入力画像データに対する画像処理が終了することを防止することができる。【００１７】
［４］の装置によれば、依存関係に基づいて、部分処理が実行可能となったか否かを確実に判定することができる。
【図面の簡単な説明】
【００１８】
【図１】実施の形態に係る画像処理装置として機能するコンピュータの構成の一例を示すブロック図である。
【図２Ａ】画像処理ＤＡＧの一例を示す概略図である。
【図２Ｂ】画像処理ＤＡＧに入出力用のメモリを加えた場合の一例を示す概略図である。
【図３】実施の形態に係る処理制御部の機能的な構成の一例を示すブロック図である。
【図４】入力画像の分割処理の一例の説明に供する概略図である。
【図５】画像処理モジュールが部分処理に分割された画像処理ＤＡＧの一例を示す概略図である。
【図６】実施の形態に係るＤＡＧ構築処理プログラムの処理の流れを示すフローチャートである。
【図７】実施の形態に係るＤＡＧ更新処理の説明に供する概略図である。
【図８】実施の形態に係るＤＡＧ更新処理プログラムの処理の流れを示すフローチャートである。
【図９】最前段の画像処理モジュールにおける部分処理の実行の説明に供する概略図である。
【図１０】実施の形態に係る部分処理実行処理プログラムの処理の流れを示すフローチャートである。
【図１１】新たに実行可能となった部分処理の実行の説明に供する概略図である。
【図１２】１つの画像データに対して画像処理ＤＡＧを更新するタスク及び部分処理を、直列に実行した場合と並列に実行した場合との実行時間の一例を示す概略図である。
【図１３】複数の画像データに対して画像処理ＤＡＧを更新するタスク及び部分処理を、直列に実行した場合と並列に実行した場合との実行時間の一例を示す概略図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照して、本発明を実施するための形態例を詳細に説明する。
【００２０】
まず、図１を参照して、画像処理装置として機能するコンピュータ１０の構成を説明する。なお、コンピュータ１０は、複写機、プリンタ、ファクシミリ装置、これらの装置の機能を兼ね備えた複合機、及びスキャナ等の内部で画像処理を行う画像取扱機器に組み込まれたコンピュータであってもよい。また、コンピュータ１０は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の独立したコンピュータであってもよく、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）及び携帯電話機等の携帯機器に組み込まれたコンピュータであってもよい。
【００２１】
図１に示すように、本実施の形態に係るコンピュータ１０は、演算部１２、メモリ１４、表示部１６、操作部１８、記憶部２０、画像データ供給部２２、及び画像出力部２４を備えている。また、演算部１２、メモリ１４、表示部１６、操作部１８、記憶部２０、画像データ供給部２２、及び画像出力部２４の各部は、バス２６を介して互いに接続されている。
【００２２】
本実施の形態に係る演算部１２は、コンピュータ１０のメイン・プロセッサであり、一例として複数のプロセッサ・コア１３（以下、「コア１３」という。）を有するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。なお、各コア１３が、画像処理を実行する演算装置の一例である。また、以下では、各コア１３を区別して説明する場合は、コア１３Ａ、コア１３Ｂのように、符号の末尾にアルファベットを付して説明する。
【００２３】
このように、本実施形態では、演算部１２が１つである場合について説明するが、これに限定されない。演算部１２が複数個あってもよいし、演算部１２が複数ある場合は、複数の演算部１２が同じ種類のＣＰＵでもよいし、異なる種類のＣＰＵでもよい。また、演算部１２が複数ある場合は、複数の演算部１２に、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を含んでもよいし、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等の演算器を含んでもよい。
【００２４】
メモリ１４は、演算部１２が一時的にデータを記憶する不揮発性の記憶手段である。
【００２５】
コンピュータ１０が前述した画像取扱機器に組み込まれている場合、表示部１６及び操作部１８は、例えば画像取扱機器に設けられたＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）等の表示パネル及びテンキー等が適用される。また、コンピュータ１０が独立したコンピュータである場合、表示部１６及び操作部１８は、例えばコンピュータ１０に接続されたディスプレイ、及びキーボード、マウス等が適用される。また、表示部１６及び操作部１８は、タッチパネル及びディスプレイが一体化して構成されたタッチパネルディスプレイ等でもよい。また、記憶部２０は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、及びフラッシュメモリ等の不揮発性の記憶媒体が適用される。
【００２６】
画像データ供給部２２は、処理対象の画像データを供給するものであればよく、例えば紙又は写真フィルム等の記録材料に記録されている画像を読み取って画像データを出力する画像読取部が適用される。また、画像データ供給部２２は、例えば通信回線を介して外部装置から画像データを受信する受信部、及び画像データを記憶する画像記憶部（メモリ１４又は記憶部２０）等が適用される。
【００２７】
画像出力部２４は、画像処理を経た画像データ又は画像処理を経た画像データが表す画像を出力するものであればよく、例えば画像データが表す画像を紙又は感光材料等の記録材料に記録する画像記録部が適用される。また、画像出力部２４は、画像データが表す画像をディスプレイ等に表示する表示部（表示部１６）、画像データをＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等の記録媒体に書き込む書込装置が適用される。また、画像出力部２４は、画像処理を経た画像データを、通信回線を介して外部装置に送信する送信部が適用される。また、画像出力部２４は、画像処理を経た画像データを記憶する画像記憶部（メモリ１４又は記憶部２０）であってもよい。
【００２８】
図１に示すように、記憶部２０には、演算部１２によって実行される各種プログラムが記憶されている。記憶部２０には、各種プログラムとして、リソースの管理、プログラムの実行の管理、及びコンピュータ１０と外部装置との通信等を司るオペレーティングシステム３０のプログラムが記憶されている。また、記憶部２０には、各種プログラムとして、コンピュータ１０を画像処理装置として機能させるための画像処理プログラム群３４が記憶されている。また、記憶部２０には、各種プログラムとして、上記画像処理装置に対して所望の画像処理を行わせる各種のアプリケーションプログラム群３２（以下、「アプリケーション３２」という。）が記憶されている。
【００２９】
画像処理プログラム群３４は、前述した画像取扱機器、携帯機器、及びＰＣ等で実行される画像処理プログラムを開発する際の負荷を軽減することを目的として開発されたプログラムである。また、画像処理プログラム群３４は、前述した画像取扱機器、携帯機器、及びＰＣ等の各種機器（プラットフォーム）で共通に実行可能に開発されたプログラムである。
【００３０】
画像処理プログラム群３４によって実現される画像処理装置は、アプリケーション３２からの構築指示に従い、アプリケーション３２が指示した画像処理を行う画像処理ＤＡＧ５０Ａ（詳細は後述）を構築する。そして、上記画像処理装置は、アプリケーション３２からの実行指示に従い画像処理ＤＡＧ５０Ａの処理を実行する。このように、画像処理プログラム群３４は、所望の画像処理を行う画像処理ＤＡＧ５０Ａの構築を指示したり、構築された画像処理ＤＡＧ５０Ａによる画像処理の実行を指示したりするためのインタフェースをアプリケーション３２に提供している。
【００３１】
以上の構成により、内部で画像処理を行う必要のある任意の機器を新規に開発する場合等にも、上記画像処理を行うプログラムの開発に関しては、上記任意の機器で必要とされる画像処理を、上記インタフェースを利用して画像処理プログラム群３４に行わせるアプリケーション３２を開発すればよい。したがって、開発者は、実際に画像処理を行うプログラムを新たに開発する必要が無くなり、開発者の負荷が軽減される。
【００３２】
次に、本実施形態に係る画像処理プログラム群３４について詳細に説明する。図１に示すように、画像処理プログラム群３４は、モジュールライブラリ３６、処理構築部４２のプログラム、及び処理制御部４６のプログラムを含む。
【００３３】
モジュールライブラリ３６には、予め定められた互いに異なる画像処理を行う複数種類の画像処理モジュール３８のプログラムが各々登録されている。この画像処理としては、例えば、入力処理、フィルタ処理、色変換処理、拡大・縮小処理（図１では「拡縮処理」と表記）、スキュー角検知処理、画像回転処理、画像合成処理、及び出力処理等が挙げられる。
【００３４】
また、モジュールライブラリ３６には、画像処理の種類が同一で、かつ実行する画像処理の内容が異なる画像処理モジュール３８も登録されている。図１では、この種の画像処理モジュールを「モジュール１」、「モジュール２」と、末尾に数字を付して区別している。例えば、拡大・縮小処理を行う画像処理モジュール３８としては、入力された画像データを、水平方向及び垂直方向の各方向ともに１画素おきに間引くことで画像の縦横のサイズを５０％に縮小する縮小処理を行う画像処理モジュール３８が用意されている。さらに、例えば、拡大・縮小処理を行う画像処理モジュール３８としては、入力された画像データに対して指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール３８等が用意されている。
【００３５】
また、例えば、色変換処理を行う画像処理モジュール３８としては、ＲＧＢ（Ｒｅｄ  Ｇｒｅｅｎ  Ｂｌｕｅ）色空間の画像をＣＭＹＫ（Ｃｙａｎ  Ｍａｇｅｎｔａ  Ｙｅｌｌｏｗ  Ｋｅｙ−Ｐｌａｔｅ（黒））色空間の画像へ変換する画像処理モジュール３８、及びＣＭＹＫ色空間の画像をＲＧＢ色空間の画像へ変換する画像処理モジュール３８が用意されている。さらに、例えば、色変換処理を行う画像処理モジュール３８としては、ＲＧＢ色空間の画像をＹＣｂＣｒ色空間の画像へ変換する画像処理モジュール３８、及びＹＣｂＣｒ色空間の画像をＲＧＢ色空間の画像へ変換する画像処理モジュール３８等が用意されている。
【００３６】
また、モジュールライブラリ３６には、画像データを記憶するための記憶領域（バッファ）を備えたバッファモジュール４０も登録されている。
【００３７】
本実施形態に係る処理構築部４２は、アプリケーション３２からの指示により、ＤＡＧ形態の画像処理ＤＡＧ５０Ａを構築する。画像処理ＤＡＧ５０Ａは、一例として図２Ａに示すように、１つ以上の画像処理モジュール３８が、個々の画像処理モジュール３８の前段及び後段の少なくとも一方に配置されたバッファモジュール４０を介して連結される。
【００３８】
なお、個々の画像処理モジュール３８は、入力画像データに対して画像処理を実行するオブジェクトの一例である。また、画像処理ＤＡＧ５０Ａは、画像処理モジュール３８が複数連結されたオブジェクト群の一例である。また、図２Ａに示す例は、バッファモジュール４０を介して前段に画像処理モジュール３８が連結された画像処理モジュール３８について、前段の画像処理モジュール３８による画像処理が終了した場合に、自身の画像処理の実行が可能となることを示している。また、図２Ａに示す例は、バッファモジュール４０を介して前段に複数の画像処理モジュール３８が連結された画像処理モジュール３８について、前段の複数の画像処理モジュール３８の全ての画像処理が終了した場合に、自身の画像処理の実行が可能となることを示している。
【００３９】
また、図２Ａは、各モジュールのみが処理の順に接続されたＤＡＧを示しているが、このＤＡＧが実行される際には、図２Ｂに示すようにメモリ１４に記憶された画像データが入力されてＤＡＧに従って画像処理が行われる。そして、最終的にメモリ１４に処理済みの画像データ等の処理結果が記憶される。
【００４０】
次に、図３を参照して、本実施形態に係る処理制御部４６の機能的な構成を説明する。図３に示すように、処理制御部４６は、処理部６０、制御部６２、タスクキュー６４、及び出力部６６を備えている。
【００４１】
本実施形態に係る処理部６０は、入力画像データの処理対象とする部分により示される画像を複数の部分領域（以下、「分割画像」という。）に分割する。一例として図４に示すように、処理部６０は、入力画像データの処理対象とする部分により示される画像Ｇを、複数（図４に示す例では３つ）の分割画像Ｂ１〜Ｂ３に分割する。なお、以下では分割画像を示す画像データを「分割画像データ」という。また、入力画像データの処理対象とする部分は、色変換処理のように入力画像全体を処理対象とする画像処理では、入力画像データ全体が処理対象とする部分を意味する。また、入力画像データの処理対象とする部分は、切り抜き（トリミング）処理のように入力画像の一部を処理対象とする画像処理では、入力画像の一部を意味する。以下では、錯綜を回避するために、入力画像データの処理対象とする部分を、単に「入力画像データ」という。
【００４２】
また、図４に示した例では、処理部６０が画像Ｇを正面視上下に分割しているが、これに限定されない。例えば処理部６０は画像Ｇを正面視左右に分割してもよいし、正面視上下左右に分割してもよい。
【００４３】
なお、処理部６０による入力画像データの分割数は特に限定されない。例えば、処理部６０は、予め定められた数又はサイズで入力画像データを分割してもよい。また、例えば、処理部６０は、画像処理モジュール３８による画像処理を実行する演算部が有するプロセッサ・コア数以下で、かつ２以上の数に入力画像データを分割してもよい。
【００４４】
また、例えば、処理部６０は、画像処理モジュール３８による画像処理を実行する演算部が有するキャッシュメモリの容量以下のサイズで入力画像データを分割してもよい。この場合、例えば、処理部６０は、画像処理モジュール３８による画像処理を実行する演算部のプロセッサから最も遠いレベルのキャッシュメモリ、所謂ＬＬＣ（Ｌａｓｔ  Ｌｅｖｅｌ  Ｃａｃｈｅ）の容量以下で、かつＬＬＣの容量に極力一致するサイズで入力画像データを分割する形態が例示される。
【００４５】
また、一例として図５に示すように、処理部６０は、画像処理ＤＡＧ５０Ａの各画像処理モジュール３８で実行される画像処理を分割画像データの各々に対応する部分処理３９に分割して、画像処理ＤＡＧ５０Ａを画像処理ＤＡＧ５０Ｂに更新する。なお、図５は、図２Ａに示した画像処理ＤＡＧ５０Ａにおいて、入力画像データを４つの分割画像データに分割した場合の画像処理ＤＡＧ５０Ｂを示している。図５では、錯綜を回避するために、バッファモジュール４０の図示を省略している。
【００４６】
本実施形態に係る処理部６０は、画像処理モジュール３８で実行される画像処理の種類に応じて、前段に連結された画像処理モジュール３８の部分処理３９と、後段に連結された画像処理モジュール３８の部分処理３９との間で依存関係を付与する。なお、図５では、この依存関係を破線の矢印で示している。
【００４７】
例えば、色変換処理のように、処理対象とする画素のみに対して画像処理を行う処理は、各部分処理３９も１対１の依存関係となる。一方、例えば、フィルタ処理のように、処理対象とする画素の周辺画素も必要な画像処理では、周辺画素に対して画像処理を行う前段の部分処理３９にも依存関係を付与することとなる。すなわち、この依存関係は、連結された画像処理モジュール３８間において、前段に連結された画像処理モジュール３８の部分処理３９が終了した場合に、後段に連結された画像処理モジュール３８の部分処理３９が実行可能となる関係である。したがって、各部分処理３９は、前段に依存関係が付与された部分処理３９が存在しない場合か、又は依存関係が付与された前段の全ての部分処理３９が終了した場合に実行可能となる。
【００４８】
具体的には、例えば、図５に示す部分処理３９Ａ及び部分処理３９Ｂは、画像処理の実行開始時に実行可能となる。また、例えば、図５に示す部分処理３９Ｃは、依存関係が付与された前段の部分処理３９Ａ及び部分処理３９Ｂの双方の処理が終了した場合に実行可能となる。
【００４９】
本実施形態に係る制御部６２は、処理部６０による画像処理ＤＡＧ５０Ａの更新処理及び依存関係の付与処理と、依存関係に基づいて実行可能となった部分処理３９と、を複数のコア１３に並列に実行させる制御を行う。なお、ここでいう並列は、上記更新処理及び上記付与処理と、依存関係に基づいて実行可能となった部分処理３９と、の少なくとも一部の処理が、複数のコア１３により並列に（同時に）実行されることを意味する。具体的には、制御部６２は、画像処理ＤＡＧ５０Ａの更新処理及び依存関係の付与処理を画像処理モジュール３８毎に実行するタスク（処理）を、格納されたタスクを複数のコア１３の各々が順次取り出して実行するためのタスクキュー６４に格納する。さらに、制御部６２は、処理部６０による上記更新処理及び付与処理の処理中に、依存関係に基づいて実行可能となった部分処理３９を順次タスクキュー６４に格納する。
【００５０】
本実施形態に係る出力部６６は、制御部６２による制御により、画像処理ＤＡＧ５０Ｂの最終段の画像処理モジュール３８により実行された画像処理の結果得られた出力画像データを出力する。本実施形態では、出力部６６は、得られた出力画像データにより示される出力画像を表示部１６に表示する。なお、出力部６６は、出力画像データを外部装置に出力（送信）してもよい。また、コンピュータ１０がプリンタに組み込まれている場合は、出力部６６は、出力画像データにより示される出力画像を紙等の記録材料に出力（形成）してもよい。
【００５１】
次に、図６〜図１１を参照して、本実施形態に係るコンピュータ１０の作用を説明する。なお、図６は、アプリケーション３２により画像処理の実行開始の指示が入力された場合に演算部１２によって実行されるＤＡＧ構築処理プログラムの処理の流れを示すフローチャートである。また、このＤＡＧ構築処理プログラムは記憶部２０に予めインストールされている。また、演算部１２における何らかのタスクを実行してなく、タスクを実行可能なコア１３がＤＡＧ構築処理プログラムを実行することで、前述した処理構築部４２及び制御部６２として機能する。
【００５２】
図６のステップ１００で、処理構築部４２は、アプリケーション３２からの構築指示に従い、アプリケーション３２が指示した画像処理を行う画像処理ＤＡＧ５０Ａを構築する。次のステップ１０２で、制御部６２は、ステップ１００で構築された画像処理ＤＡＧ５０Ａの更新処理及び依存関係の付与処理を画像処理モジュール３８毎に実行するタスクをタスクキュー６４に格納した後、本ＤＡＧ構築処理を終了する。
【００５３】
一例として図７に示すように、上記ステップ１０２の処理により、画像処理ＤＡＧ５０Ａの更新処理及び依存関係の付与処理を画像処理モジュール３８毎に実行するタスクＴがタスクキュー６４に格納される。そして、タスクを実行可能なコア１３（図７に示す例ではコア１３Ｃ）がタスクキュー６４からタスクＴを取り出して実行することで、図８に示すＤＡＧ更新処理が実行される。
【００５４】
なお、図８は、ＤＡＧ更新処理プログラムの処理の流れを示すフローチャートであり、このＤＡＧ更新処理プログラムも記憶部２０に予めインストールされている。また、タスクを実行可能なコア１３がＤＡＧ更新処理プログラムを実行することで、前述した処理部６０及び制御部６２として機能する。
【００５５】
図８のステップ１１０で、処理部６０は、画像処理ＤＡＧ５０Ａに含まれる全ての画像処理モジュール３８を、トポロジカルソート等の既知のソート手法でソートする。なお、以下のステップ１１２〜ステップ１１８の繰り返し処理は、本ステップ１１０でソートされた全ての画像処理モジュール３８の先頭から順に１つずつの画像処理モジュール３８を処理対象（以下、「処理対象モジュール３８」という。）として実行されるものとして説明する。
【００５６】
ステップ１１２で、処理部６０は、前述したように、入力画像データを複数の分割画像データに分割する。そして、処理部６０は、前述したように、処理対象モジュール３８で実行される画像処理を分割画像データの各々に対応する部分処理３９に更新する。次のステップ１１４で、処理部６０は、処理対象モジュール３８の前段に画像処理モジュール３８が連結されているか否かを判定する。処理部６０は、この判定が肯定判定となった場合はステップ１１８に移行する一方、否定判定となった場合はステップ１１６に移行する。
【００５７】
ステップ１１６で、制御部６２は、ステップ１１２で分割された処理対象モジュール３８の部分処理３９を順次タスクキュー６４に格納する。一方、ステップ１１８で、処理部６０は、前述したように、処理対象モジュール３８で実行される画像処理の種類に応じて、前段に連結された画像処理モジュール３８の部分処理３９と、処理対象モジュール３８の部分処理３９との間で依存関係を付与する。
【００５８】
ステップ１２０で、処理部６０は、上記ステップ１１２〜１１８の処理を画像処理ＤＡＧ５０Ａの全ての画像処理モジュール３８に対して実行したか否かを判定する。処理部６０は、この判定が否定判定となった場合はステップ１１２に戻る一方、肯定判定となった場合は本ＤＡＧ更新処理を終了する。
【００５９】
一例として図９に示すように、上記ステップ１１６の処理により、最前段の画像処理モジュール３８の部分処理３９が順次タスクキュー６４に格納される。そして、タスクを実行可能なコア１３（図９に示す例ではコア１３Ａ、１３Ｂ）がタスクキュー６４から部分処理３９を取り出して実行する。一方、最前段以外の画像処理モジュール３８については、引き続き上記ステップ１１２及びステップ１１６の処理が実行される。すなわち、図９に示すように、タスクＴと部分処理３９とが複数のコア１３により並列に実行される。
【００６０】
一方、図１０は、アプリケーション３２により画像処理の実行開始の指示が入力された場合に演算部１２によって実行される部分処理実行処理プログラムの処理の流れを示すフローチャートである。また、この部分処理実行処理プログラムも記憶部２０に予めインストールされている。また、タスクを実行可能なコア１３が部分処理実行処理プログラムを実行することで、前述した制御部６２として機能する。
【００６１】
図１０のステップ１３０で、制御部６２は、タスクキュー６４に部分処理３９が格納されているか否かを判定する。制御部６２は、この判定が否定判定となった場合は本ステップ１３０の処理を繰り返し実行する一方、肯定判定となった場合はステップ１３２に移行する。
【００６２】
ステップ１３２で、制御部６２は、タスクキュー６４の先頭から１つの部分処理３９を取り出して、取り出した部分処理３９を実行する。次のステップ１３４で、制御部６２は、ステップ１３２の処理により部分処理３９の実行が終了したことに従って依存関係を更新し、依存関係に基づいて新たに実行可能となった部分処理３９を順次タスクキュー６４に格納する。
【００６３】
次のステップ１３６で、制御部６２は、画像処理ＤＡＧ５０Ｂの全ての画像処理モジュール３８の全ての部分処理３９が終了したか否かを判定する。制御部６２は、この判定が否定判定となった場合はステップ１３０に戻る一方、肯定判定となった場合は本部分処理実行処理を終了する。また、全ての画像処理モジュール３８の全ての部分処理３９が終了すると、出力部６６は、画像処理ＤＡＧ５０Ｂの最終段の画像処理モジュール３８の部分処理３９により出力された出力画像データにより示される出力画像を表示部１６に出力する。
【００６４】
一例として図１１に示すように、タスクキュー６４に格納された部分処理３９がコア１３（図１１に示す例ではコア１３Ａ、１３Ｂ）で実行される。そして、部分処理３９の実行が終了すると、画像処理ＤＡＧ５０Ａの依存関係が更新され、かつ依存関係に基づいて新たに実行可能となった部分処理３９がタスクキュー６４に格納される。なお、図１１では、実行が終了した部分処理３９を網掛けの丸印で図示し、依存関係に基づいて新たに実行可能となった部分処理３９を黒塗りの丸印で図示している。
【００６５】
以上説明したように、本実施形態によれば、タスクＴと部分処理３９とを並列に実行している。したがって、一例として図１２に示すように、タスクＴと部分処理３９とを直列に実行する場合に比較して、画像処理の処理速度が向上される。なお、図１２の上段はタスクＴと部分処理３９とを直列に実行した場合を示し、図１２の下段は本実施形態のようにタスクＴと部分処理３９とを並列に実行した場合を示している。
【００６６】
また、一例として図１３に示すように、複数の入力画像データに対して連続して画像処理を実行する場合は、先に入力された入力画像データに対する部分処理３９が全て終わっていなくても、後に入力された入力画像データに対するタスクＴ及び部分処理３９の実行が開始される。したがって、この場合、タスクＴと部分処理３９とを直列に実行する場合に比較して、画像処理の処理速度がより向上される。なお、図１３の上段はタスクＴと部分処理３９とを直列に実行した場合を示し、図１３の下段は本実施形態のようにタスクＴと部分処理３９とを並列に実行した場合を示している。
【００６７】
ここで、複数の入力画像データに対して連続して画像処理を実行する場合、例えば、先に入力された入力画像データに対して画像処理を行う部分処理３９に対して、後に入力された入力画像データに対して画像処理を行う部分処理３９よりも高い優先度を付与する形態としてもよい。そして、この場合、複数の部分処理３９が実行可能となった場合は、優先度が高い順番で部分処理３９をタスクキュー６４に格納すればよい。これにより、先に入力された画像データに対する画像処理が終了するよりも前に、後に入力された画像データに対する画像処理が終了することが防止される。
【００６８】
また、上記実施形態では、各種プログラムが記憶部２０に予め記憶（インストール）されている態様を説明したが、これに限定されない。各種プログラムは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ等の記録媒体に記録された形態で提供されてもよい。また、各種プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【００６９】
上記では種々の実施の形態を説明したが、これらの実施の形態を組み合わせて構成してもよい。
また、本開示は上記の実施の形態に何ら限定されるものではなく、本開示の要旨を逸脱しない範囲で種々の形態で実施することができる。
本出願は、２０１６年３月２４日出願の日本特許出願（特願２０１６−０６０５２６）に基づくものであり、それらの内容はここに参照として取り込まれる。
【符号の説明】
【００７０】
１０  コンピュータ
１２  演算部
１３、１３Ａ〜１３Ｃ  コア
１４  メモリ
１６  表示部
１８  操作部
２０  記憶部
２２  画像データ供給部
２４  画像出力部
２６  バス
３０  オペレーティングシステム
３２  アプリケーションプログラム群
３４  画像処理プログラム群
３６  モジュールライブラリ
３８  画像処理モジュール
３９、３９Ａ〜３９Ｃ  部分処理
４０  バッファモジュール
４２  処理構築部
４６  処理制御部
５０Ａ、５０Ｂ  画像処理ＤＡＧ
６０  処理部
６２  制御部
６４  タスクキュー
６６  出力部
Ｂ１〜Ｂ３  分割画像
Ｇ  画像
Ｔ  タスク
【図１】
0006648257.tif 000002
【図２Ａ】
0006648257.tif 000003
【図２Ｂ】
0006648257.tif 000004
【図３】
0006648257.tif 000005
【図４】
0006648257.tif 000006
【図５】
0006648257.tif 000007
【図６】
0006648257.tif 000008
【図７】
0006648257.tif 000009
【図８】
0006648257.tif 000010
【図９】
0006648257.tif 000011
【図１０】
0006648257.tif 000012
【図１１】
0006648257.tif 000013
【図１２】
0006648257.tif 000014
【図１３】
0006648257.tif 000015