(57)【特許請求の範囲】
【請求項１】
複数の画素からなる画像データを圧縮する画像処理装置であって、
入力した画像データから所定の画素数からなる画素群を順次抽出して、該各画素群が、白色と黒色の画素によって構成された白黒パターンであるか否かを判別する白黒パターン判別手段と、
前記画素群が白黒パターンである場合に、該画素群内の階調値を白色と黒色の配置に応じて二値化した二値データを生成する二値データ生成手段と、
前記画素群が白黒パターンでない場合に、該画素群の解像度を低減した低解像度データを生成する低解像度データ生成手段と、
前記画像データ内の各画素群から順次生成された前記二値データまたは前記低解像度データのそれぞれの連続数に応じて前記二値データおよび前記低解像度データをそれぞれ圧縮することで、前記二値データを圧縮したデータと前記低解像度データを圧縮したデータとが混在して記録された圧縮データを生成する圧縮手段と、を備え、
前記圧縮手段は、前記画像データ内の各画素群から同一内容のデータが順次連続して生成された場合に、該同一内容のデータの連続数をカウントし、該カウントした数と、前記同一内容のデータが前記二値データまたは前記低解像度データのどちらであるかを示す識別子と、前記同一内容のデータうちの一のデータと、を含むデータを生成して前記圧縮データに記録し、
前記圧縮手段は、更に、
前記画素群から異なる内容の二値データが連続して生成された場合に、該異なる内容の二値データが連続して生成された数をカウントし、該カウントした数と、前記異なる内容のデータが二値データであることを表す識別子と、前記異なる内容の各二値データと、を含むデータを生成して前記圧縮データに記録し、
前記画素群から異なる内容の低解像度データが連続して生成された場合に、該異なる内容の低解像度データが連続して生成された数をカウントし、該カウントした数と、前記異なる内容のデータが低解像度データであることを表す識別子と、前記異なる内容の各低解像度データと、を含むデータを生成して前記圧縮データに記録する、
画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記圧縮手段は、前記画像データ内の各画素群から順次生成されたデータが、前記二値データか前記低解像度データかに応じて、前記カウント数を表すデータ、および、前記二値データまたは前記低解像度データを表すデータを、異なる長さのデータとする
画像処理装置。
【請求項３】
請求項１または請求項２に記載の画像処理装置であって、
前記低解像度データ生成手段は、前記画素群を構成する各画素の画素値を平均化して、一つの画素の画素値を求めることで、前記解像度の低減を行う
画像処理装置。
【請求項４】
請求項１ないし請求項３のいずれかに記載の画像処理装置であって、
更に、前記圧縮手段によって生成された圧縮データを、当該画像処理装置と接続され、画像の出力を行う画像出力装置に送信する送信手段を備える
画像処理装置。
【請求項５】
請求項４に記載の画像処理装置と接続され、該画像処理装置から前記圧縮データを受信して画像を出力する画像出力装置であって、
前記圧縮データを受信する受信手段と、
前記受信した圧縮データに含まれる前記二値データおよび前記低解像度データを、それぞれの前記連続数に基づき復号する復号手段と、
前記復号したデータのうち、前記二値データについては、該二値データの内容に応じて前記画素群に対して、白色または黒色の画素を配置し、前記低解像度データについては、前記画素群の解像度と同一の解像度まで、解像度を高める高解像度化を行うことで、前記画像を再構成する画像再構成手段と、
前記再構成された画像を出力する画像出力手段と
を備える画像出力装置。
【請求項６】
請求項５に記載の画像出力装置であって、
前記画像再構成手段は、前記低解像度データについて、該画像出力装置の出力特性に応じて所定の色補正を行う色補正手段を備える
画像出力装置。
【請求項７】
請求項６に記載の画像出力装置であって、
前記色補正手段は、前記色補正として、色空間変換およびガンマ補正のうち、少なくともいずれか一方を行う
画像出力装置。
【請求項８】
請求項５ないし請求項７のいずれかに記載の画像出力装置であって、
前記画像出力手段は、
前記再構成された画像の画素値を、インク量を表すインク値に変換する色変換手段と、
前記インク値を、ドットの有無を表すドットデータに変換するハーフトーン手段と、
前記ドットデータに応じて所定の印刷媒体にインクを吐出してドットを形成するドット形成手段とを備える
画像出力装置。
【請求項９】
画像処理装置が複数の画素からなる画像データの圧縮を行う画像処理方法であって、
入力した画像データから所定の画素数からなる画素群を順次抽出して、該各画素群が、白色と黒色の画素によって構成された白黒パターンであるか否かを判別する工程と、
前記画素群が白黒パターンである場合に、該画素群内の階調値を白色と黒色の配置に応じて二値化した二値データを生成する工程と、
前記画素群が白黒パターンでない場合に、該画素群の解像度を低減した低解像度データを生成する工程と、
前記画像データ内の各画素群から順次生成された前記二値データまたは前記低解像度データのそれぞれの連続数に応じて前記二値データおよび前記低解像度データをそれぞれ圧縮することで、前記二値データを圧縮したデータと前記低解像度データを圧縮したデータとが混在して記録された圧縮データを生成する圧縮工程と、を備え、
前記圧縮工程では、前記画像データ内の各画素群から同一内容のデータが順次連続して生成された場合に、該同一内容のデータの連続数をカウントし、該カウントした数と、前記同一内容のデータが前記二値データまたは前記低解像度データのどちらであるかを示す識別子と、前記同一内容のデータうちの一のデータと、を含むデータを生成して前記圧縮データに記録し、
前記圧縮工程では、更に、
前記画素群から異なる内容の二値データが連続して生成された場合に、該異なる内容の二値データが連続して生成された数をカウントし、該カウントした数と、前記異なる内容のデータが二値データであることを表す識別子と、前記異なる内容の各二値データと、を含むデータを生成して前記圧縮データに記録し、
前記画素群から異なる内容の低解像度データが連続して生成された場合に、該異なる内容の低解像度データが連続して生成された数をカウントし、該カウントした数と、前記異なる内容のデータが低解像度データであることを表す識別子と、前記異なる内容の各低解像度データと、を含むデータを生成して前記圧縮データに記録する、
画像処理方法。
【請求項１０】
画像処理装置が、複数の画素からなる画像データを圧縮するためのコンピュータプログラムであって、
入力した画像データから所定の画素数からなる画素群を順次抽出して、該各画素群が、白色と黒色の画素によって構成された白黒パターンであるか否かを判別する機能と、
前記画素群が白黒パターンである場合に、該画素群内の階調値を白色と黒色の配置に応じて二値化した二値データを生成する機能と、
前記画素群が白黒パターンでない場合に、該画素群の解像度を低減した低解像度データを生成する機能と、
前記画像データ内の各画素群から順次生成された前記二値データまたは前記低解像度データのそれぞれの連続数に応じて前記二値データおよび前記低解像度データをそれぞれ圧縮することで、前記二値データを圧縮したデータと前記低解像度データを圧縮したデータとが混在して記録された圧縮データを生成する圧縮機能と
をコンピュータに実現させるためのコンピュータプログラムであり、
前記圧縮機能では、前記画像データ内の各画素群から同一内容のデータが順次連続して生成された場合に、該同一内容のデータの連続数をカウントし、該カウントした数と、前記同一内容のデータが前記二値データまたは前記低解像度データのどちらであるかを示す識別子と、前記同一内容のデータうちの一のデータと、を含むデータを生成して前記圧縮データに記録し、
前記圧縮機能では、更に、
前記画素群から異なる内容の二値データが連続して生成された場合に、該異なる内容の二値データが連続して生成された数をカウントし、該カウントした数と、前記異なる内容のデータが二値データであることを表す識別子と、前記異なる内容の各二値データと、を含むデータを生成して前記圧縮データに記録し、
前記画素群から異なる内容の低解像度データが連続して生成された場合に、該異なる内容の低解像度データが連続して生成された数をカウントし、該カウントした数と、前記異なる内容のデータが低解像度データであることを表す識別子と、前記異なる内容の各低解像度データと、を含むデータを生成して前記圧縮データに記録する、
コンピュータプログラム。
【請求項１１】
請求項１０に記載のコンピュータプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の画素からなる画像データを圧縮する技術、および、圧縮された画像データを復号して出力する技術に関する。
【背景技術】
【０００２】
一般に、プリンタ等の画像出力装置によって、自然画等のように滑らかな階調変化を有する画像を出力する場合、３６０ｄｐｉ×３６０ｄｐｉ程度の解像度で出力を行えば、通常の使用には十分な画質を確保できる。しかし、文字や記号のように急峻な階調変化を有する画像を印刷する場合には、３６０ｄｐｉ×３６０ｄｐｉ程度の解像度では、エッジにボケが生じたり、線の太さにばらつきが生じたりして、画質の低下を招いてしまう。
【０００３】
そこで、文字や記号等が含まれる画像の画質を確保するため、７２０ｄｐｉ×７２０ｄｐｉ等の高解像度で出力を行うことが考えられるが、そうすると、画像データのデータ容量が増加し、それだけ、画像出力装置に搭載するメモリを大容量化する必要がある。また、データ容量の増加に伴い、コンピュータ等の画像処理装置から画像出力装置に画像データを転送するためのインタフェースも高速化する必要がある。
【０００４】
このような問題に対して、例えば、下記特許文献１では、画像データ中の局所的な部分の画素構成の複雑さに応じて解像度を動的に変化させることにより、データ容量の削減を図っている。
【０００５】
また、下記特許文献２では、画像データに対してＭＴＦ補正や白地抽出等の種々の画像処理を行った上で、文字領域と自然画領域とを分離し、これらの領域について、それぞれ異なる圧縮方法を適用することで、画像データの高圧縮化を図っている。具体的には、文字領域については、可逆的なエントロピ符号化を行い、自然画領域では、非可逆的なＡＤＣＴ（Adaptive Discrete Cosine Transform）符号化を行っている。
【０００６】
【特許文献１】特開平７−８７３１５号公報
【特許文献２】特開平４−３５６８７３号公報
【０００７】
しかし、上述した特許文献１では、特定の画素パターンが連続するか否かに応じて、その部分の複雑さ判断しており、解像度の切り換えを行うまでに複雑な演算処理を行う必要があった。
【０００８】
一方、上記特許文献２では、文字領域と自然画領域の分離判断に困難さを伴っており、また、これらの領域についてそれぞれ異なる圧縮方法を用いるため、圧縮を行うためのハードウェアと復号を行うためのハードウェアがその圧縮方法に応じてそれぞれ２種類ずつ必要となり、装置構成が複雑であった。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述した種々の問題を踏まえ、本発明が解決しようとする課題は、従来よりも簡易な構成で画像データの容量削減と出力画像の画質の向上を実現することにある。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本発明を次のように構成した。すなわち、
複数の画素からなる画像データを圧縮する画像処理装置であって、
入力した画像データから所定の画素数からなる画素群を順次抽出して、該各画素群が、白色と黒色の画素によって構成された白黒パターンであるか否かを判別する白黒パターン判別手段と、
前記画素群が白黒パターンである場合に、該画素群内の階調値を白色と黒色の配置に応じて二値化した二値データを生成する二値データ生成手段と、
前記画素群が白黒パターンでない場合に、該画素群の解像度を低減した低解像度データを生成する低解像度データ生成手段と、
前記画像データ内の各画素群から順次生成された前記二値データまたは前記低解像度データのそれぞれの連続数に応じて前記二値データおよび前記低解像度データをそれぞれ圧縮することで、前記二値データを圧縮したデータと前記低解像度データを圧縮したデータとが混在して記録された圧縮データを生成する圧縮手段と、を備え、
前記圧縮手段は、前記画像データ内の各画素群から同一内容のデータが順次連続して生成された場合に、該同一内容のデータの連続数をカウントし、該カウントした数と、前記同一内容のデータが前記二値データまたは前記低解像度データのどちらであるかを示す識別子と、前記同一内容のデータうちの一のデータと、を含むデータを生成して前記圧縮データに記録し、
前記圧縮手段は、更に、
前記画素群から異なる内容の二値データが連続して生成された場合に、該異なる内容の二値データが連続して生成された数をカウントし、該カウントした数と、前記異なる内容のデータが二値データであることを表す識別子と、前記異なる内容の各二値データと、を含むデータを生成して前記圧縮データに記録し、
前記画素群から異なる内容の低解像度データが連続して生成された場合に、該異なる内容の低解像度データが連続して生成された数をカウントし、該カウントした数と、前記異なる内容のデータが低解像度データであることを表す識別子と、前記異なる内容の各低解像度データと、を含むデータを生成して前記圧縮データに記録する
ことを要旨とする。
【００１１】
本発明の画像処理装置によれば、抽出した画素群が白色と黒色の画素によって構成されているか否かという単純な判断処理によって、文字等を表す白黒部分と自然画等を表すその他の部分とについて解像度を動的に変更することができる。また、画素群が白黒パターンであれば、その画素群の解像度を保ったままデータを二値化することができるので、文字等を表す白黒部分について画質の劣化を抑制することができる。更に、画素群の二値化や低解像度化によるデータ容量の削減に加え、データの連続数に応じた圧縮も行うので、画像データのデータ容量を更に削減することができる。また、本発明の画像処理装置では、二値データや低解像度データについては、そのデータの種別にかかわらず、データの連続数に応じた同一手法の圧縮を行うため、簡易な構成でデータ容量の削減を図ることが可能になる。
【００１２】
なお、上記構成において、白黒パターンとは、白色と黒色の両者を必ず含み、他の色を含まない画素群とすることができる。このような白黒パターンによれば、白色と黒色とによって構成された文字等のエッジ部分のみを画像中から抽出することができる。また、白のみ、黒のみの画素によって構成された画素群も、白黒パターンとして判別するものとしてもよい。一般に、画素群を低解像度化するよりも二値化する方がデータの圧縮率が高いため、白のみ、黒のみのパターンについても二値化することにより、画像データの容量を更に削減することができる。
【００１３】
なお、上記低解像度データ生成手段は、画素群を構成する画素の数の約数に応じて低解像度化を行うことができる。例えば、画素群が６つの画素によって構成されていれば、その解像度を３分の１、２分の１、６分の１に低減することができる。また、画素群が４つの画素によって構成されていれば、その解像度を２分の１、４分の１に低減することができる。このような場合、解像度の低減化の限度は、元の画像データの解像度を、画素群を構成する画素の数で割った解像度となる。
【００１４】
上記構成の画像処理装置において、
前記圧縮手段は、前記同一内容のデータが連続する数をカウントし、該同一内容のデータが前記二値データまたは前記低解像度データのどちらであるかを示す識別子と、前記カウントした数と、該同一内容のデータと、を含む圧縮データを生成することにより、前記圧縮を行うものとしてもよい。
【００１５】
このような構成によれば、識別子を使い分けることで、二値データと低解像度データとについて同一の圧縮形式を適用することができるため、簡易な構成でデータの圧縮を行うことができる。
【００１６】
上記構成の画像処理装置において、
前記圧縮手段は、更に、前記画素群から順次、前記二値データまたは前記低解像度データが生成された結果、異なる内容のデータが連続して生成された場合に、該異なる内容のデータが連続する数をカウントし、該異なる内容のデータが前記二値データまたは前記低解像度化データのどちらであるかを表す識別子と、前記カウントした数と、該異なる内容の各データと、を含む圧縮データを生成する手段を備えるものとしてもよい。
【００１７】
このような構成によれば、同一のデータが連続した場合だけでなく、異なるデータが連続した場合についても、その数をカウントして、圧縮データを生成する。そのため、異なる各データについてそれぞれ識別子やカウント数が不要となり、効率的にデータの圧縮を行うことができる。
【００１８】
上記構成の画像処理装置において、
前記圧縮手段は、前記圧縮を行うデータが、前記二値データか前記低解像度データかに応じて、前記カウント数を表すデータ、および、前記二値データまたは前記低解像度データを表すデータを、異なる長さのデータとするものとしてもよい。
【００１９】
このような構成によれば、二値データと低解像度データの性質に応じてデータ長を異なる長さとすることができるので、効率的にデータ容量を削減することができる。例えば、二値データは、文字等の部分を表すことが多く、繰り返し部分が少ないと考えられるため、そのカウント数を表すデータを、４ビット程度のデータ長とし、低解像度データについては、自然画等を表すことが多いため、繰り返し部分が多いと考えられ、そのカウント数を表すデータを８ビット程度のデータ長とすることができる。また、例えば、画素群が４つの画素から構成される場合には、二値データを４ビット単位のデータ長とすることができ、解像度の低減を行った画素の画素値がＲＧＢ各８ビットのデータからなる場合には、低解像度データを８ビット単位のデータ長とすることができる。
【００２０】
上記構成の画像処理装置において、
前記低解像度データ生成手段は、前記画素群を構成する各画素の画素値を平均化して、一つの画素の画素値を求めることで、前記解像度の低減を行うものとしてもよい。
【００２１】
このような構成によれば、画素値の平均化という極めて容易な処理により画素群の低解像度化を行うことができる。
【００２２】
上記構成の画像処理装置において、
更に、前記圧縮手段によって圧縮したデータを、当該画像処理装置と接続され、画像の出力を行う画像出力装置に送信する送信手段を備えるものとしてもよい。
【００２３】
このような構成によれば、画像の出力を行う画像出力装置に対して圧縮データを送信するので、通信時間を短縮することが可能になる。
【００２４】
なお、本発明は、次のような画像出力装置としても構成することができる。すなわち、
画像を出力する画像出力装置であって、
画像中の所定の画素数からなる画素群毎に該画素群が、白色と黒色の画素によって構成された白黒パターンである場合に二値化されるとともに、白黒パターンでない場合には低解像度化され、該二値化または低解像度化されたデータの連続数に応じてそのデータ容量が圧縮された圧縮データを受信する受信手段と、
前記受信した圧縮データを、前記連続数に基づき復号する復号手段と、
前記復号したデータのうち、前記二値データについては、該二値データの内容に応じて前記画素群に対して、白色または黒色の画素を配置し、前記低解像度データについては、前記画素群の解像度と同一の解像度まで、解像度を高める高解像度化を行うことで、前記画像を再構成する画像再構成手段と、
前記再構成された画像を出力する画像出力手段と
を備えることを要旨とする。
【００２５】
本発明の画像出力装置によれば、二値データについては、二値データの生成元となった画素群内に白色と黒色の画素が配置されるため、圧縮前の解像度を保ったまま出力を行うことができる。そのため、文字等を表す白黒部分については、画質の劣化を抑制して出力を行うことが可能になる。なお、自然画等の部分を表す低解像度データが、画素群内の画素値の平均化によって生成されている場合には、画素値の平均化に伴ってノイズ成分が軽減されているため、白黒部分以外の部分についても画質を向上させて出力を行うことができる。
【００２６】
上記構成の画像出力装置において、
前記画像再構成手段は、前記低解像度データについて、該画像出力装置の出力特性に応じて所定の色補正を行う色補正手段を備えるものとしてもよい。
【００２７】
このような構成によれば、画像出力装置の出力特性に応じて、画像の高画質化を図ることができる。なお、二値データについては、もともと、白色と黒色とを表すため、色補正を行うことが不要である。従って、本構成によれば、低解像度データについてのみ色補正を行えばよく、処理の簡略化を図ることができる。
【００２８】
上記構成の画像出力装置において、
前記色補正手段は、前記色補正として、色空間変換およびガンマ補正のうち、少なくともいずれか一方を行うものとしてもよい。
【００２９】
このような構成によれば、画像出力装置の特性に応じた色再現領域によって画像を出力することが可能になる。
【００３０】
上記構成の画像出力装置において、
前記画像出力手段は、
前記再構成された画像の画素値を、インク量を表すインク値に変換する色変換手段と、
前記インク値を、ドットの有無を表すドットデータに変換するハーフトーン手段と、
前記ドットデータに応じて所定の印刷媒体にインクを吐出してドットを形成するドット形成手段とを備えるものとしてもよい。
【００３１】
このような構成によれば、画像出力装置は、所定の印刷媒体に印刷を行うことで、画像を出力することが可能になる。
【００３２】
また、本発明は、次のような画像出力システムとしても構成することができる。すなわち、
複数の画素からなる画像データを入力して、画像の出力を行う画像出力システムであって、
前記入力した画像データから所定の画素数からなる画素群を順次抽出して、該各画素群が、白色と黒色の画素によって構成された白黒パターンであるか否かを判別する白黒パターン判別手段と、
前記画素群が白黒パターンである場合に、該画素群内の階調値を白色と黒色の配置に応じて二値化した二値データを生成する二値データ生成手段と、
前記画素群が白黒パターンでない場合に、該画素群の解像度を低減した低解像度データを生成する低解像度データ生成手段と、
前記画素群から前記二値データまたは前記低解像度データが順次生成された結果、同一内容のデータが連続して生成された場合に、その連続数に応じて前記二値データまたは前記低解像度データを圧縮する圧縮手段と、
前記圧縮データを、前記連続数に基づき復号する復号手段と、
前記復号したデータのうち、前記二値データについては、該二値データの内容に応じて前記画素群に対して、白色または黒色の画素を配置し、前記低解像度データについては、前記画素群の解像度と同一の解像度まで、解像度を高める高解像度化を行うことで、画像を再構成する画像再構成手段と、
前記再構成された画像を出力する画像出力手段と
を備えることを要旨とする。
【００３３】
かかる構成の画像出力システムによっても、上述した画像処理装置や画像出力装置と同様の種々の効果を奏することができる。
【００３４】
なお、本発明は、上述した画像処理装置や画像出力装置としての構成のほか、画像処理方法や画像出力方法、画像処理や画像出力を行うためのコンピュータプログラムとしても構成することができる。かかるコンピュータプログラムは、コンピュータが読取可能な記録媒体に記録されていてもよい。記録媒体としては、例えば、フレキシブルディスクやＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光磁気ディスク、メモリカード、ハードディスク等の種々の媒体を利用することができる。
【発明を実施するための最良の形態】
【００３５】
以下、上述した本発明の作用・効果を一層明らかにするため、本発明の実施の形態を実施例に基づき次の順序で説明する。
Ａ．印刷システムの構成：
Ｂ．コンピュータ側の処理：
Ｃ．プリンタ側の処理：
Ｄ．効果：
Ｅ．変形例：
【００３６】
Ａ．印刷システムの構成：
図１は、画像出力システムとしての印刷システム１００のハードウェア構成を示す説明図である。図示するように、本実施例の印刷システム１００は、画像処理装置としてのコンピュータ２００と、画像出力装置としてのプリンタ３００とから構成されている。
【００３７】
（Ａ−１）コンピュータの構成：
コンピュータ２００は、汎用のパーソナルコンピュータであり、ＣＰＵ２１０、ＲＡＭ２２０、ハードディスク２３０、ＵＳＢインタフェース２４０などを備えている。これらは所定のバスを介して相互に接続されている。
【００３８】
ＵＳＢインタフェース２４０には、メモリカードＭＣの読み書きを行うカードリーダ４００や、デジタルカメラ５００、プリンタ３００等が接続されている。コンピュータ２００は、このＵＳＢインタフェース２４０を介してメモリカードＭＣやデジタルカメラ５００内に記録された画像データを入力し、モニタ２５０への画像の表示や、プリンタ３００を用いた画像の印刷を行う。
【００３９】
ハードディスク２３０には、オペレーティングシステムやプリンタドライバなどがインストールされている。ＣＰＵ２１０は、コンピュータ２００の起動時に、これらのプログラムをメモリに展開して実行することで、図示する白黒パターン判別部２１２、二値化部２１４、平均化部２１６、圧縮部２１８として機能する。
【００４０】
白黒パターン判別部２１２は、メモリカードＭＣやデジタルカメラ５００から入力した画像から、順次、２×２の画素からなる画素群を抽出し、この画素群が白色と黒色の画素によって構成された白黒パターンであるか否かを判別する。
【００４１】
二値化部２１４は、白黒パターン判別部２１２によって画素群が白黒パターンであると判別された場合に、この画素群を、白色と黒色の画素の配置に応じて二値化し、二値データを生成する。
【００４２】
平均化部２１６は、白黒パターン判別部２１２によって画素群が白黒パターンではないと判別された場合に、この画素群内の階調値を平均化し、解像度を低減した低解像度データを生成する。
【００４３】
圧縮部２１８は、二値化部２１４によって生成された二値データと、平均化部２１６によって生成された低解像度データとをランレングス法と呼ばれるアルゴリズムによって圧縮する。この圧縮アルゴリズムの詳細については後詳する。この圧縮部２１８によって圧縮されたデータは、ＵＳＢインタフェース２４０を介して接続されたプリンタ３００に転送される。
【００４４】
（Ａ−２）プリンタの構成：
プリンタ３００は、印刷用紙Ｐにインクを吐出してドットの形成を行う印刷機構３１０と、この印刷機構３１０を制御する制御ユニット３２０とを備えている。
【００４５】
印刷機構３１０は、インクカートリッジ３１１を搭載したキャリッジ３１２や、キャリッジ３１２を主走査方向に駆動するキャリッジモータ３１３、印刷用紙Ｐを副走査方向に搬送する紙送りモータ３１４等から構成される。
【００４６】
キャリッジ３１２は、シアン（Ｃ）、マゼンタ（Ｍ）、イエロ（Ｙ）、ブラック（Ｋ）、ライトシアン（Ｌｃ）、ライトマゼンタ（Ｌｍ）の色を現すインク毎に計６個のインクヘッド３１５を備えている。キャリッジ３１２には、これらのインクが収容されたインクカートリッジ３１１が装着されている。インクカートリッジ３１１からインクヘッド３１５に供給されたインクは、図示しないピエゾ素子を駆動することで印刷用紙Ｐに吐出される。
【００４７】
キャリッジ３１２は、紙送りを行うプラテン３１６の軸方向と並行に設置された摺動軸３１８に移動自在に保持されている。キャリッジモータ３１３は、制御ユニット３２０からの指令に応じて駆動ベルト３１７を回転させることで、プラテン３１６の軸方向と平行に、すなわち、主走査方向にキャリッジ３１２を往復運動させる。
【００４８】
紙送りモータ３１４は、制御ユニット３２０からの指令に応じてプラテン３１６を回転させることで、プラテン３１６の軸方向と垂直に印刷用紙Ｐを搬送する。つまり、紙送りモータ３１４は、キャリッジ３１２を相対的に副走査方向に移動させることができる。
【００４９】
制御ユニット３２０は、上述したインクヘッド３１５やキャリッジモータ３１３、紙送りモータ３１４の動作を制御するためのユニットである。制御ユニット３２０は、ＣＰＵ３４０とＲＯＭ３５０とＲＡＭ３６０とＵＳＢインタフェース３７０とによって構成されている。
【００５０】
ＵＳＢインタフェース３７０は、コンピュータ２００のＵＳＢインタフェース２４０と接続されている。プリンタ３００は、このＵＳＢインタフェース３７０を介して、コンピュータ２００から送信された圧縮データを受信する。
【００５１】
ＲＯＭ３５０には、プリンタ３００の動作を制御するための制御プログラムが記憶されている。ＣＰＵ３４０は、かかる制御プログラムをプリンタ３００の起動時にＲＡＭ３６０に展開して実行することで、図示する復号部３４２と画像再構成部３４４として機能する。
【００５２】
復号部３４２は、ＵＳＢインタフェース３７０を介してコンピュータ２００から受信した圧縮データを、ランレングス法に基づき復号する。
【００５３】
画像再構成部３４４は、復号部によって復号されたデータに基づき、画像を再構成する。詳しくは、二値データについては２×２の画素群に対して、二値データのビットの状態に応じて白または黒の画素を配置し、低解像度データについては、２×２の画素群の解像度と同一の解像度まで解像度を高めることで、画素群への分割前の状態に画像を再構成する。
【００５４】
Ｂ．コンピュータ側の処理：
図２は、印刷システム１００による画像データの印刷にあたり、コンピュータ２００側で実行される印刷処理のフローチャートである。この印刷処理は、ユーザから印刷対象の画像データを指定されて所定の印刷操作がなされた場合に、コンピュータ２００のＣＰＵ２１０が実行する処理である。
【００５５】
この印刷処理が実行されると、コンピュータ２００のＣＰＵ２１０は、まず、ユーザによって指定されたＲＧＢ形式の画像データを、メモリカードＭＣやデジタルカメラ５００、ハードディスク２３０等から入力する（ステップＳ１００）。本実施例では、ここで入力される画像データは、７２０ｄｐｉ×７２０ｄｐｉの解像度を有するものとする。
【００５６】
ＣＰＵ２１０は、画像データを入力すると、白黒パターン判別部２１２を用いて、この画像データから２画素×２画素の画素群を抽出する（ステップＳ１１０）。そして、抽出された画素群が、白色（（Ｒ，Ｇ，Ｂ）＝（２５５，２５５，２５５））と黒色（（Ｒ，Ｇ，Ｂ）＝（０，０，０））の画素のみから構成された白黒パターンであるか否かを判定する（ステップＳ１２０）。なお、本実施例では、白色と黒色から構成されるパターンに加え、白色のみから構成されたパターンと、黒色のみから構成されたパターンも、白黒パターンに含まれるものとする。
【００５７】
上記ステップＳ１２０において、画素群が白黒パターンであると判定された場合には（ステップＳ１２０：Ｙｅｓ）、ＣＰＵ２１０は、二値化部２１４を用いて、画素群内の白色と黒色の画素の配置に応じて、ＲＧＢデータを二値データに変換する（ステップＳ１３０）。具体的には、画素群内の白色の部分を「１」とし、黒色の部分を「０」とする。
【００５８】
図３は、画素群内の白黒の配置に応じて生成される二値データを示す説明図である。図の上部に示すように、画素群を構成する４つの画素の左上の画素をＡ、左下をＢ、右上をＣ、右下をＤとすると、例えば、画素群のＲＧＢデータが、（Ａ，Ｂ，Ｃ，Ｄ）＝（黒，黒，黒，白）、すなわち、（Ａ，Ｂ，Ｃ，Ｄ）＝（０，０，０，２５５）であれば、「０００１」という４ビットデータに変換される。また、例えば、画素群のＲＧＢデータが、（Ａ，Ｂ，Ｃ，Ｄ）＝（黒、黒、白、黒）、すなわち、（Ａ，Ｂ，Ｃ，Ｄ）＝（０，０，２５５，０）であれば、「００１０」という４ビットデータに変換される。この二値化処理では、Ｒ，Ｇ，Ｂ各８ビットずつの計２４ビットのデータを４ビットのデータに変換することができるので、元の画素群の解像度（７２０ｄｐｉ×７２０ｄｐｉ）を保ちつつ、データ容量を格段に削減することができる。
【００５９】
説明を図２に戻す。ＣＰＵ２１０は、上記ステップＳ１３０において順次変換された二値データの内容が同一である場合には、その二値データが連続して生成された数（連続数ＲＬ１）をカウントする（ステップＳ１４０）。これに対して、順次変換された二値データの内容が各々異なる場合には、異なる内容の二値データが連続して生成された数（非連続数ＲＬ０）をカウントする（ステップＳ１４０）。かかる連続数ＲＬ１および非連続数ＲＬ０は、後述するランレングス圧縮の際に用いるパラメータである。
【００６０】
上記ステップＳ１４０によって連続数ＲＬ１または非連続数ＲＬ０のカウントを行うと、続いて、ＣＰＵ２１０は、ランレングス圧縮の対象となるデータの種別を表すデータ識別子を、二値データを表す「１」に設定する（ステップＳ１５０）。このデータ識別子も、後述するランレングス圧縮の際に用いるパラメータである。
【００６１】
上記ステップＳ１２０において、画素群が白黒パターンではないと判定された場合、すなわち、画素群内に、白と黒以外の色を有する画素を１つでも含む場合には（ステップＳ１２０：Ｎｏ）、ＣＰＵ２１０は、平均化部２１６を用いて画素群内の階調値を平均化することで、７２０ｄｐｉ×７２０ｄｐｉの解像度を３６０ｄｐｉ×３６０ｄｐｉまで低減させた低解像度データを生成する（ステップＳ１６０）。具体的には、次の演算によって４つの画素の階調値の平均値を求める。すなわち、４つの画素Ａ，Ｂ，Ｃ，Ｄの階調値をそれぞれ、
【００６２】
Ａ＝（Ｒａ，Ｇａ，Ｂａ）
Ｂ＝（Ｒｂ，Ｇｂ，Ｂｂ）
Ｃ＝（Ｒｃ，Ｇｃ，Ｂｃ）
Ｄ＝（Ｒｄ，Ｇｄ，Ｂｄ）
【００６３】
とすると、低解像度化後の１画素の階調値（Ｒ，Ｇ，Ｂ）は、次のように算出される。
【００６４】
Ｒ＝（Ｒａ＋Ｒｂ＋Ｒｃ＋Ｒｄ）／４
Ｇ＝（Ｇａ＋Ｇｂ＋Ｇｃ＋Ｇｄ）／４
Ｂ＝（Ｂａ＋Ｂｂ＋Ｂｃ＋Ｂｄ）／４
【００６５】
ＣＰＵ２１０は、上記ステップＳ１６０において画素群から低解像度データを生成すると、順次生成された低解像度データの内容が同一の場合には、その低解像度データが連続して生成された数（連続数ＲＬ１）をカウントする（ステップＳ１７０）。これに対して、順次生成された低解像度データの内容が各々異なる場合には、異なる内容の低解像度データが連続して生成された数（非連続数ＲＬ０）をカウントする（ステップＳ１７０）。
【００６６】
上記ステップＳ１７０によって連続数ＲＬ１または非連続数ＲＬ０のカウントを行うと、続いて、ＣＰＵ２１０は、ランレングス圧縮の対象となるデータの種別を表すデータ識別子を、低解像度データを表す「０」に設定する（ステップＳ１８０）。
【００６７】
上記ステップＳ１５０またはステップＳ１８０によって、データ識別子の設定を行うと、ＣＰＵ２１０は、このデータ識別子と、連続数ＲＬ１または非連続数ＲＬ０に基づき、圧縮部２１８を用いて、二値データまたは低解像度データをランレングス圧縮する（ステップＳ１９０）。このランレングス圧縮の詳細は後述する。
【００６８】
ＣＰＵ２１０は、ランレングス圧縮を行うと、上記ステップＳ１００によって入力したＲＧＢ画像データ内の全ての画素群について、ランレングス圧縮が完了したか否かを判断する（ステップＳ２００）。判断の結果、全画素群について完了していれば（ステップＳ２００：Ｙｅｓ）、ランレングス圧縮によって得られた圧縮データを、ＵＳＢインタフェース２４０を介して、プリンタ３００に送信する（ステップＳ２１０）。一方、全画素群について完了していなければ（ステップＳ２００：Ｎｏ）、上記ステップＳ１１０に処理を戻し、残りの画素群について、ランレングス圧縮を行う。
【００６９】
以下、上述した印刷処理のステップＳ１９０で実行されるランレングス圧縮について詳しく説明する。
図４は、ランレングス圧縮の結果、生成されるランレングスデータの基本構成を示す説明図である。図示するように、本実施例のランレングスデータは、基本的に、４ビット以上のカウンタ部と、４ビット以上のデータ部とから構成される。以下の説明では、１組のカウンタ部とデータ部とからなるデータを「ランレングスデータ」と呼ぶ。また、画像データ中の画素群を全てランレングス圧縮したデータを「圧縮データ」と呼ぶ。
【００７０】
図５は、ランレングスデータ中のカウンタ部の詳細な構成を示す説明図である。
図５（ａ）には、低解像度データをランレングス圧縮した場合のカウンタ部の構成を示した。図５（ａ）に示すように、低解像度データをランレングス圧縮する場合には、カウンタ部を８ビットのデータ長とし、その最上位ビット（ＭＳＢ）に、データ識別子を記録する。上述したように、低解像度データをランレングス圧縮する場合には、データ識別子には「０」と記録する（図２のステップＳ１８０参照）。
【００７１】
カウンタ部のＭＳＢに続く７ビットには、上記ステップＳ１７０でカウントした低解像度データの連続数ＲＬ１または非連続数ＲＬ０を表すカウンタＣ１を記録する。カウンタＣ１の値が、０から６３までの場合には、このカウンタＣ１は、非連続数ＲＬ０（＝Ｃ１＋１）を表すものとし、６４から１２７までの場合には、カウンタＣ１は、連続数ＲＬ１（＝１２９−Ｃ１）を表すものとする。つまり、カウンタＣ１の値が取る範囲に応じて、記録されている数が、連続数ＲＬ１か非連続数ＲＬ０かを識別することができる。
【００７２】
非連続数ＲＬ０または連続数ＲＬ１が最大値、つまり、カウンタＣ１の値が、６３または６４の場合には、カウンタＣ１に続いて、８ビットのカウンタＣ２を用意する。カウンタＣ２は、０から２５５までの値をとる。カウンタＣ２の値が２５５となる場合には、更に、カウンタＣ３が続き、以降、カウンタの値が２５５未満となるまで、カウンタがＣ４、Ｃ５、・・・と続く。連続数ＲＬ１および非連続数ＲＬ０は、各カウンタが表す数を合計した値となる。
【００７３】
図５（ｂ）には、二値データをランレングス圧縮した場合のカウンタ部の構成を示している。図５（ｂ）に示すように、低解像度データをランレングス圧縮する場合には、カウンタ部を、４ビットのデータ長とし、その最上位ビット（ＭＳＢ）に、データ識別子を記録する。上述したように、二値データをランレングス圧縮する場合には、データ識別子には「１」と記録する（図２のステップＳ１５０参照）。
【００７４】
上述したように、低解像度データをランレングス圧縮する場合には、カウンタ部のデータ長は、８ビットのデータ長で構成しているのに対して（図５（ａ）参照）、二値データをランレングス圧縮する場合には、基本的に４ビットのデータ長でカウンタ部を構成している（図５（ｂ）参照）。すなわち、本実施例のランレングス圧縮では、圧縮しようとするデータの種類、すなわち、データ識別子の状態に応じて、カウンタ部のデータ長を可変している。低解像度データの圧縮時にカウンタ部を８ビットのデータ長としたのは、低解像度データは、ＲＧＢ各８ビットの階調値を表す情報であり、これとの整合を図るためである。一方、二値データの圧縮時にカウンタ部を４ビットのデータ長としたのは、二値データ自体が４ビットの情報であり、これとの整合を図るためである。
【００７５】
カウンタ部のＭＳＢに続く３ビットには、上記ステップＳ１４０でカウントした二値データの連続数ＲＬ１または非連続数ＲＬ０を表すカウンタＣ１を記録する。カウンタＣ１の値が、０から３までの場合には、このカウンタＣ１は、非連続数ＲＬ０（＝Ｃ１＋１）を表すものとし、４から７までの場合には、カウンタＣ１は、連続数ＲＬ１（＝９−Ｃ１）を表すものとする。つまり、カウンタＣ１の値が取る範囲に応じて、記録されている数が、連続数か非連続数かを識別することができる。
【００７６】
非連続数ＲＬ０または連続数ＲＬ１が最大値、つまり、カウンタＣ１の値が、３または４の場合には、カウンタＣ１に続いて、４ビットのカウンタＣ２を用意する。カウンタＣ２は、０から１５までの値をとる。非連続数ＲＬ０または連続数ＲＬ１が最大値未満の場合には、カウンタＣ２の部分には、データ部として二値データが記録される。なお、カウンタＣ２の値が最大値の１５となる場合には、更に、８ビットのカウンタＣ３が続き、以降、カウンタの値が２５５未満となるまで、８ビットのカウンタがＣ４、Ｃ５、・・・と続く。連続数ＲＬ１および非連続数ＲＬ０は、各カウンタが表す数を合計した値となる。
【００７７】
図６は、低解像度データをランレングス圧縮した例を示す説明図である。
図６（ａ）には、低解像度データの非連続数ＲＬ０が２の場合の一例を示した。この場合、圧縮前には、図６（ａ）の上部に示すように、異なるＲＧＢ値を持つ低解像度データが２つ続いている。これをランレングス圧縮すると、図６（ａ）の下部に示すように、まず、最初の８ビットのカウンタ部のＭＳＢに、データ識別子として、低解像度データを表す「０」を記録する。そして、続く７ビットのカウンタＣ１として、非連続数ＲＬ０が２となるように、Ｃ１（＝ＲＬ０−１）の値を１（００００００１）と記録する。カウンタ部をこのように構成すると、続いて、データ部として、１つ目の低解像度データのＲＧＢデータ（Ｒ，Ｇ，Ｂ各８ビットのデータ）と、２つめの低解像度データのＲＧＢデータ（Ｒ，Ｇ，Ｂ各８ビットのデータ）とをそれぞれ記録する。
【００７８】
図６（ｂ）には、低解像度データの連続数ＲＬ１が３の場合の圧縮例を示した。この場合、圧縮前には、図６（ｂ）の上部に示すように、同じＲＧＢ値を持つ低解像度データが３つ続いている。これをランレングス圧縮すると、図６（ｂ）の下部に示すように、まず、最初の８ビットのカウンタ部のＭＳＢに、データ識別子として、低解像度データを表す「０」を記録する。そして、続く７ビットのカウンタＣ１として、連続数ＲＬ１が３となるように、Ｃ１（＝１２９−ＲＬ０）の値を１２６（１１１１１１０）と記録する。カウンタ部をこのように構成すると、続いて、データ部として、３つの低解像度データに共通する同一のＲＧＢデータ（Ｒ，Ｇ，Ｂ各８ビットのデータ）を１つ記録する。
【００７９】
図７は、二値データをランレングス圧縮した例を示す説明図である。
図７（ａ）には、二値データの非連続数ＲＬ０が２の場合の一例を示した。この場合、圧縮前には、図７（ａ）の上部に示すように、異なる白黒画素の配置を有する二値データが２つ続いている（ＡＢＣＤとＥＦＧＨ）。これをランレングス圧縮すると、図７（ｂ）の下部に示すように、まず、最初の４ビットのカウンタ部のＭＳＢに、データ識別子として、二値データを表す「１」を記録する。そして、続く３ビットのカウンタＣ１として、非連続数ＲＬ０が２となるように、Ｃ１（＝ＲＬ０−１）の値を１（００１）と記録する。カウンタ部をこのように構成すると、続いて、データ部として、１つ目の二値データ（ＡＢＣＤ）と、２つ目の二値データ（ＥＦＧＨ）とを記録する。２つ目の二値データは、ランレングスデータを構成する２バイト目の上位４ビットに記録される。このため、かかる２バイト目の下位４ビットには、データ長の整合をとるため、ダミーデータ（ｘｘｘｘ）を記録する。ダミーデータは、任意の値であり、例えば、「００００」と記録することができる。
【００８０】
図７（ｂ）には、二値データの連続数ＲＬ１が７の場合の圧縮例を示した。この場合、圧縮前には、図７（ｂ）の上部に示すように、同一の白黒画素の配置を有する二値データが７つ続いている。これをランレングス圧縮すると、図７（ｂ）の下部に示すように、まず、最初の４ビットのカウンタ部のＭＳＢに、データ識別子として、二値データを表す「１」を記録する。そして、続く３ビットのカウンタＣ１と４ビットのカウンタＣ２に、連続数ＲＬ１が７となるように、それぞれ、Ｃ１の値を４（１００）、Ｃ２の値を２（００１０）と記録する。カウンタＣ１には、連続数ＲＬ１として、最大５まで記録できるので、Ｃ２の値は、連続数ＲＬ１の７から５を差し引いた２となる。カウンタ部をこのように構成すると、続いて、データ部として、７つのデータに共通の二値データ（ＡＢＣＤ）を１つ記録する。この二値データは、ランレングスデータを構成する２バイト目の上位４ビットに記録されるので、かかる２バイト目の下位４ビットには、データ長の整合をとるためダミーデータを記録する。
【００８１】
図６に示したように、低解像度データをランレングス圧縮する場合には、データ部は、基本的に２４ビット（ＲＧＢ各８ビット）のデータ長で構成しているのに対して、図７に示したように、二値データをランレングス圧縮する場合には、４ビットのデータ長でデータ部を構成している。すなわち、本実施例のランレングス圧縮では、圧縮しようとするデータの種類、すなわち、データ識別子の状態に応じて、データ部のデータ長を可変している。
【００８２】
図８は、低解像度データと二値データとが混在する場合のランレングス圧縮の一例を示す説明図である。図８の上部には、圧縮前のデータとして、同一のＲＧＢ値を持つ低解像度データが３つ続き、更に、異なる白黒画素の配置を有する二値データが３つ続く画像データを示している。このデータをランレングス圧縮すると、図８の下部に示すように、まず、データ識別子として低解像度データを表す「０」と、連続数ＲＬ１が３となるようにカウンタＣ１の値が１２６（１１１１１１０）とが記録されたカウンタ部が用意され、これに続き、同一のＲＧＢ値を持つ１組のＲＧＢデータがデータ部として用意される。そして、更に、データ識別子として二値データを表す「１」と、非連続数ＲＬ０が３となるようにカウンタＣ１の値が２（０１０）とが記録されたカウンタ部が用意され、これに続き、異なる白黒画素の配置を有する二値データが３つ記録されたデータ部が用意される。
【００８３】
図８に示したランレングス圧縮の例によれば、圧縮前のデータは、Ｒ，Ｇ，Ｂ各８ビットのデータ容量を有する低解像度データが３つと、４ビットのデータ容量を有する二値データが３つ有している。そのため、全体として、８４ビット（＝（８ビット×３色）×３個＋４ビット×３個）のデータ容量を有することになる。これに対して、ランレングス圧縮後には、図の下部に示すように、全体で４８（＝８＋８＋８＋８＋８＋８）ビットのデータ容量となっており、データ容量が半分程度まで低減されている。
【００８４】
また、図８の上部に示したデータのうち、最初の３つの低解像度データは、もとのＲＧＢ画像データから解像度が半減されており、続く３つの二値データは、白黒画素の配置に応じた二値化処理が行われている。すなわち、解像度の低減と二値化とが行われる前には、図８の上部に示したデータは、Ｒ，Ｇ，Ｂ各８ビットのデータを有する２４個（＝横１２個×縦２個）の画素により構成されていることになる。つまり、もともとのＲＧＢ画像データは、５７６ビット（＝８ビット×３色×２４個）のデータ容量を有していることになる。そのため、本実施例のランレングス圧縮によれば、このデータが、４８ビットまで圧縮されているため、１０分の１以下のデータ容量とすることができ、大幅なデータ容量の削減を行うことができる。
【００８５】
Ｃ．プリンタ側の処理：
図９および図１０は、プリンタ３００側で実行される印刷処理のフローチャートである。この処理は、プリンタ３００が、コンピュータ２００から圧縮データを受信した際にプリンタ３００のＣＰＵ３４０が実行する処理である。
【００８６】
この印刷処理が実行されると、プリンタ３００のＣＰＵ３４０は、まず、ＵＳＢインタフェース３７０を介して、コンピュータ２００から送信された圧縮データを受信する（ステップＳ３００）。
【００８７】
ＣＰＵ３４０は、圧縮データを受信すると、この圧縮データ内に含まれるランレングスデータを１つ抽出する（ステップＳ３１０）。ランレングスデータとは、上述したように、１組のカウント部とデータ部とからなるデータである。
【００８８】
ＣＰＵ３４０は、ランレングスデータを抽出すると、そのカウント部に記録されたデータ識別子が、二値データを表す「１」であるか否かを判別する（ステップＳ３２０）。
【００８９】
上記ステップＳ３２０による判別の結果、データ識別子が「１」であれば（ステップＳ３２０：Ｙｅｓ）、ＣＰＵ３４０は、上記ステップＳ３１０で抽出されたランレングスデータが、二値データが圧縮されたデータであると判断し、そのカウンタ部が表す連続数ＲＬ１あるいは非連続数ＲＬ０と、４ビット単位のデータ部とに基づき、復号部３４２を用いて二値データのランレングス復号を行う（ステップＳ３３０）。
【００９０】
二値データのランレングス復号が完了すると、ＣＰＵ３４０は、画像再構成部３４４を用いて、復号された二値データを２×２画素のＲＧＢデータに再構成する（ステップＳ３４０）。つまり、二値データ中に、１と記録された画素に対しては、そのＲＧＢ値を白色とし、０と記録された画素に対しては、そのＲＧＢ値を黒色とする。こうすることで、図３に示した二値データへの変換の逆の変換が行われる。
【００９１】
上記ステップＳ３２０による判別の結果、データ識別子が「０」であれば（ステップＳ３２０：Ｎｏ）、ＣＰＵ３４０は、上記ステップＳ３１０で抽出されたランレングスデータが、低解像度データが圧縮されたデータであると判断し、そのカウンタ部が表す連続数ＲＬ１あるいは非連続数ＲＬ０と、２４ビット単位（ＲＧＢ各８ビット単位）のデータ部とに基づき、復号部３４２を用いて低解像度データのランレングス復号を行う（ステップＳ３５０）。
【００９２】
低解像度データのランレングス復号を完了すると、ＣＰＵ３４０は、画像再構成部３４４を用いて、復号された各低解像度データに対して以下の処理を行う（ステップＳ３６０〜ステップＳ３８０）。すなわち、まず、ＣＰＵ３４０は、復号された各低解像度データに対して、色空間変換を行う（ステップＳ３６０）。この色空間変換処理では、デジタルカメラ５００やコンピュータ２００がサポートするｓＲＧＢ色空間によって表されたＲＧＢデータを、プリンタ３００がサポートする色空間であるｅＲＧＢ色空間に変換する。ｅＲＧＢ色空間とは、ｓＲＧＢ色空間よりも色再現領域の広い色空間である。
【００９３】
色空間変換後、ＣＰＵ３４０は、色空間の変換されたＲＧＢデータに対して、プリンタ３００による印刷時に最適な発色となるように、プリンタ３００の発色特性に応じたガンマ補正を行う（ステップＳ３７０）。なお、白色と黒色の画素については、色空間変換やガンマ補正を行っても、その色合いは変化しないことから、上記ステップＳ３４０においてＲＧＢデータに変換された二値データについては、これらの処理を省略するものとした。こうすることにより、処理の高速化を図ることができる。
【００９４】
ガンマ補正を行うと、ＣＰＵ３４０は、ガンマ補正後の各画素について、高解像度化を行う（ステップＳ３８０）。低解像度データは、コンピュータ２００側の印刷処理において、２×２の画素の階調値を平均化することで生成されているため、かかる高解像度化処理では、１×１の画素（３６０ｄｐｉ×３６０ｄｐｉ）を２×２の画素（７２０ｄｐｉ×７２０ｄｐｉ）に分割し、それぞれの画素のＲＧＢデータとして、元の画素のＲＧＢデータをそのまま適用する。この高解像度化処理では、ＲＧＢの値を変化させることなく、単純に画素数を増加させればよいため、高速に高解像度化を行うことができる。以上の処理により、低解像度データは、二値データと同じ解像度を有することになる。
【００９５】
ＣＰＵ３４０は、上記ステップＳ３４０による二値データからＲＧＢデータへの変換、またはステップＳ３８０による高解像度化を行うと、圧縮データ中の全てのランレングスデータについてこれらの処理が完了したか否かを判断する（ステップＳ３９０）。その結果、完了していないと判断した場合には（ステップＳ３９０：Ｎｏ）、上記ステップＳ３１０へ処理を戻し、圧縮データから次のランレングスデータを抽出して、上述した各処理を繰り返す。
【００９６】
上記ステップＳ３９０において、全てのランレングスデータについて処理が完了したと判断した場合には（ステップＳ３９０：Ｙｅｓ）、ステップＳ３００でコンピュータ２００から受信した圧縮データが、上述したコンピュータ側の印刷処理のステップＳ１００で入力したＲＧＢ画像データに再構成されたことになる。そのため、ＣＰＵ３４０は、以上の処理によって得られたＲＧＢ画像データを、プリンタ３００による印刷に適したＣＭＹＫデータに色変換する（図１０のステップＳ４００）。
【００９７】
色変換処理を完了すると、ＣＰＵ３４０は、色変換されたＣＭＹＫデータに対して、ハーフトーン処理を行う（ステップＳ４１０）。ハーフトーン処理とは、ＣＭＹＫの階調値を、ドットの分布、すなわち、ドットのオン・オフによって表す処理である。ハーフトーン処理としては、例えば、周知のディザ法、誤差拡散法、平均誤差最小法、本願出願人によって出願された国際公開第２００４／０８６７５０号に記載の方法などを適用することができる。
【００９８】
最後に、ＣＰＵ３４０は、ハーフトーン処理の結果得られたドットのオン・オフデータに従って、印刷機構３１０を制御し、印刷用紙Ｐ上にインクを吐出して、カラー印刷を行う（ステップＳ４２０）。以上の処理により、印刷システム１００による印刷処理が完了する。
【００９９】
Ｄ．効果：
以上で説明した本実施例の印刷システム１００によれば、画素群が白色と黒色の画素によって構成されているか否かという単純な判断処理によって、文字等を表す白黒部分と自然画等を表すその他の部分とについて解像度を動的に変更することができる。
【０１００】
また、画像データから抽出された２×２の画素群が白黒パターンであれば、その解像度を７２０ｄｐｉ×７２０ｄｐｉに保ったまま二値化を行うことができる。一方、画素群が白黒パターンでなければ、その部分の解像度を３６０ｄｐｉ×３６０ｄｐｉまで低減することができる。そのため、全体としてデータ容量を削減しつつ、文字等を表す白黒部分については、画質の劣化を伴うことなく印刷を行うことができる。
【０１０１】
更に、本実施例では、データ容量の低減された二値データや低解像度データについても、そのデータの連続数や非連続数に応じたランレングス圧縮を行う。そのため、データ容量をより削減することが可能になる。
【０１０２】
また、本実施例では、二値データによって表される画像中の文字等の部分についても、低解像度データによって表される自然画等の部分についても、同一の圧縮方法であるランレングス圧縮を行う。そのため、簡易な構成で画像データ全体の容量を削減することが可能になる。
【０１０３】
また、本実施例では、プリンタ３００による印刷処理時に、低解像度データによって表される自然画等の部分については色空間変換やガンマ補正を行うことで、色再現性を高めるものとした。一方、二値データによって表される文字等の白黒部分については、色空間変換やガンマ補正を行っても、色合いの変化はもともと生じないため、これらの処理を行わないものとした。本実施例では、画像データを白黒部分とその他の部分とに区別してデータ容量の削減を行うアルゴリズムの特性上、白黒部分以外の必要な部分にのみ色空間変換やガンマ補正を行うことが容易となる。そのため、効率的に色空間変換やガンマ補正を行うことができ、この結果、印刷スピードの高速化を図ることが可能になる。
【０１０４】
Ｅ．変形例：
以上、本発明の実施例について説明したが、本発明はこのような実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。例えば、ソフトウェアによって実現した機能は、ハードウェアによって実現するものとしてもよい。そのほか、以下のような変形が可能である。
【０１０５】
（Ｅ−１）変形例１：
上記実施例では、印刷システム１００は、コンピュータ２００とプリンタ３００とから構成されるものとした。これに対して、印刷システム１００は、プリンタ３００単体で構成されるものとしてもよい。すなわち、プリンタ３００に、カードリーダ４００を備えさせ、このカードリーダ４００を介して、メモリカードＭＣに記録された画像データを、プリンタ３００が直接入力するものとする。そして、プリンタ３００のＣＰＵ３４０が、図２に示したコンピュータ側の印刷処理を実行するものとする。こうすることで、プリンタ３００のＲＡＭ３６０内に一時的に蓄えるデータの容量を削減することが可能になり、メモリのコストダウンを図ることが可能になる。
【０１０６】
（Ｅ−２）変形例２：
上記実施例では、白色のみからなる画素群と、黒色のみからなる画素群とを、両者とも白黒パターンであるものとして扱った。これに対して、白色のみからなる画素群と黒色のみからなる画素群とは、白黒パターンではないものとしてもよい。こうすることで、白黒のエッジを有する文字等の部分についてのみ二値化を行うことができる。
【０１０７】
（Ｅ−３）変形例３：
上記実施例では、コンピュータ２００は、画素群の二値化および低解像度化を行った後、更に、ランレングス圧縮を行い、圧縮データをプリンタ３００に送信するものとした。しかし、二値化および低解像度化によっても、元のＲＧＢ画像データは、最低でも４分の１のデータに圧縮されるため、コンピュータ２００は、ランレングス圧縮を省略して、二値化データおよび低解像度データを直接プリンタ３００に送信するものとしてもよい。このような構成によれば、印刷システム１００は、ランレングス圧縮および復号に伴う処理を省略することができる。そのため、コンピュータ２００とプリンタ３００とを接続するインタフェースが十分な通信帯域を有していれば、印刷速度の高速化を図ることが可能になる。
【０１０８】
（Ｅ−４）変形例４：
上記実施例では、図２に示したように、コンピュータ２００側で、全ての画素群についてランレングス圧縮を完了した後に、圧縮データをプリンタ３００に送信するものとした。これに対して、圧縮データの生成完了を待たず、各ランレングスデータが生成され次第、このランレングスデータをプリンタ３００に送信するものとしてもよい。また、かかる場合には、プリンタ３００は、ランレングスデータを受信しつつ、ストリーミング的に復号、色変換、ハーフトーン処理を行って印刷を行うものとしてもよい。このような構成であれば、印刷時間をより短縮することができる。
【０１０９】
（Ｅ−５）変形例５：
上記実施例では、ランレングスデータのカウンタ部に、連続数ＲＬ１あるいは非連続数ＲＬ０を記録することで、ランレングスデータのデータ長を表すものとした。これに対して、ランレングスデータの最初のビットあるいはバイトに開始点を表す符号を記録し、ランレングスデータの最後のビットあるいはバイトに終了点を表す符号を記録することで、ランレングスデータのデータ長を表すものとしてもよい。
【図面の簡単な説明】
【０１１０】
【図１】印刷システム１００のハードウェア構成を示す説明図である。
【図２】コンピュータ２００側で実行される印刷処理のフローチャートである。
【図３】画素群内の白黒の配置に応じて生成される二値データを示す説明図である。
【図４】ランレングスデータの基本構成を示す説明図である。
【図５】ランレングスデータ中のカウンタ部の詳細な構成を示す説明図である。
【図６】低解像度データをランレングス圧縮した例を示す説明図である。
【図７】二値データをランレングス圧縮した例を示す説明図である。
【図８】低解像度データと二値データが混在する場合のランレングス圧縮の一例を示す説明図である。
【図９】プリンタ３００側で実行される印刷処理のフローチャートである。
【図１０】プリンタ３００側で実行される印刷処理のフローチャートである。
【符号の説明】
【０１１１】
１００…印刷システム
２００…コンピュータ
２１０…ＣＰＵ
２１２…白黒パターン判別部
２１４…二値化部
２１６…平均化部
２１８…圧縮部
２２０…ＲＡＭ
２３０…ハードディスク
２４０…ＵＳＢインタフェース
２５０…モニタ
３００…プリンタ
３１０…印刷機構
３１１…インクカートリッジ
３１２…キャリッジ
３１３…キャリッジモータ
３１４…紙送りモータ
３１５…インクヘッド
３１６…プラテン
３１７…駆動ベルト
３１８…摺動軸
３１０…印刷機構
３２０…制御ユニット
３４０…ＣＰＵ
３４２…復号部
３４４…画像再構成部
３５０…ＲＯＭ
３６０…ＲＡＭ
３７０…ＵＳＢインタフェース
４００…カードリーダ
５００…デジタルカメラ
ＭＣ…メモリカード
【図１】
0004626473.tif 000002
【図２】
0004626473.tif 000003
【図３】
0004626473.tif 000004
【図４】
0004626473.tif 000005
【図５】
0004626473.tif 000006
【図６】
0004626473.tif 000007
【図７】
0004626473.tif 000008
【図８】
0004626473.tif 000009
【図９】
0004626473.tif 000010
【図１０】
0004626473.tif 000011