(57)【要約】【課題】  ディザ処理において、ｍ単位でまとめて処理を行う場合に、処理速度を維持するためには、ディザマトリクスの幅をｍの倍数にする必要があった。【解決手段】  ディザ処理に使用するディザマトリクスの幅ｗとしてときに、処理実行時にディザマトリクスの幅をｗとｍの最小公倍数に拡大する。【選択図】        図６
2006050299.tif 000002
【特許請求の範囲】
【請求項１】
イメージデータ中の画素値とディザマトリクス中の対応する閾値と比較して２値化処理を行うディザ処理装置であって、複数のディザマトリクスを記憶するディザ記憶装置とディザ記憶装置に記憶されているディザマトリクスの中からディザマトリクスを選択するディザマトリクス選択部から構成され、ディザ処理をまとめて行う単位をｍ、前記選択されたディザマトリクスの幅をｗとした時に、前記選択されたディザマトリクスの幅をｗとｍの最小公倍数に拡大し、拡大したディザマトリクスを使用してディザ処理を行うことを特徴としたディザリング装置。
【請求項２】
イメージデータ中の画素値とディザマトリクス中の対応する閾値と比較して２値化処理を行うディザ処理装置であって、複数のディザマトリクスを記憶するディザ記憶装置とディザ記憶装置に記憶されているディザマトリクスの中からディザマトリクスを選択するディザマトリクス選択部から構成され、選択されたディザマトリクスを用いて１ライン毎に処理を行う際に、ディザ処理をまとめておこう単位をｍ、前記選択されたディザマトリクスの１ラインの幅ｗとしたときに、前記選択されたディザマトリクス１ラインの幅をｗとｍの最小公倍数に拡大することを特徴としたディザリング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディザ法による画像処理の高速化を図ったディザリング装置に関する。
【背景技術】
【０００２】
従来より、プリンタ等の２値の出力装置で階調を持ったイメージデータを２値化する方法の一つとして、ディザ法が用いられている。ディザ法は次のような方法で階調を持ったイメージデータを２値化する。
【０００３】
（１）イメージデータの画素に対応したディザマトリクス上の閾値位置を求める。
【０００４】
処理対処となるイメージデータに対して、ディザマトリクスが繰り返し配置される。ディザマトリクスは、複数の閾値で構成される。イメージデータのサイズの幅Ｗ、高さＨとしディザマトリクスの幅ｗ、高さｈとした場合に（一般的にｗ＜Ｗ、ｈ＜Ｈである）、イメージデータ中の処理する画素を（Ｘ，Ｙ）とするとディザマトリクスの閾値位置（Ｐｘ，Ｐｙ）は、
Ｐｘ＝Ｘ  ｍｏｄ  ｗ
Ｐｙ＝Ｙ  ｍｏｄ  ｈ
により決定される。
【０００５】
（２）画素値と閾値の比較を行い出力を決定する。
【０００６】
イメージデータ中の処理する画素値と、対応する場所のディザマトリクスの閾値を比較して次のような動作を行う。
画素値＞閾値→出力画素を打つ
画素値≦閾値→出力画素を打たない
このように、ディザ法を用いてイメージデータを２値化することをディザリングという。上記で説明したように、ディザ法を行うためには、まずイメージデータ上の座標からそれに対応するディザマトリクス上の閾値の位置を求める必要がある。ここで、２値化するイメージデータの画素位置を（Ｘ，Ｙ）とし、使用するディザマトリクスのサイズを（ＤＳｘ，ＤＳｙ）とし、イメージデータの画素位置に対応したディザマトリクス上の閾値位置を（Ｐｘ，Ｐｙ）とする。
【０００７】
イメージデータ上の座標を（Ｘ，Ｙ）と任意に指定したとき、ディザパターン上の閾値位置（Ｐｘ，Ｐｙ）を求めるには次のような２種類の方法がある。
【０００８】
（１）剰余演算により閾値位置を求める方法
まず、剰余演算による方法では、次の式を用いる。
Ｐｘ＝Ｘ  ｍｏｄ  ＤＳｘ
Ｐｙ＝Ｙ  ｍｏｄ  ＤＳｙ
なお、ｍｏｄは余剰計算である。こうして、閾値位置を求める。
【０００９】
（２）条件分岐により閾値位置を求める方法
また、条件分岐による方法では、Ｘ，Ｙが１増える度に、Ｐｘ，Ｐｙも１増える。しかも、Ｐｘ、Ｐｙは、ＤＳｘ−１、ＤＳｙ−１を最大値とするという条件を利用する。従って、Ｐｘ、Ｐｙを１ずつ増加させ、ＰｘがＤＳｘになった場合およびＰｙがＤＳｙになった場合は、Ｐｘ、Ｐｙを０にする。例えば４×４のディザマトリクスでは、Ｐｘが０〜３の間の値をとるから、Ｐｘが３になった場合、次は０とする。この場合閾値位置の各値について毎回比較演算処理を実行する。
【００１０】
よって（１）、（２）においては、各々の画素に対してディザ処理が行われる毎に（１）では剰余計算、（２）では比較演算処理が実行される。これらの処理は、コストがかかる処理である。
【００１１】
これにとってかわって、閾値位置を求める方法として、特許文献１においては、閾値位置（参考文献ではインデックスと表記されている）を保持する循環配列を作成し、その配列を参照することにより閾値位置を求めている。一般的に、処理にかかるコストは、大きい順に
（１）剰余計算による方法
（２）条件分岐による方法
（３）循環配列による方法
である。特許文献１は、閾値位置を求めるために循環配列を用いディザリングの処理速度を向上させていた。
【特許文献１】特許第３３９４６９３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、特許文献１の方法においても、１画素毎に閾値位置を求めるための配列参照処理を行うため、別の観点からの改良が必要であった。ディザマトリクスの幅が常に一定であるという制限を設ければ、（２）条件分岐による方法を用いて処理の高速化が可能である。
【００１３】
具体的には、条件分岐のための比較演算処理を１画素ごとに行うのではなく、ｍ画素単位で行い、比較演算処理の回数を減らす方法である。しかしながら、この種のディザリング装置においては入力のイメージデータに応じて、異なる幅のディザマトリクスを使用したい場合が多い。そのため、ディザ法においては、入力されたイメージデータ毎に幅の異なるディザマトリクスが使用できかつ高速で動作する必要であった。
【課題を解決するための手段】
【００１４】
本発明は、イメージデータ中の画素値とディザマトリクス中の対応する閾値と比較して２値化処理を行うディザ処理装置であって、複数のディザマトリクスを記憶するディザ記憶装置とディザ記憶装置に記憶されているディザマトリクスの中からディザマトリクスを選択するディザマトリクス選択部から構成され、ディザ処理をまとめて行う単位をｍ（ｍは８の倍数）、前記選択されたディザマトリクスの幅をｗとした時に、前記選択されたディザマトリクスの幅をｗとｍの最小公倍数に拡大し、拡大したディザマトリクスを使用してディザ処理を行うことを特徴とする。
【発明の効果】
【００１５】
本発明によれば、条件分岐判定のための比較演算処理をｍ画素単位でディザ処理の書き込みを行う事により、従来のように１画素毎に比較演算処理を行うディザ法に比べて処理速度を向上させている。また、今使用するディザマトリクスの幅をｗとすると、ディザ処理実行時に使用するディザマトリクスの幅をｗとｍの最小公倍数に拡大することにより、使用するディザマトリクスの大きさに制限を設ける必要がない。
【発明を実施するための最良の形態】
【００１６】
以下本発明を実施するための最良の形態を、実施例により詳しく説明する。
【実施例】
【００１７】
＜第一の具体例＞
図１は、本発明の実施の形態を表すブロック図である。本実施例を説明する前に、ディザマトリクスの幅に制限を設けないディザ処理の例を図２のブロック図を用いて説明する。
【００１８】
ディザマトリクス記憶装置１００には、ディザ処理に使用されるさまざまな幅のディザマトリクス１０１が記憶される。また、ディザ装置１０３は、画像座標記憶部１０６、座標制御部１０７、ディザマトリクス選択部１０８、ディザ座標記憶部１０９、ディザマトリクス記憶部１１０、ディザ処理部１１１を備えている。また、処理対象となるイメージデータ１０２は、階調画像記憶装置１０４に記憶されている。そして、ディザ処理により２値化された処理の結果は２値化画像記憶装置１０５に記憶される。上記座標制御部１０７は、ディザ処理を行うイメージデータ１０２上の座標を管理する部分である。画像座標記憶部１０６は、現在のイメージデータ１０２上のｙ方向の座標を記憶している。ディザ座標記憶部１０９は、現在ディザパターンのディザｙ方向の閾値位置を記憶している。ディザ処理部１１１は、画像座標記憶部１０６に記憶されたｙ座標の位置にあるイメージデータ１ラインとディザ座標記憶部１０９に記憶されたディザｙ方向の閾値位置をもとに取得できるディザマトリクス１ラインを入力として受け取り、１ライン分のディザ処理を行う。
【００１９】
以上の構成のディザ装置は、次のように動作する。図３は、図２の構成のディザ動作を表すフローチャート図である。まず、ディザマトリクス選択部１０８により、ディザマトリクス記憶装置１００に記憶されているディザマトリクスの中から一つを選択する。選択したディザマトリクス１０１をディザマトリクス記憶部に記憶させる（ステップＳ３１）。座標制御部１０７の座標情報を基に、イメージデータ１０２におけるｙ座標位置、ディザマトリクス１０１におけるディザｙ方向の閾値位置がそれぞれ、画像座標記憶部１０６、ディザ座標記憶部１０９に記憶される。ディザ処理部１１１は、画像座標記憶部１０６に記憶されているｙ座標により、該当イメージデータ１ラインを取得する（ステップＳ３２）。次に、ディザ座標記憶部１０９に記憶されているディザｙ方向の閾値位置を基にディザマトリクス１０１の該当する１ラインを取得する（ステップＳ３３）。そして、１ライン分のディザ処理をおこない（ステップＳ３４）、処理結果である２値化画像を２値化画像記憶装置１０５に書き込む（ステップＳ３５）。次に座標制御部１０７は、ｙ座標を更新し、その結果を基に、ディザ座標記憶部１０９は自分が記憶しているディザｙ方向の閾値位置情報を更新し（ステップＳ３６）、画像座標記憶部１０６は、自分が記憶しているイメージデータのｙ座標を更新する（ステップＳ３７）。ステップＳ３８では、イメージデータのｙ座標が最後の値であるかを判断し、最後であれば２値化処理を終了し、そうでなければステップＳ３２に戻る。
【００２０】
次に１ラインのディザ処理の動作について説明するが、本実施例の方法を説明する前に、一般的にディザマトリクスの幅に制限を設けない場合のディザ処理の動作について、フローチャート図４を用いて説明する。ここでは、ディザ処理を８回行い、８ビットの２値化データを生成した後に、データの書き込みを行う、すなわち８画素単位で書き込む場合を説明するが、ｍ画素（ｍは８の倍数）単位としてもよい。ｍを８の倍数としているのは、一般的なＣＰＵは、データバスが８の倍数であるため、８の倍数で処理をおこなった方が高速に動作するためである。また、この例で使用するディザマトリクス２０１は、図９に示すように９×９とし、イメージデータの１ラインの幅は、ｐとする（ｐは８の倍数）とする。
【００２１】
まず、ステップＳ３４で渡された１ラインのイメージデータをディザ処理する動作を説明する。１ラインのイメージデータのｘ座標、１ラインのディザｘ方向の閾値位置を初期化する（ステップＳ４０）。そして、１画素のディザ処理を行い、図示しない１バイトの書き込みメモリに処理結果を書き込む（ステップＳ４１）。前の結果に上書きしないように書き込みメモリを左に１ビットシフトする（ステップＳ４２）。８画素に対して同様の処理を行いステップＳ４４で８番目の画素にディザ処理を行った後に、１バイトの書き込みメモリの内容を２値画像記憶装置１０５に書き込む（ステップＳ４５）。そして、ｐ／８回出力結果を書き込んだかを判断し（ステップＳ４６）、ｐ／８回書き込みが終了したら１ラインのディザ処理を終了する。
【００２２】
次に、１画素をディザ処理する動作を図５のフローチャートを使用して説明する。最初にディザｘ方向の閾値位置が右端であるかを判断する（ステップＳ５１）。今の例では、ディザマトリクスの幅は９であるからディザｘ方向の閾値位置は０〜８の範囲をとりえる。ステップＳ５１においてディザｘ方向の閾値位置が８の場合は、ディザｘ方向の閾値位置を左端に戻す（０にする）（ステップ５２）。そうでない場合は何もせず次に進む。ディザ処理部に現在記憶されているｘ座標によりイメージデータの対象画素を、ディザｘ方向の閾値位置により該当する閾値を取得し、画素値と閾値の比較を行う（ステップＳ５３）。画素値が閾値より大きい場合には、書き込みメモリのＬＳＢに１を立てる（ドットを打つ）。（ステップ５４）そうでない場合は、何もせず次に進む。次に、入力画像のｘ座標を更新し（ステップＳ５５）、ディザｘ方向の閾値位置を更新し（ｘ方向に右１つ移動させる。）（ステップ５６）、１画素のディザ処理が終了する。このように８画素単位にディザ処理を行い書き込みをする場合は、ディザマトリクスの幅が８の倍数でないと、ディザｘ方向の閾値位置が右端に到達しているかの判断（ステップＳ５１）を１画素毎に行う必要があり、ディザ処理の処理速度が低下する。
【００２３】
次に、本実施例について説明する。図１は本実施例の形態を表すブロック図である。図２のブロック図と異なる点は、ディザマトリクス記憶部１１０がない代わりにディザマトリクス拡大処理部１２０、拡大ディザマトリクス記憶部１２１が付加されている点である。ディザマトリクス拡大処理部１２０は、ディザマトリクス選択部１０８により選択されたディザマトリクス１０１をｘ方向に拡大する。現在選択されたディザマトリクスの幅をｗとするとｗとｍ（ｍは８の倍数）の最小公倍数に拡大する。拡大されたディザマトリクスは、拡大ディザマトリクス記憶部１２１に記憶される。ディザ処理部１１１は、画像座標記憶部１０６に記憶されたｙ座標の位置にあるイメージデータ１ラインとディザ座標記憶部１０９に記憶されたディザｙ方向の閾値位置をもとに拡大ディザマトリクス記憶部１２１から取得できる、拡大ディザマトリクス１ラインを入力として受け取り、１ライン分のディザ処理を行う。
【００２４】
以上の構成のディザ装置は、次のように動作する。図８は、図１の構成のディザ動作を表すフローチャート図である。まず、ディザマトリクス選択部１０８により、ディザマトリクス記憶装置１００に記憶されているディザマトリクスの中から一つを選択する（ステップＳ８１）。この例では図１０に示す１２×１２のディザマトリクス２０２を使用する。選択したディザマトリクス２０２をディザマトリクス拡大処理部１２０により拡大する（ステップＳ８２）。選択されたディザマトリクスの幅をｗとするとｗとｍ（ｍは８の倍数）の最小公倍数に拡大する。拡大されたディザマトリクスは、拡大ディザマトリクス記憶部１２１に記憶される。ディザ処理部１１１は、画像座標記憶部１０６に記憶されているｙ座標のイメージデータ１ラインを取得する（ステップＳ８３）。次に、ディザ座標記憶部１０９に記憶されているディザｙ方向の閾値位置を基に拡大ディザマトリクスの該当する１ラインを取得する（ステップＳ８４）。そして、１ライン分のディザ処理をおこない（ステップＳ８５）、処理結果である２値化画像を２値化画像記憶装置１０５に書き込む（ステップＳ８６）。次に座標制御部１０７は、ｙ座標を更新しその結果を基に、ディザ座標記憶部１０９は、自分が記憶しているディザｙ方向の閾値位置情報を更新し（ステップ８７）、画像座標記憶部１０９は、自分が記憶しているイメージデータのｙ座標を更新する（ステップＳ８８）。ステップＳ８９では、イメージデータのｙ座標が最後の値であるかを判断し、最後であれば２値化処理を終了し、そうでなければステップＳ８３に戻る。
【００２５】
次に、本実施例の１ラインのディザ処理の動作について説明する。図６は、本実施例における１ラインのディザ処理の動作を表したフローチャートである。この例においては、使用するディザマトリクス２０２のサイズは、図１０に示すように１２×１２とし、イメージデータの１ラインの幅をｐ（ｐは８の倍数）とする。ディザマトリクス２０２は、ディザマトリクス拡大処理部１２０により、８と１２の最小公倍数である２４に拡大される。拡大後のディザマトリクス２０３のサイズは図１１に示すように２４×１２となる。まず、ステップＳ８３で渡された１ラインのイメージデータをディザ処理する動作を説明する。１ラインのイメージデータのｘ座標、１ラインのディザｘ方向の閾値位置を初期化する（ステップＳ６０）。そして、１画素のディザ処理を行い、図示しない１バイトの書き込みメモリに処理結果を書き込む（ステップＳ６１）前の結果に上書きしないように書き込みメモリを左に１ビットシフトする（ステップＳ６２）。８画素に対して同様の処理を行いステップＳ６４で８番目の画素にディザ処理を行った後に、１バイトの書き込みメモリの内容を２値画像記憶装置１０５に書き込む（ステップ６５）。そして、８画素単位の処理を行ったあとステップＳ６６において、ディザｘ方向の閾値位置が右端であるかを判断する。現在の例では、ディザマトリクス２０２はｘ方向に２４に拡大されているため、ディザマトリクスのディザｘ方向の閾値位置は０〜２３までの範囲をとりえる。ステップ６６においてディザｘ方向の閾値位置が、２３であった場合には、ディザｘ方向の閾値位置を左端に戻す（０にする）（ステップＳ６７）。そうでない場合は、何もせず次に進む。そして、ｐ／８回出力結果を書き込んだかを判断し（ステップＳ６８）、ｐ／８回書き込みが終了したら１ラインのディザ処理を終了し、そうでない場合はステップＳ６１に戻る。
【００２６】
次に、１画素をディザ処理する動作を図７のフローチャートを使用して説明する。最初に、ディザ処理部に現在記憶されているｘ座標によりイメージデータの対象画素を、ディザｘ方向の閾値位置により該当する閾値を取得し、画素値と閾値の比較を行う（ステップＳ７１）。画素値が閾値より大きい場合には、書き込みメモリのＬＳＢに１を立てる（ドットを打つ）（ステップＳ７２）。そうでない場合は、何もせずに次に進む。次に、入力画像のｘ座標を更新し（ステップＳ７３）、ディザｘ方向の閾値位置を更新し（ｘ方向に右１つ移動させる。）（ステップ７４）、１画素のディザ処理が終了する。このように本実施例では、１ラインのディザ処理で使用されるディザマトリクスの大きさが、ｍ（現在の例では８）の倍数になっているため、ｍ回に１回だけ、ディザｘ方向の閾値位置が右端に到達したかの判断を行えばよい。そのため、処理速度は向上する。
【００２７】
＜第二の具体例＞
第一の具体例では、ディザマトリクスをディザマトリクス拡大処理部１２０において行っていた。ディザマトリクス拡大処理部１２０では、現在選択されたディザマトリクスの幅をｗとするとｗとｍ（ｍは８の倍数）の最小公倍数に、ディザマトリクスをｘ方向に対して拡大する。そのため、使用するメモリ量はその分大量に消費される。
【００２８】
そのため、第二の具体例では、１ラインのディザ処理を行うタイミングで、受け取った１ライン分のディザマトリクスの幅をｗとしたときに、１ラインのディザマトリクスの幅をｗとｍ（８の倍数）の最小公倍数に拡大し、そのディザマトリクスを使用してディザ処理を行う。ディザマトリクス選択部で選択されるディザマトリクスがディザマトリクス２０２である場合、ｙ座標が０のときにディザ処理部内で拡大されたディザマトリクス２０４は、図１２に示すようにサイズ２４×１となる。このように、ディザマトリクス拡大処理を１ラインのディザ処理内で行うことにより使用するメモリ量を少なくすることができる。
【図面の簡単な説明】
【００２９】
【図１】第一の具体例のディザ装置ブロック図である。
【図２】従来のディザ装置ブロック図である。
【図３】従来のディザ処理の動作を表すフローチャート図である。
【図４】従来の１ラインのディザ処理の動作を表すフローチャート図である。
【図５】従来の１画素のディザ処理の動作を表すフローチャート図である。
【図６】第一の具体例のディザ処理の動作を表すフローチャート図である。
【図７】第一の具体例の１ラインのディザ処理の動作を表すフローチャート図である。
【図８】第一の具体例の１画素のディザ処理の動作を表すフローチャート図である。
【図９】９×９のディザマトリクスを表す図である。
【図１０】１２×１２のディザマトリクスを表す図である。
【図１１】２４×１２のディザマトリクスを表す図である。
【図１２】２４×１のディザマトリクスを表す図である。
【符号の説明】
【００３０】
１００  ディザマトリクス記憶装置
１０１  ディザマトリクス
１０２  イメージデータ
１０３  ディザ装置
１０４  階調画像記憶装置
１０５  ２値画像記憶装置
１０６  画像座標記憶部
１０７  座標制御部
１０８  ディザマトリクス選択部
１０９  ディザ座標記憶部
１１０  ディザマトリクス記憶部
１１１  ディザ処理部
１２０  ディザマトリクス拡大部
１２１  拡大ディザマトリクス記憶部
【図１】
2006050299.tif 000003
【図２】
2006050299.tif 000004
【図３】
2006050299.tif 000005
【図４】
2006050299.tif 000006
【図５】
2006050299.tif 000007
【図６】
2006050299.tif 000008
【図７】
2006050299.tif 000009
【図８】
2006050299.tif 000010
【図９】
2006050299.tif 000011
【図１０】
2006050299.tif 000012
【図１１】
2006050299.tif 000013
【図１２】
2006050299.tif 000014