(57)【要約】【課題】  描画命令ごとに誤差拡散処理とディザ処理を切り替えて量子化を行う場合、ディザ処理が２値化しかできないという制限により、ディザ処理と誤差拡散処理を別の記憶領域に出力し、誤差拡散処理結果に、２値化したディザ処理結果をビット拡張して合成しなければならなかった。【解決手段】  ディザ処理の出力を０と誤差拡散処理の最大出力値の２値にする事で、一つの記憶領域に対して、多値化の誤差拡散処理結果と、２値化のディザ処理結果をビット拡張せずに直接書き出す事を可能にした。【選択図】        図７
2006050300.tif 000002
【特許請求の範囲】
【請求項１】
一頁を複数に分割したバンド単位に入力される描画命令を解析して特定の描画命令を判別する判別手段と、前記特定の描画命令に基づく描画領域の数および位置を示す情報を検出する検出手段と、前記バンドのライン単位に、前記特定の描画命令に基づく描画領域数、並びに、開始点および終了点を示す情報を抽出する抽出手段と、前記バンドのライン単位に前記入力描画命令に基づき描画された画像に、抽出される情報に基づいて画像処理を施す画像処理手段とを有し、
前記画像処理手段における量子化手段は、ディザ手段と誤差拡散手段とを有し、前記ディザ手段と前記誤差拡散手段の出力ビット数は同一であり、前記誤差拡散手段の出力レベル数は３値以上であり、前記ディザ手段の出力レベル数は２値であり、かつ、その出力値は０と前記誤差拡散手段の最大出力値のいずれかである事を特徴とする画像処理装置。
【請求項２】
前記特定の描画命令とはイメージ描画命令であることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記イメージ描画命令により描画される領域に対しては前記誤差拡散手段によって、その他の描画命令により描画される領域に対しては前記ディザ手段によって量子化処理を行う事を特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記出力ビット数は色ごとに異なる事を特徴とする請求項１または請求項２または請求項３いずれかに記載の画像処理装置。
【請求項５】
一頁を複数に分割したバンド単位に入力される描画命令を判別し、前記特定の描画命令に基づく描画領域の数および位置を示す情報を検出し、検出される情報に基づき、前記バンドのライン単位に、前記特定の描画命令に基づく描画領域数、並びに、開始点および終了点を示す情報を抽出し、前記バンドのライン単位に前記入力描画命令に基づき描画された画像に、抽出される情報に基づく画像処理を施し、
前記画像処理における量子化処理は、ディザ処理と誤差拡散処理とを行い、前記ディザ処理と前記誤差拡散処理の出力ビット数は同一であり、前記誤差拡散処理の出力レベル数は３値以上であり、前記ディザ処理の出力レベル数は２値であり、かつ、その出力値は０と前記誤差拡散処理の最大出力値のいずれかである事を特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置およびその方法に関し、特にラスタライズした原稿データ内のオブジェクト情報によって、画像処理方法を切り替える画像処理装置およびその方法に関するものである。
【背景技術】
【０００２】
一般に、ホストコンピュータへプリンタを接続するには、プリンタを制御する印刷制御装置を構成するため、ホストコンピュータにプリンタドライバが搭載される。ホストコンピュータ上で稼働するアプリケーションソフトウェアは、文字、図形などのグラフィクスや写真画像などのイメージ画像を含む画像データを作成する。アプリケーションソフトウェアは、オペレーティングシステム（ＯＳ）を介して、印刷出力対象の画像データを描画命令としてプリンタドライバに供給する。プリンタドライバは、供給される画像データに基づく描画命令を解析し、メモリ上に、ＲＧＢ多階調の画像データを作成し、それをプリンタインクの各色を表すＣＭＹＫ多値情報に変換する。さらに、プリンタドライバは、ＣＭＹＫ多値情報をインクを吐出するか否かを表すＣＭＹＫ二値データに変換した後、プリンタが解析できる出力データを生成してプリンタへ転送する。
【０００３】
プリンタにより画像データに基づく画像を良好に出力する場合、出力画像を構成する複数の描画命令のそれぞれに対し、描画命令の種類に応じた色処理である輝度／濃度変換処理、マスキング処理、ガンマ処理および減色処理、並びに、量子化処理などが必要とされる。従って、プリンタドライバは、例えば写真画像部分はイメージ描画命令、テキスト部分はテキスト描画命令、図表などのグラフィクス部分はグラフィクス描画命令というように、出力画像を構成する要素ごとに発行される描画命令の種類ごとに、適切な色処理や量子化処理などを行う。
【０００４】
印刷情報処理に用いられる一般的な色処理としては、グラフィクス描画命令には「鮮やかさ優先の色処理」、テキスト描画命令は「測色的一致」、写真部描画命令は「色味優先の色処理」が行われる。このように描画命令ごとに色処理を切り替えることで、すべての描画命令に対し良好な画像出力を得ることができる。
【０００５】
また、印刷情報処理に用いられる一般的な量子化手段としては、ディザ法、誤差拡散法などがある。ディザ法は、ディザマトリクスから着目画素の座標に対応した閾値を読み出し、その閾値と入力画素値を比較してドットのオン・オフを決める量子化法であり、高速かつ均一に量子化することが可能で、テキストや図形などの画像の量子化に適している。
【０００６】
これに対して、誤差拡散法は、予め定められた閾値と入力画素値を比較して出力値を決め、その出力値と入力画素値の誤差を周辺画素に拡散する量子化法であり、ディザ法よりも処理時間を要するが、微妙な階調表現をすることができ、写真画像などに分類される画像の量子化に適している。
【０００７】
尚、量子化処理の出力レベル数は、入力画像データの１画素に対して、インクを吐出するかしないかを決める２値化よりも、多値化の方が、プリンタ本体の持つ複数のインデックスパターンを切り替えたり、ドットのサイズを切り替えたりできるため、階調表現力が優れており、写真などのイメージ画像の印刷に使われることが多い。
【０００８】
しかしながら、頁内に写真などのイメージ領域や、テキストなどの領域が混在するデータを印刷する際、描画命令ごとに適切な色処理および量子化処理を行うには、一旦、頁内の全ての描画命令を解析した後、その解析内容に基づき描画命令ごとに処理を最適化するので、解析処理に多くの時間を必要とし、一頁分の描画命令の解析結果をメモリへ保存するので多くのメモリを必要とする問題があった。
【０００９】
そこで、特許文献１には、ページ内に写真などのイメージ領域や、テキストなどの領域が混在するデータを印刷する際、領域ごとに色処理・量子化処理を切り替える方法が提案されている。
【特許文献１】特開平２００１−１４４９３９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、上記特許文献１においては２値化についてのみ書かれており、イメージ領域の階調表現力は低い。
【００１１】
上記特許文献１に省みて、イメージ領域は誤差拡散処理で多値化、その他の領域はディザ処理で２値化し、それらの結果を合成して出力するという手段がある。図１２、図１３はこの従来技術を説明するための図である。入力ラスタデータ１２０１は幅３２ピクセルあり、２箇所のイメージ領域１２０２，１２０３と、イメージ外領域１２０４，１２０５，１２０６が存在する。尚、ここでディザは１ビット２値出力、誤差拡散は２ビット４値出力を例にとって説明する。それぞれの出力ビット数に合わせて、ディザ出力バッファ１３０８は４バイト、誤差拡散出力バッファ１３０１は８バイトで予め用意する。
【００１２】
まず、イメージ領域１２０２，１２０３を誤差拡散出力バッファ１３０１の対応する領域１３０２，１３０３に１画素あたり２ビット４値化する。同様にイメージ以外の領域１２０４，１２０５，１２０６をディザ出力バッファ１３０８の対応する領域１３０９，１３１０，１３１１に１ビット２値化する。
【００１３】
次に、ディザ出力バッファ１３０８に記録されたイメージ外領域の１ビット２値化結果１３０９，１３１０，１３１１を、イメージ領域の出力ビット数・レベル数に合わせてビット拡張をして、誤差拡散出力バッファ１３０１の対応する領域１３０４，１３０５，１３０６に書き込み、プリンタへデータ１３０８を送出する。
【００１４】
ディザ出力バッファ１３０８の先頭画素１３１２を例にとって、ビット拡張の方法を具体的に説明すると、先頭画素１３１２の値が「０（２進数）」の場合は「００（２進数）」を、「１（２進数）」の場合は誤差拡散の最大出力値である「１１（２進数）」を誤差拡散出力バッファ１３０１の先頭画素１３０７へ書き出す。
【００１５】
上述した従来技術では、出力バッファは２つ用意しなければならず、またディザ出力結果をビット拡張するのに時間がかかるという問題があった。
【００１６】
そこで、イメージ以外の領域はディザ法ではなく多値ディザ法によって多値化することで、イメージ領域とその他の領域の多値化レベル数を合わせて量子化処理を行う手段があるが、イメージ以外の領域は文字や背景などの領域であるため、階調再現性よりも高速な処理を求められる事が多い。
【００１７】
本発明は、上述の問題を解決するためのものであり、イメージ領域を階調再現性に優れた誤差拡散法で多値化し、その他の領域をディザ法で２値化しつつ、無駄な出力バッファやビット拡張の必要ない画像処理装置およびその方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１９】
本発明にかかる画像処理装置は、一頁を複数に分割したバンド単位に入力される描画命令を解析して特定の描画命令を判別する判別手段と、前記特定の描画命令に基づく描画領域の数および位置を示す情報を抽出する抽出手段と、前記バンドのライン単位に、前記特定の描画命令に基づく描画領域数、並びに、開始点および終了点を示す情報を抽出する抽出手段と、前記バンドのライン単位に前記入力描画命令に基づき描画された画像に、抽出される情報に基づいて画像処理を施す画像処理手段とを有し、
前記画像処理手段における量子化手段は、ディザ手段と誤差拡散手段とを有し、前記ディザ手段と前記誤差拡散手段の出力ビット数は同一であり、前記誤差拡散手段の出力レベル数は３値以上であり、前記ディザ手段の出力レベル数は２値であり、かつ、その出力値は０と前記誤差拡散手段の最大出力値のいずれかである事を特徴とする。
【発明の効果】
【００２０】
本発明によれば、従来技術の誤差拡散とディザを共に２値出力としたために発生していた、階調再現性が乏しかった欠点を改善し、ディザと誤差拡散の出力バッファを別に持ってディザの出力をビット拡張していたため発生していた、メモリの無駄や処理時間が長くなっていた欠点をも改善することを可能とした。
【発明を実施するための最良の形態】
【００２１】
以下、本発明にかかる一実施形態の画像処理装置を図面を参照して詳細に説明する。
【実施例】
【００２２】
［構成］
図１は本実施形態におけるシステムの概略構成例を示すブロック図である。コンピュータ１０１には、例えばインクジェットプリンタなどのプリンタ１０２が接続されている。コンピュータ１０１は、ワードプロセッサ、表計算、インターネットブラウザなどのアプリケーションソフトウェア１０４、並びに、アプリケーションソフトウェア１０４からＯＳ１０３に対して発行される出力画像を描画するための各種描画命令群（イメージ描画命令、テキスト描画命令およびグラフィクス描画命令）を処理して印刷データを作成するプリンタドライバ１０５を有する。なお、図１に示される実施形態として、例えば一般に普及しているＩＢＭ  ＡＴコンパチブルのパーソナルコンピュータに、ＯＳ１０３としてＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標)ＸＰ、および、印刷機能を有する任意のアプリケーションソフトウェアをインストールして、プリンタ１０２を接続した形態が考えられる。
【００２３】
次に、コンピュータ１０１とプリンタ１０２のハードウェア構成について図３を参照して説明する。
【００２４】
コンピュータ３０１は処理部３０３と、操作者にグラフィック情報等を表示する表示装置３１３（この例ではＣＲＴ）、プログラムやデータが格納された大容量記憶装置であるＨＤＤ（ハードディスクドライブ）３１４、キーボード３１５を含めてコンピュータ全体を構成している。また、プリンタ３０２は、記録ヘッド３２５、記録ヘッド３２５を搬送するキャリアを駆動するキャリア（ＣＲ）モータ３２６、用紙を搬送する搬送（ＬＦ）モータ３２７などの駆動部と、制御回路部３０４とから構成されている。
【００２５】
コンピュータ３０１の処理部３０３は、制御プログラムに従ってホスト装置の全体制御を司るＭＰＵ３０５、システム構成要素を互いに接続するバス３０８、ＭＰＵ３０５が実行するプログラムやデータ等を一時記憶するＤＲＡＭ３０７、システムバスとメモリバス、ＭＰＵ３０５を接続するブリッジ３０６を含んでいる。
【００２６】
さらに、処理部３０３は表示装置３１３とのインタフェースを司るグラフィックアダプタ３０９、ＨＤＤ３１４とのインタフェースを司るＨＤＤコントローラ３１０、キーボード３１５とのインタフェースを司るキーボードコントローラ３１１、ＵＳＢ１．１規格に従ってプリンタ３０２との間の通信を司る、通信Ｉ／Ｆ３１２を備えている。
【００２７】
一方、プリンタ３０２は本実施形態ではインクジェット方式のシリアルプリンタである。プリンタ３０２の制御回路部３０４は、制御プログラム実行機能と周辺装置制御機能とを兼ね備えた、プリンタ３０２の全体制御を司るＭＣＵ３１８、制御回路部内部の各構成要素を接続するシステムバス３１６、記録データの記録ヘッド３２５への供給やメモリアドレスデコーディングやキャリアモータへの制御パルス発生機構等を制御回路として内部に納めたゲートアレイ（Ｇ．Ａ．）３１７を備えている。
【００２８】
また、制御回路部３０４は、ＭＣＵ３１８が実行する制御プログラムやホスト印刷情報等を格納するＲＯＭ３２０、各種データ（画像記録情報やヘッドに供給される記録データ等）を保存するＤＲＡＭ３２１、ＵＳＢ１．１規格に従いホスト装置３０１との間の通信を司る通信Ｉ／Ｆ３１９、ゲートアレイ３１７から出力されたヘッド記録信号に基づき、記録ヘッド３２５を駆動する電気信号に変換するヘッドドライバ３２２を備えている。
【００２９】
さらに、制御回路部３０４は、ゲートアレイ３１７から出力されるキャリアモータ制御パルスを実際にキャリア（ＣＲ）モータ３２６を駆動する電気信号に変換するＣＲモータドライバ３２３、ＭＣＵ３１８から出力された搬送モータ制御パルスを、実際に搬送モータを駆動する電気信号に変換するＬＦモータドライバ３２４を備えている。
【００３０】
図１に示すシステムの各ブロックは、図３のコンピュータにおいて、後述する図２の手順のプログラムを初めとするプログラムを実行することで実現されている。
【００３１】
［処理例］
図２はバンディング方式のプリンタドライバ１０５およびＯＳ１０３の処理例を示す図である。アプリケーションソフトウェア１０４は、文字などのテキストに分類されるテキストデータや、図形などのグラフィクスに分類されるグラフィクスデータや、写真画像などに分類されるイメージ画像データなどを出力画像データとして作成する。作成された出力画像データを印刷出力する場合、アプリケーションソフトウェア１０４は、ＯＳ１０３に対して印刷出力を要求し、テキストデータ部分はテキスト描画命令、グラフィクスデータ部分はグラフィクス描画命令、イメージ画像データ部分はイメージ描画命令で構成される出力画像を示す描画命令群をＯＳ１０３に発行する。
【００３２】
アプリケーションソフトウェア１０４から印刷出力の要求を受けたＯＳ１０３は、プリンタ１０２に対応するプリンタドライバ１０５に印刷開始命令を発行する。プリンタドライバ１０５は、ＯＳ１０３から印刷開始命令を受信すると、バンディング処理用の作業領域（以下「バンドメモリ」と呼ぶ場合がある）をＤＲＡＭ３０７上に確保し、確保した作業領域の座標データ（バンドサイズのデータ）をＯＳ１０３に送る。ＯＳ１０３は、受信される座標データによって表されるバンド内に存在する描画命令群をプリンタドライバ１０５に発行する。
【００３３】
本実施形態に示すようなページ記述言語を展開してイメージを描画する機能をもたないラスタプリンタにおいては、コンピュータ１０１上のプリンタドライバ１０５によりイメージの描画処理が行われる。しかし、コンピュータ１０１は、一頁分すべての描画命令を展開しイメージを描画するのに必要な充分なメモリを搭載されていないことが多い。そこで、一頁を縦に分割したバンドと呼ばれる単位ごとに、描画命令を展開してイメージをメモリ上に描画するために、バンディング処理用の作業領域が確保される。
【００３４】
プリンタドライバ１０５は、ＯＳ１０３から供給される描画命令群を、順次、ＲＧＢ２４ビット形式でバンドメモリにラスタライズ（描画）し、供給されたすべての描画命令をラスタライズした後にバンドメモリの内容をＣＭＹＫデータに変換し、プリンタ１０２が印刷可能なデータ形式に変換してプリンタ１０２へ送る。
【００３５】
ＯＳ１０３は、アプリケーションソフトウェア１０４から供給される、頁内に存在するすべての描画命令群の発行をバンドごとに繰り返すことで、プリンタドライバ１０５およびプリンタ１０２に一頁分の印刷を実行させる。
【００３６】
［印刷処理］
図４はプリンタドライバ１０５による印刷処理の一例を示すフローチャートである。
【００３７】
バンディング方式のプリンタドライバ１０５の全体的な処理の流れは図２に示したように、バンドメモリを確保して（Ｓ４０１）、すべての印刷処理をバンドごとに行い（Ｓ４０２からＳ４０９）、すべてのバンドの処理が終った後にバンドメモリを解放する（Ｓ４１０）。プリンタドライバ１０５によるバンドごとの印刷処理は、大きく分けると三つのステップに分かれる。
【００３８】
第一のステップにおいてプリンタドライバ１０５は、ＯＳ１０３からバンドメモリに描画すべき描画命令を一つずつ受け取り、この描画命令の実行時に後述する描画命令解析処理を行いながら図１０に示すイメージ領域情報テーブル１００１（ＡｒｅａＩｎｆｏＴＢＬ）を作成して（Ｓ４０２）、プリンタ１０２の解像度に応じて予め確保したＲＧＢ２４ビットのバンドメモリに、順次、画像をラスタライズしてＲＧＢ画像データを生成する（Ｓ４０３）。
【００３９】
第二のステップにおいてプリンタドライバ１０５は、バンド内のスキャンラインを示すカウンタＳｃａｎＬｉｎｅを零に初期化し（Ｓ４０４）、バンドメモリに生成されたＲＧＢ画像データの１スキャンラインごとに、ＡｒｅａＩｎｆｏＴＢＬ１００１に基づき後述するイメージ領域生成処理を実行して、図１１に示すイメージ位置情報テーブル１１０１（ＩｍａｇｅＡｒｅａＴＢＬ）を形成する（Ｓ４０５）。
【００４０】
第三のステップにおいてプリンタドライバ１０５は、生成されたＩｍａｇｅＡｒｅａＴＢＬ１１０１を基に、バンド内の１スキャンラインごとに、そのスキャンラインの先端から終端まで、イメージ領域およびその他の領域に、それぞれの領域の特性に応じた色処理（輝度／濃度変換、マスキング、ガンマ補正、減色）、並びに、量子化処理を施した後、バンド内の画像データを印刷データに変換してプリンタ１０２に出力する画像処理を実行する（Ｓ４０６）。
【００４１】
次に、ＳｃａｎＬｉｎｅとバンドの高さＨｙとを比較して、バンド内の全てのスキャンラインの画像処理が終了したか否かを判定する（Ｓ４０７）。そして、ＳｃａｎＬｉｎｅ＜ＨｙであればＳ４０５へ戻って次のスキャンラインの処理を実行し、ＳｃａｎＬｉｎｅ＝ＨｙであればＡｒｅａＩｎｆｏＴＢＬ１００１のメモリ領域を解放する（Ｓ４０８）。
【００４２】
次に、すべてのバンドの処理が終了したか否かを判定し（Ｓ４０９）、終了していればバンドメモリを解放して印刷処理を終了する（Ｓ４１０）。また、処理が未了のバンドがあればＳ４０２へ戻る。
【００４３】
以下では、上述した三つのステップについて詳しく説明する。
【００４４】
［描画命令解析処理］
図５はＳ４０２の描画命令解析処理の一例を示すフローチャートである。描画命令解析処理は、ＯＳ１０３から渡される描画命令を解析することにより、バンド内に存在しているイメージ領域の数を示す情報（ＩｍａｇｅＣｏｕｎｔ）と、バンド内に存在しているイメージに外接する矩形領域を示す情報であるＡｒｅａＩｎｆｏＴＢＬ１００１とをＤＲＡＭ３０７上に生成するものである。以下、図５に従って描画命令解析処理のフローを説明する。
【００４５】
まず、ＩｍａｇｅＣｏｕｎｔを零に初期化し（Ｓ５０１）、ＯＳ１０３から描画命令を取得し（Ｓ５０２）、取得した描画命令がイメージ描画命令であるか否かを判定する（Ｓ５０３）。イメージ描画命令であれば描画命令が示すオブジェクトが写真画像か否かを判定する（Ｓ５０４）。なお、一般に写真画像などの画像データは２４ビットＲＧＢや８ビットパレットであることが多く、それよりビット深さが浅い画像データは写真画像ではない場合が多いので、イメージ描画命令の関数のヘッダを参照して、例えば画像データのビット深さが２４ビット以上または８ビットパレットである場合に写真画像と判定すればよい。
【００４６】
描画命令が示すオブジェクトが写真画像の場合、ＤＲＡＭ３０７に割り当てられたＡｒｅａＩｎｆｏＴＢＬ１００１にエントリを一つ作成し、そのエントリにイメージ描画命令に含まれる描画位置情報である矩形領域の左上座標（Ｌｅｆｔ，Ｔｏｐ）と右下座標（Ｒｉｇｈｔ，Ｂｏｔｔｏｍ）を保存し（Ｓ５０５）、ＩｍａｇｅＣｏｕｎｔをインクリメントする（Ｓ５０６）。
【００４７】
この描画命令解析処理は、バンド内で実行されるすべての描画命令に対して実行される処理であるから、Ｓ５０７の判断により、バンド内に未処理の描画命令が存在する場合はＳ５０２へ戻る。
【００４８】
すべての描画命令の解析を終え、ＡｒｅａＩｎｆｏＴＢＬ１００１が作成された場合は、そのレコードの並びを左端（Ｌｅｆｔ）値、上端（Ｔｏｐ）値、右端（Ｒｉｇｈｔ）値および下端（Ｂｏｔｔｏｍ）値のソート優先順位により昇順にソートして処理を終了する。
【００４９】
［イメージ領域生成処理］
図６はＳ４０５のイメージ領域生成処理の一例を示すブローチャートである。イメージ領域生成処理は、バンド内の１スキャンラインの副走査方向（Ｙ方向）の位置情報を基に、そのスキャンライン上に存在するイメージ領域の数を示す情報（ＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅ）と、そのスキャンライン上における各イメージ領域の主走査方向（Ｘ方向）の始点および終点を示すＩｍａｇｅＡｒｅａＴＢＬ１１０１とをＤＲＡＭ３０７上に生成する。以下、図６に従ってイメージ領域生成処理のフローを説明する。
【００５０】
カウンタＣｏｕｎｔおよびＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅを零に初期化する（Ｓ６０１）。続いて、バンド内に存在するイメージ領域の数を示すＩｍａｇｅＣｏｕｎｔとカウンタＣｏｕｎｔとを比較する（Ｓ６０２）。もし、Ｃｏｕｎｔ＝ＩｍａｇｅＣｏｕｎｔであればバンド内のすべてのイメージ領域を生成したことになるので処理を終了する。勿論、バンド内にイメージ領域がない（ＩｍａｇｅＣｏｕｎｔ＝０）の場合も処理を終了する。
【００５１】
次に、ＡｒｅａＩｎｆｏＴＢＬ１００１のレコードＡｒｅａＩｎｆｏＴＢＬ［Ｃｏｕｎｔ］を参照して（Ｓ６０３）、その上端（Ｔｏｐ）値および下端（Ｂｏｔｔｏｍ）値から、現スキャンライン（ＳｃａｎＬｉｎｅ）上にイメージ領域が存在するか否かを判定する（Ｓ６０４）。イメージ領域が存在する場合は、そのイメージ領域に対応するレコードＡｒｅａＩｎｆｏＴＢＬ［Ｃｏｕｎｔ］から左端（Ｌｅｆｔ）および右端（Ｒｉｇｈｔ）の値を取り出す（Ｓ６０５）。また、スキャンライン上にイメージ領域が存在しない場合はＳ６１１へ進む。
【００５２】
次に、ＩｍａｇｅＡｒｅａＴＢＬ１１０１が未作成の場合、ＩｍａｇｅＡｒｅａＴＢＬ１１０１およびエントリを一つ作成する（Ｓ６０７）。そして、作成したエントリに取り出した左端（Ｌｅｆｔ）および右端（Ｒｉｇｈｔ）の値をそれぞれ始点および終点として保存し、ＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅをインクリメントして（Ｓ６０８）、Ｓ６１１へ進む。
【００５３】
一方、ＩｍａｇｅＡｒｅａＴＢＬ１１０１が作成済みの場合は、最終エントリに保存された終点（ＰｒｅＲｉｇｈｔ）の値と、Ｓ６０５で取り出した左端（Ｌｅｆｔ）の値とを比較して、イメージ領域が重なるか否かを判定する（Ｓ６０６）。そして、イメージ領域が重ならない（ＰｒｅＲｉｇｈｔ＜Ｌｅｆｔ）場合は、ＩｍａｇｅＡｒｅａＴＢＬ１１０１にエントリを一つ追加する（Ｓ６０７）。そして、そのエントリに取り出した左端（Ｌｅｆｔ）および右端（Ｒｉｇｈｔ）の値をそれぞれ始点および終点として保存し、ＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅをインクリメントして（Ｓ６０８）、Ｓ６１１へ進む。
【００５４】
また、Ｓ６０６の判定でイメージ領域が重なると判定された場合は、終点（ＰｒｅＲｉｇｈｔ）の値と、Ｓ６０５で取り出した右端（Ｒｉｇｈｔ）の値とを比較して（Ｓ６０９）、ＰｒｅＲｉｇｈｔ＜Ｒｉｇｈｔの場合、最終レコードの終点（ＰｒｅＲｉｇｈｔ）値を右端（Ｒｉｇｈｔ）値に更新して（Ｓ６１０）、Ｓ６１１へ進む。なお、イメージ領域が重なる場合は一つのイメージ領域とみなすことからＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅはインクリメントしない。また、始点（ＰｒｅＬｅｆｔ）および左端（Ｌｅｆｔ）に関しては、常にＰｒｅＬｅｆｔ≦Ｌｅｆｔになるように、描画命令解析処理においてイメージ領域情報のレコードがソートされているので比較する必要はない。
【００５５】
Ｓ６１１はカウンタＣｏｕｎｔがインクリメントした後、処理はＳ６０２へ戻る。
【００５６】
このような処理の結果、生成されるＩｍａｇｅＡｒｅａＴＢＬ１１０１内のイメージ位置情報は自動的にスキャンラインの先端位置（左端）から順にソートされる。そして、バンド内に存在するすべてのイメージ領域情報に対して前述した処理が繰り返された後、イメージ領域生成処理は終了する。
【００５７】
［画像処理］
図７はＳ４０６の画像処理の一例を示すフローチャートである。尚、本実施例では、イメージ領域は色味優先の色処理と誤差拡散による量子化処理を行い、その他の領域は鮮やかさ優先の色処理とディザによる量子化を行う。
【００５８】
まず、画像処理を初期化する（Ｓ７０１）。誤差拡散処理、ディザ処理に対して出力ビット数に２、出力レベル数に４が指定される。
【００５９】
ここで、本実施例における誤差拡散処理・ディザ処理の概要を簡単に説明する。
【００６０】
誤差拡散処理は、着目画素値ｉｎＶａｌを周辺画素からの誤差で誤差補正し、得られた値ｌＶａｌｕｅによって、出力値ｏｕｔＨｔ、誤差ｅｒｒＨｔを以下の式から得る。
【００６１】
lValue< 43  の時、outHt=0,errHt=lValue      ・・・    式１
43  <=  lValue<128  の時、outHt=1,errHt=lValue-85   ・・・    式２
128  <=  lValue<213  の時、outHt=2,errHt=lValue-170  ・・・    式３
213  <=  lValue      の時、outHt=3,errHt=lValue-255  ・・・    式４
ここで得られた誤差ｅｒｒＨｔを周辺画素に拡散して、次の画素へ処理は移る。
【００６２】
一方、ディザ処理は、ディザマトリクス（幅ｍ×高さｎ）の閾値をＤ（ｘ，ｙ）とすると（０＜＝ｘ＜ｍ，０＜＝ｙ＜ｎ）、座標（Ｘ，Ｙ）の着目画素（画素値ｉｎＶａｌ）と出力値ｏｕｔＨｔの関係は以下のようになる。
inVal<D(X%m,Y%n)  の時、  outHt=0     ・・・    式５
D(X%m,Y%n)<=inVal             の時、  outHt=3     ・・・    式６
式６のｏｕｔＨｔは「出力レベル数−１」によって決定する。
【００６３】
このような誤差拡散処理、ディザ処理を行うための初期設定がＳ７０１で行われる。同時にイメージ領域で行う色味優先の色処理、その他の領域で行う鮮やかさ優先の色処理の初期化も行われる。
【００６４】
次に、カウンタＣｏｕｎｔを零に初期化し、変数ＳｔａｒｔＰｏｓおよびＥｎｄＰｏｓにスキャンライン８０５の先端位置および後端位置を示す情報をそれぞれセットする（Ｓ７０２）。
【００６５】
続いて、イメージ領域生成処理でセットされた、スキャンライン８０５のイメージ領域の数を示すＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅを参照して、スキャンライン８０５にイメージ領域が存在するか否かを判定する（Ｓ７０３）。
【００６６】
ここで、イメージ領域とその他の領域の色処理・量子化処理について説明する。イメージ領域は、まずスキャンライン８０５の該当領域のＲＧＢ各色８ビットの画像データを色味優先の色処理を行ってＣＭＹＫ各色８ビットの画像データに変換して、ＣＭＹＫ各色の色処理出力バッファ９０１の該当領域にそれぞれ出力する。続けて、ＣＭＹＫ各色の色処理出力バッファ９０１の該当領域のＣＭＹＫ各色８ビットの画像データを、Ｓ７０１で初期化した誤差拡散処理で２ビット４値化してＣＭＹＫ各色の量子化出力バッファ９０２に出力する。一方、イメージ以外の領域は、まずスキャンライン８０５の該当領域のＲＧＢ各色８ビットの画像データを鮮やかさ優先の色処理を行ってＣＭＹＫ各色８ビットの画像データに変換して、ＣＭＹＫ各色の色処理出力バッファ９０１の該当領域にそれぞれ出力する。続けて、ＣＭＹＫ各色の色処理出力バッファ９０１の該当領域のＣＭＹＫ各色８ビットの画像データを、Ｓ７０１で初期化したディザ処理で２ビット２値化してＣＭＹＫ各色の量子化出力バッファ９０２に出力する。
【００６７】
もし、ＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅ＝０の場合は、スキャンライン８０５全体に亘ってイメージ以外の領域とみなし、鮮やかさ優先の色処理を行い（Ｓ７０４）、ディザ処理で量子化を行う（Ｓ７０５）。次に、量子化後の画像データを印刷データに変換してプリンタ１０２に送信する（Ｓ７０６）。そして、ＳｃａｎＬｉｎｅをインクリメントし（Ｓ７０７）、イメージ位置情報テーブル（ＩｍａｇｅＡｒｅａＴＢＬ）のメモリ領域を解放して画像処理を終了する（Ｓ７０８）。
【００６８】
一方、ＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅ＞０で、スキャンライン８０５にイメージ領域が存在する場合、イメージ領域生成処理で生成されたイメージ位置情報テーブルのレコードＩｍａｇｅＡｒｅａＴＢＬ［Ｃｏｕｎｔ］からイメージ領域の始点（Ｘ１）および終点（Ｘ２）の値を得る。そして、スキャンライン８０５上のＳｔａｒｔＰｏｓからＸ１（始点）までの領域をイメージ以外の領域として鮮やかさ優先の色処理を行い（Ｓ７０９）、ディザ処理で量子化を行う（Ｓ７１０）。
【００６９】
続けて、Ｘ１（始点）からＸ２（終点）までのイメージ領域に色味優先の色処理を行い（Ｓ７１１）、誤差拡散処理で量子化を行う（Ｓ７１２）。次に、ＳｔａｒｔＰｏｓにＸ２（終点）の値をセットし、ＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅをデクリメント、Ｃｏｕｎｔをインクリメントし（Ｓ７１３）、Ｓ７０３へ戻る。
【００７０】
従って、ＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅが零になるまで、つまりスキャンライン８０５上のＩｍａｇｅＡｒｅａＴＢＬ１１０１がすべて参照されるまで、Ｓ７０９からＳ７１３が繰り返される。そして、ＩｍａｇｅＡｒｅａＴＢＬ１１０１の参照が終了すると、ＳｔａｒｔＰｏｓにはスキャンライン上の最後イメージ領域の終点がセットされているので、上述したステップＳ７０４からＳ７０６において、ＳｔａｒｔＰｏｓからＥｎｄＰｏｓまでのテキストまたはグラフィクス領域に鮮やかさ優先の色処理およびディザによる量子化処理が施され、ＳｃａｎＬｉｎｅがインクリメントされ（Ｓ７０７）、ＩｍａｇｅＡｒｅａＴＢＬ１１０１のメモリ領域が解放されて画像処理が終了する（Ｓ７０８）。
【００７１】
図８、図９は描画命令解析処理、イメージ領域生成処理および画像処理による処理結果を詳細に説明する図である。バンド８０１には三つのイメージ領域８０２，８０３，８０４が存在する。描画命令解析処理により、バンド内に存在するイメージ領域の数を示すＩｍａｇｅＣｏｕｎｔは「３」になり、ＡｒｅａＩｎｆｏＴＢＬ１００１には、
ＡｒｅａＩｎｆｏＴＢＬ［０］＝｛５，１２，１１，１６｝
ＡｒｅａＩｎｆｏＴＢＬ［１］＝｛８，１０，１６，１６｝
ＡｒｅａＩｎｆｏＴＢＬ［２］＝｛２０，８，２４，１５｝
が登録される。
【００７２】
次にバンド内のスキャンライン８０５でイメージ領域生成処理を実行すると、スキャンライン８０５上に存在するイメージ領域の数を示すＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅは「２」になり、ＩｍａｇｅＡｒｅａＴＢＬには
ＩｍａｇｅＡｒｅａＴＢＬ［０］＝｛５，１６｝
ＩｍａｇｅＡｒｅａＴＢＬ［１］＝｛２０，２４｝
が登録される。
【００７３】
続けて、画像処理の詳細を図７のフローチャートに従って説明する。まず、色処理・量子化処理を初期化し（Ｓ７０１）、ＳｔａｒｔＰｏｓ，ＥｎｄＰｏｓ，Ｃｏｕｎｔにそれぞれ０，３１，０を設定する（Ｓ７０２）。
【００７４】
ＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅは２であるのでＳ７０３はＹｅｓになり、ＩｍａｇｅＡｒｅａＴＢＬ［０（＝Ｃｏｕｎｔ）］を参照して、スキャンライン８０５の０（＝ＳｔａｒｔＰｏｓ）から５（＝Ｘ１）までの領域についてイメージ以外領域の色処理・量子化を行う（Ｓ７０９，Ｓ７１０）。ＣＭＹＫ各色８ビットデータの鮮やかさ優先色処理結果をＣＭＹＫ各色の色処理出力バッファ９０１の０から４バイト目までの領域９０３にそれぞれ書き込む（Ｓ７０９）。続けてＣＭＹＫ各色の色処理結果を１画素あたり２ビット２値でそれぞれ量子化して、ＣＭＹＫ各色の量子化出力バッファ９０２の０バイト目全体と１バイト目の上位２ビットの領域９０４に書き込む（Ｓ７１０）。ディザ処理は式５、式６に従って００（２進数）か１１（２進数）のいずれかを出力する。次に、５（＝Ｘ１）から１６（＝Ｘ２）までの領域をイメージ領域の色処理・量子化を行う（Ｓ７１１，Ｓ７１２）。ＣＭＹＫ各色８ビットデータの色味優先色処理結果をＣＭＹＫ各色の色処理出力バッファ９０１の５バイト目から１５バイト目までの領域９０５にそれぞれ書き込む（Ｓ７１１）。続けて、ＣＭＹＫ各色の色処理結果を１画素あたり２ビット４値でそれぞれ量子化して、ＣＭＹＫ各色の量子化出力バッファ９０２の１バイト目の下位６ビットと２バイト目の上位６ビットの領域９０６にそれぞれ書き込む（Ｓ７１２）。続けてＣｏｕｎｔをインクリメントし（＝１）、ＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅをデクリメントし（＝１）、ＳｔａｒｔＰｏｓにＸ２（＝１６）を設定して（Ｓ７１３）、Ｓ７０３へ戻る。
【００７５】
ＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅは１であるのでＳ７０３はＹｅｓになり、ＩｍａｇｅＡｒｅａＴＢＬ［１（＝Ｃｏｕｎｔ）］を参照して、スキャンライン８０５の１６（＝ＳｔａｒｔＰｏｓ）から２０（＝Ｘ１）までをイメージ以外領域の色処理・量子化を行い（Ｓ７０９，Ｓ７１０）、２０（＝Ｘ１）から２４（＝Ｘ２）までをイメージ領域の色処理・量子化を行う（Ｓ７１１，Ｓ７１２）。ここで同様にＣｏｕｎｔのインクリメント（＝２）とＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅのデクリメント（＝０）、ＳｔａｒｔＰｏｓに２４（＝Ｘ２）を設定し（Ｓ７１３）、Ｓ７０３へ戻る。
【００７６】
この時点でＩｍａｇｅＣｏｕｎｔＰｅｒＬｉｎｅは０となるのでＳ７０３はＮｏになり、２４（＝ＳｔａｒｔＰｏｓ）から３１（＝ＥｎｄＰｏｓ）までをイメージ以外領域の色処理・量子化を行い（Ｓ７０４，Ｓ７０５）、量子化出力バッファ９０２の内容をプリンタへ送信して（Ｓ７０６）、次のラスタへ処理は移る。
【００７７】
このように本実施形態によれば、ラスタデータを描画命令解析処理で解析した結果得られるイメージ領域の情報に基づき、イメージ領域とそれ以外の領域で量子化方法を誤差拡散とディザで切り替える画像処理において、ディザの出力を０と誤差拡散の出力最大値とした。その結果、従来技術の誤差拡散とディザを共に２値出力としたために発生していた、階調再現性が乏しかった欠点を改善し、ディザと誤差拡散の出力バッファを別に持ってディザの出力をビット拡張していたため発生していた、メモリの無駄や処理時間が長くなっていた欠点を改善した。
【図面の簡単な説明】
【００７８】
【図１】本実施形態におけるシステムの概略構成例を示すブロック図
【図２】バンディング方式のプリンタドライバおよびＯＳの処理例を示す図
【図３】本実施形態におけるコンピュータ及びプリンタのブロック図
【図４】プリンタドライバによる印刷処理の一例を示すフローチャート
【図５】描画命令解析処理の一例を示すフローチャート
【図６】イメージ領域生成処理の一例を示すフローチャート
【図７】画像処理の一例を示すフローチャート
【図８】描画命令解析処理、イメージ領域生成処理を説明する図
【図９】イメージ領域生成処理、画像処理を説明する図
【図１０】イメージ領域情報テーブルを示す図
【図１１】イメージ位置情報テーブルを示す図
【図１２】従来技術の入力ラスタデータを示す図
【図１３】従来技術の出力バッファを示す図
【符号の説明】
【００７９】
１０１，３０１          コンピュータ
１０２，３０２          プリンタ
１０３                  オペレーティングシステム
１０４                  アプリケーションソフトウェア
１０５                  プリンタドライバ
３０３                  処理部
３０４                  制御回路部
３０８                  バス
３１６                  システムバス
８０１                  バンド
８０２，８０３，８０４  イメージ領域
８０５                  スキャンライン
９０１                  色処理出力バッファ
９０２                  量子化出力バッファ
１００１                イメージ領域情報テーブル
１１０１                イメージ位置情報テーブル
１２０１                入力ラスタデータ
１３０１                誤差拡散出力バッファ
１３０８                ディザ出力バッファ
【図１】
2006050300.tif 000003
【図３】
2006050300.tif 000004
【図４】
2006050300.tif 000005
【図５】
2006050300.tif 000006
【図６】
2006050300.tif 000007
【図７】
2006050300.tif 000008
【図１０】
2006050300.tif 000009
【図１１】
2006050300.tif 000010
【図２】
2006050300.tif 000011
【図８】
2006050300.tif 000012
【図９】
2006050300.tif 000013
【図１２】
2006050300.tif 000014
【図１３】
2006050300.tif 000015