説明

画像処理装置、プログラム及び画像処理方法

【課題】複数の演算部を用いてラスタライズ処理を実行する際のメモリ使用量の増大を抑えること。
【解決手段】ページ記述言語データに基づいてバンド単位で生成された中間データをラスタライズ処理する場合に使用されるワーク領域を有するRAM11と、複数のコアを有し、中間データに対して行うラスタライズ処理を複数のコアを用いて実行する制御部10と、を備えた画像処理装置であって、制御部10は、コアの数に基づいて各中間データを構成するバンドを複数に分割して複数の分割領域を生成し、コア毎にラスタライズ処理を行う分割領域を割り当てる画像処理装置。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、プログラム及び画像処理方法に関する。
【背景技術】
【0002】
近年、プロセッサコア等の演算部(以下、コアと称す)が一つのパッケージ内に複数集積されて構成され、各コアに処理を分散させて並列処理を行うことにより、処理性能を向上させたマルチコアプロセッサが開発されている。
【0003】
プリンタ、コピー機、ファクシミリ装置又はこれらの複合機等の画像形成装置においては、このマルチコアプロセッサを用いて並列処理を実行することにより、プリント処理の高速化を図ることが提案されている。
【0004】
このようなマルチコアプロセッサを用いた画像形成装置において、プリント処理を実行する際には、1ページのイメージデータを複数のバンドに分割し、各バンドそれぞれに各コアを割り当てて並列に圧縮処理や伸長処理を行う技術がある。
【0005】
また、ビットマップ化されたイメージを構成する少なくとも一つの走査ラインについて、個々の走査ラインを複数の部分領域に分割した場合の、当該部分領域のそれぞれに複数のプロセッサのうち少なくとも一つを割り当てて、並列に圧縮・伸長処理を行う技術が開示されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2005−108114号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
更に、ビットマップデータの生成処理の効率化を図るために、ページ記述言語(PDL:page description language)形式のデータを複数のバンドに分割された中間言語(DL:Display List)形式のデータに変換し、当該DLデータの各バンドそれぞれを各コアに割り当てて並列にラスタライズ処理を行うことが考えられている。
【0008】
しかしながら、上述のようなラスタライズ処理を行う際には、バンドを構成するライン数に応じた容量のワーク領域がバンド毎に必要となる。そのため、各バンドそれぞれを各コアに割り当てて同時にラスタライズ処理を実行させると、同時に処理が実行されているバンド数分のワーク領域が必要となる。従って、コア数の増加に伴ってワーク領域が増大し、ワーク領域として使用するメモリ容量が増大するという問題が生じる。
【0009】
本発明の課題は、上記問題に鑑みて、複数の演算部を用いてラスタライズ処理を実行する際のメモリ使用量の増大を抑えることである。
【課題を解決するための手段】
【0010】
請求項1に記載の発明は、ページ記述言語形式のデータに基づいてバンド単位で生成された中間言語形式のデータをラスタライズ処理する場合に使用される領域を有する記憶部と、複数の演算部を有し、前記中間言語形式のデータに対して行うラスタライズ処理を前記複数の演算部を用いて実行する制御部と、を備えた画像処理装置であって、前記制御部は、前記演算部の数に基づいて各中間言語形式のデータを構成するバンドを複数に分割して複数の分割領域を生成し、前記演算部毎にラスタライズ処理を行う分割領域を割り当てること、を特徴とする画像処理装置である。
【0011】
請求項2に記載の発明は、請求項1に記載の画像処理装置において、前記制御部は、前記複数の演算部のうち、前記ラスタライズ処理を実行可能な前記演算部の数を取得し、当該取得した演算部の数に応じて前記バンド毎に複数に分割して複数の分割領域を生成すること、を特徴とする。
【0012】
請求項3に記載の発明は、請求項1又は2に記載の画像処理装置において、前記バンドは、予め設定された複数のラインから構成されており、前記制御部は、前記バンドを構成するライン数と前記演算部の数との除算値に基づいて前記分割領域を構成するライン数を決定すること、を特徴とする。
【0013】
請求項4に記載の発明は、請求項1から3のいずれか一項に記載の画像処理装置において、前記制御部は、前記演算部それぞれに対して、前記バンド毎に当該バンドを構成する複数の分割領域のうちいずれか一つの分割領域を設定し、前記演算部毎にラスタライズ処理を行う分割領域として当該設定した分割領域を割り当てること、を特徴とする。
【0014】
請求項5に記載の発明は、請求項1から3のいずれか一項に記載の画像形成装置において、前記制御部は、1ページ分の中間言語形式のデータを構成する複数の分割領域それぞれに対して優先順位を設定し、前記演算部毎にラスタライズ処理を行う分割領域として、ラスタライズ処理されていない最も優先順位の高い分割領域を割り当てること、を特徴とする。
【0015】
請求項6に記載の発明は、ページ記述言語に基づいてバンド単位で生成された中間言語形式のデータに対して行うラスタライズ処理を複数の演算部を用いて実行するコンピュータを、前記演算部の数に基づいて各中間言語形式のデータを構成するバンドを複数に分割して複数の分割領域を生成し、前記演算部毎にラスタライズ処理を行う分割領域を割り当てる制御手段、として機能させるプログラムである。
【0016】
請求項7に記載の発明は、ページ記述言語に基づいてバンド単位で生成された中間言語形式のデータに対して行うラスタライズ処理を複数の演算部を用いて実行する画像処理方法であって、前記演算部の数に基づいて各中間言語形式のデータを構成するバンドを複数に分割して複数の分割領域を生成し、前記演算部毎にラスタライズ処理を行う分割領域を割り当てる制御工程を含むこと、を特徴とする画像処理方法である。
【発明の効果】
【0017】
請求項1、6、7に記載の発明によれば、制御部を構成する演算部の数に基づいて各中間言語形式のデータを構成するバンドを複数に分割して複数の分割領域を生成でき、演算部毎にラスタライズ処理を行う分割領域を割り当てることができる。そのため、1つの演算部が1度にラスタライズ処理を行う中間言語形式のデータのサイズが小さくなり、1つの演算部がラスタライズ処理を行う場合に使用される記憶部の領域を小さくできるため、複数の演算部を用いてラスタライズ処理を実行する際のメモリ使用量の増大を抑えることができる。
【0018】
請求項2に記載の発明によれば、請求項1と同様の効果を得られるのは勿論のこと、ラスタライズ処理の実行可能な演算部の数に応じて1つのバンドを複数に分割して複数の分割領域を生成することができる。
【0019】
請求項3に記載の発明によれば、請求項1又は2と同様の効果を得られるのは勿論のこと、バンドを構成するライン数と演算部の数との除算値に基づいて分割領域を構成するライン数を決定することができる。
【0020】
請求項4に記載の発明によれば、請求項1から3のいずれか一項と同様の効果を得られるのは勿論のこと、演算部毎にラスタライズ処理を行う分割領域として、バンド毎に当該バンドを構成する複数の分割領域のうちいずれか一つの設定された分割領域を割り当てることができるため、1つのバンドのラスタライズ処理を複数の演算部で分担して実行することができ、各演算部がラスタライズ処理を行う場合に使用するメモリ使用量を低減できるとともに、1つのバンドのラスタライズ処理に要する時間の短縮を図ることができる。
【0021】
請求項5に記載の発明によれば、請求項1から3のいずれか一項と同様の効果を得られるのは勿論のこと、演算部毎にラスタライズ処理を行う分割領域として、ラスタライズ処理されていない最も優先順位の高い分割領域を割り当てることができるため、1ページ分の中間言語形式のデータを構成する複数の分割領域のラスタライズ処理を、複数の演算部で分担して実行することができ、各演算部がラスタライズ処理を行う場合に使用するメモリ使用量を低減できるとともに、1ページのラスタライズ処理に要する時間の短縮を図ることができる。
【図面の簡単な説明】
【0022】
【図1】画像処理装置の制御ブロック図である。
【図2】起動処理のフローチャートである。
【図3】初期化処理のフローチャートである。
【図4】受信したジョブデータに基づいてビットマップデータを生成する処理のフローチャートである。
【図5】ラスマスターのフローチャートである。
【図6】1ページ分の中間データを構成する各バンドを複数の分割領域に分けたイメージ図である。
【図7】固定配分処理のイメージ図である。
【図8】順次配分処理のイメージ図である。
【図9】透過処理機能を有するページ記述言語形式のデータの透過処理のイメージ図である。
【図10】1バンド分のデータの透過処理のイメージ図である。
【発明を実施するための形態】
【0023】
以下、図を参照して本発明の実施の形態を詳細に説明する。
まず、構成を説明する。
図1に、本実施の形態における画像処理装置1の制御ブロック図を示す。
図1に示すように、画像処理装置1は、制御部10、RAM(Random Access Memory)11、ROM(Read Only Memory)12、HDD(Hard Disk Drive)13、操作部14、表示部15、画像読取部16、プリント部17、通信部18等を備え、各部はバス19等により接続されて構成されている。
【0024】
本実施の形態における画像処理装置1は、読取対象原稿(以下、原稿と称す)から画像を読み取り、読み取った画像を処理対象紙としての枚葉紙等の記録媒体(以下、用紙と称す)に画像形成するコピー機能や、パーソナルコンピュータ等の外部装置からジョブデータを受信し、受信したジョブデータに基づいて用紙上に画像を形成して出力するプリンタ機能等を備えた画像形成装置としての機能も有する。
【0025】
制御部10は、プロセッサコア等の演算部(以下、コアと称す)を複数備えて構成されたマルチコアプロセッサを用いて構成される。なお、制御部10は、コアに替えてCPUを集合させ、マルチコアプロセッサと同等の機能を発揮するように構成されてもよい。
【0026】
制御部10は、ROM12内に格納されている各種処理プログラムやデータをRAM11やHDD13に展開し、当該プログラムに基づいて画像処理装置1の各部の動作を集中制御する。例えば、操作部14や通信部18と接続された外部装置から入力される指示信号に従って、コピーモード、プリントモード、スキャナモードを切り替え、各モードに対する処理プログラムを読み出して、複写、印刷、画像データの読取等の制御を行う。
【0027】
また、制御部10は、RAM11、ROM12又はHDD13との協働により、ポストスクリプト(登録商標)やPCL等のページ記述言語形式の画像データ(以下、PDLデータと称す。)や、PDF(Portable Document Format)やXPL(XML Paper Specification)等の記述言語形式の画像データ(以下、PDLデータ及びPDF,XPL等の画像データを総称してページ記述言語データと称す。)に基づいて、形式の異なる複数のデータの生成及び保存を行う。
【0028】
詳しくは、制御部10は、まず、ページ記述言語データを解釈して当該ページ記述言語データとビットマップ形式のデータ(以下、ビットマップデータと称す。)との間の中間言語形式のデータ(以下、中間データと称す。)をバンド単位で生成してRAM11内に保存させ、また、中間データに基づいてビットマップデータを生成してRAM11に保存させる。
【0029】
中間データは、ページ記述言語データに含まれるオブジェクト(テキストデータ、グラフィックスデータ、イメージデータ等)の特徴に応じて生成されるデータである。例えば、テキストデータやグラフィックスデータの中間データとしてはベクタ形式のデータ、イメージデータの中間データとしてはイメージ形式のデータ、を挙げることができる。
【0030】
RAM11は、画像形成に係るデータ等、各種プログラムで処理されたデータ等を一時的に記憶する。RAM11に替えて、例えば、HDD(Hard Disk Drive)、MRAM(Magnetic Random Access Memory)又はフラッシュメモリなどの読み書き可能な揮発性又は不揮発性記憶媒体を用いてもよい。
【0031】
また、本実施の形態のRAM11は、バンド単位で生成された中間データに対してラスタライズ処理をしてビットマップデータを生成する場合に使用されるラスタライズ領域を複数含んだワーク領域を有する記憶部として機能する。
なお、RAM11は、制御基板等に固定的に設けられるもの、若しくは着脱自在に装着するものであっても良い。
【0032】
ROM12は、画像形成に係る各種処理プログラム、画像形成に係るデータ等、各種プログラムで処理されたデータ等を記憶する。また、ROM12は、制御部10及びRAM11との協働により本実施の形態の各処理を実現させるためのプログラムやデータを記憶している。ROM12に替えて、例えば、磁気的、光学的記憶媒体又は半導体メモリ等の読み出し可能な不揮発性の記憶媒体を用いてもよい。また、このROM12は、制御基板等に固定的に設けられるもの、若しくは着脱自在に装着するものであっても良い。
【0033】
例えば、ROM12には、通信部18を介して入力されるジョブデータを受信して、RAM11内に記憶させる機能を実現させるためのプログラムやデータが記憶されている。また、ROM12には、RAM11内に記憶されているジョブデータを読み出し、読み出されたジョブデータの電子データとビットマップデータとの間の形式の中間データをバンド単位で生成してRAM11内に保存させる機能を実現させるためのプログラムやデータが記憶されている。
【0034】
更に、ROM12には、制御部10に搭載されている全てのコア数の情報と、バンド単位で生成される中間データのライン数(バンドライン数)が予め記憶されている。
また、ROM12には、制御部10が備えるコアの数に基づいて、各バンドの中間データを複数に分割して複数の分割領域を生成し、コア毎にラスタライズ処理を行う分割領域を割り当てるラスタライズマスター処理(以下、ラスマスターと称す)を実行するためのプログラムやデータが記憶されている。
また、ROM12には、割り当てられた中間データに基づいて、ビットマップデータを生成して保存させるラスタライズスレーブ処理(以下、ラススレーブと称す)を実行するためのプログラムやデータが記憶されている。
【0035】
更に、ROM12には、生成された1ページ分のビットマップデータをプリント部17に出力して用紙上に画像を形成させ、また、出力されたビットマップデータをRAM11から消去(解放)する機能を実現させるためのプログラムやデータが記憶されている。
なお、本実施の形態では、ビットマップデータの出力先をプリント部17として説明するが、これに限らず、例えば、出力先を表示部15としてビットマップデータに基づく画像を表示部に表示させてもよい。
【0036】
HDD13は、オペレーションプログラムや各種のアプリケーションプログラム及びジョブデータ等の各種データを所定のアドレスと対応付けて記憶する。
なお、HDD13に替えて、CF(Compact Flash)等を用いてもよく、読み書き可能な不揮発性の記憶媒体であればよい。
【0037】
操作部14は、赤外線式や静電式のタッチパネル及びハードキーから構成される。タッチパネルは、LCD(Liquid Crystal Display)等から構成される表示部15に重畳して設けられる。表示部15には、画像処理装置1の各種操作画面や各種操作案内が表示される。
【0038】
画像読取部16は、自動原稿送り部と読取部とを備えて構成されている。
自動原稿送り部は、ADF(Auto Document Feeder)と称されるものであり、原稿トレイに積載される原稿を読取部の読取箇所に一枚ずつ搬送する。
読取部は、光源、レンズ、コンタクトガラス、イメージセンサ等が設けられたスキャナを備えて構成され、原稿に照射した光の反射光を結像して光電変換することにより原稿の画像を読み取り、プリント部17に出力する。ここで、画像とは、図形や写真等のイメージデータに限らず、文字や記号等のテキストデータ等も含む意である。
【0039】
プリント部17は、電子写真プロセス等により各種の画像形成を行う公知の画像形成機構から構成されるものであり、各色(例えば、イエロー(Y)、マゼンダ(M)、シアン(C)、ブラック(K))毎のビットマップデータに基づく画像を用紙等に形成して出力する。
【0040】
通信部18は、画像処理装置1を外部の通信回線と接続させて、外部装置との通信を可能とする。通信部18は、例えばNIC(Network Interface Card)等であり、通信回線の種類に応じた接続を可能とする装置を用いることができる。
【0041】
次に、本実施の形態の動作を説明する。
図2に、本実施の形態における起動処理のフローチャートを示す。
図2に示す起動処理は、制御部10を構成する複数のコアのうちいずれか一つと画像処理装置内の各部との協働により実行されるものとする。
【0042】
まず、画像処理装置1に電源が供給されると、画像処理装置内の各部が起動され(ステップS1)、初期化処理が実行される(ステップS2)。初期化処理後、画像処理装置1は、ジョブデータの受信待機状態となり(ステップS3)、起動処理が終了される。
【0043】
図3に、ステップS2で実行される初期化処理のフローチャートを示す。
ラスマスターを実行するためのプログラムがRAM11に展開され、ラスマスターが起動する(ステップS11)。起動したラスマスターは処理開始のタイミングまで待機状態となる。また、制御部10に搭載されている全てのコア数の情報がROM12から取得される(ステップS12)。
【0044】
ステップS12で取得されたコア数がRAM11に展開されて起動しているラススレーブ数より多いか否かが判別される(ステップS13)。
【0045】
コア数がラススレーブ数よりも多い場合(ステップS13;YES)、ラススレーブを実行するためのプログラムがRAM11に展開され、ラススレーブが1つ起動し(ステップS14)、ステップS13の処理に進む。起動したラススレーブは、処理開始のタイミングまで待機状態となる。
【0046】
コア数がラススレーブ数以下の場合(ステップS13;NO)、初期化処理が終了される。
【0047】
即ち、ステップS2で実行される初期化処理では、制御部10が備えるコア数に応じた数のラススレーブを実行するタスクが立ち、当該タスクが実行待ち状態となる。例えば、制御部10が4つのコアを備えている場合には、ラススレーブを実行するタスクが4つ立つこととなる。
【0048】
図4に、受信したジョブデータに基づいてビットマップデータを生成する処理のフローチャートを示す。図4に示す処理は、制御部10を構成する複数のコアのうちいずれか一つと画像処理装置内の各部との協働により実行されるものとする。
【0049】
まず、制御部10に搭載されている複数のコアのうち、ラスタライズ処理を実行するために利用可能なコア数が取得される(ステップS21)。
【0050】
ステップS21では、制御部10を構成する複数の各コアの稼動状況を管理するタスクから利用可能なコア数が取得されたり、RAM11内の予め設定された領域に制御部10を構成する複数の各コアの利用状況を示すデータが保存及び更新されるテーブルを設け、当該テーブルを参照することにより利用可能なコア数が取得されたりする。
【0051】
また、1つのバンドを構成するラインの数(バンドライン数)がROM12から取得される(ステップS22)。
バンドは、複数のラインによって構成されている。バンドライン数は、画像処理装置毎に個別予め設定されており、ROM12に予め記憶されている。ラインとは、画像を構成する画素を所定の一方向(例えば画像の主走査方向)に並べた画素の集合であり、所定の一方向と直交する他方向(例えば画像の副走査方向)にラインを並べて組み合わせることで画像が構成される。
【0052】
利用可能コア数とバンドライン数とが取得されると、利用可能コア数に応じて複数に分割されることにより生成される各分割領域を構成するライン数が決定される(ステップS23、S24)。
【0053】
まず、ステップS23では、バンドライン数が利用可能コア数で除算され、除算値が算出される。ステップS23で算出される除算値は、整数の商と剰余(余り)とを含む。
【0054】
そして、ステップS24では、各分割領域を構成する仮のライン数が商の値に設定される。このとき、余りがある場合には、当該余りが示すライン数が、いずれかの分割領域に均等に配分される。
【0055】
例えば、バンドライン数が256、利用可能コア数が3である場合、ステップS23で算出される除算値は、商が85、余りが1となる。この場合、1つのバンドを利用可能コア数である3つの分割領域に分割しているため、この3つの分割領域のうちいずれか一つの分割領域に余り1のラインが配分される。従って、複数の分割領域は、85ラインから成る2つの分割領域と、86ラインからなる1つの分割領域とになる。
【0056】
バンドを構成する複数の分割領域それぞれのライン数が決定されると、解析処理が実行され(ステップS25)、1ページ分の中間データがバンド単位で生成される。1ページ分の中間データが生成されると、待機状態であったラスマスターによる処理が開始され(ステップS26)、各分割領域の中間データをラスタライズするラススレーブを実行するコアが割り当てられる。利用可能な各コアが、割り当てられた分割領域の中間データをラスタライズ領域にラスタライズすることで、1ページ分のビットマップデータが生成される。
【0057】
1ページ分のビットマップデータが生成されると、ジョブデータを構成する全ページのビットマップデータの生成が完了したか否かが判別される(ステップS27)。
全ページのビットマップデータの生成が完了していない場合(ステップS27;NO)、ステップS25の処理に戻り、全ページのビットマップデータの生成が完了した場合(ステップS27;YES)、受信したジョブデータに基づくビットマップデータを生成する一連の処理が終了される。
【0058】
図5に、ステップS26で実行されるラスマスターのフローチャートを示す。
まず、利用可能コアそれぞれに対して、初期化処理で起動させた複数のラススレーブのうちいずれか一つが割り当てられる(ステップS31)。また、各バンドが、ステップS23、24において決定されたライン数に応じて、複数の分割領域に分けられる。
【0059】
ステップS31では、例えば、初期化処理で起動させたラススレーブが4つ(第1〜4ラススレーブ)であり、利用可能コア数が3つのコア(第1〜3コア)である場合には、第1コアに対して第1ラススレーブ、第2コアに対して第2ラススレーブ、第3コアに対して第3ラススレーブが割り当てられる。
【0060】
次に、RAM11に空きラスタライズ領域があるか否かが判別される(ステップS32)。
【0061】
ラスタライズ領域は、中間データがビットマップデータに展開される際に使用される。1バンド分のビットマップデータが生成された場合には、当該ビットマップデータが圧縮されてRAM11の他の領域に保存される(バンド転送)。従って、ステップS31では、中間データからビットマップデータの生成がなされている領域でも、バンド転送している領域でもない領域を、空きラスタライズ領域として判別している。ステップS32の判別処理は、定期的又はバンド転送が完了した際に実行されてもよい。
【0062】
空きラスタライズ領域がない場合(ステップS32;NO)、ステップS32の処理に戻る。空きラスタライズ領域がある場合(ステップS32;YES)、処理の開始待ちのラススレーブがあるか否か、即ち、ラススレーブが待機状態であるコアが判別される(ステップS33)。ステップS33の判別処理は、定期的又はいずれかのコアによるラススレーブが終了した際に実行されてもよい。
【0063】
待機状態のラススレーブがない場合、即ち、利用可能なコア全てがラススレーブを実行又はバンド転送をしている場合(ステップS33;NO)、ステップS33の処理に戻る。待機状態のラススレーブがある場合(ステップS33;YES)、待機状態のラススレーブで実行するための割り当て可能な分割領域があるか否かが判別される(ステップS34)。
【0064】
割り当て可能な分割領域がある場合(ステップS34;YES)、当該割り当て可能な分割領域が、待機状態のラススレーブを実行するコアに割り当てられる(ステプS35)。
【0065】
割り当て可能な分割領域がない場合(ステップS34;NO)、又はステップS35後、1ページ分の中間データを構成する各バンドの分割領域全てが、ラススレーブを実行する複数のコアのうちいずれか一つのコアに割り当てられたか否かが判別される(ステップS36)。
【0066】
1ページ分の中間データを構成する各バンドの分割領域全てが、ラススレーブを実行する複数のコアのうちいずれか一つのコアに割り当てられていない場合(ステップS36;NO)、ステップS32の処理に戻る。1ページ分の中間データを構成する各バンドの分割領域全てが、ラススレーブを実行する複数のコアのうちいずれか一つのコアに割り当てられた場合(ステップS36;YES)、ラスマスターが終了される。
【0067】
次に、図6〜8を参照しながら、ラスマスターでの分割領域の割り当てについて説明する。
【0068】
図6に、1ページ分の中間データを構成する各バンドを複数の分割領域に分けたイメージ図を示す。図6では、利用可能コア数が3であり、1つのバンドを3つの分割領域に分けた場合のイメージ図である。
【0069】
図6に示すように、1ページ分の中間データは、第1バンドB1〜第nバンドBnにより構成されている。第1バンドB1は、第1分割領域B11、第2分割領域B12、第3分割領域B13の3つの分割領域に分けられている。第1バンドB1と同様に、第2バンドB2〜第nバンドBnも、それぞれ3つの分割領域に分けられている。
【0070】
図7、図8に、図6のバンドの分割例におけるラスマスターでの分割領域の割り当て処理のイメージ図を示す。なお、ラスマスターでの分割領域の割り当て処理は、図7又は図8に示す処理のいずれか一方に予め設定されている。
【0071】
図7、図8では、利用可能な3つのコア(第1〜3コア)それぞれにおいて実行されるラススレーブとして、ステップS31において第1コアに第1ラススレーブ、第2コアに第2ラススレーブ、第3コアに第3ラススレーブが割り当てられているものとする。
なお、RAM11内には、ラスタライズ領域としてバンド単位で使用できる3つのラスタライズ領域(第1〜3ラスタライズ領域)が存在するものとする。
【0072】
図7に示すラスマスターでの分割領域の割り当て処理は、1つのバンドのラスタライズ処理が、利用可能なコアそれぞれに配分されて実行されるものである。図7に示すようなラスマスターにおける分割領域の割り当て処理を固定配分処理と称す。
【0073】
まず、図7に示す固定配分処理では、図5のステップS31において、利用可能コアそれぞれに対するラススレーブの割り当てが成されると、各ラススレーブを実行する各コアに対して、各バンドを構成する3つの分割領域のうちいずれか一つの分割領域が設定される。
【0074】
例えば、第1ラススレーブを実行する第1コアに対して、各バンドを構成する3つの分割領域のうち第1分割領域が設定される。第2ラススレーブを実行する第2コアに対しては第2分割領域が設定され、第3ラススレーブを実行する第3コアに対しては第3分割領域が設定される。
【0075】
ステップS31の処理後、図7に示すように、まず、時刻t0のとき、全てのラスタライズ領域が空いており、かつ、全てのコアが実行するラススレーブが待機状態となっているため、第1コアが実行する第1ラススレーブに第1バンドの第1分割領域B11、第2コアが実行する第2ラススレーブに第1バンドの第2分割領域B12、第3コアが実行する第3ラススレーブに第1バンドの第3分割領域B13がそれぞれ割り当てられる(第1割当〜第3割当)。
【0076】
時刻t1のとき、第1〜3コアは、割り当てられた分割領域のラスタライズを第1ラスタライズ領域を用いて開始する。
【0077】
時刻t2のとき、第1コアにおいて第1バンドの第1分割領域B11のラスタライズが終了すると、第1ラススレーブが待機状態となる。また、第2、3ラスタライズ領域が空いている状態である。この待機状態となった第1ラススレーブに対して割り当て可能な分割領域があるかが判別される。第1ラススレーブに対して割り当てられる分割領域としては、各バンドの第1分割領域が設定されているため、未ラスタライズの第1分割領域があるか否かが判別される。未ラスタライズの第1分割領域として、第2バンドの第1分割領域B21が、第1コアが実行する第1ラススレーブに割り当てられる(第4割当)。
【0078】
また、第3コアにおいても第1コアと同様に、第1バンドの第3分割領域B13のラスタライズが終了すると、第3ラススレーブが待機状態となる。第3ラススレーブに対して割り当てられる分割領域としては、各バンドの第3分割領域が設定されているため、未ラスタライズの第3分割領域があるか否かが判別される。未ラスタライズの第3分割領域として、第2バンドの第3分割領域B23が、第3コアが実行する第3ラススレーブに割り当てられる(第5割当)。
【0079】
時刻t3のとき、第1、3コアは、割り当てられた分割領域のラスタライズを、第1ラスタライズ領域とは異なる第2ラスタライズ領域を用いて開始する。
【0080】
時刻t4のとき、第1コアにおいて第2バンドの第1分割領域B21のラスタライズが終了すると、第1ラススレーブが待機状態となる。また、第3ラスタライズ領域が空いている状態である。第4割当の場合と同様に、第1コアが実行する第1ラススレーブに第3バンドの第1分割領域B31が割り当てられる(第6割当)。
そして時刻t5のとき、第1コアは割り当てられた第3バンドの第1分割領域B31のラスタライズを、第3ラスタライズ領域を用いて開始する。
【0081】
時刻t6のとき、第2コアにおいて第1バンドの第2分割領域B12のラスタライズが終了すると、第1バンドを構成する全ての分割領域のラスタライズが完了するため、第1ラスタライズ領域で1バンド分のビットマップデータが生成される。この生成された1バンド分のビットマップデータは、圧縮された後にRAM11内の他の領域に転送され、保存される(バンド転送)。
【0082】
バンド転送が完了すると、第1ラスタライズ領域が空き領域となり、また、第2ラススレーブが待機状態となる。この待機状態となった第2ラススレーブに対して割り当て可能な分割領域があるかが判別される。第2ラススレーブに対して割り当てられる分割領域としては、各バンドの第2分割領域が設定されているため、未ラスタライズの第2分割領域があるか否かが判別される。未ラスタライズの第2分割領域として、第2バンドの第2分割領域B22が、第2コアが実行する第2ラススレーブに割り当てられる(第7割当)。
【0083】
時刻t7のとき、第2コアは、割り当てられた分割領域が第2バンドの分割領域であることから、第2バンドに対するラスタライズが実行されている第2ラスタライズ領域で、割り当てられた分割領域のラスタライズを開始する。
【0084】
以降、各ラススレーブを実行する各コアに対して、各バンドを構成する3つの分割領域のうち設定された分割領域が順次設定され、分割領域単位でラスタライズが実行される。
【0085】
次に、図8に示すラスマスターでの分割領域の割り当て処理は、1ページ分のラスタライズ処理が、待機状態のラススレーブを実行するコアに、1ページを構成する各バンドの分割領域を優先順位に応じて順次割り当てて実行されるものである。図8に示すようなラスマスターにおける分割領域の割り当て処理を順次配分処理と称す。
【0086】
まず、図8に示す順次配分処理では、図5のステップS31において、利用可能コアそれぞれに対するラススレーブの割り当てが成されると、1ページ分の中間データを構成する複数の分割領域それぞれに対して、ラスタライズを実行する優先順位が設定される。
【0087】
例えば、図6に示す第1バンドの第1分割領域B11を第1位、第1バンドの第2分割領域B12を第2位、第1バンドの第3分割領域B13を第3位、第2バンドの第1分割領域B21を第4位、・・・、というように、ページの先頭アドレスから順番に優先順位が設定される場合を用いて、以下説明する。なお、優先順位の設定は、これに限らない。
【0088】
ステップS31の処理後、図8に示すように、まず、時刻t10のとき、全てのラスタライズ領域が空いており、かつ、全てのコアが実行するラススレーブが待機状態となっているため、第1コアが実行する第1ラススレーブに第1バンドの第1分割領域B11、第2コアが実行する第2ラススレーブに第1バンドの第2分割領域B12、第3コアが実行する第3ラススレーブに第1バンドの第3分割領域B13がそれぞれ割り当てられる(第1割当〜第3割当)。
【0089】
時刻t11のとき、第1〜3コアは、割り当てられた分割領域のラスタライズを第1ラスタライズ領域を用いて開始する。
【0090】
時刻t12のとき、第1コアにおいて第1バンドの第1分割領域B11のラスタライズが終了すると、第1ラススレーブが待機状態となる。また、第2、3ラスタライズ領域が空いている状態である。この待機状態となった第1ラススレーブに対して割り当て可能な分割領域があるかが判別される。第1ラススレーブに対して割り当てられる分割領域としては、ラスタライズされていない分割領域のうち最も優先順位の高い分割領域となる。未ラスタライズの分割領域のうち最も優先順位の高い分割領域として第2バンドの第1分割領域B21が、第1コアが実行する第1ラススレーブに割り当てられる(第4割当)。
【0091】
また、第3コアにおいても第1コアと同様に、第1バンドの第3分割領域B13のラスタライズが終了すると、第3ラススレーブが待機状態となる。第3ラススレーブに対して割り当てられる分割領域としては、未ラスタライズの分割領域のうち最も優先順位の高い分割領域としての第2バンドの第2分割領域B22となり、当該第2バンドの第2分割領域B22が、第3コアが実行する第3ラススレーブに割り当てられる(第5割当)。
【0092】
時刻t13のとき、第1、3コアは、割り当てられた分割領域のラスタライズを、第1ラスタライズ領域とは異なる第2ラスタライズ領域を用いて開始する。
【0093】
時刻t14のとき、第1コアにおいて第2バンドの第1分割領域B21のラスタライズが終了すると、第1ラススレーブが待機状態となる。また、第3ラスタライズ領域が空いている状態である。第4割当の場合と同様に、未ラスタライズの分割領域のうち最も優先順位の高い分割領域としての第2バンドの第3分割領域B23が、第1コアが実行する第1ラススレーブに割り当てられる(第6割当)。
そして時刻t15のとき、第1コアは、割り当てられた分割領域が第2バンドの分割領域であることから、第2バンドに対するラスタライズが実行されている第2ラスタライズ領域で、割り当てられた第2バンドの第3分割領域B23のラスタライズを開始する。
【0094】
時刻t16のとき、第2コアにおいて第1バンドの第2分割領域B12のラスタライズが終了すると、第1バンドを構成する全ての分割領域のラスタライズが完了するため、第1ラスタライズ領域で1バンド分のビットマップデータが生成される。この生成された1バンド分のビットマップデータは、圧縮された後にRAM11内の他の領域に転送され、保存される(バンド転送)。
【0095】
バンド転送が完了すると、第1ラスタライズ領域が空き領域となり、また、第2ラススレーブが待機状態となる。この待機状態となった第2ラススレーブに対して割り当てられる分割領域としては、未ラスタライズの分割領域のうち最も優先順位の高い分割領域としての第3バンドの第1分割領域B31となり、当該第3バンドの第1分割領域B31が、第2コアが実行する第2ラススレーブに割り当てられる(第7割当)。
【0096】
以降、各ラススレーブを実行する各コアに対して、優先順位に応じて分割領域が順次設定され、分割領域単位でラスタライズが実行される。
【0097】
各バンドを構成する各分割領域に含まれるオブジェクトの種類や量によって、1つの分割領域のラスタライズに要する時間が変化する。そのため、図7及び図8に示す例では、第1バンドのバンド転送が開始されるまでに要する時間は、固定配分処理と順次配分処理とでは同一となるが、第2バンドのバンド転送が開始されるまでに要する時間は、順次配分処理よりも固定配分処理の方が短くなり、第3バンドのバンド転送が開始されるまでに要する時間は、固定配分処理よりも順次配分処理の方が短くなる。
【0098】
次に、本実施の形態を適用した場合の効果について説明する。
複数のコアを用いて並列にラスタライズを行う場合、従来では、バンド単位でラスタライズが実行されている。このような従来技術では、XPSやPDF等の透過処理機能を有するページ記述言語形式のデータをラスタライズする場合には、レイヤー数に比例して、RAM11内に必要とされるワーク領域が増大する。
【0099】
図9に、透過処理機能を有するページ記述言語形式のデータの透過処理のイメージ図を示す。
図9では、四角形のカラーのグラフィックスデータDが属するレイヤーL1と、「ABCDE」と描かれたカラーのテキストデータTが属するレイヤーL2とが含まれているページの例を示している。また、図9では、四角形のグラフィックスデータDを背景として、当該四角形のグラフィックスデータに透過率40%でテキストデータTを重ね合わせた画像が形成される場合の例を示している。
【0100】
図9に示すようなページに対してラスタライズ処理を実行する場合、四角形のグラフィックオブジェクトデータが属するレイヤーL1をバンド単位でラスタライズするためのワーク領域と、テキストオブジェクトデータが属するレイヤーL2をバンド単位でラスタライズするためのワーク領域と、が必要となる。
【0101】
例えば、図9に示す各バンドそれぞれが、バンドライン数が256、バンド幅が1024で構成されている場合、カラー(CMYK)の1バンドをラスタライズするために必要なワーク領域のサイズは、1画素に対して8[bit]必要とすると、1[MByte](=256×1024×8×4(CMYK)=8388608[bit]=1[MByte])となる。
そして、1バンドBaが2つのレイヤーのバンドBa1、Ba2から構成されている場合には、1バンドのビットマップデータを生成するために、2[MByte](=1[MByte]×2)のワーク領域が必要となる。
更に、バンドBaのラスタライズを第1コア、バンドBbのラスタライズを第2コア、バンドBcのラスタライズを第3コア、という様に各バンドに対して各コアがそれぞれ並列にラスタライズ処理を実行する場合には、6[MByte](=2[MByte]×3)のワーク領域が必要となる。
【0102】
従って、従来技術を採用した図9に示すように、例えば、3つのコアを用いてラスタライズをバンド単位で並列に行う場合には、RAM11内に6[MByte]以上のワーク領域を常に確保しなくてはならない。
【0103】
一方、本実施の形態では、1つのバンドを利用可能コア数で複数の分割領域に分け、各分割領域を各利用可能コアで並列にラスタライズ処理を行うものである。
【0104】
図10に、本実施の形態を適用した場合における図9に示す1バンド分のデータの透過処理のイメージ図を示す。図10に示すように、本実施の形態では、1つのバンドを利用可能コア数(例えば、3)で分けられた複数(例えば、3つ)の分割領域毎に各利用可能コアでラスタライズ処理が行われる。
【0105】
例えば、図10に示す1つのバンドが、バンドライン数が256、バンド幅が1024で構成されている場合であって、ライン数が85、85、86の3つの分割領域に分けられている場合には、カラー(CMYK)の1つの分割領域(ライン数85)をラスタライズするために必要なワーク領域のサイズは、1画素に対して8[bit]必要とすると、約0.33[MByte](=85×1024×8×4(CMYK)=2785280[bit]≒0.33[MByte])となる。
そして、1つの分割領域Ba31が2つのレイヤーBa11、Ba21から構成されている場合には、1つの分割領域のビットマップデータを生成するために、約0.67[MByte](=0.33[MByte]×2)のワーク域が必要となる。
更に、分割領域Ba31のラスタライズを第1コア、分割領域Ba32のラスタライズを第2コア、分割領域Ba33のラスタライズを第3コア、という様に各分割領域に対して各コアがそれぞれ並列にラスタライズを実行する場合には、約2[MByte](=0.67[MByte]×3)のワーク領域が必要となる。
【0106】
従って、図10に示すように、例えば、3のコアを用いてラスタライズを分割領域単位で並列に行う場合には、RAM11内に約2[MByte]以上のワーク領域を確保すればよいこととなる。
即ち、本実施の形態を採用した図10の場合では、図9に示す従来の場合と比べて、RAM11内に確保しなくてはならないワーク領域のサイズが大幅に減少することになる。
【0107】
以上のように、本実施の形態によれば、制御部10を構成するコアの数に基づいて各中間データを構成するバンドを複数に分割して複数の分割領域を生成でき、コア毎にラスタライズ処理を行う分割領域を割り当てることができる。そのため、1つのコアが1度にラスタライズ処理を行う中間データのサイズが小さくなり、1つのコアがラスタライズ処理を行う場合に使用されるRAM11内のワーク領域を小さくできるため、複数のコアを用いてラスタライズ処理を実行する際のメモリ使用量の増大を抑えることができる。
【0108】
特に、ラスタライズ処理の実行可能なコアの数に応じて1つのバンドを複数に分割して複数の分割領域を生成することができるため、制御部10内のコアの稼働状況に応じて、分割領域を生成することができる。
【0109】
また、バンドライン数と利用可能コア数との除算値に基づいて分割領域を構成するライン数、即ち、分割領域のサイズを決定することができる。
【0110】
更に、コア毎にラスタライズ処理を行う分割領域として、バンド毎に当該バンドを構成する複数の分割領域のうちいずれか一つの設定された分割領域を割り当てることができる。そのため、1つのバンドのラスタライズ処理を複数のコアで分担して実行することができ、各コアがラスタライズ処理を行う場合に使用するメモリ使用量を低減できるとともに、1つのバンドのラスタライズ処理に要する時間の短縮を図ることができる。
【0111】
また、コア毎にラスタライズ処理を行う分割領域として、ラスタライズ処理されていない最も優先順位の高い分割領域を割り当てることができる。そのため、1ページ分の中間データを構成する複数の分割領域のラスタライズ処理を、複数のコアで分担して実行することができ、各コアがラスタライズ処理を行う場合に使用するメモリ使用量を低減できるとともに、1ページのラスタライズ処理に要する時間の短縮を図ることができる。
【0112】
以上の説明では、本発明に係るプログラムのコンピュータ読み取り可能な媒体として、ROM12を使用した例を開示したが、この例に限定されない。その他のコンピュータ読み取り可能な媒体として、フラッシュメモリ等の不揮発性メモリ、CD-ROM等の可搬型記録媒体を適用することが可能である。また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウエーブ(搬送波)も本発明に適用される。
【0113】
また、本発明は、上記実施の形態の内容に限定されるものではなく、本発明の主旨を逸脱しない範囲で適宜変更可能である。
【符号の説明】
【0114】
1 画像処理装置
10 制御部
10a コア
11 RAM
12 ROM
13 HDD
14 操作部
15 表示部
16 画像読取部
17 プリント部
18 通信部
19 バス

【特許請求の範囲】
【請求項1】
ページ記述言語形式のデータに基づいてバンド単位で生成された中間言語形式のデータをラスタライズ処理する場合に使用される領域を有する記憶部と、複数の演算部を有し、前記中間言語形式のデータに対して行うラスタライズ処理を前記複数の演算部を用いて実行する制御部と、を備えた画像処理装置であって、
前記制御部は、
前記演算部の数に基づいて各中間言語形式のデータを構成するバンドを複数に分割して複数の分割領域を生成し、前記演算部毎にラスタライズ処理を行う分割領域を割り当てること、
を特徴とする画像処理装置。
【請求項2】
前記制御部は、
前記複数の演算部のうち、前記ラスタライズ処理を実行可能な前記演算部の数を取得し、当該取得した演算部の数に応じて前記バンド毎に複数に分割して複数の分割領域を生成すること、
を特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記バンドは、予め設定された複数のラインから構成されており、
前記制御部は、
前記バンドを構成するライン数と前記演算部の数との除算値に基づいて前記分割領域を構成するライン数を決定すること、
を特徴とする請求項1又は2に記載の画像処理装置。
【請求項4】
前記制御部は、
前記演算部それぞれに対して、前記バンド毎に当該バンドを構成する複数の分割領域のうちいずれか一つの分割領域を設定し、前記演算部毎にラスタライズ処理を行う分割領域として当該設定した分割領域を割り当てること、
を特徴とする請求項1から3のいずれか一項に記載の画像処理装置。
【請求項5】
前記制御部は、
1ページ分の中間言語形式のデータを構成する複数の分割領域それぞれに対して優先順位を設定し、前記演算部毎にラスタライズ処理を行う分割領域として、ラスタライズ処理されていない最も優先順位の高い分割領域を割り当てること、
を特徴とする請求項1から3のいずれか一項に記載の画像形成装置。
【請求項6】
ページ記述言語に基づいてバンド単位で生成された中間言語形式のデータに対して行うラスタライズ処理を複数の演算部を用いて実行するコンピュータを、
前記演算部の数に基づいて各中間言語形式のデータを構成するバンドを複数に分割して複数の分割領域を生成し、前記演算部毎にラスタライズ処理を行う分割領域を割り当てる制御手段、
として機能させるプログラム。
【請求項7】
ページ記述言語に基づいてバンド単位で生成された中間言語形式のデータに対して行うラスタライズ処理を複数の演算部を用いて実行する画像処理方法であって、
前記演算部の数に基づいて各中間言語形式のデータを構成するバンドを複数に分割して複数の分割領域を生成し、前記演算部毎にラスタライズ処理を行う分割領域を割り当てる制御工程を含むこと、
を特徴とする画像処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2011−158951(P2011−158951A)
【公開日】平成23年8月18日(2011.8.18)
【国際特許分類】
【出願番号】特願2010−17867(P2010−17867)
【出願日】平成22年1月29日(2010.1.29)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.COMPACTFLASH
【出願人】(303000372)コニカミノルタビジネステクノロジーズ株式会社 (12,802)
【Fターム(参考)】