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