(57)【要約】【課題】デジタルカメラの高性能化に伴って画像データのサイズも大きくなる傾向にあるため、ＲＯＰ処理を含めてさらに描画処理を少なくし、高速化を行うことが望まれる。【解決手段】描画命令を描画論理演算指示および描画オブジェクトに変換する描画命令変換部１と、描画論理演算指示が論理演算処理を行わなくても処理可能な指示内容であるか否かを判定する描画論理演算指示判定部３と、この描画論理演算指示判定部３で論理演算処理を行わなくても処理可能な指示内容であると判定された場合に前記描画論理演算指示および描画オブジェクトを、描画論理演算を必要としない描画指示および描画オブジェクトに変換する描画オブジェクト変換部４と、この描画オブジェクト変換部４で変換された描画指示および描画オブジェクトを最適化する描画オブジェクト＆命令最適化部５とを備える。【選択図】　　　　図１
2004021886.tif 000002
【特許請求の範囲】
【請求項１】
画像を構成する画素間の論理演算処理の指示を含む描画命令を受け取って処理を行う画像処理装置であって、
前記描画命令を描画論理演算指示および描画オブジェクトに変換する描画命令変換手段と、
前記描画論理演算指示が論理演算処理を行わなくても処理可能な指示内容であるか否かを判定する描画論理演算指示判定手段と、
前記描画論理演算指示判定手段で前記描画論理演算指示が論理演算処理を行わなくても処理可能な指示内容であると判定された場合に前記描画論理演算指示および描画オブジェクトを、描画論理演算を必要としない描画指示および描画オブジェクトに変換する描画オブジェクト変換手段と、
前記描画オブジェクト変換手段で変換された描画指示および描画オブジェクトを、そのうちの特定の描画指示および描画オブジェクトを省略して最適化する描画指示最適化手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記描画論理演算指示判定手段による描画論理演算指示に従って背景画像データと前記描画オブジェクトとの描画論理演算処理を行う描画論理演算手段をさらに備える
ことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記描画オブジェクトは、前記描画論理演算手段による描画論理演算処理後の形状を定義するマスクパターンおよび塗りつぶしパターンを定義する背景パターンの少なくとも１つからなり、
前記描画指示最適化手段は、前記マスクパターンの形状と前記背景パターンの形状とを比較し、両者の形状が同一の場合、前記描画オブジェクト変換手段で変換された描画指示および描画オブジェクトから、前記マスクパターンを用いた描画指示および描画オブジェクトを省略する
ことを特徴とする請求項２記載の画像処理装置。
【請求項４】
画像を構成する画素間の論理演算処理の指示を含む描画命令を受け取って処理を行うに際して、
前記描画命令を描画オブジェクトおよび描画論理演算指示に変換し、
前記描画論理演算指示が論理演算処理を行わなくても処理可能な指示内容であるか否かを判定し、
その判定結果が前記描画論理演算指示が論理演算処理を行わなくても処理可能な指示内容である場合に前記描画論理演算指示および描画オブジェクトを、描画論理演算を必要としない描画指示および描画オブジェクトに変換し、
さらにこの変換した描画指示および描画オブジェクトを、そのうちの特定の描画指示および描画オブジェクトを省略して最適化する
ことを特徴とする画像処理方法。
【請求項５】
前記描画論理演算指示に従って背景画像データと前記描画オブジェクトとの描画論理演算処理を行う
ことを特徴とする請求項４記載の画像処理方法。
【請求項６】
前記描画オブジェクトは、前記描画論理演算処理後の形状を定義するマスクパターンおよび塗りつぶしパターンを定義する背景パターンの少なくとも１つからなり、
前記最適化の処理では、前記マスクパターンの形状と前記背景パターンの形状とを比較し、両者の形状が同一の場合、前記描画論理演算を必要としない描画指示および描画オブジェクトから、前記マスクパターンを用いた描画指示および描画オブジェクトを省略する
ことを特徴とする請求項５記載の画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば画像作成装置などから出力される描画命令を受け取って画像処理を行う画像処理装置および画像処理方法に関し、特に画像を構成する画素間の論理演算処理の指示を含む描画命令を受け取って画像処理を行う画像処理装置および画像処理方法に関するものである。
【０００２】
【従来の技術】
パーソナルコンピュータ等の画像作成装置などから出力される様々な描画命令を処理し、印刷装置で印刷可能な画素の並びで表現された描画データに展開する画像形成システムにおいては、描画命令を受け取ってから画像データに展開されるまでの間に描画命令に応じた様々な処理が行われる。
【０００３】
その一つとして、複数の画像が重なる位置に描かれる場合に、元の画像と、新たに書き込む画像との重ね合わせの方法の指示に従って、両方の画像を重ね合わせる処理がある。指示される重ね合わせの方法は、通常、論理和、論理積、排他的論理和などの論理演算の種類として指示される。このような画像間の論理演算は、一般にＲＯＰ（Ｒａｓｔｅｒ　ＯＰｅｒａｔｉｏｎ）として知られている。
【０００４】
ＲＯＰ処理は、一般に複雑で処理に時間がかかり、実行のためのメモリも多く必要とするものが多い。特に、１つの効果を表現するために、複数のＲＯＰ処理を組み合わせたコマンドを出力するようなアプリケーションプログラムも数多く存在する。このようなＲＯＰ処理を組み合わせた指示が、印刷装置によって画像が印刷されるまでの処理時間を増大させる要因となっていた。
【０００５】
また、ＲＯＰ処理を行うことによってＲＯＰ処理に伴う色変換処理により色再現上の不具合が発生する場合もある。このような不具合を回避するためにも、ＲＯＰ処理を少なくすることが望まれ、例えば特許第３００８９４３号公報に示される手法などによって解決が図られてきた。
【０００６】
【発明が解決しようとする課題】
しかし、例えば近年急激に普及しつつあるデジタルカメラで撮影したような画像データを単に貼り付けただけの文書を処理する場合にも、複数のＲＯＰ処理を組み合わせたコマンドを出力するようなアプリケーションプログラムも数多く存在する。さらに、デジタルカメラの高性能化に伴って画像データのサイズも大きくなる傾向にあるため、ＲＯＰ処理を含めてさらに描画処理を少なくし、高速化を行うことが望まれる。
【０００７】
本発明は、上記課題に鑑みてなされたものであり、その目的とするところは、高速かつ高画質の画像処理を可能とした画像処理装置および画像処理方法を提供することにある。
【０００８】
【課題を解決するための手段】
本発明による画像処理装置は、画像を構成する画素間の論理演算処理の指示を含む描画命令を受け取って処理を行う画像処理装置であって、前記描画命令を描画論理演算指示および描画オブジェクトに変換する描画命令変換手段と、この描画論理演算指示が論理演算処理を行わなくても処理可能な指示内容であるか否かを判定する描画論理演算指示判定手段と、この描画論理演算指示判定手段で前記描画論理演算指示が論理演算処理を行わなくても処理可能な指示内容であると判定された場合に前記描画論理演算指示および描画オブジェクトを、描画論理演算を必要としない描画指示および描画オブジェクトに変換する描画オブジェクト変換手段と、この描画オブジェクト変換手段で変換された描画指示および描画オブジェクトを、そのうちの特定の描画指示および描画オブジェクトを省略して最適化する描画指示最適化手段とを備える構成となっている。
【０００９】
また、本発明による画像処理方法は、画像を構成する画素間の論理演算処理の指示を含む描画命令を受け取って処理を行うに際して、前記描画命令を描画オブジェクトおよび描画論理演算指示に変換し、前記描画論理演算指示が論理演算処理を行わなくても処理可能な指示内容であるか否かを判定し、その判定結果が前記描画論理演算指示が論理演算処理を行わなくても処理可能な指示内容である場合に前記描画論理演算指示および描画オブジェクトを、描画論理演算を必要としない描画指示および描画オブジェクトに変換し、さらにこの変換した描画指示および描画オブジェクトを、そのうちの特定の描画指示および描画オブジェクトを省略して最適化する。
【００１０】
上記構成の画像処理装置または画像処理方法において、描画命令中の描画論理演算指示が論理演算処理を行わなくても処理可能な指示内容である１個あるいは連続した複数の描画論理演算指示および描画オブジェクトを、描画論理演算を必要としない指示および描画オブジェクトに変換し、さらに変換後の描画命令指示あるいは指示群あるいは描画オブジェクトを最適化することで、重複する必要のない描画論理演算と描画命令指示を行わなくて済む。これにより、必要最小限の描画命令指示あるいは指示群のみで実行できるので、論理演算処理に掛かる時間を省くことができる分だけ高速な画像処理が可能となる。さらに、論理演算処理を行わないことで、論理演算処理に伴う色変換処理の結果生じる画質上の不具合を回避することができ、結果として、高速な処理と高画質を両立した画像処理が実現できる。
【００１１】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００１２】
［実施形態］
図１は、本発明の一実施形態に係る画像処理装置の概略構成を示すブロック図である。図１から明らかなように、本実施形態に係る画像処理装置は、描画命令変換部１、描画オブジェクト記憶部２、描画論理演算指示判定部３、描画オブジェクト変換部４、描画オブジェクト＆命令最適化部５、背景画像データ格納部６および描画論理演算部７を有し、パーソナルコンピュータ等の画像作成装置などから出力される様々な描画命令、特に画像を構成する画素間の論理演算処理の指示を含む描画命令を受け取って画像処理を行う構成となっている。
【００１３】
描画命令変換部１は、画像を構成する画素間の論理演算処理の指示を含む描画命令を受け取って描画オブジェクトと描画論理演算指示に変換する。描画オブジェクトは、描画論理演算後の形状を定義するマスクパターンおよび描画オブジェクトの塗りつぶしパターンを定義する背景パターンの少なくとも１つから構成される。また、描画論理演算指示としては、従来より知られているＲＯＰ処理のいずれかが指定される。
【００１４】
描画オブジェクト記憶部２は、描画命令変換部１で変換した描画オブジェクトおよび描画論理演算指示を記憶する。なお、この描画オブジェクト記憶部２を配置しない構成を採ることも可能であるが、後述するように、描画論理演算指示判定部３において、連続する複数の描画論理演算指示について判定を行う際には、この描画オブジェクト記憶部２に複数の描画論理演算指示および対応する描画オブジェクトを記憶させておくと便利である。
【００１５】
描画論理演算指示判定部３は、描画論理演算指示を解析し、その描画論理演算指示あるいは連続した複数の描画論理演算指示が、論理演算処理を行わなくても処理可能な指示内容であるか否かを判定する。この判定は、例えば、描画論理演算指示が特定の描画論理演算指示である場合や、連続する複数の描画論理演算指示が特定の描画論理演算指示のパターンであることを条件とすることができる。また、この判定の際に、その描画論理演算指示によって指示されている論理演算処理の対象となる描画オブジェクトを参照して判定することもできる。
【００１６】
描画オブジェクト変換部４は、描画論理演算指示判定部３において論理演算処理を行わなくても処理可能な指示内容であると判定された１つ以上の論理演算指示、その論理演算指示に対応する描画オブジェクトについて、描画論理演算を必要としない指示および描画オブジェクトに変換する。描画オブジェクト＆命令最適化部５は、描画オブジェクト変換部４で変換された描画指示および描画オブジェクトについて最適化処理を行う。
【００１７】
ここで、描画オブジェクト＆命令最適化部５での最適化処理とは、描画オブジェクト変換部４で変換された描画指示および描画オブジェクトを、特定の描画指示および描画オブジェクトを省略することによって必要最小限の描画指示および描画オブジェクトに変換する処理である。また、特定の描画指示としては、例えば、後述するクリップ処理を実行するためのクリップ命令、あるいは色変換処理を実行するための色変換命令などの描画指示が挙げられる。
【００１８】
背景画像データ格納部６は、描画論理演算部７で用いられる背景画像データを格納するとともに、描画論理演算部７での演算処理によって得られる画像データを格納する。描画論理演算部７は、描画オブジェクト変換部４で論理演算処理を行わなくても処理可能な指示内容であると判定された以外の描画論理演算指示について、その描画論理演算指示に従って、描画オブジェクトおよび背景画像データ格納部６に格納されている背景画像データ間の論理演算処理を実行し、その演算結果を背景画像データ格納部６に格納する。
【００１９】
続いて、上記構成の本実施形態に係る画像処理装置の動作の概要について説明する。
【００２０】
描画命令変換部１に描画論理演算指示を含む描画命令が入力されると、描画命令変換部１は、入力された描画命令を描画オブジェクトと描画論理演算指示に変換し、描画オブジェクト記憶部２に格納する。すると、描画論理演算指示判定部３は、描画オブジェクト記憶部２に格納されている１つの描画論理演算指示あるいは連続する複数の描画論理演算指示が、描画論理演算処理を行わなくても描画できる指示内容であるか否かを判定する。
【００２１】
描画論理演算指示判定部３によって描画論理演算処理を行わなくても処理可能な指示内容であると判定された場合には、描画オブジェクト変換部４は、判定した描画論理演算指示および描画オブジェクトを、描画論理演算を必要としない指示および描画オブジェクトに変換する。さらに、描画オブジェクト＆命令最適化部５は、これらの描画指示および描画オブジェクトの最適化処理を行い、他の処理部にその後の処理を継続させる。この最適化処理については、後で具体例を挙げて詳細に説明する。
【００２２】
一方、描画論理演算指示判定部３によって描画論理演算処理が必要な指示内容であると判定された場合には、描画論理演算部７は、背景画像データ格納部６から背景画像データを読み出し、描画論理演算指示に従い、読み出した背景画像データと描画オブジェクトとの描画論理演算を行う。この論理演算によって得られた画像データは、背景画像データ格納部６に書き戻される。
【００２３】
上述したように、画像を構成する画素間の論理演算処理の指示を含む描画命令を受け取って画像処理を行うに際して、描画命令中の描画論理演算指示が論理演算処理を行わなくても処理可能な指示内容であるか否かを判定し、論理演算処理を行わなくても処理可能な指示内容である１個あるいは連続した複数の描画論理演算指示および描画オブジェクトを、描画論理演算を必要としない指示および描画オブジェクトに変換し、さらに変換後の描画命令指示あるいは指示群あるいは描画オブジェクトを最適化することにより、重複する必要のない描画論理演算と描画命令指示を行わなくて済むため、その分だけ描画処理の高速化を図ることができる。さらに、描画論理演算処理を行わないことで、当該論理演算処理に伴う色変換処理の結果生じる画質上の不具合、例えば色の意図しない変化などを回避することができるため、画質の向上を図ることも可能になる。
【００２４】
［適用例］
図２は、上記実施形態に係る画像処理装置が適用される画像形成システムの構成の一例を示すブロック図である。図２から明らかなように、本適用例に係る画像形成システムは、ホストコンピュータ１０と画像形成装置であるプリンタ２０とを有し、これらがインターフェース（図示せず）を介して伝送路３０によって接続され、ホストコンピュータ１０において取得あるいは生成した画像を、プリンタ２０において紙等の被記録媒体上に形成する構成となっている。
【００２５】
ホストコンピュータ１０は、アプリケーションプログラム１１、プリンタドライバ１２、オペレーティングシステム１３、ＣＰＵやメモリ等のハードウェア１４を内蔵している。ホストコンピュータ１０には、外部機器として、キーボードやマウスなどの入力装置４０、ＣＲＴ等の表示装置５０、ハードディスクやＣＤ−ＲＯＭなどの外部記憶装置６０等が接続されている。
【００２６】
これらのハードウェア１４や各種の外部機器（４０，５０，６０）、および、各種のソフトウェアは、オペレーティングシステム１３によって制御および管理されている。このオペレーティングシステム１３による制御および管理の下で、アプリケーションプログラム１１が動作する。アプリケーションプログラム１１は、文字や画像などを印刷する指示を行うことができる。ここでは、印刷する内容は、ページ記述言語などによって記述された描画情報として出力されるものとする。
【００２７】
プリンタドライバ１２は、プリンタ２０に付属して提供されるものであり、ホストコンピュータ１０にロードされて機能するプログラムである。通常、プリンタドライバ１２は、特定のプリンタ２０での使用が予想される様々なデータ形式にホストコンピュータ１０を対応させるために使用される。プリンタドライバ１２は、アプリケーションプログラム１１から描画情報を受け取ると、プリンタ２０に送信する前に、様々な処理ステップを実行する。例えば、アプリケーションプログラム１１から受け取った描画情報をプリンタ２０で解釈可能なコマンドおよび描画オブジェクトの列に変換して送信することができる。あるいは、描画情報のデータ形式のままプリンタ２０へ送信してもよい。
【００２８】
プリンタ２０では、ホストコンピュータ１１から伝送路３０を介して伝送されてくる描画情報あるいはコマンドと描画データの列を受信し、被記録媒体上に画像を形成する。そのために、ページメモリ２４、プリンタエンジン２５および制御ハードウェア２６などのハードウェアと、制御ハードウェア２６上で動作するインタープリタ部２１、イメージャ部２２およびレンダラ部２３などのソフトウェアとを有している。
【００２９】
インタープリタ部２１は、プリンタ２０が受信した描画情報やコマンドと描画データの列などを認識し、コマンドと引数に組み立ててコマンドを解釈する。そして、解釈したコマンドの内容に従って、イメージャ部２２を呼び出してグラフィックス描画、文字描画、イメージ描画等の処理を行う。イメージャ部２２は、インタープリタ部２１の指示に従って画像を描画する。
【００３０】
レンダラ部２３は、イメージャ部２２で描画された画像をラスタ化し、ページメモリ２４に記憶させる。このとき、例えばカラー印刷を行うのであれば、それぞれの色ごとに、例えばＣ（シアン）Ｍ（マゼンタ）Ｙ（イエロー）Ｋ（ブラック）の４プレーンにラスタ化し、ページメモリ２２に記憶させる。プリンタエンジン２５は、ページメモリ２４に格納された画像データに従って実際に被記録媒体上に画像を形成する。プリンタエンジン２５としては、例えばレーザ方式を始め、種々の記録方式を採用することができる。
【００３１】
このような画像形成システムにおいて、ホストコンピュータ１０に導入されているプリンタドライバ１２に対して、先述した実施形態に係る画像処理装置あるいは画像処理方法を適用することができる。この適用により、プリンタドライバ１２は、図１に示した画像処理装置の全部の処理または描画オブジェクト＆命令最適化部５までの処理を実行することができる。具体的には、アプリケーションプログラム１１から出力される描画情報をプリンタドライバ１２が参照し、そのうちの１つの描画論理演算指示および描画オブジェクトを、描画論理演算を行わないコマンドおよび描画オブジェクトに変換し、さらにコマンドおよび描画オブジェクトの最適化処理を行ってプリンタ２０に送信する。
【００３２】
この場合、図１に示す描画論理演算部７および背景画像データ格納部６については、ホストコンピュータ１０またはプリンタ２０のいずれに設けてもよい。なお、描画オブジェクト記憶部２を設ける場合には、例えばホストコンピュータ１０のハードウェア１４にあるＲＡＭや外部記憶装置６０の記憶領域の一部を用いて実現することができる。また、背景画像データ格納部６をホストコンピュータ１０側に設ける場合も同様である。
【００３３】
上記適用例では、先述した実施形態に係る画像処理装置あるいは画像処理方法をホストコンピュータ１０に導入されているプリンタドライバ１２に適用する場合を例に挙げて説明したが、プリンタ２０に適用することも可能である。この場合、当該画像処理装置あるいは画像処理方法としての機能を、制御ハードウェア２６上で動作する例えばインタープリタ部２１などのソフトウェアが持つことになり、プリンタドライバ１２は従来と同様の処理を行うことになる。
【００３４】
このように、先述した実施形態に係る画像処理装置あるいは画像処理方法をプリンタ２０に適用した場合には、ホストコンピュータ１０から送られてくる描画情報はプリンタ２０における処理として、描画情報の中の１つの描画論理演算指示あるいは連続した複数の描画論理演算指示が画素間の描画論理演算を必要としない場合、その描画論理演算指示および描画オブジェクトを、描画論理演算を行わないコマンドおよび描画オブジェクトに変換し、さらに描画オブジェクトと描画指示を最適化すればよい。これにより、描画論理演算処理を用いずに描画オブジェクトを高速に描画することができる。
【００３５】
上述したいずれの適用例の場合にも、先述した実施形態に係る画像処理装置あるいは画像処理方法による画像処理によって描画論理演算処理を減少させることができ、さらには描画オブジェクトと描画指示の最適化を行うことによって高速な画像形成を可能とすることができる。また、描画論理演算処理を行わないことにより、当該論理演算処理によって生じる画質の劣化、例えば色の意図しない変化などを回避することができる。
【００３６】
［第１具体例］
以下、具体例を用いながら本発明の一実施形態に係る画像処理装置あるいは画像処理方法についてさらに詳細に説明する。以下の具体例では、背景画像データ格納部６に格納されている任意のカラー画像（以下、デスティネーション画像Ｄと呼ぶ）と、そこに描画する描画オブジェクトであるビットマップ画像（以下、ソース画像Ｓと呼ぶ）、そして描画オブジェクトの塗りつぶしパターンを定義するパターン画像Ｐが仮定される。このうち、ソース画像Ｓについてはマスクパターン、パターン画像Ｐについては背景パターンと呼ぶこともある。
【００３７】
ここでは、図１に示す構成の画像処理装置を、プリンタ２０の内部においてインタープリタ部２１に組み込んだ場合を例に挙げて説明する。ユーザは、ホストコンピュータ１０のアプリケーションプログラム１１において、例えばグラフィカルユーザインタフェース（ＧＵＩ）を使用して任意に文字、グラフィックス、イメージ等の描画オブジェクトを画面上に配置していく。
【００３８】
これらの描画オブジェクトに対しては、重なりを持たせたり、半透明状態を指定するなど、種々の指定を行うことができる。例えば、アプリケーションプログラム１１上でイメージデータを貼り付けてその輪郭を任意の形状にする場合に、排他的論理和演算を用いることで実現できる。排他的論理和演算には、特許第３００８９４３号公報に示されているように、同一の位置に同一の色で２回描画すると、処理を行う前の画素を保存する性質がある。また、値が０である画像に対しての排他的論理和演算では、単純に上書き描画した場合と同様な結果となる。
【００３９】
この結果、例えば、図３（Ａ）に示すパターン画像Ｐに対して、図３（Ｂ）に示すように、値０の色によって描画した任意形状（本例では、楕円）のマスクパターン、即ちソース画像Ｓで排他的論理和をとることにより、図３（Ｃ）に示すように、楕円形状（マスクパターン）以外の部分では元のデスティネーション画像Ｄが現れ、楕円形状部分ではパターン画像Ｐが現れる。すなわち、排他的論理和の演算処理により、図３（Ｃ）に示す描画画像として、値０の色で書き込んだ楕円形状の部分だけパターン画像Ｐがクリップされた結果として出力されることになる。このような描画方法によれば、任意形状のパターン画像Ｐをイメージ描画することが可能となる。
【００４０】
この一連の処理を表す描画命令をプリンタドライバ１２がアプリケーションプログラム１１から受け取って、伝送路３０を介してプリンタ２０内部のインタープリタ部２１に送る場合、一般的には、ＰＤＬ（Ｐａｇｅ　Ｄｅｓｃｒｉｐｔｉｏｎ　Ｌａｎｇｕａｇｅ；ページ記述言語）と呼ばれる描画命令群により送られる。
【００４１】
図４は、ページ記述言語の一例の説明図である。特にパラメータ部分はＰＤＬにより固有であり、ここでは説明を簡単にするために必要最小限のものをもつものとしてある。本例では、ｓｅｔａｔｔｒｉｂｕｔｅ命令、ｄｒａｗｒｅｃｔ命令、ｓｅｔｃｏｌｏｒ命令、ｄｒａｗｅｌｌｉｐｓｅ命令、ｓｔａｒｔｃｌｉｐ命令、ｅｎｄｃｌｉｐ命令、ｄｒａｗｉｍａｇｅ命令について示している。
【００４２】
ｓｅｔａｔｔｒｉｂｕｔｅ命令は、以降に描画される図形の属性を設定する。ここでは、論理演算の種類（モード）を表している。ｓｅｔｃｏｌｏｒ命令は、以降に描画される図形の色を設定する。例えばＲＧＢ色空間での色値をＲ，Ｇ，Ｂの順番に表す。ｄｒａｗｒｅｃｔ命令は、矩形形状の図形を、現在の属性に従って塗りつぶして描画する。ｄｒａｗｅｌｌｉｐｓｅ命令は楕円形状の図形を、現在の属性に従って塗りつぶして描画する。ｄｒａｗｉｍａｇｅ命令は、イメージ画像を、現在の属性に従って描画する。
【００４３】
また、ｓｔａｒｔｃｌｉｐ命令、ｅｎｄｃｌｉｐ命令は、クリップ領域を作成するための命令であり、パラメータを必要としない。この２つの命令で囲まれたステートメント内部で発行された図形描画命令はクリップ領域へと変換される。ここで、クリップ処理とは、ある図形を任意の形に切り取る処理である。このクリップ処理については、例えば特開平６−２７４６４３号公報に示される手法などによって実現することができる。
【００４４】
図５は、第１具体例に係る描画命令群の一例の説明図である。図５（Ａ）は、図４で説明したように定義されるＰＤＬを用いて、図３に示したイメージ描画を記述する場合を示している。
【００４５】
これらの命令群は、図３（Ｂ）において描画した図形形状（この例では、楕円形状）が、最終的に残したいグラデーション図形の形状となる。すなわち、パターン画像（背景パターン）の図形を、図３（Ｂ）において描画した図形形状、即ちマスクパターンでクリップ処理した場合と等価である。これを利用し、ｓｔａｒｔｃｌｉｐ命令、ｅｎｄｃｌｉｐ命令を用いると、図５（Ａ）に示すＰＤＬについては、図５（Ｂ）に示すように書き換えることが可能となる。図５（Ｂ）に示す記述でははじめに、１〜３行目において図３（Ｂ）における楕円形状の描画部分をクリップ領域として設定する。その後に、４〜５行目においてパターン画像を上書き描画する。
【００４６】
このように、図５（Ａ）では、論理演算として排他的論理和を使用して図３に示すように描画したが、図５（Ｂ）では、クリップ処理を実行させるためのクリップ命令を用いることにより、全て、通常の上書き描画で表現できることがわかる。値が０の図形の描画を挟んで同じパターン画像を排他的論理和により描画する命令が並んでいる場合、クリップ命令を用いた描画命令列に変換することによって論理演算を行わない描画命令列に変換する。これにより、描画処理を高速化することが可能になる。また、論理演算を行わないことにより、当該論理演算に起因する画質の劣化を回避することができる。
【００４７】
さらに、この段階で論理演算を行わない描画命令列に変換された命令列がさらに最適化できないか否かを判定する。例えば、パターン画像Ｐの領域とクリップ命令で指定される領域とが同一である場合、まず、論理演算として排他的論理和を使用して図６（Ａ）に示すパターン画像Ｐを描画し、その後に図６（Ｂ）に示すように、値０の色によって描画したマスクパターン、即ちソース画像Ｓで上書きする。最後に、図６（Ａ）と同じパターン画像Ｐを再び排他的論理和を使用して描画し、結果として、図６（Ｃ）に示すイメージ描画を実現している。このような場合、描画結果は実は、パターン画像Ｐだけの描画に同等であることが分かる。
【００４８】
このため、描画オブジェクト＆命令最適化部５（図１参照）では、図７（Ｂ）に示す描画オブジェクトおよび描画命令を最適化する処理を行う。すなわち、マスクパターンを用いたクリップ命令群を省略して、図７（Ｃ）に示すような描画オブジェクトおよび描画命令列に変換する。このようなケースは、例えばアプリケーションプログラム上でユーザがデジタルカメラなどで作成した画像を単に貼り付けたときなどに多く見られ、事例としては数多い。これらの最適化処理により、描画処理をさらに高速化することが可能になる。
【００４９】
［第２具体例］
以下、第２具体例について説明する。描画オブジェクト変換部４による処理までは、上述した第１具体例の場合と同様である。例えば、図８（Ａ）のように、マスクパターンは１つであるが、パターン画像（背景パターン）が複数に分割されるような場合がある。
【００５０】
このような場合には、描画オブジェクト変換部４では、図８（Ｂ）のような描画命令列に変換する。さらに、描画オブジェクト＆命令最適化部５では、分割されたパターン画像を統合した領域をマスクパターン領域と比較し、マスクパターン領域と同じである場合には、図８（Ｃ）に示すように、分割されたパターン画像データを統合処理するように描画オブジェクトと描画命令列を最適化する。
【００５１】
また、ＰＤＬの仕様などにより、図９（Ａ）に示すように、パターン画像を描画する際には必ず、パターン画像の領域と等しい領域でクリップ処理をしてからパターン画像を描画するような場合は、図９（Ｃ）に示すようにクリップ領域を統合し、さらに省略できるかどうかを判定して最適化する。これらの最適化処理により、パターン画像データを統合することで、複数回のクリップ処理を減らすことができ、さらにパターン画像データに対する色変換処理が１回で済むため、描画処理の高速化が可能になる。
【００５２】
なお、描画オブジェクト＆命令最適化部５は、パターン画像（背景パターン）の領域とマスクパターンの領域が異なる場合でも、一定の条件が満たされると判断できれば、描画オブジェクトの統合、描画命令の最適化を行うことができることは言うまでもない。
【００５３】
［第３具体例］
次に、第３具体例について説明する。上述した第２具体例と類似して、図１０（Ａ）のように、パターン画像（背景パターン）が１つであるが、マスクパターンの領域が複数に分割されるような場合がある。
【００５４】
このような場合、描画オブジェクト変換部４では、図１０（Ｂ）のような描画命令列に変換する。しかし、描画オブジェクト＆命令最適化部５は、パターン画像領域と分割されたマスクパターン領域が同じ場合には、マスクパターン領域を統合して処理を行う。この例の場合は、パターン画像の領域とマスクパターンの領域が一致するために、さらにマスクパターンの領域のクリップ処理を省略している。勿論、パターン画像の領域とマスクパターンの領域が一致しない場合は、マスクパターンの統合を行ってクリップ処理を行う。マスクパターンを統合することで、複数回のクリップ処理が１回で済むため、描画処理の高速化が可能になる。
【００５５】
なお、上述した各具体例では、オペレーティングシステム１３を介したアプリケーションプログラム１１からの描画情報を、特定の論理演算コードを持った描画情報についてインタープリタ部２１の内部で解析を行い、画像データ間の論理演算を必要としないコマンドを生成してこれらを最適化した。しかしながら、このような解析とコマンドの変換最適化処理については、インタープリタ部２１の内部での処理に限定されるものではない。すなわち、プリンタドライバ１２の内部で上述したような同様な解析を行うことも可能であり、プリンタドライバ部１２において実行することにより、結果として、論理演算を必要としない内部処理に変換して最適化することも可能である。
【００５６】
次に、先述した実施形態に係る画像処理装置において、第１具体例に係る変換処理を実行する場合の処理方法について、図１１、図１２のフローチャートを用いて説明する。ここでは、紙面の都合上、一連の処理の流れを、図１１、図１２の２つのフローチャートに分けて示している。図１１、図１２の各フローチャートで示す処理では、内部状態として状態ａから状態ｄの状態遷移を行う。
【００５７】
状態ａは初期状態を表す。状態ｂは、描画命令を受け取っている状態、つまり図５（Ａ）の２行目までの命令とパラメータのセットを受け取っている状態を表す。また、この状態ｂで受け取る命令とパラメータのセットの数を変数ＣＯＵＮＴ１に記憶する。状態ｃは、図５（Ａ）に示す値が０の色の楕円形状を描画する描画命令を受け取っている状態を表す。また、この状態ｃで受け取る命令とパラメータのセットを変数ＣＯＵＮＴ２に記憶する。
【００５８】
状態ｄは、描画命令を受け取っている状態、つまり図５（Ａ）の６行目以降を受け取っている状態を表す。また、この状態ｄで受け取る命令とパラメータのセットを変数ＣＯＵＮＴ３に記憶する。さらに、これらＣＯＵＮＴ１〜ＣＯＵＮＴ３の各変数に対応した命令とパラメータは、それぞれバッファ１〜バッファ３へと格納されているものとする。
【００５９】
まず、処理開始直後に内部状態をａに初期化するとともに、ＣＯＵＮＴ１からＣＯＵＮＴ３までの各変数を０に初期化する（ステップＳ１１）。次に、ＰＤＬの読み込みを継続するか否かを判定する（ステップＳ１２）。ここでは、ＰＤＬが印刷命令を発行していたり、何らかの理由で処理継続を中断する場合の判定を行う。読み込みを継続する場合には、コマンドおよびパラメータのセットを１つ読み込む（ステップＳ１３）。
【００６０】
次に、読み込んだコマンドおよびパラメータがｓｅｔａｔｔｒｉｂｕｔｅ命令であるか否かを判定する（ステップＳ１４）。ｓｅｔａｔｔｒｉｂｕｔｅ命令である場合には、論理演算モードが排他的論理和を指定しているか否かを判定する（ステップＳ１５）。排他的論理和を指定している場合には、状態がａであるか否かを判定し（ステップＳ１６）、状態がａであれば、新たに排他的論理和の命令列が始まったものとして状態をｂに変更する（ステップＳ１７）。一方、状態がａでなければ、状態がｃであるか否かを判定し（ステップＳ１８）、状態がｃであれば、値が０の色の図形を描画した後の排他的論理和の命令列が始まったものとして状態をｄに変更する（ステップＳ１９）。状態がそれ以外の場合には、状態の変更を行わずにステップＳ２５へ進む。
【００６１】
ステップＳ１４において、ｓｅｔａｔｔｒｉｂｕｔｅ命令が排他的論理和ではないと判定した場合には、同じく上書きを指定しているか否かを判定する（ステップＳ２０）。上書きを指定している場合には、状態がｂで、色の値が０か否かを判定する（ステップＳ２１）。状態がｂで、色の値が０である場合には、排他的論理和の描画命令列の後にクリップすべき図形を描画している可能性がある。このため、状態をｃに変更し（ステップＳ２２）、しかる後ステップＳ２５に進む。
【００６２】
一方、状態がｂで、色の値が０でない場合には、状態がｃで、色の値が０か否かを判定する（ステップＳ２３）。状態がｃで、色の値が０の場合には、クリップすべき図形の描画が続いているものとして、状態を変更せずにステップＳ２５へ進む。これ以外の状態、あるいは色の値が０以外の場合には、クリップ命令への変換を行うことができないので、ステップＳ３９へ進んでそれまでのＰＤＬをそのまま出力する。また、ｓｅｔａｔｔｒｉｂｕｔｅ命令のパラメータが排他的論理和、あるいは上書き以外の論理演算がされている場合も、クリップ命令への変換の対象外であるので、ステップＳ３９へ進んでそれまでのＰＤＬ、即ちバッファ１〜３のデータをそのまま出力する。
【００６３】
ステップＳ１４において、読み込んだ命令がｓｅｔａｔｔｒｉｂｕｔｅ命令ではないと判定した場合には、図形形状の描画命令であるか否かを判定する（ステップＳ２４）。ｄｒａｗｒｅｃｔ命令やｄｒａｗｅｌｌｉｐｓｅ命令などのような図形形状の描画命令やｄｒａｗｉｍａｇｅ命令のようなイメージ画像の描画命令である場合には、命令をバッファ１〜３にそのまま格納すべく、ステップＳ２５へ進む。ｓｅｔａｔｔｒｉｂｕｔｅ命令でも、図形形状の描画命令でもイメージ画像の描画命令でもない命令が現れた場合には、クリップ命令への変換を行わず、ステップＳ３９へ進んでそれまでのＰＤＬをそのまま出力する。
【００６４】
ステップＳ２３で読み込んだ命令がｓｅｔａｔｔｒｉｂｕｔｅ命令であり、排他的論理和を指定している場合（ステップＳ１５）、あるいは上書きを指定するとともに色の値が０でかつ状態がｂ，ｃの場合（ステップＳ２２，Ｓ２３）、または図形形状の描画命令あるいはイメージ描画の描画命令である場合（ステップＳ２４）には、ステップＳ２５からステップＳ３３において、命令をバッファ１〜３に格納する。
【００６５】
すなわち、まず状態がｂであるか否かを判定する（ステップＳ２５）。状態がｂであれば、変数ＣＯＵＮＴ１を１増加させ（ステップＳ２６）、次いで命令をバッファ１に格納する（ステップＳ２７）。一方、状態がｂでなければ、状態がｃである否かを判定する（ステップＳ２８）。状態がｃであれば、変数ＣＯＵＮＴ２を１増加させ（ステップＳ２９）、次いで命令をバッファ２に格納する（ステップＳ３０）。そして、命令をバッファ１またはバッファ２に格納した後ステップＳ１２に戻り、読み込みの継続を判定した後、次の命令についての処理を進める。
【００６６】
また、状態がｃでなければさらに、状態がｄであるか否かを判定する（ステップＳ３１）。状態がｄであれば、変数ＣＯＵＮＴ３を１増加させ（ステップＳ３２）、次いで命令をバッファ３に格納する（ステップＳ３３）。そして、変数ＣＯＵＮＴ３の値と変数ＣＯＵＮＴ１の値を比較し（ステップＳ３６）、変数ＣＯＵＮＴ３の値が変数ＣＯＵＮＴ１の値よりも小さい、即ち値が０の色の図形の描画の前に存在していた排他的論理和の命令数よりも少ない場合には、ステップＳ１２に戻って次の命令の処理を行う。
【００６７】
ＣＯＵＮＴ３≧ＣＯＵＮＴ１の場合には、変数ＣＯＵＮＴ３の値が変数ＣＯＵＮＴ１の値と等しいか否かを判定し（ステップＳ３７）、ＣＯＵＮＴ３＝ＣＯＵＮＴ１であれば、クリップ命令による置き換えが可能な命令列を検出したものとして、実際にクリップ命令による置き換えが可能か否かを判定し、可能であれば置き換え処理、即ち最適化変換処理を行う（ステップＳ３８）。
【００６８】
また、ステップＳ３０で命令をバッファ２に格納した後、パターン画像とマスクパターンとが同一形状で同一領域であるか否かを判定し（ステップＳ３４）、同一形状で同一領域であれば、クリップ省略フラグをＯＮとしてクリップ処理を省略する（ステップＳ３５）。ステップＳ３８の処理後は、新たな置き換え可能な命令列を検出するためにステップＳ１１へと戻る。
【００６９】
なお、ステップＳ３７において、変数ＣＯＵＮＴ３の値が変数ＣＯＵＮＴ１の値よりも大きくなってしまったと判定したときには、クリップ命令への変換を行うことができないので、それまでのＰＤＬ、即ちバッファ１〜３のデータをそのまま出力する（ステップＳ３９）。その後は、ステップＳ１１に戻り、新たな置き換え可能な命令列を検出するために処理を繰り返す。
【００７０】
最後に、ステップＳ１２において、読み込むべき描画命令が無くなるなど、読み込みを継続しないと判定した場合には、それまでのＰＤＬ、即ちバッファ１〜３のデータをそのまま出力し（ステップＳ４０）、上述した一連の描画処理（画像処理）を終了する。
【００７１】
図１３は、ステップＳ３８での最適化変換処理、即ち実際にクリップ命令による置き換えが可能か否かを判定し、可能であれば置き換え処理を行うためのサブルーチンの流れを示すフローチャートである。
【００７２】
まず、バッファ１とバッファ３の内容を比較する（ステップＳ４１）。この場合、バッファ１およびバッファ３に格納されている命令の数は変数ＣＯＵＮＴ１あるいは変数ＣＯＵＮＴ３により示されている。そして、バッファ１の内容とバッファ３の内容が一致しているか否かを判定する（ステップＳ４２）。一致している場合には、同じパターン画像を排他的論理和で２回論理演算を行っていることを示している。また、図１１、図１２の処理において、これらの排他的論理和の命令列の間に、値が０の色による図形の描画が行われていることもわかっている。そのため、検出した命令列については、クリップ命令を用いて置き換えが可能であると判断することができる。
【００７３】
バッファ１とバッファ３の各内容が一致していればさらに、パターン画像領域とマスクパターン領域が一致しているか否かを判定する（ステップＳ４３）。一致していれば、クリップ処理が省略可能か否かを判定する（ステップＳ４４）。この判定には、ステップＳ３５でのクリップ省略フラグの結果をそのまま用いることもできる。しかし、ここでは、バッファ１およびバッファ２に格納されている内容を基に、パターン画像を統合することでクリップ処理の回数を減らせないか、あるいはマスクパターンを統合することでクリップ処理の回数を減らせないかをも考慮してクリップ処理を省略できるか否かを判断する。
【００７４】
パターン画像領域とマスクパターン領域が不一致の場合、またはクリップ処理が省略不可能の場合には、クリップ命令を用いた描画命令列に変換する（ステップＳ４６）。すなわち、クリップ処理を必要とする場合には、ｓｔａｒｔｃｌｉｐ命令を出力し、バッファ２に格納されている図形形状の描画命令（コマンドおよびパラメータ）を出力し、ｅｎｄｃｌｉｐ命令を出力する。さらに、バッファ１に格納されている全ての描画命令に対して論理演算コードを上書きに変更して出力する。その後、メインルーチン（図１１、図１２）の処理に復帰する。
【００７５】
一方、クリップ処理が省略可能、即ちクリップ処理を必要としない場合には、バッファ２の内容を省略し、バッファ１に格納されている全ての描画命令に対して論理演算コードを上書きに変更して出力し（ステップＳ４５）、しかる後メインルーチンの処理に復帰する。このようにして、論理演算を用いない最適化された描画命令列に変換することができる。
【００７６】
なお、ステップＳ４２において、バッファ１の内容とバッファ３の内容が一致しないと判定した場合には、同じパターン画像を２回排他的論理和によって演算しているとは言えないので、最適化変換処理を行わずに、蓄積されているすべてのＰＤＬ、即ちバッファ１〜３のデータをそのまま出力し（ステップＳ４７）、しかる後メインルーチンの処理に復帰する。
【００７７】
上述したように、所定ＲＯＰ命令を上書き命令に置き換える場合に、ＲＯＰ命令中の塗りつぶしパターンを定義するパターン画像（背景パターン）の形状と、描画論理演算後の形状を定義するマスクパターンの形状とを比較し、両者の形状が同一のときに、描画指示および描画オブジェクトを最適化する、即ち上書き命令のうちのマスクパターンを用いたクリップ命令群を省略した描画命令列に変換することにより、上書き命令をさらに簡略化、即ち処理のステップ数を減らすことができるため、高速な演算処理が可能になる。
【００７８】
例えば、代表的なオフィス系文書作成ソフトなどでのイメージ貼り付けなどでは、イメージ領域と貼付領域との形状が同じ場合が多く、このような場合に、上述した描画指示および描画オブジェクトの最適化処理が特に有用なものとなり、当該最適化処理によって描画論理演算に要する演算時間を大幅に短縮できる。この演算時間は処理のステップ数などによって決まる。したがって、演算時間をどの程度短縮できるかはステップ数によっても変わってくるが、最適化処理を行うことにより、行わない場合に比べて約３０％程度演算時間を速くできることが、本願発明者のシミュレーションによって確認されている。また、処理のステップ数が減ることで、演算処理に用いるメモリ容量の低減も可能になる。
【００７９】
なお、上記各具体例では、特に図２に示したような画像形成システムへの適用を前提として説明したが、本発明はこの適用例に限られるものではなく、画像を形成する装置を含む任意のシステム構成においても適用が可能である。
【００８０】
また、上記各具体例では、描画オブジェクト＆命令最適化部５での最適化処理として、描画オブジェクト変換部４で変換された描画指示および描画オブジェクトから省略される特定の描画指示が、マスクパターンを用いたクリップ命令の場合を例に挙げたが、これに限られるものではなく、特定の描画指示が色変換命令などの他の描画指示であっても、同様の作用効果を得ることができる。
【００８１】
さらに、上記各具体例では、パターン画像（背景パターン）の形状とマスクパターンの形状が同一の場合に無条件で最適化処理を行うとしたが、描画オブジェクト＆命令最適化部５において、描画指示および描画オブジェクトが特定の条件を満足するか否かを判断し、満足するときにのみ最適化処理を行うようにすることで、より的確なイメージ描画を実現することができる。換言すれば、特定の条件を満足しないとき、例えば前後の処理で最終的な描画結果に影響するようにクリップ処理が二重にされていて、クリップ処理を省略した場合に的確なイメージ描画が得られないと判断される場合などには最適化処理を行わないようにすれば良い。
【００８２】
【発明の効果】
以上の説明から明らかなように、本発明によれば、論理演算処理を含む描画命令について、指示された論理演算処理をそのまま実行する必要がない場合に、論理演算処理を含まない描画命令指示あるいは指示群に変換し、さらに必要最小限の描画命令指示あるいは指示群のみで実行することにより、論理演算処理に掛かる時間を省くことができるため高速な画像処理が可能となる。さらに、論理演算処理を行わないことにより、論理演算処理に伴う色変換処理の結果生じる画質上の不具合を回避することができるので、結果として、高速な処理と高画質を両立した画像処理が実現できるという効果がある。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る画像処理装置の概略構成を示すブロック図である。
【図２】本実施形態に係る画像処理装置が適用される画像形成システムの構成の一例を示すブロック図である。
【図３】マスキングパターン処理の一例の説明図である。
【図４】ページ記述言語の一例の説明図である。
【図５】第１具体例に係る描画命令群の一例の説明図である。
【図６】第１具体例のマスキングパターン処理の一例の説明図である。
【図７】第１具体例に係る描画命令群の最適化の説明図である。
【図８】第２具体例に係る描画命令群の一例の説明図である。
【図９】第２具体例に係る描画命令群の他の例の説明図である。
【図１０】第３具体例に係る描画命令群の一例の説明図である。
【図１１】第１具体例に係る変換処理を実行する場合の処理手順の一例を示すフローチャート（その１）である。
【図１２】第１具体例に係る変換処理を実行する場合の処理手順の一例を示すフローチャート（その２）である。
【図１３】最適化変換処理のサブルーチンの一例を示すフローチャートである。
【符号の説明】
１…描画命令変換部、２…描画オブジェクト記憶部、３…描画論理演算指示判定部、４…描画オブジェクト変換部、５…描画オブジェクト＆命令最適化部、６…背景画像データ格納部、７…描画論理演算部、１０…ホストコンピュータ、１１…アプリケーションプログラム、１２…プリンタドライバ、１３…オペレーティングシステム、１４…ハードウェア、２０…プリンタ、２１…インタープリタ部、２２…イメージャ部、２３…レンダラ部、２４…ページメモリ、２５…プリンタエンジン、２６…制御ハードウェア、３０…伝送路、４０…入力装置、５０…表示装置、６０…外部記憶装置
【図１】
2004021886.tif 000003
【図２】
2004021886.tif 000004
【図３】
2004021886.tif 000005
【図４】
2004021886.tif 000006
【図５】
2004021886.tif 000007
【図６】
2004021886.tif 000008
【図７】
2004021886.tif 000009
【図８】
2004021886.tif 000010
【図９】
2004021886.tif 000011
【図１０】
2004021886.tif 000012
【図１１】
2004021886.tif 000013
【図１２】
2004021886.tif 000014
【図１３】
2004021886.tif 000015