(57)【要約】【課題】  モアレの抑制と入力画像の鮮鋭性維持を両立したハーフトーン画像を生成する。【解決手段】  入力画像において処理対象とする画素群について、前記画素群に含まれる各画素の画素値に基づいて、目標値を決定する目標値決定手段と、前記画素群に含まれる各画素を、各画素の画素値に基づいて少なくとも１つの画素の画素値を含む所定の画素値範囲のクラスを決定するクラス決定手段と、前記画素群に含まれる各画素に対応する閾値に基づいて、各画素に対して画素順位を決定する画素順位決定手段と、前記クラス決定手段が決定した前記クラスに基づいて、前記画素群に含まれる画素のうちドットを分配する画素候補を選択し、前記画素順位に基づいて、ドットを分配する画素を前記画素候補から選択することでドットを分配する画素を決定することで、前記画素群に含まれる各画素の出力値を決定する出力値決定手段を有することを特徴とする。【選択図】  図２
2019097051.tif 000002
【特許請求の範囲】
【請求項１】
入力画像における各画素の画素値に基づいて、ドットの配置を表す出力画像に変換する画像処理装置であって、
前記入力画像において処理対象とする画素群について、前記画素群に含まれる各画素の画素値に基づいて、目標値を決定する目標値決定手段と、
前記画素群に含まれる各画素を、各画素の画素値に基づいて少なくとも１つの画素の画素値を含む所定の画素値範囲のクラスを決定するクラス決定手段と、
前記画素群に含まれる各画素に対応する閾値に基づいて、各画素に対して画素順位を決定する画素順位決定手段と、
前記クラスと前記画素順位に基づいて、前記目標値に相当するドット数のドットを分配することで前記画素群に含まれる各画素の出力値を決定する出力値決定手段を有し、
前記出力値決定手段は、前記クラス決定手段が決定した前記クラスに基づいて、前記画素群に含まれる画素のうちドットを分配する画素候補を選択し、前記画素順位に基づいて、ドットを分配する画素を前記画素候補から選択することでドットを分配する画素を決定することを特徴とする画像処理装置。
【請求項２】
前記クラス決定手段は、前記画素群に含まれる各画素の画素値に基づいて、前記入力画像における画素の画素値がとり得る範囲を、所定の画素値の範囲ごとに分割することで複数のクラスを決定し、
前記出力値決定手段は、前記複数のクラスのうち最も高い画素値の範囲であるクラスから順に画素候補を選択することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記出力値決定手段は、前記画素候補のうち、前記画素順位が高い順にドットを分配することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記クラス決定手段は、前記画素群に含まれる画素の画素値のうち、最大の画素値から所定の画素値範囲をクラスとして設定し、
前記出力値決定手段は、前記クラスに分類される画素を前記画素候補として選択することを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記クラス決定手段は、前記出力値決定手段がドットを分配する画素を決定することに、前記クラスに対応する画素値範囲を更新することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記画素順位決定手段は、対応する閾値の値が小さい画素から対応する閾値の値が大きい画素の順に、前記画素順位を決定することを特徴とする請求項１乃至５の何れか一項に記載の画像処理装置。
【請求項７】
さらに、閾値マトリクスを格納する格納手段と、
前記閾値マトリクスを参照して、前記画素群に含まれる各画素に対応する閾値を取得する閾値取得手段を有し、
前記画素順位決定手段は、前記閾値取得手段が取得した閾値に基づいて、前記画素順位を決定することを特徴とする請求項１乃至６の何れか一項に記載の画像処理装置。
【請求項８】
前記閾値マトリクスは、ドット集中型であることを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記クラス決定手段は、前記入力画像における各画素の画素値の範囲を、所定の画素値の範囲毎に分割することで、複数のクラスを決定し、
前記出力値決定手段は、前記複数のクラスごとにドットを分配する分配ドット数を算出し、クラスごとにドットを分配する画素を前記画素順位に基づいて決定することを特徴とする請求項１に記載の画像処理装置。
【請求項１０】
前記出力値決定手段は、前記分配ドット数を、同じクラスに所属する画素数と該画素値に基づいて算出することを特徴とする請求項９記載の画像処理装置。
【請求項１１】
前記出力値決定手段は、クラス内の画素の画素値の合計とドットを分配した結果得られる出力値の合計との差分を下位クラスに伝播し、下位クラスにおいては前記差分に基づいてクラス内の画素値の合計を補正して前記分配ドット数を算出することを特徴とする請求項９または１０に記載の画像処理装置。
【請求項１２】
前記出力値決定手段は、前記複数のクラスそれぞれの分配ドット数までドットを分配した後に、前記分配ドット数と前記目標値との差分を、優先度の高いクラスに含まれるドットを分配されなかった画素に再分配することを特徴とする請求項９乃至１１の何れか一項に記載の画像処理装置。
【請求項１３】
前記目標値決定手段は、前記画素群において出力すべきドット数を表す目標値を決定することを特徴とする請求項１乃至１２の何れか一項に記載の画像処理装置。
【請求項１４】
コンピュータを請求項１乃至１３のいずれか１項に記載の画像処理装置として機能させるためのプログラム。
【請求項１５】
入力画像における各画素の画素値に基づいて、ドットの配置を表す出力画像に変換する画像処理装置であって、前記入力画像において処理対象とする画素群について、前記画素群に含まれる各画素の画素値に基づいて、目標値を決定し、
前記画素群に含まれる各画素を、各画素の画素値に基づいて少なくとも１つの画素の画素値を含む所定の画素値範囲のクラスを決定し、
前記画素群に含まれる各画素に対応する閾値に基づいて、各画素に対して画素順位を決定し、
前記クラス決定手段が決定した前記クラスに基づいて、前記画素群に含まれる画素のうちドットを分配する画素候補を選択し、前記画素順位に基づいて、ドットを分配する画素を前記画素候補から選択することでドットを分配する画素を決定することで、前記画素群に含まれる各画素の出力値を決定することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力画像をハーフトーン画像に変換する画像処理方法に関する。
【背景技術】
【０００２】
デジタル画像データが表す画像における各画素は、８ビットや１６ビットの多階調で表現されるものが一般的である。これらのデジタル画像データをプリンタで印刷する場合、プリンタで印刷可能な階調数に削減しつつ、元の階調を疑似的に表現するために、デジタル画像データに対してハーフトーン処理が施される。ハーフトーン処理の一種にディザ処理と呼ばれるものがある。このディザ処理は、複数の閾値が配置された閾値マトリクスを用いて、画素と対応する閾値を比較して、階調数を低減する処理である。閾値マトリクスは、画素値が一様な平坦画像が入力されたときに、印刷装置が表現しやすいドットパターンとなるように閾値の配置が決められている。しかしながら、入力画像における各画素と閾値マトリクスの各閾値を比較すると、入力画像における画素値の分布と閾値マトリクスの有する空間周波数が干渉して折り返し成分を生じさせることで、モアレ（干渉縞）が発生してしまう場合がある。
【０００３】
特許文献１は、閾値マトリクスと形状が一致する画素群（セル）内の入力階調値の平均値に応じた理想出力合計値を生成し、理想出力合計値に達するまでセル内の重心から出力階調値を割り当てる方法を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１９４９０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の方法では、常にセル内の重心から出力階調値の生成を繰り返すため、入力画像の鮮鋭性を維持できない場合があった。このように従来の閾値マトリクスを用いたディザ処理では、入力画像の鮮鋭性とモアレの抑制とを両立することは難しい。
【０００６】
本発明は、モアレの発生を抑制しつつ、入力画像の鮮鋭性を維持されたハーフトーン画像を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため本発明は、入力画像における各画素の画素値に基づいて、ドットの配置を表す出力画像に変換する画像処理装置であって、前記入力画像において処理対象とする画素群について、前記画素群に含まれる各画素の画素値に基づいて、目標値を決定する目標値決定手段と、前記画素群に含まれる各画素を、各画素の画素値に基づいて少なくとも１つの画素の画素値を含む所定の画素値範囲のクラスを決定するクラス決定手段と、前記画素群に含まれる各画素に対応する閾値に基づいて、各画素に対して画素順位を決定する画素順位決定手段と、前記クラスと前記画素順位に基づいて、前記目標値に相当するドット数のドットを分配することで前記画素群に含まれる各画素の出力値を決定する出力値決定手段を有し、前記出力値決定手段は、前記クラス決定手段が決定した前記クラスに基づいて、前記画素群に含まれる画素のうちドットを分配する画素候補を選択し、前記画素順位に基づいて、ドットを分配する画素を前記画素候補から選択することでドットを分配する画素を決定することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、所定の画素群において閾値マトリクスと各画素の画素値とに基づいてドットを分配することにより、モアレの抑制と入力画像の鮮鋭性維持を両立したハーフトーン画像を生成することができる。
【図面の簡単な説明】
【０００９】
【図１】画像処理装置の構成例を示すブロック図
【図２】画像処理部の構成例を示すブロック図
【図３】画像処理部が実行する処理の動作を示すフローチャート
【図４】入力画像と処理単位を説明する図
【図５】閾値マトリクスを示す図
【図６】目標値決定方法を説明する図
【図７】画素順位決定結果を示す図
【図８】クラス決定方法を説明する図
【図９】出力階調値の分配結果を示す図
【図１０】画像処理部の構成例を示すブロック図
【図１１】画像処理部が実行する処理の動作を示すフローチャート
【図１２】クラス決定方法を説明する図
【図１３】出力階調値の分配結果を示す図
【図１４】出力値決定方法を説明する図
【図１５】画像処理部が実行する処理の動作を示すフローチャート
【発明を実施するための形態】
【００１０】
以下、添付の図面を参照して、本発明を好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例にすぎず、本発明は図示された構成に必ずしも限定されるものではない。
【００１１】
＜実施形態１＞
（画像処理装置の構成）
実施形態１では、各画素２５６値（８ビット）からなる入力画像を各画素１６値（４ビット）の出力画像に変換するハーフトーン処理を実行する画像処理装置を例に説明する。本実施形態においては、入力画像において４画素×４画素のブロックごとにハーフトーン処理を行う。また画像処理装置は、プリンタドライバがインストールされたパーソナルコンピュータに相当する。画像処理装置は、ハーフトーン処理により得られる出力画像を印刷装置に出力する。図１は、実施形態１における画像処理装置の構成例を示すブロック図である。画像処理装置は、ＣＰＵ１００、ＲＡＭ１０１、ＲＯＭ１０２、操作部１０３、表示部１０４、画像処理部１０５、Ｉ／Ｆ（インターフェース）部１０６、バス１０７を備える。ＣＰＵ１００は、ＲＡＭ１０１やＲＯＭ１０２に格納されているコンピュータプログラムやデータを用いて、画像処理装置全体の動作制御をおこなう。ＲＡＭ１０１は、Ｉ／Ｆ部１０６を介して外部の記憶装置からロードされたコンピュータプログラムやデータを一時的に記憶するための記憶領域を有する。
【００１２】
また、ＣＰＵ１００が各種の処理を実行する際に用いる記憶領域や画像処理部１０５が画像処理を実施する際に用いる記憶領域を有する。すなわち、ＲＡＭ１０１は、各種の記憶領域を適宜提供することができる。ＲＯＭ１０２は、本装置の設定データやブートプログラムなどが格納されている。
【００１３】
操作部１０３は、キーボードやマウスなどの入力装置により構成されており、画像処理装置の操作者が各種の指示をＣＰＵ１００に対して入力することができる。表示部１０４は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１００による処理結果を画像や文字などで表示することができる。
【００１４】
画像処理部１０５は、コンピュータプログラムを実行可能なプロセッサや専用の画像処理回路から構成され、各種の画像処理を実施する。例えば、ＣＰＵ１００から画像処理を実行する命令を受け付けると、ＲＡＭ１０１に格納された入力画像に対してハーフトーン処理し、処理結果を出力する。また、画像処理の際には、ＲＡＭ１０１の記憶領域を利用しながら処理を実施する。
【００１５】
Ｉ／Ｆ部１０６は、外部記憶装置やインターネットに本装置を接続するためのインターフェースとして機能するものである。本装置では、Ｉ／Ｆ部１０６を介して、外部記憶装置に格納されるＣＰＵ１００に処理させるプログラムや画像データ、画像処理パラメータなどを適宜ＲＡＭ１０１にロードする。上記の各部はいずれも、バス１０７に接続されている。
【００１６】
（画像処理部１０５の構成）
図２は、画像処理部１０５の詳細な論理構成を示すブロック図である。画像処理部１０５は、画素値取得部２００、閾値取得部２０１、目標値決定部２０２、画素順位決定部２０３、クラス決定部２０４、出力値決定部２０５を有する。画素値取得部２００は、ＲＡＭ１０１に格納された入力画像から、ハーフトーン処理を実施する処理単位となるブロックごとに、ブロックに含まれる画素群の画素値を取得する。本実施形態においては、図４に示すような各画素の画素値が８ビットである入力画像４００から縦４画素、横４画素の画素群４０１を処理単位（ブロック）とする。
【００１７】
閾値取得部２０１は、ＲＡＭ１０１に格納された閾値群からハーフトーン処理を実施するブロック単位に合せたサイズの閾値群を取得する。図５は、本実施形態において用いる閾値群を示す図である。閾値群に示される数値はそれぞれ、閾値の値そのものである。図５に示す閾値群は、１３の閾値を１組とするドット集中型の閾値マトリクス（破線で図示）である。閾値マトリクスが、入力画像全体に対応するように繰り返し敷き詰められている。図５に示す閾値群は、閾値の値がより小さい方がドット配置される確率が高くなる。このような閾値のうち、画素値取得部２００で取得した画素群に対応するブロック単位の閾値群（実線で図示）を取得する。ブロック単位と閾値マトリクスについては、夫々の形状について、ここで図示する例に限定されない。図５に示すような周期的な閾値パターンは、必ずしもＲＡＭ１０１から読み出す必要はなく、Ｈｏｌｌａｄａｙのハーフトーン方法として知られる方法によって生成することも可能である。
【００１８】
目標値決定部２０２は、画素値取得部２００及び閾値取得部２０１で取得したブロック単位の画素群及び閾値群に基づいて、処理対象のブロックの目標値を算出する。ブロックの目標値とは、ブロックにおける各画素の出力値合計の目標である。ブロックごとの目標値の算出方法は後述する。
【００１９】
画素順位決定部２０３は、ブロックにおける各画素について、ドットを配置が優先される順番である画素順位を付与する。本実施形態では、閾値取得部２０１で取得した閾値群に基づいて、画素順位を決定する。即ち、画素に対応する閾値が他の画素よりも小さい画素は、ドットを配置される確率が高い画素であることを意味する。従って対応する閾値が小さい画素は、画素順位を高くする。なお、本実施形態では、ブロックに対応する閾値群を、画素順位決定のための評価指標としたが、これに限られるものではない。例えば、エッジ強度などの入力画像における特徴量や印刷装置の特性に合せて予め決められたドット配置順としても良い。
【００２０】
クラス決定部２０４は、処理対象のブロックにおける各画素の画素値に応じて入力画像における画素値範囲を分割することにより画素値範囲を複数のクラスに分類し、画素毎に分類されたクラス順位を決定する。
出力値決定部２０５は、画素順位決定部２０３及びクラス決定部２０４が決定した画素順位及びクラス順位に応じて、ブロック内の画素にドットを分配する。
【００２１】
出力値決定部２０５は、ブロックにおける各画素の出力値の合計が、目標値決定部２０２が算出したブロックの目標値に達するように、ドットを分配する。本実施形態では、より高位なクラス順位を有する画素に出力値を分配した後に、低位なクラス順位を有する画素に出力値を分配していく。また、同位のクラス順位となった画素間の分配順は画素順位によって決定する。
【００２２】
（画像処理部の動作説明）
画像処理部１０５が実行する画像処理の動作を説明する。図３は、画像処理部１０５が実行する処理のフローチャートである。本実施形態においては、図３に示したフローチャートを実現可能なプログラムをＣＰＵ１００が読み出して実行することにより、処理を実現する。なお、以下の説明において、フローチャートの各ステップ（工程）を「Ｓ」を用いて表すこととする。
【００２３】
処理をスタートすると、まず、Ｓ３００において画素値取得部２００は、ＲＡＭ１０１から画素データを取得する。画素データを一つ取得すると、Ｓ３０１において、処理対象のブロックに含まれる画素群の画素データが全て揃ったかどうかを判定する。画素群の画素データが揃わない場合には、Ｓ３００に戻り、画素データの取得を繰り返す。本実施形態では、図４に示すような８ビットの入力画像４００に対して、４画素×４画素の画素群４０１で示すブロック単位にハーフトーン処理をおこなう。そのため、Ｓ３０１において画素値取得部２００は、４画素×４画素のブロックの画素群の画素データが揃ったか否かを判定する。所望の画素群のデータが揃った場合には、次のステップに進む。
【００２４】
また、上記のＳ３００及びＳ３０１と並行して、Ｓ３０２において閾値取得部２０１は閾値データを取得する。閾値データを一つ取得すると、Ｓ３０３において閾値取得部２０１は、処理対象のブロックに対応する閾値群の閾値データが全て揃ったかどうかを判定する。閾値群のデータが揃わない場合には、Ｓ３０２に戻り、閾値データの取得を繰り返す。本実施形態では、図５に示す閾値マトリクスから、処理単位である４画素×４画素のブロックごとに閾値群を取得する。なお上記の画素データの取得と閾値群データの取得に関わるステップは、互いに依存関係を持たない処理であるため、逐次的に処理する場合にも、その実行順については考慮しなくてよい。
【００２５】
Ｓ３０４において目標値決定部２０２は、処理対象のブロックにおける各画素の出力値の合計の目標値を算出する。本実施形態では、目標値決定部２０２は、ブロックに含まれる画素群の画素値の平均値を、各画素に対応する閾値によってディザ処理した結果の集計を目標値として算出する。本実施形態における目標値決定方法を、図６を用いて説明する。
【００２６】
図６（ａ）は、目標値決定処理を説明する図である。まず、ブロックの画素群について画素値の平均値を算出する。次に、算出した平均値をブロックに対応する閾値群の各閾値を用いて量子化し、各量子化結果を積算していくことで目標値を算出する。量子化の方法としては図６（ｂ）に示す。本実施形態では、図５に示すような１３個の閾値を１つの組として構成した閾値マトリクスを使用する。また、閾値の値が小さい値であるほど、量子化結果が大きくなる可能性を高めている。ブロックにおける画素値の平均値を大きくしていくと、閾値群において閾値０の画素から量子化結果が徐々に大きい値になる。閾値０の画素の量子化結果が最大の量子化結果１５となった後は、閾値群において閾値１に対応する画素の量子化結果を大きくするという量子化方法となっている。この量子化方法と閾値の配置により、図５に示す閾値マトリクスを用いるとドット集中型のディザ処理が可能となる。ディザ処理は、閾値マトリクスに対応する領域毎に少ない出力階調数で疑似的に階調を表現する手法であり、閾値マトリクスにおいて閾値が確率的に変動する。そのためブロックにおける画素値が変動すると、閾値の配置と干渉してしまい、閾値マトリクスを用いてディザ処理した結果、本来画素群が表すべき目標の階調を得られない場合がある。そこで処理対象をブロックの平均値に対して、各閾値とのディザ処理を実施することで、良好な目標値を算出することができる。
【００２７】
Ｓ３０５において画素順位決定部２０３は、ブロックに含まれる各画素について、ドットを分配する優先順位を示す画素順位を決定する。本実施形態では、画素順位決定部２０３は、処理対象のブロックに対応する閾値の値が小さい順を画素順位とする。具体的には、閾値０に対応する画素は、最もドットの分配順が高い画素順位０を設定する。一方、閾値群において最大値である閾値１２に対応する画素は、最もドットの分配順が低い画素順位１２を設定する。画素順位は、ブロックにおいて順位が重複する場合があっても良い。図７に示すのは、処理対象とするブロックに対応する閾値群を、図５の左上ブロックの閾値群とした場合の画素順位である。
【００２８】
Ｓ３０６においてクラス決定部２０４は、ブロックにおける各画素の画素値の大きさに基づいて、画素を複数のクラスに分類し、各クラスのクラス順位を決定する。クラス順位を決定する方法を、図８を用いて説明する。図８（ａ）に示すのは、処理対象のブロックに含まれる画素群である。図８（ｂ）は、画素位置ａ〜ｐそれぞれの画素値を示すグラフである。横軸は各画素位置、縦軸は画素値を示す。クラス決定部２０４は、画素群をクラスに分類するために、まずブロックに含まれる画素の画素値の平均値を算出する。このブロックの平均値を基準値とし、基準値に応じて画素値範囲を分割することでクラス分類する。本実施形態において各クラスは、所定の範囲（図中で２Ｒの範囲）を用いて分類されている。まず、（基準値−Ｒ）から（基準値＋Ｒ）を１つのクラスとする。さらにクラスの境界から２Ｒ毎にクラスを分類する。図８（ｂ）に示すように、基準値に基づいて２Ｒの画素値範囲毎に、画素値が高い方からクラス０、クラス１、クラス２、クラス３、クラス４と分類する。例えば画素値ａとｉは、クラス０に分類される。このようなクラス分けに応じて、各画素を分類すると、図８（ｃ）に示すようなクラス順位を得ることができる。
【００２９】
なお、クラス分類するための基準値は、ブロック平均値に限定されるわけではない。例えば、画素群の画素値の中央値としても良いし、最大値や最小値としても良い。更に、ブロック内の画素値に応じて基準値を設定するのではなく、予め入力階調の画素値の範囲をクラス分けしておき、ブロックにおける各画素の画素値に応じて、クラス分類を決定しても良い。
【００３０】
Ｓ３０７において出力値決定部２０５は、画素順位及びクラス順位に基づいて、ブロックにおけるどの画素にドットを分配するかを決定し、各画素の出力値を決定する。本実施形態では、まずクラス順位からドットを分配候補となる画素候補を選択する。図８（ｃ）に示すクラス順位である場合、画素位置ａ及び画素位置ｉが最も優先度の高いクラス順位０となっている。つまり画素位置ａ及び画素位置ｉがドットを分配する画素候補として選択される。出力値決定部２０５はさらに、このクラス順位が同位である２つの画素に対して、図７に示す画素順位を参照する。画素位置ａは画素順位１であり、画素位置ｉは画素順位１０である。そこで出力値決定部２０５は、クラス順位０で、画素順位の優先度の高い画素位置ａを、１番目にドットを分配する画素として決定する。ドットの分配は、ブロックにおける各画素の出力値の合計が目標値に達するまで行われる。
【００３１】
従って、次にＳ３０７を処理する場合には出力値決定部２０５は、前回選ばれた画素位置ａの画素を除いて、クラス順位０となる画素位置ｉをドット分配画素として決定する。更に続いて、Ｓ３０７を実行する場合には、出力値決定部２０５は、次点の優先度となるクラス順位１で同位となる画素位置ｂ、画素位置ｌ及び画素位置ｍをドット分配候補として選択する。クラス順位０の場合と同様に、図７に示す画素順位を参照して画素位置ｂをドット分配画素として選択する。以降、Ｓ３０７が実行される度に、画素位置ｌ、ｍ、ｐ、ｆ、ｃ、ｋ、ｎ、ｏ、ｇ、ｄ、ｊ、ｅ、ｈの順番でドット分配画素が決定される。なお、クラス順位も画素順位も同一となる画素位置に対しては、予め画素位置によって優先度を決めておいてもよいし、ランダムに画素順位を決定してもよい。
【００３２】
Ｓ３０８において出力値決定部２０５、選択されたドット分配画素の出力値を決定する。本実施形態では、ドットを分配する画素の出力値は、既にブロック内に分配済みの出力値合計とブロック目標値の差、もしくは最大出力値１５のうち、小さい方とする。
【００３３】
Ｓ３０９において出力値決定部２０５は、処理対象のブロックにおけるドット分配済みの出力値の合計と、ブロックの目標値とを比較し、一致する場合にはＳ３１０に進む。一致しない場合にはＳ３０７に分岐する。Ｓ３０９において、処理ブロック内の出力値の合計とブロック目標値を一致させる。尚、Ｓ３０７において、分配画素として選択されなかった画素については、初期値（例えば、階調値０）が最終的に出力されることが望ましい。
【００３４】
Ｓ３１０において出力値決定部２０５は、画像における全ての画素について処理が終了したかどうかを判定し、終了していない場合には、確認済ブロックに対して上記の処理を繰り返す。以上により、処理を完了する。
【００３５】
図９に示すのは、本実施形態における画素順位（図７参照）とクラス順位（図８（ｃ）参照）における各ブロック目標値の場合の分配結果である。ブロックの目標値が１０の場合、最初にドットを分配する画素として決定される画素位置ａに、目標値１０と出力値との合計０との差分１０が量子化値として分配される。他の画素にはドットは分配されず、出力値０が決定される。図９（ｂ）に示すブロックの目標値が５０の場合、画素位置ａ、ｉ、ｂの３画素に量子化値の最大値１５が出力値として決定される。ここで画素ｂは、クラス１に分類される画素の中で、画素順位が一番高い画素であるため、３番目にドットが分配される画素として決定されている。そして、クラス順位と画素順位に基づいて４番目にドットを分配する画素として決定された画素位置ｌには、目標値と、分配済の出力値の合計（出力値１５×３画素＝４５）との差分である５が量子化値として決定される。４画素以外の画素は、ドットが分配されず、出力値は０となる。
【００３６】
図９（ｃ）に示す目標値が１００の場合は、クラス順位と画素順位に従って、画素位置ａ、ｉ、ｌ、ｍ、ｐ、ｆにドットが分配され、それぞれ量子化値の最大である１５が出力値として決定される。また、画素位置ｃには、目標値と、分配済の出力値の合計（出力値１５×６画素＝９０）との差分である１０が量子化値として決定される。残り９画素は、ドットが分配されず、出力値は０となる。図９（ｄ）に示す目標値が１５０の場合、クラス順位と画素順位に従って、１０画素にドットが分配され、各出力値は１５が決定される。残りの５画素にはドットが分配されず、出力値は０が決定される。
【００３７】
以上の通り本実施形態では、ブロックにおける画素値に基づいてクラス分類したクラス順位と、各画素が対応する閾値に基づいて各画素を個別に順位づけした画素順位に基づいて、ドットを分配する順序を決定した。画素値の範囲毎にクラス分類をしているため、画素値が大きいクラスに分類された画素から優先してドットを分配できる。その結果、ブロックにおける画素値の勾配や特徴を考慮して、ドットを分配することができ、鮮鋭性を維持することができる。また、１つのクラスにおいては、閾値に基づいて順位づけられているため、入力の画素値の変化と閾値マトリクスにおける閾値の変動が干渉しにくく、モアレ低減効果を得られる。これは、平坦部や緩やかなグラデーション部においては、プリンタ特性を考慮して定めた閾値マトリクスのドット配置そのものを実現でき、印刷時に安定的な濃度出力を可能とする。
【００３８】
特に、クラス分類における１クラスの範囲を決定する２Ｒの大きさを調整することで、鮮鋭性維持とモアレ低減効果の優先度を制御することができる。具体的には、１クラスの範囲２Ｒの大きさは、入力階調レンジを１つの閾値マトリクスを構成する閾値数で除した大きさとすると、モアレ低減効果と鮮鋭性維持が両立し、画質劣化のない出力画像を得ることができる。一方で、モアレ低減効果を際立たせた出力画像を得たい場合には、１クラスの範囲２Ｒを大きくすれば、画素間で同一のクラスとなる画素が増えるために、入力画素値が影響を及ぼさない画素順位によってドット配置が決まりやすくなり、モアレ低減効果が高まる。また、１クラスの範囲２Ｒを小さくすれば、ブロックにおける画素値の微小な変動に追随してクラス順位が変動するため、入力画像の鮮鋭性維持が容易となる。
【００３９】
なお、本実施形態では、図３に示すフローチャートを実現可能なプログラムを読み出して実行させることで画像処理を実現するソフトウェアを例に説明した。しかしながら、図２に示す構成の一部またはすべてを、専用の画像処理回路として実現することもできる。
【００４０】
また、実施形態１では、ブロックの目標値をブロックにおける各画素の画素値の平均に対するディザ処理により算出したが、他の方法を用いても良い。例えば、処理対象のブロックの各画素の画素値に対して、閾値を用いて量子化した結果を用いて目標値を算出してもよい。あるいは、ブロックにおける各画素の画素値の合計と、目標値とを対応づけたテーブルを作成しておき、テーブルを参照することでブロックにおける各画素の画素値の合計に応じた目標値を導出してもよい。
【００４１】
＜実施形態２＞
実施形態２では、ブロックにおける１画素にドットを分配する度に、処理対象のブロックのクラス分類を再実施することで、閾値マトリクスにより予め定められるドット配置をより多く出力する方法について説明する。なお、実施形態１と同一の構成については、同じ符号を付し、その説明を省略する。
【００４２】
図１０は、実施形態２の画像処理部１０５の構成例を示すブロック図である。また、図１１は画像処理部１０５の動作を示すフローチャートである。本実施形態のクラス決定部２０４は、出力値決定部２０５がドットを分配する画素を１つ選択すると、選択された分配画素の情報が出力値決定部２０５からクラス決定部２０４にフィードバックされ、ブロックのクラス順位を再決定する。これにより実施形態２では、１画素の出力値を決定するたびに、ドットの分配画素候補を決定する画素値の範囲を変更する。図１１に示すフローチャートでは、Ｓ３０９でブロック目標値とブロック内の分配済みの出力値合計を比較し、一致しない場合の分岐先がＳ３０６のクラス順位決定となる。Ｓ３０６においてクラス決定部２０４は、残りの画素のうち次にドットを分配する画素を決定するにあたって、クラス分類を改めて設定する。
【００４３】
図１２は、本実施形態のクラス決定の方法を説明する図である。図１２（ａ）に示すブロックは、図８で説明した画素群と同一の画素群である。また、図１２（ｂ）に示す画素順位は、図７で示した画素順位と同一とする。一度目のクラス決定では、図１２（ｃ）に示すように、画素値をクラス分類のためのクラス評価値とし、ブロック内のクラス評価値の最大値を基準にクラス分類する。図１２（ｃ）では、画素位置ａがクラス評価値の最大値であり、この最大クラス評価値から２Ｒの範囲をクラス０として設定する。そして、クラス０の範囲に存在するクラス評価値を有する画素を特定する。本実施形態の場合、クラス分類は分配画素を決定する度に実施されるため、クラス０の画素のみ特定すればよい。
【００４４】
このようにクラス０を設定すると、最初にクラス０として特定される画素は、画素位置ａ、ｉ及びｌとなる。Ｓ３０７において最初にドットを分配される画素は画素位置ａとなり、画素位置ａの出力値が決定される。画素位置ａの出力値が決定されると、二度目のクラス決定では、一度目にドット分配画素に選択された画素位置ａの情報がクラス分類決定部２０４にフィードバックされる。クラス分類決定部２０４は、処理対象のブロックにおいて画素位置ａを除く画素のうち、最大クラス評価値に基づいて、再度クラス分類が実施される。ここでは、図１２（ｄ）に示すように画素位置ｉが最大クラス評価値となり、画素位置ｉのクラス評価値から２Ｒの範囲をクラス０として設定する。従って、画素位置ｂ、ｉ、ｌ及びｍがクラス０に分類される。このクラス０に含まれるドット分配画素の候補から分配画素として選択される画素は、画素順位が高い画素位置ｂとなる。画素位置ｂは、１度目のクラス分類ではクラス評価値が高くないためクラス０に分類されない。しかしなら、クラス決定を分配画素が決まる度に実施するために２度目のクラス分類では画素位置ｂがクラス０となる。クラス０の画素群においては画素順位に基づいて分配画素が選択されるため、予め閾値マトリクスの特性に応じたドット配置が出現しやすくなる。つまり、ドット集中型の閾値マトリクスを用いた場合、予め設計した所望のドット集中型のドットパターンを得られやすい。一方で、ブロックにおける各画素の画素値に基づいて分類されるクラスを優先的にドット分配するため、クラス評価値が大きくない画素はドットが分配される可能性は低く、鮮鋭性は維持される。図１２（ｅ）は、３度目のクラス分類であるが、画素位置ｂについても分類対象から除かれ、次のクラス０が決定される。最終的な出力結果を図１３に示す。図９に示すものと比較して、画素順位、即ち閾値マトリクスの特性に応じたドット配置が出現しやすくなっていることが確認される。
【００４５】
以上のように、本実施形態では、クラス分類を分配画素が決定する度に更新する例を示した。これにより、閾値マトリクスが規定するドット配置が出現しやすくなる。例えば、電子写真方式の印刷装置は、ドット集中型の方が安定して画像を形成することができる。そのため鮮鋭性を維持しつつ、印刷装置に合わせて設計された閾値マトリクスの特性を反映したドットパターンを作成することで、印刷装置が出力する濃度の安定化を図ることができる。入力画像に閾値マトリクスと干渉する周波数成分が少ない場合には、特に有効な手法となる。
【００４６】
＜実施形態３＞
実施形態３では、クラスごとに分配するドット数を算出し、各クラスでドットを分配する方法について説明する。同クラス内には算出したドット数分のみドットを分配し、下位クラスにもドットを分配する。また、このとき実際にドットを分配した結果得られる出力値と同クラス内の画素値合計の差分を、下位クラスに伝播させる例についても説明する。本実施形態における画像処理装置の構成は、実施形態１及び実施形態２と同一の構成で実現可能であるため、その説明は省略する。
【００４７】
図１４は、実施形態３における出力値決定方法を説明する図である。図１５は、画像処理部１０５における処理の動作を示すフローチャートである。
【００４８】
本実施形態のフローチャートでは、Ｓ３０６において、各画素のクラス順位を決定した後、Ｓ１５００において、クラス内分配ドット数を算出する。クラス内分配ドット数は、各クラスに所属する画素の画素値の合計を１ドットに相当する階調値で除した値とする。クラス内分配ドット数は、式（１）を用いて算出される。
（クラス内分配ドット数）＝（クラス内合計値）÷（１ドットの入力階調相当の階調値）・・・（１）
ここで算出したクラス内分配ドット数と、クラス順位及び画素順位をもとに、Ｓ３０７において分配画素を決定する。例えば、最上位のクラス０からドットを分配する画素を決定していく。このとき、クラスの分配ドット数が２つで、既にドット２つ分の出力値をクラス０内の画素に分配している状態であれば、クラス０の画素は選択されず、下位クラスの画素を選択する。
【００４９】
選択された画素において、Ｓ３０８で画素出力値が決定された後、Ｓ３０９にて、ブロック目標値と既に分配済みの出力値の総和との比較が行われる。一致している場合は、次の処理ブロックに処理が進み、一致していなければ、Ｓ１５０１に進む。
【００５０】
Ｓ１５０１において、選択された分配画素のクラスにおいて既に分配された出力値の合計が、クラス内分配ドット数となったか否かの判定を行う。クラス内分配ドット数となっていない場合は、Ｓ３０７に分岐し、クラス内分配ドット数となった場合は、Ｓ１５０２に進む。
【００５１】
Ｓ１５０２において、式（２）によりクラス内分配ドット数を更新する。
（下位クラスへの伝播値）＝（クラス内画素値合計）−（クラス内分配済み出力値合計）
（下位クラスのクラス内分配ドット数）＝（（クラス内画素値合計）＋（下位クラスへの伝播値））÷（１ドット相当の階調値）・・・（２）
式（２）において、分配画素のクラスにおける画素値合計と、実際に分配済みの出力値合計の差分を算出し、算出した差分を下位クラスへの伝播値とする。下位クラスへの伝播値は、下位クラスの画素値合計に加算され、１ドット相当分の階調値で除算することで、下位クラスのクラス内分配ドット数を更新する。Ｓ１５０２において、クラス内分配ドット数を更新すると、Ｓ３０７に戻り、分配画素を決定する。
【００５２】
上記のように実施形態３では、クラス内で分配ドット数を算出し、このドット数まで分配を実施する。これによりクラス内という局所的な画素値範囲においても、入力画像の階調値が保存され、鮮鋭性維持の効果を優先できる。更に、クラス間における差分値を伝播させることで、クラスを跨って誤差が蓄積されることがなくなり、より入力画像の階調が保存されやすい。
【００５３】
なお、ブロックにおける画素の画素値の平均をブロックの目標値として算出した場合においては、上述した処理フローによって、クラス内分配ドットの合計がブロックの目標値に一致する分配が可能となる。しかしながら、ブロックにおける画素値の平均に対してディザ処理した結果をブロックの目標値と設定した場合や、ブロック平均に対して出力γ補正を行った場合などは、ブロックの目標値とクラス内分配ドット数の合計が一致するとは限らない。ブロック内の分配済みの出力値合計がブロック目標値に一致し、クラス内分配ドット数の合計に足りない場合には、Ｓ３０９において１ブロックの処理を完了させることができる。一方、ブロック内の分配済みの出力値合計がブロック目標値に足りず、全てのクラス内分配ドット数の合計に一致してしまった場合には、高優先度のクラスから順に未分配画素に出力値を再分配すればよい。
【００５４】
なお、分配ドット数の算出を簡便に実施するため、各クラスに所属する画素数に代表値を乗じた値を、クラス内の画素値合計として用いてもよい。この場合クラス代表値となるのは、クラス内の平均値や、クラスの中央値などが当たる。
【００５５】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５６】
２００  画素値取得部
２０１  閾値取得部
２０２  目標値決定部
２０３  画素順位決定部
２０４  クラス決定部
２０５  出力値決定部
【図１】
2019097051.tif 000003
【図２】
2019097051.tif 000004
【図３】
2019097051.tif 000005
【図４】
2019097051.tif 000006
【図５】
2019097051.tif 000007
【図６】
2019097051.tif 000008
【図７】
2019097051.tif 000009
【図８】
2019097051.tif 000010
【図９】
2019097051.tif 000011
【図１０】
2019097051.tif 000012
【図１１】
2019097051.tif 000013
【図１２】
2019097051.tif 000014
【図１３】
2019097051.tif 000015
【図１４】
2019097051.tif 000016
【図１５】
2019097051.tif 000017