画像形成装置、画像処理方法
【課題】複数のコアを持つ画像形成装置において、描画処理部の待機時間を縮小し、複数のコアにより効率的に印刷することが可能な画像形成装置及び画像処理方法を提供すること。
【解決手段】ページの領域毎に描画処理手段16が描画処理する画像形成装置200であって、印刷データを格納する印刷データ格納手段13と、印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段12と、描画命令生成手段と並行して印刷データを解析し、描画処理手段16が受け持つ領域を決定するための最適化情報を作成する最適化情報作成手段14と、描画命令データと最適化情報を記憶する中間データ記憶手段15と、最適化情報に基づき受け持つ領域を決定し、領域毎に描画命令データを描画処理する描画処理手段16と、を有することを特徴とする。
【解決手段】ページの領域毎に描画処理手段16が描画処理する画像形成装置200であって、印刷データを格納する印刷データ格納手段13と、印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段12と、描画命令生成手段と並行して印刷データを解析し、描画処理手段16が受け持つ領域を決定するための最適化情報を作成する最適化情報作成手段14と、描画命令データと最適化情報を記憶する中間データ記憶手段15と、最適化情報に基づき受け持つ領域を決定し、領域毎に描画命令データを描画処理する描画処理手段16と、を有することを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、印刷データを可視化処理する画像形成装置等に関し、特に、マルチコア又は複数のCPUを用いて印刷データを処理する画像形成装置及び画像処理方法に関する。
【背景技術】
【0002】
従来の組み込み機器にはシングルコアのCPUが多く使用されてきたが、デュアルコアやクアッドコアといった複数のコアを持つマルチコアのCPUが、汎用PCへ普及することに伴い、組み込み機器にもその導入が進められている。
【0003】
しかし、単にコアの数が2倍になったからといって、その性能が2倍になるとは限らず、その影響度はアルゴリズムなどに依存する。すなわち、マルチコアの性能を最大限に引き出すには、各コアに処理を適切に配分し、処理を並列に実行する必要があり、その際、各コアに"待ち"が発生しないようにすることで2倍に近い性能を引き出すことができる。しかし一般的に各処理がすべて並列に実行できること(性能が2倍になるような処理)は稀であり、いかに処理を並列化するかが技術的な課題となる。
【0004】
PDLデータを解析して描画対象をレンダリングするプリンタコントローラもマルチコアのCPUを搭載することが検討されている。プリンタコントローラが、複数のコア(プロセッサ)を使用して印刷する場合、中間データを生成する「PDL解析部」に1つ、中間データに基づきレンダリングを行う「描画処理部」に残りを割り当て、各描画処理部に割り当てる処理量を平均化して描画処理部に待ちが発生しないようにする技術が考案されている(例えば、特許文献1参照。)。
【0005】
特許文献1には、複数の描画処理部にかかる負荷を均一化して印刷性能の効率化を図る目的で、各描画領域にて処理されるオブジェクトの面積から描画の負荷を算出し、各描画処理部にかかる負荷が均一になるように描画領域のサイズを決定して割り当てる描画処理装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1では、PDL解析部でページを複数の領域に分割し、各領域に存在する描画オブジェクトの面積から処理量を計算している。このため、描画処理部はPDL解析部の処理が終わるまでオブジェクトの描画が始められず待ち状態となってしまうことになり、各コアやCPUを有効に使用できていないという問題がある。
【0007】
また、特許文献1では、処理量のみを基準に領域を分割しているため各描画処理部の特性に応じた最適な割り当てができていないという問題がある。
【0008】
本発明は、上記課題に鑑み、複数のコア又はCPUが搭載されたプリンタコントローラの、描画処理部の待機時間を縮小し、複数のコアにより効率的に印刷することが可能な画像形成装置及び画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記課題に鑑み、本発明は、ページの領域毎に描画処理手段が描画処理する画像形成装置であって、印刷データを格納する印刷データ格納手段と、前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段と、前記描画命令生成手段と並行して前記印刷データを解析し、前記描画処理手段が受け持つ前記領域を決定するための最適化情報を作成する最適化情報作成手段と、前記描画命令データと前記最適化情報を記憶する中間データ記憶手段と、前記最適化情報に基づき受け持つ領域を決定し、領域毎に前記描画命令データを描画処理する前記描画処理手段と、を有することを特徴とする。
【発明の効果】
【0010】
複数のコア又はCPUが搭載されたプリンタコントローラの、描画処理部の待機時間を縮小し、複数のコアにより効率的に印刷することが可能な画像形成装置及び画像処理方法を提供することができる。
【図面の簡単な説明】
【0011】
【図1】本実施形態のレンダリング処理を模式的に説明する図の一例である。
【図2】印刷システムの一例を示す図である。
【図3】MFPのハードウェア構成図の一例である。
【図4】コントローラの機能を模式的に説明する図の一例である。
【図5】PDL部の機能ブロック図の一例を示す図である。
【図6】PDF(Portable Document Format)ファイルのフォーマット例を示す図である。
【図7】中間データの一例を示す図である。
【図8】PDL部の処理の内部的な手順を模式的に示す図の一例である。
【図9】ベクターグラフィックにおけるバウンディングボックスの一例を説明する図の一例である。
【図10】最適化情報とそこから算出される負荷値の一例を示す図である。
【図11】最適化情報作成部が最適化情報から負荷値を算出する手順を示すフローチャート図の一例を示す図である。
【図12】最適化情報の作成手順を示すフローチャート図の一例である。
【図13】ディスプレイリストの作成手順を示すフローチャート図の一例である。
【図14】レンダリングの手順を示すフローチャート図の一例である。
【図15】負荷値の算出の別の一例を示す図である。
【図16】タイミングチャート図の一例である。
【図17】タイミングチャート図の別の一例である。
【図18】領域毎のオブジェクトが偏ったページの一例を示す図である。
【図19】各コアがレンダリングを実行する領域を決定する手順を示すフローチャート図の一例である。
【図20】各コアにとって得意なレンダリング及び不可能なレンダリングが登録されたテーブルの一例である。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図1は、本実施形態のレンダリング処理を模式的に説明する図の一例である。例えば、4つのコアがあるとして、各コアが以下のように処理を分担している。
コア1:PDL解析(ディスプレイリストの作成)
コア2:最適化情報の作成→レンダリング
コア3:レンダリング
コア4:レンダリング
すなわち、PDL解析と最適化情報の作成を別々のコアに割り当てることで、この2つの処理が時間的に並行に実行されることが特徴の1つである。なお、最適化情報とはレンダリングの負荷値又は負荷値を求めるための情報である。
【0013】
すると、コア1は最適化情報を作成する必要がないので、比較的重い処理であるPDL解析だけを従来よりも短い時間で完了できる。また、コア2は、比較的軽い処理である最適化情報の作成だけを行えばよいので、コア1が1ページ分のPDL解析を行う間に、複数のページの最適化情報を作成できる。
【0014】
この結果、レンダリングするコア3,コア4が待機する時間は、コア1が1ページ分をPDL解析するまでの時間に短縮できる。すなわち、従来、PDL解析部が最適化情報も作成していたため、レンダリングするコア3,コア4がPDL解析+最適化情報の作成が完了するまで待機する必要があったのと比べて、処理時間を短縮できる。
【0015】
〔構成〕
図2は、印刷システム300の一例を示す図である。ホストPC(Personal Computer)150とMFP(Multi Function Peripheral)200がネットワークを介して接続されている。
【0016】
ホストPC150がユーザの操作を受け付け、例えば何らかのアプリケーションプログラムがOSのグラフィック制御部(例えばGDI)に文書データの印刷を要求する。グラフィック制御部は、アプリケーションに依存しないAPI(基本関数)により文書データを描画する描画命令(中間ファイル)を生成する。
【0017】
この後、グラフィック制御部は、MFP200が対応したPDLデータを生成するプリンタドライバを呼び出す。グラフィック制御部とプリンタドライバの間には、DDI(Device Driver Interface)と呼ばれるインタフェースが定義されている。プリンタドライバは、中間ファイルをプリンタが解釈可能なPDLデータに変換し、MFP200に送信する。
【0018】
PDLデータとしては、PostScript、PCL、RPCS、PDF(Portable Document Format)、又は、XPSなどのフォーマットが知られており、PDLデータのフォーマットはMFP200が解析可能なフォーマットである必要がある。
【0019】
MFP200は、PDLデータからディスプレイリストと最適化情報を作成し、描画処理(レンダリング処理)などを行い、印刷する。なおMFP200は、プリンタ機能さえ有していればよいが、複写機、スキャナ、送信機能(FAX、電子メール、フォルダ)等を有していてもよい。
【0020】
図3は、MFP200のハードウェア構成図の一例である。MFP200は、MFP200の全体を制御するコントローラ100 と、用紙に画像を印刷するためのエンジン160と、ユーザが入力を行う操作パネル・状態を表示するパネル装置 170 とを有する。
【0021】
コントローラ100 は、CPU110、ROM120、RAM130、NVRAM140、ネットワークI/F151、エンジンI/F161、パネルI/F171、及び、HDD180を有する。
【0022】
CPU110は、第1コア111、第2コア112、第3コア113、及び、第4コア114を有するマルチコア型のCPUであり、プログラム181に記述された命令を実行する。プログラム181は、第1コア111、第2コア112、第3コア113、及び、第4コア114のそれぞれ専用に、4つに分かれていてもよいし、1つのプログラムを4つのコアが重複して実行してもよい。CPU110のコア数は2個以上であれば5個以上でもよい。また、マルチコア型でなく、マルチプロセッサ又はマルチCPUと呼ばれる、複数の独立したCPUを搭載してもよい。
【0023】
ROM120には、起動用のプログラムや初期設定値などが記憶されている。RAM130は、コントローラ100が作成するページメモリやソフトウエアが動作するために必要なワークメモリとして利用される。NVRAM140は、MFP200に設定された印刷条件などを保存しておく不揮発性メモリである。ネットワークI/F151は、ネットワーク上に接続されたホストPC150とデータを送受信する。エンジンI/F161は印刷指示等を行いエンジン160を制御する。
【0024】
エンジン160は、少なくとも画像形成を行うプロッタエンジンを有する。プロッタエンジンは、例えばタンデム型の感光ドラムを有し、ホストPC150から受信したPDLデータをレンダリングして得られた画像データに基づきレーザビームを変調し感光ドラムを走査して潜像を形成する。そして、潜像にトナーを付着して現像した1ページ毎のトナー画像を用紙に熱と圧力で転写する。なお、プロッタエンジンは、インクジェット方式でもよい。また、エンジン160には、スキャナエンジンやFAXエンジンがある。
【0025】
パネルI/F171はパネル装置170との入出力を制御する。HDD180はフォントデータやプログラム181を記憶する。
【0026】
図4は、コントローラ100の機能を模式的に説明する図の一例である。図4において図3と同一部には同一の符号を付しその説明は省略する。コントローラ100の機能は、CPU110がプログラム181を実行して実現される、プリンタコントロールシステム204とPDL部205に代表される。
【0027】
PDL部205は、PDLデータをプリンタコントロールシステム204から受け取り印刷画像を作成する。PDL部205は、PDLデータのフォーマットとしてPostScript PCL、RPCS、PDF、XPS等に対応している。
【0028】
プリンタコントロールシステム204は、ネットワークI/F202が受信するPDLデータを印刷するため、PDL部205にレンダリングを要求し、その後、エンジンI/F206に印刷を要求するなど、印刷の手順を制御する。
【0029】
図5は、PDL部205の機能ブロック図の一例を示す図である。PDL部205は、入力データ受信部11、DL作成部12、最適化情報作成部14、複数の描画処理部16、PDLデータ格納部13、及び、中間データ格納部15、を有する。PDLデータ格納部13や中間データ格納部15はHDD180やRAM130を実体とする。
【0030】
入力データ受信部11は、ネットワークI/F151がホストPC150から受信したPDLデータを、PDLデータ格納部13に記憶する。DL作成部12は、PDLデータを構文解析し、PDLデータに含まれるオブジェクト(テキスト、イメージ、ベクターグラフィックス等)を抽出するとともに、これとPDLデータに含まれる描画情報に基づき、ディスプレイリスト(中間データ)を作成する。ディスプレイリストは中間データ格納部15に格納される。
【0031】
最適化情報作成部14は、PDLデータから描画対象となる各種のオブジェクトの配置情報や種類などの特徴から最適化情報を作成する。この最適化情報も中間データ格納部15に格納される。最適化情報については後述するが、最適化情報はオブジェクト(又はオブジェクトが含まれる描画領域)をレンダリングする描画処理手段16を決定するための情報である。より具体的にはオブジェクトを描画する際の処理負荷を決定するための情報、又は、処理負荷そのものである。
【0032】
描画処理部16は、中間データ格納部15に保存されているディスプレイリストや最適化情報に基づいて描画を担当する描画領域を決定し、描画領域毎にディスプレイリストに基づき出力イメージデータをレンダリングする。なお、描画領域はページを長手方向に等間隔又は予め定めた間隔で区分したページ上の一範囲をいい、最適化情報作成部14や描画処理部16にとって既知である。
【0033】
図示する描画処理部16が3つなのは、CPU110のコア数を考慮したためであり、本実施形態では、4つのコアの1つをDL作成部12に、4つのコアの1つを最適化情報作成部14に、残りを描画処理部16に、それぞれ割り当てる。なお、最適化情報作成部14は描画処理部16としても作動する。このため図では描画処理部16が3つある。
【0034】
〔PDLデータ等について〕
図6は、PDF(Portable Document Format)ファイルのフォーマット例を示す図である。ここではPDLデータを説明するため、PDFファイルを用いた。
【0035】
PDFファイルは、ヘッダ、ボディ、相互参照表、トレーラから構成されている。ヘッダにはファイルのフォーマットがPDFであることを示すために、PDFのバージョン情報を含めた1行が記述される(例えば、「%PDF-1.4」)。
ボディには、テキストやイメージなどのページを構成するデータの本体がオブジェクトとして記述されている。 なお、各オブジェクトには識別番号が付与されており、各オブジェクトは、ボディ内において、表示される文書のページ順とは無関係に任意の順序で記述される。
オブジェクト番号 世代番号(通常はゼロ) obj
<<
/Type/Page
/Parent オブジェクト番号 世代番号 R
/Contents オブジェクト番号n 世代番号 R
>>
endobj
PDFでは文書の全体、ページ、ページ内の図形や文字を全てオブジェクトとして扱うので、全てにオブジェクト番号が割り当てられる。この例では、Parentの行のオブジェクト番号がこのページの親のページのオブジェクト番号を示す。なお、"R"はこのページが参照するという意味の記号である。
【0036】
また、Contentsの行のオブジェクト番号nは、このページの中身の(このページに記述される)オブジェクトのオブジェクト番号を示す。
【0037】
Contentsオブジェクトがオブジェクト番号nを以下のように記述しているとする(説明に用いない記述は省略した)。
【0038】
オブジェクト番号n 世代番号 obj
<<
/Length バイト数
>>
stream
……ここに描画命令が入る……
endstream
endobj
Lengthはstream〜endstreamで指定されるオブジェクトのサイズ(バイト数)を表す。例えば、文字の場合の描画命令は「BT〜ET」で囲まれる範囲に「フォント識別情報 フォントサイズ 最初の文字の座標系指定 文字列」などの命令が記述される。
【0039】
ベクターグラフィックスの場合「q〜Q」で囲まれる範囲に「座標系の指定 色の指定、座標+移動命令 座標+直線描画命令 座標+曲線描画命令 …」などの命令が記述される。
【0040】
イメージの場合「BI〜EI」で囲まれる範囲に「サイズ、エンコード方法 ID(Image Data)」という形式で記述される。
【0041】
相互参照表には、上記ボディに記述されたオブジェクトのファイル内における位置情報がオフセットとして記述される。すなわち、ファイル先頭から各オブジェクトのデータの先頭までのバイト数が記述される。このように、ボディの記述位置はページ上の位置と何ら関係がない。
【0042】
トレーラには、/Root属性で文書構造の頂上を示すオブジェクト(カタログオブジェクト)がオブジェクト番号で指定される。以降は、ボディの記述と相互参照表により各オブジェクトの位置が定まる。
【0043】
上述したように、PDFファイル内には、表示される文書のページ順とは無関係に任意の順序でオブジェクトが配置されているため、コントローラ100は、各オブジェクトへのアクセスの際、トレーラの内容を参照・解析し、その結果に基づいて、相互参照表の内容を参照・解析することによって、はじめて可能になる。 すなわち標準的なPDFファイルにおいては、参照すべきトレーラおよび相互参照表がファイルの末尾、すなわち、ボディ(データ本体)より後ろに記述されているため、DL作成部12や最適化情報作成部14は、PDFファイルの全体が転送されHDD180などの記憶媒体に記憶されてから処理を開始する必要がある。
【0044】
図7は、ディスプレイリストの一例を示す図である。ディスプレイリストは各描画処理部16が処理可能なデータ形式であり、各種の描画命令や設定情報をリスト化したものである。例えば、「set foreground color(R,G,B)」は前景の色を指示する命令で、「set raster operation(Op Code)」は画像に施す演算を指示する命令で、「draw rectangle(x、y、w、h)」は矩形の描画命令である。
【0045】
DL作成部12が作成したディスプレイリストは、中間データ格納部15に格納され、順次、描画処理部16が解釈し、割り当てられた描画領域に描画すべきオブジェクトがあった場合、該描画領域にレンダリングを行う。
【0046】
〔PDL部の処理内容〕
図8は、PDL部205の処理の内部的な手順を模式的に示す図の一例である。
(1)入力データ受信部11は、PDFの入力を受け付ける。
PCLやPSといったPDLデータは先頭から順番に、DL作成部12がデータを読み込み、解析し、描画することが可能である。
(2)これに対し、PDFやXPSといったPDLデータでは解析すべきデータの先頭位置は入力データの後半(相互参照表、トレーラ)に添付されているため、入力データ受信部11はPDLデータ格納部13にPDLデータを一時保存する必要がある。
(3)しかし、PDLデータ格納部13に保存されたPDLデータは、先頭からの順次アクセスや所望の場所のランダムアクセスだけでなく、複数の処理手段からの同時アクセスが可能となる。
【0047】
そこで、マルチコア環境を利用すれば、第1コア111にDL作成部12を割り当てPDLデータを解析させ、中間データとなるディスプレイリストを作成する一方で、第2コア112に最適化情報作成部14を割り当てPDLデータを解析させ、最適化情報を作成するといった並列処理が可能となる。
(4)同時にディスプレイリスト・最適化情報といった2つの情報を作成すると、PDLデータの解析にかかる処理時間は、ディスプレイリスト・最適化情報のうち処理時間の長い方になる。しかし、最適化情報の作成は、厳密にPDLデータを解析せず、描画オブジェクトの種類から処理の負荷情報や面積を読み出したり、又は、後述するバウンディングボックス(オブジェクトの全体を囲む描画領域)のサイズを算出するだけでよいため、ディスプレイリストを作成するよりも十分軽い処理である。したがって、少なくとも1ページ分のディスプレイリストが作成されるよりも早く、1ページ分の最適化情報が作成される。
(5)描画処理部16に第3コア113、第4コア114を割り当て、2つの描画処理部16が、最適化情報を参照し、描画すべき描画領域(Band)を選択する。
(6)描画処理部16はディスプレイリストを参照・解析しレンダリングを実施する。
【0048】
なお、本来、描画処理部16はディスプレイリストの一部が作成されれば、1ページ分のディスプレイリストが作成されなくても、描画処理を開始することができる。この場合、描画処理部16が最適化情報の作成まで待機すると却って処理速度が低下するおそれもある。
【0049】
図9(a)は、1ページ目のディスプレイリストの作成、最適化情報の作成、及び、描画処理のタイミングチャート図の一例を示す図である。ディスプレイリスト(Parsar1)の作成が完了する前に、描画処理部(レンダラ1−1、レンダラ1−2)が描画処理を開始している。しかし、最適化情報作成部14(最適化Md)が最適化情報(OP1)の作成を完了させるのは、描画処理部14が描画処理を開始するよりも後である。したがって、1ページ目は最適化情報による描画領域の割り当てが間に合わない。
【0050】
このため、本実施形態では、最適化情報作成部14は1ページ目の最適化情報を作成せず、描画処理部16が上方向から描画領域を順番に受け持ち、次ページ目以降において最適化情報を用いて描画領域を割り当てることが好ましい場合がある。よって、この場合、文書が1ページしかないのであれば、最適化情報作成部14は最適化情報を作成しない。
【0051】
なお、描画処理部16がディスプレイリストの作成が完了する前に描画処理を開始しても、最適化情報の作成が完了しだい、描画処理部16が各描画領域を再度、割り当てすることもできる。したがって、1ページ目の最適化情報を常に作成しないことが最も好ましいと言うことはできず、描画処理部の機能などによって最適な処理手順を採用すればよい。
【0052】
次に、バウンディングボックスについて説明する。
図9(b)は、ベクターグラフィックにおけるバウンディングボックスの一例を説明する図の一例である。ここではベクターグラフィックとして3次のベジェ曲線を例にして説明する。P0、P3はベジェ曲線の端点、P1、P2は方向点である。P1とP0を結ぶ線がP0を通るベクターグラフィックの接線となり、P2とP3を結ぶ線がP3を通るベクターグラフィックの接線となる。P0〜P3の曲線は、4つの点P0〜P3の座標とベジェ曲線の公式により定まる。
【0053】
したがって、曲線はすぐに求められても面積を算出することは負荷が大きい。そこで、オブジェクトが文字や複雑な形状のベクターグラフィックの場合、描画処理部16は正確に描画面積を求めず、始点・終点および制御点を全て含む外接矩形をベクターグラフィックボックスとして、このサイズを、描画面積の代用にすることで、計算量を大幅に削減することができる。
【0054】
〔最適化情報〕
図10(a)は最適化情報と最適化情報から算出される負荷値の一例を示す図である。最適化情報には、例えば、オブジェクトの種類と描画面積、又は、これらから算出したオブジェクトを描画する際の負荷値が含まれる(両方を含んでいてもよい)。
【0055】
ディスプレイリストには種々のオブジェクト(テキスト、イメージ、ベクターグラフィックス)の描画命令がリストアップされているが、描画処理部16が処理する内容はオブジェクトの種類によって大きく異なる。
【0056】
本実施形態では、オブジェクトの種類によって異なる処理のうち、負荷の大小が重要であるので、最適化情報としては、各描画オブジェクトのレンダリングに必要な計算コストが挙げられる。
【0057】
最適化情報作成部14は、描画オブジェクトの種類として、上記に挙げた種類(テキスト、イメージ、ベクターグラフィックス)だけでなく、RGBカラーイメージ、モノクロイメージといった描画処理の負荷が大きく異なるものを別々に扱う。
【0058】
また、描画面積は、例えばイメージ、又は、矩形や円形といったベクターグラフィックであれば容易に算出可能だが、ベジエ曲線などのベクターグラフィックは、制御点の集合から面積を算出するには負荷がかかるため(ベクターデータからラスターデータへの変換(スキャンライン変換)が必要であり、処理コストがかかってしまう)、正確な描画面積ではなく、バウンディングボックスのサイズを描画面積の代わりに採用する。
【0059】
図11は、最適化情報作成部14が最適化情報から負荷値を算出する手順を示すフローチャート図の一例である。最適化情報作成部14でなく描画処理部16が算出してもよい。
【0060】
最適化情報作成部14は、図10(b)に示す負荷指数を用いて、各描画領域の負荷値を算出する。負荷指数とは、描画処理部16がオブジェクトを処理する際の能力値による重みであり、オブジェクトの種類毎に負荷が大きいほど大きな値が定められている。例えば、グラフィックは「1」、文字は「0.5」である。負荷指数とオブジェクトの関係は、最適化情報作成部14がコードの一部などに記述することで記憶している。
【0061】
最適化情報作成部14は、まず、ある描画領域のオブジェクトの種類を判定する(S110)。オブジェクトの種類はディスプレイリストから明らかである。
【0062】
最適化情報作成部14はそのオブジェクトの負荷指数を読み出す(S120)。
【0063】
次に、最適化情報作成部14は、オブジェクトがスキャンラインへの変換が必要なベクターグラフィックか否かを判定する(S130)。スキャンラインへの変換が必要なベクターグラフィックか否かは、例えば曲線部を含むか否かにより判定する。
【0064】
スキャンラインへの変換が必要なベクターグラフィックの場合、最適化情報作成部14はバウンディングボックスのサイズを算出する(S140)。
【0065】
スキャンラインへの変換が必要でないベクターグラフィックの場合、最適化情報作成部14はオブジェクトの描画面積を算出する(S150)。
【0066】
そして、最適化情報作成部14は、描画面積又はバウンディングボックスサイズと負荷指数からオブジェクトの負荷値を算出する(S160)。
負荷値の算出例について次述する。
【0067】
<描画領域1(band1)>
図10を例に負荷値の算出例を説明する。
グラフィック1は円形のベクターグラフィック、グラフィック2は矩形のベクターグラフィック、グラフィック3は四角形(ひし形)のベクターグラフィックである。
グラフィック1:描画面積100、 負荷指数:1
グラフィック2:描画面積120、 負荷指数:1
グラフィック3:描画面積150、 負荷指数:1
グラフィック1の負荷値:100
グラフィック2の負荷値:120
グラフィック3の負荷値:150
<描画領域2(band2)>
文字はスキャンラインへの変換が必要なベクターグラフィックである。
文字1:バウンディングボックスサイズ100、 負荷指数:0.5
文字2:バウンディングボックスサイズ130、 負荷指数:0.5
文字3:バウンディングボックスサイズ80、 負荷指数:0.5
文字1の負荷値:50
文字2の負荷値:65
文字3の負荷値:40
<描画領域4(band4)>
イメージ1はRGBフルカラーにイメージデータである。
イメージ1:描画面積500、 負荷指数:3
イメージ1の負荷値:1500
描画処理部16は、各描画領域毎に、オブジェクトの負荷値を合計して描画領域の負荷値とする。そして、負荷値が大きい描画領域から順に描画処理部16はレンダリングの処理対象とする。負荷値の大きい描画領域から先にレンダリング処理が開始されれば、1ページの処理に必要な最大時間を抑制できる可能性が高くなる。
【0068】
後述する図14の手順(描画領域の割り当て処理)において、描画処理部16は未処理描画領域のうち、最も、負荷値の大きな描画領域を担当する描画領域に決定する。これを各描画処理部16が繰り返すので、1ページの全体的な処理時間を短縮できる。
【0069】
〔動作手順〕
図12は、最適化情報の作成手順を示すフローチャート図の一例である。
【0070】
最適化情報作成部14はPDLデータ格納部13に格納されたPDFを読み込む(S210)。
最適化情報作成部14はPDLデータに複数ページが含まれているか否かを判定する(S
220)。
【0071】
複数ページが含まれていない場合(S220のNo)、1ページだけになるが最適化情報による描画領域の割り当てが間に合わないので、最適化情報を作成することなく図10の処理は終了する。
【0072】
複数ページが含まれている場合(S220のYes)、最適化情報作成部14は、図11の手順に基づき2ページ目以降の最適化情報を作成する(S230)。すなわち、描画領域毎に、各描画オブジェクトの種類を特定し、描画面積を算出し、さらに負荷値を算出する。
【0073】
図13は、ディスプレイリストの作成手順を示すフローチャート図の一例である。
【0074】
DL作成部12はPDLデータ格納部13に格納されたPDFを読み込む(S310)。
DL作成部12は、PDFの相互参照表とトレーラに基づき、ボディ部のオブジェクトを解析しディスプレイリストを作成する(S320)。
【0075】
DL作成部12はPDFの終端までディスプレイリストを作成したか否かを判定し(S330)、終端まで到達すると処理を終了する。
【0076】
図14は、レンダリングの手順を示すフローチャート図の一例である。
描画処理部16は、1ページを複数の描画領域に分けてレンダリングするが、複数の描画処理部16が1ページを効率的にレンダリングするので、1つの描画領域毎にどの描画処理部16がレンダリングするかを決定する。
【0077】
まず、描画処理部16は、ページ毎に、未描画領域があるか否かを判定する(S410)。未描画領域がない場合(S410のNo)、そのページの処理は終了する。
【0078】
未描画領域がある場合(S410のYes)、描画処理部16はそのページの最適化情報があるか否かを判定する(S420)。すなわち、未描画領域が1つしかなければ、その1つの描画領域を自分に割り当てればよいが、複数ある場合に、どの描画領域のレンダリングを担当するか最適化情報により判断する必要がある。
【0079】
よって、最適化情報が生成されている場合(S420のYes)、描画処理部16は最適化情報を参照して、担当する描画領域を自分に割り当てる(S430)。例えば、最も負荷値の高い描画領域を処理対象とする。
【0080】
最適化情報が生成されていない場合(S420のNo)、描画処理部16は描画領域の決まった場所から順番に、担当する描画領域を自分に割り当てる(S440)。例えば、ページ上段、ページ中央付近などから、予め決められた優先順位で割り当てる。
【0081】
描画領域を割り当てると、描画処理部16はその描画領域のディスプレイリストを参照し、レンダリングを行う(S450)。
【0082】
〔具体例〕
図15は、負荷値の算出の別の一例を示す図である。図15では、オブジェクトが描画領域を跨いでいるが基本的な考え方は同じである。描画領域を跨ぐオブジェクトは、描画処理部16が描画領域と描画領域の境界で分割する。
【0083】
グラフィック4は円形のベクターグラフィックであるが、境界で分割された上側をグラフィック4U、下側をグラフィック4Dとする。円形のグラフィックを直線で分割した場合の面積は、例えば、直線と円周との最短距離の関数として予めテーブルなどで保持しておく。こうすることで処理負荷を抑制できる。
【0084】
また、イメージ2はRGBフルカラーのイメージデータであるが、境界で分割された上側をイメージ2U、下側をイメージ2Dとする。矩形の描画領域を直線で分割した場合の面積は、イメージの高さに対する上辺から境界までの比により求められる。
【0085】
また、文字4〜6は、描画面積の代わりにバウンディングボックスのサイズが求められる。文字4の境界で分割された上側を文字4U、下側を4D、文字5の境界で分割された上側を文字5U、下側を5D、文字6の境界で分割された上側を文字6U、下側を6D、とする。
【0086】
バウンディングボックスは矩形なので、バウンディングボックスのサイズを直線で分割した場合の面積は、バウンディングボックスの高さに対する上辺から境界までの比により求められる。
【0087】
<描画領域1(band1)>
グラフィック4U:描画面積50、 負荷指数:1
負荷値:50
<描画領域2(band2)>
グラフィック4D:描画面積70、 負荷指数:1
イメージ2U:描画面積120、負荷指数:3
負荷値:70×1+120×3=430
<描画領域3(band3)>
イメージ2D:描画面積120、負荷指数:1
文字4U:バウンディングボックスサイズ70、 負荷指数:0.5
文字5U:バウンディングボックスサイズ91、 負荷指数:0.5
文字6U:バウンディングボックスサイズ56、 負荷指数:0.5
負荷値:120×1+70×0.5+91×0.5+56×0.5=229
<描画領域4(band4)>
文字4D:バウンディングボックスサイズ30、 負荷指数:0.5
文字5D:バウンディングボックスサイズ39、 負荷指数:0.5
文字6D:バウンディングボックスサイズ24、 負荷指数:0.5
負荷値 :30×0.5+39×0.5+24×0.5=46.5
負荷値の大きい順に、描画処理部16は、Band2->Band3->Band1->Band4の順に描画を担当する。
【0088】
〔タイミングチャート図(効果)〕
図16は、タイミングチャート図の一例を示す。比較のため、図16(a)は従来の構成のタイミングチャート図を、図16(b)は本実施形態の構成のタイミングチャート図を、それぞれ示す。
【0089】
従来の構成では、第1コア111をインタプリタ(PDL解析部)に、第2コア112〜第4コア114をレンダラ(描画処理部16)に、割り当てるのが一般的である。このため、第1コア111は、Parser(ディスプレイリストの生成)、Op(負荷情報の作成)を受け持っている。
【0090】
第1コア111が1ページ目のディスプレイリスト作成時に、負荷情報の蓄積も行っている。このため、第2〜第4コアのレンダラは、第1コア111が各ページのディスプレイリストと負荷情報を作成するまで待つ必要があった。図示するように、第1コア111が1ページ目のディスプレイリストと負荷情報の作成時、第2〜第4コアは待機しており、第1コア111が2ページ目のディスプレイリストと負荷情報の作成時、第2〜第4コアは1ページ目のレンダリングを描画領域毎に処理している。また、第2〜第4コアが3ページ目のレンダリングを描画領域毎に処理するには、第1コア111が3ページ目のディスプレイリストと負荷情報を作成した後でなければならない。
【0091】
これに対し本実施形態のPDL部205は、第1コア111がインタプリタ(PDL解析)のみを、第2コア112が最適化情報の作成のみを受け持つ。最適化情報の作成自体は、比較的、短時間で終了する。このため、第1コア111が1ページ分のディスプレイリストを作成する間に、最適化情報の作成はかなりの部分が進行する。
【0092】
また、第1コア111はPDL解析しか行わないので、最適化情報を作成しない分だけ各ページの処理時間を短縮できる。
【0093】
したがって、第3コア113、第4コア114は、従来よりも早期に、レンダリングを開始できる。また、第2コア112も、最適化情報の作成は比較的短い時間で終了するので、第2コア112が最適化情報を作成することになっても、最適化情報を早期に作成し、レンダリングを受け持つことができる。以上から、第2〜第4コアの待機時間が短い分、前ページの処理時間を短縮できることが分かる。
【0094】
なお、図16(b)では、1ページ目の最適化情報が作成されている。例えば、1ページ分のディスプレイリストが作成されるまで描画処理部14が描画処理を行わないような場合、図示するように1ページ目の最適化情報を作成することで、1ページ目の最適化情報を作成しない場合より最適化情報を利用できるだけ印刷処理の時間を短縮できる。
【0095】
1ページ分のディスプレイリストが作成されるよりも先に描画処理部14が描画処理を開始する場合、最適化情報作成部14は1ページ目の最適化情報を作成しない。このため、第2コアは1ページ目の最適化情報(Op2)の作成から始め、第3,第4コアは1ページ目のディスプレイリストの作成の途中から描画処理を開始する。したがって、1ページ目の最適化情報を作成する場合よりも、印刷処理の時間を短縮できる。
【0096】
図17は、本実施形態のタイミングチャート図の別の一例を示す。第2コア112が実行する最適化情報の作成は比較的短時間に終了するので、ページ数が多い場合に不都合が生じるおそれがある。
【0097】
すなわち、最適化情報作成部14が作成した最適化情報は中間データ格納部15に格納されるが、ページ数が多いと、ディスプレイリストの作成やレンダリングと比較して、最適化情報だけが作成されてしまい、中間データ格納部15を消費してしまう。
【0098】
レンダリングされた描画領域の最適化情報は不要になり削除されるが、ページ数が多い場合、先に最適化情報が多々作成されてしまい、多くのメモリを消費してしまう。
【0099】
そこで、印刷対象のPDLデータのページ数が閾値以上の場合、第2コア112は、ある特定のページ数の最適化情報を作成したのち、描画処理を担当する。
【0100】
図17では、第2コア112は、5ページ分の最適化情報Op1〜5を作成した後、レンダリングを開始している。こうすることで、PDLデータのページ数が多い場合に、最適化情報がメモリを消費してしまうことを防止できる。
【0101】
また、第2コア112は、作成済みの最適化情報の数又はページ数が所定値(例えば、2)以下になったら、再度、特定のページ数の最適化情報の作成を開始する。こうすれば、中間データ格納部15の容量を消費しすぎることなく、第2コア112は優先的に最適化情報を作成し、レンダリングも行うことができる。
【0102】
〔変形例〕
描画処理部16が描画領域を選択する基準を負荷値の高い順としたが、描画処理部16によって同じ処理の処理時間が異なる場合がある。すなわち、例えば、第3コア113はカラーのレンダリングが速いが文字のレンダリングが遅く、第4コア114はその逆の特性を有するような場合である。
【0103】
この場合、第3コア113がカラーのイメージがある描画領域をレンダリングし、第4コア114が文字の多い描画領域をレンダリングすることが、全体的な処理時間の短縮につながる。
【0104】
図18は、描画領域毎のオブジェクトが偏ったページの一例を示す。描画領域1には、カラーのイメージデータが含まれるが、描画領域2〜4は全て文字である。このようなページでは、描画領域1をカラーのレンダリングに好適な命令セットを持つコアが実行することが好ましい。よって、第3コア113が優先的に描画領域1をレンダリングすることで、描画領域1の処理時間を短縮できる。
【0105】
また、一方、あるコアが特定のオブジェクトのレンダリングが不可能な場合は、そのコアにはそのコアがレンダリングできるオブジェクトが含まれる描画領域を処理させることで、コアが何もしないで遊んでしまうことを防止できる。よって、コアとコアが得意な処理に応じて、コアが実行する処理を割り当てることが好ましい。
【0106】
図19は、各コアがレンダリングを実行する描画領域を決定する手順を示すフローチャート図の一例である。また、図20は、各コアにとって得意なレンダリング及び不可能なレンダリングが登録されたテーブルの一例である。このようなテーブルは、PDL部205に予め登録されている。
【0107】
図19においてステップS420までの処理は図14と同様である。
未描画領域があり(S410のYes)、かつ、最適化情報がある場合(S420のYes)、描画処理部16は、最適化情報のある描画領域のうち、図20のテーブルに登録された処理できないオブジェクトが存在する描画領域があるか否かを判定する(S421)。
【0108】
処理できないオブジェクトのある描画領域が存在する場合、その描画領域をレンダリングの対象から除外し残りの描画領域を処理対象の候補にする(S422)。
【0109】
次に、描画処理部16は、未描画領域に他のコアが処理できないオブジェクトが存在する描画領域があるか否かを図20のテーブルを参照して判定する(S423)。
【0110】
未描画領域に他のコアが処理できないオブジェクトが存在する描画領域がある場合(S423のYes)、その描画領域を残すと待ちが発生するおそれがあるので、その描画領域を処理対象の候補にする(S424)。
【0111】
次に、描画処理部16は、候補の中に自コアが処理の得意なオブジェクトのある描画領域があるか否かを図20のテーブルを参照して判定する(S425)。これにより、描画処理部16は、レンダリングが速く終了するオブジェクトを特定することができる(S426)。例えば、カラーのイメージのレンダリング処理が速い描画処理部16は、優先的にそのオブジェクトが含まれる描画領域をレンダリング対象にでき、文字のレンダリング処理が速い描画処理部16は、優先的にそのオブジェクトが含まれる描画領域をレンダリング対象にできる。
【0112】
処理の得意なオブジェクトが含まれた描画領域がない場合(S425のNo)、描画処理部16は、最適化情報を参照して負荷値の大きい描画領域から順に処理対象として受け持つ(S427)。以降の処理は図14と同様である。
【0113】
以上説明したように、本実施形態のMFP200は、最適化情報生成部14がDL解析部12と時間的に並列に最適化情報を作成するので、DL解析部12と描画処理部16との待ち時間が短縮される。また、最適化情報だけでなく描画処理部16の得意な描画処理を考慮すれば、さらに1ページ当たりの処理時間を短縮できる。
【符号の説明】
【0114】
100 コントローラ
110 CPU
111 第1コア
112 第2コア
113 第3コア
114 第4コア
120 ROM
130 RAM
140 NVRAM
150 ホストPC
151 ネットワークI/F
161 エンジンI/F
171 パネルI/F
160 エンジン
170 パネル装置
180 HDD
200 MFP
204 プリンタコントロールシステム
205 PDL部
300 印刷システム
【先行技術文献】
【特許文献】
【0115】
【特許文献1】特許第3474078号公報
【技術分野】
【0001】
本発明は、印刷データを可視化処理する画像形成装置等に関し、特に、マルチコア又は複数のCPUを用いて印刷データを処理する画像形成装置及び画像処理方法に関する。
【背景技術】
【0002】
従来の組み込み機器にはシングルコアのCPUが多く使用されてきたが、デュアルコアやクアッドコアといった複数のコアを持つマルチコアのCPUが、汎用PCへ普及することに伴い、組み込み機器にもその導入が進められている。
【0003】
しかし、単にコアの数が2倍になったからといって、その性能が2倍になるとは限らず、その影響度はアルゴリズムなどに依存する。すなわち、マルチコアの性能を最大限に引き出すには、各コアに処理を適切に配分し、処理を並列に実行する必要があり、その際、各コアに"待ち"が発生しないようにすることで2倍に近い性能を引き出すことができる。しかし一般的に各処理がすべて並列に実行できること(性能が2倍になるような処理)は稀であり、いかに処理を並列化するかが技術的な課題となる。
【0004】
PDLデータを解析して描画対象をレンダリングするプリンタコントローラもマルチコアのCPUを搭載することが検討されている。プリンタコントローラが、複数のコア(プロセッサ)を使用して印刷する場合、中間データを生成する「PDL解析部」に1つ、中間データに基づきレンダリングを行う「描画処理部」に残りを割り当て、各描画処理部に割り当てる処理量を平均化して描画処理部に待ちが発生しないようにする技術が考案されている(例えば、特許文献1参照。)。
【0005】
特許文献1には、複数の描画処理部にかかる負荷を均一化して印刷性能の効率化を図る目的で、各描画領域にて処理されるオブジェクトの面積から描画の負荷を算出し、各描画処理部にかかる負荷が均一になるように描画領域のサイズを決定して割り当てる描画処理装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1では、PDL解析部でページを複数の領域に分割し、各領域に存在する描画オブジェクトの面積から処理量を計算している。このため、描画処理部はPDL解析部の処理が終わるまでオブジェクトの描画が始められず待ち状態となってしまうことになり、各コアやCPUを有効に使用できていないという問題がある。
【0007】
また、特許文献1では、処理量のみを基準に領域を分割しているため各描画処理部の特性に応じた最適な割り当てができていないという問題がある。
【0008】
本発明は、上記課題に鑑み、複数のコア又はCPUが搭載されたプリンタコントローラの、描画処理部の待機時間を縮小し、複数のコアにより効率的に印刷することが可能な画像形成装置及び画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記課題に鑑み、本発明は、ページの領域毎に描画処理手段が描画処理する画像形成装置であって、印刷データを格納する印刷データ格納手段と、前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段と、前記描画命令生成手段と並行して前記印刷データを解析し、前記描画処理手段が受け持つ前記領域を決定するための最適化情報を作成する最適化情報作成手段と、前記描画命令データと前記最適化情報を記憶する中間データ記憶手段と、前記最適化情報に基づき受け持つ領域を決定し、領域毎に前記描画命令データを描画処理する前記描画処理手段と、を有することを特徴とする。
【発明の効果】
【0010】
複数のコア又はCPUが搭載されたプリンタコントローラの、描画処理部の待機時間を縮小し、複数のコアにより効率的に印刷することが可能な画像形成装置及び画像処理方法を提供することができる。
【図面の簡単な説明】
【0011】
【図1】本実施形態のレンダリング処理を模式的に説明する図の一例である。
【図2】印刷システムの一例を示す図である。
【図3】MFPのハードウェア構成図の一例である。
【図4】コントローラの機能を模式的に説明する図の一例である。
【図5】PDL部の機能ブロック図の一例を示す図である。
【図6】PDF(Portable Document Format)ファイルのフォーマット例を示す図である。
【図7】中間データの一例を示す図である。
【図8】PDL部の処理の内部的な手順を模式的に示す図の一例である。
【図9】ベクターグラフィックにおけるバウンディングボックスの一例を説明する図の一例である。
【図10】最適化情報とそこから算出される負荷値の一例を示す図である。
【図11】最適化情報作成部が最適化情報から負荷値を算出する手順を示すフローチャート図の一例を示す図である。
【図12】最適化情報の作成手順を示すフローチャート図の一例である。
【図13】ディスプレイリストの作成手順を示すフローチャート図の一例である。
【図14】レンダリングの手順を示すフローチャート図の一例である。
【図15】負荷値の算出の別の一例を示す図である。
【図16】タイミングチャート図の一例である。
【図17】タイミングチャート図の別の一例である。
【図18】領域毎のオブジェクトが偏ったページの一例を示す図である。
【図19】各コアがレンダリングを実行する領域を決定する手順を示すフローチャート図の一例である。
【図20】各コアにとって得意なレンダリング及び不可能なレンダリングが登録されたテーブルの一例である。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図1は、本実施形態のレンダリング処理を模式的に説明する図の一例である。例えば、4つのコアがあるとして、各コアが以下のように処理を分担している。
コア1:PDL解析(ディスプレイリストの作成)
コア2:最適化情報の作成→レンダリング
コア3:レンダリング
コア4:レンダリング
すなわち、PDL解析と最適化情報の作成を別々のコアに割り当てることで、この2つの処理が時間的に並行に実行されることが特徴の1つである。なお、最適化情報とはレンダリングの負荷値又は負荷値を求めるための情報である。
【0013】
すると、コア1は最適化情報を作成する必要がないので、比較的重い処理であるPDL解析だけを従来よりも短い時間で完了できる。また、コア2は、比較的軽い処理である最適化情報の作成だけを行えばよいので、コア1が1ページ分のPDL解析を行う間に、複数のページの最適化情報を作成できる。
【0014】
この結果、レンダリングするコア3,コア4が待機する時間は、コア1が1ページ分をPDL解析するまでの時間に短縮できる。すなわち、従来、PDL解析部が最適化情報も作成していたため、レンダリングするコア3,コア4がPDL解析+最適化情報の作成が完了するまで待機する必要があったのと比べて、処理時間を短縮できる。
【0015】
〔構成〕
図2は、印刷システム300の一例を示す図である。ホストPC(Personal Computer)150とMFP(Multi Function Peripheral)200がネットワークを介して接続されている。
【0016】
ホストPC150がユーザの操作を受け付け、例えば何らかのアプリケーションプログラムがOSのグラフィック制御部(例えばGDI)に文書データの印刷を要求する。グラフィック制御部は、アプリケーションに依存しないAPI(基本関数)により文書データを描画する描画命令(中間ファイル)を生成する。
【0017】
この後、グラフィック制御部は、MFP200が対応したPDLデータを生成するプリンタドライバを呼び出す。グラフィック制御部とプリンタドライバの間には、DDI(Device Driver Interface)と呼ばれるインタフェースが定義されている。プリンタドライバは、中間ファイルをプリンタが解釈可能なPDLデータに変換し、MFP200に送信する。
【0018】
PDLデータとしては、PostScript、PCL、RPCS、PDF(Portable Document Format)、又は、XPSなどのフォーマットが知られており、PDLデータのフォーマットはMFP200が解析可能なフォーマットである必要がある。
【0019】
MFP200は、PDLデータからディスプレイリストと最適化情報を作成し、描画処理(レンダリング処理)などを行い、印刷する。なおMFP200は、プリンタ機能さえ有していればよいが、複写機、スキャナ、送信機能(FAX、電子メール、フォルダ)等を有していてもよい。
【0020】
図3は、MFP200のハードウェア構成図の一例である。MFP200は、MFP200の全体を制御するコントローラ100 と、用紙に画像を印刷するためのエンジン160と、ユーザが入力を行う操作パネル・状態を表示するパネル装置 170 とを有する。
【0021】
コントローラ100 は、CPU110、ROM120、RAM130、NVRAM140、ネットワークI/F151、エンジンI/F161、パネルI/F171、及び、HDD180を有する。
【0022】
CPU110は、第1コア111、第2コア112、第3コア113、及び、第4コア114を有するマルチコア型のCPUであり、プログラム181に記述された命令を実行する。プログラム181は、第1コア111、第2コア112、第3コア113、及び、第4コア114のそれぞれ専用に、4つに分かれていてもよいし、1つのプログラムを4つのコアが重複して実行してもよい。CPU110のコア数は2個以上であれば5個以上でもよい。また、マルチコア型でなく、マルチプロセッサ又はマルチCPUと呼ばれる、複数の独立したCPUを搭載してもよい。
【0023】
ROM120には、起動用のプログラムや初期設定値などが記憶されている。RAM130は、コントローラ100が作成するページメモリやソフトウエアが動作するために必要なワークメモリとして利用される。NVRAM140は、MFP200に設定された印刷条件などを保存しておく不揮発性メモリである。ネットワークI/F151は、ネットワーク上に接続されたホストPC150とデータを送受信する。エンジンI/F161は印刷指示等を行いエンジン160を制御する。
【0024】
エンジン160は、少なくとも画像形成を行うプロッタエンジンを有する。プロッタエンジンは、例えばタンデム型の感光ドラムを有し、ホストPC150から受信したPDLデータをレンダリングして得られた画像データに基づきレーザビームを変調し感光ドラムを走査して潜像を形成する。そして、潜像にトナーを付着して現像した1ページ毎のトナー画像を用紙に熱と圧力で転写する。なお、プロッタエンジンは、インクジェット方式でもよい。また、エンジン160には、スキャナエンジンやFAXエンジンがある。
【0025】
パネルI/F171はパネル装置170との入出力を制御する。HDD180はフォントデータやプログラム181を記憶する。
【0026】
図4は、コントローラ100の機能を模式的に説明する図の一例である。図4において図3と同一部には同一の符号を付しその説明は省略する。コントローラ100の機能は、CPU110がプログラム181を実行して実現される、プリンタコントロールシステム204とPDL部205に代表される。
【0027】
PDL部205は、PDLデータをプリンタコントロールシステム204から受け取り印刷画像を作成する。PDL部205は、PDLデータのフォーマットとしてPostScript PCL、RPCS、PDF、XPS等に対応している。
【0028】
プリンタコントロールシステム204は、ネットワークI/F202が受信するPDLデータを印刷するため、PDL部205にレンダリングを要求し、その後、エンジンI/F206に印刷を要求するなど、印刷の手順を制御する。
【0029】
図5は、PDL部205の機能ブロック図の一例を示す図である。PDL部205は、入力データ受信部11、DL作成部12、最適化情報作成部14、複数の描画処理部16、PDLデータ格納部13、及び、中間データ格納部15、を有する。PDLデータ格納部13や中間データ格納部15はHDD180やRAM130を実体とする。
【0030】
入力データ受信部11は、ネットワークI/F151がホストPC150から受信したPDLデータを、PDLデータ格納部13に記憶する。DL作成部12は、PDLデータを構文解析し、PDLデータに含まれるオブジェクト(テキスト、イメージ、ベクターグラフィックス等)を抽出するとともに、これとPDLデータに含まれる描画情報に基づき、ディスプレイリスト(中間データ)を作成する。ディスプレイリストは中間データ格納部15に格納される。
【0031】
最適化情報作成部14は、PDLデータから描画対象となる各種のオブジェクトの配置情報や種類などの特徴から最適化情報を作成する。この最適化情報も中間データ格納部15に格納される。最適化情報については後述するが、最適化情報はオブジェクト(又はオブジェクトが含まれる描画領域)をレンダリングする描画処理手段16を決定するための情報である。より具体的にはオブジェクトを描画する際の処理負荷を決定するための情報、又は、処理負荷そのものである。
【0032】
描画処理部16は、中間データ格納部15に保存されているディスプレイリストや最適化情報に基づいて描画を担当する描画領域を決定し、描画領域毎にディスプレイリストに基づき出力イメージデータをレンダリングする。なお、描画領域はページを長手方向に等間隔又は予め定めた間隔で区分したページ上の一範囲をいい、最適化情報作成部14や描画処理部16にとって既知である。
【0033】
図示する描画処理部16が3つなのは、CPU110のコア数を考慮したためであり、本実施形態では、4つのコアの1つをDL作成部12に、4つのコアの1つを最適化情報作成部14に、残りを描画処理部16に、それぞれ割り当てる。なお、最適化情報作成部14は描画処理部16としても作動する。このため図では描画処理部16が3つある。
【0034】
〔PDLデータ等について〕
図6は、PDF(Portable Document Format)ファイルのフォーマット例を示す図である。ここではPDLデータを説明するため、PDFファイルを用いた。
【0035】
PDFファイルは、ヘッダ、ボディ、相互参照表、トレーラから構成されている。ヘッダにはファイルのフォーマットがPDFであることを示すために、PDFのバージョン情報を含めた1行が記述される(例えば、「%PDF-1.4」)。
ボディには、テキストやイメージなどのページを構成するデータの本体がオブジェクトとして記述されている。 なお、各オブジェクトには識別番号が付与されており、各オブジェクトは、ボディ内において、表示される文書のページ順とは無関係に任意の順序で記述される。
オブジェクト番号 世代番号(通常はゼロ) obj
<<
/Type/Page
/Parent オブジェクト番号 世代番号 R
/Contents オブジェクト番号n 世代番号 R
>>
endobj
PDFでは文書の全体、ページ、ページ内の図形や文字を全てオブジェクトとして扱うので、全てにオブジェクト番号が割り当てられる。この例では、Parentの行のオブジェクト番号がこのページの親のページのオブジェクト番号を示す。なお、"R"はこのページが参照するという意味の記号である。
【0036】
また、Contentsの行のオブジェクト番号nは、このページの中身の(このページに記述される)オブジェクトのオブジェクト番号を示す。
【0037】
Contentsオブジェクトがオブジェクト番号nを以下のように記述しているとする(説明に用いない記述は省略した)。
【0038】
オブジェクト番号n 世代番号 obj
<<
/Length バイト数
>>
stream
……ここに描画命令が入る……
endstream
endobj
Lengthはstream〜endstreamで指定されるオブジェクトのサイズ(バイト数)を表す。例えば、文字の場合の描画命令は「BT〜ET」で囲まれる範囲に「フォント識別情報 フォントサイズ 最初の文字の座標系指定 文字列」などの命令が記述される。
【0039】
ベクターグラフィックスの場合「q〜Q」で囲まれる範囲に「座標系の指定 色の指定、座標+移動命令 座標+直線描画命令 座標+曲線描画命令 …」などの命令が記述される。
【0040】
イメージの場合「BI〜EI」で囲まれる範囲に「サイズ、エンコード方法 ID(Image Data)」という形式で記述される。
【0041】
相互参照表には、上記ボディに記述されたオブジェクトのファイル内における位置情報がオフセットとして記述される。すなわち、ファイル先頭から各オブジェクトのデータの先頭までのバイト数が記述される。このように、ボディの記述位置はページ上の位置と何ら関係がない。
【0042】
トレーラには、/Root属性で文書構造の頂上を示すオブジェクト(カタログオブジェクト)がオブジェクト番号で指定される。以降は、ボディの記述と相互参照表により各オブジェクトの位置が定まる。
【0043】
上述したように、PDFファイル内には、表示される文書のページ順とは無関係に任意の順序でオブジェクトが配置されているため、コントローラ100は、各オブジェクトへのアクセスの際、トレーラの内容を参照・解析し、その結果に基づいて、相互参照表の内容を参照・解析することによって、はじめて可能になる。 すなわち標準的なPDFファイルにおいては、参照すべきトレーラおよび相互参照表がファイルの末尾、すなわち、ボディ(データ本体)より後ろに記述されているため、DL作成部12や最適化情報作成部14は、PDFファイルの全体が転送されHDD180などの記憶媒体に記憶されてから処理を開始する必要がある。
【0044】
図7は、ディスプレイリストの一例を示す図である。ディスプレイリストは各描画処理部16が処理可能なデータ形式であり、各種の描画命令や設定情報をリスト化したものである。例えば、「set foreground color(R,G,B)」は前景の色を指示する命令で、「set raster operation(Op Code)」は画像に施す演算を指示する命令で、「draw rectangle(x、y、w、h)」は矩形の描画命令である。
【0045】
DL作成部12が作成したディスプレイリストは、中間データ格納部15に格納され、順次、描画処理部16が解釈し、割り当てられた描画領域に描画すべきオブジェクトがあった場合、該描画領域にレンダリングを行う。
【0046】
〔PDL部の処理内容〕
図8は、PDL部205の処理の内部的な手順を模式的に示す図の一例である。
(1)入力データ受信部11は、PDFの入力を受け付ける。
PCLやPSといったPDLデータは先頭から順番に、DL作成部12がデータを読み込み、解析し、描画することが可能である。
(2)これに対し、PDFやXPSといったPDLデータでは解析すべきデータの先頭位置は入力データの後半(相互参照表、トレーラ)に添付されているため、入力データ受信部11はPDLデータ格納部13にPDLデータを一時保存する必要がある。
(3)しかし、PDLデータ格納部13に保存されたPDLデータは、先頭からの順次アクセスや所望の場所のランダムアクセスだけでなく、複数の処理手段からの同時アクセスが可能となる。
【0047】
そこで、マルチコア環境を利用すれば、第1コア111にDL作成部12を割り当てPDLデータを解析させ、中間データとなるディスプレイリストを作成する一方で、第2コア112に最適化情報作成部14を割り当てPDLデータを解析させ、最適化情報を作成するといった並列処理が可能となる。
(4)同時にディスプレイリスト・最適化情報といった2つの情報を作成すると、PDLデータの解析にかかる処理時間は、ディスプレイリスト・最適化情報のうち処理時間の長い方になる。しかし、最適化情報の作成は、厳密にPDLデータを解析せず、描画オブジェクトの種類から処理の負荷情報や面積を読み出したり、又は、後述するバウンディングボックス(オブジェクトの全体を囲む描画領域)のサイズを算出するだけでよいため、ディスプレイリストを作成するよりも十分軽い処理である。したがって、少なくとも1ページ分のディスプレイリストが作成されるよりも早く、1ページ分の最適化情報が作成される。
(5)描画処理部16に第3コア113、第4コア114を割り当て、2つの描画処理部16が、最適化情報を参照し、描画すべき描画領域(Band)を選択する。
(6)描画処理部16はディスプレイリストを参照・解析しレンダリングを実施する。
【0048】
なお、本来、描画処理部16はディスプレイリストの一部が作成されれば、1ページ分のディスプレイリストが作成されなくても、描画処理を開始することができる。この場合、描画処理部16が最適化情報の作成まで待機すると却って処理速度が低下するおそれもある。
【0049】
図9(a)は、1ページ目のディスプレイリストの作成、最適化情報の作成、及び、描画処理のタイミングチャート図の一例を示す図である。ディスプレイリスト(Parsar1)の作成が完了する前に、描画処理部(レンダラ1−1、レンダラ1−2)が描画処理を開始している。しかし、最適化情報作成部14(最適化Md)が最適化情報(OP1)の作成を完了させるのは、描画処理部14が描画処理を開始するよりも後である。したがって、1ページ目は最適化情報による描画領域の割り当てが間に合わない。
【0050】
このため、本実施形態では、最適化情報作成部14は1ページ目の最適化情報を作成せず、描画処理部16が上方向から描画領域を順番に受け持ち、次ページ目以降において最適化情報を用いて描画領域を割り当てることが好ましい場合がある。よって、この場合、文書が1ページしかないのであれば、最適化情報作成部14は最適化情報を作成しない。
【0051】
なお、描画処理部16がディスプレイリストの作成が完了する前に描画処理を開始しても、最適化情報の作成が完了しだい、描画処理部16が各描画領域を再度、割り当てすることもできる。したがって、1ページ目の最適化情報を常に作成しないことが最も好ましいと言うことはできず、描画処理部の機能などによって最適な処理手順を採用すればよい。
【0052】
次に、バウンディングボックスについて説明する。
図9(b)は、ベクターグラフィックにおけるバウンディングボックスの一例を説明する図の一例である。ここではベクターグラフィックとして3次のベジェ曲線を例にして説明する。P0、P3はベジェ曲線の端点、P1、P2は方向点である。P1とP0を結ぶ線がP0を通るベクターグラフィックの接線となり、P2とP3を結ぶ線がP3を通るベクターグラフィックの接線となる。P0〜P3の曲線は、4つの点P0〜P3の座標とベジェ曲線の公式により定まる。
【0053】
したがって、曲線はすぐに求められても面積を算出することは負荷が大きい。そこで、オブジェクトが文字や複雑な形状のベクターグラフィックの場合、描画処理部16は正確に描画面積を求めず、始点・終点および制御点を全て含む外接矩形をベクターグラフィックボックスとして、このサイズを、描画面積の代用にすることで、計算量を大幅に削減することができる。
【0054】
〔最適化情報〕
図10(a)は最適化情報と最適化情報から算出される負荷値の一例を示す図である。最適化情報には、例えば、オブジェクトの種類と描画面積、又は、これらから算出したオブジェクトを描画する際の負荷値が含まれる(両方を含んでいてもよい)。
【0055】
ディスプレイリストには種々のオブジェクト(テキスト、イメージ、ベクターグラフィックス)の描画命令がリストアップされているが、描画処理部16が処理する内容はオブジェクトの種類によって大きく異なる。
【0056】
本実施形態では、オブジェクトの種類によって異なる処理のうち、負荷の大小が重要であるので、最適化情報としては、各描画オブジェクトのレンダリングに必要な計算コストが挙げられる。
【0057】
最適化情報作成部14は、描画オブジェクトの種類として、上記に挙げた種類(テキスト、イメージ、ベクターグラフィックス)だけでなく、RGBカラーイメージ、モノクロイメージといった描画処理の負荷が大きく異なるものを別々に扱う。
【0058】
また、描画面積は、例えばイメージ、又は、矩形や円形といったベクターグラフィックであれば容易に算出可能だが、ベジエ曲線などのベクターグラフィックは、制御点の集合から面積を算出するには負荷がかかるため(ベクターデータからラスターデータへの変換(スキャンライン変換)が必要であり、処理コストがかかってしまう)、正確な描画面積ではなく、バウンディングボックスのサイズを描画面積の代わりに採用する。
【0059】
図11は、最適化情報作成部14が最適化情報から負荷値を算出する手順を示すフローチャート図の一例である。最適化情報作成部14でなく描画処理部16が算出してもよい。
【0060】
最適化情報作成部14は、図10(b)に示す負荷指数を用いて、各描画領域の負荷値を算出する。負荷指数とは、描画処理部16がオブジェクトを処理する際の能力値による重みであり、オブジェクトの種類毎に負荷が大きいほど大きな値が定められている。例えば、グラフィックは「1」、文字は「0.5」である。負荷指数とオブジェクトの関係は、最適化情報作成部14がコードの一部などに記述することで記憶している。
【0061】
最適化情報作成部14は、まず、ある描画領域のオブジェクトの種類を判定する(S110)。オブジェクトの種類はディスプレイリストから明らかである。
【0062】
最適化情報作成部14はそのオブジェクトの負荷指数を読み出す(S120)。
【0063】
次に、最適化情報作成部14は、オブジェクトがスキャンラインへの変換が必要なベクターグラフィックか否かを判定する(S130)。スキャンラインへの変換が必要なベクターグラフィックか否かは、例えば曲線部を含むか否かにより判定する。
【0064】
スキャンラインへの変換が必要なベクターグラフィックの場合、最適化情報作成部14はバウンディングボックスのサイズを算出する(S140)。
【0065】
スキャンラインへの変換が必要でないベクターグラフィックの場合、最適化情報作成部14はオブジェクトの描画面積を算出する(S150)。
【0066】
そして、最適化情報作成部14は、描画面積又はバウンディングボックスサイズと負荷指数からオブジェクトの負荷値を算出する(S160)。
負荷値の算出例について次述する。
【0067】
<描画領域1(band1)>
図10を例に負荷値の算出例を説明する。
グラフィック1は円形のベクターグラフィック、グラフィック2は矩形のベクターグラフィック、グラフィック3は四角形(ひし形)のベクターグラフィックである。
グラフィック1:描画面積100、 負荷指数:1
グラフィック2:描画面積120、 負荷指数:1
グラフィック3:描画面積150、 負荷指数:1
グラフィック1の負荷値:100
グラフィック2の負荷値:120
グラフィック3の負荷値:150
<描画領域2(band2)>
文字はスキャンラインへの変換が必要なベクターグラフィックである。
文字1:バウンディングボックスサイズ100、 負荷指数:0.5
文字2:バウンディングボックスサイズ130、 負荷指数:0.5
文字3:バウンディングボックスサイズ80、 負荷指数:0.5
文字1の負荷値:50
文字2の負荷値:65
文字3の負荷値:40
<描画領域4(band4)>
イメージ1はRGBフルカラーにイメージデータである。
イメージ1:描画面積500、 負荷指数:3
イメージ1の負荷値:1500
描画処理部16は、各描画領域毎に、オブジェクトの負荷値を合計して描画領域の負荷値とする。そして、負荷値が大きい描画領域から順に描画処理部16はレンダリングの処理対象とする。負荷値の大きい描画領域から先にレンダリング処理が開始されれば、1ページの処理に必要な最大時間を抑制できる可能性が高くなる。
【0068】
後述する図14の手順(描画領域の割り当て処理)において、描画処理部16は未処理描画領域のうち、最も、負荷値の大きな描画領域を担当する描画領域に決定する。これを各描画処理部16が繰り返すので、1ページの全体的な処理時間を短縮できる。
【0069】
〔動作手順〕
図12は、最適化情報の作成手順を示すフローチャート図の一例である。
【0070】
最適化情報作成部14はPDLデータ格納部13に格納されたPDFを読み込む(S210)。
最適化情報作成部14はPDLデータに複数ページが含まれているか否かを判定する(S
220)。
【0071】
複数ページが含まれていない場合(S220のNo)、1ページだけになるが最適化情報による描画領域の割り当てが間に合わないので、最適化情報を作成することなく図10の処理は終了する。
【0072】
複数ページが含まれている場合(S220のYes)、最適化情報作成部14は、図11の手順に基づき2ページ目以降の最適化情報を作成する(S230)。すなわち、描画領域毎に、各描画オブジェクトの種類を特定し、描画面積を算出し、さらに負荷値を算出する。
【0073】
図13は、ディスプレイリストの作成手順を示すフローチャート図の一例である。
【0074】
DL作成部12はPDLデータ格納部13に格納されたPDFを読み込む(S310)。
DL作成部12は、PDFの相互参照表とトレーラに基づき、ボディ部のオブジェクトを解析しディスプレイリストを作成する(S320)。
【0075】
DL作成部12はPDFの終端までディスプレイリストを作成したか否かを判定し(S330)、終端まで到達すると処理を終了する。
【0076】
図14は、レンダリングの手順を示すフローチャート図の一例である。
描画処理部16は、1ページを複数の描画領域に分けてレンダリングするが、複数の描画処理部16が1ページを効率的にレンダリングするので、1つの描画領域毎にどの描画処理部16がレンダリングするかを決定する。
【0077】
まず、描画処理部16は、ページ毎に、未描画領域があるか否かを判定する(S410)。未描画領域がない場合(S410のNo)、そのページの処理は終了する。
【0078】
未描画領域がある場合(S410のYes)、描画処理部16はそのページの最適化情報があるか否かを判定する(S420)。すなわち、未描画領域が1つしかなければ、その1つの描画領域を自分に割り当てればよいが、複数ある場合に、どの描画領域のレンダリングを担当するか最適化情報により判断する必要がある。
【0079】
よって、最適化情報が生成されている場合(S420のYes)、描画処理部16は最適化情報を参照して、担当する描画領域を自分に割り当てる(S430)。例えば、最も負荷値の高い描画領域を処理対象とする。
【0080】
最適化情報が生成されていない場合(S420のNo)、描画処理部16は描画領域の決まった場所から順番に、担当する描画領域を自分に割り当てる(S440)。例えば、ページ上段、ページ中央付近などから、予め決められた優先順位で割り当てる。
【0081】
描画領域を割り当てると、描画処理部16はその描画領域のディスプレイリストを参照し、レンダリングを行う(S450)。
【0082】
〔具体例〕
図15は、負荷値の算出の別の一例を示す図である。図15では、オブジェクトが描画領域を跨いでいるが基本的な考え方は同じである。描画領域を跨ぐオブジェクトは、描画処理部16が描画領域と描画領域の境界で分割する。
【0083】
グラフィック4は円形のベクターグラフィックであるが、境界で分割された上側をグラフィック4U、下側をグラフィック4Dとする。円形のグラフィックを直線で分割した場合の面積は、例えば、直線と円周との最短距離の関数として予めテーブルなどで保持しておく。こうすることで処理負荷を抑制できる。
【0084】
また、イメージ2はRGBフルカラーのイメージデータであるが、境界で分割された上側をイメージ2U、下側をイメージ2Dとする。矩形の描画領域を直線で分割した場合の面積は、イメージの高さに対する上辺から境界までの比により求められる。
【0085】
また、文字4〜6は、描画面積の代わりにバウンディングボックスのサイズが求められる。文字4の境界で分割された上側を文字4U、下側を4D、文字5の境界で分割された上側を文字5U、下側を5D、文字6の境界で分割された上側を文字6U、下側を6D、とする。
【0086】
バウンディングボックスは矩形なので、バウンディングボックスのサイズを直線で分割した場合の面積は、バウンディングボックスの高さに対する上辺から境界までの比により求められる。
【0087】
<描画領域1(band1)>
グラフィック4U:描画面積50、 負荷指数:1
負荷値:50
<描画領域2(band2)>
グラフィック4D:描画面積70、 負荷指数:1
イメージ2U:描画面積120、負荷指数:3
負荷値:70×1+120×3=430
<描画領域3(band3)>
イメージ2D:描画面積120、負荷指数:1
文字4U:バウンディングボックスサイズ70、 負荷指数:0.5
文字5U:バウンディングボックスサイズ91、 負荷指数:0.5
文字6U:バウンディングボックスサイズ56、 負荷指数:0.5
負荷値:120×1+70×0.5+91×0.5+56×0.5=229
<描画領域4(band4)>
文字4D:バウンディングボックスサイズ30、 負荷指数:0.5
文字5D:バウンディングボックスサイズ39、 負荷指数:0.5
文字6D:バウンディングボックスサイズ24、 負荷指数:0.5
負荷値 :30×0.5+39×0.5+24×0.5=46.5
負荷値の大きい順に、描画処理部16は、Band2->Band3->Band1->Band4の順に描画を担当する。
【0088】
〔タイミングチャート図(効果)〕
図16は、タイミングチャート図の一例を示す。比較のため、図16(a)は従来の構成のタイミングチャート図を、図16(b)は本実施形態の構成のタイミングチャート図を、それぞれ示す。
【0089】
従来の構成では、第1コア111をインタプリタ(PDL解析部)に、第2コア112〜第4コア114をレンダラ(描画処理部16)に、割り当てるのが一般的である。このため、第1コア111は、Parser(ディスプレイリストの生成)、Op(負荷情報の作成)を受け持っている。
【0090】
第1コア111が1ページ目のディスプレイリスト作成時に、負荷情報の蓄積も行っている。このため、第2〜第4コアのレンダラは、第1コア111が各ページのディスプレイリストと負荷情報を作成するまで待つ必要があった。図示するように、第1コア111が1ページ目のディスプレイリストと負荷情報の作成時、第2〜第4コアは待機しており、第1コア111が2ページ目のディスプレイリストと負荷情報の作成時、第2〜第4コアは1ページ目のレンダリングを描画領域毎に処理している。また、第2〜第4コアが3ページ目のレンダリングを描画領域毎に処理するには、第1コア111が3ページ目のディスプレイリストと負荷情報を作成した後でなければならない。
【0091】
これに対し本実施形態のPDL部205は、第1コア111がインタプリタ(PDL解析)のみを、第2コア112が最適化情報の作成のみを受け持つ。最適化情報の作成自体は、比較的、短時間で終了する。このため、第1コア111が1ページ分のディスプレイリストを作成する間に、最適化情報の作成はかなりの部分が進行する。
【0092】
また、第1コア111はPDL解析しか行わないので、最適化情報を作成しない分だけ各ページの処理時間を短縮できる。
【0093】
したがって、第3コア113、第4コア114は、従来よりも早期に、レンダリングを開始できる。また、第2コア112も、最適化情報の作成は比較的短い時間で終了するので、第2コア112が最適化情報を作成することになっても、最適化情報を早期に作成し、レンダリングを受け持つことができる。以上から、第2〜第4コアの待機時間が短い分、前ページの処理時間を短縮できることが分かる。
【0094】
なお、図16(b)では、1ページ目の最適化情報が作成されている。例えば、1ページ分のディスプレイリストが作成されるまで描画処理部14が描画処理を行わないような場合、図示するように1ページ目の最適化情報を作成することで、1ページ目の最適化情報を作成しない場合より最適化情報を利用できるだけ印刷処理の時間を短縮できる。
【0095】
1ページ分のディスプレイリストが作成されるよりも先に描画処理部14が描画処理を開始する場合、最適化情報作成部14は1ページ目の最適化情報を作成しない。このため、第2コアは1ページ目の最適化情報(Op2)の作成から始め、第3,第4コアは1ページ目のディスプレイリストの作成の途中から描画処理を開始する。したがって、1ページ目の最適化情報を作成する場合よりも、印刷処理の時間を短縮できる。
【0096】
図17は、本実施形態のタイミングチャート図の別の一例を示す。第2コア112が実行する最適化情報の作成は比較的短時間に終了するので、ページ数が多い場合に不都合が生じるおそれがある。
【0097】
すなわち、最適化情報作成部14が作成した最適化情報は中間データ格納部15に格納されるが、ページ数が多いと、ディスプレイリストの作成やレンダリングと比較して、最適化情報だけが作成されてしまい、中間データ格納部15を消費してしまう。
【0098】
レンダリングされた描画領域の最適化情報は不要になり削除されるが、ページ数が多い場合、先に最適化情報が多々作成されてしまい、多くのメモリを消費してしまう。
【0099】
そこで、印刷対象のPDLデータのページ数が閾値以上の場合、第2コア112は、ある特定のページ数の最適化情報を作成したのち、描画処理を担当する。
【0100】
図17では、第2コア112は、5ページ分の最適化情報Op1〜5を作成した後、レンダリングを開始している。こうすることで、PDLデータのページ数が多い場合に、最適化情報がメモリを消費してしまうことを防止できる。
【0101】
また、第2コア112は、作成済みの最適化情報の数又はページ数が所定値(例えば、2)以下になったら、再度、特定のページ数の最適化情報の作成を開始する。こうすれば、中間データ格納部15の容量を消費しすぎることなく、第2コア112は優先的に最適化情報を作成し、レンダリングも行うことができる。
【0102】
〔変形例〕
描画処理部16が描画領域を選択する基準を負荷値の高い順としたが、描画処理部16によって同じ処理の処理時間が異なる場合がある。すなわち、例えば、第3コア113はカラーのレンダリングが速いが文字のレンダリングが遅く、第4コア114はその逆の特性を有するような場合である。
【0103】
この場合、第3コア113がカラーのイメージがある描画領域をレンダリングし、第4コア114が文字の多い描画領域をレンダリングすることが、全体的な処理時間の短縮につながる。
【0104】
図18は、描画領域毎のオブジェクトが偏ったページの一例を示す。描画領域1には、カラーのイメージデータが含まれるが、描画領域2〜4は全て文字である。このようなページでは、描画領域1をカラーのレンダリングに好適な命令セットを持つコアが実行することが好ましい。よって、第3コア113が優先的に描画領域1をレンダリングすることで、描画領域1の処理時間を短縮できる。
【0105】
また、一方、あるコアが特定のオブジェクトのレンダリングが不可能な場合は、そのコアにはそのコアがレンダリングできるオブジェクトが含まれる描画領域を処理させることで、コアが何もしないで遊んでしまうことを防止できる。よって、コアとコアが得意な処理に応じて、コアが実行する処理を割り当てることが好ましい。
【0106】
図19は、各コアがレンダリングを実行する描画領域を決定する手順を示すフローチャート図の一例である。また、図20は、各コアにとって得意なレンダリング及び不可能なレンダリングが登録されたテーブルの一例である。このようなテーブルは、PDL部205に予め登録されている。
【0107】
図19においてステップS420までの処理は図14と同様である。
未描画領域があり(S410のYes)、かつ、最適化情報がある場合(S420のYes)、描画処理部16は、最適化情報のある描画領域のうち、図20のテーブルに登録された処理できないオブジェクトが存在する描画領域があるか否かを判定する(S421)。
【0108】
処理できないオブジェクトのある描画領域が存在する場合、その描画領域をレンダリングの対象から除外し残りの描画領域を処理対象の候補にする(S422)。
【0109】
次に、描画処理部16は、未描画領域に他のコアが処理できないオブジェクトが存在する描画領域があるか否かを図20のテーブルを参照して判定する(S423)。
【0110】
未描画領域に他のコアが処理できないオブジェクトが存在する描画領域がある場合(S423のYes)、その描画領域を残すと待ちが発生するおそれがあるので、その描画領域を処理対象の候補にする(S424)。
【0111】
次に、描画処理部16は、候補の中に自コアが処理の得意なオブジェクトのある描画領域があるか否かを図20のテーブルを参照して判定する(S425)。これにより、描画処理部16は、レンダリングが速く終了するオブジェクトを特定することができる(S426)。例えば、カラーのイメージのレンダリング処理が速い描画処理部16は、優先的にそのオブジェクトが含まれる描画領域をレンダリング対象にでき、文字のレンダリング処理が速い描画処理部16は、優先的にそのオブジェクトが含まれる描画領域をレンダリング対象にできる。
【0112】
処理の得意なオブジェクトが含まれた描画領域がない場合(S425のNo)、描画処理部16は、最適化情報を参照して負荷値の大きい描画領域から順に処理対象として受け持つ(S427)。以降の処理は図14と同様である。
【0113】
以上説明したように、本実施形態のMFP200は、最適化情報生成部14がDL解析部12と時間的に並列に最適化情報を作成するので、DL解析部12と描画処理部16との待ち時間が短縮される。また、最適化情報だけでなく描画処理部16の得意な描画処理を考慮すれば、さらに1ページ当たりの処理時間を短縮できる。
【符号の説明】
【0114】
100 コントローラ
110 CPU
111 第1コア
112 第2コア
113 第3コア
114 第4コア
120 ROM
130 RAM
140 NVRAM
150 ホストPC
151 ネットワークI/F
161 エンジンI/F
171 パネルI/F
160 エンジン
170 パネル装置
180 HDD
200 MFP
204 プリンタコントロールシステム
205 PDL部
300 印刷システム
【先行技術文献】
【特許文献】
【0115】
【特許文献1】特許第3474078号公報
【特許請求の範囲】
【請求項1】
ページの領域毎に描画処理手段が描画処理する画像形成装置であって、
印刷データを格納する印刷データ格納手段と、
前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段と、
前記描画命令生成手段と並行して前記印刷データを解析し、前記描画処理手段が受け持つ前記領域を決定するための最適化情報を作成する最適化情報作成手段と、
前記描画命令データと前記最適化情報を記憶する中間データ記憶手段と、
前記最適化情報に基づき受け持つ領域を決定し、領域毎に前記描画命令データを描画処理する前記描画処理手段と、
を有することを特徴とする画像形成装置。
【請求項2】
前記最適化情報作成手段は、総ページ数が所定値以上の場合、前記所定値未満の予め定めたページ数の各ページの前記最適化情報を作成後、前記描画処理手段として前記領域の前記描画命令データを描画処理し、
前記中間データ記憶手段に前記最適化情報が記憶されたページ数が閾値以下となると、前記印刷データを解析し、前記最適化情報の作成を再開する、
ことを特徴とする請求項1記載の画像形成装置。
【請求項3】
前記最適化情報作成手段は、総ページ数が1ページの場合、前記最適化情報を作成せず、前記描画処理手段として前記領域の前記描画命令データを描画処理する、
ことを特徴とする請求項1記載の画像形成装置。
【請求項4】
前記最適化情報作成手段は、オブジェクトの種類及び描画面積に基づく描画処理の処理負荷を領域毎に決定した負荷値を前記最適化情報として作成する、
ことを特徴とする請求項1〜3いずれか1項記載の画像形成装置。
【請求項5】
前記最適化情報作成手段は、オブジェクトがベクターグラフィックの場合、前記ベクターグラフィックの制御点を全て含む外接矩形の前記描画面積を求める、
ことを特徴とする請求項4記載の画像形成装置。
【請求項6】
オブジェクトの種類に前記処理負荷の負荷指数を対応づけた負荷指数テーブルを有し、
前記最適化情報作成手段は、オブジェクトの種類に基づき前記負荷指数テーブルから読み出した前記負荷指数を、前記描画面積に乗じて前記負荷値を算出する、
ことを特徴とする請求項4又は5記載の画像形成装置。
【請求項7】
前記描画処理手段に描画処理の対象として適切なオブジェクトの種類を対応づけた処理対象決定テーブルを有し、
前記描画処理手段は、未処理の前記領域に含まれるオブジェクトが、前記処理対象決定テーブルに含まれている場合、該領域を処理対象に決定する、
ことを特徴とする請求項4〜6いずれか1項記載の画像形成装置。
【請求項8】
前記描画処理手段は、未処理の前記領域に含まれるオブジェクトが、前記処理対象決定テーブルに含まれていない場合、前記負荷値が最も高い該領域を処理対象に決定する、
ことを特徴とする請求項4〜6いずれか1項記載の画像形成装置。
【請求項9】
マルチコア型のCPU、又は、複数のCPUを有し、
前記描画命令生成手段に1つのコア又はCPUを、
前記最適化情報作成手段に1つのコア又はCPUを、
前記描画処理手段に残りのコア又はCPUを、割り当て、各手段がそれぞれ処理を実行する、ことを特徴とする請求項1〜8いずれか1項記載の画像形成装置。
【請求項10】
ページの領域毎に描画処理手段が描画処理する画像処理方法であって、
データ取得手段が、外部から取得した印刷データを印刷データ格納手段に格納するステップと、
描画命令生成手段が、前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成し、中間データ記憶手段に格納するステップと、
最適化情報作成手段が、前記描画命令生成手段と並行して前記印刷データを解析し、前記描画処理手段が受け持つ前記領域を決定するための最適化情報を作成し、前記中間データ格納手段に格納するステップと、
前記描画処理手段が、前記最適化情報に基づき受け持つ領域を決定し、領域毎に前記描画命令データを描画処理するステップと、
を有することを特徴とする画像処理方法。
【請求項1】
ページの領域毎に描画処理手段が描画処理する画像形成装置であって、
印刷データを格納する印刷データ格納手段と、
前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段と、
前記描画命令生成手段と並行して前記印刷データを解析し、前記描画処理手段が受け持つ前記領域を決定するための最適化情報を作成する最適化情報作成手段と、
前記描画命令データと前記最適化情報を記憶する中間データ記憶手段と、
前記最適化情報に基づき受け持つ領域を決定し、領域毎に前記描画命令データを描画処理する前記描画処理手段と、
を有することを特徴とする画像形成装置。
【請求項2】
前記最適化情報作成手段は、総ページ数が所定値以上の場合、前記所定値未満の予め定めたページ数の各ページの前記最適化情報を作成後、前記描画処理手段として前記領域の前記描画命令データを描画処理し、
前記中間データ記憶手段に前記最適化情報が記憶されたページ数が閾値以下となると、前記印刷データを解析し、前記最適化情報の作成を再開する、
ことを特徴とする請求項1記載の画像形成装置。
【請求項3】
前記最適化情報作成手段は、総ページ数が1ページの場合、前記最適化情報を作成せず、前記描画処理手段として前記領域の前記描画命令データを描画処理する、
ことを特徴とする請求項1記載の画像形成装置。
【請求項4】
前記最適化情報作成手段は、オブジェクトの種類及び描画面積に基づく描画処理の処理負荷を領域毎に決定した負荷値を前記最適化情報として作成する、
ことを特徴とする請求項1〜3いずれか1項記載の画像形成装置。
【請求項5】
前記最適化情報作成手段は、オブジェクトがベクターグラフィックの場合、前記ベクターグラフィックの制御点を全て含む外接矩形の前記描画面積を求める、
ことを特徴とする請求項4記載の画像形成装置。
【請求項6】
オブジェクトの種類に前記処理負荷の負荷指数を対応づけた負荷指数テーブルを有し、
前記最適化情報作成手段は、オブジェクトの種類に基づき前記負荷指数テーブルから読み出した前記負荷指数を、前記描画面積に乗じて前記負荷値を算出する、
ことを特徴とする請求項4又は5記載の画像形成装置。
【請求項7】
前記描画処理手段に描画処理の対象として適切なオブジェクトの種類を対応づけた処理対象決定テーブルを有し、
前記描画処理手段は、未処理の前記領域に含まれるオブジェクトが、前記処理対象決定テーブルに含まれている場合、該領域を処理対象に決定する、
ことを特徴とする請求項4〜6いずれか1項記載の画像形成装置。
【請求項8】
前記描画処理手段は、未処理の前記領域に含まれるオブジェクトが、前記処理対象決定テーブルに含まれていない場合、前記負荷値が最も高い該領域を処理対象に決定する、
ことを特徴とする請求項4〜6いずれか1項記載の画像形成装置。
【請求項9】
マルチコア型のCPU、又は、複数のCPUを有し、
前記描画命令生成手段に1つのコア又はCPUを、
前記最適化情報作成手段に1つのコア又はCPUを、
前記描画処理手段に残りのコア又はCPUを、割り当て、各手段がそれぞれ処理を実行する、ことを特徴とする請求項1〜8いずれか1項記載の画像形成装置。
【請求項10】
ページの領域毎に描画処理手段が描画処理する画像処理方法であって、
データ取得手段が、外部から取得した印刷データを印刷データ格納手段に格納するステップと、
描画命令生成手段が、前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成し、中間データ記憶手段に格納するステップと、
最適化情報作成手段が、前記描画命令生成手段と並行して前記印刷データを解析し、前記描画処理手段が受け持つ前記領域を決定するための最適化情報を作成し、前記中間データ格納手段に格納するステップと、
前記描画処理手段が、前記最適化情報に基づき受け持つ領域を決定し、領域毎に前記描画命令データを描画処理するステップと、
を有することを特徴とする画像処理方法。
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図11】
【図12】
【図13】
【図14】
【図16】
【図17】
【図19】
【図20】
【図1】
【図10】
【図15】
【図18】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図11】
【図12】
【図13】
【図14】
【図16】
【図17】
【図19】
【図20】
【図1】
【図10】
【図15】
【図18】
【公開番号】特開2012−71544(P2012−71544A)
【公開日】平成24年4月12日(2012.4.12)
【国際特許分類】
【出願番号】特願2010−219743(P2010−219743)
【出願日】平成22年9月29日(2010.9.29)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
【公開日】平成24年4月12日(2012.4.12)
【国際特許分類】
【出願日】平成22年9月29日(2010.9.29)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
[ Back to top ]