(57)【要約】【課題】誤差拡散処理の際の演算誤差の影響を低減しつつ、必要となるバッファメモリの容量を削減する。【解決手段】量子化回路４は、入力画像データを量子化し、出力コードを出力する。逆量子化回路５と減算器６により、量子化回路４で発生した量子化誤差を算出する。算出された量子化誤差がバッファ８に格納される。バッファ８は量子化誤差を格納できるサイズがあればよいので従来よりもサイズを削減できる。拡散フィルタ９はバッファ８に格納されている量子化誤差などを用いて量子化誤差を拡散する。ラッチ３とビット結合器１は、誤差拡散処理による演算誤差が次の入力画像データに与える影響を低減するために役立つ。【選択図】　図１
2004096709.tif 000002
【特許請求の範囲】
【請求項１】
入力画像データを量子化する量子化手段と、
前記量子化手段の量子化処理により発生した量子化誤差を算出する算出手段と、
前記算出された量子化誤差を格納するバッファと、
前記バッファに格納されている第１の画素の量子化誤差と、前記算出手段により算出された第２の画素の量子化誤差とに少なくとも基づいて、量子化誤差を拡散する誤差拡散手段と、
前記誤差拡散手段による演算誤差が次の入力画像データに与える影響を低減する低減手段と
を備える画像処理装置。
【請求項２】
前記低減手段は、前記誤差拡散手段により量子化誤差を拡散すべく生成された補正値の小数部を次の入力画像データの下位ビット側に結合する結合手段をさらに含む請求項１に記載の画像処理装置。
【請求項３】
前記補正値を次の画素以降に伝播させることが不適当な場合には、該補正値の伝播を阻止する阻止手段をさらに含むことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記補正値の小数部を保持する保持手段と、
前記保持手段に保持されている補正値の小数部を次の入力画像データの下位ビット側に結合することが不適当な場合に、前記保持手段に保持されている小数部をクリアするクリア手段と、
をさらに含む請求項２に記載の画像処理装置。
【請求項５】
入力画像の走査方向が反転された場合には、前記クリア手段のクリア処理を制限する処理制限手段をさらに備えることを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記不適当な場合とは、注目画素がラインの先頭画素である場合、注目画素が入力画像の下限レベルの値を有する場合又は注目画素が入力画像の上限レベルの値を有する場合の少なくとも１つが含まれていることを特徴とする請求項３乃至請求項５の何れか１項に記載の画像処理装置。
【請求項７】
前記算出手段により算出された量子化誤差を所定範囲内の数値へと制限する数値制限手段をさらに備える請求項１乃至請求項６の何れか１項に記載の画像処理装置。
【請求項８】
注目画素の画像データをビット拡張するビット拡張手段と、
前記ビット拡張された画像データを補正する補正手段と、
前記補正された画像データの整数部を量子化する量子化手段と、
前記量子化手段により発生する量子化誤差を保持する保持手段と、
前記保持手段により保持されている第１の量子化誤差と、前記注目画素に関する第２の量子化誤差とに少なくとも基づいて、前記補正手段により利用される補正値を生成する補正値生成手段と、
前記ビット拡張手段のビット拡張処理において、次の画像データの下位ビット側へと結合される前記補正値の少数部を格納する格納手段と、
を備える画像処理装置。
【請求項９】
入力された画像データの上位ビットを量子化する量子化手段と、
前記量子化手段の量子化処理により発生した量子化誤差を算出する算出手段と、
前記算出された量子化誤差を格納するバッファと、
前記バッファに格納されている第１の画素の量子化誤差と、前記算出手段により算出された第２の画素の量子化誤差とに少なくとも基づいて、第３の画素の画像データを誤差拡散する誤差拡散手段と、
前記誤差拡散された画像データの所定ビット以下の値を保持する保持手段と、前記保持されている値の整数部を、入力された画像データへと加算する加算手段と、
前記保持されている値の小数部を、前記整数部を加算された画像データの下位ビット側に結合して前記量子化手段へと出力するビット結合手段と、
を備える画像処理装置。
【請求項１０】
前記算出手段は、算出された量子化誤差を所定範囲に制限して前記バッファへと出力する数値制限手段を備える請求項９に記載の画像処理装置。
【請求項１１】
前記量子化誤差を算出する際に利用される量子化代表値の最大値を、入力される画像データの最大値以上に設定することを特徴とする請求項９又は請求項１０に記載の画像処理装置。
【請求項１２】
前記量子化誤差を算出する際に利用される量子化代表値のステップ幅を２のべき乗の一定値にすることを特徴とする請求項１１に記載の画像処理装置。
【請求項１３】
前記保持されている値を次の画素以降に伝播させることが不適当な場合には、該保持されている値の伝播を阻止する阻止手段をさらに含むことを特徴とする請求項９乃至請求項１２の何れか１項に記載の画像処理装置。
【請求項１４】
前記阻止手段は、
前記不適当な場合に、前記保持手段に保持されている値をクリアするクリア手段を含む請求項１３に記載の画像処理装置。
【請求項１５】
入力画像の走査方向が反転された場合には、前記クリア手段のクリア処理を制限する処理制限手段をさらに備えることを特徴とする請求項１４に記載の画像処理装置。
【請求項１６】
前記不適当な場合とは、注目画素がラインの先頭画素である場合、注目画素が入力画像の下限レベルの値を有する場合又は注目画素が入力画像の上限レベルの値を有する場合の少なくとも１つが含まれていることを特徴とする請求項１３乃至請求項１５の何れか１項に記載の画像処理装置。
【請求項１７】
入力画像の下限レベル値を有する画素を検出する第１の検出手段と、
前記入力画像の下限レベル値を有する画素が検出されると、当該画素に関する出力コードとして、量子化代表値が最小となるような出力コードを出力する第１のコード出力手段と、
をさらに備える請求項９乃至請求項１６の何れか１項に記載の画像処理装置。
【請求項１８】
入力画像の上限レベル値を有する画素を検出する第２の検出手段と、
前記入力画像の上限レベル値を有する画素が検出されると、当該画素に関する出力コードとして、量子化代表値が最大となるような出力コードを出力する第２のコード出力手段と、
をさらに備える請求項９乃至請求項１６の何れか１項に記載の画像処理装置。
【請求項１９】
前記下限レベル値又は上限レベル値を有する画素が検出されると、当該画素に関する量子化誤差を０に置換する置換手段を備える請求項９乃至請求項１８の何れか１項に記載の画像処理装置。
【請求項２０】
入力された画像データを量子化するステップと、
前記量子化により発生した量子化誤差を算出するステップと、
前記算出された量子化誤差をバッファに格納するステップと、
前記バッファに格納されている第１の画素の量子化誤差と、前記算出された第２の画素の量子化誤差とに少なくとも基づいて、誤差拡散を実行するステップと、
前記誤差拡散による演算誤差が次の入力画像データに与える影響を低減するステップと
を備える画像処理方法。
【請求項２１】
前記低減のステップは、前記誤差拡散により量子化誤差を拡散すべく生成された補正値の小数部を次の入力画像データの下位ビット側へと結合するステップを含む請求項２０に記載の画像処理方法。
【請求項２２】
前記補正値を次の画素以降に伝播させることが不適当な場合に、該補正値の伝播を阻止するステップをさらに含むことを特徴とする請求項２１に記載の画像処理方法。
【請求項２３】
前記補正値の小数部を保持するステップと、
前記保持されている補正値の小数部を次の入力画像データの下位ビット側に結合することが不適当な場合に、前記保持ステップに保持されている小数部をクリアするステップと、
をさらに含む請求項２１に記載の画像処理方法。
【請求項２４】
入力画像の走査方向が反転された場合には、前記クリアの処理を制限するステップをさらに備えることを特徴とする請求項２３に記載の画像処理方法。
【請求項２５】
前記不適当な場合とは、注目画素がラインの先頭画素である場合、注目画素が入力画像の下限レベルの値を有する場合又は注目画素が入力画像の上限レベルの値を有する場合の少なくとも１つが含まれていることを特徴とする請求項２２乃至請求項２４の何れか１項に記載の画像処理方法。
【請求項２６】
前記算出ステップにより算出された量子化誤差を所定範囲内の数値へと制限するステップをさらに備える請求項２０乃至請求項２５の何れか１項に記載の画像処理方法。
【請求項２７】
注目画素の画像データをビット拡張するステップと、
前記ビット拡張された画像データを補正するステップと、
前記補正された画像データの整数部を量子化するステップと、
前記量子化により発生する量子化誤差を保持するステップと、
前記保持保持されている第１の量子化誤差と、前記注目画素に関する第２の量子化誤差とに少なくとも基づいて、前記補正のステップにより利用される補正値を生成するステップと、
前記ビット拡張のステップにおいて次の画像データの下位ビット側へと結合される前記補正値の少数部を格納するステップと、
を備える画像処理方法。
【請求項２８】
入力された画像データの上位ビットを量子化するステップと、
前記量子化処理により発生した量子化誤差を算出するステップと、
前記算出された量子化誤差をバッファに格納するステップと、
前記バッファに格納されている第１の画素の量子化誤差と、前記算出された第２の画素の量子化誤差とに少なくとも基づいて、第３の画素の画像データを誤差拡散するステップと、
前記誤差拡散された画像データの所定ビット以下の値を保持するステップと、前記保持されている値の整数部を、入力された画像データへと加算するステップと、
前記保持されている値の小数部を、前記整数部を加算された画像データの下位ビット側に結合して出力するステップと、
を備える画像処理方法。
【請求項２９】
前記算出のステップは、前記算出された量子化誤差を所定範囲に制限して前記バッファへと出力するステップを備える請求項２８に記載の画像処理方法。
【請求項３０】
前記量子化誤差を算出する際に利用される量子化代表値の最大値を、入力される画像データの最大値以上に設定することを特徴とする請求項２８又は請求項２９に記載の画像処理方法。
【請求項３１】
前記量子化誤差を算出する際に利用される量子化代表値のステップ幅を２のべき乗の一定値にすることを特徴とする請求項３０に記載の画像処理方法。
【請求項３２】
前記保持されている値を次の画素以降に伝播させることが不適当な場合には、該保持されている値の伝播を阻止するステップをさらに含むことを特徴とする請求項２８乃至請求項３１の何れか１項に記載の画像処理方法。
【請求項３３】
前記阻止のステップは、前記不適当な場合に、前記保持ステップに保持されている値をクリアするステップを含む請求項３２に記載の画像処理方法。
【請求項３４】
入力画像の走査方向が反転された場合に前記クリア処理を制限するステップをさらに備えることを特徴とする請求項３３に記載の画像処理方法。
【請求項３５】
前記不適当な場合とは、注目画素がラインの先頭画素である場合、注目画素が入力画像の下限レベルの値を有する場合又は注目画素が入力画像の上限レベルの値を有する場合の少なくとも１つが含まれていることを特徴とする請求項３２乃至請求項３４の何れか１項に記載の画像処理方法。
【請求項３６】
入力画像の下限レベル値を有する画素を検出するステップと、
前記入力画像の下限レベル値を有する画素が検出されると、当該画素に関する出力コードとして、量子化代表値が最小となるような出力コードを出力するステップと、
をさらに備える請求項２８乃至請求項３５の何れか１項に記載の画像処理方法。
【請求項３７】
入力画像の上限レベル値を有する画素を検出するステップと、
前記入力画像の上限レベル値を有する画素が検出されると、当該画素に関する出力コードとして、量子化代表値が最大となるような出力コードを出力するステップと、
をさらに備える請求項２８乃至請求項３５の何れか１項に記載の画像処理方法。
【請求項３８】
前記下限レベル値又は上限レベル値を有する画素が検出されると、当該画素に関する量子化誤差を０に置換するステップをさらに備える請求項２８乃至請求項３７の何れか１項に記載の画像処理方法。
【請求項３９】
入力された画像データを量子化するステップと、
前記量子化により発生した量子化誤差を算出するステップと、
前記算出された量子化誤差をバッファに格納するステップと、
前記バッファに格納されている第１の画素の量子化誤差と、前記算出された第２の画素の量子化誤差とに少なくとも基づいて、誤差拡散を実行するステップと、
前記誤差拡散による演算誤差が次の入力画像データに与える影響を低減するステップと
をコンピュータに実行させるための画像処理プログラム。
【請求項４０】
注目画素の画像データをビット拡張するステップと、
前記ビット拡張された画像データを補正するステップと、
前記補正された画像データの整数部を量子化するステップと、
前記量子化により発生する量子化誤差を保持するステップと、
前記保持保持されている第１の量子化誤差と、前記注目画素に関する第２の量子化誤差とに少なくとも基づいて、前記補正のステップにより利用される補正値を生成するステップと、
前記ビット拡張のステップにおいて次の画像データの下位ビット側へと結合される前記補正値の少数部を格納するステップと、
をコンピュータに実行させるための画像処理プログラム。
【請求項４１】
入力された画像データの上位ビットを量子化するステップと、
前記量子化処理により発生した量子化誤差を算出するステップと、
前記算出された量子化誤差をバッファに格納するステップと、
前記バッファに格納されている第１の画素の量子化誤差と、前記算出された第２の画素の量子化誤差とに少なくとも基づいて、第３の画素の画像データを誤差拡散するステップと、
前記誤差拡散された画像データの所定ビット以下の値を保持するステップと、前記保持されている値の整数部を、入力された画像データへと加算するステップと、
前記保持されている値の小数部を、前記整数部を加算された画像データの下位ビット側に結合して出力するステップと、
をコンピュータに実行させるための画像処理プログラム。
【請求項４２】
直前画素の量子化誤差が０であることを検出する手段と、
前記直前画素の量子化誤差が０であると検出されると、該画素に関する誤差拡散係数を変更する変更手段と
をさらに備える請求項９乃至請求項１９の何れか１項に記載の画像処理装置。
【請求項４３】
前記変更手段は、上のラインの拡散係数の割合が大きくなるように変更することを特徴とする請求項４２に記載の画像処理装置。
【請求項４４】
入力画像データと該入力画像データに最も近い量子化代表値との差分を算出する手段と、
前記差分に応じて誤差拡散係数を変更する変更手段と
をさらに備える請求項９乃至請求項１９の何れか１項に記載の画像処理装置。
【請求項４５】
前記変更手段は、上記差分が小さくなるに従って上のラインの拡散係数の割合が大きくなるように変更することを特徴とする請求項４４に記載の画像処理装置。
【請求項４６】
直前画素の量子化誤差が０であることを検出するステップと、
前記直前画素の量子化誤差が０であると検出されたとき、該画素に関する誤差拡散係数を変更するステップとをさらに備える請求項２８乃至請求項３８の何れか１項に記載の画像処理方法。
【請求項４７】
前記変更ステップは、上のラインの拡散係数の割合が大きくなるように変更することを特徴とする請求項４６に記載の画像処理装置。
【請求項４８】
入力画像データと該入力画像データに最も近い量子化代表値との差分を算出するステップと、
前記差分に応じて誤差拡散係数を変更するステップと
をさらに備える請求項２８乃至請求項３８の何れか１項に記載の画像処理装置。
【請求項４９】
前記変更ステップは、前記差分が小さくなるに従って上のラインの拡散係数の割合が大きくなるように変更することを特徴とする請求項４８に記載の画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は画像処理方法及び装置に係り、とりわけ、入力画像濃度と出力画像濃度等の差を誤差拡散法等により保存しつつ、入力データを２値又は多値データへと量子化する画像処理方法及び装置に関する。
【０００２】
【従来の技術】
従来、入力多値データを、２値又は入力多値データのレベルよりも少ないレベルの多値で表現するには、疑似中間調処理が用いられる。その一例として誤差拡散法が知られている。この誤差拡散法については、”Ａｎ　Ａｄａｐｔｉｖｅ　Ａｌｇｏｒｉｔｈｍ　ｆｏｒ　Ｓｐａｔｉａｌ　Ｇｒａｙ　Ｓｃａｌｅ”ｉｎ　ｓｏｃｉｅｔｙ　ｆｏｒ　Ｉｎｆｏｒｍａｔｉｏｎ　Ｄｉｓｐｌａｙ　１９７５　Ｓｙｍｐｏｓｉｕｍ　Ｄｉｇｅｓｔ　ｏｆ　Ｔｅｃｈｎｉｃａｌ　Ｐａｐｅｒｓ，１９７５，３６で発表されている。この方法では、着目画素をＰとし、その画素の濃度をｖとし、Ｐの周辺に存在する２値化処理前の画素Ｐ０、Ｐ１、Ｐ２、Ｐ３の濃度をそれぞれｖ０、ｖ１、ｖ２、ｖ３とし、２値化のための閾値をＴとして、経験的に求めた重み係数Ｗ０、Ｗ１、Ｗ２、Ｗ３を用い、着目点Ｐにおける２値化誤差Ｅを重み付けし、周辺画素Ｐ０、Ｐ１、Ｐ２、Ｐ３のそれぞれへと配分するものである。すなわち、この方法は、マクロ的に出力画像の平均濃度を入力画像の濃度と等しくする方法である。このとき、出力２値データをｏとすると、以下の式により周辺画素Ｐ０、Ｐ１、Ｐ２、Ｐ３に対する誤差Ｅ０、Ｅ１、Ｅ２、Ｅ３を求めることができる。
【０００３】
ｖ≧Ｔならばｏ＝１、Ｅ＝ｖ−Ｖｍａｘ
ｖ＜Ｔならばｏ＝０、Ｅ＝ｖ−Ｖｍｉｎ
（ただし、Ｖｍａｘ：最大濃度、Ｖｍｉｎ：最小濃度）
Ｅ０＝Ｅ×Ｗ０；
Ｅ１＝Ｅ×Ｗ１；
Ｅ２＝Ｅ×Ｗ２；
Ｅ３＝Ｅ×Ｗ３；
（重み係数の例：Ｗ０＝７／１６，Ｗ１＝１／１６，Ｗ２＝５／１６，Ｗ３＝３／１６）
ところで、この誤差を伝播するためには、誤差バッファが必要である。なお、上記の例からも解るように重み係数は１以下の小数である。
【０００４】
従って、上記重み係数の例で入力画像のビット数を８とし、２値化の閾値を１２８に固定したとすれば、量子化誤差は−１２７〜１２７となるから、誤差バッファのビット数として１２ビットも必要になるという欠点があった。
【０００５】
これを解決する方法として、特許文献１及び特許文献２においては、２値化誤差に重み係数を乗じた結果の小数部を切り捨てて求めた誤差配分値の総和を求め、２値化誤差との差分より剰余誤差を演算し、周辺画素へ再配分する方法が開示されている。
【０００６】
また、特許文献３においては２値化誤差より下位ｎビットを抽出し、下位ｎビットを０で補填した２値化誤差に重み係数を乗じたもの誤差配分値とし、上記抽出した２値化誤差の下位ｎビットを上記誤差配分値の１つに加算して周辺画素へ配分する方法が開示されている。
【０００７】
また、特許文献４においては２値化誤差の上位ビットをバッファメモリへ格納し、２値化誤差の下位ビットはラッチして次画素へ加算する方法が開示されている。
【０００８】
【特許文献１】
特公平０６−０６６８７６号公報
【特許文献２】
特公平０７−０２２３３４号公報
【特許文献３】
特公平０７−０９３６８２号公報
【特許文献４】
特開平０５−０７５８６３号公報。
【０００９】
【発明が解決しようとする課題】
ところが、上記特許文献１または特許文献２に開示された方法では、誤差配分値の総和を求め、２値化誤差との差分より剰余誤差を演算しなければならないという欠点があった。
【００１０】
また、特許文献３に開示された方法では、上記剰余誤差を演算しなくて良いが、誤差配分の演算に用いる２値化誤差のビット精度が落ちるため、配分比率が２値化誤差の大きさに依存して変わってしまうという欠点があった。例えば、上記の重み係数の場合、剰余誤差を０にするには２値化誤差の下位４ビットを０にして係数を乗じるが、２値化誤差が１５以下の場合は全て０になってしまうので、特定の画素に全ての２値化誤差が配分されてしまう。
【００１１】
また、特許文献４に開示された方法では、２値化誤差の上位ビットをバッファメモリへ格納するため、バッファメモリは大幅に削減できるが、特許文献３に開示された方法と同様に誤差配分の演算に用いる２値化誤差のビット精度が落ちるため、配分比率が２値化誤差の大きさに依存して変わってしまうという欠点があった。例えば、上記の重み係数の場合、剰余誤差を０にするには２値化誤差の上位４ビットをバッファメモリに格納し、ラッチに下位４ビットを格納しなければならないが、２値化誤差が１５以下の場合は全て０になってしまうので、次の画素に全ての２値化誤差が配分されてしまう。また、誤差配分の精度をあげるため、２値化誤差の上位５ビット以上をバッファメモリに格納する場合は丸め（切捨て）による誤差が発生してしまう。さらに、特許文献４には２値化誤差の「下位ビットは符号を拡張した後、ラッチ回路４に保存される」と記載されているが、２値化誤差が負の時に下位ビットを符号拡張した場合は上位ビットに１を加算しなければならない。
【００１２】
例えば−１は８ビットバイナリでは１１１１１１１１であるが、これを４ビットの上位・下位に分割すると１１１１と１１１１になる。下位ビットを負号拡張した場合は１１１１１となり−１を表すが、上位ビット１１１１は１１１１００００の意味なので−１６を意味する。従って上位と下位を加算した結果は−１７になってしまう。従って、不一致を避けるには上位ビット１１１１に１を加えて００００（キャリーは考慮しない）としなければならない。また、２値化誤差の下位ビットを入力画素データに加算するため、２値化誤差のレンジが拡大し１ビット増加してしまうという欠点があった。例えば、２値化誤差の下位４ビットをラッチする場合、通常の２値化誤差のレンジは−１２７〜１２７であるので８ビットで表現できるが、特開平０５−０７５８６３号公報に開示された方法では２値化誤差の下位４ビット（符号拡張されているので−１５から１５のレンジとなる）が入力画素データに加算されるため、２値化誤差のレンジは−１４２〜１４２となり９ビット必要になってしまう。
【００１３】
本発明は上述した課題を解決するものであり、誤差拡散時の演算誤差の影響を補償しつつ、バッファメモリの容量を削減することができる画像処理方法及び装置の提供を目的とする。
【００１４】
【課題を解決するための手段】
本発明のある観点によれば、入力画像データを量子化する量子化手段と、前記量子化手段の量子化処理により発生した量子化誤差を算出する算出手段と、前記算出された量子化誤差を格納するバッファと、前記バッファに格納されている第１の画素の量子化誤差と、前記算出手段により算出された第２の画素の量子化誤差とに少なくとも基づいて、量子化誤差を拡散する誤差拡散手段と、前記誤差拡散手段による演算誤差が以降の入力画像データに与える影響を低減する低減手段とを備える画像処理装置を提供する。
【００１５】
このように、本発明によれば、量子化誤差をバッファメモリに格納することとしたため、バッファメモリは、少なくとも量子化誤差分のビット数だけを備えていればよく、従来よりも容量を削減することが可能となる。さらに、低減手段を設けることにより、演算誤差の影響を排除でき、とりわけ画像のハイライト部分を高画質化することができる。
【００１６】
例えば、前記低減手段は、前記誤差拡散手段により量子化誤差を拡散すべく生成された補正値の小数部を次の入力画像データの下位ビット側に結合する結合手段を含んでも良い。すなわち、誤差拡散演算後の小数部を入力画像データの下位ビット側に結合した後、上記入力画像データを補正することになるため、出力画像を高画質化することができる。
【００１７】
また、前記補正値を次の画素以降に伝播させることが不適当な場合には、該補正値の伝播を阻止する阻止手段をさらに含んでもよい。不適当な場合とは、例えば、注目画素がラインの先頭画素である場合、注目画素が入力画像の下限レベルの値を有する場合（例：白画素）又は注目画素が入力画像の上限レベルの値を有する場合（例：黒画素）などであろう。もちろん、例示以外の不適当な場合にも本発明が適用できることは言うまでもない。なお、ここでいう下限レベルや上限レベルとは、１つの値だけでなく、所定範囲内に存在する複数の値であってもよい。
【００１８】
また、前記補正値の小数部を保持する保持手段と、前記保持手段に保持されている補正値の小数部を次の入力画像データの下位ビット側に結合することが不適当な場合に、前記保持手段に保持されている小数部をクリアするクリア手段とをさらに含んでもよい。
【００１９】
また、入力画像の走査方向が反転された場合には、前記クリア手段のクリア処理を制限する処理制限手段をさらに備えてもよい。
【００２０】
例えば、１ラインごとに走査方向を反転させる場合は、画像の先頭でのみ０にクリアするようクリア処理を制限することが可能となる。従って、走査方向を反転させる場合にも高画質化の効果を期待できよう。
【００２１】
また、前記算出手段により算出された量子化誤差を所定範囲内の数値へと制限する数値制限手段をさらに備えてもよい。これにより、量子化誤差を格納するバッファメモリのサイズを節約することができる。
【００２２】
本発明の他の観点によれば、注目画素の画像データをビット拡張するビット拡張手段と、前記ビット拡張された画像データを補正する補正手段と、前記補正された画像データの整数部を量子化する量子化手段と、前記量子化手段により発生する量子化誤差を保持する保持手段と、前記保持手段により保持されている第１の量子化誤差と、前記注目画素に関する第２の量子化誤差とに少なくとも基づいて、前記補正手段により利用される補正値を生成する補正値生成手段と、前記ビット拡張手段のビット拡張処理において、次の画像データの下位ビット側へと結合される前記補正値の少数部を格納する格納手段と、を備える画像処理装置が提供される。
【００２３】
このように、本発明によれば、量子化誤差をバッファメモリに格納することとしたため、バッファメモリは、少なくとも量子化誤差分のビット数だけを備えていればよく、従来よりも容量を削減することが可能となる。さらに、誤差拡散演算後の小数部を入力画像データの下位ビット側に結合した後、上記入力画像データを補正することになるため、出力画像を高画質化することができる。
【００２４】
本発明のさらに他の観点によれば、入力された画像データの上位ビットを量子化する量子化手段と、前記量子化手段の量子化処理により発生した量子化誤差を算出する算出手段と、
前記算出された量子化誤差を格納するバッファと、前記バッファに格納されている第１の画素の量子化誤差と、前記算出手段により算出された第２の画素の量子化誤差とに少なくとも基づいて、第３の画素の画像データを誤差拡散する誤差拡散手段と、前記誤差拡散された画像データの所定ビット以下の値を保持する保持手段と、前記保持されている値の整数部を、入力された画像データへと加算する加算手段と、前記保持されている値の小数部を、前記整数部を加算された画像データの下位ビット側に結合して前記量子化手段へと出力するビット結合手段とを備える画像処理装置が提供される。
【００２５】
このように、量子化誤差の上位ビットをバッファメモリに格納することにより、バッファメモリの容量を削減できる。さらに、誤差拡散手段より補正値が加算された画像データに係る整数部の下位ビットを次の入力画像に加算し、誤差拡散手段からの補正値の小数部を入力画像データの下位ビット側に結合した後、上記入力画像データを補正するように構成したため、演算誤差の影響を排除することができる。
【００２６】
また、前記算出手段は、算出された量子化誤差を所定範囲に制限して前記バッファへと出力する数値制限手段を備えていてもよい。これにより、バッファメモリのサイズをより削減できよう。
【００２７】
さらに、前記量子化誤差を算出する際に利用される量子化代表値の最大値を、入力される画像データの最大値以上に設定するようにしてもよい。このようにすれば、量子化誤差が補正されずに累積し、処理が破綻することを防止できる。
【００２８】
さらに、前記量子化誤差を算出する際に利用される量子化代表値のステップ幅を２のべき乗の一定値にしてもよい。例えば、後述する第２実施形態で説明するように、量子化代表値をすべて１６の倍数となるようにすれば、逆量子化器の出力は３ビットで済むため、算出手段の構成を簡易にできる。
【００２９】
さらに、入力画像の下限レベル値を有する画素を検出する第１の検出手段と、前記入力画像の下限レベル値を有する画素が検出されると、当該画素に関する出力コードとして、量子化代表値が最小となるような出力コードを出力する第１のコード出力手段とを備えてもよい。
【００３０】
さらに、入力画像の上限レベル値を有する画素を検出する第２の検出手段と、前記入力画像の上限レベル値を有する画素が検出されると、当該画素に関する出力コードとして、量子化代表値が最大となるような出力コードを出力する第２のコード出力手段とを備えてもよい。
【００３１】
さらに、前記下限レベル値又は上限レベル値を有する画素が検出されると、当該画素に関する量子化誤差を０に置換する置換手段を備えてもよい。
【００３２】
このようにすれば、不要な誤差の伝播を抑制できるため、その結果、エッジの追従性が改善され、さらには、細線の欠落やハイライト部の汚れを防止できよう。
【００３３】
なお、本発明のさらに他の観点によれば、上述の画像処理装置に対応する画像処理方法及び画像処理プログラムも提供される。
【００３４】
【発明の実施の形態】
以下に本願発明の一実施形態を示す。もちろん以下の実施形態は、本願発明の技術分野における当業者による実施を容易にするために開示を提供するものであり、特許請求の範囲によって確定される本願発明の技術的範囲に含まれるほんの一部の実施形態にすぎない。従って、本願明細書に直接的に記載されていない実施形態であっても、技術思想が共通する限り本願発明の技術的範囲に包含されることは当業者にとって自明であろう。
【００３５】
なお、便宜上複数の実施形態を記載するが、これらは個別に発明として成立するだけでなく、もちろん、複数の実施形態を適宜組み合わせることでも発明が成立することは、当業者であれば容易に理解できよう。
【００３６】
［第１実施形態］
以下、図面を参照して本発明の実施形態を詳細に説明する。図１は本発明の第１の実施形態に係わる画像処理装置の構成を説明するブロック図である。
【００３７】
図１において１はビット結合回路であり、ラッチ３からの小数の累積値を入力画像データの下位に結合する。２は加算器であり、拡散フィルタ９からの補正値を入力画像データに加算する。３はラッチであり、加算器２の小数部を１画素分遅延させる。４は量子化器であり、加算器２の整数部を閾値と比較し、出力コードに変換する。５は逆量子化器であり、出力コードより量子化代表値を生成する。６は減算器であり、量子化直前の値より量子化代表値を減算することで量子化誤差を生成する。７はリミッタであり、減算器６からの量子化誤差を所定範囲（存在範囲）にリミットする。８はラインバッファであり、リミッタ７からの量子化誤差を約１ライン分遅延する。９は拡散フィルタであり、ラインバッファ８からの前ラインの拡散対象画素及び現画素の量子化誤差に対応する係数を乗して総和を加算器２にて次の入力画像データに加算する。
【００３８】
次に、処理の流れを説明する。以下では５値の誤差拡散に本発明を適用した場合の具体的な数値を記載する。本実施形態では、上記ラインバッファ８の容量を削減するため、誤差拡散後の値（拡散フィルタからの出力値）をラインバッファに格納するのではなく、量子化誤差そのものをラインバッファに格納するようにしている。誤差拡散後の値（例：１０ビット）に比して量子化誤差の値（例：６ビット）はサイズが小さいため、バッファの容量を節約できる効果がある。
【００３９】
図２に拡散フィルタ９の演算に用いる拡散係数の例を示す。図２に示した如く、周囲の量子化誤差より次の画素の補正値を求める方法（平均誤差最小法）では、誤差拡散法の拡散係数と位置が点対称の関係になる。
【００４０】
図１には、入力画像データを８ビットとし、図２の拡散係数を用いて５値の誤差拡散を行った場合の各信号線のビット数を示してある。図２の拡散係数の分母は１６であるので、拡散フィルタ９からの補正値と、ビット結合回路１からの出力画像データとの和は、小数部に４ビット、整数部（−３１〜２８６）に１０ビットの合計１４ビットになる。加算器２からの出力された補正後の画像データの小数部は、ラッチ４にて１画素遅延され、次の画素とともに加算器２に入力される。従って、拡散係数による小数部は切り捨てられることなく次画素以降に伝播されるため、量子化誤差が補正される（量子化誤差の全てが伝播される）。
【００４１】
一方、補正後の画像データの整数部は量子化器４にて所定の閾値と比較され、５値のコードに変換される。ここで入力画像データをｘとすれば、出力コードｃ、量子化代表値ｒは次式のようになる。
【００４２】
ｘ＜３２の時ｃ＝０、ｒ＝０
３２≦ｘ＜９６の時ｃ＝１、ｒ＝６４
９６≦ｘ＜１６０の時ｃ＝２、ｒ＝１２８
１６０≦ｘ＜２２４の時ｃ＝３、ｒ＝１９２
２２４≦ｘの時ｃ＝４、ｒ＝２５５。
【００４３】
従って、量子化器の閾値を各量子化代表値の中央に設定した場合、量子化誤差は−３１〜３１の範囲となる。一方、入力画像データには周囲の画素の量子化誤差による補正値が加算されているため、加算器６の出力は−３１〜３１の範囲を超えるが、−３１〜３１の範囲外となるのは、補正後の画像データが入力画像データの存在範囲を超えた場合である。よって、算出された量子化誤差をリミッタ７により所定範囲内に数値制限しても問題はない。
【００４４】
リミッタ７により量子化誤差をリミットしたので、ラインバッファ８には−３１〜３１の範囲の量子化誤差を格納すれば足りる。よって、ラインバッファ８のビット数は６であればよい。これは、拡散フィルタ８の出力が１０ビットであることから、４ビットもサイズを節約できたことになる。
【００４５】
拡散フィルタ８は、現画素及びラインバッファ８より読み出される１ライン前の量子化誤差に図２の拡散係数をかけて補正値を求め、加算器２へと出力する。
【００４６】
以上の処理により、１入力画像データに対する５値化処理が終了する。すべての画素について処理が終了していなければ、処理が終了するまで、以上の処理を１ピクセルずらして繰り返すことになる。この繰り返し処理により、画像全体に対する５値化処理が完了する。
【００４７】
なお、ラッチ３は通常のラスタスキャンの場合は、ラインの先頭で０にクリアされる。即ち、前ラインの最終画素と現ラインの先頭画素とは、いずれも物理的には隣接してはいない画素であり、画像データの相関性が低い画素同士ではあるが、処理上は隣接した２つの画素となるため、不要な誤差の伝播を抑制すべく、ラインの先頭で０にクリアするのである。一方、１ライン毎に走査方向を反転させるスキャン方式の場合は、走査反転時（前ラインから現ラインへと移行する時）においても２つの画素は物理的にも処理上も連続することになるので、ラインの先頭で誤差を０にクリアする必要はなく、むしろ誤差を伝播させた方が画質上、好ましい。そのため、走査方向を反転させる場合には、ライン先頭の０クリアを禁止し、画像の先頭または走査方向が反転しない場合のラインの先頭でのみ０クリアするように制御するのが良い。
【００４８】
この様に本発明の第１の実施形態によれば、量子化誤差を所定範囲にリミットしてバッファに格納するため、バッファの容量を削減できる。また、誤差拡散演算時の小数部を次の画像データの下位にビット結合させることにより、誤差拡散演算の丸め誤差を補正することができ、その結果、画質の向上、特に量子化誤差の小さなハイライト部の画質を向上させることが可能となる。また、バッファの削減効果は誤差拡散後のレベル数が大きいほど、効果も大きくなるであろう。
【００４９】
［第２実施形態］
図３は本発明の第２の実施形態に係わる画像処理装置の構成を説明するブロック図である。図中、１１，１２は加算器、１３はラッチ、１４は量子化器、１５は逆量子化器、１６は減算器、１７はリミッタ、１８ラインバッファ、１９は拡散フィルタである。以下、第１の実施形態と異なる部分のみ説明する。
【００５０】
本実施形態ではラッチ１３のビット数をｍビット拡張し、小数部のみならず、誤差補正後の整数部の下位ｍビットも累積加算することにより、ラインバッファ１８の容量を削減したものである。
【００５１】
従って、ラッチ１３の出力のうち小数部は前記第１の実施形態と同様に入力画像データの下位に結合されるが、ｍビットの整数部は加算器１１にて入力画像に加算される。このため、ビット結合後の出力は１３ビットになる。また、分離された整数部１０−ｍビットは、量子化器１４にて出力コードに変換され、逆量子化器１５にて量子化代表値となり、減算器１６にて量子化誤差が生成される。この量子化誤差はリミッタ１７にて前記第１の実施形態と同様に有意の値に制限され、ラインバッファ１８にて約１ライン分遅延される。拡散フィルタ１９には、現画素の量子化誤差及び隣接する前ラインの量子化誤差が入力され、各々に対応する拡散係数が積和され、次の画素の補正値が算出される。算出された補正値は、加算器１２にて次の画素へと加算される。
【００５２】
ここで、説明の都合上、ｍ＝２とすると、ラッチ１３は６ビットとなり、加算器１１の出力範囲は０〜２５８となる。一方、量子化器１４の入力ｘは８ビット（−７〜７２となり、出力コードｃ、量子化代表値ｒは（実際の重みは２ビット左シフト、すなわち４倍の値になる）次のようにして求められる。
【００５３】
ｘ＜８の時ｃ＝０、ｒ＝０
８≦ｘ＜２４の時ｃ＝１、ｒ＝１６
２４≦ｘ＜４０の時ｃ＝２、ｒ＝３２
４０≦ｘ＜５６の時ｃ＝３、ｒ＝４８
５６≦ｘの時ｃ＝４、ｒ＝６４。
【００５４】
ここで、５６≦ｘの時、ｒ＝６４としているのは次の理由による。すなわち、ｒ＝６３としたのでは、実際の入力値換算（２ビット左シフト）で、６３×４＝２５２となり、入力画像レンジに満たないことになり、その結果、２５５の入力データが連続した場合、２５５−２５２＝３の量子化誤差が補正されずに累積し、加算器１２の出力レンジを越えて処理が破綻してしまうおそれがある。そこで、このような処理の破綻を抑制するため、量子化代表値の最大値を入力画像データの最大値以上の値に設定することが必要になるのである。
【００５５】
なお、この操作により、黒ベタ部の濃度が若干（１／２５６レベル）低下するが、黒ベタ付近は元々濃度の変化が少ないので、影響は殆どない。よって、有意な量子化誤差の範囲は−８〜７となり、ラインバッファ２０は、４ビットに削減される。
【００５６】
なお、本実施形態では、量子化代表値を２のべき乗のステップ幅となるように、全て１６の倍数している。その結果、逆量子化器１５の出力は３ビットで良く、逆量子化器１５、減算器１６は簡略化されるのである。
【００５７】
本実施形態では、入力画素データが量子化代表値に近い値の時の様に、量子化誤差が小さいところでは次画素への誤差配分が相対的に大きくなる。特に、量子化誤差が３以下の場合、次画素に誤差が１００％配分される。これはハイライト部のように量子化誤差の小さな部分でのドットの生成を早める結果となり、「掃き寄せ」と呼ばれる濃度変化の大きな部分での誤差拡散時のドット生成の遅れを改善する効果がある。
【００５８】
一方、入力データが量子化代表値より遠い場合は、量子化誤差が大きくなるので、誤差の配分比は従来と殆ど変わらずドットの分散性が保持される（ドットのつながりによるテクスチャは従来とあまり変わらない）。
【００５９】
なお、入力データが量子化代表値付近であっても、誤差の累積によって隣の（入力データより遠い）量子化代表値が選択された場合は、量子化誤差が大きくなるので、誤差の配分比は従来と殆ど変わらない。従って、ｍがあまり大きくなければ、ドットの分散性は保持される（ドットのつながりによるテクスチャは従来とあまり変わらない）。
【００６０】
なお、ｍが大きいために、ドットのつながりによるテクスチャが目立ってしまう場合は、拡散係数を変更することによって画質改善が可能である。即ち、直前の画素の量子化誤差が０の場合は図５に示すように直下の拡散係数を大きくするのである。これにより下に伝播される量子化誤差の割合を補償し、縦方向のドットの分散性が改善される。なお、拡散係数を変更する条件を直前画素の量子化誤差が０の場合に限定しているのは、量子化誤差が０の時の実質的な配分比率がとりわけ偏っているからである（量子化誤差が０の時以外の実質的な配分比率の変動は比較的少ない）。また、実質的な配分比率は入力データにも依存しているので、入力データのレベルに応じて拡散係数を変更するようにしても同様の効果が得られる。
【００６１】
［第３実施形態］
図４は本発明の第３の実施形態に係わる画像処理装置の構成を説明するブロック図である。図中、２０は白画素・黒画素検出器、２１はラッチ、２２はコード置換回路、２３は量子化誤差置換回路である。以下、第２の実施形態と異なる部分のみ説明する。
【００６２】
白画素・黒画素検出器２０は、入力された画像データが、白画素（前記第２の実施形態では０）及び黒画素（前記第２の実施形態では２５５）を検出する。検出結果はラッチ２１及び置換回路２２、２３に出力される。
【００６３】
白画素・黒画素検出器２０が白画素または黒画素を検出すると、ラッチ２１は、ラッチをクリアし、次画素以降への誤差の伝播を阻止する。これにより、不要な誤差が伝播されることに伴う、ハイライト部の汚れや、細線の消失などの不適当な結果を抑制できる。
【００６４】
コード置換回路２２は、白画素が検出された場合は白画素を示すコード（前記第２の実施形態では０）を出力し、黒画素が検出された場合は黒画素を示すコード（前記第２の実施形態では４）を出力し、それ以外では入力されたコードを出力する。
【００６５】
量子化誤差置換回路２３は白画素及び黒画素が検出された場合は０を出力し、それ以外では前述の実施形態と同様に有意の値に制限された量子化誤差を出力する。
【００６６】
ラッチ２１のクリア処理、コード置換回路２２及び量子化誤差置換回路２３を少なくとも一つ設けるだけでも、効果は得られるが、これらのうち２つを組み合わせて採用してもよいし、３つすべてを採用してもよい。より多く採用すれば、より高い効果が期待できる。
【００６７】
本実施形態では、入力画像データの上限及び下限の値を検出し、入力画像データの上限及び下限の値の時には量子化誤差を０とし、次画素以降に誤差の伝播を行わないようにしたものである。本構成により、上記第２の実施形態にて説明したような黒ベタ部の濃度の低下や拡散誤差による細線の消失、白画素部にドットが生成されるといった不具合を抑制できよう。
【００６８】
また、本実施形態では、白画素及び黒画素を検出することとしたが、これは極端な例であることを当業者であれば理解できよう。本発明はこれに限定されることはない。例えば、白画素と黒画素の検出に代えて、所定のレベル以下の画素や所定のレベル以上の画素を検出し、上記の処理を実施しても良い。所定のレベルは、いわゆる閾値であり、この閾値は画像の劣化とのトレードオフで適宜定めることができる。例えば、ほぼ白画素とみなせるレベルの画素などは、この閾値により、実質的に白画素として使うことが可能であろう。（但し、閾値を大きくすると、白とび、黒つぶれ等の劣化が激しくなってしまうため、通常は入力画像データの最大値・最小値に設定するのが望ましい。）
【他の実施形態】
前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、本願発明の目的が達成されることは言うまでもない。
【００６９】
この場合、記憶媒体から読み出されたプログラムコード自体が本願発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本願発明を構成することになる。
【００７０】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【００７１】
また、コンピュータが読み出したプログラムコードを実行することによって、前述した実施形態の機能が実現される他、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【００７２】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【００７３】
なお、本願発明は、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記憶媒体から、そのプログラムを、パソコン通信など通信ラインを介して要求者にそのプログラムを配信する場合にも適用できることは言うまでもない。
【００７４】
【発明の効果】
以上、説明したように第１の観点によれば、量子化誤差をバッファメモリに格納するよううに画像処理装置を構成したので、量子化誤差分のビット数だけをバッファメモリは備えればよく、従来よりもバッファメモリのサイズを削減できる。また、誤差拡散演算後の小数部を入力画像データの下位ビット側に結合した後、上記入力画像データを補正することにより、演算誤差の影響を低減できる。特に画像のハイライト部分の高画質化が期待できる。
【００７５】
また、第２の観点によれば、量子化誤差の上位ビットのみをバッファメモリに格納するように画像処理装置を構成したので、第１の観点よりもバッファメモリのサイズを小さくすることができる。また、誤差拡散フィルタから出力される補正値を加算してなる画像データの所定ビット以下を累積的に加算する構成を採用すれば、演算誤差の影響を低減することが可能となろう。
【００７６】
また、第３の観点によれば、注目画素が、白画素（入力画像レンジの下限）及び黒画素（入力画像レンジの上限）の場合には、不要な誤差の伝播を抑制するため、エッジの追従性を改善し、細線の欠落及びハイライトの汚れを防止することができる。
【図面の簡単な説明】
【図１】図１は、第１の実施形態に係る例示的な画像処理装置の構成を示すブロック図である。
【図２】図２は、拡散フィルタ９の演算に用いる例示的な量子化誤差の位置と拡散係数を示す図である。
【図３】図３は、第２の実施形態に係る例示的な画像処理装置の構成を示すブロック図である。
【図４】図４は、第３の実施形態に係る例示的な画像処理装置の構成を示すブロック図である。
【図５】図５は、直前画素の量子化誤差が０の時の拡散フィルタ１９の演算に用いる例示的な量子化誤差の位置と拡散係数を示す図である。
【符号の説明】
１…ビット結合回路
２…加算器
３…ラッチ
４…量子化器
５…逆量子化器
６…減算器
７…リミッタ
８…ラインバッファ
９…拡散フィルタ
１１…加算器
１２…加算器
１３…ラッチ
１４…量子化器
１５…逆量子化器
１６…減算器
１７…リミッタ
１８…ラインバッファ
１９…拡散フィルタ
２０…白画素・黒画素検出器
２１…ラッチ
２２…コード置換回路
２３…量子化誤差置換回路
【図１】
2004096709.tif 000003
【図２】
2004096709.tif 000004
【図３】
2004096709.tif 000005
【図４】
2004096709.tif 000006
【図５】
2004096709.tif 000007