(57)【要約】      （修正有）【課題】      簡単な画像処理により，図形間の重なり部分を除外するアルゴリズムによる画像処理装置及び画像処理プログラムを提供する。【解決手段】  描画コマンドを有する印刷データから描画コマンドで形成すべき図形オブジェクトに対する中間コードを生成し，ビットマップ画像データを展開する画像処理装置において，描画コマンドから，互いに重なり合う複数の図形オブジェクトに対する中間コードを生成し，各図形オブジェクトの内側の画素には第１のデータ値を外側の画素には第２のデータ値を，外形バッファに展開する。この外形バッファの第１のデータ値を有する画素に対して，図形オブジェクトの色値を決定する描画関数にしたがってビットマップ画像データを生成し，展開することで、重なり部分のレンダリング結果を重ならない部分と同等にすることができる。【選択図】    図１３
2006272556.tif 000002
【特許請求の範囲】
【請求項１】
描画コマンドを有する印刷データから前記描画コマンドで形成すべき図形オブジェクトに対する中間コードを生成し，当該中間コードに基づいてビットマップ画像データを展開する画像処理装置において，
前記描画コマンドから，互いに重なり合う複数の図形オブジェクトに対する中間コードを生成する中間コード生成手段と，
前記中間コードに基づき，前記複数の図形オブジェクトに対して，各図形オブジェクトの内側の画素には第１のデータ値を外側の画素には第２のデータ値を，外形バッファに展開する外形バッファ展開手段と，
当該外形バッファの前記第１のデータ値を有する画素に対して，前記描画コマンドに含まれる図形オブジェクトの色値を決定する描画関数にしたがってビットマップ画像データを生成し，画像データバッファに展開する画像データバッファ展開手段とを有する画像処理装置。
【請求項２】
描画コマンドを有する印刷データから生成される中間コードであって，前記描画コマンドで形成すべき図形オブジェクトに対する中間コードに基づいてビットマップ画像データを展開する画像処理装置であって，
前記描画コマンドから，互いに重なり合う複数の図形オブジェクトに対する中間コードが生成されており，
前記中間コードに基づき，前記複数の図形オブジェクトに対して，各図形オブジェクトの内側の画素には第１のデータ値を外側の画素には第２のデータ値を，外形バッファに展開する外形バッファ展開手段と，
当該外形バッファの前記第１のデータ値を有する画素に対して，前記描画コマンドに含まれる図形オブジェクトの色値を決定する描画関数にしたがってビットマップ画像データを生成し，画像データバッファに展開する画像データバッファ展開手段とを有する画像処理装置。
【請求項３】
請求項１または２において，
前記描画コマンドが，複数の座標点と座標点間の補間図形と補間図形の線端部図形または補間図形の接合部図形とを有するストローク画像のコマンドを含み，当該ストローク画像コマンドは，当該ストローク画像の色値を決定する描画関数を有し，
前記中間コード生成手段は，前記補間図形と線端部図形または接合部図形からなる図形オブジェクトに対してそれぞれ中間コードを生成する画像処理装置。
【請求項４】
請求項１または２において，
前記外形バッファ展開手段は，前記外形バッファの全ての画素を前記第２のデータ値で初期化し，前記複数の図形オブジェクトに対して，その内側の画素には，既存値が前記第２のデータ値の時は当該第２のデータ値を第１のデータ値に変更し，既存値が前記第１のデータ値の時は当該第１のデータ値を維持する処理を，前記外形バッファに行う画像処理装置。
【請求項５】
請求項１または２において，
前記印刷データは，前記描画関数が既存の画素の画像データに依存するビットマップ画像データを生成する第１の描画コマンド，または前記描画関数が前記既存の画素の画像データに依存しないビットマップ画像データを生成する第２の描画コマンドを有し，
前記第１の描画コマンドに対しては，前記外形バッファ展開手段が前記外形バッファの展開を行い，前記画像データバッファ展開手段が，前記外形バッファを参照してビットマップ画像データを画像データバッファに展開し，
前記第２の描画コマンドに対しては，前記外形バッファ展開手段による前記外形バッファの展開を行うことなく，前記画像データバッファ展開手段が，前記外形バッファを参照することなく，前記ビットマップ画像データを画像データバッファに展開する画像処理装置。
【請求項６】
描画コマンドを有する印刷データから前記描画コマンドで形成すべき図形オブジェクトに対する中間コードを生成し，当該中間コードに基づいてビットマップ画像データを展開する画像処理プログラムにおいて，
前記描画コマンドから互いに重なり合う複数の図形オブジェクトに対する中間コードを生成する中間コード生成手順と，
前記中間コードに基づき，前記複数の図形オブジェクトに対して，各図形オブジェクトの内側の画素には第１のデータ値を外側の画素には第２のデータ値を，外形バッファに展開する外形バッファ展開手順と，
当該外形バッファの前記第１のデータ値を有する画素に対して，前記描画コマンドに含まれる図形オブジェクトの色値を決定する描画関数にしたがってビットマップ画像データを生成し，画像データバッファに展開する画像データバッファ展開手順とを，コンピュータに実行させる画像処理プログラム。
【請求項７】
請求項６において，
前記描画コマンドが，複数の座標点と座標点間の補間図形と補間図形の線端部図形または補間図形の接合部図形とを有するストローク画像のコマンドを含み，当該ストローク画像コマンドは，当該ストローク画像の色値を決定する描画関数を有し，
前記中間コード生成手順では，前記補間図形と線端部図形または接合部図形からなる図形オブジェクトに対してそれぞれ中間コードが生成される画像処理プログラム。
【請求項８】
請求項５において，
前記外形バッファ展開手順では，前記外形バッファの全ての画素を前記第２のデータ値で初期化し，前記複数の画像オブジェクトに対して，その内側の画素には，既存値が前記第２のデータ値の時は当該第２のデータ値を第１のデータ値に変更し，既存値が前記第１のデータ値の時は当該第１のデータ値を維持する処理を，前記外形バッファに行う画像処理プログラム。
【請求項９】
請求項５において，
前記印刷データは，前記描画関数が既存の画素の画像データに依存するビットマップ画像データを生成する第１の描画コマンドと，前記描画関数が前記既存の画素の画像データに依存しないビットマップ画像データを生成する第２の描画コマンドとを有し，
前記第１の描画コマンドに対しては，前記外形バッファ展開手順で前記外形バッファの展開を行い，前記画像データバッファ展開手順で，前記外形バッファに基づいてビットマップ画像データを前記画像データバッファに展開し，
前記第２の描画コマンドに対しては，前記外形バッファ展開手順による前記外形バッファの展開を行うことなく，前記画像データバッファ展開手順で，前記外形バッファを参照することなく，前記ビットマップ画像データを前記画像データバッファに展開する画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，画像処理装置及び画像処理プログラムに関し，特に，ストローク画像の画像データ生成に使用される画像処理装置及び画像処理プログラムに関する。
【背景技術】
【０００２】
プリンタなどの画像形成装置は，印刷データを画像処理する画像処理装置と，画像処理装置により生成された画像データに基づいて所望の画像を形成する印刷エンジンとを有する。画像処理装置は，ホストコンピュータからページ記述言語（ＰＤＬ）で記述された印刷データを入力し，当該印刷データをビットマップ画像データへの展開が容易な中間コードに変換する。そして，画像処理装置は，その中間コードからビットマップ画像データをバンドバッファ内に展開し，必要に応じて色変換や，圧縮などの処理を行い，二値化などの必要な処理をした画像データを画像再生信号として印刷エンジンに出力する。
【０００３】
ＰＤＬで記述された印刷データは，通常，１ページ毎に描画コマンドを有する。一方，ビットマップ画像データは，画素に対応したＲＧＢまたは白黒の多階調データであり，１つの印刷プレーン（印刷エンジンが１回の印刷処理で同時に印刷できる単位）または１ページのデータを展開するためには大容量のメモリが必要になる。そこで，１ページまたは１印刷プレーンを複数のバンド領域に分割し，ＰＤＬの印刷データの描画コマンドからバンド毎に中間コードを生成し，その中間コードからビットマップ画像データを展開している。これにより，印刷エンジンの動作速度に対応して，バンド領域毎に中間コードからビットマップ画像データを展開しながら，印刷処理を行うことができ，ビットマップ画像データを格納するバンドバッファのメモリ容量を小さくすることができる。
【０００４】
多くのＰＤＬにおいて，パス構築機能が任意のストローク画像の形状を定義するために用意されている。パスは，座標点と座標点間の補間方法（直線補間，二次曲線補間など）とにより構成される描画コマンドの一つであり，プリンタドライバは，ＰＤＬの文法にしたがってパスの描画コマンドを生成し，そのパス内部を所望の色で塗りつぶしたり，パスに沿って所望の太さの線を描いたりすることができる。たとえば，パスの描画コマンドは，複数の座標点と，その間の補間方法と，線の太さの情報を有すると共に，既存の画像データとの合成方法（既存ピクセルの色とパス図形の色との合成方法）を示す描画関数を有する。既存画像との合成方法には，ブレンディングや上書きなど複数の方法があり，それらは通常あらかじめＯＳが準備している描画関数名で特定される。また，パスの描画コマンドには，線端部の形状，線接合部の形状，線の色などの情報も含まれることがある。
【０００５】
上記の中間コードを生成してビットマップ画像データを展開する画像処理装置によれば，このようなパスによる描画コマンドに対して形成されるストローク画像は，ユーザが希望する画像とは異なる色で再現される場合がある。
【０００６】
図１は，ユーザが希望しない色で形成された出力画像例を示す図である。図１（Ａ）のストローク画像は，４点をそれぞれ直線で補間し，所望の線幅で単一の色で描画されるべきものである。この例では，２つの接合点形状が円形に設定され，両端の線端部形状は設定がなく，描画関数は既存画素の色とブレンドするように設定されている。しかし，描画コマンドでは既存画素の色が同じであれば同一の色に描画されるべきところ，図示される出力画像では，２つの接合点で他の色と異なる色で描画されている。これは，ユーザが希望する描画結果とは異なる。
【０００７】
この理由は以下のとおりである。上記のストローク画像の場合，ＰＤＬの描画コマンドから３つの矩形と２つの円形に対応する中間コードが生成される。そして，それぞれの中間コードをビットマップ画像データに展開するときに，各中間コードの図形について，既存画素の色とのブレンドした色のビットマップ画像データを生成して画像データバッファに展開（描画もしくはレンダリング）される。その結果，矩形の画像データを展開した後に，接合点の円形の画像データを展開するときに，レンダリング済みの矩形の色と円形の色とが描画コマンドの描画関数に基づきブレンドされ，矩形と円形とが重なる領域の色が重ならない領域とは異なってしまう。
【０００８】
図２は，３点を直線で補間するストローク画像と，それを構成する図形オブジェクトの関係を示す図である。このストローク画像では，図２（Ａ）に示されるとおり，座標点Ｐ１，Ｐ２，Ｐ３が直線補間されている。そして，図２（Ｂ）に示されるように，座標点間を補間する直線が所望の線幅にされて矩形ＲＥＣ１，ＲＥＣ２を構成し，線端部には円形ＣＩＲ１，ＣＩＲ３が形成され，接合点にも円形ＣＩＲ２が形成される。このストローク画像を構成する５つの図形オブジェクトＲＥＣ１，２，ＣＩＲ１，２，３は，互いに重なり合う領域１，２，３を有する。領域１，２は，矩形と線端部の円形との重なり領域，領域３は，２つの矩形と接合点の円形との重なり領域である。
【０００９】
このように，ストローク画像は，複数の要素図形オブジェクトに分解されて中間コードに変換されるので，それら中間コードを順次，ビットマップ画像データ（多階調データ）に展開すると，既存画素の色の影響を受ける描画関数の場合は，重なり合う領域で他の領域とは異なる色になってしまう。
【００１０】
図１（Ｂ）のストローク画像は，５点をそれぞれ直線で補間し，所望の線幅で単一色で描画され，５つの接合点形状が円形に設定され，既存画素の色とブレンドするように設定されている。この場合は，５つの接合点で長方形と円形とが重なり，また，５つの長方形も５箇所でそれぞれ重なっている。そのため，前述と同様の理由により，ＰＤＬの印刷データを５つの長方形と５つの円形に対する中間コードに変換し，その中間コードを順次画像データに展開すると，それらの図形が重なる部分は，他の部分と異なる色に形成される。さらに，重なる図形の数が異なるとそれらの色も異なってしまう。
【００１１】
図１のような出力図形の印刷を回避するために，ストローク画像のように複数の図形で互いに重なって構成される場合，それらの図形の重なり部分を除去してから，ビットマップ画像データに展開（レンダリング）することが提案されている。例えば，特許文献１や２に記載されている。特許文献１では，複数の図形の重なり部分と重なっていない部分とを所定の論理アルゴリズムにより検出し，重なり部分を分離して，重なり部分を複数回レンダリングしないようにする。特許文献２では，複雑なアルゴリズムにより複数の図形の外郭線をたどることで図形の重なり部分をなくした新たな外郭線を形成する。
【特許文献１】特開平９−２８１９５３号公報
【特許文献２】特開２００１−１１７７２７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上記の特許文献１，２は，いずれも複雑な論理アルゴリズムによる画像処理が前提であり，低コスト化が要請されるプリンタなどの画像形成装置の画像処理としては不適切である。
【００１３】
そこで，本発明の目的は，より簡単な画像処理により，図形間の重なり部分を除外するアルゴリズムによる画像処理装置及び画像処理プログラムを提供することにある。
【課題を解決するための手段】
【００１４】
上記の目的を達成するために，本発明の第１の側面によれば，描画コマンドを有する印刷データから前記描画コマンドで形成すべき図形オブジェクトに対する中間コードを生成し，当該中間コードに基づいてビットマップ画像データを展開する画像処理装置において，前記描画コマンドから，互いに重なり合う複数の図形オブジェクトに対する中間コードを生成する中間コード生成手段と，前記中間コードに基づき，前記複数の図形オブジェクトに対して，各図形オブジェクトの内側の画素には第１のデータ値を外側の画素には第２のデータ値を，外形バッファに展開する外形バッファ展開手段と，当該外形バッファの前記第１のデータ値を有する画素に対して，前記描画コマンドに含まれる図形オブジェクトの色値を決定する描画関数にしたがってビットマップ画像データを生成し，画像データバッファに展開する画像データバッファ展開手段とを有する。
【００１５】
上記第１の側面によれば，互いに重なり合う複数の図形オブジェクトに対して，外形バッファ内にいずれかの図形の内側に該当する画素に第１のデータ値を，全ての図形の外側に該当する画素に第２のデータ値を展開することで，複数の図形オブジェクト間の重なりを除外した形状データを簡単に生成することができる。したがって，外形バッファの図形内側画素についてのみ描画関数による色値のビットマップ画像データをビットマップ画像データバッファに展開することで，重なり部分のレンダリング結果を重ならない部分と同等にすることができる。
【００１６】
上記第１の側面において，好ましい態様によれば，前記描画コマンドが，複数の座標点と座標点間の補間図形と補間図形の線端部図形または補間図形の接合部図形とを有するストローク画像のコマンドを含み，当該ストローク画像コマンドは，当該ストローク画像の色値を決定する描画関数を有し，前記中間コード生成手段は，前記補間図形と線端部図形または接合部図形からなる図形オブジェクトに対してそれぞれ中間コードを生成する。つまり，ストローク画像コマンドは，複数の中間コードに変換され，それら中間コードの図形が互いに重なり合う時に，ビットマップ画像データの重複する展開により，異なる色で形成されることがある。しかし，本発明によれば，そのような場合に，外形バッファにより簡単にストローク画像の外形を求めることができ，重複する展開を回避することができる。
【００１７】
上記の第１の側面において，好ましい態様によれば，前記外形バッファ展開手段は，前記外形バッファの全ての画素を前記第２のデータ値で初期化し，前記複数の図形オブジェクトに対して，その内側の画素には，既存値が前記第２のデータ値の時は当該第２のデータ値を第１のデータ値に変更し，既存値が前記第１のデータ値の時は当該第１のデータ値を維持する処理を，前記外形バッファに行う。この態様によれば，論理和処理により外形バッファへの展開を行うことができる。
【００１８】
上記の第１の側面において，さらに好ましい態様によれば，前記印刷データは，前記描画関数が既存の画素の画像データに依存するビットマップ画像データを生成する第１の描画コマンド，または前記描画関数が前記既存の画素の画像データに依存しないビットマップ画像データを生成する第２の描画コマンドを有し，前記第１の描画コマンドに対しては，前記外形バッファ展開手段が前記外形バッファの展開を行い，前記画像データバッファ展開手段が，前記外形バッファを参照してビットマップ画像データを画像データバッファに展開し，前記第２の描画コマンドに対しては，前記外形バッファ展開手段による前記外形バッファの展開を行うことなく，前記画像データバッファ展開手段が，前記外形バッファを参照することなく，前記ビットマップ画像データを画像データバッファに展開する。この態様によれば，既存の画素の画像データに依存しない場合は，外形バッファへの展開をせずに，外形バッファを参照することなく，ビットマップ画像データを画像データバッファに展開するので，無駄な外形バッファへの展開を回避できる。
【００１９】
上記目的を達成するために，本発明の第２の側面によれば，描画コマンドを有する印刷データから前記描画コマンドで形成すべき図形オブジェクトに対する中間コードを生成し，当該中間コードに基づいてビットマップ画像データを展開する画像処理プログラムにおいて，前記描画コマンドから互いに重なり合う複数の図形オブジェクトに対する中間コードを生成する中間コード生成手順と，前記中間コードに基づき，前記複数の図形オブジェクトに対して，各図形オブジェクトの内側の画素には第１のデータ値を外側の画素には第２のデータ値を，外形バッファに展開する外形バッファ展開手順と，当該外形バッファの前記第１のデータ値を有する画素に対して，前記描画コマンドに含まれる図形オブジェクトの色値を決定する描画関数にしたがってビットマップ画像データを生成し，画像データバッファに展開する画像データバッファ展開手順とを，コンピュータに実行させる。
【発明を実施するための最良の形態】
【００２０】
以下，図面にしたがって本発明の実施の形態について説明する。但し，本発明の技術的範囲はこれらの実施の形態に限定されず，特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００２１】
図３は，本実施の形態における画像処理装置の概略構成図である。図３（Ａ）では，ホストコンピュータＨＯＳＴからページ記述言語で記述された印刷データＰＤＬが，画像形成装置の一例であるプリンタ１０のコントローラ１２に供給される。コントローラ１２は，印刷データＰＤＬを中間コードに変換し，中間コードからビットマップ画像データ（多値の階調データ）を画像データバッファに該当するバンドバッファＢ−ＢＵＦ内に展開し，展開されたビットマップ画像データから生成した画像再生信号１６を印刷エンジン２４に供給する。この場合，コントローラ１２が画像処理装置に対応する。
【００２２】
図３（Ｂ）では，ホストコンピュータＨＯＳＴ内のプリンタドライバＰ−ＤＲが，印刷データＰＤＬからバンド領域毎の中間コードＩＣを生成し，その中間コードＩＣをプリンタ１０のコントローラ１２に供給する。コントローラ１２は，供給された中間コードＩＣに基づいてビットマップ画像データをバンドバッファＢ−ＢＵＦに展開し，展開されたビットマップ画像データから生成した画像再生信号１６を印刷エンジン２４に供給する。この場合も，コントローラ１２が画像処理装置に対応する。
【００２３】
さらに，図３（Ｃ）では，ホストコンピュータＨＯＳＴ内のプリンタドライバＰ−ＤＲが，印刷データからバンド領域毎の中間コードを生成し，その中間コードにもとづいてビットマップ画像データをバンドバッファＢ−ＢＵＦに展開し，必要に応じて色変換，圧縮をして，圧縮されたビットマップ画像データＢＭをプリンタ１０内のコントローラ１２に出力する。コントローラ１２は，必要に応じて色変換，二値化処理を行い，画像再生信号１６を印刷エンジン２４に出力する。この場合は，プログラムであるプリンタドライバＰ−ＤＲが画像処理プログラムに対応する。
【００２４】
以上のように，本実施の形態の画像処理装置は，少なくとも中間コードからビットマップ画像データをバンドバッファ内に展開する部分に対応する。
【００２５】
図４は，本実施の形態におけるプリンタの構成図である。図４のプリンタ１０は，図３（Ａ）のプリンタ１０に対応する。プリンタ１０は，画像処理装置に対応するコントローラ１２と，印刷エンジン２４とで構成される。コントローラ１２は，ホストコンピュータからプリント制御言語の印刷データＰＤＬを受信するインターフェースＩＦと，印刷データＰＤＬをバンド領域毎の中間コードＩＣに変換する中央処理ユニットＣＰＵと，中間コードに基づいてビットマップ画像データを展開する展開ユニット１６と，ＲＧＢからＣＭＹＫの色変換を行う色変換ユニット１８と，ビットマップ画像データを圧縮する圧縮ユニット２０と，ビットマップ画像データを二値化する二値化ユニット２２と，二値化されたデータを画像再生信号であるパルス信号に変換するパルス変調ユニットＰＷＭとを有し，パルス変調ユニットにより生成される画像再生信号１６が印刷エンジン２４に供給される。さらに，コントローラ１２は，メモリユニット１４を有し，メモリユニット１４には，中間コードが格納される中間コードバッファＩＣ−ＢＵＦと，ビットマップ画像データが格納されるバンドバッファＢ−ＢＵＦとが確保される。
【００２６】
図４のプリンタ１０が，図３（Ｂ）のプリンタ１０に対応する場合は，コントローラ１２のインターフェースＩＦがホストコンピュータから中間コードＩＣを受信し，中間コードバッファＩＣ−ＢＵＦに格納する。そして，コントローラ１２は，展開ユニット１６により中間コードに基づいてバンドバッファＢ−ＢＵＦ内にビットマップ画像データを展開する。
【００２７】
図４のプリンタ１０が，図３（Ｃ）のプリンタ１０に対応する場合は，コントローラ１２は，展開ユニット１６，色変換ユニット１８，圧縮ユニット２０などは設けられず，受信したビットマップ画像データを二値化して，画像再生信号１６を印刷エンジンに出力するだけである。
【００２８】
図５は，上記画像形成装置の印刷手順のフローチャート図である。図５の印刷手順は，図３のいずれのタイプにも適用することができるが，一例として図３（Ａ）に適用した場合にもとづいて，印刷手順を説明する。
【００２９】
図６は，図２のストローク画像とバンド領域との関係を示す図である。この例では，１ページが７つのバンド領域ＢＮＤ１〜７に分割され，その全てのバンド領域内に図２のストローク画像が形成される。
【００３０】
また，図７は，コントローラ内のメモリユニットの構成図である。コントローラ１２は，図７に示すように，メモリユニット１４内にバンド領域に対応したポインタ列の領域ＰＬと，中間コードバッファＩＣ−ＢＵＦを確保し，ポインタ列領域ＰＬに初期値としてＮＵＬＬコードを書き込んでおく。
【００３１】
ホストコンピュータによりＰＤＬ形式の印刷データが生成され（Ｓ１０），それがプリンタのコントローラ１２に供給される。コントローラ１２は，印刷データをバンド領域毎に中間コードに変換する（Ｓ１２）。コントローラ１２の中央処理ユニットＣＰＵは，印刷データを解釈し，印刷ページ内のどこの領域にどのような文字，図形，イメージを印刷すべきかを検出し，バンド領域毎に印刷すべき文字，図形，イメージに対応する中間コードを生成する。そして，その中間コードを中間コードバッファＩＣ−ＢＵＦに書き込む。その時，図７に示すように，生成された中間コードのバンド領域に対応するポインタ列領域ＰＬ内に，中間コードバッファＩＣ−ＢＵＦ内のアドレスＡＤＤ１〜ＡＤＤ７が書き込まれる。
【００３２】
図６に示したように，ストローク画像が，バンド領域ＢＮＤ１〜ＢＮＤ７に存在するので，それらのバンドに対して中間コードが生成され，ポインタ列ＰＬのバンド領域ＢＮＤ１〜７に対応する領域にアドレスＡＤＤ１〜ＡＤＤ７が書き込まれる。したがって，このポインタ列ＰＬを参照することで，各バンド領域に中間コードが存在するか否かを識別することができると共に，形成すべき画像が存在するバンド領域の中間コードが格納されているバッファＩＣ−ＢＵＦ内のアドレスを取得することができる。
【００３３】
ＰＤＬ形式の印刷データは，通常１印刷ページ毎に区切られており，その印刷プレーン内の印刷データを解釈して中間コードに変換することで，１印刷ページ内の図形に対応する中間コードが全て中間コードバッファＩＣ−ＢＵＦに格納される。この中間コードは，ビットマップ画像データに比較して容量が小さいので，１ページ分を生成しても中間コードバッファＩＣ−ＢＵＦの容量はそれほど大きくない。
【００３４】
次に，コントローラ１２は，バンド単位で画像処理を行う。まず，中央処理ユニットＣＰＵがポインタ列ＰＬからバンド領域ＢＮＤ１の中間コードＩＣ−ＢＵＦを読み出し，展開ユニット１６に与えて，ＲＧＢのビットマップ画像データを生成，画像データバッファに対応するバンドバッファＢ−ＢＵＦ内に書き込む（Ｓ１４）。このＲＧＢのビットマップ画像データは，ＲＧＢの３つのプレーンについて，画素毎の多値階調データであり，例えば，それぞれ８ビット，２５６階調のデータである。
【００３５】
コントローラ１２は，色変換ユニット１８によりバンドバッファＢ−ＢＵＦ内のＲＧＢビットマップ画像データを色変換し，ＣＭＹＫのビットマップ画像データに変換し，再度バンドバッファＢ−ＢＵＦ内に書き込む（Ｓ１６）。このビットマップ画像データも同様に画素毎の多値階調データであり，ＣＭＹＫの４つのプレーンについてそれぞれ８ビット，２５６階調のデータである。
【００３６】
さらに，コントローラ１２は，圧縮ユニット２０によりバンドメモリ領域Ｂ−ＢＵＦ内のＣＭＹＫビットマップ画像データを圧縮処理し，同じバンドメモリ領域またはメモリユニット１４内の別の領域に格納する（Ｓ１６）。そして，コントローラ１２は，メモリユニット内の圧縮されたＣＭＹＫビットマップ画像データを解凍し，伸張し，二値化ユニット２２により二値化して，ＣＭＹＫの二値化ビットマップ画像データを画像再生データ２３としてパルス幅変調器ＰＷＭに出力する（Ｓ１８）。そして，画像再生信号１６が印刷エンジン２４に供給される（Ｓ２０）。
【００３７】
以上のバンド単位の画像処理は，例えば，印刷エンジンの動作に同期して行われることで，ビットマップ画像データの展開などの画像処理を印刷エンジンの動作中に行うことで，プリンタの処理時間を短縮することができる。１ページ分の中間コードが生成された後であるので，中間コードからのビットマップ画像データの展開などの画像処理は，高速に行うことができる。
【００３８】
以下，本実施の形態によるストローク画像に対する画像処理について説明する。図８は，図２，図６に示されたストローク画像の描画コマンド列の例である。それぞれ行番号０１〜０９，１１〜１９と，それに対応するコマンドと，その説明（//より右側の記述）が示される。印刷データＰＤＬ１は，パスの定義として，行０１〜０３の「ＭＯＶＥＴＯ（ｘ１，ｙ１）」「ＬＩＮＥＴＯ（ｘ２，ｙ２）」「ＬＩＮＥＴＯ（ｘ３，ｙ３）」で３点の座標点Ｐ１．Ｐ２，Ｐ３とその間の直線補間を定義し，行０４の「ＬＩＮＥＷＩＤＴＨ＝２０」で線幅を定義している。さらに，行０５の「ＬＩＮＥＣＡＰ＝ＲＯＵＮＤ」で線端部形状を円形に設定し，行０６の「ＬＩＮＥＪＯＩＮ＝ＲＯＵＮＤ」で線接合部形状を円形に設定している。そして，行０７の「ＣＯＬＯＲ＝ＢＬＡＣＫ」で線の色を黒に設定している。また，行０８の「ＲＯＰ＝ＭＡＳＴＥＲ」は，ストローク画像の色値を既存の画像データとどのように合成すべきかを示す描画関数である。この描画関数ＭＡＳＴＥＲＰＥＮは，既存の画像データＤとストローク画像の色値Ｐとの混色をその画素の多値画像データにする関数である。最後に，行０９の「ＳＴＲＯＫＥ」は，ここでストローク画像のコマンド列が終了し，このタイミングでストローク画像の描画を命令するコマンドである。
【００３９】
一方，印刷データＰＤＬ２は，上記印刷データＰＤＬ１とほとんど同じであるが，唯一，行０８の「ＲＯＰ＝ＣＯＰＹＰＥＮ」が異なる。この描画関数ＣＯＰＹＰＥＮは，既存の画像データＤに依存することなく，ストローク画像の色値Ｐで上書きする関数である。
【００４０】
上記の印刷データ中の行０８と行１８の描画関数は，ＯＳウインドウズのグラフィック・デバイス・インターフェースＧＤＩにおいて定義されているラスターオペレーションＲＯＰの論理演算式の一例に対応する。このラスターオペレーションの論理演算式は，描画しようとする画像の画像データを既存の画像データに対してどのように合成すべきかを示す描画関数である。
【００４１】
図９は，ラスターオペレーションの描画関数の一例を示す図である。ここには，１６種類の描画関数名とその描画関数とが示されている。各関数は，既存の画像データＤと，ストローク画像の色の画像データＰとを論理合成するものであり，描画関数の「ｎａ」はＮＡＮＤ，「ａ」はＡＮＤ，「ｎｏ」はＮＯＲ，「ｏ」はＯＲ，「ｎ」はＮＯＴ，「ｘｎ」はＥＮＯＲ，「ｘ」はＥＯＲの論理演算を意味する。１６種類の描画関数のうち，描画関数名ＢＬＡＣＫ，ＣＯＰＹＰＥＮ，ＮＯＴＣＯＰＹＰＥＮ，ＷＨＩＴＥは，既存の画像データＤに依存しないでその色値が決定される。それ以外の描画関数は，全て既存の画像データＤに依存してその色値が決定される。つまり，既存の画像データＤの影響を受ける色でレンダリングが行われる。
【００４２】
このように，ストローク画像に対しては共通のラスターオペレーションの論理演算式（描画関数）が指定され，その論理演算式にしたがって多値の画像データが決定される。
【００４３】
マッキントッシュのＯＳでは，上記のラスターオペレーションに代えて，アルファブレンディングにより多値の画像データが決定される。アルファブレンディングとは，既知の画像データＤに対し描画すべき色値Ｐを透過率α（α＝０〜１）に応じてブレンディングする描画方法であり，関数で表現すると，例えば，Ｄ＝αＤ＋（１−α）Ｐである。したがって，ストローク画像に対しては，描画コマンドで透過率αが設定される。透過率α＝０の場合は，ストローク画像の色データＰが上書きされて，既存の画像データＤに依存せず影響を受けないが，透過率α＞０の場合は，既存の画像データＤとストローク画像の色Ｐとがブレンドされるので，既存の画像データＤに依存して影響を受ける。
【００４４】
図１０は，本実施の形態におけるストローク画像の画像処理工程を示すフローチャート図である。図５の一般的な画像処理とは処理工程Ｓ１０，Ｓ１６，Ｓ１８，Ｓ２０が同じであり，処理工程Ｓ３０〜Ｓ３８が図５の処理工程Ｓ１２，Ｓ１４と異なる。以下，図３（Ａ）のプリンタ構成の場合を例にして本実施の形態の画像処理を説明する。
【００４５】
まず，ホストコンピュータＨＯＳＴ内のプリンタドライバがＰＤＬの印刷データを生成する（Ｓ１０）。この印刷データは，例えば図８に示したようにストローク画像を描画する描画コマンドを有し，各ストローク画像の描画コマンドには，色値を決定する描画関数（ラスターオペレーションの論理式またはアルファブレンディングのα値）が定義されている。この印刷データＰＤＬが，プリンタ１０のコントローラ１２のインターフェースＩＦから入力される。
【００４６】
次に，コントローラ１２の中央処理ユニットＣＰＵは，印刷データＰＤＬを解析し，バンド毎に中間コードを生成する。印刷データＰＤＬにストローク画像の描画コマンドが含まれている場合は，ストローク画像を構成する要素である図形オブジェクトに対応して中間コードが生成される（Ｓ３０）。
【００４７】
図１１は，中間コードの一例を示す図である。この例では，矩形ＲＥＣに対する中間コードである。図１１の図表は中間コード例を示し，Ｘ−Ｙ座標はバンド領域内の矩形ＲＥＣの位置情報を示す。矩形ＲＥＣの中間コードは，矩形オペコードとして「矩形ＩＤ」，矩形再現位置（ｘ座標）として「xrr」，矩形再現位置（ｙ座標）として「yrr」，矩形再現幅として「wr」，矩形再現高さとして「hrr」，そして，矩形の色として「P=FF」を有する。つまり，各バンド領域内のＸ，Ｙ座標内の矩形ＲＥＣが形成される位置が，これらの中間コードにより特定される。したがって，かかる中間コードが一旦形成されれば，高速にビットマップ画像データをバンドバッファ内に展開することが可能になる。
【００４８】
図１２は，図６のバンドＢＮＤ５における図形オブジェクトを示す図である。図６には，１ページを７つのバンド領域ＢＮＤ１〜７に分割した例を示した。ここで，バンドＢＮＤ５を例にすると，図１２に示されるように，バンド領域ＢＮＤ５内には，矩形ＲＥＣ１の一部ＲＥＣ１−１と，円形ＣＩＲ２の一部ＣＩＲ２−２と，矩形ＲＥＣ２の一部ＲＥＣ２―１とが存在する。したがって，バンドＢＮＤ５には，ストローク画像を構成する３つの図形要素が所属し，それに対応して３つの中間コードが生成される。その中間コードは，図１１の一例のように，バンド内の展開に必要な位置情報と色情報Ｐとを有し，さらに，ＰＤＬの印刷データの描画関数も含まれる。
【００４９】
図１０に戻り，ストローク画像の描画コマンドが，図８のＰＤＬ１のように描画関数が既存の画素の画像データに依存するビットマップ画像データを生成する場合は（Ｓ３２のＹＥＳ），中間コードに基づいて外形データを生成し，外形バッファＦ−ＢＵＦに展開する（Ｓ３６）。この外形バッファＦ−ＢＵＦは，図４で示したとおりコントローラ１２内のメモリユニット１４内に確保されている。
【００５０】
外形バッファＦ−ＢＵＦは，バンド領域の画素に対してそれぞれ１ビットのデータを格納するだけの容量を有する。そして，中間コードに基づき，図形オブジェクトの内側の画素には第１のデータ「１」が，外側の画素には第２のデータ「０」が生成され，外形バッファに格納される。この第１及び第２のデータは，外形データに対応し，互いに重なり合う複数の図形オブジェクトの外形を特定するデータである。複数の図形オブジェクトに対して，その内側画素には，既存の外形データが第２のデータ「０」であれば第１のデータ「１」に置き換え，既存の外形データが第１のデータ「１」であればその第１のデータ「１」を維持するように，外形バッファＦ−ＢＵＦに外形データを展開する（Ｓ３６）。すなわち，外形バッファＦ−ＢＵＦを外形データ「０」に初期化した後，複数の図形オブジェクトの内側画素に対して，データ「１」と外形バッファ内の既存の外形データとの論理和演算を行って，その演算結果を外形バッファに上書きする。
【００５１】
図１３は，外形バッファとバンドバッファの例を示す図である。バンドＢＮＤ５では，３つの図形オブジェクトＲＥＣ１−１，ＣＩＲ２−１，ＲＥＣ２−１が存在し，それぞれの図形オブジェクトについて，外形バッファＦ−ＢＵＦに外形データを格納すると，図１３に示されるように，外形バッファＦ−ＢＵＦに複数の図形オブジェクトの重なる領域と重ならない領域とを区別することのない図形形状が特定される。つまり，複数の図形オブジェクトの内側画素について外形バッファＦ−ＢＵＦに論理和データを書き込むという処理を行うだけで，複数の図形オブジェクトが重なり合って形成される単一の図形形状を特定し，重なり領域を容易に除去することができる。
【００５２】
そして，コントローラ１２は，この外形バッファＦ−ＢＵＦで特定された画素について，描画関数に基づいて多値の画像データ（ビットマップ画像データ）を生成し，ビットマップ画像データのバッファであるバンドバッファＢ−ＢＵＦ内に書き込む（Ｓ３８）。この場合，既に外形バッファＦ−ＢＵＦで重なり部分が除去されているので，複数の図形オブジェクトに対応する複数の中間コードに対して，バンドバッファへの展開処理を行っても，図１に示したような重なり領域に複数回の展開処理が行われないので，重なりのない領域と異なる色で画像形成されることが防止される。
【００５３】
一方で，図８のＰＤＬ２のように描画関数が既存の画素の画像データに依存しないビットマップ画像データを生成する場合は（Ｓ３２のＮＯ），重なり領域について複数回の展開処理を行っても，その領域の色が異なることはない。そこで，外形バッファへの展開を行うことなく，そして，外形バッファを参照することなく，各図形オブジェクトに対応する中間コードから多値の画像データを生成し，バンドバッファＢ−ＢＵＦに展開する（Ｓ３４）。この場合は，描画関数が既存の画像データの影響を受けないので，重なった領域を複数回レンダリングしても，その色が重ならない領域の色と異なることにはならない。
【００５４】
工程Ｓ３８，Ｓ３４により，処理対象のバンドの全ての中間コードについて，ビットマップ画像データがバンドバッファＢ−ＢＵＦに展開されたら，コントローラ１２は，そのバンドバッファに対して，色変換処理，圧縮処理をしてメモリユニット１４内に格納する。そして，その圧縮データを読み出し，伸張処理をし，二値化処理，ＰＷＭ変換して（Ｓ１８），画像再生信号１６を印刷エンジンに出力する（Ｓ２０）。
【００５５】
ストローク画像の描画コマンドに含まれる描画関数がアルファブレンディングの関数の場合，透過率αがα＝０の時は，既存の画像データの影響を受けないでストローク画像の色値を決定することができるので，コントローラ１２は，図１０の展開処理Ｓ３４によりバンドバッファ内にビットマップ画像データを展開する。一方，透過率αがα＞０の時は，既存の画像データに依存してストローク画像の色値を決定する必要がある。したがって，コントローラ１２は，図１０の外形バッファの展開処理Ｓ３６と，バンドバッファへの展開処理Ｓ３８とにより，バンドバッファ内にビットマップ画像データを展開する。
【００５６】
図１０には示していないが，図６のバンドＢＮＤ１，ＢＮＤ３などのように，バンド内にストローク画像の要素図形オブジェクトが１つしか存在しない場合も，外形バッファへの外形データの展開を行う必要はない。この場合は，重なり合う領域が存在しないからである。もちろん，既存画素の画像データの影響を受ける描画関数が含まれるか否かの判断処理（Ｓ３２）が，負担になる場合は，一律に，外形バッファへの展開処理Ｓ３６とバンドバッファへの展開処理Ｓ３８を行うようにしても良い。
【００５７】
図３（Ｂ）に示したプリンタの構成では，図１０の処理Ｓ１０，Ｓ３０がホストコンピュータ内にプリンタドライバＰ−ＤＲにより行われ，図１０の処理Ｓ３２，Ｓ３４，Ｓ３６，Ｓ３８と，Ｓ１６，Ｓ１８，Ｓ２０とがコントローラ１２により行われる。コントローラ１２は，メモリユニット１４内に外形バッファＦ−ＢＵＦを確保して，そこに外形データを展開することで，複数の図形オブジェクト間の重複領域を簡単に除去することができる。
【００５８】
図３（Ｃ）に示したプリンタの構成では，ホストコンピュータＨＯＳＴ内のプリンタドライバＰ−ＤＲが，印刷データから中間コードの生成，外形バッファへの展開，外形バッファの参照による画像バッファ（バンドバッファ）への展開を行う。そして，色変換されて圧縮された画像データがプリンタのコントローラ１２に供給される。
【００５９】
このように，いずれのプリンタ構成であっても，本実施の形態の画像処理を適用することができる。
【００６０】
以上説明したとおり，複数の要素図形で構成されるストローク画像の描画コマンドは，複数の中間コードに変換され，画像バッファであるバンドバッファに展開する時に，重なっている領域は複数回の展開処理が行われる。この複数回の展開処理により重なった領域は重なっていない領域と異なる色に処理されてしまう場合がある。本実施の形態によれば，中間コードから外形バッファに外形データを論理和展開することで，重なった領域を容易に削除することができる。したがって，この外形バッファを参照して，図形の内部の画素について１回だけ，描画関数により画像データを求めて画像バッファに展開することで，印刷データの描画コマンドに示されるとおり，ストローク画像を共通の色値でレンダリングすることができる。
【図面の簡単な説明】
【００６１】
【図１】ユーザが希望しない色で形成された出力画像例を示す図である。
【図２】３点を直線で補間するストローク画像と，それを構成する図形オブジェクトの関係を示す図である。
【図３】本実施の形態における画像処理装置の概略構成図である。
【図４】本実施の形態におけるプリンタの構成図である。
【図５】画像形成装置の印刷手順のフローチャート図である。
【図６】図２のストローク画像とバンド領域との関係を示す図である。
【図７】コントローラ内のメモリユニットの構成図である。
【図８】図２，図６に示されたストローク画像の描画コマンド列の例である。
【図９】ラスターオペレーションの描画関数の一例を示す図である。
【図１０】本実施の形態におけるストローク画像の画像処理工程を示すフローチャート図である。
【図１１】中間コードの一例を示す図である。
【図１２】図６のバンドＢＮＤ５における図形オブジェクトを示す図である。
【図１３】外形バッファとバンドバッファの例を示す図である。
【符号の説明】
【００６２】
Ｆ−ＢＵＦ：外形バッファ        Ｂ−ＢＵＦ：図形バッファ（バンドバッファ）
【図１】
2006272556.tif 000003
【図２】
2006272556.tif 000004
【図３】
2006272556.tif 000005
【図４】
2006272556.tif 000006
【図５】
2006272556.tif 000007
【図６】
2006272556.tif 000008
【図７】
2006272556.tif 000009
【図８】
2006272556.tif 000010
【図９】
2006272556.tif 000011
【図１０】
2006272556.tif 000012
【図１１】
2006272556.tif 000013
【図１２】
2006272556.tif 000014
【図１３】
2006272556.tif 000015