画像処理方法及び画像処理装置とその制御方法
【課題】 複数のプロセッサに対して適切な負荷分散を実現することによって、入力される画像データの傾向に依存せず高速に画像処理可能な画像処理方法及び画像処理装置とその制御方法を提供する。
【解決手段】 1つの画像領域の画像処理を複数のプロセッサで分担して行う画像処理装置で、入力される前記画像領域でのピクセル情報の重ね合わせの傾向を解析し、解析結果に基づいて、複数のプロセッサで行う処理の分担を決定し、決定した処理の分担に従って、複数のプロセッサへの処理の分担を制御する。例えば、重ね合わせる各レイヤのピクセル情報の生成処理を行う第1プロセッサと、生成したピクセル情報を重ね合わせる第2プロセッサである場合に、重ね合わせ処理の有無や、重ねあわせ処理の複雑度や、重ねあわせ処理を行う領域の広さを解析し、第1プロセッサと第2プロセッサの処理の分担や通信方法を制御する。
【解決手段】 1つの画像領域の画像処理を複数のプロセッサで分担して行う画像処理装置で、入力される前記画像領域でのピクセル情報の重ね合わせの傾向を解析し、解析結果に基づいて、複数のプロセッサで行う処理の分担を決定し、決定した処理の分担に従って、複数のプロセッサへの処理の分担を制御する。例えば、重ね合わせる各レイヤのピクセル情報の生成処理を行う第1プロセッサと、生成したピクセル情報を重ね合わせる第2プロセッサである場合に、重ね合わせ処理の有無や、重ねあわせ処理の複雑度や、重ねあわせ処理を行う領域の広さを解析し、第1プロセッサと第2プロセッサの処理の分担や通信方法を制御する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は画像処理方法及び画像処理装置とその制御方法に関する。特に、複数のプロセッサ構成における、データ傾向に応じて最適な処理分散を実現する画像処理方法及び画像処理装置とその制御方法に関連するものである。
【背景技術】
【0002】
近年、プリンタの高画質化に伴い、複雑な重ねあわせ処理や透過処理を持った画像が普及してきている。特に、Adobe社が提唱するPDFやマイクロソフト社が提唱するXPS等では、オブジェクト同士の複雑な透過処理を実現しており、複雑な演算処理などを必要とする。一方、上述した複雑な演算は行わない従来の簡易なデータも根強く使用されており、様々な傾向のデータが使用されるようになってきている。
【0003】
また近年、画像形成処理の高速化を実現するため、様々なリソースの並列化技術が提案されてきている。特にプロセッサを複数保持することにより、処理の並列化を実現し高速化を実現する技術が提案されてきている。
【0004】
特許文献1では、複数のプロセッサの処理状況に応じてRIP(画像展開)処理/UCR(下色除去)処理/圧縮処理の処理分担を動的に切り替える技術が提案されている。
【特許文献1】特開2004-326307公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかし、上記の従来技術ではRIP処理の細かい処理分担を実現することが出来ず、データの傾向に応じたプロセッサ負荷の平滑化を実現することが出来ない。特に近年、前述したように複雑な透過処理を要求するデータや、簡易なデータなど様々な傾向のデータが普及してきているため、データの傾向に最適なRIP処理自体の処理分担を実現することが求められるようになってきている。
【0006】
本発明は、前述した問題点を解決し、複数のプロセッサに対して適切な負荷分散を実現することによって、入力される画像データの傾向に依存せず高速に画像処理可能な画像処理方法及び画像処理装置とその制御方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決する本発明の画像処理装置は、以下に示す構成を備える。
【0008】
1つの画像領域の画像処理を複数のプロセッサで分担して行う画像処理装置であって、入力される前記画像領域でのピクセル情報の重ね合わせの傾向を解析する解析手段と、前記解析手段の解析結果に基づいて、複数のプロセッサで行う処理の分担を決定する決定手段と、前記決定手段が決定した処理の分担に従って、前記複数のプロセッサへの処理の分担を制御する制御手段とを有することを特徴とす。ここで、前記複数のプロセッサは、前記画像領域で重ね合わせる各レイヤのピクセル情報の生成処理を行う第1プロセッサと、前記第1プロセッサの生成したピクセル情報を重ね合わせる第2プロセッサである。かかる構成において、入力される画像データの傾向によらず複数のプロセッサへの適切な処理分散を実現することが可能となる。
【0009】
また、本発明の画像処理装置の制御方法は、1つの画像領域の画像処理を複数のプロセッサで分担して行う画像処理装置の制御方法であって、入力される前記画像領域でのピクセル情報の重ね合わせの傾向を解析する解析工程と、前記解析工程での解析結果に基づいて、複数のプロセッサで行う処理の分担を決定する決定工程と、前記決定工程で決定した処理の分担に従って、前記複数のプロセッサへの処理の分担を制御する制御工程とを有することを特徴とする。
【0010】
また、本発明の画像処理方法は、1つの画像領域の画像処理を複数のプロセッサで分担して行う画像処理方法であって、入力される前記画像領域でのピクセル情報の重ね合わせの傾向を解析する解析工程と、前記解析工程での解析結果に基づいて、前記複数のプロセッサへの処理の分担を制御する制御工程とを有することを特徴とする。
【0011】
また、本発明の画像処理装置は、キュー方式のインタフェースで接続される第1プロセッサと第2プロセッサを用いて画像処理を行う画像処理装置であって、画像の重ね合わせ処理が存在しない場合、第1プロセッサから第2プロセッサにイメージをピクセル順に出力させ、画像の重ね合わせ処理が存在する場合、第1プロセッサから第2プロセッサにイメージを交互に出力させる制御手段を有することを特徴とする。
【発明の効果】
【0012】
以上説明したように、本発明によって、入力される画像データの傾向に対応して、複数のプロセッサの適切な負荷分担を実現することが可能となる。特に、複雑な重ねあわせ処理や透過処理が存在するデータや、そうでないデータであってもデータを解析し、それぞれにあった処理分担を実現することにより、入力される画像データの傾向に依存せず高速に処理を実現することが可能となる。
【0013】
また処理分担を行うことによるオーバヘッドにおいても、複数のプロセッサの通信方法や使用するリソースの切り替えも適切に選択することにより、処理の軽減が可能となり、高速化が可能となる。
【発明を実施するための最良の形態】
【0014】
以下、図面を参照して本発明をその好適な実施形態を、添付図面に従って詳細に説明する。なお、以下の実施形態では、本発明をプリンタ制御システムに適用した場合の例を示す。しかしながら、本発明の技術思想は、プリンタ制御システムに限定されず、他のシステムにおける複数のプロセッサによる並列処理の高速化のも適用が可能である。例えば、本発明に適用されるソフトウェアは、プリンタ制御システムに限ったものではなく、ワープロ(ワードプロセッサ)系ソフトウェア、表計算系ソフトウェア、作図系ソフトウェア等に幅広く応用可能である。これらも本発明に含まれる。
【0015】
<本実施形態のプリンタ制御システムの構成例>
図1は、本実施形態に係るプリンタ制御システムの構成例の概略を示す図である。ここでは、本実施形態を適用する画像処理装置であるプリンタとして、レーザービームプリンタの例を説明する。しかしながら、本実施形態を適用するプリンタは、レーザービームプリンタに限られるものではなく、インクジェットプリンタや他のプリント方式のプリンタでも良いことは言うまでもない。
【0016】
図1において、データ処理装置101は、例えば、パソコン等のコンピュータであり、画像処理装置用の制御コードの供給源、あるいはプリンタの制御装置として機能する。
【0017】
レーザービームプリンタ102は、本実施形態の画像処理装置であり、プリンタコントローラ103、プリンタエンジン105、及びパネル部104を有する。
【0018】
プリンタコントローラ103は、データ処理装置101から供給される画像処理装置用の制御コード(例えば、ESCコード、ページ記述言語、バンド記述言語等)中の画像情報に基づいて、ページ毎にラスタデータを生成し、プリンタエンジン105に送出する。
【0019】
プリンタエンジン105は、プリンタコントローラ103から供給されるラスタデータに基づいて、感光ドラム上に潜像を形成し、その潜像を記録媒体上に転写・定着(電子写真方式)することにより画像を記録する。
【0020】
パネル部104は、ユーザインタフェースとして使用される。ユーザは、パネル部104を操作することにより、所望の動作を指示することができる。また、パネル部104には、レーザービームプリンタ102の処理内容や、ユーザへの警告内容を表示する。
【0021】
<レーザビームプリンタの構成例>
(プリンタエンジンの構成例)
図2は、タンデム方式のカラーレーザビームプリンタ102のプリンタエンジン105の構成例を説明する断面図である。
【0022】
図2において、201はプリンタ筐体である。202は、ユーザが各種指示を与えるためのスイッチ、メッセージやプリンタの設定内容等を表示するためのLED表示器やLCD表示器等が配された操作パネルであり、図1に示すパネル部104の一態様である。203はボード収容部であり、ビデオコントローラ103及びプリンタエンジン105の電子回路部分を構成するボードを収容する。
【0023】
220は、用紙(記録媒体)Sを保持する用紙カセットであり、不図示の仕切り板によって電気的に用紙サイズを検知する機構を有する。221は、カセットクラッチであり、用紙カセット220上に載置された用紙Sの最上位の一枚を取り出して、取り出した用紙Sを不図示の駆動手段から伝達される駆動力によって給紙ローラ222まで搬送するカムを有する。このカムは、給紙の度に間欠的に回転し、1回転に対応して1枚の用紙Sを給紙する。223は用紙検知センサで、それぞれ用紙カセット220に保持されている用紙Sの量を検知する。給紙ローラ222は、用紙Sの先端部をレジストシャッタ224まで搬送するローラである。224は、レジストシャッタであり、用紙Sを押圧することにより給紙を停止することができる。
【0024】
230は、手差しトレイであり、231は、手差し給紙クラッチである。手差し給紙クラッチ231は、用紙Sの先端を手差し給紙ローラ232まで搬送するために使用され、手差し給紙ローラ232は、用紙Sの先端をレジストシャッタ224まで搬送するために使用される。画像記録に供する用紙Sは、用紙カセット220及び手差しトレイ230のいずれかの給紙手段を選択して給紙される。
【0025】
図1のプリンタエンジン105は、ビデオコントローラ103と所定の通信プロトコルにしたがって通信を行い、ビデオコントローラ部103からの指示にしたがって用紙カセット220手差しトレイ230の中からいずれかの給紙手段を選択する。さらに、印刷の開始指示に応じて該当する給紙部よりレジストシャッタ224まで用紙Sを搬送する。なお、プリンタエンジン105は、給紙部、潜像の形成、転写、定着等の電子写真プロセスに関する機構、排紙部及びそれらの制御部を含む。
【0026】
204a、204b、204c、204dは、感光ドラム205a、205b、205c、205dやトナー保持部等を有する画像記録部であり、電子写真プロセスにより、用紙S上にトナー像を形成する。一方、206a、206b、206c、206dは、レーザスキャナ部であり、画像記録部にレーザビームによる画像情報を供給する。画像記録部204a、204b、204c、204dには、用紙Sを搬送する用紙搬送ベルト250が複数の回転ローラ251〜254によって用紙搬送方向(図の下から上方向)に扁平に張設される。その最上流部においては、バイアスを印加した吸着ローラ225によって、用紙を用紙搬送ベルト250に静電吸着させる。また、このベルト搬送面に対向して4個の感光ドラム205a、205b、205c、205dが直線状に配設されており、画像形成手段を構成している。画像記録部204a、204b、204c、204dのそれぞれには、感光ドラムの周辺近傍を順次取り囲んで、帯電器、現像器が配置されている。
【0027】
レーザスキャナ部206a、206b、206c、206dに関して説明する。207a、207b、207c、207dは、レーザユニットであり、プリンタコントローラ103から送出される画像信号(/VIDEO信号)に応じて、内蔵の半導体レーザを駆動し、レーザビームを発射する。レーザユニット207a、207b、207c、207dから発せられたレーザビームは、ポリゴンミラー208a、208b、208c、208dにより走査され、感光ドラム205a、205b、205c、205d上に潜像を形成する。
【0028】
260は、定着器で、画像記録部204a、204b、204c、204dにより用紙Sに形成されたトナー画像を記録紙Sに熱定着させる。261は、搬送ローラで、用紙Sを排紙搬送する。262は、排紙センサで、用紙Sの排紙状態を検知する。263は、排紙ローラ兼両面印刷用搬送路を切り替えるローラで、用紙Sを排紙方向へ搬送し、用紙Sの搬送指示が排紙の場合はそのまま排紙トレイ264に排紙する。搬送指示が両面搬送の場合は、用紙Sの後端が排紙センサ262を通過した直後に回転方向を逆向きに変え、スイッチバックすることにより用紙Sを両面印刷用搬送路270へ搬送する。265は排紙積載量検知センサで、排紙トレイ264上に積載された用紙Sの積載量を検知する。
【0029】
270は、両面印刷用搬送路である。排紙ローラ兼両面印刷用搬送路切り替えローラ263により両面印刷用に搬送された用紙Sは、両面搬送ローラ271〜274によって再びレジストシャッタ224まで搬送される。そして画像記録部204a、204b、204c、204dへの搬送指示を待つ。
【0030】
なお、レーザビームプリンタ102には、さらにオプションカセットや封筒フィーダ等のオプションユニットを装備することができる。
【0031】
(プリンタコントローラの構成例)
図3は、本実施形態のプリンタコントローラ103の構成例を説明するブロック図である。
【0032】
図3において、301は、パネル部104とのデータ通信を行うパネルインタフェース部である。302は、ネットワークを介してホストコンピュータ等のデータ処理装置101と双方向に通信接続するためのホストインタフェース部である。ROM303の内部には、CPU305が実行すべきプログラムが記憶されている。304は、プリンタエンジン105と通信接続するためのエンジンインタフェース部である。
【0033】
CPU305は、パネルインタフェース部301を介して、ユーザがパネル部104において設定・指示した内容を確認することができる。また、エンジンインタフェース部304を介して、プリンタエンジン105の状態を認識することができる。また、CPU305は、ROM303に保持された制御プログラムコードに基づいて、CPUバス320に接続されたデバイスを制御するCPUである。画像メモリ306は、画像形成処理部307が生成したラスタデータを一時的に保持するための、RAMやディスクなどからなるメモリである。
【0034】
画像形成処理部307は、画像形成処理のためのデータをCPU305から受け取り、本発明における画像形成処理を行い、画像メモリ307へ画像を格納する処理を行う。本実施形態の好適な構成例として、画像形成処理部307は、後述するピクセル生成処理(図10のS1003、図11のS1103及びS1105)及び重ねあわせ処理(図15のS1504、図16のS1604及びS1606)を実現するハードウェアを有する。また、後述する他の処理部は、プログラムとしてROM303に保持し、実行時にメモリにロードして処理を行う構成をとる。
【0035】
画像制御情報メモリ308は、データ処理装置101から受信した画像制御コマンドや画像形成処理部308へのデータ、あるいはデータ処理装置101に送信するステータス情報などを記憶するための、RAMやディスクなどからなるメモリである。
【0036】
320は、アドレス、データ、コントロールバスを含むCPUバスである。
【0037】
<本実施形態の画像形成処理部の構成例>
図4Aは、本実施形態の画像形成処理部307の全体構成例を示す図である。
【0038】
本実施形態の画像形成処理部307は、複数のプロセッサ(第1第1プロセッサ400と第2第2プロセッサ401が直列に接続する構成をとる。
【0039】
直列に接続された構成において、前段に接続された第1プロセッサ400は、第1レンダリング処理制御部410、第1イメージピクセル生成部413、第1通信部416を有する。
【0040】
第1レンダリング処理制御部410は、外部から第1レンダリング情報420を入力とし動作を行うものであり、第1レンダリング情報42を解析し、第2プロセッサ401を制御するための情報である第2レンダリング情報421を生成する。また、データの解析結果を元に、必要に応じて第1イメージピクセル生成部413に対してイメージピクセルの生成処理を指示し、第1イメージピクセル情報422を生成する。
【0041】
第1イメージピクセル生成部413は、第1レンダリング処理制御部410の指示に応じて、第1イメージピクセル情報422を生成する。
【0042】
第1通信部416は、第1レンダリング処理制御部410が生成した第2レンダリング情報421と、必要に応じて第1イメージピクセル生成部413が生成する第1イメージピクセル情報422を第2プロセッサ401に対して転送処理を行う。また、第1イメージピクセル情報422を転送する際、第1イメージピクセル生成部413の生成する第1イメージピクセル情報422に応じて、転送方法に切り替える処理を行う。後述するが、ピクセル毎に転送する方法とレイヤ(重ね合わせられた各オブジェクトを本例ではレイヤと呼ぶ)ごとに転送する方法との切り替えである。さらに、第1通信部416は、第2レンダリング情報42を元に、生成された第1イメージピクセル情報の転送先を通信メモリ423と共有メモリ424を切り替える処理を行う。
【0043】
次に、後段に接続される第2プロセッサ401について説明する。
【0044】
第2プロセッサ401は、第2レンダリング処理制御部411、第2イメージピクセル生成部414、重ねあわせ処理部415、第2通信部417、第3通信部418を有する。
【0045】
第2レンダリング処理制御部411は、第2通信部417が取得する第2レンダリング情報421の解析処理を行う。そして指定される情報に応じて、第2イメージピクセル生成部414に指示を行い、第2イメージピクセル情報426を生成させる。さらに、重ね合わせ処理部415に指示を行い、重ねあわせ処理を行った結果を示す、重ね合わせピクセル情報427の生成を行う。
【0046】
第2イメージピクセル生成部414は、第2レンダリング処理制御部411の指示に応じて、第2イメージピクセル情報426を生成する。
【0047】
重ね合わせ処理手段415は、第2レンダリング処理制御部411の指示に応じて、重ねあわせ処理を行い、重ね合わせピクセル情報427の生成を行う。
【0048】
第2通信部417は、第1通信部416によって転送される第2レンダリング情報421を通信メモリ423から取得する。そして取得した第2レンダリング制御情報421を解析し、必要に応じて第1イメージピクセル情報422を通信メモリ423、もしくは共有メモリ424の指定される方から取得する。
【0049】
第3通信部418は、第2レンダリング情報421の情報を元に、第2イメージピクセル情報426、もしくは重ね合わせピクセル情報427を取得し、図3の画像メモリ306に出力する。
【0050】
(第1プロセッサの構成例)
図4Bは、後述のフローチャートを実行する第1プロセッサ400のハードウエア構成例を示すブロック図である。
【0051】
図4Bで、4001は第1プロセッサ400の動作を制御すると共に、第1レンダリング処理制御部410を実現するCPUである。4002は、CPU4001の動作に必要なプログラム及びデータを記憶するRAMである。
【0052】
RAM4002には、以下の情報を記憶する領域が確保される。420は、第1レンダリング情報を記憶する領域である。421は、第2レンダリング情報を記憶する領域である。4021は、現在処理中のレイヤレベルを示す変数"Level"を記憶する領域である。4022は、第1レンダリング情報を解析して第1プロセッサ400と第2プロセッサ401への負荷分担を制御するために使用する重ね合わせ複雑度を記憶する領域である。4023は、通信メモリ423と共有メモリ424とのいずれを使って第1イメージピクセル情報422を転送するかを決定するための、ピクセル長のしきい値を記憶する領域である。4024は、ピクセル長のしきい値4023とレンダリングするピクセル長とから、生成されたピクセル情報を通信メモリ423に出力するか/共有メモリ424に出力するかを記憶する領域である。
【0053】
4025は、現在処理をしているレイヤのピクセル長を示す値"Length"を記憶する領域である。4026は、現在処理を行っているビクセル数を示す変数"count"を記憶する領域である。4027は、第1イメージピクセル生成部413で生成されたピクセル値を記憶する領域である。4028は、第2レンダリング情報421のレイヤ種別情報を生成するための記憶領域である。
【0054】
4029は、CPU4001が実行するプログラムを図3のROM303からロードするプログラムロード領域である。
【0055】
4003は、CPUバス320を介して、図3のCPU305の指示で送られてくる第1レンダリング情報420(本例では、図3の画像制御情報メモリ308に準備されている)を受け取るための、CPUバス接続部である。
【0056】
以下、本例ではハードウエア構成の、第1イメージピクセル生成部413と第1通信部416が接続されている。
【0057】
(第2プロセッサの構成例)
図4Cは、後述のフローチャートを実行する第2プロセッサ400のハードウエア構成例を示すブロック図である。
【0058】
図4Cで、4011は第2プロセッサ401の動作を制御すると共に、第2レンダリング処理制御部411を実現するCPUである。4012は、CPU4011の動作に必要なプログラム及びデータを記憶するRAMである。
【0059】
RAM4012には、以下の情報を記憶する領域が確保される。421は、第2レンダリング情報を記憶する領域である。4031は、現在処理中のレイヤレベルを示す変数"Level"を記憶する領域である。4032は、現在処理をしているレイヤのピクセル長を示す値"Length"を記憶する領域である。4033は、現在処理を行っているビクセル数を示す変数"count"を記憶する領域である。
【0060】
4034は、本例で並列レイヤ生成処理の場合の前のレイヤのピクセル情報(Source 1)を記憶する領域である。4035は、本例で並列レイヤ生成処理の場合の後のレイヤのピクセル情報(Source 2)を記憶する領域である。4036は、既にピクセル生成処理あるいは重ね合わせ処理を実行した結果のピクセル情報で、現在のレイヤレベルで更に重ね合わせがされる元のピクセルあるいはレイヤ情報(Destination)を記憶する領域である。4037は、現在の重ね合わせ処理を実行した結果のピクセルあるいはレイヤ情報(Result)を記憶する領域である。
【0061】
4038は、CPU4011が実行するプログラムを図3のROM303からロードするプログラムロード領域である。
【0062】
以下、本例ではハードウエア構成の、第2イメージピクセル生成部414、重ね合わせ処理部415、第2通信部417、第3通信部418が接続されている。
【0063】
(描画領域の例)
図4Dは、本実施形態の画像形成処理部が処理する描画領域の一例を示す図である。
【0064】
430は、画像形成処理を行うページ領域を示す。431、432はページ領域430に含まれる描画オブジェクトを示す。433は、本実施形態の画像形成処理部が処理するページ領域を主走査方向にライン単位に分割したスキャンライン部を示す。434,435,436は、本実施形態の画像形成処理部が処理するページ領域をエッジ間の領域に分割した閉領域を示す。本実施形態の画像形成処理部は、前述したスキャンライン部やエッジ間の閉領域ごとに描画処理を行う。従って、後述する第1レンダリング情報、第2レンダリング情報は、前述したスキャンライン部、もしくはエッジ間に分割された閉領域の情報を示す。
【0065】
(第1レンダリング情報の構成例)
図5は、前述した第1レンダリング情報420の一構成例を示すデータフォーマットの図である。
【0066】
第1レンダリング情報420は、レンダリング制御情報500と複数のレイヤ情報501,502,...,503から構成される情報であり、同じオブジェクトの重なり状態を示すライン領域が定義されている。従って、複数の第1レンダリング情報420によって、ラインさらにページの画像が生成される。
【0067】
レンダリング制御情報500は、レイヤ数情報504とピクセル長情報505を保持する。
【0068】
レイヤ数情報504は、レンダリング制御情報500の後に続くレイヤ情報501,502,...,503の数を示す情報である。第1レンダリング処理制御部410は、このレイヤ数情報504を元に、レイヤ情報501,502,...,503を必要な数だけ読み込み、各レイヤに対する処理を行う。
ピクセル長情報505は、各レイヤにおいて生成するピクセル長を示す情報である。第1レンダリング処理制御部410は、このピクセル長情報505と各レイヤ情報501,502,...,503を第1イメージピクセル生成部413に渡し、ピクセルの生成処理を行う指示を行う。
【0069】
レイヤ1情報501、レイヤ2情報502、...、レイヤN情報503は、描画を行う各レイヤの描画処理を行うための詳細情報を示す。レイヤ1情報501、レイヤ2情報502、レイヤN情報503はそれぞれ、重ね合わせ種別情報506、507、508を保持する。また、必要に応じて描画方法詳細情報509、510、511を保持する。ここでいう描画方法詳細情報は、代表的なものでは拡縮情報や色変換情報等を示すが、この他の情報を保持しても構わない。
【0070】
重ね合わせ種別情報506、507、508は、各レイヤのピクセルをどのように重ね合わせるかを示す、重ね合わせ処理の方法を示す情報である。本値は例えば、GDIの重ね合わせ処理、あるいはPDFの重ね合わせ処理などを示す。
【0071】
(第2レンダリング情報の構成例)
図6は、第1プロセッサ400の第1レンダリング処理制御部410が生成し、第2プロセッサ401の第2レンダリング処理制御部411が使用する第2レンダリング情報421のフォーマットを示す。
【0072】
レイヤ種別情報701、702、703以外は、全て図5で説明したもののままの情報を生成する。
【0073】
レイヤ種別情報701、702、703は、第1イメージピクセル生成部413が第1レンダリング処理制御部410からピクセルの生成処理を指示され、イ第1メージピクセル情報422を生成したか、否かを示す情報である。本例では、第1レンダリング処理制御部410が並列レイヤ生成処理を指示した場合に"Parallel"が記憶される。また、単一のレイヤ生成処理を指示した場合に"conplete"が記憶される。一方、第1プロセッサ400ではレイヤ生成処理をせずに第2プロセッサでのレイヤ生成処理を指示した場合に"not complete"が記憶される。
【0074】
<本実施形態の画像形成処理部の動作例>
(第1レンダリング処理部の動作手順例)
図7は 第1レンダリング処理制御部410を実現するCPU4011の動作手順例を示すフローチャートである。
【0075】
まず、第1レンダリング処理制御部410のCPU4001は、ステップS601でレンダリング制御処理に必要な各パラメータの初期化処理を行う。ここで行う処理では、第1レンダリング情報420から、レンダリング制御情報500の取得処理を行う。さらに、取得したレンダリング制御情報500からレイヤ数情報504の取得処理を行う。また、処理したレイヤ数を示す情報(ここでは変数"Level"とする)を0で初期化する。
【0076】
次に、ステップS602に進み、CPU4001は、取得したレイヤ数情報504が1以下の値であるか否か(すなわち重ね合わせの有無)の判断処理を行う。1以下であった場合は重ね合わせは無いので、ステップS611に進み、それ以外であった場合は重ね合わせがあるので、ステップS603に進む。
【0077】
ステップS603では、CPU4001は、第1レンダリング情報420に含まれる全てのレイヤ情報の取得処理を行い、レイヤ情報の中から重ね合わせ種別情報の抽出を行う。そして、抽出した重ね合わせ種別情報を基に重ね合わせ処理の複雑度の判断処理を行う。判断の結果、重ね合わせ処理が"簡易"と判断された場合はステップS611に進み、"複雑"と判断した場合はステップS604に進む。
【0078】
重ね合わせ処理の複雑度の判断処理としては、予め重ねあわせ処理の各種別に対して重ね合わせ処理が"簡易"か"複雑"であるかを決めておく。そして、その情報を基に判断処理を行うものとする。実際には、GDI等の簡易的な重ねあわせ処理だけの場合であれば、"簡易"と判断するようにあらかじめ決めておく。また、PDFなどの複雑な重ねあわせ処理であれば、"複雑"と判断を行うように決めておく。さらに、透過値の処理が必要無い場合、”簡易”と判断し、透過値の処理が必要な場合、”複雑”と判断する。また、重ね合わせるオブジェクトがあらかじめ決める閾値以下だった場合、”簡易”と判断し、重ね合わせるオブジェクトがあらかじめ決める閾値以上だった場合、”複雑”と判断する。
【0079】
ステップS604では、CPU4001は、ピクセル長情報505を判断し、予め決めておくピクセル長のしきい値より長いか否かを判断する。予め決めておくしきい値以下の場合はステップS606に進み、しきい値を越える場合はステップS605に進む。ステップS605では、CPU4001は、後述するピクセルの生成処理で生成したピクセルの出力先を共有メモリ424に設定する。一方、ステップS606では、CPU4001は、後述するピクセルの生成処理で生成したピクセルの出力先を通信メモリ423に設定する。しきい値としては、例えばメモリ展開が負荷とならない程度の100ピクセルを使用するが、特に限定されるものでは無い。
【0080】
ステップS607では、CPU4001は、処理を行っていないレイヤ数(すなわち、レイヤ数−Levelに相当する)が2レイヤ以上存在するか否かを判断する。2レイヤ以上存在した場合はステップS608へ進み、2レイヤ以上存在しなかった場合はステップS610へ進む。ステップS608では、ピクセル長情報505を判断し、ピクセル長のしきい値より以下か否かを判断する。しきい値としては、例えばメモリ展開が負荷とならない程度の100ピクセルを使用するが、特に限定されるものでは無い。
【0081】
ここでの判断は以下の理由による。ピクセル長がしきい値以下の場合、ステップS609で行う並列レイヤ生成処理では、従来の問題であったピクセルの管理処理で費やす処理が小さくなるのでその効果が無くなることが考えられる。そこで、ステップS608で並列レイヤ生成処理の効果を判断するために、ピクセル長の判断を行う。しきい値以下の場合はステップS610に進み、しきい値を越える場合はステップS609に進む。
【0082】
ステップS609では、CPU4001は、イメージピクセルを2レイヤ分並列に生成処理を行う。本並列レイヤ生成処理は、ステップS601で取得したレイヤ情報から処理の対象となる2レイヤ分(Level, Level+1)のレイヤ情報を取得する。例えば、ここではレイヤ1情報501及びレイヤ2情報502を取得したとする。その際、それぞれの描画方法詳細情報509、510を基にイメージピクセルの生成処理を並列に行う。ここでいうピクセルの生成処理は、例えば、描画方法詳細情報509、510に含まれる拡縮情報や色変換情報を基に、ピクセル長情報505が示す数のピクセルを2レイヤ分、ピクセル毎に並列で生成する処理を行う。詳細は図8A及び図11を参照して後述する。
【0083】
ステップS610では、CPU4001は、1レイヤ分のイメージピクセルの生成処理を行う。本レイヤ生成処理は、ステップS601で取得したレイヤ情報から処理の対象となる1レイヤ分(Level)のレイヤ情報を取得する。例えば、ここでレイヤ1情報501を取得したとする。その際、描画方法詳細情報509を基イメージピクセルの生成処理を行う。ここでいうピクセルの生成処理は、例えば、描画方法詳細情報509に含まれる拡縮情報や色変換情報を基に、ピクセル長情報505が示す数のピクセルの生成を行う。詳細は図8B及び図10を参照して後述する。
【0084】
ステップS611では、CPU4001は、イメージピクセルの生成処理を第1プロセッサ400では行わずに、後段に位置する第2プロセッサ401に指示する。詳細は図8Cを参照して後述する。
【0085】
ステップS612では、CPU4001は、並列レイヤ生成処理S609によって2レイヤの処理が終了したので、レイヤ数をLeven+2にカウントアップする。一方、ステップS612では、CPU4001は、レイヤ生成処理S610によって1レイヤの処理が終了したので、レイヤ数をLeven+1にカウントアップする。
【0086】
ステップS614では、CPU4001は、処理したレイヤ数(Level)とレイヤ数情報504を比較し、レイヤ数がレイヤ数情報504より小さければ処理を続行し、レイヤ数がレイヤ数情報504以上であれば処理を完了する。
【0087】
(並列レイヤ生成処理S609)
図8Aは、図7の並列レイヤ生成処理S609を詳細を示したフローチャートである。
【0088】
ステップS801では、CPU4001は、並列レイヤ生成処理を行う2つのレイヤ(Level, Level+1)のレイヤ種別情報を生成し、並列レイヤ生成処理を行ったことを示す種別(ここでは"Parallel"という値で識別)をセットする。
【0089】
次に、ステップS802では、CPU4001は、実際に2レイヤ分のイメージピクセルを並列に生成処理を行う。詳細は図11を参照に後述する。
【0090】
(レイヤ生成処理S610)
図8Bは、図7のレイヤ生成処理S610を詳細を示したフローチャートである。
【0091】
ステップS803では、CPU4001は、レイヤ生成処理を行う1つのレイヤ(Level)のレイヤ種別情報を生成し、レイヤ生成処理を行ったことを示す種別(ここでは"complete"という値で識別)をセットする。
【0092】
次に、ステップS804では、CPU4001は、実際にイメージピクセルを1レイヤ分生成する処理を行う。詳細は図10を参照して後述する。
【0093】
(レイヤ分散処理S611)
図8Cは、図7のレイヤ分散処理S611を詳細を示したフローチャートである。
【0094】
ステップS805では、CPU4001は、レイヤ数情報504の取得処理を行い、処理したレイヤ数を示す情報(ここでは変数"Level"とする)を0で初期化する。
【0095】
ステップS806では、CPU4001は、レイヤ種別情報を生成し、後段に位置する第2プロセッサ401にイメージピクセル生成処理を分散させる旨を示す種別(ここでは"not complete"という値で識別)をセットする。
【0096】
ステップS807では、CPU4001は、処理したレイヤ数をLevel+1だけカウントアップする。そして、ステップS808で、CPU4001は、処理したレイヤ数とレイヤ数情報504を比較し、処理の完了を判断する。
【0097】
なお、本実施形態のレイヤ分散処理S611は、レイヤ数が1の場合のみとしている。しかし、かかる第2プロセッサ401へのレイヤ生成処理の分散は複数のレイヤについて行ってもよく、その数は第2プロセッサ401が実行する重ね合わせ処理の負荷に対応して変化させてもよい。また、レイヤ0として背景を組み込んで、レイヤ分散処理S611でレイヤ0と1のレイヤ生成処理を第2プロセッサ401に分散させてもよい。
【0098】
(レイヤ情報生成処理S801,S803,S806)
図9は、図8A乃至8Cで示したレイヤ情報生成処理(S801、S803、S806)の詳細を示すフローチャートである。
【0099】
ステップS901では、CPU4001は、レイヤ種別情報の領域4027を確保する処理である。次に、ステップS902では、CPU4001は、ステップS901で確保したレイヤ種別情報に、図8A乃至8Cに対応した各種別情報(Parallel, Complete, not complete)を格納する。ステップS903では、CPU4001は、ステップS902で準備された図8A乃至8Cに対応した各種別情報(Parallel, Complete, not complete)を、第2レンダリング情報421のレイヤ情報に付加する。
【0100】
(レイヤピクセル生成処理S804,S1405,S1410)
図10は、図8Bで示したレイヤピクセル生成処理(S804)の詳細を示すフローチャートである。なお、図10のレイヤピクセル生成処理と同様の手順が、第2プロセッサ401で実行されるレイヤピクセル生成処理(S1405,S1410)においても、CPU4011により実行される。
【0101】
ステップS1001では、CPU4001は、レイヤピクセル生成処理に必要な各パラメータの初期化処理を行う。例えば、処理したピクセル数を示す情報(ここでは変数"count"とする)を0で初期化する。さらに、図5で説明したピクセル長情報505の取得処理を行う。ステップS1002では、CPU4001は、描画方法詳細情報の取得処理を行う。ここで取得する描画方法詳細情報は、Level番目のレイヤの描画方法詳細情報を取得するものとする。
【0102】
次に、ステップS1003では、CPU4001は、第1イメージピクセル生成部413にLevel番目のレイヤのピクセル生成処理を指示する。ここで生成するピクセルは、count番目のピクセルの生成処理を行うものである。また、ここでいうピクセルの生成処理は、例えば、ステップS1002で取得した描画方法詳細情報に含まれる拡縮情報や色変換情報を元に、count番目のピクセルの生成を行うものである。なお、第2プロセッサ401におけるステップS1405,S1410においては、第2イメージピクセル生成部414に指示を行う。
【0103】
ステップS1004では、CPU4001は、ステップS1003で生成したピクセルを第2プロセッサ401に通信する。通信に用いるピクセルの出力先は、ピクセル長情報505を基に図7のステップS604〜S606で設定された出力先4024に基づき切り替える処理を行う。すなわち、ピクセル長情報505がしきい値以下の場合は出力先に通信メモリ423を用いる。一方、しきい値を越える場合は出力先に共有メモリ424を用いて通信を行う。
【0104】
ステップS1005では、CPU4001は、生成したピクセル数をcount+1だけインクリメントする処理である。本処理を行うことにより、生成したピクセル数の管理を行う。そして、ステップS1006では、処理したピクセル数(count)とピクセル長情報(Length)を比較し、処理の完了を判断する。ピクセル数(count)がピクセル長情報(Length)未満で処理が完了していない場合はステップS1003に戻り、ピクセル数(count)がピクセル長情報(Length)以上で処理が完了している場合は本処理を完了させる。
【0105】
(並列レイヤピクセル生成処理S802)
図11は、図7で示した並列レイヤピクセル生成処理(S802)の詳細を示すフローチャートである。
【0106】
ステップS1101では、CPU4001は、並列レイヤ生成処理に必要な各パラメータの初期化処理を行う。例えば処理したピクセル数を示す情報(ここでは変数"count"とする)を0で初期化する。さらに、図5で説明したピクセル長情報505の取得処理を行う。ステップS1102では、CPU4001は、描画方法詳細情報の取得処理を行う。ここで取得する描画方法詳細情報は、Level番目とLevel+1番目のレイヤの描画方法詳細情報を取得するものとする。
【0107】
ステップS1103では、CPU4001は、第1イメージピクセル生成部413にLevel番目のレイヤのピクセル生成処理を指示する。ここで生成するピクセルは、count番目のピクセルの生成処理を行うものである。また、ここでいうピクセルの生成処理は、例えば、ステップS1102で取得した描画方法詳細情報に含まれる拡縮情報や色変換情報を元に、count番目のピクセルの生成を行うものである。ステップS1104では、CPU4001は、ステップS1103で生成したピクセルを第2プロセッサ401に通信する。通信に用いるピクセルの出力先は、ピクセル長情報505を基に既に設定された出力先に切り替える処理を行う。すなわち、ピクセル長情報50しきい値以下の場合は通信メモリ423を用いて通信する。一方、しきい値を越える場合は共有メモリ424を用いて通信を行う。
【0108】
ステップS1105では、CPU4001は、第1イメージピクセル生成部413にLevel+1番目のレイヤのピクセル生成処理を指示する。ここで生成するピクセルはcount+1番目のピクセルの生成処理を行うものである。また、ここでいうピクセルの生成処理は、例えば、ステップS1102で取得した描画方法詳細情報に含まれる拡縮情報や色変換情報を元に、count+1番目のピクセルの生成を行うものである。ステップS1106では、CPU4001は、ステップS1105で生成したピクセルを第2プロセッサ401に通信する。通信に用いるピクセルの出力先は、ピクセル長情報505を基に既に設定された出力先に切り替える処理を行う。すなわち、ピクセル長情報505がしきい値以下の場合は通信メモリ423を用いて通信する。一方、しきい値を越える場合は共有メモリ424を用いて通信を行う。
【0109】
ステップS1107では、CPU4001は、生成したピクセル数をcount+1だけインクリメントする処理である。本処理を行うことにより、生成したピクセル数の管理を行う。そして、ステップS1108では、CPU4001は、処理したピクセル数(count)とピクセル長情報(Length)を比較し、処理の完了を判断する処理を示す。ピクセル数(count)がピクセル長情報(Length)未満で処理が完了していない場合はステップS1103に戻り、ピクセル数(count)がピクセル長情報(Length)以上で処理が完了している場合は本処理を完了させる。
【0110】
<本実施形態における並列レイヤ生成処理の具体例>
次に、図12及び図13A乃至13Cを用いて、本実施形態の特徴である並列レイヤ生成処理S609を行うことによる画像処理方法、特に通信方法におけるメリットを説明する。一例として、例えば1つの画像領域のレイヤ1のピクセルを示すRun Length1、レイヤ2のピクセルを示すRun Length2のピクセル生成処理を説明する。
【0111】
(レイヤ単位のビクセル生成)
まず、レイヤ単位でRun Lengthのピクセル生成を行い、各レイヤのピクセルを生成した都度、通信メモリ423へ出力を行う処理(図7のS610を繰り返す処理に相当)を行う場合を想定する。この時、通信メモリ423への格納状況は図12の通信状況1が示すようになる。通信状況1はピクセル順に出力している例である。
【0112】
また、第1プロセッサ400の処理時間1300は、図13Aに示すように、Run Length1の生成処理時間を示すピクセル生成処理時間1304と、Run Length2の生成処理時間を示すピクセル生成処理時間1305との和になる。そして、この場合は、第2プロセッサ401がRun Length1のピクセルと、Run Length2のピクセルとの重ねあわせ処理を行う際、必要の無いピクセルの取得処理も必要となってしまう。さらに、取得したピクセルの管理処理を、メモリを用いて行う必要性も出てくる。例えば、ピクセル"1","6"の重ね合わせ処理を行う際、第2プロセッサ401はピクセル"6"を取得する前に、第1プロセッサ400からピクセル"1"〜"5"までのデータの取得処理を行い、さらにメモリへの管理を行う必要がある。従って、第2プロセッサ401の処理時間1301としては、基本的には、重ねあわせ処理時間1307とメモリ読み出し処理時間1308が必要となるが、別途、メモリ書き出し時間1306を含んだ管理処理が必要となってしまう。
【0113】
(ピクセル単位の2レイヤのピクセル生成)
一方、図11のステップS1103〜S1106で示す処理のように、Run Length1のピクセルと、Run Length2のピクセルを交互に通信メモリ423へ出力することで、図12の通信状況2の状態になる。
【0114】
すると、第2プロセッサ401は、ピクセル"1","6"のみの取得が行え、無駄な取得処理や管理処理(メモリ書き出し時間1306)を省略することが可能となる。また、高速にアクセス可能なキュー方式のメモリから直接データの取得が行えることにより、メモリのレイテンシーによるパフォーマンス劣化を防ぐことも可能となる。その結果、第2プロセッサ処理時間1303は、重ね合わせ処理時間1310とメモリ読み出し処理時間1311のみとになる。
【0115】
これにより、図13Bに示すように、レイヤ単位の場合のメモリアクセス時間1312が、ピクセル単位ではメモリアクセス時間1313となり、第2プロセッサ処理時間1301を、第2プロセッサ処理時間1303に効率化することが可能となる。
【0116】
(3レイヤ以上の重ね合わせ処理例)
上記図13A及び図13Bでは、2レイヤの重ね合わせの場合の効率化を示した。図13Cには、3レイヤ以上の場合にも同様に効率化が図れることを示す。
【0117】
図13Cで、"D"は以下に図15及び図16でも使用するDestination"(今迄の重ね合わせの結果の格納場所)を示す。"R"は同様に"Result"(重ね合わせ処理の結果の格納場所)を示す。
【0118】
この場合の、第2プロセッサ処理時間は、既に終了した重ね合わせの結果の読出し時間1316と、重ね合わせ処理時間1315と、重ね合わせ処理結果の書き出し/読み出し処理時間1317との合計のみとなる。
【0119】
従って、図13Cの場合も、図13Aと同様に、レイヤ単位の処理と比較すると無駄な取得処理や管理処理(メモリ書き出し時間1306)を省略することが可能となる。
【0120】
(第2レンダリング処理部の動作手順例)
図14は、第2レンダリング処理制御部411が行うレンダリング制御処理の処理手順を示すフローチャートである。
【0121】
まず、第2レンダリング処理制御部411のCPU4011は、ステップS1401でレンダリング制御処理に必要な各パラメータの初期化処理を行う。ここで行う処理は、通信メモリ423から図6に示す第2レンダリング情報421を取得し、第2レンダリング情報421からレンダリング制御情報500の取得処理を行う。さらに、取得したレンダリング制御情報500からレイヤ数情報504の取得処理を行う。また、処理したレイヤ数を示す情報(ここでは変数"Level"とする)を0で初期化する。
【0122】
次に、ステップS1402に進み、CPU4011は、取得したレイヤ数情報504が1以下の値であるか否か(重ね合わせが有るか否か)の判断処理を行う。1以下であった場合は重ね合わせが無くステップS1410に進み、それ以外であった場合は重ね合わせが有りステップS1403に進む。
【0123】
ステップS1403では、CPU4011は、Level番目のレイヤ情報の取得処理を行い、レイヤ情報の中からレイヤ種別情報の抽出を行う。ステップS1404では、CPU4011は、ステップS1403で取得したレイヤ種別情報の値の判別処理を行う。レイヤ種別情報に"parallel"が指定されている場合は、ステップS1406に進む。レイヤ種別情報に"complete"が指定されている場合は、ステップS1407に進む。レイヤ種別情報に"not Composite"が指定されている場合は、ステップS1405に進む。
【0124】
ステップS1405及びS1410は、1レイヤ分のイメージピクセルの生成処理を示し、CPU4011は、図10で示したレイヤピクセル生成処理と同様の処理を、第2イメージピクセル生成部414を使って行う。
【0125】
ステップS1406では、CPU4011は、第1プロセッサ400の並列レイヤ生成処理S609で出力されるレイヤごとに交互に出力されたピクセルの重ねあわせ処理を行う。詳細は図16を参照して後述する。
【0126】
ステップS1407では、CPU4011は、第1プロセッサ400のレイヤ生成処理S610で出力されるピクセルの重ねあわせ処理を行う。詳細は図15を参照して後述する。
【0127】
ステップS1408では、CPU4011は、並列重ね合わせ処理S1406によって2レイヤの処理が終了したので、レイヤ数をLeven+2にカウントアップする。一方、ステップS1409では、CPU4011は、重ね合わせ処理S1407によって1レイヤの処理が終了したので、レイヤ数をLeven+1にカウントアップする。
【0128】
ステップS1411では、CPU4011は、処理したレイヤ数(Level)とレイヤ数情報504を比較し、レイヤ数がレイヤ数情報504より小さければ処理を続行し、レイヤ数がレイヤ数情報504以上であれば処理を完了する。
【0129】
(重ね合わせ処理S1407)
図15は、図14で示した重ねあわせ処理(S1407)の詳細を示すフローチャートである。
【0130】
ステップS1501では、CPU4011は、重ねあわせ処理に必要な各パラメータの初期化処理を行う。例えば、処理したピクセル数を示す情報(ここでは変数"count"とする)を0で初期化する。さらに、図6で説明したピクセル長情報505の取得処理を行う。
【0131】
ステップS1502では、CPU4011は、RAM4012の領域4033から、Destinationになるピクセルを取得する。このDestinationピクセルは、例えば、初期の場合は完全に下地の色を示す白色のベタ塗りか、もしくは前回重ねあわせ処理を行った結果のピクセルなどを示す。
【0132】
ステップS1503では、CPU4011は、Sourceになるピクセルを取得する。Sourceピクセルは、第1プロセッサ400が図10で説明したレイヤピクセル生成処理S804によって、通信メモリ423、もしくは共有メモリ424に出力したものである。従って、CPU4011は、ピクセル長情報505の値がしきい値以下であった場合は通信メモリ423から取得し、しきい値を越える場合は共有メモリ424から取得を行う。
【0133】
ステップS1504では、CPU4011は、ステップS1502とS1503で取得したDestinationピクセルとSourceピクセルとの重ねあわせ処理を、重ね合わせ処理部415に指示する。ここでは重ねあわせ種別情報に対応した、重ねあわせ処理を行うものとする。重ね合わせた結果は、Resultに格納される。
【0134】
ステップS1505では、CPU4011は、生成したピクセル数をcount+1だけインクリメントする処理である。本処理を行うことにより、生成したピクセル数の管理を行う。そして、ステップS1506では、CPU4011は、処理したピクセル数(count)とピクセル長情報(Length)を比較し、処理の完了を判断する処理を示す。ピクセル数(count)がピクセル長情報(Length)未満で完了していない場合は、ステップS1502に戻り、ピクセル数(count)がピクセル長情報(Length)以上で完了している場合、本処理を完了させる。
【0135】
(並列重ね合わせ処理S1406)
図16は、図14で示した並列重ねあわせ処理(S1406)の詳細を示すフローチャートである。
【0136】
ステップS1601では、CPU4011は、並列重ねあわせ処理に必要な各パラメータの初期化処理を行う。例えば、処理したピクセル数を示す情報(ここでは変数"count"とする)を0で初期化する。さらに、図6で説明したピクセル長情報(505)の取得処理を行う。
【0137】
ステップS1602では、CPU4011は、RAM4012の領域4036から、Destinationになるピクセルを取得する。このDestinationピクセルは、例えば完全に下地の色を示す白のベタ塗りか、もしくは前回重ねあわせ処理を行った結果のピクセルなどがある。
【0138】
ステップS1603では、CPU4011は、Source 1になるピクセルを取得する。Source 1ピクセルは、第1プロセッサ400が図11で説明した並列レイヤピクセル生成処理S802によって、通信メモリ423もしくは共有メモリ424に出力したものである。ここで、CPU4011は、ピクセル長情報505の値がしきい値以下であった場合は、通信メモリ423から取得し、しきい値を越える場合は、共有メモリ424から取得を行う。例えば、図12の通信状況2におけるレイヤ1のピクセル"1"や"2"などである。
【0139】
ステップS1604では、CPU4011は、ステップS1602とS1603で取得したDestinationピクセルとSource 1ピクセルの重ねあわせ処理を、重ね合わせ処理部415に指示する。ここでは該重ねあわせ種別情報に対応した、重ねあわせ処理を行うものとする。重ね合わせの結果は、Resultに格納される。
【0140】
ステップS1605では、CPU4011は、Source 2になるピクセルの取得処理を示す。Source 2ピクセルは、第1プロセッサ400が図11で説明した並列レイヤピクセル生成処理S802によって、通信メモリ423もしくは共有メモリ424に出力したものである。ここで、CPU4011は、ピクセル長情報505の値がしきい値以下であった場合は、通信メモリ423から取得し、しきい値を越える場合は、共有メモリ424から取得を行う。例えば、図12の通信状況2におけるレイヤ2のピクセル"6"や"7"などである。
【0141】
ステップS1604では、CPU4011は、ステップS1604とS1605で取得したResultピクセルとSource 2ピクセルの重ねあわせ処理を、重ね合わせ処理部415に指示する。ここでは重ねあわせ種別情報に対応した、重ねあわせ処理を行うものとする。
【0142】
ステップS1606では、生成したピクセル数をcount+1だけインクリメントする処理である。本処理を行うことにより、生成したピクセル数の管理を行う。そして、ステップS1607では、処理したピクセル数(count)とピクセル長情報(Length)を比較し、処理の完了を判断する処理を示す。ピクセル数(count)がピクセル長情報(Length)未満で完了していない場合は、ステップS1602に戻り、ピクセル数(count)がピクセル長情報(Length)以上で完了している場合、本処理を完了させる。
【0143】
<他の実施形態>
なお、本実施形態の最初にも指摘したが、本発明の技術思想は、プリンタ制御システムに限定されず、他のシステムにおける複数のプロセッサによる並列処理の高速化のも適用が可能である。例えば、本発明に適用されるソフトウェアは、プリンタ制御システムに限ったものではなく、ワープロ(ワードプロセッサ)系ソフトウェア、表計算系ソフトウェア、作図系ソフトウェア等に幅広く応用可能である。これらも本発明に含まれる。
【0144】
また、本発明の目的は、実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給してもよい。その場合、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成される。
【0145】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0146】
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RWを用いることができる。また、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【0147】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される。しかし、それ以外にも、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0148】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0149】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現される。これ以外にも、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も、本発明に含まれることは言うまでもない。
【0150】
この場合、上記プログラムは、該プログラムを記憶した記憶媒体から直接、又はインターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続された他のコンピュータやデータベース等からダウンロードすることにより供給される。
【0151】
上記実施の形態では、画像形成装置の印刷方式を電子写真方式とした場合を例に挙げたが、本発明は、電子写真方式に限定されるものではなく、インクジェット方式、熱転写方式、感熱方式、静電方式、放電破壊方式など各種印刷方式に適用することができる。
【0152】
上記プログラムの形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、OS(オペレーティングシステム)に供給されるスクリプトデータ等の形態から成ってもよい。
【図面の簡単な説明】
【0153】
【図1】本実施形態のプリンタ制御システムの構成例の概略を示す図である。
【図2】図1における画像処理装置であるレーザビームプリンタの一構成例を示す断面図である。
【図3】図1のプリンタコントローラの構成例を示すブロック図である。
【図4A】図3の画像形成処理部の構成例の概略を示すブロック図である。
【図4B】図4の第1プロセッサの構成例を示すブロック図である。
【図4C】図4の第2プロセッサの構成例を示すブロック図である。
【図4D】本実施形態の画像形成処理部が処理する描画領域の一例を示す図である。
【図5】本実施形態の第1レンダリング情報のデータフォーマット例を示す図である。
【図6】本実施形態の第2レンダリング情報のデータフォーマット例を示す図である。
【図7】図4Bの第1プロセッサで第1レンダリング制御処理部を実現する処理手順を示すフローチャートである。
【図8A】図7の並列レイヤ生成処理S609の処理手順例を示すフローチャートである。
【図8B】図7のレイヤ生成処理S619の処理手順例を示すフローチャートである。
【図8C】図7のレイヤ分散処理S611の処理手順例を示すフローチャートである。
【図9】図8A乃至図8Cのレイヤ情報生成処理S801,S803,S806の処理手順例を示すフローチャートである。
【図10】図8B及び図14のレイヤピクセル生成処理S604,S1405,S1410の処理手順例を示すフローチャートである。
【図11】図8Aの並列レイヤピクセル生成処理S802の処理手順例を示すフローチャートである。
【図12】本実施形態の画像形成処理部での第1及び第2プロセッサ間の通信方法のメリットを説明する図である。
【図13A】本実施形態の画像形成処理部の第2プロセッサでの処理時間のメリットを説明するタイミングチャートである。
【図13B】本実施形態の画像形成処理部の第2プロセッサでの処理時間のメリットを説明するタイミングチャートである。
【図13C】本実施形態の画像形成処理部の第2プロセッサでの3レイヤ以上の重ね合わせ処理の場合の処理時間を示すタイミングチャートである。
【図14】図4Cの第2プロセッサで第2レンダリング制御処理部を実現する処理手順を示すフローチャートである。
【図15】図14の重ね合わせ処理S1407の処理手順例を示すフローチャートである。
【図16】図14の並列重ね合わせ処理S1406の処理手順例を示すフローチャートである。
【技術分野】
【0001】
本発明は画像処理方法及び画像処理装置とその制御方法に関する。特に、複数のプロセッサ構成における、データ傾向に応じて最適な処理分散を実現する画像処理方法及び画像処理装置とその制御方法に関連するものである。
【背景技術】
【0002】
近年、プリンタの高画質化に伴い、複雑な重ねあわせ処理や透過処理を持った画像が普及してきている。特に、Adobe社が提唱するPDFやマイクロソフト社が提唱するXPS等では、オブジェクト同士の複雑な透過処理を実現しており、複雑な演算処理などを必要とする。一方、上述した複雑な演算は行わない従来の簡易なデータも根強く使用されており、様々な傾向のデータが使用されるようになってきている。
【0003】
また近年、画像形成処理の高速化を実現するため、様々なリソースの並列化技術が提案されてきている。特にプロセッサを複数保持することにより、処理の並列化を実現し高速化を実現する技術が提案されてきている。
【0004】
特許文献1では、複数のプロセッサの処理状況に応じてRIP(画像展開)処理/UCR(下色除去)処理/圧縮処理の処理分担を動的に切り替える技術が提案されている。
【特許文献1】特開2004-326307公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかし、上記の従来技術ではRIP処理の細かい処理分担を実現することが出来ず、データの傾向に応じたプロセッサ負荷の平滑化を実現することが出来ない。特に近年、前述したように複雑な透過処理を要求するデータや、簡易なデータなど様々な傾向のデータが普及してきているため、データの傾向に最適なRIP処理自体の処理分担を実現することが求められるようになってきている。
【0006】
本発明は、前述した問題点を解決し、複数のプロセッサに対して適切な負荷分散を実現することによって、入力される画像データの傾向に依存せず高速に画像処理可能な画像処理方法及び画像処理装置とその制御方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決する本発明の画像処理装置は、以下に示す構成を備える。
【0008】
1つの画像領域の画像処理を複数のプロセッサで分担して行う画像処理装置であって、入力される前記画像領域でのピクセル情報の重ね合わせの傾向を解析する解析手段と、前記解析手段の解析結果に基づいて、複数のプロセッサで行う処理の分担を決定する決定手段と、前記決定手段が決定した処理の分担に従って、前記複数のプロセッサへの処理の分担を制御する制御手段とを有することを特徴とす。ここで、前記複数のプロセッサは、前記画像領域で重ね合わせる各レイヤのピクセル情報の生成処理を行う第1プロセッサと、前記第1プロセッサの生成したピクセル情報を重ね合わせる第2プロセッサである。かかる構成において、入力される画像データの傾向によらず複数のプロセッサへの適切な処理分散を実現することが可能となる。
【0009】
また、本発明の画像処理装置の制御方法は、1つの画像領域の画像処理を複数のプロセッサで分担して行う画像処理装置の制御方法であって、入力される前記画像領域でのピクセル情報の重ね合わせの傾向を解析する解析工程と、前記解析工程での解析結果に基づいて、複数のプロセッサで行う処理の分担を決定する決定工程と、前記決定工程で決定した処理の分担に従って、前記複数のプロセッサへの処理の分担を制御する制御工程とを有することを特徴とする。
【0010】
また、本発明の画像処理方法は、1つの画像領域の画像処理を複数のプロセッサで分担して行う画像処理方法であって、入力される前記画像領域でのピクセル情報の重ね合わせの傾向を解析する解析工程と、前記解析工程での解析結果に基づいて、前記複数のプロセッサへの処理の分担を制御する制御工程とを有することを特徴とする。
【0011】
また、本発明の画像処理装置は、キュー方式のインタフェースで接続される第1プロセッサと第2プロセッサを用いて画像処理を行う画像処理装置であって、画像の重ね合わせ処理が存在しない場合、第1プロセッサから第2プロセッサにイメージをピクセル順に出力させ、画像の重ね合わせ処理が存在する場合、第1プロセッサから第2プロセッサにイメージを交互に出力させる制御手段を有することを特徴とする。
【発明の効果】
【0012】
以上説明したように、本発明によって、入力される画像データの傾向に対応して、複数のプロセッサの適切な負荷分担を実現することが可能となる。特に、複雑な重ねあわせ処理や透過処理が存在するデータや、そうでないデータであってもデータを解析し、それぞれにあった処理分担を実現することにより、入力される画像データの傾向に依存せず高速に処理を実現することが可能となる。
【0013】
また処理分担を行うことによるオーバヘッドにおいても、複数のプロセッサの通信方法や使用するリソースの切り替えも適切に選択することにより、処理の軽減が可能となり、高速化が可能となる。
【発明を実施するための最良の形態】
【0014】
以下、図面を参照して本発明をその好適な実施形態を、添付図面に従って詳細に説明する。なお、以下の実施形態では、本発明をプリンタ制御システムに適用した場合の例を示す。しかしながら、本発明の技術思想は、プリンタ制御システムに限定されず、他のシステムにおける複数のプロセッサによる並列処理の高速化のも適用が可能である。例えば、本発明に適用されるソフトウェアは、プリンタ制御システムに限ったものではなく、ワープロ(ワードプロセッサ)系ソフトウェア、表計算系ソフトウェア、作図系ソフトウェア等に幅広く応用可能である。これらも本発明に含まれる。
【0015】
<本実施形態のプリンタ制御システムの構成例>
図1は、本実施形態に係るプリンタ制御システムの構成例の概略を示す図である。ここでは、本実施形態を適用する画像処理装置であるプリンタとして、レーザービームプリンタの例を説明する。しかしながら、本実施形態を適用するプリンタは、レーザービームプリンタに限られるものではなく、インクジェットプリンタや他のプリント方式のプリンタでも良いことは言うまでもない。
【0016】
図1において、データ処理装置101は、例えば、パソコン等のコンピュータであり、画像処理装置用の制御コードの供給源、あるいはプリンタの制御装置として機能する。
【0017】
レーザービームプリンタ102は、本実施形態の画像処理装置であり、プリンタコントローラ103、プリンタエンジン105、及びパネル部104を有する。
【0018】
プリンタコントローラ103は、データ処理装置101から供給される画像処理装置用の制御コード(例えば、ESCコード、ページ記述言語、バンド記述言語等)中の画像情報に基づいて、ページ毎にラスタデータを生成し、プリンタエンジン105に送出する。
【0019】
プリンタエンジン105は、プリンタコントローラ103から供給されるラスタデータに基づいて、感光ドラム上に潜像を形成し、その潜像を記録媒体上に転写・定着(電子写真方式)することにより画像を記録する。
【0020】
パネル部104は、ユーザインタフェースとして使用される。ユーザは、パネル部104を操作することにより、所望の動作を指示することができる。また、パネル部104には、レーザービームプリンタ102の処理内容や、ユーザへの警告内容を表示する。
【0021】
<レーザビームプリンタの構成例>
(プリンタエンジンの構成例)
図2は、タンデム方式のカラーレーザビームプリンタ102のプリンタエンジン105の構成例を説明する断面図である。
【0022】
図2において、201はプリンタ筐体である。202は、ユーザが各種指示を与えるためのスイッチ、メッセージやプリンタの設定内容等を表示するためのLED表示器やLCD表示器等が配された操作パネルであり、図1に示すパネル部104の一態様である。203はボード収容部であり、ビデオコントローラ103及びプリンタエンジン105の電子回路部分を構成するボードを収容する。
【0023】
220は、用紙(記録媒体)Sを保持する用紙カセットであり、不図示の仕切り板によって電気的に用紙サイズを検知する機構を有する。221は、カセットクラッチであり、用紙カセット220上に載置された用紙Sの最上位の一枚を取り出して、取り出した用紙Sを不図示の駆動手段から伝達される駆動力によって給紙ローラ222まで搬送するカムを有する。このカムは、給紙の度に間欠的に回転し、1回転に対応して1枚の用紙Sを給紙する。223は用紙検知センサで、それぞれ用紙カセット220に保持されている用紙Sの量を検知する。給紙ローラ222は、用紙Sの先端部をレジストシャッタ224まで搬送するローラである。224は、レジストシャッタであり、用紙Sを押圧することにより給紙を停止することができる。
【0024】
230は、手差しトレイであり、231は、手差し給紙クラッチである。手差し給紙クラッチ231は、用紙Sの先端を手差し給紙ローラ232まで搬送するために使用され、手差し給紙ローラ232は、用紙Sの先端をレジストシャッタ224まで搬送するために使用される。画像記録に供する用紙Sは、用紙カセット220及び手差しトレイ230のいずれかの給紙手段を選択して給紙される。
【0025】
図1のプリンタエンジン105は、ビデオコントローラ103と所定の通信プロトコルにしたがって通信を行い、ビデオコントローラ部103からの指示にしたがって用紙カセット220手差しトレイ230の中からいずれかの給紙手段を選択する。さらに、印刷の開始指示に応じて該当する給紙部よりレジストシャッタ224まで用紙Sを搬送する。なお、プリンタエンジン105は、給紙部、潜像の形成、転写、定着等の電子写真プロセスに関する機構、排紙部及びそれらの制御部を含む。
【0026】
204a、204b、204c、204dは、感光ドラム205a、205b、205c、205dやトナー保持部等を有する画像記録部であり、電子写真プロセスにより、用紙S上にトナー像を形成する。一方、206a、206b、206c、206dは、レーザスキャナ部であり、画像記録部にレーザビームによる画像情報を供給する。画像記録部204a、204b、204c、204dには、用紙Sを搬送する用紙搬送ベルト250が複数の回転ローラ251〜254によって用紙搬送方向(図の下から上方向)に扁平に張設される。その最上流部においては、バイアスを印加した吸着ローラ225によって、用紙を用紙搬送ベルト250に静電吸着させる。また、このベルト搬送面に対向して4個の感光ドラム205a、205b、205c、205dが直線状に配設されており、画像形成手段を構成している。画像記録部204a、204b、204c、204dのそれぞれには、感光ドラムの周辺近傍を順次取り囲んで、帯電器、現像器が配置されている。
【0027】
レーザスキャナ部206a、206b、206c、206dに関して説明する。207a、207b、207c、207dは、レーザユニットであり、プリンタコントローラ103から送出される画像信号(/VIDEO信号)に応じて、内蔵の半導体レーザを駆動し、レーザビームを発射する。レーザユニット207a、207b、207c、207dから発せられたレーザビームは、ポリゴンミラー208a、208b、208c、208dにより走査され、感光ドラム205a、205b、205c、205d上に潜像を形成する。
【0028】
260は、定着器で、画像記録部204a、204b、204c、204dにより用紙Sに形成されたトナー画像を記録紙Sに熱定着させる。261は、搬送ローラで、用紙Sを排紙搬送する。262は、排紙センサで、用紙Sの排紙状態を検知する。263は、排紙ローラ兼両面印刷用搬送路を切り替えるローラで、用紙Sを排紙方向へ搬送し、用紙Sの搬送指示が排紙の場合はそのまま排紙トレイ264に排紙する。搬送指示が両面搬送の場合は、用紙Sの後端が排紙センサ262を通過した直後に回転方向を逆向きに変え、スイッチバックすることにより用紙Sを両面印刷用搬送路270へ搬送する。265は排紙積載量検知センサで、排紙トレイ264上に積載された用紙Sの積載量を検知する。
【0029】
270は、両面印刷用搬送路である。排紙ローラ兼両面印刷用搬送路切り替えローラ263により両面印刷用に搬送された用紙Sは、両面搬送ローラ271〜274によって再びレジストシャッタ224まで搬送される。そして画像記録部204a、204b、204c、204dへの搬送指示を待つ。
【0030】
なお、レーザビームプリンタ102には、さらにオプションカセットや封筒フィーダ等のオプションユニットを装備することができる。
【0031】
(プリンタコントローラの構成例)
図3は、本実施形態のプリンタコントローラ103の構成例を説明するブロック図である。
【0032】
図3において、301は、パネル部104とのデータ通信を行うパネルインタフェース部である。302は、ネットワークを介してホストコンピュータ等のデータ処理装置101と双方向に通信接続するためのホストインタフェース部である。ROM303の内部には、CPU305が実行すべきプログラムが記憶されている。304は、プリンタエンジン105と通信接続するためのエンジンインタフェース部である。
【0033】
CPU305は、パネルインタフェース部301を介して、ユーザがパネル部104において設定・指示した内容を確認することができる。また、エンジンインタフェース部304を介して、プリンタエンジン105の状態を認識することができる。また、CPU305は、ROM303に保持された制御プログラムコードに基づいて、CPUバス320に接続されたデバイスを制御するCPUである。画像メモリ306は、画像形成処理部307が生成したラスタデータを一時的に保持するための、RAMやディスクなどからなるメモリである。
【0034】
画像形成処理部307は、画像形成処理のためのデータをCPU305から受け取り、本発明における画像形成処理を行い、画像メモリ307へ画像を格納する処理を行う。本実施形態の好適な構成例として、画像形成処理部307は、後述するピクセル生成処理(図10のS1003、図11のS1103及びS1105)及び重ねあわせ処理(図15のS1504、図16のS1604及びS1606)を実現するハードウェアを有する。また、後述する他の処理部は、プログラムとしてROM303に保持し、実行時にメモリにロードして処理を行う構成をとる。
【0035】
画像制御情報メモリ308は、データ処理装置101から受信した画像制御コマンドや画像形成処理部308へのデータ、あるいはデータ処理装置101に送信するステータス情報などを記憶するための、RAMやディスクなどからなるメモリである。
【0036】
320は、アドレス、データ、コントロールバスを含むCPUバスである。
【0037】
<本実施形態の画像形成処理部の構成例>
図4Aは、本実施形態の画像形成処理部307の全体構成例を示す図である。
【0038】
本実施形態の画像形成処理部307は、複数のプロセッサ(第1第1プロセッサ400と第2第2プロセッサ401が直列に接続する構成をとる。
【0039】
直列に接続された構成において、前段に接続された第1プロセッサ400は、第1レンダリング処理制御部410、第1イメージピクセル生成部413、第1通信部416を有する。
【0040】
第1レンダリング処理制御部410は、外部から第1レンダリング情報420を入力とし動作を行うものであり、第1レンダリング情報42を解析し、第2プロセッサ401を制御するための情報である第2レンダリング情報421を生成する。また、データの解析結果を元に、必要に応じて第1イメージピクセル生成部413に対してイメージピクセルの生成処理を指示し、第1イメージピクセル情報422を生成する。
【0041】
第1イメージピクセル生成部413は、第1レンダリング処理制御部410の指示に応じて、第1イメージピクセル情報422を生成する。
【0042】
第1通信部416は、第1レンダリング処理制御部410が生成した第2レンダリング情報421と、必要に応じて第1イメージピクセル生成部413が生成する第1イメージピクセル情報422を第2プロセッサ401に対して転送処理を行う。また、第1イメージピクセル情報422を転送する際、第1イメージピクセル生成部413の生成する第1イメージピクセル情報422に応じて、転送方法に切り替える処理を行う。後述するが、ピクセル毎に転送する方法とレイヤ(重ね合わせられた各オブジェクトを本例ではレイヤと呼ぶ)ごとに転送する方法との切り替えである。さらに、第1通信部416は、第2レンダリング情報42を元に、生成された第1イメージピクセル情報の転送先を通信メモリ423と共有メモリ424を切り替える処理を行う。
【0043】
次に、後段に接続される第2プロセッサ401について説明する。
【0044】
第2プロセッサ401は、第2レンダリング処理制御部411、第2イメージピクセル生成部414、重ねあわせ処理部415、第2通信部417、第3通信部418を有する。
【0045】
第2レンダリング処理制御部411は、第2通信部417が取得する第2レンダリング情報421の解析処理を行う。そして指定される情報に応じて、第2イメージピクセル生成部414に指示を行い、第2イメージピクセル情報426を生成させる。さらに、重ね合わせ処理部415に指示を行い、重ねあわせ処理を行った結果を示す、重ね合わせピクセル情報427の生成を行う。
【0046】
第2イメージピクセル生成部414は、第2レンダリング処理制御部411の指示に応じて、第2イメージピクセル情報426を生成する。
【0047】
重ね合わせ処理手段415は、第2レンダリング処理制御部411の指示に応じて、重ねあわせ処理を行い、重ね合わせピクセル情報427の生成を行う。
【0048】
第2通信部417は、第1通信部416によって転送される第2レンダリング情報421を通信メモリ423から取得する。そして取得した第2レンダリング制御情報421を解析し、必要に応じて第1イメージピクセル情報422を通信メモリ423、もしくは共有メモリ424の指定される方から取得する。
【0049】
第3通信部418は、第2レンダリング情報421の情報を元に、第2イメージピクセル情報426、もしくは重ね合わせピクセル情報427を取得し、図3の画像メモリ306に出力する。
【0050】
(第1プロセッサの構成例)
図4Bは、後述のフローチャートを実行する第1プロセッサ400のハードウエア構成例を示すブロック図である。
【0051】
図4Bで、4001は第1プロセッサ400の動作を制御すると共に、第1レンダリング処理制御部410を実現するCPUである。4002は、CPU4001の動作に必要なプログラム及びデータを記憶するRAMである。
【0052】
RAM4002には、以下の情報を記憶する領域が確保される。420は、第1レンダリング情報を記憶する領域である。421は、第2レンダリング情報を記憶する領域である。4021は、現在処理中のレイヤレベルを示す変数"Level"を記憶する領域である。4022は、第1レンダリング情報を解析して第1プロセッサ400と第2プロセッサ401への負荷分担を制御するために使用する重ね合わせ複雑度を記憶する領域である。4023は、通信メモリ423と共有メモリ424とのいずれを使って第1イメージピクセル情報422を転送するかを決定するための、ピクセル長のしきい値を記憶する領域である。4024は、ピクセル長のしきい値4023とレンダリングするピクセル長とから、生成されたピクセル情報を通信メモリ423に出力するか/共有メモリ424に出力するかを記憶する領域である。
【0053】
4025は、現在処理をしているレイヤのピクセル長を示す値"Length"を記憶する領域である。4026は、現在処理を行っているビクセル数を示す変数"count"を記憶する領域である。4027は、第1イメージピクセル生成部413で生成されたピクセル値を記憶する領域である。4028は、第2レンダリング情報421のレイヤ種別情報を生成するための記憶領域である。
【0054】
4029は、CPU4001が実行するプログラムを図3のROM303からロードするプログラムロード領域である。
【0055】
4003は、CPUバス320を介して、図3のCPU305の指示で送られてくる第1レンダリング情報420(本例では、図3の画像制御情報メモリ308に準備されている)を受け取るための、CPUバス接続部である。
【0056】
以下、本例ではハードウエア構成の、第1イメージピクセル生成部413と第1通信部416が接続されている。
【0057】
(第2プロセッサの構成例)
図4Cは、後述のフローチャートを実行する第2プロセッサ400のハードウエア構成例を示すブロック図である。
【0058】
図4Cで、4011は第2プロセッサ401の動作を制御すると共に、第2レンダリング処理制御部411を実現するCPUである。4012は、CPU4011の動作に必要なプログラム及びデータを記憶するRAMである。
【0059】
RAM4012には、以下の情報を記憶する領域が確保される。421は、第2レンダリング情報を記憶する領域である。4031は、現在処理中のレイヤレベルを示す変数"Level"を記憶する領域である。4032は、現在処理をしているレイヤのピクセル長を示す値"Length"を記憶する領域である。4033は、現在処理を行っているビクセル数を示す変数"count"を記憶する領域である。
【0060】
4034は、本例で並列レイヤ生成処理の場合の前のレイヤのピクセル情報(Source 1)を記憶する領域である。4035は、本例で並列レイヤ生成処理の場合の後のレイヤのピクセル情報(Source 2)を記憶する領域である。4036は、既にピクセル生成処理あるいは重ね合わせ処理を実行した結果のピクセル情報で、現在のレイヤレベルで更に重ね合わせがされる元のピクセルあるいはレイヤ情報(Destination)を記憶する領域である。4037は、現在の重ね合わせ処理を実行した結果のピクセルあるいはレイヤ情報(Result)を記憶する領域である。
【0061】
4038は、CPU4011が実行するプログラムを図3のROM303からロードするプログラムロード領域である。
【0062】
以下、本例ではハードウエア構成の、第2イメージピクセル生成部414、重ね合わせ処理部415、第2通信部417、第3通信部418が接続されている。
【0063】
(描画領域の例)
図4Dは、本実施形態の画像形成処理部が処理する描画領域の一例を示す図である。
【0064】
430は、画像形成処理を行うページ領域を示す。431、432はページ領域430に含まれる描画オブジェクトを示す。433は、本実施形態の画像形成処理部が処理するページ領域を主走査方向にライン単位に分割したスキャンライン部を示す。434,435,436は、本実施形態の画像形成処理部が処理するページ領域をエッジ間の領域に分割した閉領域を示す。本実施形態の画像形成処理部は、前述したスキャンライン部やエッジ間の閉領域ごとに描画処理を行う。従って、後述する第1レンダリング情報、第2レンダリング情報は、前述したスキャンライン部、もしくはエッジ間に分割された閉領域の情報を示す。
【0065】
(第1レンダリング情報の構成例)
図5は、前述した第1レンダリング情報420の一構成例を示すデータフォーマットの図である。
【0066】
第1レンダリング情報420は、レンダリング制御情報500と複数のレイヤ情報501,502,...,503から構成される情報であり、同じオブジェクトの重なり状態を示すライン領域が定義されている。従って、複数の第1レンダリング情報420によって、ラインさらにページの画像が生成される。
【0067】
レンダリング制御情報500は、レイヤ数情報504とピクセル長情報505を保持する。
【0068】
レイヤ数情報504は、レンダリング制御情報500の後に続くレイヤ情報501,502,...,503の数を示す情報である。第1レンダリング処理制御部410は、このレイヤ数情報504を元に、レイヤ情報501,502,...,503を必要な数だけ読み込み、各レイヤに対する処理を行う。
ピクセル長情報505は、各レイヤにおいて生成するピクセル長を示す情報である。第1レンダリング処理制御部410は、このピクセル長情報505と各レイヤ情報501,502,...,503を第1イメージピクセル生成部413に渡し、ピクセルの生成処理を行う指示を行う。
【0069】
レイヤ1情報501、レイヤ2情報502、...、レイヤN情報503は、描画を行う各レイヤの描画処理を行うための詳細情報を示す。レイヤ1情報501、レイヤ2情報502、レイヤN情報503はそれぞれ、重ね合わせ種別情報506、507、508を保持する。また、必要に応じて描画方法詳細情報509、510、511を保持する。ここでいう描画方法詳細情報は、代表的なものでは拡縮情報や色変換情報等を示すが、この他の情報を保持しても構わない。
【0070】
重ね合わせ種別情報506、507、508は、各レイヤのピクセルをどのように重ね合わせるかを示す、重ね合わせ処理の方法を示す情報である。本値は例えば、GDIの重ね合わせ処理、あるいはPDFの重ね合わせ処理などを示す。
【0071】
(第2レンダリング情報の構成例)
図6は、第1プロセッサ400の第1レンダリング処理制御部410が生成し、第2プロセッサ401の第2レンダリング処理制御部411が使用する第2レンダリング情報421のフォーマットを示す。
【0072】
レイヤ種別情報701、702、703以外は、全て図5で説明したもののままの情報を生成する。
【0073】
レイヤ種別情報701、702、703は、第1イメージピクセル生成部413が第1レンダリング処理制御部410からピクセルの生成処理を指示され、イ第1メージピクセル情報422を生成したか、否かを示す情報である。本例では、第1レンダリング処理制御部410が並列レイヤ生成処理を指示した場合に"Parallel"が記憶される。また、単一のレイヤ生成処理を指示した場合に"conplete"が記憶される。一方、第1プロセッサ400ではレイヤ生成処理をせずに第2プロセッサでのレイヤ生成処理を指示した場合に"not complete"が記憶される。
【0074】
<本実施形態の画像形成処理部の動作例>
(第1レンダリング処理部の動作手順例)
図7は 第1レンダリング処理制御部410を実現するCPU4011の動作手順例を示すフローチャートである。
【0075】
まず、第1レンダリング処理制御部410のCPU4001は、ステップS601でレンダリング制御処理に必要な各パラメータの初期化処理を行う。ここで行う処理では、第1レンダリング情報420から、レンダリング制御情報500の取得処理を行う。さらに、取得したレンダリング制御情報500からレイヤ数情報504の取得処理を行う。また、処理したレイヤ数を示す情報(ここでは変数"Level"とする)を0で初期化する。
【0076】
次に、ステップS602に進み、CPU4001は、取得したレイヤ数情報504が1以下の値であるか否か(すなわち重ね合わせの有無)の判断処理を行う。1以下であった場合は重ね合わせは無いので、ステップS611に進み、それ以外であった場合は重ね合わせがあるので、ステップS603に進む。
【0077】
ステップS603では、CPU4001は、第1レンダリング情報420に含まれる全てのレイヤ情報の取得処理を行い、レイヤ情報の中から重ね合わせ種別情報の抽出を行う。そして、抽出した重ね合わせ種別情報を基に重ね合わせ処理の複雑度の判断処理を行う。判断の結果、重ね合わせ処理が"簡易"と判断された場合はステップS611に進み、"複雑"と判断した場合はステップS604に進む。
【0078】
重ね合わせ処理の複雑度の判断処理としては、予め重ねあわせ処理の各種別に対して重ね合わせ処理が"簡易"か"複雑"であるかを決めておく。そして、その情報を基に判断処理を行うものとする。実際には、GDI等の簡易的な重ねあわせ処理だけの場合であれば、"簡易"と判断するようにあらかじめ決めておく。また、PDFなどの複雑な重ねあわせ処理であれば、"複雑"と判断を行うように決めておく。さらに、透過値の処理が必要無い場合、”簡易”と判断し、透過値の処理が必要な場合、”複雑”と判断する。また、重ね合わせるオブジェクトがあらかじめ決める閾値以下だった場合、”簡易”と判断し、重ね合わせるオブジェクトがあらかじめ決める閾値以上だった場合、”複雑”と判断する。
【0079】
ステップS604では、CPU4001は、ピクセル長情報505を判断し、予め決めておくピクセル長のしきい値より長いか否かを判断する。予め決めておくしきい値以下の場合はステップS606に進み、しきい値を越える場合はステップS605に進む。ステップS605では、CPU4001は、後述するピクセルの生成処理で生成したピクセルの出力先を共有メモリ424に設定する。一方、ステップS606では、CPU4001は、後述するピクセルの生成処理で生成したピクセルの出力先を通信メモリ423に設定する。しきい値としては、例えばメモリ展開が負荷とならない程度の100ピクセルを使用するが、特に限定されるものでは無い。
【0080】
ステップS607では、CPU4001は、処理を行っていないレイヤ数(すなわち、レイヤ数−Levelに相当する)が2レイヤ以上存在するか否かを判断する。2レイヤ以上存在した場合はステップS608へ進み、2レイヤ以上存在しなかった場合はステップS610へ進む。ステップS608では、ピクセル長情報505を判断し、ピクセル長のしきい値より以下か否かを判断する。しきい値としては、例えばメモリ展開が負荷とならない程度の100ピクセルを使用するが、特に限定されるものでは無い。
【0081】
ここでの判断は以下の理由による。ピクセル長がしきい値以下の場合、ステップS609で行う並列レイヤ生成処理では、従来の問題であったピクセルの管理処理で費やす処理が小さくなるのでその効果が無くなることが考えられる。そこで、ステップS608で並列レイヤ生成処理の効果を判断するために、ピクセル長の判断を行う。しきい値以下の場合はステップS610に進み、しきい値を越える場合はステップS609に進む。
【0082】
ステップS609では、CPU4001は、イメージピクセルを2レイヤ分並列に生成処理を行う。本並列レイヤ生成処理は、ステップS601で取得したレイヤ情報から処理の対象となる2レイヤ分(Level, Level+1)のレイヤ情報を取得する。例えば、ここではレイヤ1情報501及びレイヤ2情報502を取得したとする。その際、それぞれの描画方法詳細情報509、510を基にイメージピクセルの生成処理を並列に行う。ここでいうピクセルの生成処理は、例えば、描画方法詳細情報509、510に含まれる拡縮情報や色変換情報を基に、ピクセル長情報505が示す数のピクセルを2レイヤ分、ピクセル毎に並列で生成する処理を行う。詳細は図8A及び図11を参照して後述する。
【0083】
ステップS610では、CPU4001は、1レイヤ分のイメージピクセルの生成処理を行う。本レイヤ生成処理は、ステップS601で取得したレイヤ情報から処理の対象となる1レイヤ分(Level)のレイヤ情報を取得する。例えば、ここでレイヤ1情報501を取得したとする。その際、描画方法詳細情報509を基イメージピクセルの生成処理を行う。ここでいうピクセルの生成処理は、例えば、描画方法詳細情報509に含まれる拡縮情報や色変換情報を基に、ピクセル長情報505が示す数のピクセルの生成を行う。詳細は図8B及び図10を参照して後述する。
【0084】
ステップS611では、CPU4001は、イメージピクセルの生成処理を第1プロセッサ400では行わずに、後段に位置する第2プロセッサ401に指示する。詳細は図8Cを参照して後述する。
【0085】
ステップS612では、CPU4001は、並列レイヤ生成処理S609によって2レイヤの処理が終了したので、レイヤ数をLeven+2にカウントアップする。一方、ステップS612では、CPU4001は、レイヤ生成処理S610によって1レイヤの処理が終了したので、レイヤ数をLeven+1にカウントアップする。
【0086】
ステップS614では、CPU4001は、処理したレイヤ数(Level)とレイヤ数情報504を比較し、レイヤ数がレイヤ数情報504より小さければ処理を続行し、レイヤ数がレイヤ数情報504以上であれば処理を完了する。
【0087】
(並列レイヤ生成処理S609)
図8Aは、図7の並列レイヤ生成処理S609を詳細を示したフローチャートである。
【0088】
ステップS801では、CPU4001は、並列レイヤ生成処理を行う2つのレイヤ(Level, Level+1)のレイヤ種別情報を生成し、並列レイヤ生成処理を行ったことを示す種別(ここでは"Parallel"という値で識別)をセットする。
【0089】
次に、ステップS802では、CPU4001は、実際に2レイヤ分のイメージピクセルを並列に生成処理を行う。詳細は図11を参照に後述する。
【0090】
(レイヤ生成処理S610)
図8Bは、図7のレイヤ生成処理S610を詳細を示したフローチャートである。
【0091】
ステップS803では、CPU4001は、レイヤ生成処理を行う1つのレイヤ(Level)のレイヤ種別情報を生成し、レイヤ生成処理を行ったことを示す種別(ここでは"complete"という値で識別)をセットする。
【0092】
次に、ステップS804では、CPU4001は、実際にイメージピクセルを1レイヤ分生成する処理を行う。詳細は図10を参照して後述する。
【0093】
(レイヤ分散処理S611)
図8Cは、図7のレイヤ分散処理S611を詳細を示したフローチャートである。
【0094】
ステップS805では、CPU4001は、レイヤ数情報504の取得処理を行い、処理したレイヤ数を示す情報(ここでは変数"Level"とする)を0で初期化する。
【0095】
ステップS806では、CPU4001は、レイヤ種別情報を生成し、後段に位置する第2プロセッサ401にイメージピクセル生成処理を分散させる旨を示す種別(ここでは"not complete"という値で識別)をセットする。
【0096】
ステップS807では、CPU4001は、処理したレイヤ数をLevel+1だけカウントアップする。そして、ステップS808で、CPU4001は、処理したレイヤ数とレイヤ数情報504を比較し、処理の完了を判断する。
【0097】
なお、本実施形態のレイヤ分散処理S611は、レイヤ数が1の場合のみとしている。しかし、かかる第2プロセッサ401へのレイヤ生成処理の分散は複数のレイヤについて行ってもよく、その数は第2プロセッサ401が実行する重ね合わせ処理の負荷に対応して変化させてもよい。また、レイヤ0として背景を組み込んで、レイヤ分散処理S611でレイヤ0と1のレイヤ生成処理を第2プロセッサ401に分散させてもよい。
【0098】
(レイヤ情報生成処理S801,S803,S806)
図9は、図8A乃至8Cで示したレイヤ情報生成処理(S801、S803、S806)の詳細を示すフローチャートである。
【0099】
ステップS901では、CPU4001は、レイヤ種別情報の領域4027を確保する処理である。次に、ステップS902では、CPU4001は、ステップS901で確保したレイヤ種別情報に、図8A乃至8Cに対応した各種別情報(Parallel, Complete, not complete)を格納する。ステップS903では、CPU4001は、ステップS902で準備された図8A乃至8Cに対応した各種別情報(Parallel, Complete, not complete)を、第2レンダリング情報421のレイヤ情報に付加する。
【0100】
(レイヤピクセル生成処理S804,S1405,S1410)
図10は、図8Bで示したレイヤピクセル生成処理(S804)の詳細を示すフローチャートである。なお、図10のレイヤピクセル生成処理と同様の手順が、第2プロセッサ401で実行されるレイヤピクセル生成処理(S1405,S1410)においても、CPU4011により実行される。
【0101】
ステップS1001では、CPU4001は、レイヤピクセル生成処理に必要な各パラメータの初期化処理を行う。例えば、処理したピクセル数を示す情報(ここでは変数"count"とする)を0で初期化する。さらに、図5で説明したピクセル長情報505の取得処理を行う。ステップS1002では、CPU4001は、描画方法詳細情報の取得処理を行う。ここで取得する描画方法詳細情報は、Level番目のレイヤの描画方法詳細情報を取得するものとする。
【0102】
次に、ステップS1003では、CPU4001は、第1イメージピクセル生成部413にLevel番目のレイヤのピクセル生成処理を指示する。ここで生成するピクセルは、count番目のピクセルの生成処理を行うものである。また、ここでいうピクセルの生成処理は、例えば、ステップS1002で取得した描画方法詳細情報に含まれる拡縮情報や色変換情報を元に、count番目のピクセルの生成を行うものである。なお、第2プロセッサ401におけるステップS1405,S1410においては、第2イメージピクセル生成部414に指示を行う。
【0103】
ステップS1004では、CPU4001は、ステップS1003で生成したピクセルを第2プロセッサ401に通信する。通信に用いるピクセルの出力先は、ピクセル長情報505を基に図7のステップS604〜S606で設定された出力先4024に基づき切り替える処理を行う。すなわち、ピクセル長情報505がしきい値以下の場合は出力先に通信メモリ423を用いる。一方、しきい値を越える場合は出力先に共有メモリ424を用いて通信を行う。
【0104】
ステップS1005では、CPU4001は、生成したピクセル数をcount+1だけインクリメントする処理である。本処理を行うことにより、生成したピクセル数の管理を行う。そして、ステップS1006では、処理したピクセル数(count)とピクセル長情報(Length)を比較し、処理の完了を判断する。ピクセル数(count)がピクセル長情報(Length)未満で処理が完了していない場合はステップS1003に戻り、ピクセル数(count)がピクセル長情報(Length)以上で処理が完了している場合は本処理を完了させる。
【0105】
(並列レイヤピクセル生成処理S802)
図11は、図7で示した並列レイヤピクセル生成処理(S802)の詳細を示すフローチャートである。
【0106】
ステップS1101では、CPU4001は、並列レイヤ生成処理に必要な各パラメータの初期化処理を行う。例えば処理したピクセル数を示す情報(ここでは変数"count"とする)を0で初期化する。さらに、図5で説明したピクセル長情報505の取得処理を行う。ステップS1102では、CPU4001は、描画方法詳細情報の取得処理を行う。ここで取得する描画方法詳細情報は、Level番目とLevel+1番目のレイヤの描画方法詳細情報を取得するものとする。
【0107】
ステップS1103では、CPU4001は、第1イメージピクセル生成部413にLevel番目のレイヤのピクセル生成処理を指示する。ここで生成するピクセルは、count番目のピクセルの生成処理を行うものである。また、ここでいうピクセルの生成処理は、例えば、ステップS1102で取得した描画方法詳細情報に含まれる拡縮情報や色変換情報を元に、count番目のピクセルの生成を行うものである。ステップS1104では、CPU4001は、ステップS1103で生成したピクセルを第2プロセッサ401に通信する。通信に用いるピクセルの出力先は、ピクセル長情報505を基に既に設定された出力先に切り替える処理を行う。すなわち、ピクセル長情報50しきい値以下の場合は通信メモリ423を用いて通信する。一方、しきい値を越える場合は共有メモリ424を用いて通信を行う。
【0108】
ステップS1105では、CPU4001は、第1イメージピクセル生成部413にLevel+1番目のレイヤのピクセル生成処理を指示する。ここで生成するピクセルはcount+1番目のピクセルの生成処理を行うものである。また、ここでいうピクセルの生成処理は、例えば、ステップS1102で取得した描画方法詳細情報に含まれる拡縮情報や色変換情報を元に、count+1番目のピクセルの生成を行うものである。ステップS1106では、CPU4001は、ステップS1105で生成したピクセルを第2プロセッサ401に通信する。通信に用いるピクセルの出力先は、ピクセル長情報505を基に既に設定された出力先に切り替える処理を行う。すなわち、ピクセル長情報505がしきい値以下の場合は通信メモリ423を用いて通信する。一方、しきい値を越える場合は共有メモリ424を用いて通信を行う。
【0109】
ステップS1107では、CPU4001は、生成したピクセル数をcount+1だけインクリメントする処理である。本処理を行うことにより、生成したピクセル数の管理を行う。そして、ステップS1108では、CPU4001は、処理したピクセル数(count)とピクセル長情報(Length)を比較し、処理の完了を判断する処理を示す。ピクセル数(count)がピクセル長情報(Length)未満で処理が完了していない場合はステップS1103に戻り、ピクセル数(count)がピクセル長情報(Length)以上で処理が完了している場合は本処理を完了させる。
【0110】
<本実施形態における並列レイヤ生成処理の具体例>
次に、図12及び図13A乃至13Cを用いて、本実施形態の特徴である並列レイヤ生成処理S609を行うことによる画像処理方法、特に通信方法におけるメリットを説明する。一例として、例えば1つの画像領域のレイヤ1のピクセルを示すRun Length1、レイヤ2のピクセルを示すRun Length2のピクセル生成処理を説明する。
【0111】
(レイヤ単位のビクセル生成)
まず、レイヤ単位でRun Lengthのピクセル生成を行い、各レイヤのピクセルを生成した都度、通信メモリ423へ出力を行う処理(図7のS610を繰り返す処理に相当)を行う場合を想定する。この時、通信メモリ423への格納状況は図12の通信状況1が示すようになる。通信状況1はピクセル順に出力している例である。
【0112】
また、第1プロセッサ400の処理時間1300は、図13Aに示すように、Run Length1の生成処理時間を示すピクセル生成処理時間1304と、Run Length2の生成処理時間を示すピクセル生成処理時間1305との和になる。そして、この場合は、第2プロセッサ401がRun Length1のピクセルと、Run Length2のピクセルとの重ねあわせ処理を行う際、必要の無いピクセルの取得処理も必要となってしまう。さらに、取得したピクセルの管理処理を、メモリを用いて行う必要性も出てくる。例えば、ピクセル"1","6"の重ね合わせ処理を行う際、第2プロセッサ401はピクセル"6"を取得する前に、第1プロセッサ400からピクセル"1"〜"5"までのデータの取得処理を行い、さらにメモリへの管理を行う必要がある。従って、第2プロセッサ401の処理時間1301としては、基本的には、重ねあわせ処理時間1307とメモリ読み出し処理時間1308が必要となるが、別途、メモリ書き出し時間1306を含んだ管理処理が必要となってしまう。
【0113】
(ピクセル単位の2レイヤのピクセル生成)
一方、図11のステップS1103〜S1106で示す処理のように、Run Length1のピクセルと、Run Length2のピクセルを交互に通信メモリ423へ出力することで、図12の通信状況2の状態になる。
【0114】
すると、第2プロセッサ401は、ピクセル"1","6"のみの取得が行え、無駄な取得処理や管理処理(メモリ書き出し時間1306)を省略することが可能となる。また、高速にアクセス可能なキュー方式のメモリから直接データの取得が行えることにより、メモリのレイテンシーによるパフォーマンス劣化を防ぐことも可能となる。その結果、第2プロセッサ処理時間1303は、重ね合わせ処理時間1310とメモリ読み出し処理時間1311のみとになる。
【0115】
これにより、図13Bに示すように、レイヤ単位の場合のメモリアクセス時間1312が、ピクセル単位ではメモリアクセス時間1313となり、第2プロセッサ処理時間1301を、第2プロセッサ処理時間1303に効率化することが可能となる。
【0116】
(3レイヤ以上の重ね合わせ処理例)
上記図13A及び図13Bでは、2レイヤの重ね合わせの場合の効率化を示した。図13Cには、3レイヤ以上の場合にも同様に効率化が図れることを示す。
【0117】
図13Cで、"D"は以下に図15及び図16でも使用するDestination"(今迄の重ね合わせの結果の格納場所)を示す。"R"は同様に"Result"(重ね合わせ処理の結果の格納場所)を示す。
【0118】
この場合の、第2プロセッサ処理時間は、既に終了した重ね合わせの結果の読出し時間1316と、重ね合わせ処理時間1315と、重ね合わせ処理結果の書き出し/読み出し処理時間1317との合計のみとなる。
【0119】
従って、図13Cの場合も、図13Aと同様に、レイヤ単位の処理と比較すると無駄な取得処理や管理処理(メモリ書き出し時間1306)を省略することが可能となる。
【0120】
(第2レンダリング処理部の動作手順例)
図14は、第2レンダリング処理制御部411が行うレンダリング制御処理の処理手順を示すフローチャートである。
【0121】
まず、第2レンダリング処理制御部411のCPU4011は、ステップS1401でレンダリング制御処理に必要な各パラメータの初期化処理を行う。ここで行う処理は、通信メモリ423から図6に示す第2レンダリング情報421を取得し、第2レンダリング情報421からレンダリング制御情報500の取得処理を行う。さらに、取得したレンダリング制御情報500からレイヤ数情報504の取得処理を行う。また、処理したレイヤ数を示す情報(ここでは変数"Level"とする)を0で初期化する。
【0122】
次に、ステップS1402に進み、CPU4011は、取得したレイヤ数情報504が1以下の値であるか否か(重ね合わせが有るか否か)の判断処理を行う。1以下であった場合は重ね合わせが無くステップS1410に進み、それ以外であった場合は重ね合わせが有りステップS1403に進む。
【0123】
ステップS1403では、CPU4011は、Level番目のレイヤ情報の取得処理を行い、レイヤ情報の中からレイヤ種別情報の抽出を行う。ステップS1404では、CPU4011は、ステップS1403で取得したレイヤ種別情報の値の判別処理を行う。レイヤ種別情報に"parallel"が指定されている場合は、ステップS1406に進む。レイヤ種別情報に"complete"が指定されている場合は、ステップS1407に進む。レイヤ種別情報に"not Composite"が指定されている場合は、ステップS1405に進む。
【0124】
ステップS1405及びS1410は、1レイヤ分のイメージピクセルの生成処理を示し、CPU4011は、図10で示したレイヤピクセル生成処理と同様の処理を、第2イメージピクセル生成部414を使って行う。
【0125】
ステップS1406では、CPU4011は、第1プロセッサ400の並列レイヤ生成処理S609で出力されるレイヤごとに交互に出力されたピクセルの重ねあわせ処理を行う。詳細は図16を参照して後述する。
【0126】
ステップS1407では、CPU4011は、第1プロセッサ400のレイヤ生成処理S610で出力されるピクセルの重ねあわせ処理を行う。詳細は図15を参照して後述する。
【0127】
ステップS1408では、CPU4011は、並列重ね合わせ処理S1406によって2レイヤの処理が終了したので、レイヤ数をLeven+2にカウントアップする。一方、ステップS1409では、CPU4011は、重ね合わせ処理S1407によって1レイヤの処理が終了したので、レイヤ数をLeven+1にカウントアップする。
【0128】
ステップS1411では、CPU4011は、処理したレイヤ数(Level)とレイヤ数情報504を比較し、レイヤ数がレイヤ数情報504より小さければ処理を続行し、レイヤ数がレイヤ数情報504以上であれば処理を完了する。
【0129】
(重ね合わせ処理S1407)
図15は、図14で示した重ねあわせ処理(S1407)の詳細を示すフローチャートである。
【0130】
ステップS1501では、CPU4011は、重ねあわせ処理に必要な各パラメータの初期化処理を行う。例えば、処理したピクセル数を示す情報(ここでは変数"count"とする)を0で初期化する。さらに、図6で説明したピクセル長情報505の取得処理を行う。
【0131】
ステップS1502では、CPU4011は、RAM4012の領域4033から、Destinationになるピクセルを取得する。このDestinationピクセルは、例えば、初期の場合は完全に下地の色を示す白色のベタ塗りか、もしくは前回重ねあわせ処理を行った結果のピクセルなどを示す。
【0132】
ステップS1503では、CPU4011は、Sourceになるピクセルを取得する。Sourceピクセルは、第1プロセッサ400が図10で説明したレイヤピクセル生成処理S804によって、通信メモリ423、もしくは共有メモリ424に出力したものである。従って、CPU4011は、ピクセル長情報505の値がしきい値以下であった場合は通信メモリ423から取得し、しきい値を越える場合は共有メモリ424から取得を行う。
【0133】
ステップS1504では、CPU4011は、ステップS1502とS1503で取得したDestinationピクセルとSourceピクセルとの重ねあわせ処理を、重ね合わせ処理部415に指示する。ここでは重ねあわせ種別情報に対応した、重ねあわせ処理を行うものとする。重ね合わせた結果は、Resultに格納される。
【0134】
ステップS1505では、CPU4011は、生成したピクセル数をcount+1だけインクリメントする処理である。本処理を行うことにより、生成したピクセル数の管理を行う。そして、ステップS1506では、CPU4011は、処理したピクセル数(count)とピクセル長情報(Length)を比較し、処理の完了を判断する処理を示す。ピクセル数(count)がピクセル長情報(Length)未満で完了していない場合は、ステップS1502に戻り、ピクセル数(count)がピクセル長情報(Length)以上で完了している場合、本処理を完了させる。
【0135】
(並列重ね合わせ処理S1406)
図16は、図14で示した並列重ねあわせ処理(S1406)の詳細を示すフローチャートである。
【0136】
ステップS1601では、CPU4011は、並列重ねあわせ処理に必要な各パラメータの初期化処理を行う。例えば、処理したピクセル数を示す情報(ここでは変数"count"とする)を0で初期化する。さらに、図6で説明したピクセル長情報(505)の取得処理を行う。
【0137】
ステップS1602では、CPU4011は、RAM4012の領域4036から、Destinationになるピクセルを取得する。このDestinationピクセルは、例えば完全に下地の色を示す白のベタ塗りか、もしくは前回重ねあわせ処理を行った結果のピクセルなどがある。
【0138】
ステップS1603では、CPU4011は、Source 1になるピクセルを取得する。Source 1ピクセルは、第1プロセッサ400が図11で説明した並列レイヤピクセル生成処理S802によって、通信メモリ423もしくは共有メモリ424に出力したものである。ここで、CPU4011は、ピクセル長情報505の値がしきい値以下であった場合は、通信メモリ423から取得し、しきい値を越える場合は、共有メモリ424から取得を行う。例えば、図12の通信状況2におけるレイヤ1のピクセル"1"や"2"などである。
【0139】
ステップS1604では、CPU4011は、ステップS1602とS1603で取得したDestinationピクセルとSource 1ピクセルの重ねあわせ処理を、重ね合わせ処理部415に指示する。ここでは該重ねあわせ種別情報に対応した、重ねあわせ処理を行うものとする。重ね合わせの結果は、Resultに格納される。
【0140】
ステップS1605では、CPU4011は、Source 2になるピクセルの取得処理を示す。Source 2ピクセルは、第1プロセッサ400が図11で説明した並列レイヤピクセル生成処理S802によって、通信メモリ423もしくは共有メモリ424に出力したものである。ここで、CPU4011は、ピクセル長情報505の値がしきい値以下であった場合は、通信メモリ423から取得し、しきい値を越える場合は、共有メモリ424から取得を行う。例えば、図12の通信状況2におけるレイヤ2のピクセル"6"や"7"などである。
【0141】
ステップS1604では、CPU4011は、ステップS1604とS1605で取得したResultピクセルとSource 2ピクセルの重ねあわせ処理を、重ね合わせ処理部415に指示する。ここでは重ねあわせ種別情報に対応した、重ねあわせ処理を行うものとする。
【0142】
ステップS1606では、生成したピクセル数をcount+1だけインクリメントする処理である。本処理を行うことにより、生成したピクセル数の管理を行う。そして、ステップS1607では、処理したピクセル数(count)とピクセル長情報(Length)を比較し、処理の完了を判断する処理を示す。ピクセル数(count)がピクセル長情報(Length)未満で完了していない場合は、ステップS1602に戻り、ピクセル数(count)がピクセル長情報(Length)以上で完了している場合、本処理を完了させる。
【0143】
<他の実施形態>
なお、本実施形態の最初にも指摘したが、本発明の技術思想は、プリンタ制御システムに限定されず、他のシステムにおける複数のプロセッサによる並列処理の高速化のも適用が可能である。例えば、本発明に適用されるソフトウェアは、プリンタ制御システムに限ったものではなく、ワープロ(ワードプロセッサ)系ソフトウェア、表計算系ソフトウェア、作図系ソフトウェア等に幅広く応用可能である。これらも本発明に含まれる。
【0144】
また、本発明の目的は、実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給してもよい。その場合、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成される。
【0145】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0146】
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RWを用いることができる。また、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【0147】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される。しかし、それ以外にも、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0148】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0149】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現される。これ以外にも、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も、本発明に含まれることは言うまでもない。
【0150】
この場合、上記プログラムは、該プログラムを記憶した記憶媒体から直接、又はインターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続された他のコンピュータやデータベース等からダウンロードすることにより供給される。
【0151】
上記実施の形態では、画像形成装置の印刷方式を電子写真方式とした場合を例に挙げたが、本発明は、電子写真方式に限定されるものではなく、インクジェット方式、熱転写方式、感熱方式、静電方式、放電破壊方式など各種印刷方式に適用することができる。
【0152】
上記プログラムの形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、OS(オペレーティングシステム)に供給されるスクリプトデータ等の形態から成ってもよい。
【図面の簡単な説明】
【0153】
【図1】本実施形態のプリンタ制御システムの構成例の概略を示す図である。
【図2】図1における画像処理装置であるレーザビームプリンタの一構成例を示す断面図である。
【図3】図1のプリンタコントローラの構成例を示すブロック図である。
【図4A】図3の画像形成処理部の構成例の概略を示すブロック図である。
【図4B】図4の第1プロセッサの構成例を示すブロック図である。
【図4C】図4の第2プロセッサの構成例を示すブロック図である。
【図4D】本実施形態の画像形成処理部が処理する描画領域の一例を示す図である。
【図5】本実施形態の第1レンダリング情報のデータフォーマット例を示す図である。
【図6】本実施形態の第2レンダリング情報のデータフォーマット例を示す図である。
【図7】図4Bの第1プロセッサで第1レンダリング制御処理部を実現する処理手順を示すフローチャートである。
【図8A】図7の並列レイヤ生成処理S609の処理手順例を示すフローチャートである。
【図8B】図7のレイヤ生成処理S619の処理手順例を示すフローチャートである。
【図8C】図7のレイヤ分散処理S611の処理手順例を示すフローチャートである。
【図9】図8A乃至図8Cのレイヤ情報生成処理S801,S803,S806の処理手順例を示すフローチャートである。
【図10】図8B及び図14のレイヤピクセル生成処理S604,S1405,S1410の処理手順例を示すフローチャートである。
【図11】図8Aの並列レイヤピクセル生成処理S802の処理手順例を示すフローチャートである。
【図12】本実施形態の画像形成処理部での第1及び第2プロセッサ間の通信方法のメリットを説明する図である。
【図13A】本実施形態の画像形成処理部の第2プロセッサでの処理時間のメリットを説明するタイミングチャートである。
【図13B】本実施形態の画像形成処理部の第2プロセッサでの処理時間のメリットを説明するタイミングチャートである。
【図13C】本実施形態の画像形成処理部の第2プロセッサでの3レイヤ以上の重ね合わせ処理の場合の処理時間を示すタイミングチャートである。
【図14】図4Cの第2プロセッサで第2レンダリング制御処理部を実現する処理手順を示すフローチャートである。
【図15】図14の重ね合わせ処理S1407の処理手順例を示すフローチャートである。
【図16】図14の並列重ね合わせ処理S1406の処理手順例を示すフローチャートである。
【特許請求の範囲】
【請求項1】
1つの画像領域の画像処理を複数のプロセッサで分担して行う画像処理装置であって、
入力される前記画像領域でのピクセル情報の重ね合わせの傾向を解析する解析手段と、
前記解析手段の解析結果に基づいて、複数のプロセッサで行う処理の分担を決定する決定手段と、
前記決定手段が決定した処理の分担に従って、前記複数のプロセッサへの処理の分担を制御する制御手段とを有することを特徴とする画像処理装置。
【請求項2】
前記複数のプロセッサは、前記画像領域で重ね合わせる各レイヤのピクセル情報の生成処理を行う第1プロセッサと、前記第1プロセッサの生成したピクセル情報を重ね合わせる第2プロセッサであることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記解析手段は、重ね合わせ処理の有無を解析し、
前記決定手段は、重ね合わせ処理が無い場合は、前記第1プロセッサにおけるピクセル情報の生成を前記第2プロセッサに分担させることを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記解析手段は、重ねあわせ処理の複雑度を解析し、
前記決定手段は、重ね合わせ処理が複雑でない場合は、前記第1プロセッサにおけるピクセル情報の生成を前記第2プロセッサに分担させることを特徴とする請求項2または3に記載の画像処理装置。
【請求項5】
前記解析手段は、重ねあわせ処理を行う領域の広さを解析し、
前記決定手段は、更に、前記領域の広さに従って、前記制御手段における前記第1プロセッサから第2プロセッサへのピクセル情報の通信方法を切り替えることを特徴とする請求項2乃至4のいずれか1項に記載の画像処理装置。
【請求項6】
前記決定手段は、前記領域の広さが第1しきい値以下の場合に、レイヤ単位にピクセル情報を生成して前記第1プロセッサから第2プロセッサへ送信するよう決定し、前記領域の広さが第1しきい値を越える場合に、ピクセル単位に複数のレイヤのピクセル情報を生成し前記第1プロセッサから第2プロセッサへ送信するよう決定することを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記決定手段は、前記領域の広さが第2しきい値以下の場合に、生成されたピクセル情報を前記第1プロセッサと第2プロセッサとの間を繋ぐ通信メモリに出力して前記第1プロセッサから第2プロセッサへ送信するよう決定し、前記領域の広さが第2しきい値を越える場合に、生成されたピクセル情報を共有メモリに出力して前記第1プロセッサから第2プロセッサへ送信するよう決定することを特徴とする請求項5または6に記載の画像処理装置。
【請求項8】
前記画像領域は、主走査方向のライン単位に分割された画像領域であることを特徴とする請求項1乃至7のいずれか1項に記載の画像処理装置。
【請求項9】
前記画像領域は、エッジ間の領域ごとに分割された画像領域であることを特徴とする請求項1乃至7のいずれか1項に記載の画像処理装置。
【請求項10】
1つの画像領域の画像処理を複数のプロセッサで分担して行う画像処理装置の制御方法であって、
入力される前記画像領域でのピクセル情報の重ね合わせの傾向を解析する解析工程と、
前記解析工程での解析結果に基づいて、複数のプロセッサで行う処理の分担を決定する決定工程と、
前記決定工程で決定した処理の分担に従って、前記複数のプロセッサへの処理の分担を制御する制御工程とを有することを特徴とする画像処理装置の制御方法。
【請求項11】
前記複数のプロセッサは、前記画像領域で重ね合わせる各レイヤのピクセル情報の生成処理を行う第1プロセッサと、前記第1プロセッサの生成したピクセル情報を重ね合わせる第2プロセッサであることを特徴とする請求項10に記載の画像処理装置の制御方法。
【請求項12】
前記解析工程では、重ね合わせ処理の有無を解析し、
前記決定工程では、重ね合わせ処理が無い場合は、前記第1プロセッサにおけるピクセル情報の生成を前記第2プロセッサに分担させることを特徴とする請求項11に記載の画像処理装置の制御方法。
【請求項13】
前記解析工程では、重ねあわせ処理の複雑度を解析し、
前記決定工程では、重ね合わせ処理が複雑でない場合は、前記第1プロセッサにおけるピクセル情報の生成を前記第2プロセッサに分担させることを特徴とする請求項11または12に記載の画像処理装置の制御方法。
【請求項14】
前記解析工程では、重ねあわせ処理を行う領域の広さを解析し、
前記決定工程は、更に、前記領域の広さに従って、前記制御工程における前記第1プロセッサから第2プロセッサへのピクセル情報の通信方法を切り替えることを特徴とする請求項11乃至13のいずれか1項に記載の画像処理装置の制御方法。
【請求項15】
請求項10乃至14のいずれか1項に記載の画像処理装置の制御方法の各工程をコンピュータに実行するためのプログラム。
【請求項16】
請求項15に記載のプログラムを記憶したコンピュータで読み取り可能な記憶媒体。
【請求項17】
1つの画像領域の画像処理を複数のプロセッサで分担して行う画像処理方法であって、
入力される前記画像領域でのピクセル情報の重ね合わせの傾向を解析する解析工程と、
前記解析工程での解析結果に基づいて、前記複数のプロセッサへの処理の分担を制御する制御工程とを有することを特徴とする画像処理方法。
【請求項18】
キュー方式のインタフェースで接続される第1プロセッサと第2プロセッサを用いて画像処理を行う画像処理装置であって、
画像の重ね合わせ処理が存在しない場合、第1プロセッサから第2プロセッサにイメージをピクセル順に出力させ、画像の重ね合わせ処理が存在する場合、第1プロセッサから第2プロセッサにイメージを交互に出力させる制御手段を有することを特徴とする画像処理装置。
【請求項1】
1つの画像領域の画像処理を複数のプロセッサで分担して行う画像処理装置であって、
入力される前記画像領域でのピクセル情報の重ね合わせの傾向を解析する解析手段と、
前記解析手段の解析結果に基づいて、複数のプロセッサで行う処理の分担を決定する決定手段と、
前記決定手段が決定した処理の分担に従って、前記複数のプロセッサへの処理の分担を制御する制御手段とを有することを特徴とする画像処理装置。
【請求項2】
前記複数のプロセッサは、前記画像領域で重ね合わせる各レイヤのピクセル情報の生成処理を行う第1プロセッサと、前記第1プロセッサの生成したピクセル情報を重ね合わせる第2プロセッサであることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記解析手段は、重ね合わせ処理の有無を解析し、
前記決定手段は、重ね合わせ処理が無い場合は、前記第1プロセッサにおけるピクセル情報の生成を前記第2プロセッサに分担させることを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記解析手段は、重ねあわせ処理の複雑度を解析し、
前記決定手段は、重ね合わせ処理が複雑でない場合は、前記第1プロセッサにおけるピクセル情報の生成を前記第2プロセッサに分担させることを特徴とする請求項2または3に記載の画像処理装置。
【請求項5】
前記解析手段は、重ねあわせ処理を行う領域の広さを解析し、
前記決定手段は、更に、前記領域の広さに従って、前記制御手段における前記第1プロセッサから第2プロセッサへのピクセル情報の通信方法を切り替えることを特徴とする請求項2乃至4のいずれか1項に記載の画像処理装置。
【請求項6】
前記決定手段は、前記領域の広さが第1しきい値以下の場合に、レイヤ単位にピクセル情報を生成して前記第1プロセッサから第2プロセッサへ送信するよう決定し、前記領域の広さが第1しきい値を越える場合に、ピクセル単位に複数のレイヤのピクセル情報を生成し前記第1プロセッサから第2プロセッサへ送信するよう決定することを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記決定手段は、前記領域の広さが第2しきい値以下の場合に、生成されたピクセル情報を前記第1プロセッサと第2プロセッサとの間を繋ぐ通信メモリに出力して前記第1プロセッサから第2プロセッサへ送信するよう決定し、前記領域の広さが第2しきい値を越える場合に、生成されたピクセル情報を共有メモリに出力して前記第1プロセッサから第2プロセッサへ送信するよう決定することを特徴とする請求項5または6に記載の画像処理装置。
【請求項8】
前記画像領域は、主走査方向のライン単位に分割された画像領域であることを特徴とする請求項1乃至7のいずれか1項に記載の画像処理装置。
【請求項9】
前記画像領域は、エッジ間の領域ごとに分割された画像領域であることを特徴とする請求項1乃至7のいずれか1項に記載の画像処理装置。
【請求項10】
1つの画像領域の画像処理を複数のプロセッサで分担して行う画像処理装置の制御方法であって、
入力される前記画像領域でのピクセル情報の重ね合わせの傾向を解析する解析工程と、
前記解析工程での解析結果に基づいて、複数のプロセッサで行う処理の分担を決定する決定工程と、
前記決定工程で決定した処理の分担に従って、前記複数のプロセッサへの処理の分担を制御する制御工程とを有することを特徴とする画像処理装置の制御方法。
【請求項11】
前記複数のプロセッサは、前記画像領域で重ね合わせる各レイヤのピクセル情報の生成処理を行う第1プロセッサと、前記第1プロセッサの生成したピクセル情報を重ね合わせる第2プロセッサであることを特徴とする請求項10に記載の画像処理装置の制御方法。
【請求項12】
前記解析工程では、重ね合わせ処理の有無を解析し、
前記決定工程では、重ね合わせ処理が無い場合は、前記第1プロセッサにおけるピクセル情報の生成を前記第2プロセッサに分担させることを特徴とする請求項11に記載の画像処理装置の制御方法。
【請求項13】
前記解析工程では、重ねあわせ処理の複雑度を解析し、
前記決定工程では、重ね合わせ処理が複雑でない場合は、前記第1プロセッサにおけるピクセル情報の生成を前記第2プロセッサに分担させることを特徴とする請求項11または12に記載の画像処理装置の制御方法。
【請求項14】
前記解析工程では、重ねあわせ処理を行う領域の広さを解析し、
前記決定工程は、更に、前記領域の広さに従って、前記制御工程における前記第1プロセッサから第2プロセッサへのピクセル情報の通信方法を切り替えることを特徴とする請求項11乃至13のいずれか1項に記載の画像処理装置の制御方法。
【請求項15】
請求項10乃至14のいずれか1項に記載の画像処理装置の制御方法の各工程をコンピュータに実行するためのプログラム。
【請求項16】
請求項15に記載のプログラムを記憶したコンピュータで読み取り可能な記憶媒体。
【請求項17】
1つの画像領域の画像処理を複数のプロセッサで分担して行う画像処理方法であって、
入力される前記画像領域でのピクセル情報の重ね合わせの傾向を解析する解析工程と、
前記解析工程での解析結果に基づいて、前記複数のプロセッサへの処理の分担を制御する制御工程とを有することを特徴とする画像処理方法。
【請求項18】
キュー方式のインタフェースで接続される第1プロセッサと第2プロセッサを用いて画像処理を行う画像処理装置であって、
画像の重ね合わせ処理が存在しない場合、第1プロセッサから第2プロセッサにイメージをピクセル順に出力させ、画像の重ね合わせ処理が存在する場合、第1プロセッサから第2プロセッサにイメージを交互に出力させる制御手段を有することを特徴とする画像処理装置。
【図1】
【図2】
【図3】
【図4A】
【図4B】
【図4C】
【図4D】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図8C】
【図9】
【図10】
【図11】
【図12】
【図13A】
【図13B】
【図13C】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4A】
【図4B】
【図4C】
【図4D】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図8C】
【図9】
【図10】
【図11】
【図12】
【図13A】
【図13B】
【図13C】
【図14】
【図15】
【図16】
【公開番号】特開2009−278468(P2009−278468A)
【公開日】平成21年11月26日(2009.11.26)
【国際特許分類】
【出願番号】特願2008−128793(P2008−128793)
【出願日】平成20年5月15日(2008.5.15)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成21年11月26日(2009.11.26)
【国際特許分類】
【出願日】平成20年5月15日(2008.5.15)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]