(57)【特許請求の範囲】
【請求項１】
画像を示す画像データを入力する入力手段と、
前記画像に対して所定領域ごとにカラー画像データが含まれているか否かを判定する判定手段と、
前記判定結果に基づき前記所定領域ごとにカラー画像処理モードと白黒画像処理モードを選択する選択手段とを有し、
前記カラー画像処理モードと前記白黒画像処理モードは所定色に対する処理結果が整合することを特徴とする画像処理装置。
【請求項２】
前記所定色は黒であることを特徴とする請求項１記載の画像処理装置。
【請求項３】
対象画像を構成する描画命令を入力する入力手段と、
前記描画命令に基づき、バンド毎に前記対象画像の色数を判定する色数判定手段と、
前記描画命令に基づき、前記対象画像の色テーブルを作成する色テーブル作成手段と、
前記色数判定手段によって判定された色数に基づき、前記対象画像が白黒画像か、所定値以下の色数を有するカラー画像か、該所定値より大きい色数を有するカラー画像かを判定する判定手段と、
前記判定手段の判定結果に応じた１画素当たりのビット深さを有するオフスクリーンを、バンド毎に作成する作成手段と、
前記描画命令に基づき、前記作成されたオフスクリーン上に画像データを描画処理を行う描画処理手段とを有し、
前記判定手段が対象画像は白黒画像であると判定した場合は、前記作成手段は１ビットのオフスクリーンを作成し、前記描画処理手段は画像データを１ビットで該オフスクリーン上に描画し、
前記判定手段が対象画像は所定値以下の色数を有するカラー画像であると判定した場合は、前記作成手段は前記所定値に応じたビット深さを有するオフスクリーンを作成し、前記描画処理手段は画像データを前記色テーブルを用いてインデックスに変換し、該インデックスを用いて該オフスクリーン上に画像データを描画することを特徴とする画像処理装置。
【請求項４】
さらに、前記オフスクリーン上に描画処理された画像データに対して色変換処理を行う色変換処理手段を有し、
前記描画された画像データが１ビットである場合は前記色変換処理は行なわれないことを特徴とする請求項３記載の画像処理装置。
【請求項５】
画像を示す画像データを入力する入力工程と、
前記画像に対して所定領域ごとにカラー画像データが含まれているか否かを判定する判定工程と、
前記判定結果に基づき前記所定領域ごとにカラー画像処理モードと白黒画像処理モードを選択する選択工程とを有し、
前記カラー画像処理モードと前記白黒画像処理モードは所定色に対する処理結果が整合することを特徴とする画像処理方法。
【請求項６】
対象画像を構成する描画命令を入力する入力工程と、
前記描画命令に基づき、バンド毎に前記対象画像の色数を判定する色数判定工程と、
前記描画命令に基づき、前記対象画像の色テーブルを作成する色テーブル作成工程と、
前記色数判定工程によって判定された色数に基づき、前記対象画像が白黒画像か、所定値以下の色数を有するカラー画像か、該所定値より大きい色数を有するカラー画像かを判定する判定工程と、
前記判定工程の判定結果に応じた１画素当たりのビット深さを有するオフスクリーンを、バンド毎に作成する作成工程と、
前記描画命令に基づき、前記作成されたオフスクリーン上に画像データを描画処理を行う描画処理工程とを有し、
前記判定工程が対象画像は白黒画像であると判定した場合は、前記作成工程は１ビットのオフスクリーンを作成し、前記描画処理工程は画像データを１ビットで該オフスクリーン上に描画し、
前記判定工程が対象画像は所定値以下の色数を有するカラー画像であると判定した場合は、前記作成工程は前記所定値に応じたビット深さを有するオフスクリーンを作成し、前記描画処理工程は画像データを前記色テーブルを用いてインデックスに変換し、該インデックスを用いて該オフスクリーン上に画像データを描画することを特徴とする画像処理方法。
【請求項７】
さらに、前記オフスクリーン上に描画処理された画像データに対して色変換処理を行う色変換処理工程を有し、
前記描画された画像データが１ビットである場合は前記色変換処理は行なわれないことを特徴とする請求項６記載の画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像の特性に応じた画像処理を行う画像処理装置及び方法に関する。
【０００２】
【従来の技術】
従来、カラープリンタの制御を行うソフトウェアであるプリンタドライバでは、アプリケーションプログラムからＲＧＢ（レッド、グリーン、ブルー）カラーの画像の描画命令を受けてカラー印刷する場合、出力画像の全領域がカラーであるか否か、すなわち、モノクロの領域を含むか否かに関係なく、描画命令による画像データの全データについてＲＧＢカラーからプリンタの印刷可能なＣＭＹＫ（シアン、マゼンタ、イエロー、黒）カラーへの色変換処理を行ない、更に疑似階調処理または色補正処理等を行なって出力画像データを形成し、それをプリンタに出力してカラー印刷を行なわせていた。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記のプリンタ制御では、出力画像が部分的にだけカラーであってモノクロの領域を含む場合、モノクロ領域の画像データについてもＣＭＹＫへの色変換と疑似階調処理や色補正処理等を行なうため、モノクロの領域が多い画像の場合、非常に効率が悪く、処理速度が遅くなるという問題があった。
【０００４】
また、これと同様の問題として、従来、モノクロプリンタでグレースケール印刷を行なわせる場合、出力画像が部分的にだけグレーであるか否か、すなわち真っ黒または真っ白のモノクロ領域を含むか否かにかかわらず、全画像データに対してＲＧＢカラーからグレーへの色変換処理と疑似階調処理や色補正処理等を行なっていたので、同様に効率が悪く、処理速度が遅くなるという問題があった。
【０００７】
本願請求項１記載の発明は、所定領域ごとにカラーか否かを判別し画像処理することにより効率良く画像処理することができるようにするとともに、画像処理モードにかかわらず良好な画像処理結果が得られるようにすることを目的とする。
【０００８】
本願請求項３記載の発明は、バンド毎に描画命令から色数を判定することにより高速に色数を識別できるようにするとともに、判定された色数に応じて効率的にオフスクリーン上に画像を描画できるようにすることを目的とする。
【０００９】
【課題を解決するための手段】
上記目的を達成するために本願請求項１記載の発明は、画像を示す画像データを入力する入力手段と、前記画像に対して所定領域ごとにカラー画像データが含まれているか否かを判定する判定手段と、前記判定結果に基づき前記所定領域ごとにカラー画像処理モードと白黒画像処理モードを選択する選択手段とを有し、前記カラー画像処理モードと前記白黒画像処理モードは所定色に対する処理結果が整合することを特徴とする。
【００１１】
本願請求項３記載の発明は、対象画像を構成する描画命令を入力する入力手段と、前記描画命令に基づき、バンド毎に前記対象画像の色数を判定する色数判定手段と、前記描画命令に基づき、前記対象画像の色テーブルを作成する色テーブル作成手段と、前記色数判定手段によって判定された色数に基づき、前記対象画像が白黒画像か、所定値以下の色数を有するカラー画像か、該所定値より大きい色数を有するカラー画像かを判定する判定手段と、前記判定手段の判定結果に応じた１画素当たりのビット深さを有するオフスクリーンを、バンド毎に作成する作成手段と、前記描画命令に基づき、前記作成されたオフスクリーン上に画像データを描画処理を行う描画処理手段とを有し、前記判定手段が対象画像は白黒画像であると判定した場合は、前記作成手段は１ビットのオフスクリーンを作成し、前記描画処理手段は画像データを１ビットで該オフスクリーン上に描画し、前記判定手段が対象画像は所定値以下の色数を有するカラー画像であると判定した場合は、前記作成手段は前記所定値に応じたビット深さを有するオフスクリーンを作成し、前記描画処理手段は画像データを前記色テーブルを用いてインデックスに変換し、該インデックスを用いて該オフスクリーン上に画像データを描画することを特徴とする。
【００１３】
【発明の実施の形態】
本発明に係る画像処理装置のハードウェア構成の１例を図２を用いて説明する。
【００１４】
１１は本実施例のホストコンピュータ９の制御を司る制御部（以下、ＣＰＵと称する）である。１２は各種データを入力するキーボード、１３は装置全体を制御する制御手順およびその他の必要な情報をあらかじめ記憶するリードオンリメモリ（ＲＯＭ）であり、表示や印字に使用されるフォントパターンも記憶している。１４はキーボード１２から入力した各種データを記憶し、ワークエリアとして利用されるランダムアクセスメモリ（ＲＡＭ）である。１５はそれぞれキーボード１２から入力された各種データやＲＡＭ４に記憶されたテキストを表示する表示器であり、表示器１５は、ＣＰＵ１１から与えられるドットデータを表示し、ドット単位に点灯表示可能な、カラー表示器であり、表示器１５で文字を形造る文字表示ドットパターンは上述のようにＲＯＭ１３に記憶されている。１６はプリンタインターフェースでありプリンタ８に接続されている。１７はデータバスで各種データを転送するために用いられる。１８はハードディスクで各種データを読み書きできる。なお、アプリケーションプログラム１、ＯＳ２、プリンタドライバプログラム８はハードディスク１８に記憶されており、ＲＡＭに読み出してＣＰＵ１１により制御される。
【００１５】
以下の各実施例において、上述の画像処理装置で行われる画像処理を具体的に説明する。
【００１６】
（実施例１）
以下、図面を参照して本実施例を詳細に説明する。
【００１７】
まず、プリンタドライバの処理の概要を説明する。図２はアプリケーションプログラム１、ＯＳ２、プリンタドライバ３、プリンタ８の階層を示した図である。プリンタドライバ３はホストコンピュータ９のＯＳ２の下位置に位置し、ワードプロセッサ等のアプリケーションプログラム１から描画命令を受け取り、それをプリンタ８にわかる印刷命令に変換した後にプリンタ８に転送するものである。特にラスター系のプリンタの場合錯雑な描画命令を持っていないため、アプリケーションプログラム１からの描画命令を一度ファイルに保存し、転送の時にはそれを用いてオフスクリーン７上でビットマップ画像を作成し、それをプリンタ８に転送することになる。またビットマップ画像を作成する時にホストコンピュータ９のメモリが少ない場合は画像を分割して転送処理を行う。なお、描画命令をファイル保存する処理のことをスプール処理と呼び、そのファイルをスプールファイル６と呼ぶ。画像を分割して転送処理を行うことをバンド処理と呼び、分割された画像をバンドと呼ぶ。
【００１８】
なお、色数カウンタ４は、画像中の色数をカウントし、色テーブル５は入力カラー画像データとインデックスを対応させて格納するテーブルである。
【００１９】
又、スプールファイル６はハードディスク１８上に構成される。また、オフスクリーン７、色数カウンター４、色テーブル５はＲＡＭ上に構成される。また、プリンタ８はカラーインクジェットプリンタである。
【００２０】
図３は本実施例のプリンタドライバプログラム３により実現される処理のおおまかな流れ図である。図４は図３のスプール処理にあたる流れ図である。図５は図３の転送処理にあたる流れ図である。
【００２１】
まず、プリンタドライバ３の制御手段を説明する。ステップＳ１でスプール処理を行う。即ち、アプリケーションプログラム１から描画命令を取得しスプールファイルに格納するとともに、色数のカウント及び色テーブルを生成する。次に、ステップＳ２で転送処理を行う。ここでは色数に応じた処理によって、オフスクリーン７上にスプールファイル６の描画命令に応じた画像データを展開、色処理し、プリンタに転送する。
【００２２】
全頁の画像データに対して上述の処理を繰り返す（Ｓ３）。
【００２３】
図４、図５を用いて、スプール処理（Ｓ１）及び転送処理（Ｓ２）を具体的に説明する。
【００２４】
図４のＳ１０１は色数カウンタ４を初期化する。Ｓ１０２は描画の時に使用された色を示す画像データとインデックスを対応させて格納する色テーブル５を初期化する。転送処理の関係上２５６色分の色テーブル５を用意している。Ｓ１０３はスプールファイル６の初期化である。Ｓ１０４はアプリケーションプログラム１からの描画命令の取得である。ここで描画する色が指定されている。Ｓ１０５は指定された色がすでに色テーブル５に記録されているか否かのチェックである。記録されていればＳ１０８へ進み、されていなければＳ１０６へ進む。Ｓ１０６は色数カウンタ４のカウント処理である。Ｓ１０７はＳ１０４で指定された色の記録処理である。ただし色テーブル５を越える場合記録しない。Ｓ１０８は描画命令のスプール処理である。Ｓ１０９は描画終了のチェックである。１ページ分の描画が終了すればＳ１１０へ進み、終了してなければＳ１０４へ進む。Ｓ１１０は色数カウンタ４のスプールファイルへの保存処理であり、Ｓ１１１は色テーブル５のスプールファイル６への保存処理である。
【００２５】
本実施例のスプール処理によれば、入力画像に応じた色テーブルを生成できる。
【００２６】
図５のＳ２０１からＳ２０７は転送処理の初期化部分であり、Ｓ２０８からＳ２１３が実際の転送処理である。Ｓ２０１はスプールファイル６からの色数カウンタ取得処理である。これが描画の時に使われた色数となる。Ｓ２０２はスプールファイル６からの色テーブル取得処理である。
【００２７】
Ｓ２０３からＳ２０７は使用された色数から最適な色再現が行えるオフスクリーン７を作成するための処理である。オフスクリーンとは表示画面には見えないが描画を行うことができるメモリ空間を意味する。Ｓ２０３は使用された色数が白と黒の２色かどうかのチェックである。これらの色しか使われてなければＳ２０４へ進み、１ビットのオフスクリーン７を作成する。
【００２８】
Ｓ２０５は使用された色数が２５６色以下かどうかのチェックである。２５６色以下ならばＳ２０６へ進み、８ビットのオフスクリーン７を作成する。すなわち最大２５６色を表現することができるメモリ空間を作成することになる。この場合０番目から２５５番目の色に対して別々の色を設定することが可能であるが、この色として色テーブル５に記録した色を用いる。Ｓ２０７は使用された色数が２５６色を越える場合のステップである。この場合は３２ビットのオフスクリーンを作成する。すなわちホストコンピュータの持つ最大色数を表現できるメモリ空間を作成する。
【００２９】
Ｓ２０８は作成されたオフスクリーン７への描画命令に基づくスプール描画処理である。
【００３０】
Ｓ２０８では、Ｓ２０４、Ｓ２０６もしくはＳ２０７によって生成された入力画像に応じた１画素当りの深さを有するオフスクリーン上にスプール描画処理を行う。
【００３１】
即ち、３２ビットのオフスクリーンを作成した時は描画命令によって指定されるＲ、Ｇ、Ｂ画像データをそのままオフスクリーン上に展開する。
【００３２】
１ビットのオフスクリーンを作成した時は、入力画像が白黒２値画像であるので画像データを１ビットでオフスクリーン上に展開する。
【００３３】
８ビットのオフスクリーンを作成した時は、画像データを色テーブルを用いてインデックスに変換し、該インデックスによってオフスクリーン上に展開する。
【００３４】
Ｓ２０９はオフスクリーン７のチェックである。１ビットのオフスクリーン７なら白黒２値画像であるので色変換Ｓ２１０及び二値化Ｓ２１１を行う必要がないので、Ｓ２１２へ進む。
【００３５】
Ｓ２１０はホストコンピュータ９のＲＧＢ色空間からプリンタ８のＣＭＹＫ色空間への変換処理を行う。具体的には輝度濃度変換処理、マスキング処理及び黒生成処理を行う。
【００３６】
Ｓ２１１はＣＭＹＫデータに対して二値化処理を行う。Ｓ２１２は二値化されたデータのプリンタへの転送処理である。Ｓ２１３はバンド処理のチェックである。全てのバンドの処理が終了するまでＳ２０８からＳ２１３を繰り返す。
【００３７】
（実施例１の変形例）
次に本発明の他の実施例を示す。先の実施例ではページ毎に色数をカウントしていたが、これをバンド毎に行うことで、バンド単位で最適なオフスクリーン７を用意することができる。例えば１ページ中でも画像のある部分と白黒のテキストの部分が分けられていることが多い。このような場合バンド単位で最適なオフスクリーン７を用意することができればさらに効率の良い処理を行うことが可能になる。
【００３８】
以上のように本実施例によれば、各頁ごともしくは各バンドごとに使用される色数に応じてオフスクリーンを作成するので、色数が少ない場合（Ｓ２０４、Ｓ２０６）は、所定のメモリ容量で通常処理（Ｓ２０７）に比べて１回の展開処理において多くの描画コマンドを描画展開することができる。
【００３９】
各ページもしくは各バンドごとに使用された色数と実際の色を記録し、それにもっともふさわしいオフスクリーンの作成、色処理などを行うことで、メモリを有効に使用し、より高速に印字させることが可能になるものである。
【００４０】
（実施例２）
図６は、本発明の実施例２のプリンタ制御に関わるホストコンピュータにおけるソフトウェアの構成を示しており、ホストコンピュータ９で用いられるアプリケーションプログラム１、ＯＳ（オペレーティングシステム）２、プリンタドライバ３と、プリンタ８の階層を示している。
【００４１】
プリンタドライバ１０はＯＳ２の下位層に位置し、アプリケーションプログラム１からＯＳ２を介して描画命令を受け取り、それをプリンタ８にわかる印刷命令に変換した後にプリンタ８に転送するものである。
【００４２】
ここでプリンタ８はドットマトリクス方式によりビットマップ画像に対応した画像の印刷を行うプリンタであって、ビットマップの１ビットに対応する１ドット（ピクセル）の行単位で描画を行なうラスター系のプリンタとする。ラスター系のプリンタの場合、複雑な描画命令を持っていないため、プリンタドライバ３はアプリケーションプログラム１からの描画命令を一度スプールファイル６に保存し、転送の時にはそれを用いてオフスクリーン７上でビットマップ画像を作成し、そのデータをプリンタ８に転送することになる。カラー印刷の場合はＲＧＢカラーの画像の描画命令に応じてオフスクリーン７上でＲ、Ｇ、Ｂそれぞれのビットマップ画像を形成し、その画像の１行毎のデータを後述の様に処理してＣＭＹＫカラーとモノクロの出力画像データを形成し、それをプリンタ８に転送してカラー印刷を行なわせる。
【００４３】
なお、モノクロフラグ９は、後述のように出力画像の１行毎にそれがモノクロかあるいはカラーかを示すフラグである。
【００４４】
また、モノクロフラグ９はＲＡＭ１５に書き込まれ、必要に応じてハードディスク装置１６に書き込まれたり読み込まれたりする。スプールファイル６はハードディスク装置１６のディスクに書き込まれる。オフスクリーン７はＲＡＭ１５上の所定エリアに形成される。
【００４５】
次に上記構成においてアプリケーションプログラム１からの描画命令に応じてプリンタドライバ３がプリンタ８にカラー印刷を行なわせる場合の制御動作について図７〜図９により説明する。
【００４６】
まず、図７はプリンタドライバ１０の制御手順の概略を示している。図７に示すように、まずステップＳ１′でスプール処理を行なう。すなわち、アプリケーションプログラム１から描画命令を取得してスプールファイル６に書き込むが、その時に描画命令による出力すべき画像をチェックしてモノクロフラグ９を形成する。
【００４７】
次に、ステップＳ２′で転送処理を行なう。ここでは、まずオフスクリーン７上にスプールファイル６の描画命令に応じたＲＧＢの各カラーのビットマップ画像を描画した後、その画像データを処理して出力画像データを形成する。ここでビットマップ画像の行毎にモノクロフラグで示されるカラーかモノクロかに応じて異なる処理を行ない、ＣＭＹＫカラーまたはモノクロの出力画像データを形成する。そして形成した行毎の出力画像データをプリンタ８に転送して印刷を行なわせる。
【００４８】
このようにして１頁分のデータの転送、印刷が終了したら、ステップＳ３でアプリケーションプログラム１からの命令による全頁の印刷を終了したか否か判定し、終了していなければステップＳ１′、Ｓ２′の処理を繰返し、次の頁の画像の印刷を行なわせる。
【００４９】
次に、図７のステップＳ１′のスプール処理とステップＳ２′の転送処理の詳細を図８、図９により説明する。
【００５０】
まずスプール処理は図８の処理手順により以下のように行なわれる。
【００５１】
ステップＳ４０１では、ＲＡＭ１５上にモノクロフラグの領域を１頁の行数分用意する。ここでいう行とはビットマップの１ビットに対応する１ドット（ピクセル）の高さの行である。もし３６０ＤＰＩのプリンタで頁長が１１インチなら３９６０個のフラグの配列を用意する。
【００５２】
ステップＳ４０２では、用意したモノクロフラグのデータを初期化する。ここで描画がなければ真っ白で印字することになるので、全フラグをモノクロとしておく。
【００５３】
ステップＳ４０３では、スプールファイルを初期化する。
【００５４】
ステップＳ４０４では、アプリケーションプログラムから描画命令を取得する。この描画命令には、画像の何行目から何行目までというどの領域がどの色で描かれるかという情報が含まれている。
【００５５】
続いてステップＳ４０５〜Ｓ４１０は、本発明の特徴に関わる描画色チェックを行なうステップである。
【００５６】
ステップＳ４０５では、変数ｌｉｎｅに、描画命令により指定される描画領域の上端の座標、つまり１頁のビットマップにおいて上から何行目かという数値を設定する。
【００５７】
ステップＳ４０６では、描画命令による出力すべき画像において変数ｌｉｎｅ番目の行が描かれる色がモノクロかカラーかを判断し、モノクロならステップＳ４０７に進み、カラーならステップＳ４０８に進む。ここでいうモノクロとは真っ白と真っ黒だけで描かれた状態のことであり、カラーとは白黒以外の色を含む場合であることは勿論として、グレーの色が指定された場合もカラーとして扱う。
【００５８】
ステップＳ４０７では、モノクロフラグの配列においてｌｉｎｅ番目のフラグをモノクロに設定する。
【００５９】
ステップＳ４０８では、モノクロフラグの配列においてｌｉｎｅ番目のフラグをカラーに設定する。
【００６０】
ステップＳ４０９では、次の行のフラグを設定するために変数ｌｉｎｅを＋１する。
【００６１】
ステップＳ４１０では、変数ｌｉｎｅが描画領域の下端の座標に達したか、すなわち描画領域分の全モノクロフラグの設定が終わったか否かをチェックする。描画領域分の全モノクロフラグの設定が終わっていればステップＳ４１１へ進み、まだ設定が終わってなければステップＳ２０６へ戻り、ステップＳ４０６〜Ｓ４１０の処理を繰り返す。
【００６２】
ステップＳ４１１では、ステップＳ４０４で取得した描画命令をスプールファイルへ記録する。
【００６３】
ステップＳ４１２では、アプリケーションプログラムからの１頁の描画命令の取得が終了したか否かをチェックする。そして終了していればステップＳ４１３へ進み、終了していなければステップＳ２０４へ戻り、ステップＳ４０４〜Ｓ４１２の処理を繰り返す。
【００６４】
ステップＳ４１３では、設定されたモノクロフラグをスプールファイルに記録し、スプール処理を終了する。
【００６５】
次に、転送処理は図５の処理手順により以下のように行なわれる。
【００６６】
本実施例におけるスプール処理では行毎にカラーかモノクロかを示すフラグを設定する。
【００６７】
図９のステップＳ３０１では、ＲＡＭ１５上にＲＧＢ３色分のオフスクリーンを作成する。
【００６８】
ステップＳ３０２では、そのオフスクリーンにスプールファイルに記録されている描画命令に応じたＲＧＢカラーの画像を描画する。
【００６９】
ステップＳ３０３では、スプールファイルからモノクロフラグを取得する。
【００７０】
ステップＳ３０４から実際の転送処理であり、まず変数ｌｉｎｅを初期化して０とする。
【００７１】
ステップＳ３０５では、ｌｉｎｅ番目のモノクロフラグをチェックし、カラーならステップＳ３０６〜Ｓ３０８へ進み、モノクロならステップＳ３０９、Ｓ３１０へ進む。
【００７２】
カラーの場合、まずステップＳ３０６においてｌｉｎｅ番目の行の画像をＲＧＢカラーからＣＭＹＫカラーに変換する。
【００７３】
次に、ステップＳ３０７において、変換したＣＭＹＫの各色の画像に疑似階調処理を施して二値データに変換する。疑似階調処理とは誤差拡散処理やディザ処理のことである。このような疑似階調処理の他に色補正処理等を行なってもよい。
【００７４】
次に、ステップＳ３０８において、二値化されたＣＭＹＫデータを出力画像データとしてプリンタ８へ転送して１行の印刷を行なわせる。
【００７５】
一方、モノクロの場合、ステップＳ３０９、Ｓ３１０で本発明の特徴に関わるモノクロ画像処理を行なう。まずステップＳ３０９において、変数ｌｉｎｅ番目の行のイメージを単純二値化処理で真っ黒ないし真っ白のモノクロの二値データに変換する。単純二値化処理とは、ある閾値で０か１かを決める二値化方法である。たとえば、その行のあるビットがＲＧＢいずれも「１」なら白で「０」、ＲＧＢいずれも「０」なら黒で「１」となる。
【００７６】
次に、ステップＳ３１０において、作成されたモノクロの二値データを出力画像データとしてプリンタへ転送して１行の印刷を行なわせる。
【００７７】
ステップＳ３０８またはＳ３１０に続くステップＳ３１１では、次の行の処理を行うため変数ｌｉｎｅを＋１する。
【００７８】
ステップＳ３１２では、画像の全行を印刷したかどうかをチェックし、全行印刷していないならステップＳ３０５へ戻り、ステップＳ３０５〜Ｓ３１２の処理を繰返し、全行の印刷が終了したら転送処理を終了する。
【００７９】
以上のようにして、スプール処理では、アプリケーションプログラムから取得した描画命令による出力すべき画像について行毎にモノクロかカラーかをチェックしてモノクロフラグを設定し、スプールファイルへ描画命令を記録するとともにモノクロフラグを記録する。また、転送処理では、オフスクリーンに描画命令に応じたＲＧＢカラーのビットマップ画像を描画した後、画像の行毎にモノクロフラグによりカラーかモノクロかをチェックし、カラーならばＲＧＢカラーからＣＭＹＫカラーへの色変換処理と疑似階調処理または色補正処理などを行ない、モノクロならば単純二値化処理のみ行なって出力画像データを形成してプリンタに出力し、印刷を行なわせる。
【００８０】
すなわち、出力画像データの形成において、出力画像のカラー領域については従来と同様に色変換処理と疑似階調処理または色補正処理等を行なうが、モノクロ領域については、色変換処理と疑似階調処理または色補正処理等を省いて簡単な単純二値化処理のみ行なうので、出力画像データを形成する処理を効率良く行なえ、処理速度を向上することができる。
【００８１】
（実施例２の変形例）
上述した実施例ではカラープリンタにカラー印刷を行わせる場合を説明したが、モノクロプリンタにグレースケール印刷を行わせる場合も同様の手法を適用できる。
【００８２】
この場合、スプール処理では、先述の図８のステップＳ４０１〜Ｓ４０５の処理を行なった後、ステップＳ４０６において、描画命令による出力すべき画像において変数ｌｉｎｅ番目の行の描画色がモノクロ（真っ黒ないし真っ白）かあるいはグレーかをチェックし、その結果によりステップＳ４０７、Ｓ４０８でモノクロフラグをモノクロかグレーかに設定する。そして後はステップＳ４０９〜Ｓ４１３の処理を同様に行なう。
【００８３】
また、転送処理では、図９のステップＳ３０１〜Ｓ３０４の処理を同様に行なった後、ステップＳ３０５でｌｉｎｅ番目のモノクロフラグをチェックし、モノクロならステップＳ３０９で同様にｌｉｎｅ番目の行について単純二値化処理を行なってモノクロの出力画像データを形成する。またグレーならステップＳ３０６でｌｉｎｅ番目の行についてＲＧＢからグレーへの色変換処理を行ない、ステップＳ３０７でグレーの疑似階調処理または色補正処理等を行なって出力画像データとしてグレーの二値データを形成する。その後のステップＳ３０８、Ｓ３１０〜Ｓ３１２の処理は先述と同様である。
【００８４】
このような実施例によれば、出力すべき画像のグレーの行についてはグレーへの色変換処理と疑似階調処理または色補正処理等を行なうが、モノクロの行については簡単な単純二値化処理しか行なわないので、従来のグレースケール印刷の場合のように画像の全領域についてグレーへの色変換処理と疑似階調処理または色補正処理等を行なうのに比べて、出力画像データを形成する処理を効率良く行なえ、処理速度を向上することができる。
【００８５】
なお、スプール処理において、描画命令により描画が行われない行について、描画が行われないことを示す情報をスプールファイルに記録し、転送処理のときにその情報を参照することで、描画が行なわれない領域については単純二値化処理すら省くことができるようになる。
【００８６】
以上の実施例において、カラー印刷の場合、描画命令によるカラーがＲＧＢカラー、印刷するカラーがＣＭＹＫカラーとしてＲＧＢからＣＭＹＫへの色変換処理を行なうものとしたが、描画命令によるカラーがＲＧＢ以外のカラーで印刷のカラーもＣＭＹＫ以外のカラーである場合も考えられ、その場合、異なる色変換処理を行なうことになる。その場合も上述のモノクロフラグにより画像データの処理方法を異ならせる本発明方法が有効である。
【００８７】
また、上記実施例では１行の領域毎に、描画色を調べ、その結果により異なる処理で出力データを形成したが、複数行の領域毎またはページプリンタ等で他の所定の領域毎、例えばｎ＞２としてｎ分の１ページの領域毎に、描画色を調べ、その結果により異なる処理で出力画像データを形成するようにしても良い。
【００８８】
以上の説明から明らかなように、本発明のプリンタ制御方法およびプリンタ制御装置によれば、カラープリンタに対し、描画命令に応じてカラー印刷させる出力画像データを形成する場合、出力すべき画像の所定の領域毎に描画色がカラーかモノクロかを調べ、描画色がカラーの領域についてはカラーに関わる所定処理を行なって出力画像データを形成するが、モノクロの領域については簡単な単純二値化処理を行なって出力画像データを形成するので、出力画像データの形成処理を効率良く高速に行なうことができる。
【００８９】
またモノクロプリンタに対し、描画命令に応じてグレースケール印刷させる出力画像データを形成する場合、出力すべき画像の所定の領域毎に描画色がグレーかモノクロかを調べ、描画色がグレーの領域についてはグレーに係る所定の処理を行なって出力画像データを形成するが、モノクロの領域については簡単な単純二値化処理を行なって出力画像データを形成するので、同様に出力画像データの形成処理を効率良く高速に行なうことができるという優れた効果が得られる。
【００９０】
（実施例３）
実施例１では入力画像の特性に適したオフスクリーンを生成する技術を示し、実施例２ではオフスクリーンに展開された画像の特性に適した色変換処理を行う技術を示した。
【００９１】
実施例３では、実施例１及び実施例２に記載されている技術を効率良く組み合わせた場合の処理を示す。
【００９２】
実施例３のプリンタ制御に関わるホストコンピュータにおけるソフトウェアの構成を図１０に示す。
【００９３】
ホストコンピュータ９はアプリケーションプログラム１、ＯＳ２、スプールファイル６、オフスクリーン７、色数カウンタ４、色テーブル５、モノクロフラグ９、描画領域１１、及びドライバプログラム１２により構成される。
【００９４】
以下、該構成に基づく実施例３の処理を図１１乃至図２０を用いて説明する。
【００９５】
図１１にプリンタドライバの制御手順の概略を示す。
【００９６】
図１２にＳ１″におけるスプール処理の流れを示す。
【００９７】
Ｓ１０００において、図１３に示すように、色数カウンタ（Ｓ１１００）、色テーブル（Ｓ１２００）、モノクログラフ（Ｓ１３００、Ｓ１４００）、描画領域（Ｓ１５００、Ｓ１６００）及びスプールファイル（Ｓ１７００）を初期化する。
【００９８】
ここで、描画領域の初期化処理は、描画命令に基づく描画領域を行毎に判定するために、描画左座標列及び描画右座標列をページの行数分用意する（Ｓ１５００）とともに、各描画左座標列及び各描画右座標列を取り得る最大値に設定する（Ｓ１６００）。
【００９９】
なお、本実施例では、座標列は１５ビット及び正負を示す１ビットの計１６ビットで示す。したがって、座標列は−３２７６７〜＋３２７６８まで示すことができる。
【０１００】
Ｓ２０００は入力した描画コマンド及び色指定コマンドで構成される画像の各オブジェクトを示す描画命令を順次取得する。
【０１０１】
Ｓ３０００は、実施例１（Ｆｉｇ４  Ｓ１０５〜Ｓ１０７）に相当する、図１４に示される色カウント処理を行う。即ち、描画命令を解析し、色数をカウントする（Ｓ３２００）とともに、動的に所定数まで設定可能な色テーブルを作成する。
【０１０２】
Ｓ４０００は（初期化処理で用意された初期値としてモノクロが設定されている）モノクロフラグ配列を用いて、実施例２（Ｆｉｇ８  Ｓ２０６〜Ｓ２１０）に相当する図１５に示されるモノクロフラグ処理を行う。
【０１０３】
Ｓ５０００は描画命令を解析し、行毎に描画領域を判定する描画領域記録処理を行う。
【０１０４】
図１６に描画領域記録処理の流れを具体的に示す。描画領域記録処理は他の処理と同様に描画命令を解析し、該描画命令に係る各行毎に描画領域を設定する。
【０１０５】
Ｓ５１００は描画命令で示されるオブジェクト画像の上座標をｌｉｎｅに設定する。Ｓ５２００は描画命令を解析した結果に基づく、所定の行における左座標が予め設定されている所定の行における描画左座標より小さいか否かを判定する。
【０１０６】
Ｓ５１００において小さいと判定された場合はＳ５３００で描画左座標を更新する。
【０１０７】
Ｓ５４００は同様に所定の行における右座標が予め設定されている所定の行における描画右座標より大きいか否かを判定する。
【０１０８】
Ｓ５４００において大きいと判定された場合はＳ５５００で描画右座標を更新する。
【０１０９】
Ｓ５６００は設定する行を変える。以上の処理を描画命令に係る描画領域の全ての行に対して行う（Ｓ５７００）。
【０１１０】
Ｓ６０００は該処理を行った描画命令をスプールファイル６に格納する。
【０１１１】
Ｓ７０００は上述の各処理を全ての描画命令に対して繰り返す様に制御する。
【０１１２】
Ｓ８０００は、図１７に示す終了処理を行う。即ち、色数（Ｓ８１００）、色テーブル（Ｓ８２００）、モノクロフラグ（Ｓ８３００）及び描画領域（Ｓ８４００）をスプールファイル６に格納する。
【０１１３】
スプール処理において、色カウント処理（Ｓ３０００）、モノクロフラグ処理（Ｓ４０００）及び描画領域記録処理（Ｓ５０００）は描画命令ごとに順次処理していく。
【０１１４】
本実施例のように該入力画像の特性半別処理を描画命令解析によって行うことにより、高速に判別することができる。
【０１１５】
図１８にＳ２″における転送処理の流れを示す。
【０１１６】
Ｓ９０００、Ｓ９１００、Ｓ９２００、Ｓ９３００において、スプールファイル６から、スプール処理で設定された色数、色テーブル、モノクロフラグ配列、描画領域（描画左座標配列及び描画右座標配列）を取得する。
【０１１７】
Ｓ９４００は、画像がモノクロ画像かカラー画像のいずれかかを色数に基づき判定する。
【０１１８】
カラー画像の場合はＳ９５００でカラー画像印刷を行う。一方、モノクロ画像の場合はＳ９６００でモノクロ画像印刷を行う。
【０１１９】
カラー画像印刷及びモノクロ画像印刷に係る処理を図１９及び図２０を用いて説明する。
【０１２０】
まず、カラー画像印刷の処理を説明する。
【０１２１】
カラー画像の色数に応じたオフスクリーンを作成するために実施例１におけるオフスクリーン作成処理（図５  Ｓ２０５〜Ｓ２０８）に相当する処理を行う（Ｓ９５０１〜Ｓ９５０５）。
【０１２２】
なお、Ｓ９５０４はｌｉｎｅの初期値を０に設定している。
【０１２３】
Ｓ９５０６はオフスクリーン上に展開された展開画像の所定の行における描画左座標と描画右座標を比較することにより該所定の行に描画領域が存在するか否かを判定する。
【０１２４】
即ち、描画左座標が描画右座標より大きいか否かを判定する。判定結果が小さい場合は、描画領域が存在すると判定する。
【０１２５】
実施例２における展開画像をプリンタに送信する二値化データに変換するための処理（図９  Ｓ３０５〜Ｓ３１０）に相当する処理を行う（Ｓ９５０７〜Ｓ９５０９）。
【０１２６】
なお、カラー画像印刷処理で行われる所定領域対象カラー画像処理（Ｓ９５０８）と、所定領域対象白黒画像処理（Ｓ９５１０）、更に、モノクロ画像印刷処理の合計３モードにおける処理結果は、白や黒において同一の結果になるように各処理のパラメータが設定されている。
【０１２７】
即ち、所定領域対象カラー画像処理（Ｓ９５０８）で行われるマスキング処理及び墨入れ処理のパラメータを調整することにより他のモードの処理結果と整合をとっている。
【０１２８】
本実施例では具体的に黒を示す画像データに単しては黒のみで画像形成が行われるように設定されている。
【０１２９】
なお、本発明はこれに限らず３モードにおいて黒及び／もしくは白において整合がとれていれば構わない。
【０１３０】
以上の処理を全行に対して繰り返し行う（Ｓ９５１２、Ｓ９５１３）。
【０１３１】
次に、モノクロ画像印刷の処理を図２０を用いて説明する。
【０１３２】
入力画像がモノクロ画像であるので１ビットのオフスクリーンを作成する（Ｓ９６０１）。
【０１３３】
ｌｉｎｅの初期値を０に設定する（Ｓ９６０２）。
【０１３４】
作成されたオフスクリーンに描画命令に基づき画像を展開する（Ｓ９６０３）。
【０１３５】
行毎に描画領域があるか否かを判定し（Ｓ９６０４）、描画領域が存在する場合は、描画領域に係るビットマップをプリンタに送信する（Ｓ９６０５）。
【０１３６】
以上の行毎のモノクロ画像印刷処理を全行に対して行う（Ｓ９６０６、Ｓ９６０７）。
【０１３７】
なお、上記各実施例においては、プリンタドライバの処理（ホストコンピュータの処理）で説明したが、プリンタ本体において形成された出力画像データに基づいて画像を印刷する処理を行なうコントローラの制御にも上記の本発明に関わる構成を適用することができる。
【０１３８】
また、多値データに基づき画像を形成する画像形成装置のプリンタドライバに本発明を適用しても構わない。
【０１３９】
また、画像形成装置内のコントローラに本発明を適用しても構わない。
【０１４０】
また、本発明を達成するソフトウェアのプログラムを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置が記憶媒体に格納されたプログラムを読出し実行することによって、本発明が達成される場合にも適用できることは言うまでもない。プログラムを供給するための記憶媒体としては、例えば、フロッピディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１４１】
【発明の効果】
本願請求項１記載の発明によれば、所定領域ごとにカラーか否かを判別し画像処理することにより効率良く画像処理することができるとともに、画像処理モードにかかわらず良好な画像処理結果が得ることができる。
【０１４３】
本願請求項３記載の発明によれば、バンド毎に描画命令から色数を判定することにより高速に色数を識別できるとともに、判定された色数に応じて効率的にオフスクリーン上に画像を描画することができる。
【図面の簡単な説明】
【図１】ハードウェア構成の１例を示す図。
【図２】実施例１に係るプリンタドライバプログラムの階層例を示す図。
【図３】実施例１に係る印刷処理の流れの１例を示す図。
【図４】実施例１に係るスプール処理の流れの１例を示す図。
【図５】実施例１に係る転送処理の流れの１例を示す図。
【図６】実施例２に係るプリンタドライバプログラムの階層例を示す図。
【図７】実施例２に係る印刷処理の流れの１例を示す図。
【図８】実施例２に係るスプール処理の流れの１例を示す図。
【図９】実施例２に係る転送処理の流れの１例を示す図。
【図１０】実施例３に係るプリンタドライバプログラムの階層例を示す図。
【図１１】実施例３に係る印刷処理の流れの１例を示す図。
【図１２】実施例３に係るスプール処理の流れの１例を示す図。
【図１３】実施例３に係る初期化処理の流れの１例を示す図。
【図１４】実施例３に係る色カウント処理の流れの１例を示す図。
【図１５】実施例３に係るモノクロフラグ処理の流れの１例を示す図。
【図１６】実施例３に係る描画領域記録処理の流れの１例を示す図。
【図１７】実施例３に係る終了処理の流れの１例を示す図。
【図１８】実施例３に係る転送処理の流れの１例を示す図。
【図１９】実施例３に係るカラー画像の印刷処理の流れの１例を示す図。
【図２０】実施例３に係るモノクロ画像の印刷処理の流れの１例を示す図。
【図１】
0003618850.tif 000002
【図２】
0003618850.tif 000003
【図３】
0003618850.tif 000004
【図４】
0003618850.tif 000005
【図５】
0003618850.tif 000006
【図６】
0003618850.tif 000007
【図７】
0003618850.tif 000008
【図８】
0003618850.tif 000009
【図９】
0003618850.tif 000010
【図１０】
0003618850.tif 000011
【図１１】
0003618850.tif 000012
【図１２】
0003618850.tif 000013
【図１３】
0003618850.tif 000014
【図１４】
0003618850.tif 000015
【図１５】
0003618850.tif 000016
【図１６】
0003618850.tif 000017
【図１７】
0003618850.tif 000018
【図１８】
0003618850.tif 000019
【図１９】
0003618850.tif 000020
【図２０】
0003618850.tif 000021