(57)【要約】【課題】  処理対象画素の周囲の画素値から閾値を決定することで低濃度の領域においてドット形成の遅延が発生するのを防止する。【解決手段】  入力画像の処理対象画素を量子化して出力する画像処理装置において、入力画像の処理対象画素の周囲画素の値に応じて量子化の閾値を決定し、その閾値を用いて入力画像の処理対象画素を量子化する。そして、量子化の際に発生する量子化誤差を処理対象画素の未処理の周囲画素に拡散する。【選択図】      図７
2007195226.tif 000002
【特許請求の範囲】
【請求項１】
入力画像の処理対象画素を量子化して出力する画像処理装置において、
入力画像の処理対象画素の周囲画素の値に応じて量子化の閾値を決定する閾値決定手段と、
決定された閾値を用いて前記入力画像の処理対象画素を量子化する量子化手段と、
前記量子化の際に発生する量子化誤差を前記処理対象画素の未処理の周囲画素に拡散する拡散手段とを有することを特徴とする画像処理装置。
【請求項２】
前記閾値決定手段は、前記周囲画素の値の平均値を量子化の閾値とすることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記閾値決定手段は、前記周囲画素の値の重み付け平均値を量子化の閾値とすることを特徴とする請求項１に記載の画像処理装置。
【請求項４】
入力画像の処理対象画素を量子化して出力する画像処理装置の処理方法であって、
入力画像の処理対象画素の周囲画素の値に応じて量子化の閾値を決定する閾値決定工程と、
決定された閾値を用いて前記入力画像の処理対象画素を量子化する量子化工程と、
前記量子化の際に発生する量子化誤差を前記処理対象画素の未処理の周囲画素に拡散する拡散工程とを有することを特徴とする画像処理装置の処理方法。
【請求項５】
前記決定工程は、前記周囲画素の値の平均値を量子化の閾値とすることを特徴とする請求項４に記載の画像処理装置の処理方法。
【請求項６】
前記決定工程は、前記周囲画素の値の重み付け平均値を量子化の閾値とすることを特徴とする請求項４に記載の画像処理装置の処理方法。
【請求項７】
請求項４乃至６の何れか１項に記載の画像処理装置の処理方法をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力画像の処理対象画素を量子化して出力する画像処理装置及びその処理方法に関するものである。
【背景技術】
【０００２】
従来より、プリンタ、複写機、ファクシミリ等の画像処理装置において、階調再現性の高い疑似中間調処理方式として、誤差拡散法が広く用いられている。
【０００３】
誤差拡散法は、1975年にFloyd及びSteinbergにより「An Adaptive Algorithm for Spatial Gray Scale」SID 75 Digestという論文に開示されている方法である。この方法は、処理対象画素の多値画像データを２値化し、その２値化レベルと２値化前の多値画像データとの誤差に所定の重み付けを行い、処理対象画素の近傍の各画素データに加算するものである。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来例では、誤差拡散法を用いて擬似中間調処理を行った場合、図１に示すように、低濃度の領域の上端付近等でドットの全く打たれない部分が発生し、それが画像の品位を著しく低下させるという欠点があった。
【０００５】
この画像濃度の低い部分で全くドットが打たれない原因としては、以下のことが考えられる。
【０００６】
誤差拡散法を用いて画像濃度の低い部分を２値化した場合、２値化時に生じる正の誤差は負の誤差の絶対値よりかなり小さくなる。例えば、入力画像が０から２５５の整数値で表現されていたとき、画素値１の領域を２値化した場合、出力画素値が０となるドットでは誤差の値が１（１−０）となるのに対し、出力画素値が２５５となるドットでは誤差の値が−２５４（１−２５５）となる。
【０００７】
そのため、処理対象画素値に累積誤差を加算した値が、２値化の閾値を越えるような値になるまでに必要な画素数が多くなり、低濃度の領域においてドット形成の遅延が発生する。
【０００８】
本発明は、処理対象画素の周囲の画素値から閾値を決定することで低濃度の領域においてドット形成の遅延が発生するのを防止することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、入力画像の処理対象画素を量子化して出力する画像処理装置において、入力画像の処理対象画素の周囲画素の値に応じて量子化の閾値を決定する閾値決定手段と、決定された閾値を用いて前記入力画像の処理対象画素を量子化する量子化手段と、前記量子化の際に発生する量子化誤差を前記処理対象画素の未処理の周囲画素に拡散する拡散手段とを有することを特徴とする。
【００１０】
また、本発明は、入力画像の処理対象画素を量子化して出力する画像処理装置の処理方法であって、入力画像の処理対象画素の周囲画素の値に応じて量子化の閾値を決定する閾値決定工程と、決定された閾値を用いて前記入力画像の処理対象画素を量子化する量子化工程と、前記量子化の際に発生する量子化誤差を前記処理対象画素の未処理の周囲画素に拡散する拡散工程とを有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、処理対象画素の周囲の画素値から閾値を決定することで低濃度の領域においてドット形成の遅延が発生するのを防止することができる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
【００１３】
［第１の実施形態］
図２は、第１の実施形態による画像処理装置の構成を示すブロック図である。同図において、２０１は入力端子であり、画素データを入力する。２０２は累積誤差加算部であり、入力端子２０１からの画素データに後述する誤差メモリからの誤差値を加算する。２０３は固定閾値設定端子であり、量子（２値）化の閾値を設定する。２０４は量子（２値）化部であり、固定閾値設定端子２０３により設定された閾値に基づき累積誤差加算部２０２からの画素データを量子（２値）化する。
【００１４】
２０５は出力端子であり、誤差拡散処理された画素データを出力する。２０６は誤差演算部であり、累積誤差加算部２０２からの画素データと量子（２値）化された画素値との差分、即ち量子化誤差を演算する。２０７は誤差拡散部であり、後述する拡散係数に従って誤差を拡散する。２０８は誤差メモリであり、誤差拡散部２０７から拡散された誤差を累積して格納する。２０９は拡散係数切替部であり、誤差の拡散係数を切り替える。
【００１５】
次に、図２に示す画像処理装置における誤差拡散処理の動作について、図３に示すフローチャートに従って以下に説明する。
【００１６】
まず、図示しない画像走査部により画像が順次走査され、各画素データが入力端子２０１より入力される（ステップＳ３０１）。ここで、画像の走査は、画像領域の左上画素から開始され、方向に一画素毎に進み、右端に達すると一画素下の左端画素から順に右方向に進み、右下画素まで行われる。次に、累積誤差加算部２０２において、入力画素データに誤差メモリ２０８の画素位置に対応する値が加算される（ステップＳ３０２）。
【００１７】
図４は、図２に示す誤差メモリ２０８の詳細を示す図である。この誤差メモリ２０８は１個の記憶領域Ｅ０と画像の横画素数Ｗと同数の記憶領域Ｅ（Ｗ）とがあり、詳細は後述する方法で量子化誤差が格納される。尚、誤差メモリ２０８は処理開始前にすべて初期値０で初期化されているものとする。
【００１８】
上述の累積誤差加算部２０２では、入力画素データに横画素位置ｘに対応した誤差メモリＥ（ｘ）の値が加えられる。即ち、入力画素データをＩ、誤差加算後の画素データをＩ’とすれば、次式のようになる。
【００１９】
Ｉ’＝Ｉ＋Ｅ（ｘ）
次に、量子化部２０４において、誤差加算後の画素データＩ’と固定閾値設定端子２０３により設定された閾値とを比較し、出力画素値を決定する（ステップＳ３０３）。ここで、閾値は通常、最大入力画素値と最小入力画素値の中央値に設定される。即ち、入力画素値が０から２５５の範囲の整数値とすれば、閾値Ｔは１２７乃至１２８に設定される。出力画素値Ｏは次式により決定される。
【００２０】
Ｏ＝０    （Ｉ’＜Ｔ）
Ｏ＝２５５（Ｉ’≧Ｔ）
次に、誤差演算部２０６において、誤差加算後の画素データＩ’と出力画素値との差分、即ち、量子化誤差Ｅを計算する（ステップＳ３０４）。
【００２１】
Ｅ＝Ｉ’−Ｏ
次に、拡散係数切替部２０９が、誤差Ｅの値に従って（ステップＳ３０５）、誤差拡散部２０７に対して誤差拡散係数を設定する。即ち、誤差値Ｅがゼロ又は正数の場合は、図５に示す拡散係数を設定し（ステップＳ３０６）、誤差値Ｅが負数の場合は、図６に示す拡散係数を設定する（ステップＳ３０７）。
【００２２】
図５に示す（Ａ）は、処理対象画素位置ｘが右端の位置（ｘ＜Ｗ）でないときの誤差拡散係数である。また、同（Ｂ）は、右端の位置（ｘ＝Ｗ）のときの誤差拡散係数である。図５に示す５０１は処理対象画素、５０２，５０３は誤差が拡散される周囲の位置とその誤差拡散係数を表している。
【００２３】
図６に示す（Ａ）は、処理対象画素位置ｘが左端と右端の間（１＜ｘ＜Ｗ）のときの誤差拡散係数であり、同（Ｂ）は左端の位置（ｘ＝１）のときの誤差拡散係数、そして、同（Ｃ）は右端の位置（ｘ＝Ｗ）のときの誤差拡散係数である。図中の６０１は処理対象画素、６０２〜６１０は誤差が拡散される周囲の位置とその誤差拡散係数を表している。
【００２４】
次に、誤差拡散部２０７において、設定された拡散係数に従って誤差Ｅの拡散処理が行われる。ここで、誤差値Ｅがゼロ又は正数の場合、図５に示す誤差拡散係数により、処理対象画素位置ｘに応じて以下のように誤差拡散処理が行われる（ステップＳ３０８）。
【００２５】
Ｅ（ｘ＋１）←Ｅ（ｘ＋１）＋Ｅ×１（Ｅ≧０かつｘ＜Ｗ）
Ｅ（ｘ）←Ｅ０                    （Ｅ≧０かつｘ＜Ｗ）
Ｅ（ｘ）←Ｅ０＋Ｅ×１            （Ｅ≧０かつｘ＝Ｗ）
Ｅ０←０                          （Ｅ≧０）
一方、誤差値Ｅが負数の場合、図６に示す誤差拡散係数により、処理対象画素位置ｘに応じて以下のように誤差拡散処理が行われる（ステップＳ３０９）。
【００２６】
Ｅ（ｘ＋１）←Ｅ（ｘ＋１）＋Ｅ×７／１６（Ｅ＜０かつｘ＜Ｗ）
Ｅ（ｘ−１）←Ｅ（ｘ−１）＋Ｅ×３／１６（Ｅ＜０かつｘ＞１）
Ｅ（ｘ）←Ｅ０＋Ｅ×５／１６            （Ｅ＜０かつ１＜ｘ＜Ｗ）
Ｅ（ｘ）←Ｅ０＋Ｅ×８／１６            （Ｅ＜０かつｘ＝１）
Ｅ（ｘ）←Ｅ０＋Ｅ×１３／１６          （Ｅ＜０かつｘ＝Ｗ）
Ｅ０←Ｅ×１／１６                      （Ｅ＜０かつｘ＜Ｗ）
Ｅ０←０                                （Ｅ＜０かつｘ＝Ｗ）
上述の処理により、１画素分の誤差拡散処理が完了する。
【００２７】
第１の実施形態によれば、正の誤差の拡散範囲を負の誤差の拡散範囲に対して狭くすることで、入力画素値が小さい時の正の誤差の蓄積を加速し、誤差加算後の入力画素データが閾値を越えるまでの距離を縮めることができる。その結果、入力画素値が小さい領域でもドットが全く打たれない領域が発生することを防ぐことができる。
【００２８】
［第２の実施形態］
次に、図面を参照しながら本発明に係る第２の実施形態を詳細に説明する。
【００２９】
第２の実施形態では、入力画像の処理対象画素の周囲画素の値に応じて量子化の閾値を決定し、量子化した際に発生する量子化誤差を拡散するものである。
【００３０】
図７は、第２の実施形態による画像処理装置の構成を示すブロック図である。同図において、７０１は画素当たり８ビットの階調情報を持つ入力画像、７０２は２値化の閾値を決定するためのフィルタである。また、７０３は入力画像７０１の画素値と累積誤差の和を求める加算器、７０４は加算器７０３の出力と閾値とを比較し、出力画素値を決定する量子化器、７０５は加算器７０３の出力と出力画素値との差を求める誤差計算装置である。更に、７０６は累積誤差を記憶する誤差バッファ、７０７は画素当たり１ビットの階調情報を持つ出力画像である。
【００３１】
次に、図７に示す画像処理装置における誤差拡散処理の動作について、図８に示すフローチャートに従って以下に説明する。
【００３２】
まず、フィルタ７０２において、入力画像７０１の処理対象画素の周囲の画素値から閾値を決定する（ステップＳ８０１）。閾値決定の方法としては、例えば処理対象画素の周囲の８画素の平均値とする。即ち、位置（ｘ，ｙ）の画素値をＧ（ｘ，ｙ）とすれば、処理対象画素位置（Ｉ，Ｊ）に対する閾値ＴＨは次式で与えられる。
【００３３】
ＴＨ＝｛Ｇ（Ｉ−１，Ｊ−１）＋Ｇ（Ｉ，Ｊ−１）＋Ｇ（Ｉ＋１，Ｊ−１）          ＋Ｇ（Ｉ−１，Ｊ）＋Ｇ（Ｉ＋１，Ｊ）＋Ｇ（Ｉ−１，Ｊ＋１）
＋Ｇ（Ｉ，Ｊ＋１）＋Ｇ（Ｉ＋１，Ｊ＋１）｝／８
次に、加算器７０３により入力画像７０１の画素値Ｇと誤差バッファ７０６の累積誤差値Ｅとを加算する（ステップＳ８０２）。次に、量子化部７０４により、フィルタ７０２で算出された閾値と累積誤差値Ｅが加算された画素値とを比較し、出力画素値を決定する（ステップＳ８０３）。ここで、出力画素値Ｈは次式で与えられる。
【００３４】
Ｈ＝２５５（Ｇ＋Ｅ＞ＴＨ）
Ｈ＝０    （Ｇ＋Ｅ≦ＴＨ）
次に、誤差計算装置７０５により、上述の累積誤差値Ｅが加算された画素値と出力画素値Ｈとから誤差値Ｅrrorを求め、拡散係数に従って誤差バッファ７０６に誤差を保存する（ステップＳ８０４）。ここで、誤差拡散処理は次式によって表される。
【００３５】
Ｅrror＝（Ｇ＋Ｅ）−Ｈ
Ｅ（Ｉ＋１，Ｊ）←Ｅ（Ｉ＋１，Ｊ）＋Ｅrror／２
Ｅ（Ｉ，Ｊ＋１）←Ｅ（Ｉ，Ｊ＋１）＋Ｅrror／２
以上の処理をすべての画素について行うことにより、擬似中間調画像が得られる。
【００３６】
このように、処理対象画素の周囲の平均値を閾値として出力画素値を決定するため、低濃度の領域において閾値が小さくなり、ドット生成の遅延が生じることがない。
【００３７】
尚、第２の実施形態では、処理対象画素の周囲８画素の平均値を閾値としたが、これを処理対象画素周囲の重み付けした平均値としても良い。重み付けの係数としては、例えば図９に示すような値を用いることができる。
【００３８】
何れも、中心が処理対象画素位置に対応し、各マス目に記入した値が重み付け係数である。図９に示す９０１のフィルタでは処理対象画素を含む周囲９画素の平均値が閾値となる。また、９０２のフィルタでは中心からの距離に応じて重み付けした平均値が閾値となる。そして、９０３のフィルタでは既に処理済の画素値のみから閾値を求めることができる。
【００３９】
また、誤差の拡散範囲及び係数も第２の実施形態に限定されるものではなく、Floyd及びSteinbergにより示された係数等、他のものを用いることもできる。
【００４０】
以上説明したように、第２の実施形態によれば、処理対象画素の周囲の画素値から閾値を決定することにより低濃度の領域においてドット形成の遅延を生じることなく中間調処理を行うことが可能である。
【００４１】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インターフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用しても良い。
【００４２】
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
【００４３】
この場合、コンピュータ読み取り可能な記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【００４４】
このプログラムコードを供給するための記録媒体として、例えばフレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００４５】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合である。
【００４６】
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００４７】
【図１】従来例による処理画像の一例を示す図である。
【図２】第１の実施形態による画像処理装置の構成を示すブロック図である。
【図３】第１の実施形態による誤差拡散処理を示すフローチャートである。
【図４】図２に示す誤差メモリ２０８の詳細を示す図である。
【図５】正の誤差に対する拡散係数の一例を示す図である。
【図６】負の誤差に対する拡散係数の一例を示す図である。
【図７】第２の実施形態による画像処理装置の構成を示すブロック図である。
【図８】第２の実施形態による誤差拡散処理を示すフローチャートである。
【図９】閾値を求めるためのフィルタの例を示す図である。
【符号の説明】
【００４８】
２０１  画素データ入力端子
２０２  累積誤差加算部
２０３  固定閾値設定端子
２０４  量子化部
２０５  画像データ出力端子
２０６  誤差演算部
２０７  誤差拡散部
２０８  誤差メモリ
２０９  拡散係数変更部
【図１】
2007195226.tif 000003
【図２】
2007195226.tif 000004
【図３】
2007195226.tif 000005
【図４】
2007195226.tif 000006
【図５】
2007195226.tif 000007
【図６】
2007195226.tif 000008
【図７】
2007195226.tif 000009
【図８】
2007195226.tif 000010
【図９】
2007195226.tif 000011