レンダリングシステムの構成方法を切り替える画像処理装置
【課題】 スキャンラインレンダリングの描画にサブCPUを機能ごとに用意したモジュールにおいて、パイプライン処理構成や並列分散処理構成は、印刷データの傾向によってはサブCPU間のFIFOに描画データが詰まって処理が遅くなるといった問題がある。
【解決手段】 印刷データの傾向に合わせてスキャンラインレンダリングの構成を変更する。具体的には、印刷データ内のエッジ数やオブジェクト数をバンド領域ごとに検索して、ある一定数のデータを保持するバンドが存在するかどうかでパイプライン処理構成か、並列分散処理構成かを決定する。
【解決手段】 印刷データの傾向に合わせてスキャンラインレンダリングの構成を変更する。具体的には、印刷データ内のエッジ数やオブジェクト数をバンド領域ごとに検索して、ある一定数のデータを保持するバンドが存在するかどうかでパイプライン処理構成か、並列分散処理構成かを決定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のプロセッサを有するレンダリングの構成をデータごとに変更することで、画像処理装置の印刷速度の向上に関する。
【背景技術】
【0002】
スキャンラインレンダリングの構成方法として、複数のサブCPUをパイプラインで処理する方法がある。描画機能を有しているマルチプロセッサは、描画命令コマンドを次のサブCPUにFIFO(First In,First Out)を通じて送信する。FIFOは通常のメモリアクセスよりも高速にデータを転送可能なバスを利用する。
【0003】
一方、FIFOによるデータ転送方法を採用したマルチプロセッサの描画処理で並列処理を行う方法が検討されている。1つのサブCPUに2つ機能を含むプログラムを並列に処理する。その際に並列したサブCPUからは、後段の機能へFIFOではなくメモリバッファを使用してデータを転送する。それぞれの構成にはボトルネックがあり、構成ごとにさまざまな解決方法が提案されてきた。特許文献1は、複数のマルチプロセッサを用いたレンダリングシステムで、FIFO内のデータがFull状態だったら、データバスのパスを切り替えて別のメモリバッファにデータを送信する。コマンドキューがEmptyになれば従来のデータパスに戻すことで、データの詰まりを無くして高速に描画することが可能となる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2011-56703号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、パイプライン処理と並列分散処理ではデータの傾向により、プロセッサ間のデータ転送時にコマンドキューの詰まりが発生する。
【0006】
パイプライン処理のレンダラでは、エッジを多く含むものなど1機能の処理で描画データの負荷が大きすぎて、次の後段へ描画データを送信時にFIFOが詰まるなどの問題がある。
【0007】
一方、並列分散処理では、バンド領域の一部分に描画オブジェクトが密集していると、片方のサブCPUの負荷が大きくなる。そのため、並列分散処理ではコマンドキューをメモリバッファにスプール出来る容量は限れられているため、ラスター走査線上に描画する際に片方のサブCPUの処理が終わるまで後段の処理が待ち続けるケースがある。また、並列分散処理は並列のサブCPUと後段とにコマンドキューをメモリバッファへ送信するため、FIFOが利用できずメモリアクセスの時間がパイプライン処理よりもかかる。さらに、隣あうバンド領域に描画オブジェクトがまたがっているとき、同一機能のサブCPUがバンドごとに処理するのに比べて、1つのサブCPUが同じ描画オブジェクトのキャッシュデータを扱えるため有効である。
【0008】
以上から、各構成は印刷データの内容によってボトルネックがあり、本特許は印刷データごとにレンダリングシステムの構成を切り替える方法を示す。
【課題を解決するための手段】
【0009】
印刷データの描画特徴を抽出する手段(701)と、
前記描画特徴を対象ページの特徴情報(607)として保持する手段(702)、
前記描画特徴を対象ページの中間データ(601)の特徴情報(607)として付加する手段(703)と、
前記描画特徴を対象ページ内のバンド領域(606)ごとに保持する手段(704)と、
前記描画特徴を用いて各バンド領域と隣接するバンド領域とを比較する手段と、
前記描画特徴比較から特徴情報(607)の差分を取得する手段(705)と、
前記描画特徴差分と隣接するバンド領域ごとに特徴情報(607)の閾値とを比較する手段(706)と、
前記描画特徴の閾値からレンダリングシステムの構成をパイプライン処理(710)か並列分散処理(709)かを判断する手段と、
前記描画特徴の判断で決定したレンダリングシステムを構築する手段(711)と、
を有することを特徴とした画像形成装置(102)。
【発明の効果】
【0010】
本特許では、描画データのパスを変更するのではなく、サブCPUの構成を印刷内容によって切り替えることで、並列の構成では2つの機能を有したサブCPUを使用するため、FIFO内の描画データ詰まりを軽減できる。
【0011】
また、印刷データごとにサブCPUの構成を変更することでサブCPUの負荷を軽減することができる。以上から、本特許の技術は描画データの詰まりを解消して印刷速度の向上を実現する。
【図面の簡単な説明】
【0012】
【図1】本発明の印刷装置における実施例の一形態であるプリンタの構成を示すブロック図である。
【図2】実施形態における各機器のコントローラユニットの構成例を示すブロック図である。
【図3】実施形態におけるコントローラソフトウェアの構成の一例を示す図である。
【図4(a)】実施形態における描画方法のパイプライン構成例を示すブロック図である。
【図4(b)】実施形態における描画方法の並列分散構成例を示すブロック図である。
【図5】実施形態における描画データから各サブCPUの制御方法の一例を示す図である。
【図6】実施形態における中間データの構成を示す図である。
【図7】本発明の実施形態におけるレンダリングシステムの構成を変更するプログラムを示すフローチャート図である。
【図8】実施形態1における描画方法の構成を変更する例を示すフローチャート図である。
【図9】実施形態におけるバンドをまたがる描画データの例を示す図である。
【図10】実施形態2における並列分散処理構成の描画をするときに各サブCPUへバンド中間データを送信する方法を示すフローチャート図である。
【発明を実施するための形態】
【0013】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【0014】
『プリンタの構成』
図1は、本発明を実施する印刷装置の一形態であるプリンタの構成を示すブロック図である。
【0015】
プリンタコントローラ部103と、プリンタエンジン部105と、操作パネル部104とを備える。プリンタコントローラ部103は、ホストコンピュータ(以下、ホスト)などの外部機器101からコードデータ(各種ページ記述言語(以下、PDL))が入力される。そのコードデータを解析することによってイメージデータ(ページ情報)を生成する。この生成されたイメージデータはインターフェースを介してプリンタエンジン部105に送信する。プリンタエンジン部105は、電子写真プロセスにより、プリンタコントローラ部103によって生成されたイメージデータが示す画像を用紙上に形成する。プリンタエンジン部105には、各機構と、その各機構による各印字プロセス処理(例えば、給紙処理など)に関する制御を行うエンジン制御部とが含まれている。操作パネル部104は、ユーザとのインターフェースを司り、プリンタ102に対する所望の動作を指示するための入力操作を行うための操作部を構成する。
【0016】
『プリンタコントローラ部の構成』
次に、プリンタコントローラ部103の構成について図2を参照しながら説明する。プリンタコントローラ部103は、プリンタコントローラ部103全体を制御するためのCPU202で、外部機器101との間でやり取りされる信号の入出力部を構成する。RAM204は、CPU202が動作するためのシステムワークメモリであり、入力された画像データを一時記憶するための画像メモリである。さらに、ROM205にはシステムの制御コードが格納されている。また、プリンタコントローラ部103は、外部機器101との間の通信制御を行うホストI/F203とを有している。
【0017】
ラスタイメージプロセッサ(RIP)206は、PDLデータなどをビットマップデータに展開する。ホストI/F203を介して入力されたコードデータから、CPU202はROM205に格納されている制御コードに従い、RIP206からプリンタエンジン部105が処理可能なビットマップデータの生成を行う。
【0018】
ビットマップデータは、エンジンI/F部207を介してビデオ信号としてプリンタエンジン部105に転送される。エンジンI/F部207は、プリンタエンジン部105とでやり取りされる信号の入出力部を構成するとともに、プリンタエンジン部105との間の通信制御を行う。
【0019】
パネル部104から操作入力によって出されたモード設定に関する指示などは、操作パネルI/F部207を介して入力され、操作パネルI/F部207はパネル部104とCPU202の間のインターフェースを構成する。
【0020】
CPU202は、パネル部104から指示されたモードに応じて上述の各ブロックに対する制御を行い、この制御はROM205に格納されている制御コードに基づき実行される。上述のCPU202を含む各ブロックは、システムバス208にCPUがアクセス可能なように接続されている。HDD209はハードディスクドライブであり、各種処理のためのシステムソフトウェア及び入力された画像データなどを格納する。
【0021】
『コントローラソフトウェアの構成』
図3は、印刷装置の動作を制御するコントローラソフトウェアの構成を示すブロック図である。
【0022】
プリンタインターフェース301は、外部との入出力のための手段である。プロトコル制御302は、ネットワークプロトコルを解析・送信することによって外部との通信を行う手段である。
【0023】
PDLデータ解析部303は、PDLデータを解析して処理しやすい形式の中間記述データ(中間データ401)に変換される。PDLデータ解析部303は、ページ内の総エッジ数と、バンド単位の範囲内のオブジェクト数とをカウントする。集計した情報は、中間データ401に追加されてデータ描画部304に渡されて処理される。データ描画部304は上記中間コードをビットマップデータに展開するものであり、展開されたビットマップデータはページメモリ305に逐次描画されていく。
【0024】
ページメモリ305はレンダラが展開するビットマップデータを一時的に保持する揮発性のメモリである。
【0025】
パネル入出力制御部306は操作パネルからの入出力を制御するものである。ドキュメント記憶部307は入力文書の一塊(ジョブ)単位にPDLデータを記憶する手段であり、HDD209などの2次記憶装置によって実現される。
【0026】
スキャン制御部308はスキャナから入力した画像データに対して、補正、加工、修正などの各種処理を行う。
【0027】
印刷制御部309は、ページメモリ305の内容をビデオ信号に変換処理し、プリンタエンジン部105へ画像転送を行う。プリンタエンジン部105は受け取ったビデオ信号を記録紙に可視画像形成する。
【0028】
『スキャンラインレンダラの構成』
図4は、データ描画部304でのスキャンラインレンダラ(図4(a)、図4(b))の構成を示すブロック図である。図に示した構成は、RIP206がそれぞれサブCPUを用いたスキャンラインレンダラのパイプライン処理構成402(図4(a))と、並列分散処理412(図4(b))となる。
【0029】
中間データ401はPDLデータをPDLデータ解析部303で変換した中間コードである。スキャンラインレンダラでは、中間データ401を入力データとして、輪郭書き出し処理部403、重なり整列処理部405、色塗り処理部407、色合成処理部409を経てビットマップデータ411を生成する。また、各4つの処理は、それぞれサブCPUに割り振られており、次の処理に向けて描画データ(専用命令コマンド)を送信する。各機能が送信する描画データは、FIFO1(404)、FIFO2(406)、FIFO3(408)、FIFO4(410)を用いてサブCPU間のデータ入出力を行う。ビットマップデータ411はページメモリ306へ保持される。パイプライン処理構成402と、各サブCPUの機能について図5を用いて説明する。図5は、PDLデータの描画データの1例(501)を示している。
【0030】
輪郭書き出し処理部403は、中間データ401に含まれる描画オブジェクトから輪郭情報を取得する処理である。輪郭情報は、描画オブジェクトの輪郭の開始点位置、及び輪郭幅の2つの情報を指している。輪郭書き出し処理部403で取得された輪郭の情報が画像データの1スキャンライン分揃ったら、輪郭座標の情報をFIFO1(404)から通じて次の重なり整列処理部405に送る。図5では、輪郭書き出し処理部403が、描画データの描画オブジェクト502と描画オブジェクト503の輪郭開始と終了ごとに1スキャンライン分の情報を5つ抽出している(504、505,506、507、508)。5つの情報は、レベルごとに色情報と色合成の有無の情報とが保持されている。各データ(504、505、506,507)は、サブCPU間のコマンドキューとして送信される。
【0031】
重なり整列処理部405は、輪郭座標の情報と描画オブジェクト同士の重なりの上下関係を元に紙面に対して描画オブジェクトが正しい順番で並ぶように整列処理する。整列済みの輪郭情報は、画像データの1スキャンライン分揃った後、色塗り処理部407へFIFO2(406)から通しておくられる。図5のように、各輪郭座標に描画オブジェクトの重なりが存在する領域ごとに付加する。描画データ501の背景に関しては、レベル0としている。図5では、最もレベル数の多い輪郭座標が506の領域になり、描画オブジェクトの重なりごとに並び変えられる。
【0032】
色塗り処理部407は、整列済みの輪郭情報に対して、輪郭で区切られる1つ1つの区間に対して色情報を付加する。色塗り処理部407で生成された色情報が付加された整列済みの輪郭情報は、1スキャンライン分揃ったら、FIFO3(408)から通して色合成処理部407へ送られる。図5のように、色塗り処理部407は重なり整列処理部405が整列したレベルごとの描画オブジェクトの色情報を中間データ401から取得する。色塗り処理部407は、描画オブジェクト503、503のように重なりあうときに色合成ありの情報を色合成処理409へ送信する。
【0033】
色合成処理部409は、色情報が付加された整列済みの輪郭情報を元に輪郭で区切られた領域かつ、その区切られた領域のうち他の輪郭で区切られた領域と重なっている部分同士に対して中間データ401に従った重なりルールを適用する。重なりルールとは、ROP(RasterOPerator)とαブレンドがある。ROPとは、領域同士が重なっている部分に、全面側と背面側の色値を表現するbit同士で行われる論理演算である。重なりルールとしてROPが指定された場合、全面側と背面側との領域を表現する色値の間で論理演算が行われた結果が出力される。αブレンドとは、輪郭で区切られた領域同士で重なっている部分に対して、両者のうち全面側及び背面側の色を混ぜて出力するときの双方の割合比を指定する。色合成処理部409では、重なりルールを運用し、重なっている領域の全面と背面の領域からどのような色を出力するかを決定する。色合成処理部407で生成されたデータは、画像データの1ピクセルごとの色情報としてFIFO4(410)から通してビットマップデータ411が出力される。図5のように、色合成処理部409は、通常のレベル0とレベル1の合成(505、507)に関しては色合成無しのため、描画オブジェクトが上位のレベルの色情報をビットマップデータ411として出力する。色合成処理部409は、レベル2以上の描画オブジェクトが存在する図5の描画オブジェクト502と、レベル1の描画オブジェクト503との色情報の合成を輪郭情報の領域(506)で行う。
【0034】
次に、並列分散処理構成412について説明する。バンド中間データ413は、ページ内を横方向に等間隔でバンド状に分割したデータである。輪郭書き出し処理/重なり整列処理414、415は、1つのサブCPUに輪郭書き出し処理403、重なり整列処理405の2つの機能を有した処理を行う。並列分散処理構成412は、輪郭書き出し処理/重なり整列処理414、415を2つのサブCPUに展開することで、並列に同じ機能を処理する。輪郭書き出し処理/重なり整列処理414、415は、バンド単位のデータをデータスプールメモリ416の領域に展開する。データスプールメモリ416は、RAM204のメモリ領域内の一部であり、数バンドのデータを一時的に保持する。色塗り処理407は、データスプールメモリ416からバンド領域のデータを読み込んで後段の色合成処理部409へと送られる。色塗り処理407と色合成処理部409とは、パイプライン処理構成と同じくFIFO3(408)とFIFO4(410)とを用いてデータの転送を行う。
【0035】
『中間データのデータ構成』
図6は、中間データ内の構造を示している。中間データ601は、複数ページからなるデータである。PDL解析部303は、中間データ601をドキュメント記憶部307から読み出して、中間データ内のページ単位の構成604、メタデータ607とバンド分割された中間データ608を生成する。中間データ内のページ単位の構成604は、ドキュメントヘッダ602と描画展開用のインストラクション603から構成される。ドキュメントヘッダ602は、中間データ内のページ単位の構成604の格納場所が記述されている。また、ドキュメントヘッダ602には、ページ毎のエッジ数やオブジェクト数といったメタデータ607が関連づけされている。このメタデータ607は、ドキュメントヘッダ602の総エッジ数、オブジェクト数605だけでなくバンド単位の情報606でも構成されている。バンド情報606は、各ドキュメントヘッダ602のページでバンド単位ごとのエッジ数、オブジェクト数を示している。中間データ601は、ドキュメントヘッダ602を先頭とする階層構造となっており、メタデータ607が各ドキュメントヘッダ602の下の階層に位置する。バンド中間データ608はドキュメント記憶部307にページ単位で保持される。
【0036】
[実施例1]
本特許の実施例を図7のフローチャートを用いて説明する。図7のフローチャートを構成するプログラムは、プリンタ102の電源を起動時にROM205からRAM204へ展開される。CPU202は、図8のフローチャートの各ステップをRAM204のプログラムから読み込んで実行する。
【0037】
PDL解析部303は、中間データ601の先頭ページの描画インストラクション603から描画特徴を抽出する(701)。特徴情報は、図6ではメタデータ607を構成するデータであり、中間データ内の描画オブジェクトや、エッジ数など描画に必要な情報であれば特に限定はしない。次に、ステップ702ではステップ701で抽出した特徴情報をページ単位(605)で保持する。ステップ703は、抽出した特徴情報であるメタデータ607をドキュメントヘッダ602に展開先のアドレスを関連づける。また、ステップ704では、各ページ内の特徴情報をバンド領域ごとに保持する(606)。
【0038】
ステップ705は、ページの先頭のバンドとバンドに隣接するバンドとの特徴情報の差分を取得する。ステップ706では、メタデータ607のバンドごとの特徴情報606の差分と閾値とを比較する。閾値は、隣接するバンドに印刷処理の速度に差があるかどうかを判断する基準値である。ステップ706の判断で特徴情報の差分が閾値以下、つまり印刷処理の時間に差がないと判断できれば並列分散処理構成709を選択する。閾値の具体的な値については、並列分散処理構成412のデータスプールメモリ416の容量や、サブCPUの性能を考慮して決定すればよい。隣接するバンドの特徴情報の差分が、閾値よりも大きければ次のバンド領域の特徴情報を取得する(707)。以降、バンド領域が最終バンドまで読み込んで(708)、特徴情報の差分が閾値以下である(706)かどうかを判断する。最後のバンドまで隣接するバンドの特徴情報の差分が閾値以上であれば、パイプライン処理構成を選択する(710)。ステップ711は、最後にステップ709、ステップ710で選択した構成を元にデータ描画部304のレンダリングシステムの構成を変更する(図4(a)、図4(b))。以上のように、中間データ601の各バンドの特徴情報を元に隣接するバンド領域との差分を比較することで、並列分散処理構成412で片方のサブCPUの処理待ちで後段の処理が止まるといった現象を回避できる。
【0039】
[実施例2]
実施例2では図7のフローチャート図を具体的なパラメータを用いて図8のフローチャートで説明する。図8のフローチャートを構成するプログラムの制御方法については、実施例1で説明したため省略する。PDL解析部303は、中間データ601の先頭ページの描画インストラクション603からバンド単位ごとにエッジ数とオブジェクト数606を集計する(801)。
【0040】
次に、最終バンドまで集計が終わると、各バンド内のエッジ数とオブジェクト数の総和605を求める(802)。最後に、集計したオブジェクト数と総エッジ数を各ページの先頭アドレスからメタデータ607として中間データ601に階層構造としてドキュメントヘッダ602に展開先のメモリアドレスを関連づける(803)。PDL解析部303は、ユーザから投入されたジョブを、各ページのバンド中間データ608としてドキュメント記憶部307に書き込む。データ描画部304は、ドキュメント記憶部307にあるバンド中間データ608からメタデータ607の情報を取得する(804)。データ描画部304は、バンド中間データ608のバンド情報607から、隣接するバンドごとに描画オブジェクト数が一定値以下であるかどうかを判断する(805)。ステップ805の隣接するブロックとは、図9のようなバンドごとに描画データを区切ったときのバンド(901)、(902)のブロック同士である。
【0041】
図9はバンドごとに描画データを区切った領域と、描画データの様子を示す一例である。データ描画部304は、対象ページのドキュメントヘッダ602からメタデータ607のバンド901とバンド902とのオブジェクト数606を比較する。ステップ805は、対象となるページの先頭バンドであり、図9ではバンド(901)が相当する。次のステップ806では、データ描画部304がバンド(901)と次のバンド(902)との隣接するバンドごとにメタデータ607のオブジェクト数606を比較する。比較したオブジェクト数606がある一定の閾値以下であるかどうかを判断する。ここで、隣接するオブジェクト数の閾値は固定ではなく、スキャンラインレンダラを起動するサブCPUの処理速度に応じて変更が可能である。例として、隣接するバンドのオブジェクト数606が100以下である場合、データ描画部304はスキャンラインレンダラが並列分散処理構成809を選択する。データ描画部304は、並列分散処理構成809のため、輪郭書き出し処理/重なり整列処理414、415の機能を選択して各サブCPUに展開する(412)。サブCPUに展開するプログラムは、RAM204に輪郭書き出し処理/重なり整列処理414、415、色塗り処理415、色合成処理部409とそれぞれ保持されている。また、各サブCPUが描画データを送信する先に関しても、FIFO3(408)やFIFO4(410)を制御するプログラムをRAM204に展開してCPU202で制御する。一方、データ描画部304はステップ806の条件で一定値以上のオブジェクト数606の差があれば、次の隣り合うバンドへと移動する(807)。
【0042】
ステップ808は、移行した先のバンドに隣り合うバンドが存在するかどうかを判断する。データ描画部304は、ステップ806の条件から各バンドの輪郭書き出し処理/重なり整列処理414、415がお互いにデータスプールメモリ416へ送信するデータの速度が均一となるように、隣接するバンドのオブジェクト数を比較する。本特許では、輪郭書き出し処理/重なり整列処理414、415が片方のサブCPUで描画データ待ちが発生するのを防ぐため、ステップ806のようにバンド単位のオブジェクト数606からレンダリング構成を変更する。データ描画部304は、ステップ808で隣接するバンドごとに閾値以上のオブジェクト数の差があるとき、メタデータ607の総エッジ数605から構成を切り替える(810)。輪郭書き出し処理403と重なり整列処理405は、エッジ数が10000以上のデータの場合(810)、大量の輪郭情報と重なり情報とが発生するため後段の処理に比べて極端に遅くなってしまう。
【0043】
そこで、1ページの総エッジ数605が10000以上の場合は、2つの機能を並列処理することで負荷を分散して高速化を図る(809)。総エッジ数605が条件の値以下なら、並列分散処理構成809で輪郭書き出し処理403と重なり整列処理405をそれぞれ1サブCPUごとに割り当てたパイプライン処理構成(811)にする。ここで、輪郭書き出し処理403と重なり整列処理405との並列処理では、ステップ806からステップ808で隣接するバンドがすべてオブジェクト数606に閾値以上の差が存在することになり、並列分散処理412の構成では劣化するためである。データ描画部304は各条件(806、810)をもとに、スキャンラインレンダラの構成の決定する(812)。
【0044】
以上の構成により、印刷時のデータ詰まりを解消するため、印刷データのメタデータからスキャンラインレンダリングの構成方法について説明した。中間データ601の特徴から、描画の苦手な構成を回避することで描画速度の向上を示した。
【0045】
[実施例3]
次に、並列分散処理構成809のときのバンドの描画順番を変更する処理について説明する。図9については実施例2で説明したため省略する。図10は、並列分散処理構成809のレンダリングが図9のように隣接するバンドを描画時に、輪郭書き出し処理/重なり整列処理414、415へ送信するバンドを効率良く描画できるように変更するフローチャート図である。また、並列分散処理構成809を選択する処理については、実施例1で説明したため省略する。
【0046】
図10のフローチャート図のプログラムは、RAM204に格納されており、CPU202がプログラムを読み込んで実行する。並列分散処理構成809では、データ描画部304がバンド中間データ413を輪郭書き出し処理/重なり整列処理414、415へ送信する。ステップ1001は、データ描画部304がバンド中間データ413のメタデータ607にあるバンド情報606から各バンドのオブジェクトが次のバンド領域にあるかをチェックする。ステップ1001では、現在のバンドに隣接するバンドへまたがる描画データ904が存在したとき、つぎのステップ1002で描画データ904の縦方向のサイズを計測する。ここで、ステップ1002は、さきほどのバンド901でメタデータ607のオブジェクト情報606から描画データ904のサイズを求める。ステップ1003では、バンド901に隣接するバンド902を輪郭書き出し処理/重なり整列処理414、415の片方のサブCPUへ送信する。本実施例では、輪郭書き出し処理/重なり整列処理414へ送信する。次にステップ1004は、前述のステップ1002で計測したまたがる描画データ904の縦方向のサイズと、バンド高さ901とを割り算した値から以降のバンドに存在するかを判断する。ステップ1004の判断では、以降のバンドにまたがる描画データ904が存在したらステップ1003へ戻り再度次のバンド903を輪郭書き出し処理/重なり整列処理414へ送信する。ステップ1004の判断では、次のバンドにまたがるデータ904が存在しなければ、もう1つのサブCPUへバンド中間データ413を送信する処理を開始する(1005)。また、ステップ1006は、ステップ1001で次のバンドにまたがる描画データ904が存在しないときに、現在のバンド中間データ413を輪郭書き出し処理/重なり整列処理414に送信する。
【0047】
輪郭書き出し処理/重なり整列処理414は、図9の上段3つのバンド905のバンド中間データ413を処理する。同じく輪郭書き出し処理/重なり整列処理415は、図10のステップ1001から1005の処理から図9の後段2つのバンド906のバンド中間データ413を処理する。
【0048】
図10のフローチャートでは、描画インストラクション603が隣接するバンドにまたがるデータ904に対して輪郭書き出し処理/重なり整列処理414の一方のサブCPUへ送信するようにしている。これは、メタデータ607のバンドごとのオブジェクト606を同じサブCPUで処理することで、サブCPUの輪郭書き出し処理403で輪郭の情報を使いまわすことができる。輪郭書き出し処理/重なり整列処理414は、他のサブCPUがまたがるデータ904を処理する場合、新規の輪郭として処理されてサブCPU内のキャッシュを利用することができない。よって、図9のようなデータでは、上段の3つのバンド905と、下段の2つのバンド906を輪郭書き出し処理/重なり整列処理414、415にそれぞれ送信することで高速に処理することができる。
【符号の説明】
【0049】
102 プリンタ
202 CPU
204 RAM
205 ROM
304 データ描画部
【技術分野】
【0001】
本発明は、複数のプロセッサを有するレンダリングの構成をデータごとに変更することで、画像処理装置の印刷速度の向上に関する。
【背景技術】
【0002】
スキャンラインレンダリングの構成方法として、複数のサブCPUをパイプラインで処理する方法がある。描画機能を有しているマルチプロセッサは、描画命令コマンドを次のサブCPUにFIFO(First In,First Out)を通じて送信する。FIFOは通常のメモリアクセスよりも高速にデータを転送可能なバスを利用する。
【0003】
一方、FIFOによるデータ転送方法を採用したマルチプロセッサの描画処理で並列処理を行う方法が検討されている。1つのサブCPUに2つ機能を含むプログラムを並列に処理する。その際に並列したサブCPUからは、後段の機能へFIFOではなくメモリバッファを使用してデータを転送する。それぞれの構成にはボトルネックがあり、構成ごとにさまざまな解決方法が提案されてきた。特許文献1は、複数のマルチプロセッサを用いたレンダリングシステムで、FIFO内のデータがFull状態だったら、データバスのパスを切り替えて別のメモリバッファにデータを送信する。コマンドキューがEmptyになれば従来のデータパスに戻すことで、データの詰まりを無くして高速に描画することが可能となる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2011-56703号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、パイプライン処理と並列分散処理ではデータの傾向により、プロセッサ間のデータ転送時にコマンドキューの詰まりが発生する。
【0006】
パイプライン処理のレンダラでは、エッジを多く含むものなど1機能の処理で描画データの負荷が大きすぎて、次の後段へ描画データを送信時にFIFOが詰まるなどの問題がある。
【0007】
一方、並列分散処理では、バンド領域の一部分に描画オブジェクトが密集していると、片方のサブCPUの負荷が大きくなる。そのため、並列分散処理ではコマンドキューをメモリバッファにスプール出来る容量は限れられているため、ラスター走査線上に描画する際に片方のサブCPUの処理が終わるまで後段の処理が待ち続けるケースがある。また、並列分散処理は並列のサブCPUと後段とにコマンドキューをメモリバッファへ送信するため、FIFOが利用できずメモリアクセスの時間がパイプライン処理よりもかかる。さらに、隣あうバンド領域に描画オブジェクトがまたがっているとき、同一機能のサブCPUがバンドごとに処理するのに比べて、1つのサブCPUが同じ描画オブジェクトのキャッシュデータを扱えるため有効である。
【0008】
以上から、各構成は印刷データの内容によってボトルネックがあり、本特許は印刷データごとにレンダリングシステムの構成を切り替える方法を示す。
【課題を解決するための手段】
【0009】
印刷データの描画特徴を抽出する手段(701)と、
前記描画特徴を対象ページの特徴情報(607)として保持する手段(702)、
前記描画特徴を対象ページの中間データ(601)の特徴情報(607)として付加する手段(703)と、
前記描画特徴を対象ページ内のバンド領域(606)ごとに保持する手段(704)と、
前記描画特徴を用いて各バンド領域と隣接するバンド領域とを比較する手段と、
前記描画特徴比較から特徴情報(607)の差分を取得する手段(705)と、
前記描画特徴差分と隣接するバンド領域ごとに特徴情報(607)の閾値とを比較する手段(706)と、
前記描画特徴の閾値からレンダリングシステムの構成をパイプライン処理(710)か並列分散処理(709)かを判断する手段と、
前記描画特徴の判断で決定したレンダリングシステムを構築する手段(711)と、
を有することを特徴とした画像形成装置(102)。
【発明の効果】
【0010】
本特許では、描画データのパスを変更するのではなく、サブCPUの構成を印刷内容によって切り替えることで、並列の構成では2つの機能を有したサブCPUを使用するため、FIFO内の描画データ詰まりを軽減できる。
【0011】
また、印刷データごとにサブCPUの構成を変更することでサブCPUの負荷を軽減することができる。以上から、本特許の技術は描画データの詰まりを解消して印刷速度の向上を実現する。
【図面の簡単な説明】
【0012】
【図1】本発明の印刷装置における実施例の一形態であるプリンタの構成を示すブロック図である。
【図2】実施形態における各機器のコントローラユニットの構成例を示すブロック図である。
【図3】実施形態におけるコントローラソフトウェアの構成の一例を示す図である。
【図4(a)】実施形態における描画方法のパイプライン構成例を示すブロック図である。
【図4(b)】実施形態における描画方法の並列分散構成例を示すブロック図である。
【図5】実施形態における描画データから各サブCPUの制御方法の一例を示す図である。
【図6】実施形態における中間データの構成を示す図である。
【図7】本発明の実施形態におけるレンダリングシステムの構成を変更するプログラムを示すフローチャート図である。
【図8】実施形態1における描画方法の構成を変更する例を示すフローチャート図である。
【図9】実施形態におけるバンドをまたがる描画データの例を示す図である。
【図10】実施形態2における並列分散処理構成の描画をするときに各サブCPUへバンド中間データを送信する方法を示すフローチャート図である。
【発明を実施するための形態】
【0013】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【0014】
『プリンタの構成』
図1は、本発明を実施する印刷装置の一形態であるプリンタの構成を示すブロック図である。
【0015】
プリンタコントローラ部103と、プリンタエンジン部105と、操作パネル部104とを備える。プリンタコントローラ部103は、ホストコンピュータ(以下、ホスト)などの外部機器101からコードデータ(各種ページ記述言語(以下、PDL))が入力される。そのコードデータを解析することによってイメージデータ(ページ情報)を生成する。この生成されたイメージデータはインターフェースを介してプリンタエンジン部105に送信する。プリンタエンジン部105は、電子写真プロセスにより、プリンタコントローラ部103によって生成されたイメージデータが示す画像を用紙上に形成する。プリンタエンジン部105には、各機構と、その各機構による各印字プロセス処理(例えば、給紙処理など)に関する制御を行うエンジン制御部とが含まれている。操作パネル部104は、ユーザとのインターフェースを司り、プリンタ102に対する所望の動作を指示するための入力操作を行うための操作部を構成する。
【0016】
『プリンタコントローラ部の構成』
次に、プリンタコントローラ部103の構成について図2を参照しながら説明する。プリンタコントローラ部103は、プリンタコントローラ部103全体を制御するためのCPU202で、外部機器101との間でやり取りされる信号の入出力部を構成する。RAM204は、CPU202が動作するためのシステムワークメモリであり、入力された画像データを一時記憶するための画像メモリである。さらに、ROM205にはシステムの制御コードが格納されている。また、プリンタコントローラ部103は、外部機器101との間の通信制御を行うホストI/F203とを有している。
【0017】
ラスタイメージプロセッサ(RIP)206は、PDLデータなどをビットマップデータに展開する。ホストI/F203を介して入力されたコードデータから、CPU202はROM205に格納されている制御コードに従い、RIP206からプリンタエンジン部105が処理可能なビットマップデータの生成を行う。
【0018】
ビットマップデータは、エンジンI/F部207を介してビデオ信号としてプリンタエンジン部105に転送される。エンジンI/F部207は、プリンタエンジン部105とでやり取りされる信号の入出力部を構成するとともに、プリンタエンジン部105との間の通信制御を行う。
【0019】
パネル部104から操作入力によって出されたモード設定に関する指示などは、操作パネルI/F部207を介して入力され、操作パネルI/F部207はパネル部104とCPU202の間のインターフェースを構成する。
【0020】
CPU202は、パネル部104から指示されたモードに応じて上述の各ブロックに対する制御を行い、この制御はROM205に格納されている制御コードに基づき実行される。上述のCPU202を含む各ブロックは、システムバス208にCPUがアクセス可能なように接続されている。HDD209はハードディスクドライブであり、各種処理のためのシステムソフトウェア及び入力された画像データなどを格納する。
【0021】
『コントローラソフトウェアの構成』
図3は、印刷装置の動作を制御するコントローラソフトウェアの構成を示すブロック図である。
【0022】
プリンタインターフェース301は、外部との入出力のための手段である。プロトコル制御302は、ネットワークプロトコルを解析・送信することによって外部との通信を行う手段である。
【0023】
PDLデータ解析部303は、PDLデータを解析して処理しやすい形式の中間記述データ(中間データ401)に変換される。PDLデータ解析部303は、ページ内の総エッジ数と、バンド単位の範囲内のオブジェクト数とをカウントする。集計した情報は、中間データ401に追加されてデータ描画部304に渡されて処理される。データ描画部304は上記中間コードをビットマップデータに展開するものであり、展開されたビットマップデータはページメモリ305に逐次描画されていく。
【0024】
ページメモリ305はレンダラが展開するビットマップデータを一時的に保持する揮発性のメモリである。
【0025】
パネル入出力制御部306は操作パネルからの入出力を制御するものである。ドキュメント記憶部307は入力文書の一塊(ジョブ)単位にPDLデータを記憶する手段であり、HDD209などの2次記憶装置によって実現される。
【0026】
スキャン制御部308はスキャナから入力した画像データに対して、補正、加工、修正などの各種処理を行う。
【0027】
印刷制御部309は、ページメモリ305の内容をビデオ信号に変換処理し、プリンタエンジン部105へ画像転送を行う。プリンタエンジン部105は受け取ったビデオ信号を記録紙に可視画像形成する。
【0028】
『スキャンラインレンダラの構成』
図4は、データ描画部304でのスキャンラインレンダラ(図4(a)、図4(b))の構成を示すブロック図である。図に示した構成は、RIP206がそれぞれサブCPUを用いたスキャンラインレンダラのパイプライン処理構成402(図4(a))と、並列分散処理412(図4(b))となる。
【0029】
中間データ401はPDLデータをPDLデータ解析部303で変換した中間コードである。スキャンラインレンダラでは、中間データ401を入力データとして、輪郭書き出し処理部403、重なり整列処理部405、色塗り処理部407、色合成処理部409を経てビットマップデータ411を生成する。また、各4つの処理は、それぞれサブCPUに割り振られており、次の処理に向けて描画データ(専用命令コマンド)を送信する。各機能が送信する描画データは、FIFO1(404)、FIFO2(406)、FIFO3(408)、FIFO4(410)を用いてサブCPU間のデータ入出力を行う。ビットマップデータ411はページメモリ306へ保持される。パイプライン処理構成402と、各サブCPUの機能について図5を用いて説明する。図5は、PDLデータの描画データの1例(501)を示している。
【0030】
輪郭書き出し処理部403は、中間データ401に含まれる描画オブジェクトから輪郭情報を取得する処理である。輪郭情報は、描画オブジェクトの輪郭の開始点位置、及び輪郭幅の2つの情報を指している。輪郭書き出し処理部403で取得された輪郭の情報が画像データの1スキャンライン分揃ったら、輪郭座標の情報をFIFO1(404)から通じて次の重なり整列処理部405に送る。図5では、輪郭書き出し処理部403が、描画データの描画オブジェクト502と描画オブジェクト503の輪郭開始と終了ごとに1スキャンライン分の情報を5つ抽出している(504、505,506、507、508)。5つの情報は、レベルごとに色情報と色合成の有無の情報とが保持されている。各データ(504、505、506,507)は、サブCPU間のコマンドキューとして送信される。
【0031】
重なり整列処理部405は、輪郭座標の情報と描画オブジェクト同士の重なりの上下関係を元に紙面に対して描画オブジェクトが正しい順番で並ぶように整列処理する。整列済みの輪郭情報は、画像データの1スキャンライン分揃った後、色塗り処理部407へFIFO2(406)から通しておくられる。図5のように、各輪郭座標に描画オブジェクトの重なりが存在する領域ごとに付加する。描画データ501の背景に関しては、レベル0としている。図5では、最もレベル数の多い輪郭座標が506の領域になり、描画オブジェクトの重なりごとに並び変えられる。
【0032】
色塗り処理部407は、整列済みの輪郭情報に対して、輪郭で区切られる1つ1つの区間に対して色情報を付加する。色塗り処理部407で生成された色情報が付加された整列済みの輪郭情報は、1スキャンライン分揃ったら、FIFO3(408)から通して色合成処理部407へ送られる。図5のように、色塗り処理部407は重なり整列処理部405が整列したレベルごとの描画オブジェクトの色情報を中間データ401から取得する。色塗り処理部407は、描画オブジェクト503、503のように重なりあうときに色合成ありの情報を色合成処理409へ送信する。
【0033】
色合成処理部409は、色情報が付加された整列済みの輪郭情報を元に輪郭で区切られた領域かつ、その区切られた領域のうち他の輪郭で区切られた領域と重なっている部分同士に対して中間データ401に従った重なりルールを適用する。重なりルールとは、ROP(RasterOPerator)とαブレンドがある。ROPとは、領域同士が重なっている部分に、全面側と背面側の色値を表現するbit同士で行われる論理演算である。重なりルールとしてROPが指定された場合、全面側と背面側との領域を表現する色値の間で論理演算が行われた結果が出力される。αブレンドとは、輪郭で区切られた領域同士で重なっている部分に対して、両者のうち全面側及び背面側の色を混ぜて出力するときの双方の割合比を指定する。色合成処理部409では、重なりルールを運用し、重なっている領域の全面と背面の領域からどのような色を出力するかを決定する。色合成処理部407で生成されたデータは、画像データの1ピクセルごとの色情報としてFIFO4(410)から通してビットマップデータ411が出力される。図5のように、色合成処理部409は、通常のレベル0とレベル1の合成(505、507)に関しては色合成無しのため、描画オブジェクトが上位のレベルの色情報をビットマップデータ411として出力する。色合成処理部409は、レベル2以上の描画オブジェクトが存在する図5の描画オブジェクト502と、レベル1の描画オブジェクト503との色情報の合成を輪郭情報の領域(506)で行う。
【0034】
次に、並列分散処理構成412について説明する。バンド中間データ413は、ページ内を横方向に等間隔でバンド状に分割したデータである。輪郭書き出し処理/重なり整列処理414、415は、1つのサブCPUに輪郭書き出し処理403、重なり整列処理405の2つの機能を有した処理を行う。並列分散処理構成412は、輪郭書き出し処理/重なり整列処理414、415を2つのサブCPUに展開することで、並列に同じ機能を処理する。輪郭書き出し処理/重なり整列処理414、415は、バンド単位のデータをデータスプールメモリ416の領域に展開する。データスプールメモリ416は、RAM204のメモリ領域内の一部であり、数バンドのデータを一時的に保持する。色塗り処理407は、データスプールメモリ416からバンド領域のデータを読み込んで後段の色合成処理部409へと送られる。色塗り処理407と色合成処理部409とは、パイプライン処理構成と同じくFIFO3(408)とFIFO4(410)とを用いてデータの転送を行う。
【0035】
『中間データのデータ構成』
図6は、中間データ内の構造を示している。中間データ601は、複数ページからなるデータである。PDL解析部303は、中間データ601をドキュメント記憶部307から読み出して、中間データ内のページ単位の構成604、メタデータ607とバンド分割された中間データ608を生成する。中間データ内のページ単位の構成604は、ドキュメントヘッダ602と描画展開用のインストラクション603から構成される。ドキュメントヘッダ602は、中間データ内のページ単位の構成604の格納場所が記述されている。また、ドキュメントヘッダ602には、ページ毎のエッジ数やオブジェクト数といったメタデータ607が関連づけされている。このメタデータ607は、ドキュメントヘッダ602の総エッジ数、オブジェクト数605だけでなくバンド単位の情報606でも構成されている。バンド情報606は、各ドキュメントヘッダ602のページでバンド単位ごとのエッジ数、オブジェクト数を示している。中間データ601は、ドキュメントヘッダ602を先頭とする階層構造となっており、メタデータ607が各ドキュメントヘッダ602の下の階層に位置する。バンド中間データ608はドキュメント記憶部307にページ単位で保持される。
【0036】
[実施例1]
本特許の実施例を図7のフローチャートを用いて説明する。図7のフローチャートを構成するプログラムは、プリンタ102の電源を起動時にROM205からRAM204へ展開される。CPU202は、図8のフローチャートの各ステップをRAM204のプログラムから読み込んで実行する。
【0037】
PDL解析部303は、中間データ601の先頭ページの描画インストラクション603から描画特徴を抽出する(701)。特徴情報は、図6ではメタデータ607を構成するデータであり、中間データ内の描画オブジェクトや、エッジ数など描画に必要な情報であれば特に限定はしない。次に、ステップ702ではステップ701で抽出した特徴情報をページ単位(605)で保持する。ステップ703は、抽出した特徴情報であるメタデータ607をドキュメントヘッダ602に展開先のアドレスを関連づける。また、ステップ704では、各ページ内の特徴情報をバンド領域ごとに保持する(606)。
【0038】
ステップ705は、ページの先頭のバンドとバンドに隣接するバンドとの特徴情報の差分を取得する。ステップ706では、メタデータ607のバンドごとの特徴情報606の差分と閾値とを比較する。閾値は、隣接するバンドに印刷処理の速度に差があるかどうかを判断する基準値である。ステップ706の判断で特徴情報の差分が閾値以下、つまり印刷処理の時間に差がないと判断できれば並列分散処理構成709を選択する。閾値の具体的な値については、並列分散処理構成412のデータスプールメモリ416の容量や、サブCPUの性能を考慮して決定すればよい。隣接するバンドの特徴情報の差分が、閾値よりも大きければ次のバンド領域の特徴情報を取得する(707)。以降、バンド領域が最終バンドまで読み込んで(708)、特徴情報の差分が閾値以下である(706)かどうかを判断する。最後のバンドまで隣接するバンドの特徴情報の差分が閾値以上であれば、パイプライン処理構成を選択する(710)。ステップ711は、最後にステップ709、ステップ710で選択した構成を元にデータ描画部304のレンダリングシステムの構成を変更する(図4(a)、図4(b))。以上のように、中間データ601の各バンドの特徴情報を元に隣接するバンド領域との差分を比較することで、並列分散処理構成412で片方のサブCPUの処理待ちで後段の処理が止まるといった現象を回避できる。
【0039】
[実施例2]
実施例2では図7のフローチャート図を具体的なパラメータを用いて図8のフローチャートで説明する。図8のフローチャートを構成するプログラムの制御方法については、実施例1で説明したため省略する。PDL解析部303は、中間データ601の先頭ページの描画インストラクション603からバンド単位ごとにエッジ数とオブジェクト数606を集計する(801)。
【0040】
次に、最終バンドまで集計が終わると、各バンド内のエッジ数とオブジェクト数の総和605を求める(802)。最後に、集計したオブジェクト数と総エッジ数を各ページの先頭アドレスからメタデータ607として中間データ601に階層構造としてドキュメントヘッダ602に展開先のメモリアドレスを関連づける(803)。PDL解析部303は、ユーザから投入されたジョブを、各ページのバンド中間データ608としてドキュメント記憶部307に書き込む。データ描画部304は、ドキュメント記憶部307にあるバンド中間データ608からメタデータ607の情報を取得する(804)。データ描画部304は、バンド中間データ608のバンド情報607から、隣接するバンドごとに描画オブジェクト数が一定値以下であるかどうかを判断する(805)。ステップ805の隣接するブロックとは、図9のようなバンドごとに描画データを区切ったときのバンド(901)、(902)のブロック同士である。
【0041】
図9はバンドごとに描画データを区切った領域と、描画データの様子を示す一例である。データ描画部304は、対象ページのドキュメントヘッダ602からメタデータ607のバンド901とバンド902とのオブジェクト数606を比較する。ステップ805は、対象となるページの先頭バンドであり、図9ではバンド(901)が相当する。次のステップ806では、データ描画部304がバンド(901)と次のバンド(902)との隣接するバンドごとにメタデータ607のオブジェクト数606を比較する。比較したオブジェクト数606がある一定の閾値以下であるかどうかを判断する。ここで、隣接するオブジェクト数の閾値は固定ではなく、スキャンラインレンダラを起動するサブCPUの処理速度に応じて変更が可能である。例として、隣接するバンドのオブジェクト数606が100以下である場合、データ描画部304はスキャンラインレンダラが並列分散処理構成809を選択する。データ描画部304は、並列分散処理構成809のため、輪郭書き出し処理/重なり整列処理414、415の機能を選択して各サブCPUに展開する(412)。サブCPUに展開するプログラムは、RAM204に輪郭書き出し処理/重なり整列処理414、415、色塗り処理415、色合成処理部409とそれぞれ保持されている。また、各サブCPUが描画データを送信する先に関しても、FIFO3(408)やFIFO4(410)を制御するプログラムをRAM204に展開してCPU202で制御する。一方、データ描画部304はステップ806の条件で一定値以上のオブジェクト数606の差があれば、次の隣り合うバンドへと移動する(807)。
【0042】
ステップ808は、移行した先のバンドに隣り合うバンドが存在するかどうかを判断する。データ描画部304は、ステップ806の条件から各バンドの輪郭書き出し処理/重なり整列処理414、415がお互いにデータスプールメモリ416へ送信するデータの速度が均一となるように、隣接するバンドのオブジェクト数を比較する。本特許では、輪郭書き出し処理/重なり整列処理414、415が片方のサブCPUで描画データ待ちが発生するのを防ぐため、ステップ806のようにバンド単位のオブジェクト数606からレンダリング構成を変更する。データ描画部304は、ステップ808で隣接するバンドごとに閾値以上のオブジェクト数の差があるとき、メタデータ607の総エッジ数605から構成を切り替える(810)。輪郭書き出し処理403と重なり整列処理405は、エッジ数が10000以上のデータの場合(810)、大量の輪郭情報と重なり情報とが発生するため後段の処理に比べて極端に遅くなってしまう。
【0043】
そこで、1ページの総エッジ数605が10000以上の場合は、2つの機能を並列処理することで負荷を分散して高速化を図る(809)。総エッジ数605が条件の値以下なら、並列分散処理構成809で輪郭書き出し処理403と重なり整列処理405をそれぞれ1サブCPUごとに割り当てたパイプライン処理構成(811)にする。ここで、輪郭書き出し処理403と重なり整列処理405との並列処理では、ステップ806からステップ808で隣接するバンドがすべてオブジェクト数606に閾値以上の差が存在することになり、並列分散処理412の構成では劣化するためである。データ描画部304は各条件(806、810)をもとに、スキャンラインレンダラの構成の決定する(812)。
【0044】
以上の構成により、印刷時のデータ詰まりを解消するため、印刷データのメタデータからスキャンラインレンダリングの構成方法について説明した。中間データ601の特徴から、描画の苦手な構成を回避することで描画速度の向上を示した。
【0045】
[実施例3]
次に、並列分散処理構成809のときのバンドの描画順番を変更する処理について説明する。図9については実施例2で説明したため省略する。図10は、並列分散処理構成809のレンダリングが図9のように隣接するバンドを描画時に、輪郭書き出し処理/重なり整列処理414、415へ送信するバンドを効率良く描画できるように変更するフローチャート図である。また、並列分散処理構成809を選択する処理については、実施例1で説明したため省略する。
【0046】
図10のフローチャート図のプログラムは、RAM204に格納されており、CPU202がプログラムを読み込んで実行する。並列分散処理構成809では、データ描画部304がバンド中間データ413を輪郭書き出し処理/重なり整列処理414、415へ送信する。ステップ1001は、データ描画部304がバンド中間データ413のメタデータ607にあるバンド情報606から各バンドのオブジェクトが次のバンド領域にあるかをチェックする。ステップ1001では、現在のバンドに隣接するバンドへまたがる描画データ904が存在したとき、つぎのステップ1002で描画データ904の縦方向のサイズを計測する。ここで、ステップ1002は、さきほどのバンド901でメタデータ607のオブジェクト情報606から描画データ904のサイズを求める。ステップ1003では、バンド901に隣接するバンド902を輪郭書き出し処理/重なり整列処理414、415の片方のサブCPUへ送信する。本実施例では、輪郭書き出し処理/重なり整列処理414へ送信する。次にステップ1004は、前述のステップ1002で計測したまたがる描画データ904の縦方向のサイズと、バンド高さ901とを割り算した値から以降のバンドに存在するかを判断する。ステップ1004の判断では、以降のバンドにまたがる描画データ904が存在したらステップ1003へ戻り再度次のバンド903を輪郭書き出し処理/重なり整列処理414へ送信する。ステップ1004の判断では、次のバンドにまたがるデータ904が存在しなければ、もう1つのサブCPUへバンド中間データ413を送信する処理を開始する(1005)。また、ステップ1006は、ステップ1001で次のバンドにまたがる描画データ904が存在しないときに、現在のバンド中間データ413を輪郭書き出し処理/重なり整列処理414に送信する。
【0047】
輪郭書き出し処理/重なり整列処理414は、図9の上段3つのバンド905のバンド中間データ413を処理する。同じく輪郭書き出し処理/重なり整列処理415は、図10のステップ1001から1005の処理から図9の後段2つのバンド906のバンド中間データ413を処理する。
【0048】
図10のフローチャートでは、描画インストラクション603が隣接するバンドにまたがるデータ904に対して輪郭書き出し処理/重なり整列処理414の一方のサブCPUへ送信するようにしている。これは、メタデータ607のバンドごとのオブジェクト606を同じサブCPUで処理することで、サブCPUの輪郭書き出し処理403で輪郭の情報を使いまわすことができる。輪郭書き出し処理/重なり整列処理414は、他のサブCPUがまたがるデータ904を処理する場合、新規の輪郭として処理されてサブCPU内のキャッシュを利用することができない。よって、図9のようなデータでは、上段の3つのバンド905と、下段の2つのバンド906を輪郭書き出し処理/重なり整列処理414、415にそれぞれ送信することで高速に処理することができる。
【符号の説明】
【0049】
102 プリンタ
202 CPU
204 RAM
205 ROM
304 データ描画部
【特許請求の範囲】
【請求項1】
印刷データの描画特徴を抽出する手段(701)と、
前記描画特徴を対象ページの特徴情報(607)として保持する手段(702)、
前記描画特徴を対象ページの中間データ(601)の特徴情報(607)として付加する手段(703)と、
前記描画特徴を対象ページ内のバンド領域(606)ごとに保持する手段(704)と、
前記描画特徴を用いて各バンド領域と隣接するバンド領域とを比較する手段と、
前記描画特徴比較から特徴情報(607)の差分を取得する手段(705)と、
前記描画特徴差分と隣接するバンド領域ごとに特徴情報(607)の閾値とを比較する手段(706)と、
前記描画特徴の閾値からレンダリングシステムの構成をパイプライン処理(710)か並列分散処理(709)かを判断する手段と、
前記描画特徴の判断で決定したレンダリングシステムを構築する手段(711)と、
を有することを特徴とする画像形成装置(102)。
【請求項2】
前記レンダリングシステムを構築する手段(711)は、
マルチCPUで構成されたレンダリングシステムを有する手段(図4(a)、図4(b))と、
前記手段において入力される中間データ(601)のページ毎にバンド内のエッジ数とオブジェクト数(606)を集計する手段(801、802)と、
前記印刷データのエッジ数とオブジェクト数(606)をメタデータ(607)として描画用の中間データ(601)に付加する手段(803)と、
前記印刷データを描画データ解析部(304)で読み込む手段(804)と、
前記印刷データのメタデータ(607)から隣接するバンドに一定値以下のオブジェクト数(606)を有するバンドが存在するならレンダリングの構成を並列分散処理構成(図4(b))にする手段(809)と、
前記判断手段で中間データ(601)の隣接するバンドがある閾値以上のオブジェクト数(606)を有するバンドが存在するかどうかをページの最後まで比較する手段(807、808)と、
前記判断手段で中間データ(601)の最後のバンドまで比較したらエッジ総数(605)を一定の閾値と比較する手段(607)と、
前記判断手段で一定の閾値以上のエッジ総数(605)を含むときは、並列分散処理構成(図4(b))にする手段(809)と、
前記判断手段で一定の閾値以上のエッジ数を含まないときは、パイプライン処理構成(図4(a))にする手段(811)と、
前記判断手段で決定した構成に合わせてレンダリングシステムを変更する手段(812)と、
を有することを特徴とする請求項1に記載の画像形成装置(102)。
【請求項3】
前記並列分散処理構成の手段(図4(b))は、
現在処理中のバンド中間データ(413)のバンドには隣接するバンドをまたがる描画オブジェクト(606)が存在するかどうかを判断する手段(1001)と、
前記判断手段で隣接するバンドにまたがる描画オブジェクト(606)が存在しなければ現在処理中のバンド中間データ(413)を描画制御機能(414)へ送信する手段と、
前記判断手段で隣接するバンドにまたがる描画オブジェクト(606)が存在すれば縦方向のサイズを計測する手段(1002)と、
前記手段で隣接するバンドの中間データ(413)を後段の描画機能(414)に送信する手段(1003)と、
前記手段で1バンドの高さから前記手段で計測したサイズと比較して隣接するバンドにまたがる描画オブジェクト(606)がまだ存在するかどうかを判断する手段(1004)と、
前記判断手段で存在しないなら次のバンド中間データ(413)を別の描画機能(415)へ送信する手段(1005)と、
前記判断手段で存在するのであれば次のバンド中間データを現在の描画機能(414)へ送信して再び次のバンドを同じ描画機能(414)へ送信する手段(1003)と、
を有することを特徴とする請求項2に記載の画像形成装置(102)。
【請求項4】
印刷データの描画特徴を抽出する手段(701)と、
前記描画特徴を対象ページの特徴情報(607)として保持する手段(702)、
前記描画特徴を対象ページの中間データ(601)の特徴情報(607)として付加する手段(703)と、
前記描画特徴を対象ページ内のバンド領域(606)ごとに保持する手段(704)と、
前記描画特徴を用いて各バンド領域と隣接するバンド領域とを比較する手段と、
前記描画特徴比較から特徴情報(607)の差分を取得する手段(705)と、
前記描画特徴差分と隣接するバンド領域ごとに特徴情報(607)の閾値とを比較する手段(706)と、
前記描画特徴の閾値からレンダリングシステムの構成をパイプライン処理(710)か並列分散処理(709)かを判断する手段と、
前記描画特徴の判断で決定したレンダリングシステムを構築する手段(711)と、
を有することを特徴とした画像形成方法。
【請求項5】
前記レンダリングシステムを構築する手段(711)は、
マルチCPUで構成されたレンダリングシステムを有する手段(図4(a)、図4(b))と、
前記手段において入力される中間データ(601)のページ毎にバンド内のエッジ数とオブジェクト数(606)を集計する手段(801、802)と、
前記印刷データのエッジ数とオブジェクト数(606)をメタデータ(607)として描画用の中間データ(601)に付加する手段(803)と、
前記印刷データを描画データ解析部(304)で読み込む手段(804)と、
前記印刷データのメタデータ(607)から隣接するバンドに一定値以下のオブジェクト数(606)を有するバンドが存在するならレンダリングの構成を並列分散処理構成(図4(b))にする手段(809)と、
前記判断手段で中間データ(601)の隣接するバンドがある閾値以上のオブジェクト数(606)を有するバンドが存在するかどうかをページの最後まで比較する手段(807、808)と、
前記判断手段で中間データ(601)の最後のバンドまで比較したらエッジ総数(605)を一定の閾値と比較する手段(607)と、
前記判断手段で一定の閾値以上のエッジ総数(605)を含むときは、並列分散処理構成(図4(b))にする手段(809)と、
前記判断手段で一定の閾値以上のエッジ数を含まないときは、パイプライン処理構成(図4(a))にする手段(811)と、
前記判断手段で決定した構成に合わせてレンダリングシステムを変更する手段(812)と、
を有することを特徴とする請求項4に記載の画像形成方法。
【請求項6】
前記並列分散処理構成の手段(図4(b))は、
現在処理中のバンド中間データ(413)のバンドには隣接するバンドをまたがる描画オブジェクト(606)が存在するかどうかを判断する手段(1001)と、
前記判断手段で隣接するバンドにまたがる描画オブジェクト(606)が存在しなければ現在処理中のバンド中間データ(413)を描画制御機能(414)へ送信する手段と、
前記判断手段で隣接するバンドにまたがる描画オブジェクト(606)が存在すれば縦方向のサイズを計測する手段(1002)と、
前記手段で隣接するバンドの中間データ(413)を後段の描画機能(414)に送信する手段(1003)と、
前記手段で1バンドの高さから前記手段で計測したサイズと比較して隣接するバンドにまたがる描画オブジェクト(606)がまだ存在するかどうかを判断する手段(1004)と、
前記判断手段で存在しないなら次のバンド中間データ(413)を別の描画機能(415)へ送信する手段(1005)と、
前記判断手段で存在するのであれば次のバンド中間データを現在の描画機能(414)へ送信して再び次のバンドを同じ描画機能(414)へ送信する手段(1003)と、
を有することを特徴とする請求項5に記載の画像形成方法。
【請求項1】
印刷データの描画特徴を抽出する手段(701)と、
前記描画特徴を対象ページの特徴情報(607)として保持する手段(702)、
前記描画特徴を対象ページの中間データ(601)の特徴情報(607)として付加する手段(703)と、
前記描画特徴を対象ページ内のバンド領域(606)ごとに保持する手段(704)と、
前記描画特徴を用いて各バンド領域と隣接するバンド領域とを比較する手段と、
前記描画特徴比較から特徴情報(607)の差分を取得する手段(705)と、
前記描画特徴差分と隣接するバンド領域ごとに特徴情報(607)の閾値とを比較する手段(706)と、
前記描画特徴の閾値からレンダリングシステムの構成をパイプライン処理(710)か並列分散処理(709)かを判断する手段と、
前記描画特徴の判断で決定したレンダリングシステムを構築する手段(711)と、
を有することを特徴とする画像形成装置(102)。
【請求項2】
前記レンダリングシステムを構築する手段(711)は、
マルチCPUで構成されたレンダリングシステムを有する手段(図4(a)、図4(b))と、
前記手段において入力される中間データ(601)のページ毎にバンド内のエッジ数とオブジェクト数(606)を集計する手段(801、802)と、
前記印刷データのエッジ数とオブジェクト数(606)をメタデータ(607)として描画用の中間データ(601)に付加する手段(803)と、
前記印刷データを描画データ解析部(304)で読み込む手段(804)と、
前記印刷データのメタデータ(607)から隣接するバンドに一定値以下のオブジェクト数(606)を有するバンドが存在するならレンダリングの構成を並列分散処理構成(図4(b))にする手段(809)と、
前記判断手段で中間データ(601)の隣接するバンドがある閾値以上のオブジェクト数(606)を有するバンドが存在するかどうかをページの最後まで比較する手段(807、808)と、
前記判断手段で中間データ(601)の最後のバンドまで比較したらエッジ総数(605)を一定の閾値と比較する手段(607)と、
前記判断手段で一定の閾値以上のエッジ総数(605)を含むときは、並列分散処理構成(図4(b))にする手段(809)と、
前記判断手段で一定の閾値以上のエッジ数を含まないときは、パイプライン処理構成(図4(a))にする手段(811)と、
前記判断手段で決定した構成に合わせてレンダリングシステムを変更する手段(812)と、
を有することを特徴とする請求項1に記載の画像形成装置(102)。
【請求項3】
前記並列分散処理構成の手段(図4(b))は、
現在処理中のバンド中間データ(413)のバンドには隣接するバンドをまたがる描画オブジェクト(606)が存在するかどうかを判断する手段(1001)と、
前記判断手段で隣接するバンドにまたがる描画オブジェクト(606)が存在しなければ現在処理中のバンド中間データ(413)を描画制御機能(414)へ送信する手段と、
前記判断手段で隣接するバンドにまたがる描画オブジェクト(606)が存在すれば縦方向のサイズを計測する手段(1002)と、
前記手段で隣接するバンドの中間データ(413)を後段の描画機能(414)に送信する手段(1003)と、
前記手段で1バンドの高さから前記手段で計測したサイズと比較して隣接するバンドにまたがる描画オブジェクト(606)がまだ存在するかどうかを判断する手段(1004)と、
前記判断手段で存在しないなら次のバンド中間データ(413)を別の描画機能(415)へ送信する手段(1005)と、
前記判断手段で存在するのであれば次のバンド中間データを現在の描画機能(414)へ送信して再び次のバンドを同じ描画機能(414)へ送信する手段(1003)と、
を有することを特徴とする請求項2に記載の画像形成装置(102)。
【請求項4】
印刷データの描画特徴を抽出する手段(701)と、
前記描画特徴を対象ページの特徴情報(607)として保持する手段(702)、
前記描画特徴を対象ページの中間データ(601)の特徴情報(607)として付加する手段(703)と、
前記描画特徴を対象ページ内のバンド領域(606)ごとに保持する手段(704)と、
前記描画特徴を用いて各バンド領域と隣接するバンド領域とを比較する手段と、
前記描画特徴比較から特徴情報(607)の差分を取得する手段(705)と、
前記描画特徴差分と隣接するバンド領域ごとに特徴情報(607)の閾値とを比較する手段(706)と、
前記描画特徴の閾値からレンダリングシステムの構成をパイプライン処理(710)か並列分散処理(709)かを判断する手段と、
前記描画特徴の判断で決定したレンダリングシステムを構築する手段(711)と、
を有することを特徴とした画像形成方法。
【請求項5】
前記レンダリングシステムを構築する手段(711)は、
マルチCPUで構成されたレンダリングシステムを有する手段(図4(a)、図4(b))と、
前記手段において入力される中間データ(601)のページ毎にバンド内のエッジ数とオブジェクト数(606)を集計する手段(801、802)と、
前記印刷データのエッジ数とオブジェクト数(606)をメタデータ(607)として描画用の中間データ(601)に付加する手段(803)と、
前記印刷データを描画データ解析部(304)で読み込む手段(804)と、
前記印刷データのメタデータ(607)から隣接するバンドに一定値以下のオブジェクト数(606)を有するバンドが存在するならレンダリングの構成を並列分散処理構成(図4(b))にする手段(809)と、
前記判断手段で中間データ(601)の隣接するバンドがある閾値以上のオブジェクト数(606)を有するバンドが存在するかどうかをページの最後まで比較する手段(807、808)と、
前記判断手段で中間データ(601)の最後のバンドまで比較したらエッジ総数(605)を一定の閾値と比較する手段(607)と、
前記判断手段で一定の閾値以上のエッジ総数(605)を含むときは、並列分散処理構成(図4(b))にする手段(809)と、
前記判断手段で一定の閾値以上のエッジ数を含まないときは、パイプライン処理構成(図4(a))にする手段(811)と、
前記判断手段で決定した構成に合わせてレンダリングシステムを変更する手段(812)と、
を有することを特徴とする請求項4に記載の画像形成方法。
【請求項6】
前記並列分散処理構成の手段(図4(b))は、
現在処理中のバンド中間データ(413)のバンドには隣接するバンドをまたがる描画オブジェクト(606)が存在するかどうかを判断する手段(1001)と、
前記判断手段で隣接するバンドにまたがる描画オブジェクト(606)が存在しなければ現在処理中のバンド中間データ(413)を描画制御機能(414)へ送信する手段と、
前記判断手段で隣接するバンドにまたがる描画オブジェクト(606)が存在すれば縦方向のサイズを計測する手段(1002)と、
前記手段で隣接するバンドの中間データ(413)を後段の描画機能(414)に送信する手段(1003)と、
前記手段で1バンドの高さから前記手段で計測したサイズと比較して隣接するバンドにまたがる描画オブジェクト(606)がまだ存在するかどうかを判断する手段(1004)と、
前記判断手段で存在しないなら次のバンド中間データ(413)を別の描画機能(415)へ送信する手段(1005)と、
前記判断手段で存在するのであれば次のバンド中間データを現在の描画機能(414)へ送信して再び次のバンドを同じ描画機能(414)へ送信する手段(1003)と、
を有することを特徴とする請求項5に記載の画像形成方法。
【図1】
【図2】
【図3】
【図4(a)】
【図4(b)】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図2】
【図3】
【図4(a)】
【図4(b)】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2013−6338(P2013−6338A)
【公開日】平成25年1月10日(2013.1.10)
【国際特許分類】
【出願番号】特願2011−140008(P2011−140008)
【出願日】平成23年6月24日(2011.6.24)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年1月10日(2013.1.10)
【国際特許分類】
【出願日】平成23年6月24日(2011.6.24)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]