説明

画像形成装置及び画像形成方法ならびに画像形成方法を実行するプログラム

【課題】 レンダリングのエッジ処理において、ページ内に大量のエッジが存在するデータを処理する場合、エッジ情報をロードした時点でCPUキャッシュに格納される。
しかし、他のエッジをロードしているとCPUキャッシュから溢れ、次にエッジ情報を用いてエッジ処理を行う際、メインメモリから情報をロードするので処理に時間がかかってしまう課題がある。
【解決手段】 これまでは、1スキャンライン分のエッジ情報を保持し処理していたのを、2つ以上のブロックに分割しそれぞれのブロックでエッジ情報を保持し処理することにより、近接するエッジが近接するメモリ上に保持される可能性が高くになる。その結果、キャッシュにミスヒット率が低下し処理速度の向上をはかることが出来る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ディスプレイリストのエッジ処理制御方法を有する画像形成装置及び画像形成方法ならびに画像形成方法を実行するプログラムに関するものである。
【背景技術】
【0002】
従来、ホストコンピュータ上で実行される描画アプリケーションを用いて生成された描画データをプリンタで印刷する場合、ホストコンピュータは描画データをPDL(Page Description Language)と呼ばれる印刷データの形式でプリンタへ送信する。PDLには描画データにおける、文字、グラフィック、イメージ等を印刷する際に必要となる印刷情報が含まれている。
【0003】
PDLを受信したプリンタは、PDLの解析を行いDL(Display List)と呼ばれる中間データに変換し、中間データに基づいてレンダリング処理を行う。レンダリング処理の方法は幾つか存在するが、例えば、特許文献1では印刷データを主走査方向に1ライン毎に読み込みレンダリングを行うスキャンラインレンダリングという方法がある。スキャンラインレンダリングは、ページ内に描画するオブジェクトとオブジェクト、またはオブジェクトと背景の境目を指すエッジに関する情報を基にレンダリングを行う。スキャンラインレンダリングを行うためには、1ライン分のエッジ情報をメモリにロードする必要となる。
【0004】
1ライン分のエッジ情報をメモリにロードするとは、図4(a)の太線に示すように処理中のスキャンラインにおけるページ幅(X=0〜4000)に現れるエッジ情報の全てを1つのメモリ領域に保持することである。この状態をメモリ上で格納した場合、図5(a)に示すようになり、点線で囲んだ透過な矩形領域がCPUのキャッシュ有効領域となる。エッジ情報は、アドレス番号が0x78200000から0x78B00000のどこかのメモリ領域内に格納されることを示している。
【0005】
このように、スキャンラインレンダリング処理を行う場合エッジ情報のロードを行う他に、エッジのリンクソート及びエッジとエッジ間の距離を算出する差分抽出処理を行うことになる。上述の処理を高速に行うためには、CPUのキャッシュ内にエッジ情報をロードした際に、次に処理するエッジの情報がキャッシュ内のエッジ情報領域内に格納されている状態が理想である。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2000−137825
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、近年、アプリケーションの描画能力向上に伴い、エッジ数が多いデータが増えてきており、レンダリングにおけるエッジ処理に時間がかかることが問題になっている。
【0008】
この問題に対し特許文献1の発明では、エッジ処理を1ライン毎に行っているためエッジ数が多いデータに対してキャッシュミスヒットと呼ばれる現象が起こる可能性がある。キャッシュミスヒットは、キャッシュ内にエッジ情報が存在しないためエッジ情報が格納されている領域からロードしなくてはいけない。このためレンダリング処理を高速に行うことはできない。
【課題を解決するための手段】
【0009】
上記課題を解決するための本発明の画像形成装置は、描画データに基づいて1ライン毎にレンダリングする画像形成装置において、レンダリングを行う1ラインにおける分割された領域に現れるエッジ情報を記憶し、前記レンダリングを行う1ラインにおける分割された領域に現れるエッジ情報をソートすることを特徴とする。
【発明の効果】
【0010】
エッジ数が多い複雑なデータの場合においても、CPUのキャッシュミスヒットを削減でき高速にエッジ処理することを可能にする。
【図面の簡単な説明】
【0011】
【図1】実施形態における各機器のコントロールユニットの構成例を示すブロック図
【図2】実施形態におけるシステム構成の一例を示す図
【図3】実施形態におけるコントローラソフトウェアの構成の一例を示すブロック図
【図4】実施形態におけるページ内のブロック分割の一例を示す図
【図5】実施形態におけるエッジ情報のメモリ配置の一例を示す図
【図6】実施形態におけるスキャンライン毎のエッジ処理の一例を示す図
【図7】実施形態におけるエッジ処理を含んだレンダリング処理の一例を示すフロー図
【図8】実施形態におけるブロックのカバー範囲変更の一例を示す図
【図9】実施形態におけるブロックの分割の一例を示す図
【図10】実施形態におけるブロックの結合の一例を示す図
【図11】実施形態におけるエッジのブロック間移動とリンクのソートの一例を示す図
【発明を実施するための形態】
【0012】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【実施例1】
【0013】
<コントローラユニットの構成>
図1は、本実施形態におけるMFP(Multi Function Peripheral)のコントロールユニットの構成を示すブロック図である。図1において、コントロールユニット200は、画像入力デバイスであるスキャナ201や画像出力デバイスであるプリンタエンジン202と接続し、画像データの読み取りやプリント出力のための制御を行う。また、コントロールユニット200は、LAN N1や公衆回線204と接続することで、画像情報やデバイス情報をLAN N1経由で入出力するための制御を行う。プリンタエンジン202は217のデバイスI/Fと結合され、コントローラユニット200で生成された描画データを紙に出力する処理を行う。
【0014】
システムバス213には、CPU(Central Processing Unit)205、RAM(Random Access Memory)206、ROM(Read Only Memory)207、HDD(Hard Disc Drive)208、操作部I/F209、ネットワークI/F211、モデム212、イメージパスI/F214が接続されている。CPU205はMFP全体を制御するための中央処理装置である。RAM206は、CPU205が動作するためのシステムワークメモリであり、入力された画像データを一時記憶するための画像メモリでもある。さらに、ROM207はブートROMであり、システムのブートプログラムが格納されている。HDD208はハードディスクドライブであり、各種処理のためのシステムソフトウェア及び入力された画像データを等格納する。操作部I/F209は、画像データ等を表示可能な表示画面を有する操作部210に対するインタフェース部であり、操作部210に対して操作画面データを出力する。また、操作部I/F209は、操作部210から操作者が入力した情報をCPU205に伝える役割をする。ネットワークI/F211は、例えばLANカード等で実現され、LAN(Local Area Network)N1に接続して外部装置との間で情報の入出力を行う。モデム212は公衆回線204に接続し、外部装置との間で情報の入出力を行う。以上のユニットがシステムバス213上に配置されている。イメージバスI/F214は、システムバス213と画像データを高速で転送する画像バス215とを接続するためのインタフェースであり、データ構造を変換するバスブリッジである。
【0015】
画像バス215上には、ラスタイメージプロセッサ216、デバイスI/F217、スキャナ画像処理部218、プリンタ画像処理部219、画像編集用画像処理部220、カラーマネージメントモジュール230が接続されている。
【0016】
RIP(Raster Image Processor)216は、PDLデータや後述するベクトルデータをイメージデータとして展開する。デバイスI/F部217は、スキャナ201及びプリンタエンジン202とコントロール200とを接続し、画像データの同期系/非同期系の変換を行う。
【0017】
また、スキャナ画像処理部218は、スキャナ201から入力した画像データに対して、補正、加工、編集等の各種画像処理を行う。プリンタ画像処理部219は、プリント出力する画像データに対して、プリンタエンジンに応じた補正及び解像度変換等の処理を行う。画像編集用画像処理220は、画像データの回転や、画像データの圧縮伸長処理等の各種画像処理を行う。CMM230は、画像データに対して、プロファイルやキャリブレーションデータに基づいた、色変換処理(色空間変換処理ともいう)を施す専用ハードウェアモジュールである。プロファイルとは、機器に依存した色空間で表現したカラー画像データを機器に依存しない色空間(例えばLabなど)に変換するための関数のような情報である。キャリブレーションデータとは、カラー複合機3におけるスキャナ部201やプリンタエンジン202の色再現特性を修正するためのデータである。
【0018】
次に、プリンタエンジン202の一例である1Dカラー系MFP(Multi Function Peripheral:マルチファンクション周辺機器)の構成について説明する。
【0019】
1Dカラー系MFPは、スキャナ部、レーザ露光部、感光ドラム、作像部、定着部、給紙/搬送部及び、これらを制御する不図示のプリンタ制御部から構成される。
【0020】
スキャナ部は、原稿台に置かれた原稿に対して、照明を当てて原稿画像を光学的に読み取り、その像を電気信号に変換して画像データを作成する工程である。
【0021】
レーザ露光部は、前記画像データに応じて変調されたレーザ光などの光線を等角速度で回転する回転多面鏡(ポリゴンミラー)に入射させ、反射走査光として感光ドラムに照射する。
【0022】
作像部は、感光ドラムを回転駆動し、帯電器によって帯電させ、前記レーザ露光部によって感光ドラム上に形成された潜像をトナーによって現像化し、そのトナー像をシートに転写する。その際に転写されずに感光ドラム上に残った微小トナーを回収するといった一連の電子写真プロセスを実行して作像する。その際、シートが転写ベルトの所定位置に巻きつき、4回転する間に、マゼンタ(M)、シアン(C)、イエロー(Y)、ブラック(K)のトナーを持つそれぞれの現像ユニット(現像ステーション)が入れ替わりで順次前述の電子写真プロセスを繰り返し実行する。4回転の後、4色のフルカラートナー像を転写されたシートは、転写ドラムを離れ、定着部へ搬送される。
【0023】
定着部は、ローラやベルトの組み合わせによって構成され、ハロゲンヒータなどの熱源を内蔵し、前記作像部によってトナー像が転写されたシート上のトナーを、熱と圧力によって溶解、定着させる。
【0024】
給紙/搬送部は、シートカセットやペーパーデッキに代表されるシート収納庫を一つ以上持っており、前記プリンタ制御部の指示に応じてシート収納庫に収納された複数のシートの中から一枚分離し、作像部・定着部へ搬送する。シートは作像部の転写ドラムに巻きつけられ、4回転した後に定着部へ搬送される。4回転する間に前述のYMCK各色のトナー像がシートに転写される。また、シートの両面に画像形成する場合は、定着部を通過したシートを再度作像部へ搬送する搬送経路を通るように制御する。
【0025】
プリンタ制御部は、MFP全体を制御するMFP制御部と通信して、その指示に応じて制御を実行すると共に、前述のスキャナ、レーザ露光、作像、定着、給紙/搬送の各部の状態を管理しながら、全体が調和を保って円滑に動作できるよう指示を行う。
【0026】
<システム構成>
次に、画像処理システムの構成について詳細に説明する。図2は、本実施形態に係る画像処理システムの全体構成を示すブロック図である。図2において、画像処理システムは、互いにLAN(Local Area Network)N1等を介して接続された、MFP1、MFP2、MFP3で構成されている。
【0027】
各MFPはそれぞれHDDH1、H2、H3を具備している。MFPに搭載されているプリンタエンジン(以降、エンジン)の解像度はMFP毎に異なっており、MFP1とMFP3は600dpi、MFP2は1200dpiである。また、MFPに搭載されているレンダラ(ラスタライザ)の種類もMFP毎に異なっており、MFP1とMFP2のレンダラは同種(図中には「Ra」と図示)、MFP3だけ異なる種類(「Rb」と図示)である。一般にレンダラはASICなどのハードウェアで構成されるため、異なる種類のレンダラは異なる種類の描画命令群を処理することができない。この描画命令群を一般にディスプレイリストと呼ぶ。ディスプレイリストはハードウェアで処理可能なインストラクション(命令)であり、複雑な描画記述を持つベクタデータからソフトウェアで生成されるものであり、解像度に依存している。
【0028】
MFP1、MFP2、MFP3は、ネットワークプロトコルを使用して互いに通信することができる。なお、LAN N1上に接続されるこれらのMFPは上記のような物理的な配置に限定されなくても良い。また、LAN N1上にはMFP以外の機器(例えばPC、各種サーバ、プリンタなど)が接続されていても良い。
【0029】
<コントローラソフトウェア構成>
次に、MFPの動作を制御するコントローラソフトウェアについて詳細に説明する。図3は、コントローラソフトウェアの構成を示すブロック図である。
プリンタインターフェイス400は、外部との入出力のための手段である。プロトコル制御部401は、ネットワークプロトコルを解析・送信することによって外部との通信を行う手段である。
【0030】
PDLデータ解析部402は、PDLデータを解析し、より処理しやすい形式のディスプレイリストに変換する手段である。PDLデータ解析部402において生成されたディスプレイリストはデータ描画部403に渡されて処理される。データ描画部403は上記ディスプレイリストをビットマップデータに展開するものであり、展開されたビットマップデータはページメモリ404に逐次描画されて行く。PDLデータ解析部402及びデータ描画部403は、ROMに格納されたプログラムを用いてCPUにより実行されることで実現される。
【0031】
ページメモリ404はレンダラが展開するビットマップデータを一次的に保持する揮発性のメモリである。
【0032】
パネル入出力制御部は操作パネルからの入出力を制御するものである。
ドキュメント記憶部406はデータファイルを記憶する手段であり、ハードディスク等の二次記憶装置によって実現される。
スキャン制御部407はスキャナから入力した画像データに対して、補正、加工、編集などの各種処理を行う。
【0033】
印刷制御部408は、ページメモリ404の内容をビデオ信号に変換処理し、プリンタエンジン部409へ画像転送を行う。プリンタエンジン部1400は受け取ったビデオ信号を記録紙に永久可視画像形成するための印刷機構部である。
【0034】
<エッジ情報保持方法>
本発明のエッジ情報の保持方法について、図5を用いて詳細に説明する。
メモリ領域は、入力されたディスプレイリストに確保されている場合や、ある固定領域に保持されている場合などが考えられる。メモリ領域のサイズは、ディスプレイリスト内に含まれるエッジ数を元に算出される場合や、MFP全体で使用可能なメモリサイズのうち、レンダリング処理に使用可能なサイズがあらかじめ設定される。
【0035】
エッジ数を元に算出される具体的なサイズとしては、1スキャンラインで最大ロードされるエッジ数に1つのエッジサイズをかけた値となる。1つのエッジサイズはエッジによって異なるが、最大でも1つのエッジ当たり約60バイトとなるので、1スキャンラインに含まれる最大エッジ数が500個だった場合、約30kbyteとなる。
【0036】
本発明は、図4(b)の二つの太線に示すように、ページ幅をX=0〜2000までとX=2001〜4000までの二つのブロックに分割し、処理中のスキャンラインにおける各ブロック内に現れるエッジ情報をそれぞれの領域に保持し処理を行うことを特徴とする。
【0037】
これをメモリ上ではどのようにデータが格納されるかを示した図が図5(b)になり、点線で囲んだ透過な矩形領域がキャッシュ有効領域の例である。ページ幅がX=0〜2000に現れるエッジは、0x78000000から0x78600000のアドレスが連続した領域に格納される。また、ページ幅がX=2001〜4000に現れるエッジは、0x78600000から0x78B00000のアドレスが連続した領域に格納されることを示している。
【0038】
メモリ領域の分割方法としては、各ブロックに含まれるエッジ数が同じと仮定して、単純にブロックの個数分に分割する方法が考えられる。また、ブロックが2つの場合、一つ目のブロックに含まれるエッジ情報はメモリの先頭アドレスから、二つ目のブロックに含まれるエッジ情報は最終アドレスから使用する方法も考えられる。
【0039】
隣り合うエッジが格納されているブロックが1つの場合、図5(a)に示すように0x00800000番地分離れる可能性があったが、二つのブロックの場合は、図5(b)に示すように最悪でも0x00400000番地離れるのにとどまる。その為、キャッシュ効率のよいエッジ処理を行うことが可能になる。
【0040】
<レンダリングにおけるエッジ処理とは>
ここでレンダリングにおけるエッジ処理について図6を用いて説明する。
【0041】
まずエッジとは、ページ内に描画するオブジェクトとオブジェクト、またはオブジェクトと背景の境目を指す。
【0042】
エッジ処理とは、メモリ上へのエッジ情報のロード、処理中のスキャンラインにおけるX座標の算出、処理中のエッジと隣のエッジ間の距離の算出、エッジが現れる順番を保持するリンクの更新、エッジ情報の削除の5つが大きな処理となる。
【0043】
また、エッジ情報は、図6の右下の四角内にかかれるような項目が含まれる。
図6のエッジ処理を説明する図には、三角形と四角形のオブジェクトが書かれており、先ほど述べたように、領域はブロック1とブロック2の二つの領域に分割されている。
【0044】
エッジ処理はページの上から下に向かってスキャンライン毎に処理を行っていくが、まずページの先頭から三角形の頂点が現れるまではエッジが存在しないので何も行わない。
【0045】
三角形がページの右側に現れるスキャンライン(図6の「1、2追加」部分)を処理した場合、エッジ1の情報とエッジ2の情報がブロック2のメモリ上にロードされる。
【0046】
ここでエッジ情報のメモリロードについて説明する。ディスプレイリストには、エッジの開始座標が記されているので、この開始座標、ブロック1が含まれる座標、ブロック2が含まれる座標を元にどのブロックにエッジがロードするか判断する。また、エッジ1が左、エッジ2が右にあるので、エッジは1→2の順にリンクされる。
【0047】
処理を進めていくと、エッジ1がブロック2の領域からブロック1領域へ移動する(図6の「1ブロック移動」部分)のでエッジ1が属している領域情報をブロック2からブロック1へ変更する。
【0048】
次に、四角形がブロック1とブロック2にまたがって現れるスキャンライン(図6の3、4追加」部分)を処理した場合、エッジ3の情報をブロック1のメモリ上に、エッジ4をブロック2のメモリ上に追加する。この場合、エッジ3がエッジ1の左側にあるので、ブロック1のエッジは3→1、ブロック2のエッジは4→2の順にリンクされる。
【0049】
次に三角形がなくなるスキャンライン(図6の「1、2削除」部分)を処理した場合、エッジ1とエッジ2が消滅するので、エッジ1の情報とエッジ2の情報をメモリ上から削除する。
【0050】
次に四角形がなくなるスキャンライン(図6の「3、4削除」部分)を処理した場合、エッジ3とエッジ4が消滅するので、エッジ3の情報とエッジ4の情報をメモリ上から削除する。
【0051】
エッジ3、エッジ4が削除されたスキャンラインからページの一番下のスキャンラインまではエッジが現れないのでエッジ処理は行われない。
【0052】
また本処理において、各ブロックを分割する境目をエッジとして扱い、ブロック1に含まれるエッジリストの最後とブロック2に含まれるエッジリストの先頭に新たなエッジを追加して処理を行っても構わない。
【0053】
以上がレンダリングにおける基本的なエッジ処理の流れになる。
【0054】
<データ処理フロー>
次に、図7を使って本特許におけるレンダリング処理を行うプログラムのフローについて説明する。このプログラムは、図1の205のRAMにロードされ、205のCPU上で動作する。
【0055】
S701は本処理の開始を示す。S702において、本処理におけるブロックの個数、カバー範囲を決める為の情報と、処理を行うディスプレイリストを入力する。
【0056】
次にS703において、ブロック個数やカバー範囲の初期値を決定する。S704はスキャンラインのループ端になり、1スキャンライン処理する毎にS724からこのループ端に戻り、処理するスキャンラインがページの最終スキャンラインまでこのループが繰り返される。
【0057】
S705は処理を行うブロックのループ端になり、1ブロックに含まれるエッジ処理が終了する毎にS722からこのループ単に戻り、処理するブロックがページに一番右側のブロックまでこのループが繰り返される。
【0058】
S706において、処理を行うディスプレイリストの解釈を行う。S707において、S706の結果、処理中のブロックにおいて、エッジの追加、またはエッジの削除があるか判断する。S707の結果がNOの場合S715の処理を行う。S707の結果がYESの場合、S708において、エッジのロード処理、または削除処理を行い、ブロックに関するパラメータの更新を行う。
【0059】
S709において、ブロックに関するパラメータのうちブロック間のエッジ数の偏りがS703で決定した閾値より大きいか判断する。S709の結果がNOだった場合、S711の処理を行う。S709の結果がYESだった場合、S710において、各ブロックに含まれるエッジ数の偏りが等しくなるようにブロックがカバーする範囲を変更し、ブロック間のエッジ数の偏り値を更新する。この処理の詳細は後述する<ブロックのカバー範囲変更>で説明する。
【0060】
S711において、ブロック内のエッジ数がS703で決定した上限より大きいか判断する。S711の結果がNOだった場合、S713の処理を行う。S711の結果がYESだった場合、S712において、ブロックの分割処理を行い1ブロックに含まれるエッジ数の削減を行う。この処理の詳細は<ブロックの分割>で説明する。
【0061】
次にS713において、ブロック内のエッジ数がS703で決定した下限より小さいか判断する。S713がNOだった場合S715の処理を行う。S713の結果がYESだった場合、S714において、ブロックの結合処理を行い1ブロックに含まれるエッジ数の最適化を行う。この処理の詳細は<ブロックの結合>で説明する。
【0062】
次にS715において、処理中のブロックに含まれる全てのエッジに対して、次のスキャンラインにおけるX座標の算出を行い、エッジ同士が交差する場合、リンクの入れ替え(リンクソート)を行う。
ここで、エッジダーティーとフリーフォールという概念について説明する。処理を行うスキャンラインにおいて、エッジの追加or削除がない、かつ、エッジの交差がないスキャンラインをフリーフォールのスキャンラインといい、それ以外のスキャンラインをエッジダーティーのスキャンラインという。つまりS707からS713の処理はエッジダーティー時のみ行われる処理である。
【0063】
次にS716においてS715の結果、属するブロックが変わるエッジがあった場合、元のブロックのリンクから切り離し、移動先のブロックのリンクに追加する。この際、移動元、移動先それぞれのブロックに関してリンクの並び替え処理を行う。この処理の詳細は<エッジのブロック間移動>で説明する。
【0064】
S718において、エッジ処理が終わった描画データの上下関係を判断し、描画するオブジェクトを選択するレベル処理を行う。次にS719において、S718で選択されたオブジェクトの塗り情報を生成するフィル生成処理を行い、S720でオブジェクト同士の重ね合わせであるコンポジット処理を行う。
【0065】
S721において、処理を行うブロックを現在のブロックから一つ右のブロックへ移動する。S722はS705に対応するブロックに関するループ端になる。処理中のスキャンラインにおける全ブロックの処理が終了したら、S723において処理を行うスキャンラインを現在のスキャンラインから一つ下のスキャンラインに移動する。S724はS704に対応するスキャンラインに関するループ端になる。全スキャンラインに対する処理が終了したらS725でレンダリング処理を終了する。
【0066】
<ブロックのカバー範囲変更>
ここで図8を用いて「データ処理フロー」のS709、S710で説明した、ブロックのカバー範囲変更についての詳細を述べる。
【0067】
d801は図4(b)で述べたようにX=0〜2000、X=2001〜4000までの二つのブロック(ブロック1、ブロック2)に分割して処理している。d802に示すようにY=0〜2000まではブロック1、ブロック2共に同じ位の数のエッジが現れている。
【0068】
どの位の割合でブロックにエッジが含まれるかを示す例として、d802の表「偏り値」を説明する。「偏り値」が1だとブロック間でエッジ数がちょうど等分、1より少ないと他のブロックに比べてエッジ数が少ない、1より多いと他のブロックに比べてエッジ数が多いことを示す。「偏り値」算出方法の一例としては、
(ブロック内のエッジ数×ブロック数)/スキャンライン内の総ブロック数
で計算することが出来る。この場合偏り値は、0から2の間のいずれかの値がとられることになる。
【0069】
次にd803に示すように、点線部の2001スキャンライン目のブロック2には、家の屋根のエッジが大量に現れる。
【0070】
d804に示すようにエッジ数はブロック1が10個に対し、ブロック2が490個となり、それぞれの偏り値はブロック1が0.04に対し、ブロック2が1.96となる。よって、「データ処理フロー」のS703で設定した閾値例(1.3)を越えたのでブロックのカバー範囲を変更する処理を行う。
【0071】
その結果、d805に示すように、ブロックのカバーする範囲をエッジ数が少ないブロック1を広げ、エッジ数が多いブロック2を狭める範囲の変動処理を行う。詳細はd806に示すように、X=0〜3300までがブロック1、X=3301〜4000までがブロック2とすると、各ブロックに含まれるエッジ数がちょうど半分ずつの250個ずつとなり、また、偏り値もそれぞれ1となりエッジ数が均等になる。
【0072】
<ブロックの分割>
次に図9を用いて「データ処理フロー」のS712で説明した、ブロックの分割についての詳細を述べる。
【0073】
d901は<ブロックのカバー範囲変更>で述べたようにY=0〜2000まではX=0〜2000、X=2001〜4000の二つのブロックで処理をしていた。また、Y=2001〜5000までは、X=0〜3300、X=3301〜4000までの二つのブロックに分割して処理していた。Y=0〜5000までの各ブロック内に現れるエッジ数はd902に示すように最大でも300個だった。
【0074】
次にd903に示されるように、点線部の5001スキャンライン目のブロック2には、木の葉っぱのエッジが大量現れる。その個数はd904に示されるように、600個で、「データ処理フロー」のS703で設定した1ブロックに含まれる最大個数例(500個)を越えるのでブロック2はブロック2とブロック3に分割される。
【0075】
その結果、d904に示すように、各ブロックのエッジ数は、ブロック1は280個、ブロック2は250個、ブロック3は350個となり、いずれも1ブロックの上限である500個を下回った。もし1度分割しても上限を下回らない場合、再度ブロックの分割を行う。
【0076】
<ブロックの結合>
次に図10を用いて「データ処理フロー」のS714で説明した、ブロックの結合についての詳細を述べる。
【0077】
d1001の点線部分は<ブロックの分割>で述べたようにY=5000〜6500まではX=0〜2000、X=3301〜3650、X=3651〜4000までの三つのブロックで処理をしていた。d1002に示すようにエッジ数、偏り値はS703で決定した閾値より小さかった。
【0078】
次にd1003に示されるように、点線部の6501スキャンライン目のブロック1、ブロック2、ブロック3は家や木の葉っぱのエッジが削除される。その個数はd1004に示されるように、ブロック1は15個、ブロック2は10個、ブロック3は10個であった。この数は「データ処理フロー」のS703で設定した1ブロックに含まれる最小個数(12個)を下回るのでブロック2とブロック3はブロック2として結合される。
【0079】
その結果、d1006に示すように、各ブロックのエッジ数は、ブロック1は15個、ブロック2は20個となり、いずれも1ブロックの下限である12個を上回った。もし1度結合しても下限を上回らない場合、再度ブロックの結合を行う。
【0080】
<エッジのブロック間移動>
次に図11を用いて「データ処理フロー」のS716で説明した、エッジのブロック間移動に伴うソートについての詳細を述べる。
【0081】
d1101は描画されるページの例を示している。エッジ1、2を持つグレーの矩形がブロック1に、エッジ3、4を持つグラデーションの円と、エッジ5、6を持つ網点の三角形がブロック2に含まれている。
【0082】
d1102には着目スキャンラインにおけるエッジのリンクを示している。
【0083】
まずY=1000ライン目におけるエッジリンクは、ブロック1はエッジ1が左側に、エッジ2が右側にあるので、1→2の順にリンクされる。同様にブロック2は左からエッジ3、5、6、4の順に現れるので、3→5→6→4の順にリンクされる。次のスキャンラインY=1001ライン目のX座標を計算したところ、エッジ5の座標がX=1800になったので、エッジ5はブロック2から1へ移動することがわかる。そこで、エッジ5はブロック2のリンクから切り離しブロック1のリンクにつなげ、X座標順にリンクをソートすると、1→5→2の順のリンクになる。また、ブロック2はエッジ5が抜けたので、エッジ3とエッジ6をリンクした結果、3→6→4の順のリンクになる。
【0084】
エッジがブロック間を移動した場合、メモリ上にロードされているエッジ情報がブロック1からブロック2の領域にコピーされる場合と、エッジ情報はコピーされずにリンクのみが更新される場合の二通りが考えられる。
【0085】
前者はコピーを行う処理時間がかかるが、その後のエッジ処理においてはキャッシュ上で処理できるという点が上げられる。一方、後者はコピーを行わないのでその時間はかからないが、その後のエッジ処理においてはキャッシュ上で処理されない点が上げられる。どちらの方法が効率的かはエッジデータの長さや種類に依存する。
【0086】
このように、ページ内でエッジ数の偏りがあった場合も、領域を可変することにより安定した速度で処理を行うことが可能になる。
【0087】
(他の実施形態)
以上、様々な実施形態を詳述したが、本発明は、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。例えば、スキャナ、プリンタ、PC、複写機、複合機及びファクシミリ装置の如くである。
【0088】
本発明は、前述した実施形態の各機能を実現するソフトウェアプログラムを、システム若しくは装置に対して直接または遠隔から供給し、そのシステム等に含まれるコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。
【0089】
従って、本発明の機能・処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、上記機能・処理を実現するためのコンピュータプログラム自体も本発明の一つである。
【0090】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
【0091】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、記録媒体としては、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM、DVD−R)などもある。
【0092】
また、プログラムは、クライアントコンピュータのブラウザを用いてインターネット/イントラネットのウェブサイトからダウンロードしてもよい。すなわち、該ウェブサイトから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードしてもよいのである。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるウェブサイトからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明の構成要件となる場合がある。
【0093】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布してもよい。この場合、所定条件をクリアしたユーザにのみ、インターネット/イントラネットを介してウェブサイトから暗号化を解く鍵情報をダウンロードさせ、その鍵情報で暗号化されたプログラムを復号して実行し、プログラムをコンピュータにインストールしてもよい。
【0094】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現されてもよい。なお、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ってもよい。もちろん、この場合も、前述した実施形態の機能が実現され得る。
【0095】
また、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ってもよい。このようにして、前述した実施形態の機能が実現されることもある。
【0096】
さらに、実施例1の領域分割をブロック毎としたが、1ライン毎に領域を分割しても良い。この場合、エッジ数がより多い描画データに対して有効である。
【符号の説明】
【0097】
200 コントロールユニット
201 スキャナ
202 プリンタエンジン
210 操作部
301 ジョブコントロール処理
400 プロトコル制御部
401 ベクタデータ生成部
402 PDLデータ解析部
403 データ描画部
404 ページメモリ
405 パネル入出力制御部
406 ドキュメント記憶部
407 スキャン制御部
408 出力制御部
409 プリンタエンジン部

【特許請求の範囲】
【請求項1】
描画データに基づいて1ライン毎にレンダリングする画像形成装置において、
レンダリングを行う1ラインにおける分割された領域に現れるエッジ情報を記憶する記憶手段と、
前記レンダリングを行う1ラインにおける分割された領域に現れるエッジ情報をソートするソート手段と、
を有する画像形成装置。
【請求項2】
前記領域の範囲は変動することを特徴とする請求項1に記載の画像形成装置。
【請求項3】
前記分割された領域は、1ライン毎またはブロック毎に分割された領域であることを特徴とする請求項1または2に記載の画像形成装置。
【請求項4】
前記分割された領域は、1ラインにおける夫々の領域のエッジ数が均等になるように分割された領域であることを特徴とする請求項1乃至3に記載の画像形成装置。
【請求項5】
前記1ラインにおける夫々の領域のエッジ情報はアドレスが連続したメモリ領域に記憶されていることを特徴とする請求項1乃至4に記載の画像形成装置。
【請求項6】
前記レンダリング処理を行う1ラインにおける分割された領域内のエッジ数が上限より大きい場合は領域を増加し、前記記憶手段は増加された領域に現れるエッジ情報を記憶し、前記ソート手段は増やされた領域に現れるエッジ情報をソートすることを特徴とする請求項1乃至5に記載の画像形成装置。
【請求項7】
前記レンダリング処理を行う1ラインにおける分割された領域内のエッジ数が下限より小さい場合は領域を減らし、レンダリングを行う1ラインにおける領域に現れるエッジ情報を記憶し、前記ソート手段は領域に現れるエッジ情報をソートすることを特徴とする請求項1乃至6に記載の画像形成装置。
【請求項8】
描画データに基づいて1ライン毎にレンダリングする画像形成方法において、
レンダリングを行う1ラインにおける分割された領域に現れるエッジ情報を記憶する記憶工程と、
前記レンダリングを行う1ラインにおける分割された領域に現れるエッジ情報をソートするソート工程と、
を含む画像形成方法。
【請求項9】
描画データに基づいて1ライン毎にレンダリングする画像形成方法において、
レンダリングを行う1ラインにおける分割された領域に現れるエッジ情報を記憶する記憶工程と、
前記レンダリングを行う1ラインにおける分割された領域に現れるエッジ情報をソートするソート工程と、
を含む画像形成方法を実行するためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2011−794(P2011−794A)
【公開日】平成23年1月6日(2011.1.6)
【国際特許分類】
【出願番号】特願2009−145450(P2009−145450)
【出願日】平成21年6月18日(2009.6.18)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】