(57)【特許請求の範囲】
【請求項１】
注目画素よりも上流に位置する少なくとも１つ以上の参照画素にかかる処理結果を用いて、当該注目画素を示すＮビットの画像データを、Ｋビットの画像データに変換する（ただし、Ｎ、ＫはＮ＞Ｋとする自然数）画像処理装置において、
当該注目画素を示すＮビットの画像データを、Ｋビットの画像データに変換する第１のデータ処理手段と、
前記第１のデータ処理手段による変換の際に、その誤差データを生成する誤差データ生成手段と、
前記誤差データ生成手段により生成された誤差データと前記参照画素の画像データを変換した際の誤差データとの加算結果に基づいて、前記第１のデータ処理手段により変換した画像データに対する補正信号を生成する補正信号生成手段と、
前記第１のデータ処理手段により変換した画像データを、前記補正信号により補正する第２のデータ処理手段と
を具備することを特徴とする画像処理装置。
【請求項２】
前記補正信号生成手段は、前記補正信号を介して前記第２のデータ変換手段に対して、
前記誤差データ生成手段により生成された誤差データと前記参照画素の画像データを変換した際の誤差データとの加算結果が前記第１のデータ変換手段において生じ得る誤差範囲内であれば、前記第１のデータ処理手段により変換した画像データを補正しない旨を指示し、
前記誤差範囲を上回れば、前記第１のデータ処理手段により変換した画像データをインクリメントする旨を指示し、
前記誤差範囲を下回れば、前記第１のデータ処理手段により変換した画像データをデクリメントする旨を指示する
ことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記補正信号生成手段は、前記誤差データ生成手段により生成された誤差データと前記参照画素の画像データを変換した際の誤差データとの加算結果を、注目画素の次に位置する画素に対する参照画素の誤差データとしてフィードバックする
ことを特徴とする請求項１記載の画像処理装置。
【請求項４】
画像処理装置が、注目画素よりも上流に位置する少なくとも１つ以上の参照画素にかかる処理結果を用いて、当該注目画素を示すＮビットの画像データを、Ｋビットの画像データに変換する（ただし、Ｎ、ＫはＮ＞Ｋとする自然数）画像処理方法において、
当該注目画素を示すＮビットの画像データをＫビットの画像データに変換するとともに、その変換の際の誤差データを生成する第１のステップと、
前記第１のステップにおいて生成された誤差データと前記参照画素の画像データを変換した際の誤差データとの加算結果に基づいて、前記第１のステップにおいて変換された画像データに対する補正信号を生成する第２のステップと、
前記第１のステップにおいて変換された画像データを、前記補正信号により補正する第３のステップと
を具備することを特徴とする画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ある注目画素に対しそれより前に走査された画素の処理結果を参照して、その注目画素の画像データを処理する画像処理装置に関する。
【０００２】
【従来の技術】
一般に、階調変換処理において広く用いられている方式として誤差拡散法がある。かかる誤差拡散法は、１画素Ｎビットで表わされる画像データを１画素Ｋビットで表わされる画像データに変換する際に（ただし、Ｎ、ＫはＮ＞Ｋとする自然数）、発生する誤差を周辺画素に所定の割合で振り分け、画像劣化を最小限に抑えることを目的とした処理方式の１つであり、特に、中間調画像データを処理する場合に有効な手法である。
ここで誤差拡散法は、通常、ある１つの画素（注目画素）の画像データを処理する場合に、当該画素よりも前に走査された画素であって、当該画素の周辺に位置する数画素の誤差データを参照する。例えば、注目画素が存在する直前１ラインの数画素と、注目画素の直前１画素とについての誤差データを参照する。
【０００３】
この例の誤差拡散法を実行するための一般的な回路構成を、図１２に示す。この図に示す処理回路は、Ｎ＝８、Ｋ＝４の場合、すなわち、１画素８ビットの画像データを、それよりも階調が低い１画素４ビットの画像データに変換するものである。
図において、まず、注目画素にかかる１画素８ビットの画像データは、加算部２０１によって、乗算部２０２から供給された誤差データ、詳細には、注目画素が存在するラインよりも１ライン前に位置する参照画素の誤差データと加算され、Ｆ／Ｆにより同期化された後、Ｆ／Ｆを介して加算部２０３の一方の入力端に供給される。加算部２０３の他方の入力端には、後述する乗算部２０４から供給された直前１画素の誤差データが供給される。このため、直前１ライン分の誤差データが加算された画像データには、さらに、直前１画素の誤差データが加算されて、データ変換部２０５に供給される。データ変換部２０５は、所定のしきい値と比較して、１画素８ビットの画像データを１画素４ビットの画像データに変換するとともに、当該変換に伴う誤差データを出力する。この誤差データは、乗算部２０４により所定の誤差係数およびフィルタ係数で重み付けされ、Ｆ／Ｆで同期化された後、加算部２０３の他方の入力端にフィードバックされるとともに、ラインメモリとして機能するＦＩＦＯ（First In First Out：先入れ先出しメモリ）２０６に供給され、一旦格納される。ＦＩＦＯ２０６に格納された誤差データは、１ライン分遅延したタイミングで読み出され、乗算部２０２により所定の誤差係数およびフィルタ係数で重み付けされた後、加算部２０１にフィードバックされて、直前１ラインの誤差データとして参照されることとなる。
【０００４】
【発明が解決しようとする課題】
さて、このような処理において、注目画素における直前１画素の誤差データについて注目すると、その処理過程が、加算部２０３→データ変換部２０５→乗算部２０３という３段の処理ブロックとなっているため、高速な処理を実行する場合の障壁となっていた（フィルタ係数や誤差係数を乗じない構成としても２段の処理ブロックが必要である）。
このため、従来では、▲１▼直前画素を参照する場合に、画像処理クロックを低速にする、あるいは▲２▼画像処理クロックを高速にする場合には、直前画素を参照しない、としていた。
しかしながら、▲１▼では、当然のことながら、画像処理に要する時間が長大となり、また▲２▼では、アルゴリズムの一部を省略するため、変換後の画質劣化が大きい、といった問題点があった。
本発明は、上記背景に鑑みてなされたものであり、その目的とするところは、画像処理にかかるクロックの高速化が可能であって、かつ、変換後の画質劣化が小さい画像処理装置を提供することにある。
【０００５】
【課題を解決するための手段】
上記課題を解決するために、本発明にあっては、注目画素よりも上流に位置する少なくとも１つ以上の参照画素にかかる処理結果を用いて、当該注目画素を示すＮビットの画像データを、Ｋビットの画像データに変換する（ただし、Ｎ、ＫはＮ＞Ｋとする自然数）画像処理装置において、当該注目画素を示すＮビットの画像データを、Ｋビットの画像データに変換する第１のデータ処理手段と、前記第１のデータ処理手段による変換の際に、その誤差データを生成する誤差データ生成手段と、前記誤差データ生成手段により生成された誤差データと前記参照画素の画像データを変換した際の誤差データとの加算結果に基づいて、前記第１のデータ処理手段により変換した画像データに対する補正信号を生成する補正信号生成手段と、前記第１のデータ処理手段により変換した画像データを、前記補正信号により補正する第２のデータ処理手段とを具備することを特徴としている。
【０００６】
（作用）
注目画素よりも上流に位置する少なくとも１つ以上の参照画素にかかる処理結果を用いて、当該注目画素の画像データを処理する画像処理装置の従来構成は、注目画素の画像データと参照画素の処理結果とを加算する加算手段と、その加算結果に対し所定の処理を施すとともに、その処理にかかる処理結果を加算手段にフィードバックする処理手段とからなっていた。すなわち、フィードバックループに存在する手段は、加算手段と処理手段との２つである。
これに対し本発明では、第１のデータ処理手段が、注目画素の画像データに所定の処理を施して第１のデータを生成し、補正信号生成手段が、第１のデータの処理結果および参照画素の処理結果から、前記第１のデータに対する補正信号を生成し、第２のデータ処理手段が、第１のデータを補正信号により補正するので、フィードバックループに存在する手段は補正信号生成手段の１つのみである。したがって、その分、画像処理を高速化することが可能となる。しかも、本発明による処理結果は、従来構成と同様に、注目画素の処理結果が次の位置の画素に対応する画像データに反映されているので、画像処理における画質劣化を従来と全く同様に小さく抑えることが可能となる。
【０００７】
【発明の実施の形態】
以下、本発明の実施形態について、図面を参照して説明する。
【０００８】
＜第１実施形態＞
はじめに、本発明の第１実施形態にかかる画像処理装置について説明する。本実施形態にかかる画像処理装置は、１画素８ビットの画像データ（すなわち、レベルが０〜２５５で示される２５６階調の画像データ）を、１画素４ビットの画像データ（すなわち、レベルが０〜１５で示される１６階調の画像データ）に階調変換するものであって、その変換の際に、図２に示すフィルタを用いるものである。
このフィルタは、図２に示すように、処理対象にかかる注目画素ｘの画像データを処理する場合に、当該画素ｘよりも１ライン前に存在する画素であって、主走査方向の位置が１画素前〜１画素後の画素ａ〜ｃおよび当該画素ｘと同じラインに存在する画素であって直前の画素ｄについての計４画素の誤差データを参照するものである。
そして、これらの誤差データは、所定の誤差係数およびフィルタ係数で重み付けされた後、注目画素ｘの画像データＸに加算されて、その変換処理の際に参照されることとなる。
【０００９】
さて、本実施形態において、注目画素ｘに加算すべき誤差データΔＸは、次式のように表わされる。
ΔＸ＝ｅ（Ｋａ・Ｄａ＋Ｋｂ・Ｄｂ＋Ｋｃ・Ｄｃ＋Ｋｄ・Ｄｄ）……（１）
なお、この式（１）において、ｅは注目画素ｘについての誤差係数であり、Ｄａ〜Ｄｄは、それぞれ画素ａ〜ｄについての係数乗算前の誤差データであり、Ｋａ〜Ｋｄは、それぞれ誤差データＤａ〜Ｄｄについてのフィルタ係数であって、これらの総和が１となるものである。
【００１０】
また、注目画素ｘにおいて、誤差データを考慮した画像データＸ’は、次式のようになる。
Ｘ’＝Ｘ＋ΔＸ                                            ……（２）
そして、この式（２）によって得られる１画素Ｎビットの画像データＸ’を、１画素Ｋビットの画像データに変換することにより、階調を落としても画像劣化の少ない画像データを得ることが可能となる。
【００１１】
次に、本実施形態にかかる画像処理装置の構成について、図１を参照して説明する。
この図において、加算部１０１は、注目画素ｘの階調を８ビットで表した画像データに、注目画素ｘが存在するラインより１ライン手前に位置する画素ａ、ｂ、ｃの誤差データを累積加算する。これらの誤差データは、それぞれ乗算部１０２によって、所定のフィルタ係数および誤差係数がすでに乗算されて重み付けされている。
次に、第１データ変換部１０３は、誤差データが加算された８ビットの画像データを、所定のしきい値と比較して１次的に４ビットの画像データに変換するとともに、変換の際に生じた誤差データを出力する。加算部１０４は、注目画素ｘの誤差データと直前画素ｄの誤差データとを加算する。乗算部１０５は、次の３つの機能を有するブロックである。
すなわち、乗算部１０５は、第１に、加算された誤差データ（係数乗算なし）を、後に説明する補正信号に応じて置換して、第１の誤差データとしてＦＩＦＯ１０６に供給する機能と、第２に、第１の誤差データに所定のフィルタ係数および誤差係数を乗算して第２の誤差データを求め、これを、注目画素の次に位置する画素について処理する場合に当該画素に対する直前画素の誤差データとすべく、加算部１０４にフィードバックする機能と、第３に、第１データ変換部１０３により変換された４ビットの画像データに対する補正信号を、加算された誤差データに対応して生成し、これを第２データ変換部１０７に供給する機能とを有する。ここで、ＦＩＦＯ１０６は、少なくとも１ライン分の誤差データを格納する容量を有するラインメモリである。
そして、第２データ変換部１０７は、第１データ変換部１０３により変換された４ビットの画像データを、乗算部１０５により生成された補正信号により補正して、最終的な出力とするものである。
なお、各ブロック間に設けられたＦ／Ｆ（フリップ・フロップ）は、図示しないシステムクロックにより当該データを同期化するためのものである。
【００１２】
＜第１の実施形態の動作＞
次に、上述した実施形態による動作について説明する。
まず、１画素８ビットの画像データが入力されると、当該画像データは、加算部１０１によって、乗算部１０２から供給された画素ａ、ｂ、ｃの誤差データと累積加算され、Ｆ／Ｆにより同期化された後、第１データ変換部１０３に供給される。
なお、加算部１０１に入力される画像データが最初の１ラインに存在する画素に対応するものである場合、参照すべき画素ａ、ｂ、ｃが存在しないので、乗算部１０２は、存在しない位置に対応する画素の誤差データを“０”とする。すなわち、この場合、加算部１０１に入力された画像データは、そのまま出力される。
また、２ライン目以降における各ラインの先頭画素については、参照すべき画素ａが存在しないので、他の画素ｂ、ｃの誤差データのみが加算部１０１に入力される。反対に、２ライン目以降における各ラインの最終画素については、参照すべき画素ｃが存在しないので、他の画素ａ、ｂの誤差データのみが加算部１０１に入力される。
【００１３】
さて、加算部１０１の出力データは、入力される画像データが８ビットであるのにもかかわらず１０ビットとなっているが、これは次の理由による。すなわち、入力した画像データに誤差データを加算する場合、その誤差データによっては、加算結果が「０」未満となる場合あるいは「２５５」を越える場合があるため、これによるアンダーフローあるいはオーバーフローを防止するため、データの１ビットと符合の１ビットとを追加して計１０ビットとしたのである。そして、この１０ビットの加算結果、すなわち、入力された１画素８ビットの画像データに、画素ａ、ｂ、ｃの誤差データを加算したものは、第１データ変換部１０３に供給される。
【００１４】
次に、第１データ変換部１０３は、１０ビットの画像データを、予め設定されたしきい値と比較して、４ビットの画像データに変換するとともに、その変換にかかる誤差データを生成する。ここで、しきい値と誤差データとの関係について説明する。
本実施形態において、入力される画像データが取り得る値は、８ビットであるため０〜２５５である。ここで、直前１ラインの画素ａ、ｂ、ｃの誤差データの和が取り得る値を−６〜＋６とすると、第１データ変換部１０３に入力される画像データＶＤが取り得る値は、−６〜＋２６１となる。これを１画素４ビットの画像データに変換するためには、例えば、図４に示すような１５個のしきい値が用いられる。
このようなしきい値を用いて、画像データＶＤが取り得る−６〜＋２６１の範囲を１６もの領域に区切り、それぞれの領域に対し、４ビットで示される０〜１５の濃度値を割り当てておく。そして、第１データ変換部１０３は、画像データＶＤの値がいずれの領域に属するかを比較判断し、当該領域に割り当てられた濃度値を、変換後の画像データの値として出力する。
なお、８ビットから４ビットへの変換により発生する誤差データは、図３に示すように、−８〜＋８の範囲に収まるので、そのためのビット数は「５」で足りる。
また、第１データ変換部１０３において、変換に用いるしきい値は図４に示すものに限られない。さらに、しきい値は固定であっても、可変であっても良い。可変の場合には、しきい値設定用のレジスタと、そのアクセスコントローラとを新たに設けることにより、任意のしきい値が設定可能となる。
【００１５】
さて、第１データ変換部１０３により変換された４ビットの画像データは、２段のＦ／Ｆにより同期化されて、第２データ変換部１０７に供給される一方、５ビットで示される誤差データは、１段のＦ／Ｆにより同期化されて、加算部１０４に供給される。ここで、画像データの方が１段だけＦ／Ｆが多いのは、後述する補正処理とのタイミングの調整を行なっているためである。
【００１６】
加算部１０４に入力された誤差データには、乗算部１０５によりフィードバックされた直前画素ｄの誤差データが加算されて、乗算部１０５に入力される。なお、加算部１０４に入力される画像データがラインの先頭に位置する画素に対応するものである場合、参照すべき画素ｄが存在しないので、乗算部１０５は、参照誤差データとして“０”を出力する。すなわち、この場合、加算部１０４に入力された画像データがそのまま出力されることとなる。
【００１７】
ここで、加算部１０４の加算結果について検討してみる。第１データ変換部１０３が図４に示したしきい値を用いて、８ビットの画像データを４ビットの画像データに変換する場合、その誤差データは、前述したように−８〜＋８の範囲内に収まる。ただし、第１データ変換部１０３により生成された誤差データには、注目画素ｘの１ライン前に位置する画素ａ、ｂ、ｃの誤差データしか加味されておらず、直前画素ｄの誤差データについては加味されていない。したがって、第１データ変換部１０３による誤差データに直前画素ｄの誤差データを加算部１０４により加算すると、−８〜＋８の範囲外となる場合がある。
いま、乗算部１０５から加算部１０４にフィードバックされる直前画素ｄの誤差データを３ビットで表わし、その取り得る範囲を−２〜＋２とすると、加算部１０４による加算結果が取り得る範囲は、−１０〜＋１０となる。
【００１８】
次に、このような範囲の加算結果を入力した場合の乗算部１０５の動作ついて図５を参照して説明する。
この図に示すように、乗算部１０５は、加算部１０４の出力に対応して、前述した３つの機能にそれぞれにかかる信号を生成する。すなわち、乗算部１０５は、係数乗算前の誤差データであって、補正信号による補正を考慮した第１の誤差データと、第１の誤差データに所定のフィルタ係数および誤差係数を乗算して重み付けした第２の誤差データと、第１データ変換部１０３により変換された４ビットの画像データに対する補正信号と、をそれぞれ生成する。
【００１９】
この図に示すように、乗算部１０５は、加算部１０４の出力が−８〜＋８の範囲にある場合に、特に目立った処理をせず、第１の誤差データについては、加算部１０４の出力そのものとし、第２の誤差データについては、第１の誤差データにフィルタ係数および誤差係数を乗算したものとし、そして、補正信号については、“０”として、第１データ変換部１０３による変換された画像データを特に補正しない旨を指示する。
一方、乗算部１０５は、加算部１０４の出力が−１０〜−９の範囲にある場合に、補正信号については、“−１”として、第１データ変換部１０３により変換された画像データの階調を１レベルだけ下げる（デクリメントする）旨を指示し、第１の誤差データについては、階調を１レベル下げた場合に対応するものに置き換え、第２の誤差データについても、それに対応したものとする。
また、乗算部１０５は、加算部１０４の出力が＋９〜＋１０の範囲にある場合に、補正信号については、“＋１”として、第１データ変換部１０３により変換された画像データの階調を１レベルだけ上げる（インクリメントする）旨を指示し、第１の誤差データについては、階調を１レベル上げた場合に対応するものに置き換え、第２の誤差データについても、それに対応したものとする。
【００２０】
このように、乗算部１０５は、加算部１０４による加算結果が第１データ変換部１０３において生じ得る誤差範囲内であれば、その変換結果を補正しない旨を指示する一方、誤差範囲を上回ればあるいは下回れば、その変換結果をインクリメントあるいはデクリメントする旨の指示を行なう。これにより、第１データ変換部１０３により変換された４ビットの画像データは、直前画素ｄの誤差データについても考慮され、その考慮の結果を受けて補正されることなる。
また、この際、乗算部１０５は、加算部１０４による加算結果が第１データ変換部１０３において生じ得る誤差範囲外であれば、加算部１０４にフィードバックする誤差データは、補正信号による補正結果を見込んだものに置換される。これにより、当該補正による誤差データの不一致が防止される。
【００２１】
そして、乗算部１０５により生成された補正信号は、第２データ変換部１０７に供給される。第２データ変換部１０７は、第１データ変換部１０３により変換された画像データの階調を、補正信号が“０”であれば補正せず、“−１”であれば１レベルだけ下げ、“＋１”であれば１レベルだけ上げて、本画像処理装置における最終的な出力とする。
【００２２】
なお、乗算部１０５における第２の誤差データについて説明すると、第１の誤差データに対する誤差係数ｅは、当該画像データに加味すべき誤差データの割合を画素毎に決定する係数であり、例えば、誤差係数が“０”であれば、誤差データを全く加味せず、また、“１”であれば誤差データを１００％加味することとする。したがって、誤差係数ｅは、０〜１（０〜１００％）の値を取り得る。ここで、誤差係数ｅが１ビットであれば、誤差係数を２段階（０／１００％）で設定でき、また、２ビットであれば、４段階（０／３３／６６／１００％）で設定できる。このように、誤差係数ｅを表わすビット数を広げれば、その分、加算すべき誤差データの割合を細かく設定することが可能となる。
一方、フィルタ係数Ｋは、本実施形態において参照すべき４つの画素ａ、ｂ、ｃ、ｄの誤差データを、どのような比率で加味すべきかを決定する係数であり、例えば、Ｋａ＝１／８、Ｋｂ＝３／８、Ｋｃ＝１／８、Ｋｄ＝３／８（Ｋａ＋Ｋｂ＋Ｋｃ＋Ｋｄ＝１）とすれば、ａ：ｂ：ｃ：ｄ＝１：３：１：３の割合で周辺画素の誤差データが加味される。
ここで、ある注目画素ｘの画像データに実際に加算される誤差データは、これらの誤差係数ｅとフィルタ係数Ｋとを誤差データに乗じた値、すなわち、ｅ・Ｋａ・Ｄａ、ｅ・Ｋｂ・Ｄｂ、ｅ・Ｋｃ・Ｄｃおよびｅ・Ｋｄ・Ｄｄの和である。これが式（１）の右辺に相当する。
ただし、乗算部１０５は、直前画素ｄのみを対象とするから（他の画素ａ、ｂ、ｃについては乗算部１０２が対象としている）、乗算部１０５では、ｅ・Ｋｄ・Ｄｄが計算される。
なお、言うまでもなく、図５に示した第２の誤差データは、一例であり、フィルタ係数あるいは誤差係数により異なる値をとる。
【００２３】
次に、本実施形態にかかる画像処理装置による階調変換処理のタイミングチャートを、図６に示す。
この図に示すように、ある特定の画素、例えば１画素目について着目した場合、はじめの第１クロックＴ1においては、１画素目の画像データと乗算部１０２による誤差データとが加算部１０１により加算される。なお、本実施形態において、直前１ラインで参照すべき画素はａ、ｂ、ｃであるため、これらの画素の誤差データが次々とＦＩＦＯ１０６から読み出され、乗算部１０２による乗算処理を受けた後、加算部１０２において、入力した画像データと累積加算される。この加算結果は、Ｆ／Ｆにより同期化されるため、次の第２クロックＴ2において第１データ変換部１０３に入力される。
次の第２クロックＴ2においては、かかる加算結果が第１データ変換部１０３によって４ビットの画像データに変換されるとともに、その変換誤差を示す誤差データが生成される。前者の画像データは、２段のＦ／Ｆにより同期化されるため、第４クロックＴ4において第２データ変換部１０７に入力される一方、後者の誤差データは、１段のＦ／Ｆにより同期化されるため、次の第３クロックＴ3において加算部１０４に入力される。
第３クロックＴ3においては、第１データ変換部１０３による誤差データと、乗算部１０５による誤差データとが加算部１０４によって加算されるとともに、その加算結果が乗算部１０５により処理される。この結果、乗算部１０５においては、係数乗算前の誤差データであって、補正信号による補正を考慮した第１の誤差データと、この第１の誤差データに所定のフィルタ係数および誤差係数を乗算して重み付けした第２の誤差データと、変換された４ビットの画像データに対する補正信号とがそれぞれ生成される。ここで、第１の誤差データは、この第３クロックにおいてＦＩＦＯ１０６に直ちに入力されるが、第２の誤差データおよび補正信号は、ともに１段のＦ／Ｆにより同期化されるため、それぞれ第４クロックＴ4において加算部１０４あるいは第２データ変換部１０７に入力される。
なお、第３クロックＴ3において、乗算部１０５から加算部１０４に入力される誤差データが“０”となるのは、注目画素の位置関係による。
そして、第４クロックＴ4においては、変換された４ビットの画像データを乗算部１０５の補正信号によって補正する処理が第２データ変換部１０７によって実行されて、最終的な変換結果となる４ビットの画像データが出力される。
このような処理が、第１ラインの先頭の画素から主走査方向の画素に対してクロック毎に順次行なわれ、以降、同様な処理がラインを副走査方向に順次移動させて行なわれる。
【００２４】
このような第１実施形態による画像処理装置によれば、図１２に示した従来の画像処理装置と同様な画像データおよび誤差データが得られる。さらに、図１２において、直前画素の誤差データを処理するための加算部２０３→データ変換部２０５→乗算部２０４というフィードバックを、第１実施形態では、データ変換部２０５に相当するブロックを当該フィードバックから外に出して、加算部２０３および乗算部２０４に相当する２つにブロックのみとしたので、当該フィードバックにおける処理速度を大幅に高速化することができる（実験の結果、約２倍）。
したがって、従来のように、処理速度あるいは画質のいずれかに制限が加わることもなく、高速かつ高画質の誤差拡散処理を行なうことができる。
【００２５】
＜第２の実施形態＞
次に、本願発明の第２実施形態について説明する。本実施形態にかかる画像処理装置は、上述した第１実施形態と同様に、１画素８ビットの画像データを１画素４ビットの画像データに階調変換するものであるが、参照画素を拡大したフィルタを用いるものである。
このフィルタは、図８に示すように、処理対象にかかる注目画素ｘの画像データを処理する処理する場合、当該画素ｘよりも２ライン前に存在する画素であって、主走査方向の座標が２画素前〜２画素後の画素ａ〜ｅと、当該画素ｘよりも１ライン前に存在する画素であって、主走査方向の座標が２画素前〜２画素後の画素ｆ〜ｊと、当該画素ｘと同じラインに存在する画素であって２画素前の画素ｋと、同じく１画素前の画素ｍとについての計１２画素の誤差データを参照するものである。そして、これらの誤差データは、第１の実施形態と同様に、所定の誤差係数およびフィルタ係数で重み付けれた後、注目画素ｘの画像データＸに加算される。
【００２６】
さて、本実施形態において、注目画素ｘに加算すべき誤差データΔＸは、次式のように表わされる。
0003757484.tif 000002
なお、この式（１）において、ｅは注目画素ｘについての誤差係数であり、Ｄａ〜Ｄｍは、それぞれ画素ａ〜ｍについての係数乗算前の誤差データであり、Ｋａ〜Ｋｍは、それぞれ誤差データＤａ〜Ｄｍについてのフィルタ係数であって、これらの総和が１となるものである。
【００２７】
したがって、注目画素ｘにおいて、誤差データに考慮した画像データＸ’は、式（２）と同様に、次式のようになる。
Ｘ’＝Ｘ＋ΔＸ                                            ……（４）
そして、この式（４）によって得られる１画素Ｎビットの画像データＸ’を、１画素Ｋビットの画像データに変換することにより、階調を落としても画像劣化の少ない画像データを得ることが可能となる。
【００２８】
次に、本実施形態にかかる画像処理装置の構成について、図７を参照して説明する。
この図に示すように、加算部７０１は、注目画素ｘの階調を８ビットで表した画像データに、注目画素ｘが存在するラインより２ライン手前に位置する画素ａ〜ｅ、および１ライン手前に位置する画素ｆ〜ｊについての誤差データを累積加算する。この誤差データは、乗算部７０２によって、所定のフィルタ係数および誤差係数がすでに乗算されて重み付けされている。
次に、第１データ変換部７０３は、第１データ変換部１０３と同様に、誤差データが加算された８ビットの画像データを、所定のしきい値と比較して１次的に４ビットの画像データに変換するとともに、変換の際に生じた誤差データを出力する。加算部７０４は、注目画素ｘの誤差データと２画素前の画素ｋの誤差データと直前の画素ｍの誤差データとを加算する。乗算部７０５は、次の３つの機能を有するブロックである。
すなわち、乗算部７０５は、第１に、加算された誤差データ（係数乗算なし）を、後に説明する補正信号に応じ置換して、第１の誤差データとしてＦＩＦＯ７０６ａに供給する機能と、第２に、第１の誤差データに所定のフィルタ係数および誤差係数を乗算して第２の誤差データを求め、これを、注目画素の次に位置する画素について処理する場合に当該画素に対する直前画素の誤差データとすべく、加算部７０４にフィードバックする機能と、第３に、第１データ変換部７０３により変換された４ビットの画像データに対する補正信号を、加算された誤差データに対応して生成する機能とを有する。さらに、乗算部７０５は、第１の誤差データに所定の誤差係数およびフィルタ係数を乗算し、１クロックだけ遅延させて第３の誤差データとし、これを、注目画素から２つ目の画素について処理する場合に当該画素に対する２画素前の誤差データとすべく、加算部７０４にフィードバックする機能も有する。
なお、ＦＩＦＯ７０６ａおよび７０６ｂは、ＦＩＦＯ１０６と同様に、それぞれ少なくとも１ライン分の誤差データを格納する容量を有するラインメモリであり、誤差データを１ライン分だけ遅延させるために設けられる。特に、本実施形態では、画素ａ〜ｅの誤差データについては２ライン分遅延させる必要から、ＦＩＦＯ７０６ａおよび７０６ｂの２段カスケード接続となっている。
そして、第２データ変換部７０７は、第１データ変換部７０３により変換された４ビットの画像データを、乗算部７０５により生成された補正信号により補正するものである。なお、各ブロック間に設けられたＦ／Ｆは、図示しないシステムクロックにより当該データを同期化するためのものである。
【００２９】
＜第２の実施形態の動作＞
次に、上述した実施形態による動作について説明する。
まず、１画素８ビットの画像データが入力されると、当該画像データは、加算部７０１によって、乗算部７０２から供給された２ライン前の画素ａ〜ｅおよび１ライン前の画素ｆ〜ｊの誤差データと累積加算され、Ｆ／Ｆにより同期化された後、第１データ変換部７０３に供給される。
【００３０】
なお、図８に示すフィルタを用いた場合、図２に示したフィルタの考え方と同様に、注目画素の位置によっては、参照すべき誤差が存在しないときがある。そのようなときには、乗算部７０２は、存在しない位置に対応する画素の誤差データを“０”とする。例えば、注目画素が最初の１ラインに位置する場合、２ライン前の画素ａ〜ｅおよび１ライン前の画素ｆ〜ｊの誤差データは、“０”にされる。また、注目画素が２ライン目に位置する場合、２ライン前の画素ａ〜ｅの誤差データは、“０”にされる。
【００３１】
また、加算部７０１の出力データは、入力される画像データが８ビットであるのにもかかわらず１０ビットとなっているが、これは、第１実施形態と同様な理由による。すなわち、入力した画像データに加算する誤差データによっては、その加算結果が「０」未満となる場合あるいは「２５５」を越える場合があるため、これによるアンダーフローあるいはオーバーフローを防止するため、データの１ビットと符合の１ビットとを追加して計１０ビットとしたのである。そして、この１０ビットの加算結果、すなわち、入力された１画素８ビットの画像データに、画素ａ〜ｊの誤差データを加算したものは、第１データ変換部７０３に供給される。
【００３２】
次に、第１データ変換部７０３は、１０ビットの画像データを、予め設定されたしきい値と比較して、４ビットの画像データに変換するとともに、その変換にかかる誤差データを生成する。ここで、しきい値と誤差データとの関係について説明する。
本実施形態において、入力される画像データが取り得る値は、８ビットであるため０〜２５５である。ここで、２ライン前の画素ａ〜ｅおよび１ライン前の画素ｆ〜ｊの誤差データの和が取り得る値を−８〜＋８とすると、第１データ変換部７０３に入力される画像データＶＤが取り得る値は、−８〜＋２６３となる。これを１画素４ビットの画像データに変換するためには、例えば、図９に示すような１５個のしきい値が用いられる。
このようなしきい値を用いて、−８〜＋２６３の範囲を１６もの領域に区切り、それぞれの領域に対し、４ビットで示される０〜１５の濃度値を割り当てておく。そして、変換する際には、画像データの値がいずれの領域に属するかを比較判断し、当該領域に割り当てられた濃度値を、変換後の画像データの値とするようになっている。そして、８ビットから４ビットへの変換により発生する誤差データは、−８〜＋８の範囲に収まるので、そのためのビット数は「５」で足りる。
なお、第１データ変換部７０３において、変換に用いるしきい値は図９に示すものに限られない。さらに、しきい値は固定であっても、可変であっても良い。可変の場合には、しきい値設定用のレジスタと、そのアクセスコントローラとを新たに設けることにより、任意のしきい値が設定可能となる。
【００３３】
第１データ変換部７０３により変換された４ビットの画像データは、２段のＦ／Ｆにより同期化されて、第２データ変換部７０７に供給される一方、５ビットで示される誤差データは、１段のＦ／Ｆにより同期化されて、加算部７０４に供給される。ここで、画像データの方が１段だけＦ／Ｆが多いのは、第１実施形態と同様に、後述する補正処理のため、タイミングの調整を行なっているためである。
【００３４】
さて、加算部７０４に入力された誤差データには、乗算部７０５によりフィードバックされた２画素前の画素ｋおよび直前画素ｍの誤差データが加算されて、乗算部７０５に入力される。
なお、加算部７０４に入力される画像データがラインの先頭に位置する画素に対応するものである場合、参照すべき画素ｋおよびｍが存在しないので、乗算部７０５からの参照誤差データは“０”である。すなわち、この場合、加算部７０４に入力された画像データが、そのまま出力されることとなる。
また、加算部７０４に入力される画像データがラインの先頭から２画素目に位置する画素に対応するものである場合、直前画素ｍは存在するが、２画素前の画素ｋは存在しないので、乗算部７０５から出力される、２画素前の画素ｋに対応する誤差データは“０”である。すなわち、この場合、加算部７０４に入力された画像データは、直前画素ｍの誤差データのみが加算されて出力されることとなる。
【００３５】
ここで、加算部７０４の加算結果について検討してみる。第１データ変換部７０３において図９に示したしきい値を用いて、８ビットの画像データを４ビットの画像データに変換する場合、その誤差データは、すでに説明した通り−８〜＋８の範囲内に収まるが、加算部７０４により加算された誤差データは、この範囲内に収まらない場合がある。それは、第１データ変換部７０３により生成された誤差データには、注目画素ｘの２ライン前および直前ライン前に位置する画素ａ〜ｊの誤差データしか加味されておらず、２画素前の画素ｋおよび直前画素ｍの誤差データを加味していないためである。
いま、乗算部７０５から加算部７０４にフィードバックされる２画素前の画素ｋおよび直前画素ｍの誤差データをそれぞれ２ビットで表わして、それらの取り得る範囲を−１〜＋１とする。また、第１データ変換部７０３から加算部７０４に供給される誤差データが取り得る範囲は、前述のように−８〜＋８である。したがって、両者を加算した加算部１０４の出力が取り得る範囲は、−１０〜＋１０となる。
【００３６】
次に、このような範囲の加算結果に対し、乗算部７０５が、いかなる動作をするかについて図１０を参照して説明する。
この図に示すように、乗算部７０５は、加算部７０４の出力に対応して、前述した機能にそれぞれにかかる信号を生成する。すなわち、乗算部７０５は、係数乗算前の誤差データであって、補正信号による補正を考慮した第１の誤差データと、第１の誤差データに所定のフィルタ係数および誤差係数を乗算して重み付けした第２の誤差データと、第１の誤差データに所定の誤差係数およびフィルタ係数を乗算し、１クロックだけ遅延させた第３の誤差データと、第１データ変換部１０３により変換された４ビットの画像データに対する補正信号と、をそれぞれ生成する。
【００３７】
図１０に示すように、加算部７０４の出力が−８〜＋８の範囲にある場合、乗算部７０５は、特に目立った処理をせず、第１の誤差データについては、加算部７０４の出力そのものとし、第２の誤差データについては、加算部７０４の出力にフィルタ係数および誤差係数を乗算したものとし、そして、第３の補正信号については、“０”として、第１データ変換部７０３による出力された画像データを特に補正しない旨を指示する。
また、加算部７０４の出力が−１０〜−９の範囲にある場合、乗算部７０５は、補正信号については、“−１”として、第１データ変換部７０３により出力された画像データの階調を１レベルだけ下げる旨を指示し、第１の誤差データについては、階調を１レベル下げた場合に対応するものに置き換え、第２の誤差データについても、置き換えた第１の誤差データにフィルタ係数および誤差係数を乗算したものとする。
一方、加算部７０４の出力が＋９〜＋１０の範囲にある場合、乗算部７０５は、補正信号については、“＋１”として、第１データ変換部７０３により出力された画像データの階調を１レベルだけ上げる旨を指示し、第１の誤差データについては、階調を１レベル上げた場合に対応するものに置き換え、第２の誤差データについても、置き換えた第１の誤差データにフィルタ係数および誤差係数を乗算したものとする。
【００３８】
このように、乗算部７０５は、加算部７０４による加算結果が第１データ変換部７０３において生じ得る誤差範囲内であれば、その変換結果を補正しない旨を指示する一方、誤差範囲を上回ればあるいは下回れば、その変換結果をインクリメントあるいはデクリメントする旨の指示を行なう。これにより、第１データ変換部７０３により変換された４ビットの画像データは、２画素前の画素ｋおよび直前画素ｍの誤差データについても考慮されて補正を受けることなる。
また、この際、乗算部７０５は、加算部７０４による加算結果が第１データ変換部７０３において生じ得る誤差範囲外であれば、加算部７０４にフィードバックする誤差データについては、２画素前の画素ｋおよび直前画素ｍの誤差データについて考慮した結果を見込んで生成される。これにより、当該補正による誤差データの不一致が防止される。
【００３９】
そして、乗算部７０５により生成された補正信号は、第２データ変換部７０７に供給される。第２データ変換部７０７は、第１データ変換部７０３により変換された画像データの階調を、補正信号が“０”であれば補正せず、“−１”であれば１レベルだけ下げ、“＋１”であれば１レベルだけ上げて、最終的に、１画素４ビットの画像データとして出力する。
【００４０】
なお、乗算部７０５における第２および第３の誤差データについて説明すると、誤差係数ｅは、第１実施形態と同様に、画像データに加味すべき誤差データの割合を画素毎に決定する係数であり、０〜１（０〜１００％）の値を取り、誤差係数ｅを表わすビット数を広げれば、その分、加算すべき誤差データの割合を細かく設定することができる点も同様である。
一方、フィルタ係数Ｋａ〜ｋｍは、本実施形態において参照すべき１２個の画素（図８参照）の誤差データについて、それぞれどのような比率で加味すべきかを決定する係数であって、これらの総和が１となるものである。
例えば、フィルタ係数を、
Ｋａ＝１／４８、
Ｋｂ＝３／４８、
Ｋｃ＝５／４８、
Ｋｄ＝３／４８、
Ｋｅ＝１／４８、
Ｋｆ＝３／４８、
Ｋｇ＝５／４８、
Ｋｈ＝７／４８、
Ｋｉ＝５／４８、
Ｋｊ＝３／４８、
Ｋｋ＝５／４８、
Ｋｍ＝７／４８
にそれぞれ設定した場合、ａ：ｂ：ｃ：ｄ：ｅ：ｆ：ｇ：ｈ：ｉ：ｊ：ｋ：ｍ＝１：３：５：３：１：３：５：７：５：３：５：７の割合で周辺画素の誤差データが加味される。
【００４１】
ここで、ある注目画素ｘの画像データに対して実際に加算される誤差データは、これらの誤差係数ｅとフィルタ係数Ｋａ〜Ｋｍとを、各参照画素毎に誤差データに乗じた値、すなわち、ｅ・Ｋａ・Ｄａ〜ｅ・Ｋｍ・Ｄｍの和であり、これが式（３）の右辺に相当する。
ただし、乗算部７０５は、２画素前の画素ｋおよび直前画素ｍを対象とするから（他の画素ａ〜ｊについては乗算部７０２が対象としている）、乗算部７０５では、ｅ・Ｋｋ・Ｄｋおよびｅ・Ｋｍ・Ｄｍが計算される。
なお、言うまでもなく、図１０に示した第２および第３の誤差データは、一例であり、フィルタ係数あるいは誤差係数により異なる値をとる。
【００４２】
次に、第２実施形態にかかる画像処理装置による階調変換処理のタイミングチャートを、図１１に示す。
この図に示すように、ある特定の画素について着目した場合についてみた場合、はじめの第１クロックＴ1においては、入力された８ビットの画像データと乗算部７０２による誤差データとが加算部７０１により加算される。この加算結果は、Ｆ／Ｆにより同期化されるため、次の第２クロックＴ2において第１データ変換部７０３に入力される。
次の第２クロックＴ2においては、かかる加算結果が第１データ変換部７０３によって４ビットの画像データに変換されるとともに、その変換誤差を示す誤差データが生成される。前者の画像データは、２段のＦ／Ｆにより同期化されるため、第４クロックＴ4において第２データ変換部７０７に入力される一方、後者の誤差データは、１段のＦ／Ｆにより同期化されるため、次の第３クロックＴ3において加算部７０４に入力される。
第３クロックＴ3においては、第１データ変換部７０３による誤差データに、２画素前の画素ｋの誤差データと直前画素ｍの誤差データとが加算部７０４によって加算されるとともに、その加算結果が乗算部７０５により処理される。この結果、乗算部７０５においては、係数乗算前の誤差データであって、補正信号による補正を考慮した第１の誤差データと、この第１の誤差データに所定のフィルタ係数および誤差係数を乗算して重み付けした第２の誤差データと、第１の誤差データに所定の誤差係数およびフィルタ係数を乗算し、１クロックだけ遅延させた第３の誤差データと、変換された４ビットの画像データに対する補正信号とがそれぞれ生成される。ここで、第１の誤差データは、この第３クロックにおいてＦＩＦＯ７０６ａに入力されるが、第２、第３の誤差データおよび補正信号は、ともに１段のＦ／Ｆにより同期化されるため、それぞれ第４クロックＴ4において加算部７０４あるいは第２データ変換部７０７に入力される。
なお、第３クロックＴ3において、乗算部７０５から加算部７０４に入力される誤差データが“０”となるのは、注目画素の位置関係による。
そして、第４クロックＴ4においては、変換された４ビットの画像データを乗算部７０５の補正信号によって補正する処理が第２データ変換部７０７によって実行されて、最終的な変換結果となる４ビットの画像データが出力される。
このような処理が、第１ラインの先頭の画素から主走査方向の画素に対してクロック毎に順次行なわれ、以降、同様な処理がラインを副走査方向に順次移動させて行なわれる。
【００４３】
このような第２実施形態による画像処理装置によれば、誤差データを参照する画素を拡大するフィルタを用いる場合においても、図１２に示した従来の画像処理装置と同様な、画像データおよび誤差データが得られる。さらに、第１実施形態と同様に、図１２において、直前画素の誤差データを処理するための加算部２０３→データ変換部２０５→乗算部２０４というフィードバックを、第２実施形態では、データ変換部２０５に相当するブロックを当該フィードバックから外に出し、加算部２０３および乗算部２０４に相当する２つにブロックのみとしたので、当該フィードバックにおける処理速度を大幅に高速化することができる（実験の結果、約２倍）。
したがって、この第２実施形態によれば、第１実施形態と同様に、処理速度あるいは画質のいずれかに制限が加わることもなく、高速かつ高画質の誤差拡散処理を行なうことができる。
【００４４】
＜その他＞
なお、上述第１および第２実施形態にかかる画像処理装置においては、いずれも画像処理として誤差拡散法に適用した場合について説明したが、本願発明はこれに限定されるものではなく、これに類するアルゴリズムを有する処理法、すなわち、注目画素よりも上流に位置する少なくとも１つ以上の参照画素の処理結果をフィードバックして、当該注目画素の画像データを処理する画像処理法に対して広く適用可能である。
また、上述した各実施形態においては、いずれも乗算部１０５（２０５）が補正信号を生成することとしているが、本願発明において、誤差データに誤差係数やフィルタ係数を乗じる手段は必須構成要件ではなく、あくまでも任意的構成要件である。このため、誤差データに誤差係数やフィルタ係数を乗じない構成とする場合、第１実施形態においては乗算部１０２および１０５を、第２実施形態においては、乗算部７０２および７０５を、それぞれ省略することも可能である。ただし、本願発明において、補正信号を生成する手段は必須構成要件であるので、乗算部を省略する場合に、補正信号を生成する手段については、第１実施形態の加算部１０４あるいは第２実施形態の加算部７０４に負わせれば良い。
【００４５】
【発明の効果】
以上説明したように、本発明によれば、画像処理にかかるクロックの高速化が可能であって、かつ、変換後の画質劣化が小さく済ますことが可能となる。
【図面の簡単な説明】
【図１】  本発明の第１実施形態にかかる画像処理装置の構成を示すブロック図である。
【図２】  同画像処理装置に用いるフィルタであって、同処理装置による誤差拡散法において参照する画素の位置関係を説明するための図である。
【図３】  階調変換前後における画像データ、しきい値および誤差データの関係を示す図である。
【図４】  同画像処理装置における第１データ変換部の変換過程を説明するための図表である。
【図５】  同画像処理装置における乗算部１０５により生成される信号の一例を示す図表である。
【図６】  同画像処理装置のタイミングチャートを示す図である。
【図７】  本発明の第２実施形態にかかる画像処理装置の構成を示すブロック図である。
【図８】  同画像処理装置に用いるフィルタであって、同処理装置による誤差拡散法において参照する画素の位置関係を説明するための図である。
【図９】  同画像処理装置における第１データ変換部の変換過程を説明するための図表である。
【図１０】  同画像処理装置における乗算部７０５により生成される信号の一例を示す図表である。
【図１１】  同画像処理装置のタイミングチャートを示す図である。
【図１２】  従来の画像処理装置の構成を示すブロック図である。
【符号の説明】
１０３、７０３……第１データ変換部（第１のデータ処理手段、誤差生成手段、誤差データ生成手段）、
１０５、７０５……乗算部（補正信号生成手段）、
１０７、７０７……第２データ変換部（第２のデータ処理手段）
【図１】
0003757484.tif 000003
【図２】
0003757484.tif 000004
【図３】
0003757484.tif 000005
【図４】
0003757484.tif 000006
【図５】
0003757484.tif 000007
【図６】
0003757484.tif 000008
【図７】
0003757484.tif 000009
【図８】
0003757484.tif 000010
【図９】
0003757484.tif 000011
【図１０】
0003757484.tif 000012
【図１１】
0003757484.tif 000013
【図１２】
0003757484.tif 000014