(57)【要約】  複数のプロセッサ・コアを備えた画像処理装置として機能するコンピュータは、画像処理を実行するための画像処理モジュールが有向非循環グラフ形態で複数連結されたオブジェクト群から直列に連結された複数の画像処理モジュールを抽出し、抽出した複数の画像処理モジュールの各々による画像処理を、複数のプロセッサ・コアの中の同一のプロセッサ・コアに実行させる。
2017163591.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサ・コアを備えた画像処理装置であって、
画像処理を実行するためのオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群から直列に連結された複数のオブジェクトを抽出する抽出部と、
前記抽出部により抽出された複数のオブジェクトの各々による画像処理を、前記複数のプロセッサ・コアの中の同一のプロセッサ・コアに実行させる実行部と、
を備えた画像処理装置。
【請求項２】
前記抽出部は、前記直列に連結された複数のオブジェクトとして、前段に連結されたオブジェクト数が０又は１の複数のオブジェクトを抽出する
請求項１記載の画像処理装置。
【請求項３】
前記実行部は、前記抽出部により抽出された複数のオブジェクトによる画像処理の実行対象とされる画像が複数の領域に分割された分割領域単位で、該抽出された複数のオブジェクトの各々による画像処理を同一のプロセッサ・コアに実行させ、かつ分割領域毎に該抽出された複数のオブジェクトの各々による画像処理を異なるプロセッサ・コアに実行させる
請求項１又は請求項２記載の画像処理装置。
【請求項４】
前記抽出部により抽出された複数のオブジェクトによる画像処理の実行対象とされる画像を、前記プロセッサ・コアの数以下の複数の前記分割領域に分割する分割部をさらに備えた
請求項３記載の画像処理装置。
【請求項５】
前記抽出部により抽出された複数のオブジェクトによる画像処理の実行対象とされる画像を、前記画像処理を実行する演算部が有するキャッシュメモリの容量以下のサイズで、複数の前記分割領域に分割する分割部をさらに備えた
請求項３記載の画像処理装置。
【請求項６】
前記複数のプロセッサ・コアは、前記画像処理に用いられるキャッシュメモリを有する
請求項１から請求項５の何れか１項記載の画像処理装置。
【請求項７】
複数のプロセッサ・コアを備えた画像処理装置による画像処理方法であって、
画像処理を実行するためのオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群から直列に連結された複数のオブジェクトを抽出し、
抽出した複数のオブジェクトの各々による画像処理を、前記複数のプロセッサ・コアの中の同一のプロセッサ・コアに実行させる
画像処理方法。
【請求項８】
コンピュータを、請求項１から請求項６の何れか１項記載の画像処理装置の抽出部、及び実行部として機能させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の技術は、画像処理装置、画像処理方法、及び画像処理プログラムに関する。
【背景技術】
【０００２】
従来、画像処理を実行するためのオブジェクトが、ＤＡＧ（Directed Acyclic Graph：有向非循環（非巡回）グラフ）形態で複数連結されたオブジェクト群に従って、画像処理を行う技術が知られている（特開２０１２−１１８９３２号公報参照）。【０００３】
また、ＤＡＧ形態のタスクフローグラフに従って、複数のプロセッサを用いて並列処理を行う技術が知られている（特開２０１４−１６４６６４号公報参照）。この技術では、第１タスクと、第１タスクの先行タスクである第２タスクとが異なるプロセッサに割り当てられている場合に、第２タスクによる出力データが第１タスクに割り当てられている第１プロセッサにより参照可能となるまで、第１タスクの実行を待機する。【０００４】
また、第１のプロセッサ・コアから第２のプロセッサ・コアへスレッドが移送されることを予測し、スレッドに関連するデータを第１のプロセッサ・コアから第２のプロセッサ・コアへ移送する技術が知られている（特表２０１３−５０１２９６号公報参照）。この技術では、スレッドに関連するデータを第１のプロセッサ・コアから第２のプロセッサ・コアへ移送した後に、スレッドを第１のプロセッサ・コアから第２のプロセッサ・コアへ移送する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、複数のプロセッサ・コアにより処理を実行する場合に、処理の実行単位であるスレッドを何れのプロセッサ・コア上で実行するかを決定するスケジュール方針の一例として、貪欲スケジュール（greedy schedule）が知られている。貪欲スケジュールとは、処理の実行を終えたスレッドがアイドル状態とならないようにするスケジュール方針であり、処理を実行していないプロセッサ・コアが存在する場合、プロセッサ・コアは直ちに次の処理を実行することになる。従って、貪欲スケジュールでは、同じメモリ上の領域を参照して連続的に実行される処理の各々が、異なるプロセッサ・コアにより実行されてしまうことがあるという問題点がある。【０００６】
特開２０１２−１１８９３２号公報に記載の技術では、この問題点について考慮されていない。また、特開２０１４−１６４６６４号公報及び特表２０１３−５０１２９６号公報に記載の技術では、異なるプロセッサ・コア間でデータを移送（コピー）する時間がかかってしまい、かつデータを移送している間は、処理の実行が中断される結果、高速に画像処理を行うことができない場合がある。【０００７】
本開示の技術は、複数の画像処理の各々を異なるプロセッサ・コアにより実行する場合に比較して、高速に画像処理を行うことができる画像処理装置、画像処理方法、及び画像処理プログラムを提供する。
【課題を解決するための手段】
【０００８】
本発明の第１の態様の画像処理装置は、複数のプロセッサ・コアを備えた画像処理装置であって、画像処理を実行するためのオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群から直列に連結された複数のオブジェクトを抽出する抽出部と、抽出部により抽出された複数のオブジェクトの各々による画像処理を、複数のプロセッサ・コアの中の同一のプロセッサ・コアに実行させる実行部と、を備えている。【０００９】
なお、本発明の第２の態様の画像処理装置は、第１の態様の画像処理装置において、抽出部が、直列に連結された複数のオブジェクトとして、前段に連結されたオブジェクト数が０又は１の複数のオブジェクトを抽出してもよい。【００１０】
また、本発明の第３の態様の画像処理装置は、第１の態様又は第２の態様の画像処理装置において、実行部が、抽出部により抽出された複数のオブジェクトによる画像処理の実行対象とされる画像が複数の領域に分割された分割領域単位で、抽出された複数のオブジェクトの各々による画像処理を同一のプロセッサ・コアに実行させ、かつ分割領域毎に抽出された複数のオブジェクトの各々による画像処理を異なるプロセッサ・コアに実行させてもよい。【００１１】
また、本発明の第４の態様の画像処理装置は、第３の態様の画像処理装置において、抽出部により抽出された複数のオブジェクトによる画像処理の実行対象とされる画像を、プロセッサ・コアの数以下の複数の分割領域に分割する分割部をさらに備えてもよい。【００１２】
また、本発明の第５の態様の画像処理装置は、第３の態様の画像処理装置において、抽出部により抽出された複数のオブジェクトによる画像処理の実行対象とされる画像を、画像処理を実行する演算部が有するキャッシュメモリの容量以下のサイズで、複数の分割領域に分割する分割部をさらに備えてもよい。【００１３】
また、本発明の第６の態様の画像処理装置は、第１の態様から第５の態様の何れか１つの態様の画像処理装置において、複数のプロセッサ・コアが、画像処理に用いられるキャッシュメモリを有してもよい。【００１４】
本発明の第７の態様の画像処理方法は、複数のプロセッサ・コアを備えた画像処理装置による画像処理方法であって、画像処理を実行するためのオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群から直列に連結された複数のオブジェクトを抽出し、抽出した複数のオブジェクトの各々による画像処理を、複数のプロセッサ・コアの中の同一のプロセッサ・コアに実行させるものである。【００１５】
本発明の第８の態様の画像処理プログラムは、コンピュータを、本発明の第１の態様から第６の態様の何れか１つの態様の画像処理装置の抽出部、及び実行部として機能させるためのものである。
【発明の効果】
【００１６】
本発明の一実施形態によれば、複数の画像処理の各々を異なるプロセッサ・コアにより実行する場合に比較して、高速に画像処理を行うことができる。
【図面の簡単な説明】
【００１７】
【図１】実施の形態に係る画像処理装置として機能するコンピュータの構成の一例を示すブロック図である。
【図２Ａ】画像処理ＤＡＧの一例を示す概略図である。
【図２Ｂ】画像処理ＤＡＧに入出力用のメモリを加えた場合の概略図である。
【図３】実施の形態に係る処理制御部の機能的な構成の一例を示すブロック図である。
【図４】実施の形態に係る合成モジュールの一例の説明に供する概略図である。
【図５】実施の形態に係る合成モジュールの一例の説明に供する概略図である。
【図６】実施の形態に係る合成モジュールの一例の説明に供する概略図である。
【図７】実施の形態に係る合成モジュールの一例の説明に供する概略図である。
【図８】入力画像の分割処理の説明に供する概略図である。
【図９】画像処理モジュールが部分処理に分割された画像処理ＤＡＧの一例を示す概略図である。
【図１０】画像処理モジュールが部分処理に分割された画像処理ＤＡＧの一例を示す概略図である。
【図１１】実施の形態に係る画像処理プログラムの処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、図面を参照して、本開示の技術を実施するための形態例を詳細に説明する。
【００１９】
まず、図１を参照して、画像処理装置として機能するコンピュータ１０の構成を説明する。なお、コンピュータ１０は、複写機、プリンタ、ファクシミリ装置、これらの装置の機能を兼ね備えた複合機、及びスキャナ等の内部で画像処理を行う画像取扱機器に組み込まれたコンピュータであってもよい。また、コンピュータ１０は、ＰＣ（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）メモリ等の記録媒体に記録された形態で提供されてもよい。また、各種プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【００６９】
２０１６年３月２４日出願の日本国特許出願２０１６−０６０５２３号の開示は、その全体が参照により本明細書に取り込まれる。
本明細書に記載された全ての文献、特許出願、及び技術規格は、個々の文献、特許出願、及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
【符号の説明】
【００７０】
１０  コンピュータ
１２Ａ  第１演算部
１２Ｂ  第２演算部
１３  ローカルメモリ
１４  メモリ
１６  表示部
１８  操作部
２０  記憶部
２２  画像データ供給部
２４  画像出力部
２６  バス
３０  オペレーティングシステム
３２  アプリケーションプログラム群
３４  画像処理プログラム群
３６  モジュールライブラリ
３８  画像処理モジュール
３９  部分処理
４０  バッファモジュール
４２  処理構築部
４６  処理制御部
５０Ａ、５０Ｂ、５０Ｃ  画像処理ＤＡＧ
５２  合成モジュール
５４  部分処理群
６０  抽出部
６２  合成部
６４  分割部
６６  実行部
６８  出力部
Ｂ１〜Ｂ３  分割画像
Ｇ  画像
【図１】
2017163591.tif 000003
【図２Ａ】
2017163591.tif 000004
【図２Ｂ】
2017163591.tif 000005
【図３】
2017163591.tif 000006
【図４】
2017163591.tif 000007
【図５】
2017163591.tif 000008
【図６】
2017163591.tif 000009
【図７】
2017163591.tif 000010
【図８】
2017163591.tif 000011
【図９】
2017163591.tif 000012
【図１０】
2017163591.tif 000013
【図１１】
2017163591.tif 000014
【手続補正書】
【提出日】平成29年8月10日(2017.8.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のプロセッサ・コアを備えた画像処理装置であって、
画像処理を実行するためのオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群から直列に連結された複数のオブジェクトを抽出する抽出部と、
前記抽出部により抽出された複数のオブジェクトによる画像処理の実行対象とされる画像を、複数の分割領域に分割し、かつ、前記画像処理を、前記分割領域に各々対応する複数のタスクに分割する分割部であって、前記複数のタスクのうちの、前記直列に連結された複数のオブジェクトに含まれる前段に連結されたオブジェクトに対応するタスクと、前記複数のタスクのうちの、前記直列に連結された複数のオブジェクトに含まれる後段に連結されたオブジェクトに対応するタスクとの間で前記画像処理の種類に応じて依存関係を付与する分割部と、
前記分割部により分割されて得られた前記複数のタスクの各々を、前記複数のプロセッサ・コアのうちの同一のプロセッサ・コアであり、かつ、前記複数のタスク間で異なるプロセッサ・コアに実行させる実行部と、
を備えた画像処理装置。
【請求項２】
前記抽出部は、前記直列に連結された複数のオブジェクトとして、前段に連結されたオブジェクト数が０又は１の複数のオブジェクトを抽出する
請求項１記載の画像処理装置。
【請求項３】
前記実行部は、前記抽出部により抽出された複数のオブジェクトによる画像処理の実行対象とされる画像が前記分割領域単位で、該抽出された複数のオブジェクトの各々による画像処理を同一のプロセッサ・コアに実行させ、かつ分割領域毎に該抽出された複数のオブジェクトの各々による画像処理を異なるプロセッサ・コアに実行させる
請求項１又は請求項２記載の画像処理装置。
【請求項４】
前記分割部は、前記抽出部により抽出された複数のオブジェクトによる画像処理の実行対象とされる画像を、前記プロセッサ・コアの数以下の複数の前記分割領域に分割する
請求項３記載の画像処理装置。
【請求項５】
前記分割部は、前記抽出部により抽出された複数のオブジェクトによる画像処理の実行対象とされる画像を、前記画像処理を実行する演算部が有するキャッシュメモリの容量以下のサイズで、複数の前記分割領域に分割する
請求項３記載の画像処理装置。
【請求項６】
前記複数のプロセッサ・コアは、前記画像処理に用いられるキャッシュメモリを有する
請求項１から請求項５の何れか１項記載の画像処理装置。
【請求項７】
複数のプロセッサ・コアを備えた画像処理装置による画像処理方法であって、
画像処理を実行するためのオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群から直列に連結された複数のオブジェクトを抽出し、
抽出した複数のオブジェクトによる画像処理の実行対象とされる画像を、複数の分割領域に分割し、前記画像処理を、前記分割領域に各々対応する複数のタスクに分割し、前記複数のタスクのうちの、前記直列に連結された複数のオブジェクトに含まれる前段に連結されたオブジェクトに対応するタスクト、前記複数のタスクのうちの、前記直列に連結された複数のオブジェクトに含まれる後段に連結されたオブジェクトに対応するタスクとの間で前記画像処理の種類に応じて依存関係を付与し、
分割して得た前記複数のタスクの各々を、前記複数のプロセッサ・コアのうちの同一のプロセッサ・コアであり、かつ、前記複数のタスク間で異なるプロセッサ・コアに実行させる
画像処理方法。
【請求項８】
コンピュータを、請求項１から請求項６の何れか１項記載の画像処理装置の抽出部、分割部、及び実行部として機能させるための画像処理プログラム。
【国際調査報告】
2017163591.tif 000015
2017163591.tif 000016
2017163591.tif 000017
2017163591.tif 000018