説明

印刷装置、制御方法および制御プログラム

【課題】印刷装置における動作の停滞を防ぎ、処理能力を向上させる。
【解決手段】印刷領域で使用される色データと色データを参照するための参照データとの対応関係を記述した印刷領域毎のパレットを生成し、印刷領域毎の中間コードに基づき、パレットに記述された色データに対応する参照データをビットマップ画像データとして展開する制御部と、展開されたビットマップ画像データを取得して所定の処理を実行する処理部とを備えた印刷装置であって、制御部は、印刷領域毎のビットマップ画像データに関する所定の情報からなる処理要求を処理部からの所定の通知を待つことなく処理部に対して設定し、印刷領域毎のパレットを処理部からの所定の通知を待つことなく処理部に提供し、処理部は、設定された処理要求をキューにより管理し、提供された印刷領域毎のパレットを所定のメモリーに複数記憶する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、印刷装置、印刷装置についての制御方法および制御プログラムに関する。
【背景技術】
【0002】
1ページ毎に画像オブジェクトの印刷コマンドを有する印刷データを、ページ画像の一部であるバンド領域毎に中間コードに変換し、バンドで使用される色データを有するパレットを生成し、バンド毎の中間コードに基づきパレットの色データを参照する参照データをビットマップ画像データとして展開するプリンターが知られている(特許文献1参照。)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007‐216675号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述したようなプリンターの一種では、CPUが所定のソフトウェアに従った処理として、上記印刷データからバンド毎の中間コードへの変換、バンド毎のパレットの生成、およびバンド毎の中間コードからビットマップ画像データの展開、を実行する。また、このようなプリンターは、画像データに対する所定処理を実行するためのASICを備える。そしてCPUは、上記生成した一バンド分のビットマップ画像データをASICに処理させるために必要なモード設定(処理対象となるビットマップ画像データの種類や、データサイズ等の設定)をASICに対して行なう。このモード設定を受けて、ASICは起動し、当該バンドに対応するビットマップ画像データを入力し、また必要に応じて当該バンドに対応するパレットをASIC内のメモリーに読み込み、ビットマップ画像データに対する変換処理や、表色系の変換(色変換)処理や、圧縮処理等といった一連の処理を実行する。
【0005】
このような構成においては、ASICは、一つのバンドに対応するビットマップ画像データについて上記一連の処理を終えた後、処理が完了した旨をCPUへ割込み通知していた。そして、CPUでは、当該割込み通知を受けたことを契機として、次のバンドにかかるビットマップ画像データをASICに処理させるために必要なモード設定をASICに対して行なっていた。そのため、CPUは、ASICによる上記一連の処理中に、次のバンドにかかるパレットの生成やビットマップ画像データの展開を終えていても、ASICからの割込み通知を待つ間は、当該次のバンドにかかるパレットやビットマップ画像データをASICに提供することができず、そのためソフトウェアによるCPUの動作が滞ってしまう(プリンター内におけるパイプライン動作がストールする)ことがあった。
【0006】
また上記のように、CPUからのモード設定を受けて、ASICが一バンド分のパレットをASIC内のメモリーに読み込む構成では、当該メモリーに未使用領域が残ることがあったため、当該メモリーを有効に活用できているとは言い難かった。
【0007】
本発明は上記課題を解決するためになされたものであり、印刷装置における動作の停滞を防ぎ、処理能力を向上させることが可能な印刷装置、制御方法および制御プログラムを提供する。
【課題を解決するための手段】
【0008】
本発明の態様の一つは、印刷コマンドを有する印刷データを所定の印刷領域毎に中間コードに変換するとともに、印刷領域で使用される色データと色データを参照するための参照データとの対応関係を記述した印刷領域毎のパレットを生成し、印刷領域毎の中間コードに基づき、パレットに記述された色データに対応する参照データをビットマップ画像データとして展開する制御部と、当該展開されたビットマップ画像データを取得して所定の処理を実行する処理部とを備えた印刷装置であって、上記制御部は、上記印刷領域毎のビットマップ画像データに関する所定の情報からなる処理要求を上記処理部からの所定の通知を待つことなく処理部に対して設定する要求設定部と、上記印刷領域毎のパレットを上記処理部からの所定の通知を待つことなく処理部に提供するパレット提供部とを備え、上記処理部は、上記設定された処理要求をキューにより管理するキュー管理部と、上記提供された印刷領域毎のパレットを所定のメモリーに複数記憶可能なパレット記憶部とを備える構成としてある。
【0009】
本発明によれば、制御部は、印刷領域毎のビットマップ画像データを所定数展開する毎に、従来のような処理部からの通知(割込み通知)を待つことなく処理要求を処理部に設定するとともに、印刷領域毎のパレットを、処理部からの通知(割込み通知)を待つことなく処理部に提供して処理部内の所定のメモリーに記憶させる。このため、当該メモリーには、複数の印刷領域にそれぞれ対応する複数のパレットが記憶される。そして処理部は、印刷領域毎の処理要求をキュー(待ち行列)により管理することで、従来のように制御部に対して割込み通知を行なうことなく、各処理要求にかかるビットマップ画像データに対する処理を次々行なうことができる。よって、従来のような割込み通知を待っていたことで生じていた制御部の動作の停滞が防止され、装置全体のスループットが向上する。また、処理部内のメモリーの記憶領域が有効に利用される。
【0010】
上記要求設定部は、印刷領域毎のビットマップ画像データが生成されたときに、上記処理部に設定済みの処理要求にかかる情報に基づいて、当該生成されたビットマップ画像データに対応するパレットを記憶させる上記メモリー内のアドレスを指定するためのオフセット値を決定し、当該決定したオフセット値を当該生成されたビットマップ画像データに関する上記処理要求に含ませ、上記パレット記憶部は、当該生成されたビットマップ画像データに対応するパレットを当該オフセット値に応じた上記メモリー内のアドレスに記憶するとしてもよい。当該構成によれば、制御部が印刷領域毎に次々に生成する各パレットを、上記メモリー内の使用可能領域に適切に格納することができる。
【0011】
上記処理部は、ビットマップ画像データ毎の処理要求の上記キューにおける順序に従って各ビットマップ画像データを上記所定の処理の対象とする場合、処理対象としたビットマップ画像データに対応する処理要求に含まれている上記オフセット値に応じた上記メモリー内のアドレスから、当該処理対象としたビットマップ画像データに対応するパレットを読み出すとともに、当該処理対象としたビットマップ画像データを構成する各参照データと当該読み出したパレットとに基づいて、ビットマップ画像データの各画素を色データに変換するとしてもよい。つまり、上記のようにオフセット値を処理要求の一情報とすることにより、処理部はキューで管理する処理要求を処理する際に、オフセット値を参照して上記メモリーから所要のパレットを容易に読み出すことができる。そして、読み出したパレットに基づいて、上記参照データとしてのビットマップ画像データの各画素を、色データに変換することができる。
【0012】
なお、上記制御部は、使用される色データの数が所定の制限数を超える印刷領域については、当該印刷領域の中間コードに基づき画素毎に色データを有するビットマップ画像データを展開する。そして、上記要求設定部は、上記参照データとしてのビットマップ画像データについての処理要求と上記色データとしてのビットマップ画像データについての処理要求とを上記処理部に対して設定し、上記パレット提供部は、上記参照データとしてのビットマップ画像データに対応するパレットのみを上記処理部に提供し、上記処理部は、ビットマップ画像データ毎の処理要求の上記キューにおける順序に従って各ビットマップ画像データを上記所定の処理の対象とする場合、上記参照データとしてのビットマップ画像データについてのみ上記パレットに基づいた変換を実行する。当該構成とすれば、印刷領域単位の中間コードから展開された結果として、参照データとしてのビットマップ画像データと、色データとしてのビットマップ画像データとが混在する場合であっても、それぞれの処理要求をキューで管理することで、処理要求毎の各ビットマップ画像データを適切に処理することができる。
【0013】
上記制御部は、印刷領域で使用される色データの数に応じて参照データの数が異なる印刷領域毎の上記パレットを生成し、上記パレット記憶部は、参照データの数が異なる複数のパレットを上記メモリーに記憶するとしてもよい。当該構成によれば、複数の印刷領域にそれぞれ対応する複数のパレットであって参照データの数が印刷領域で使用される色データの数に応じて異なる複数のパレットが、上記メモリーに記憶されることにより、当該メモリーの記憶領域が有効に利用される。
【0014】
上記要求設定部は、上記処理部による上記所定の処理の結果がエラーとなった場合に上記処理部に当該処理を再実行させる旨を示す再実行情報を上記処理要求に含ませることが可能であり、上記処理部は、ビットマップ画像データ毎の処理要求の上記キューにおける順序に従って一のビットマップ画像データを上記所定の処理の対象とし、処理の結果がエラーとなった場合に、当該一のビットマップ画像データにかかる処理要求に上記再実行情報が含まれていれば、当該一のビットマップ画像データを対象として上記所定の処理を、処理内容を少なくとも一部変更した上で再実行するとしてもよい。当該構成によれば、処理部は、一のビットマップ画像データを上記所定の処理対象とし処理結果がエラーとなった場合に、制御部に対して、当該所定の処理の再実行を通知したり当該所定の処理の再実行に必要な設定を要求したりすることなく、自ら当該所定の処理を、処理内容を少なくとも一部変更した上で再実行することができる。
【0015】
本発明の技術的思想は、印刷装置以外によっても実現可能である。例えば、上述した印刷装置の各部が実行する処理工程を有する方法(制御方法)の発明や、上述した印刷装置の各部が実行する機能を所定のハードウェア(例えば、印刷装置が内蔵するコンピューター等)に実行させるプログラム(制御プログラム)の発明をも把握可能である。また、印刷装置は、単一の装置であってもよいし、複数の装置からなるシステムであってもよい。
【図面の簡単な説明】
【0016】
【図1】プリンターの概略構成を示すブロック図である。
【図2】CPUがプログラムに従って実行する処理を示すフローチャートである。
【図3】一つのバンドについてのパレットを例示する図である。
【図4】バンドでの使用色数、参照データのビット数及びパレットの要素数の対応関係を示す図である。
【図5】アクセラレーターを中心とした画像処理ASICの一部構成などを示すブロック図である。
【図6】キューの一例を示す図である。
【図7】一バンドに対応するパレットがRAMに格納される様子を例示する図である。
【図8】複数のパレットがRAMに格納される様子を例示する図である。
【図9】RAMにパレットの色データが格納された状況においてインデックスバンドデータを色データに変換する様子を例示する図である。
【発明を実施するための形態】
【0017】
以下、本発明の実施形態を図面を参照しながら説明する。
図1は、本実施形態にかかるプリンター10の概略構成をブロック図により示している。プリンター10は、印刷装置の一種に該当する。プリンター10は、例えば、I/O制御ASIC(Application Specific Integrated Circuit)11、画像処理ASIC12、印刷エンジン13、CPU14、ROM15、RAM16等を備えたページプリンターである。プリンター10は、外部のホストコンピューターと通信可能に接続されており、I/O制御ASIC11は、ホストコンピューターから画像オブジェクトの印刷コマンドからなる印刷データを受信するインターフェイスとして機能する。印刷データは、所定のページ記述言語の形式で表現されたPDLデータである。
【0018】
CPU14は、RAM(DRAM)16をメインメモリーとして使用し、ROM15に記憶されたプログラムに従った処理を実行することにより、プリンター10の各部を制御する。また後述するように、CPU14は当該プログラムに従った処理の一部としてバンド毎のビットマップ画像データの展開等を行なう。このようにプログラムに従って処理を実行するCPU14は、本発明における制御部に該当する。画像処理ASIC12は、当該展開されたビットマップ画像データに対して所定の画像処理を施すハードウェアであり、アクセラレーター12a、メモリーコピー(MCPY)ユニット12b、階調変換ユニット12c、パルス幅変調(PWM)ユニット12d等を有する。なお、画像処理ASIC12とI/O制御ASIC11とは、それらを合せて一つのASICとして構成してもよい。
【0019】
アクセラレーター12aは、バンド毎のビットマップ画像データに対する画像処理(各種変換処理や圧縮処理など)を実行する回路であり、本発明における処理部の主要な働きをする(図5参照)。MCPYユニット12bは、アクセラレーター12bによる圧縮後の画像データをRAM16上で詰めて整理する処理を実行する。階調変換ユニット12cは、当該整理後の1ページ分の画像データを伸張するとともに階調値変換(スクリーン処理あるいはハーフトーン処理とも言う。)を実行する。PWMユニット12dは、階調値変換されたビットマップ画像データを画像再生信号であるパルス信号に変換し、当該画像再生信号を印刷エンジン13に供給する。印刷エンジン13は、当該供給された画像再生信号に基づいてページ単位で用紙上に印刷を行う。
【0020】
図2は、本実施形態においてCPU14が上記プログラムに従って実行する処理をフローチャートにより示している。ステップS100では、CPU14は、I/O制御ASIC11を制御して、ホストコンピューターから印刷データを受信し、印刷データをRAM16に格納する。印刷データは、例えば、写真等のビットマップ形式のイメージの描画コマンドや、CG等のベクターグラフィックス形式のデータについての描画コマンドや、文字コード(テキスト)形式のデータで記述された文字の描画コマンド等を含む。
【0021】
ステップS110では、CPU14は、印刷データを構成する各コマンドを順次解析してどのような種類のコマンドであるか判定し、改ページコマンドであると判定した場合(Yes)には、ステップS130に進む。一方、解析対象のコマンドが改ページコマンド以外の種類のコマンドであると判定した場合(No)には、ステップS120に進む。改ページコマンドとは、1ページ分の画像を表すコマンド群の終了(改ページ位置)を意味するコマンドであり、CPU14が改ページコマンドを認識した時点で、1ページ分のステップS120の処理が終了したことになる。
【0022】
ステップS120では、CPU14は、そのとき解析対象としているコマンドを中間コードに変換するとともに、当該中間コードをRAM16に登録する。つまりCPU14は、コマンドにおける描画関数等を解釈することにより中間コードを生成する。CPU14は、1ページ分の画像を所定数のラスター(例えば64ラスター)単位で分割した場合に得られる各バンド(印刷領域)と中間コードとを対応付けて中間コードを登録する。従って、ステップS120を複数回繰り返した結果、一つのバンドに対して複数の中間コードが対応付けられて登録されることもある。さらに、CPU14は、ステップS120を繰り返す中で、バンドで使用される色データと色データを参照するための参照データとの対応関係を記述したバンド毎のパレットを生成し、バンド毎のパレットもRAM16に格納する。ステップS120の終了後は、ステップS110に戻る。なお、印刷コマンドを中間コードに変換して登録する処理や、パレットを生成する処理については、特開2007‐216675号公報に詳述されているため、当該公報を適宜参照するものとし、ここでは記載を省略する。
【0023】
図3は、ある一つのバンドについてのパレットPLTを例示している。パレットPLTには、参照データに相当するインデックス番号0,1,2,3,4と、各インデックス番号に一対一で対応づけられた色データ(RGB階調値)が登録される。インデックスの括弧内はインデックス番号を4ビットの2進数で表現したものである。一つの色(色データ)を構成するRGBは各々256階調(8ビット)であり、従って、一つの色データは24ビットとなる。図3ではRGBをそれぞれ16進数で表記している。図3では、白色(ffffff)と、赤色(ff0000)と、緑色(00ff00)と、青色(0000ff)と、黒色(000000)という計5色が使用されているバンドについてのパレットPLTを示している。
【0024】
図4は、バンドで使用される色数、パレットにおける参照データ(インデックス番号)を表現するビット数及びパレットの要素数(色数)を対応づけた表である。バンド毎のパレットにおいては、参照データのビット数は、そのバンドで使用される色数を表現することのできるビット数である必要がある。よって、図3に示したパレットPLTが対応するバンドで使用される色数は5色であるので、図3に示したパレットPLTにおける参照データは、4色超16色以下に対応する4ビットで表現されている。仮に、パレットPLTが対応するバンドで使用される色数が2色以下であれば、パレットPLTにおける参照データは1ビットで表現され、パレットPLTが対応するバンドで使用される色数が2色超4色以下であれば、パレットPLTにおける参照データは2ビットで表現され、パレットPLTが対応するバンドで使用される色数が16色超256色以下であれば、パレットPLTにおける参照データは8ビットで表現される。
【0025】
なお本実施形態では、バンドで使用される色数が制限数である256色を超える場合には、基本的に、そのバンドについてはパレットを用いない。これは、パレットの要素数が増加すればパレット自体を格納するためにより多くのメモリー資源が必要となり、かつ、後述のステップS140において展開される参照データとしてのビットマップ画像データのデプス(一画素あたりのビット数)も大きな数値となり、全体としてメモリー資源の節約効果が減少してしまうからである。CPU14は、使用される色数が上記制限数を超えるバンドについては、例えば、色数が制限数を超えることを示す所定の情報を、そのバンドの中間コードに関連付けて記憶するなどして、後述のステップS140で当該所定の情報を参照して色数が制限数を超えているか否か判定できるようにしておく。
【0026】
なお上記では、ステップS100においてホストコンピューターから印刷データを受信するとしたが、ホストコンピューターから中間コードを受信するとしてもよい。つまり、ホストコンピューターの側で所定のプリンタードライバーの機能により印刷データから中間コードへの変換が行なわれ、プリンター10は、バンド毎の中間コードをI/O制御ASIC11を介してホストコンピューターから受信する。ホストコンピューターから中間コードを受信した場合も、CPU14はバンド毎のパレットを生成する。
【0027】
ステップS130では、CPU14は、中間コードを展開する対象となるバンドの番号(バンド番号BN)を所定数設定する。本実施形態では、1ページを構成する各バンドにページ先頭から順に1,2,3,4…というようにバンド番号BNが付与されているものとする。例えば、バンド番号BNを一回のステップS130で一つ設定する場合は、最初のステップS130ではバンド番号BN=1と設定し、次回のステップS130以降、バンド番号BNを1ずつ増加させていく。あるいは、バンド番号BNを一回のステップS130で複数(例えば三つ)設定する場合は、最初のステップS130ではバンド番号BN=1,2,3と設定し、次回のステップS130以降もバンド番号BNを三つずつ設定する。ここでは、CPU14は、中間コードを展開する対象としてのバンド番号BNを、一回のステップS130毎に三つ設定するものとして説明を行なう。
【0028】
ステップS140では、CPU14は、直近のステップS130で設定したバンド番号BNにかかるバンドの中間コードをRAM16上に展開することにより、バンド単位のビットマップ画像データを生成する。例えば、ステップS130でバンド番号BN=1,2,3が設定されている場合、ステップS140では、これら三つのバンドそれぞれのビットマップ画像データを並列処理により生成する。この場合、CPU14は、使用される色数が上記制限数以下であるバンドについては、その中間コードに基づき、パレットに記述された色データに対応する参照データをビットマップ画像データとして展開する。
【0029】
すなわち、バンドを構成する画素毎に、中間コードで定義されている色に対応するインデックス番号を、当該バンドに対応するパレットを参照することで特定し、当該特定したインデックス番号としての参照データ(最大でも8ビット)を画素値とする。このように生成された参照データとしてのビットマップ画像データは、各画素がパレットのインデックス番号を有しており、RGB階調値は有していない。以下では、参照データとしてのビットマップ画像データを、「インデックスバンドデータ」とも呼ぶ。一方、使用される色数が上記制限数(256)を超えるバンドについては、CPU14は、そのバンドの中間コードに基づいて、RGB各256階調(8ビット)で表現される色データ(24ビット)を画素毎に有するビットマップ画像データを生成する。以下では、このような色データとしてのビットマップ画像データを、「RGBバンドデータ」とも呼ぶ。なお、このように中間コードをビットマップ画像データに展開する処理についても、適宜、特開2007‐216675号公報を参照するものとする。
【0030】
ステップS150では、CPU14は、直近のステップS130で設定したバンド番号BNにかかるバンド毎(ビットマップ画像データ毎)の処理要求を、バンド番号BN順に画像処理ASIC12に対して設定する。ステップS150を実行する点で、CPU14は、要求設定部として機能すると言える。処理要求は、ビットマップ画像データに関する各種情報を含むものであり、処理要求を受け取った画像処理ASIC12は、受け取った処理要求に対応するビットマップ画像データに対する画像処理を実行することができる。
【0031】
図5は、RAM16上の各種データと、アクセラレーター12aを中心とした画像処理ASIC12の構成の一部と、CPU14との関係を、簡易的に示したブロック図である。アクセラレーター12aは、RAM(SRAM)20、色補正部21、色変換部22、圧縮処理部23、監視部24、キュー管理部25等を有する。CPU14は、バンド毎の処理要求を、キュー管理部25に対して設定する。RAM20は、後述するように、インデックスバンドデータが対応するバンドにかかるパレットを、インデックスバンドデータの変換処理に用いるために記憶するメモリーである。
【0032】
図6は、キュー管理部25が管理するキュー25aを例示している。キュー25aは、CPU14によって設定されたバンド毎の処理要求の待ち行列であり、待ち行列の先頭側から、設定された順番が早いもの順に処理要求が配列される。キュー25aを構成する処理要求は各々「Status」、「Mode」、「Source Address」、「Distination Address」、「Sorce Data Size」、「Output Data Size」、「Retry」、「Address Offset」等といった各種情報を含み得る。つまりCPU14は、これら各種情報の内容を決定し、当該決定した各種情報からなる処理要求をキュー管理部25に対して設定する。「Status」は、処理要求にかかるビットマップ画像データに関する処理状態を意味し、具体的には「完了」、「エラー」、「未実行」、「実行中」のいずれかである。CPU14が処理要求を設定した直後においては「Status」は「未実行」に設定されている。キュー管理部25は、処理要求に対するアクセラレーター12aによる処理の進捗状況に応じて「Status」の設定を変更(書き換え)可能である。
【0033】
「Mode」は、処理要求が対応するビットマップ画像データが、インデックスバンドデータであるかRGBバンドデータであるかを示す情報であり、インデックスバンドデータであれば更に、そのデプス(1ビット又は2ビット又は4ビット又は8ビットのいずれか)や、バンドにおける使用色数(対応するパレットに登録された色数)の情報が設定されている。「Source Address」は、処理要求が対応するビットマップ画像データのRAM16における現在の保存場所(保存元)を指定する情報である。「Distination Address」は、アクセラレーター12aによる画像処理を施した後のデータについてのRAM16における保存場所(保存先)を指定する情報である。「Sorce Data Size」は、処理要求が対応するビットマップ画像データのデータサイズを示す情報である。「Output Data Size」は、アクセラレーター12aによる画像処理を施した後のデータのデータサイズに対する上限値を示す情報である。
【0034】
「Retry」は、アクセラレーター12aによる画像処理の結果がエラーとなった場合に当該画像処理(の一部)を再実行させる旨を示す情報(再実行情報)である。「Address Offset」は、処理要求が対応するビットマップ画像データに対応するパレットを記憶させるRAM20内のアドレスを指定するためのオフセット値である。CPU14は、あるインデックスバンドデータにかかる処理要求内の「Address Offset」を決定する場合、キュー管理部25に設定済みの他のバンドの処理要求にかかる情報に基づいて、当該「Address Offset」を決定する。詳細については後述する。なお、ビットマップ画像データがRGBバンドデータである場合には、パレットをRAM20に記憶する必要がないため、その処理要求に「Address Offset」は含まれない。
【0035】
図7は、一つのバンドに対応するパレットPLT1がRAM20に記憶された様子を例示している。パレットPLT1は、バンド番号BN=1のバンドに対応するパレットであり、そのため最初にRAM20に記憶されるパレットである。また、パレットPLT1は、使用色数が16色であるバンドに対応するパレットであり、そのため16個のインデックス番号と、16個のインデックス番号に一対一で対応付けられた色データ(24ビット)16個と有している。また、RAM20は、0〜255の256個のメモリーアドレスを持ち、各アドレスに対応してインデックス番号を表わす情報と24ビットの情報とを格納可能なサイズである。従って、パレットPLT1は、アドレス番号“0”から“15”までの領域に格納される。かかる状態においては、アドレス番号“16”から“255”までの領域は、未使用領域である。また、バンド番号BN=1のバンドにかかるインデックスバンドデータについてのアクセラレーター12aによる画像処理が完了(「Status」=「完了」)した後は、パレットPLT1を格納した領域も、他のパレットの記憶のために使用可能(上書き可能)な領域となる。
【0036】
ここで、CPU14による、あるインデックスバンドデータにかかる処理要求内の「Address Offset」の決定方法について説明する。CPU14は、「Address Offset」を決定しようとしているインデックスバンドデータよりも一つ前のインデックスバンドデータの処理要求における「Status」と「Mode」に規定されている使用色数と「Address Offset」とに基づいて、目的の「Address Offset」を決定する。例えば、上述したバンド番号BN=1のバンドにかかるインデックスバンドデータの場合、一つ前のインデックスバンドデータは存在しないため、一つ前のインデックスバンドデータの「Status」は無し、一つ前のインデックスバンドデータの使用色数は0、一つ前のインデックスバンドデータの「Address Offset」も0、となる。そこで、バンド番号BN=1のバンドにかかるインデックスバンドデータの「Address Offset」は、一つ前のインデックスバンドデータの「Address Offset」に、一つ前のインデックスバンドデータの使用色数を加えた結果、すなわち0となる。
【0037】
次に、バンド番号BN=2のバンドのビットマップ画像データもインデックスバンドデータである場合、一つ前のインデックスバンドデータ(バンド番号BN=1のバンドのインデックスバンドデータ)の「Status」が「完了」以外であれば、当該一つ前のインデックスバンドデータの「Address Offset」である0に、当該一つ前のインデックスバンドデータの使用色数である16を加えた結果、すなわち16が、バンド番号BN=2のバンドにかかるインデックスバンドデータの「Address Offset」となる。また、バンド番号BN=4のバンドのビットマップ画像データがインデックスバンドデータである場合(バンド番号BN=3のバンドのビットマップ画像データはRGBバンドデータであるとする)、一つ前のインデックスバンドデータ(バンド番号BN=2のバンドのインデックスバンドデータ)の「Status」が「完了」以外であれば、当該一つ前のインデックスバンドデータの「Address Offset」である16に、当該一つ前のインデックスバンドデータの使用色数(例えば、4)を加えた結果、すなわち20が、バンド番号BN=4のバンドにかかるインデックスバンドデータの「Address Offset」となる。
【0038】
このように決定される「Address Offset」は、その処理要求にかかるインデックスバンドデータに対応するパレットをRAM20に格納する際の先頭アドレスとなる。つまり、一つ前のインデックスバンドデータの「Address Offset」に、当該一つ前のインデックスバンドデータの使用色数を加えることで、RAM20におけるどこのアドレスから新たなパレットを格納すればよいかが分かる。なお、RAM20は、先に書き込まれた情報が先に読み出されるFIFO(First In First Out)構造のメモリーである。そのため、「Address Offset」を決定しようとしている新たなインデックスバンドデータより一つ前のインデックスバンドデータの「Status」が「完了」である場合は、それよりも前のインデックスバンドデータについても全て「Status」は「完了」となっていると言える。そのような場合には、上記バンド番号BN=1のバンドにかかるインデックスバンドデータの「Address Offset」と同様に、当該新たなインデックスバンドデータの処理要求における「Address Offset」も0となる。
【0039】
ステップS160では、CPU14は、直近のステップS140で展開により生成したビットマップ画像データにインデックスバンドデータが含まれていれば、そのインデックスバンドデータに対応するパレットをRAM16から画像処理ASIC12側に提供し、アクセラレーター12aのRAM20に記憶させる(図5参照)。ステップS160を実行する点で、CPU14は、パレット提供部として機能すると言える。
【0040】
図8は、ステップS160において、複数のパレットPLT1,PLT2,PLT3がRAM20に記憶される様子を例示している。パレットPLT1は上述したようにバンド番号BN=1のバンドに対応するパレットであり、パレットPLT2,PLT3はそれぞれ、バンド番号BN=2,3のバンドに対応するパレットである。図8の説明では、便宜上、バンド番号BN=1〜3の各バンドのビットマップ画像データはいずれもインデックスバンドデータであるとしている。画像処理ASIC12は、CPU14によって上記提供されたパレットを、当該パレットが対応するインデックスバンドデータの処理要求内の「Address Offset」に応じたRAM20内のアドレスに記憶する。具体的には、パレットPLT1が対応する処理要求内の「Address Offset」は上述したように0であるため、RAM20におけるアドレス番号“0”から始まる領域に、パレットPLT1を格納する。上述したようにパレットPLT1の色数は16色であるため、パレットPLT1は、アドレス番号“0”から“15”までの領域に格納される。
【0041】
パレットPLT2が対応する処理要求内の「Address Offset」は上述したように16であるため、RAM20におけるアドレス番号“16”から始まる領域に、パレットPLT2を格納する。上述したようにパレットPLT2の色数は4色であるため、パレットPLT2は、アドレス番号“16”から“19”までの領域に格納される。パレットPLT3が対応する処理要求内の「Address Offset」は、パレットPLT2が対応する処理要求内の「Address Offset」(16)に、パレットPLT2の色数(4)を加えた結果の20である(バンド番号BN=3のビットマップ画像データがインデックスバンドデータである場合、キュー管理部25が管理するキュー25aには、そのインデックスバンドデータに対応する処理要求に「Address Offset」として20が設定されている)ため、パレットPLT3は、アドレス番号“20”から始まる領域に記憶される。仮に、パレットPLT3の色数が16色であれば、パレットPLT3は、アドレス番号“20”から“35”までの領域に格納される。
【0042】
なお、上記ステップS160において、あるパレットをRAM20に記憶させようとするとき、当該パレットにおける色数によっては、その時点で使用可能なRAM20内の領域に、当該パレットを格納できない場合がある。例えば、図8で説明に用いたパレットPLT3が、仮に256色を登録したパレットである場合、RAM20におけるアドレス番号“20”から“255”までの領域に、かかるパレットPLT3を格納することはできない。そのため本実施形態では、CPU14は、上記ステップS160において、あるパレットをRAM20に記憶させようとするとき、キュー管理部25が管理するキュー25aを参照して当該パレットが対応する処理要求内の「Address Offset」を確認することにより、RAM20における使用可能な領域のアドレス数を特定する。そして、当該特定したアドレス数よりも、当該パレットの色数の方が多い場合には、当該パレットが対応する処理要求よりも前の処理要求(ただしインデックスバンドデータにかかる処理要求)における「Status」が「完了」となり当該パレットを格納できる領域がRAM20内に確保されるまでは、当該パレットを画像処理ASIC12側に提供することを待機する。そして、当該パレットを格納できる領域がRAM20内に確保されたタイミングで当該パレットを画像処理ASIC12側に提供し、RAM20に記憶させる。そのため本実施形態では、キュー25aにおいて「Status」が「完了」ではない状態の処理要求の数と、RAM20に格納されているパレット数とが異なる状況も発生し得る。
【0043】
ステップS170では、CPU14は、1ページを構成する全てのバンドについて、上記ステップS130でバンド番号BNを設定し終えたか否か判定し、終えている場合には当該フローチャートを終了し、終えていない場合にはステップS130に戻り、新たに中間コードを展開する対象とするバンド番号BNを所定数設定する。
なお上記では、アクセラレーター12aのRAM20について、0〜255の256個のアドレスを持つサイズとしたが、倍の512個のアドレスを持つサイズとしてもよい。このようにRAM20を倍のサイズとすれば、RAM20において、256色という最大の色データ数を有するパレットを同時に2つ格納することができる。
【0044】
次に、CPU14による上記のような処理要求の設定およびパレットの提供を受けて画像処理ASIC12側(特にアクセラレーター12a)で実行する処理について説明する(図5を適宜参照)。アクセラレーター12aでは、キュー管理部25がCPU14によってバンド毎の処理要求が設定されるキュー25aを随時監視し、「Status」が「未実行」である処理要求のうち、設定された順番が早い処理要求から優先して処理対象とする(処理対象とした処理要求における「Status」を「実行中」に変更)。アクセラレーター12aは、キュー管理部25が処理対象とした処理要求における「Mode」を判別する。ここで、「Mode」がインデックスバンドデータを示している場合、アクセラレーター12aは、当該処理要求における「Source Address」で示されているRAM16内のアドレスからビットマップ画像データ(インデックスバンドデータ)を読み出し、入力する(図5参照)。そして、当該処理要求における「Mode」に規定されている使用色数および「Address Offset」に基づいて、パレットを読み出すべきRAM20内のアドレスを特定し、当該特定したアドレスからパレットを読み出す。例えば、「Address Offset」が16であり、使用色数が4であれば、RAM20のアドレス番号“16”から“19”までの領域から、そこに格納されているパレットを読み出せばよい。
【0045】
そして、アクセラレーター12aは、上記RAM16から入力したインデックスバンドデータの各画素について、参照データ(インデックス番号)を、上記RAM20から読み出したパレットにおける参照データと色データとの対応関係を参照することにより、RGB各256階調(8ビット)で表現される色データ(24ビット)に変換する。このようにパレットを用いて変換されたビットマップ画像データは、色補正部21に入力される。
一方、アクセラレーター12aは、キュー管理部25が処理対象とした処理要求における「Mode」がRGBバンドデータを示している場合は、当該処理要求における「Source Address」で示されているRAM16内のアドレスからビットマップ画像データ(RGBバンドデータ)を読み出し、それをそのまま色補正部21に入力する(図5参照)。
【0046】
色補正部21は、例えば、所定の1次元ルックアップテーブル(LUT)を有しており、入力されたビットマップ画像データの画素毎のRGB階調値を、当該1次元LUTによって色補正(例えば、明度や彩度の補正)を行う。色補正部21によって補正された後のビットマップ画像データは、色変換部22に入力される。色変換部22は、RGBとプリンター10が使用する記録材(トナー)の色であるCMYKとの対応関係を複数の格子点に関して規定した色変換LUTを有しており、入力されたビットマップ画像データの画素毎のRGB階調値を、CMYK階調値に変換する。色変換部22によって色変換された後のビットマップ画像データは、圧縮処理部23に入力される。
【0047】
圧縮処理部23は、入力されたビットマップ画像データを所定の圧縮方式(可逆圧縮)かつ所定の圧縮率にて圧縮する。監視部24は、圧縮処理部23により圧縮された後のデータサイズと、処理要求における「Output Data Size」に設定されているデータサイズの上限値とを比較し、圧縮後のデータサイズが当該上限値を超える場合には、エラー(圧縮失敗)と判断する(「Status」を「エラー」に変更)。そして、このように監視部24がエラーと判断した場合であって、キュー管理部25が処理対象としている処理要求に「Retry」が設定されている場合には、色変換部22によって色変換された後のビットマップ画像データに対する圧縮処理部23による圧縮処理を再実行する。ただし、再実行の場合には、アクセラレーター12aは、圧縮処理部23による圧縮方式を可逆圧縮から非可逆圧縮に変更したり、圧縮率等のパラメーターを変更させた上で、再実行させる。そして、圧縮処理部23により圧縮された後のデータサイズが当該上限値以下となった場合に、アクセラレーター12aは、当該圧縮後の画像データを、処理要求における「Distination Address」で示されているRAM16内のアドレスへ記録する。このように、アクセラレーター12aは、一つの処理要求にかかるビットマップ画像データについての一連の処理を終えたら、その処理要求における「Status」を「完了」に変更する。そして、キュー25aにける設定順が次に早い処理要求を対象として、上述した一連の処理を繰り返す。
【0048】
MCPYユニット12bは、図5に示すように、RAM16に記録されたアクセラレーター12bによる圧縮後の画像データを一旦コピーし、当該圧縮後の画像データを構成するCMYK毎の画像データをバンド単位でRAM16上で詰めて整理する。そして、CPU14は、当該整理後の画像データが1ページ分貯まったら、当該1ページ分の画像データを階調変換ユニット12cに出力する。
【0049】
このように本実施形態によれば、CPU14は所定のプログラムに従って、バンド単位で中間コードを展開する場合に、使用色数が制限数以下のバンドについては、中間コードに基づいて、そのバンドに対応するパレットに記述された参照データを各画素値として有するビットマップ画像データ(インデックスバンドデータ)をRAM16に展開する。一方、使用色数が制限数を超えるバンドについては、中間コードに基づいて、各画素がRGB階調値を有するビットマップ画像データ(RGBバンドデータ)をRAM16に展開する。そして、このようなバンド単位のビットマップ画像データを所定数(一つあるいは複数)展開する度に、画像処理ASIC12側からの要請(割込み通知)を特に待つことなく、バンド単位のビットマップ画像データにかかる処理要求を画像処理ASIC12側に設定する。この結果、画像処理ASIC12側では、各処理要求をキューにより管理することが可能となる。また、CPU14は、インデックスバンドデータに対応するバンドにかかるパレットについても画像処理ASIC12側からの要請(割込み通知)を待つことなく、上記処理要求の設定とともに、画像処理ASIC12側に次々に提供し、画像処理ASIC12内のRAM20内にパレットを複数記憶させることが可能であれば複数記憶させる。そして、画像処理ASIC12側では、キュー管理部25が管理するキュー25aにおける各処理要求を、キュー25aにおける順序に従って一つ一つ処理していく。
【0050】
すなわちCPU14は、画像処理ASIC12側のバンド単位での処理の進捗状況とは別に、自らの側で生成したビットマップ画像データについての処理要求やパレットを、次々に画像処理ASIC12側に設定することができる。よって、ASIC側で一つのバンドにかかるデータに対して一連の処理を終えたときにCPU側に割込み通知を行い、CPUは当該割込み通知を受けたことを契機として、次のバンドにかかるデータをASICに処理させるために必要なモード設定をASICに対して行なっていた、という従来の構成と比較して、CPU14の動作の停滞が防止され、プリンター10全体のスループットが飛躍的に向上する。また、画像処理ASIC12内のRAM20の記憶領域が有効に利用される。さらに本実施形態では、上述したように、ビットマップ画像データに対する圧縮処理の結果がエラーである場合には、エラーに対応して画像処理ASIC12(アクセラレーター12a)内で自動的に圧縮処理を再実行(圧縮方式や所定のパラメーターを変更して再実行)するので、かかる再実行も効率化される。
【0051】
さらに本実施形態では以下の構成を採用してもよい。上記では、ステップS160の処理の結果、画像処理ASIC12内のRAM20にはパレット全体が格納されることを前提として説明を行なったが、RAM20には、パレットにおける色データのみを格納し、インデックス番号は格納しないとしてもよい。この場合、RAM20は、256個(あるいはそれ以上)のメモリーアドレスを持ち、各アドレスに対応して24ビットの情報を格納可能なサイズとする。そして、例えば、バンド番号BN=2のバンドに対応する上記パレットPLT2であれば、アドレス番号“16”から“20”の領域(図8参照)に、パレットPLT2における4個の色データ(一つの色データは24ビット)を、それら色データに対応するインデックス番号(0,1,2,3)順に格納する。この結果、パレットPLT2においてインデックス番号“0”に対応していた色データは、RAM20のアドレス番号“16”に対応する領域に記憶される。同様に、パレットPLT2において他のインデックス番号1,2,3にそれぞれ対応していた色データは、RAM20のアドレス番号17,18,19に対応する各領域にそれぞれ記憶される。
【0052】
図9は、このようにRAM20に各パレットの色データのみが格納された状況において、アクセラレーター12aが、パレットを用いてインデックスバンドデータを色データに変換する様子を例示している。ここでは、バンド番号BN=2のバンドに対応する処理要求が処理対象とされているものとする。図9においては、アクセラレーター12aが、現在対象としている処理要求における「Source Address」で示されたRAM16内のアドレスから読み出したインデックスバンドデータ(バンド番号BN=2のバンドに対応するインデックスバンドデータ)と、当該処理要求における「Address Offset」とを加算している。つまり、インデックスバンドデータは、各画素がインデックス番号を有するデータであるため、画素毎のインデックス番号に対して「Address Offset」を加算している。バンド番号BN=2のバンドに対応する処理要求における「Address Offset」は16であるため、この場合、インデックスバンドデータ内の各画素のインデックス番号が、一律に16だけ増加する。
【0053】
そして、アクセラレーター12aは、このように「Address Offset」の加算によって値が増加したインデックス番号と数値が一致するRAM20のアドレスを読みに行き、当該読みに行ったアドレスに対応して記憶されている色データを、インデックスバンドデータの画素毎の変換結果として取得する。このように、画像処理ASIC12内のRAM20にパレットの色データのみを格納する構成においても、各パレットの「Address Offset」を用いることにより、各バンドのインデックスバンドデータを色データに的確に変換することができる。また、RAM20にパレットの色データのみを格納すればよいため、RAM20を小サイズ化してプリンター10のコストダウンに貢献することができる。
【符号の説明】
【0054】
10…プリンター、11…I/O制御ASIC、12…画像処理ASIC、12a…アクセラレーター、13…印刷エンジン、14…CPU、15…ROM、16…RAM、20…RAM、21…色補正部、22…色変換部、23…圧縮処理部、24…監視部、25…キュー管理部、25a…キュー

【特許請求の範囲】
【請求項1】
印刷コマンドを有する印刷データを所定の印刷領域毎に中間コードに変換するとともに、印刷領域で使用される色データと色データを参照するための参照データとの対応関係を記述した印刷領域毎のパレットを生成し、印刷領域毎の中間コードに基づき、パレットに記述された色データに対応する参照データをビットマップ画像データとして展開する制御部と、当該展開されたビットマップ画像データを取得して所定の処理を実行する処理部とを備えた印刷装置であって、
上記制御部は、上記印刷領域毎のビットマップ画像データに関する所定の情報からなる処理要求を上記処理部からの所定の通知を待つことなく処理部に対して設定する要求設定部と、上記印刷領域毎のパレットを上記処理部からの所定の通知を待つことなく処理部に提供するパレット提供部とを備え、
上記処理部は、上記設定された処理要求をキューにより管理するキュー管理部と、上記提供された印刷領域毎のパレットを所定のメモリーに複数記憶可能なパレット記憶部とを備えることを特徴とする印刷装置。
【請求項2】
上記要求設定部は、印刷領域毎のビットマップ画像データが生成されたときに、上記処理部に設定済みの処理要求にかかる情報に基づいて、当該生成されたビットマップ画像データに対応するパレットを記憶させる上記メモリー内のアドレスを指定するためのオフセット値を決定し、当該決定したオフセット値を当該生成されたビットマップ画像データに関する上記処理要求に含ませ、上記パレット記憶部は、当該生成されたビットマップ画像データに対応するパレットを当該オフセット値に応じた上記メモリー内のアドレスに記憶することを特徴とする請求項1に記載の印刷装置。
【請求項3】
上記処理部は、ビットマップ画像データ毎の処理要求の上記キューにおける順序に従って各ビットマップ画像データを上記所定の処理の対象とする場合、処理対象としたビットマップ画像データに対応する処理要求に含まれている上記オフセット値に応じた上記メモリー内のアドレスから、当該処理対象としたビットマップ画像データに対応するパレットを読み出すとともに、当該処理対象としたビットマップ画像データを構成する各参照データと当該読み出したパレットとに基づいて、ビットマップ画像データの各画素を色データに変換することを特徴とする請求項2に記載の印刷装置。
【請求項4】
上記制御部は、使用される色データの数が所定の制限数を超える印刷領域については、当該印刷領域の中間コードに基づき画素毎に色データを有するビットマップ画像データを展開し、上記要求設定部は、上記参照データとしてのビットマップ画像データについての処理要求と上記色データとしてのビットマップ画像データについての処理要求とを上記処理部に対して設定し、上記パレット提供部は、上記参照データとしてのビットマップ画像データに対応するパレットのみを上記処理部に提供し、上記処理部は、ビットマップ画像データ毎の処理要求の上記キューにおける順序に従って各ビットマップ画像データを上記所定の処理の対象とする場合、上記参照データとしてのビットマップ画像データについてのみ上記パレットに基づいた変換を実行することを特徴とする請求項3に記載の印刷装置。
【請求項5】
上記制御部は、印刷領域で使用される色データの数に応じて参照データの数が異なる印刷領域毎の上記パレットを生成し、上記パレット記憶部は、参照データの数が異なる複数のパレットを上記メモリーに記憶することを特徴とする請求項1〜請求項4のいずれかに記載の印刷装置。
【請求項6】
上記要求設定部は、上記処理部による上記所定の処理の結果がエラーとなった場合に上記処理部に当該処理を再実行させる旨を示す再実行情報を上記処理要求に含ませることが可能であり、上記処理部は、ビットマップ画像データ毎の処理要求の上記キューにおける順序に従って一のビットマップ画像データを上記所定の処理の対象とし、処理の結果がエラーとなった場合に、当該一のビットマップ画像データにかかる処理要求に上記再実行情報が含まれていれば、当該一のビットマップ画像データを対象として上記所定の処理を、処理内容を少なくとも一部変更した上で再実行することを特徴とする請求項1〜請求項5のいずれかに記載の印刷装置。
【請求項7】
印刷コマンドを有する印刷データを所定の印刷領域毎に中間コードに変換するとともに、印刷領域で使用される色データと色データを参照するための参照データとの対応関係を記述した印刷領域毎のパレットを生成し、印刷領域毎の中間コードに基づき、パレットに記述された色データに対応する参照データをビットマップ画像データとして展開する制御部と、当該展開されたビットマップ画像データを取得して所定の処理を実行する処理部とによる制御方法であって、
上記制御部は、上記印刷領域毎のビットマップ画像データに関する所定の情報からなる処理要求を上記処理部からの所定の通知を待つことなく処理部に対して設定し、上記印刷領域毎のパレットを上記処理部からの所定の通知を待つことなく処理部に提供し、
上記処理部は、上記設定された処理要求をキューにより管理し、上記提供された印刷領域毎のパレットを所定のメモリーに複数記憶することを特徴とする制御方法。
【請求項8】
印刷コマンドを有する印刷データを所定の印刷領域毎に中間コードに変換するとともに、印刷領域で使用される色データと色データを参照するための参照データとの対応関係を記述した印刷領域毎のパレットを生成し、印刷領域毎の中間コードに基づき、パレットに記述された色データに対応する参照データをビットマップ画像データとして展開する制御部と、当該展開されたビットマップ画像データを取得して所定の処理を実行する処理部とを機能させる制御プログラムであって、
上記制御部に、上記印刷領域毎のビットマップ画像データに関する所定の情報からなる処理要求を上記処理部からの所定の通知を待つことなく処理部に対して設定し、上記印刷領域毎のパレットを上記処理部からの所定の通知を待つことなく処理部に提供する機能を実行させ、
上記処理部に、上記設定された処理要求をキューにより管理し、上記提供された印刷領域毎のパレットを所定のメモリーに複数記憶する機能を実行させることを特徴とする制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−152764(P2011−152764A)
【公開日】平成23年8月11日(2011.8.11)
【国際特許分類】
【出願番号】特願2010−17228(P2010−17228)
【出願日】平成22年1月28日(2010.1.28)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】