(57)【要約】【課題】  画像処理装置において、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとの透明度属性のアルファブレンド演算処理を行う際に、必要な領域においてだけ演算を行うことにより演算処理の高速化とメモリの効率化を図る。【解決手段】  本発明の画像処理装置では、描画領域情報算出部が描画オブジェクト及びキャンバスの描画される矩形領域の座標情報を算出して、該矩形領域内でのみアルファブレンド演算処理を行う方法により課題を解決した。【選択図】図８
2010086042.tif 000002
【特許請求の範囲】
【請求項１】
透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとの透明度属性の合成処理を行う画像処理装置であって、
前記描画オブジェクト及び前記キャンバスの座標値より、前記描画オブジェクト及びキャンバスの描画される矩形領域の座標情報を算出する描画領域情報算出部と、
前記描画領域情報算出部により算出された矩形領域中でのみ前記透明度属性の合成処理を行う描画部と、を有する
ことを特徴とする画像処理装置。
【請求項２】
請求項１の画像処理装置であって、
前記描画部は、前記描画領域情報算出部により算出された矩形領域中でのみ描画処理を行う
ことを特徴とする画像処理装置。
【請求項３】
請求項２の画像処理装置であって、
前記キャンバスの前記透明度属性が不透明であるかどうかを検出し、入れ子構造に連続しているキャンバスが不透明である場合は該キャンバスを仮キャンバスとして記録し、それ以外のキャンバスを実キャンバスとして記録するキャンバスチェック部と、
前記描画領域情報算出部は、前記キャンバスチェック部により実キャンバスとして記録されたキャンバスの座標値に基づいて、前記矩形領域の座標情報を算出する
ことを特徴とする画像処理装置。
【請求項４】
請求項３の画像処理装置であって、
前記キャンバスの透明度属性の合成処理に必要なメモリ量の計算をする際に、前記描画領域情報算出部により前記仮キャンバスと判断されたキャンバスについてはゼロとして計算し、前記実キャンバスと判断されたキャンバスについては該キャンバスの前記矩形領域に基づいて計算するメモリ領域算出部を有する
ことを特徴とする画像処理装置。
【請求項５】
透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとの透明度属性の合成処理を行う画像処理方法であって、
前記描画オブジェクト及び前記キャンバスの座標値より、前記描画オブジェクト及びキャンバスの描画される矩形領域の座標情報を算出し、
該算出された矩形領域中でのみ前記透明度属性の合成処理を行う
ことを特徴とする画像処理方法。
【請求項６】
コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとの透明度属性の合成処理機能を実現させる画像処理プログラムであって、
前記描画オブジェクト及び前記キャンバスの座標値より、前記描画オブジェクト及びキャンバスの描画される矩形領域の座標情報を算出する描画領域情報算出機能と、
該算出された矩形領域中でのみ前記透明度属性の合成処理を行うアルファブレンド演算機能とを
コンピュータに実現させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
透明度属性を有する描画オブジェクトと、該描画オブジェクトを描画する土台であり透明度属性を有するキャンバスとを表記可能であるページ記述言語を中間言語に変換する際に、該変換処理及び前記透明度の合成処理を高速にかつメモリの利用効率を高めて行うことが可能な画像処理装置、画像処理方法及び画像処理プログラムに関するものである。
【背景技術】
【０００２】
XPS等のXML拡張形式で記述されたページ記述言語においては、透明度属性を有した描画オブジェクト（パスやフォントやイメージ等）及び前記描画オブジェクトの描画の土台となる透明度属性を有したキャンバスが複数層重なって存在させることが可能であり、これらが複数層重なった描画オブジェクト及びキャンバスの透明度属性の合成処理（アルファブレンド演算処理）を行う際に、通常はバンドと呼ばれるページを所定の幅ごとに区切った単位での処理が行われていたが、前記描画オブジェクトや前記キャンバスの存在しない領域がバンド内にあっても、バンド単位でメモリにデータが保持されて、演算処理の対象となっていたために、無駄にメモリを消費し、処理時間が長くかかる問題があった。
【０００３】
従来技術として、アルファブレンド演算処理の前にデバイスの色域に圧縮するか、デバイスの色域に圧縮してからアルファブレンド処理を行うかによって、レンダリング結果が異なるため、カラーマッチング手段によりどちらが適正化を判断して、より適切な方法を選択する方法があった（特許文献１参照）。
【０００４】
しかし、この方法でも前記したオブジェクトの存在しない領域でのメモリの無駄な消費や不用な演算処理を解消する方法は開示されていない。
【特許文献１】特開２００６−３４５１９７号公報
【非特許文献１】XML Paper Specification, XPS Specification and Reference Guide Version 1.0
【発明の開示】
【発明が解決しようとする課題】
【０００５】
解決しようとする問題点は、ページ記述言語を中間言語に変換する画像処理を行う画像処理装置、画像処理方法及び画像処理プログラムにおいて、描画オブジェクトやキャンバスが存在しない領域についてもメモリ上にデータが確保されて、無用な演算処理が行われてしまうことを回避する方法がなかったことである。
【課題を解決するための手段】
【０００６】
請求項１記載の本発明の画像処理装置は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとの透明度属性の合成処理を行う画像処理装置であって、前記描画オブジェクト及び前記キャンバスの座標値より、前記描画オブジェクト及びキャンバスの描画される矩形領域の座標情報を算出する描画領域情報算出部と、前記描画領域情報算出部により算出された矩形領域中でのみ前記透明度属性の合成処理を行う描画部と、を有することを最も主要な特徴とする。ここで、キャンバスとは、ＸＭＬ拡張形式のページ記述言語に記載される描画オブジェクト（パスやフォントやイメージ）を描画する土台となるオブジェクトのことで、透明度を示す透明度値、さらに透明度分布を表す透明度マスク等の透明度属性を有する。
【０００７】
請求項２記載の本発明の画像処理装置は、請求項１の画像処理装置であって、前記描画部は、前記描画領域情報算出部により算出された矩形領域中でのみ描画処理を行うことを主要な特徴とする。
【０００８】
請求項３記載の本発明の画像処理装置は、請求項２の画像処理装置であって、前記キャンバスの前記透明度属性が不透明であるかどうかを検出し、入れ子構造に連続しているキャンバスが不透明である場合は該キャンバスを仮キャンバスとして記録し、それ以外のキャンバスを実キャンバスとして記録するキャンバスチェック部と、前記描画領域情報算出部は、前記キャンバスチェック部により実キャンバスとして記録されたキャンバスの座標値に基づいて、前記矩形領域の座標情報を算出することを主要な特徴とする。
【０００９】
請求項４記載の本発明の画像処理装置は、請求項３の画像処理装置であって、前記キャンバスの透明度属性の合成処理に必要なメモリ量の計算をする際に、前記描画領域情報算出部により前記仮キャンバスと判断されたキャンバスについてはゼロとして計算し、前記実キャンバスと判断されたキャンバスについては該キャンバスの前記矩形領域に基づいて計算するメモリ領域算出部を有することを主要な特徴とする。
【００１０】
請求項５記載の本発明の画像処理方法は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとの透明度属性の合成処理を行う画像処理方法であって、前記描画オブジェクト及び前記キャンバスの座標値より、前記描画オブジェクト及びキャンバスの描画される矩形領域の座標情報を算出し、該算出された矩形領域中でのみ前記透明度属性の合成処理を行うことを最も主要な特徴とする。
【００１１】
請求項６記載の本発明の画像処理プログラムは、コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとの透明度属性の合成処理機能を実現させる画像処理プログラムであって、前記描画オブジェクト及び前記キャンバスの座標値より、前記描画オブジェクト及びキャンバスの描画される矩形領域の座標情報を算出する描画領域情報算出機能と、該算出された矩形領域中でのみ前記透明度属性の合成処理機能とをコンピュータに実現させることを最も主要な特徴とする。
【発明の効果】
【００１２】
請求項１記載の本発明の画像処理装置は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとの透明度属性の合成処理を行う画像処理装置であって、前記描画オブジェクト及び前記キャンバスの座標値より、前記描画オブジェクト及びキャンバスの描画される矩形領域の座標情報を算出する描画領域情報算出部と、前記描画領域情報算出部により算出された矩形領域中でのみ前記透明度属性の合成処理を行う描画部と、を有することを最も主要な特徴とするため、透明度属性の合成処理を実際に演算が必要な透明度属性を有するキャンバス上でのみ行われるため、メモリの利用効率が高まり、透明度属性の演算処理にかかる時間が短縮された。
【００１３】
請求項２記載の本発明の画像処理装置は、請求項１の画像処理装置であって、前記描画部は、前記描画領域情報算出部により算出された矩形領域中でのみ描画処理を行うことを主要な特徴とするため、透明度属性の演算処理にかかる時間だけでなく、描画処理にかかる時間も短縮された。
【００１４】
請求項３記載の本発明の画像処理装置は、請求項２の画像処理装置であって、前記キャンバスの前記透明度属性が不透明であるかどうかを検出し、入れ子構造に連続しているキャンバスが不透明である場合は該キャンバスを仮キャンバスとして記録し、それ以外のキャンバスを実キャンバスとして記録するキャンバスチェック部と、前記描画領域情報算出部は、前記キャンバスチェック部により実キャンバスとして記録されたキャンバスの座標値に基づいて、前記矩形領域の座標情報を算出することを主要な特徴とするため、入れ子構造で連続しているキャンバス毎の透明度属性を保持するためのメモリを確保する必要が無くなり、メモリの利用効率が高まり、透明度属性の合成のための演算処理が高速化された。
【００１５】
請求項４記載の本発明の画像処理装置は、請求項３の画像処理装置であって、前記キャンバスの透明度属性の合成処理に必要なメモリ量の計算をする際に、前記描画領域情報算出部により前記仮キャンバスと判断されたキャンバスについてはゼロとして計算し、前記実キャンバスと判断されたキャンバスについては該キャンバスの前記矩形領域に基づいて計算するメモリ領域算出部を有することを主要な特徴とするため、透明度属性の演算に必要とされるメモリ容量を計算可能であるため、該求められたメモリ容量をメモリ管理部が演算のため準備することが可能である。ここで求められたメモリ容量はバンド幅全体で使用されるメモリ容量に比べて少なく、結果として余ったメモリ容量を他の領域に振り分けることを事前に求めることが可能となった。
【００１６】
請求項５記載の本発明の画像処理方法は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとの透明度属性の合成処理を行う画像処理方法であって、前記描画オブジェクト及び前記キャンバスの座標値より、前記描画オブジェクト及びキャンバスの描画される矩形領域の座標情報を算出し、該算出された矩形領域中でのみ前記透明度属性の合成処理を行うことを最も主要な特徴とするため、透明度属性の合成処理を実際に演算が必要な透明度属性を有するキャンバス上でのみ行われるため、メモリの利用効率が高まり、透明度属性の演算処理にかかる時間が短縮された。
【００１７】
請求項６記載の本発明の画像処理プログラムは、コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとの透明度属性の合成処理機能を実現させる画像処理プログラムであって、前記描画オブジェクト及び前記キャンバスの座標値より、前記描画オブジェクト及びキャンバスの描画される矩形領域の座標情報を算出する描画領域情報算出機能と、該算出された矩形領域中でのみ前記透明度属性の合成処理機能とをコンピュータに実現させることを最も主要な特徴とするため、透明度属性の合成処理を実際に演算が必要な透明度属性を有するキャンバス上でのみ行われるため、メモリの利用効率が高まり、透明度属性の演算処理にかかる時間が短縮された。
【発明を実施するための最良の形態】
【００１８】
ページ記述言語を中間言語に変換する画像処理を行う画像処理装置、画像処理方法及び画像処理プログラムにおいて、描画オブジェクトやキャンバスが存在しない領域についてもメモリ上にデータが確保されて、無用な演算処理が行われてしまう問題を、前記描画オブジェクト及びキャンバスの存在する描画領域を求めて、該描画領域内での透明度属性の演算処理を行う方法により問題を解決した。
【実施例】
【００１９】
本発明の実施例に係る画像処理装置について以下に説明する。
【００２０】
［透明度属性の合成；アルファブレンドについて］
アルファブレンドとは、２つのそれぞれに色値を有する画像をある係数により半透明合成することである。この係数をアルファ値といい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」マークとの間に入れ子となるキャンバスオブジェクトへのポインターが入る。
【００４７】
キャンバスチェック部１．４．１、ＢＢＯＸ（Bounding Box）情報算出部１．４．２、キャンバス用メモリ算出部１．４．３の各機能部は、本発明の最も主要な特徴であるアルファブレンドの演算処理における、演算領域の限定による記憶容量の削減、演算処理の高速化を実現するための矩形領域を算出するための機能部である。これらの機能部の動作については、後述の「アルファブレンド演算処理に伴う記憶容量の削減について」において詳細を述べる。
【００４８】
描画部１．５は、描画データ処理部１．４で作成されたディスプレイリスト（中間言語）からVRAMにビットマップデータを作成する機能部である。アルファブレンドの演算処理はここ描画部１．５において行われる。前記キャンバスチェック部１．４．１、ＢＢＯＸ（Bounding Box）情報算出部１．４．２、キャンバス用メモリ算出部１．４．３によって演算を必要とされる描画領域が求められ、描画部１．５は、該描画領域についてのみアルファブレンド演算処理及び、ビットマップ変換処理が行われる。
【００４９】
出力部１．６は、上記の各機能部で画像処理が行われて得られたビットマップデータを出力する機能部である。前記出力とは、用紙などの記録媒体に印刷することであってもよいし、ディスプレイデバイスに表示出力を行う方法でもよい。
【００５０】
システム制御部１．７は、画像処理装置システムの共通情報を管理し、システムの制御を行なう機能部である。
【００５１】
エラー制御部１．８は、画像処理装置のエラーが発生した場合の処理を制御する機能部である。
【００５２】
メモリ管理部１．９は、画像処理装置のシステムのメモリを管理する機能部である。
【００５３】
［アルファブレンド演算アルゴリズム］
図５で示した入れ子構造を有するディスプレイリスト（中間言語）のアルファブレンドの演算は以下に示す再帰アルゴリズムにより効率よく計算される。
【００５４】
一つのキャンバスの透過の計算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のバッファを開放。
【００７２】
以上の一連の動作により、再帰アルゴリズムによってアルファブレンド演算処理が可能となった。
【００７３】
［座標値を伴うキャンバスの例］
図６（Ｅ）の例では、キャンバスに座標値の指定が無い場合について説明したが、キャンバスには座標値の指定が伴う場合もある。
【００７４】
表１に示すのは、ＸＰＳで記載されたキャンバスの例であるが、ここでは、Canvas中にイメージ"/Resources/R16LY_NN.png"が載っており、その座標値の指定がViewbox、Viewportであることを示している。
【００７５】
【表１】
2010086042.tif 000003
【００７６】
［アルファブレンド演算処理に伴う記憶容量の削減について］
プリンタの描画処理でブレンド処理を行う場合、(R,G,B,α)の要素毎に8bit、つまり1ピクセル当たり32bitの色情報が必要である。前述したように、透明度属性のあるキャンバス機能が使用された場合には、そのキャンバス上に描かれた描画結果を保持する為のメモリが必要になる。
【００７７】
プリンタの描画処理においては、メモリ使用量を考慮してページをバンドに区切ってバンド単位に図形を描画する方法が一般である。従ってこのキャンバス上に描かれた描画結果を保持する為のメモリもバンド単位で充分になる。しかしA4の紙サイズで１つのバンドの高さを200ラインとすると、このメモリには約3.8MB必要になる。
【００７８】
このような描画システムで、キャンバス上に描画されるオブジェクトの座標値より、描画される矩形座標情報（Bounding BOX（BBOX））を算出し、その矩形領域が保持できる分のメモリを使えば、描画結果を保持するメモリを節約することができる。以下に図８を用いて、メモリの削減について説明する。
【００７９】
本発明実施例の画像処理装置では、描画データ処理部１．４にて、描画するオブジェクトの座標からバンド毎に、透明度処理を可能にするために最低限必要なメモリサイズを算出する。
【００８０】
描画部１．５の処理単位が１バンドずつであれば、上記バンド毎で算出されたメモリサイズがページ中で最大のメモリがあれば、１ページの描画が可能である。
【００８１】
本実施例の画像処理装置では、図４の機能ブロック図に示すように、従来のシステムの描画データ処理部１．４にキャンバスチェック部１．４．１とＢＢＯＸ（Bounding Box）情報算出部１．４．２とキャンバス用メモリ算出部１．４．３を設ける。
【００８２】
キャンバスチェック部１．４．１は描画データ処理部１．４に入ってくる描画データの中にキャンバスの指定があった場合に、これをページ単位で覚えておく。その時、キャンバスチェック部１．４．１はキャンバスの透明度属性を調べて、そのキャンバスが不透明かどうかを判別し、且つそのキャンバスが最初のキャンバスから連続している不透明なキャンバスかどうかを調べる。指定されたキャンバスが不透明で最初のキャンバスから連続している場合は、そのキャンバスへの描画は直接VRAMに対して行ってよいので、そのキャンバスは「仮キャンバス」だとキャンバス情報に記録しておく。そうでないキャンバスは「実キャンバス」だとキャンバス情報に記録しておく。
【００８３】
また、ＢＢＯＸ情報算出部１．４．２（描画領域情報算出部）は、描画指定が描画データ処理部１．４に入力された際、キャンバスチェック部１．４．１が「実キャンバス」の状態であるかを判断し、「実キャンバス」である場合に、描画オブジェクトの座標値からＢＢＯＸ情報を算出する（図８参照）。
【００８４】
また、キャンバス用メモリ算出部１．４．３では、描画部１．５でキャンバスの処理を行う際に必要となるメモリの量を計算する。この際、「仮キャンバス」の処理に必要なメモリは０として計算する。逆に「実キャンバス」で必要となるメモリ容量は、ＢＢＯＸ情報算出部１．４．２（描画領域情報算出部）で算出されるＢＢＯＸ情報から、各バンドで必要となるメモリ容量を算出する。
【００８５】
上記の方法により、アルファブレンド演算処理において、従来のようにバンドメモリの全体で演算を行うのではなく、演算が必要とされる矩形領域内においてのみアルファブレンド演算処理を行うことが可能となった。
【００８６】
［実施例の効果］
本発明実施例の画像処理装置により、以下のことが可能となった。
【００８７】
XPS等のXML拡張形式等のページ記述言語によって記述された入れ子構造を有する描画オブジェクト、キャンバスの透明度属性の合成（アルファブレンド演算）を効率よく行うため、ページ記述言語を中間言語に変換する際に前記入れ子構造を保持した形で変換を行った。さらに、前記入れ子構造を有する中間言語データのアルファブレンド演算を再帰アルゴリズムにより実現した。
【００８８】
上記の方法により、入れ子構造をまたいだアルファブレンド演算を効率よく行うことが可能となった。
【００８９】
上記の構造を有する中間言語により、アルファブレンド演算処理を行い、その後のビットマップデータへの変換を行ってプリンタでの印刷処理が可能となった。
【００９０】
本画像処理装置では、前記アルファブレンド演算処理を行う際に、透明度属性が指定されたキャンバス上のオブジェクトの矩形状の描画領域を判別し、その領域外のデータをメモリに保持することや、描画処理を行うことを省くことにより、アルファブレンド演算や描画処理を高速化し、メモリの効率化を図ることが可能となった。
【００９１】
［その他］
色値は、実施例中ではＲＧＢの三原色に基づくものを示したが、ＣＭＹＫの色値であっても同様にアルファブレンド演算処理が可能である。
【図面の簡単な説明】
【００９２】
【図１】XPSによるアルファ値、カラー値、透明度、透明マスクの表記例である。
【図２】キャンバスへの描画時のアルファブレンド（透明度設定なし）の概念図である。
【図３】キャンバスへの描画時のアルファブレンド（透明度設定あり）の概念図である。
【図４】本発明実施例の画像処理装置の機能ブロック図である。
【図５】本発明実施例のディスプレイリストのデータ構造例である。
【図６】ネスト化されたキャンバスのXPSでの表記例（Ｅ）とその対応図面（透明度設定あり（Ｆ）及びなし（Ｇ））である。
【図７】図６（Ｅ）に記載のXPSデータの描画の処理手順を示す図である。
【図８】描画領域の判別の図である。
【符号の説明】
【００９３】
１．１  通信インタフェース
１．２  データ受信部
１．３  データ解析部
１．４  描画データ処理部（中間言語変換部）
１．４．１  キャンバスチェック部
１．４．２  ＢＢＯＸ情報算出部（描画領域情報算出部）
１．４．３  キャンバス用メモリ算出部
１．５  描画部（アルファブレンド演算部）
１．６  出力部
１．７  システム制御部
１．８  エラー制御部
１．９  メモリ管理部
【図１】
2010086042.tif 000004
【図２】
2010086042.tif 000005
【図３】
2010086042.tif 000006
【図４】
2010086042.tif 000007
【図５】
2010086042.tif 000008
【図６】
2010086042.tif 000009
【図７】
2010086042.tif 000010
【図８】
2010086042.tif 000011