(57)【要約】【課題】画質の劣化を抑制すること。【解決手段】画像データに含まれるＮｂ個の画素によって構成されるブロックをＮｔ個のグループに分類し、Ｎｔ個のグループの少なくとも何れかについて、当該グループを構成する画素の位置を示す情報である位置情報を作成し、Ｎｔ個のグループそれぞれを対象に、Ｎｂ個の画素の階調値を表現するために要するデータ量よりも少ないデータ量によるブロック階調値を、各グループを構成する画素毎の階調値に基づき決定し、Ｎｔ個のグループそれぞれを対象に、ブロックを構成する画素毎にドット形成の有無を示す情報であるドット配置を、ブロック階調値に基づき仮に決定し、仮に決定されたドット配置と、位置情報とを用いて、ブロックを対象にしたドット配置を決定し、前記ドット配置決定部によって決定されたドット配置を修正するか否かを、誤差拡散法を用いて判定する。【選択図】図６
2018152666.tif 000002
【特許請求の範囲】
【請求項１】
画像データに含まれるＮｂ個の画素によって構成されるブロックを対象に、最高の階調値の画素を含むグループと、最低の階調値の画素を含むグループとを含むＮｔ（Ｎｔは２≦Ｎｔ＜Ｎｂを満たす整数）個のグループに分類する分類部と、
前記Ｎｔ個のグループの少なくとも何れかについて、当該グループを構成する画素の位置を示す情報である位置情報を作成する位置情報作成部と、
前記Ｎｔ個のグループそれぞれを対象に、前記Ｎｂ個の画素の階調値を表現するために要するデータ量よりも少ないデータ量によるブロック階調値を、各グループを構成する画素毎の階調値に基づき決定するブロック階調値決定部と、
前記Ｎｔ個のグループそれぞれを対象に、前記ブロックを構成する画素毎にドット形成の有無を示す情報であるドット配置を、前記ブロック階調値に基づき仮に決定する仮決定部と、
前記仮に決定されたドット配置と、前記位置情報とを用いて、前記ブロックを対象にした前記ドット配置を決定するドット配置決定部と、
前記ドット配置決定部によって決定されたドット配置を修正するか否かを、誤差拡散法を用いて判定する判定部と、
前記ドット配置を修正すると前記判定部によって判定された場合、前記ドット配置を修正する修正部と、
前記ドット配置を用いて、画像を形成する画像形成部と、
を備える画像形成システム。
【請求項２】
前記判定部は、誤差拡散法における誤差の計算と、該計算された誤差の拡散とを、前記ブロックを単位として実行する
請求項１に記載の画像形成システム。
【請求項３】
前記判定部は、前記ドット配置決定部によって決定された前記ドット配置に含まれるドットの数が所定以下の場合に、前記判定を実施する
請求項１又は請求項２に記載の画像形成システム。
【請求項４】
前記修正部は、ドットを配置する画素を、前記最高の階調値の画素を含むグループに属する画素の中から選択する
請求項１から請求項３までの何れか一項に記載の画像形成システム。
【請求項５】
前記修正部は、前記最高の階調値の画素を含むグループに属する画素のうち、何れの画素にドットを配置するかをランダムに選択する
請求項４に記載の画像形成システム。
【請求項６】
前記判定部は、前記ドット配置決定部によってドット形成無しと決定された画素の少なくとも１つに対して、ドットを配置するか否かを判定し、
前記修正部は、ドットを配置すると前記判定部によって判定された場合、前記ドット形成無しと決定された画素の少なくとも１つに対してドットを配置することで、前記ドット配置を修正する
請求項１から請求項５までの何れか一項に記載の画像形成システム。
【請求項７】
画像データに含まれるＮｂ個の画素によって構成されるブロックを対象に、最高の階調値の画素を含むグループと、最低の階調値の画素を含むグループとを含むＮｔ（Ｎｔは２≦Ｎｔ＜Ｎｂを満たす整数）個のグループに分類する分類部と、
前記Ｎｔ個のグループの少なくとも何れかについて、当該グループを構成する画素の位置を示す情報である位置情報を作成する位置情報作成部と、
前記Ｎｔ個のグループそれぞれを対象に、前記Ｎｂ個の画素の階調値を表現するために要するデータ量よりも少ないデータ量によるブロック階調値を、各グループを構成する画素毎の階調値に基づき決定するブロック階調値決定部と、
前記Ｎｔ個のグループそれぞれを対象に、前記ブロックを構成する画素毎にドット形成の有無を示す情報であるドット配置を、前記ブロック階調値に基づき仮に決定する仮決定部と、
前記仮に決定されたドット配置と、前記位置情報とを用いて、前記ブロックを対象にした前記ドット配置を決定するドット配置決定部と、
前記ドット配置決定部によって決定されたドット配置を修正するか否かを、誤差拡散法を用いて判定する判定部と、
前記ドット配置を修正すると前記判定部によって判定された場合、前記ドット配置を修正する修正部と、
前記ドット配置を用いて、画像を形成する画像形成部と、
を備える画像形成装置。
【請求項８】
画像データに含まれるＮｂ個の画素によって構成されるブロックを対象に、最高の階調値の画素を含むグループと、最低の階調値の画素を含むグループとを含むＮｔ（Ｎｔは２≦Ｎｔ＜Ｎｂを満たす整数）個のグループに分類し、
前記Ｎｔ個のグループの少なくとも何れかについて、当該グループを構成する画素の位置を示す情報である位置情報を作成し、
前記Ｎｔ個のグループそれぞれを対象に、前記Ｎｂ個の画素の階調値を表現するために要するデータ量よりも少ないデータ量によるブロック階調値を、各グループを構成する画素毎の階調値に基づき決定し、
前記Ｎｔ個のグループそれぞれを対象に、前記ブロックを構成する画素毎にドット形成の有無を示す情報であるドット配置を、前記ブロック階調値に基づき仮に決定し、
前記仮に決定されたドット配置と、前記位置情報とを用いて、前記ブロックを対象にした前記ドット配置を決定し、
前記決定されたドット配置を修正するか否かを、誤差拡散法を用いて判定し、
前記ドット配置を修正すると判定された場合、前記ドット配置を修正し、
前記ドット配置を用いて、画像を形成する
画像形成方法。
【請求項９】
画像データに含まれるＮｂ個の画素によって構成されるブロックを対象に、最高の階調値の画素を含むグループと、最低の階調値の画素を含むグループとを含むＮｔ（Ｎｔは２≦Ｎｔ＜Ｎｂを満たす整数）個のグループに分類し、
前記Ｎｔ個のグループの少なくとも何れかについて、当該グループを構成する画素の位置を示す情報である位置情報を作成し、
前記Ｎｔ個のグループそれぞれを対象に、前記Ｎｂ個の画素の階調値を表現するために要するデータ量よりも少ないデータ量によるブロック階調値を、各グループを構成する画素毎の階調値に基づき決定し、
前記Ｎｔ個のグループそれぞれを対象に、前記ブロックを構成する画素毎にドット形成の有無を示す情報であるドット配置を、前記ブロック階調値に基づき仮に決定し、
前記仮に決定されたドット配置と、前記位置情報とを用いて、前記ブロックを対象にした前記ドット配置を決定し、
前記決定されたドット配置を修正するか否かを、誤差拡散法を用いて判定し、
前記ドット配置を修正すると判定された場合、前記ドット配置を修正し、
前記ドット配置を用いて、画像を形成する
ことをコンピューターに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像形成に関する。
【背景技術】
【０００２】
特許文献１には、組織的ディザー法と誤差拡散法とを組み合わせてハーフトーン処理を実行することで、ドット形成の有無を示すドットデータを生成する手法が開示されている。この手法では、組織的ディザー法については、各画素の階調値をディザー閾値と比較し、ドット形成の有無を判定する一方で、誤差拡散法については、複数画素からなるブロックを単位として実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−１１６１０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記先行技術の場合、組織的ディザー法と誤差拡散法とを実行するため、処理時間が長くなるという課題がある。処理時間を短縮するため、誤差拡散法と組み合わせる手法を、上記した一般的な組織的ディザー法とは別の手法に変更した上で、誤差拡散法と同様ブロック単位で実行すると、ブロック内にエッジが存在する場合、解像度低下のため画質が劣化するおそれがある。
【０００５】
本開示は、上記を踏まえ、誤差拡散法を組み合わせてハーフトーン処理を実現する手法において、ハーフトーン処理の高速化と、画質の劣化の抑制との両立を解決課題とする。
【課題を解決するための手段】
【０００６】
本開示の一形態は、画像データに含まれるＮｂ個の画素によって構成されるブロックを対象に、最高の階調値の画素を含むグループと、最低の階調値の画素を含むグループとを含むＮｔ（Ｎｔは２≦Ｎｔ＜Ｎｂを満たす整数）個のグループに分類する分類部と；前記Ｎｔ個のグループの少なくとも何れかについて、当該グループを構成する画素の位置を示す情報である位置情報を作成する位置情報作成部と；前記Ｎｔ個のグループそれぞれを対象に、前記Ｎｂ個の画素の階調値を表現するために要するデータ量よりも少ないデータ量によるブロック階調値を、各グループを構成する画素毎の階調値に基づき決定するブロック階調値決定部と；前記Ｎｔ個のグループそれぞれを対象に、前記ブロックを構成する画素毎にドット形成の有無を示す情報であるドット配置を、前記ブロック階調値に基づき仮に決定する仮決定部と；前記仮に決定されたドット配置と、前記位置情報とを用いて、前記ブロックを対象にした前記ドット配置を決定するドット配置決定部と；前記ドット配置決定部によって決定されたドット配置を修正するか否かを、誤差拡散法を用いて判定する判定部と；前記ドット配置を修正すると前記判定部によって判定された場合、前記ドット配置を修正する修正部と；前記ドット配置を用いて、画像を形成する画像形成部と；を備える画像形成システムである。この形態によれば、ハーフトーン処理の高速化と、画質の劣化の抑制との両立が実現できる。ハーフトーン処理が高速になるのは、ドット配置決定部がブロック単位でドット配置を決定するからである。解像度低下による画質の劣化が抑制されるのは、グループ毎に仮に決定されたドット配置を、位置情報を用いて合成するからである。
【０００７】
上記形態において、前記判定部は、誤差拡散法における誤差の計算と、該計算された誤差の拡散とを、前記ブロックを単位として実行してもよい。この形態によれば、誤差の計算と、誤差の拡散との処理負荷が、画素を単位として実行する形態に比べて軽くなる。
【０００８】
上記形態において、前記判定部は、前記ドット配置決定部によって決定された前記ドット配置に含まれるドットの数が所定以下の場合に、前記判定を実施してもよい。この形態によれば、低濃度の細線の消失等を効果的に防ぎつつ、前記判定部および前記修正部の構成を簡略化できる上に、ドットを過度に追加することによる画質の劣化を回避できる。
【０００９】
上記形態において、前記修正部は、ドットを配置する画素を、前記最高の階調値の画素を含むグループに属する画素の中から選択してもよい。この形態によれば、ドットを追加するのに相応しい画素を、グループの分類を利用して、簡便に決定できる。
【００１０】
上記形態において、前記修正部は、前記最高の階調値の画素を含むグループに属する画素のうち、何れの画素にドットを配置するかをランダムに選択してもよい。
【００１１】
上記形態において、前記判定部は、前記ドット配置決定部によってドット形成無しと決定された画素の少なくとも１つに対して、ドットを配置するか否かを判定し；前記修正部は、ドットを配置すると前記判定部によって判定された場合、前記ドット形成無しと決定された画素の少なくとも１つに対してドットを配置することで、前記ドット配置を修正してもよい。この形態によれば、低濃度の細線の消失を効果的に防止できる。
【００１２】
本開示は、上記以外の種々の形態で実現できる。例えば、画像形成方法や、この方法を実現する画像形成装置、この方法を実現するためのプログラム、このプログラムを記憶した一時的でない記憶媒体等の形態で実現できる。
【図面の簡単な説明】
【００１３】
【図１】画像形成システムの概略図。
【図２】圧縮データ送信処理を示すフローチャート。
【図３】データ圧縮処理を示すフローチャート。
【図４】ブロックを示す図。
【図５】画像形成処理を示すフローチャート。
【図６】ハーフトーン処理を示すフローチャート。
【図７】大中小ドット密度変換テーブルをグラフで示した図。
【図８】代表値及びブロック階調値などの関係を示すテーブル。
【図９】着目ブロックの各画素に適用される閾値を例示する図。
【図１０】配置されたＨ値グループのドットの様子を示す図。
【図１１】Ｈ値グループのマスクの様子を示す図。
【図１２】配置されたＬ値グループのドットの様子を示す図。
【図１３】Ｌ値グループのマスクの様子を示す図。
【図１４Ａ】ドット配置の合成の様子を示す図。
【図１４Ｂ】追加処理を示すフローチャート。
【図１４Ｃ】ドットが追加される様子を示す図。
【図１４Ｄ】誤差が拡散される様子を示す図。
【図１５】画像データにおける或るインク色の階調値を示す図（実施形態２）。
【図１６】階調値と、濃度パターンとの関係を示す図（実施形態２）。
【図１７】階調値が１の場合に発生するドットを示す図。
【図１８】階調値が２の場合に発生するドットを示す図。
【図１９】階調値が３の場合に発生するドットを示す図。
【図２０】階調値が１４の場合に発生するドットを示す図。
【図２１】階調値が１５の場合に発生するドットを示す図。
【図２２】階調値が１６の場合に発生するドットを示す図。
【図２３】ドット配置を合成の様子を示す図（実施形態２）。
【図２４】ドット配置の様子を示す図（比較例）。
【図２５】プリンターの概略図（実施形態３）。
【発明を実施するための形態】
【００１４】
実施形態１：
図１は、画像形成システム２０の概略を示す。画像形成システム２０は、データ圧縮装置１００と、プリンター２００とを備える。データ圧縮装置１００は、画像データを変換して圧縮データを作成する。圧縮データは、画像データのハーフトーン処理の過程において得られる中間データである。データ圧縮装置１００は、圧縮データをプリンター２００に送信する。画像形成システム２０は、このようなデータ圧縮装置１００を含むため、データ圧縮システムとしても機能する。
【００１５】
本実施形態におけるデータ圧縮装置１００は、パーソナルコンピューターである。データ圧縮装置１００は、ＣＰＵ１１０と、記憶媒体１２０とを備える。記憶媒体１２０には、圧縮用ＬＵＴと、プリンタードライバーとが記憶されている。記憶媒体１２０は、ＲＡＭを含み、プリンタードライバーの実行のための一時的な記憶を実行する。
【００１６】
プリンター２００は、画像形成装置である。プリンター２００は、ＣＰＵ２１０と、記憶媒体２２０と、画像形成機構２３０とを備える。記憶媒体２２０には、解凍用ＬＵＴと、ディザーマスクと、画像形成処理用プログラムが記憶されている。記憶媒体２２０は、ＲＡＭを含み、画像形成処理用プログラムの実行のための一時的な記憶を実行する。
【００１７】
画像形成機構２３０は、インクジェット方式による画像形成のためのハードウエアの総称である。画像形成機構２３０には、プリントヘッド等が含まれる。プリンター２００による画像形成の解像度は、１２００ｄｐｉである。プリンター２００が用いるインク色は、Ｃ（シアン）、Ｍ（マゼンタ）、Ｙ（イエロー）、Ｋ（ブラック）である。プリンター２００は、印刷媒体上に形成する各ドットのサイズを大、中、小の３種類の中から選ぶことができる。
【００１８】
図２は、圧縮データ送信処理を示すフローチャートである。データ圧縮装置１００が記憶しているプログラムをＣＰＵ１１０が実行することによって実現される。このプログラムは、プリンタードライバーである。
【００１９】
圧縮データは、ＲＧＢ値で表された画像データを元に作成される。本実施形態における画像データの解像度は、１２００ｄｐｉである。画像データは、各画素に階調値を示すデータが格納されている。本実施形態における階調値は、０〜２５５の整数値である。
【００２０】
圧縮データ送信処理を開始すると、色変換を実行する（Ｓ３００）。つまり、ＲＧＢ値をインク色成分のＣＭＹＫ値に変換する。ＣＭＹＫ値それぞれも、０〜２５５の整数値を取る。以降はインク色成分毎に同様の処理を独立して行う。続いて、インク色成分毎にデータ圧縮処理を実行し（Ｓ４００）、圧縮データを送信して（Ｓ４９８）、圧縮データ送信処理を終える。
【００２１】
図３は、１色のインク色成分のデータ圧縮処理を示すフローチャートである。まず、未処理のブロックの何れか１つに着目する（Ｓ４１０）。
【００２２】
図４は、ブロックを示す。ブロックは、太線の長方形で囲われたＮｂ（本実施形態では８）個の正方形を一塊にしたものである。各正方形は、画素を示す。画素に格納された数字は、或るインク色（例えばブラック）の階調値を示す。
【００２３】
ブロックは、以降の処理において疑似画素として活用される。データの圧縮は、各インク色の各ブロックを１単位として実施する。
【００２４】
続いて、着目しているブロック（以下、着目ブロック）にエッジが含まれるかを判定する（Ｓ４２０）。本実施形態におけるＳ４２０は、次式が満たされるか否かによって実行される。
（最大階調値−最小階調値）≧閾値…（１）
閾値は、本実施形態では１００である。
【００２５】
図４に示されたブロック［Ｂ１，Ｂ１］の場合、最大階調値が２４３、最小階調値が２４０である。よって、式（１）は満たされず、エッジは含まれないと判定されることになる。一方、ブロック［Ｂ１，Ｂ２］の場合、最大階調値が２５５、最小階調値が３である。よって、式（１）は満たされて、エッジが含まれると判定されることになる。なお、ブロック［Ｂ１，Ｂ１］は、画像の最も左上に位置するブロックであり、ブロック［Ｂ１，Ｂ２］は、ブロック［Ｂ１，Ｂ１］の右隣に位置するブロックである。このように、角括弧内のカンマの後の文字列は、主走査方向の位置を示しており、Ｂに続く数字は、左端から何個目のブロックであるかを示している。また、角括弧内のカンマの前の文字列は、副走査方向の位置を示しており、Ｂに続く数字は、上端から何個目のブロックであるかを示している。
【００２６】
エッジが含まれない場合（Ｓ４２０，ＮＯ）、フラグをＯＦＦに設定する（Ｓ４３０）。このフラグがＯＦＦであることは、エッジが含まれないことを示す。
【００２７】
続いて、ブロックの代表値を決定する（Ｓ４３５）。代表値は、グループ代表階調値とも言う。本実施形態における代表値は、ブロックに含まれる階調値の総和平均によって算出される。以下、単に平均という場合、総和平均のことを意味する。代表値は、平均が小数点以下を含む場合、小数点以下を四捨五入して整数値とする。例えば、ブロック［Ｂ１，Ｂ１］の場合、平均が２４０．６２５なので、代表値は２４１である。
【００２８】
続いて、代表値に基づき、ブロック階調値を決定する（Ｓ４４０）。代表値からブロック階調値への変換は、圧縮用ＬＵＴを参照することによって実現される。但し、圧縮用ＬＵＴは、ブロックの位置毎に用意されており、Ｓ４４０では、着目しているブロックの位置に応じた圧縮用ＬＵＴが用いられる。
【００２９】
ブロックの位置とは、ディザーマスクとの相対的な位置関係のことである。ディザーマスクの大きさを６４画素×６４画素とすると、通常の組織的ディザー法の場合、６４画素×６４画素の塊毎にディザーマスクに格納された閾値を適用することで、ドットの配置を決定する。このようにディザーマスクを適用すると仮定した場合、各ブロックは、ディザーマスク内の何れの位置に配置されるかが決まる。この位置を、ブロックの位置と呼ぶ。
【００３０】
ブロックの位置が決まれば、対応するディザーマスクの閾値が決まるので、代表値が０から２５５までの全ての場合について、ブロック内全画素の階調値が代表値の場合のハーフトーン結果を予め調査しておくことが可能となる。圧縮用ＬＵＴは、この調査結果に基づいて作成される。
【００３１】
以下に、圧縮用ＬＵＴの作成工程について述べる。０〜２５５の範囲の整数値のインク色成分：ＤＡＴＡは、大中小ドット密度変換テーブルを参照することで、大、中、小のドットサイズ別の密度データ：Ｌ＿ＤＡＴＡ，Ｍ＿ＤＡＴＡ，Ｓ＿ＤＡＴＡに変換される。図７は、上記の大中小ドット密度変換テーブルをグラフで示す。この変換を式で表すと、下記のようになる。
L_DATA = L_tbl(DATA)
M_DATA = M_tbl(DATA)
S_DATA = S_tbl(DATA)
【００３２】
大中小各密度データは、インク色データ同様、０〜２５５の範囲の整数値とする。小ドットを１００％近くまで使用すると、ドット着弾位置のずれ等に対する耐性が低下するため、図７に示すように、小ドットの最大密度を６０％程度に抑えている。
【００３３】
調査対象画素のディザーマスク閾値（０〜２５４の範囲の整数）がTHiであるとする。この場合、入力データがDATAの場合のハーフトーン結果は、LM_DATA = L_DATA + M_DATA, T_DATA = LM_DATA + S_DATA とすると、以下の考え方によって、大、中、小、ＯＦＦの何れかに４値化できる。
【００３４】
(L_DATA > THi)ならば大ドットＯＮ
(L_DATA ≦ THi < LM_DATA)ならば中ドットＯＮ
(LM_DATA ≦ THi < T_DATA)ならば小ドットＯＮ
(T_DATA ≦ THi )ならばドットＯＦＦ
【００３５】
調査対象のブロックの位置の８画素のディザーマスク閾値：ＴＨ０〜ＴＨ７について、ＤＡＴＡ値が０から２５５までの全ての場合のハーフトーン結果を予め調査すると、ブロック内全画素が同一ＤＡＴＡ値の場合におけるブロック内のドット配置が全て明らかになる。
【００３６】
図９は、着目ブロックの各画素位置に適用される閾値を例示する。プリンター２００は、組織的ディザー法に用いられる一般的なディザーマスクを記憶している。図９に示された閾値は、ディザーマスクの一部であり、着目ブロックに適用される閾値を示す。なお、図９の内容は、解凍用ＬＵＴを用いたドット配置の決定の説明（後述）にも使用する。
【００３７】
図９の例では、調査対象ブロックの位置のディザーマスク閾値がＴＨ０＝２，ＴＨ１＝１６６，ＴＨ２＝２４１，ＴＨ３＝１９，ＴＨ４＝１０１，ＴＨ５＝１１４，ＴＨ６＝８，ＴＨ７＝５９となる。
【００３８】
この場合についての調査結果を元に、入力ＤＡＴＡが０から２５５まで１ずつ増加した場合に、ブロック内のドット配置、および、それに対応したブロック内の大中小各ドットの発生個数の組み合わせがどのように変化するかをテーブル化する。ブロック内のドット配置とは、ＴＨ０〜ＴＨ７の各画素位置についての大中小各ドットのＯＮ／ＯＦＦ結果である。さらにドット配置が、変化の何段階目にあたるかをブロック階調値としてカウントすると、このブロック位置に関して、図８に示すテーブルが作成できる。
【００３９】
図８に示されるテーブルの代表値からブロック階調値への対応部分が圧縮用ＬＵＴである。圧縮用ＬＵＴを参照することで、代表値をブロック階調値に変換することが可能となる。
【００４０】
図８は、代表値が０から２５５まで１ずつ増大していった場合に、ブロック階調値が０から２１までの２２段階に変化することを示す。この場合、代表値がａ（０〜２５５の何れか）であるということは、ブロック内全画素にａが入力されることを意味する。ブロック階調値が２２段階に変化することは、対象ブロックにおいて、大中小ドットの組み合わせが２２通り存在することを意味する。さらに、本実施形態の手法では、ブロック階調値に対応するブロック内ドット配置も１つに決まるので、ドット配置自体が２２段階に変化することになる。
【００４１】
図８に示されるテーブルは、ブロック階調値から、最終的なハーフトーン結果を得る目的に使用することもできる。最終的なハーフトーン結果とは、ブロック内のドット配置のことである。その場合は、ブロック階調値から、上下４画素ずつ、計４×２＝８画素の画素位置のドットＯＮ／ＯＦＦ結果への対応関係を参照すればよい。
【００４２】
本実施形態の圧縮用ＬＵＴは、ブロック内のディザーマスク閾値に依存するので、ブロックの位置毎に用意される。この場合、ブロック階調値の最大値も、ブロック内のディザーマスク閾値に依存するため、ブロック毎に異なった値を取りうる。
【００４３】
例えば、ＴＨ０＝２４０，ＴＨ１＝６５，ＴＨ２＝１２０，ＴＨ３＝９０，ＴＨ４＝１７，ＴＨ５＝１６８，ＴＨ６＝２１２，ＴＨ７＝３０の場合について同様に調査を行うと、ブロック階調値は０から１９までの２０段階に変化し、ブロック階調値１９の場合にブロック内８画素全てが大ドットＯＮとなる。
【００４４】
一方、図８のテーブルの例においてブロック階調値１９に対応するのは、大ドット６個、中ドット１個の組み合わせであった。このように、ブロック階調値に対応するドットの組み合わせは、ブロック内のディザーマスク閾値に依存するので、同じブロック階調値であってもブロックの位置によって、ハーフトーン結果は異なりうる。
【００４５】
ブロック階調値の最大値は、図７に示される大中小ドット密度変換テーブルにも依存し、複雑な特性の大中小ドット密度変換テーブルを用いた場合には、ブロック階調値の最大値が大きくなることがある。但し、実用的な特性の大中小ドット密度変換テーブルを使用する場合、１ブロックを構成する画素数が８画素であれば、ブロック階調値の最大値が３１を超えるケースはなかった。従って、ブロック階調値として５ビットを割り当てれば十分である。
【００４６】
仮にブロック階調値の最大値が３１を超えるケースが発生した場合は、結果としてブロック階調値の最大値が３１以下に収まるように、ディザーマスクまたは大中小ドット密度変換テーブルを修正することで対応できる。以上のように本実施形態のブロック階調値は、５ビットのデータ量で表現できる。
【００４７】
一方、エッジが含まれる場合（Ｓ４２０，ＹＥＳ）、フラグをＯＮに設定する（Ｓ４４２）。次に、着目ブロックに含まれる画素を、Ｈ値グループと、Ｌ値グループとに分類する（Ｓ４４５）。
【００４８】
Ｈ値グループとは、ブロックを構成する画素群の階調値を、高い値と低い値とに二分する場合に、高い値に分類される階調値を有する画素（以下、Ｈ値画素）によって構成されるグループである。一方、Ｌ値グループとは、低い値に分類される階調値を有する画素（以下、Ｌ値画素）によって構成されるグループである。
【００４９】
本実施形態では、Ｈ値グループとＬ値グループとの分類の基準に、最大階調値と最小階調値との平均を用いる。例えば図４に示したブロック［Ｂ１，Ｂ２］の場合、最大階調値２５５と最小階調値３との平均は、１２９である。このため、階調値２５５の３つの画素は、Ｈ値グループに分類される。Ｈ値グループは、当然、最大階調値の画素を含む。一方、階調値３，５，１２，１５の画素は、Ｌ値グループに分類される。Ｌ値グループは、当然、最小階調値の画素を含む。平均に一致する場合は、本実施形態においてはＨ値グループに分類する。他の形態の場合、Ｌ値グループに分類してもよい。
【００５０】
次に、Ｈ値画素の位置を記憶する（Ｓ４５０）。Ｓ４５０で記憶される情報を、以下、位置情報と言う。位置情報は、画素毎にＨ値画素を示す１、又はＬ値画素を示す０が格納される。
【００５１】
次に、Ｈ値グループの代表値を決定する（Ｓ４６０）。本実施形態におけるＨ値グループの代表値は、Ｈ値画素の階調値の平均として算出される。
【００５２】
続いて、Ｈ値グループのブロック階調値を決定する（Ｓ４７０）。Ｓ４７０における決定の仕方は、Ｓ４４０と同じである。
【００５３】
次に、Ｌ値グループの代表値を決定する（Ｓ４８０）。本実施形態におけるＬ値グループの代表値は、Ｌ値画素の階調値の平均として算出される。
【００５４】
続いて、Ｌ値グループのブロック階調値を決定する（Ｓ４７０）。Ｓ４７０における決定の仕方は、Ｓ４４０と同じである。
【００５５】
このようにエッジ有りの場合、フラグと位置情報と２つのブロック階調値との情報が生成される。
【００５６】
Ｓ４４０又はＳ４９０の後、全ブロックについて処理したかを判定する（Ｓ４９５）。未処理のブロックが有る場合（Ｓ４９５，ＮＯ）、Ｓ４１０に戻る。全ブロックについて処理した場合（Ｓ４９５，ＹＥＳ）、データ圧縮処理を終える。このようにして処理されたデータが圧縮データである。
【００５７】
図３と共に説明したように、圧縮データは、代表値の決定と、ブロック階調値への変換との２段階の圧縮によって生成される。このため、代表値は第１の圧縮階調値であり，ブロック階調値は第２の圧縮階調値であると捉えることができる。そして、代表値と位置情報とを含むデータは第１の圧縮データであり、ブロック階調値と位置情報とを含むデータは第２の圧縮データであると捉えることができる。但し、本実施形態において単に圧縮データという場合、第２の圧縮データを指す。
【００５８】
次に、図５を用いて、画像形成処理を説明する。画像形成処理は、圧縮データを受信したことを契機に、ＣＰＵ２１０によって実行される。
【００５９】
まず、ハーフトーン処理（後述）を実行する（Ｓ５００）。続いて、ハーフトーン処理によって得られたドットデータを対象にインターレース処理を実行し（Ｓ８００）、画像形成を実行する（Ｓ９００）。
【００６０】
図６は、ハーフトーン処理を示すフローチャートである。まず、未処理のブロックの何れか１つに着目する（Ｓ５１０）。Ｓ５１０は、Ｓ４１０と同様な処理である。
【００６１】
続いて、フラグがＯＮかを判定する（Ｓ５１５）。フラグがＯＦＦの場合（Ｓ５１５，ＮＯ）、着目ブロックのブロック階調値から、ドットサイズの組み合わせを取得する（Ｓ５２０）。
【００６２】
プリンター２００は、図８に示されたテーブルの内容のうち、ブロック階調値とドットサイズの組み合わせとの関係を、ブロックの位置毎に記憶している。これらをまとめ解凍用ＬＵＴと呼ぶ。
【００６３】
ブロック階調値とブロックの位置とが与えられれば、解凍用ＬＵＴを用いて、各サイズのドットの個数、つまりドットサイズの組み合わせを求めることができる。
【００６４】
次に、着目ブロックにおけるドット配置を決定し（Ｓ５３０）、Ｓ６００に進む。Ｓ５３０には、Ｓ５２０で取得したドットサイズの組み合わせと、ディザーマスクとを用いる。
【００６５】
例えば、ドットサイズの組み合わせが、大ドット３個、中ドット１個、小ドット１個である場合、閾値のうち、１〜３番目に値が小さい画素に対して大ドットを配置し、次に小さい値の画素に中ドットを配置し、次に小さい値の画素に小ドットを配置する。図９の例であれば、閾値２，８，１９の画素に大ドットを配置し、閾値５９の画素に中ドットを配置し、閾値１０１に小ドットを配置する。
【００６６】
本来、ディザーマスクは、格納された閾値と、画像データにおける各画素の階調値との比較によって、ドット形成の有無を決定するために用いられる。ディザーマスクに格納された閾値は、見方によっては、ドット形成の優先順位を示していると捉えることができる。つまり、組織的ディザー法は、ディザーマスクの閾値としての数値が低い画素ほど、優先的にドットを形成することを要請している手法であると捉えることができる。Ｓ５３０では、この特徴を利用している。
【００６７】
図１０は、このように配置されたドットの様子を示す。Ｌは大ドット、Ｍは中ドット、Ｓは小ドットを示す。なお、大ドット３個、中ドット１個、小ドット１個の組み合わせは、図８のテーブル中には存在しない。しかし、大中小が同時にＯＮとなる最も複雑な場合について説明するため、例として挙げた。
【００６８】
一方、着目ブロックのフラグがＯＮの場合（Ｓ５１５，ＹＥＳ）、Ｈ値グループのブロック階調値と、Ｌ値グループのブロック階調値のそれぞれについて、ドットサイズの組み合わせを取得する（Ｓ５４０）。取得の方法は、Ｓ５２０と同じである。
【００６９】
続いて、Ｈ値グループ、Ｌ値グループそれぞれについて、ドット配置を決定する（Ｓ５４５）。決定の仕方は、Ｓ５３０と同じである。
【００７０】
次に、Ｈ値グループのドット配置を、位置情報を用いてマスクする（Ｓ５５０）。マスクについて説明するために、図１０に示されたドット配置が、Ｈ値グループのドット配置であるとする。そして、Ｈ値グループの位置が、図４に示されたブロック［Ｂ１，Ｂ２］に含まれる３つの階調値２５５の位置であるとする。図１０に示したＨ値グループのドット配置は、ドットサイズの組み合わせが大ドット２つ、中ドット１つ、小ドット１つである場合に、図９に示した閾値を用いて配置して得られた結果である。
【００７１】
図１１は、Ｈ値グループのマスクの様子を示す図である。図１１に示されるように、Ｈ値グループの場合、位置情報において１が格納されている画素のドットは残し、位置情報において０が格納されている画素のドットは削除する。この結果、大ドット１個と、小ドット１個が残る。この演算を、本実施形態ではマスクと呼ぶ。
【００７２】
次に、Ｌ値グループのドット配置を、位置情報を用いてマスクする（Ｓ５５５）。マスクについて説明するために、図１２に示されたドット配置が、Ｌ値グループのドット配置であるとする。そして、Ｌ値グループの位置が、図４に示されたブロック［Ｂ１，Ｂ２］に含まれる階調値２５５以外の位置であるとする。図１２に示したＬ値グループのドット配置は、ドットサイズの組み合わせが大ドット無し、中ドット無し、小ドット３つである場合に、図９に示した閾値を用いて配置して得られた結果である。
【００７３】
図１３は、Ｌ値グループのマスクの様子を示す図である。図１３に示されるように、Ｌ値グループの場合、位置情報において０が格納されている画素のドットは残し、位置情報において１が格納されている画素のドットは削除する。この結果、小ドット２個が残る。
【００７４】
続いて、Ｈ値グループとＬ値グループとのドット配置を合成し（Ｓ５６０）、Ｓ６００に進む。図１４Ａは、ドット配置の合成の様子を示す。
【００７５】
図１４Ａに示すように、マスク後のＨ値グループのドット配置と、マスク後のＬ値グループのドット配置との何れか一方にドットが配置されている画素には、そのドットが合成後にもそのまま配置される。一方、マスク後のＨ値グループのドット配置と、マスク後のＬ値グループのドット配置との何れにもドットが配置されている画素には、ドットが配置されない。なお、マスク後のＨ値グループのドット配置と、マスク後のＬ値グループのドット配置との両方にドットが配置されている画素は、マスクの特性上、存在しない。
【００７６】
Ｓ６００に進むと、追加処理を実行する。この処理の詳細を図１４Ｂに示した。図１４Ｂに示した追加処理が開始されると、Ｓ５３０又はＳ５６０の結果として配置されたドットの数がゼロであるかを判定する（Ｓ６０２）。
【００７７】
配置されたドットの数が、１つ以上である場合（Ｓ６０２，ＮＯ）、誤差計算処理（Ｓ６４０）及び誤差拡散処理（Ｓ６５０）を実行する。Ｓ６４０及びＳ６５０については後述する。
【００７８】
一方、配置されたドットの数がゼロである場合（Ｓ６０２，ＹＥＳ）、着目ブロックの誤差拡散階調値が、誤差拡散法における閾値ＴＨｅ以上であるか否かを判定する（Ｓ６０６）。誤差拡散階調値については後述する。
【００７９】
以下、着目ブロックを、ブロック［Ｂｎｙ，Ｂｎｘ］とも表記する。先述したように、ｎｙは、副走査方向の位置を示す自然数であり、ｎｘは、主走査方向の位置を示す自然数である。
【００８０】
本実施形態では、処理を簡略化するために、誤差拡散法によって補うのは、小ドットのみとした。小ドットを補うだけでも、低濃度の細線の消失等の課題の改善には十分な効果が得られる。このとき、誤差拡散法は、ディザー法による小ドットの発生数を監視し、それが不足していると判断した場合に、小ドットを補う。
【００８１】
本実施形態では、着目ブロックの誤差拡散階調値としては、ブロック内の小ドット密度データの総和に、近傍の処理済みブロックから拡散されてきた誤差を加えて補正したデータを用いる。誤差拡散階調値ｄａｔａ［Ｂｎｙ，Ｂｎｘ］は、次式で表される。
ｄａｔａ［Ｂｎｙ，Ｂｎｘ］＝ΣS_DATA＋ｅｄ［Ｂｎｙ，Ｂｎｘ］…（２）
【００８２】
式（２）におけるΣS_DATAは、着目ブロックに含まれる画素の小ドット密度データの総和である。式（２）におけるｅｄ［Ｂｎｙ，Ｂｎｘ］は、着目ブロックに対して、周辺の処理済みブロックから拡散されてきた誤差である。
【００８３】
本実施形態における閾値ＴＨｅは、通常の誤差拡散において用いられる値（階調範囲の中央値）ではなく、着目ブロックの小ドット密度データの平均値：Ｓ＿ＭＥＡＮに応じて変化する値とした。
Ｓ＿ＭＥＡＮ＝ΣS_DATA / Ｎｂ
ＴＨｅ＝ （Ｓ＿ＭＥＡＮ・Ｗ  + 255/2）／（Ｗ+1）
Ｗ＝０ならば階調範囲の中央値に固定する、通常の誤差拡散法の閾値となるが、本実施形態ではＷ＝４とし、右肩上がりの直線特性とした。これにより、ドット密度が小さいときのドット発生の遅れ等が改善される。次にｄａｔａ［Ｂｎｙ，Ｂｎｘ］とＴＨｅを比較し、ｄａｔａ［Ｂｎｙ，Ｂｎｘ］が閾値ＴＨｅ以上であれば（Ｓ６０６，ＹＥＳ）、着目ブロック内に１つの小ドットを追加で配置する（Ｓ６０８）。
【００８４】
小ドットが配置される画素は、エッジフラグがＯＦＦの場合は、本実施形態ではブロック内画素からランダムに決定される。処理速度よりも画質を優先する場合には、図９のディザーマスク閾値がブロック内で最小となる画素に決定するなどしてもよい。ディザーマスクの閾値が小さければ、対応する画素にはドットが形成され易くなり、ディザーマスクの持つ特性を反映し易くなるからである。
【００８５】
エッジフラグがＯＮの場合は、着目ブロックにおいて、本実施形態では、Ｈ値グループに分類された画素の中から、ランダムに決定されるが、図９に示したディザーマスクの閾値が、Ｈ値グループに分類された画素の中で最小の画素に決定するなどしてもよい。図１４Ｃは、エッジフラグがＯＮの場合に、１つの小ドットが追加で配置される様子を示す。
【００８６】
一方、ｄａｔａ［Ｂｎｙ，Ｂｎｘ］が閾値ＴＨｅ未満であれば（Ｓ６０６，ＮＯ）、Ｓ６０８をスキップすることで、小ドットの追加を実施しない。
【００８７】
Ｓ６０２でＮＯと判定した場合、Ｓ６０６でＮＯと判定した場合、又はＳ６０８を実行した後、誤差計算処理（Ｓ６４０）と誤差拡散処理（Ｓ６５０）とを実行する。
【００８８】
誤差計算処理（Ｓ６４０）では、着目ブロックで発生した誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］を求める。誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］は、次式により求める。
ｅｄ［Ｂｎｙ，Ｂｎｘ］＝ｄａｔａ［Ｂｎｙ，Ｂｎｘ］−Ｃｏｎ・ＯＮｖ…（３）
オンバリューＯＮｖはドット１つ分に対応するドット密度データ値で、本実施形態ではドット密度１００％に対応する２５５である。
【００８９】
カウンターＣｏｎは、着目ブロック内に形成するとされた小ドットの数を示している。従って、着目ブロックの誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］は、
Ｓ６０２でＮＯと判定した場合には、着目ブロックのｄａｔａ［Ｂｎｙ，Ｂｎｘ］から、ブロック内で形成された小ドットの数Ｃｏｎとオンバリューとの乗算値を、減算した値となり、
Ｓ６０８を実行した場合には、着目ブロックのｄａｔａ［Ｂｎｙ，Ｂｎｘ］から、１個のドットのオンバリューを、減算した値となり、
Ｓ６０６でＮＯと判定した場合には、着目ブロックのｄａｔａ［Ｂｎｙ，Ｂｎｘ］となる。
【００９０】
Ｓ６０６でＮＯと判定した場合、周辺のブロックから拡散された誤差を含むｄａｔａ［Ｂｎｙ，Ｂｎｘ］がそのまま誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］となるのは、ドットが形成されないために、Ｃｏｎ・ＯＮｖ＝０になるからである。
【００９１】
残り２つのケースでは、演算結果がゼロより小さくなる場合があり、この場合には、周辺のブロックに負値の誤差が拡散されることになる。
【００９２】
次に、こうして求めた誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］を周辺のブロックに配分する誤差拡散処理（Ｓ６５０）を実行する。
【００９３】
図１４Ｄは、誤差が拡散される様子を示す。＊印を付した着目ブロック［Ｂｎｙ，Ｂｎｘ］において発生する誤差を拡散させる場合、このブロックにおいてＳ６４０で計算した誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］を、周辺の６つのブロックに拡散する。これら６つのブロックは、何れも未処理のブロックである。本実施形態においては、１回目のＳ５１０において、画像の最も左上のブロックに着目し、次回のＳ５１０においては、直前の着目ブロックに対して主走査方向に隣接するブロック（つまり右隣のブロック）に着目する。主走査方向の右端まで処理すると、副走査方向の位置を１ブロック分移動し、再度左端から順に実行する。このため、着目ブロックよりも右のブロックは、未処理のブロックである。着目ブロックよりも下のブロックも、未処理のブロックである。
【００９４】
配分の割合は、着目ブロックの右隣（次に着目するブロック）と直下のブロックに対して１／４ずつ、他の４ブロックについては、１／８ずつである。具体的には、
ブロック（Ｂｎｙ，Ｂｎｘ＋１）に対して、１／４
ブロック（Ｂｎｙ，Ｂｎｘ＋２）に対して、１／８
ブロック（Ｂｎｙ＋１，Ｂｎｘ−２）に対して、１／８
ブロック（Ｂｎｙ＋１，Ｂｎｘ−１）に対して、１／８
ブロック（Ｂｎｙ＋１，Ｂｎｘ）に対して、１／４
ブロック（Ｂｎｙ＋１，Ｂｎｘ＋１）に対して、１／８
の割合で、誤差ｅｄ［Ｂｎｙ，Ｂｎｘ］を配分し、誤差拡散を実行する。
【００９５】
こうして分配された誤差は、各ブロックについて用意された拡散誤差バッファーに加算された上で保存され、各ブロックでの追加処理に用いられる。以上で追加処理を終了し、Ｓ７００に進む。
【００９６】
Ｓ７００では、全ブロックの処理が完了したかを判定する。未処理のブロックが有る場合（Ｓ７００，ＮＯ）、Ｓ５１０に戻る。全ブロックの処理が完了した場合（Ｓ７００，ＹＥＳ）、ハーフトーン処理を終える。このようにして、ハーフトーン処理により、全画素について各インク色のドット配置を示すドットデータが得られる。ドット配置は、画素毎にドット形成の有無を示す情報である。本実施形態におけるドット配置は、ドット形成の有りの場合には、ドットのサイズを示す情報である。
【００９７】
本実施形態によれば、少なくとも以下の効果を得ることができる。
【００９８】
（ａ）画像データからドットデータを得るための処理負荷が小さい。これは、代表値を決定した後は、圧縮用ＬＵＴ、解凍用ＬＵＴ及びディザーマスクを参照するだけでドット配置を決定または仮決定できるからである。
【００９９】
（ｂ）ブロック内にエッジが有る場合には、２つの仮決定されたドット配置を合成して、ドット配置を決定するので、画質の劣化が抑制されている。
【０１００】
（ｃ）ブロック階調値の決定と、ブロック階調値を用いたドット配置の取得とを、データ圧縮装置１００とプリンター２００とで分担して実行できる。このため、データ圧縮装置１００の処理負荷を軽減できる。ひいては、画像形成速度が遅くなりにくくなる。
【０１０１】
（ｄ）ブロック階調値およびマスクを用いて決定されたドットの数がゼロの場合であっても、例えば画像に低濃度の細線が引かれている箇所など、ドットを形成した方が画質の向上に貢献するときがある。このようなドットの形成を、誤差拡散法を利用した追加処理によって実現できる。
【０１０２】
（ｅ）上記（ｄ）の場合に、誤差拡散処理をブロック単位で実行するので、誤差拡散の計算処理を低減でき、処理時間を短縮できる。
【０１０３】
（ｆ）追加処理により形成するドットはブロック内で最大１つなので、追加で形成するドットの数を抑制することができる。
【０１０４】
（ｇ）追加でドットを形成する場合、ドットを形成する画素を、Ｈ値グループの画素から選択するので、Ｌ値グループの画素に配置される得る形態に比べ、画質が向上する。
【０１０５】
（ｈ）上記（ｇ）の場合に、ドットを形成する画素を、Ｈ値グループの画素からランダムに選択するので、選択のための処理が簡単であり、追加処理によってハーフトーン処理が遅くなることが抑制されている。
本実施形態では、誤差拡散処理で追加発生させるのは小ドット１個のみとしたが、２個以上発生させることとしてもよい。例えば、ＴＨｅの他にＴＨｅよりも大きなもう１つの閾値ＴＨｅ２（例えばＴＨｅ２＝ＴＨｅ＋２５５）を設け、
ｄａｔａ［Ｂｎｙ，Ｂｎｘ］≧ＴＨｅ２  ならば２個
ＴＨｅ＞ｄａｔａ［Ｂｎｙ，Ｂｎｘ］≧ＴＨｅ２  ならば１個
の小ドットを追加発生させる。配置する位置は、ランダムに決定してもよい。
【０１０６】
本実施形態では、小ドット密度データのみを誤差拡散処理の対象にしたが、小ドット密度データの代わりに、大中小各ドット密度データの総和であるT_DATAを対象にしてもよい。これは、大中小の全てのドットを考慮はするが、処理の簡略化のために大中小ドットの階調差は無視し、全てが小ドットであるかのように扱うやり方となる。このときは式（２）の代わりに
ｄａｔａ［Ｂｎｙ，Ｂｎｘ］＝ΣT_DATA ＋ｅｄ［Ｂｎｙ，Ｂｎｘ］
を用い、カウンターＣｏｎは、着目ブロック内に形成された大中小ドット数の合計とすれば、その他の部分は実施形態１と同様でよい。本方式では、誤差拡散法はディザー法による大中小ドットの総数を監視し、それが不足すると判断される場合に小ドットを補うという考え方になる。
【０１０７】
さらに別の手法としては、大中小ドットの階調値の違いを考慮して、より厳密に誤差を求めることも可能である。例えば、中ドットは小ドット２個分、大ドットは小ドット４個分に相当するとした場合には、大中小ドットそれぞれのオンバリュー値
ＯＮｖ＿Ｌ，ＯＮｖ＿Ｍ，ＯＮｖ＿Ｓは、
ＯＮｖ＿Ｌ＝４・ＯＮｖ、ＯＮｖ＿Ｍ＝２・ＯＮｖ、ＯＮｖ＿Ｓ＝ＯＮｖ、となり、式（２）、式（３）は以下のように変更すればよい。
ｄａｔａ［Ｂｎｙ，Ｂｎｘ］＝ΣS_DATA ＋２・ΣM_DATA ＋４・ΣL_DATA ＋ｅｄ［Ｂｎｙ，Ｂｎｘ］
ｅｄ［Ｂｎｙ，Ｂｎｘ］＝ｄａｔａ［Ｂｎｙ，Ｂｎｘ］−Ｃｏｎ_Ｓ・ＯＮｖ＿Ｓ −Ｃｏｎ・ＯＮｖ＿Ｍ−ＣｏｎＬ・ＯＮｖ＿Ｌ
ここで、Ｃｏｎ_Ｓは、着目ブロック内に形成するとされた小ドットの数、Ｃｏｎ_Ｍは中ドットの数、Ｃｏｎ_Ｌは大ドットの数である。
【０１０８】
この方式では、小ドットと中ドットなど、２種類以上のドットを発生させることもできる。例えば、ＴＨｅの他にもう一つＴＨｅよりも大きな閾値ＴＨｅ２（例：ＴＨｅ２＝ＴＨｅ＋２５５）を設け、
ｄａｔａ［Ｂｎｙ，Ｂｎｘ］≧ＴＨｅ２  ならば１個の中ドット
ＴＨｅ＞ｄａｔａ［Ｂｎｙ，Ｂｎｘ］≧ＴＨｅ２  ならば１個の小ドット
を追加発生させればよい。
【０１０９】
またこのとき、ＴＨｅ＝ＴＨｅ２とすれば、小ドットは発生せず、中ドットのみ発生することになる。このように、小ドットの吐出が不安定で、あまり使用したくない場合などは、中ドットのみを追加発生させることもできる。本実施形態では、Ｓ６０２でＹＥＳと判定されたときのみ、追加ドットを発生させたが、Ｓ６０２がＮＯの場合、すなわちブロック内に１つ以上のドットが既に発生している場合でもＳ６０６以降の工程に進み、誤差拡散法によってドットを追加発生させることとしてもよい。これにより、誤差拡散法による追加のドット発生を、より積極的に行うことができる。Ｓ６０２がＮＯの場合に、新規に追加されるドットは、既にドットが配置されている画素を除く画素位置に配置すればよいが、既に小ドットが配置されている画素に重ねて追加の小ドットを配置することを許容し、その結果２つの小ドットが重なった画素は、１つの中ドットに置換する、などの手法も可能である。
【０１１０】
またＳ６０２がＮＯでも追加ドットを発生させるのは、Ｓ４２０でエッジ有りと判定されたブロックに限定してもよい。エッジ部はディザー法の弱点であるので、こうすることで、より広い階調域でエッジ部の画質向上を図りつつ、エッジ部以外ではディザー法との互換性を高められる。
【０１１１】
本実施形態では、エッジ有りブロックは、Ｈ値グループとＬ値グループの２つにグループ分けしたが、例えばそれに中間階調値のＭ値グループを加えた３グループにグループ分けしてもよい。例えば、階調値８５未満の画素をＬ値グループ、８５以上１７０未満の画素をＭ値グループ、１７０以上の画素をＨ値グループとする。グループ数が３つに増えても、それぞれのグループについて代表値を求め、代表値から求めたドット配置を、各グループの画素位置に応じてマスクし、その結果を合成する、という工程は変わらない。また誤差拡散によって追加発生したドットは、Ｈ値グループの画素に配置してもよいし、Ｌ値グループ以外の画素に配置する、などとしてもよい。グループ数を増やすと処理は複雑になるが、ブロックを構成する画素数を大きくしたときの解像度低下が抑制できる。
【０１１２】
実施形態２：
実施形態２の説明は、実施形態１と異なる点を主な対象とする。明示しない内容については、実施形態１と同じである。なお、後述する実施形態３以降の説明についても、実施形態１と異なる点を主な対象とし、明示しない内容については実施形態１と同じである。
【０１１３】
実施形態２では、ドットサイズは１種類のみである。つまり、Ｓ＝２である。実施形態２では、ブロックの大きさを４画素×４画素＝１６画素とする。
【０１１４】
実施形態２におけるデータ圧縮処理を説明する。実施形態２では、ブロック階調値を、０〜１６の１７階調とする。
【０１１５】
図１５は、画像データにおける或るインク色の階調値を示す。図１５は、画像データ全体から、１ブロック分を抜粋して示している。
【０１１６】
図１５に示す例の場合、最大階調値が２１０であり、最小階調値が１０であるので、エッジ有り（Ｓ４２０，ＹＥＳ）と判定される。最大階調値と最小階調値との平均は１１０である。Ｌ値画素には、ハッチングが施されている。Ｈ値グループの階調値の平均は２０６．２５である。Ｌ値グループの階調値の平均は１１．７５である。
【０１１７】
なお、全画素の階調値の平均は１０９である。全画素の平均は、公知の手法との比較のために、後の説明で用いる。
【０１１８】
Ｓ４７０及びＳ４９０において、上記の平均を０〜１６の１７階調のブロック階調値に変換するため、上記の平均の値に１６／２５５を乗じた後、整数化する。但し、単純に四捨五入等で整数化すると、１７階調しか再現できないことに起因する疑似輪郭が発生する。
【０１１９】
本実施形態では、疑似輪郭をできるだけ抑制するために、ブロック毎に０以上１未満の乱数：ｒａｎｄ（）を発生させ、それを加えた上で小数点以下を切り捨てて整数化する。例えば、このブロックのｒａｎｄ（）値が０．３２４であるとする。小数点以下を切り捨てて整数化する演算子をＩＮＴ（）と表記すると、Ｈ値グループ及びＬ値グループは下記のように算出される。
Ｈ値グループ＝ＩＮＴ（２０６．２５×１６／２５５＋０．３２４）＝１３
Ｌ値グループ＝ＩＮＴ（１１．７５×１６／２５５＋０．３２４）＝１
【０１２０】
なお、全画素の平均１０９を用いて、同様な計算を実施すると、下記のようになる。
ブロック全体の階調値＝ＩＮＴ（１０９×１６／２５５＋０．３２４）＝７
【０１２１】
次に、本実施形態におけるハーフトーン処理を説明する。本実施形態では、Ｓ５２０及びＳ５４０の代わりに、濃度パターン法を用いてドット配置を取得する。
【０１２２】
プリンター２００の画像形成の解像度は１２００ｄｐｉであるので、ブロック階調値による１７階調が再現可能となる代わりに、解像度が縦横とも１／４に低下する。従って、３００ｄｐｉで１７階調の再現ができる画像形成が可能になる。
【０１２３】
図１６は、階調値と、濃度パターンとの関係を示す。ドットが形成される画素は、ブロック階調値以下の数字が格納されている画素である。つまり、小さい数字が格納されている画素ほど、優先的にドットが発生する。本実施形態では、ドット集中型を採用している。
【０１２４】
図１７は、ブロック階調値が１である場合に、ドットが１つ発生することを示す。ドットが発生する画素には、丸印が付されている。ドットが発生する画素は、閾値として１が格納された画素である。ドット集中型であるため、閾値として１〜４が格納された画素は、内部の画素である。内部の画素とは、他のブロックと隣接しない４つの画素のことである。
【０１２５】
図１８は、ブロック階調値が２である場合に、ドットが２つ発生することを示す。ドットが発生する画素は、閾値として２以下が格納された画素である。
【０１２６】
図１９は、ブロック階調値が３である場合に、ドットが３つ発生することを示す。ドットが発生する画素は、閾値として３以下が格納された画素である。
【０１２７】
図２０は、ブロック階調値が１４である場合に、ドットが１４個、発生することを示す。ドットが発生する画素は、閾値として１４以下が格納された画素である。
【０１２８】
図２１は、ブロック階調値が１５である場合に、ドットが１５個、発生することを示す。ドットが発生する画素は、閾値として１５以下が格納された画素である。
【０１２９】
図２２は、ブロック階調値が１６である場合に、ドットが１６個、発生することを示す。ドットが発生する画素は、閾値として１６以下が格納された画素である。つまり、全画素にドットが発生する。
【０１３０】
なお、図１６は、ブロック階調値が０である場合に、１つもドットが発生しないことを示す図であると捉えることができる。
【０１３１】
図２３は、Ｈ値グループとＬ値グループとのドット配置を合成（Ｓ５６０）の様子を示す。ドットが形成される画素には、丸印を付している。マスクされる画素には、ハッチングが施されている。
【０１３２】
図２４は、比較例として、ブロック全体の階調値を用いた場合のドット配置の様子を示す。図１５，図２３，図２４を比較すると、本実施形態によるドット配置の方が、比較例のドット配置よりも、画像の再現性が高いことが分かる。
【０１３３】
以上のように、本実施形態では実施形態１でのディザー法の代わりに濃度パターン法を用いたドット形成を行う。この後、誤差拡散法でさらにドットを補う工程については、実施形態１と同様である。但し、本実施形態ではドットサイズは１種類のみのため、実施形態１における中ドット密度データおよび大ドット密度データは、常にゼロとし、実施形態１の小ドット密度データは本実施形態の階調値データであるとすればよい。
【０１３４】
実施形態３：
図２５は、プリンター２０ａの概略を示す。プリンター２０ａは、色変換（Ｓ３００）及びデータ圧縮用プログラム（Ｓ４００）を実行することで、スタンドアローンで画像形成システム２０と同様に機能する。このため、プリンター２０ａは、広義の画像形成システムを構成する。さらに、プリンター２０ａは、データ圧縮装置またはデータ圧縮システムとして機能する。なお、データ圧縮処理用プログラムと、画像形成処理用プログラムとをまとめて、画像形成用プログラムとも呼ぶ。
【０１３５】
実施形態４：
本実施形態においては、ブロック内におけるエッジの有無を区別せず、全てのブロックをエッジ有りブロックとして処理する。つまり、データ圧縮処理において、Ｓ４２０の判定を廃止し、全ブロックについて、Ｓ４４５〜Ｓ４９０を実行する。このため、フラグが不要となる。そして、ハーフトーン処理において、Ｓ５１５の判定を廃止し、全ブロックについてＳ５４０〜Ｓ５６０を実行する。
【０１３６】
なお、ブロック内全画素が同一階調値の場合、Ｓ４４５において平均値以上をＨ値グループとした場合は、全画素がＨ値グループに分類されるので、以降のＬ値グループの処理は省略してもよい。省略しない場合は、Ｌ値グループのドット配置は合成時にどの画素にも反映されないため、Ｌ値グループの代表値は、例えば０などの適当な値として処理すればよい。
【０１３７】
実施形態４の変形例として、ドットデータの生成までをデータ圧縮装置１００で実行し、生成されたドットデータをプリンター２００に送信するようにしてもよい。
【０１３８】
本実施形態の場合、実施形態１と比べ、全ブロックを同じように処理することによって、条件分岐が減って処理が簡略化されるという利点が有る。特に、処理をハードウエア化してＬ値グループとＨ値グループの処理を並列実行する場合などには速度低下もなく有効である。
【０１３９】
なお、データ圧縮処理は図３の、エッジ有りブロックとエッジ無しブロックとで異なる処理を行う実施形態１の方式、ハーフトーン処理は全てのブロックをエッジ有りブロックとして処理する実施形態４の方式の組み合わせで行うことも可能である。その場合エッジ無しブロックについては、ハーフトーン処理では全画素をＨ値グループとし、Ｌ値グループの代表値は０などの適当な値とすればよい。この方式では、実施形態１の高い圧縮率と、実施形態４のハードウエア化に適したシンプルな手法との両立ができる。
【０１４０】
本開示は、本明細書の実施形態や実施例、変形例に限られるものではなく、その趣旨を逸脱しない範囲において種々の構成で実現できる。例えば、発明の概要の欄に記載した各形態中の技術的特徴に対応する実施形態、実施例、変形例中の技術的特徴は、先述の課題の一部又は全部を解決するために、或いは、先述の効果の一部又は全部を達成するために、適宜、差し替えや、組み合わせができる。その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜、削除できる。例えば、以下のものが例示される。
【０１４１】
同じブロックに対して、複数のブロック階調値を決定する場合に、決定する値の数は、Ｈ値グループおよびＬ値グループの２つより多くてもよい。但し、決定する値の数Ｎｔは、Ｎｂ（１ブロックを構成する画素の数）よりも少ないことが好ましい。つまり、Ｎｂ＞Ｎｔが好ましい。例えば、Ｎｂ＝８の場合に、Ｎｔ＝３に固定してもよいし、Ｎｔ＝２にする場合と、Ｎｔ＝３にする場合とを、ブロック内における画像データの階調値に応じて変更してもよい。
【０１４２】
この他、他の変形例が挙げられる。
【０１４３】
１段階目の圧縮によって得られるデータを転送対象にしてもよい。つまり、Ｈ値グループおよびＬ値グループの代表値、並びに位置情報を転送するようにしてもよい。
【０１４４】
エッジの有無の判定方法や、Ｈ値グループとＬ値グループとの分類の方法は、適宜、変更してもよい。例えば、Ｈ値グループとＬ値グループとの分類の方法として、最大階調値と最小階調値との平均値の代わりに、固定値（階調値１２８）を閾値としてもよい。
【０１４５】
代表値は、総和平均以外の手法で決定してもよい。例えば、相乗平均、中央値または最頻値を用いてもよい。或いは、ブロック内における最高の階調値をＨ値グループの代表値とし、ブロック内における最低の階調値をＬ値グループの代表値としてもよく、この手法ではエッジを強調する効果が得られる。
【０１４６】
代表値を決定してから、ブロック階調値を決定する代わりに、複数の画素毎にブロック階調値を求め、複数個のブロック階調値の代表値を決定することで、Ｈ値グループおよびＬ値グループそれぞれのブロック階調値を決定してもよい。
【０１４７】
ドットの個数の組み合わせから、ドット配置を仮決定する（Ｓ５３０，Ｓ５４５）ために、ディザーマスクや濃度パターン法を利用しなくてもよい。例えば、ランダムに配置してもよい。
【０１４８】
ブロック階調値に基づき、ドット配置を仮決定する手法（実施形態ではＳ５４０，Ｓ５５０）を変更してもよい。例えば、ＬＵＴの１回の参照で、ブロック階調値からドット配置の仮決定を実施してもよい。このＬＵＴは、ブロックの位置毎に用意されており、図８では代表値から上４画素ドット配置および下４画素ドット配置への対応部に相当し、ブロック階調値と、ドット配置とが対応付けられている。この変形例では、解凍用ＬＵＴのデータ量が増大するものの、ドット配置のための処理が速くなる。
【０１４９】
ドット配置を仮決定する他の手法として、ＬＵＴを１回、参照することで、ブロック階調値を、大中小各ドットサイズのＯＮドット個数の組み合わせを示すＯＮドット個数対応データに変換し、ＯＮドット個数対応データから大中小各ドットサイズのＯＮドット個数を求めた上で、実施形態として説明したＳ５５０を実行してもよい。Ｎｂが８の場合は、大中小３種類のドットのＯＮドット個数の組み合わせは１６５通りある。０から１６４のＯＮドット個数対応データと１６５種類のＯＮドット個数の組み合わせを１対１で対応させるＯＮドット個数対応ＬＵＴを作成すれば、ＯＮドット個数対応ＬＵＴを参照することで、ＯＮドット個数対応データをＯＮドット個数データに戻せる。ＯＮドット個数対応データは８ビットで記憶できるので、大中小３種類のＯＮドット個数データを直接記述するよりもデータサイズを小さくできる。
【０１５０】
ブロック階調値のデータ量は、適宜、変更してもよい。例えば、ブロックを構成する画素数に応じて変更してもよい。１ブロック１６画素とした場合、殆どのケースでブロック階調値の最大値は、６３以下であった。この場合、ブロック階調値のデータ量は、６ビットで十分である。また、１ブロック４画素とした場合、殆どのケースでブロック階調値の最大値は、１５以下であった。この場合、ブロック階調値のデータ量は、４ビットで十分である。
【０１５１】
実施形態１では、全てのブロックを第２の圧縮データに変換後、最終的なドット配置を得るハーフトーン処理を実行したが、これらの処理単位はもっと少ないブロック数であってもよい。例えば、横方向は全ブロック、縦方向は１ブロックの単位で、第２の圧縮データへの変換後、ハーフトーン処理を実行してもよい。この場合も、実施形態１で説明した（ａ）〜（ｅ）の効果は有効である。
【０１５２】
１ブロック単位で、圧縮データへの変換およびハーフトーン処理を続けて実行してもよい。この場合（ｃ）の効果は失われるが、（ａ），（ｂ）の効果は残るので、十分に有用な技術となる。
【０１５３】
Ｌ値グループのマスクは、省略してもよい。この場合、マスク後のＨ値のドット配置と、マスクされていないＬ値グループのドット配置とが合成される。こうすれば、処理負荷が軽くなる。マスク後のＨ値のドット配置と、Ｌ値グループのドット配置との両方にドットが配置されている画素には、マスク後のＨ値のドットが配置される。但し、この手法は、ハーフトーン処理にＳ５３０に示したような、閾値の小さい画素位置にサイズの大きなドットが優先的に形成される手法を用いること、及び大中小ドットのトータル個数がブロック階調値に対して単調増加することが条件となる。
【０１５４】
上記実施形態において、ソフトウエアによって実現された機能及び処理の一部又は全部は、ハードウエアによって実現されてもよい。また、ハードウエアによって実現された機能及び処理の一部又は全部は、ソフトウエアによって実現されてもよい。ハードウエアとしては、例えば、集積回路、ディスクリート回路、または、それらの回路を組み合わせた回路モジュールなど、各種回路を用いてもよい。
【０１５５】
実施形態１で説明したように、ドット配置の決定の仕方をエッジの有無に基づき変更する形態において、全ブロックについて一旦、エッジ有りと見なしてＨ値グループ及びＬ値グループについてドット配置を仮決定した後、ブロック内の全画素がＨまたはＬの一方のグループに属する場合については、１画素も属さないグループについては仮決定結果を無視することでドット配置を決定してもよい。このような手法では条件分岐が減らせるため、ハードウエアによって実現する場合に実用的である。
【０１５６】
追加処理において、ブロック内の画素のうち、階調値の一番大きな画素にドットを形成するものとしてもよい。階調値が一番大きな画素にドットが形成されると、元の画像データにおいて階調値が高いところにドットが形成され易いことになるからである。或いは、ブロック内の画素のうち、Ｌ値グループの画素を含め、ランダムに決定してもよい。
【０１５７】
追加処理において、追加するドットの数は、Ｓ５３０又はＳ５６０で決定されたドット配置において、ドット形成無しと決定された画素の数以下であれば、いくつでもよい。
【０１５８】
誤差拡散法における誤差の計算（Ｓ６４０）、および該計算された誤差の拡散（Ｓ６５０）は、ブロックを単位としなくてもよい。例えば、画素を単位としてもよい。
【０１５９】
ドットを追加するか否かを誤差拡散法により判定すること（Ｓ６０６）は、Ｓ５３０又はＳ５６０で決定されたドット配置によって示されるドットの数がゼロの場合、すなわちゼロ以下の場合に限らなくてもよい。例えば、ドット配置によって示されるドットの数が所定数以下の場合に、判定してもよい。所定数は、（Ｎｂ−１）個以下の任意の自然数である。
【符号の説明】
【０１６０】
２０…画像形成システム、２０ａ…プリンター、１００…データ圧縮装置、１１０…ＣＰＵ、１２０…記憶媒体、２００…プリンター、２１０…ＣＰＵ、２２０…記憶媒体、２３０…画像形成機構
【図１】
2018152666.tif 000003
【図２】
2018152666.tif 000004
【図３】
2018152666.tif 000005
【図４】
2018152666.tif 000006
【図５】
2018152666.tif 000007
【図６】
2018152666.tif 000008
【図７】
2018152666.tif 000009
【図８】
2018152666.tif 000010
【図９】
2018152666.tif 000011
【図１０】
2018152666.tif 000012
【図１１】
2018152666.tif 000013
【図１２】
2018152666.tif 000014
【図１３】
2018152666.tif 000015
【図１４Ａ】
2018152666.tif 000016
【図１４Ｂ】
2018152666.tif 000017
【図１４Ｃ】
2018152666.tif 000018
【図１４Ｄ】
2018152666.tif 000019
【図１５】
2018152666.tif 000020
【図１６】
2018152666.tif 000021
【図１７】
2018152666.tif 000022
【図１８】
2018152666.tif 000023
【図１９】
2018152666.tif 000024
【図２０】
2018152666.tif 000025
【図２１】
2018152666.tif 000026
【図２２】
2018152666.tif 000027
【図２３】
2018152666.tif 000028
【図２４】
2018152666.tif 000029
【図２５】
2018152666.tif 000030