(57)【特許請求の範囲】
【請求項１】
多値データの画素で構成する画像における処理対象画素の多値データに対して、周辺画素で発生し当該処理対象画素へ拡散された誤差データを付加した上で、閾値との比較を行い、少値データを出力する量子化手段と、
前記量子化手段によって量子化された少値データと元の多値データを比較することで、量子化による誤差を算出する量子化誤差算出手段と、
前記量子化誤差算出手段によって算出された誤差を拡散させるための重みを、複数の対象周辺画素に付与する重み付与手段と、
現行ラインの量子化誤差拡散処理の際、前記重み付与手段によって付与された重みに従い拡散される誤差データを、画素ごとに、現行ラインの量子化誤差拡散処理までに累積された誤差データに加算する誤差加算手段と、
前記誤差加算手段によって計算された誤差データを、処理対象画素の前記量子化手段への入力データに付加するために、処理順となる画素配列に従って保存するバッファと
を有する画像処理装置であって、
前記誤差加算手段によって計算された次ラインの誤差データを上位ビットと下位ビットに分離するデータ分離手段と、
現行ラインの量子化誤差拡散処理の際、前記データ分離手段で分離された下位ビットの誤差データを、画素ごとに、現行ラインの量子化誤差拡散処理までに累積された次ラインの下位ビットの誤差データに加算し、桁上げ信号を出力する下位ビット誤差累算手段と、
前記データ分離手段で分離された上位ビットの誤差データに前記下位ビット誤差累算手段の出力する桁上げ信号を加算する上位ビット誤差データ算出手段と、
前記バッファに設けた、前記上位ビット誤差データ算出手段によって算出された上位ビットの誤差データを保存する次ライン誤差データ保存部と、
前記次ライン誤差データ保存部に保存された誤差データを現行ラインの量子化誤差拡散処理に適用する際に、元のビット数に合わせるためのレフトシフタ
を備え、
前記データ分離手段、前記次ライン誤差データ保存部及び前記誤差加算手段を、次の関係式、即ち、
前記データ分離手段で分離する上位ビット数≦前記次ライン誤差データ保存部で保存する誤差データのビット数＜前記データ分離手段で分離される誤差データのビット数
に基づいて構成することを特徴とする画像処理装置。
【請求項２】
多値データの画素で構成する画像における処理対象画素の多値データに対して、周辺画素で発生し当該処理対象画素へ拡散された誤差データを付加した上で、閾値との比較を行い、少値データを出力する量子化手段と、
前記量子化手段によって量子化された少値データと元の多値データを比較することで、量子化による誤差を算出する量子化誤差算出手段と、
前記量子化誤差算出手段によって算出された誤差を拡散させるための重みを、複数の対象周辺画素に付与する重み付与手段と、
現行ラインの量子化誤差拡散処理の際、前記重み付与手段によって付与された重みに従い拡散される誤差データを、画素ごとに、現行ラインの量子化誤差拡散処理までに累積された誤差データに加算する誤差加算手段と、
前記誤差加算手段によって計算された誤差データを、処理対象画素の前記量子化手段への入力データに付加するために、処理順となる画素配列に従って保存するバッファと
を有する画像処理装置であって、
前記誤差加算手段によって計算された次ラインの誤差データを上位ビットと下位ビットに分離するデータ分離手段と、
現行ラインの量子化誤差拡散処理の際、前記データ分離手段で分離された下位ビットの誤差データを、画素ごとに、現行ラインの量子化誤差拡散処理までに累積された次ラインの下位ビットの誤差データに加算し、桁上げ信号を出力する下位ビット誤差累算手段と、
前記データ分離手段で分離された上位ビットの誤差データに前記下位ビット誤差累算手段の出力する桁上げ信号を加算する上位ビット誤差データ算出手段と、
前記バッファに設けた、前記上位ビット誤差データ算出手段によって算出された上位ビットの誤差データを保存する次ライン誤差データ保存部と、
前記次ライン誤差データ保存部に保存された誤差データを現行ラインの量子化誤差拡散処理に適用する際に、元のビット数に合わせるためのレフトシフタ
を備え、
前記データ分離手段、前記次ライン誤差データ保存部及び前記誤差加算手段を、次の関係式、即ち、
前記データ分離手段で分離する上位ビット数＜前記次ライン誤差データ保存部で保存する上位ビットの誤差データのビット数＜前記データ分離手段で分離される誤差データのビット数
に基づいて構成することを特徴とする画像処理装置。
【請求項３】
請求項１に記載された画像処理装置において、
前記データ分離手段で分離する上位ビット数、前記次ライン誤差データ保存部で保存する上位ビットの誤差データのビット数、前記データ分離手段で分離される誤差データのビット数の少なくとも一つのビット数を異なるビット数の間で切り替え可能にしたことを特徴とする画像処理装置。
【請求項４】
請求項１又は３に記載された画像処理装置において、
前記上位ビット誤差データ算出手段における下位ビットの桁上げ信号の加算により上位ビットがオーバーフローする条件が成り立つとき、入力下位ビットの桁上げ信号を無視する手段を備えたことを特徴とする画像処理装置。
【請求項５】
請求項１又は３に記載された画像処理装置において、
前記上位ビット誤差データ算出手段における下位ビットの桁上げ信号の加算により上位ビットがオーバーフローする条件が成り立つとき、下位ビットの桁上げ信号の入力を保留し、後続する処理で当該オーバーフロー条件が不成立になったときに保留を解除する手段を備えたことを特徴とする画像処理装置。
【請求項６】
請求項１乃至５のいずれかに記載された画像処理装置において、
前記バッファは、誤差拡散を伴う量子化処理専用のメモリを用いて構成することを特徴とする画像処理装置。
【請求項７】
請求項１乃至５のいずれかに記載された画像処理装置において、
前記バッファは、当該画像処理装置全体を制御するシステムで使用するメインメモリを共用して構成することを特徴とする画像処理装置。
【請求項８】
請求項７に記載された画像処理装置において、
前記バッファのビット数を８ビットとしたことを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置（複写機、プリンタ、複合機等）等に搭載される入力画像をプリント出力用のデータに処理する画像処理装置に関し、処理過程においてビット拡張が行なわれても、誤差拡散による中間調処理に必要となるメモリ容量の肥大化を抑制することができる画像処理装置に関する。
【背景技術】
【０００２】
複写機、プリンタ、複合機等の画像形成装置に求められる画質は、カラー化や多機能化に伴って、年々高くなっている。
高画質化の進展に連れて、処理対象画像をプリント出力用のデータに処理する過程でビット拡張を行う画像処理手法が様々な形で提案され、実施されている。
プリント出力用のデータ処理においては、例えば、図１４に示す処理が一般的である。同図に示す処理過程は、スキャナ入力もしくはホスト機からのＰＤＬ（ページ記述言語）データ入力が行われ、入力側のデータ処理を経て生成される画像がプリント出力の対象となる。
このプリント出力の対象となるデータは、多くの場合、ＲＧＢ各８bitで、この画像データに対し、出力処理として、色変換２３’、プリンタγ補正２４’、中間調処理２５’、レンダリング＆エンジン出力２６’という処理過程を経てプリント出力が行われる。
【０００３】
図１４の例では、プリンタγ補正２４’で８bitから１０bitへ拡張され、その下流の中間調処理２５’では内部処理（後記図５、参照）では１２bitを必要とし、中間生成物を格納するメモリを肥大化させることに繋がって、コスト増を招く結果となる。
こうしたメモリの肥大化に対し、メモリ容量を削減する目的で提案された従来技術として、特許文献１（特開２００４−０９６７０９号公報）を挙げることができる。
特許文献１には、誤差拡散処理の際の演算誤差の影響を低減しつつ、必要となるバッファメモリの容量を削減する目的で、発生した量子化誤差の少数部分を次の入力画像にビット結合させることで、量子化誤差の少数部分をバッファメモリに保持することを不要にすることが記載されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上述の従来例におけるバッファメモリの容量の削減は、量子化誤差の上位ビットのみを対象に誤差拡散を行い、下位ビットを対象外としているので、画質を低下させるという問題が生じる。
本発明は、プリント出力用のデータ処理過程におけるビット拡張が招く、中間調処理の誤差拡散に必要となるバッファのメモリ容量の肥大化を抑制すべく提案された上述の従来技術において生じる問題に鑑みてなされたもので、その目的は、下位ビットを切り捨てずに量子化処理に反映させることで高画質を保つことと、バッファのメモリ容量の肥大化を抑制することを両立させることにある。
【課題を解決するための手段】
【０００５】
本発明は、多値データの画素で構成する画像における処理対象画素の多値データに対して、周辺画素で発生し当該処理対象画素へ拡散された誤差データを付加した上で、閾値との比較を行い、少値データを出力する量子化手段と、前記量子化手段によって量子化された少値データと元の多値データを比較することで、量子化による誤差を算出する量子化誤差算出手段と、前記量子化誤差算出手段によって算出された誤差を拡散させるための重みを、複数の対象周辺画素に付与する重み付与手段と、現行ラインの量子化誤差拡散処理の際、前記重み付与手段によって付与された重みに従い拡散される誤差データを、画素ごとに、現行ラインの量子化誤差拡散処理までに累積された誤差データに加算する誤差加算手段と、前記誤差加算手段によって計算された誤差データを、処理対象画素の前記量子化手段への入力データに付加するために、処理順となる画素配列に従って保存するバッファとを有する画像処理装置であって、前記誤差加算手段によって計算された次ラインの誤差データを上位ビットと下位ビットに分離するデータ分離手段と、現行ラインの量子化誤差拡散処理の際、前記データ分離手段で分離された下位ビットの誤差データを、画素ごとに、現行ラインの量子化誤差拡散処理までに累積された次ラインの下位ビットの誤差データに加算し、桁上げ信号を出力する下位ビット誤差累算手段と、前記データ分離手段で分離された上位ビットの誤差データに前記下位ビット誤差累算手段の出力する桁上げ信号を加算する上位ビット誤差データ算出手段と、前記バッファに設けた、前記上位ビット誤差データ算出手段によって算出された上位ビットの誤差データを保存する次ライン誤差データ保存部と、前記次ライン誤差データ保存部に保存された誤差データを現行ラインの量子化誤差拡散処理に適用する際に、元のビット数に合わせるためのレフトシフタを備え、前記データ分離手段、前記次ライン誤差データ保存部及び前記誤差加算手段を、次の関係式、即ち、前記データ分離手段で分離する上位ビット数≦前記次ライン誤差データ保存部で保存する誤差データのビット数＜前記データ分離手段で分離される誤差データのビット数に基づいて構成することを特徴とする。
【発明の効果】
【０００６】
本発明によれば、プリント出力用のデータ処理過程におけるビット拡張が招く、中間調処理の誤差拡散に必要となるバッファのメモリ容量の肥大化を抑制するとともに、量子化誤差の拡散の対象に下位ビットも含めることで階調性を失わず、高画質を保つことができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施形態としてのＭＦＰの構成の概要を示す図である。
【図２】画像データの処理機能を有するコントローラの下に構成されるＭＦＰ（図１）の制御システムの概要を示すブロック図である。
【図３】γ変換の変換特性を説明する図である。
【図４】図３における出力ビット数を、より拡張したときのγ変換の変換特性を説明する図である。
【図５】誤差拡散を伴う中間調処理系の基本構成を示す図である。
【図６】１２bitデータ⇒２bitデータを例とする量子化（図５、参照）の入力と出力の関係を示す表である。
【図７】２bitデータ⇒１２bitデータを例とする逆量子化（図５、参照）の入力と出力の関係を示す表である。
【図８】重み付けをして行う誤差拡散を、その１例にて説明する模式図である。
【図９】中間調処理系（図５）の重み付け及び誤差保存・出力の回路構成例を示す図である。
【図１０】本発明の実施形態に係る誤差拡散を伴う中間調処理系の構成例を示す図である。
【図１１】中間調処理系（図１０）の重み付けから次の画素に付加する誤差を出力する過程の回路構成例を示す図である。
【図１２】図１１のビット分離からラインバッファにデータを格納する過程の回路構成例の詳細を示す図である。
【図１３】図１２の回路構成における動作例を、画素単位で順次行われるフローのデータ状態にて示す表である。
【図１４】従来から一般的に行われるプリント出力用のデータ処理の過程を示す図である。
【発明を実施するための形態】
【０００８】
以下、本発明に係る画像処理装置の実施形態について、添付図を参照して説明する。
本発明に係る画像処理装置の実施形態として、以下には、複合機（ＭＦＰ）を例にする。
本実施形態のＭＦＰは、スキャナ入力もしくはホスト機からの印刷データの入力が行われ、入力側のデータ処理を経て生成される画像データをもとに、印刷要求に指示される出力条件に従いプリント出力用のデータ処理を行う。
このプリント出力用のデータ処理の過程で行う中間調処理では、入力多値データ（ここでは１０bit）の画素で構成する画像に対し量子化によって少値データ（ここでは２bit）に処理され、出力に用いられる。この量子化で個々の画素に生じる誤差は、出力画像全体としての画質が保たれるように、周辺画素に拡散される。
【０００９】
本発明では、誤差拡散の処理に使用するメモリ容量の肥大化を抑制するために、拡散する誤差データの下位ビットを分離して後続する画素の量子化処理に反映させる方法を採用する点が本発明の要旨である。
ただ、中間調処理として行う誤差拡散を伴う量子化処理そのものは、ＭＦＰにおいても既存の技術である。よって、先ず、本実施形態が基礎を置くＭＦＰの構成の概要について、図１及び図２を参照して説明する。
図１は、本発明の実施形態としてのＭＦＰの構成の概要を示す図である。
また、図２は、画像データの処理機能を有するコントローラの下に構成されるＭＦＰ（図１）の制御システムの概要を示すブロック図である。
【００１０】
図１に示すように、ＭＦＰ１は、コントローラボード２ｂ、スキャナユニット３、プロッタユニット４、操作部５の各ユニットを有する。
また、ホスト７は、印刷要求等を発行するＰＣ（personal computer）等の外部機であり、通信手段を介してコントローラボード２ｂと接続される。
スキャナユニット３は、原稿面を主・副２次元走査で読み取って、走査ラインに従った配列となる画素の光量を対応する電気信号に変換し、コントローラボード２ｂへ出力する。スキャナユニット３には、自動原稿送り装置（ＡＤＦ）を備え、複数枚の原稿を自動で読み取る機能を持たせてもよい。また、原稿画像の電気信号への変換方式は、ＣＣＤ（Charge Coupled Devices）方式、ＣＩＳ（Contact Image Sensor）方式のどちらでもよい。
【００１１】
プロッタユニット４は、スキャナユニット３で読み取った画像やホスト７等から入力した画像データを後述するプリント出力用データの処理を通してカラー構成色であるＣＭＹＫ（+α）データに変換した後、このデータを用いて、記録媒体（用紙）へ印刷し、用紙出力を行う。印字方式は、インクジェット方式、電子写真方式のどちらでもよい。
操作部５は、キー等の入力手段及び表示器等を備え、ユーザーによる動作モードの設定等の動作条件の設定や指令の入力を受け付け、また、ユーザーへの機器のステータスの通知や入力用画面等の表示を行う。
コントローラボード２ｂは、後記図２に示すコントローラ２を構成する要素を搭載し、コピー処理・プリント処理などの制御を行うユニットである。コピーではスキャナユニット３より入力されたＲＧＢ多値画像をプロッタユニット４で出力可能なフォーマットに変換する。プリント出力の際に、ページ順序を入れ替えたり、画像を蓄積したり、画像編集をしたりなど付加的な機能を実現する。なお、プリント出力用の画像データの処理、特に本発明を特徴付ける中間調処理の実施形態については、後記で詳細に説明する。
【００１２】
図２に示す制御システムは、画像データの処理機能を有するコントローラ２の下に構成され、スキャナユニット３、プロッタユニット４、操作部５の各ユニットがコントローラ２の制御下で、それぞれスキャナエンジン制御３２、プリンタエンジン制御４２、操作部Ｉ／Ｆ５２を介して動作する。
ここでは、コントローラ２が有する画像データの処理機能として、プリント出力用の画像データ処理が要旨となるので、コピー要求時及びホスト７からの印刷要求時の画像データの処理を主に、その処理フローに係る要素のみ図示しているので、同図示にもとづいて説明をする。
【００１３】
スキャナ画像入力部２１は、スキャナユニット３より入力されたＲＧＢ多値データを取り込む。画像信号をアナログ信号で受信した場合は、デジタルデータに変換する。画像の光電変換素子間のばらつき補正や、当該素子の物理的な位置の違い、照明の変動等に対する補正を行う。
スキャナ画像処理部２２は、スキャナ特性を打ち消すような処理を施し、標準ＲＧＢのデータ形式に変換する。
色変換２３は、スキャナ画像処理部から入力されるＲＧＢ多値データをＣＭＹＫ多値データに変換する。
γ変換２４は、プリンタエンジン（プロッタ）の出力特性の非線形性による画質の劣化を打ち消すために、画像の濃度特性を補正する。後述する実施形態におけるように、γ変換２４への入力ビット数よりも、γ変換２４からの出力ビット数を大きくすると（例：８bit⇒１０bit）高画質化につながる場合がある（後記、図３及び４の説明、参照）。
【００１４】
中間調処理２５は、色変換２３で変換されたＣＭＹＫ多値データに対するγ変換２４で、例えば１０bitの多値データとされ、その入力を受け、量子化によって、プロッタユニット４で出力に用いる２〜８bit程度の少値データに変換する。中間調処理２５は、本発明に特有の処理によるものであり、後記で詳細に説明する。
プリンタ画像出力部２６は、プロッタユニット４の仕様に合わせた順序・タイミングで中間調処理２５の処理を受けた画像データをプロッタユニット４に送信する。
ホストＩ／Ｆ７２は、ＰＣ等のホスト７などで発行される印刷要求を受信し、ジョブを管理するメモリ（不図示）へ格納する。
プリント画像処理２７は、印刷要求として受信したＰＤＬ（ページ記述言語）データを解析し、ＲＧＢ多値データに変換する。なお、色変換２３以降のプリント出力用の画像データの処理は、先に述べたスキャナ入力した画像データにおけると同様に処理される。
ＣＰＵ２０は、処理を要求してＭＦＰに入力される各種のジョブを管理し、コントローラ２内の制御要素全体の動作を制御する。
【００１５】
ところで、上記コントローラ２は、ＣＰＵ２０、ＣＰＵ２０が駆動するプログラム（ソフトウェア）を格納するＲＯＭ（不図示）、プログラムを動作させるときのワークメモリとして使用するＲＡＭ（不図示）等のハードウェアを要素として構成するコンピュータによって構成することができる。
コンピュータによってコントローラ２を構成する場合、例えば、プリント出力用の画像データを処理する場合、この処理を実行する上記各処理部等として機能させるためのプログラムをＲＯＭに記録、搭載し、このプログラムを当該コンピュータにより駆動することにより、これらの処理部等を実現する手段とする。
なお、プログラムを記録する媒体としては、ＲＯＭに限らず、ＨＤＤ（ハードディスク）、ＣＤ−ＲＯＭ，ＭＯ（Magneto Optical Disk）等のディスク型を含む各種記憶媒体を用いることができる。
【００１６】
“ビット数の拡張”
プリント出力用のデータ処理では、画質の劣化を招かないようにデータを保存する必要があり、そのためにビット数の拡張を必要とする場合がある。
γ変換を例に引くと、γ変換では、入力された濃度情報に対して、非線形なテーブルを用いて変換を行うことで、エンジンの出力特性の非線形性起因による画質の劣化を打ち消す処理を行う。
図３はγ変換の変換特性を説明する図である。同図に例示するγ変換特性は、入力８bit、出力８bit（最大値２５５）の変換を行う場合であり、γ特性の非線形性が強いと、拡大図に示すように入力の階調性が失われる原因となる。つまり、それぞれ異なる入力値に対して、出力値が同一となってしまい（拡大図の連なる３点が同一出力値である）、表現できる濃度の数が縮小する結果となる。
【００１７】
そこで、出力ビット数を拡張する。
図４は、図３における出力ビット数を、より拡張したときのγ変換の変換特性を説明する図である。同図では、入力８bitに対して、出力１０bit（最大値１０２３）に拡張した状態を示している。出力のビット数を拡張することで、強い非線形性が存在しても、階調性の低下が抑えられる。つまり、それぞれ異なる入力値に対して、出力値がそれぞれ異なり（拡大図の連なる３点の出力値が滑らかに変化する）、表現できる濃度の数が拡大する結果となる。
このように、より高画質を求める場合には、γ変換などのテーブル処理において、出力ビットの拡張を行うことで、特性データが保存され、画質の劣化を防ぐことが可能になる。
ここでは、γ変換において出力ビットの拡張を行った場合を示しているが、さらに上流画像処理においてビット数を拡張することも考えられ、その場合においても、後述する中間調処理において、処理の対象となる画像データのビット数が大きくなる。
【００１８】
［中間調処理］
本発明が要旨とする、処理対象画像の多値データをプリント出力用の少値データへ量子化する、即ち、プロッタユニット４で用いる少値データにより中間調を表現するデータへ変換する中間調処理について、詳細に説明する。
ここでは、中間調処理において、量子化の過程で発生する誤差を周辺画素へ拡散し、量子化処理の対象画素に拡散した誤差を付加する誤差拡散法を用いて、量子化誤差の影響を緩和する方法を採用する。
図５は、誤差拡散を伴う中間調処理系の基本構成を示す図である。
同図に示すように、中間調処理系は、加算２５１、量子化２５２、逆量子化２５３、加算２５４、重み付け２５５、誤差保存・出力２５６の各要素を有する。
【００１９】
ここでは、γ変換２４を経て１０bitとした画像データの画素を配列順に従い画素ごとに処理する。また、入力１０bitを量子化によって２bitに少値し、出力するが、その際、量子化誤差を拡散する。
画像データが入力されると、加算２５１は、処理対象画素のデータ値に当該画素の周辺画素で発生した誤差（誤差の算出方法等は後述）を加算する。加算後のデータは、１２bitのデータとなる。
次に、量子化２５２は、加算２５１によって周辺画素で発生した誤差を付加した入力データに対し量子化処理を行う。この量子化処理は、（出力階調数−１）だけの数の閾値を持ち、閾値との大小比較により出力データを決定する。
図６は、１２bitデータ⇒２bitデータを例とする量子化（図５、参照）の入力と出力の関係を示す表である。同図に示す例では、３段階の閾値処理により１２bitデータを４値（２bit）のデータとして出力する。
量子化２５２は、量子化処理の結果をプリント出力用のデータ処理過程の次の処理部（図２の例では、プリンタ画像出力部２６）に出力する。
【００２０】
中間調処理２５の内部処理として、次に、逆量子化２５３は、量子化２５２が出力する４値（２bit）のデータに対する逆量子化、即ち、量子化前の１２bitデータに戻す処理を行う。
図７は、２bitデータ⇒１２bitデータを例とする逆量子化の入力と出力の関係を示す表である。同図に示すように、量子化２５２の４値（２bit）の出力データに対する逆量子化であるから、逆量子化２５３の処理の結果として得られる出力は、当然、量子化２５２への入力データが保存されることはない。
次いで、加算２５４は、量子化２５２を行う前の周辺画素で発生した誤差を付加した入力データを＋入力とし、他方、逆量子化２５３の出力データを−入力として、これらのデータの加算をする。この加算によって、量子化誤差を表すデータ（以下単に「誤差データ」という）が得られる。なお、図５の例では、誤差データは１２bitで出力される。
【００２１】
次に、重み付け２５５は、加算２５４が出力する、当該処理対象の画素の処理で発生した誤差データを、周辺画素に拡散させる処理を行う。この拡散処理は、未処理の周辺画素それぞれの当該画素（「注目点画素」ともいう）に対する位置に応じて決められた所定の重みを付けて拡散させる。
図８は、重み付けをして行う誤差拡散を説明する模式図である。同図中に矢示される処理の順序、即ちライン方向及び第１のライン，第２のライン，・・・、というラインの並び順に従い、各画素を処理の対象とし、同図に示す例は、現行の量子化処理の対象である注目点画素に対し、処理中の現行ラインにある３個の未処理画素及び次ラインの４個の未処理画素を周辺画素とし、これらの画素へ誤差拡散を行う。付与する重みは、例えば、現行ラインにある３個は、注目点画素に近い方から順に、４／１６，２／１６，２／１６、また、次ラインにある４個は、注目点画素に近い方から順に、４／１６，２／１６，１／１６，１／１６とする。なお、付与する重みは、合計で１となるように設定し、このようにすることで、全体として誤差がない階調表現が可能となる。
【００２２】
重み付け２５５は、上述の手法に従って、予定した周辺画素に対し、予定した重みによって拡散させる誤差データを周辺画素ごとに決め、決めた誤差データは、拡散先の画素が量子化処理の対象になるときに、現行画素に対して行ったと同様に入力画像データに付加される（加算２５１が行う処理の上記説明、参照）。
このために、誤差データの拡散を受ける各未処理画素に対して、量子化処理のたびに発生し、拡散される誤差データを画素ごとに累算（以下、［重み加算］という）し、量子化処理の対象になるタイミングで累算した誤差データを加算２５１に出力する処理が必要になる。
【００２３】
この処理は、誤差保存・出力２５６が行う。誤差保存・出力２５６は、次ラインの全未処理画素に拡散され累積される誤差データを１ライン分保存するために用意されるラインバッファに、現行ラインの処理を行う際に次ラインにおいて拡散先となる画素分（図８の例では４画素分）のバッファを用いて行う重み加算によって得られる誤差データを各画素に対する量子化処理が行われるたびに、１画素ずつ格納する。現行ラインの終了時、ラインバッファに１ライン分格納され、保存されていた誤差データは、次ラインにおける当該画素の量子化処理にタイミングを合わせて出力する。なお、上記重み加算に必要な手段については、後記で図９を参照して、説明する。
【００２４】
また、誤差保存・出力２５６は、現行ラインにおいて拡散先となる画素分（図８の例では３画素分）のバッファを用いて、別途、重み加算によって（重み加算に必要な手段は、図９にもとづく後述の説明、参照）誤差データを求め、現行ラインにおける当該画素の量子化処理にタイミングを合わせて出力する。
なお、図５の例では、誤差データを拡散し、後続する画素の量子化処理に反映させるための処理過程では、入力データ＋２bitが一般的であり、ここでは、これにならって、１２bitでデータ処理を行っている。
このように、重み加算の動作とともに、その結果を格納するバッファ、特にラインバッファのメモリ容量は、１ライン分の各画素について、１２bitの誤差データを保存するので、相当大きくなる。これが、後述する本実施形態における中間調処理系を必要とする動機となる。
【００２５】
“重み付け及び誤差保存・出力の回路構成例”
図９は、図５に示した中間調処理系における重み付け及び誤差保存・出力の回路構成例を示す図である。
図９において、重み付け２５５は、図８に例示した重み付けの方法に従う回路の構成例を示すものである。
即ち、処理中の現行ラインにある拡散先の３個の未処理画素への重みは、注目点画素に近い方から順に、４／１６，２／１６，２／１６とするので、この数値の乗算を行い、また、次ラインにある拡散先の４個は、注目点画素に近い方から順に、４／１６，２／１６，１／１６，１／１６の乗算を行う。
【００２６】
誤差保存・出力２５６は、重み付け２５５による重み付けの乗算で得られる、各画素に拡散された誤差データを画素ごとにバッファに格納するが、その際、内部の重み加算２５６ｉで拡散される誤差データの累算を行う。重み加算２５６ｉは、重み加算に必要な手段として、拡散先の画素数分のバッファと累算数分の加算手段を備える。
つまり、図９に示すように、現行ラインへの拡散については、各画素が３回拡散先となるので、３画素分のバッファと２回の累算を行うための加算手段を備え、量子化処理の対象画素の移動に合わせてバッファの値をシフトさせ、各画素が現行ラインの量子化処理における対象画素となるまで、拡散される誤差データの累算を２回行い、この累算で得られる誤差データを入力データに対し付加するために出力する。また、次ラインへの拡散については、各画素が４回拡散先となるので、４画素分のバッファと３回の累算を行うための加算手段を備え、量子化処理の対象画素の移動に合わせてバッファの値をシフトさせ、現行ラインの量子化処理を終えるまで、次ラインの各画素に対し拡散される誤差データの累算を３回行い、この累算で得られる誤差データを一旦ラインバッファに格納し、次ラインにおける当該画素の量子化処理にタイミングを合わせて出力する。
【００２７】
［ビット分離の採用］
プリント出力用のデータ処理の際、先にγ変換を例に述べたように、ビット数が拡張され、後段で行う中間調処理において、拡散される誤差データの処理を、上述のように、１２bitを確保する仕様で行うようにすると、この処理に用いるラインバッファ（１ライン分の各画素の誤差データを保存）等のメモリ容量が肥大化する。
そこで、この実施形態では、誤差拡散の処理に使用するメモリ容量の肥大化を抑制するために、拡散する誤差データの上位ビットと下位ビットを分離し、それぞれに別の処理を適用し、後続する画素の量子化処理に反映させるために用いるラインバッファを上位ビットのビット数に抑える方法を採用する。つまり、ビット分離した下位ビットを切り捨てずに量子化処理に反映させ、高画質を保つことと、バッファのメモリ容量の肥大化を抑制することを両立させることを可能とする処理方法を採用する。
【００２８】
この実施形態で行うビット分離は、上記の処理方法をとったときに、より有効にメモリ容量の肥大化の抑制効果が働く、次ラインの誤差データを保存するラインバッファを用いる系に採用する。よって、現行ラインへの拡散される誤差データの扱いに関しては、上述の既存の処理方法（図５及び図９、参照）を変更しない。
また、次ラインへ拡散する場合、次ラインの各画素に対し拡散された誤差データを重み加算２５６ｉで算出し、出力するまでの処理についても、上述の既存の処理方法（図５及び図９、参照）と変わらない。
【００２９】
図１０は、本発明の実施形態に係る誤差拡散を伴う中間調処理系の構成例を示す図である。
図１０に示す中間調処理系は、次ラインへの拡散誤差データを処理する系として、ビット分離２５６ｓ、累算２５６ａ、加算２５６ｍ、誤差保存・出力（２）２５６ｂ、レフトシフタ２５６ｆの各要素を有する。また、現行ラインへの拡散される誤差データを処理する系として、上述の既存の処理（図５及び図９、参照）と同じ処理をする当該系の要素、即ち、誤差保存・出力（１）２５６ｒを有するとともに、量子化の対象画素に対して、現行ラインと次ラインへの拡散によって付与される誤差データを加える加算２５６ｎを有する。
【００３０】
また、図１１は、中間調処理系（図１０）の重み付けから次の画素に付加する誤差を出力する過程の回路構成例を示す図である。
同図において、発生する量子化誤差に重み付けをして、周辺画素に拡散させ、拡散先の各画素で誤差の重み加算をする処理系と動作は、過程は図９等を参照して説明したとおりである。なお、図１１に示す重み付け２５５は、次ラインへの拡散誤差データを処理する系の要素としては、重み加算の処理を含む。よって、重み付け２５５からの出力は、現行ラインの量子化処理の際に、次ラインの画素に拡散する誤差データの重み加算の処理を経て、画素ごとの誤差として確定し、次ラインの量子化処理に引き継ぐための誤差データである。この誤差データが、ビット分離２５６ｓの対象になる。
【００３１】
以下、拡散する誤差データの上位ビットと下位ビットを分離するビット分離を採用することで、先の拡散誤差データの処理系と異なる処理となる、ビット分離２５６ｓから、量子化処理に周辺画素で発生する誤差を反映させる加算２５６ｎまでの処理系の構成及び動作を説明する。
ビット分離２５６ｓは、前段で次ラインへ拡散される誤差データを画素ごとに累算する重み加算を経て、得られる１２bitの誤差データを、ビット分離により上位８bit（符号ビット含む）と下位４bitに分割する。
分離された上位８bitは加算２５６ｍに入力され、下位４bitは累算２５６ａに入力される。
【００３２】
累算２５６ａは、バッファと加算手段を持ち、新たな４bitのデータ入力があると、これまでバッファが保持していたデータに入力データを加算する。累算２５６ａの下位４bitのデータ入力の加算によってバッファが、桁上げした場合は、桁上げ信号を発生させて、この信号を加算２５６ｍに入力する。
加算２５６ｍは、先に分離した上位８bitデータの入力による上位８bitデータに桁上げ信号による＋１を加算する。
この累算２５６ａが発生する桁上げ信号の上位８bitデータへの加算は、下位４bitのデータを切り捨てた場合に失われるデータが保存され、保存されるデータを量子化処理に反映させることを可能にする。
【００３３】
桁上げ信号の上位８bitデータへ加算され、この加算結果は、次ラインの誤差データを保存し、その出力を管理する誤差保存・出力（２）２５６ｂのラインバッファに入力される。
ただ、この桁上げ信号の加算結果を受け取るラインバッファのデータに異常が発生する場合がある。これは、上位８bitデータが0x7F(＋127)で、桁上げ信号が＋１となると、加算結果の0x80(−127)がラインバッファに格納されてしまう場合である。
【００３４】
これを防ぐために、以下１．〜３．のいずれかの対応をとることにより解決することができる。
１．ビット分離で、分離する際の上位ビットと、ラインバッファのビットを異なるビット数とし、次の関係を満たすようにする。
ビット分離２５６sで分離する上位ビット数＜ラインバッファでのビット数＜ビット分離２５６sで分離されるデータのビット数
図１１の実施形態の場合では、ビット分離２５６sで分離されるデータのビット数は１２bitであるから、例えば、ビット分離２５６sで分離する上位ビット数を７bitとし、ラインバッファのビット数を８bitとすることで、上記関係を満たすことを可能にする。
２．ビット分離２５６sで分離された上位８bitデータが0x7F(＋127)の場合は、桁上げ信号（＋１）を無視する機能を、例えば、加算２５６mに設けるようにして、加算結果の0x80(−127)がラインバッファに格納されることを防ぐことを可能にする。なお、この方法は、簡単に構成し得るメリットがある反面、誤差拡散に制限を掛けることになり、画質の劣化の可能性がある。
３．ビット分離２５６sで分離された上位８bitデータが0x7F(＋127)の場合は、桁上げ信号（＋１）を保留し、後続する処理で当該オーバーフロー条件が不成立になったときに保留を解除し、次の画素へ付加する機能を例えば、加算２５６mに設けるようにして、加算結果の0x80(−127)がラインバッファに格納されることを防ぐことを可能にする。なお、この方法は、上記３．による桁上げ信号を無視する方法に比べと、画質劣化が生じ難い。
【００３５】
誤差保存・出力（２）２５６ｂのラインバッファに格納された８bitの誤差データは、次ラインで用いるので、使用するまで保存され、次ラインに量子化処理が移った時に、処理対象の画素に付加されることとなる。このラインバッファに保存された８bitの誤差データを使用するとき、付加する１２bitの入力画素とビット数が合わないため、１２bitに戻す必要がある。
レフトシフタ２５６ｆは、誤差保存・出力（２）２５６ｂのラインバッファから出力される８bitの誤差データを１２bit化する手段である。
レフトシフタ２５６ｆから１２bitで出力される誤差データは、量子化処理が移った後、重み加算２５６ｒを経て出力される当該画素の現行ラインの画素への拡散誤差データと加算２５６ｎで加算され、入力画素に付加するために出力される。
【００３６】
以上の処理により、次ラインの誤差データを保存する誤差保存・出力（２）２５６ｂのラインバッファのビット数を削減することが可能となり、ラインバッファ容量の肥大化の抑制につながる。
また、ビット分離により分離された下位４bitの誤差データについても、画素の配列ライン順に加算し、桁上げ信号を上位８bitの誤差データに加える方法で入力画素の量子化処理に反映しているため、階調性を失うことなく、画質を維持することができる。
【００３７】
ここで、ビット分離からラインバッファにデータを格納する処理過程をより詳細に説明する。なお、ここでは、ラインバッファのデータの異常発生を防止する上記３．に示した防止手段を設けた例について、説明する。
図１２は、図１１のビット分離からラインバッファにデータを格納する過程の回路構成例の詳細を示す図である。
図１２に示すように、ビット分離２５６ｓは、入力された誤差データの１２bit信号を、符号ビットを除いた上位８bit、下位４bitに分離する。ここで、元の誤差データ自体は符号付きであるため、上位８bitデータは符号付きとなるが、下位４bitに関しては、符号なし４bitデータとして扱われる。
これは、下位４bitが、
[入力データ]−[上位８bitデータを４bitレフトシフトしたデータ]
を示しており、かつ、常に以下の関係が成り立っているからである。
[上位８bitデータを４bitレフトシフトしたデータ]≦[入力データ]
【００３８】
累算２５６ａは、上記の関係式で求めた下位ビットの入力をビット分離２５６ｓから受け、加算２５６ｃにて、それまでにバッファ２５６ｄに蓄積された下位ビットデータと加算する。
加算２５６ｃは、加算結果が0xF(15)を超える場合、桁上げ信号を発生し、発生した桁上げ信号を遅延２５６ｇに出力する。なお、遅延２５６ｇは後述するオーバーフロー防止機能を実現する手段の１つである。
加算２５６ｃの加算結果として得られるデータのうち、桁上げ部分を除いた部分はバッファ２５６dに格納されて、次の処理に回される。
なお、バッファ２５６dに格納されたデータは、ラインの切り替えで次ラインのデータを処理する際に、非図示であるが、バッファ２５６dをリセットすることで、予期しない誤差の拡散を防ぐことが望ましい。
【００３９】
ビット分離２５６ｓが出力する上位８bit（符号付き）と加算２５６ｃが出力する下位４bit信号の加算結果である桁上げ信号を加算する際には、上位８bitデータの値と桁上げ信号の値に基づいて、加算に制限を持たせる（上記オーバーフロー防止策の３．に相当する）。
即ち、上位８bitデータが0x7F(＋127)で、かつ、桁上げ信号が＋１の場合には、加算２５６mがオーバーフローし、この結果、異常データ0x80(−127)がラインバッファ２５６ｈに格納されてしまう。この動作を防ぐために判定２５６ｅが上位８bitデータの値に基づいてオーバーフローの発生を予知し、遅延２５６ｇにこれを知らせる。
遅延２５６ｇは、オーバーフローの発生の予知を判定２５６ｅから受け、遅延信号を出力して、桁上げ信号の加算を１回分遅延させる。ここでは、遅延２５６ｇから符号付き２bitの信号を加算２５６mに出力することで、この機能を実現する。さらに、同一条件を満たす場合には、条件を満たさなくなるまでこの信号を送り、遅延させる。満たさなくなったときに遅延の解除を符号付き２bitの信号によって知らせる。
【００４０】
図１３は、図１２の回路構成における動作例を、画素単位で順次行われるフローのデータ状態にて示す表である。
図１３において、１画素目から４画素目の処理は、ビット分離２５６ｓへ入力された誤差データ（入力データ）が正の場合を示しており、５画素目から７画素目は入力データが負の場合を示している。
３画素目の加算２５６ｃにおける入力下位ビットデータとバッファ２５６ｄに蓄積されたデータとの加算で、加算結果が0xFを超えているため、上位ビット0x78に＋１の桁上げの加算を行うので、ラインバッファ２５６ｈの格納データは0x79となる。
【００４１】
４画素目の加算２５６ｃにおける入力下位ビットデータとバッファ２５６ｄに蓄積されたデータとの加算でも、同様に桁上げが発生しているが、上位ビットが0x７F（+127）となっているので、オーバーフローを防止するため、桁上げ信号が１サイクル分遅延されている。
６画素目・７画素目で、入力データが負の場合の条件を示しているが、加算２５６ｃにおける下位４bitの加算は入力信号の正／負に関わらず同一の処理である。
また、７画素目では、入力上位ビットデータが0x8F（−１）に対して、桁上げが発生しているため、0x00（0）となっているが、この加算はオーバーフローではないため、通常通り桁上げ信号を加算する。
【００４２】
ところで、この実施形態で示した、入力データのビット数、ビット分離での上位ビットと下位ビットのビット数、及びラインバッファのビット数等は、１実施例としての値を示したものである。
そこで、上述の要素で構成する実施形態で本発明の画像処理装置を実施する場合の適用条件について、次に説明する。
まず、以下の関係を満たしていることが適用条件となる。即ち、
ビット分離２５６sで分離する上位ビット数≦ラインバッファでのビット数＜ビット分離２５６sで分離されるデータのビット数
この条件を満たせば、上記実施形態の動作を実現することができる。
また、以下の条件によって動作を行わせることで、既存の中間調処理（図５及び図９、参照）と同等の処理にすることができる。
ビット分離２５６sで分離する上位ビット数＝ラインバッファでのビット数＝ビット分離２５６sで分離されるデータのビット数
【００４３】
また、ビット分離２５６sで分離する上位ビット数、ラインバッファでのビット数、ビット分離２５６sで分離されるデータのビット数の少なくとも一つのビット数を異なるビット数の間で切り替え可能とし、動的にビット数を切り替えられるような回路とし、かつ適用条件としての上記不等式及び等式が実現できるように構成する方法で実施してもよい。
このように実施することで、既存の中間調処理（図５及び図９、参照）を包括した実施形態とすることができる。
なお、この実施形態において、ビット分離での上位ビット数を小さくすればするほど、誤差の拡散が広範囲に広がりやすく、エッジなどがぼやけてしまう可能性がある。
【００４４】
“ラインバッファの実装”
また、上述のラインバッファの実装の仕方について述べると、ＳＲＡＭ（Static Random Access Memory）などの専用メモリを使用する場合と、ＤＲＡＭ（Dynamic Random Access Memory）などのメインメモリの一部を共用し、装置全体の回路規模を小さくする場合が考えられる。
メインメモリを使用する場合は、アクセスの容易性などを考慮すると、８bit（＝１Byte）の倍数が最適であり、従来は、１６bitを使用していたが、本発明を適用することで、８bitとすることが可能であり、メモリ容量とアクセス時間をそれぞれ半分に抑えることが可能となる。
専用メモリを使用する場合は、一般的にbit数もカスタマイズ可能であるため、サイズに合わせて柔軟に対応することが可能である。専用メモリによると、メインメモリを用いる場合に生じ得るアクセスに時間が長く掛かる、という問題は起きない。
【００４５】
さらに、ラインバッファは、次ラインの各画素の誤差データを保存するので、１ライン分を用意する必要があり、その合計サイズは１ラインの画素数の影響を受ける。例えば、解像度が上がったり、用紙サイズが大きくなったりするとラインバッファに必要なサイズが増える。
従来では、使用する最大環境に合わせてラインバッファを用意する必要があったが、この実施形態では、上述したように、ビット分離で分離する上位ビット数、ラインバッファでのビット数を動的に切り替え可能としているので、この機能を用いることで、解像度が上がった場合や用紙サイズが大きくなった場合に、それに合わせてラインバッファのビット数を削減することで、ラインバッファのサイズを小さくすることができる。
【００４６】
下記(1)〜(4)は、中間調処理ブロックへの入力データが、１０bit、発生誤差のbit数が１２bitの場合を例に、設定された解像度及び用紙サイズに基づいて、ビット分離で分離する上位ビット数及びラインバッファでのビット数を動的に切り替え、ラインバッファのサイズを抑制可能とした実施例を示す。なお、下記(1)は、抑制をかけない従来と同等の動作モードになる。
(1)  「A4、600dpi」・・・「ビット分離での上位ビット数：12bit」、「ラインバッファのビット数：12bit」
(2)  「A4、1200dpi」・・・「ビット分離での上位ビット数：6bit」、「ラインバッファのビット数：6bit」
(3)  「A3、600dpi」・・・「ビット分離での上位ビット数：8bit」、「ラインバッファのビット数：8bit」
(4)  「A3、1200dpi」・・・「ビット分離での上位ビット数：4bit」、「ラインバッファのビット数：4bit」
【符号の説明】
【００４７】
１・・ＭＦＰ（複合機）、２・・コントローラ、３・・スキャナユニット、４・・プロッタユニット、２５・・中間調処理、２５２・・量子化、２５３・・逆量子化、２５５・・重み付け、２５６・・誤差保存・出力、２５６ａ・・累算、２５６ｒ・・誤差保存・出力（１）、２５６ｂ・・誤差保存・出力（２）、２５６ｈ・・ラインバッファ、２５６ｉ・・重み加算、２５６ｓ・・ビット分離、２５６ｄ・・バッファ、２０・・ＣＰＵ。
【先行技術文献】
【特許文献】
【００４８】
【特許文献１】特開２００４−０９６７０９号公報
【図１】
0005750924.tif 000002
【図２】
0005750924.tif 000003
【図３】
0005750924.tif 000004
【図４】
0005750924.tif 000005
【図５】
0005750924.tif 000006
【図６】
0005750924.tif 000007
【図７】
0005750924.tif 000008
【図８】
0005750924.tif 000009
【図９】
0005750924.tif 000010
【図１０】
0005750924.tif 000011
【図１１】
0005750924.tif 000012
【図１２】
0005750924.tif 000013
【図１３】
0005750924.tif 000014
【図１４】
0005750924.tif 000015