(57)【要約】【課題】画像の再現性の低下を抑制しつつ、画像データのデータサイズを低減する技術を提供すること。【解決手段】処理対象画像データで表される処理対象画像に含まれる複数個の画素で構成されるブロックごとに、ブロック内の複数個の画素が表す色の個数を低減させる色数低減処理を行うことによって、処理対象画像データから色数低減画像データを生成する低減部であって、色数低減画像データに含まれる各色値の階調数は、処理対象画像データに含まれる各色値の階調数と同じである、低減部と、色数低減画像データを用いた圧縮処理を実行することによって、圧縮画像データを生成する圧縮部と、を備える。【選択図】        図３
2013183240.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置であって、
処理対象画像データで表される処理対象画像に含まれる複数個の画素で構成されるブロックごとに、前記ブロック内の前記複数個の画素が表す色の個数を低減させる色数低減処理を行うことによって、前記処理対象画像データから色数低減画像データを生成する低減部であって、前記色数低減画像データに含まれる各色値の階調数は、前記処理対象画像データに含まれる各色値の階調数と同じである、前記低減部と、
前記色数低減画像データを用いた圧縮処理を実行することによって、圧縮画像データを生成する圧縮部と、
を備える、画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記低減部は、第１の処理条件に従って第１の前記色数低減処理を実行し、前記第１の色数低減処理後の前記圧縮画像データのデータサイズが閾値よりも大きい場合に、前記第１の処理条件とは異なる第２の処理条件に従って第２の前記色数低減処理を実行し、
前記第２の色数低減処理で用いられる前記処理対象画像データは、前記第１の色数低減処理前の前記処理対象画像データ、または、前記第１の色数低減処理後の前記色数低減画像データであり、
前記第２の処理条件は、前記第１の処理条件と比較して、前記ブロック内の前記複数個の画素が表す色の個数を低減し易い条件である、画像処理装置。
【請求項３】
請求項２に記載の画像処理装置であって、
前記低減部は、
前記第１の処理条件に従った前記第１の色数低減処理では、Ｎ１個（Ｎ１は２以上の整数）の画素で構成される第１種の前記ブロックを用い、
前記第２の処理条件に従った前記第２の色数低減処理では、前記Ｎ１個よりも多いＮ２個（Ｎ２は整数）の画素で構成される第２種の前記ブロックを用いる、画像処理装置。
【請求項４】
請求項２または３に記載の画像処理装置であって、
前記色数低減処理は、前記ブロックに含まれる前記複数個の画素のうちの２つの画素の間の色の相違を表す相違値が基準範囲内の値である場合に、当該２つの画素の色値を同一の値に設定する処理を含み、
前記低減部は、
前記第１の処理条件に従った前記第１の色数低減処理では、第１の前記基準範囲を用い、
前記第２の処理条件に従った前記第２の色数低減処理では、前記第１の基準範囲よりも広い第２の前記基準範囲を用いる、画像処理装置。
【請求項５】
請求項１ないし３のいずれかに記載の画像処理装置であって、
前記低減部は、前記ブロックに含まれる前記複数個の画素のうちの２つの画素の間の色の相違を表す相違値が基準範囲外の値である場合に、当該２つの画素の色値を維持する処理と、前記ブロックに含まれる前記２つの画素の間の前記相違値が前記基準範囲内の値である場合に、当該２つの画素の色値を同一の値に設定する処理とを含む、画像処理装置。
【請求項６】
請求項５に記載の画像処理装置であって、
前記２つの画素の間の前記相違値は、前記２つの画素の色値の差であり、
前記低減部は、
前記ブロックに含まれる前記複数個の画素の色値のうちの最小値と最大値との差が、前記基準範囲外の値である場合には、各画素の色値を大きさ順に並べた場合に隣合う色値の差である隣接色値差に基づいて、前記ブロック内に含まれる前記複数個の画素を第１のグループと第２のグループとを含む２以上のグループに区分する区分部を備え、
前記低減部は、前記第１のグループに含まれる画素の色値を第１の値に設定し、前記第２のグループに含まれる画素の色値を前記第１の値と異なる第２の値に設定する、画像処理装置。
【請求項７】
請求項６に記載の画像処理装置であって、
前記区分部は、
前記ブロックに含まれる前記複数個の画素の色値の中から前記隣接色値の差が最も大きい２つの色値を特定する特定部を備え、
前記区分部は、前記２つの色値のうちの第１色値と前記第１色値よりも小さな色値とを前記第１のグループに振り分け、前記２つの色値のうちの前記第１色値よりも大きな第２色値と前記第２色値よりも大きな色値とを前記第２のグループに振り分け、
前記第２の値は、前記第１の値よりも大きな値である、画像処理装置。
【請求項８】
請求項１ないし７に記載の画像処理装置であって、
前記低減部は、前記処理対象画像の各画素が取り得る色値のうち、最大値、または、最小値のいずれか一方を含む特定の範囲に属する画素の色値を、維持する、画像処理装置。
【請求項９】
請求項１ないし８のいずれかに記載の画像処理装置であって、
前記処理対象画像を構成する画素数と、前記色数低減画像データによって表される色低減画像を構成する画素数とは、等しい、画像処理装置。
【請求項１０】
画像処理プログラムであって、
処理対象画像データで表される処理対象画像に含まれる複数個の画素で構成されるブロックごとに、前記ブロック内の前記複数個の画素が表す色の個数を低減させる色数低減処理を行うことによって、前記処理対象画像データから色数低減画像データを生成する機能であって、前記色数低減画像データに含まれる各色値の階調数は、前記処理対象画像データに含まれる各色値の階調数と同じである、前記機能と、
前記色数低減画像データを用いた圧縮処理を実行することによって、圧縮画像データを生成する機能と、
をコンピュータ上で実現させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データのデータサイズを低減させる技術に関する。
【背景技術】
【０００２】
画像データのデータサイズを低減して処理済み画像データを生成する画像処理装置が知られている。この画像処理装置は、例えば、特許文献１では、画像データの画素数を低減して、処理済み画像データを生成する。この結果、処理済み画像データを扱う装置（例えば、印刷装置）に要求されるリソース（メモリ量、処理能力等）を低減することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−８００４７号公報
【特許文献２】特開２００４−９４４４０号公報
【特許文献３】特開２０１０−７４６７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、画像データの画素数を低減して、画像データによって表される画像を印刷などで再現する場合には、画像の再現性が低下し得る。
【０００５】
本発明は、画像の再現性の低下を抑制しつつ、画像データのデータサイズを低減する技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の適用例として実現することが可能である。
【０００７】
［適用例１］
画像処理装置であって、処理対象画像データで表される処理対象画像に含まれる複数個の画素で構成されるブロックごとに、前記ブロック内の前記複数個の画素が表す色の個数を低減させる色数低減処理を行うことによって、前記処理対象画像データから色数低減画像データを生成する低減部であって、前記色数低減画像データに含まれる各色値の階調数は、前記処理対象画像データに含まれる各色値の階調数と同じである、前記低減部と、前記色数低減画像データを用いた圧縮処理を実行することによって、圧縮画像データを生成する圧縮部とを備える、画像処理装置。
【０００８】
上記構成によれば、処理対象画像内のブロックごとに色の個数を低減させる色数低減処理を行うことにより、処理対象画像データから色数低減画像データを生成し、色数低減画像データを用いて圧縮画像データを生成する。この際、色数低減画像データに含まれる各色値の階調数は、処理対象画像データに含まれる各色値の階調数と同じに維持される。この結果、処理対象画像の再現性の低下を抑制しつつ、処理対象画像データのデータサイズを低減できる。
【０００９】
なお、本発明は、種々の形態で実現することが可能であり、画像処理装置の他、例えば、画像データ生成装置や、画像処理システムなどの装置形態で実現することができる。また、画像処理方法など種々の方法形態で実現することができる。さらに、画像処理方法を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体等の形態で実現することができる。
【図面の簡単な説明】
【００１０】
【図１】第１実施例における計算機と印刷装置の構成を示すブロック図である。
【図２】印刷データ生成処理を示すフローチャートである。
【図３】色数低減処理を示すフローチャートである。
【図４】色数低減処理におけるデータグループの設定を説明するための図である。
【図５】平均化処理のフローチャートである。
【図６】平均化処理の具体例を説明するための図である。
【図７】平均化処理の具体例を説明するための図である。
【図８】第２実施例における色数低減処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
Ａ．第１実施例：
Ａ−１．計算機と印刷装置の構成：
図１は、第１実施例における計算機と印刷装置の構成を示すブロック図である。計算機１００と印刷装置（プリンタとも呼ぶ）２００とは、ＬＡＮ（Local Area Network）５００を介して通信可能に接続されている。
【００１２】
計算機１００は、ＣＰＵ１１０と、ＲＡＭやＲＯＭなどの内部記憶装置１２０と、ハードディスクなどの外部記憶装置１３０と、マウスやキーボードなどの操作部１７０と、液晶ディスプレイなどの表示部１８０と、外部装置（例えば、プリンタ２００）との通信のためのインタフェースを含む通信部１９０と、を備えている。内部記憶装置１２０は、例えば、後述の印刷データ生成処理で使用される画像データを一時的に保存したり、後述のドライバプログラム１３２の実行フィールドとして機能する。
【００１３】
外部記憶装置１３０は、種々のデータを格納し、例えば、ドライバプログラム１３２と、複数種類のディザマトリクス１３４と、複数種類のカラープロファイル１３６と、図示しないアプリケーションプログラムによって作成された画像データ１３７と、を格納している。ドライバプログラム１３２は、コンピュータ読み取り可能な記録媒体に記録された形態で提供され得る。
【００１４】
ＣＰＵ１１０は、ドライバプログラム１３２を実行させることにより、プリンタドライバＭ１０として機能する。プリンタドライバＭ１０は、前処理部Ｍ１２と、低減部Ｍ１４と、圧縮部Ｍ１８と、ファイルサイズ判断部Ｍ１９とを備えている。低減部Ｍ１４は、区分部Ｍ１４ａを含む。区分部Ｍ１４ａは、特定部Ｍ１４ａａを含む。圧縮部Ｍ１８は、ハーフトーン処理部Ｍ１８ａを含む。これらの機能ブロックは、後述する印刷データ生成処理を実行する。プリンタドライバＭ１０は、印刷データ生成処理により生成した印刷データを通信部１９０を介してプリンタ２００に送信する。
【００１５】
プリンタ２００は、集積回路２１０と、プリンタエンジン２５０と、操作パネルや各種のボタンを含む操作部２７０と、液晶パネルなどの表示部２８０と、外部装置（例えば、プリンタ２００）との通信のためのインタフェースを含む通信部２９０と、を備えている。
【００１６】
集積回路２１０は、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）であり、制御回路２１２と、ＤＲＡＭなどの揮発性メモリ２１４と、マスクＲＯＭやＥＥＰＲＯＭなどの不揮発性メモリ２１６とを含んでいる。揮発性メモリ２１４は、制御回路２１２が用いるバッファ領域を提供する。不揮発性メモリ２１６は、制御プログラムなどを格納している。制御回路２１２は、不揮発性メモリ２１６に保存された制御プログラム（図示せず）を実行することにより、装置制御部Ｍ２０として機能する。装置制御部Ｍ２０は、プリンタ２００の全体を制御し、例えば、通信部２９０を介して、計算機１００から送信されてくる印刷データを揮発性メモリ２１４のバッファ領域に一時的に保存し、プリンタエンジン２５０に送信する。
【００１７】
プリンタエンジン２５０は、装置制御部Ｍ２０の制御および装置制御部Ｍ２０から供給される印刷データに従って、印刷を行う。プリンタエンジン２５０は、例えば、色材としての黒色のトナーを用いて印刷媒体にドット画像を印刷するモノクロレーザープリンタとしての機能を実現する。すなわち、プリンタエンジン２５０は、レーザを用いて感光体を露光する露光工程と、露光によって感光体に形成された静電潜像にトナーを感光体に付着させる現像工程と、現像されたトナー像を感光体から印刷媒体に転写する転写工程と、転写されたトナー像を印刷媒体に定着させる定着工程と、を実現する。
【００１８】
Ａ−２．印刷データ生成処理：
図２は、印刷データ生成処理を示すフローチャートである。プリンタドライバＭ１０は、操作部１７０を介してユーザから印刷指示を受け付けると、印刷対象の画像データ（「入力画像データ」とも呼ぶ）を利用して、印刷データを生成する印刷データ生成処理を開始する。印刷データ生成処理は、ラスタライズ処理、色変換処理、色数低減処理、ハーフトーン処理、および、圧縮処理などの種々の処理を行って、印刷データを生成する処理である。本実施例では、この印刷データは、縦３００×横３００（ｄｐｉ）の印刷解像度での印刷に用いられる。以下に、印刷データ生成処理について説明する。
【００１９】
ステップＳ３では、前処理部Ｍ１２は、入力画像データを取得する。入力画像データは、例えば、上述した画像データ１３７（図１）であり、当該画像データ１３７を作成したアプリケーションプログラムから取得される。画像データ１３７は、当該画像データを作成したアプリケーションプログラムごとに異なるデータ形式を有している。
【００２０】
ステップＳ５では、前処理部Ｍ１２は、入力画像データを、赤と緑と青との３つの要素の階調値（例えば、２５６階調）で画素の色を表すビットマップデータ（ＲＧＢ画素データ）に変換する（ラスタライズ処理）。
【００２１】
ステップＳ１０では、前処理部Ｍ１２は、ＲＧＢ画像データを、黒（Ｋ）成分の濃度を表す単色画素データ（Ｋ画素データとも呼ぶ）で構成されたビットマップデータ（Ｋ画像データ、または、モノクロ画像データとも呼ぶ）に変換する（色変換処理）。本実施例では、Ｋ画素データは、０〜２５５の範囲の階調値であり、階調数が大きいほど濃度が高い（黒に近い）無彩色を表す。具体的には、前処理部Ｍ１２は、例えば、ＲＧＢ画素データの輝度値Ｙを算出する。前処理部Ｍ１２は、輝度値Ｙを、カラープロファイル１３６（例えば、ルックアップテーブル）を用いてＫ画素データに変換する。
【００２２】
ステップＳ１５では、前処理部Ｍ１２は、Ｋ画像データを処理対象画像データに設定する。
【００２３】
ステップＳ２０では、低減部Ｍ１４は、色数低減フラグをＯＦＦに設定し、色数低減処理回数Ｊを０に設定する。なお、色数低減フラグや色数低減処理回数Ｊは、内部記憶装置１２０に記憶される。
【００２４】
ステップＳ３０では、低減部Ｍ１４は、色数低減フラグがＯＮであるか否かを判断する。低減部Ｍ１４は、色数低減フラグがＯＮである場合（ステップＳ３０：Ｙｅｓ）には、色数低減処理を実行する（ステップＳ４０）。また、ステップＳ５０では、低減部Ｍ１４は、色数低減処理後、色数低減処理回数Ｊの値に１を足す。この色数低減処理については、後述する。一方、低減部Ｍ１４は、色数低減フラグがＯＦＦである場合（ステップＳ３０：Ｎｏ）には、後述のステップＳ６０に移行する。低減部Ｍ１４は、印刷データ生成処理の開始時に、最初にステップＳ３０の判断を行う場合、色数低減フラグがＯＦＦに設定されている（ステップＳ２０）ので、ステップＳ４０およびステップＳ５０の処理を行わず、ステップＳ６０の処理を実行する。
【００２５】
ステップＳ６０では、圧縮部Ｍ１８のハーフトーン処理部Ｍ１８ａは、直前の処理で色数低減処理が行われなかった場合（ステップＳ３０：Ｎｏ）には、ステップＳ１５で設定された処理対象画像データに対してハーフトーン処理を実行し、色数低減処理が行われた場合（ステップＳ３０：Ｙｅｓ）には、色数低減処理後の画像データ（後述の色数低減画像データ）に対してハーフトーン処理を実行する。具体的には、ハーフトーン処理部Ｍ１８ａは、ハーフトーン処理として、Ｋ画素データとディザマトリクス１３４とを比較することによって、ビットマップデータ（処理対象画像データまたは色数低減画像データ）から、画素ごとのドットの形成状態を表すドットデータを生成する。本実施例では、ドットデータを構成する各画素データは、対応する画素がドットを形成することを表す「１」と、対応する画素がドットを形成しないことを表す「０」と、のいずれかの値を取る二値データである。なお、本実施例では、ハーフトーン処理部Ｍ１８ａは、ドットデータを構成する各画素データの階調数が二値となるようにハーフトーン処理を実行しているが、これに限られず、ドットデータを構成する各画素データの階調数が三値以上となるように、ハーフトーン処理を実行してもよい。
【００２６】
ステップＳ７０では、圧縮部Ｍ１８は、ドットデータに対して圧縮処理を実行し、圧縮ドットデータを生成する。圧縮部Ｍ１８は、例えば、圧縮処理として、パターン圧縮処理を実行する。以下に、パターン圧縮処理について説明する。
【００２７】
圧縮部Ｍ１８は、パターン圧縮処理として、まず、ドットデータを、先頭から、４つずつの画素データのグループに区分する。圧縮部Ｍ１８は、各グループにおける画素データのデータパターンが、予め定められるデータパターンのいずれに該当するかを判断する。圧縮部Ｍ１８は、先頭のグループのデータパターンと、２番目のグループのデータパターンとが一致するか否かを判断する。圧縮部Ｍ１８は、一致する場合には、２番目以降のグループを検索対象として、グループの順序に従ってデータパターンが先頭のグループのデータパターンと一致しなくなるまで、探索を続ける。圧縮部Ｍ１８は、先頭のグループのデータパターンと一致するデータパターンのグループが連続してＵ個見つかった場合には、先頭のグループのデータパターンを表す値（Ａ１,Ｂ１,Ｃ１,Ｄ１）と、連続して一致するグループの個数がＵ個であることを示す識別値［Ｕ］とを用いて、（Ａ１,Ｂ１,Ｃ１,Ｄ１）［Ｕ］と記述する。本実施例では、［Ｕ］は、４ビットで表される。圧縮部Ｍ１８は、先頭のグループのデータパターンと、２番目のグループのデータパターンとが一致しない場合には、先頭のグループのデータパターンを表す値（Ａ１,Ｂ１,Ｃ１,Ｄ１）と、連続して一致するグループの個数が０個であることを示す識別値［００００］とを用いて、（Ａ１,Ｂ１,Ｃ１,Ｄ１）［００００］と記述する。
【００２８】
すなわち、圧縮部Ｍ１８は、ｘ番目のグループのデータパターン（Ａｘ,Ｂｘ,Ｃｘ,Ｄｘ）と一致するデータパターンが、連続してＵ個見つかった場合には、（Ａｘ,Ｂｘ,Ｃｘ,Ｄｘ）［Ｕ］と記述する。また、圧縮部Ｍ１８は、ｘ番目のグループのデータパターン（Ａｘ,Ｂｘ,Ｃｘ,Ｄｘ）と、（ｘ＋１）番目のグループのデータパターンとが一致しない場合には、（Ａｘ,Ｂｘ,Ｃｘ,Ｄｘ）［００００］と記述する。
【００２９】
例えば、「（Ａ１,Ｂ１,Ｃ１,Ｄ１）, （Ａ２,Ｂ２,Ｃ２,Ｄ２）, （Ａ２,Ｂ２,Ｃ２,Ｄ２）, （Ａ２,Ｂ２,Ｃ２,Ｄ２）, （Ａ２,Ｂ２,Ｃ２,Ｄ２）, （Ａ２,Ｂ２,Ｃ２,Ｄ２）, （Ａ２,Ｂ２,Ｃ２,Ｄ２）」と表されるデータデータ（７つのデータパターン）は、パターン圧縮されると、（Ａ１,Ｂ１,Ｃ１,Ｄ１）［００００］（Ａ２,Ｂ２,Ｃ２,Ｄ２）［０１１０］と記述される。この場合、データパターンは、それぞれ４ビットで表されるので、圧縮前のデータサイズは、７（データパターンの総数）×４（データパターンのビット数）で２８ビットとなる。一方、圧縮後のデータサイズは、２（データパターンの総数）×４（データパターンのビット数）＋２（連続して一致するグループの個数を表す識別値の個数）×４（識別値のビット数）で１６ビットとなる。このように、パターン圧縮後のデータサイズは、同じデータパターンのグループが連続するほど、圧縮前のデータサイズよりも小さくなる。
【００３０】
ステップＳ８０では、ファイルサイズ判断部Ｍ１９は、圧縮ドットデータのデータサイズが閾値Ｔｈ１以下か否かを判断する。ファイルサイズ判断部Ｍ１９は、圧縮ドットデータのデータサイズが閾値Ｔｈ１以下の場合(ステップＳ８０：Ｙｅｓ)には、ステップＳ８５の処理へ移行する。ステップＳ８５では、プリンタドライバＭ１０は、圧縮ドットデータを用いて、印刷データを生成する。具体的には、プリンタドライバＭ１０は、圧縮ドットデータに、種々の情報（ヘッダ情報など）を記述して、印刷データを生成し、この印刷データ生成処理を終了する。
【００３１】
ファイルサイズ判断部Ｍ１９は、圧縮ドットデータのデータサイズが閾値Ｔｈ１よりも大きい場合（ステップＳ８０：Ｎｏ）には、ステップＳ９０の処理に移行する。
【００３２】
ステップＳ９０では、低減部Ｍ１４は、色数低減処理回数Ｊの値が３か否か、すなわち、色数低減処理を３回行ったか否かを判断する。低減部Ｍ１４は、色数低減処理を３回行った場合（ステップＳ９０：Ｙｅｓ）には、この印刷データ生成処理を終了する。低減部Ｍ１４は、色数低減処理を３回行っていない場合（ステップＳ９０：Ｎｏ）には、色数低減処理を実行するために、色数低減フラグをＯＮにし（ステップＳ１００）、ステップＳ３０の処理へ移行する。なお、プリンタドライバＭ１０は、色数低減処理を３回行ったにも拘わらずに、圧縮ドットデータのデータサイズが閾値Ｔｈ１以下とならずに、印刷データ生成処理を終了した場合（ステップＳ８０：Ｎｏ、かつ、ステップＳ９０：Ｙｅｓ）には、例えば、以下のような処理を行ってもよい。すなわち、プリンタドライバＭ１０は、入力画像データの各画素の階調数を低下させる処理、および／または、入力画像データの画素データの数を低減させる処理（例えば、解像度低下処理）を行った後、再度、印刷データ生成処理を行うようにしてもよい。
【００３３】
Ａ−３．色数低減処理：
図３は、色数低減処理を示すフローチャートである。この色数低減処理では、低減部Ｍ１４が、処理対象画像データの表す処理対象画像において、複数のブロックを設定し、各ブロックを対象に平均化処理を実行する。この平均化処理では、処理前の処理対象画像データに含まれる各階調値の階調数（ビット数）と、処理後に生成される画像データに含まれる各階調値の階調数（ビット数）とが、同じになるように処理が実行される。以下に、色数低減処理、および、色数低減処理における平均化処理について説明する。
【００３４】
まず、色数低減処理のステップＳ１１０では、低減部Ｍ１４は、色数低減処理回数Ｊの値が０、１、２のうちのいずれであるかを判断する。低減部Ｍ１４は、色数低減処理回数Ｊの値が０である場合（１回目の色数低減処理である場合）（ステップＳ１１０：Ｊ＝０）には、図３（ａ）に示すように、処理対象画像（図ではＦ１と示されている）において、縦２画素、横２画素から構成される複数個のブロック（２×２画素のブロックとも呼ぶ。図ではｂｌと示されている）を設定する（ステップＳ１１５）。低減部Ｍ１４は、色数低減処理回数Ｊの値が１である場合（２回目の色数低減処理である場合）（ステップＳ１１０：Ｊ＝１）には、処理対象画像において、縦３画素、横３画素から構成される複数個のブロック（３×３画素のブロックとも呼ぶ）を設定する（ステップＳ１２０）。低減部Ｍ１４は、色数低減処理回数Ｊの値が２である場合（３回目の色数低減処理である場合）（ステップＳ１１０：Ｊ＝２）には、処理対象画像において、縦４画素、横４画素から構成されるブロック（４×４画素のブロックとも呼ぶ）を設定する（ステップＳ１２５）。本実施例では、各ブロックは、図３（ａ）に示すように、マトリックス状に配列される。
【００３５】
本実施例では、上述したように、縦３００×横３００（ｄｐｉ）の印刷解像度を想定している。この場合、４×４画素のブロックは、縦７５×横７５（ｄｐｉ）の１画素分に相当する大きさである。これ以上大きなブロックを用いると、画質の劣化の可能性が高くなるので、本実施例では、４×４画素のブロックを最大の大きさに設定している。
【００３６】
次に、ステップＳ１３０では、低減部Ｍ１４は、図３（ｂ）に示すように、先頭ブロック（図では、ｂｌａと示されている）を処理対象ブロックに設定する。本実施例では、先頭ブロックは、図に示すように、処理対象画像の左上に位置するブロックである。
【００３７】
ステップＳ１３５では、低減部Ｍ１４は、処理対象ブロック内に白を表す階調値または黒を表す階調値の画素があるか否かを判断する。白を表す階調値とは、階調値の最小値である０を含む第１の特定の範囲に属する階調値のことである。本実施例では、第１の特定の範囲は、０〜５に設定されている。また、黒を表す階調値とは、階調値の最大値である２５５を含む第２の特定の範囲に属する階調値のことである。本実施例では、第２の特定の範囲は、２５１〜２５５に設定されている。なお、第１の特定の範囲は、最小値（０）のみを含むようにしてもよく、最小値から連続するＰ（Ｐは２以上の整数）個の階調値を含むようにしてもよい。また、第２の特定の範囲は、最大値（２５５）のみを含むようにしてもよく、最大値から連続するＰ個の階調値を含むようにしてもよい。
【００３８】
低減部Ｍ１４は、処理対象ブロック内に白または黒を表す階調値の画素がある場合（ステップＳ１３５：Ｙｅｓ）には、白及び黒を表す階調値の画素を後述の平均化処理の対象から除外し（ステップＳ１４０）、処理対象ブロックにおいて、残った画素の階調値を含むデータグループを設定し、ステップＳ１５５の処理へ移行する。一方、低減部Ｍ１４は、処理対象ブロック内に白または黒を表す階調値の画素がない場合（ステップＳ１３５：Ｎｏ）には、処理対象ブロック内の全画素の階調値を含むデータグループを設定し（ステップＳ１５０）、ステップＳ１５５の処理へ移行する。
【００３９】
図４は、色数低減処理におけるデータグループの設定を説明するための図である。図４では、平均化処理前の処理対象ブロック内における各画素の階調値の配列と、階調値パターンごとの階調値の分布図と、平均化処理後の処理対象ブロック内における各画素の階調値の配列と、が示されている。この分布図では、左方向は、階調値が小さくなる方向であり、右方向は、階調値が大きくなる方向である。なお、図４中に示されるＴｈ２（基準範囲）については、図５の平均化処理で説明する。
【００４０】
図４（ａ）または（ｂ）の例では、白を表す階調値（図４（ａ）の階調値「１」）および黒を表す階調値（図４（ｂ）の階調値「２５３」）は、データグループｄｇに含まれず、平均化処理の対象から除外される。一方、図４（ｃ）〜（ｆ）の例では、処理対象ブロック内に白および黒を表す階調値が含まれないので、全画素の階調値を含むデータグループｄｇが、設定されている。
【００４１】
図３のステップＳ１５５では、低減部Ｍ１４は、平均化処理を実行する。この平均化処理については、後述する。
【００４２】
ステップＳ１６０では、低減部Ｍ１４は、平均化処理を最終ブロック（図３（ｃ）に、ｂｌｘと示されている）まで実行したか否か、すなわち、全ブロックを対象に、平均化処理を実行したか否かを判断する。本実施例では、最終ブロックは、図に示すように、処理対象画像の右下に位置するブロックである。
【００４３】
低減部Ｍ１４は、平均化処理を最終ブロックまで実行したと判断した場合（ステップＳ１６０：Ｙｅｓ）には、色数低減処理を終了する。上述のステップＳ１３５〜ステップＳ１６０の処理を行うことにより、色数低減画像データが生成される。なお、この色数低減画像データの表す色数低減画像のサイズ（画素数）は、上述のステップＳ１５で設定された処理対象画像データの表す処理対象画像（色数低減画像前の処理対象画像）のサイズ（画素数）と等しい。
【００４４】
一方、低減部Ｍ１４は、平均化処理を最終ブロックまで実行していないと判断した場合（ステップＳ１６０：Ｎｏ）には、次のブロックを処理対象ブロックに設定し（ステップＳ１６５）、ステップＳ１３５の処理に移行する。本実施例における処理対象ブロックの設定順序は、以下の通りである。すなわち、現在の処理対象ブロックの右側に隣接ブロックがある場合には、そのブロックが次の処理対象ブロックに設定される。現在の処理対象ブロックの右側に隣接ブロックがない場合には、一つ下の段のブロックであり、一番左側のブロックが次の処理対象ブロックに設定される。
【００４５】
Ａ−４．平均化処理：
次に、平均化処理について、説明する。図５は、平均化処理のフローチャートである。図５のステップＳ２１０では、低減部Ｍ１４は、設定済みのデータグループｄｇの中から一つの処理対象グループを選択する。平均化処理において、最初のステップＳ２１０では、図３の色数低減処理のステップＳ１４５またはステップＳ１５０で設定されたデータグループｄｇが処理対象グループに選択される。
【００４６】
続いて、ステップＳ２１５では、低減部Ｍ１４は、処理対象グループに含まれる階調値の種類数が一つか否かを判断する。すなわち、低減部Ｍ１４は、処理対象グループに含まれる各画素の階調値が同じであるか否かを判断する。
【００４７】
低減部Ｍ１４は、処理対象グループに含まれる階調値の種類数が一つである場合（ステップＳ２１５：Ｙｅｓ）には、すなわち、処理対象グループに含まれる各画素の階調値が同じである場合には、後述のステップＳ２９５の処理へ移行する。
【００４８】
低減部Ｍ１４は、処理対象グループに含まれる階調値の種類数が複数ある場合（ステップＳ２１５：Ｎｏ）には、すなわち、処理対象グループに含まれる各画素の階調値が同じでない場合には、処理対象グループ内の階調値の最大値Ｍｘと最小値Ｍｎを特定する（ステップＳ２２０）。
【００４９】
ステップＳ２３０では、低減部Ｍ１４は、最大値Ｍｘと最小値Ｍｎとの差（最大値Ｍｘ−最小値Ｍｎ）（階調値範囲とも呼ぶ）を算出し、階調値範囲が、基準範囲Ｔｈ２内か否かを判断する。本実施例では、基準範囲Ｔｈ２の値は、６４に固定されている。なお、低減部Ｍ１４は、階調値範囲が、基準範囲Ｔｈ２と同じ範囲である場合には、階調値範囲が基準範囲Ｔｈ２内でない、すなわち、階調値範囲が基準範囲Ｔｈ２外であると判断する。
【００５０】
低減部Ｍ１４は、色値範囲が、基準範囲Ｔｈ２内の場合（ステップＳ２３０：Ｙｅｓ）には、処理対象グループに含まれる全ての階調値の平均値を算出する（ステップＳ２４０）。具体的には、低減部Ｍ１４は、処理対象グループに含まれる全ての階調値（０〜２５５）の和を算出し、算出した和を処理対象グループに含まれる階調値の数で割ることにより、平均値を算出する。なお、階調値の平均値は、少数点第１位を四捨五入することによって求めれる。ステップＳ２５０では、低減部Ｍ１４は、処理対象グループに含まれる全ての階調値を平均値に置換し、すなわち、全ての階調値を同一の値（共通の値）に設定し、ステップＳ２９５の処理に移行する。
【００５１】
一方、低減部Ｍ１４が、階調値範囲が基準範囲Ｔｈ２内でない、すなわち、階調値範囲が基準範囲Ｔｈ２外であると判断した場合（ステップＳ２３０：Ｎｏ）には、処理対象グループに含まれる階調値を変更することなく維持し、区分部Ｍ１４ａは、階調値を小さい順にソートすることによってソートデータを作成する（ステップＳ２６０）。ステップＳ２７０では、特定部Ｍ１４ａａは、ソートデータにおいて、各階調値と一つ前の階調値との差である隣接階調値差を算出する。ステップＳ２７５では、特定部Ｍ１４ａａは、隣接階調値差が最も大きい２つの階調値を特定する。ステップ２８０では、区分部Ｍ１４ａは、隣接階調値差が最も大きかった２つの階調値の前後で、処理対象グループを２つのグループに区分する。具体的には、区分部Ｍ１４ａは、特定部Ｍ１４ａａが特定した２つの階調値のうちの一方の階調値（第１階調値とも呼ぶ）と、第１階調値よりも小さな階調値とを一方のグループに振り分け、２つの階調値のうちの第１階調値よりも大きな他方の階調値（第２階調値とも呼ぶ）と、第２階調値よりも大きな階調値とを他方のグループに振り分ける。ステップＳ２９０では、低減部Ｍ１４は、区分後のグループを、ステップＳ２１０で選択され得る新たなデータグループに設定し、ステップＳ２９５に移行する。なお、区分前のグループ（処理対象グループ）は、設定済みのデータグループ（ステップＳ２１０で選択対象とされるデータグループ）から除外される。
【００５２】
ステップＳ２９５では、低減部Ｍ１４は、設定された全データグループが処理対象となったか否かを判断する。低減部Ｍ１４は、全データグループが処理対象となっていない場合（ステップＳ２９５：Ｎｏ）には、ステップＳ２１０の処理へ移行する。低減部Ｍ１４は、全データグループが処理対象となった場合（ステップＳ２９５：Ｙｅｓ）には、平均化処理を終了する。なお、上述の説明からわかるように、データグループは、平均化処理の開始時点では、１つであるが、ステップＳ２８０で、処理対象グループ（データグループ）の区分が行われる度に、１つずつ増加する。
【００５３】
以上のように、第１実施例の色数低減処理は、以下の処理条件で実行される。
処理条件１：基準範囲Ｔｈ２の値は、固定されている。
処理条件２：圧縮ドットデータのデータサイズが閾値Ｔｈ１よりも大きいために、色数低減処理を、再び行う場合には、前の色数低減処理で使用したブロックよりも大きなブロックが設定される。
【００５４】
なお、本実施例では、基準範囲Ｔｈ２の値は、６４に固定されているが、この理由は以下の通りである。すなわち、基準範囲Ｔｈ２の値（６４）は、色差（ＣＩＥＬａｂ色空間における距離）の値（２０）に相当する色の相違を表す。色差の値（２０）は、色彩ハンドブック第２版に記載された６級の許容色差に対応する。従って、基準範囲Ｔｈ２の値を６４より大きくすると、画質の劣化の可能性が高くなると考えられるからである。
【００５５】
Ａ−５．平均化処理の具体例：
図６および図７は、平均化処理の具体例を説明するための図である。ここでは、２×２画素のブロックで平均化処理を行った場合の具体例（下記具体例１〜４）と、４×４画素のブロックで平均化処理を行った場合の具体例（下記具体例５）を説明する。なお、図６、図７に示される各工程には、平均化処理において対応する処理ステップのステップ番号が示されている。
【００５６】
具体例１： 
図４（ｃ）に示すデータグループｄｇに対する平均化処理（図５）を、図６（ａ）を用いて説明する。すなわち、低減部Ｍ１４は、ステップＳ２１０でデータグループｄｇを処理対象グループ（図６（ａ）では、ｄｇａと示される）に設定する。低減部Ｍ１４は、図６（ａ）に示すように、処理対象グループｄｇａに含まれる階調値の種類数が、４種類であるので（ステップＳ２１５：Ｎｏ）、処理対象グループｄｇａ内の階調値の最大値Ｍｘ（１４）と最小値Ｍｎ（１１）を特定する（ステップＳ２２０）。低減部Ｍ１４は、特定した最大値Ｍｘと最小値Ｍｎとから階調値範囲（３）を算出する（ステップＳ２３０）。低減部Ｍ１４は、階調値範囲が、基準範囲Ｔｈ２内であるので（ステップＳ２３０：Ｙｅｓ）、処理対象グループｄｇａ内の４つの階調値の平均値（１３）を算出する（ステップＳ２４０）。低減部Ｍ１４は、図６（ａ）に示すように、処理対象グループｄｇａ内の４つの階調値を平均値に置換する（ステップＳ２５０）。以上のようにして、ブロック内の階調値が表す色は、４色から１色に低減される。
【００５７】
具体例２： 
図４（ｄ）に示すデータグループｄｇに対する平均化処理（図５）を、図６（ｂ）を用いて説明する。すなわち、低減部Ｍ１４は、ステップＳ２１０でデータグループｄｇを処理対象グループ（図６（ｂ）では、ｄｇｂと示される）に設定する。低減部Ｍ１４は、図６（ｂ）に示すように、処理対象グループｄｇｂに含まれる階調値の種類数が、４種類であるので（ステップＳ２１５：Ｎｏ）、処理対象グループｄｇｂ内の階調値の最大値Ｍｘ（２０４）と最小値Ｍｎ（７４）を特定する（ステップＳ２２０）。低減部Ｍ１４は、特定した最大値Ｍｘと最小値Ｍｎとから階調値範囲（１３０）を算出する。階調値範囲が、基準範囲Ｔｈ２外であるので（ステップＳ２３０：Ｎｏ）、区分部Ｍ１４ａは、階調値を小さい順にソートすることによってソートデータｓｄ１を作成する（ステップＳ２６０）。特定部Ｍ１４ａａは、ソートデータを用いて、隣接階調値差を表す差データｄｆ１を作成し（ステップＳ２７０）、隣接階調値差が最も大きい２つの階調値を特定する（ステップＳ２７５）。区分部Ｍ１４ａは、隣接階調値差が最も大きかった２つの階調値（図では、２つの階調値のうち値が大きな方をクロスハッチで示している）の前後で、処理対象グループｄｇｂを２つのグループ（グループ１とグループ２）に区分する（ステップＳ２８０）。低減部Ｍ１４は、区分後の２つのグループを、ステップＳ２１０で選択され得る新たなデータグループに設定する（ステップＳ２９０）。
【００５８】
次に、低減部Ｍ１４は、グループ１とグループ２に対してステップＳ２１０〜ステップＳ２２０の処理を行って、それぞれ階調値範囲を算出する（ステップＳ２３０）。低減部Ｍ１４は、グループ１の階調値範囲（２２）とグループ２の階調値範囲（１）が、それぞれ基準範囲Ｔｈ２内であるので（ステップＳ２３０：Ｙｅｓ）、グループ１内の２つの階調値の平均値（８５）と、グループ２内の２つの階調値の平均値（２０４）とを算出する。低減部Ｍ１４は、図６（ｂ）に示すように、処理対象グループｄｇｂにおいて、グループ１に対応する２つの階調値を、グループ１の２つの階調値の平均値に置換し、グループ２に対応する２つの階調値を、グループ２の２つの階調値の平均値に置換する（ステップＳ２５０）。以上のようにして、ブロック内の階調値が表す色は、４色から２色に低減される。
【００５９】
具体例３： 
図４（ｅ）に示すデータグループｄｇに対する平均化処理（図５）を、図６（ｃ）を用いて説明する。区分部Ｍ１４ａは、上述の具体例２の処理と同様にして、処理対象グループ（図６（ｃ）では、ｄｇｃと示される）を２つのグループ（グループ１とグループ２）に区分する（ステップＳ２８０）。低減部Ｍ１４は、区分後の２つのグループを、ステップＳ２１０で選択され得る新たなデータグループに設定する（ステップＳ２９０）。低減部Ｍ１４は、グループ１に対してステップＳ２１０〜ステップＳ２２０の処理を行って、階調値範囲を算出する（ステップＳ２３０）。低減部Ｍ１４は、グループ１の階調値範囲（４７）が、基準範囲Ｔｈ２内であるので（ステップＳ２３０：Ｙｅｓ）、グループ１内の３つの階調値の平均値（７３）を算出する。一方、グループ２には、階調値が一つしかないので（ステップＳ２１５：Ｙｅｓ）、低減部Ｍ１４は、グループ２に対して、ステップＳ２２０〜ステップＳ２９０の処理を実行することなく、１つの階調値をそのまま維持する。低減部Ｍ１４は、図６（ｃ）に示すように、処理対象グループｄｇｃにおいて、グループ１に対応する３つの階調値を、グループ１の３つの階調値の平均値に置換する（ステップＳ２５０）。以上のようにして、ブロック内の階調値が表す色は、４色から２色に低減される。
【００６０】
具体例４： 
図４（ｆ）に示すデータグループｄｇに対する平均化処理（図５）を、図７（ａ）を用いて説明する。区分部Ｍ１４ａは、上述の具体例２の処理と同様にして、処理対象グループ（図７（ａ）では、ｄｇｄと示される）を２つのグループ（グループ１とグループ２）に区分する（ステップＳ２８０）。低減部Ｍ１４は、区分した２つのグループを、ステップＳ２１０で選択され得る新たなデータグループに設定する（ステップＳ２９０）。区分部Ｍ１４ａは、さらに、上述の具体例２の処理と同様にして、処理対象グループとしてのグループ１を２つのグループ（グループ１−１とグループ１−２）に区分する（ステップＳ２８０）。
【００６１】
低減部Ｍ１４は、グループ１−１とグループ１−２に対して、ステップＳ２１０〜ステップＳ２２０の処理を行って、それぞれ階調値範囲を算出する（ステップＳ２３０）。低減部Ｍ１４は、グループ１−１の階調値範囲（１５）が、基準範囲Ｔｈ２内であるので（ステップＳ２３０：Ｙｅｓ）、グループ１−１内の２つの階調値の平均値（５７）を算出する。一方、グループ２およびグループ１−２には、階調値が一つしかないので（ステップＳ２１５：Ｙｅｓ）、低減部Ｍ１４は、グループ２およびグループ１−２に対して、ステップＳ２２０〜ステップＳ２９０の処理を実行することなく、１つの階調値をそのまま維持する。低減部Ｍ１４は、図７（ａ）に示すように、処理対象グループｄｇｄにおいて、グループ１−１に対応する２つの階調値を、グループ１−１の全階調値の平均値に置換する（ステップＳ２５０）。以上のようにして、ブロック内の階調値が表す色は、４色から３色に低減される。
【００６２】
具体例５： 
処理対象ブロックの大きさが、４×４画素に設定された場合（３回目の色数低減処理時）の平均化処理（図５）を、図７（ｂ）を用いて説明する。すなわち、低減部Ｍ１４は、ステップＳ２１０で、４×４画素のブロックにおけるデータグループを処理対象グループ（図７（ｂ）では、ｄｇｅと示される）に設定する。なお、この処理対象グループｄｇｅに含まれる階調値の種類数は、図７（ｂ）に示すように、階調値（４９）と階調値（２０３）とがそれぞれ２つずつ含まれるので、１４種類である。区分部Ｍ１４ａは、上述の具体例２の処理と同様に、処理対象グループｄｇｅを２つのグループ（グループ１とグループ２）に区分する（ステップＳ２８０）。低減部Ｍ１４は、区分後のグループを、ステップＳ２１０で選択され得る新たなデータグループに設定する（ステップＳ２９０）。低減部Ｍ１４は、グループ１とグループ２に対しても、上述の具体例２の処理と同様にして、グループ１内の８つの階調値の平均値（７１）と、グループ２内の８つの階調値の平均値（２１６）とを算出する（Ｓ２４０）。図７（ｂ）に示すように、処理対象グループｄｇｅにおいて、グループ１に対応する８つの階調値を、グループ１の８つの階調値の平均値に置換し、グループ２に対応する８つの階調値を、グループ２の８つの階調値の平均値に置換する（ステップＳ２５０）。以上のようにして、ブロック内の階調値が表す色は、１４色から２色に低減される。
【００６３】
以上のように、色数低減処理において、色数低減処理で用いるブロック内の画素の個数がＫ（Ｋは、３以上の整数）個の場合には、ブロック内の色数（色の個数）が、２〜（Ｋ−１）個のうちのいずれかに低減され得る。
【００６４】
上記実施例では、計算機１００（低減部Ｍ１４）は、色数低減処理（平均化処理：図５）を行うことにより、処理対象画像データから色数低減画像データを生成し、この色数低減画像データを用いて、圧縮印刷データを生成する。この結果、入力画像（処理対象画像）のデータサイズを低減できる。また、計算機１００は、色数低減処理（平均化処理）で、処理対象ブロックにおける処理対象グループ内の全階調値の平均値を算出し（図５：ステップＳ２４０）、処理対象グループ内の全階調値を算出した平均値に置換する処理（ステップＳ２５０）を実行することで、処理対象画像データから色の個数を低減するようにしている。こうすれば、平均化処理前の処理対象画像データに含まれる各階調値の階調数（ビット数）と、色数低減画像データに含まれる各階調値の階調数（ビット数）とを、同じに設定することができる。すなわち、平均化処理前の処理対象画像で表現可能な色の数と、色数低減画像データで表される色数低減画像で表現可能な色の数とを、同じに設定することができる。すなわち、色数低減処理前の画像データ（対象画像データ）と処理後の画像データ（色数低減画像データ）とに含まれる階調値のビット数が変わらないので、処理前の画像データと比較して処理後の画像データで表現される色の種類数は、低減するが、処理後の画像データによって表される画像の各画素は、処理前の画像データによって表される各画素と同様に、２５６階調のうちのいずれかの階調を表現可能である。この結果、処理対象画像（入力画像）の再現性の低下を抑制することができる。以上より、本実施例の計算機１００は、処理対象画像（入力画像）の再現性の低下を抑制しつつ、処理対象画像（入力画像）のデータサイズを低減できる。
【００６５】
上記実施例では、計算機１００（低減部Ｍ１４）は、Ｒ回目（Ｒは、１または２）の色数低減処理（図３）後の色数低減画像データを用いて生成される圧縮ドットデータのデータサイズが閾値Ｔｈ１よりも大きい場合（図２：Ｓ８０：Ｎｏ）には、（Ｒ＋１）回目の色数低減処理において、Ｒ回目の色数低減処理で設定されたブロックよりも大きいブロックを設定して（図３：Ｓ１２０またはＳ１２５）、平均化処理（図５）を実行する。こうすれば、処理対象画像データのデータサイズをより低減し、その結果、閾値Ｔｈ１よりも小さいデータサイズの圧縮ドットデータを生成可能になる。
【００６６】
上記実施例では、（Ｒ＋１）回目の色数低減処理で設定されるブロックの大きさは、Ｒ回目の色数低減処理で設定されるブロックの大きさよりも大きい。すなわち、（Ｒ＋１）回目の色数低減処理で設定されるブロックに含まれる画素数は、Ｒ回目の色数低減処理で設定されるブロックに含まれる画素数よりも多い。この結果、処理対象画像において、ブロック内の複数個の画素が構成する領域が広くなることにより、処理対象画像の広い領域で、色を同一に設定することができ、処理対象画像の色の個数をより低減することができる。
【００６７】
上記実施例では、計算機１００（低減部Ｍ１４）は、色数低減処理（平均化処理：図５）において、階調値範囲が、基準範囲Ｔｈ２内である場合（ステップＳ２３０：Ｙｅｓ）には、処理対象ブロックにおける処理対象グループ内の全階調値の平均値を算出し（図５：ステップＳ２４０）、処理対象グループ内の全階調値を算出した平均値に置換する処理（ステップＳ２５０）を実行する。こうすれば、基準範囲Ｔｈ２を基準として、処理対象ブロック内の２つ以上の画素の階調値（処理対象グループ内の全階調値）を、同一の値に設定するのか否かが決定され得る。従って、基準範囲を変更することによって、低減する色の個数を調整することができる。
【００６８】
上記実施例では、計算機１００（低減部Ｍ１４）は、色数低減処理（平均化処理：図５）において、階調値範囲が、基準範囲Ｔｈ２外である場合（ステップＳ２３０：Ｙｅｓ）には、階調値が小さい順に並んだソートデータを用いて、隣接階調値差を表す差データを作成し（ステップＳ２７０）、隣接階調値差に基づいて、処理対象グループを２つのグループに区分する（ステップＳ２８０）。こうすれば、処理対象ブロック内で近い階調値同士を同一の値に設定することができる。この結果、処理対象画像の再現性の低下を抑制することができる。
【００６９】
上記実施例では、計算機１００（低減部Ｍ１４）は、色数低減処理（平均化処理：図５）において、隣接階調値差が最も大きかった２つの階調値を特定し、特定した２つの階調値のうちの第１階調値と、第１階調値よりも小さな階調値とを一方のグループに振り分け、特定した２つの階調値のうちの第１階調値よりも大きな第２階調値と、第２階調値よりも大きな階調値とを他方のグループに振り分ける（ステップＳ２８０）。従って、処理対象ブロック内で最も離れた２つ階調値を異なる階調値に設定することができる。この結果、処理対象画像の再現性の低下を抑制することができる。
【００７０】
白を表す階調値の画素や黒を表す階調値の画素は、例えば、文字などに多用され、画像におけるエッジ部分を構成し易い。そこで、上記実施例では、計算機１００（低減部Ｍ１４）は、色数低減処理（図３）において、処理対象ブロック内に白または黒を表す階調値の画素がある場合（ステップＳ１３５：Ｙｅｓ）には、白及び黒を表す階調値の画素を後述の平均化処理の対象から除外する（ステップＳ１４０）。すなわち、白または黒を表す階調値は、平均化処理で変更されない（処理対象画像データにおける階調値に維持される）。従って、例えば、エッジ部分の再現性が低下することを抑制することができる。
【００７１】
上記実施例では、色数低減処理（図３）で生成される色数低減画像データの表す色数低減画像の画素数は、色数低減画像前の処理対象画像の画素数と同じである。この結果、例えば、処理対象画像のエッジ部分の再現性の低下を抑制することができる。
【００７２】
上記実施例では、色数低減処理後の色数低減画像データに対して、ディザマトリクスを用いて、ハーフトーン処理（図２：Ｓ６０）を行う。こうすれば、ハーフトーン処理によって生成されるドットデータに、同じデータパターンのグループが連続して形成されやすくなり、圧縮部Ｍ１８による圧縮処理の圧縮率を高めることができる。
【００７３】
本実施例の圧縮ドットデータは、圧縮画像データの例である。本実施例の色数低減画像データに含まれる階調値は、色数低減画像データに含まれる色値の例である。本実施例の隣接階調値は、隣接色値の例である。本実施例において、Ｒ回目（Ｒは、１または２）の色数低減処理で設定されるブロックの大きさが、第１の処理条件の例であり、（Ｒ＋１）回目の色数低減処理で設定されるブロックの大きさが、第２の処理条件の例である。
【００７４】
Ｂ．第２実施例：
第２実施例の色数低減処理は、以下の処理条件で実行される。
処理条件１：ブロックの大きさは、固定されている。ブロックの大きさとしては、例えば、４×４画素のブロックを用いる。
処理条件２：色数低減処理を再び行う場合には、基準範囲Ｔｈ２の値を変更する。以下に、第２実施例における色数低減処理を説明する。
【００７５】
図８は、第２実施例における色数低減処理を示すフローチャートである。図８に示す第２実施例の色数低減処理では、第１実施例の色数低減処理（図３）におけるステップＳ１１５〜ステップＳ１２５の処理に代えて、ステップＳ１１５ａ〜ステップＳ１２５ａの処理が実施される。第２実施例の色数低減処理において、第１実施例の色数低減処理と同様の処理については、同様のステップ番号を付して説明を省略する。
【００７６】
第２実施例の色数低減処理（図８）では、低減部Ｍ１４は、色数低減処理回数Ｊの値が０である場合（１回目の色数低減処理である場合）（ステップＳ１１０：Ｊ＝０）には、基準範囲Ｔｈ２をＵ１（Ｕ１は、１以上の整数）に設定する（ステップＳ１１５ａ）。低減部Ｍ１４は、色数低減処理回数Ｊの値が１である場合（２回目の色数低減処理である場合）（ステップＳ１１０：Ｊ＝１）には、基準範囲Ｔｈ２をＵ２（Ｕ２は、Ｕ１より大きな整数）に設定する（ステップＳ１２０ａ）。低減部Ｍ１４は、色数低減処理回数Ｊの値が２である場合（３回目の色数低減処理である場合）（ステップＳ１１０：Ｊ＝２）には、基準範囲Ｔｈ２をＵ３（Ｕ３は、Ｕ２より大きな整数）に設定する（ステップＳ１２５ａ）。なお、例えば、Ｕ１が１６に設定され、Ｕ２が３２に設定され、Ｕ３が６４に設定される。
【００７７】
上記実施例では、計算機１００（低減部Ｍ１４）は、Ｒ回目（Ｒは、１または２）の色数低減処理（図８）後の色数低減画像データを用いて生成される圧縮ドットデータのデータサイズが閾値Ｔｈ１よりも大きい場合（図２：Ｓ８０：Ｎｏ）には、（Ｒ＋１）回目の色数低減処理において、Ｒ回目の色数低減処理で設定された基準範囲Ｔｈ２よりも広い基準範囲Ｔｈ２を設定して（図８：Ｓ１２０ａまたはＳ１２５ａ）、平均化処理（図５）を実行する。こうすれば、処理対象画像データのデータサイズをより低減し、その結果、閾値Ｔｈ１よりも小さいデータサイズの圧縮ドットデータを生成可能になる。
【００７８】
上記第２実施例では、（Ｒ＋１）回目の色数低減処理（図８）で設定される基準範囲Ｔｈ２は、Ｒ回目の色数低減処理で設定される基準範囲Ｔｈ２よりも広い。この結果、（Ｒ＋１）回目の色数低減処理では、処理対象ブロック内で多くの画素の色を同一に設定することができ、処理対象画像の色の個数をより低減することができる。なお、本実施例において、Ｒ回目の色数低減処理で設定される基準範囲の広さが、第１の処理条件の例であり、（Ｒ＋１）回目の色数低減処理で設定される基準範囲の広さが、第２の処理条件の例である。
【００７９】
Ｃ．変形例：
（１）上記実施例では、低減部Ｍ１４は、（Ｒ＋１）回目（Ｒは、１または２）の色数低減処理で、処理対象画像データとして、印刷データ生成処理（図２）のステップＳ１５で設定した処理対象画像データを用いるようにしているが、これに限られるものではない。例えば、低減部Ｍ１４は、（Ｒ＋１）回目の色数低減処理で、Ｒ回目の色数低減処理のステップＳ１７０で設定した色数低減画像データを、処理対象画像データとして用いるようにしてもよい。
【００８０】
（２）上記実施例では、低減部Ｍ１４は、単色画素データで構成されるＫ画像データ（モノクロ画像データ）を用いて、色数低減処理を実行しているが、これに限られるものではない。例えば、低減部Ｍ１４は、モノクロ画像データではなく、カラー画像データを用いて、色数低減処理を実行してもよい。カラー画像データとしては、例えば、ＲＧＢ画像データや、シアンとマゼンタとイエロとブラックとの４つの色成分の階調値（例えば、０〜２５５の２５６階調）で画素の色を表すＣＭＹＫ画像データを用いてもよい。
【００８１】
（３）上記実施例では、低減部Ｍ１４は、平均化処理（図５）で、処理対象グループ内の全階調値を同一の値（処理グループ内の階調値の平均値）に置換するか否かの判断（置換判断とも呼ぶ）を、階調値範囲に基づいて、行っているが、これに限れるものではない。例えば、低減部Ｍ１４は、階調値範囲に代えて、Ｌａｂ空間における距離を表す値に基づいて、置換判断を行うようにしてもよい。一般的に言えば、低減部Ｍ１４は、処理対象グループ内の画素の色の相違を表す相違値に基づいて、置換判断することが好ましい。
【００８２】
（４）上記実施例では、圧縮部Ｍ１８は、色数低減画像データをハーフトーン処理して生成されたドットデータを圧縮処理するようにしているが、これに限られるものではない。例えば、圧縮部Ｍ１８は、色数低減画像データを、そのまま圧縮処理して、圧縮済み色数低減画像データを生成するようにしてもよい。このような処理は、例えば、圧縮済み色数低減画像データを、データ通信で送受信する場合や、記憶装置に長時間格納する場合などに実行され得る。
【００８３】
（５）上記実施例では、圧縮部Ｍ１８は、ドットデータの圧縮処理として、パターン圧縮を実行していたが、これに限られるものはでない。圧縮部Ｍ１８が用いる圧縮方法は、例えば、マトリックス状に配列されたドットデータにおける横（ライン）方向や縦方向の少なくとも一方に同じデータパターンが連続して配置されている場合に、圧縮することが可能な手法であればよい。このような圧縮方法としては、例えば、ハフマン符号化、ランレングス符号化、および、Ｄｅｆｌａｔｅ圧縮などを用いるようにしてもよい。
【００８４】
（６）上記実施例では、低減部Ｍ１４は、色数低減処理（平均化処理）において、ソートデータにおける隣接階調値差が最も大きな階調値の前後で、処理対象グループを２つのグループに分割するようにしているが、これに限られるものではない。例えば、低減部Ｍ１４は、ソートデータにおける隣接階調値差が、予め定められる規定値より、大きな階調値の前後で、処理対象グループを分割するようにしてもよい。
【００８５】
（７）上記実施例では、低減部Ｍ１４は、圧縮ドットデータのデータサイズが閾値Ｔｈ１以下に低減できない場合（図２：ステップＳ８０：Ｎｏ）には、色数低減処理を、最大で３回実行し得るが、これに限られるものでない。例えば、低減部Ｍ１４は、圧縮ドットデータのデータサイズが閾値Ｔｈ１以下に低減できない場合に、Ｓ回（Ｓは、２または４以上の整数）の色数低減処理を実行するようにしてもよい。この場合、Ｓ回目の色数低減処理では、ブロックの大きさを、（Ｓ−１）回目の色数低減処理に設定されたブロックの大きさよりも大きく設定する処理、および／または、（Ｓ−１）回目の色数低減処理に設定された基準範囲の広さよりも広く設定する処理が行われる。
【００８６】
（８）上記第１実施例では、低減部Ｍ１４は、色数低減処理を複数回行う場合には、色数低減処理を実行する度に、ブロックの大きさを前回の色数低減処理で設定されたブロックの大きさよりも大きく設定している。ここで、ブロックの大きさ（ブロックを構成する画素の数Ｎ）は、任意であり、適宜変更され得る。一般的には、低減部Ｍ１４は、Ｔ回目の色数低減処理では、Ｎ１個（Ｎ１は、２以上の整数）の画素で構成される第１種のブロックを用い、（Ｔ＋１）回目の色数低減処理では、Ｎ１個より多いＮ２個（Ｎ２は、整数）の画素で構成される第２種のブロックを用いることが好ましい。
【００８７】
また、上記第２実施例では、低減部Ｍ１４は、色数低減処理を複数回行う場合には、色数低減処理を実行する度に、基準範囲の広さを前回の色数低減処理で設定された基準範囲の広さよりも広く設定している。ここで、基準範囲の広さは、任意であり、適宜変更され得る。
【００８８】
さらには、ブロックの大きさの変更（第１実施例）と基準範囲の広さの変更（第２実施例）とを組み合わせても良い。例えば、低減部Ｍ１４は、色数低減処理を複数回行う場合に、Ｔ回目（Ｔは、２以上の整数）の色数低減処理で、ブロックの大きさと基準範囲の広さのどちらか一方を変更した場合には、（Ｔ＋１）回目の色数低減処理で、ブロックの大きさと基準範囲の広さのうちの他方を変更するようにしてもよい。また、ブロックの大きさや基準範囲以外の他の処理条件を色数低減処理に採用する場合には、当該他の処理条件を変更してもよい。他の処理条件としては、例えば、１回の色数低減処理において、階調値を変更する画素数の制限を設けてもよい。この場合には、色数低減処理を繰り返す度に、画素数の制限値を増加させてもよい。
一般的に言えば、低減部Ｍ１４は、（Ｔ＋１）回目の色数低減処理の処理条件を、Ｔ回目の色数低減処理の処理条件と比較して、処理対象画像のブロック内の複数個の画素が表す色の個数を低減し易い条件に、変更することが好ましい。言い換えれば、（Ｔ＋１）回目の色数低減処理の処理条件は、当該処理条件で処理後の色数低減画像データを圧縮した際に、Ｔ回目の色数低減処理の処理条件と比較して、圧縮率が高くなるような条件であることが好ましい。
【００８９】
（９）上記実施例では、低減部Ｍ１４は、色数低減処理で、基準範囲を用いて、色数を低減しているが、これに限られず、基準範囲を用いることなく、色数を低減してもよい。例えば、処理対象ブロックに含まれる階調値のうち、最大の階調値と２番目に大きな階調値とを同一の値に置換することにより、色数を低減するようにしてもよい。
【００９０】
（１０）上記第１実施例では、低減部Ｍ１４は、色数低減処理を最大３回まで実行可能であるが、これに限らず、色数低減処理を１回のみ実行可能としてもよい。例えば、低減部Ｍ１４は、許容できる最大の処理条件（例えば、４×４画素のブロック、かつ、基準範囲Ｔｈ２（６４））で１回のみ色数低減処理を実行してもよい。
【００９１】
（１１）上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。
【００９２】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【００９３】
１００...計算機、１１０...ＣＰＵ、１２０...内部記憶装置、１３０...外部記憶装置、１７０...操作部、１８０...表示部、１９０...通信部、２００...プリンタ、２１０...集積回路、２１２...制御回路、２１４...揮発性メモリ、２１６...不揮発性メモリ、２５０...プリンタエンジン、２７０...操作部、２８０...表示部、２９０...通信部、Ｍ１０...プリンタドライバ、Ｍ２０...装置制御部、Ｍ１２...前処理部、Ｍ１４...低減部、Ｍ１４ａ...区分部、Ｍ１４ａａ...特定部、Ｍ１８...圧縮部、Ｍ１８ａ...ハーフトーン処理部、Ｍ１９...ファイルサイズ判断部
【図１】
2013183240.tif 000003
【図２】
2013183240.tif 000004
【図３】
2013183240.tif 000005
【図４】
2013183240.tif 000006
【図５】
2013183240.tif 000007
【図６】
2013183240.tif 000008
【図７】
2013183240.tif 000009
【図８】
2013183240.tif 000010