(57)【要約】【課題】  ラスタ画像をバンド単位に画像圧縮してメモリに格納する場合、圧縮後のデータサイズは不確定であるため、バンドごとに圧縮後のデータサイズが異なる。そのため、圧縮後のバンドデータの受信側では、受信データのデータサイズをカウントするなど、バンドの全データを受信したことを何らかの方法で判断する必要がある。【解決手段】  メモリに格納するパケット数がNpに達する前に、当該バンドの圧縮ラスタ画像がなくなった場合(S506)、パケット数がNpに達するまで空パケットをメモリに格納する(S521-524)ことで、1バンド分の圧縮画像データのパケット数を揃える。【選択図】    図6
2006129207.tif 000002
【特許請求の範囲】
【請求項１】
ラスタ画像をバンド単位にデータ圧縮する圧縮手段と、
前記バンド単位の圧縮ラスタ画像を所定数のパケットとしてメモリに格納する格納手段と、
前記メモリから前記パケットを読み出して、前記圧縮ラスタ画像をデータ伸長する伸長手段と、
前記伸長手段により伸長されたラスタ画像を画像形成手段に出力する出力手段とを有し、
前記格納手段は、前記パケットが前記所定数に達する前に、当該バンドの圧縮ラスタ画像がなくなった場合は、前記所定数に達するまで空パケットを前記メモリに格納することを特徴とする画像処理装置。
【請求項２】
前記格納手段は、前記パケットが前記所定数を超える場合、当該バンドの非圧縮ラスタ画像をパケットとして前記メモリに格納することを特徴とする請求項1に記載された画像処理装置。
【請求項３】
前記格納手段は、前記空パケットを前記メモリに格納する場合、前記メモリに格納する前記空パケットは一つとし、残りは前記空パケットを指すポインタを前記メモリに格納することを特徴とする請求項1または請求項2に記載された画像処理装置。
【請求項４】
ラスタ画像をバンド単位にデータ圧縮する圧縮手段、前記バンド単位の圧縮ラスタ画像を所定数のパケットとして格納するメモリ、前記メモリから前記パケットを読み出して、前記圧縮ラスタ画像をデータ伸長する伸長手段、並びに、前記伸長手段により伸長されたラスタ画像を画像形成手段に出力する出力手段を有する画像処理装置の画像処理方法であって、
前記パケットが前記所定数に達する前に、当該バンドの圧縮ラスタ画像がなくなった場合は、前記所定数に達するまで空パケットを前記メモリに格納することを特徴とする画像処理方法。
【請求項５】
前記パケットが前記所定数を超える場合、当該バンドの非圧縮ラスタ画像をパケットとして前記メモリに格納することを特徴とする請求項4に記載された画像処理方法。
【請求項６】
前記空パケットを前記メモリに格納する場合、前記メモリに格納する前記空パケットは一つとし、残りは前記空パケットを指すポインタを前記メモリに格納することを特徴とする請求項4または請求項5に記載された画像処理方法。
【請求項７】
画像処理装置を制御して、請求項4から請求項6の何れかに記載された画像処理を実現することを特徴とするプログラム。
【請求項８】
請求項7に記載されたプログラムが記録されたことを特徴とする記録媒体。
【請求項９】
ラスタ画像をバンド単位にデータ圧縮する圧縮手段と、
前記バンド単位の圧縮ラスタ画像を所定数のパケットとしてメモリに格納する格納手段と、
前記メモリから前記パケットを読み出して、前記圧縮ラスタ画像をデータ伸長する伸長手段と、
前記伸長手段により伸長されたラスタ画像を印刷する印刷手段とを有し、
前記格納手段は、前記パケットが前記所定数に達する前に、当該バンドの圧縮ラスタ画像がなくなった場合は、前記所定数に達するまで空パケットを前記メモリに格納することを特徴とする印刷装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置およびその方法、並びに、印刷装置に関し、例えば、ページ記述言語で記述された画像データをレンダリングして画像形成装置に出力する画像処理に関する。
【背景技術】
【０００２】
ページ記述言語(PDL)データをレンダリングするレンダラがプリンタの動作に同期してラスタデータを出力することができない場合、ハーフトーン処理後の画像データにJoint Bi-level Image Group (JBIG)などのロスレス圧縮を施してスプールし、一頁分のスプールが終了した時点で印刷する処理を行っている。なお、画像圧縮を行うのは、スプール用メモリのメモリ容量を減らしてコストを低減するためである（特許文献1参照）。
【０００３】
メモリ容量の削減のために、PDLデータをレンダリングし、ハーフトーン処理し、画像圧縮するの一連の処理を、一頁を複数のバンドに分割したバンド単位で行う場合がある。一般に圧縮後のデータサイズは不確定であるため、バンドごとに圧縮後のデータサイズが異なる。そのため、圧縮後のバンドデータを受信する側では、受信データのデータサイズをカウントするなど、バンドの全データを受信したことを何らかの方法で判断する。そして、各バンドのデータサイズを認識し、そのデータサイズをどこかに記録しておくことで、バンドデータを管理する必要がある。
【０００４】
【特許文献１】特開平10-147017号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、バンドの全データを受信したことを判断可能にすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【０００７】
本発明にかかる画像処理装置は、ラスタ画像をバンド単位にデータ圧縮する圧縮手段と、前記バンド単位の圧縮ラスタ画像を所定数のパケットとしてメモリに格納する格納手段と、前記メモリから前記パケットを読み出して、前記圧縮ラスタ画像をデータ伸長する伸長手段と、前記伸長手段により伸長されたラスタ画像を画像形成手段に出力する出力手段とを有し、前記格納手段は、前記パケットが前記所定数に達する前に、当該バンドの圧縮ラスタ画像がなくなった場合は、前記所定数に達するまで空パケットを前記メモリに格納することを特徴とする。
【０００８】
本発明にかかる画像処理方法は、ラスタ画像をバンド単位にデータ圧縮する圧縮手段、前記バンド単位の圧縮ラスタ画像を所定数のパケットとして格納するメモリ、前記メモリから前記パケットを読み出して、前記圧縮ラスタ画像をデータ伸長する伸長手段、並びに、前記伸長手段により伸長されたラスタ画像を画像形成手段に出力する出力手段を有する画像処理装置の画像処理方法であって、前記パケットが前記所定数に達する前に、当該バンドの圧縮ラスタ画像がなくなった場合は、前記所定数に達するまで空パケットを前記メモリに格納することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、バンドの全データを受信したことが判断可能になる。
【発明を実施するための最良の形態】
【００１０】
以下、添付図面を参照して、本発明の好適な実施例を詳細に説明する。
【実施例１】
【００１１】
［発明の概要］
バンド単位でハーフトーン処理後に画像圧縮を行った符号化データをパケットに分割して、外部メモリに送信し格納する。この際にパケットのサイズ、1バンドのパケット数は、1バンドのパケット数＝（非圧縮の場合のデータサイズ/パケットサイズ）の切り上げ＋1となるように設定する。そして、圧縮率が高く圧縮後のデータサイズが小さくなり、所定のパケット数以下に収まった場合は、空パケットを追加して1バンドのパケット数を揃える。圧縮率が1を超えた場合は、バンドの最終パケットは送信せずに、今まで送信したパケットを無効にし、圧縮前の生データをパケットに分割して外部メモリに送信し格納する。これにより、1バンドのデータが所定のパケット数に必ず収まることを保証する。
【００１２】
［プリンタの構成］
図1は実施例のプリンタの構成例を示すブロック図である。
【００１３】
ユーザは、パーソナルコンピュータ(PC) 600上で、プリンタドライバが提供する例えば図2に示すよなグラフィックユーザインタフェイス(GUI)を用いて、プリントしたい画像、枚数などを設定する。PC 600のプリンタドライバは、ユーザの設定に応じたPDLデータを生成し、PDLデータをネットワーク410を介してプリンタのメインコントローラ100に送信する。
【００１４】
メインコントローラ100のCPU 130は、ネットワークインタフェイスカード(NIC) 150によってPDLデータを受信し、バススイッチ16およびメモリコントローラ120を介して、受信したPDLデータを外部メモリ520に一旦スプールする。その後、CPU 130は、PDLデータを解析してディスプレイリストに展開し、レンダリング部170によりディスプレイリストを多値のラスタ画像にレンダリングして外部メモリ520に書き戻す。CPU 130は、1バンド分の多値ラスタ画像を外部メモリ520にスプールすると、バスコントローラ140および外部バス420を介して、多値ラスタ画像をプリンタコントローラ200へ送る。
【００１５】
プリンタコントローラ200のバスコントローラ210に受信された多値ラスタ画像は、プリンタ画像処理部220によりプリンタエンジン300に適した画像データに変換され、画像圧縮部230によりバンド単位に圧縮（符号化）される。画像圧縮部230から出力される圧縮データは、パケット送信部240により外部バス430を介してメインコントローラ100に送信される。その際、圧縮データを受け取ったパケット送信部240は、図3に示すように、受け取った圧縮コードを所定にサイズに分割し、パケットの属性を示すヘッダを先頭に付加したパケットを作成してメインコントローラ100に送信する。
【００１６】
一方、メインコントローラ100のパケットダイナミックメモリアクセスコントローラ（パケットDMAC）190は、受信したパケットを、図4に示すように、外部メモリ520に格納する。一頁分のパケットが外部メモリ520へスプールされると、CPU 130は、パケットDMAC 180を起動して、CMYK各色、数バンド分の圧縮データを外部バス430を介してプリンタコントローラ200へ送信する。その際、CPU 130は、外部メモリ530に圧縮データのスプール用に確保されているバンドバッファの数に応じて、送信するバンドの数を決める。
【００１７】
プリンタコントローラ200のパケット受信部290は、外部バス430を介して受信したパケットのヘッダを解析して、CMYKのどの色のデータを含むパケットかを解析し、データ部分のみをメモリコントローラ250を介して外部メモリ530の適切な場所に格納する。
【００１８】
1バンド分の圧縮データが外部メモリ530へスプールされると、画像伸長部280は、メモリコントローラ250により、外部メモリ530から圧縮データを読み出し、圧縮データを伸長してRawラスタデータに変換して、外部メモリ530の適切な場所に書き戻す。
【００１９】
CPU 130は、数バンド分のRawラスタデータが外部メモリ530に準備されると、プリンタエンジン300を起動する。また、プリンタ制御部270は、プリンタエンジン300からのリクエストに応じて、メモリコントローラ250により外部メモリ530からRawラスタデータを読み出して、Rawラスタデータをプリンタエンジン300に送信する。
【００２０】
プリンタエンジン300のプリント動作が開始されると、パケットDMAC 180、パケット受信部290、画像伸長部280、プリンタ制御部270は連携して動作し、各モジュールは外部メモリ530上に割り当てられたバッファが使用可能になったタイミングで動作を開始する。
【００２１】
プリンタ制御部270からプリンタエンジン300に送信されたRawラスタデータは、レーザ素子およびレーザドライバを有するパルス幅変調(PWM)部310によりレーザビームに変換され、マーキング部320で潜像の作成、現像により、記録紙上に可視画像が形成される。
【００２２】
図5はプリンタコントローラ200の詳細な構成例を示すブロック図である。以下、図5を参照して、各ブロックの詳細を説明する。
【００２３】
●プリンタ画像処理部
プリンタ画像処理部220の色空間圧縮部221は、バスコントローラ210から画像信号を受信し、画像信号をプリンタの色再現色域内に圧縮し、彩度、色相、下地および黒領域の調整を行う。また、入力画像信号の色空間がYUVの場合はRGB色空間に変換する。
【００２４】
下地除去・白黒変換部222は、色空間圧縮部221から入力されるRGB画像信号に非線形演算を施して画像の下地を除去する。
【００２５】
LOG変換部223は、下地除去・白黒変換部222から入力されるRGB画像信号に一次元のルックアップテーブル(1D LUT)を用いた非線形変換を施して、RGB画像信号をCMY画像信号に変換する。
【００２６】
CMYK変換部224は、三次元のルックアップテーブル(3D LUT)を用いて、LOG変換部223から入力されるCMY画像信号をCMYK画像信号に変換する。なお、メインコントローラ100から入力される画像信号の色空間がCMYKの場合は、色空間圧縮部221からCMYK変換部224までの処理がパススルーされる。
【００２７】
ガンマ補正部226は、CMYKそれぞれに独立の1D LUTを用いて、CMYK変換部224から入力されるCMYK画像信号の濃度を調整する。
【００２８】
ハーフトーン部227は、ガンマ補正部226から入力される多値のCMYK画像信号を4、2または1ビットの画像信号に階調変換にする。
【００２９】
SST部228は、パターマッチングにより画像のエッジ部を検出し、検出したエッジ部に変換を施すことでジャギーを軽減した滑らかな画像にする。
【００３０】
また、ビデオカウント部225は、CMYK変換部224から出力されるCMYK画像信号にガンマ補正を施し、補正後の信号値を加算する。この加算結果は、プリンタエンジン300におけるトナーの消費量の推測に利用される。
【００３１】
なお、ガンマ補正部226、ハーフトーン部227、SST部228およいびビデオカウント部225は、それぞれCMYK画像信号を独立に処理するための四系統の回路を有する。
【００３２】
●画像圧縮部
画像圧縮部230は、SST部228から出力されるCMYK画像信号をロスレス圧縮する。なお、ロスレス圧縮方式には、通常、JBIG圧縮を用いる。画像圧縮部230は、圧縮データをパケット送信部240に出力するとともに、メモリコントローラ250を介して外部メモリ530に非圧縮の画像信号を格納する。外部メモリ530に格納される非圧縮の画像信号は、画像圧縮部230において圧縮率が1を超えた場合に、圧縮データを生成し直して再送する場合に用いられる。なお、画像圧縮部230は、CMYK画像信号を独立に処理するための四系統の回路を有する。
【００３３】
●パケット送信部
パケット送信部240は、CMYK画像信号を独立に処理するための四系統のパケット作成部241、並びに、四系統のパケット作成部241が発生する外部バス430へのパケット送信要求を多重化するパケットマルチプレクサ(MUX)242によって構成される。
【００３４】
図6はパケット作成部241によるパケットの作成および送信処理を示すフローチャートである。また、図3はパケットを作成し外部バス430に送信するまでの概念を示す図である。
【００３５】
まず、パケットサイズSpおよびバンド当りのパケット数Npを設定する(S500)。この際、パケットサイズSp、バンド当りのパケット数Npは下式を満たすように設定する。
Np = (Snc/Sp) + 1      …(1)
ここで、Sncは非圧縮時のデータサイズ
ただし、Snc/Spに小数点以下の端数が出る場合は切り上げる
【００３６】
次に、パケットの属性を示すヘッダに記載すべき値をパケット作成部241のレジスタに設定する(S501)。ヘッダには下記の情報などが含まれる。
パケットID：パケット番号を示す
ターゲットID：パケットの送信先を示す
圧縮フラグ：画像データの圧縮、非圧縮を示す
画像データ長：パケットに含まれるデータ中で有効な画像データの長さを示す
再送フラグ：前に送ったパケットと同じパケットであることを示す
【００３７】
次に、バンドを構成する最初のパケットが有効なデータを含まない空パケット（画像データ長=0）とするために、まず、空パケットを送信し、パケットIDをインクリメントする(S502)。この空パケットは、パケット受信部290が外部メモリ520にスプールされたパケットを読み出す際に、パケット受信部290とパケットDMAC 180のハンドシェイクに使われる。
【００３８】
次に、画像圧縮部230から圧縮データの受信を開始し(S503)、パケットの送信を開始する。この際、ヘッダの画像データ長にはパケットサイズSpを設定しておく。パケット作成部241は、1パケット分のバッファを有さず、パケットを所定サイズに単純分割したサブパケット分のバッファしか有さない。従って、サブパケット分のバッファが一杯になると、パケット作成部241は、アトリビュート（ヘッダ情報のうち、送受信のハンドシェイクに最低限必要な項目のみをコピーしたもの）とサブパケットの送信をパケットMUX 242に要求する。そのため、最初のサブパケットは、ヘッダと画像データ（圧縮データ）の両方を含む。このようにして、パケット作成部241は、ヘッダを送信し(S504)、圧縮データを送信するとともに、画像圧縮部230から受信したデータサイズをカウントする(S505)。
【００３９】
続いて、画像圧縮部230が1バンド分の画像データの圧縮終了を知らせる割り込みの発生を監視し(S506)、受信データサイズがパケットサイズSpに達したか否かを判定し(S507)、パケットIDにより示されるパケット数が1バンド分のパケット数Np以下か否かを判定する(S508)。
【００４０】
割り込みが未発生の場合は、受信データサイズ＜パケットサイズSpの間は処理をステップS505に戻し、受信データサイズ=パケットサイズSpになり、かつ、パケット数＜Npであれば、パケットIDをインクリメントし、受信データサイズのカウント値をクリアして(S509)、処理をステップS504に戻し、次のパケットの送信処理を開始する。
【００４１】
また、割り込みが発生した場合は、既に送信済みのヘッダの画像データ長を正しい値に修正するために、受信データサイズのカウント値を画像データ長に設定したフッタをパケットDMAC 190に送信する(S520)。フッタはヘッダと同じ構成で、フッタを受信したパケットDMAC 190は、既に外部メモリ520に格納したヘッダをフッタで上書きして、ヘッダを修正する。
【００４２】
次に、パケット数＜Npを判定し(S521)、その判定結果が真ならば、1バンド分の画像データの圧縮が終了したにもかかわらずパケット数がパケット数Npに達しない場合であるから、パケットIDをインクリメントして空パケット（画像データ長=0）を送信する(S522)。続いて、ステップS523の判定により、パケットIDをインクリメントし、ヘッダにリピートフラグをセットしたパケットを送信する処理(S524)を、パケット数=Npになるまで繰り返す。
【００４３】
ステップS521またはS523の判定でパケット数=Npならば1バンド分のパケットの送信が終了したことになり、パケット送信部240は画像圧縮部230に問い合わせて、全バンドの画像データの送信が終了したか否かを判定し(S525)、未送信のバンドがあれば処理をステップS500へ戻す。
【００４４】
また、ステップS508でパケット数=Npになった場合は、1バンド分の圧縮データがパケット数Npに収まらなかった場合、言い換えれば圧縮率が1を超えた場合であるから、パケット送信部240は、割り込みを発生して、外部メモリ520に格納された、送信中のバンドの圧縮データの破棄をメインコントローラ100に要求し(S510)、パケットIDをクリアし(S511)、圧縮率が1を超えたバンドのRawデータの送信を画像圧縮部230に要求し(S512)、その後、処理をステップS505へ戻して、画像圧縮部230から受信したRawデータのパケットを送信する処理を行う。なお、この場合、画像圧縮部230が発生する割り込みは、1バンド分のRawデータの送信終了を知らせる信号になる。
【００４５】
［パケットDMAC］
図4は外部メモリ520のパケット（一色分）の格納状態を模式的に示す図である。
【００４６】
各パケットは、外部メモリ520上の任意の場所に格納され、パケットテーブルによって管理される。パケットテーブルは、任意のパケットIDをもつパケットが外部メモリ520上のどこに存在するかを示すポインタの集合であり、YnおよびXnの二次元のテーブルである。
【００４７】
パケットDMAC 190は、パケットテーブルを作成し、リピートフラグがセットされたパケットを受信すると、そのパケットを外部メモリ520に格納することなく、パケットテーブルの該当するパケットIDの部分に、一つ前に受信したパケットへのポインタを設定する。
【００４８】
外部メモリ520に格納されたパケットを外部バス430を介して送信する場合、送信したいパケットのパケットIDをパケットDMAC 180に設定する。パケットDMAC 180は、二次元DMAをサポートし、パケットIDの設定はYn、Xnそれぞれ独立に、送信開始パケットID、インクリメントまたはデクリメント、並びに、送信パケット数を設定可能である。例えば、xバンドの圧縮データを構成するパケットを送信したい場合は、送信開始パケットIDにYx-1, X0、X方向にインクリメント、送信パケット数に1, Xmaxを設定する。1バンドのパケット数をXmaxに揃えることで、送信開始パケットIDのYnのみを変更することにより、任意のバンドの圧縮データを構成するパケットを送信することが可能である。
【００４９】
また、リバース印刷（画像の向きを180度回転した印刷）のために最終バンドから送信したい場合は、送信開始パケットIDにYmax, X0、Y方向にデクリメント、X方向にインクリメント、送信パケット数にYmax, Xmaxを設定する。こうすれば、一頁分まとめてDMAすることが可能である。
【００５０】
なお、パケットDMAC 180は、パケット送信後、パケット受信部290からリターンパケット（送信パケットのヘッダのみを切り出したパケット）が返されるまで、次のパケットを送信しない。
【００５１】
［パケット受信部］
パケット受信部290は、パケット分配部291とパケットDMAC 292で構成される。パケット分配部291は、サブパケットをスプールするためのバッファをもち、サブパケットのスプールが完了するとサブパケットのアトリビュートを解析し、ターゲットに設定されているパケットDMAC 292にデータの引き取りを要求する。
【００５２】
要求を受けたパケットDMAC 292は、外部メモリ530上に割り当てられた自身のバッファの状態を確認し、使用可能であればパケットの画像データ部分のみを外部メモリ530に格納する。この際、パケットヘッダの圧縮フラグを解析して画像データが非圧縮であれば、そのバンドが非圧縮であることを画像伸長部280に通知する。また、サブパケットにヘッダが含まれていた場合はリターンパケットをメインコントローラ100のパケットDMAC 180に返すが、もし自身のバッファが使用不可の場合は、バッファが使用可になるまでリターンパケットを返さない。バッファは、バンド単位で確保されるので、バッファが使用不可になる可能性があるのはバンドの最初のパケットのみである。しかし、各バンドの最初のパケットは空パケットであるから、パケットDMAC 292は、すぐにパケット分配部291のサブパケットバッファを解放することでき、他のパケットの受信を妨げることはない。そして、自身のバッファが使用可能になった時点でリターンパケットを返して、次のパケットを受信する。
【００５３】
［画像伸長部］
画像伸長部280は、パケット受信部290によって外部メモリ530に格納されたバンド単位の圧縮データを読み出して伸長し、外部メモリ530の別領域に伸長したRawデータ（ラスタデータ）を書き込む。ただし、パケット受信部290から当該バンドが非圧縮であることが通知された場合は、外部メモリ530に格納したバンド単位の非圧縮データを読み出し、そのまま外部メモリ530の別領域にRawデータとして書き込む。
【００５４】
［プリンタ制御部］
プリンタ制御部270は、プリンタエンジン300のCMYK独立のリクエストに応じて、外部メモリ530からラスタデータを読み出して、プリンタエンジン300に送信する。プリンタ制御部270は、リバース印刷に対応するために、バンド単位の180度回転をサポートする。この機能の利用と、パケットDMAC 180による最終バンドからの送信を組み合わせることで、ページ単位のリバース印刷が実現される。
【００５５】
図7は画像伸長部280、パケット受信部290、プリンタ制御部270による外部メモリ530の共有状態を模式的に示す図である。画像伸長部280は安宿データバッファ531を、パケット受信部290はRawデータバッファ532を、プリンタ制御部270はRawデータバッファを使用する。つまり、画像伸長部280、パケット受信部290およびプリンタ制御部270は、外部メモリ530を共有し連携して動作する。
【００５６】
［PWM部］
図8はPWM部310の構成例を、図9はPWM部310の動作を示す図である。
【００５７】
プリンタコントローラ200からPWM部310に入力される画像信号は、ディジタルアナログ(D/A)変換部702によってアナログ信号71に変換され、コンパレータ703によって三角波発生部701が発生する三角波信号72と比較され、画像信号に応じたパルス幅のパルス幅信号73に変換される。パルス幅信号73は、レーザ駆動部704に送られ、画像信号に応じて点滅するレーザビームがレーザ素子705から出力される。このレーザビームはポリゴンスキャナ813によって偏向され、感光ドラム817上に静電潜像を形成する。
【００５８】
なお、PWM部310は、YMCKの各色ごとに存在し、それぞれ対応する感光ドラム817、821、825、829に静電潜像を形成する。
【００５９】
［マーキング部］
図10はマーキング部320の構成例を示す図である。
【００６０】
ポリゴンスキャナ813は、四つのレーザ素子805から出力される四本のレーザビームをそれぞれ偏向する。イエロー(Y)に対応するレーザビームはミラー814、815、816を経て感光ドラム817を走査し、マゼンタ(M)に対応するレーザビームはミラー818、819、820を経て感光ドラム821を走査し、シアン(C)に対応するレーザビームはミラー822、823、824を経て感光ドラム825を走査し、ブラック(K)に対応するレーザビームはミラー826、827、828を経て感光ドラム829を走査する。
【００６１】
イエロートナーを供給する現像器830は、感光ドラム817上の静電潜像を現像してイエロートナー像を形成し、マゼンタトナーを供給する現像器831は、感光ドラム821上の井泉潜像を現像してマゼンタトナー像を形成し、シアントナーを供給する現像器832は、感光ドラム825上の静電潜像を現像してシアントナー像を形成し、ブラックトナーを供給する現像器833は、感光ドラム829上の静電潜像を現像してブラックトナー像を形成する。
【００６２】
これら四色のトナー像は記録紙に転写され、フルカラーの出力画像が形成される。具体的には、記録紙カセット834、835または手差しトレイ836から供給される記録紙は、レジストローラ837により画像形成開始タイミングに同期して転写ベルト838に供給され、転写ベルトに吸着され搬送される。記録紙の搬送に伴い、感光ドラム817、821、825、829上のトナー像が記録紙に転写される。
【００６３】
各色のトナー像が転写された記録紙は、転写ベルト838から分離され、搬送ベルト839により搬送され、定着器840によってトナーが記録紙に定着される。定着器840を通り抜けた記録紙は、フラッパ850によって、一旦下方へ導かれ、記録紙の後端がフラッパ850を通り抜けた後、スイッチバックされて装置外へ排出される。これにより、記録紙は、フェイスダウン状態で排出され、先頭頁から順にプリントした場合に等しい重なり順で積載される。
【００６４】
四つの感光ドラム817、821、825、829はそれぞれ距離dをおいて等間隔に配置されている。また、搬送ベルト839は、記録紙を一定速度vで搬送するので、d/vの間隔をおいて各色成分の潜像形成を開始すれば、各色成分の画像形成タイミングが同期する。
【００６５】
また、除電器862は、記録紙を除電して、記録紙を搬送ベルト839から分離し易くする機能を、クリーナ861は搬送ベルト839の残留トナーを除去する機能を有する。
【００６６】
［スプール］
図11はページ単位のスプール処理を説明するフローチャートである。
【００６７】
PC 600は、ユーザから、図2に示したようなGUIを介して、プリントしたい画像、枚数、両面印刷の有無などの設定を受け付け、印刷指示を受け付け(S200)、ユーザ設定に応じて生成したPDLデータをネットワーク410を経てメインコントローラ100に送信する(S201)。
【００６８】
メインコントローラ100のCPU 130は、受信したPDLデータを外部メモリ520にスプールし(S210)、PDLデータを解析してディスプレイリストを作成し(S211)、ディスプレイリストをレンダリング部170に送る(S212)。レンダリング部170は、ディスプレイリストをバンド単位でRGBもしくはCMYKの点順次の多値ラスタ画像にレンダリングして外部メモリ520に書き込む。CPU 130は、1バンド分の多値ラスタ画像が外部メモリ520に書き込まれると、多値ラスタ画像をバスコントローラ140を介してプリンタコントローラ200に送信する(S213)。
【００６９】
プリンタコントローラ200のプリンタ画像処理部220は、多値ラスタ画像をプリンタエンジン300に適した画像データに変換し(S220)、変換後の画像データをCMYKの面順次に画像圧縮部230に送信する(S221)。画像圧縮部230は、バンド単位で画像データを圧縮（符号化）し、圧縮データをパケット送信部240に送信する(S222)。ただし、前述したように、圧縮率が1を超えた場合はRawデータを送り直す。パケット送信部240は、受信した圧縮データもしくはRawデータを、前述したように所定サイズのパケットとし、パケットの属性を示すヘッダを付加して、外部バス430を介してメインコントローラ100に送信する(S223)。
【００７０】
メインコントローラ100のパケットDMAC 190は、受信したパケットを外部メモリ520に格納し(S214)、受信したパケットの数が1バンド分のパケット数Npに達すると、1バンド分の処理が終了したと判定し(S215)、一頁を構成する最終バンドか否かを判定する(S216)。1バンド分の処理が未了、または、最終バンドではない場合は、処理をステップS213に戻し、次のバンドの処理を開始する。そして、全バンドの処理が終了するとスプールが完了する。
【００７１】
［スプール後のプリント］
図12はスプール後のプリント処理を示すフローチャートである。
【００７２】
CPU 130は、CMYK各色、所定数バンド分の圧縮データの受信をプリンタコントローラ200に要求する(S800)。なお、送信するバンド数は、外部メモリ530に圧縮データのスプール用として確保されているバッファサイズによって決める。
【００７３】
次に、CPU 130は、1バンド分のパケットを送信するようにパケットDMAC 180を設定してDMAを起動し(S801)、パケットDMAC 180は設定されたパケットを送信する(S802)。
【００７４】
パケット受信部290は、パケットを受信し(S810)、受信したパケットのヘッダを解析して、CMYKどの色のデータが含まれるパケットかを解析して、当該色に対応する外部メモリ530の圧縮データバッファ531に空きがあるか否かを判定し(S811)、空きがなければバッファが空くのを待つ。バッファが空くと、パケット受信部290は、受信したパケットのヘッダのみを取り出したリターンパケットをパケットDMAC 180に返して、次のパケットを要求し(S812)、受信したパケットのデータ部分のみを圧縮データバッファ531の適切な場所に格納する(S813)。
【００７５】
一方、CPU 130は、ステップS801で1バンド分のパケットの送信が終了したか否かを判定し(S803)、未了であればパケットの送信(S802)をパケットDMAC 180に繰り返させる。
【００７６】
画像伸長部280は、圧縮データバッファ531に1バンド分の圧縮データが準備できたか否かを判定し(S814)、準備ができた場合は、圧縮データを伸長したRawデータを格納するRawデータバッファ532に空きがあるか否かを判定し(S815)、空きがあれば、圧縮データバッファ531から読み出した圧縮データを伸長し、RawデータをRawデータバッファ532に書き込む(S816)。一方、パケット受信部290は、次のバンドを構成するパケットの送信をパケットDMAAC 180を介してCPU 130に要求する(S817)。
【００７７】
また、プリンタ制御部270は、Rawデータバッファ532がラスタデータで満たされたか否かを判定し(S818)、満たされると、プリンタエンジン300を起動し(S819)、プリンタエンジン300からのリクエストに応じて、Rawデータバッファ532からラスタデータを読み出してプリンタエンジン300に送信する(S819)。
【００７８】
なお、図12には、プリンタ制御部270からプリンタエンジン300へのラスタデータの送信後、パケット受信部290によるパケットの受信が再開されるように記載したが、上述したように、画像伸長部280、パケット受信部290、プリンタ制御部270は外部メモリ530を共有し連携して動作するものである。従って、バッファに空きがあれば、パケットの受信、ラスタデータの伸長、ラスタデータの送信が並行して行われることは言うまでもない。
【００７９】
一方、CPU 130は、プリンタ制御部270による割り込みの発生を監視し、一頁を構成する全バンドのパケットをパケットDMAC 180によって送信したか否かを判定し(S804)、未了であれば処理をステップS801に戻して、次の1バンド分のパケットの送信をパケットDMAC 180に設定し、一頁を構成する全バンドのパケットの送信が終了すると、その旨をプリンタコントローラ200に通知し(S805)、一頁分の処理を終了する。
【００８０】
また、プリンタコントローラ200は、CPU 130から一頁を構成する全バンドのパケットの送信が終了したことを通知された後、かつ、プリンタ制御部270がラスタデータの送信を終了すると、一頁分のプリント処理を終了する。
【００８１】
このように、1バンド分のパケット数を揃えることにより、パケット受信側は、所定数のパケットを受信することで、1バンド分のデータを受信したことを判断することができ、次のバンドのデータ送信を要求することができる。
【００８２】
また、パケットIDをYn, Xnとして、Ynを頁内のバンド番号、Xnをバンド内のパケット番号とすると、両面印刷などの場合に使われるリバース印刷を実施するために、メモリにスプールしたデータを最終バンドから取り出す操作を二次元DMAにより容易に実施することができる。
【００８３】
［他の実施例］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００８４】
また、本発明の目的は、前述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【００８５】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【００８６】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【００８７】
【図１】実施例のプリンタの構成例を示すブロック図、
【図２】プリンタドライバが提供するグラフィックユーザインタフェイスの一例を示す図、
【図３】パケットを作成し外部バスに送信するまでの概念を示す図、
【図４】外部メモリのパケット（一色分）の格納状態を模式的に示す図、
【図５】プリンタコントローラの詳細な構成例を示すブロック図、
【図６】パケット作成部によるパケットの作成および送信処理を示すフローチャート、
【図７】画像伸長部、パケット受信部、プリンタ制御部による外部メモリの共有状態を模式的に示す図、
【図８】PWM部の構成例を示す図、
【図９】PWM部の動作を示す図、
【図１０】マーキング部の構成例を示す図、
【図１１】ページ単位のスプール処理を説明するフローチャート、
【図１２】スプール後のプリント処理を示すフローチャートである。
【図１】
2006129207.tif 000003
【図２】
2006129207.tif 000004
【図３】
2006129207.tif 000005
【図４】
2006129207.tif 000006
【図５】
2006129207.tif 000007
【図６】
2006129207.tif 000008
【図７】
2006129207.tif 000009
【図８】
2006129207.tif 000010
【図９】
2006129207.tif 000011
【図１０】
2006129207.tif 000012
【図１１】
2006129207.tif 000013
【図１２】
2006129207.tif 000014