本発明は画像処理装置およびその方法に関し、例えば、オブジェクトの描画データからビットマップ画像および属性情報を生成する画像処理に関する。
近年、コンピュータの出力装置として、レーザビームプリンタなどの電子写真方式を用いる画像処理装置が広く使われている。これら画像処理装置は、ホストコンピュータから受信した描画コマンドを画像データに変換して印刷処理を行う機能を備える。
図1は一般的な画像処理装置の構成例を示すブロック図である。図1を用いて、ホストコンピュータから受信した描画コマンドを画像データに変換して紙面に印刷する処理を説明する。
ホストコンピュータ200上で動作するアプリケーション201は、例えばページレイアウト文書、ワードプロセッサ文書、グラフィック文書などを作成する。プリンタドライバ202は、アプリケーションが作成したディジタル文書データに基づき、描画コマンドを生成する。プリンタドライバ202が生成する描画コマンドは、ページ記述言語(PDL)と呼ばれるページ画像データを作成するためのプリンタ記述言語が一般的である。また、描画コマンドは、通常、文字、グラフィクス、イメージなど描画するための描画命令を含む。
プリンタドライバ202が生成した描画コマンドは、ネットワークなどを介して、画像処理装置203に伝送される。
画像処理装置203は、ホストコンピュータ200から描画コマンドを受信すると、まず、PDL解析部204によって描画コマンドを解析し、その解析結果に基づき、ディスプレイリスト生成部205によって、ラスタライズ処理部106が処理可能なディスプレイリスト212を生成する。ラスタライズ処理部206は、ディスプレイリスト212をラスタライズ処理してビットマップ画像210を生成し、データ記憶部207に格納する。
画像処理部208は、データ記憶部207に格納されたビットマップ画像210に、色変換処理や疑似中間調処理などの画像処理を施し、画像出力部209に出力可能な画像フォーマットに変換する。
ここで、画像出力部209への入力がシアン(C)、マゼンタ(M)、イエロー(Y)、ブラック(K)の四色の記録剤に対応するCMYK画像データで、ラスタライズ処理部206が生成するビットマップ画像210がRGB画像データの場合、画像処理部208は、データ記録部207に格納されたRGB画像データをルックアップテーブル(LUT)などを用いてCMYK画像データに変換する。また、通常、画像出力部209は2、4、16階調など低階調の画像のみ出力可能な場合が多い。従って、少ない階調数しか出力できない画像出力部209において安定した中間調表現を可能にするために、画像処理部208は疑似中間調処理を行う。
また、画像処理部208では、より好ましい画像を得るために、画像のエッジ部などにスムージング処理などを施す場合もある。
画像出力部209は、予め定められた画像フォーマットで生成された画像データを受信し、出力処理を行う。以上で、ホストコンピュータ200が出力した描画コマンドが表す画像が紙面に印刷される。
一方、上述した画像データの生成過程において、印刷画質をより好ましいものにするために、描画コマンドに従って生成されるビットマップ画像210の各画素に対して、その属性情報を付加することがある(例えば、特許文献1参照)。
つまり、ラスタライズ処理部209は、ビットマップ画像210の生成と同時に、各画素がどのような画像特性を有する画像領域に属するかを示す属性情報211を生成し、データ記憶部207に格納する。
属性情報は、画像領域を画像特性に応じて種類分けした場合に、画素の領域属性を示す。属性情報には、例えば、文字データもしくはその画像特性をもつ画像領域に含まれる画素を示すテキスト属性、ビットマップデータもしくはその画像特性をもつ画像領域に含まれる画素を示すイメージ属性、ドローデータもしくはその画像特性をもつ画像領域に含まれる画素を示すグラフィック属性などがある。つまり、ビットマップ画像210の各画素に対して属性情報211を付加することで、画像処理部208は、画素ごとに、各画像領域の画像特性に適した画像処理を行うことができる。
例えば、イメージ属性とテキスト属性で、RGB画像データをCMYK画像データへ色変換する際に利用するLUTを切り替えたり、領域属性ごとに異なるマトリクスを用いてスクリーン処理を施してイメージ属性の写真画像に階調性を優先する低線数スクリーンを、テキスト属性の文字およびグラフィック属性のラインに解像度を優先する高線数スクリーンを適用するなどが可能になる。
このようにラスタライズ処理部206で、描画オブジェクトに基づき属性情報211を生成することで、描画コマンドに含まれるオブジェクトごとに画像処理を切り替えることが可能になる。
図2Aから図2Cはビットマップ画像210と属性情報211の生成をさらに詳細に説明する図である。図2Aは画像の形成結果を示し、グラフィック属性の矩形301(色はRGB = (255, 0, 0))の上に、テキスト属性の文字「A」302(色はRGB = (0, 0, 0))を形成する。
図2Bは、符号303で示す文字302の描画結果(ビットマップ画像210)の一部303を拡大した図である。ビットマップ画像210は、一画素あたりRGB各8ビット(合計24ビット幅)をもつ、図2Bに示す画素列で構成される。
図2Cは、図2Bに示す画素の属性情報211を示し、この例では2ビットである。なお、属性情報のビット幅は扱う属性の数に応じて変化する。また、属性情報と領域属性の関係を示すテーブル304を別途用意する。つまり、属性情報211は一画素あたり2ビット幅をもつ、図2Cに示す画素列で構成される。
ラスタライズ処理部206は、図2Bに示すRGB = (255, 0, 0)の画素に対して属性情報としてグラフィック属性を示す「3」を書き込み、図2Bに示すRGB = (0, 0, 0)の画素に対してテキスト属性を示す「2」を書き込む。
しかし、上記の技術は、描画コマンドに従って生成したビットマップ画像210に加えて、印刷画質をより好ましいものにするために、各画素に対応する属性情報211をデータ記憶部207へ格納する必要があり、データ記憶部207に読み書きするデータ量が増大する問題がある。
また、単純な黒色は、何れの属性であっても色変換やハーフトーン後の結果は黒色である。言い換えれば、属性情報によって処理結果に違いは生じない(属性情報が不要)。さらに、黒色のみの画像であれば属性情報が不要なばかりか、ビットマップ画像210の一画素に多値(例えば8ビットや16ビット)を割り当てる必要がなく、二値(1ビット)で表現可能である。このような黒色や黒色のみの画像など、他の色に比べて黒色が多い画像に上記の技術を適用すれば、データ記憶部207に対する無駄な読み書き分、画像形成速度が遅くなる。
本発明は、ラスタライズ処理で生成するデータ量を抑えて、描画処理速度を向上することを目的とする。
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
本発明にかかる画像処理は、オブジェクトの描画データからビットマップ画像データ、および、各画素が少なくとも細線領域、イメージ領域、グラフィックス領域またはテキスト領域に属すことを示す属性情報を生成し、前記属性情報に基づく画像処理を前記ビットマップ画像データに施す際に、頁内の黒色のみで描画されるオブジェクトの描画画素数が所定画素数を超える場合は、当該頁における前記属性情報に黒色の画素を示す属性情報を追加して、前記黒色の画素の色値を前記ビットマップ画像データに書き込まず、前記描画画素数が前記所定画素数以下の場合は、前記追加を行わず、前記黒色の画素の色値を前記ビットマップデータに書き込むことを特徴とする。
本発明によれば、ラスタライズ処理で生成するデータ量を抑えて、描画処理速度を向上することができる。
以下、図面を参照して本発明にかかる一実施例の画像処理を詳細に説明する。
以下では、本発明をレーザビームプリンタに適用する例を説明するが、これに限られるものではなく、その主旨を逸脱しない範囲で、任意のプリンタ(インクジェットプリンタや複合機能印刷装置 (MFP: Multi-Functional Peripheral equipment))に適用可能である。
[プリンタの構成]
図3はレーザビームプリンタ(以下、単に「プリンタ」と呼ぶ)の構成例を説明する図である。
図3において、プリンタ100は、その外部に接続されたコンピュータ(不図示)から供給される文字印刷命令、各種図形描画命令、イメージ描画命令および色指定命令などに従い、対応する文字パターン、図形、イメージなどを生成し、記録媒体である記録紙上に画像を形成する。
操作パネル151は、ユーザが操作するためのスイッチおよびプリンタ100の状態を表示するLED表示器やLCD表示器などが配置されている。プリンタ制御ユニット101は、プリンタ100全体を制御し、ホストコンピュータから供給される上記の命令を解析する。なお、本実施例におけるプリンタ100はRGBの色情報をマゼンタ(M)、シアン(C)、イエロー(Y)、ブラック(K)の色情報に変換し、各色成分の画像を並列に形成し現像するための、MCYKそれぞれの像形成・現像機構(ステーション)をもつ。
プリンタ制御ユニット101は、MCYKそれぞれの印刷イメージを生成し、ビデオ信号に変換してMCYKそれぞれのレーザドライバに出力する。
マゼンタのレーザドライバ110は、半導体レーザ素子111を駆動し、入力されるビデオ信号に応じて半導体レーザ素子111から出力されるレーザ光112をオンオフ制御する。レーザ光112は、回転多面鏡113で左右方向に偏向され、静電ドラム114上を走査する。これにより、静電ドラム114上に文字や図形のパターンを表す静電潜像を形成する。この潜像は、静電ドラム114の周囲に配置された現像ユニット(トナーカートリッジ)115によって現像された、記録紙に転写される。以上は、Mステーションにおける像形成・現像プロセスの説明だが、他のステーションもMステーションと同様の像形成・現像プロセスを行う。従って、Mステーション以外の説明は省略する。
記録紙にはカットシートを用いる。記録紙は、プリンタに装着される給紙カセット102に収納され、記録紙の上面はバネ103により一定の高さに保たれる。記録紙は、給紙ローラ104および搬送ローラ105、106の回転によって装置内に取り込まれ、記録紙搬送ベルト107に載せられてMCYKの各ステーションを通過して、MCYKの各トナー(粉末インク)が重畳転写される。各色のトナーは、定着器108の熱と圧力によって記録紙に固定される。その後、記録紙は、搬送ローラ109、150によってプリンタ100の装置外へ排出される。
図4はプリンタ100を制御するプリンタ制御ユニット(プリンタコントローラ)101の構成例を示すブロック図である。
プリンタ100のプリンタコントローラ101は、ネットワーク1212を介してホストコンピュータ200からPDLデータを受信するネットワークインタフェイス(I/F) 1203を備える。
CPU 1208は、RAM 1205をワークメモリに使用して、ROM 1204に格納されたプログラムなどを実行する。ROM 1204は、受信したPDLデータを処理するための解析処理プログラム、ディスプレイリスト処理プログラム、ラスタライズプログラムや、画像処理ハードウェア(H/W) 1206、画像出力H/W 1207、メモリ操作H/W 1209、圧縮・伸長H/W 1210を制御するためのハードウェア制御プログラムを格納する。
また、RAM 1205は、CPU 1208のワークメモリに利用されるほか、受信したPDLデータを格納する受信バッファ、ディスプレイリストの格納領域、ラスタライズ処理によって得られるビットマップ画像および属性情報の格納領域としても利用される。
画像処理H/W 1206は画像処理をハードウェアで実現するハードウェアアクセラレータ、画像出力H/W 1207は画像出力処理をハードウェアを用いて実現するハードウェアアクセラレータ、メモリ操作H/W 1209はメモリ間のコピーやメモリ領域に一定値を書き込んで初期化を行う機能を備えるハードウェアアクセラレータである。また、圧縮・伸長H/W 1210はメモリ間のコピー時にデータの圧縮・伸長処理を行うハードウェアアクセラレータで、複数の圧縮方式、例えばJPEGに代表されるロッシー圧縮とJBIGなどのロスレス圧縮をサポートする。これらハードウェアアクセラレータは並列動作が可能で、図4に示す各処理部を並列動作させることで高速な画像形成処理(印刷速度の向上)が期待できる。また、ハードウェアアクセラレータらは、RAM 1205を介してデータのやり取りを行うほか、RAM 1205を介さずに直接データをやり取りすることが可能である。例えば、画像処理H/W 1206は、RAM 1205を介さずに直接、画像出力H/W 1207にデータを入力する。
また、プリンタコントローラ101は、RGB画像データは一画素あたり24ビット(各色成分は8ビット/画素)で扱う。また、CMYK画像データは一画素あたり32ビット(各色成分は8ビット/画素)で扱う。ただし、この数値に制限されるものではなく、例えばRGBの各色成分が16ビット/画素で一画素あたり48ビットであっても構わない。
[ラスタライズ処理]
図5Aは、何も描画されていない領域401に、文字「A」402(色はRGB = (0, 0, 0)の黒色)が描画される様子を示している。
図5Bは従来のラスタライズ処理を示し、文字402の描画前、領域401の一部403に対応するビットマップ画像403aはRGB = (255, 255, 255)の白色画素で構成され、領域403の属性情報403bとして、テーブル405に示すように、イメージ属性を表す「1」が書き込まれている。
領域401に文字402を描画すると、領域401の文字402に相当する領域には、ビットマップ画像403cに拡大表示するように黒色画素が描画され、属性情報403dに拡大表示するようにテキスト属性を表す「2」が書き込まれる。なお、RGB = (255, 255, 255)(pure white)の白画素はどのような属性でも、一般に、画像出力処理によりCMYK = (0, 0, 0, 0)に変換されるため、初期の時点ではどの属性にしてもよい。
図5Bのラスタライズ処理を行えば、一画素あたり、ビットマップ画像に24ビット、属性情報に2ビットの合計26ビットのデータをRAM 1205に書き出す必要がある。
図5Cは実施例1のラスタライズ処理を示し、文字402の描画前の、領域403に対応するビットマップ画像403aと属性情報403bは図5Bと同じである。
領域401に文字402を描画すると、領域401はビットマップ画像403eに拡大表示するように白色画素のままである。一方、領域401の文字402に相当する領域には、属性情報403fに拡大表示するように黒色属性を表す「0」が書き込まれる。つまり、実施例1のラスタライズ処理においては、テーブル405の割り当てを変更して画素値「0」に黒色(pure black)属性を割り当てたテーブル406にして、文字402に相当する領域の属性情報に黒色属性「0」を書き込み、ビットマップ画像には黒色のデータ(RGB = (0, 0, 0))を描画しない。なお、黒色属性の画素は、画像出力処理によりCMYK = (0, 0, 0, 255)に変換するため、どのような画素値でも構わない。
図5Cのラスタライズ処理を行えば、黒色属性をもつ画素は、ビットマップ画像の画素値(色値)を書き出す必要はなく(色値はなんでもよい)、一画素あたり属性情報の2ビットだけをRAM 1205に書き出すだけで済む。
[画像処理および画像出力処理]
図6Aは画像処理および画像出力処理を示すブロック図である。
画像処理H/W 1206は、画素ごとに、RAM 1205に格納されたビットマップ画像の色値502、および、属性情報の属性値503を入力し、その処理結果を画像処理H/W 1207に出力する。
図6Bは画像処理H/W 1206が実行する色変換処理および中間調処理を示すブロック図である。
色変換処理部(RGB→CMYK処理部)504は、色値502および属性値503を入力し、属性値503に応じ色変換用のLUTを選択的に切り替える。LUTによってRGBからCMYKに色変換された色値はディザ処理部505へ送られる。
LUTには、イメージ属性用のLUT 506、グラフィック属性用のLUT 507、テキスト用のLUT 508、および、黒色属性用のLUT 509がある。属性値503が黒色属性を示す場合、前述したように、ラスタライズ処理におけるビットマップ画像の書き出しは行わないので、その色値502は不定である。従って、黒色用の専用のLUT 509を用意して、入力色値に関わらず、必ず、CMYK = (0, 0, 0, 255)を出力するようにする。なお、LUTを用いずに、属性503が黒色属性を示す場合、色変換処理部504は、CMYK = (0, 0, 0, 255)を出力するように構成してもよい。
ディザ処理部505は、属性値503およびCMYK値を入力して、属性値503に応じてディザパターンを選択的に切り替える。ディザ処理されたCMYK画像データは画像出力H/W 1207へ送られる。
ディザパターンには、イメージ属性用のディザパターン512、グラフィック属性用のディザパターン513、テキスト用のディザパターン514、および、黒色属性用のディザパターン515がある。なお、通常、黒色画素は、ディザ処理後も黒色画素になるのが普通であるから、色変換用のLUTと違い、黒色属性用の特別なディザパターンは必要ないといえる。つまり、黒色属性の場合は他のディザパターンの何れでディザ処理しても、その結果が黒色になるならば、そのディザパターンを代用すればよい。また、ディザ処理後の黒色は、CMYKが各1ビットであればCMYK = (0, 0, 0, 1)で、2ビットであればCMYK = (0, 0, 0, 3)、4ビットであればCMYK = (0, 0, 0, 15)で表現される。
[ディスプレイリスト]
図7Aは描画オブジェクトを重ね合わせる論理描画処理(Raster Operation: ROP)を用いる描画方法を説明する図である。
一つのオブジェクトの描画を一つの塗り潰し情報で行うのは一般的ではない。図7Aに示すように、図形(例えば三角形)601、パターン602および色(例えば赤)603を指定して、「赤いパターンで塗り潰された三角形」604を描画する手順が利用される。これは図形601、パターン602、色603をすべてANDの関係で論理演算した結果に相当する。例えば、NOT処理した図形601、パターン602、色603をANDで論理演算すると「赤いパターンに囲まれた白い三角形」を描くことができる。なお、論理演算処理(ROP)をアルファブレンド演算に置き換えても、本発明を適用することができる。
図7Bはディスプレイリストに入れるべき情報を示す図で、描画位置(座標)1602、描画サイズ1601および1603、図6Aに示す領域内の塗り潰し情報1604に大別される。図7Bに示す描画位置1602、描画サイズ情報1601および1603はそれぞれ数値情報であるため一つひとつの情報は小さく、図7Cの左側に示すようにディスプレイリストにして管理する。一方、塗り潰し情報1604は、絵的な情報になり易く、一つひとつのサイズが大きくなるため、ディスプレイリストで管理することは困難である。そこで、利用する塗り潰し情報を指すポインタをディスプレイリストに登録し、塗り潰し情報そのものものは、図7Cの右側に示すように別途管理する。
図7Cは三つの描画すべきオブジェクトを含むディスプレイリストの一例を示している。ディスプレイリストが含む描画命令2601のオブジェクトの描画には塗り潰し情報2607〜2608を使用し、描画命令2602のオブジェクトの描画には塗り潰し情報2609、2610を使用し、描画命令2603のオブジェクトの描画には塗り潰し情報2611、2612を使用する。各オブジェクトが黒色で描画されるか否かは、使用する塗り潰し情報と、描画命令に指定された論理演算情報2604の組み合わせを調べればよい。
例えば、描画命令2601のオブジェクトの描画に指定された塗り潰し情報2608が赤色を示し、塗り潰し情報2606が1ビットのマスク情報、2607が1ビットのパターンで、論理演算情報2604がAND演算を示すならば、オブジェクトは赤色で描画される。つまり、描画命令2601のオブジェクトは黒色で描画されないと判断することができる。
一方、描画命令2602のオブジェクトの描画に指定された塗り潰し情報2609が黒色を示し、塗り潰し情報2610が1ビットのマスク情報で、論理演算情報がAND演算を示すならば、オブジェクトは黒色で描画される。つまり、描画命令2602のオブジェクトは黒色で描画されると判断することができる。
また、描画命令2603のオブジェクトの描画に指定された塗り潰し情報2611、2611が多色で構成される場合、黒色になる可能性はほとんどないので、論理演算情報を調べるまでもなく、黒色で描画されることはないと判断する。
また、論理演算が下地(背景)を参照する場合は描画色は予測不可能であるから、下地(背景)を参照する論理演算が指定されたオブジェクトは、黒色で描画されることはないと判断する。
また、図7Cに示すように、ディスプレイリストはオブジェクトの属性値を記述する領域2605を備える。実施例1における解析処理は、PDLデータを解析した際にテキスト属性、グラフィック属性、イメージ属性などを判定し、その判定結果をディスプレイリスト生成処理に伝えて、属性情報を属性値2605としてディスプレイリストに書き込む。CPU 1208は、後述する黒色のみで描画されるオブジェクト(以下「黒色オブジェクト」と呼ぶ)の判定処理により、黒色オブジェクトの描画命令の属性値2605を黒色属性に書き換える。
[黒色オブジェクトの判定]
図8はPDLデータを受信して記録紙に画像を印刷するまでの印刷処理の全体的な流れを示すフローチャートで、CPU 1208および上述したCPU 1208によって制御されるハードウェアが実行する処理である。
CPU 1208は、ホストコンピュータ200からPDLデータを受信すると、解析処理によってPDLデータを解析し(S701)、その解析結果に基づき、ディスプレイリスト生成処理によってディスプレイリストを生成する(S702)。
そして、受信した一頁分のPDLデータの解析およびディスプレイリストの生成を終了すると、CPU 1208は、ディスプレイリストを調べ、黒色オブジェクトを判定し、黒色オブジェクトの属性値を黒色属性に書き換え(S703)、その後、ディスプレイリストに従いラスタライズ処理を行って、ラスタライズ結果をRAM 1205に書き込む(S704)。その際、黒色オブジェクトは、図5Cで説明したように、ビットマップ画像を描画せずに、属性情報だけに黒色属性を示す属性値を書き込む。
CPU 1208によるラスタライズ処理が終了すると、画像処理H/W 1206は、RAM 1205からビットマップ画像と属性情報を読み出し、図6Bで説明したように、LUTおよびディザパターンを用いて色変換および擬似中間調処理を行う(S705)。次に、画像出力H/W 1207は、画像処理H/W 1206から出力されるCMYKデータを画像出力部1210に送り、画像を記録紙に印刷する(S706)。
図9は黒色オブジェクトの判定処理(S703)の詳細を示すフローチャートである。
まず、ディスプレイリストに含まれる一つの描画命令から論理演算情報を取得し(S801)、塗り潰し情報に関係なく黒色の塗り潰しを指定する論理演算か否かを判定する(S802)。そのような論理演算の場合は、当該描画命令の属性値を黒色属性に書き換える(S806)。
また、論理演算情報だけで黒色の塗り潰しが指定されない場合は、当該描画命令が指す全塗り潰し情報を取得し(S803)、多色の塗り潰し情報があるか否かを判定する(S804)。多色の塗り潰し情報がない場合は、論理演算結果が黒色になるか否かを予測し(S805)、論理演算結果が黒色の塗り潰しになる場合は、当該描画命令の属性値を黒色属性に書き換える(S806)。
また、多色の塗り潰し情報が一つでも存在する場合、あるいは、論理演算結果が黒色の塗り潰しにならない場合、当該描画命令の属性値は書き換えない。
次に、ディスプレイリストに含まれるすべての描画命令を調べたか否かを判定し(S807)、すべての描画命令を調べるまでステップS801からS807を繰り返す。
なお、ビットマップ画素のピクセルフォーマットがRGBではなく、CMYKやグレイスケールなどであっても、上記の処理を適用可能である。
このように、受信したPDLデータを解析してディスプレイリストを作成した後、ディスプレイリストに含まれる各描画命令を調べて、黒色オブジェクトを判定し、黒色オブジェクトと判定した場合は、当該描画命令の属性値を黒色属性に書き換える。そして、ディスプレイリストに基づくラスタライズ処理を行う場合に、黒色属性が指定されたオブジェクトのビットマップ画像は生成せずに、その属性情報のみに黒色属性を示す属性値を書き込む。そして、色変換において、黒色属性の画素は、ラスタライズ後の画素値(色値)に関係なく、直ちに所定の値CMYK = (0, 0, 0, 255)に変換する。従って、黒色属性のオブジェクトについて、ラスタライズ処理および色変換処理を高速化して、画像形成速度を向上することができる。
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
CPUが扱うデータのビット幅は一般的に8の倍数である。そのため、画素データを扱う場合、一画素のビット数を奇数にすると扱い難い。そのため、通常、属性情報の一画素あたりのビット数も2、4、8、…というように偶数単位で扱う。また、メモリへの読み書き量を減らしたい理由から、一画素あたりのビット数はなるべく小さい数を選択したい。
属性情報を一画素あたり2ビットにすれば、四種類の属性を指定可能であるから、図10Aに示すように、元々の属性がイメージ属性、グラフィック属性、テキスト属性の三種類の場合、一種類分の空きがあり、実施例1のように、黒色属性を追加することができる。
しかし、図10Bに示すように、上記の三属性に加えて、例えば細線属性を加えたい場合がある。これは、細線はディザ処理を行うと薄くなり消えてしまう場合がある。そこで、細線の色を予め濃い色に変換して、ディザ処理で薄くなったり、消えてしまうのを防ぐ画像処理を行うためである。ただし、細線属性が必要か否かはデータごとに異なり、例えばCADで作成された図面を印刷する場合は必要だが、一般の文書データは大概不要である。そこで、プリンタドライバのユーザインタフェイスによって、細線属性が必要か否かをユーザが指定する場合もある。
つまり、細線属性が指定されると四種類の属性が埋まって、空きがなくなり、黒色属性を設定することができない。
その場合、図10Bに示すように、属性情報を一画素あたり4ビットにして細線属性および黒色属性を設定するか、あるいは、頁内に存在しない属性領域(図10Bではイメージ属性の領域が存在しない)の属性を黒色属性に置き換える。
また、属性情報のビット数を増やす場合、黒色属性のオブジェクトが頁内に少ないと、属性情報のビット数が増えた分、メモリの読み書き量が増加する方が大きくなる可能性がある。そこで、ディスプレイリストを生成する際に黒色オブジェクトが描画面積を調べて(描画画素数をカウントして)、所定面積(画素数)以下の場合は黒色属性は使用しない、言い換えれば属性情報のビット数を増やさないようにする。
以下、本発明にかかる実施例3の画像処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
図11Aは下地(背景)1001に黒色文字「A」1002を描画し、NOT処理した下地(背景)に赤色の矩形1003をAND処理した描画結果を示す図である。描画結果として、赤色の文字「A」が得られる。
図11Bは黒色属性を使用しない描画処理、および、黒色属性を使用した描画処理において、それぞれ黒色文字「A」を描画した状態のビットマップ画像を示す図である。図11B(a)においては文字「A」が描画され、図11B(b)においては黒色属性を適用するため文字「A」は描画されない。
ここで、単純にビットマップ画像に赤色の矩形1003をAND処理すると、黒色属性を使用しない場合は、図11B(a)に示すようにビットマップ画像に文字「A」がラスタライズされているので、赤色の文字「A」が描画される。しかし、黒色属性を使用する場合は、図11B(b)に示すようにビットマップ画像に文字「A」がラスタライズされないので、何も描画されない。
図12は黒色属性を適用した場合の上記の問題を防ぐための処理を示す図で、CPU 1208が実行する処理である。
まず、ディスプレイリストから塗り潰し情報を取得し(S1101)、描画位置の属性情報を取得し(S1102)、描画位置の画素が黒色属性か否かを判定する(S1103)。黒色属性の場合は下地(背景)の色値をRGB=(0, 0, 0)にし(S1104)、黒色属性でなければ、ビットマップ画像の描画位置に対応する画素の色値を下地(背景)の色値にする(S1105)。
次に、論理描画を行い(S1106)、描画結果をビットマップ画像に書き込む(S1107)。続いて、ディスプレイリストから属性値を取得し(S1108)、属性情報に書き込む(S1109)。
このように、黒色属性をもつ画素の場合、その下地(背景)の色値をRGB=(0, 0, 0)にすることで、正常な描画結果を得ることができる。
描画処理はA4記録紙、600dpiの画像全面にオブジェクトを描画する場合、約30万画素程度の処理を行うことになる。従って、上記の判断を画素単位に行えば、描画処理が遅くなる。そこで、一般に、下地(背景)を参照する論理描画は頁内にそう多くは含まれないことから、下地(背景)を参照する論理描画が存在する領域には黒色属性を適用しない方法を採用する。
図13Aは下地(背景)を参照する論理描画が存在する領域に、黒色属性を適用しない処理を説明する図である。
まず、下地(背景)を参照する論理描画が指定されたオブジェクト1301が描画されるバンド1202を記憶する。図13Aに示すように、内部処理においてバンド1202を座標表現する場合は、最小のY座標値Yminと最大のY座標値Ymaxを記憶する方法が容易である。そして、下地(背景)を参照する論理描画が指定されたオブジェクトが複数あることを考慮して、図13Aの右側に示すようにY座標の最小値および最大値をリストにして保存する。
図13Bは黒色属性を適用するか否かを切り分ける処理を示すフローチャートである。
まず、ディスプレイリストから取得した属性値を判定して(S1201)、非黒色属性のオブジェクトには黒色属性を利用しないピクセル処理を適用する(S1202)。また、黒色属性のオブジェクトは、黒色属性を適用するバンドか否かを判定し(S1203)、そうであれば黒色属性を利用するピクセル処理を適用し(S1204)、そうでなければ黒色属性を利用しないピクセル処理を適用する(S1202)。
図13Cは黒色属性を適用しないピクセル処理(S1202)を示すフローチャートである。
ディスプレイリストから塗り潰し情報を取得し(S1301)、描画位置に相当するビットマップ画像の画素の色値を下地(背景)の色値にし(S1302)、論理描画を実行し(S1303)、論理描画結果をビットマップ画像に書き込む(S1304)。そして、ディスプレイリストから属性値を取得し(S1305)、属性情報に書き込む(S1306)。
このように、黒色属性を示す画素か否かを判定して、黒色属性の画素の場合に下地(背景)の画素の色値をRGB = (0, 0, 0)にする処理(図12に示すステップS1103、S1104)が削減され、処理の高速化が図れる。なお、図13Cに示す一つひとつピクセル処理で短縮される時間は僅かだが、処理回数が非常に多い(A4記録紙、600dpiの画像全面にオブジェクトを描画する場合、最大30万回)ため、描画処理時間の全体では大きな時間が短縮される。
図13Dは黒色属性を適用するピクセル処理(S1204)を示すフローチャートである。黒色属性を適用するピクセル処理は、黒色属性を示す属性値を属性情報に書き込む(S1311)だけである。このように、黒色属性を利用すれば、データの書き出し量が少なくなるだけでなく、ピクセル単位の処理も単純化し、処理の高速化が図れる。
以下、本発明にかかる実施例4の画像処理を説明する。なお、実施例4において、実施例1〜3と略同様の構成については、同一符号を付して、その詳細説明を省略する。
文書データなどは黒色の描画が多い。一方、プレゼンテーション用のデータは、全頁に同一の下地(背景)を描画する場合があるが、こういった画像を形成をする場合、黒色属性を定義するよりも、全頁に描画される下地(背景)に多用されている色の属性を定義した方が有効である。ただし、下地(背景)が一色で構成されているとは限らず、複数の色の属性を定義する必要がある。しかし、前述したように、属性情報の一画素あたりのビット数を無制限に増やすことはできない。そこで、処理を効率的に高速化する色の属性を定義する必要がある。
図14は処理を効率的に高速化する色の属性を定義する方法を説明する図である。
図14に示す描画例1401は、複数の領域がそれぞれ異なる色で塗り潰されている。CPU 1208は、ディスプレイリストの生成時に、各色を描画するであろう面積(画素数)をカウントして集計し、色と描画面積の関係を示す描画面積集計テーブル1402を作成する。黒色の場合は、グラフィック、テキスト、イメージのどの属性であっても、画像処理後の結果は変わらないと説明したが、黒色以外の色はグラフィック、テキスト、イメージの属性が異なると画像処理後の結果が変わる。そのため、黒色以外の色は、たとえ色値が同じであっても、グラフィック、テキスト、イメージの属性ごとに集計する必要がある。
CPU 1208は、一頁分のディスプレイリストの作成が終了すると、描画面積集計テーブル1402を参照して、描画面積が広いものから順に属性割当テーブル1403に登録する。属性割当テーブル1403に登録された属性と色の組み合わせに対応するオブジェクトは、上述した黒色属性と同様に、ビットマップ画像としては描画せず、属性情報に属性値を書き込だけである。
また、前述したように、属性情報の一画素あたりのビット数の増加によるデータの読み書き量の増加と、属性を定義することで減少するビットマップ画像の読み書き量の減少のバランスをとるために、面積順で下位に位置する属性は、たとえ描画面積が広い場合でも属性を定義しない。
以下、本発明にかかる実施例5の画像処理を説明する。なお、実施例5において、実施例1〜4と略同様の構成については、同一符号を付して、その詳細説明を省略する。
図4の説明において、ハードウェアアクセラレータがCPU 1208と並列に動作することで、高速な画像形成が可能になることを説明した。並列動作を実現するには、CPU 1208bとハードウェアアクセラレータが別の頁を処理する必要があり、処理内において、複数頁を蓄積(スプール)する機構が必須である。複数頁のスプールには多量のメモリが必要になる。
図15は実施例5の画像処理の構成例を示すブロック図である。
CPU 1208によるラスタライズ処理後、圧縮・伸長H/W 1210によって、RAM 1205に格納されたビットマップ画像と属性情報を圧縮してRAM 1205にスプールする。そして、画像処理H/W 1206の処理直前に、圧縮・伸長H/W 1210によって、スプールしたビットマップ画像および属性情報を伸長する。
ビットマップ画像は、RGB24ビット、A4記録紙、600dpiの画像だと約96Mバイトになる。一方、属性情報は2ビット、A4記録紙、600dpiの画像で約8Mバイトである。従って、ビットマップ画像をロスレス圧縮しても、充分な圧縮効果が得られない。そこで、ビットマップ画像はロッシー圧縮1501およびロッシー伸長1506し、属性情報はロスレス圧縮1502およびロスレス伸長1507する。
ただし、ロッシー圧縮した場合、画像劣化が発生する。代表的なロッシー圧縮であるJPEGでは、細かな模様や色の変化に富む部分の劣化は比較的少ないが、白地に黒い線や文字が描かれているようなシャープな輪郭を表す部分にモスキートノイズと呼ばれる劣化が発生する。さらに圧縮率を上げると、ブロックノイズと呼ばれる格子状の画像劣化が発生する。そこで、実施例5では、画像劣化が発生し易い部分は、属性情報に基づきロスレス圧縮することで、画像劣化を抑制する。
図16はJPEGを例に画像劣化が発生し易い画像部分を説明する図である。
JPEGでは、白地に黒い線や文字が描かれたシャープな輪郭を表現する画像部分に特に画像劣化が発生し易い。
図16(b)はロッシー圧縮前の画像エッジ部(図16(a)に示す領域1601)の画素値の変化を示している。エッジ周辺にはごみ画素の発生もなく、エッジはシャープである。JPEG圧縮するためにDCTおよび量子化による近似処理を行うが、図16(c)は、近似処理後の画像エッジ部の画素値の変化を示している。この時点で、エッジのシャープさが失われる。さらに、量子化による高周波成分の除去によって、図16(d)に示すように、余分な低周波部分が生じる。符号1602で示す部分は色の変化を誘発し、符号1603で示す部分はごみ画素を生成する。つまり、色の変化が少ない下地(背景)に、下地と異なる色の画素を所定面積で塗り潰すような描画を行う場合、ロッシー圧縮に起因する画像劣化が生じ易い。
とくに画像劣化が生じ易いオブジェクトは、白地に黒色で描画する機会が多い文字オブジェクトである。上述した黒色属性をオブジェクトに設定すると、黒色オブジェクトはビットマップ画像をレンダリングせず、属性情報のみに属性値を書き込む。従って、黒色オブジェクトはロッシー圧縮されることはなく、黒色オブジェクトにはロッシー圧縮による画像劣化は生じない。
また、黒色オブジェクトでなくても、下地と大きく異なる色の文字オブジェクトなどを描画すると、ロッシー圧縮による画像劣化が発生し易い。図17は、そのようなオブジェクトを抽出する方法を説明する図である。
CPU 1208は、図17に示す描画例1701のディスプレイリストの生成時に、描画面積、輝度Y、色差Cr、Cb、さらに下地の輝度との差分の絶対値|ΔY|、下地の色差との差分の絶対値|ΔCr|、|ΔCb|を示すテーブル1702を作成する。なお、図17に示すテーブル1702は下地が白色の場合に、緑色のテキスト、赤色および青色のグラフィックを描く場合を示している。ディスプレイリストの生成が終了すると、差分が大きいオブジェクトのエッジで画像劣化が発生し易いので、その属性と色の組み合わせを属性割当テーブル1703に登録する(図17は青色のグラフィックを登録した例を示している)。属性と色の組み合わせが属性に定義されたオブジェクトは、黒色属性と同様に、ビットマップ画像を描画せず、属性情報のみに属性値を書き込む。従って、そのオブジェクトはロッシー圧縮されることはなく、黒色オブジェクトと同様に、ロッシー圧縮による画像劣化は生じない。
なお、下地との差分を得るには下地の色を調べなければならない。下地の色を正確に認識するには、描画するすべてのオブジェクトの重なりを判断し、下地になる色を決定する。そのような処理を行えば処理時間がかかる。実際には、下地に何も描かれていない状態でオブジェクトを描画する機会が多いことも事実である。
実施例5では、下地がまったく存在しない場合は下地の色を白色とし、下地が存在する場合は下地に使われている色の平均値を下地の色とする。
図18は下地の色を決定する処理を示すフローチャートで、CPU 1208が実行する処理である。
CPU 1208は、ディスプレイリストの生成時、色(または、グラデーションを考慮してある同系色)ごとに、その描画面積と、総描画面積を積算し(S1801、S1802)、ディスプレイリストの生成が終了する(S1803)か、総描画面積が一頁分の面積を超える(S1804)まで積算を繰り返す。なお、描画面積の積算は描画画素数をカウントするなどで行えばよい。
次に、総描画面積が一頁分の面積(画素数)に対して所定値以上あるか否かを判定し(S1805)、ない場合は(頁に一様に下地を描画したとは考えられない)下地は白色とする(S1807)。また、所定値以上ある場合は、総描画面積に対して、描画面積が所定割合(N%)以上の色(または同系色)があるか否かを判定し(S1806)、N%以上の色(または同系色)があればその色(または同系色の平均値)を下地の色とする(S1808)。また、N%以上の色(または同系色)がなければ下地は白色とする(S1807)。
このような方法によれば、背景色を正確に認識することはできないが、描画処理の速度を低下せずに、ある程度の認識を行うことができる。
また、最初に描画するオブジェクトの色から下地の色を判定する方法もある。
以下、本発明にかかる実施例6の画像処理を説明する。なお、実施例6において、実施例1〜5と略同様の構成については、同一符号を付して、その詳細説明を省略する。
図19は実施例6の画像処理を説明する図である。
図19に示すように、CPU 1208は、ディスプレイリストの生成時に、オブジェクトの属性を判断し、画像(頁)内に黒色オブジェクトしかない場合は、ビットマップ画像の生成、保存を行わず、属性情報の生成および保存1901だけを行う。これにより、描画処理の高速化、および、描画結果の保存に必要なメモリサイズの削減を行う。勿論、当該頁のビットマップ画像は存在しないので圧縮ビットマップ画像1902をスプールする必要もなくRAM 1205のメモリ使用量を削減することができる。
[他の実施例]
なお、本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
また、本発明の目的は、前述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または記録媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
一般的な画像処理装置の構成例を示すブロック図、
ビットマップ画像と属性情報の生成をさらに詳細に説明する図、
ビットマップ画像と属性情報の生成をさらに詳細に説明する図、
ビットマップ画像と属性情報の生成をさらに詳細に説明する図、
レーザビームプリンタの構成例を説明する図、
プリンタを制御するプリンタ制御ユニット(プリンタコントローラ)の構成例を示すブロック図、
ラスタライズ処理を説明する図、
ラスタライズ処理を説明する図、
ラスタライズ処理を説明する図、
画像処理および画像出力処理を示すブロック図、
画像処理H/Wが実行する色変換処理および中間調処理を示すブロック図、
描画オブジェクトを重ね合わせる論理描画処理(Raster Operation: ROP)を用いる描画方法を説明する図、
ディスプレイリストに入れるべき情報を示す図、
三つの描画すべきオブジェクトを含むディスプレイリストの一例を示す図、
PDLデータを受信して記録紙に画像を印刷するまでの印刷処理の全体的な流れを示すフローチャート、
黒色オブジェクトの判定処理の詳細を示すフローチャート、
実施例2の処理を説明する図、
実施例2の処理を説明する図、
下地(背景)に黒色文字「A」を描画し、NOT処理した下地(背景)に赤色の矩形をAND処理した描画結果を示す図、
黒色属性を使用しない描画処理、および、黒色属性を使用した描画処理において、それぞれ黒色文字「A」を描画した状態のビットマップ画像を示す図、
実施例3における、黒色属性を適用した場合の問題を防ぐための処理を示す図、
下地(背景)を参照する論理描画が存在する領域に、黒色属性を適用しない処理を説明する図、
黒色属性を適用するか否かを切り分ける処理を示すフローチャート、
黒色属性を適用しないピクセル処理を示すフローチャート、
黒色属性を適用するピクセル処理を示すフローチャート、
実施例4において、処理を効率的に高速化する色の属性を定義する方法を説明する図、
実施例5の画像処理の構成例を示すブロック図、
JPEGを例に画像劣化が発生し易い画像部分を説明する図、
下地と大きく異なる色のオブジェクトを抽出する方法を説明する図、
下地の色を決定する処理を示すフローチャート、
実施例6の画像処理を説明する図である。