(57)【要約】【課題】  透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置において、透明度属性が不透明でかつ描画オブジェクトが存在しない無用なキャンバスにメモリと演算処理が消費されてしまい、ページ記述言語の高速化及びメモリの利用効率が実現できない問題を解決すること。【解決手段】  本発明の画像処理装置では、キャンバス毎の透明度属性を監視するキャンバスチェック部がキャンバスの透明度属性が不透明であり、かつ描画オブジェクトが存在しない場合には、該キャンバスを不用なキャンバスと判断して、アルファブレンド演算及び描画の対象から外すことにより、ページ記述言語からビットマップへの変換を高速化し、かつメモリの利用効率を高めた。【選択図】図８
2010086043.tif 000002
【特許請求の範囲】
【請求項１】
透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、
前記キャンバス上に描画オブジェクトが存在せず、かつ透明度属性が不透明のキャンバスを判定するキャンバスチェック部と、
前記キャンバスチェック部により前記描画オブジェクトが存在せず、かつ不透明と判断されたキャンバスを、前記ページ記述言語から画像への変換処理の対象から外す描画データ変換部とを有する
ことを特徴とする画像処理装置。
【請求項２】
請求項１の画像処理装置であって、
前記描画データ変換部は、前記キャンバスチェック部によって、前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスについて、透明度属性の合成であるアルファブレンド演算のために必要なメモリ容量を確保しない
ことを特徴とする画像処理装置。
【請求項３】
請求項１又は２の画像処理装置であって、
前記ページ記述言語中に前記キャンバスが入れ子構造に記述された場合に、前記ページ記述言語を前記キャンバスの入れ子構造を保ったまま中間言語に変換する際に、前記キャンバスチェック部によって、前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスを前記中間言語への変換の際に取り除く中間言語変換部を有する
ことを特徴とする画像処理装置。
【請求項４】
請求項１又は２の画像処理装置であって、
前記ページ記述言語中に前記キャンバスが入れ子構造に記述された場合に、前記ページ記述言語を前記キャンバスの入れ子構造を保ったまま中間言語に変換する中間言語変換部と、
前記中間言語変換部により変換された中間言語をビットマップ変換する際に、前記キャンバスチェック部により前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスをビットマップ変換の対象としない描画データ処理部とを有する
ことを特徴とする画像処理装置。
【請求項５】
請求項１から４のいずれかの画像処理装置であって、
前記ページ記述言語がＸＭＬ（Extended Markup Language）拡張形式により記述されたものである
ことを特徴とする画像処理装置。
【請求項６】
透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、
前記キャンバス上に描画オブジェクトが存在せず、かつ透明度属性が不透明なキャンバスを判定し、
前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスを前記ページ記述言語から画像への変換処理の対象から外す
ことを特徴とする画像処理方法。
【請求項７】
コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、
前記キャンバス上に描画オブジェクトが存在せず、かつ透明度属性が不透明なキャンバスを判定するキャンバスチェック機能と、
前記キャンバスチェック機能によって、前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスを前記ページ記述言語から画像への変換処理の対象から外す描画データ処理機能とを
コンピュータに実現させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
透明度属性を有する描画オブジェクトと、該描画オブジェクトを描画する土台であり透明度属性を有するキャンバスとを表記可能であるページ記述言語をビットマップ変換する際に、該ビットマップ変換処理を高速に処理可能とし、かつメモリの利用効率を高める技術に関するものである。
【背景技術】
【０００２】
XPS等のXML拡張形式で記述されたページ記述言語においては、透明度属性を有した描画オブジェクト（パスやフォントやイメージ等）及び前記描画オブジェクトの描画の土台となる透明度属性を有したキャンバスが複数層重なって存在させることが可能である。しかし、前記キャンバスによっては、透明度属性が不透明か又は完全に透明であり、かつ、描画オブジェクトが全く存在しないキャンバスがページ記述言語中に存在してしまう場合もあり、このようなキャンバスによって、無用な演算処理やメモリの消費が行われて、ページ記述言語の画像への変換処理を低速化させる原因となっていた。
【０００３】
従来技術として、アルファブレンド演算処理の前にデバイスの色域に圧縮するか、デバイスの色域に圧縮してからアルファブレンド処理を行うかによって、レンダリング結果が異なるため、カラーマッチング手段によりどちらが適正化を判断して、より適切な方法を選択する方法があった（特許文献１参照）。
【０００４】
しかし、この方法でも前記した無用なキャンバスが存在する場合に、該キャンバスにより消費されてしまうメモリと処理をなくして効率化を実現することはできなかった。
【特許文献１】特開２００６−３４５１９７号公報
【非特許文献１】XML Paper Specification, XPS Specification and Reference Guide Version 1.0
【発明の開示】
【発明が解決しようとする課題】
【０００５】
解決しようとする問題点は、ページ記述言語を中間言語に変換する画像処理を行う画像処理装置、画像処理方法及び画像処理プログラムにおいて、透明度属性が不透明でかつ描画オブジェクトが存在しない無用なキャンバスにメモリと演算処理が消費されてしまい、ページ記述言語の高速化及びメモリの利用効率が実現できなかった点である。
【課題を解決するための手段】
【０００６】
請求項１記載の本発明の画像処理装置は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、前記キャンバス上に描画オブジェクトが存在せず、かつ透明度属性が不透明のキャンバスを判定するキャンバスチェック部と、前記キャンバスチェック部により前記描画オブジェクトが存在せず、かつ不透明と判断されたキャンバスを、前記ページ記述言語から画像への変換処理の対象から外す描画データ変換部とを有することを最も主要な特徴とする。ここで、キャンバスとは、ＸＭＬ拡張形式のページ記述言語に記載される描画オブジェクト（パスやフォントやイメージ）を描画する土台となるオブジェクトのことで、透明度を示す透明度値、さらに透明度分布を表す透明度マスク等の透明度属性を有する。また、不透明とはキャンバスの透明度が１．０であることを言う。
【０００７】
請求項２記載の本発明の画像処理装置は、請求項１の画像処理装置であって、前記描画データ変換部は、前記キャンバスチェック部によって、前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスについて、透明度属性の合成であるアルファブレンド演算のために必要なメモリ容量を確保しないことを主要な特徴とする。
【０００８】
請求項３記載の本発明の画像処理装置は、請求項１又は２の画像処理装置であって、前記ページ記述言語中に前記キャンバスが入れ子構造に記述された場合に、前記ページ記述言語を前記キャンバスの入れ子構造を保ったまま中間言語に変換する際に、前記キャンバスチェック部によって、前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスを前記中間言語への変換の際に取り除く中間言語変換部を有することを主要な特徴とする。
【０００９】
請求項４記載の本発明の画像処理装置は、請求項１又は２の画像処理装置であって、前記ページ記述言語中に前記キャンバスが入れ子構造に記述された場合に、前記ページ記述言語を前記キャンバスの入れ子構造を保ったまま中間言語に変換する中間言語変換部と、前記中間言語変換部により変換された中間言語をビットマップ変換する際に、前記キャンバスチェック部により前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスをビットマップ変換の対象としない描画データ処理部とを有することを主要な特徴とする。
【００１０】
請求項５記載の本発明の画像処理装置は、前記ページ記述言語がＸＭＬ（Extended Markup Language）拡張形式により記述されたものであることを特徴とする。
【００１１】
請求項６記載の本発明の画像処理方法は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、前記キャンバス上に描画オブジェクトが存在せず、かつ透明度属性が不透明なキャンバスを判定し、前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスを前記ページ記述言語から画像への変換処理の対象から外すことを最も主要な特徴とする。
【００１２】
請求項７記載の本発明の画像処理プログラムは、コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、前記キャンバス上に描画オブジェクトが存在せず、かつ透明度属性が不透明なキャンバスを判定するキャンバスチェック機能と、前記キャンバスチェック機能によって、前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスを前記ページ記述言語から画像への変換処理の対象から外す描画データ処理機能とをコンピュータに実現させることを最も主要な特徴とする。
【発明の効果】
【００１３】
請求項１記載の本発明の画像処理装置は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、前記キャンバス上に描画オブジェクトが存在せず、かつ透明度属性が不透明のキャンバスを判定するキャンバスチェック部と、前記キャンバスチェック部により前記描画オブジェクトが存在せず、かつ不透明と判断されたキャンバスを、前記ページ記述言語から画像への変換処理の対象から外す描画データ変換部とを有することを最も主要な特徴とするため、ページ記述言語内でキャンバスとしての形は保っているが該キャンバス上に描画オブジェクトをもたず、透明度属性が不透明なキャンバスを画像処理対象から外すことにより演算処理の短縮化とメモリの利用効率を高めて画像変換処理が可能となった。
【００１４】
請求項２記載の本発明の画像処理装置は、請求項１の画像処理装置であって、前記描画データ変換部は、前記キャンバスチェック部によって、前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスについて、透明度属性の合成であるアルファブレンド演算のために必要なメモリ容量を確保しないことを主要な特徴とするため、メモリの利用効率がより高まった。
【００１５】
請求項３記載の本発明の画像処理装置は、請求項１又は２の画像処理装置であって、前記ページ記述言語中に前記キャンバスが入れ子構造に記述された場合に、前記ページ記述言語を前記キャンバスの入れ子構造を保ったまま中間言語に変換する際に、前記キャンバスチェック部によって、前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスを前記中間言語への変換の際に取り除く中間言語変換部を有することを主要な特徴とするため、ページ記述言語を中間言語に変換する段階で、前記不要とされるキャンバスの取り除きを行い、演算処理の短縮化とメモリの利用効率を高めて画像変換処理が可能となった。
【００１６】
請求項４記載の本発明の画像処理装置は、請求項１又は２の画像処理装置であって、前記ページ記述言語中に前記キャンバスが入れ子構造に記述された場合に、前記ページ記述言語を前記キャンバスの入れ子構造を保ったまま中間言語に変換する中間言語変換部と、前記中間言語変換部により変換された中間言語をビットマップ変換する際に、前記キャンバスチェック部により前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスをビットマップ変換の対象としない描画データ処理部とを有することを主要な特徴とするため、ビットマップ変換時に不用なキャンバスを取り除いてからビットマップ変換を行うため、演算処理の短縮化とメモリの利用効率を高めて画像変換処理が可能となった。
【００１７】
請求項５記載の本発明の画像処理装置は、前記ページ記述言語がＸＭＬ（Extended Markup Language）拡張形式により記述されたものであることを特徴とするため、ＸＰＳ（XML Paper Specification）により記載されたページ記述言語中の不用なキャンバスを取り除くことが可能となった。
【００１８】
請求項６記載の本発明の画像処理方法は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、前記キャンバス上に描画オブジェクトが存在せず、かつ透明度属性が不透明なキャンバスを判定し、前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスを前記ページ記述言語から画像への変換処理の対象から外すことを最も主要な特徴とするため、ページ記述言語内でキャンバスとしての形は保っているが該キャンバス上に描画オブジェクトをもたず、透明度属性が不透明なキャンバスを画像処理対象から外すことにより演算処理の短縮化とメモリの利用効率を高めて画像変換処理が可能となった。
【００１９】
請求項７記載の本発明の画像処理プログラムは、コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、前記キャンバス上に描画オブジェクトが存在せず、かつ透明度属性が不透明なキャンバスを判定するキャンバスチェック機能と、前記キャンバスチェック機能によって、前記描画オブジェクトが存在せず、かつ透明度属性が不透明と判断されたキャンバスを前記ページ記述言語から画像への変換処理の対象から外す描画データ処理機能とをコンピュータに実現させることを最も主要な特徴とするため、ページ記述言語内でキャンバスとしての形は保っているが該キャンバス上に描画オブジェクトをもたず、透明度属性が不透明なキャンバスを画像処理対象から外すことにより演算処理の短縮化とメモリの利用効率を高めて画像変換処理が可能となった。
【発明を実施するための最良の形態】
【００２０】
ページ記述言語を中間言語に変換する画像処理を行う画像処理装置、画像処理方法及び画像処理プログラムにおいて、描画オブジェクトを有せず、透明度属性が不透明なキャンバスを変換処理の対象から外すことにより、ページ記述言語のビットマップへの変換処理を高速にかつメモリの利用効率を高めて行うことを可能とした。
【実施例】
【００２１】
本発明の実施例に係る画像処理装置について以下に説明する。
【００２２】
［透明度属性の合成；アルファブレンドについて］
アルファブレンドとは、２つのそれぞれに色値を有する画像をある係数により半透明合成することである。この係数をアルファ値といい0.0〜1.0の値をとる。0.0が完全に透明、1.0が完全に不透明な重ね合わせであることを表している。PDF（Portable Document Format）、およびXPS（XML Paper Specification）ドキュメント形式ではパスによる図形や、フォント、イメージ等のオブジェクトに対してアルファ値が設定でき、描画の際に、下地の色とのアルファブレンド（透明度と色値との合成）が可能になっている。
【００２３】
以下にアルファブレンドの透明度の合成処理がどのように行われるかについて、XPSドキュメント形式のデータを例に用いて説明する。
【００２４】
図１にXPSで表記された透明度属性を持つPathのデータを示し、XPS仕様書1.0（非特許文献１参照）の11.4 Opacity Computationsに記載されているアルファブレンドを厳密に行う場合のステップを以下に示す。
（１）：ソース側のアルファ値を求める。ソースのアルファ値にOpacityアトリビュートの値とOpacityMaskの値をかける。
【００２５】
As1 = As * Oe * Om
As  ：ソースエレメントのアルファ値（図１参照）
Oe  ：ソースエレメントのOpacity値（図１参照）
Om  ：描画するピクセル位置のソースエレメントのOpacityMask値（図１参照）
（２）：（１）で求まったアルファ値（As1）をソースの色値にかける。この処理をPre-multiply source alphaという。下記に示す式のCsはRGBや、Gray、CMYK等のカレントカラースペースにおけるプレーン毎の値である。
【００２６】
Cs_tmp = Cs * As1
Cs  ：ソースの色値（図１参照）
Cs_tmp  ：ソース側カラー値のテンポラリ値
（３）：デスティネーション側のアルファをデスティネーションの色値にかける。この処理をPre-multiply destination alphaという。下記に示す式のデスティネーションのピクセル色値Cdはソース側と同様に、RGBや、Gray、CMYK等のカレントカラースペースにおけるプレーン毎の値である。
【００２７】
Cd_tmp = Cd * Ad
Ad  ：デスティネーションのアルファ値
Cd  ：デスティネーションの描画ピクセル位置の色値
Cd_tmp  ：デスティネーション側カラー値のテンポラリ
（４）：ブレンド処理を行う。
【００２８】
A_tmp ＝ ( 1 - As1 ) * Ad  +   As1
C_tmp = ( 1 - As1 ) * Cd_tmp  +   Cs_tmp
A_tmp  ：（５）のチェック用テンポラリ
C_tmp  ：（５）のチェック用テンポラリ
（５）：デスティネーション結果に書き込む値を求める。この処理をReverse pre-multiplicationという。
【００２９】
If A_tmp = 0
{
Anew = Cnew = 0
}
Else
{
Anew = A_tmp
Cnew = min(C_tmp / A_tmp, 1)
}
（１）、（２）で現れるパラメータが図１のXPSドキュメント中に現れる（より詳細については非特許文献１を参照）。
【００３０】
［ページへの描画処理のケース］
ブレンド処理ステップ（３）において、ページへの描画処理では下地は不透明、すなわちAd＝1.0ととることができる。この場合は、下記のようにソースの色値とアルファ値、および既にページに書かれているデスティネーションの色値のみでアルファブレンド処理ができる（図２（Ａ）参照）。
【００３１】
As1 = As * Oe *  Om
Anew = 1.0          （不透明で変化なし）
Cnew =  ( 1 - As1 ) Cd + As1 * Cs      （単純なアルファブレンドの式として知られている）
［キャンバスに透明度属性がない場合］
ブレンド処理のステップ（３）において、キャンバスへの描画処理では、初期状態において下地は完全な透明、Ad=0.0で色なし、Cd=0.0（RGBなら黒）ととらえることができる。これはガラス板のイメージになる。
【００３２】
As1 = As * Oe * Om
Anew = As1      （アルファの値が累積）
Cnew = Cs      （ソースの色値はそのまま）
キャンバス上にまだ何も描画されていない状態で、ブレンド処理ステップに従うと、上記のように、キャンバス上のオブジェクトに透明度が含まれている場合、キャンバス上には、色値、アルファ値がそのまま累積することとなる。これは、キャンバスをページ等の一段下のレイヤーに描画するときに、累積している値がソースアルファ値として影響することを示す。
【００３３】
しかしながら、キャンバス自体に透明度が設定されていない場合は、出来上がったキャンバスをページ上に描いた結果は、オブジェクトを直接ページに書いた場合と同じとなる（図２（Ｂ）参照）。
【００３４】
この場合、図２（Ｂ）のようにページとは別のバッファに描画を実行する必要はなく、キャンバスが定義されていないときと同様の処理を行えばよい。
【００３５】
［キャンバスに透明度属性がある場合］
上述のように、オブジェクトが描画された領域には色値とアルファ値が累積していくが、その他の領域は0.0の完全に透明のまま残る。
【００３６】
キャンバス自体に透明度が設定されている場合の描画方法について、XPS仕様書中に提示される実装方法では、キャンバス上のオブジェクトの描画が終了し、下のレイヤーに書き込む時に、キャンバスエレメントの属性のOpacityとOpacityMaskの値を累積しているアルファ値に適用（結合）する。これはブレンドステップ（１）にあたり、キャンバス自体のOeとOmを累積したアルファ値にかけることを意味する。
【００３７】
また、キャンバス中でオブジェクトが描かれていない領域はOpacity、OpacityMaskが適用されてもアルファ値は0.0で完全に透明な何もかかれない状態で残る。そのため、描画されたオブジェクトの部分にのみ、透明度処理の効果がでる（図３（Ｃ）参照）。
【００３８】
概念的には上記したステップを経るが、同一キャンバス上にこのとおりの処理をしようとすると、オブジェクトが重なった場合などは、デスティネーションのアルファ値を考慮した図２（Ａ）の厳密なブレンド処理を行うことになる（図３（Ｄ））。
【００３９】
［構成］
図４は、本発明の実施例に係る画像処理装置の機能ブロック図である。
【００４０】
画像処理装置は、通信インタフェース１．１、データ受信部１．２、データ解析部１．３、描画データ処理部１．４（中間言語変換部；描画データ変換部）、キャンバスチェック部１．４．１、キャンバス用メモリ算出部１．４．３、描画部１．５（アルファブレンド演算部；描画データ変換部）、出力部１．６、システム制御部１．７、エラー制御部１．８、メモリ管理部１．９の各機能部を有する。以下に各機能部について説明する。
【００４１】
通信インタフェース１．１は、ホストコンピュータ等との通信を行う機能部である。
【００４２】
データ受信部１．２は、通信インタフェース１．１を介してデータ（ページ記述言語で記載してある印刷データ）を受信する機能部である。
【００４３】
データ解析部１．３は、送られてきたページ記述言語で記述された印刷データの解析を行なう機能部である。
【００４４】
描画データ処理部１．４（中間言語変換部；描画データ変換部）は、前記データ解析部１．３からの指示に従い、ページ記述言語を中間言語（ここでは、具体的にはディスプレイリスト）に変換する。
【００４５】
XPS等のXML拡張形式で記述されたページ記述言語中には、描画オブジェクトである、パス、グリフス（フォント）、イメージ等のエレメントがあり、これら描画オブジェクトを表示するための土台となるキャンバスがある。これらエレメントやキャンバスは、それぞれに透明度属性を有することが可能である。又、キャンバスは、入れ子構造（ネスト構造）をとって、その中に含むキャンバスやエレメントをひとつのグループとして扱うことが可能となる。
【００４６】
さらに描画データ処理部１．４（中間言語変換部；描画データ変換部）は、ページ記述言語を描画データに変換する描画データ変換部で、ここでは、ページ記述言語が中間言語（ディスプレイリスト）に変換される。描画データ処理部１．４は、前記した入れ子構造をとるキャンバスデータを中間言語に変換する際に、その入れ子構造を保ったままの構成とする。ひとつのキャンバスオブジェクトがディスプレイリストに変換された際のデータ構造を図５に示す。
【００４７】
キャンバスのオブジェクトは、その開始を示す「Start」マークに続き、キャンバス上に存在する描画オブジェクト又はキャンバスオブジェクトのディスプレイリスト、キャンバスの終了を示す「End」マーク、その後にキャンバスの透明度情報が続き、キャンバスの下層への描画を示す「Write」コマンドで終了する。
【００４８】
キャンバスが入れ子構造となっている場合には、前記した「Start」マークと「End」マークとの間に入れ子となるキャンバスオブジェクトへのポインターが入る。
【００４９】
キャンバスチェック部１．４．１は、キャンバス上に描画オブジェクトが存在せず、かつ透明度属性が不透明のキャンバスかどうかを判定する。詳細な動作については、後述のフローチャートの説明時に同時に行う。
【００５０】
キャンバス用メモリ算出部１．４．３は、キャンバスに必要なメモリの容量を算出する。詳細な動作については、後述のフローチャートの説明時に同時に行う。
【００５１】
描画部１．５（アルファブレンド演算部；描画データ変換部）は、中間言語をビットマップデータに変換する描画データ変換部であり、描画データ処理部１．４で作成されたディスプレイリスト（中間言語）からVRAM（描画データ用メモリ）にビットマップデータを作成する機能を有する。また、アルファブレンドの演算処理は、ディスプレイリストからビットマップへの変換の際に、この描画部１．５において行われる。
【００５２】
出力部１．６は、上記の各機能部で画像処理が行われて得られたビットマップデータを出力する機能部である。前記出力とは、用紙などの記録媒体に印刷することであってもよいし、ディスプレイデバイスに表示出力を行う方法でもよい。
【００５３】
システム制御部１．７は、画像処理装置システムの共通情報を管理し、システムの制御を行なう機能部である。
【００５４】
エラー制御部１．８は、画像処理装置のエラーが発生した場合の処理を制御する機能部である。
【００５５】
メモリ管理部１．９は、画像処理装置のシステムのメモリを管理する機能部である。
【００５６】
［アルファブレンド演算アルゴリズム］
図５で示した入れ子構造を有するディスプレイリスト（中間言語）のアルファブレンドの演算は以下に示す再帰アルゴリズムにより効率よく計算される。
【００５７】
一つのキャンバスの透過の計算Compositeを考えると、計算は次のようになる。
【００５８】
***_nのnをキャンバスに含まれるオブジェクト数とし、計算過程の値を表す。
［擬似コードによるアルゴリズム表記］
C = Composite（C_0，O_0）
入力    C_0        ：キャンバスの描画先の現在の色
O_0        ：キャンバスに含まれるオブジェクト全体
出力    C          ：キャンバスの色値
｛
S_0  = C_0                                                （式1）
全てのオブジェクト（i を1からnまで）で以下の処理を繰り返す。
【００５９】
{
Obj_i がキャンバスの場合は再帰呼び出し {
C_i = Composite(SC_(i-1)，Obj_i)              （式2）
}  そうでない場合  {
C_i = Obj_i_Color                            （式3）
}
S_i = (1-Obj_i_Alpha) *SC_(i-1) + Obj_i_Alpha * C_i    （式4）
}
C = S_i
}  ［アルゴリズム終了］
すなわち、キャンバス開始時にそれまでに描かれている色をコピーした領域を作成し（式1）、キャンバス終了時に、キャンバス自体のα値をもって、下地とブレンド処理（式4）すればよいこととなる。ページの開始時点は初期値S_0が白となっていれば良い。
【００６０】
［処理内容の具体例］
前記した再帰アルゴリズムの処理内容の具体例について図６、図７を用いて以下に説明する。
【００６１】
前記アルゴリズムは、キャンバスの開始とともに、一時的に色を保持するバッファを確保し、そのバッファ内で描画処理を行う。キャンバスの終了時点でバッファをイメージとして、一つ下のレイヤーにブレンド処理を行いながら描画していく方法である。キャンバス描画中にさらにネストしている場合は、再帰呼出を行って、それに応じて色を保持するバッファを確保し、一段上のキャンバスとして処理する。
【００６２】
この処理を行う場合の一例として、半透明キャンバスがネスト化（入れ子構造）し、さらにそのキャンバス上で、半透明のオブジェクトが重なっているケースを考える。
【００６３】
図６（Ｅ）は、XPSで表記した一段目のOpacity=0.5を有するCanvas1上に、描画オブジェクトである矩形のObject1が存在し、さらにOpacity=0.5を有する二段目のCanvas2がネストされており、二段目のCanvas2上に三角形のObject2とObject3が存在している。
【００６４】
図６（Ｆ）に、上記XPSの全オブジェクトを透明度（Opacity）が無いと仮定した場合の描画を示し、図６（Ｇ）に上記XPSに表記どおりの透明度（Opacity）のアルファブレンド演算を行った場合の描画を示す。ただし、カラー表記ができないため、グレースケールに変換して描画してある。
【００６５】
このデータに対する描画部１．５による処理手順を図７に示し、前記した再帰アルゴリズムの式と対比させて説明を行う。
【００６６】
［ページバッファの確保］；図７（Ｈ）
最初に描画するための最終のページであるページバッファを確保する。
【００６７】
［Canvas1の開始］；図７（Ｉ）
これまでページバッファに描かれている結果をCanvas1にコピーする（式1）。さらに、Canvas1上のObject1を描画する。（式3〜4）。また、Canvas1の透明度情報を何らかの形（例えば、再帰呼出しルーチンのローカル変数等）で保持しておく。
【００６８】
［Canvas2の開始］；図７（Ｊ）
Canvas1に描かれている結果をCanvas2にコピーする。（式2による再帰呼出しと式1）。
【００６９】
次に、Canvas2上のオブジェクト（Object2, Object3）を描画する。このとき、Canvas2上でアルファブレンド演算処理を行う（式3〜4）。
【００７０】
また、前記と同様にCanvas2の透明度情報を何らかの形（例えば、再帰呼出しルーチンのローカル変数等）で保持しておく。
【００７１】
［Canvas2の終了］；図７（Ｋ）
Canvas2自体の透明度情報（エレメントのOpacity値、OpacityMask値）をもって、Canvas2をイメージとして一段下のCanvas1に描画する（式4）。
【００７２】
Canvas2のバッファを開放。
【００７３】
［Canvas1の終了］；図７（Ｌ）
Canvas1自体の透明度属性情報（エレメントのOpacity値、OpacityMask値）をもって、Canvas1をイメージとしてページに描画（式4）。
【００７４】
Canvas1のバッファを開放。
【００７５】
以上の一連の動作により、再帰アルゴリズムによってアルファブレンド演算処理が可能となった。
【００７６】
［キャンバス処理時のメモリ利用及び動作のフローチャート］
次に画像処理装置のキャンバス処理時のメモリ利用に関する動作の説明と印刷データ受信からビットマップ出力までの動作のフローチャートについて説明する。
【００７７】
プリンタの描画処理でブレンド処理を行う場合、(R,G,B,α)の要素毎に8bit、つまり1ピクセル当たり32bitの色情報が必要である。背景で述べたように、透明度属性のあるキャンバス機能が使用された場合には、そのキャンバス上に描かれた描画結果を保持する為のメモリが必要になる。プリンタの描画処理において,メモリ使用量を考慮してページをバンドに区切ってバンド単位に図形を描画する方法が一般である。従ってこのキャンバス上に描かれた描画結果を保持する為のメモリもバンド単位で充分になる。しかしA4の紙サイズで１つのバンドの高さを200ラインとすると、このメモリには約3.8MB必要になる。
【００７８】
キャンバスの処理自体は描画部1.5で行われる。描画部1.5は処理速度が要求され、ハードウェア化されることも多く、ソフトウェアで実現する場合も分岐等を少なくして高速に動作させる必要がある。従って描画部1.5で必要になるメモリは事前に確保しておくようになっている。
【００７９】
キャンバス機能が使用された場合、そのキャンバスに透明度属性が無くても、そのキャンバスにネストしたキャンバスに透明度属性があった場合には、ブレンド処理を行う際に、透明度属性がないキャンバスも32bitの色情報を使って処理を行わなければならない。またキャンバスがネストしている場合には、ネストの一番深い数だけキャンバスの描画結果を保持する為のメモリが必要になる。
【００８０】
キャンバスが複数使用されている場合には、キャンバスとキャンバスのブレンド処理が必要になる。このキャンバス同士のブレンド処理も厳密なブレンド処理を行うことになる。ページプリンタの画像処理においては、描画オブジェクトを一度専用の中間言語に加工してからその中間言語をビットマップ化する。これは中間言語作成の部分と中間言語をビットマップ化する部分を並列に処理することで高速化を図る為である。キャンバスが複数使用される場合には、使用されている枚数分のキャンバス用のメモリを前もって確保しておき、中間言語のビットマップ化処理では、キャンバス毎にそのキャンバスに描画されているオブジェクトのビットマップ化処理を中間言語に従って行い、必要に応じてキャンバス同士のブレンド処理を行うことになる。
【００８１】
このような描画システムでは、もし透明度設定が不透明で何も描画されていないキャンバスがあった場合には、このキャンバス分のメモリも前もって確保される。キャンバスのメモリを前もって確保しないシステムであったとしても、中間言語のビットマップ化処理時にキャンバスが認識された時点で、そのキャンバス用のメモリを確保することになる。
【００８２】
しかし透明度設定が不透明で何も描画されていないキャンバスは、そのキャンバスが無いものとして処理できるので、そのキャンバス用のメモリは不要である。
【００８３】
従ってこのようなキャンバスがあるかどうかを事前にチェックして不要なメモリの確保を省くことが出来る。これは単純にはXPSで表記される以下のような場合である。
【００８４】
［ＸＰＳによる空キャンバスの表記］--- XPS001
<Canvas>
</Canvas>
次にキャンバスが入れ子構造となっているXPSで表記される以下の場合を考える。
【００８５】
［ＸＰＳによる入れ子構造での空キャンバスの表記］--- XPS002
<Canvas>
<Canvas>
描画オブジェクト
</Canvas>
</Canvas>
まず最初のキャンバスをCanvas1とし、その内側にネストしているキャンバスをCanvas2とする。Canvas2には描画が為されている。Canvas1はCanvas2を保持しているが、Canvas1自体に対する描画は為されていない。
【００８６】
この場合に逐次的に処理を行うと、Canvas1にはCanvas2の結果がコピーされるだけになるので、Canvas2の結果をそのまま利用することによって、Canvas1用のメモリは省けることになる。
【００８７】
図８に本発明の描画処理全体の流れを示す。この図に沿って具体的な処理を説明する。
【００８８】
Ｓ５０１：まずプリンタはホストPCから通信インタフェース１．１を介してデータ受信部１．２で印刷データを受信する。
【００８９】
Ｓ５０２：受信したデータはデータ解析部１．３で解析される。
【００９０】
Ｓ５０３：解析された結果、その命令がページ出力命令かどうかをデータ解析部１．３で判定する。
【００９１】
Ｓ５０４：解析した命令がページ出力命令ではなかった場合は、指定された命令に対応する描画データ処理部１．４の処理を呼びだす。
【００９２】
ここでは様々な処理がある。その中で指定された命令がキャンバス関係の命令だった場合には本発明の為に次のような処理を行う。
【００９３】
図４の機能ブロック図に示すように描画データ処理部１．４中には、キャンバスチェック部１．４．１とキャンバス用メモリ算出部１．４．３が設けられている。データ解析部１．３からキャンバスの開始処理の依頼が描画データ処理部１．４に来た時に、キャンバスチェック部１．４．１でキャンバスの透明度設定の情報を覚えておく。また同時にキャンバス自体に描画があったかどうかを覚えておくフラグを準備し、初期値を描画無しとしておく。これらの情報はキャンバス毎に用意して覚えておく。キャンバス自体に描画があったかどうかを覚えておくフラグについては、何か描画が行われた時に、そのフラグに描画があったことを記憶させる。
【００９４】
データ解析部１．３からキャンバスの終了処理の依頼が描画データ処理部１．４に来た時に、キャンバス用メモリ算出部１．４．３でキャンバスチェック部１．４．１で覚えておいたキャンバスの透明度設定とそのキャンバス自体に描画があったかどうかの情報を参照して、そのキャンバスを処理する為のメモリの量を算出する。透明度設定が不透明で何も描画されていないキャンバスについては、必要なメモリの量が0と判定され、キャンバスの情報としてその旨を記録しておく。
【００９５】
Ｓ５０５：データ解析部１．３では印刷データを全て処理したかデータ受信部１．２に確認する。
【００９６】
Ｓ５０６：印刷データを全て処理し終わっている場合は、処理を終了する。本発明には直接関係無いので、ここではページ出力命令が無しでデータを処理し終わる場合は考慮から外す。印刷データが残っている場合は、Ｓ５０２に戻って処理を続行する。
【００９７】
Ｓ５０７：Ｓ５０３の処理中にデータ解析部１．３で解析した命令がページ出力命令だった場合にはＳ５０７に移行し、描画データ処理部１．４のページ出力の処理が呼び出される。この時、描画データ処理部１．４から各キャンバスの情報を描画部１．５に送信する。キャンバスの処理に必要なメモリを描画データ処理部１．４で確保して、その情報を描画部１．５に送信することも出来るし、描画部１．５でキャンバスの情報を基に必要なメモリを確保することも出来る。
【００９８】
Ｓ５０８：描画データ処理部１．４はページ出力命令を描画部１．５に送信する。
【００９９】
Ｓ５０９：描画部１．５はページ出力命令を受け取ると中間言語（ディスプレイリスト）で構成されているページのビットマップ化処理を行う。この時にキャンバスの描画処理も行う。先に示したXPS002のような入れ子構造になっているキャンバスの場合はその旨がキャンバスの情報に記録されているので、外側のキャンバスについては、内側のキャンバスの描画処理結果をそのまま使うようにする。
【０１００】
Ｓ５１０：ページのビットマップ化処理が終了したら、描画部１．５は出力部１．６にビットマップのページを出力する。
【０１０１】
［実施例の効果］
本発明実施例の画像処理装置により、以下のことが可能となった。
【０１０２】
XPS等のXML拡張形式等のページ記述言語によって記述された入れ子構造を有する描画オブジェクト、キャンバスの透明度属性の合成（アルファブレンド演算）を効率よく行うため、ページ記述言語を中間言語に変換する際に前記入れ子構造を保持した形で変換を行った。さらに、前記入れ子構造を有する中間言語データのアルファブレンド演算を再帰アルゴリズムにより実現した。
【０１０３】
上記の方法により、入れ子構造をまたいだアルファブレンド演算を効率よく行うことが可能となった。
【０１０４】
上記の構造を有する中間言語により、アルファブレンド演算処理を行い、その後のビットマップデータへの変換を行ってプリンタでの印刷処理が可能となった。
【０１０５】
本画像処理装置では、不透明で描画のないキャンバスを判別し、その分のメモリや描画処理を省くことで描画処理の高速化とメモリの効率化を図ることが可能となった。
【０１０６】
［その他］
色値は、実施例中ではＲＧＢの三原色に基づくものを示したが、ＣＭＹＫの色値であってもよく、同様にアルファブレンド演算が可能である。
【図面の簡単な説明】
【０１０７】
【図１】XPSによるアルファ値、カラー値、透明度、透明マスクの表記例である。
【図２】キャンバスへの描画時のアルファブレンド（透明度設定なし）の概念図である。
【図３】キャンバスへの描画時のアルファブレンド（透明度設定あり）の概念図である。
【図４】本発明実施例の画像処理装置の機能ブロック図である。
【図５】本発明実施例のディスプレイリストのデータ構造例である。
【図６】ネスト化されたキャンバスのXPSでの表記例（Ｅ）とその対応図面（透明度設定あり（Ｆ）及びなし（Ｇ））である。
【図７】図６（Ｅ）に記載のXPSデータの描画の処理手順を示す図である。
【図８】本発明実施例の画像処理装置の動作のフローチャートである。
【符号の説明】
【０１０８】
１．１  通信インタフェース
１．２  データ受信部
１．３  データ解析部
１．４  描画データ処理部（中間言語変換部；描画データ変換部）
１．４．１  キャンバスチェック部
１．４．３  キャンバス用メモリ算出部
１．５  描画部（アルファブレンド演算部；描画データ変換部）
１．６  出力部
１．７  システム制御部
１．８  エラー制御部
１．９  メモリ管理部
【図１】
2010086043.tif 000003
【図２】
2010086043.tif 000004
【図３】
2010086043.tif 000005
【図４】
2010086043.tif 000006
【図５】
2010086043.tif 000007
【図６】
2010086043.tif 000008
【図７】
2010086043.tif 000009
【図８】
2010086043.tif 000010