(57)【要約】【課題】  画像処理を行う場合に、イメージを構成する個々の走査ラインについて処理の高速化を図り、必要なメモリ領域を抑制しつつ、スループットの向上を実現する。【解決手段】  複数のプロセッサを用いて並列に画像処理を行う画像処理装置であって、イメージを構成する少なくとも１つの走査ラインについて、個々の走査ラインを複数の部分領域に分割した場合の、前記部分領域のそれぞれに前記複数のプロセッサのうち少なくとも１つを割り当てて並列に画像処理を行うことを特徴とする。画像処理結果を格納するメモリ領域として、前記複数のプロセッサ数より少ない走査ライン数分のメモリ領域を備える。【選択図】  図６
2005108114.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを用いて並列に画像処理を行う画像処理装置であって、
イメージを構成する少なくとも１つの走査ラインについて、個々の走査ラインを複数の部分領域に分割した場合の、前記部分領域のそれぞれに前記複数のプロセッサのうち少なくとも１つを割り当てて、並列に画像処理を行うことを特徴とする画像処理装置。
【請求項２】
前記画像処理が、画像圧縮処理又は画像伸長処理であることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
画像処理結果を格納するメモリ領域として、前記複数のプロセッサ数より少ない走査ライン数分のメモリ領域を備えることを特徴とする請求項１又は２記載の画像処理装置。
【請求項４】
走査ラインにおける部分領域の並び順に、対応する画像処理結果を後段の処理装置へ転送する手段を備えることを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
１走査ライン分の画像処理結果が揃った場合に、該画像処理結果を後段の処理装置へ転送する手段を備えることを特徴とする請求項１乃至４のいずれか１項に記載の画像処理装置。
【請求項６】
複数のプロセッサを用いて並列に画像処理を行う機能を備えるプリンタ制御装置であって、
イメージを構成する少なくとも１つの走査ラインについて、個々の走査ラインを複数の部分領域に分割した場合の、前記部分領域のそれぞれに前記複数のプロセッサのうち少なくとも１つを割り当てて並列に画像圧縮処理を行い、各部分領域に対応する圧縮されたデータをプリンタ装置へ送信することを特徴とするプリンタ制御装置。
【請求項７】
複数のプロセッサを用いて並列に画像処理を行う機能を備えるプリンタ装置であって、
イメージを構成する少なくとも１つの走査ラインについて、個々の走査ラインを複数の部分領域に分割した場合の、前記部分領域のそれぞれに対応する圧縮部分データをホスト装置から受信し、圧縮部分データに前記複数のプロセッサのうち少なくとも１つを割り当てて並列に画像伸長処理を行うことを特徴とするプリンタ装置。
【請求項８】
ホスト装置と、該ホスト装置と通信可能に構成されたプリンタ装置とを含んで構成され、ホスト装置及びプリンタ装置のそれぞれが複数のプロセッサを用いて並列に画像処理を行う機能を備えるプリンタシステムであって、
ホスト装置は、
イメージを構成する少なくとも１つの走査ラインについて、個々の走査ラインを複数の部分領域に分割した場合の、前記部分領域のそれぞれに複数のプロセッサのうち少なくとも１つを割り当てて並列に画像圧縮処理を行い、各部分領域に対応する圧縮されたデータ（以下、「圧縮部分データ」と呼ぶ）をプリンタ装置へ送信し、
プリンタ装置は、
イメージを構成する少なくとも１つの走査ラインについて、個々の走査ラインを複数の部分領域に分割した場合の、前記部分領域のそれぞれに対応する圧縮部分データをホスト装置から受信し、圧縮部分データに複数のプロセッサのうち少なくとも１つを割り当てて並列に画像伸長処理を行うことを特徴とするプリンタシステム。
【請求項９】
複数のプロセッサを用いて並列に画像処理を行う画像処理方法であって、
イメージを構成する少なくとも１つの走査ラインについて、個々の走査ラインを複数の部分領域に分割した場合の、前記部分領域のそれぞれに前記複数のプロセッサのうち少なくとも１つを割り当てて並列に画像処理を行うことを特徴とする画像処理方法。
【請求項１０】
請求項９記載の画像処理方法をコンピュータで実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを用いて並列に画像処理を行うための技術に関する。
【背景技術】
【０００２】
一般に、レーザプリンタシステムでは、ＲＩＰ（ラスターイメージプロセッサ）により、ＰＤＬ（ページ記述言語）で記述された印刷対象を印刷イメージに展開し、順次に走査ライン（ラスター）ごとに印刷エンジンに送り出して、印刷を実行する。
【０００３】
このとき、印刷イメージを１ページ分全部展開して記憶しておこうとすると、大変多くのメモリ領域が必要となってしまう。そのため、１ページを複数の走査ラインから構成されるバンドに分割し、その単位で印刷イメージを展開するのが普通である。
【０００４】
このようなバンド単位の展開処理を高速に行うために、複数のプロセッサそれぞれに各バンドを割り当てて並列に展開処理を行う構成が提案されている（特許文献１）。
【特許文献１】特開２００３−５１０１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＲＩＰをホスト装置が備える場合、展開した印刷イメージをプリンタ側に送信する必要がある。この場合、印刷イメージはデータ量が多いことから、ホスト装置において送信する前に圧縮処理を施し、プリンタ側で伸長するという枠組みを取るのが普通である。
【０００６】
ここで、ホスト装置やプリンタが複数のプロセッサを備えている場合、特許文献１のように、複数のプロセッサそれぞれに各バンドを割り当てて並列に圧縮処理や伸長処理を行うという構成が考えられる。
【０００７】
しかし、このようなバンド単位に並列化する手法では、個々の走査ライン（個々のバンド）のデータに対しては並列化がなされていない。そのため、最初の１走査ライン（１バンド）について処理結果が得られるまでに必要な時間が単一のプロセッサで処理を行う場合と変わらないといった問題が残る。別言すれば、複数のプロセッサで並列化しているにもかかわらず、実際に印刷が実行されるまでの立ち上がりについてはアドバンテージが得られていない。
【０００８】
また、バンド単位に並列化する手法の場合、スループットを向上させるためには、各プロセッサが自己に割り当てられたバンドについて並列に処理を実行できるように、プロセッサ数分の処理結果を格納するメモリ領域が必要となる。そのため、プロセッサ数を増やして並列度を上げていくと、それに応じて処理に必要なメモリ領域も増加してしまうという問題が生じる。
【０００９】
そこで、本発明は、個々の走査ラインについて処理の高速化を図り、特に、最初の処理結果が得られるまでに要する時間（立ち上がり時間）を短縮することを目的とする。
【００１０】
また、本発明は、複数のプロセッサにより並列化した場合に、必要なメモリ領域を抑制しつつ、スループットの向上を実現することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の画像処理装置は、複数のプロセッサを用いて並列に画像処理を行う画像処理装置であって、イメージを構成する少なくとも１つの走査ラインについて、個々の走査ラインを複数の部分領域に分割した場合の、前記部分領域のそれぞれに前記複数のプロセッサのうち少なくとも１つを割り当てて、並列に画像処理を行うことを特徴とする。かかる構成によれば、個々の走査ラインについての画像処理時間を短縮することができる。特に、最初の１走査ラインの画像処理時間が短縮されることで、イメージの画像処理を開始してから最初の走査ラインの画像処理が終了し、その処理結果を利用できるようになるまでの時間を短縮すること可能となり、立ち上がりの早い画像処理の流れを実現することができる。
【００１２】
好適には、前記画像処理が、画像圧縮処理又は画像伸長処理であることを特徴とする。
【００１３】
また好適には、画像処理結果を格納するメモリ領域として、前記複数のプロセッサ数より少ない走査ライン数分のメモリ領域を備えることを特徴とする。
【００１４】
また好適には、走査ラインにおける部分領域の並び順に、対応する画像処理結果を後段の処理装置へ転送する手段を備えることを特徴とする。
【００１５】
また好適には、１走査ライン分の画像処理結果が揃った場合に、該画像処理結果を後段の処理装置へ転送する手段を備えることを特徴とする。
【００１６】
このような本発明の構成によれば、最低１走査ライン分の画像処理結果を格納する容量のメモリ領域が有れば、並列化によって画像処理のスループットを向上させることが可能となる。
【００１７】
本発明のプリンタ制御装置は、複数のプロセッサを用いて並列に画像処理を行う機能を備えるプリンタ制御装置であって、イメージを構成する少なくとも１つの走査ラインについて、個々の走査ラインを複数の部分領域に分割した場合の、前記部分領域のそれぞれに前記複数のプロセッサのうち少なくとも１つを割り当てて並列に画像圧縮処理を行い、各部分領域に対応する圧縮されたデータをプリンタ装置へ送信することを特徴とする。
【００１８】
本発明のプリンタ装置は、複数のプロセッサを用いて並列に画像処理を行う機能を備えるプリンタ装置であって、イメージを構成する少なくとも１つの走査ラインについて、個々の走査ラインを複数の部分領域に分割した場合の、前記部分領域のそれぞれに対応する圧縮部分データをホスト装置から受信し、圧縮部分データに前記複数のプロセッサのうち少なくとも１つを割り当てて並列に画像伸長処理を行うことを特徴とする。
【００１９】
本発明のプリンタシステムは、ホスト装置と、該ホスト装置と通信可能に構成されたプリンタ装置とを含んで構成され、ホスト装置及びプリンタ装置のそれぞれが複数のプロセッサを用いて並列に画像処理を行う機能を備えるプリンタシステムであって、ホスト装置は、イメージを構成する少なくとも１つの走査ラインについて、個々の走査ラインを複数の部分領域に分割した場合の、前記部分領域のそれぞれに複数のプロセッサのうち少なくとも１つを割り当てて並列に画像圧縮処理を行い、各部分領域に対応する圧縮されたデータ（以下、「圧縮部分データ」と呼ぶ）をプリンタ装置へ送信し、プリンタ装置は、イメージを構成する少なくとも１つの走査ラインについて、個々の走査ラインを複数の部分領域に分割した場合の、前記部分領域のそれぞれに対応する圧縮部分データをホスト装置から受信し、圧縮部分データに複数のプロセッサのうち少なくとも１つを割り当てて並列に画像伸長処理を行うことを特徴とする。
【００２０】
本発明の画像処理方法は、複数のプロセッサを用いて並列に画像処理を行う画像処理方法であって、イメージを構成する少なくとも１つの走査ラインについて、個々の走査ラインを複数の部分領域に分割した場合の、前記部分領域のそれぞれに前記複数のプロセッサのうち少なくとも１つを割り当てて並列に画像処理を行うことを特徴とする。
【００２１】
本発明の画像処理方法は、コンピュータにより実施することができるが、そのためのコンピュータプログラムは、ＣＤ−ＲＯＭ、磁気ディスク、半導体メモリ及び通信ネットワークなどの各種の媒体を通じてコンピュータにインストールまたはロードすることができる。また、コンピュータプログラムが、プリンタ用カードやプリンタ用オプションボードに記録されて流通する場合も含む。
【発明の効果】
【００２２】
本発明によれば、イメージを構成する個々の走査ラインについて処理の高速化を図り、必要なメモリ領域を抑制しつつ、スループットの向上を実現することができる。
【発明を実施するための最良の形態】
【００２３】
（第１の実施形態）
図１は、本発明の実施形態のプリンタシステム１のハードウェア構成を示すブロック図である。図１に示すように、プリンタシステム１は、ホスト装置１０と、通信ネットワーク（ＬＡＮ、インターネット、専用線、パケット通信網、それらの組み合わせ等のいずれであってもよく、有線、無線の両方を含む）を介して該ホスト装置１０と通信可能に構成されるプリンタ装置（画像形成装置）２０とを含んでいる。
【００２４】
ホスト装置１０は、メインＣＰＵ、並列処理プロセッサ１１〜１４を備える並列処理ユニット１５、ＲＯＭ、ＲＡＭ、ユーザインタフェース、通信インタフェース等のハードウェアを備えている。本実施形態では、並列処理ユニット１５が４つのプロセッサ１１〜１４を備える構成としているが、プロセッサ数は設計に応じて２以上の任意の数（例えば８）とすることができる。
【００２５】
ホスト装置１０は、プリンタ装置２０に印刷を実行させるため必要な通常の制御機能として、プリンタドライバ手段１６を備えている。
【００２６】
プリンタドライバ手段１６は、通常のプリンタドライバと同様の機能構成であり、例えば、ホスト装置１０上で動作するアプリケーションプログラムからの印刷要求に応じて、ポストスクリプト等の所定のプリンタ制御言語により記述された印刷対象データに基づいてラスタイメージを生成するＲＩＰ手段、ラスタイメージに対して所定の画像処理（スクリーン処理など）を施して印刷イメージを作成する画像処理手段などを備える。
【００２７】
ただし、本実施形態のプリンタドライバ手段１６は、後述するように、並列処理ユニット１５を用いて、印刷イメージを構成する個々の走査ラインに対して並列に画像圧縮処理を実行する圧縮制御手段１７、並列処理ユニット１５による圧縮処理結果をプリンタ装置２０へ転送する転送手段１８を備えている点で、従来の構成と異なっている（図２参照）。
【００２８】
なお、これらの各手段は、ホスト装置１０内のＲＯＭやＲＡＭ、外部の記憶媒体等に格納されるプログラムをメインＣＰＵが実行することにより機能的に実現される。
【００２９】
プリンタ装置２０は、動力機構部とプリンタコントローラ２６を備えている。
【００３０】
動力機構部は、用紙をプリンタ内に供給する給紙機構、印字を行う印刷エンジン、及び用紙をプリンタ機外に排出する排紙機構等により構成される。印刷エンジンは、例えば、インクジェットプリンタや熱転写プリンタのように１文字単位で印刷するシリアルプリンタ、１行単位で印刷するラインプリンタ、ページ単位で印刷するページプリンタ等に対応する各種印刷エンジンを用いることができる。
【００３１】
プリンタコントローラ２６は、メインＣＰＵ、プロセッサ２１〜２４を備える並列処理ユニット２５、ＲＯＭ、ＲＡＭ、ユーザインタフェース、通信インタフェース等を備えている。なお、本実施形態では、並列処理ユニット２５が４つのプロセッサ２１〜２４を備える構成としているが、プロセッサ数は設計に応じて２以上の任意の数（例えば８）とすることができる。また、動力機構部が独立してＣＰＵを備えていてもよく、その場合は、動力機構部のＣＰＵが、所定の通信路を介して情報処理部のメインＣＰＵと通信を行い、印刷エンジンを制御して印刷動作を行わせることになる。
【００３２】
プリンタコントローラ２６は、通常のプリンタにおけるプリンタコントローラと同様の機能構成であり、例えば、ホスト装置１０からコマンドやデータを受信して受信バッファに格納する受信手段、動力機構部を制御して印刷を実行させるエンジン制御手段などを備える。
【００３３】
ただし、本実施形態のプリンタコントローラ２６は、後述するように、並列処理ユニット２５を用いて、個々の走査ラインに対して並列に伸長処理を実行する伸長制御手段２７、並列処理ユニット２５による伸長処理結果を印刷に用いられる順序で印刷エンジンへ転送する転送手段２８を備えている点で、従来の構成と異なっている（図２参照）。
【００３４】
なお、これらの各手段は、プリンタ装置２０内のＲＯＭやＲＡＭ、外部の記憶媒体等に格納されるプログラムをメインＣＰＵが実行することにより実現される。
【００３５】
以下、図３〜図９に示すフローチャートを参照して、プリンタシステム１における印刷処理について説明する。なお、各工程（符号が付与されていない部分的な工程を含む）は処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【００３６】
（ホスト装置１０における処理：図３〜図５）
プリンタドライバ手段１６は、外部又はホスト装置１０上で動作しているアプリケーションプログラムから印刷要求を受け付けると、プリンタ装置２０（プリンタコントローラ２６）に対して印刷指示コマンドを送信するとともに、ＲＩＰ手段などに対して処理の開始を指示する。
【００３７】
ＲＩＰ手段は、処理開始の指示を受け付けると、アプリケーションプログラムから受け取った、ポストスクリプト等の所定のプリンタ制御言語により記述された印刷対象データに基づいて、ラスタイメージを生成する。なお、アプリケーションプログラム等からラスタイメージの形式で印刷対象データを受け取ることができる場合は、ＲＩＰ手段による処理は省略できる。
【００３８】
画像処理手段は、前記生成されたラスタイメージに対して所定の画像処理（スクリーン処理など）を施し、印刷イメージを生成して、ＲＡＭの所定領域に格納する。
【００３９】
圧縮制御手段１７は、前記生成された印刷イメージを構成する主走査方向のライン（以下、単に「走査ライン」と呼ぶ）を副走査方向の順に選択する（ステップＳ１００）。なお、主走査方向、副走査方向は、プリンタ装置２０における走査を基準として定めるものとする。
【００４０】
次に、圧縮制御手段１７は、前記選択した走査ラインを複数の部分領域に分割する（Ｓ１０１）。以下では、かかる部分領域を「チャンネル」と呼び、走査ラインにおける並び順にチャンネル番号を付加して各チャンネルを識別するものとする（図１０参照）。
【００４１】
次に、圧縮制御手段１７は、前記選択した走査ラインにおいて各チャンネルに含まれる印刷イメージ（以下、「部分データ」と呼ぶ）の先頭位置を特定する（ステップＳ１０２）。例えば、１走査ラインが２０４８画素である場合、１つの走査ラインをプロセッサ数に応じて均等に４つの部分領域に分割し、第１画素、第５１２画素、第１０２４画素、第１５３６画素をそれぞれ部分データの先頭位置として特定することが考えられる。
【００４２】
なお、全走査ラインに共通してチャンネルを定め、予め各チャンネルの部分データの先頭位置を特定しておけば、ステップＳ１０１〜１０２は省略することができる。
【００４３】
次に、圧縮制御手段１７は、前記複数のチャンネルのそれぞれにプロセッサ１１〜１４のうち少なくとも１つを割り当てる（ステップＳ１０３）。具体的には、チャンネル１にはプロセッサ１１、チャンネル２にはプロセッサ１２というように、チャンネルとプロセッサの組み合わせを固定して割り当てるものとする。
【００４４】
次に、圧縮制御手段１７は、前記割り当てたプロセッサが新たなデータを処理できるかどうかを判断し、処理できる場合には、対応する部分データの先頭位置を前記割り当てたプロセッサに渡し、該部分データの読み出しを指示する(ステップＳ１０４）。
【００４５】
ここで、プロセッサが新たなデータを処理できる場合とは、該プロセッサが次の処理結果を新たに書き込むことができる場合である。判断方法としては、例えばプロセッサ１１〜１４のそれぞれによって書き込み可能な出力バッファが１つの部分データの処理結果に対応する容量である場合、処理結果を転送したかどうかによって新たに書き込みできるか否かが決まるため、プロセッサごとに処理結果が転送済みであるかどうかを示す転送終了フラグを用意して、該フラグに基づいてプロセッサが新たなデータを処理できるかどうかを判断する構成を考えることができる。
【００４６】
次に、圧縮制御手段１７は、前記生成された印刷イメージを構成する走査ラインのうち未選択の走査ラインがある場合は、ステップＳ１００に戻る（ステップＳ１０５）。
【００４７】
並列処理ユニット１５の各プロセッサ１１〜１４は、圧縮制御手段１７から部分データの先頭位置及び読み出し指示を受け付けると（ステップＳ２００：ＹＥＳ）、前記生成した印刷イメージを格納したＲＡＭの所定領域から該先頭位置に基づいて部分データを読み出す（ステップＳ２０１）。
【００４８】
そして、前記読み出した部分データに対して所定の圧縮処理を実行して圧縮部分データを生成し（ステップＳ２０２）、該圧縮部分データを自己の出力バッファに書き込む（ステップＳ２０３）。なお、所定の圧縮処理としては、設計に応じて従来の種々の圧縮アルゴリズムを採用することができ、例えば印刷イメージが２値データの場合であれば、ＪＢＩＧ（Joint Bi−level Image Experts Group）のアルゴリズムを採用することが考えられる。
【００４９】
転送手段１８は、チャンネルの並び順にサイクリックに該チャンネルに対応するプロセッサを選択する（ステップＳ３００）。
【００５０】
次に、転送手段１８は、前記選択したプロセッサにおいて部分データの圧縮処理が終了し、かつプリンタ装置２０（プリンタコントローラ２６）が圧縮部分データを受信可能である場合に（ステップＳ３０１：ＹＥＳ）、該プロセッサの出力バッファから圧縮部分データをプリンタ装置２０（プリンタコントローラ２６）に転送する（ステップＳ３０２）。このとき、圧縮部分データの境界が検出できるように、圧縮部分データの終端に（又は最初に）所定の境界情報を追加して転送する。
【００５１】
次に、転送手段１８は、圧縮部分データの転送が終了した場合、該プロセッサのプロセッサ別転送終了フラグをＯＮとする（ステップＳ３０３）。該プロセッサのプロセッサ別転送終了フラグは、圧縮制御手段１７が該プロセッサに読み出し指示を与える際にＯＦＦに戻されることになる。
【００５２】
次に、転送手段１８は、前記生成された印刷イメージについて、まだ全ての圧縮部分データを転送していない場合は、ステップＳ３００に戻る（Ｓ３０４）。
【００５３】
かかる構成によれば、１つの走査ラインを構成する各チャンネルに対して（すなわち、各部分データに対して）並列に圧縮処理が実行されるため、個々の走査ラインについての圧縮処理時間を短縮することができる。特に、最初の１走査ラインの圧縮処理時間が短縮されることで、印刷イメージの圧縮処理を開始してから最初の走査ラインの圧縮処理が終了し、その処理結果がプリンタ装置２０（プリンタコントローラ２６）へ転送されるまでの時間を短縮すること可能となり、立ち上がりの早い圧縮処理（ひいては印刷処理）を実現することができる。
【００５４】
（プリンタ装置２０における処理：図６〜図８）
プリンタコントローラ２６は、受信手段において受信したコマンドが印刷指示コマンドである場合、エンジン制御手段により動力機構部を制御して印刷の準備を整えるとともに、伸長制御手段２７等に対して処理の開始を指示する。
【００５５】
伸長制御手段２７は、処理開始の指示を受け付けると、データ受信バッファから次に読み出される予定の圧縮部分データ（チャンネル）に対して、プロセッサ２１〜２４のうち少なくとも１つを割り当てる（Ｓ４００）。
【００５６】
具体的には、チャンネル１の圧縮部分データにはプロセッサ２１、チャンネル２の圧縮部分データにはプロセッサ２２というように、チャンネルとプロセッサの組み合わせを固定して割り当てるものとする。
【００５７】
ここで、データ受信バッファは、例えばＲＡＭ上にＦＩＦＯタイプのバッファとして（又はＦＩＦＯタイプメモリにより）構成することが望ましい。この場合、上述したように、ホスト装置１０の転送手段１８はチャンネルの並び順に圧縮部分データをプリンタ装置２０（プリンタコントローラ２６）へ転送する構成となっているため、データ受信バッファにおける圧縮部分データの書き込み／読み出しもチャンネルの並び順となる。そのため、伸長制御手段２７は、次に読み出される予定の圧縮部分データがどのチャンネルに対応するかについて特定することができ、プロセッサとチャンネルの組み合わせを固定して割り当てることが可能となる。
【００５８】
次に、伸長制御手段２７は、前記割り当てたプロセッサが新たなデータを処理できるかどうかを判断し、可能な場合にはデータ受信バッファからの圧縮部分データの読み出しを指示する(ステップＳ４０１）。
【００５９】
ここで、例えばプロセッサ２１〜２４のそれぞれによって書き込み可能な出力バッファが１つの部分データに対応する容量である場合、上記判断は圧縮制御手段１７と同様に転送終了フラグに基づいて行うことができる。ただし、後述するように、転送手段２８の動作によって走査ライン単位で転送処理が行われるため、プロセッサ別に転送終了フラグを用意する必要はなく、上記判断は、走査ラインの先頭チャンネルに割り当てたプロセッサについてのみ行えばよいことになる。
【００６０】
次に、伸長制御手段２７は、まだ伸長していない圧縮部分データがある場合はステップＳ４００に戻る（ステップＳ４０２）。
【００６１】
並列処理ユニット２５の各プロセッサ２１〜２４は、伸長制御手段２７から圧縮部分データの読み出し指示を受け付けると（ステップＳ５００：ＹＥＳ）、データ受信バッファの読み出し位置にある圧縮部分データを読み出す（ステップＳ５０１）。各プロセッサは、圧縮部分データに対して追加された境界情報を検出することで、圧縮部分データの読み出し開始／終了位置を特定することができる。
【００６２】
次に、各プロセッサ２１〜２４は、前記読み出した圧縮部分データに対して所定の伸長処理を実行して、対応する部分データを生成し（ステップＳ５０２）、該部分データを自己の出力バッファに格納する（ステップＳ５０３）。なお、伸長処理は、ホスト装置１０の並列処理ユニット１５において採用した圧縮アルゴリズムに対応する伸長処理を採用する必要がある。
【００６３】
転送手段２８は、印刷に用いられる順序でデータを送信すべく、副走査方向の順に走査ラインを選択する（Ｓ６００）。
【００６４】
次に、転送手段２８は、前記選択した走査ラインについて、１走査ライン分の部分データが全て伸長された状態で各プロセッサの出力バッファに格納されているかどうかを判断する（Ｓ６０１）。
【００６５】
そして、全て伸長された状態で格納されていると判断した場合に、前記選択した走査ラインについて、印刷に用いられる順序でデータを送信すべく、チャンネルの並び順に、対応するプロセッサの出力バッファから部分データを読み出して、印刷エンジンへ転送する（Ｓ６０２）。
【００６６】
転送手段２８は、１走査ライン分のデータの転送が終了した場合、転送終了フラグをＯＮとする（Ｓ６０３）。なお、転送終了フラグは、印刷制御手段が次のラインについてチャンネル１のプロセッサに読み出し指示を与える際にＯＦＦに戻されることになる。
【００６７】
そして、前記生成された印刷イメージについて未選択の走査ラインがある場合は、Ｓ６００に戻る（Ｓ６０４）。
【００６８】
かかる構成によれば、１つの走査ラインを構成する各チャンネルに対して（すなわち、各圧縮部分データに対して）並列に伸長処理が実行されるため、個々の走査ラインについての伸長処理時間を短縮することができる。
【００６９】
特に、最初の１走査ラインの伸長処理時間が短縮されることで、圧縮された印刷イメージの伸長処理を開始してから最初の走査ラインについて伸長処理が終了し、その処理結果が印刷エンジンへ転送されるまでの時間を短縮すること可能となり、立ち上がりの早い伸長処理（ひいては印刷処理）を実現することができる。
【００７０】
更に、各プロセッサの出力バッファに１走査ライン分の部分データが揃った段階で印刷エンジンへ転送し、転送が終了した段階で次のラインについて伸長処理を行う、すなわち、走査ライン単位で同期して伸長処理及び転送処理を行う構成となっているため、伸長処理結果である部分データを格納するメモリ領域として最低１走査ライン分の容量のメモリ領域が有れば（具体的には、各プロセッサの出力バッファの容量≧１走査ライン分のメモリ容量／プロセッサ数、となっていれば）、並列化によってスループットを向上させることが可能となる。
【００７１】
言い換えれば、従来のように１つの走査ライン（又は１バンド）に１つのプロセッサを割り当てて並列処理した場合には、伸長処理結果を格納するメモリ領域として最低でもプロセッサ数と同数の走査ライン数分（又はバンド数分）のメモリ領域がなければプロセッサ数に応じた並列化による効果が得られないのに対し、本実施形態のように、１つの部分データに１つのプロセッサを割り当てて並列処理した場合には、プロセッサごとに部分データに対応するメモリ領域があれば足り、プロセッサごとに１走査ライン分のメモリ領域を用意する必要はないことから、伸長処理結果を格納するメモリ領域としてプロセッサ数より少ない走査ライン数分のメモリ領域しか利用できない場合でも、プロセッサ数に応じた並列化による効果を得ることができる。
【００７２】
例えば、伸長処理の並列化により、（１走査ラインの伸長処理時間）≒ＭＡＸ｛各プロセッサの圧縮部分データの伸長処理時間｝となるため、適切なプロセッサ数を備えることで、（１走査ラインの伸長処理時間）＜（印刷エンジンにおける１走査ラインの印刷に要する時間）とすることができ、一定速度でライン単位の印刷データをエンジンに供給し続ける必要があるレーザプリンタ等に対してもリアルタイムに対応することができる。
【００７３】
（転送手段２８の変形例：図９）
転送手段２８の構成では、各プロセッサは１走査ライン分のデータが揃わないと次の走査ラインについての伸長処理を行うことができないため、伸長処理についてはプロセッサ数に応じた並列化による効果を得ることができるものの、伸長処理と印刷エンジンへの転送処理とを並列に実行することはできない。
【００７４】
そこで、本変形例では、転送手段２８に代えて、ＦＩＦＯタイプの転送用バッファ、各プロセッサの出力バッファから転送用バッファへ転送する第１の転送手段２８１、転送用バッファから印刷エンジンへ転送する第２の転送手段２８２を設けることで、伸長処理と印刷エンジンへの転送処理を並列に実行できる構成とする。転送用バッファは、例えばＲＡＭ上に、又は専用のＦＩＦＯタイプメモリとして構成することができる。また、各転送手段２８１、２８２は、プリンタ装置２０内のＲＯＭやＲＡＭ、外部の記憶媒体等に格納されるプログラムをメインＣＰＵが実行することにより実現される。
【００７５】
具体的には、第１の転送手段２８１は、印刷に用いられる順序でデータを送信すべく、副走査方向の順に走査ラインを選択する（Ｓ７００）。
【００７６】
次に、第１の転送手段２８１は、前記選択した走査ラインについて、印刷に用いられる順に、すなわち並び順にチャンネルを選択する（Ｓ７０１）。
【００７７】
次に、第１の転送手段２８１は、前記選択したチャンネルに対応するプロセッサの出力バッファに部分データが伸長された状態で格納されているかどうかを判断する（Ｓ７０２）。そして、格納されていると判断した場合に、前記選択したチャンネルに対応するプロセッサの出力バッファから部分データを読み出して転送用バッファに格納し（Ｓ７０３）、前記選択したチャンネルに対応するプロセッサの転送終了フラグをＯＮにする（Ｓ７０４）。なお、各プロセッサの転送終了フラグは、伸長制御手段が該プロセッサに読み出し指示を与える際に、ＯＦＦに戻される。
【００７８】
次に、第１の転送手段２８１は、前記選択した走査ラインについて未選択のチャンネルがある場合はＳ７０１へ戻り（Ｓ７０５）、そうでない場合であって未選択の走査ラインがある場合は、次の走査ラインを選択すべくＳ７００に戻る（Ｓ７０６）。
【００７９】
一方、第２の転送手段２８２は、転送用バッファに１走査ライン分のデータが格納されているかどうかを判断し（Ｓ８００）、格納されていると判断した場合に、その１走査ライン分のデータを読み出して、印刷エンジンへ転送する（Ｓ８０１）。なお、ＦＩＦＯタイプの転送バッファには第１の転送手段によって印刷に用いられる順に部分データが格納されているため、第２の転送手段２８２は、転送バッファから順番に読み出して転送すれば、印刷に用いられる順序で印刷エンジンへ転送することができる。
【００８０】
かかる変形例の構成では、各プロセッサは、自己の処理結果である部分データが転送用バッファに転送された段階で次の圧縮部分データについて伸長処理を開始することができ、従って、転送バッファから印刷エンジンへの転送処理（第２の転送手段による処理）と並列に伸長処理を実行することが可能となる。
【００８１】
（その他）
本発明は上記実施形態に限定されることなく、種々に変形して適用することが可能である。例えば、本発明は、イメージを圧縮／伸長するシステムであれば、プリンタシステム以外に対しても適用することができる。
【００８２】
また例えば、上記実施形態では、プリンタ装置２０が並列処理ユニット２５、プリンタコントローラ２６を備える構成としているが、本発明は必ずしもこのような構成に限られない。例えば並列処理ユニット２５やプリンタコントローラ２６をプリンタ装置２０に接続可能な外部装置として構成することも考えられる。更には、並列処理ユニット２５やプリンタコントローラ２６を例えばＰＣＩバス等の規格によりホスト装置１０に接続可能な装置として構成してもよい。並列処理ユニット２５をホスト装置１０に接続する構成の場合、ホスト装置１０のメインＣＰＵ等によってプリンタコントローラ２６の各機能を実現する構成としてもよい。
【００８３】
また例えば、上記実施形態では、１走査ラインをプロセッサ数に応じて均等に部分領域に分割する構成について説明したが、例えばプロセッサのスペック等に応じて割り当てる部分領域の大小を変えるなど、必ずしも均等に分割しなくてもよい。また、部分領域の分割数（チャンネル数）は、必ずしもプロセッサ数と等しくなくてもよい。
【００８４】
また例えば、上記実施形態では、チャンネルとプロセッサの組み合わせを固定して割り当てる構成について説明したが、例えば、処理が終了したプロセッサを次のチャンネルに割り当てるように構成してもよい。この場合、走査ラインごとにプロセッサとチャンネルの対応関係が異なる可能性がある。なお、並列処理ユニット１５、２５のプロセッサのみならず、メインＣＰＵに対してもチャンネルを割り当てて、並列処理を実行する構成としてもよい。
【００８５】
また例えば、上記実施形態では、プロセッサ１１〜１４がＲＡＭから部分データを読み出す構成について説明としたが、例えばホスト装置１０がＲＡＭからプロセッサ１１〜１４へ部分データを転送する手段（例えば、ＤＭＡ転送手段）を備える場合は、圧縮制御手段は該手段に対して指示を行えばよい。この場合、プロセッサ１１〜１４は該手段からの転送を受けて処理を実行することになる。同様に、例えばプリンタ装置２０がデータ受信バッファからプロセッサ２１〜２４へ圧縮部分データを転送する手段（例えば、ＤＭＡ転送手段）を備える場合は、伸長制御手段は該手段に対して指示を行えばよく、プロセッサ２１〜２４は該手段からの転送を受けて処理を実行することになる。
【００８６】
また例えば、上記実施形態では、プロセッサ１１〜１４（プロセッサ２１〜２４）のそれぞれによって書き込み可能な出力バッファが１つの部分データの処理結果に対応する容量である場合について説明したが、各プロセッサがそれぞれ前記容量以上の出力バッファに書き込み可能となっていてもよい。この場合、各プロセッサは、出力バッファの容量が許す限り次々と圧縮処理（伸長処理）を行うことができる。なお、各プロセッサの出力バッファは、並列処理ユニット内に備える構成のほか、ホスト装置１０やプリンタ装置２０のＲＡＭの一部を用いて構成してもよい。
【００８７】
また例えば、上記実施形態では、印刷イメージの全走査ラインについて並列処理を行う構成について説明したが、印刷イメージを構成する少なくとも１つの走査ラインについて本発明を適用すれば、該走査ラインについて圧縮処理時間／伸長処理時間の短縮という効果を得ることができる。
【００８８】
また例えば、上記実施形態では、転送手段１８が逐次的に圧縮部分データをプリンタ装置２０へ転送する構成について説明したが、例えば１走査ライン分が揃うまで待ってバースト的に転送する構成としてもよい。このとき、例えば圧縮部分データをいったんＲＡＭに格納してから転送する構成としてもよい。
【００８９】
また例えば、上記実施形態では、転送手段１８がチャンネルの並び順に転送する構成について説明したが、圧縮部分データにチャンネルの識別情報を追加して転送することで、並び順と異なる順序で転送する構成とすることもできる。この場合、伸長制御手段２７は、前記識別情報に基づいて割り当てるプロセッサを判断することができる。
【００９０】
また例えば、上記実施形態では、転送手段２８（又は第２の転送手段２８２）が１走査ライン分のデータが揃ったところで印刷エンジンへデータを転送する構成について説明しているが、印刷エンジンのタイプによっては、１走査ライン分のデータが揃うのを待つことなく、又は複数走査ライン分のデータが揃ったところで、印刷エンジンへデータを転送する構成としてもよい。
【図面の簡単な説明】
【００９１】
【図１】本発明の実施形態におけるプリンタシステムのハードウェア構成を示すブロック図である。
【図２】プリンタドライバ手段１６、プリンタコントローラ２６の機能構成図を示すブロック図である。
【図３】圧縮制御手段１７の処理内容を示すフローチャートである。
【図４】並列処理ユニット１５における処理内容を示すフローチャートである。
【図５】転送手段１８の処理内容を示すフローチャートである。
【図６】伸長制御手段２７の処理内容を示すフローチャートである。
【図７】並列処理ユニット２５における処理内容を示すフローチャートである。
【図８】転送手段２８の処理内容を示すフローチャートである。
【図９】転送手段２８の変形例における処理内容を示すフローチャートである。
【図１０】チャンネルを説明するための図である。
【符号の説明】
【００９２】
１  プリンタシステム、１０  ホスト装置、  １１〜１４  並列処理用プロセッサ、  １５  並列処理ユニット、  １６  プリンタドライバ手段、  １７  圧縮制御手段、  １８  転送手段、  ２０  プリンタ装置、  ２１〜２４  並列処理用プロセッサ、  ２５  並列処理ユニット、  ２６  プリンタコントローラ、  ２７  伸長制御手段、  ２８  転送手段
【図１】
2005108114.tif 000003
【図２】
2005108114.tif 000004
【図３】
2005108114.tif 000005
【図４】
2005108114.tif 000006
【図５】
2005108114.tif 000007
【図６】
2005108114.tif 000008
【図７】
2005108114.tif 000009
【図８】
2005108114.tif 000010
【図９】
2005108114.tif 000011
【図１０】
2005108114.tif 000012