(57)【要約】【課題】複数のコアを持つ画像形成装置において、描画処理部の待機時間を縮小し、複数のコアにより効率的に印刷することが可能な画像形成装置及び画像処理方法を提供すること。【解決手段】ページの領域毎に描画処理手段１６が描画処理する画像形成装置２００であって、印刷データを格納する印刷データ格納手段１３と、印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段１２と、描画命令生成手段と並行して印刷データを解析し、描画処理手段１６が受け持つ領域を決定するための最適化情報を作成する最適化情報作成手段１４と、描画命令データと最適化情報を記憶する中間データ記憶手段１５と、最適化情報に基づき受け持つ領域を決定し、領域毎に描画命令データを描画処理する描画処理手段１６と、を有することを特徴とする。【選択図】図１
2012071544.tif 000002
【特許請求の範囲】
【請求項１】
ページの領域毎に描画処理手段が描画処理する画像形成装置であって、
印刷データを格納する印刷データ格納手段と、
前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段と、
前記描画命令生成手段と並行して前記印刷データを解析し、前記描画処理手段が受け持つ前記領域を決定するための最適化情報を作成する最適化情報作成手段と、
前記描画命令データと前記最適化情報を記憶する中間データ記憶手段と、
前記最適化情報に基づき受け持つ領域を決定し、領域毎に前記描画命令データを描画処理する前記描画処理手段と、
を有することを特徴とする画像形成装置。
【請求項２】
前記最適化情報作成手段は、総ページ数が所定値以上の場合、前記所定値未満の予め定めたページ数の各ページの前記最適化情報を作成後、前記描画処理手段として前記領域の前記描画命令データを描画処理し、
前記中間データ記憶手段に前記最適化情報が記憶されたページ数が閾値以下となると、前記印刷データを解析し、前記最適化情報の作成を再開する、
ことを特徴とする請求項１記載の画像形成装置。
【請求項３】
前記最適化情報作成手段は、総ページ数が１ページの場合、前記最適化情報を作成せず、前記描画処理手段として前記領域の前記描画命令データを描画処理する、
ことを特徴とする請求項１記載の画像形成装置。
【請求項４】
前記最適化情報作成手段は、オブジェクトの種類及び描画面積に基づく描画処理の処理負荷を領域毎に決定した負荷値を前記最適化情報として作成する、
ことを特徴とする請求項１〜３いずれか１項記載の画像形成装置。
【請求項５】
前記最適化情報作成手段は、オブジェクトがベクターグラフィックの場合、前記ベクターグラフィックの制御点を全て含む外接矩形の前記描画面積を求める、
ことを特徴とする請求項４記載の画像形成装置。
【請求項６】
オブジェクトの種類に前記処理負荷の負荷指数を対応づけた負荷指数テーブルを有し、
前記最適化情報作成手段は、オブジェクトの種類に基づき前記負荷指数テーブルから読み出した前記負荷指数を、前記描画面積に乗じて前記負荷値を算出する、
ことを特徴とする請求項４又は５記載の画像形成装置。
【請求項７】
前記描画処理手段に描画処理の対象として適切なオブジェクトの種類を対応づけた処理対象決定テーブルを有し、
前記描画処理手段は、未処理の前記領域に含まれるオブジェクトが、前記処理対象決定テーブルに含まれている場合、該領域を処理対象に決定する、
ことを特徴とする請求項４〜６いずれか１項記載の画像形成装置。
【請求項８】
前記描画処理手段は、未処理の前記領域に含まれるオブジェクトが、前記処理対象決定テーブルに含まれていない場合、前記負荷値が最も高い該領域を処理対象に決定する、
ことを特徴とする請求項４〜６いずれか１項記載の画像形成装置。
【請求項９】
マルチコア型のＣＰＵ、又は、複数のＣＰＵを有し、
前記描画命令生成手段に１つのコア又はＣＰＵを、
前記最適化情報作成手段に１つのコア又はＣＰＵを、
前記描画処理手段に残りのコア又はＣＰＵを、割り当て、各手段がそれぞれ処理を実行する、ことを特徴とする請求項１〜８いずれか１項記載の画像形成装置。
【請求項１０】
ページの領域毎に描画処理手段が描画処理する画像処理方法であって、
データ取得手段が、外部から取得した印刷データを印刷データ格納手段に格納するステップと、
描画命令生成手段が、前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成し、中間データ記憶手段に格納するステップと、
最適化情報作成手段が、前記描画命令生成手段と並行して前記印刷データを解析し、前記描画処理手段が受け持つ前記領域を決定するための最適化情報を作成し、前記中間データ格納手段に格納するステップと、
前記描画処理手段が、前記最適化情報に基づき受け持つ領域を決定し、領域毎に前記描画命令データを描画処理するステップと、
を有することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷データを可視化処理する画像形成装置等に関し、特に、マルチコア又は複数のＣＰＵを用いて印刷データを処理する画像形成装置及び画像処理方法に関する。
【背景技術】
【０００２】
従来の組み込み機器にはシングルコアのＣＰＵが多く使用されてきたが、デュアルコアやクアッドコアといった複数のコアを持つマルチコアのＣＰＵが、汎用ＰＣへ普及することに伴い、組み込み機器にもその導入が進められている。
【０００３】
しかし、単にコアの数が２倍になったからといって、その性能が２倍になるとは限らず、その影響度はアルゴリズムなどに依存する。すなわち、マルチコアの性能を最大限に引き出すには、各コアに処理を適切に配分し、処理を並列に実行する必要があり、その際、各コアに"待ち"が発生しないようにすることで２倍に近い性能を引き出すことができる。しかし一般的に各処理がすべて並列に実行できること（性能が２倍になるような処理）は稀であり、いかに処理を並列化するかが技術的な課題となる。
【０００４】
ＰＤＬデータを解析して描画対象をレンダリングするプリンタコントローラもマルチコアのＣＰＵを搭載することが検討されている。プリンタコントローラが、複数のコア（プロセッサ）を使用して印刷する場合、中間データを生成する「ＰＤＬ解析部」に１つ、中間データに基づきレンダリングを行う「描画処理部」に残りを割り当て、各描画処理部に割り当てる処理量を平均化して描画処理部に待ちが発生しないようにする技術が考案されている（例えば、特許文献１参照。）。
【０００５】
特許文献１には、複数の描画処理部にかかる負荷を均一化して印刷性能の効率化を図る目的で、各描画領域にて処理されるオブジェクトの面積から描画の負荷を算出し、各描画処理部にかかる負荷が均一になるように描画領域のサイズを決定して割り当てる描画処理装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１では、ＰＤＬ解析部でページを複数の領域に分割し、各領域に存在する描画オブジェクトの面積から処理量を計算している。このため、描画処理部はＰＤＬ解析部の処理が終わるまでオブジェクトの描画が始められず待ち状態となってしまうことになり、各コアやＣＰＵを有効に使用できていないという問題がある。
【０００７】
また、特許文献１では、処理量のみを基準に領域を分割しているため各描画処理部の特性に応じた最適な割り当てができていないという問題がある。
【０００８】
本発明は、上記課題に鑑み、複数のコア又はＣＰＵが搭載されたプリンタコントローラの、描画処理部の待機時間を縮小し、複数のコアにより効率的に印刷することが可能な画像形成装置及び画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題に鑑み、本発明は、ページの領域毎に描画処理手段が描画処理する画像形成装置であって、印刷データを格納する印刷データ格納手段と、前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段と、前記描画命令生成手段と並行して前記印刷データを解析し、前記描画処理手段が受け持つ前記領域を決定するための最適化情報を作成する最適化情報作成手段と、前記描画命令データと前記最適化情報を記憶する中間データ記憶手段と、前記最適化情報に基づき受け持つ領域を決定し、領域毎に前記描画命令データを描画処理する前記描画処理手段と、を有することを特徴とする。
【発明の効果】
【００１０】
複数のコア又はＣＰＵが搭載されたプリンタコントローラの、描画処理部の待機時間を縮小し、複数のコアにより効率的に印刷することが可能な画像形成装置及び画像処理方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態のレンダリング処理を模式的に説明する図の一例である。
【図２】印刷システムの一例を示す図である。
【図３】ＭＦＰのハードウェア構成図の一例である。
【図４】コントローラの機能を模式的に説明する図の一例である。
【図５】ＰＤＬ部の機能ブロック図の一例を示す図である。
【図６】ＰＤＦ（Ｐｏｒｔａｂｌｅ Ｄｏｃｕｍｅｎｔ Ｆｏｒｍａｔ）ファイルのフォーマット例を示す図である。
【図７】中間データの一例を示す図である。
【図８】ＰＤＬ部の処理の内部的な手順を模式的に示す図の一例である。
【図９】ベクターグラフィックにおけるバウンディングボックスの一例を説明する図の一例である。
【図１０】最適化情報とそこから算出される負荷値の一例を示す図である。
【図１１】最適化情報作成部が最適化情報から負荷値を算出する手順を示すフローチャート図の一例を示す図である。
【図１２】最適化情報の作成手順を示すフローチャート図の一例である。
【図１３】ディスプレイリストの作成手順を示すフローチャート図の一例である。
【図１４】レンダリングの手順を示すフローチャート図の一例である。
【図１５】負荷値の算出の別の一例を示す図である。
【図１６】タイミングチャート図の一例である。
【図１７】タイミングチャート図の別の一例である。
【図１８】領域毎のオブジェクトが偏ったページの一例を示す図である。
【図１９】各コアがレンダリングを実行する領域を決定する手順を示すフローチャート図の一例である。
【図２０】各コアにとって得意なレンダリング及び不可能なレンダリングが登録されたテーブルの一例である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図１は、本実施形態のレンダリング処理を模式的に説明する図の一例である。例えば、４つのコアがあるとして、各コアが以下のように処理を分担している。
コア１：ＰＤＬ解析（ディスプレイリストの作成）
コア２：最適化情報の作成→レンダリング
コア３：レンダリング
コア４：レンダリング
すなわち、ＰＤＬ解析と最適化情報の作成を別々のコアに割り当てることで、この２つの処理が時間的に並行に実行されることが特徴の１つである。なお、最適化情報とはレンダリングの負荷値又は負荷値を求めるための情報である。
【００１３】
すると、コア１は最適化情報を作成する必要がないので、比較的重い処理であるＰＤＬ解析だけを従来よりも短い時間で完了できる。また、コア２は、比較的軽い処理である最適化情報の作成だけを行えばよいので、コア１が１ページ分のＰＤＬ解析を行う間に、複数のページの最適化情報を作成できる。
【００１４】
この結果、レンダリングするコア３，コア４が待機する時間は、コア１が１ページ分をＰＤＬ解析するまでの時間に短縮できる。すなわち、従来、ＰＤＬ解析部が最適化情報も作成していたため、レンダリングするコア３，コア４がＰＤＬ解析＋最適化情報の作成が完了するまで待機する必要があったのと比べて、処理時間を短縮できる。
【００１５】
〔構成〕
図２は、印刷システム３００の一例を示す図である。ホストＰＣ（Personal Computer）１５０とＭＦＰ（Multi Function Peripheral）２００がネットワークを介して接続されている。
【００１６】
ホストＰＣ１５０がユーザの操作を受け付け、例えば何らかのアプリケーションプログラムがＯＳのグラフィック制御部（例えばＧＤＩ）に文書データの印刷を要求する。グラフィック制御部は、アプリケーションに依存しないＡＰＩ（基本関数）により文書データを描画する描画命令（中間ファイル）を生成する。
【００１７】
この後、グラフィック制御部は、ＭＦＰ２００が対応したＰＤＬデータを生成するプリンタドライバを呼び出す。グラフィック制御部とプリンタドライバの間には、ＤＤＩ(Device Driver Interface)と呼ばれるインタフェースが定義されている。プリンタドライバは、中間ファイルをプリンタが解釈可能なＰＤＬデータに変換し、ＭＦＰ２００に送信する。
【００１８】
ＰＤＬデータとしては、ＰｏｓｔＳｃｒｉｐｔ、ＰＣＬ、ＲＰＣＳ、ＰＤＦ（Ｐｏｒｔａｂｌｅ Ｄｏｃｕｍｅｎｔ Ｆｏｒｍａｔ）、又は、ＸＰＳなどのフォーマットが知られており、ＰＤＬデータのフォーマットはＭＦＰ２００が解析可能なフォーマットである必要がある。
【００１９】
ＭＦＰ２００は、ＰＤＬデータからディスプレイリストと最適化情報を作成し、描画処理（レンダリング処理）などを行い、印刷する。なおＭＦＰ２００は、プリンタ機能さえ有していればよいが、複写機、スキャナ、送信機能（FAX、電子メール、フォルダ）等を有していてもよい。
【００２０】
図３は、ＭＦＰ２００のハードウェア構成図の一例である。ＭＦＰ２００は、ＭＦＰ２００の全体を制御するコントローラ１００ と、用紙に画像を印刷するためのエンジン１６０と、ユーザが入力を行う操作パネル・状態を表示するパネル装置 １７０ とを有する。
【００２１】
コントローラ１００ は、ＣＰＵ１１０、ＲＯＭ１２０、ＲＡＭ１３０、ＮＶＲＡＭ１４０、ネットワークＩ／Ｆ１５１、エンジンＩ／Ｆ１６１、パネルＩ／Ｆ１７１、及び、ＨＤＤ１８０を有する。
【００２２】
ＣＰＵ１１０は、第１コア１１１、第２コア１１２、第３コア１１３、及び、第４コア１１４を有するマルチコア型のＣＰＵであり、プログラム１８１に記述された命令を実行する。プログラム１８１は、第１コア１１１、第２コア１１２、第３コア１１３、及び、第４コア１１４のそれぞれ専用に、４つに分かれていてもよいし、１つのプログラムを４つのコアが重複して実行してもよい。ＣＰＵ１１０のコア数は２個以上であれば５個以上でもよい。また、マルチコア型でなく、マルチプロセッサ又はマルチＣＰＵと呼ばれる、複数の独立したＣＰＵを搭載してもよい。
【００２３】
ＲＯＭ１２０には、起動用のプログラムや初期設定値などが記憶されている。ＲＡＭ１３０は、コントローラ１００が作成するページメモリやソフトウエアが動作するために必要なワークメモリとして利用される。ＮＶＲＡＭ１４０は、ＭＦＰ２００に設定された印刷条件などを保存しておく不揮発性メモリである。ネットワークＩ／Ｆ１５１は、ネットワーク上に接続されたホストＰＣ１５０とデータを送受信する。エンジンＩ／Ｆ１６１は印刷指示等を行いエンジン１６０を制御する。
【００２４】
エンジン１６０は、少なくとも画像形成を行うプロッタエンジンを有する。プロッタエンジンは、例えばタンデム型の感光ドラムを有し、ホストＰＣ１５０から受信したＰＤＬデータをレンダリングして得られた画像データに基づきレーザビームを変調し感光ドラムを走査して潜像を形成する。そして、潜像にトナーを付着して現像した１ページ毎のトナー画像を用紙に熱と圧力で転写する。なお、プロッタエンジンは、インクジェット方式でもよい。また、エンジン１６０には、スキャナエンジンやＦＡＸエンジンがある。
【００２５】
パネルＩ／Ｆ１７１はパネル装置１７０との入出力を制御する。ＨＤＤ１８０はフォントデータやプログラム１８１を記憶する。
【００２６】
図４は、コントローラ１００の機能を模式的に説明する図の一例である。図４において図３と同一部には同一の符号を付しその説明は省略する。コントローラ１００の機能は、ＣＰＵ１１０がプログラム１８１を実行して実現される、プリンタコントロールシステム２０４とＰＤＬ部２０５に代表される。
【００２７】
ＰＤＬ部２０５は、ＰＤＬデータをプリンタコントロールシステム２０４から受け取り印刷画像を作成する。ＰＤＬ部２０５は、ＰＤＬデータのフォーマットとしてＰｏｓｔＳｃｒｉｐｔ  ＰＣＬ、ＲＰＣＳ、ＰＤＦ、ＸＰＳ等に対応している。
【００２８】
プリンタコントロールシステム２０４は、ネットワークＩ／Ｆ２０２が受信するＰＤＬデータを印刷するため、ＰＤＬ部２０５にレンダリングを要求し、その後、エンジンＩ／Ｆ２０６に印刷を要求するなど、印刷の手順を制御する。
【００２９】
図５は、ＰＤＬ部２０５の機能ブロック図の一例を示す図である。ＰＤＬ部２０５は、入力データ受信部１１、ＤＬ作成部１２、最適化情報作成部１４、複数の描画処理部１６、ＰＤＬデータ格納部１３、及び、中間データ格納部１５、を有する。ＰＤＬデータ格納部１３や中間データ格納部１５はＨＤＤ１８０やＲＡＭ１３０を実体とする。
【００３０】
入力データ受信部１１は、ネットワークＩ／Ｆ１５１がホストＰＣ１５０から受信したＰＤＬデータを、ＰＤＬデータ格納部１３に記憶する。ＤＬ作成部１２は、ＰＤＬデータを構文解析し、ＰＤＬデータに含まれるオブジェクト（テキスト、イメージ、ベクターグラフィックス等）を抽出するとともに、これとＰＤＬデータに含まれる描画情報に基づき、ディスプレイリスト（中間データ）を作成する。ディスプレイリストは中間データ格納部１５に格納される。
【００３１】
最適化情報作成部１４は、ＰＤＬデータから描画対象となる各種のオブジェクトの配置情報や種類などの特徴から最適化情報を作成する。この最適化情報も中間データ格納部１５に格納される。最適化情報については後述するが、最適化情報はオブジェクト（又はオブジェクトが含まれる描画領域）をレンダリングする描画処理手段１６を決定するための情報である。より具体的にはオブジェクトを描画する際の処理負荷を決定するための情報、又は、処理負荷そのものである。
【００３２】
描画処理部１６は、中間データ格納部１５に保存されているディスプレイリストや最適化情報に基づいて描画を担当する描画領域を決定し、描画領域毎にディスプレイリストに基づき出力イメージデータをレンダリングする。なお、描画領域はページを長手方向に等間隔又は予め定めた間隔で区分したページ上の一範囲をいい、最適化情報作成部１４や描画処理部１６にとって既知である。
【００３３】
図示する描画処理部１６が３つなのは、ＣＰＵ１１０のコア数を考慮したためであり、本実施形態では、４つのコアの１つをＤＬ作成部１２に、４つのコアの１つを最適化情報作成部１４に、残りを描画処理部１６に、それぞれ割り当てる。なお、最適化情報作成部１４は描画処理部１６としても作動する。このため図では描画処理部１６が３つある。
【００３４】
〔ＰＤＬデータ等について〕
図６は、ＰＤＦ（Portable Document Format）ファイルのフォーマット例を示す図である。ここではＰＤＬデータを説明するため、ＰＤＦファイルを用いた。
【００３５】
ＰＤＦファイルは、ヘッダ、ボディ、相互参照表、トレーラから構成されている。ヘッダにはファイルのフォーマットがＰＤＦであることを示すために、ＰＤＦのバージョン情報を含めた１行が記述される（例えば、「%ＰＤＦ-1.4」）。 
ボディには、テキストやイメージなどのページを構成するデータの本体がオブジェクトとして記述されている。 なお、各オブジェクトには識別番号が付与されており、各オブジェクトは、ボディ内において、表示される文書のページ順とは無関係に任意の順序で記述される。 
オブジェクト番号  世代番号（通常はゼロ） obj
<<
/Type/Page
/Parent オブジェクト番号 世代番号 R
/Contents オブジェクト番号ｎ   世代番号 R
>>
endobj
ＰＤＦでは文書の全体、ページ、ページ内の図形や文字を全てオブジェクトとして扱うので、全てにオブジェクト番号が割り当てられる。この例では、Parentの行のオブジェクト番号がこのページの親のページのオブジェクト番号を示す。なお、"R"はこのページが参照するという意味の記号である。
【００３６】
また、Contentsの行のオブジェクト番号ｎは、このページの中身の（このページに記述される）オブジェクトのオブジェクト番号を示す。
【００３７】
Contentsオブジェクトがオブジェクト番号ｎを以下のように記述しているとする(説明に用いない記述は省略した)。
【００３８】
オブジェクト番号ｎ 世代番号 obj
<<
/Length バイト数
>>
stream
……ここに描画命令が入る……
endstream
endobj
Lengthはstream〜endstreamで指定されるオブジェクトのサイズ（バイト数）を表す。例えば、文字の場合の描画命令は「BT〜ET」で囲まれる範囲に「フォント識別情報  フォントサイズ  最初の文字の座標系指定  文字列」などの命令が記述される。
【００３９】
ベクターグラフィックスの場合「q〜Q」で囲まれる範囲に「座標系の指定  色の指定、座標＋移動命令  座標＋直線描画命令  座標＋曲線描画命令  …」などの命令が記述される。
【００４０】
イメージの場合「BI〜EI」で囲まれる範囲に「サイズ、エンコード方法  ID（Image Data）」という形式で記述される。
【００４１】
相互参照表には、上記ボディに記述されたオブジェクトのファイル内における位置情報がオフセットとして記述される。すなわち、ファイル先頭から各オブジェクトのデータの先頭までのバイト数が記述される。このように、ボディの記述位置はページ上の位置と何ら関係がない。
【００４２】
トレーラには、/Root属性で文書構造の頂上を示すオブジェクト（カタログオブジェクト）がオブジェクト番号で指定される。以降は、ボディの記述と相互参照表により各オブジェクトの位置が定まる。
【００４３】
上述したように、ＰＤＦファイル内には、表示される文書のページ順とは無関係に任意の順序でオブジェクトが配置されているため、コントローラ１００は、各オブジェクトへのアクセスの際、トレーラの内容を参照・解析し、その結果に基づいて、相互参照表の内容を参照・解析することによって、はじめて可能になる。 すなわち標準的なＰＤＦファイルにおいては、参照すべきトレーラおよび相互参照表がファイルの末尾、すなわち、ボディ（データ本体）より後ろに記述されているため、ＤＬ作成部１２や最適化情報作成部１４は、ＰＤＦファイルの全体が転送されＨＤＤ１８０などの記憶媒体に記憶されてから処理を開始する必要がある。
【００４４】
図７は、ディスプレイリストの一例を示す図である。ディスプレイリストは各描画処理部１６が処理可能なデータ形式であり、各種の描画命令や設定情報をリスト化したものである。例えば、「set foreground color（R,G,B）」は前景の色を指示する命令で、「set  raster operation（Op Code）」は画像に施す演算を指示する命令で、「draw rectangle（x、ｙ、ｗ、ｈ）」は矩形の描画命令である。
【００４５】
ＤＬ作成部１２が作成したディスプレイリストは、中間データ格納部１５に格納され、順次、描画処理部１６が解釈し、割り当てられた描画領域に描画すべきオブジェクトがあった場合、該描画領域にレンダリングを行う。
【００４６】
〔ＰＤＬ部の処理内容〕
図８は、ＰＤＬ部２０５の処理の内部的な手順を模式的に示す図の一例である。
（１）入力データ受信部１１は、ＰＤＦの入力を受け付ける。
ＰＣＬやＰＳといったＰＤＬデータは先頭から順番に、ＤＬ作成部１２がデータを読み込み、解析し、描画することが可能である。
（２）これに対し、ＰＤＦやＸＰＳといったＰＤＬデータでは解析すべきデータの先頭位置は入力データの後半（相互参照表、トレーラ）に添付されているため、入力データ受信部１１はＰＤＬデータ格納部１３にＰＤＬデータを一時保存する必要がある。
（３）しかし、ＰＤＬデータ格納部１３に保存されたＰＤＬデータは、先頭からの順次アクセスや所望の場所のランダムアクセスだけでなく、複数の処理手段からの同時アクセスが可能となる。
【００４７】
そこで、マルチコア環境を利用すれば、第１コア１１１にＤＬ作成部１２を割り当てＰＤＬデータを解析させ、中間データとなるディスプレイリストを作成する一方で、第２コア１１２に最適化情報作成部１４を割り当てＰＤＬデータを解析させ、最適化情報を作成するといった並列処理が可能となる。
（４）同時にディスプレイリスト・最適化情報といった２つの情報を作成すると、ＰＤＬデータの解析にかかる処理時間は、ディスプレイリスト・最適化情報のうち処理時間の長い方になる。しかし、最適化情報の作成は、厳密にＰＤＬデータを解析せず、描画オブジェクトの種類から処理の負荷情報や面積を読み出したり、又は、後述するバウンディングボックス（オブジェクトの全体を囲む描画領域）のサイズを算出するだけでよいため、ディスプレイリストを作成するよりも十分軽い処理である。したがって、少なくとも１ページ分のディスプレイリストが作成されるよりも早く、１ページ分の最適化情報が作成される。
（５）描画処理部１６に第３コア１１３、第４コア１１４を割り当て、２つの描画処理部１６が、最適化情報を参照し、描画すべき描画領域（Band）を選択する。
（６）描画処理部１６はディスプレイリストを参照・解析しレンダリングを実施する。
【００４８】
なお、本来、描画処理部１６はディスプレイリストの一部が作成されれば、1ページ分のディスプレイリストが作成されなくても、描画処理を開始することができる。この場合、描画処理部１６が最適化情報の作成まで待機すると却って処理速度が低下するおそれもある。
【００４９】
図９（ａ）は、1ページ目のディスプレイリストの作成、最適化情報の作成、及び、描画処理のタイミングチャート図の一例を示す図である。ディスプレイリスト（Parsar1）の作成が完了する前に、描画処理部（レンダラ１−１、レンダラ１−２）が描画処理を開始している。しかし、最適化情報作成部１４（最適化Md）が最適化情報（ＯＰ１）の作成を完了させるのは、描画処理部１４が描画処理を開始するよりも後である。したがって、１ページ目は最適化情報による描画領域の割り当てが間に合わない。
【００５０】
このため、本実施形態では、最適化情報作成部１４は１ページ目の最適化情報を作成せず、描画処理部１６が上方向から描画領域を順番に受け持ち、次ページ目以降において最適化情報を用いて描画領域を割り当てることが好ましい場合がある。よって、この場合、文書が１ページしかないのであれば、最適化情報作成部１４は最適化情報を作成しない。
【００５１】
なお、描画処理部１６がディスプレイリストの作成が完了する前に描画処理を開始しても、最適化情報の作成が完了しだい、描画処理部１６が各描画領域を再度、割り当てすることもできる。したがって、１ページ目の最適化情報を常に作成しないことが最も好ましいと言うことはできず、描画処理部の機能などによって最適な処理手順を採用すればよい。
【００５２】
次に、バウンディングボックスについて説明する。
図９（ｂ）は、ベクターグラフィックにおけるバウンディングボックスの一例を説明する図の一例である。ここではベクターグラフィックとして３次のベジェ曲線を例にして説明する。P0、P3はベジェ曲線の端点、P1、P2は方向点である。P1とP0を結ぶ線がP0を通るベクターグラフィックの接線となり、P２とP３を結ぶ線がP３を通るベクターグラフィックの接線となる。P0〜P3の曲線は、4つの点P0〜P3の座標とベジェ曲線の公式により定まる。
【００５３】
したがって、曲線はすぐに求められても面積を算出することは負荷が大きい。そこで、オブジェクトが文字や複雑な形状のベクターグラフィックの場合、描画処理部１６は正確に描画面積を求めず、始点・終点および制御点を全て含む外接矩形をベクターグラフィックボックスとして、このサイズを、描画面積の代用にすることで、計算量を大幅に削減することができる。
【００５４】
〔最適化情報〕
図１０（ａ）は最適化情報と最適化情報から算出される負荷値の一例を示す図である。最適化情報には、例えば、オブジェクトの種類と描画面積、又は、これらから算出したオブジェクトを描画する際の負荷値が含まれる(両方を含んでいてもよい)。
【００５５】
ディスプレイリストには種々のオブジェクト（テキスト、イメージ、ベクターグラフィックス）の描画命令がリストアップされているが、描画処理部１６が処理する内容はオブジェクトの種類によって大きく異なる。
【００５６】
本実施形態では、オブジェクトの種類によって異なる処理のうち、負荷の大小が重要であるので、最適化情報としては、各描画オブジェクトのレンダリングに必要な計算コストが挙げられる。
【００５７】
最適化情報作成部１４は、描画オブジェクトの種類として、上記に挙げた種類（テキスト、イメージ、ベクターグラフィックス）だけでなく、ＲＧＢカラーイメージ、モノクロイメージといった描画処理の負荷が大きく異なるものを別々に扱う。
【００５８】
また、描画面積は、例えばイメージ、又は、矩形や円形といったベクターグラフィックであれば容易に算出可能だが、ベジエ曲線などのベクターグラフィックは、制御点の集合から面積を算出するには負荷がかかるため（ベクターデータからラスターデータへの変換（スキャンライン変換）が必要であり、処理コストがかかってしまう）、正確な描画面積ではなく、バウンディングボックスのサイズを描画面積の代わりに採用する。
【００５９】
図１１は、最適化情報作成部１４が最適化情報から負荷値を算出する手順を示すフローチャート図の一例である。最適化情報作成部１４でなく描画処理部１６が算出してもよい。
【００６０】
最適化情報作成部１４は、図１０（ｂ）に示す負荷指数を用いて、各描画領域の負荷値を算出する。負荷指数とは、描画処理部１６がオブジェクトを処理する際の能力値による重みであり、オブジェクトの種類毎に負荷が大きいほど大きな値が定められている。例えば、グラフィックは「１」、文字は「０．５」である。負荷指数とオブジェクトの関係は、最適化情報作成部１４がコードの一部などに記述することで記憶している。
【００６１】
最適化情報作成部１４は、まず、ある描画領域のオブジェクトの種類を判定する（Ｓ１１０）。オブジェクトの種類はディスプレイリストから明らかである。
【００６２】
最適化情報作成部１４はそのオブジェクトの負荷指数を読み出す（Ｓ１２０）。
【００６３】
次に、最適化情報作成部１４は、オブジェクトがスキャンラインへの変換が必要なベクターグラフィックか否かを判定する（Ｓ１３０）。スキャンラインへの変換が必要なベクターグラフィックか否かは、例えば曲線部を含むか否かにより判定する。
【００６４】
スキャンラインへの変換が必要なベクターグラフィックの場合、最適化情報作成部１４はバウンディングボックスのサイズを算出する（Ｓ１４０）。
【００６５】
スキャンラインへの変換が必要でないベクターグラフィックの場合、最適化情報作成部１４はオブジェクトの描画面積を算出する（Ｓ１５０）。
【００６６】
そして、最適化情報作成部１４は、描画面積又はバウンディングボックスサイズと負荷指数からオブジェクトの負荷値を算出する（Ｓ１６０）。
負荷値の算出例について次述する。
【００６７】
＜描画領域１（ｂａｎｄ１）＞
図１０を例に負荷値の算出例を説明する。
グラフィック１は円形のベクターグラフィック、グラフィック２は矩形のベクターグラフィック、グラフィック３は四角形（ひし形）のベクターグラフィックである。
グラフィック１：描画面積１００、  負荷指数：１
グラフィック２：描画面積１２０、  負荷指数：１
グラフィック３：描画面積１５０、  負荷指数：１
グラフィック１の負荷値：１００
グラフィック２の負荷値：１２０
グラフィック３の負荷値：１５０
＜描画領域２（ｂａｎｄ２）＞
文字はスキャンラインへの変換が必要なベクターグラフィックである。
文字１：バウンディングボックスサイズ１００、  負荷指数：０．５
文字２：バウンディングボックスサイズ１３０、  負荷指数：０．５
文字３：バウンディングボックスサイズ８０、    負荷指数：０．５
文字１の負荷値：５０
文字２の負荷値：６５
文字３の負荷値：４０
＜描画領域４（ｂａｎｄ４）＞
イメージ１はＲＧＢフルカラーにイメージデータである。
イメージ１：描画面積５００、  負荷指数：３
イメージ１の負荷値：１５００
描画処理部１６は、各描画領域毎に、オブジェクトの負荷値を合計して描画領域の負荷値とする。そして、負荷値が大きい描画領域から順に描画処理部１６はレンダリングの処理対象とする。負荷値の大きい描画領域から先にレンダリング処理が開始されれば、1ページの処理に必要な最大時間を抑制できる可能性が高くなる。
【００６８】
後述する図１４の手順（描画領域の割り当て処理）において、描画処理部１６は未処理描画領域のうち、最も、負荷値の大きな描画領域を担当する描画領域に決定する。これを各描画処理部１６が繰り返すので、１ページの全体的な処理時間を短縮できる。
【００６９】
〔動作手順〕
図１２は、最適化情報の作成手順を示すフローチャート図の一例である。
【００７０】
最適化情報作成部１４はＰＤＬデータ格納部１３に格納されたＰＤＦを読み込む（Ｓ２１０）。
最適化情報作成部１４はＰＤＬデータに複数ページが含まれているか否かを判定する（Ｓ
２２０）。
【００７１】
複数ページが含まれていない場合（Ｓ２２０のＮｏ）、1ページだけになるが最適化情報による描画領域の割り当てが間に合わないので、最適化情報を作成することなく図１０の処理は終了する。
【００７２】
複数ページが含まれている場合（Ｓ２２０のＹｅｓ）、最適化情報作成部１４は、図１１の手順に基づき２ページ目以降の最適化情報を作成する（Ｓ２３０）。すなわち、描画領域毎に、各描画オブジェクトの種類を特定し、描画面積を算出し、さらに負荷値を算出する。
【００７３】
図１３は、ディスプレイリストの作成手順を示すフローチャート図の一例である。
【００７４】
ＤＬ作成部１２はＰＤＬデータ格納部１３に格納されたＰＤＦを読み込む（Ｓ３１０）。
ＤＬ作成部１２は、ＰＤＦの相互参照表とトレーラに基づき、ボディ部のオブジェクトを解析しディスプレイリストを作成する（Ｓ３２０）。
【００７５】
ＤＬ作成部１２はＰＤＦの終端までディスプレイリストを作成したか否かを判定し（Ｓ３３０）、終端まで到達すると処理を終了する。
【００７６】
図１４は、レンダリングの手順を示すフローチャート図の一例である。
描画処理部１６は、１ページを複数の描画領域に分けてレンダリングするが、複数の描画処理部１６が1ページを効率的にレンダリングするので、１つの描画領域毎にどの描画処理部１６がレンダリングするかを決定する。
【００７７】
まず、描画処理部１６は、ページ毎に、未描画領域があるか否かを判定する（Ｓ４１０）。未描画領域がない場合（Ｓ４１０のＮｏ）、そのページの処理は終了する。
【００７８】
未描画領域がある場合（Ｓ４１０のＹｅｓ）、描画処理部１６はそのページの最適化情報があるか否かを判定する（Ｓ４２０）。すなわち、未描画領域が１つしかなければ、その１つの描画領域を自分に割り当てればよいが、複数ある場合に、どの描画領域のレンダリングを担当するか最適化情報により判断する必要がある。
【００７９】
よって、最適化情報が生成されている場合（Ｓ４２０のＹｅｓ）、描画処理部１６は最適化情報を参照して、担当する描画領域を自分に割り当てる（Ｓ４３０）。例えば、最も負荷値の高い描画領域を処理対象とする。
【００８０】
最適化情報が生成されていない場合（Ｓ４２０のＮｏ）、描画処理部１６は描画領域の決まった場所から順番に、担当する描画領域を自分に割り当てる（Ｓ４４０）。例えば、ページ上段、ページ中央付近などから、予め決められた優先順位で割り当てる。
【００８１】
描画領域を割り当てると、描画処理部１６はその描画領域のディスプレイリストを参照し、レンダリングを行う（Ｓ４５０）。
【００８２】
〔具体例〕
図１５は、負荷値の算出の別の一例を示す図である。図１５では、オブジェクトが描画領域を跨いでいるが基本的な考え方は同じである。描画領域を跨ぐオブジェクトは、描画処理部１６が描画領域と描画領域の境界で分割する。
【００８３】
グラフィック４は円形のベクターグラフィックであるが、境界で分割された上側をグラフィック４U、下側をグラフィック４Dとする。円形のグラフィックを直線で分割した場合の面積は、例えば、直線と円周との最短距離の関数として予めテーブルなどで保持しておく。こうすることで処理負荷を抑制できる。
【００８４】
また、イメージ２はＲＧＢフルカラーのイメージデータであるが、境界で分割された上側をイメージ２U、下側をイメージ２Dとする。矩形の描画領域を直線で分割した場合の面積は、イメージの高さに対する上辺から境界までの比により求められる。
【００８５】
また、文字４〜６は、描画面積の代わりにバウンディングボックスのサイズが求められる。文字４の境界で分割された上側を文字４U、下側を４D、文字５の境界で分割された上側を文字５U、下側を５D、文字６の境界で分割された上側を文字６U、下側を６D、とする。
【００８６】
バウンディングボックスは矩形なので、バウンディングボックスのサイズを直線で分割した場合の面積は、バウンディングボックスの高さに対する上辺から境界までの比により求められる。
【００８７】
＜描画領域１（ｂａｎｄ１）＞
グラフィック４U：描画面積５０、  負荷指数：１
負荷値：５０
＜描画領域２（ｂａｎｄ２）＞
グラフィック４D：描画面積７０、  負荷指数：１
イメージ２U：描画面積１２０、負荷指数：３
負荷値：７０×１＋１２０×３＝４３０
＜描画領域３（ｂａｎｄ３）＞
イメージ２D：描画面積１２０、負荷指数：１
文字４U：バウンディングボックスサイズ７０、  負荷指数：０．５
文字５U：バウンディングボックスサイズ９１、  負荷指数：０．５
文字６U：バウンディングボックスサイズ５６、  負荷指数：０．５
負荷値：１２０×１＋７０×０．５＋９１×０．５＋５６×０．５＝２２９
＜描画領域４（ｂａｎｄ４）＞
文字４D：バウンディングボックスサイズ３０、  負荷指数：０．５
文字５D：バウンディングボックスサイズ３９、  負荷指数：０．５
文字６D：バウンディングボックスサイズ２４、  負荷指数：０．５
負荷値  ：３０×０．５＋３９×０．５＋２４×０．５＝４６．５
負荷値の大きい順に、描画処理部１６は、Band2->Band3->Band1->Band4の順に描画を担当する。
【００８８】
〔タイミングチャート図（効果）〕
図１６は、タイミングチャート図の一例を示す。比較のため、図１６（ａ）は従来の構成のタイミングチャート図を、図１６（ｂ）は本実施形態の構成のタイミングチャート図を、それぞれ示す。
【００８９】
従来の構成では、第１コア１１１をインタプリタ（ＰＤＬ解析部）に、第２コア１１２〜第４コア１１４をレンダラ（描画処理部１６）に、割り当てるのが一般的である。このため、第１コア１１１は、Parser（ディスプレイリストの生成）、Op（負荷情報の作成）を受け持っている。
【００９０】
第１コア１１１が1ページ目のディスプレイリスト作成時に、負荷情報の蓄積も行っている。このため、第２〜第４コアのレンダラは、第１コア１１１が各ページのディスプレイリストと負荷情報を作成するまで待つ必要があった。図示するように、第１コア１１１が1ページ目のディスプレイリストと負荷情報の作成時、第２〜第４コアは待機しており、第１コア１１１が２ページ目のディスプレイリストと負荷情報の作成時、第２〜第４コアは１ページ目のレンダリングを描画領域毎に処理している。また、第２〜第４コアが３ページ目のレンダリングを描画領域毎に処理するには、第１コア１１１が３ページ目のディスプレイリストと負荷情報を作成した後でなければならない。
【００９１】
これに対し本実施形態のＰＤＬ部２０５は、第１コア１１１がインタプリタ（ＰＤＬ解析）のみを、第２コア１１２が最適化情報の作成のみを受け持つ。最適化情報の作成自体は、比較的、短時間で終了する。このため、第１コア１１１が１ページ分のディスプレイリストを作成する間に、最適化情報の作成はかなりの部分が進行する。
【００９２】
また、第１コア１１１はＰＤＬ解析しか行わないので、最適化情報を作成しない分だけ各ページの処理時間を短縮できる。
【００９３】
したがって、第３コア１１３、第４コア１１４は、従来よりも早期に、レンダリングを開始できる。また、第２コア１１２も、最適化情報の作成は比較的短い時間で終了するので、第２コア１１２が最適化情報を作成することになっても、最適化情報を早期に作成し、レンダリングを受け持つことができる。以上から、第２〜第４コアの待機時間が短い分、前ページの処理時間を短縮できることが分かる。
【００９４】
なお、図１６（ｂ）では、1ページ目の最適化情報が作成されている。例えば、1ページ分のディスプレイリストが作成されるまで描画処理部１４が描画処理を行わないような場合、図示するように1ページ目の最適化情報を作成することで、１ページ目の最適化情報を作成しない場合より最適化情報を利用できるだけ印刷処理の時間を短縮できる。
【００９５】
1ページ分のディスプレイリストが作成されるよりも先に描画処理部１４が描画処理を開始する場合、最適化情報作成部１４は1ページ目の最適化情報を作成しない。このため、第２コアは１ページ目の最適化情報（Op2）の作成から始め、第３，第４コアは１ページ目のディスプレイリストの作成の途中から描画処理を開始する。したがって、１ページ目の最適化情報を作成する場合よりも、印刷処理の時間を短縮できる。
【００９６】
図１７は、本実施形態のタイミングチャート図の別の一例を示す。第２コア１１２が実行する最適化情報の作成は比較的短時間に終了するので、ページ数が多い場合に不都合が生じるおそれがある。
【００９７】
すなわち、最適化情報作成部１４が作成した最適化情報は中間データ格納部１５に格納されるが、ページ数が多いと、ディスプレイリストの作成やレンダリングと比較して、最適化情報だけが作成されてしまい、中間データ格納部１５を消費してしまう。
【００９８】
レンダリングされた描画領域の最適化情報は不要になり削除されるが、ページ数が多い場合、先に最適化情報が多々作成されてしまい、多くのメモリを消費してしまう。
【００９９】
そこで、印刷対象のＰＤＬデータのページ数が閾値以上の場合、第２コア１１２は、ある特定のページ数の最適化情報を作成したのち、描画処理を担当する。
【０１００】
図１７では、第２コア１１２は、５ページ分の最適化情報Op1〜５を作成した後、レンダリングを開始している。こうすることで、ＰＤＬデータのページ数が多い場合に、最適化情報がメモリを消費してしまうことを防止できる。
【０１０１】
また、第２コア１１２は、作成済みの最適化情報の数又はページ数が所定値（例えば、２）以下になったら、再度、特定のページ数の最適化情報の作成を開始する。こうすれば、中間データ格納部１５の容量を消費しすぎることなく、第２コア１１２は優先的に最適化情報を作成し、レンダリングも行うことができる。
【０１０２】
〔変形例〕
描画処理部１６が描画領域を選択する基準を負荷値の高い順としたが、描画処理部１６によって同じ処理の処理時間が異なる場合がある。すなわち、例えば、第３コア１１３はカラーのレンダリングが速いが文字のレンダリングが遅く、第４コア１１４はその逆の特性を有するような場合である。
【０１０３】
この場合、第３コア１１３がカラーのイメージがある描画領域をレンダリングし、第４コア１１４が文字の多い描画領域をレンダリングすることが、全体的な処理時間の短縮につながる。
【０１０４】
図１８は、描画領域毎のオブジェクトが偏ったページの一例を示す。描画領域１には、カラーのイメージデータが含まれるが、描画領域２〜４は全て文字である。このようなページでは、描画領域１をカラーのレンダリングに好適な命令セットを持つコアが実行することが好ましい。よって、第３コア１１３が優先的に描画領域１をレンダリングすることで、描画領域１の処理時間を短縮できる。
【０１０５】
また、一方、あるコアが特定のオブジェクトのレンダリングが不可能な場合は、そのコアにはそのコアがレンダリングできるオブジェクトが含まれる描画領域を処理させることで、コアが何もしないで遊んでしまうことを防止できる。よって、コアとコアが得意な処理に応じて、コアが実行する処理を割り当てることが好ましい。
【０１０６】
図１９は、各コアがレンダリングを実行する描画領域を決定する手順を示すフローチャート図の一例である。また、図２０は、各コアにとって得意なレンダリング及び不可能なレンダリングが登録されたテーブルの一例である。このようなテーブルは、ＰＤＬ部２０５に予め登録されている。
【０１０７】
図１９においてステップＳ４２０までの処理は図１４と同様である。
未描画領域があり（Ｓ４１０のＹｅｓ）、かつ、最適化情報がある場合（Ｓ４２０のＹｅｓ）、描画処理部１６は、最適化情報のある描画領域のうち、図２０のテーブルに登録された処理できないオブジェクトが存在する描画領域があるか否かを判定する（Ｓ４２１）。
【０１０８】
処理できないオブジェクトのある描画領域が存在する場合、その描画領域をレンダリングの対象から除外し残りの描画領域を処理対象の候補にする（Ｓ４２２）。
【０１０９】
次に、描画処理部１６は、未描画領域に他のコアが処理できないオブジェクトが存在する描画領域があるか否かを図２０のテーブルを参照して判定する（Ｓ４２３）。
【０１１０】
未描画領域に他のコアが処理できないオブジェクトが存在する描画領域がある場合（Ｓ４２３のＹｅｓ）、その描画領域を残すと待ちが発生するおそれがあるので、その描画領域を処理対象の候補にする（Ｓ４２４）。
【０１１１】
次に、描画処理部１６は、候補の中に自コアが処理の得意なオブジェクトのある描画領域があるか否かを図２０のテーブルを参照して判定する（Ｓ４２５）。これにより、描画処理部１６は、レンダリングが速く終了するオブジェクトを特定することができる（Ｓ４２６）。例えば、カラーのイメージのレンダリング処理が速い描画処理部１６は、優先的にそのオブジェクトが含まれる描画領域をレンダリング対象にでき、文字のレンダリング処理が速い描画処理部１６は、優先的にそのオブジェクトが含まれる描画領域をレンダリング対象にできる。
【０１１２】
処理の得意なオブジェクトが含まれた描画領域がない場合（Ｓ４２５のＮｏ）、描画処理部１６は、最適化情報を参照して負荷値の大きい描画領域から順に処理対象として受け持つ（Ｓ４２７）。以降の処理は図１４と同様である。
【０１１３】
以上説明したように、本実施形態のＭＦＰ２００は、最適化情報生成部１４がＤＬ解析部１２と時間的に並列に最適化情報を作成するので、ＤＬ解析部１２と描画処理部１６との待ち時間が短縮される。また、最適化情報だけでなく描画処理部１６の得意な描画処理を考慮すれば、さらに1ページ当たりの処理時間を短縮できる。
【符号の説明】
【０１１４】
１００      コントローラ
１１０      ＣＰＵ
１１１      第１コア
１１２      第２コア
１１３      第３コア
１１４      第４コア
１２０      ＲＯＭ
１３０      ＲＡＭ
１４０      ＮＶＲＡＭ
１５０      ホストＰＣ
１５１      ネットワークＩ／Ｆ
１６１      エンジンＩ／Ｆ
１７１      パネルＩ／Ｆ
１６０      エンジン
１７０      パネル装置
１８０      ＨＤＤ
２００      ＭＦＰ
２０４      プリンタコントロールシステム
２０５      ＰＤＬ部  
３００      印刷システム
【先行技術文献】
【特許文献】
【０１１５】
【特許文献１】特許第３４７４０７８号公報
【図２】
2012071544.tif 000003
【図３】
2012071544.tif 000004
【図４】
2012071544.tif 000005
【図５】
2012071544.tif 000006
【図６】
2012071544.tif 000007
【図７】
2012071544.tif 000008
【図８】
2012071544.tif 000009
【図９】
2012071544.tif 000010
【図１１】
2012071544.tif 000011
【図１２】
2012071544.tif 000012
【図１３】
2012071544.tif 000013
【図１４】
2012071544.tif 000014
【図１６】
2012071544.tif 000015
【図１７】
2012071544.tif 000016
【図１９】
2012071544.tif 000017
【図２０】
2012071544.tif 000018
【図１】
2012071544.tif 000019
【図１０】
2012071544.tif 000020
【図１５】
2012071544.tif 000021
【図１８】
2012071544.tif 000022