(57)【特許請求の範囲】
【請求項１】
主走査方向に複数の画素でかつ副走査方向に複数のラインからなる処理対象画像における注目画素の画像データを２値／多値化誤差拡散に基づく誤差補正量によって補正した補正画像データを出力する補正手段と、
この補正手段による補正画像データを２値／多値化する２値／多値化手段と、
この２値／多値化手段により２値／多値化された２値／多値化画像データと上記補正手段による補正画像データとの誤差を算出する算出手段と、
上記算出手段により算出された誤差を入力とし、誤差を拡散する画素の異なる複数のフィルタからなるフィルタ群を設け、画素ごとに選択的にフィルタを切り替えることによりフィルタリングを行い、注目画素に対する主走査方向の次の画素への誤差補正量と注目画素に対する副走査方向の次のラインへの誤差補正量とを出力する誤差フィルタリング手段と、
この誤差フィルタリング手段により出力される注目画素に対する副走査方向の次のラインへの誤差補正量を、上記主走査方向の各画素ごとに記憶する記憶手段と、
注目画素に対する副走査方向の前のラインからの誤差補正量を上記記憶手段から読出す読出し手段と、
この読出し手段により読出された注目画素に対する副走査方向の前のラインからの誤差補正量と上記誤差フィルタリング手段により出力される注目画素に対する主走査方向の次の画素の誤差補正量とにより、上記補正手段による注目画素の画像データの補正を行う制御手段と、
を具備したことを特徴とする画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、処理対象文書画像をスキャナ入力したりあるいはコピーしたりする場合に、誤差拡散階調処理におけるテクスチャの低減と処理ハードの簡略化及び処理の高速化を図る画像処理装置に関する。
【０００２】
【従来の技術】
一般に、コード情報だけでなくイメージ情報をも扱える文書画像処理装置においては、スキャナ等の読取手段で読み取った原稿に対して文字や線図などのコントラストのある画像情報は固定閾値により単純２値化を行い、写真などの階調を有する画像情報は、ディザ法などの疑似階調化手段によって２値化を行い、階調の少ない２値プリンタなどに出力する。これは、読み取った画像情報を固定閾値により単純２値化を行うと、文字、線画像の領域は解像性が保存されるため画質劣化は生じないが、写真画像の領域では階調性が保存されないために画質劣化が生じる画像となってしまう。
【０００３】
また一方、読み取った画像情報を組織的ディザ法などで階調化を行うと、写真画像の領域は階調性が保存されるため画質劣化は生じないが、文字、線画像の領域では解像性が低下するため画質の劣化した画像となってしまう。すなわち、読み取った画像情報に対して、単一の２値化処理では、特徴の異なるそれぞれの領域の画質を同時に満足することは不可能である。
【０００４】
しかしながら、写真画像の領域の階調性を満足し、文字／線画像の領域も組織ディザに比べ解像性も良い２値／多値化方式として「誤差拡散法」が提案されている。「誤差拡散法」（参考文献：Ａｎ  Ａｄａｐｔｉｖｅ  Ａｌｇｏｒｉｔｈｍｆｏｒ  Ｓｐａｔｉａｌ  Ｇｒａｙｓｃａｌｅ、ｂｙ  Ｒ．Ｗ．Ｆｌｏｙｄ  ａｎｄ  Ｌ．Ｓｔｅｉｎｂｅｒｇ、Ρｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｓ．Ｉ．Ｄ．Ｖｏ１．１７−２、ｐｐ．７５−７７、Ｓｅｃｏｎｄ  Ｑｕａｒｔｅｒ  １９７６）は、注目画素の濃度に、既に２値化された周辺画素の２値化誤差にある重み係数を乗じたものを加え、固定閾値により２値化を行う方法である。
【０００５】
図５６は「誤差拡散法」による２値化処理の構成図である。図５６において、ｚ１は入力画像信号、ｚ２は注目画素の画像情報を補正する補正手段、ｚ３は補正画像信号、ｚ４は補正された注目画素の画像情報情報を２値化する２値化手段、ｚ５は２値化画像信号、ｚ６は２値化された注目画素の２値化誤差を算出する２値化誤差算出手段、ｚ７は２値化誤差信号、ｚ８は重み誤差を算出するため誤差フィルタの重み係数を記憶する重み係数記憶手段、ｚ９は２値化誤差算出手段ｚ６で算出した２値化誤差に重み係数記憶手段ｚ８の誤差フィルタ重み係数を乗じて重み誤差を算出する重み誤差算出手段、ｚ１０は重み誤差信号、ｚ１１は重み誤差算出手段ｚ９で算出した重み誤差を記憶する誤差記憶手段、ｚ１２は画像補正信号である。
【０００６】
以下、「誤差拡散法」の２値化処理を詳細に説明する。
【０００７】
スキャナ等の入力装置で読み取られた入力信号ｚ１は、補正手段ｚ２において、画像補正信号ｚ１２により補正処理され、補正画像信号ｚ３として出力される。補正画像信号ｚ３が供給された２値化手段ｚ４は、補正画像信号ｚ３と２値化閾値Τｈ（例えば「８０ｈ」、添付の「ｈ」は「ｈｅｘ」で１６進であることを示す）を用い、補正画像信号ｚ３が２値化閾値Ｔｈより大きけれぼ２値化画像信号ｚ５として「１」（黒画素）を出力し、小さければ「０」（白画素）を出力する。
【０００８】
次に、２値化誤差算出手段ｚ６では、補正画像信号ｚ３と２値化画像信号ｚ５（ただし、ここでは２値化画像信号が「０」のときは「０ｈ」、「１」のときは「ＦＦｈ］とする）との差を算出し、これを２値化誤差信号ｚ７として出力する。
【０００９】
重み係数記憶手段ｚ８に示される誤差フィルタは、一般によく使われている誤差フィルタの構成である。ここで、重み係数記憶手段ｚ８における「＊」は、注目画素の位置を示す。重み誤差算出手段ｚ９では、２値化誤差信号ｚ７に重み係数記憶手段ｚ８の重み係数Ａ、Β、Ｃ、Ｄ（ただし、Ａ＝７／１６、Β＝１／１６Ｃ＝５／１６、Ｄ＝３／１６）を乗じた重み誤差ｚ１０を算出する。
【００１０】
つまり、注目画素の２値化誤差に重み係数Ａ、Β、Ｃ、Ｄを乗じて、注目画素の周辺４画素（重み係数Ａ、Β、Ｃ、Ｄの位置に対応する画素）の重み誤差を算出する。誤差記憶手段４１は、重み誤差算出手段２９で算出した重み誤差ｚ１０を記憶するためのものであり、重み誤差算出手段ｚ９で算出した４画素分の重み誤差は、注目画素「＊」に対してそれぞれｅＡ、ｅΒ、ｅＣ、ｅＤの領域に加算して記憶する。前述した画素補正信号ｚ１２は、「＊」の位置の信号であり、以上の手順で算出した４画素分の重み誤差を蓄積した信号である。
【００１１】
近年、出力装置の階調数（レベル数）が大きい場合の誤差拡散処理においても前述の２値化手段ｚ４を階調数に対応する数だけの閾値を用いる多値化手段に置き換えて用いられるようになっている。
【００１２】
上記の「誤差拡散処理」は注目画素の２値／多値化処理により発生した誤差を、周辺画素に拡散して誤差補正を行うことにより、２値／多値化誤差を最小にするものである。この方法の一つの問題点は出力画像（特に２値化処理の場合）にテクスチャ（ｔｅｘｔｕｒｅ：規則的な模様）が現れるということである。
【００１３】
また上記のフィルタ係数を用いる場合、誤差拡散フィルタリング時に乗算器が必要となるため回路規模が大きくなり、スピードも遅くなるという問題もある。この問題を解決するためにフィルタの係数を２のべき乗にする方法などが提案されているが、出力画像にテクスチャがより目立つようになる。
【００１４】
テクスチャを低減する方法として、フィルタ係数の配置をランダムにする方法があるが、ランダム性が比較的低い。係数値をランダムにする方法も考えられるが、これはランダム係数（Ａ＋Β＋Ｃ＋Ｄ）を１にする条件が必要であり、かなり複雑なものとなる。
【００１５】
係数の変わりにマスクと論理積のみからなる方法も提案されているが、これはスキャナのばらつきノイズなどの相乗効果でテクスチャを低減する高速方法である。しかし、ＣＧ（コンピュータグラフィックス）などのコンピュータにより数値的に生成された画像に関してはそのランダム性は少なくテクスチャの低減は十分ではない。そこで、ビットマスク法のマスク値をランダムにする方法や誤差補正部の論理演算によるテクスチャの低減や閾値処理そのものを論理演算によって施すことによるテクスチャの低減などが提案されている。
【００１６】
しかし、上記の何れの方法もテクスチャの低減あるいは高画質、またはある程度従来の方法と比べて処理速度を早くするための対策であるが、２つの主な欠点を持つ。１つは、読み取り解像度を細かくすると誤差バッファのメモリ容量も対応して大きくなり、コストアップにつながる。もう一つは、処理クロックをさらに上げていくと処理速度が限界に達してしまう問題がある。
【００１７】
【発明が解決しようとする課題】
上記したように、従来の構成では、読取り解像度を上げていくと、必要とする誤差バッファの容量が対応して大きくなり、コストアップにつながる。さらに、処理速度（処理クロック）を上げていくと、現状の構成ではパイプライン処理（または並列処理）が不可能であるため、限界に達してしまう。
【００１８】
そこで、この発明は誤差フィルタの構成、組み合わせと画素毎の誤差フィルタの切り替えによって誤差バッファのメモリ容量の低減、パイプライン処理（並列処理）による高速化を図ることを目的とする。
【００１９】
すなわち、この発明では、従来の誤差フィルタを複数のフィルタに再構成し、処理対象画素毎にフィルタの切り替えを行う。このことにより、画素毎の処理においてすぐ隣の画素に拡散される誤差を避け、１画素おきや複数画素おきになるような構成が可能とすることによって、並列処理やパイプライン処理を可能とし、誤差バッファのアクセス回数の低減による処理速度の改善を図る。
【００２０】
同様に、次のラインに誤差拡散する画素を１画素や複数画素おきになるような構成とすることにより必要となる誤差バッファのメモリ容量の低減を図る。
【００２１】
【課題を解決するための手段】
この発明は、主走査方向に複数の画素でかつ副走査方向に複数のラインからなる処理対象画像における注目画素の画像データを２値／多値化誤差拡散に基づく誤差補正量によって補正した補正画像データを出力する補正手段と、この補正手段による補正画像データを２値／多値化する２値／多値化手段と、この２値／多値化手段により２値／多値化された２値／多値化画像データと上記補正手段による補正画像データとの誤差を算出する算出手段と、上記算出手段により算出された誤差を入力とし、誤差を拡散する画素の異なる複数のフィルタからなるフィルタ群を設け、画素ごとに選択的にフィルタを切り替えることによりフィルタリングを行い、注目画素に対する主走査方向の次の画素への誤差補正量と注目画素に対する副走査方向の次のラインへの誤差補正量とを出力する誤差フィルタリング手段と、この誤差フィルタリング手段により出力される注目画素に対する副走査方向の次のラインへの誤差補正量を、上記主走査方向の各画素ごとに記憶する記憶手段と、注目画素に対する副走査方向の前のラインからの誤差補正量を上記記憶手段から読出す読出し手段と、この読出し手段により読出された注目画素に対する副走査方向の前のラインからの誤差補正量と上記誤差フィルタリング手段により出力される注目画素に対する主走査方向の次の画素の誤差補正量とにより、上記補正手段による注目画素の画像データの補正を行う制御手段を有するものである。
【００３１】
【発明の実施の形態】
以下、この発明の実施例について図面を参照しながら説明する。
【００３２】
なお、この発明は、主に、出力画像として２値化データを得る目的のものとして説明をするが、この場合に限らず、出力画像として多値化データを得る目的のものとしても可能である。
【００３３】
図１はこの発明に係わる画像処理装置の構成を概略的に示したものである。
【００３４】
図１において、例えば、スキャナにより読み取られた画像（入力画像）について、複数ビット（例えば８ビット）の画像データである入力画像データ１Ａが、この画像処理装置の入力画像変換手段２Ａに入力される。入力画像変換手段２Ａは、その後施す画像処理（階調処理）に応じて入力画像データ１Ａを変換するものである。この変換は入力方法、処理方法等によって異なるので、実施例の詳細説明時に詳しく述べる。例えば、後述の誤差バッファ１３のメモリ低減フィルタリング方法を用いて階調処理を行う場合、入力画像変換手段２Ａは、入力画像データ１Ａをそのまま、変換後の入力画像データ１として出力する。また、高速階調処理の場合、主走査方向または副走査方向の複数画素を同時処理を行うので、主走査方向または副走査方向の画素をまとめて出力するものである（主走査方向の２画素並列処理の場合は、処理対象ラインの画素ストリーム１、２、３、４、…等を２画素単位で（１、２）、（３、４）、…などとまとめて出力する）。
【００３５】
変換後の入力画像データ（以降入力画素データ）１は、まず、誤差補正手段２に入力される。すると、誤差補正手段２では、画素毎の入力画素データ１を後述する誤差フィルタリング手段１０から出力される隣の画素への誤差補正量１１（以下は簡単に補正量ｅΤと呼ぶ）と前ラインから拡散される誤差補正量１４（以下、簡単に補正量ｅＰと呼ぶ）により補正するもので、補正制御は、後述の制御信号発生手段１５から発生される誤差補正制御信号１７によって行われる。この誤差補正手段２で補正された補正後の画像データ３は閾値処理手段４及び誤差算出手段６に供給される。
【００３６】
閾値処理手段４は、補正後の画像データ３が１ビットの２値化データまたは２ビット以上の多値化データに変換されて出力画像データ５として出力するものである。この閾値処理手段４から出力される出力画像データ５は、出力画像変換手段４Ａを経て、外部のプリンタ、ディスプレイ装置などの出力装置へ供給されて、入力画像の複製画像を生成すると共に、誤差算出手段６に供給されるようになっている。
【００３７】
出力画像変換手段４Ａは入力画像変換手段２Ａと同様に画像を変換するもので、画像処理（階調処理）手段とその後の出力手段に合わせて出力画像の変換を行うものである。
【００３８】
例えば、画像処理が２画素を並行して行い、出力機器として１画素毎に出力するプリンタを使用する場合は、閾値処理から同時に２画素毎に出力される出力画像データ５を１画素ストリームとして変換を行った後、プリンタへの出力画像データ５Ａとして出力する。このように、この画像処理機器の出力側の要求にあわせて変換を行う手段で、場合によって異なるので、実施例の詳細説明時に詳しく述べることとする。
【００３９】
誤差算出手段６は、補正後の画像データ３と出力画素データ５から注目画素に対して閾値処理を行った、２値化データあるいは多値化データの誤差を算出するものであり、誤差算出手段６で算出される誤差信号７は誤差フィルタリング手段１０に供給されるようになっている。
【００４０】
誤差フィルタリング手段１０は、誤差算出手段６からの誤差信号７と、フィルタパラメータ発生手段８から出力されるフィルタパラメータ９を入力とし、設定されたフィルタ構成に基づき、フィルタ（誤差フィルタ）を画素毎、複数画素毎に切り替えることによりフィルタリング処理を施すものであり、次のラインに対応する誤差補正量１２（以下、簡単にｅＮと呼ぶ）と、同じラインの近傍画素に拡散する補正量ｅＴを出力する。フィルタ切り替え制御などは、後述の制御信号発生手段１５により発生されるフィルタ切り替え制御信号１９によって行われる。
【００４１】
フィルタパラメータ発生手段８は、設定に応じて複数のフィルタパラメータを発生し、それを誤差フィルタリング手段１０に供給するものである。フィルタパラメータのランダム化などにおける制御は、後述の制御信号発生手段１５により発生されるフィルタパラメータ制御信号２０により制御される。
【００４２】
誤差バッファ１３は、誤差フィルタリング手段１０から供給される次のラインヘ拡散すべき補正量ｅΝを蓄える記憶手段であり、誤差補正手段２には処理対象の注目画素に対応する前ラインからの補正量ｅＰを供給する。誤差バッファ１３の書き込み／読み出し制御は、後述の制御信号発生手段１５により発生されるバッファ制御信号１８により制御される。
【００４３】
制御信号発生手段１５は、フィルタパラメータ発生手段８、誤差補正手段２、誤差フィルタリング手段１０、および誤差バッファ１３の書き込み、読み出し等の制御ための制御信号を発生するものである。
【００４４】
外部インターフェース手段１６は、処理速度、コスト等を考慮して、閾値処理手段４やフィルタパラメータ発生手段８や誤差フィルタリング手段１０等の設定を外部からできるような入出力インターフェースである（例えば、タッチパネル、ＬＣＤ表示、キーボード、ＣＲＴディスプレイにより構成されている）。
【００４５】
次に、各ブロックの詳細説明を幾つかの実施例を通じて説明する。
【００４６】
まず、フィルタ切り替えによる誤差バッファ１３のアクセス回数（或いは誤差バッファ１３のメモリ容量）の低減に関する実施例を図２を参照しながら説明を行う。
【００４７】
図２においては、画像処理を１画素毎に行うので、入力変換手段２Ａが不要となり、図１の入力画像データ１Ａと変換後の入力画像データ１が同じものとなる。同様に出力変換処理手段４Ａも不要となるため、図１の閾値処理後の出力画像データ５と変換後の出力画像データ５Ａが同じものとなる。
【００４８】
また、図１の外部インターフェース１６は、画像処理装置内部のフィルタパラメータ等のパラメータや、処理選択などを外部から設定するための一般に使われるインターフェースで、これ以降の実施例でも同様に用いられる。
【００４９】
それ以外に図２は、図１と同様に、誤差補正手段２、閾値処理手段４、誤差算出手段６、フィルタパラメータ発生手段８、誤差フィルタリング手段１０、誤差バッファ１３などから構成されており、その詳細について説明する。
【００５０】
図３は、誤差補正手段２の構成の具体例を示す。
【００５１】
誤差補正手段２は、図３に示すように、加算器１００、１０２、フリップフロップ回路（Ｆ／Ｆ）１０１、１０９、セレクタ１０３、１０４によって構成されている。
【００５２】
図３に示す、加算器１００において、入力画像データ１に、セレクタ１０３の出力１０５が加えられ、前ラインからの補正量により補正された入力画像１０６が出力される。
【００５３】
セレクタ１０３は、後述の制御信号発生手段１５からの誤差補正制御信号１７の一部であるセレクト信号１７Ａが０のとき０を出力１０５とし、セレクト信号１７Ａが１のとき前ラインからの補正量ｅＰを出力１０５とし、それを加算器１００の一つの入力として供給する。
【００５４】
前ラインの補正量により補正された入力画像１０６は、フリップフロップ回路（Ｆ／Ｆ）１０１によって画像クロックに同期されて１クロック分遅延され、遅延されたデータ１０７として出力され、加算器１０２に供給される。
【００５５】
加算器１０２では、遅延された補正画像１０７にセレクタ１０４の出力１０８が加算され、補正後の画像データ３が出力される。
【００５６】
セレクタ１０４は、後述の制御信号発生手段１５からの誤差補正制御信号１７の一部であるセレクト信号１７Βが、０のとき出力１０８を０とし、それ以外は、前画素からの誤差補正量ｅＴがフリップフロップ１０９により１画素遅延された出力１１０を出力１０８とする。
【００５７】
次に、図２の閾値処理手段４の詳細について図４〜図９を参照して説明する。
【００５８】
図４は、比較演算による閾値処理手段で、特に、出力画素データ５として多値化データを得るためには、多値化データとして所望のビット数に対応する出力レベル数（例えば、多値化データのビット数が４であれば、出力レベル数は１６値）を設定すれば良い。出力画像データ５として２値化データを得るためには、出力レベル数を２とすれば良い。
【００５９】
図４では出力レベル数を（ｌ＋１）として説明する。
【００６０】
各出力レベル０、１、２、…、ｌに対応して比較器Η１、Η２、Η３、…、Ηｌが設けられ、各比較器には、誤差補正手段２からの補正後画像データ３が入力されて、それぞれの比較器Η１、Η２、…、Ηｌの出力レベルに応じて予め定められた閾値Τｈ１〜Ｔｈｌとそれぞれ比較され、その比較結果ΗΟ１、ΗΟ２、…、Ηｏｌをそれぞれ出力する。
【００６１】
各比較器Η１、Ｈ２、…、Ηｌ（Ηｉ、ｉ＝１〜ｌ）では、補正補正後の画像データ３と、それぞれに設定された閾値とが比較され、補正後の画像データ３が閾値Ｔｈｉより小さい場合は比較結果Η０ｉとして「０」を出力し、それ以外はΗ０ｉとして「１」を出力する。
【００６２】
エンコーダ１５０は、比較結果Η０ｉをエンコードするもので、比較結果Η０ｉに対応してｌ種類の多値化データを出力画像データ５として出力する。その際、比較結果Η０ｉとエンコーダ１５０から出力される多値化データ（出力画像データ）５の対応の具体例を図５に示す。
【００６３】
出力画像データ５として、２値化データを得る場合は、「０」、「１」の２つのレベルしか存在しないので、図６に示すような構成が可能である。
【００６４】
図６において、比較器１５１は閾値Ｔｈ１と補正後の画像データ３を比較し、補正後の画像データ３が閾値Τｈ１より小さい場合は「０」を出力し、それ以外は「１」を出力するようになっている。
【００６５】
閾値処理手段４としては、これら以外にも様々な構成が考えられる。例えば、図６に示すような２値化データを得るための具体例について図７を参照して説明する。
【００６６】
図７において、例えば１ビット×１ＫのＲＡＭ１５２に、考えられるすべての補正後の画像データ３に対応する２値化データを予め書き込み、補正後の画像データ３をＲＡＭ１５２のアドレス信号として使うことによって、２値化処理が可能である。なお、ＲＡＭ１５２に書き込む変換情報は、例えば、図示しないＣＰＵが予め図示しない変換データが記憶されているＲＯＭから読み出してＲＡＭ１５２に書き込むようにしても良い。また、ＲＡＭ１５２の代わりにＲＯＭを用いても良い。
【００６７】
図６、図７に示すような２値化データを得るための閾値処理手段は、外部から閾値Τｈ１を設定できるようになっている。
【００６８】
一方、閾値Ｔｈ１が固定の場合は、図８に示すような構成が可能である。
【００６９】
図８は、論理回路を用いて、例えば、閾値としてΤｈ１＝７Ｆ（１６進法による表示で、以下、７Ｆｈと表現する）と比較し、補正後の画像データ３が７Ｆｈより小さいときは、出力デ＝タ５が「０」となり、それ以外は「１」となるよう論理が組まれている。
【００７０】
例えば、図９に示すように、補正後の画像データ３が符号１ビット（ｂ９）と絶対値ビット（ｂ０〜ｂ８）で構成されるものとし、閾値Ｔｈ１＝７Ｆｈのビット展開は「０１１１１１１１」であるので、図８に示すように、アンド回路Ａ１〜Ａ３によって補正後の画像データ３の下位ビット（ｂ０〜ｂ６）すべてが１の場合はアンド回路Ａ３の出力が「１」となり、それ以外は「０」となる。さらに、オア回路Ａ４には、アンド回路Ａ３の出力と、補正後の画像データ３の８ビット目（ｂ７）、補正後の画像データ３の９ビット目（ｂ８）が入力される。補正後の画像データ３がΤｈ１より大きい場合は、オア回路Ａ４の他の２つの入力のうち、どちらかが「１」となる。
【００７１】
また、補正後画像データ３のサインビットと、オア回路Ａ４の出力をアンド回路Ａ５に入力して、補正後の画像データ３が負の場合は、アンド回路Ａ４の出力を強制的に「０」とする。よって、補正後の画像データ３が７Ｆｈに等しいか７Ｆｈより大きい場合はアンド回路Ａ５の出力が「１」となり、それ以外は「０」となる。
【００７２】
ここでは、閾値Ｔｈ１が７Ｆｈの場合について説明したが、閾値Τｈ１が７Ｆｈ以外の場合でも同様に、比較回路を構成することが可能である。
【００７３】
このように論理回路による閾値処理手段は回路規模が小さく、高速に比較演算力何能だが、欠点としては閾値が固定で、外部設定は不可能であるということである。
【００７４】
次に、図２の誤差算出手段６について、図１０を参照して説明する。
【００７５】
図１０において、誤差算出手段６は、閾値処理手段４から出力される出力画像データ５（２値化データ或いは多値化データ）を８ビットに変換するビット変換手段６ａと、このビット変換手段６ａから供給される変換データと補正後の画像データ３との誤差を算出する減算器６ｂから構成され、減算器６ｂから誤差信号７が出力されるようになっている。
【００７６】
例えば、出力画像データ５が２値化データの場合、ビット変換手段６ａは、８ビット×２のメモリ（例えばＲＯＭ）を用いて構成され、閾値Ｔｈ（１）＝７Ｆｈに対して２値化データが「０」の時、変換データを「００ｈ」とし、２値化データが１の場合は変換データを「ＦＦｈ」とする（「ｈ」は１６進の値を示す）。
【００７７】
出力画像データ５が多値化データの場合も同様に出力レベルに対応して、複数のメモリを用いて、それぞれの変換データを求めるようにすれば良い。
【００７８】
次に、フィルタパラメータ発生手段８について、図１１から図１８を参照しながら説明する。
【００７９】
図１１は従来の誤差拡散法の誤差フィルタのモデルである。＊で示す注目画素の２値／多値化誤差に対応して周辺画素Ａ、Β、Ｃ、Ｄの値を補正することにより全体の階調を保存する。フィルタの方式によってＡ、Β、Ｃ、Ｄ画素に対応する係数値が変わるが、従来の係数と誤差の乗算による方式では、Ａ、Β、Ｃ、Ｄに対応する係数ΚＡ、ΚΒ、ＫＣ、ＫＤの総和は１となる必要がある。
【００８０】
つまり、ΚＡ＋ΚΒ＋ΚＣ＋ΚＤ＝１
一方、誤差と係数（この方式マスクと呼ぶ）の論理積によるフィルタリング方式ではマスク値をＭＡ、ＭΒ、ＭＣ、ＭＤとすると、その総和は２５５（最大誤差は８ビットに対応する場合）、
つまり、ＭＡ＋ＭΒ＋ＭＣ＋ＭＤ＝２５５
で、ＭＡ、ＭΒ、ＭＣ、ＭＤのすべてを総合的に考察した場合は、各ビットが必ず１回だけ１となる必要がある。
【００８１】
以降は、係数と誤差の乗算によるフィルタリング方法を「算術演算によるフィルタリング」と呼び、マスクと誤差の論理積によるフィルタリングを「論理演算によるフィルタリング」と呼ぶ。また各方法のフィルタ値の設定条件は下記のとおりとなる。
【００８２】
Ａ）算術演算によるフィルタリング
１）フィルタ係数の総和＝１．０
Β）論理演算によるフィルタリング
１）マスク値の総和＝２５５（最大誤差の絶対値＝８ビット）
２）すべてのマスクを総合てきに考察した場合は各ビットが一回のみ１となっている。
【００８３】
この発明では、従来と異なり、図１２（ａ）（ｂ）、図２３（ａ）〜（ｄ）、図２４（ａ）〜（ｃ）等に示すように複数のフィルタを用い、画素毎や複数画素毎にフィルタを切り替えながら処理を行う。
【００８４】
まず、誤差バッファ１３の書込み読出し回数およびメモリ容量の半減化に利用できる幾つかのフィルタ構成について述べる。
【００８５】
図１２に示すフィルタＦ１とフィルタＦ２を画素ごとに切り替えて処理を行うことにより誤差バッファ１３の書込み読出し回数（アクセス回数）およびメモリ容量の削減が可能である。図１３においては、フィルタＦ１を各ラインの画素１、３、５、…、等の奇数画素に使用し、フィルタＦ２を２、４、６、…、等の偶数画素に使用することにより、図に示すように、対応する次のラインの奇数画素のみに誤差が拡散するため誤差バッファの書込み読出し回数およびメモリ容量が半分になる。また、同様にフィルタＦ２を奇数画素、フィルタＦ１を偶数画素に用いると、次ラインの偶数画素のみに誤差が拡散するため、同じ効果が得られる。
【００８６】
論理演算によるフィルタリングの場合は、図１２のフィルタ＝Ｆ１の隣接画素ＡとＣのマスク値ＭＡとＭＣの総和は２５５となり、条件Βの２）が満足され、フィルタＦ２の隣接する画素Ａ、Β、とＤのマスク値ＭＡ、ＭΒ、とＭＤの総和は２５５となり、条件Βの２）が満足される。同様に算術演算によるフィルタリングの場合はフィルタＦ１の係数の総和とフィルタＦ２の係数の総和はそれぞれ１となる様に設定される。
【００８７】
次に、図１２のフィルタＦ１とフィルタＦ２において、論理演算に基づくマスク値発生についての実施例を述べる。
【００８８】
一番簡単な例を図１４（ａ）（ｂ）に述べるように予め外部から上記の条件Βを満足するように設定する。例えば、図１４（ａ）に示すフィルタＦ１におけるマスク値の総和は２５５となっており、上記の条件Βの１）を満足する。さらに、図１４（ａ）のマスクＭＡ１、ＭＣ１を総合的に考察すると各ビットが一回のみ１になっており、条件Βの２）も満足されている。同様に図１４（ｂ）に示すフィルタＦ２が条件Βを満足するように設定されている。図１４（ａ）のフィルタＦ１のマスク値ＭＣをフィルタＦ２のマスク値ＭＡと同じ設定としているが、その代わりに、全く別の値を設定しても良い。その場合は最大誤差の値は閾値等によって多少多くなる可能性があり、誤差バッファ１３のメモリ容量は、半分より若干増える可能性がある（誤差バッファ１３のアドレス数は半減するが、各アドレスのビット数が増える可能性がある）。
【００８９】
図１４（ａ）（ｂ）に示す設定以外にも上記条件Βの１）とΒの２）を満足する様々な設定が考えられる。また、同様に算術演算においては、マスク値の代わりに係数を上記の条件Ａ−１）が満足するように設定を行えば良い。
【００９０】
算術演算による誤差フィルタリング法は、テクスチャの発生と乗算によるフィルタリング等の問題があったが、そのテクスチャの問題や回路の簡略化によるフィルタリングの改善等を行った処理が「論理演算によるフィルタリング法」である。テクスチャ問題のさらなる改善案としてランダムマスクの発生などが考えられる。
【００９１】
次に、図１２のフィルタにおけるマスク値のランダム発生を図１５に示す。図１５（ａ）は、図１２（ａ）のフィルタＦ１に対応するもので、図１５（ｂ）は、図１２（ｂ）のフィルタＦ２に対応するものである。図１５（ａ）、図１５（ｂ）においては、Ｍ１、Ｍ２はＭ系列といわれる、次数ｍに対応して周期（２ｍ−１）となるような最大周期疑似ランダム系列である。
【００９２】
また、論理反転処理部Ｎ１、Ν２はビット毎の論理反転処理を行い、論理積処理部Ｌ１は、ビット毎の論理積を行う処理である。図１５（ａ）に示す、ＭＡ１、ＭＣ１は、フィルタＦ１の隣接画素ＡとＣに対応するマスク値であり、図１５（ｂ）に示すＭＡ２、ＭΒ２、とＭＤ２は、フィルタＦ２の隣接画素Ａ、Β、とＤに対応するマスク値である。図１５では次数８のＭ系列を用いているが、次数９以上のＭ系列を発生させ、その中から、任意の８ビットのみを利用することも可能である。
【００９３】
さらに、図１６に示すように、８ビットをＭ１１（３次）、Ｍ１２（３次）、Ｍ１３（２次）のＭ系列に分割して８より小さい次数の組み合わせとして利用することも可能である。またＭ１、Ｍ２、などを別々の次数のもの（例えば、次数８、９）或いは、同じ次数で、後述する様な、別々の特性多項式（Ｃｈａｒａｃｔｅｒｉｓｔｉｃ  Ρｏｌｙｎｏｍｉａｌｓ）を用いて発生することもできれば、同じＭ系列で、互いに独立になるように２つのシフトによって発生させることも可能である。
【００９４】
図１２（ａ）のフィルタＦ１に対応する、図１５（ａ）によって発生されるマスクＭＡ１、ＭＣ１と図１２（ｂ）のフィルタＦ２に対応する、図１５（ｂ）によって発生されるマスクＭＡ２、ＭΒ２、ＭＣ２は、条件Βの１）と２）を満足するため漏れなく誤差が拡散される。
【００９５】
Ｍ系列（疑似ランダム系列）発生手段の具体例を図１７に示す。これは次式の特性多項式（Ｃｈａｒａｃｔｅｒｉｓｔｉｃ  Ｐｏｌｙｎｏｍｉａｌ）を具体化したものである。全ての演算は、ガルワ体（Ｇａｌｏｉｓ  Ｆｉｅｌｄ）２上の演算（簡単に述べるとバイナリＸＯＲ演算）である。
【００９６】
Ｘ８＝Χ５＋Ｘ３＋Ｘ１＋Χ０
図１７に示したＭ系列の発生手段は、シフトレジスタ（フリップフロップ回路で構成される）１７０ａから１７０ｈと、エクスクルーシブオア回路１７１ａ、１７１ｂ、１７１ｃから構成され、各シフトレジスタ１７０ａ〜１７０ｈの初期値は「０」以外のものとし、制御クロック発生手段、から入力される制御クロック信号に同期して、それぞれのレジスタの各ビット（１７０ａ〜１７０ｈ）を右へシフトすれば、各レジスタから出力される値、すなわち、マスク値は、「０１ｈ」〜「Ｆｆｈ」の値について、１周期（２５５）クロック内に１回のみランダム（擬似的）に現れるように構成されている。また別の多項式を用いると出力の現れ方の順番が変わる。
【００９７】
同様に前述の「算術演算によるフィルタリング」方法においても条件Ａの１）を満足するように係数をランダムに発生することも可能である。
【００９８】
また、対応するフィルタの近傍画素の数だけの係数やマスク値を予め設定し、その値をランダムに近傍画素のマスク値や係数として使うことも可能である。
【００９９】
例えば、図１２（ａ）のフィルタＦ１に対応して、図１４（ａ）に示す２つのマスク値をｍ１、ｍ２とし、図１２（ｂ）のフィルタＦ２に対応して、図１４（ｂ）に示す３つのマスク値ｍ１、ｍ２、ｍ３とし、図１８（ａ）に示す（２×１６）と図１８（ｂ）に示す（６×２４）のルックアップテーブルを作成し、それを図１８（ａ）の場合は２次以上疑似ランダム系列の任意の１ビットをアドレスとして使用し、対応するテーブルの内容をＭＡ１とＭＣ１とすることにより、予め設定したマスクの位置のランダム化が可能とする。同様に、図１８（ｂ）の場合は、３次以上のＭ系列を発生させ、任意の３ビットを選択し、その値を６で割り算したときの余りをアドレスとして使用し、対応するテーブルの内容をＭＡ２、ＭΒ２、ＭＤ２とすることによりマスクの位置をランダムに設定できる。
【０１００】
ここではマスクの位置のランダム化を説明するが、係数の位置をランダムにする方法も同様なものである。同様にその他のランダム数値発生手段を用いることも可能である。
【０１０１】
次は図２の制御信号発生手段１５の詳細について説明する。制御信号発生手段１５はフィルタパラメータのランダム化を制御する制御クロック発生する手段である。
【０１０２】
図１９にライン毎制御信号発生手段の実施例を示し、対応するタイミング図を図２０（ａ）〜（ｇ）に示す。図２０（ｂ）に示すライン同期信号２２のインバータ１８５ａによる反転信号１８５ｄ（図２０（ｃ）に示す）と、ライン同期信号２２をフリップフロップ回路１８５ｂにより１画素遅延した遅延信号１８５ｅ（図２０（ｄ）に示す）のアンド回路１８５ｃによる論理積によりライン毎のランダム化に必要なライン制御クロック１８５ｆが出力される。
【０１０３】
画素毎のライン制御クロック１８５ｆの発生においては、図２０（ａ）に示す入力される画素クロック２１そのものを画素毎制御クロックとして出力され、セレクタ１８５ｈによりセレクト信号１８５ｇが０の場合はライン毎制御クロック１８５ｆがフィルタパラメータ制御信号２０として出力され、セレクト信号１８５ｇが１の場合は、画素クロック２１がフィルタパラメータ制御信号２０として出力される。セレクト信号１８５ｇが、外部インタフェースによって設定される。
【０１０４】
また、設定に応じて、画素クロック２１をベースにした画素クロック２１毎や複数画素クロック毎のランダム化、またはライン同期信号２２をベースにしたライン毎や複数ライン毎のランダム化を行うための制御信号を発生することも可能である。
【０１０５】
フィルタパラメータをラインまたは複数ライン毎にランダム化する一つの利点は、必要とする誤差バッファ１３のビット数が制御できる（例えば９ビットのＦＩＦΟ等）。
【０１０６】
セレクト信号１７Βは、隣の画素からの補正信号を制御するもので、図１２（ａ）（ｂ）のフィルタでは、毎画素ごとに誤差拡散されてくるので、図２０（ｇ）に示すように既にハイ（１或いはＶｃｃ）の状態になっている。また、前ラインからのセレクト信号１７Ａ、フィルタリング切り替え制御信号１９、誤差バッファ１３の書き込み／読み出し制御信号としてのバッファ制御信号１８等を１画素おきに行うので、図１９の画素クロック２１を、ライン同期信号２２に同期して分周したものを使用する。この場合、分周器１８５ｉとこの分周器１８５ｉの分周出力１８５ｊを反転するインバータ回路１８５ｋにより構成されている。そのタイミングを図２０（ｆ）に示す。
【０１０７】
後述のように誤差フィルタの構成は様々だが、そのうち図１２（ａ）（ｂ）のフィルタを例にして図２の誤差フィルタリング手段１０を説明する。フィルタリング手段１０は、誤差算出手段６からの２値／多値化誤差とフィルタパラメータ発生手段８から発生されるフィルタパラメータ９とを入力とし、誤差を補正量として隣接画素に補正量を配分するものである。誤差フィルタリング手段１０は、前述の様に「算術演算によるフィルタリング手段」と「論理演算によるフィルタリング手段」等が考えられるが、ここでは誤差算出手段６から出力される誤差量都市手の誤差信号７と、フィルタパラメータ発生手段８からパラメータとして出力されるフィルタマスク値としてのフィルタパラメータ９の論理演算によるフィルタリングについて説明する。
【０１０８】
誤差とマスクの論理演算によるフィルタの詳細を図２１を参照しながら説明する。図２１における誤差フィルタリング手段１０は、フィルタ切り替え手段２１、ビットマスク手段２２、２っの遅延回路としてフリップフロップ回路２３ａ、２３ｂ、および２つの加算器２４ａ、２４ｂによって構成されている。また、フィルタ切り替え手段２１は４つのセレクタ２１ａ〜２１ｄにより構成されており、ビットマスク手段２２は、４つのビットマスク演算手段２２ａ〜２２ｄにより構成されている。
【０１０９】
図２１の誤差バッファ１３は、ラインバッファ２５により構成され、これはファーストイン−ファーストアウトのバッファである。
【０１１０】
図２１のフィルタ切り替え手段２１は、前述の制御信号発生手段１５から発生される図２２の（ｈ）に示すフィルタ切り替え制御信号１９により図２２（ｃ）〜（ｆ）に示すように、切り替えられる。つまり、奇数画素の時、セレクタ２１ａ〜２１ｄを通じて隣接する画素Ａ、Β、Ｃ、Ｄにおいて、図１２（ａ）に示すフィルタＦ１に対応するマスク値ＭＡ１、ＭＣ１のみを出力し、それ以外を０とする。同様に、奇数画素の場合、セレクタ２１ａ〜２１ｄを通じて隣接する画素、Ａ、Β、Ｃ、Ｄにおいて、図１２（ｂ）に示すフィルタＦ１に対応するマスク値ＭＡ２、ＭΒ２、とＭＤ２のみを出力し、それ以外を０とする。
【０１１１】
逆に、制御信号１９を反転させて使用することによって、奇数画素に、図１２（ｂ）のフィルタＦ２と、偶数画素の時、図１２（ａ）フィルタＦ１を使用することもできる。ここでは、すべてのラインの第１画素において、同じフィルタを使用したが、それをライン毎に切り替え、或いはランダムに切り替えることも可能である。
【０１１２】
本実施例では、ビットとマスクの論理演算による誤差フィルタリング手段１０は、上記のように図１２のフィルタの構成を用いており、画素毎にフィルタを切り替える、つまり注目画素と同じラインのすぐ隣の画素と、隣接する１ライン後の真下の画素に２値化誤差補正量を算出するフィルタＦ１と、注目画素と同じラインの次ぐ隣の画素と、隣接する１ライン後の左下と右したの画素に２値化誤差補正量を算出するフィルタＦ２を画素毎に切り替えてフィルタリングを行い、対応する隣接画素におけるマスク値ＭＡ１、ＭＣ１、ＭＡ２、ＭΒ２、ＭＤ２（ファイルパラメータ９）が図２に示すフィルタパラメータ発生手段８から入力される。
【０１１３】
各々の周辺画素に拡散すべき誤差はビットマスク演算手段２２ａ〜２２ｄにより算出される。それは図２２（ｇ）に示すように誤差信号７とフィルタ切り替え手段２１の出力ＭＡ、ＭΒ、ＭＣ、ＭＤとのビットマスク演算により算出され、それぞれに拡散すべき誤差ｅＡ、ｅΒ、ｅＣ、ｅＤが得られる。それにより、誤差ｅＡが対応する次の画素における誤差補正量１１（ｅＴ）となり、誤差ｅＤと誤差ｅＣの１画素遅延されたものと誤差ｅＢの２画素遅延されたものが１つにまとめて次のラインの画素への誤差補正量１２（ｅＮ）として出力される。
【０１１４】
そのタイミングなどの１例を図２２（ｇ）のフィルタ出力として示す。また制御信号発生手段１５から発生されるバッファ制御信号１８をバッファ書き込み読みだし信号として使うと、例えば、バッファ制御信号１８がハイ（レベル１）の時のみラインバッファ２５の読み出しして書き込みを行うと、必要な誤差補正量１２（ｅＮ）（つまり０を除いたデータ）を蓄えることができ、従来と比較して誤差バッファ１３のメモリ容量の半減ができる。
【０１１５】
上記は、誤差とマスクの論理演算によるフィルタの詳細について説明したが、誤差と係数の算術演算によるフィルタも同じ構成によって実現可能である。しかし、図２のフィルタパラメータ発生手段８は、マスク値の代わりにフィルタＦ１において係数ΚＡ１、ΚＣ１、フィルタＦ２において係数ΚＡ２、ΚΒ２、ΚＤ２を発生する。また、誤差フィルタリング手段１０において、図２１のビットマスク演算手段２２ａ〜２２ｄのビットマスク演算の代わりに算術演算（乗算）によるフィルタリングに置き換えれば良い。
【０１１６】
上記の実施例では図１２（ａ）（ｂ）のフィルタを例にして詳細を説明したが、フィルタの構成としてこれ以外にも様々な構成が考えられる。それを図２３（ａ）〜（ｄ）、図２４（ａ）〜（ｃ）に示す。
【０１１７】
図２３のフィルタは、図２３（ａ）〜（ｄ）に示す４つフィルタＦ１〜Ｆ４から構成されており、各フィルタＦ１〜Ｆ４を４画素おきに繰り返すことにより誤差バッファ１３のアクセス回数およびそのメモリ容量の半減を達成できる。
【０１１８】
例えば、誤差とマスクの論理演算によるフィルタリングを考えると、主走査方向の画素１、５、９、…、などにマスクＭＡ１、ＭＣ１のフィルタＦ１、画素２、６、１０、…、などにマスクＭＡ２、ＭＤ２のフィルタＦ２、画素３、７、１１、…、等にマスクＭＡ３、ＭΒ３のフィルタＦ３、画素４、８、１２、…、などにマスクＭＡ４、ＭＣ４のフィルタＦ４を使用することによりフィルタリングを行う。そのタイリングを図２５、図２６、図２７に示す。
【０１１９】
図２５のタイリングは、上記のようにフィルタＦ１〜フィルタＦ４を各ライン（副走査）に用いることによりフィルタリングを行う。従って、各主走査方向の画素、１、４、５、８、９、１２、１３、…などにその前のラインから誤差が拡散され、その画素における情報のみを書き込み、読み出しすればバッファが半減される。上記では、画素１に関するフィルタをＦ１としたが、Ｆ１の代わりにＦ２を使用し、フィルタＦ２、Ｆ３、Ｆ４、Ｆ１の順に切り替えても良い。
【０１２０】
しかしこの場合は、各主走査方向の画素３、４、７、８、１１、１２、…などにその前のラインから誤差が拡散される。また、Ｆ１の代わりにフィルタＦ３を使用し、フィルタＦ３、Ｆ４、Ｆ１、Ｆ２の順の切り替え、或いは、Ｆ１の代わりにフィルタＦ４を使用し、フィルタＦ４、Ｆ１、Ｆ２、Ｆ３の順に切り替えることも可能である。対応して、この二つの場合、それぞれ、各主走査方向の画素２、３、６、７、１０、１１、、…など、或いは、各主走査方向の画素１、２、５、６、９、１０、１３、１４…などにその前のラインから誤差が拡散される。
【０１２１】
図２６のタイリングでは、上記と同様に第１ライン、第５ライン、第９ライン、…などにおいては、フィルタＦ１を画素１、５、９、…等に使用し、フィルタＦ２を画素２、６、１０、…等に使用し、フィルタＦ３を画素３、７、１１、…等に使用し、フィルタＦ４を画素４、８、１２、…等に使用するが、第２ライン、第６ライン、第１０ライン、…等においては、フィルタＦ２を画素１、５、９、…等に使用し、フィルタＦ３を画素２、６、１０、…等に使用し、フィルタＦ４を画素３、７、１１、…等に使用し、フィルタＦ１を画素４、８、１２、…等に使用し、第３ライン、第７ライン、第１１ライン…等においては、フィルタＦ３を画素１、５、９、…等に使用し、フィルターＦ４を画素２、６、１０、…等に使用し、フィルタＦ１を画素３、７、１１、…等に使用し、フィルタＦ２画素を４、８、１２、…等に使用し、第４ライン、第８ライン、第１２ライン…等においては、フィルタＦ４を画素１、５、９、…等に使用し、フィルターＦ１を画素２、６、１０、…等に使用し、フィルタＦ２を画素３、７、１１、…等に使用し、フィルタＦ３を画素４、８、１２、…等に使用することにより、副走査方向のフィルタ開始順番変えることも可能である。
【０１２２】
つまり、副走査方向に第１画素におけるフィルタをＦ１、Ｆ２、Ｆ３、Ｆ４として４ライン毎に繰り返すことができる。この場合は、第１、５、９、…等のラインからそれぞれ第２、６、１０、…等ラインの画素１、４、５、８、９、１２、１３、…等に誤差が拡散され、第２、６、１０、…等のラインからそれぞれ第３、７、１１、…等のラインの画素３、４、７、８、１１、１２、…等に誤差が拡散され、第３、７、１１、…等のラインからそれぞれ第４、８、１２、…等のラインの画素２、３、６、７、１０、１１、…等に誤差が拡散され、第４、８、１２、…等からそれぞれ第５、９、１３、…等の画素１、２、５、６、９、１０、…に誤差が拡散される。従って、図２５と異なり、４ライン周期で、ライン毎に、誤差の書き込み、読み出し位置が変わるが、誤差バッファ１３のメモリ容量は半減される。
【０１２３】
ここでは、副走査方向の第１画素におけるフィルタをＦ１、Ｆ２、Ｆ３、Ｆ４としてライン毎に図２５と同様にフィルタを繰り返すことを説明したが、副走査方向の第１画素のフィルタを（Ｆ２、Ｆ３、Ｆ４、Ｆ１）の順、（Ｆ３、Ｆ４、Ｆ１、Ｆ２）の順、或いは（Ｆ４、Ｆ１、Ｆ２、Ｆ３）の順で行うことが可能である。しかし、各ラインの拡散される画素位置も対応して変わる。
【０１２４】
同様に、図２７を使用すると副走査方向に、フィルタＦ１、Ｆ３から開始するフィルタの切り替えを２ラインごとに繰り返して行うことが可能である。この場合は、第１、３、５、…等のラインからそれぞれ第２、４、６、…等のラインの画素１、４、５、８、９、…等の画素に誤差が拡散され、第２、４、６、…等のラインからそれぞれ第３、５、７、…等の画素２、３、６、７、１０、１１、…等に誤差が拡散される。従って、２ライン周期で、ライン毎に誤差の書き込み、読み出し位置が変わる。
【０１２５】
また、副走査方向にフィルタ（Ｆ３、Ｆ１）順、フィルタ（Ｆ２、Ｆ４）或いはフィルタ（Ｆ４、Ｆ２）の順でも繰り返してフィルタリングを行うことができ、対応して拡散される画素位置も変わる。
【０１２６】
図２６のタイリングを使うと副走査方向に周期的にフィルタの開始を決めているが、それをランダム化することにより、開始フィルタをランダムに設定することも可能である。例えば、図２６の例では第１、５、９、…等のラインにおいてはフィルタ（Ｆ１、Ｆ２、Ｆ３、Ｆ４）の順に、第２、６、１０、…等のラインにおいては、フィルタ（Ｆ２、Ｆ３、Ｆ４、Ｆ１）の順に、第３、７、１１、…等のラインにおいては、フィルタ（Ｆ３、Ｆ４、Ｆ１、Ｆ２）の順と、第４、８、１２、…等のラインにおいては、フィルタ（Ｆ４、Ｆ１、Ｆ２、Ｆ３）の順にフィルタの切り替えを行うので周期性がある。その周期性を崩すために、各ライン毎に上記の４つの切り替え順から１つをランダムに選ぶことも可能である。しかし、この場合は、フィルタの選択によって次のラインにどの画素順に誤差が拡散されるかが変わるので、それを記憶しておく必要がある。
【０１２７】
例えば、フィルタ（Ｆ１、Ｆ２、Ｆ３、Ｆ４）を００、フィルタ（Ｆ２、Ｆ３、Ｆ４、Ｆ１）は０１、フィルタ（Ｆ３、Ｆ４、Ｆ１、Ｆ２）を０２、フィルタ（Ｆ４、Ｆ１、Ｆ２、Ｆ３）を０３とラベル付け、３次以上のＭ系列を使用し、その中から任意の２ビット、或いは、出力のΜｏｄｕｌ０−３演算（出力割る３の余り）をフィルタ選択とすれば、上記のなかから一つが選択される。もしランダム発生は００、０３、０１、…等とすれば、第１ラインから第２ラインへの拡散される箇所は、１、４、５、８、９…画素となり、第２ラインから第３ラインへの拡散される箇所は、１、２、５、６、…画素となり、第３ラインから第４ラインへの拡散される箇所は、３、４、７、８、１１、…画素となる。ランダム発生方法、初期値等によって乱数が変わるので、処理対象ラインの誤差読み出しに関しては、１ライン前の対応する書き込み順を再発生する必要がある。
【０１２８】
上記のフィルタ（Ｆ１、Ｆ２、Ｆ３、Ｆ４）の順の切り替えの組み合わせとして図２８のテーブルに示すように２４の組み合わせが可能である。その中でフィルタＦ３を施した後フィルタＦ２を施す組み合わせ（ＮＧと示す）以外は全て利用可能であるが、その場合のタイリング等が各ケースによって異なってくる。また使用可能な組み合わせをライン毎に周期的或いはランダムに変えることも可能である。
【０１２９】
今までは誤差バッファ１３のアクセス回数およびメモリ容量を半減できるフィルタ構成を説明したが、図２４の（ａ）〜（ｃ）に示すような構成を用いると誤差バッファ１３のアクセス回数およびメモリ容量を１／３にすることが可能である。図２４の（ａ）〜（ｃ）に示すフィルタＦ１、フィルタＦ２、フィルタＦ３をフィルタ（Ｆ１、Ｆ２、Ｆ３）の順の切り替え、フィルタ（Ｆ２、Ｆ３、Ｆ１）の順の切り替え、フィルタ（Ｆ３、Ｆ１、Ｆ２）の順の切り替えの組み合わせで利用可能である。図２４の（ａ）〜（ｃ）に示すフィルタにおけるタイリングの例を図２９、図３０、図３１に示す。
【０１３０】
図２９のタイリングΤ１においては、図２４の（ａ）〜（ｃ）に示す各フィルタを各ライン毎にフィルタ（Ｆ１、Ｆ２、Ｆ３）の順に切り替えてフィルタリングを行う。つまり、副走査方向の各ラインにおいて、フィルタＦ１を画素１、４、７、１０、…の順に使用し、フィルタＦ２を画素２、５、８、…の順に使用し、フィルタＦ３を画素３、６、９、…の順に使用することにより、フィルタリングを行う。この場合は、各ラインの画素２、５、８、１１、…に前ラインから誤差が拡散されてくる。
【０１３１】
また、上記のように、フィルタの順番をフィルタ（Ｆ１、Ｆ２、Ｆ３）からフィルタ（Ｆ２、Ｆ３、Ｆ１）の順に変えても良い。しかしこの場合、各ラインの画素１、４、７、１０、…に前ラインから誤差が拡散されてくる。同様にフィルタの順番をフィルタ（Ｆ３、Ｆ１、Ｆ２）の順に変えると、各ラインの画素３、６、９、１２、…に前ラインから誤差が拡散される。
【０１３２】
図３０と図３１は各ライン毎にフィルタの開始順を変えたもので図２６と図２７のタイリングと同様なものである。
【０１３３】
図３０においては、副走査方向の第１、４、７、…ラインからそれぞれ第２、５、８、…ラインの画素２、５、８、…に誤差が拡散され、第２、５、８、…ラインからそれぞれ第３、６、９、…の画素１、４、７、…に誤差が拡散され、第３、６、９、…ラインからそれぞれライン４、７、１０、…の画素３、６、９、…に画素が拡散される。
【０１３４】
同様に、図３１においては、副走査方向の第１、４、７、…ラインからそれぞれ第２、５、８、…ラインの画素２、５、８、…に誤差が拡散され、第２、５、８、…ラインからそれぞれ第３、６、９、…の画素３、６、９、…に誤差が拡散され、第３、６、９、…ラインからそれぞれライン４、７、１０、…の画素１、４、７、…に画素が拡散される。
【０１３５】
図２９、図３０、図３１においても図２５、図２６、図２７の説明と同様に副走査方向のフィルタ切り替えの順番のランダム化等も可能である。
【０１３６】
フィルタ切り替えによる誤差バッファ１３のアクセス回数およびメモリ容量の低減に関する第１の実施例の動作を図２を参照しながらまとめて説明すると、誤差補正手段２により処理対象画素の読み取り値が前ラインまたは前画素から拡散される誤差補正量をもとに補正され、補正後の画素データ３が閾値処理手段４により外部から予め設定された閾値をもとに２値／多値化が行われ、画像処理装置の出力画像データ５として出力される。２値／多値化された出力画像データ５と補正後の画素データ３から閾値処理による誤差信号７が誤差算出手段６により算出される。
【０１３７】
誤差フィルタリング手段１０は、閾値処理による誤差信号７と、フィルタパラメータ発生手段８により発生されるフィルタパラメータ９を入力とし、制御信号発生手段１５により発生されるフィルタ切り替え制御信号１９をもとにフィルタを切り替えながら周辺画素における誤差補正量１１、１２を算出し、次ぐ隣りの画素への誤差補正量１１を次の画素にフィードバックし、次のラインへの誤差補正量１２を誤差バッファ１３に制御信号発生手段１５より発生されるバッファ制御信号１８をもとに書き込みを行う。さらに、バッファ制御信号１８をもとに、前ラインからの誤差補正量１４（ｅＰ）が誤差バッファ１３から読み込まれる。
【０１３８】
また誤差補正手段２は、制御信号発生手段１５より発生される、誤差補正制御信号１７のセレクト信号１７Ａ、１７により、補正を行うか否かの補正制御を行う。制御信号発生手段１５は、外部入出力インターフェース手段１６より指定された、フィルタ等の内容に基づいて、補正、フィルタ切り替え、誤差バッファ１３へのデータの書き込み、誤差バッファ１３からのデータの読み出しまたは、フィルタパラメータのランダム化等の制御を行う。
【０１３９】
上記のフィルタ切り替え方法を用いることにより、誤差バッファ１３のアクセス回数およびメモリ容量の低減が可能であり、コストダウンにつながる。例えば、解像度を４００ｄｐｉから６００ｄｐｉに上げた場合でも同じコストで同等以上の階調処理が得られると考えられる。さらに、領域判定等を行い、階調処理が必要な領域のみにこの方法を用い、解像度を必要とする領域にはそれにあった処理を適応的に施すことにより解像度と階調性の両立も考えられる。
【０１４０】
また、多値出力の場合は、２値の場合と比較して誤差量が少ないため、従来のフィルタを用いても全ての近傍に拡散される可能性が少ない。従って、この方法を用いて、従来と同じレベルの画質をより少ない誤差バッファのメモリで実現可能である。
【０１４１】
次は、この発明の第２の実施例としてフィルタ切り替えによる高速処理について図３２を参照しながら説明する。図３２の高速処理構成におけるフィルタの例を図３３（ａ）（ｂ）または図３４（ａ）（ｂ）に示す。図３５（ａ）（ｂ）のフィルタは、高速処理および誤差バッファ１３のメモリ容量の低減が得ることが可能な構成となっている。
【０１４２】
図３３（ａ）（ｂ）、図３４（ａ）（ｂ）、図３５（ａ）（ｂ）のフィルタの構成を考え、図３２の画像処理装置の動作をまとめて説明する。
【０１４３】
図３２の基本構成は図１と同様なものであり、入力画像変換手段２Ａは画素毎に入力される主走査方向の画素ストリームを２画素同時処理できるように変換するもので、入力画素ストリーム１Ａを制御信号発生手段１５により発生される入力画素変換制御信号２３に基づいて２画素にまとめて変換する。
【０１４４】
変換後の２画素ストリーム１が誤差補正手段２で２画素並列に補正され、補正後の画像データ３は閾値処理手段４で２画素並行して閾値処理される。閾値処理の出力画像データ５が２画素単位で出力され、この画像処理機器の出力側に接続される出力機器に応じて出力画素変換手段４Ａにより、出力画素変換制御信号２４に基づいて変換され、変換後の出力画像データ５Ａが出力される。例えば、１画素ごとに出力するプリンタを接続した場合は、２画素ストリームを１画素ストリームに変換して（つまり入力画像変換手段２Ａの逆変換）出力する。
【０１４５】
出力画像データ５と補正後の画像データ３から誤差算出手段６により、閾値処理による誤差が算出され、その誤差がフィルタ切り替えによる誤差フィルタリング手段１０により、フィルタパラメータ発生手段８から発生されるフィルタパラメータ９を元に処理対象画素の周辺画素に誤差補正量として拡散される。制御信号発生手段１５は、外部インターフェース手段３により設定された情報元に、入力画素変換制御信号２３、出力画素変換制御信号２４、誤差補正制御信号１７、バッファ制御信号１８、フィルタ切り替え制御信号１９、フィルタパラメータランダム化のフィルタパラメータ制御信号２０等を発生するものである。
【０１４６】
図３２においては、図１の入力画像変換手段２Ａは図３６に示すようなもので、画素毎に入力されるものをフィルタに対応して２画素毎に同時出力するものである。図３３（ａ）（ｂ）のフィルタの場合は２画素を並行して処理するので、制御信号発生手段１５から入力画素変換制御信号２３として、図３７（ｄ）に示すように画素クロック２１（図３７（ａ）に示す）を２分周したものが入力される。
【０１４７】
フリップフロップ回路３０２は図３７（ｃ）に示すように画素クロック２１に同期して図３７（ｂ）に示す入力画像データＤｉ（Ｇ１、…）を１画素遅延して出力Ｄ（ｉ−１）を出力するものである。フリップフロップ回路３０３は、入力画素変換制御信号２３に同期してフリップフロップ回路３０２のセット出力Ｄ（ｉ−１）を出力Ｄ（ｉ−３）として出力するものである。フリップフロップ回路３０４は、入力画素変換制御信号２３に同期して図３７（ｂ）に示す入力画像データＤｉを出力Ｄ（ｉ−２）として出力するものでする。これにより、フリップフロップ回路３０３、３０４から、図３７（ｅ）に示すように、２画素（Ｇ１・Ｇ２、…）まとめて出力される。また、その後の処理には処理クロックとして画素クロック２１の代わりに２分周クロック（図３７（ｄ）に示す）を使用する。
【０１４８】
誤差補正手段２は、図３に示す誤差補正手段２を２個、２画素それぞれに１個づつ、使用し、処理クロックとして画素クロックの代わりに２分周したクロックを使用する。また、誤差補正制御信号１７のセレクト信号１７Ｂは奇数画素１、３、５、…側の誤差補正手段２にはすでに、ハイとなり（補正ありの状態）、偶数画素２、４、６、…側の誤差補正手段２には既に、ロー（補正なしの状態）となっている。
【０１４９】
図３２の閾値処理手段４、誤差算出手段６は、図２の第１の実施例に説明した閾値処理手段４、誤差算出手段６などと同様なものであり、この場合は奇数画素１、３、５、…と偶数画素２、４、５…を並行して処理するために２個づつ持つ。
【０１５０】
フィルタパラメータ発生手段８も図２のフィルタパラメータ発生手段８と同様なものであり、設定された方法に基づき、フィルタパラメータ９を発生し、誤差フィルタリング手段１０に供給する。
【０１５１】
次に、フィルタ切り替えによる誤差フィルタリング処理について説明する。フィルタリング処理は図２１に示す図２の第１の実施例におけるフィルタリング処理とほぼ同様なものであるが、その構成を図３８に示す。
【０１５２】
図３８のビットマスク手段３２−Ａ、３２−Βは、図２１のビットマスク演算手段２２ａ〜２２ｄから構成されるビットマスク手段２２と同じものであり、ここでは、奇数画素用ビットマスク手段３２−Ａ、と偶数画素用ビットマスク手段３２−Βの２個を用いる。また、フィルタパラメータＭＡ１、ＭΒ１、ＭＣ１、ＭＤ１等はフィルタＦ１のマスク値で、フィルタパラメータＭＡ２、ＭΒ２、ＭＣ２、ＭＤ２等はフィルタＦ２のマスク値である。ｅａ１、ｅｂ１、ｅｃ１、ｅｄ１はビットマスク手段３２−Ａの出力で、奇数画素の閾値処理による誤差信号を周辺画素に分配したものを表し、ｅａ２、ｅｂ２、ｅｃ２、ｅｄ２、はビットマスク手段３２−Βの出力で、偶数画素の閾値処理による誤差信号を周辺画素に分配したものを表す。奇数画素にフィルタＦ１を使用し、偶数画素にフィルタＦ２を使用する。
【０１５３】
図３３においては、フィルタＦ１のＭＡ１が０となり、フィルタＦ２のフィルタパラメータＭΒ２、ＭＣ２、ＭＤ２が０となる。同様に図３４においては、フィルタＦ１のフィルタパラメータＭＡ１が０であり、また図３５のフィルタにおいては、フィルタＦ１のフィルタパラメータＭＡ１、ＭＣ１が０で、フィルタＦ２のフィルタパラメータＭΒ２、ＭＤ２が０となる。ｅΤは偶数画素からのすぐ隣りの画素（奇数画素）への誤差で、奇数画素に対応する誤差補正手段２に入力される。対応する奇数画素からの誤差は常に０となっている。
【０１５４】
各画素から拡散される誤差、ｅａ１、ｅｂ１、ｅｃ１、ｅｄ１、ｅａ２、ｅｂ２、ｅｃ２、ｅｄ２などがフリップフロップ回路３２−Ｃ、３２−Ｄと加算器３２−Ｆ〜３２−Ｉにより２画素単位の次のラインへの誤差補正量としてまとめられる。２画素単位の次のラインへの誤差がセレクタ３２−Ｅにてフィルタ切り替え制御信号１９により、１画素単位の誤差補正量１２（ｅＮ）として出力される。そのタイミング等を図３９（ａ）〜（ｏ）に示す。従って、誤差バッファ１３への書き込み制御として画素クロック２１を利用することができる。また誤差バッファ１３から画素クロック２１をもとに読み込んだ誤差を図３６に示した入力画素変換手段２Ａと同様に２画素単位にまとめて誤差補正手段２に入力することができる。
【０１５５】
さらに、図３５のフィルタにおいては、フィルタＦ１のフィルタパラメータＭＡ１、ＭＣ１と、フィルタＦ２のフィルタパラメータＭΒ２、ＭＤ２が０となっているので、ビットマスク手段３２Ａ、３２Ｂの出力ｅａ１、ｅｃ１、ｅｂ２、ｅｄ２は、誤差に関係なく０となり、図３８と図３９で示す加算器３２−Ｉの出力である信号３２−Ｌがいつも０の状態となる。従ってこの場合は、図３８に示すセレクタ３２−Ｅは不要で、加算器３２−Ｈの出力である信号３２−Ｋを誤差補正量１２（ｅΝ）とする。また、画素クロック２１の２分周である処理クロックを誤差バッファ１３の書き込み／読み出しに使用することにより、誤差バッファ１３のメモリ容量の半減で、２倍速の処理が可能となる。
【０１５６】
また、図４０（ａ）〜（ｄ）、図４１（ａ）〜（ｄ）に示すフィルタＦ１からフィルタＦ４を主走査方向の画素に順に繰り返して使用すると並列処理による高速化と図２３（ａ）〜（ｄ）のフィルタの説明と同様に誤差バッファ１３の半減が可能となる。
【０１５７】
上記は２画素単位の並行処理について述べたが、図４２（ａ）〜（ｃ）、図４３（ａ）〜（ｃ）、図４４（ａ）〜（ｃ）、図４５（ａ）〜（ｃ）のフィルタ群を同様に使用する３画素並行処理ができ、誤差バッファ１３のメモリ容量を１／３に低減することが可能である。この場合は、図４２（ａ）〜（ｃ）、図４３（ａ）〜（ｃ）、図４４（ａ）〜（ｃ）、図４５（ａ）〜（ｃ）のフィルタ群を副走査方向の各ライン毎周期的、或いはランダムに選択することも可能である。
【０１５８】
また、図４６（ａ）〜（ｆ）のフィルタ群を使用することにより２画素並行処理、誤差バッファ１３のメモリ容量の１／３に低減することができれば、図４７（ａ）〜（ｄ）を使用することにより４画素並行処理と、誤差バッファ１３のメモリ容量の１／４化も可能となる。このように、フィルタの組み合わせ等により、誤差バッファ１３のメモリ容量の低減また処理速度の様々な組合わせが可能となる。
【０１５９】
制御信号発生手段１５は図２の第１の実施例の制御信号発生手段１５と同様な機能をもっており、図２０（ｆ）（ｇ）に示すタイミングで制御信号を発生するものである。
【０１６０】
次に複数チャネルにより入力される入力画像データ、例えばＲ、Ｇ、Β（レッド、グリーン、ブルー）のラインセンサ（スキャナ）で読まれた画像をＹ（イエロー）、Ｍ（マゼンタ）、Ｃ（シアン）、Κ（ブラック）に変換したものなど、を同時処理する実施例について説明する。図４８にその構成を述べる。
【０１６１】
図４８においては４チャネル（以降はチャネル１、チャネル２チャネル３、チャネル４と呼ぶ、）の信号が同時入力され、前記の実施例に述べたように、誤差補正手段２にて前に処理された画素から拡散される誤差が４チャネル同時に補正され、閾値処理手段４では補正された複数チャネルの画素が同時に２値化処理され、出力画像データ５が得られる。誤差算出手段６にて各々のチャネルの閾値処理による誤差が算出され、その誤差がフィルタリング手段１０にて周辺画素に拡散されることにより階調性の優れた出力が得られる。この場合は、図４９に示すフィルタとチャネルの組み合わせを例にして説明する。
【０１６２】
図４８に示す第３の実施例において、誤差フィルタリング手段１０以外は図２の第１の実施例に対応する各々の手段と同様なものであり、チャネル数だけの個数を持てば良い。誤差フィルタリング手段１０の構成を図５０に示す。図５０のチャネル毎のフィルタ４１ａ〜４１ｄは図２の第１の実施例における図２１に示す誤差フィルタリング手段１０と同様なものである。この場合の異なる点は、マスク値が０か１かであるため図２１のマスク用のセレクタ２１ａ、…の代わりに図５１（ｄ）〜（ｇ）のタイミング図に示すフィルタパラメータとしての制御信号Ｓａ、Ｓｂ、Ｓｃ、Ｓｄをそのままマスク信号として使用している。
【０１６３】
図４８の制御信号発生手段１５により図５１（ｃ）〜（ｇ）に示すフィルタ切り替え制御信号１９と制御信号Ｓａ、Ｓｂ、Ｓｃ、Ｓｄが作られる。その１例は、図５２に述べるようにカウンタ１５ａ、フリップフロップ回路１５ｃ、１５ｄ、１５ｅ、ノア回路１５ｂによって構成される。図５２のカウンタ１５ａは０、１、２、３を繰り返しカウントする２ビットのカウンタで、フリップフロップ回路１５ｃ、１５ｄ、１５ｅは画素クロック２１に同期して遅延を行うものである。これにより、４チャネルの誤差拡散処理が同時にでき、誤差バッファ１３のメモリ容量の低減が可能となる。例えばこの例では、従来の誤差拡散では、４チャネル分の誤差バッファのメモリ容量が必要であったのに対し、ここでは、それを１チャネル分つまり１／４に低減できる。
【０１６４】
また、図２に示した第１の実施例のフィルタの組み合わせなどを使用すると誤差バッファ１３のメモリ容量の１／２化などと言った他の組み合わせも可能である。さらに、図３２の第２の実施例の複数画素同時処理の考え方を取り入れると、複数チャネル、各チャネルの複数画素の同時処理ができるようになり、コストパフォーマンスの良い高速処理が可能となる。また、マルチチャネル入力の場合は、幾つかのチャネルをこの発明のフィルタ切り替え処理にして、残りのチャネルは従来の誤差拡散処理等に分ける構成も考えられる。
【０１６５】
高速処理のもう一つ構成は図５３に示すようなもので、図３２に示すものとほぼ同じであるが、異なる点は入力画像変換手段２Ａが主走査方向の複数画素をまとめる変換ではなく、複数のラインをまとめる手段となっている。それと対応して、出力画像変換手段４Ａは、複数画素を元の１画素ストリームに変換するものではなく、同時に入ってくる複数ラインの画素を分割してライン画素に変換して出力ものである。またこの画像処理につながる出力機器に対応して変換なしで出力することも考えられる。例えば、ＣＣＤ等のラインセンサで１ライン毎に入力される画像データを複数ライン（例えば４ライン）を同時処理し、マルチチャネル出力（４ライン同時出力）する出力機器にそのまま出力する。ここで、図５３の入力変換手段２Ａの２ライン同時処理向けの１例を図５４に示し、詳細を説明するが、その他の処理は、上記の実施例と同様な考え方で構成できるの説明を省略する。
【０１６６】
図５４の４５−１〜４５−４（ＦＩＦΟ１〜ＦＩＦＯ４）は、入力画像を１次的に蓄えるためのラインバッファであり、ＦＩＦΟ１、ＦＩＦΟ２は１つの組でＦＩＦＯ３とＦＩＦＯ４はもう一つに組みとなっている。ＦＩＦＯ１とＦＩＦΟ３の入力はスイッチＳ１の切り替え状態によって１画素毎に入力される画像データに接続される。ＦＩＦΟ２の入力はＦＩＦＯ１の出力に接続されており、ＦＩＦΟ４の入力はＦＩＦＯ３の出力に接続されている。
【０１６７】
スイッチＳ２、Ｓ３により、ＦＩＦΟ１、ＦＩＦΟ２、またはＦＩＦＯ３、ＦＩＦΟ４がぺアで２ライン画像として出力される。スイッチＳ１が、端子Ａ１に接続されてＦＩＦＯ１に画像を入力している場合はスイッチＳ２はΒ２、スイッチＳ３はΒ３に接続されて、ＦＩＦＯ３とＦＩＦＯ４の内容が、２ライン画像として出力され、逆に、スイッチＳ１は端子Β１に接続された場合は、ＦＩＦＯ３に読み取り機器から画像が入力され、スイッチＳ２は端子Ａ２、スイッチＳ３が端子Ａ３に接続されて、ＦＩＦΟ１、ＦＩＦΟ２のデータが２ライン画像として出力される。
【０１６８】
図５３の構成を用いて従来の誤差拡散を高速に実施することだけではなく、上記のフィルタ切り替え手段等と組み合わせて誤差バッファ１３のメモリ容量の低減と処理のさらなる高速化を図ることもできる。また、１ライン分の誤差バッファだけで、図５５（ａ）（ｂ）に示す周辺の１画素以上の距離を持つフィルタも取り入れることが可能である。図５５（ａ）（ｂ）のフィルタ構成を用い、副走査方向の奇数ラインに対応する主走査方向にフィルタＦ１からはじめ、画素毎にフィルタＦ１とフィルタＦ２を切り替え、副走査方向の偶数ラインに対応する主走査方向にフィルタＦ２からはじめ、画素毎にフィルタＦ２とフィルタＦ１の順に切り替えることにより１ラインの分の誤差バッファだけで、誤差拡散処理を行うことができる。
【０１６９】
上記したすべての実施例では、フィルタ切り替えによる誤差バッファのメモリ容量の低減や処理の高速化をできるような構成を述べたが、フィルタ切り替えのもう一つの効果は、従来のフィルタ構成の幾つかを用い、或いは、パラメータの係数の異なるものを幾つかを用い、それらを画素毎や複数画素毎にランダムに切り替えなどにより、従来の誤差拡散の斜め方向のテクスチャの問題が解決できると考えられる。
【０１７０】
上記したように、フィルタのランダム切り替えによりテクスチャの低減が図れる。
【０１７１】
副走査方向において各画素や複数画素おきに拡散ができるようなフィルタ群を用いそれを画素毎や複数画素毎に切り替えることにより誤差記憶手段のアクセス回数が削減でき、処理の高速化を図ることができる。
【０１７２】
主走査方向において各画素や複数画素おきに拡散できるようなフィルタ群を用い、それを画素毎や複数画素毎に切り替えることにより複数画素の同時処理が可能となり、処理の高速化を図ることができる。
【０１７３】
副走査方向の誤差拡散において１画素や複数画素おきの誤差拡散による誤差バッファのアクセス回数の削減、主走査方向の複数画素の同時処理、両方を同時に実現することにより、処理の高速化を図ることができる。
【０１７４】
上述したような種々のフィルタ群を設け、その内１つが用途に応じて外部から指示できる柔軟なものとすることができる。
【０１７５】
副走査方向の複数ラインの複数画素を同時に処理することにより、処理の高速化を図ることができる。
【０１７６】
複数チャネル同時処理による処理の高速化が可能となる。
【０１７７】
複数チャネルの内幾つかのチャネルを従来の誤差拡散、それ以外はフィルタ切り替え方式を用いることにより、従来の誤差拡散はマルチライン同時処理、それ以外は、複数画素同時処理などのハイブリッド形式により、処理の高速化が図れる。
【０１７８】
フィルタ繰り返しの初期状況副走査方向の各ライン毎にランダム或いは周期的に変えることによる拡散の方向性の均一化またはランダム化が図れる。
【０１７９】
複数のフィルタ群を用いて、それを副走査方向に周期的またはランダムに変えることにより、拡散の方向性の均一化またはランダム化が図れる。
【０１８０】
【発明の効果】
以上詳述したように、この発明によれば、フィルタの切り替えにより、誤差バッファのアクセス回数およびメモリ容量の低減が可能となり、特に、高解像度、多階調の処理に関してはコストパフォーマンスの良い高速処理処理が可能である。
【０１８１】
複数画素の同時処理が可能となり、高速処理が実現できる。
【０１８２】
マルチチャネル同時処理に関しても、誤差バッファのアクセス回数およびメモリ容量の低減、処理の高速化が可能となる。
【０１８３】
また、フィルタ切り替えによる従来の誤差拡散のテクスチャもある程度改善できる。
【図面の簡単な説明】
【図１】この発明の説明するための画像処理装置の概略構成を示すブロック図。
【図２】第１の実施例における画像処理装置の概略構成を示すブロック図。
【図３】誤差補正手段の構成を示すブロック図。
【図４】閾値処理手段の構成を示すブロック図。
【図５】閾値処理手段のエンコーダ部の処理を説明するための図。
【図６】閾値処理手段の比較器の例を示す図。
【図７】閾値処理手段の他の構成例を示す図。
【図８】閾値処理手段の他の構成例を示す図。
【図９】補正処理後の入力画像のビット展開の一例を示す図。
【図１０】誤差算出手段の構成例を示す図。
【図１１】従来の誤差拡散法のフィルタのモデルを説明するための図。
【図１２】フィルタの構成例を示す図。
【図１３】フィルタを用いることによる誤差拡散の例を示す図。
【図１４】フィルタをビットマスクで実施するためのマスクの一例を示す図。
【図１５】フィルタにおけるマスク値のランダム発生を説明するための図。
【図１６】低次の疑似ランダム系列から高次の疑似ランダム系列を説明するための図。
【図１７】疑似ランダム系列（Ｍ系列）発生手段の具体例を示す図。
【図１８】マスクの位置をランダムにする方法の１例を示す図。
【図１９】制御信号発生手段の構成例を示す図。
【図２０】制御信号発生手段の要部の信号を示すタイミングチャート。
【図２１】誤差フィルタリング手段の構成例を示す図。
【図２２】誤差フィルタリング手段の要部の信号を示すタイミングチャート。
【図２３】フィルタの構成例を示す図。
【図２４】フィルタの構成例を示す図。
【図２５】図２３のフィルタ構成におけるタイリング（副走査方向の初期値変更）例を示す図。
【図２６】図２３のフィルタ構成におけるタイリング例を示す図。
【図２７】図２３のフィルタ構成におけるタイリング例を示す図。
【図２８】図２３の全ての組み合わせの中でフィルタ切り替えできる組み合わせを示す図。
【図２９】図２４のフィルタ構成におけるタイリング例を示す図。
【図３０】図２４のフィルタ構成におけるタイリング例を示す図。
【図３１】図２４のフィルタ構成におけるタイリング例を示す図。
【図３２】第２の実施例（高速処理）における画像処理装置の概略構成を示すブロック図。
【図３３】２画素同時処理に利用できるフィルタの構成例を示す図。
【図３４】２画素同時処理に利用できるフィルタの構成例を示す図。
【図３５】２画素同時処理、誤差バッファのメモリ容量の半減に利用できるフィルタの構成例を示す図。
【図３６】主走査方向の画素を２画素毎にまとめる入力画像変換手段の構成例を示す図。
【図３７】入力画像変換手段の要部の信号を示すタイミングチャート。
【図３８】誤差フィルタリング手段の構成例を示す図。
【図３９】誤差フィルタリング手段の要部の信号を示すタイミングチャート。
【図４０】２画素同時処理、誤差バッファのメモリ容量の半減に利用できるフィルタの構成例を示す図。
【図４１】２画素同時処理、誤差バッファのメモリ容量の半減に利用できるフィルタの構成例を示す図。
【図４２】３画素同時処理、誤差バッファのメモリ容量の１／３化に利用できるフィルタの構成例を示す図。
【図４３】３画素同時処理、誤差バッファのメモリ容量の１／３化に利用できるフィルタの構成例を示す図。
【図４４】３画素同時処理、誤差バッファのメモリ容量の１／３化に利用できるフィルタの構成例を示す図。
【図４５】３画素同時処理、誤差バッファのメモリ容量の１／３化に利用できるフィルタの構成例を示す図。
【図４６】２画素同時処理、誤差バッファのメモリ容量の１／３化に利用できるフィルタの構成例を示す図。
【図４７】４画素同時処理、誤差バッファのメモリ容量の１／４化に利用できるフィルタの構成例を示す図。
【図４８】第３の実施例（マルチチャネル同時処理）における画像処理装置の概略構成を示すブロック図。
【図４９】チャネル毎のフィルタの切り替えを説明するための図。
【図５０】誤差フィルタリング手段の構成例を示す図。
【図５１】誤差フィルタリング手段の要部の信号を示すタイミングチャート。
【図５２】制御信号発生手段の構成例を示す図。
【図５３】第４の実施例（複数ライン同時処理）における画像処理装置の概略構成を示すブロック図。
【図５４】複数ライン画像に変換する入力画像変換手段の概略構成を示すブロック図。
【図５５】複数ライン（２ライン）にまたがるフィルタの構成例を示す図。
【図５６】従来の誤差拡散法を説明するための２値化処理の構成図。
【符号の説明】
２…誤差補正手段
４…閾値処理手段
６…誤差算出手段
８…フィルタパラメータ発生手段
１０…誤差フィルタリング手段
１３…誤差バッファ
１５…制御信号発生手段
【図１】
0003782146.tif 000002
【図２】
0003782146.tif 000003
【図３】
0003782146.tif 000004
【図４】
0003782146.tif 000005
【図５】
0003782146.tif 000006
【図６】
0003782146.tif 000007
【図７】
0003782146.tif 000008
【図８】
0003782146.tif 000009
【図９】
0003782146.tif 000010
【図１０】
0003782146.tif 000011
【図１１】
0003782146.tif 000012
【図１２】
0003782146.tif 000013
【図１３】
0003782146.tif 000014
【図１４】
0003782146.tif 000015
【図１５】
0003782146.tif 000016
【図１６】
0003782146.tif 000017
【図１７】
0003782146.tif 000018
【図１８】
0003782146.tif 000019
【図１９】
0003782146.tif 000020
【図２０】
0003782146.tif 000021
【図２１】
0003782146.tif 000022
【図２２】
0003782146.tif 000023
【図２３】
0003782146.tif 000024
【図２４】
0003782146.tif 000025
【図２５】
0003782146.tif 000026
【図２６】
0003782146.tif 000027
【図２７】
0003782146.tif 000028
【図２８】
0003782146.tif 000029
【図２９】
0003782146.tif 000030
【図３０】
0003782146.tif 000031
【図３１】
0003782146.tif 000032
【図３２】
0003782146.tif 000033
【図３３】
0003782146.tif 000034
【図３４】
0003782146.tif 000035
【図３５】
0003782146.tif 000036
【図３６】
0003782146.tif 000037
【図３７】
0003782146.tif 000038
【図３８】
0003782146.tif 000039
【図３９】
0003782146.tif 000040
【図４０】
0003782146.tif 000041
【図４１】
0003782146.tif 000042
【図４２】
0003782146.tif 000043
【図４３】
0003782146.tif 000044
【図４４】
0003782146.tif 000045
【図４５】
0003782146.tif 000046
【図４６】
0003782146.tif 000047
【図４７】
0003782146.tif 000048
【図４８】
0003782146.tif 000049
【図４９】
0003782146.tif 000050
【図５０】
0003782146.tif 000051
【図５１】
0003782146.tif 000052
【図５２】
0003782146.tif 000053
【図５３】
0003782146.tif 000054
【図５４】
0003782146.tif 000055
【図５５】
0003782146.tif 000056
【図５６】
0003782146.tif 000057