(57)【特許請求の範囲】
【請求項１】
１画素がｎビットで表わされる多値画像データを入力する画像入力手段と、
前記画像入力手段で入力された前記多値画像データに対して、当該画像データの各画素データを２値或はｍ（２＜ｍ＜ｎ）値化するために、２値誤差拡散処理或はｍ値誤差拡散処理を実行する処理手段とを有し、
前記処理手段は、前記ｍ値誤差拡散処理における有効ビット数で構成され、前記２値誤差拡散処理及びｍ値誤差拡散処理を共通して実行可能な誤差拡散回路と、
前記誤差拡散回路を用いて前記２値誤差拡散処理及びｍ値誤差拡散処理で演算された誤差データのうち、次の処理ラインに拡散するための誤差データを格納する誤差バッファと、
前記２値誤差拡散処理及びｍ値誤差拡散処理で演算された誤差データを前記誤差バッファに格納するため、前記ｍ値誤差拡散処理において演算された誤差データを、２値誤差拡散処理で発生する誤差データの有効ビット数に合わせるクランプ処理部と、
を有することを特徴とする画像処理装置。
【請求項２】
前記画像入力手段で入力された多値画像データは輝度データであり、当該輝度データを濃度データに変換して前記処理手段に出力する輝度濃度変換手段を有し、
前記輝度濃度変換手段は、前記処理手段で前記２値誤差拡散処理を実行する場合には、輝度データを出力値の範囲が０〜６３（６ビット）となる濃度データに変換し、前記ｍ値誤差拡散処理を実行する場合には、輝度データを出力値の範囲が０〜２５５（８ビット）となる濃度データに変換することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
１画素がｎビットで表わされる多値画像データを入力する画像入力工程と、
前記画像入力工程で入力された前記多値画像データに対して、当該画像データの各画素データを２値或はｍ（２＜ｍ＜ｎ）値化するために、２値誤差拡散処理或はｍ値誤差拡散処理を実行する処理工程とを有し、
前記処理工程では、前記ｍ値誤差拡散処理における有効ビット数で構成され、前記２値誤差拡散処理及びｍ値誤差拡散処理を共通して実行可能な誤差拡散回路と、
前記誤差拡散回路を用いて前記２値誤差拡散処理及びｍ値誤差拡散処理で演算された誤差データのうち、次の処理ラインに拡散するための誤差データを格納する誤差バッファと、
前記２値誤差拡散処理及びｍ値誤差拡散処理で演算された誤差データを前記誤差バッファに格納するため、前記ｍ値誤差拡散処理において演算された誤差データを、２値誤差拡散処理で発生する誤差データの有効ビット数に合わせるクランプ処理部と、
を用いて２値誤差拡散処理及びｍ値誤差拡散処理を共通に処理することを特徴とする画像処理方法。
【請求項４】
前記画像入力工程で入力された多値画像データは輝度データであり、当該輝度データを濃度データに変換して前記処理工程に出力する輝度濃度変換工程を有し、
前記輝度濃度変換工程は、前記処理工程で前記２値誤差拡散処理を実行する場合には、輝度データを出力値の範囲が０〜６３（６ビット）となる濃度データに変換し、前記ｍ値誤差拡散処理を実行する場合には、輝度データを出力値の範囲が０〜２５５（８ビット）となる濃度データに変換することを特徴とする請求項３に記載の画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は画像処理方法及びその装置に関し、１画素がｎビットで表される多値画像データを入力し、所望の階調数及び画素の深さに合わせて、そのｎビット多値画像データを２値化或はｍ（ｎ＞ｍ＞２）値化処理する画像処理方法及びその装置に関するものである。
【０００２】
【従来の技術】
スキャナにより原稿画像を読取って送信できるファクシミリ等では、そのスキャナにより画像データを読み取る場合、その読取った画像データを送信するのか、或は単にコピーを取るのかといった、その画像データの出力目的に合わせた処理を行っておらず、常に所定の解像度で読取って、その画像データを２値化処理していた。また、ファクシミリ装置で一般に用いられている擬似中間調処理である誤差拡散処理の階調数においても、コピーの場合でも送信の場合でも同様に、例えば６ビットの６４階調が固定的に採用されていた。
【０００３】
近年、ＬＢＰ（レーザビームプリンタ）等において、高解像度に記録を行うことができる記録装置が安価に提供されるようになってきており、簡単に４値等の多値記録ができるようになってきている。例えば、主走査方向に１２００ｄｐｉ（ドット／インチ）の解像度をもつ記録装置に、主走査方向の解像度が４００ｄｐｉの画像データを記録する場合には、入力される画像データの濃度値に応じ１２００ｄｐｉの小ドットの個数（ここでは３個）を入力画像の濃度値に対応させることにより、４値での記録が実現できる。もちろん４００ｄｐｉで２値記録を行う場合には、黒ならば１２００ｄｐｉの小ドット３個を全てを黒に対応させ、白ならば１２００ｄｐｉの小ドット３個を全て白に対応させれば良い。
【０００４】
また近年、コピー機器やファクシミリ装置の複合化が進み、ファクシミリ装置においても、コピー時には２５６階調以上の高品位な印刷が求められるようになってきている。この様なことから、ファクシミリ装置のスキャナで原稿画像を読み取る際、その読取った画像データを送信する場合には、例えば６４階調の２値画像データを２値化処理により生成し、コピーを取るために使用する時には、プリンタ部の記録特性（解像度や階調性等）を最大限に生かすために、例えば２５６階調の画像データをｍ値化処理により生成することが要望されている。このような画像処理に際して、２値化の画像処理としては２値誤差拡散処理が広く用いられており、またｍ値化処理としては、２値誤差拡散処理を拡張し、出力値をｍ値化したｍ値誤差拡散処理が広く採用されており、これら機能がそれぞれの装置の目的に応じて別々に実装されているのが現状である。
【０００５】
【発明が解決しようとする課題】
しかしながら上述したファクシミリ装置等において、読取った画像を通信に用いるために２値化処理する２値化処理回路と、読取った画像を複写するための多値化処理を行う多値化処理回路とを別々な回路で構成すると、ファクシミリ装置として非常に高価なものとなってしまう欠点がある。
【０００６】
本発明は上記従来例に鑑みてなされたもので、２値誤差拡散及びｍ値誤差拡散処理における誤差バッファへのアクセスを共通化することにより、装置規模が大きくなるのを防止した画像処理方法及びその装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記目的を達成するために本発明の画像処理装置は以下のような構成を備える。即ち、
１画素がｎビットで表わされる多値画像データを入力する画像入力手段と、
前記画像入力手段で入力された前記多値画像データに対して、当該画像データの各画素データを２値或はｍ（２＜ｍ＜ｎ）値化するために、２値誤差拡散処理或はｍ値誤差拡散処理を実行する処理手段とを有し、
前記処理手段は、前記ｍ値誤差拡散処理における有効ビット数で構成され、前記２値誤差拡散処理及びｍ値誤差拡散処理を共通して実行可能な誤差拡散回路と、
前記誤差拡散回路を用いて前記２値誤差拡散処理及びｍ値誤差拡散処理で演算された誤差データのうち、次の処理ラインに拡散するための誤差データを格納する誤差バッファと、
前記２値誤差拡散処理及びｍ値誤差拡散処理で演算された誤差データを前記誤差バッファに格納するため、前記ｍ値誤差拡散処理において演算された誤差データを、２値誤差拡散処理で発生する誤差データの有効ビット数に合わせるクランプ処理部と、
を有することを特徴とする。
【００１２】
上記目的を達成するために本発明の画像処理方法は以下のような工程を備える。即ち、
１画素がｎビットで表わされる多値画像データを入力する画像入力工程と、
前記画像入力工程で入力された前記多値画像データに対して、当該画像データの各画素データを２値或はｍ（２＜ｍ＜ｎ）値化するために、２値誤差拡散処理或はｍ値誤差拡散処理を実行する処理工程とを有し、
前記処理工程では、前記ｍ値誤差拡散処理における有効ビット数で構成され、前記２値誤差拡散処理及びｍ値誤差拡散処理を共通して実行可能な誤差拡散回路と、
前記誤差拡散回路を用いて前記２値誤差拡散処理及びｍ値誤差拡散処理で演算された誤差データのうち、次の処理ラインに拡散するための誤差データを格納する誤差バッファと、
前記２値誤差拡散処理及びｍ値誤差拡散処理で演算された誤差データを前記誤差バッファに格納するため、前記ｍ値誤差拡散処理において演算された誤差データを、２値誤差拡散処理で発生する誤差データの有効ビット数に合わせるクランプ処理部と、
を用いて２値誤差拡散処理及びｍ値誤差拡散処理を共通に処理することを特徴とする。
【００１３】
【発明の実施の形態】
以下、添付図面を参照して本発明の好適な実施の形態を詳細に説明する。
【００１４】
図１は、本実施の形態の画像処理装置の機能全体を示す機能ブロック図である。
【００１５】
１００はスキャナ部で、原稿画像をＣＣＤ（固体撮像素子）等で読み取り、その読取ったアナログ画像信号を、例えば８ビットのＡ／Ｄ変換器でデジタル信号に変換し、１画素が８ビット（２５６階調）の画像データとして出力する。またこのスキャナ部１００は、その画像読み取りと同時に、シェーディング補正等の、ＣＣＤ（固体撮像素子）や光学系の補正処理を行っている。２００は空間フィルタ処理部で、スキャナ部１００から出力される１画素が８ビットで表される画像データを入力し、その画像データに２次元の空間フィルタ演算を施すことにより、その画像データの解像度補償を行っている。尚、ここでもし変倍が必要ならば、スキャナ部１００と空間フィルタ処理部２００との間で、不図示の線形補間演算による変倍を行うことができる。３００は輝度濃度変換部で、例えばルックアップテーブル等を使用して、空間フィルタ処理部２００で解像度補償された画像データ（輝度データ）を濃度データに変換する。尚、この輝度濃度変換部３００のルックアップテーブルには、画像の濃い／薄いや、後で説明する２値化・４値化等の画像処理モードに応じて、本実施の形態の画像処理装置の制御部１１０（図２）からテーブルデータがダウンロードされる。また、このルックアップテーブルには、ＬＯＧ変換曲線を基に、更にプリンタ７００の記録特性を加味して補正を加えたデータが用いられている。
【００１６】
４００は２値及び４値化処理部で、輝度濃度変換部３００より出力される濃度データを入力し、２値化もしくは４値化処理を施して出力する。５００はＤＲＡＭやＳＲＡＭ等で構成される画像メモリで、スキャナ部１００で読み取られ２値化もしくは４値化処理により生成された１画素が２ビット或は１ビットで構成される画像データ、或は不図示の通信回線等を介して入力した画像データを画像ファイルとして蓄積している。６００は２値・４値展開部で、主走査方向の記録解像度が１２００ｄｐｉであるプリンタ７００に対し、４００ｄｐｉの２値画像データ或は４００ｄｐｉの４値画像データを入力し、それぞれの画像データに対し最適な１２００ｄｐｉの小ドットの配置を施してプリンタ７００に出力する。プリンタ６００は、例えば解像度１２００ｄｐｉのＬＢＰプリンタであり、２値・４値展開部６００で展開された２値データ（０又は１）を用いて記録媒体（記録紙等）に、その画像データを印刷している。
【００１７】
尚、本実施の形態では、多値誤差拡散処理を４値化処理の場合で説明しているが本発明はこれに限定されるものでなく、プリンタ７００の解像度等に応じて、一般的にｍ値化処理できることはいうまでもない。
【００１８】
図２は本実施の形態の画像処理装置の基本構成を示すブロック図で、前述の図１と共通する部分は同じ番号で示し、その説明を省略する。
【００１９】
１１０は前述した装置全体を制御する制御部で、マイクロコンピュータ等のＣＰＵ１２０、ＣＰＵ１２０による処理の実行時にワークエリアとして使用され、各種データを一時的に保存するＲＡＭ１２１、ＣＰＵ１２０の制御プログラムやデータ等を記憶するプログラムメモリ１２２等を備えている。またルックアップテーブル（ＬＵＴ）１２３は、前述した輝度濃度変換に使用されるテーブルを記憶している。また１２４は空間フィルタ処理部２００で使用されるラプラシアン・フィルタ定数等を記憶している。１１１はスキャナ１００により読取った原稿画像や、各種処理を施した画像を表示する表示部である。２０１，２０２は後述する空間フィルタ処理で使用されるラインバッファで、本実施の形態では１アドレスが１６ビットデータを記憶できるＲＡＭのアドレスを共通に使用することにより構成されている。２０３は、後述するラインバッファ２０１，２０２等の出力値をラッチするラッチ回路群である。
【００２０】
尚、図１の空間フィルタ処理部２００は、制御部１１０、ラインバッファ２０１，２０２及びラッチ群２０３等により達成され、輝度濃度変換部３００の処理は制御部１１０のＣＰＵ１２０などにより実現されている。また、本実施の形態では、４値・２値化処理部４００及び２値・４値展開部６００をハードウェアで構成しているが、ＣＰＵ１２０により実行されるプログラムにより実現されてもよい。
【００２１】
［実施の形態１］
以下、本発明の実施の形態１の各処理部の特徴を中心に詳細に説明する。
【００２２】
＜空間フィルタ処理部２００＞
通常、画像データに対し空間フィルタ処理を施すためには、参照ライン数分、もしくは（参照ライン数−１）分のラインバッファが必要となる。この様なラインバッファは、従来は外付けのＳＲＡＭ等で構成されており、ＳＲＡＭのビット幅も８ビットのものが多数用意されていた。このことから入力データが８ビットの場合、参照ラインバッファを全て８ビットのメモリで構成しても、装置コストの面では特に問題はなかった。しかし、近年のＩＣ技術の進歩により、外部参照バッファに用いられるＳＲＡＭを容易に内蔵できるようになってきている。ところが、このようなラインバッファを内蔵させると、メモリ容量が直接製造コストとして反映されるため、そのメモリ容量を削減する必要がある。このことから、本実施の形態では、演算による影響が少ない程度にまで参照バッファの有効数字を削減することにより、装置の性能維持と装置コストの低価格化の両立を図っている。
【００２３】
図３（Ａ）は、比較的良く用いられる解像度補償のためのラプラシアン・フィルタのマトリックスの一例を示す図、図３（Ｂ）は、そのマトリクス演算に用いられるラインバッファを説明するための図である。
【００２４】
３ライン分の画像データ（画素データ）を参照して空間フィルタ処理のための演算処理を行うためには、副走査方向の画素を同時に参照するために８ビットのラインバッファが２本必要となる。本実施の形態においては、比較的演算の影響の少ないライン１のビット数を８ビットから６ビットに減らすことにより、装置の性能と装置コストのバランスを保つようにする。これにより４００ｄｐｉでＢ４判の画像データを記憶する場合、８１９２ビット分、メモリ容量を削減することができる。
【００２５】
図４は、空間フィルタ処理部２００のラインバッファとラッチ群の構成を示すブロック図である。
【００２６】
ラインバッファ２０１，２０２は、副走査方向に画素データを遅延させ、３ライン分の画素データを同時に参照するためのラインバッファである。ラッチ群２０３は、画素データを主走査方向に遅延させている。これらラッチ群から空間フィルタ処理のためのデータが取り出される。
【００２７】
本実施の形態においては、画像データの１画素を８ビットで表わし、ラインバッファ２０１，２０２を１つのＲＡＭ（１６ビット／１アドレス）で構成し、ＲＡＭの下位（０〜７）ビット（８ビット）を１ライン分遅延するためのラインバッファ２０２に、上位の（８〜１３）ビット（６ビット）を２ライン目の遅延のためのラインバッファ２０１に割り当てている。
【００２８】
またラッチ群２０３のライン３に相当するラッチ回路群２０３ａには入力された画素データ（８ビット）が直接ラッチされ、ライン２に相当するラッチ回路群２０３ｂにはラインバッファ２０２の出力データ（８ビット）がラッチされ、更にラッチ回路群２０３ｃにはラインバッファ２０１の出力データ（６ビット）がラッチされる。
【００２９】
図５は、本実施の形態の空間フィルタ処理部２００におけるメモリアクセスを示すタイミングチャートである。
【００３０】
クロック(DCLK)の立ち上がりに同期して入力される画像データ(DATIN)は、クロック(DCLK)の立ち上がりに同期してラインバッファ２０１，２０２の指示されたアドレス(A1〜An)に格納される。図５のアクセスは、このラインバッファに格納されたデータへのアクセスタイミングを示す図で、ＲＤは読み出しタイミングを、ＷＲは書込みタイミングを示している。例えば、図５の読み出し（ＲＤ）タイミング２１０において、ラインバッファ（ＲＡＭ）のアドレス“Ａ１”に格納されているデータ“Ｄ１”が２ビットシフトされたデータ（ＩＤ１）が読み出され（RDDATで示される）、次の書込みタイミング（ＷＲ）２１１で、その２ビットシフトされて読み出されデータ（ＩＤ１）と元のデータ（Ｄ１）とが組み合わされて、同じアドレス（Ａ１）に格納される。これにより、元の画素データ（Ｄ１）が、そのアドレス（Ａ１）の下位ビット（０〜７）に配置され、また、２ビットシフトされたデータ（ＩＤ１）が、そのアドレス（Ａ１）の上位ビット（８〜１３）に配置される。このように、読み取りアドレスと書き込みアドレスとが同一となるようにし、リードモディファイドライトによりＲＡＭ（ラインバッファ）の更新を行う。このような動作を繰り返すことにより、ＲＡＭの下位ビット（０〜７）位置（ラインバッファ２０２に相当）に１ライン分だけ遅延された画素データが、同じアドレスの上位ビット（８〜１３）位置（ラインバッファ２０１に相当）には、２ライン分遅延された画素データが格納されることになる。
【００３１】
ラインバッファ２０１，２０２から読み出されたライン分遅延された画像データ及び入力される画像データ(DATIN)は、クロック(DCLK)の立ち上がりに同期して、順次ラッチ群２０３に取り込まれる。ラッチ群２０３では、ラインバッファ２０１，２０２から読み出されたデータ及び入力される画像データを、それぞれクロック(DCLK)の立ち上がりに同期して順次シフトする。これにより、２次元（３×３）の画像データが取り出される。
【００３２】
ここで、ラッチ群２０３にラッチされたデータの中で、図４のＸ，Ａ，Ｂ，Ｃ，Ｄで示される各データが、図３（Ａ）の空間フィルタのＸ，Ａ，Ｂ，Ｃ，Ｄの各位置に対応している。実際の空間フィルタの演算においては、Ａ及びＢに対応する値は、メモリの上位６ビットのみの値であるため、ビットシフトされて下位２ビットに“００”が挿入され、８ビットデータとして演算処理がなされる。
【００３３】
filter = X<<2−（(A<<2) ＋ (B<<2) ＋ C ＋ D）;
上の式は、本実施の形態の空間フィルタの演算をＣ言語で表現したものである。Ｘはフィルタ係数が“４”であるため２ビットだけ左シフト（×４）を行い、Ａ，Ｂは６ビットデータを他の８ビットデータと同一に扱うためにそれぞれ２ビット左シフトする。実際の装置においては、例えば、このような演算をハードウェアで実現する場合には、ラッチ回路群２０３より加算器への配線においてビット位置をずらすことにより、このようなビットシフトが実現される。ここで得られた空間フィルタ値がＸのデータに更に加算され、解像度補償が行われた、１画素が８ビットの画像データとして出力される。またこのような演算をソフトウェアにより実現する場合には、レジスタのシフト命令を実行して加算することにより容易に実現できる。
【００３４】
＜輝度濃度変換部３００＞
輝度濃度変換部３００は、空間フィルタ処理部２００で解像度補償された１画素が８ビットの輝度データを入力し、ルックアップテーブルを参照して濃度データに変換して出力する。上述したように、通常、輝度濃度変換テーブルはＬＯＧ変換に、更にプリンタ７００の記録特性の補正を加えたものが用いられる。
【００３５】
本実施の形態では、ここで２値化処理及び４値化処理のそれぞれのモードに対応し、後段の４値・２値化処理部４００で必要とされるデータ幅になるように濃度データへの変換が行われる。
【００３６】
先ず本実施の形態では、２値誤差拡散処理を行う場合には全白データが“０”、全黒データが“６３”（６ビット）としてデータ処理がなされる。
【００３７】
図６（Ａ）は、２値誤差拡散処理のための輝度−濃度変換の特性例を示す図である。
【００３８】
２値誤差拡散の場合には、８ビット、即ち、“０”〜“２５５”の画像データを入力し、６ビット、即ち、“６３”〜“０”の濃度データに変換して出力する。また、４値誤差拡散処理を行う場合には、全白データが“０”、全黒データを“２５５”としてデータ処理がなされる。
【００３９】
図６（Ｂ）は、４値誤差拡散処理のための輝度−濃度変換の特性例を示す図である。ここでは８ビット、即ち、“０”〜“２５５”の画像データを入力して、８ビット、即ち、“２５５”〜“０”の濃度データに変換して出力する。
【００４０】
更に、プリンタ７００の性能によっては、特定濃度の出力パターンを記録すると、記録された画像品位が低下する（画像が荒れる）場合がある。例えば、１画素が８ビットで表される２５６階調の画像データを用い、４値誤差拡散処理を行ってプリント出力した場合、濃度が“３１”前後の濃度データの出力パターンの画像が荒れる傾向にある。これは、濃度“３１”の画像データにおいて、誤差拡散の特性により出力データが“０”と“１”の市松状態となり、この市松データに対しプリンタ７００の記録特性が追従できないためであると考えられる。そこでこの様な場合には、記録された画像が荒れるような濃度（ここでは濃度“３１”）の画像データを飛ばした輝度−濃度変換テーブルを作成する。
【００４１】
図６（Ｃ）は、このようにして濃度“３１”を飛ばして作成された輝度−濃度変換テーブルの特性例を示す図である。
【００４２】
＜２値及び４値化処理部４００＞
先ず、ｍ値化処理として４値誤差拡散処理のアルゴリズムに関して説明する。２値の誤差拡散と４値誤差拡散の違いは、３個の閾値と４個の出力濃度より誤差が演算される点にある。４値における誤差拡散は２値の誤差拡散と同様に、出力画素濃度（ここでは、ＤＥＮＴ3＝２５５，ＤＥＮＴ2＝１７０，ＤＥＮＴ1＝８５，ＤＥＮＴ0＝０）と、補正濃度Ｘ'ij（画素濃度Ｘijと誤差拡散量との総和）との差を新たな誤差として、図７に示すように、近接画素に誤差配分の拡散マトリックスに対応した重み付けをしながら拡散していく。この近接画素への誤差の配分に関する処理においては、２値誤差拡散及び４値誤差拡散ともに同様に補正濃度Ｘ'ijは、
Ｘ'ij＝Ｘij＋ＳＵＭ（Ｅkl×αkl）／ＳＵＭ（αkl）
ここでαは、誤差配分のための重み係数、Ｅklは、処理画素以前に発生した誤差を示している。
【００４３】
次に、補正濃度Ｘ'ijの信号レベルを以下に示す式（１）〜（４）を用い、３個の閾値により判定して記録出力信号レベル（ＯＵＴＰＵＴ）及び誤差量（Ｅ）を決定する。
【００４４】
ここで各閾値はそれぞれ、ＴＨ1＝（ＤＥＮＴ1＋ＤＥＮＴ0）／２、ＴＨ2＝（ＤＥＮＴ2＋ＤＥＮＴ1）／２、ＴＨ3＝（ＤＥＮＴ3＋ＤＥＮＴ2）／２である。
【００４５】
X'ij＞TH3      ならば出力画素濃度 OUTPUT=3 で誤差 E=X'ij−DENT3…（１）
TH3>=X'ij＞TH2 ならば出力画素濃度 OUTPUT=2 で誤差 E=X'ij−DENT2…（２）
TH2>=X'ij＞TH1 ならば出力画素濃度 OUTPUT=1 で誤差 E=X'ij−DENT1…（３）
TH1>=X'ij      ならば出力画素濃度 OUTPUT=0 で誤差 E=X'ij−DENT0…（４）
ここで発生する新しい誤差Ｅ＝Ｘ'ij−（ＤＥＮＴ3，ＤＥＮＴ2，ＤＥＮＴ1，ＤＥＮＴ0）を、図７に示すような重み付けで、再度、近画素素に拡散して配置する。これを繰り返すことにより、８ビットの入力画像データ（０〜２５５）は４値（０〜３）のいずれかのデータに変換されて出力されることになる。
【００４６】
また、２値誤差拡散処理の場合は、上記４値誤差拡散の誤差演算のための濃度をＢＤＥＮＴ1＝６３，ＢＤＥＮＴ0＝０とし、閾値をＢＴＨ1＝（ＢＤＥＮＴ1＋ＢＤＥＮＴ0）／２とすると、下記の式（５），（６）で示すように、出力画素濃度（ＯＵＴＰＵＴ）に応じて決定される誤差（Ｅ）を、前述と同様に新しい誤差として、図７に示す重み付けで拡散して配置することになる。
【００４７】
X'ij＞BTH1  ならば出力画素濃度  OUTPUT=1 で誤差 E=X'ij−BDENT1 …（５）
BTH1＞＝X'ij  ならば出力画素濃度  OUTPUT=0 で誤差 E=X'ij−BDENT0 …（６）
本実施の形態では、２値誤差拡散と４値誤差拡散処理において、誤差の分配演算が共通なことに着目し、誤差配分の演算処理のブロック及び誤差バッファのアクセスブロックを共通化することで、装置の規模が大きくなることを防止しつつ、４値誤差拡散と２値誤差拡散を同時に実現することができる。具体的には、誤差配分演算回路を有効ビット数の大きい４値誤差拡散の有効ビットで構成し、誤差バッファに格納する際に、有効ビット数を２値誤差拡散の有効ビット数にクランプ処理することにより、誤差バッファメモリのサイズを抑える。本実施の形態では、誤差バッファを６ビットにし、この誤差バッファに格納する際に算出された誤差量を“−３２”〜“＋３１”にクランプ処理している。
【００４８】
図８は、本実施の形態における２値誤差拡散及び４値誤差拡散処理を共通に処理するための誤差拡散回路例を示すブロック図である。
【００４９】
４０１〜４０３はラッチ回路で、重み付け分配され拡散される誤差データを保持しており、画素クロックに同期してデータが更新される。４０４〜４０７は加算器で、後述の誤差配分器４１１から出力される、各画素の処理時に発生する誤差が分配されたデータの加算を行う。４０８はクランプ処理回路で、加算器４０５の出力データが“−３２”以下の場合は“−３２”に、“＋３１”以上の場合は“３１”にそれぞれクランプ処理し、６ビットの符号付きデータ（“−３２”〜“３１”）に変換して画像メモリ５００に出力する。４０９は比較器で、２値もしくは４値誤差拡散のそれぞれの処理モードに応じて、加算器４０７から出力される誤差データにより補正された誤差濃度値を閾値と比較し、出力値及び誤差演算の算出式を選択する信号４１５を出力している。４１０は誤差算出器で、比較器４０９よりの信号４１５、及び加算器４０７からの加算結果を入力し、それにより決定される着目画素の新しい誤差量を算出して出力する。４１１は誤差配分器で、誤差算出器４１０から出力される新しい誤差量に対し、図７に対応する重み付け係数で誤差量を重み付けして、各加算器４０４，４０５，４０６に分配している。
【００５０】
この４値・２値化処理部４００におけるデータの流れについて、４値誤差拡散処理を例に説明する。尚、２値誤差拡散の場合は、閾値及び新しい誤差算出のための演算式が変わるだけで、以下に説明する４値誤差拡散処理と同様な処理の流れで実施される。
【００５１】
先ず入力された画像データ４１４は、加算器４０７においてラッチ４０３の出力（拡散された誤差データ）と加算され、比較器４０９及び誤差算出器４１０に出力される。比較器４０９では、上式（１）〜（４）に示すように、加算器４０７の出力データである補正画素データと各閾値ＴＨ1〜ＴＨ3とを比較して４値出力値を決定し、これと同時に新しい誤差量の算出式を選択する選択信号４１５を誤差算出器４１０に出力する。この誤差算出器４１０では、上式（１）〜（４）に相当する不図示の減算回路があり、上式（１）〜（４）のいずれの結果を用いるかを、比較器４０９からの選択信号４１５に応じて選択し、新しい誤差を出力する。
【００５２】
尚、誤差算出器４１０に設けられた減算器に対し、比較器４０９からの選択信号４１５により減算を行う値を切り替えることにより、新しい誤差量の算出を行ってもよい。
【００５３】
こうして誤差算出器４１０から出力される新しい誤差量は、誤差配分器４１１で図７に対応する重み付けが行なわれ、その結果が各加算器４０４，４０６，４０９及びラッチ４０１に出力される。ここで“Ｗ3”の重み付けがなされた誤差は、ラッチ４０１にラッチされ、これにより次の画素の誤差算出により生成される誤差の“Ｗ2”の重み付けされた誤差と加算器４０４により加算される。この加算器４０４の出力はラッチ４０２にラッチされ、更に、次の画素の誤差算出により生成される誤差の“Ｗ1”の重み付けされた誤差と加算器４０５で加算される。この加算器４０５の出力は、処理ラインの次ラインに拡散される誤差量であり、クランプ回路４０８により“−３２”から“３１”の符号付き６ビットのデータにクランプ処理されて出力される。クランプ処理回路４０８の出力は、１ライン分データを遅延させるために、一旦誤差バッファに格納され、次のラインを処理する際に読み出される。
【００５４】
また、加算器４０６では、１ライン分遅延された誤差バッファから読み出し値と、“Ｗ4”の重み付けされた誤差量とを加算し、その加算結果をラッチ４０３にラッチする。ラッチ４０３は、拡散された誤差の総和を補正量として出力する。これ以降、加算器４０７に戻り逐次、入力した画像データ４１４との加算が行われることにより、４値化された画像データが比較器４０９より出力されることになる。
【００５５】
以上説明したように、入力された画像データ４１４は、２値誤差拡散モード時には２値化され、４値誤差拡散モード時には４値化され、２値データもしくは４値データとして出力される。このとき各ラッチ及び各加算器の有効ビット数は４値誤差拡散処理の有効ビット数に応じて構成される。
【００５６】
＜２値・４値展開部６００＞
２値・４値展開部６００では、主走査４００ｄｐｉの解像度の画像データを１２００ｄｐｉの解像度の２値記録ができるプリンタ７００に出力するため、入力データに応じて１２００ｄｐｉの“０”（白）及び“１”（黒）の画像データに変換する。
【００５７】
入力データが４値の画像データの場合には、その４値の値を１２００ｄｐｉの小ドット３個からなる個数に対応させる。先ず４値の値が“０”の場合には、１２００ｄｐｉの小ドット全てが“０”の値を出力する。次に４値の“１”の場合には、１２００ｄｐｉの３個の小ドットの内の１個を“１”とし、残りの２個を“０”として出力する。同様に、４値の“２”の場合には、１２００ｄｐｉの３個の小ドットの内２個を“１”、残りの１個を“０”として出力し、４値データが“３”の場合には、１２００ｄｐｉの小ドットの３個全てを“１”として出力する。
【００５８】
また入力される画像データが２値の４００ｄｐｉの画像データの場合は、１２００ｄｐｉの小ドットを３個まとめて、入力２値データが“０”の場合は３個の小ドットを全て“０”とし、２値入力データが“１”の場合には、３個の小ドットの全てを“１”として出力し、２値の４００ｄｐｉの画像データの展開を行う。こうして展開された“０”“１”で構成されるデータがプリンタ７００により印刷される。
【００５９】
本実施の形態では、入力画像データとして、主走査４００ｄｐｉで２値及び４値の画像データを展開する場合を説明する。先に説明したように、主走査４００ｄｐｉの解像度の画像データを主走査方向に１２００ｄｐｉの解像度の２値記録ができるプリンタ７００に出力する場合、入力される４値の画像データを１２００ｄｐｉの小ドット３個の個数に対応させることで、４値４００ｄｐｉの画像データの記録が可能となる。また入力データが２値の４００ｄｐｉの画像データの場合は、１２００ｄｐｉの小ドットを３個をまとめて“０”或は“１”にすることにより、２値データで４００ｄｐｉの画像データの記録が可能となる。
【００６０】
まず最初に本実施の形態における小ドットの配置規則について説明する。
【００６１】
図９（Ａ）は、２５５階調の画像データを４値誤差拡散処理により４値化し、更に４値化された画像データを画像濃度に応じて規則的に左から小ドットを配置した場合の濃度データと記録濃度との関係を示すグラフ図である。
【００６２】
通常、ＬＢＰ等のプリンタ７００は、入力される画像データが“１”であるか“０”であるかに応じて半導体レーザによる照射をオン／オフし、レーザ光がオンされた点が黒で記録される。この時、レーザ光のドット径は円形であり、かつそのドット径は全黒を表現するため、ドット同士が少しずつ重なるようなサイズのドットサイズが選択される。このため白黒が交互するような高い周波数を持ったオン／オフデータに対しては、黒くて潰れがちなドットからなる画像として記録される。このようなことから、図９（Ａ）に示すように、画像データの濃度に対する記録濃度が極端に非線形なものになっている。
【００６３】
以上のような、プリンタ７００の特性を考慮して、本実施の形態では、小ドットを配置する際に、以下に示すように、偶数画素の場合には配置パターン０(pattern0)を選択して右側から黒ドット“１”を配置し、奇数画素の場合には、配置パターン１(pattern1)を選択し左側から黒ドット“１”を配置する。このようにして小ドットに展開することにより、出力データの周波数成分が抑えられ、白黒が交互するようなパターンをなくすことが可能となる。またこれと同時に、黒ドットが極力連続するように配置されるため、ドット系のはみ出しによる画像のつぶれが抑制されることになる。
【００６４】
0003679522.tif 000002
図９（Ｂ）は、２５５階調の画像データを４値誤差拡散より４値化し、更に４値化データを上記対称パターンを用いて小ドットに展開して記録した場合での、画像の濃度データと記録濃度との関係を示すグラフ図である。
【００６５】
図９（Ｂ）は図９（Ａ）とは異なり、画像データの濃度に対する記録濃度の関係が、図９（Ａ）よりもかなり線形なものとなっている。このことから上記配置パターンを用いてドット展開して記録した場合には、より階調特性に優れた画像を記録することが可能となる。
【００６６】
しかしながら、このような配置パターンを用いた場合、中間調表現は問題ないが、文字線画においてはエッジ部の画素が偶数にあたるか、奇数にあたるかにより、エッジ部において記録画像のキレが悪くなる可能性がある。
【００６７】
図１０（Ａ）は、エッジの低濃度の部分が主走査方向において奇数画素となるため、エッジ部で疑似線が発生した例を示す図である。
【００６８】
このようなエッジ部での不具合を防止するために本実施の形態では、下記のような例外処理を行う。即ち、本実施の形態では、ｍ値化された画像データを入力する際に、着目画素濃度が“１”〜“（ｍ−１）”の中間値を取り、両隣の画素が式（７），（８）を満たすか否かを判定する。そして、満たす場合には、偶数或は奇数番目に関係なく、固定パターンを選択するようにする。つまり、着目画素と左右の画素の濃度とを比較して画像のエッジ部であることを検出する。そしてエッジ部であれば、画素濃度の傾斜方向に応じて小ドットを配置することにより、エッジ部での再現性を向上させる。ここでＤＡＴｎ−１はＤＡＴｎの右側の画素データを示し、ＤＡＴｎ＋１はＤＡＴｎの左側の画素データを示す。
【００６９】
ＤＡＴｎ−１＜ＤＡＴｎ＜ＤＡＴｎ＋１→配置パターン０    …（７）
ＤＡＴｎ−１＞ＤＡＴｎ＞ＤＡＴｎ＋１→配置パターン１    …（８）
図１０（Ｂ）は、本実施の形態における偶数・奇数の対称パターン展開に、更に例外処理を導入した場合の出力例を示す図である。
【００７０】
これによれば、画像のエッジ部において疑似線が発生することなく、良好な結果が得られていることがわかる。
【００７１】
次に、図１１を参照して、本実施の形態の２値・４値展開部６００の具体的な構成例を詳細に説明する。
【００７２】
図１１は、２値・４値展開部６００における小ドットの配置を決定する回路の構成を示すブロック図である。
【００７３】
ここに入力される画像データは、画像出力をプリンタ７００の水平同期信号に同期させるため、不図示のラインバッファに一旦画像データがバッファリングされた後、その水平同期信号に同期させながらラインバッファから読み出された画像データである。６０１はデコーダで、着目画素値(DATn)及びその着目画素の主走査方向の前後の画素値(DATn-1, DTAn+1)及び入力画素値をカウントする１ビットのトグルカウンタの出力値６１０が入力される。尚、このトグルカウンタの出力値６１０により、その画素が偶数番目の画素か奇数番目の画素かが判定される。
【００７４】
このデコーダ６０１におけるデコードの論理は、下記のＣ言語で記述された論理式に従って、上記配置パターン０か、配置パターン１のいずれかを選択するかを決定する選択信号ＳＥＬをセレクタ６０２に出力する。セレクタ６０２は、着目画素ＤＡＴｎの濃度値及び選択信号ＳＥＬの値に応じて、小ドットのパターンを選択してパラレル・シリアル変換回路（Ｐ／Ｓ）６０３に出力する。このパラレル・シリアル変換回路６０３では、入力される３ビットのデータを、プリンタ７００が要求する所望のスピードのシリアルデータに変換し、例えばレーザ光のオン／オフデータとしてプリンタ７００に出力する。
【００７５】
0003679522.tif 000003
以上説明したように本実施の形態によれば、空間フィルタ処理部２００では、副走査方向の参照データを取り出すためのラインバッファのビット数を減らすことができ、更には、２値化及び４値化に応じて輝度−濃度変換の出力範囲を切り換え、また４値化処理において、誤差拡散により誤差バッファに格納される誤差データを２値化時の誤差バッファの有効数字のビット数にクランプ処理することにより処理を行うブロックを共通にでき、プリンタの記録能力を最大限に生かした画像データを生成することができる。
【００７６】
また以上説明したように本実施の形態によれば、ｍ値化された画像データをドット展開してプリンタ７００に出力する際に、ｍ値の入力画像データにおいて、画素が偶数番目の画素と奇数番目の画素の場合で対称となるようなパターンに小ドットを配置することにより、プリンタ装置の階調記録特性を大幅に向上させることができる。さらに、ｍ値の入力画像データに着目画素が中間値を有するかどうかを判定し、中間値を有する場合には、その着目画素の左右に位置している隣接画素を参照して、その隣接画素と着目画素との比較結果により小ドットの配置を決定することにより、画像に含まれるエッジ部分の再現性を高めた画像記録を提供することができる。
【００７７】
［他の実施の形態］
次に本発明の他の実施の形態である４値化手法のアルゴリズムについて説明する。尚、２値化の場合は、既知の２値誤差拡散法により２値化されるため、ここではその説明を省略する。この実施の形態では、プリンタ７００において追従性の悪い濃度領域では、孤立黒ドットの発生を抑えるように出力画像データの画素濃度及び誤差算出法を切り換えるように処理する。
【００７８】
本発明の他の実施の形態の４値化処理は、４値誤差拡散を基本とする。前述したように、低コストのプリンタ７００で問題となるのは、閾値ＴＨ1＝（ＤＥＮＴ1:85＋ＤＥＮＴ0:0）／２＝＞４２近辺の画像データである。そこで、この他の実施の形態では、まず入力画像データが画像ムラを起こす濃度かどうかを識別するための比較手段を設ける。更のこの比較手段の比較結果により、入力画像データの画素濃度が特定の濃度範囲内の場合には、下記の式（９）（１０）に示すように、入力画像データに拡散された誤差を加算した補正濃度とを比較するための閾値ＤＥＮＴ1＝８５を設定する。そして、補正濃度がこの閾値よりも大きい時は出力画素の値を“２”とし、更にこの画素で算出される誤差を補正濃度からＤＥＮＴ2＝１７０を減算したものとする。また、補正濃度が閾値以下ならば、出力する画素値を“０”とし、更にこの画素で算出される誤差を補正のうどからＤＥＮＴ0＝０を減算したものとする。
【００７９】
この結果、従来の画像ムラが発生する特定濃度域での４値化の出力パターンが、従来の濃度“１”と濃度“０のパターンから、濃度“２”と濃度“０”のパターンになる。これにより、この濃度領域で４値化データを展開して出力する際に、１２００ｄｐｉの孤立画素が生成されなくなる。これにより、プリンタ７００の追従性の範囲内でのドットパターンが生成され、階調特性が改善される。
【００８０】
また入力画像データが特定濃度範囲外の場合には、従来と同様な４値誤差拡散処理を施せば良い。その時の閾値及び出力値及び発生する誤差は、式（１１）〜（１４）となる。
【００８１】
入力画素の濃度がＤＴＨ1＜Ｘij＜ＤＴＨ2の時
X'ij＞DENT1   ならば出力画素濃度 OUTPUT=2 で誤差 E=X'ij−DENT2…（９）
DENT1>=X'ij   ならば出力画素濃度 OUTPUT=0 で誤差 E=X'ij−DENT0…（１０）
入力画素の濃度がＤＴＨ１≧Ｘij≦Ｘijの時
X'ij＞TH3     ならば出力画素濃度 OUTPUT=3 で誤差 E=X'ij−DENT3…（１１）
TH3>=X'ij>TH2 ならば出力画素濃度 OUTPUT=2 で誤差 E=X'ij−DENT2…（１２）
TH2>=X'ij＞TH1 ならば出力画素濃度 OUTPUT=1 で誤差 E=X'ij−DENT1…（１３）
TH1>=X'ij     ならば出力画素濃度 OUTPUT=0 で誤差 E=X'ij−DENT0…（１４）
図１２（Ｂ）は、本実施の形態の４値誤差拡散処理と４値展開処理を用い、０〜２５５の濃度データのパッチパターンを記録して、その濃度を濃度計を用いて測定した例を示す図である。この図１２（Ａ）（Ｂ）から明らかなように、濃度“４２”近辺での階調特性の改善が見られる。
【００８２】
この他の実施の形態の４値誤差拡散処理の回路例を示す図１３を参照して説明する。尚、この図１３では、前述の図８と共通する部分は同じ番号で示し、その説明を省略している。
【００８３】
ラッチ回路４０１〜４０３は、重み付け分配され拡散される誤差データを保持しており、画素クロックに同期してデータが更新される。加算器４０４〜４０７は、誤差配分器４１１から出力される、各画素の処理時に発生する誤差が分配されたデータの加算を行う。比較器４１６では、入力される画像データ４１４の画素濃度が特定の濃度領域（ここでは−４０以上４４以下であるか）かどうかを検出する。比較器４０９は、加算器４０７から出力される入力画素に対する拡散された誤差データにより補正された入力画素濃度値を閾値と比較し、誤差算出器４１０における出力値及び誤差演算の算出式を選択する信号４１５を出力している。４１０は誤差算出器で、比較器４０９よりの信号４１５、及び加算器４０７からの加算結果を入力し、それにより決定される着目画素の新しい誤差量を算出して出力する。誤差配分器４１１は、誤差算出器４１０から出力される新しい誤差量に対し、図７に対応する重み付け係数で誤差量を重み付けして、各加算器４０４，４０５，４０６に分配している。
【００８４】
この４値・２値化処理部４００におけるデータの流れについて説明する。
【００８５】
先ず入力された画像データ４１４は、加算器４０７においてラッチ４０３の出力（拡散された誤差データ）と加算され、比較器４０９及び誤差算出器４１０に出力される。また比較器４１６で、入力画素の濃度が特定の濃度領域にあるかどうかが検出される。比較器４０９では、比較器４１６の比較結果に基づき、上式（９）（１０）もしくは（１１）〜（１４）に示すように、ラッチ４０３の出力データである補正画素データと各閾値ＴＨ1〜ＴＨ3もしくはＤＥＮＴ1との比較により４値出力値を決定し、これと同時に新しい誤差量の算出式を選択する選択信号４１５を誤差算出器４１０に出力する。この誤差算出器４１０では、上式（１１）〜（１４）［式（９）は式（１２）と、式（１０）は式（１３）と同じ減算式を用いている］に相当する不図示の減算回路があり、上式（１１）〜（１４）のいずれの結果を用いるかを、比較器４１６及び比較器４０９からの選択信号４１５，４１７に応じて選択し、新しい誤差を出力する。
【００８６】
尚、誤差算出器４１０に設けられた減算器に対し、比較器４０９，４１６からの選択信号４１５，４１７により減算を行う値を切り替えることにより、新しい誤差量の算出を行ってもよい。
【００８７】
こうして誤差算出器４１０から出力される新しい誤差量は、誤差配分器４１１で図７に対応する重み付けが行なわれ、その結果が各加算器４０４，４０６，４０９及びラッチ４０１に出力される。ここで“Ｗ3”の重み付けがなされた誤差は、ラッチ４０１にラッチされ、これにより次の画素の誤差算出により生成される誤差の“Ｗ2”の重み付けされた誤差と加算器４０４により加算される。この加算器４０４の出力はラッチ４０２にラッチされ、更に、次の画素の誤差算出により生成される誤差の“Ｗ1”の重み付けされた誤差と加算器４０５で加算される。この加算器４０５の出力は、１ライン分データを遅延させるため、一旦誤差アバッファに格納され、次のラインを処理する際に読み出される。
【００８８】
また、加算器４０６では、１ライン分遅延された誤差バッファから読み出し値と、“Ｗ4”の重み付けされた誤差量とを加算し、その加算結果をラッチ４０３にラッチする。ラッチ４０３は、拡散された誤差の総和を補正量として出力する。これ以降、加算器４０７に戻り逐次、入力した画像データ４１４との加算が行われることにより、４値化された画像データが比較器４０９より出力されることになる。
【００８９】
尚、後続の２値・４値展開部６００の構成は図１１を参照して前述した通りである。
【００９０】
以上説明したように、入力された画像データの特定濃度領域でｍ値誤差拡散の出力パターンを切り替えることにより、プリンタ７００に出力するためにｍ値化されたデータをドット展開しても、低濃度でかつ周波数成分の高いドットパターンの生成が抑制され、コーコストなプリンタにおいても画像の荒れが発生することなく、階調特性の優れた記録を行うことができる。
【００９１】
図１４〜図１８は、前述した各機能をソフトウェアにより実現した場合のフローチャートを示しており、これら処理を実行する制御プログラムはプログラムメモリ１２２に記憶され、ＣＰＵ１２０の制御の下に実行される。
【００９２】
図１４は本実施の形態における空間フィルタ処理を示すフローチャートである。
【００９３】
まずステップＳ１で、入力した画像データ（８ビット）をクロック(DCLK)に同期して順次ラインバッファ２０１，２０２に格納する。ここで前述したように、ラインバッファ２０１には２ビット右方向にシフトされて、６ビットデータとして格納される。こうして２ライン分の画像データがラインバッファ２０１，２０２に格納された後、次のラインの画像データの入力に同期してラッチ群２０３に３ライン×３画素の画素データがラッチし、フィルタマトリクスと乗算する（ステップＳ２）。こうして得られた値が着目画素に加算され、フィルタ演算を施した画素データが出力される（ステップＳ３）。このときのフィルタ演算式は、
filter = X<<2−（(A<<2) ＋ (B<<2) ＋ C ＋ D）で表される。
【００９４】
図１５は、輝度−濃度変換処理を示すフローチャートである。
【００９５】
この輝度−濃度変換処理は後続の４値・２値化処理において、２値或は４値のいずれで行われるかにより決定される。即ち、ステップＳ１１で２値で行うと判定されるとステップＳ１２に進み、８ビットデータの全白を“０”に、全黒を“６３”の濃度データに変換する処理を行う。またステップＳ１１で４値処理を行うと判断するとステップＳ１３に進み、８ビットデータの全白を“０”に、全黒を“２５５”の濃度データに変換する処理を行う。またステップＳ１４では、プリンタ７００において画像の粗さが発生する濃度（前述の例では濃度値“３１”）が存在する場合は、その濃度値への変換を行わないようにする。尚、このような輝度−濃度変換は、ルックアップテーブルを用いて行うが好適である。
【００９６】
図１６は、２値／４値化処理を示すフローチャートである。この処理は２値或は４値の誤差拡散処理を用いて行われる。
【００９７】
まずステップＳ２１で、着目画素Ｘijの補正濃度Ｘ'ijを求める。この補正濃度は、１ライン前の誤差が誤差バッファに格納されている時は、その誤差バッファの格納された値が用いられて補正濃度が決定される。次にステップＳ２２に進み、２値或は４値のいずれの誤差拡散を行なうかが判断され、４値の誤差拡散を行う時はステップＳ２３に進み、前述の式（１）〜（４）で示すように、３個の閾値により出力レベル(OUTPUT)と誤差（Ｅ）を求める。また２値の誤差拡散を行う時はステップＳ２４に進み、前述の式（５）（６）で示すように閾値(BTH1)に基づいて出力画素値(OUTPUT)と誤差（Ｅ）を決定する。
【００９８】
こうして誤差が決定されるとステップＳ２５に進み、前述の図７の重み付け加算を実行し、これにより得られた誤差（Ｅ）を６ビットデータにクランプする（ステップＳ２６）。そしてステップＳ２７に進み、その求めた誤差（Ｅ）を誤差バッファに格納して１ライン遅延させ、その遅延した誤差が次のラインの画素の誤差拡散処理で参照される。
【００９９】
図１７は２値・４値データを２値データ（小ドットで表現する）に展開する処理を示すフローチャートである。
【０１００】
図１７では、画像の濃度勾配を求め、その濃度勾配に応じて小ドットの配置を決定するものである。即ち、ステップＳ３１で、ｍ値画像データを入力し、その画像データの着画素の左右（主走査方向）に位置している画素の濃度勾配が右上がりか、右下がりかを判断し（ステップＳ３２）、右上がりであれば前述したパターン０（ドットが右側から展開される）を選択し（ステップＳ３３）、右下がりであれば前述したパターン１（ドットが左側から展開される）を選択する（ステップＳ３４）。
【０１０１】
また上記、濃度勾配が無い場合において、その着目画素が奇数番目の画素であるか、偶数番目の画素であるかにより小ドットの配置を決定するものである。即ち、ステップＳ３２で、ｍ値画像データを入力し、その画像データの着画素が濃度勾配にあるかどうかを調べ、濃度勾配がなければ、その着目画素が奇数番目の画素か偶数番目の画素かをみる（ステップＳ３５）。奇数番目の画素であればパターン１（ドットが左側から展開される）を選択し（ステップＳ３６）、偶数番目の画素であればパターン０（ドットが右側から展開される）を選択する（ステップＳ３７）。
【０１０２】
図１８は本発明の他の実施の形態の２値・４値化処理を示すフローチャートである。
【０１０３】
まずステップＳ５１で、入力した画像データがプリンタ７００において画像ムラを起こす濃度を有している特定の濃度範囲に該当しているかどうかを判断する。この判断により、特定濃度範囲外であると判断されると図１６のステップＳ２２に進み、前述した処理を実行する。
【０１０４】
また、特定濃度範囲内であると判断されるとステップＳ５２に進み、入力画像データに拡散された誤差を加算した補正濃度値を求め、その補正濃度値と、比較のための閾値とを比較する。ここで補正濃度値の方が大きい時はステップＳ５３に進み、出力画素濃度(OUTPUT)を“２”とし、その時の誤差を求める。また、補正濃度値の方が小さい時はステップＳ５４に進み、出力画素濃度(OUTPUT)を“０”とし、その時の誤差を求める。こうしてステップＳ５３或はステップＳ５４の処理が終了すると図１６のステップＳ２５に進み、前述した処理を実行する。
【０１０５】
尚、本発明は、複数の機器（例えばホストコンピュータ，インターフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用してもよい。
【０１０６】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても達成される。
【０１０７】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１０８】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【０１０９】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１１０】
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１１１】
以上説明したように本実施の形態によれば、空間フィルタ処理部における副走査方向の参照データを取り出すためにラインバッファのビット数を減らし、更には２値化及び４値化に応じて輝度濃度変換の出力範囲を切り替えることで、更には４値化処理では誤差拡散により誤差バッファに格納される誤差データを２値化時の誤差拡散の有効数字のビット数にクランプ処理することでブロックの共通化をはかり、コピー時に記録系の能力を最大限に生かした画像データを生成することができる。
【０１１２】
【発明の効果】
以上説明したように本発明によれば、２値誤差拡散及びｍ値誤差拡散処理における誤差バッファへのアクセスを共通化することにより、装置規模が大きくなるのを防止できるという効果がある。
【０１１８】
【図面の簡単な説明】
【図１】本発明の実施の形態における画像処理装置の機能構成を示す機能ブロック図である。
【図２】本発明の実施の形態における画像処理装置の構成を示すブロック図である。
【図３】本実施の形態における空間フィルタの係数の例（Ａ）及び各ラインバッファとの対応（Ｂ）を示す図である。
【図４】本実施の形態における空間フィルタ処理部の構成を示すブロック図である。
【図５】本実施の形態の空間フィルタ処理部におけるメモリアクセスのタイミングを説明するためのタイミングチャートである。
【図６】本実施の形態における２値誤差拡散処理部の輝度−濃度変換の特性（Ａ）、及び４値誤差拡散処理部の輝度−濃度変換の特性（Ｂ）（Ｃ）を示す図である。
【図７】本実施の形態における２値及び４値誤差拡散処理の誤差配分の重み付けを示す図である。
【図８】本実施の形態における２値及び４値誤差拡散処理部の構成を示すブロック図である。
【図９】本実施の形態における４値データの記録特性例を示す図である。
【図１０】画像データのエッジ部での擬似線の発生を説明する図（Ａ）及び本実施の形態によりその擬似線の発生を抑えた例を示す図（Ｂ）である。
【図１１】本実施の形態における２値・４値展開部の構成を示すブロック図である。
【図１２】従来の４値展開されたデータの濃度の記録濃度との対応関係（Ａ）及び本実施の形態における４値展開されたデータの濃度の記録濃度との対応関係（Ｂ）を示す図である。
【図１３】本発明の他の実施の形態における２値及び４値誤差拡散処理部の構成を示すブロック図である。
【図１４】本実施の形態の画像処理装置における空間フィルタ処理を示すフローチャートである。
【図１５】本実施の形態の画像処理装置における輝度−濃度変換処理を示すフローチャートである。
【図１６】本実施の形態の画像処理装置における２値・４値化処理を示すフローチャートである。
【図１７】本実施の形態の画像処理装置における２値・４値展開処理を示すフローチャートである。
【図１８】本実施の他の形態の画像処理装置における２値・４値化処理を示すフローチャートである。
【符号の説明】
１００  スキャナ
１２０  ＣＰＵ
１２１  ＲＡＭ
１２２  プログラムメモリ
１２３  ルックアップテーブル（ＬＵＴ）
１２４  ラプラシアン・フィルタ値
２００  空間フィルタ
２０１，２０２  ラインバッファ
２０３  ラッチ群
３００  輝度−濃度変換部
４００  ４値・２値化処理部
４０１，４０２，４０３  ラッチ
４０４，４０５，４０６，４０７  加算器
４０８  クランプ回路
４０９，４１６  比較器
４１０  誤差算出器
４１１  誤差配分器
５００  画像メモリ
６００  ２値・４値展開部
７００  プリンタ
【図１】
0003679522.tif 000004
【図２】
0003679522.tif 000005
【図３】
0003679522.tif 000006
【図４】
0003679522.tif 000007
【図５】
0003679522.tif 000008
【図６】
0003679522.tif 000009
【図７】
0003679522.tif 000010
【図８】
0003679522.tif 000011
【図９】
0003679522.tif 000012
【図１０】
0003679522.tif 000013
【図１１】
0003679522.tif 000014
【図１２】
0003679522.tif 000015
【図１３】
0003679522.tif 000016
【図１４】
0003679522.tif 000017
【図１５】
0003679522.tif 000018
【図１６】
0003679522.tif 000019
【図１７】
0003679522.tif 000020
【図１８】
0003679522.tif 000021