図1には、本発明の実施形態に係る情報処理装置としての画像処理装置の一例が示されている。画像処理装置10は、外部から画像データを受けて画像処理を実行する装置である。一例として、画像処理装置10は、プリント機能、スキャン機能、コピー機能及びファクシミリ機能等を有する画像形成装置に接続又は搭載されていてもよい。
アクセラレータ12は画像処理機能を有するハードウェアである。このアクセラレータ12によってハードウェア処理が実現される。アクセラレータ12は、例えば、DRPやFPGAやASIC等の回路によって構成されている。アクセラレータ12においては、例えば、パイプライン処理を実行するパイプライン機構が構築される。
制御部(コントローラ)14はCPU等のプロセッサを含む。制御部14は、ソフトウェア処理部16、処理時間算出部18、割当部20及び再割当部22を含む。制御部14は、画像処理要求を順次受け付け、画像処理要求を処理リストに登録する。一例として、その受け付けの順番が画像処理要求の実行順番として登録される。
ソフトウェア処理部16は、ソフトウェアによって画像処理を実行する機能を有する。ソフトウェア処理部16による画像処理は、プロセッサが画像処理プログラムを実行することにより実現される。
処理時間算出部18は、ソフトウェア処理部16によって画像処理が実行されたときのソフトウェア処理時間と、アクセラレータ12によって画像処理が実行されたときのハードウェア処理時間と、を算出する。また、処理時間算出部18は、アクセラレータ12を構成するハードウェアの初期化に要する初期化時間を算出し、ハードウェア処理時間と初期化時間との合計時間(ハードウェア処理合計時間)を算出する。初期化時間には、例えば、アクセラレータ12におけるパイプライン機構の破棄に要する破棄時間と、画像処理に適合したパイプライン機構の構築(セットアップ)に要するセットアップ時間と、が含まれる。実行対象の画像処理(対象画像処理)の内容が、その対象画像処理の直前に実行される画像処理(直前画像処理)の内容と異なる場合に、アクセラレータ12の初期化及びセットアップが実行される。
割当部20は、ソフトウェア処理時間と、ハードウェア処理時間又はハードウェア処理合計時間と、を比較し、その比較結果に応じて、画像処理の実行をアクセラレータ12又はソフトウェア処理部16のいずれかに割り当てる。アクセラレータ12の初期化が必要な場合、割当部20は、ソフトウェア処理時間とハードウェア処理合計時間との比較結果に応じて、画像処理の実行をアクセラレータ12又はソフトウェア処理部16のいずれかに割り当てる。アクセラレータ12の初期化が不要な場合、割当部20は、ソフトウェア処理時間とハードウェア処理時間との比較結果に応じて、画像処理の実行をアクセラレータ12又はソフトウェア処理部16のいずれかに割り当てる。具体的には、アクセラレータ12の初期化が必要な場合においては、割当部20は、ソフトウェア処理時間がハードウェア処理合計時間未満となる場合に、画像処理の実行をソフトウェア処理部16に割り当て、ソフトウェア処理時間がハードウェア処理合計時間以上となる場合に、画像処理の実行をアクセラレータ12に割り当てる。アクセラレータ12の処理化が不要な場合においては、割当部20は、ソフトウェア処理時間がハードウェア処理時間未満となる場合に、画像処理の実行をソフトウェア処理部16に割り当て、ソフトウェア処理時間がハードウェア処理時間以上となる場合に、画像処理の実行をアクセラレータ12に割り当てる。処理リストには、各画像処理の実行順番と、各画像処理を実行するデバイス(アクセラレータ12又はソフトウェア処理部16)と、が示されている。
再割当部22は、画像処理の実行が割当部20によってソフトウェア処理部16に割り当てられた場合に、当該画像処理よりも実行順番が前の画像処理群であって、ソフトウェア処理部16に割り当てられた連続する同一処理内容の未実行の画像処理群を、アクセラレータ12又はソフトウェア処理部16のいずれかに再度割り当てる。例えば、再割当部22は、当該画像処理群がソフトウェア処理部16によって実行されたときの処理時間(総ソフトウェア処理時間)、当該画像処理群がアクセラレータ12によって実行されたときの処理時間(総ハードウェア処理時間)、及び、当該画像処理群をアクセラレータ12によって実行するためにアクセラレータ12の初期化に要する初期化時間(総初期化時間)を算出する。そして、再割当部22は、総ハードウェア処理時間と総初期化時間との合計時間を算出し、その合計時間が総ソフトウェア処理時間以下となる場合に、当該画像処理群の実行をアクセラレータ12に割り当てる。これにより、画像処理群の実行デバイスがソフトウェア処理部16からアクセラレータ12に変更される。再割当部22によって実行デバイスが変更されることにより、割当部20によって作成された処理リストが修正される。合計時間が総ソフトウェア処理時間よりも長くなる場合(総ソフトウェア処理時間が合計時間未満となる場合)、実行デバイスの変更は行われない。
記憶部24はハードディスク等の記憶装置である。記憶部24には、例えば、プログラム26、計算用情報28及び処理リスト30が記憶されている。また、記憶部24には、画像処理の対象となる画像データが記憶される。
プログラム26は、制御部14によって実行されるプログラムであり、例えば画像処理プログラムである。この画像処理プログラムがCPU等のプロセッサによって実行されることにより、ソフトウェア処理部16による画像処理が実現される。また、処理時間算出部18、割当部20及び再割当部22のそれぞれの処理を実行するためのプログラムも、記憶部24に記憶されている。
計算用情報28は、ソフトウェア係数、ハードウェア係数及び初期化時間を示す情報である。ソフトウェア係数は、個々の画像処理のソフトウェア処理時間を計算するための係数である。ハードウェア係数は、個々の画像処理のハードウェア処理時間を計算するための係数である。初期化時間は、アクセラレータ12の初期化に要する時間であり、破棄時間とセットアップ時間を含む。画像処理毎のソフトウェア係数とハードウェア係数が予め決定されており、パイプライン機構毎の破棄時間とセットアップ時間が予め決定されている。この計算用情報28を利用することにより、ソフトウェア処理時間、ハードウェア処理時間及び初期化時間が算出される。
処理リスト30は、画像処理装置10にて実行される画像処理のリストのデータである。処理リスト30は割当部20によって作成される。つまり、割当部20によって画像処理がアクセラレータ12又はソフトウェア処理部16に割り当てられることにより、処理リスト30が作成される。また、再割当部22によって再割当処理が実行される場合には、割当部20と再割当部22とによって処理リスト30が作成される。
図2には、計算用情報28としての係数リストの一例が示されている。CPU係数はソフトウェア係数の一例であり、ACC係数(アクセラレータ係数)はハードウェア係数の一例である。画像処理毎のCPU係数とACC係数とが予め決定されている。
処理時間算出部18は、実行対象の画像処理に対応するCPU係数とACC係数とを係数リストから取得し、それらに基づいて当該画像処理のソフトウェア処理時間とハードウェア処理時間とを算出する。一例として、「回転」処理と「ドロップカラー」処理とが実行される場合、処理対象の画素数をPixsとすると、ソフトウェア処理時間Tcpuとハードウェア処理時間Taccは、以下の式で表される。
Tcpu=Pixs×Crot+Pixs×Cdp
Tacc=Pixs×Arot+Pixs×Adp
なお、解像度変換が画像処理に含まれる場合、解像度変換後の画素数に基づいてソフトウェア処理時間Tcpuとハードウェア処理時間Taccとが計算される。
図3には、計算用情報28としての初期化時間のリストの一例が示されている。パイプライン処理(パイプライン機構)毎の初期化時間(破棄時間とセットアップ時間)が予め決定されている。なお、初期化時間には、アクセラレータ12を構成する回路(DRP、FPGA、ASIC等の回路)のリコンフィグ時間(回路の切り替えに要する時間)が含まれてもよい。
処理時間算出部18は、パイプライン機構に対応する破棄時間とセットアップ時間とをリストから取得し、初期化時間(破棄時間+セットアップ時間)を算出する。一例として、アクセラレータ12のパイプライン機構が「TypeA」から「TypeB」に切り替えられる場合、初期化時間は、「TypeA」の破棄時間Daと「TypeB」のセットアップ時間Sbとの合計となる。なお、最初にアクセラレータ12によって画像処理が実行される場合には、前のパイプライン機構が存在しないので、破棄時間が不要となる。この場合、初期化時間はセットアップ時間と等しくなる。
図4には、処理リスト30の一例が示されている。この処理リスト30は、割当部20によって作成されたリスト、又は、割当部20と再割当部22とによって作成されたリストである。処理リスト30においては、画像処理の順番を示すIndex、パイプライン処理(パイプライン機構)のタイプ(Type)、ソフトウェア処理時間(Tcpu)、ハードウェア処理時間(Tacc)、パイプライン機構の破棄時間(Td)、アクセラレータ12のセットアップ時間(Tsetup)、及び、処理デバイス(アクセラレータ12又はCPU(ソフトウェア処理部16))が、画像処理毎に対応付けられている。例えば、制御部14によって画像処理要求が受け付けられた順番が実行順番として採用され、各画像処理要求が処理リストに登録される。例えば、処理リスト30の先頭の画像処理はアクセラレータ12によって実行され、2番目(+1)の画像処理はソフトウェア処理部16(CPU)によって実行される。
次に、上記の構成を有する画像処理装置10の具体的な実施例について説明する。
(実施例1)
図5に示されているフローチャートを参照して、実施例1に係る処理について説明する。
まず、制御部14は、新規の画像処理要求Rnを受け付け(S01)、その画像処理要求Rnの画像処理内容Pnを取得する(S02)。例えば、画像処理要求Rnのデータに、画像処理内容Pnと、その画像処理の対象となる画像データを識別するためのデータ識別情報と、が含まれており、制御部14は、画像処理要求Rnから画像処理内容Pnを取得する。なお、画像処理の対象となる画像データは、画像処理要求Rnとともに画像処理装置10に入力されてもよいし、画像処理装置10の記憶部24に記憶されていてもよい。
次に、処理時間算出部18は、計算用情報28に含まれる係数リストから画像処理内容Pnに対応するCPU係数を取得し、そのCPU係数に基づいてソフトウェア処理時間Tcpu(n)を計算し、画像処理要求Rnとソフトウェア処理時間Tcpu(n)とを対応付けて処理リスト30に登録する(S03)。
また、処理時間算出部18は、計算用情報28に含まれる係数リストから画像処理内容Pnに対応するACC係数を取得し、そのACC係数に基づいてハードウェア処理時間Tacc(n)を計算する(S04)。また、処理時間算出部18は、計算用情報28に含まれる初期化時間リストから、画像処理内容Pnに対応するパイプライン機構に対応するセットアップ時間Tsetup(n)と破棄時間Td(n)とを取得する(S04)。そして、処理時間算出部18は、画像処理要求Rnと、パイプライン処理のタイプと、ハードウェア処理時間Tacc(n)と、セットアップ時間Tsetup(n)と、破棄時間Td(n)とを対応付けて処理リスト30に登録する(S04)。
次に、制御部14は、画像処理要求Rn以前の要求群の中でアクセラレータ12に割り振られた最後の画像処理内容Plastを処理リスト30から取得する(S05)。そして、制御部14は、画像処理内容Pnと画像処理内容Plastとを比較し、アクセラレータ12の初期化が必要か否かを判断する(S06)。画像処理内容Pnと画像処理内容Plastとが異なる場合、つまり、パイプライン機構が異なる場合、初期化(画像処理内容Plast用のパイプライン機構の破棄と、画像処理内容Pn用のパイプライン機構の構築)が必要となる。
アクセラレータ12の初期化が必要な場合(S06,Yes)、つまり、画像処理内容Pnと画像処理内容Plastとが異なる場合、処理時間算出部18は、初期化時間リストから、画像処理内容Plast用のパイプライン機構の破棄時間Td(last)を取得する(S07)。そして、処理時間算出部18は、破棄時間Td(last)と、セットアップ時間Tsetup(n)と、ハードウェア処理時間Tacc(n)と、を加算することにより、ハードウェア処理合計時間(Td(last)+Tsetup(n)+Tacc(n))を算出する(S08)。
アクセラレータ12の初期化が不要な場合(S06,No)、つまり、画像処理内容Pnと画像処理内容Plastとが同じ場合や、画像処理要求Rnが最初の要求の場合、処理時間算出部18は、ハードウェア処理時間Tacc(n)をハードウェアの処理時間として採用する(S09)。
次に、割当部20は、ソフトウェア処理時間Tcpu(n)とハードウェアの処理時間とを比較する(S10)。
具体的には、アクセラレータ12の初期化が必要な場合、割当部20は、ソフトウェア処理時間Tcpu(n)と、ハードウェア処理合計時間(=Td(last)+Tsetup(n)+Tacc(n))と、を比較する(S10)。ソフトウェア処理時間Tcpu(n)がハードウェア処理合計時間未満となる場合(S10,Yes)、つまり、アクセラレータ12よりもソフトウェア処理部16で処理した方が速い場合(S10,Yes)、割当部20は、画像処理要求Rnの実行をソフトウェア処理部16に割り当てる(S11)。これにより、画像処理要求Rnの処理デバイスとしてCPUが利用されることになる。一方、ソフトウェア処理時間Tcpu(n)がハードウェア処理合計時間以上となる場合(S10,No)、つまり、アクセラレータ12よりもソフトウェア処理部16で処理した方が速いわけではない場合(S10,No)、割当部20は、画像処理要求Rnの実行をアクセラレータ12に割り当てる(S12)。これにより、画像処理要求Rnの処理デバイスとしてアクセラレータ12が利用されることになる。そして、割当部20は、画像処理内容Plastを画像処理内容Pnに更新する(S13)。なお、ソフトウェア処理時間Tcpu(n)とハードウェア処理合計時間とが同一の場合、割当部20は、画像処理要求Rnの実行を、ソフトウェア処理部16に割り当ててもよい。
アクセラレータ12の初期化が不要な場合、割当部20は、ソフトウェア処理時間Tcpu(n)とハードウェア処理時間Tacc(n)とを比較する(S10)。ソフトウェア処理時間Tcpu(n)がハードウェア処理時間Tacc(n)未満となる場合(S10,Yes)、割当部20は、画像処理要求Rnの実行をソフトウェア処理部16に割り当てる(S11)。一方、ソフトウェア処理時間Tcpu(n)がハードウェア処理時間Tacc(n)以上となる場合(S10,No)、割当部20は、画像処理要求Rnの実行をアクセラレータ12に割り当てる(S12)。そして、割当部20は、画像処理内容Plastを画像処理内容Pnに更新する(S13)。なお、ソフトウェア処理時間Tcpu(n)とハードウェア処理時間Tacc(n)とが同一の場合、割当部20は、画像処理要求Rnの実行を、ソフトウェア処理部16に割り当ててもよい。
制御部14は、新規の画像処理要求Rnを受け付ける度に、ステップS01〜S13の処理を実行する。これにより、1又は複数の画像処理要求が規定された処理リスト30が作成される。そして、処理リスト30に登録されている画像処理が、登録されている順番に従って、アクセラレータ12又はソフトウェア処理部16によって順次実行される。なお、実施例1では再割当部22による処理は実行されないので、再割当部22は画像処理装置10に設けられていなくてよい。
次に、図6及び図7を参照して、実施例1の具体例について説明する。ここでは、OCR前処理と縮小画像生成処理とが交互に実行される場合について説明する。例えば、1枚の画像から、OCR(optical character recognition)処理による情報の取り出しと、ファイルサイズの小さい画像の生成、等といった画像処理が指定されることが想定される。この場合、画像毎に、OCR処理と縮小画像生成処理とが交互に実行されることが想定される。
図6には、OCR前処理及び縮小画像生成処理のそれぞれのソフトウェア処理時間とハードウェア処理時間とが示されている。この処理時間は、画像の画素数に基づいて算出された時間である。ハードウェア処理時間はソフトウェア処理時間よりも短くなっている。また、図6には、OCR前処理及び縮小画像生成処理のそれぞれにおけるアクセラレータ12の初期化時間(破棄時間とセットアップ時間)が示されている。
図7には、全ての画像処理要求をソフトウェア処理部16によって実行した場合に要する処理時間の合計、全ての画像処理要求をアクセラレータ12によって実行した場合に要する処理時間の合計、及び、実施例1を適用した場合に要する処理時間の合計、が示されている。
図7に示されているように、1番目の画像処理要求は「OCR前処理」である。OCR前処理をソフトウェア処理部16によって実行する場合、図6に示すように、その処理時間は「820ms」となる。最初にアクセラレータ12で処理する場合、以前のパイプライン機構の破棄が不要となる。それ故、OCR前処理をアクセラレータ12で最初に実行する場合、図6に示すように、その処理時間は、セットアップ時間「350ms」とハードウェア処理時間(OCR前処理時間)「200ms」との合計「550ms」となる。実施例1を適用した場合、アクセラレータ12での処理時間「550ms」は、ソフトウェア処理部16による処理時間「820ms」よりも短いため、1番目の画像処理要求「OCR前処理」は、アクセラレータ12に割り当てられる。つまり、1番目の画像処理要求の処理デバイスとして、アクセラレータ12(図中のACC)が利用されることになる。
2番目の画像処理要求は「縮小画像生成」である。縮小画像生成をソフトウェア処理部16によって実行する場合、図6に示すように、その処理時間は「160ms」となる。縮小画像生成をアクセラレータ12で実行するためには、アクセラレータ12のパイプライン機構を切り替える必要がある。それ故、縮小画像生成をアクセラレータ12で実行する場合、図6に示すように、その処理時間は、OCR前処理の破棄時間「120ms」と、縮小画像生成のセットアップ時間「220ms」と、ハードウェア処理時間(縮小画像生成時間)「50ms」との合計「390ms」となる。実施例1を適用した場合、ソフトウェア処理部16による処理時間「160ms」は、アクセラレータ12による処理時間「390ms」よりも短いため、2番目の画像処理要求「縮小画像生成」は、ソフトウェア処理部16に割り当てられる。つまり、2番目の画像処理要求の処理デバイスとして、CPUが利用されることになる。
3番目の画像処理要求は「OCR前処理」である。OCR前処理をソフトウェア処理部16によって実行する場合、その処理時間は「820ms」となる。全ての画像処理要求をアクセラレータ12によって実行するためには、アクセラレータ12のパイプライン機構を切り替える必要がある。それ故、OCR前処理をアクセラレータ12で実行する場合、図6に示すように、その処理時間は、縮小画像生成の破棄時間「80ms」と、OCR前処理のセットアップ時間「350ms」と、ハードウェア処理時間(OCR前処理時間)「200ms」と、の合計「630ms」となる。一方、3番目の画像処理要求のOCR前処理をアクセラレータ12で実行する場合であっても、実施例1を適用する場合には、アクセラレータ12のパイプライン機構の切り替えは不要となる。1番目の画像処理要求「OCR前処理」がアクセラレータ12に割り当てられており、そのときに構築されたパイプライン機構が利用されるからである。つまり、実施例1を適用した場合、1番目の画像処理要求に応じて、アクセラレータ12において「OCR前処理」用のパイプライン機構が構築される。2番目の画像処理要求「縮小画像生成」はソフトウェア処理部16に割り当てられるため、アクセラレータ12のパイプライン機構は「OCR前処理」用のパイプライン機構に維持される。それ故、3番目の画像処理要求「OCR前処理」をアクセラレータ12で実行する場合には、1番目の画像処理要求「OCR前処理」を実行するときに構築されたパイプライン機構が利用されることになる。その結果、パイプライン機構の破棄とセットアップが不要となり、アクセラレータ12による処理時間は、OCR前処理に要する時間「200ms」となる。アクセラレータ12による処理時間「200ms」は、ソフトウェア処理部16による処理時間「820ms」よりも短いため、3番目の画像処理要求「OCR前処理」は、アクセラレータ12に割り当てられる。つまり、3番目の画像処理要求の処理デバイスとして、アクセラレータ12が利用されることになる。
4番目以降の画像処理要求についても、上記と同様の処理により、処理時間が計算される。実施例1が適用される場合には、アクセラレータ12を利用したときの処理時間と、ソフトウェア処理部16を利用したときの処理時間と、が計算され、それらの比較結果に応じて、画像処理要求が、アクセラレータ12又はソフトウェア処理部16(CPU)に割り当てられる。
図7には、1〜8番目の画像処理要求の実行に要する処理時間の合計が示されている。全ての画像処理要求をソフトウェア処理部16(CPU)によって実行する場合、処理時間の合計は「3920ms」となる。全ての画像処理要求をアクセラレータ12によって実行する場合、処理時間の合計は「4000ms」となる。実施例1を適用した場合、処理時間の合計は「1790ms」となる。
以上のように、実施例1によると、全ての画像処理要求をソフトウェア処理部16で実行する場合や、全ての画像処理要求をアクセラレータ12で実行する場合と比べて、全体の処理時間が短くなる。
例えば、アクセラレータ12のパイプライン機構を頻繁に切り替える必要がある場合において、全ての画像処理要求をアクセラレータ12で実行すると、ソフトウェア処理部16で実行する場合よりも、全体の処理時間が長くなってしまうことがある。アクセラレータ12の処理速度がソフトウェア処理部16の処理速度よりも速い場合であっても、アクセラレータ12の初期化が必要となり、その分、全体の処理時間が増大するからである。実施例1によると、その初期化に要する時間も考慮されて画像処理要求が割り当てられるので、全ての画像処理要求をアクセラレータ12で処理する場合と比べて、全体の処理時間が短くなる。
(実施例2)
図8及び図9に示されているフローチャートを参照して、実施例2に係る処理について説明する。実施例2では、画像処理の実行がソフトウェア処理部16に割り当てられた場合、再割当部22による再割当処理が実行される。なお、図8において、実施例1と同じ処理には、同じステップの番号が示されている。
まず、実施例1と同様に、ステップS01〜S10の処理が実行される。アクセラレータ12の初期化が必要な場合において、ソフトウェア処理時間Tcpu(n)がハードウェア処理合計時間以上となる場合(S10,No)、画像処理要求Rnはアクセラレータ12に割り当てられ(S12)、画像処理内容Plastが更新される(S13)。アクセラレータ12の初期化が不要な場合において、ソフトウェア処理時間Tcpu(n)がハードウェア処理時間Tacc(n)以上となる場合(S10,No)も、ステップS12,S13の処理が実行される。これらの処理は実施例1に係る処理と同じであるため、説明を省略する。
一方、アクセラレータ12の初期化が必要な場合において、ソフトウェア処理時間Tcpu(n)がハードウェア処理合計時間未満となる場合(S10,No)、処理はステップS14に移行する。同様に、アクセラレータ12の初期化が不要な場合において、ソフトウェア処理時間Tcpu(n)がハードウェア処理時間Tacc(n)未満となる場合(S10,No)、処理はステップS14に移行する。ステップS14においては、画像処理要求Rnがソフトウェア処理部16に割り当てられた上で、未実行処理を対象として再割当部22による再割当処理が実行される。
図9には、再割当処理の流れが示されている。まず、制御部14は、未実行の画像処理内容が規定されている処理リスト(例えば処理リスト30)内における新規の画像処理要求Rnのキュー位置(実行順番)を参照する(S20)。画像処理要求Rnのキュー位置が先頭でない場合(S21,No)、つまり、未実行の画像処理群の中で画像処理要求Rnの実行順番が先頭ではない場合、再割当部22は、画像処理要求Rnの実行順番よりも1つ前の実行順番の画像処理内容Pbを取得する(S22)。例えば、再割当部22は、その画像処理内容Pbの画像処理要求データから画像処理内容Pbを取得してもよいし、処理リスト30から画像処理内容Pbを取得してもよい。
画像処理内容Pbがソフトウェア処理部16に割り当てられている場合(S23,Yes)、つまり、画像処理内容Pbの処理デバイスとしてCPUが利用される場合、処理はステップS24に移行する。そして、画像処理内容Pbと画像処理内容Pnが、同じパイプライン機構によって処理される内容である場合(S24,Yes)、つまり、画像処理内容Pbと画像処理内容Pnとが同じ処理内容である場合、再割当部22は、再割当リストに画像処理内容Pbを登録する(S25)。なお、再割当リストのデータは記憶部24に記憶される。次に、再割当部22は、処理リスト30において、画像処理内容Pnの位置(実行順番)を1つ前のキュー位置(実行順番)に仮に移動させる(S26)。そして、再割当部22は、移動されられた画像処理内容Pnの位置(実行順番)を基準にして、ステップS21〜S26の処理を繰り返し実行する。
処理リスト30において、画像処理内容Pnのキュー位置(実行順番)が先頭でない場合(S21,Yes)、処理はステップS27に移行する。また、画像処理内容Pbの実行がソフトウェア処理部16(CPU)に割り当てられていない場合(S23,No)、つまり、画像処理内容Pbの実行がアクセラレータ12に割り当てられている場合、処理はステップS27に移行する。また、画像処理内容Pbと画像処理内容Pnが、同じパイプライン機構によって処理される内容ではない場合(S24,No)、つまり、画像処理内容Pbと画像処理内容Pnとが異なる処理内容である場合、処理はステップS27に移行する。
再割当リストに画像処理内容が1つも登録されていない場合(S27,Yes)、つまり、再割当リストが空の場合、再割当処理は終了する。再割当処理後の処理リスト30に登録されている画像処理が、登録されている順番に従ってアクセラレータ12又はソフトウェア処理部16によって順次実行される。
一方、再割当リストに画像処理内容が登録されている場合(S27,No)、再割当部22は、再割当リストに登録されている全ての画像処理内容のソフトウェア処理時間の合計Tcpuを算出する(S28)。つまり、再割当部22は、それら全ての画像処理内容がソフトウェア処理部16によって実行された場合に要するソフトウェア処理時間の合計Tcpuを算出する。
次に、再割当部22は、処理リスト30の中からアクセラレータ12に割り当てられている最後の画像処理内容Plastを取得する(S28)。
次に、再割当部22は、再割当リストに登録されている全ての画像処理内容がアクセラレータ12によって実行された場合に要するハードウェア処理時間Taccを算出する(S29)。このとき、アクセラレータ12のパイプライン機構の初期化(破棄とセットアップ)に要する時間も算出され、その初期化時間もハードウェア処理時間Taccに含まれる。
そして、再割当部22は、ステップS28において算出されたソフトウェア処理時間の合計Tcpuと、ステップS29において算出されたハードウェア処理時間Tacc(初期化時間を含む)と、を比較する(S30)。
ソフトウェア処理時間の合計Tcpuがハードウェア処理時間Tacc未満となる場合、つまり、アクセラレータ12よりもソフトウェア処理部16で処理した方が速い場合(S30,Yes)、再割当処理は終了する。この場合、画像処理の実行デバイスは変更されず、処理リスト30に登録されている画像処理が、登録されている順番に従ってアクセラレータ12又はソフトウェア処理部16によって順次実行される。
一方、ソフトウェア処理時間の合計Tcpuがハードウェア処理時間Tacc以上となる場合、つまり、アクセラレータ12よりもソフトウェア処理部16で処理した方が速いわけではない場合(S30,No)、再割当部22は、処理リスト30において、再割当リストに登録されている全ての画像処理内容の実行をアクセラレータ12に割り当てる(S31)。つまり、ソフトウェア処理部16に割り当てられていた画像処理内容の実行が、アクセラレータ12に再割当されることになる。これにより、再割当リストに登録されている全ての画像処理内容の実行デバイスが、ソフトウェア処理部16(CPU)からアクセラレータ12に変更される。また、再割当部22は、画像処理内容Plastを画像処理内容Pnに更新する。
制御部14は、新規の画像処理要求Rnを受け付ける度に、ステップS01〜S31の処理を実行する。これにより、1又は複数の画像処理要求が規定された処理リスト30が作成される。そして、処理リスト30に登録されている画像処理が、登録されている順番に従って、アクセラレータ12又はソフトウェア処理部16によって順次実行される。
次に、図10〜14を参照して、実施例2の具体例について説明する。図10〜図14には、全ての画像処理要求をソフトウェア処理部16によって実行した場合に要する処理時間の合計、全ての画像処理要求をアクセラレータ12によって実行した場合に要する処理時間の合計、実施例1を適用した場合に要する処理時間の合計、及び、実施例2を適用した場合に要する処理時間の合計、が示されている。
図10には、3番目の画像処理要求が画像処理装置10に与えられたときの処理リストの一例が示されている。ここでは、1,2番目の画像処理が実行待ちの状態となっているものとする。
1番目の画像処理要求は「OCR前処理」である。図6に示すように、OCR前処理のソフトウェア処理時間は「820ms」であり、最初にOCR前処理をアクセラレータ12で実行する場合の処理時間は、「550ms」(セットアップ時間「350ms」+ハードウェア処理時間「200ms」)である。アクセラレータ12による処理時間「550ms」が、ソフトウェア処理部16による処理時間「820ms」よりも短いため、実施例1,2ともに、1番目の画像処理要求「OCR前処理」は、アクセラレータ12に割り当てられる(図10中のACC)。1番目の画像処理要求「OCR前処理」がアクセラレータ12に割り当てられるため、実施例2において、再割当処理は実行されない(図8のS10,No)。
2番目の画像処理要求は「OCR前処理」である。OCR前処理のソフトウェア処理時間は「820ms」である。アクセラレータ12のパイプライン機構を初期化する必要がないため、OCR前処理をアクセラレータ12で実行する場合の処理時間は「200ms」となる。アクセラレータ12による処理時間がソフトウェア処理部16による処理時間よりも短いため、実施例1,2ともに、2番目の画像処理要求「OCR前処理」は、アクセラレータ12に割り当てられる(図10中のACC)。この場合も、実施例2において、再割当処理は実行されない(図8のS10,No)。
3番目の画像処理要求は「縮小画像生成」である。図6に示すように、縮小画像生成のソフトウェア処理時間は「160ms」であり、縮小画像生成をアクセラレータ12で実行する場合の処理時間は、「390ms」(OCR前処理のパイプライン機構の破棄時間「120ms」+セットアップ時間「220ms」+ハードウェア処理時間「50ms」)である。ソフトウェア処理部16による処理時間「160ms」が、アクセラレータ12による処理時間「390ms」よりも短いため、実施例1,2ともに、3番目の画像処理要求「縮小画像生成」は、ソフトウェア処理部16に割り当てられる(図10中のCPU)。この場合、実施例2において、再割当処理が実行される(図8中のS10,Yes、S14)。3番目の画像処理内容Pn「縮小画像生成」の1つ前の画像処理内容Pb(2番目の画像処理内容)は、アクセラレータ12に割り当てられているため、図9中のフローチャートにおいて、処理はステップS23からステップS27に移行する(S23,No)。この段階では、再割当リストに画像処理要求が登録されていないので(S27,Yes)、再割当処理は終了する。
図11には、4番目の画像処理要求が画像処理装置10に与えられたときの処理リストの一例が示されている。ここでは、1〜3番目の画像処理が実行待ちの状態になっているものとする。
4番目の画像処理要求は「縮小画像生成」である。図6に示すように、縮小画像生成のソフトウェア処理時間は「160ms」であり、縮小画像生成をアクセラレータ12で実行する場合の処理時間は、「390ms」(OCR前処理のパイプライン機構の破棄時間「120ms」+セットアップ時間「220ms」+ハードウェア処理時間「50ms」)である。ソフトウェア処理部16による処理時間がアクセラレータ12による処理時間よりも短いため、実施例1,2ともに、4番目の画像処理要求「縮小画像生成」は、ソフトウェア処理部16に割り当てられる(図10中のCPU)。この場合、実施例2において、再割当処理が実行される(図8中のS10,Yes、S14)。4番目の画像処理内容Pn「縮小画像生成」の1つ前の画像処理内容Pb(3番目の画像処理内容)は、ソフトウェア処理部16に割り当てられており(図9中のS23,Yes)、画像処理内容Pn,Pbは同じパイプライン機構によって実現されるので(図9中のS24,Yes)、3番目の画像処理内容Pbは、再割当リストに登録される。再割当リストには、4番目の画像処理内容Pnも登録される。2番目の画像処理内容Pbはアクセラレータ12に割り当てられているため、図9中のフローチャートにおいて、処理はステップS23からステップS27に移行する(S23,No)。この段階では、3番目と4番目の画像処理内容が再割当リストに登録されているため(S27,No)、3番目と4番目の画像処理内容のソフトウェア処理時間の合計Tcpuが算出される(S28)。縮小画像生成のソフトウェア処理時間は「160ms」であるため、その合計Tcpuは「320ms(160ms×2)」となる。また、3番目と4番目の画像処理内容をアクセラレータ12によって実行する場合に要する処理時間Tacc(初期化時間を含む時間)が算出される(S29)。2番目の画像処理内容が「OCR前処理」であり、その「OCR前処理」がアクセラレータ12に割り当てられているため、3番目の画像処理内容「縮小画像生成」をアクセラレータ12によって実行するためには、アクセラレータ12の初期化が必要となる。それ故、3番目と4番目の画像処理内容の処理時間Tacc(初期化時間を含む時間)は、OCR前処理のパイプライン機構の破棄時間「120ms」と、セットアップ時間「220ms」と、ハードウェア処理時間「100ms(50ms×2)」と、の合計「440ms」となる。ソフトウェア処理部16での処理時間の合計Tcpu「320ms」が、アクセラレータ12での処理時間Tacc「440ms」よりも短いため(S30,Yes)、3番目と4番目の画像処理の処理デバイスは、ソフトウェア処理部16(CPU)からアクセラレータ12に変更されずに、ソフトウェア処理部16(CPU)に維持される。
図12には、6番目の画像処理要求が画像処理装置10に与えられたときの処理リストの一例が示されている。ここでは、1〜5番目の画像処理が実行待ちの状態になっているものとする。図12には、実施例1が適用された後の割当状態であって、実施例2の再割当処理が適用される前の割当状態が示されている。
図11に示されている4番目の画像処理要求と同様に、5番目と6番目の画像処理要求は「縮小画像生成」である。その縮小画像生成のソフトウェア処理時間は「160ms」であり、縮小画像生成をアクセラレータ12で実行する場合の処理時間は「390ms」である。そのため、実施例1が適用された場合、5番目と6番目の画像処理内容は、ソフトウェア処理部16に割り当てられる。図12には、その割当状態が示されている。
この場合、実施例2において、再割当処理が実行される(図8中のS10,Yes、S14)。6番目の画像処理内容Pn「縮小画像生成」の1つ前の画像処理内容Pb(5番目の画像処理内容)は、ソフトウェア処理部16に割り当てられており(図9中のS23,Yes)、画像処理内容Pn,Pbは同じパイプライン機構によって実現されるので(図9中のS24、Yes)、5番目の画像処理内容Pbは再割当リストに登録される。再割当リストには、6番目の画像処理内容Pnも登録される。2〜4番目の画像処理内容もソフトウェア処理部16に割り当てられており、同一のパイプライン機構によって実現されるので、2〜4番目の画像処理内容も再割当リストに登録される。上述したように、1番目と2番目の画像処理内容はアクセラレータ12に割り当てられているため、再割当リストに登録されない。その結果、3〜6番目の画像処理内容が再割当リストに登録されることになる。そのため、3〜6番目の画像処理内容のソフトウェア処理時間の合計Tcpuが算出される(S28)。縮小画像生成のソフトウェア処理時間は「160ms」であるため、その合計Tcpuは「640ms(160ms×4)」となる。また、3〜6番目の画像処理内容をアクセラレータ12によって実行する場合に要する処理時間Tacc(初期化時間を含む時間)が算出される(S29)。2番目の画像処理内容が「OCR前処理」であり、その「OCR前処理」がアクセラレータ12に割り当てられているため、3番目の画像処理内容「縮小画像生成」をアクセラレータ12によって実行するためには、アクセラレータ12の初期化が必要となる。それ故、3〜6番目の画像処理内容の処理時間Tacc(初期化時間を含む時間)は、OCR前処理のパイプライン機構の破棄時間「120ms」と、セットアップ時間「220ms」と、ハードウェア処理時間「200ms(50ms×4)」と、の合計「540ms」となる。3番目の画像処理内容を実行するためには初期化時間を含めて「390ms」かかるが、4〜6番目の画像処理内容においては初期化時間が不要となるため、4〜6番目の画像処理内容の実行に要する時間は「50ms」で済む。アクセラレータ12による処理時間Tacc「540ms」が、ソフトウェア処理部16での処理時間の合計Tcpu「640ms」よりも短いため(S30,No)、3〜6番目の画像処理の処理デバイスは、ソフトウェア処理部16(CPU)からアクセラレータ12に変更される(S31)。つまり、3〜6番目の画像処理内容の実行は、アクセラレータ12に再割当される。
図13には、再割当後の処理リストの一例が示されている。実施例2の再割当処理が適用されることにより、3〜6番目の画像処理の処理デバイスは、ソフトウェア処理部16(CPU)からアクセラレータ12(ACC)に変更されている。上述したように、3番目の画像処理内容においては初期化が必要となるため、処理時間は初期化時間を含めて「390ms」となるが、4〜6番目の画像処理内容においては初期化が不要となるため、処理時間は「50ms」で済む。
図13には、1〜6番目の画像処理要求の実行に要する処理時間の合計が示されている。全ての画像処理要求をソフトウェア処理部16(CPU)によって実行した場合、処理時間の合計は「2280ms」となる。全ての画像処理要求をアクセラレータ12によって実行した場合、処理時間の合計は「1290ms」となる。実施例1を適用した場合、処理時間の合計は「1390ms」となる。実施例2を適用した場合、処理時間は「1290ms」となる。
以上のように、実施例2によると、同じ画像処理が連続する場合において、全体の処理時間がより短縮されるように、画像処理の実行が再割当される。
例えば、10ページ分の画像データを対象として縮小画像生成処理が指定された場合、その処理の要求が1ページ毎の処理要求に分解され、10回分の処理要求が画像処理装置10に与えられることがある。この場合、前の処理が完了しない間に、複数の同一処理が画像処理装置10に登録されることになる。上述したように、6番目の画像処理要求が与えられた段階で、1〜5番目の画像処理内容が未実行となっていることが想定される。実施例2ではこのような場合において、全体の処理時間がより短くなるように、画像処理の実行が再割当される。
なお、上述した例において、2番目の画像処理内容まで実行され、3〜5番目の画像処理内容が未実行の場合であっても、再割当の結果は変わらない。
以降、同じ画像処理(初期化が不要となる処理)が連続するほど、実施例2の効果が大きくなる。図14には、8番目の画像処理要求が与えられた段階の処理リストの一例が示されている。仮に、7番目の画像処理内容が完了しており、処理リストに登録されている画像処理要求がない場合であっても、実施例2によると実施例1よりも処理時間が短くなる。実施例1では、8番目の画像処理内容の実行に際してアクセラレータ12の初期化が必要となり、その分、処理時間が増大するため、8番目の画像処理内容はソフトウェア処理部16に割り当てられる。実施例2では、8番目の画像処理をアクセラレータ12で実行するためのセットアップは既に完了しているため、初期化は不要である。それ故、8番目の画像処理はアクセラレータ12に割り当てられ、その分、全体の処理時間が実施例1よりも短くなる。