JP6445899B2 - 画像形成装置及びその制御方法 - Google Patents

画像形成装置及びその制御方法 Download PDF

Info

Publication number
JP6445899B2
JP6445899B2 JP2015037295A JP2015037295A JP6445899B2 JP 6445899 B2 JP6445899 B2 JP 6445899B2 JP 2015037295 A JP2015037295 A JP 2015037295A JP 2015037295 A JP2015037295 A JP 2015037295A JP 6445899 B2 JP6445899 B2 JP 6445899B2
Authority
JP
Japan
Prior art keywords
image data
unit
processing
forming apparatus
partial area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015037295A
Other languages
English (en)
Other versions
JP2016159437A5 (ja
JP2016159437A (ja
Inventor
健 阿知波
健 阿知波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2015037295A priority Critical patent/JP6445899B2/ja
Priority to US15/045,568 priority patent/US9600747B2/en
Publication of JP2016159437A publication Critical patent/JP2016159437A/ja
Publication of JP2016159437A5 publication Critical patent/JP2016159437A5/ja
Application granted granted Critical
Publication of JP6445899B2 publication Critical patent/JP6445899B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1848Generation of the printable image
    • G06K15/1856Generation of the printable image characterized by its workflow
    • G06K15/1857Generation of the printable image characterized by its workflow involving parallel processing in the same printing apparatus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1848Generation of the printable image
    • G06K15/1849Generation of the printable image using an intermediate representation, e.g. a list of graphical primitives
    • G06K15/1851Generation of the printable image using an intermediate representation, e.g. a list of graphical primitives parted in a plurality of segments per page

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Record Information Processing For Printing (AREA)
  • Image Generation (AREA)
  • Facsimiles In General (AREA)

Description

本発明は、例えば複数の描画処理部で並列に描画処理等を実行する画像形成装置及びその制御方法に関する。
画像形成装置において高速化が求められている画像処理の一つとして、ホストコンピュータ等で生成されるページ記述言語(PDL)で記述されたベクタ形式の描画データを解釈してラスタ形式の画像データを形成する描画処理(RIP)がある。描画処理は、描画データに含まれる文字、写真、図形等の描画オブジェクトの複雑さによるが、一般に多くの演算を必要とする。このような画像処理を高速化する有効な手法として、単一ページを所定の部分領域に分割した画像データに対して複数の画像処理部を並列に動作させる手法が知られている。しかしながら、ベクタ形式の描画データを扱う描画処理は、分割に伴うオーバーヘッドによって必ずしも描画処理部の個数分だけ倍速にはならないため、複数の描画処理部が持つ処理能力を最大限に引き出して並列処理効率を向上することが必要になる。例えば、ページを部分領域に分割する際の分割方向は、描画処理アルゴリズム(スキャンライン方式)の特性を踏まえて、主走査方向よりも分割に伴う描画処理のオーバーヘッドが少なくなる、副走査方向で分割した(すなわち分割ラインが主走査線に沿った)バンド単位の並列化が望ましい。これは、描画処理の並列化に伴って追加で必要となる処理(例えば、描画データの読み飛ばし処理やバッファリング)を最小限に抑えるためである。また、例えば、部分領域に分割する際の分割幅は、並列に動作する複数の描画処理部による処理時間の差ができる限り小さくなるバンド単位を割り当てた並列化が望ましい。これは、描画処理領域を分割して並列処理を行う複数の描画処理部の各々が一部の遅い描画処理部の描画処理完了待ちとならずに稼働している状態をできるだけ長く保つためである。例えば、特許文献1では、描画処理領域を分割して並列処理を行う際に、スキャンライン毎に負荷予測値を算出し、負荷予測値に基づく分割と固定幅分割とを組み合わせて描画処理領域を割り当てる技術が開示されている。
特開2000−132350号公報
しかしながら、特許文献1に記載の技術は、負荷予測に基づいて複数の描画処理部に対してバランス良くバンド単位の割り当てを行うことで並列処理効率を向上できる反面、バンド単位の割り当てを行う前に新たに負荷予測処理が必要になるという課題がある。一般に、この負荷予測処理は、中間データ(DL)に含まれる描画処理対象の描画オブジェクトが有する特徴量(例えば、エッジやレベル)の存在頻度を取得し、これに単位当たりの処理時間を掛け合わせた合計値を負荷予測値として算出するものである。従って、複雑な描画データほど負荷予測処理に要する時間も長くなってしまい、場合によっては、負荷予測処理の完了待ちによって本来の描画処理開始が遅れてしまう可能性もある。また、負荷予測処理には、精度と速度のトレードオフがあるため、精度を向上するために実際の描画処理に近づけ過ぎると予測時間が長引き、予測処理を簡略化し過ぎると精度が低下するという課題もある。
本発明は上記従来例に鑑みて成されたもので、並列に実行される複数の描画処理の処理時間差の拡大を防止し、待ち時間を短縮して稼働率を高めることで処理効率を向上させ、ひいては描画所要時間を短縮できる画像形成装置及びその制御方法を提供することを目的とする。
前述した課題を解決するために、本発明の画像形成装置は、以下の構成を有する。
並列に動作可能な複数の描画手段を有し、前記複数の描画手段それぞれにより、所定高さの部分領域の画像データを、該部分領域を分割した描画対象領域ごとに分担して生成する画像形成装置であって、
前記部分領域のうち、前記部分領域を分割した前記描画対象領域のいずれかについて画像データの生成が最初に完了した時点で生成されていない画像データの量を、前記複数の描画手段に割り振り、前記時点で各描画手段により生成が完了しているそれぞれの画像データの量に、前記割り振られた量を加えた画像データの量を、次の部分領域についての前記描画対象領域として設定することを特徴とする。
本発明によれば、描画処理前に予測した負荷予測値に頼らずに描画処理中に実測した描画位置に基づいて複数の描画処理部の処理時間の差が小さくなるように制御することで、複数の描画処理部の各々に発生する待ち時間を短縮し、並列処理効率を向上できる。
第1の実施例の画像形成装置の構成を示す図である。 第1の実施例の画像形成装置のPDL印刷処理のデータフローを示す図である。 第1の実施例の描画処理に関わるブロック構成を示す図である。 第2の実施例の画像形成装置の構成を示す図である。 第2の実施例の描画処理に関わるブロック構成を示す図である。 第3の実施例の画像形成装置のPDL印刷処理のデータフローを示す図である。 PDL印刷処理を示すフローチャートである。 並列描画処理設定を示すフローチャートである。 並列描画処理を示すフローチャートである。 予測処理を伴う並列描画処理設定を示すフローチャートである。 予測結果を用いた並列描画処理を示すフローチャートである。 画像形成装置で扱うページ内での矩形領域の座標系の一例を示す図である。 並列描画処理時のタイミングチャートである。
(第1の実施例)
<画像形成装置の構成>
以下、本発明を実施するための形態について図面を用いて説明する。図1は、本発明の第1の実施例における画像形成装置の構成例を示す図である。図1に示すように、画像形成装置100は、コントローラ101、ネットワーク102、操作部103、読取部104、印刷部105を有する。ネットワーク102は、LANやWAN(公衆回線)等で実現され、ホストコンピュータやサーバ等の外部装置と画像形成装置100との間で画像データやデバイス情報を送受信する通信部である。操作部103は、ユーザによる操作を画像処理の制御情報として取得したり、ユーザに対して画像処理の制御情報を表示したりする処理部である。読取部(スキャナエンジン)104は、画像入力デバイスであって、光学センサ等を用いて画像形成装置100の内部に画像データを取り込む処理部である。印刷部(プリンタエンジン)105は、画像出力デバイスであって、画像形成装置100の内部の画像データを記録媒体に印字して出力する処理部である。
コントローラ101は、ネットワーク102、操作部103、読取部104、印刷部105と接続され、画像形成装置100全体の制御を行う制御部である。コントローラ101は、システムバス106、通信部I/F107、CPU108、RAM109、ROM110、HDD111、操作部I/F112、読取部I/F113、画像処理部114〜117、印刷部I/F118を有する。システムバス106は、コントローラ101を構成する各処理部を接続し、各処理部の間で画像データや制御情報の送受信を行うための処理部である。通信部I/F107は、例えばLANカード等で実現され、ネットワーク102を介してホストコンピュータやサーバ等の外部装置と画像形成装置100との間で画像データやデバイス情報を送受信するためのインタフェース部である。CPU108は、画像形成装置100全体を制御する処理部であって、特に、PDL印刷処理においては、ネットワーク102を介して外部装置から受信したPDLデータを解釈して、DL(ディスプレイリスト)と呼ばれる中間データに変換する。RAM(揮発性メモリ)109は、CPU108がシステム上で動作するためのワーク領域として使用されたり、画像データを一次記憶するためのバッファ領域として使用されたりする記憶部である。ROM(不揮発性メモリ)110は、CPU108がシステムを起動するためのプログラムが格納されている一次記憶部である。このプログラムは、画像形成装置100の起動時にRAM109に展開され、CPU108により実行される。HDD(ハードディスクドライブ)111は、画像形成装置100の内部で画像データを格納しておくための大容量記憶部である。操作部I/F112は、ユーザによる操作を画像処理の制御情報として取得したり、ユーザに対して画像処理の制御情報を表示したりするためのインタフェース部である。読取部I/F(スキャン画像処理部)113は、読取部(スキャナエンジン)104と接続され、読取部104から入力された画像データに対して、読取部104のデバイス特性に合わせた補正のための画像処理を行う画像処理部である。
描画処理部(RIP)114は、CPU108がPDLデータを元に生成したベクタ形式の中間データ(DL:ディスプレイリスト)を参照し、ラスタ形式の画像データとして描画する画像処理部である。ブロックRAM115は、描画処理部116から出力されたラスタ形式の画像データを一次保持するローカルメモリである。圧縮処理部116は、ブロックRAM115に一次保持されたラスタ形式の画像データに対して圧縮処理を行う画像処理部である。伸張処理部117は、圧縮処理部116で圧縮処理を行った圧縮画像データに対して伸張処理を行う画像処理部である。印刷部I/F(プリント画像処理部)118は、印刷部(プリンタエンジン)105と接続され、印刷部105のデバイス特性に合わせた補正のための画像処理を行った後に、印刷部105に対して画像データを出力する画像処理部である。なお、PDL印刷時の描画処理に関わる描画処理部114、ブロックRAM115、圧縮処理部116の動作については、図3を用いて詳細に説明する。
<PDL印刷処理のデータフロー>
次に、図2及び図12を用いて、画像形成装置100におけるPDL印刷処理のデータフロー及び画像データ単位の関係を説明する。図2は、画像形成装置100におけるPDL印刷処理のデータフローを示す図である。図12は、画像形成装置100で扱うページ内での矩形領域の座標系の例を示す図である。なお、図2のデータフローは、画像形成装置100の起動時にRAM109に展開されたプログラムを、CPU108により実行することで実現されるものとする。図2に示すように、画像形成装置100は、ホストコンピュータから送信されたPDLデータを通信部I/F107で受信し、ページ単位のPDLデータ201としてRAM109あるいはHDD111に記憶する。次に、CPU108は、受信したPDLデータ201を解釈し、ページ単位あるいはバンド単位の中間データ(DL)202を作成し、再びRAM109に記憶する。
ここで、バンドとは、図12(a)及び図12(b)で示すように、単一ページを副走査方向で分割することで形成される短冊状の矩形領域を意味する。1つのバンドは、通常は主走査方向の画素数よりも副走査方向の画素数の方が小さいが、この限りでない。一方で、ブロックとは、図12(a)及び図12(b)で示すように、画像形成装置100において予め定めた主走査方向の画素数と副走査方向の画素数とが等しい正方形タイル形状の矩形領域を意味する。図12(a)と図12(b)は、本実施例で描画処理を並列に実行する上で好適な画像データ単位であって、ブロックとバンドとが互いに包含される位置関係とならずに、かつ、ブロックの副走査方向の画素数(すなわちブロックの高さ)を、複数のバンドの高さ(すなわちバンド高さ)で分割したという関係を満たすものである。すなわち、副走査方向(高さ方向)についてのブロックの境界がバンドの境界と一致するよう、バンド分割は行われる。図12(a)と図12(b)の違いは、バンドの高さが固定であるか可変であるかの違いである。すなわち、図12(a)では、バンドの高さを固定とし、所定サイズのブロックの高さ相当の所定のライン数を均等に分割した複数のバンドで構成される(例えば、32画素×32画素のブロックに対して、高さ(32画素)を2分割した16ラインの2バンドで構成)。一方で、図12(b)では、バンドの高さを可変とし、ブロックの高さ相当の所定のライン数に対して偏りを持たせて分割した複数のバンドで構成される(例えば、32画素×32画素のブロックに対して、8ラインと24ラインの2バンドで構成)。具体的には、単一のページ1において、単一のブロック11の副走査方向の画素数(例えば、32画素)を複数のバンド11及びバンド12(例えば、16ラインと16ライン)のそれぞれのバンドの高さで分割した関係を満たすものである。また、単一のページ1において、単一のブロック21の副走査方向の画素数(例えば、32画素)を複数のバンド21及びバンド22(例えば、8ラインと24ライン)のそれぞれのバンドの高さで分割した関係を満たすものである。なお、以降の実施形態においては、図12(b)に示したページ内でのバンド単位、及び、ブロック単位に基づいて説明を行うものとする。図12の例では、主走査方向への一例のブロックの並び(例えばブロック11〜14)は、2つのバンド(例えばバンド11、12)に分割されているが、これは本実施例の描画処理部114が2つの画像データを並列処理する能力を有するためである。本実施例ではこれ以降も並列処理されるバンド数は2つとして説明するが、描画処理部114が3つ以上のバンドを並列処理する能力を有してもよく、その場合にはブロック高さを持つ部分領域のバンドへの分割は、描画処理部114が並列処理できるバンド(すなわち画像)の数に応じて行われる。このようにブロックの高さを並列処理できる数のバンドの幅で分割することで、後段の処理(たとえば圧縮処理)の対象となるブロックを効率的に生成することができる。
CPU108は、描画処理部114の並列動作に関わる描画処理設定情報203を作成し、描画処理部114内部のレジスタ等に設定する。描画処理部114には並列に実行可能な描画部を含んでおり、描画処理設定情報203には、たとえば、各描画部で生成するバンドの開始ラインと高さとを特定できる情報を含む。詳しくは図8で説明する。この設定を受けて、描画処理部(RIP)114は、中間データ(DL)202に含まれる描画データを参照し、単一ページ内の複数のバンド単位の矩形領域に対する描画処理を並列に実行して画像データ204を作成し、ブロックRAM115に一時保持する。続いて、圧縮処理部116は、ブロックRAM115に保持された複数のバンド単位の画像データを結合してブロック単位の画像データを読み出し、JPEG等の圧縮処理を行って圧縮画像データ205を作成し、再びRAM109あるいはHDD111に記憶する。更に、伸張処理部117は、ブロック単位で圧縮された圧縮画像データ205に対してJPEG等の伸張処理を行って単一ページを構成する全てのブロック単位を結合したページ単位の画像データ206を作成し、再びRAM109に記憶する。この後、印刷部I/F118は、RAM109に保持されたページ単位の画像データ206を読み出し、印刷部105のデバイス特性に合わせた補正のための画像処理を行った後に、印刷部105に対して画像データを出力する。これを受けて、印刷部(プリンタエンジン)105は、印刷部I/F118から転送された画像データを記録媒体に印字して出力する。
<PDL印刷時の描画処理>
次に、図3を用いて、本発明におけるPDL印刷時の描画処理の動作を説明する。図3は、RAM109に保持した中間データ(DL)202に対してバンド単位で並列に描画処理を実行した後に、ブロック単位の圧縮画像データ205を再びRAM109に記憶するまでの内部動作を示している。
図3は、図12(a)及び図12(b)のように、ブロック単位の矩形領域がバンド単位の矩形領域に包含されずに、ブロック単位の副走査方向の画素数を描画処理部114の並列動作数に基づく複数のバンド単位の高さで分割した場合における例である。すなわち、図3は、主走査方向について連続したブロックをまとめた矩形領域(これを部分領域とも呼ぶ。)を、並列実行可能な描画部の数のバンドに分割した場合の例を示す。図3において、画像形成装置100は、描画処理部114を構成する第1描画部401及び第2描画部402を用いて、単一ページ内の複数バンドを並列に描画する。第1描画部401は、単一ページ内の奇数バンド目を描画処理し、偶数バンド目を読み飛ばして描画オブジェクトのスキャンライン毎の位置座標更新のみを行う。第2描画部402は、単一ページ内の偶数バンド目を描画処理し、奇数バンド目を読み飛ばして描画オブジェクトのスキャンライン毎の位置座標更新のみを行う。このように、第1描画部401及び第2描画部402は、それぞれバンド単位で描画処理対象とする描画オブジェクトを取得するため、RAM109に一次記憶された中間データ(DL)202は、ページ単位でもバンド単位でも良い。次に、第1描画部401は、ブロックRAM115を構成するブロックRAM411に対して、図12(b)で示したバンド11及びバンド21などの奇数番目のバンドに対応するバンド単位の画像データを順に出力する。一方、第2描画部402は、ブロックRAM115を構成するブロックRAM411に対して、図12(b)で示したバンド12及びバンド22などの偶数番目のバンドに対応するバンド単位の画像データを順に出力する。続いて、圧縮処理部116の圧縮処理部421は、ブロックRAM411に一次記憶された図12(b)で示したバンド11及びバンド12を結合した矩形領域からブロック単位で画像データを順に読み出し、圧縮処理を実行した後にRAM109に転送する。ここで、ブロックRAM411は書き出しと読み出しを同時に実行可能なダブルバッファで構成している。従って、例えば、第1描画部401によるバンド21、第2描画部402によるバンド22の書き出し処理と圧縮処理部421によるバンド11及びバンド12を結合したバンド内のブロック11〜14の読み出し処理を同時に実行できる。
ここで、上記処理を実行するために、描画処理部114の各描画部たとえば第1描画部401は、描画位置保持部301と描画位置検知部303と描画領域制御部305とを有する。第2描画部402についても同様である。描画位置保持部301は、第1描画部401により生成中の描画位置を保持する。描画位置は、たとえば、描画対象の部分領域すなわちバンドにおいて画像データを生成中の主走査ラインの番号で示される。ただし、この描画位置は、描画処理対象のデータ量に対して、ある時点で生成中のデータ量の割合を決定するための指標値なので、その目的にかなうデータであれば特にラインの番号でなくともよいし、描画位置でなくともよい。また各描画部は、本実施例では2つのバッファに対して交互に生成したバンドの画像データを格納するため、描画位置保持部もまた、それぞれのバッファについて設けられることが望ましい。描画位置検知部303は、第2描画部402の描画位置保持部302を参照し、第2描画部402における現在の部分領域での描画位置を検知する。なお第2描画部402の描画位置検知部304は、第1描画部401の描画位置保持部301を参照し、第1描画部401における現在の部分領域での描画位置を検知する。描画領域制御部305は、検知した描画位置を取得し、この描画位置に基づいて、次に描画する部分領域(1ブロックの高さを持つバンド)のうち第1描画部により処理する割合を決定する。描画領域制御部306は、同様に第2描画部により処理する割合を決定する。なお、いずれかの描画領域制御部306が割合を決定すれば他方はその残りを処理することになるので、決定は描画処理を先に終えた方が行えばよい。
<ディスプレイリストと描画処理>
ここディスプレイリストと第1描画部401および第2描画部402それぞれによる描画処理についてもう少し詳しく説明する。中間データであるディスプレイリストには、たとえばページ単位のベクトルオブジェクトが、それぞれの位置やレベルを示す情報とともに含まれて(記述されて)いる。各描画部は、入力された描画オブジェクトを、その位置やレベルに応じた描画処理(スキャンラインレンダリング)を行って画像データ(ラスタデータ)を生成する。描画処理は大きく分けて、エッジ処理、レベル処理、フィル処理、コンポジット処理の4つに分かれている。
エッジ処理は大きく、エッジロード、X座標算出、エッジソート、エッジトラッキング、エッジ削除の5つの処理に分けられる。エッジロードとはディスプレイリストからエッジ情報をメモリ上へロードする処理のことをいう。エッジ情報はベクトルオブジェクトの輪郭を示すベクトル情報である。次にX座標算出処理を行ってロードされたエッジ情報に基づいて、スキャンライン毎にエッジの傾きや塗りルールを元に、当該スキャンラインにおけるエッジのX座標を算出する。処理中のスキャンラインに現れるエッジ情報はActiveEdgeList(AEL)と呼ばれるリンクリストで主走査方向にX座標昇順でソートされている。エッジ同士がクロスした場合や新たにエッジが出現/消滅した場合、AELのリンク情報をソートし直して更新する必要がありこれをエッジソートと呼んでいる。エッジソートが終わったAELはレベル処理部にX座標昇順でエッジおよびそのレベル情報を渡す処理を行っており、これをエッジトラッキングと呼んでいる。最後に描画が終了したエッジはエッジ削除処理により削除される。
次にレベル処理は大きくレベル追加、レベル削除、レベルソートの3つの処理に分けられる。レベル追加とは、エッジ処理から送られてきたエッジ情報に含まれたエッジの向きやクリップ情報を基に、当該エッジ情報が描画対象のエッジ情報であるか否かを判定し、描画対象だった場合ActiveLevelList(ALL)と呼ばれるリンクリストに追加する処理である。また、レベル削除処理は、レベル追加処理と逆で、エッジの向きやクリップ情報を基にそれまで描画対象だったエッジが描画対象でなくなった場合ALLから削除する処理のことを言う。ALLはレベル番号昇順に常にソートされており、レベルの追加や削除があった場合、レベルソートと呼ばれるALLのソート処理が行われる。これらの処理を行ったレベル情報はスパン単位でフィル処理に渡している。
次にフィル処理は大きく画像拡縮、画像回転、ピクセル生成という3つの処理に分けられる。ベクトルデータに含まれたビットマップ画像には、そのエッジの情報に加えて、拡大縮小や回転などのための指定をふくむことができる。画像拡縮はディスプレイリストに含まれているビットマップ画像に拡大率が指定されていた場合、指定に応じてフィルを生成する処理である。画像回転はディスプレイリストに含まれているビットマップ画像に回転情報が指定されていた場合、指定に応じてフィルを生成する処理である。ピクセル生成はディスプレイリストにある色値ともう一つのある色値と変化情報とが指定されていた場合、指定に応じてフィルを生成する処理である。
最後に、コンポジット処理では、レベル処理で確定したレベルの上下関係とフィル処理で生成したピクセルとを基に、ディスプレイリストに指定されている重ね合わせ処理を行って画像データ(ビットマップデータ)を生成して出力する。
以上の描画処理を、処理対象の先頭のスキャンライン(主走査ライン)から順に着目して着目ラインごとに行う。着目ラインについてコンポジット処理までが完了していれば、当該ラインについては描画処理が完了していることとなる。各描画部は、それぞれの着目ラインを描画位置保持部301、302に保持し、着目ラインを進める都度、その値を更新する。このようにして、ライン単位で画像データは生成される。
<PDL印刷処理>
図7は、PDL印刷処理を説明するためのコントローラ101により実行されるフローチャートである。まず、CPU108は、ホストコンピュータから送信されたPDLデータを通信部I/F107を介して受信し、ページ単位のPDLデータとしてRAM109あるいはHDD111に記憶する(S701)。次に、CPU108は、受信したPDLデータを解釈し(S702)、解釈した情報を元に中間データ(DL)を生成する(S703)。次に、CPU108は、描画処理部114による並列描画処理設定を実行する(S704)。S704については、図8のフローチャートを用いて別途説明する。次に、CPU108は、描画処理部114を制御して描画処理部114を構成する複数の描画部を用いた描画処理を実行する(S705)。S705については、図9のフローチャートを用いて別途説明する。次に、CPU108は、圧縮処理部116を制御して圧縮処理を実行した後に、RAM109に圧縮画像データを記憶する(S706)。次に、CPU108は、伸張処理部117を制御して、RAM109に記憶された圧縮画像データに対して伸張処理を実行した後に、再びRAM109に画像データを記憶する(S707)。次に、CPU108は、印刷部I/F118を制御してRAM109から印刷部105に対して画像データを転送し、印刷部105のデバイス特性に合わせた補正の画像処理を行った後に、印刷部105に対して画像処理後の画像データを転送する(S708)。その後、印刷部105は、印刷部I/F118から転送された画像データを記録媒体に印字して出力する(S709)。
<並列描画処理の初期設定>
図8は、並列描画処理の初期設定を説明するためのフローチャートである。まず、CPU108は、描画処理部114において並列処理を行う並列動作数、及び、画像処理部114の後処理で扱う画像データ単位として所定の部分領域を取得する(S801)。ここで、並列動作数は、例えば、描画処理部114が図3に示す構成の場合、第1描画部401と第2描画部402とが並列動作するので、並列動作数は2となる。また、描画処理部114による処理対象の部分領域は、画像処理部114の後処理としての圧縮処理部116で扱う画像データに対応して定まる画像データサイズを有する領域であって、例えば、32画素×32画素の正方形タイル形状をもつブロック単位の複数個分に対応するものとする。ここで、部分領域に対応する画像データサイズ分の記憶領域の容量は、ブロックRAM115のダブルバッファのように描画処理部114と圧縮処理部116の双方の処理を停止させることなく読み書きできるものとする。上記の例の場合、所定の部分領域は、ブロックの高さとページ単位の主走査幅とを持つ領域、たとえば32ラインで構成された領域となる。このため、部分領域のサイズは、ブロックサイズが後段の処理部たとえば圧縮処理部116の仕様により決まっているなら、処理対象のページのサイズによって決定できる。
次に、CPU108は、S801で取得したブロックの高さを、S801で取得した並列動作数で均等分割するように描画対象領域となるバンドの高さを設定する(S802)。例えば、32画素×32画素のブロック単位に対して、並列動作数は2なので、バンドの高さを32/2=16として、これを描画処理部114の内部レジスタに設定する。したがって、上記の例の場合、描画処理部114を構成する第1描画部401は、1ライン目から16ライン目までの16ライン分を1バンドとして描画対象領域の初期値とする。一方で、描画処理部114を構成する第2描画部402は、第1描画部401が担当するバンドの次のライン、すなわち17ライン目から32ライン目までの16ライン分を1バンドとして描画対象領域の初期値とする。このように、各描画部による描画対象領域のバンドを示す初期値として、たとえばバンドの先頭となるラインの番号とライン数とがそれぞれの描画部について設定される。なお、第1描画部と第2描画部とは、異なる部分領域に属するバンドを並列に描画処理することがあり得る。そのため、描画対象領域もまた並列に処理されている部分領域ごとに設定されるのが望ましい。たとえば本実施例では、描画処理部114は第1バッファと第2バッファの2つのバッファに交互に描画した部分領域を出力して格納する。そのため、最大で2つの部分領域が並列に処理され得る。そこで描画対象領域も、第1バッファと第2バッファのそれぞれに関連付けて設定されることが望ましい。上述したように各描画部の描画位置保持部もまた各部分領域に関連づけて保持されているのが望ましい。なお、以下の説明においては、描画対象領域および描画位置について、上述のようにバッファごとに関連付けられて保持される構成であっても、単にそれらの値が保持されるあるいは設定されるとだけ記載する場合がある。
<並列描画処理>
図9は、並列描画処理を説明するためのフローチャートである。以下、CPU108の制御に基づいて描画処理部114が動作するものとして説明する。まず、描画処理部114で並列に動作する各描画部の読み出し処理部は、CPU108から描画処理部114の内部レジスタに設定された中間データ(DL)の先頭アドレスを取得する(S901)。次に、描画処理部114は、S801でCPU108から設定された並列動作数と所定の部分領域を取得する(S902)。すなわち、上記の例の場合、並列動作数を2、部分領域のバンドの高さを32ラインとする。次に、描画処理部114における各描画部は、S802でCPU108から設定された描画対象領域の初期値を取得する(S903)。すなわち、上記の例の場合、第1描画部401が担当する描画対象領域の初期値は、1ライン目から16ライン目までの16ライン分となり、第2描画部402が担当する描画対象領域の初期値は、17ライン目から32ライン目までの16ライン分となる。次に、描画処理部114における各描画部は、S901で取得した中間データ(DL)の先頭アドレスから描画する部分領域内に含まれる描画オブジェクトを参照して、該当する描画オブジェクトをすべて取得する(S904)。次に、描画処理部114における各描画部は、取得した描画オブジェクトが、自身が担当する描画対象領域内であるか否かを判断し(S905)、描画対象領域内であれば(YES)、S906に遷移し、描画対象領域外でなければ(NO)、S907に遷移する。
次に、S906で、描画処理部114における各描画部は、出力先のブロックRAM115に空き領域があるか否かを判断し、空き領域が無ければ(NO)、S906で空き領域ができるまで待機し、空き領域があれば(YES)、S907に遷移する。本実施例では、ブロックRAM115には第1バッファと第2バッファという2つの領域が用意される。次に、S907で、描画処理部114における各描画部は、S904で取得した描画オブジェクトをレンダリングして対応する画像データを生成し、その描画処理結果の画像データをS906で検知したブロックRAM115の空き領域に出力する(S907)。上述したようにレンダリング処理はスキャンラインごとに進行し、出力される。出力に伴って描画中の描画部および出力中のバッファに対応した描画位置保持部に保持した生成中の着目スキャンラインの位置座標も更新される。一方で、S908に遷移した場合、描画処理部114の各描画部は、当該描画対象領域に含まれる描画オブジェクトのスキャンライン毎の位置座標のみを更新し、当該描画対象領域の描画処理は行わないで中間データ(DL)を読み飛ばす処理を行う。
S909で、描画処理部114の各描画部は、部分領域内で処理対象である次のスキャンラインが存在するかを判断し、存在すれば(YES)、S905に遷移して再び描画処理を繰り返し、存在しなければ(NO)、S910に遷移する。S909では、たとえば、処理が済んだ最後のスキャンラインのアドレスよりも、処理対象の先頭のスキャンラインのアドレスに処理対象のライン数を加えた値の方が大きくなれば、次のスキャンラインが存在しないと判定できる。S910で、描画処理部114の各描画部は、RAM109に記憶された中間データ(DL)に描画対象の次の部分領域があるか否かを判断し、次の部分領域があれば(YES),描画処理を繰り返すためにS911に遷移し、次の部分領域が無ければ(NO)、描画処理を終了する。
S911で、処理対象のバンド(以下対象バンドとも呼ぶ。)の描画処理を終えた描画処理部114の描画部は、他の描画部の現在の描画位置を検知する。例えば、S911において、第1描画部401が描画位置検知部303によって第2描画部402の描画位置保持部302を参照し、第2描画部における現在の部分領域での描画位置を検知する。ここでは、第2描画部402が担当する16ラインのうち、描画位置が8ライン目であったものとして説明する。ただし、検知対象は、まさにS911を実行している描画部(着目描画部とも呼ぶ。)と同じバッファにデータを出力している他の描画部である。換言すれば、着目描画部が処理している部分領域と同じ部分領域を処理している他の描画部による現在の描画位置を検知する。
次に、S912で、描画処理部114の各描画部は、自身の描画処理部の次の描画対象領域の割合を算出する。例えば、S912において、第1描画部401が描画領域制御部305によってS911で検知した描画位置を取得し、この描画位置に基づいて次の所定の部分領域としての32ラインに対しての割合を算出する。算出方法としては、例えば、前述した16ライン中8ライン目の描画位置に対して、第2描画部402の残り処理ライン数が8なので、次の32ラインと残り処理ライン数16−8=8を加算した上で再び均等分割したライン数を担当する。すなわち、次の32ラインの部分領域のうち、(8+32)/2=20ラインを次の第1描画部401の描画対象領域とする。これを一般的にいえば、着目描画部の次の描画対象領域=(残り処理ライン数+部分領域のライン数)/2によって次の描画対象領域が求められる。「残り処理ライン数」は、(他の描画部による描画対象領域のライン数−他の描画部による描画位置)であり、他の描画部による描画対象領域のサイズは、(部分領域のライン数−着目描画部による描画対象領域のライン数)で得られるから、着目描画部による次の描画対象領域=(部分領域のライン数−着目描画部による描画対象領域のライン数−他の描画部による描画位置+部分領域のライン数)/2で求められる。これに併せて、部分領域のライン数−着目描画部による次の描画対象領域が他の描画部による次の描画対象領域となる。上記数値例では、次の32ラインの部分領域のうち、32−20=12ラインが次の第2描画部402の描画対象領域となる。S913で、描画処理部114の各描画部は、描画領域制御部305によってS912で算出した結果の描画対象領域を再設定し、読み出し処理部と書き出し処理部に通知した後に、S904に遷移して後続の部分領域に対する描画処理を継続する。S913では、第1描画部は、着目描画部による次の描画対象領域としては、算出された値である例えば20ラインを設定する。一方、後から同一の部分領域の一部である描画処理を完了する第2描画部のために、第2描画部の次の描画対象領域である12ラインを求めるための値を、第1描画部の描画位置保持部301にセットしておく。上述の通り、第2の描画部もまた、着目描画部による次の描画対象領域を(部分領域のライン数−着目描画部による描画対象領域のライン数−他の描画部による描画位置+部分領域のライン数)/2で求めるため、(部分領域のライン数−着目描画部による描画対象領域のライン数−他の描画部による描画位置+部分領域のライン数)/2=(部分領域のライン数−着目描画部による次の描画対象領域)となるように、「他の描画部による描画位置」すなわち第1描画部による描画位置を設定しておく。上述した数値例では、(32−16−他の描画部による描画位置+32)/2=32−20、すなわち他の描画部による描画位置=−64+40+32−16+32=24を第2の描画部により描画位置として設定しておく。
なお、ある部分領域を分割した描画対象領域を先に処理し終えた描画部が、他の描画部の次の描画対象領域を、他の描画部に対してセットしてしまってもよい。ただしこの場合には、着目描画部は、既に次の描画対象領域の設定が終えていることを示す情報を他の描画部に対して示す必要があり、それを受けた他の描画部は、それ自身の次の描画対象領域の設定を行う必要がない。
他方、S911において、第2描画部402が描画位置検知部302によって、第1描画部401の描画位置保持部301を参照し、第1描画部における現在の部分領域での描画位置を検知する。ここでは、第1描画部401が担当する16ラインのうち、描画位置が16ライン目、すなわち、第2描画部402が担当する16ラインを描画完了するよりも先に、第1描画部401が担当する16ラインを描画完了していたものとして説明する。次に、S912において、第2描画部402が描画領域制御部305によってS911で検知した描画位置(上記数値例では24)を取得し、この描画位置に基づいて次の所定の部分領域としての32ラインに対しての割合を算出する。算出方法としては、前述したとおり、次の32ラインの部分領域のうち、(32−16−24+32)/2=12ラインが次の第2描画部402の描画対象領域となる。以上のS911〜S913によって、第1描画部401が担当する描画対象領域が16ライン(初期値)から20ラインに変更され、第2描画部402が担当する描画対象領域が16ライン(初期値)から12ラインに変更される。なお第1描画部が、第2描画部の次の描画対象領域を既にセットしている構成では、第2描画部は、それ自身の次の描画対象領域の設定を行う必要がない。
ここでS912における処理は、着目描画部が描画対象領域の画像データを生成し終えた時点で他方の描画部が生成し残した画像データの量を、複数の描画部に均等に割り振り、その時点で生成し終えた画像データの量に加え、その値をそれぞれの描画部による次の描画対象領域とするものである。
以上の手順を繰り返すことで、所定の部分領域としての32ラインを複数の描画部で分担して描画処理を実行する際の割合を変更できる。上記の例では、第1描画部401が第2描画部402よりも先に描画完了した場合に、次の描画対象領域の割合を増やすように制御した例を示したが、逆の場合も同様である。したがって、上記の制御を繰り返すことで、所定の部分領域を描画するうちの複数の描画部の処理時間の差を小さくし、描画処理完了までの全体の処理時間を短縮することができる。これについては、図13を用いて別途説明を加える。
図13は、並列描画処理時のタイミングチャートである。図13(a)は、図12(a)に対応し、ブロック高さの部分領域(例えば、バンド11とバンド12の組、バンド21とバンド22の組)を描画する際に、複数の描画部の各々が担当する描画対象領域の割合を制御せずに、たとえば部分領域を二等分した領域に固定した場合の概念図である。また、図13(b)は、図12(b)に対応し、ブロック高さの部分領域(例えば、バンド11とバンド12の組、バンド21とバンド22の組)を描画する際に、複数の描画部の各々が担当する描画対象領域の割合を、部分領域ごとに制御して変更した場合の概念図である。図13(a)で、第1描画部は、時刻T0〜T1でバンド11を第1バッファに出力し、時刻T1〜T2でバンド21を第2バッファに出力し、第1バッファが空いた時刻T2〜T4でバンド31を第1バッファに出力し、第2バッファが空いた時刻T4〜T6でバンド41を第2バッファに出力する。また、第2描画部は、時刻T0〜T1でバンド12を第1バッファに出力し、時刻T1〜T3でバンド22を第2バッファに出力し、時刻T3〜T7でバンド32を第1バッファに出力し、時刻T7〜T12でバンド42を第2バッファに出力する。また、圧縮処理部116は、時刻T1〜T2でブロック11〜14を第1バッファから取得し、時刻T3〜T4でブロック21〜24を第2バッファから取得する。更に、圧縮処理部116は、時刻T7〜T9でブロック31〜34を第1バッファから取得し、時刻T12〜T13でブロック41〜44を第2バッファから取得する。この時、圧縮処理部116は、図13(a)の網かけ部分の時刻T2〜T3、T4〜T7、T9〜T12で、第1描画部よりも遅い第2描画部からの出力待ち時間が発生している。図13(b)で、第1描画部は、時刻T0〜T1でバンド11を第1バッファに出力し、時刻T1〜T2でバンド21を第2バッファに出力し、時刻T2〜T6でバンド31を第1バッファに出力し、時刻T6〜T9でバンド41を第2バッファに出力する。また、第2描画部は、時刻T0〜T1でバンド12を第1バッファに出力し、時刻T1〜T3でバンド22を第2バッファに出力し、時刻T3〜T5でバンド32を第1バッファに出力し、時刻T5〜T10でバンド42を第2バッファに出力する。また、圧縮処理部116は、時刻T1〜T2でブロック11〜14を第1バッファから取得して圧縮し、時刻T3〜T4でブロック21〜24を第2バッファから取得して圧縮する。更に、圧縮処理部116は、時刻T6〜T8でブロック31〜34を第1バッファから取得して圧縮し、時刻T10〜T11でブロック41〜44を第2バッファから取得して圧縮する。この時、圧縮処理部116は、図13(b)の網かけ部分の時刻T2〜T3、T4〜T6、T8〜T10で、第1描画処理部または第2描画処理部のいずれか遅い描画処理部からの出力待ち時間が発生している。図13(a)と図13(b)とを比べると、ブロック高さの部分領域を描画する際に、複数の描画部の各々が担当する描画対象領域の割合を制御することで、複数の描画部の各々に発生する待ち時間を短縮し、並列処理効率を向上できることが分かる。
本実施例をまとめると、画像形成装置100は、並列に動作可能な複数の描画部を含む描画処理部114を有しており、複数の描画部それぞれにより、所定高さ(例えばブロック高さ)の部分領域の画像データを、部分領域を分割した描画対象領域(バンド)ごとに分担して生成する。ここで部分領域のうち、部分領域を分割した前記描画対象領域のいずれかについて画像データの生成が最初に完了した時点で生成されていない画像データの量を、複数の描画部に割り振り、その時点で各描画部により生成が完了しているそれぞれの画像データの量に、割り振られた量を加えた画像データの量を、次の部分領域についての描画対象領域としてそれぞれの描画部に設定する。このようにして、各描画部による処理時間の均等化を図っている。
以上述べたように、本発明によれば、描画処理中に実測した描画位置に基づいて複数の描画部の処理時間の差が小さくなるように動的に制御することで、複数の描画部の各々に発生する待ち時間を短縮し、並列処理効率を向上できる。
なお上記実施例では、バッファは2つ使用しているが、1つであっても本実施例を適用することができる。その場合には、描画位置保持部も描画対象領域も各描画部についてひとつあれば良い。
(変形例1)
第1の実施例では、描画処理部114で生成した画像データがRAM109とは異なるローカルメモリとしてのブロックRAM115に一時保持したが、本変形例では、描画処理部114で生成した画像データを直接RAM109に格納する構成例を示す。
図4は、本変形例における画像形成装置の構成例を示す図である。図4は、図1で説明した構成の変形例であるため、図1と共通する部分の説明を省略し、図1との差分のみを説明する。図4において、描画処理部(RIP)114は、システムバス106に対してデータ入出力を行うバス接続構成をとる。この他に、画像回転等の画像データの編集を行う編集処理部119が同様に接続されていても良い。更に、圧縮処理部116、及び、伸張処理部117が図1と同様に接続されている。
次に、図5を用いて、本実施例におけるPDL印刷時の描画処理の動作を説明する。図5は、RAM109に一時保持した中間データに対してバンド単位で並列に描画処理を実行し、再びRAM109に画像データを格納するまでの内部動作を示している。図5において、画像形成装置100は、描画処理部114を構成する第1描画部401及び第2描画部402を用いて、単一ページ内の複数バンドを並列に描画する。第1描画部401は、単一ページ内の奇数バンド目を描画処理し、偶数バンド目を読み飛ばして描画オブジェクトのスキャンライン毎の位置座標更新のみを行う。第2描画部402は、単一ページ内の偶数バンド目を描画処理し、奇数バンド目を読み飛ばして描画オブジェクトのスキャンライン毎の位置座標更新のみを行う。このように、第1描画部401及び第2描画部402は、それぞれバンド単位で描画処理対象とする描画オブジェクトを取得するため、RAM109に一次記憶された中間データ(DL)202は、ページ単位でもバンド単位でも良い。次に、第1描画部401は、RAM109を構成するに対してバンド単位の画像データを順に出力する。一方、第2描画部402は、RAM109に対してバンド単位の画像データを順に出力する。描画処理部114によってRAM109に格納された画像データは、実現する機能に応じて編集処理部119、印刷部I/F、通信部I/F等のコントローラ101内部の他の処理部によって後続の画像処理が実行される。ここで、RAM109における画像データは書き出しと読み出しを同時に実行可能なダブルバッファで構成している。従って、例えば、第1描画部401と第2描画部402による書き出し処理とコントローラ101内部の他の処理による後続の画像処理のための読み出し処理を同時に実行できる。
以上述べたように、本発明の第2の実施例によれば、描画処理中に実測した描画位置に基づいて複数の描画処理部の処理時間の差が小さくなるように制御することで、複数の描画処理部の各々に発生する待ち時間を短縮し、並列処理効率を向上できる。
(変形例2)
第1の実施例では、描画処理部114の内部で実測の描画位置に基づく描画対象領域の割合の変更を行ったが、本変形例では、スキャンライン毎に予測した負荷予測値が与えられた場合の組み合わせによる構成例を示す。
図6は、画像形成装置100におけるPDL印刷処理のデータフローを示す図である。図6は、図2で説明した図における変形例であるため、図2と共通する部分の説明を省略し、図2との差分のみを説明する。図6において、CPU108は、受信したPDLデータ201を解釈しページ単位あるいはバンド単位の中間データ(DL)202を作成すると共に、スキャンライン毎に負荷予測値を算出し、負荷予測情報としてRAM109に格納する。負荷予測情報としては、たとえばラスタラインごとのエッジの数などを採用することができる。描画処理部114は、中間データ(DL)202に含まれる描画データを参照し、単一ページ内の複数のバンド単位の矩形領域に対する描画処理を並列に実行して画像データ204を作成し、RAM109に格納する。ここで、描画処理部114は、実測の描画位置だけでなく、現在の描画対象領域と次の部分領域の負荷予測値に基づいて、複数の描画処理部に対する描画対象領域の割合を変更する。
図10は、予測処理を伴う並列描画処理設定を説明するための、CPU108により実行される処理のフローチャートである。図10は、図8で説明した図における変形例であるため、図8と共通する部分の説明を省略し、図8との差分のみを説明する。図10におけるS1001は、図8におけるS801と全く同様である。S1002で、CPU108は、部分領域内のスキャンライン毎の負荷予測値を算出する。算出方法としては、例えば、所定の部分領域として、簡単のために、ページ単位の主走査幅を持つ8ラインを考えた場合、各ラインの負荷予測値を相対値としての重み付け係数(例えば、1:1:2:3:4:2:5:4)を算出する。次に、S1003で、CPU108は、負荷予測値を用いて重み付けた上で、並列動作数で分割した値を部分領域の初期値に設定する。例えば、上記の例の場合、8ライン分の重み付け係数の総和は1+1+2+3+4+2+5+4=22となるので、これを並列動作する複数の描画部(例えば、2個)で均等分割するように担当する描画対象領域を設定する。たとえば上記数値例では、不可予測値の総和は22であり、並列動作数2でそれを分割すると、1つの描画部の負荷は11(=22/2)となる。そこで、1ラン目から5ライン目までの負荷予測値の合計値が1+1+2+3+4=11となるので、この5ライン分を第1描画部401の描画対象領域とする。一方、負荷予測値の総計が2+5+4=11(=22/2)となる残りの3ライン分を第2描画部402の描画対象領域として設定する。上記数値例のように、各描画部による描画対象ラインの負荷予測値の総和が同一になるとは限らない。負荷予測値が同一となるように分割できない場合には、それぞれの負荷予測値が最も均等に近くなるように分割する。
図11は、予測結果を用いた並列描画処理を説明するためのフローチャートである。図11は、図9で説明した図における変形例であるため、図9と共通する部分の説明を省略し、図9との差分のみを説明する。図11におけるS1101〜S1111は、図9におけるS901〜S911と全く同様である。S1112で、S1110で検知した他の描画処理部における残りのライン数と次の部分領域の負荷予測値を参照して、図10のS1002を用いて示した算出方法と同様の重み付け計算を行う。例えば、残りライン数分の重み付け係数の総和として4、次の部分領域の重み付け係数の総和として図10の例と全く同様として22の値をそれぞれ算出する。次に、S1113で、S1112で算出した4+22=26を並列動作する複数の描画部で均等分割するように設定する。すなわち、例えば、1+1+2+3+4+2=13(=26/2)に対応する6ライン分を次の第1描画部401の描画対象領域とし、[残り4+]5+4=13(=26/2)に対応する2ライン分を次の第2描画部402の描画対象領域とする。S1114で、S1113で算出した割合に従って複数の描画部の各々の描画領域制御部が、描画対象領域とするライン数を制御する。上記の制御を繰り返すことで、所定の部分領域を描画するうちの複数の描画部の処理時間の差を小さくし、描画処理完了までの全体の処理時間を短縮することができる。
以上述べたように、本変形例によれば、描画処理中に実測した描画位置と負荷予測値に基づいて複数の描画処理部の処理時間の差が小さくなるように制御することで、複数の描画処理部の各々に発生する待ち時間を短縮し、並列処理効率を向上できる。
(変形例3)
第1の実施例では、ページ単位の主走査幅を持つバンド単位の部分領域、更には部分領域を構成する描画対象領域を複数の描画処理部に割り当てたが、図12(c)に示すように、ページ単位を主走査方向で分割したバンド単位で順次描画出力しても良い。この場合、ブロックRAM115を構成するバッファ容量を小さく抑えることができる。
(変形例4)
第1の実施例では、並列動作数が2の例を示したが、3以上の場合でも同様の考え方で割り当てを変更できる。例えば、並列動作数が3の場合、1番目に描画処理が完了した描画部が、他の2つの描画部の描画位置をそれぞれ参照し、1番目と3番目の間で割り当てを変更し、2番目は均等分割に相当する割り当てを維持する方法が考えられる。同様に、例えば、並列動作数が4の場合、1番目と4番目の間で割り当てを変更し、2番目と3番目の間で割り当てを変更する方法が考えられる。
この場合には、たとえば最先に描画処理を完了した描画部を上記第1の実施例の第1描画部とし、最先に描画処理を完了した描画部が他の描画部の描画位置を参照し、最も残りライン数が多い描画部を第2の描画部として、上記第1の実施例を適用すればよい。残りライン数を知るためには、たとえば、各描画部について設定した描画対象領域も、他の描画部からアクセス可能に構成しておけばよい。もちろんこれは一例に過ぎず、他の構成をとることも可能である。
(変形例5)
変形例2において、負荷予測処理そのものの処理負荷が重く、本来の描画処理の開始が遅延する可能性がある場合は、負荷予測値を用いずに第1の実施例に記載の実測した描画位置に基づく割り当ての変更のみを実施するように制御しても良い。
(変形例6)
第1の実施例では、一方の描画部による対象バンドの描画処理が完了した時点における他方の描画部による処理の進捗を、対象バンドの処理済みライン数を参照することで決定していた。これに対して、進捗を例えば時間で決定することもできる。たとえば各描画部は、それぞれの対象バンドの処理を開始時にタイマをスタートさせ、終了時にタイマの値を読み取ることで、描画処理に要した時間を測定する。そして、全描画部によるバンドの描画処理が完了したなら、測定した時間差をライン数の差に換算し、第1の実施例またはその変形例と同様の手順で、次の対象バンドの高さを決定する。たとえば、先に対象バンドの処理を完了させた描画部による対象バンド高さをHf、処理時間をTf、後に対象バンドの処理を完了させた描画部による対象バンド高さをHs、処理時間をTs、測定した前記時間差をΔTとする。先に対象バンドの処理を完了させた描画部による次の対象バンド高さHfnはたとえば、Hfn=Hf(1+(ΔT/2)*(1/Tf))とする。後に対象バンドの処理を完了させた描画部による次の対象バンド高さHsnはたとえば、Hsn=Hs−(Hfn−Hf)とする。ここでHf+Hs=Hfn+Hsn=ブロック高さである。
もちろんこれは一例に過ぎないが、このように処理負荷の空間的な指標値ではなく時間的な指標値に基づいて、各描画部による描画処理の完了のタイミングのずれができるだけ小さくなるよう、各描画部による処理量を分配することもできる。
[その他の実施例]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
100 画像形成装置、108 CPU、109 RAM、114 描画処理部、401 第1描画処理部、402 第2描画処理部

Claims (13)

  1. 並列に動作可能な複数の描画手段を有し、前記複数の描画手段それぞれにより、所定高さの部分領域の画像データを、該部分領域を分割した描画対象領域ごとに分担して生成する画像形成装置であって、
    前記部分領域のうち、前記部分領域を分割した前記描画対象領域のいずれかについて画像データの生成が最初に完了した時点で生成されていない画像データの量を、前記複数の描画手段に割り振り、前記時点で各描画手段により生成が完了しているそれぞれの画像データの量に、前記割り振られた量を加えた画像データの量を、次の部分領域についての前記描画対象領域として設定することを特徴とする画像形成装置。
  2. 前記複数の描画手段はそれぞれ、
    前記部分領域において前記複数の描画手段が生成中の位置を保持する保持手段と、
    前記部分領域において前記複数の描画手段のそれぞれが、他の描画手段が生成中の位置を検知する検知手段と
    を有し、
    前記描画対象領域の画像データの生成を最初に完了した描画手段が、他の描画手段の前記保持手段により保持された生成中の位置を前記検知手段により検知することで、前記部分領域を分割した前記描画対象領域のいずれかについて画像データの生成が最初に完了した時点で生成されていない前記画像データの量を決定することを特徴とする請求項1に記載の画像形成装置。
  3. 前記複数の描画手段により生成された前記部分領域の画像データを記憶する記憶手段と、
    前記記憶手段に記憶された画像データを読み出す読み出し手段とを更に有し、
    前記読み出し手段は、前記複数の描画手段により前記部分領域の画像データが生成されたときに前記記憶手段により記憶された画像データを読み出すことを特徴とする請求項1又は2に記載の画像形成装置。
  4. 前記記憶手段には、前記部分領域を記憶する少なくとも二つの領域が含まれ、
    前記複数の描画手段により生成された部分領域の画像データは前記少なくとも二つの領域に、交互に記憶されることを特徴とする請求項3に記載の画像形成装置。
  5. 前記複数の描画手段は、オブジェクトにより記述された中間データから前記画像データを生成することを特徴とする請求項1乃至4のいずれか一項に記載の画像形成装置。
  6. 前記画像データはラスタ形式の画像データであり、前記複数の描画手段は、ライン単位で画像データを生成することを特徴とする請求項1乃至5のいずれか一項に記載の画像形成装置。
  7. 前記複数の描画手段による描画データを生成する処理の負荷予測値を前記ライン単位で求める手段を更に有し、
    前記複数の描画手段は、前記描画対象領域の画像データの各ラインに前記負荷予測値により重み付けして重み付けした画像データの量を決定し、前記画像データの量として、前記負荷予測値により重み付けした画像データの量を用いることを特徴とする請求項6に記載の画像形成装置。
  8. 前記部分領域は、ページを均等な高さに分割した領域であることを特徴とする請求項1乃至7のいずれか一項に記載の画像形成装置。
  9. 前記部分領域は、ページを均等な高さ及び幅に分割した領域であることを特徴とする請求項1乃至8のいずれか一項に記載の画像形成装置。
  10. 前記複数の描画手段として、2つの描画手段を有し、
    前記2つの描画手段のそれぞれにより、前記部分領域を高さ方向に更に分割した描画対象領域の画像データを生成することを特徴とする請求項8又は9に記載の画像形成装置。
  11. 前記部分領域の画像データを圧縮する圧縮手段を更に有することを特徴とする請求項1乃至10のいずれか一項に記載の画像形成装置。
  12. 並列に動作可能な複数の描画手段を有し、前記複数の描画手段それぞれにより、所定高さの部分領域の画像データを、該部分領域を分割した描画対象領域ごとに分担して生成する画像形成装置の制御方法であって、
    前記部分領域のうち、前記部分領域を分割した前記描画対象領域のいずれかについて画像データの生成が最初に完了した時点で生成されていない画像データの量を、前記複数の描画手段に割り振り、前記時点で各描画手段により生成が完了しているそれぞれの画像データの量に、前記割り振られた量を加えた画像データの量を、次の部分領域についての前記描画対象領域として設定することを特徴とする画像形成装置の制御方法。
  13. コンピュータにより請求項12に記載の画像形成装置の制御方法を実行させるためのプログラム。
JP2015037295A 2015-02-26 2015-02-26 画像形成装置及びその制御方法 Expired - Fee Related JP6445899B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015037295A JP6445899B2 (ja) 2015-02-26 2015-02-26 画像形成装置及びその制御方法
US15/045,568 US9600747B2 (en) 2015-02-26 2016-02-17 Image forming apparatus and control method that execute a plurality of rendering processing units in parallel

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015037295A JP6445899B2 (ja) 2015-02-26 2015-02-26 画像形成装置及びその制御方法

Publications (3)

Publication Number Publication Date
JP2016159437A JP2016159437A (ja) 2016-09-05
JP2016159437A5 JP2016159437A5 (ja) 2018-04-12
JP6445899B2 true JP6445899B2 (ja) 2018-12-26

Family

ID=56799128

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015037295A Expired - Fee Related JP6445899B2 (ja) 2015-02-26 2015-02-26 画像形成装置及びその制御方法

Country Status (2)

Country Link
US (1) US9600747B2 (ja)
JP (1) JP6445899B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6544905B2 (ja) * 2014-09-29 2019-07-17 キヤノン株式会社 画像処理装置、画像処理方法、プログラム
JP6772020B2 (ja) 2016-10-06 2020-10-21 キヤノン株式会社 画像処理装置、画像処理装置の制御方法、及びプログラム
JP6876247B2 (ja) * 2017-03-09 2021-05-26 コニカミノルタ株式会社 画像形成装置
KR102663537B1 (ko) 2019-01-31 2024-05-08 삼성전자 주식회사 전자 장치 및 이미지 처리 방법
CN113986409B (zh) * 2021-09-14 2024-08-06 阿里巴巴(中国)有限公司 信息交互方法、装置、设备及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132350A (ja) * 1998-10-21 2000-05-12 Fuji Xerox Co Ltd 描画処理装置
US7266254B2 (en) * 2002-02-13 2007-09-04 Canon Kabushiki Kaisha Data processing apparatus, image processing apparatus, and method therefor
US20040246502A1 (en) * 2003-06-09 2004-12-09 Jacobsen Dana A. Rendering sub-sections
US7277095B2 (en) * 2004-03-16 2007-10-02 Canon Kabushiki Kaisha Method of rendering graphical objects
JP3892016B2 (ja) * 2005-02-23 2007-03-14 株式会社ソニー・コンピュータエンタテインメント 画像処理装置および画像処理方法
JP4408836B2 (ja) * 2005-05-30 2010-02-03 キヤノン株式会社 画像処理装置及びその制御方法、プログラム
JP5300317B2 (ja) 2008-05-09 2013-09-25 キヤノン株式会社 画像処理装置及びその制御方法
JP2011158951A (ja) * 2010-01-29 2011-08-18 Konica Minolta Business Technologies Inc 画像処理装置、プログラム及び画像処理方法
JP2012081626A (ja) * 2010-10-08 2012-04-26 Ricoh Co Ltd 画像形成装置、画像処理方法、プログラム
JP2012254583A (ja) * 2011-06-09 2012-12-27 Canon Inc 画像形成装置、画像形成方法、及びコンピュータプログラム
JP6128782B2 (ja) * 2012-09-07 2017-05-17 キヤノン株式会社 画像処理装置、画像処理装置の制御方法、プログラム、及び記憶媒体

Also Published As

Publication number Publication date
US9600747B2 (en) 2017-03-21
US20160253129A1 (en) 2016-09-01
JP2016159437A (ja) 2016-09-05

Similar Documents

Publication Publication Date Title
JP6445899B2 (ja) 画像形成装置及びその制御方法
JP6029344B2 (ja) 画像処理装置、画像処理方法、プログラム
US8212815B2 (en) Drawing apparatus, drawing program, and drawing method
US10762401B2 (en) Image processing apparatus controlling the order of storing decompressed data, and method thereof
JP5675445B2 (ja) 情報処理装置、情報処理装置の制御方法、及びコンピュータプログラム
JP2017024321A (ja) 画像処理装置、画像形成装置及び画像処理時間予測方法及びプログラム
JP6544905B2 (ja) 画像処理装置、画像処理方法、プログラム
KR101945581B1 (ko) 화상 처리 장치, 화상 처리 방법, 및 저장 매체
JP2014002591A (ja) 画像処理装置、画像処理方法、コンピュータプログラム
CN107203354B (zh) 图像处理设备及其控制方法
JP6904717B2 (ja) 画像処理装置、その制御方法、およびプログラム
JP6902861B2 (ja) 符号化装置、符号化方法、復号装置、復号方法および生成方法
JP6772020B2 (ja) 画像処理装置、画像処理装置の制御方法、及びプログラム
JP2014209711A (ja) 原稿をコピー可能な画像処理装置、画像処理方法、およびプログラム
JP2013123118A (ja) 画像処理装置、画像処理方法、およびプログラム
JP2016206934A (ja) 画像処理装置、画像処理方法及びプログラム
JP6679329B2 (ja) 印刷時間予測装置、印刷時間予測方法、およびプログラム
JP2017087514A (ja) 画像処理装置、画像処理方法、およびプログラム
JP2016052724A (ja) 画像処理装置、画像処理方法、およびプログラム
JP2021022024A (ja) 画像処理装置、画像処理方法およびプログラム
JP4840033B2 (ja) 画像処理プログラムおよび画像処理装置
JP2002158852A (ja) 画像処理装置
JP2009154546A (ja) 画像処理装置及び画像処理方法
JP2017001387A (ja) 情報処理装置、情報処理方法、およびプログラム
JP2002337398A (ja) 画像処理装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180226

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181102

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181031

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181130

R151 Written notification of patent or utility model registration

Ref document number: 6445899

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees