(57)【要約】【課題】  透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置において、透明度処理をともなうキャンバスの重ね合わせの回数が多いデータの場合にメモリオーバーフローが発生して描画処理が停止してしまうことを解決すること。【解決手段】  本発明の画像処理装置では、描画処理が行われているレイヤ以外のイメージバッファを二次記憶装置であるストレージデバイスに書き込み、一次記憶装置である主メモリを開放する。これにより、メモリオーバーフローが発生するのを回避することが可能となる。ストレージデバイスに一次退避させたレイヤは、一段上のレイヤの描画処理が終了した後、再度メモリ上に読み出すことにより、レイヤ同士の重ね合わせ処理が可能となる。【選択図】図８
2010086239.tif 000002
【特許請求の範囲】
【請求項１】
透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、
前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算部と、
前記アルファブレンド演算部が確保した主メモリ中のキャンバスのメモリイメージを主メモリから補助メモリに退避させ、前記メモリイメージが前記アルファブレンド演算処理のために必要な時には、補助メモリから主メモリに呼び戻すストレージデバイス管理部と、を有する
ことを特徴とする画像処理装置。
【請求項２】
請求項１の画像処理装置であって、
前記ページ記述言語中に前記キャンバスが入れ子構造に記述された場合に、前記ページ記述言語を前記キャンバスの入れ子構造を保ったまま中間言語に変換する中間言語変換部を有し、
前記アルファブレンド演算部は、前記入れ子構造を保った中間言語に基づいて前記透明度属性の合成を行う
ことを特徴とする画像処理装置。
【請求項３】
請求項１又は２の画像処理装置であって、
前記ページ記述言語がＸＭＬ（Extended Markup Language）拡張形式により記述されたものである
ことを特徴とする画像処理装置。
【請求項４】
透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、
前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算手段と、
前記アルファブレンド演算手段が確保した主メモリ中のキャンバスのメモリイメージを主メモリから補助メモリに退避し、前記メモリイメージが前記アルファブレンド演算処理のために必要な時には、補助メモリから主メモリに呼び戻すストレージデバイス管理手段と、を有する
ことを特徴とする画像処理方法。
【請求項５】
コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、
前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算機能と、
前記アルファブレンド演算手段が確保した主メモリ中のキャンバスのメモリイメージを主メモリから補助メモリに退避し、前記メモリイメージが前記アルファブレンド演算処理のために必要な時には、補助メモリから主メモリに呼び戻すストレージデバイス管理機能と、をコンピュータに実現させる
ことを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
透明度属性を有する描画オブジェクトと該描画オブジェクトを描画する土台であり透明度属性を有するキャンバスとを表記可能であるページ記述言語について、そのビットマップ変換をする際に、複数層重なるキャンバスと描画オブジェクトによって主メモリが消費されてしまうことにより、描画変換処理が行えなくなってしまうことを抑制する技術に関するものである。
【背景技術】
【０００２】
XPS等のXML拡張形式で記述されたページ記述言語においては、透明度属性を有した描画オブジェクト（パスやフォントやイメージ等）及び前記描画オブジェクトの描画の土台となる透明度属性を有したキャンバスが複数層重なって存在させることが可能であり、これらが複数層重なった描画オブジェクト及びキャンバスの透明度属性の合成処理（アルファブレンド演算処理）を行う際には、該キャンバスの層毎に前記アルファブレンド演算処理のためのメモリの確保と、該アルファブレンド演算処理が必要となる。しかし、この場合にキャンバスが複数層重なっている場合には、一番上の層となるレイヤの描画が終わるまで、その下に構成されるアルファブレンド演算が行われるレイヤを保持する必要がある。そのため、当該レイヤのイメージを保持しておくバッファが主メモリを圧迫し、メモリオーバーフローを発生させてしまうという問題があった。
【０００３】
従来技術として、アルファブレンド演算処理の前にデバイスの色域に圧縮するか、デバイスの色域に圧縮してからアルファブレンド処理を行うかによって、レンダリング結果が異なるため、カラーマッチング手段によりどちらが適正化を判断して、より適切な方法を選択する方法があった（特許文献１参照）。
【０００４】
しかし、この方法でも前記したキャンバスのイメージを保持しておくために主メモリが圧迫されてしまいメモリオーバーフローが発生することを抑制することはできなかった。
【特許文献１】特開２００６−３４５１９７号公報
【非特許文献１】XML Paper Specification, XPS Specification and Reference Guide Version 1.0
【発明の開示】
【発明が解決しようとする課題】
【０００５】
解決しようとする問題点は、ページ記述言語を中間言語に変換する画像処理を行う画像処理装置、画像処理方法及び画像処理プログラムにおいて、透明度属性を有するキャンバスが複数層重なる場合にアルファブレンド演算処理を行うために保持されるキャンバスのイメージにより主メモリが足りなくなってしまい、メモリオーバーフローを発生させてしまうことを防止することができなかった点である。
【課題を解決するための手段】
【０００６】
本発明の画像処理装置は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算部と、前記アルファブレンド演算部が確保した主メモリ中のキャンバスのメモリイメージを主メモリから補助メモリに退避し、前記メモリイメージが前記アルファブレンド演算処理のために必要な時には、補助メモリから主メモリに呼び戻すストレージデバイス管理部と、を有することを特徴とする。
【０００７】
ここで、主メモリとは、Ｓ−ＲＡＭやＤ−ＲＡＭ等の半導体メモリからなる高速の一次記憶装置のことであり、補助メモリとはフラッシュメモリや回転磁気ディスクなどの、低速大容量の二次記憶装置のことである。
【０００８】
また、本発明の画像処理装置は、前記ページ記述言語中に前記キャンバスが入れ子構造に記述された場合に、前記ページ記述言語を前記キャンバスの入れ子構造を保ったまま中間言語に変換する中間言語変換部を有し、前記アルファブレンド演算部は、前記入れ子構造を保った中間言語に基づいて前記透明度属性の合成を行うことを特徴としてもよい。
【０００９】
また、本発明の画像処理装置は前記ページ記述言語がＸＭＬ（Extended Markup Language）拡張形式により記述されたものであることを特徴としてもよい。
【００１０】
本発明の画像処理方法は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算手段と、前記アルファブレンド演算手段が確保した主メモリ中のキャンバスのメモリイメージを主メモリから補助メモリに退避し、前記メモリイメージが前記アルファブレンド演算処理のために必要な時には、補助メモリから主メモリに呼び戻すストレージデバイス管理手段と、を有することを特徴とする。
【００１１】
ここで、主メモリとは、Ｓ−ＲＡＭやＤ−ＲＡＭ等の半導体メモリからなる高速の一次記憶装置のことであり、補助メモリとはフラッシュメモリや回転磁気ディスクなどの、低速大容量の二次記憶装置のことである。
【００１２】
本発明の画像処理プログラムは、コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算機能と、前記アルファブレンド演算手段が確保した主メモリ中のキャンバスのメモリイメージを主メモリから補助メモリに退避し、前記メモリイメージが前記アルファブレンド演算処理のために必要な時には、補助メモリから主メモリに呼び戻すストレージデバイス管理機能と、をコンピュータに実現させることを特徴とする。
【００１３】
ここで、主メモリとは、Ｓ−ＲＡＭやＤ−ＲＡＭ等の半導体メモリからなる高速の一次記憶装置のことであり、補助メモリとはフラッシュメモリや回転磁気ディスクなどの、低速大容量の二次記憶装置のことである。
【発明の効果】
【００１４】
本発明の画像処理装置は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算部と、前記アルファブレンド演算部が確保した主メモリ中のキャンバスのメモリイメージを主メモリから補助メモリに退避し、前記メモリイメージが前記アルファブレンド演算処理のために必要な時には、補助メモリから主メモリに呼び戻すストレージデバイス管理部と、を有することを特徴とする。
【００１５】
このため、透明度属性を有するキャンバスが複数層重なって存在するページ記述言語の変換処理の際に、前記複数層のキャンバスによって主メモリが圧迫されること無く、アルファブレンド演算処理に必要なキャンバス層のみが主メモリに呼び戻されてアルファブレンド演算処理が行われるため、メモリオーバーフローを発生することなく、画像の変換処理が可能となった。
【００１６】
また、本発明の画像処理装置は、前記ページ記述言語中に前記キャンバスが入れ子構造に記述された場合に、前記ページ記述言語を前記キャンバスの入れ子構造を保ったまま中間言語に変換する中間言語変換部を有し、前記アルファブレンド演算部は、前記入れ子構造を保った中間言語に基づいて前記透明度属性の合成を行うことを特徴としてもよい。
【００１７】
このため、入れ子構造による複数層のキャンバスが重なるような場合であっても、メモリオーバーフローを発生することなく、画像の変換処理が可能となった。
【００１８】
また、本発明の画像処理装置は前記ページ記述言語がＸＭＬ（Extended Markup Language）拡張形式により記述されたものであることを特徴としてもよい。
【００１９】
このため、ＸＭＬ（Extended Markup Language）拡張形式でのページ記述言語においても、メモリオーバーフローを発生することなく、画像の変換処理が可能となった。
【００２０】
本発明の画像処理方法は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算手段と、前記アルファブレンド演算手段が確保した主メモリ中のキャンバスのメモリイメージを主メモリから補助メモリに退避し、前記メモリイメージが前記アルファブレンド演算処理のために必要な時には、補助メモリから主メモリに呼び戻すストレージデバイス管理手段と、を有することを特徴とする。
【００２１】
このため、透明度属性を有するキャンバスが複数層重なって存在するページ記述言語の変換処理の際に、前記複数層のキャンバスによって主メモリが圧迫されること無く、アルファブレンド演算処理に必要なキャンバス層のみが主メモリに呼び戻されてアルファブレンド演算処理が行われるため、メモリオーバーフローを発生することなく、画像の変換処理が可能となった。
【００２２】
本発明の画像処理プログラムは、コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算機能と、前記アルファブレンド演算手段が確保した主メモリ中のキャンバスのメモリイメージを主メモリから補助メモリに退避し、前記メモリイメージが前記アルファブレンド演算処理のために必要な時には、補助メモリから主メモリに呼び戻すストレージデバイス管理機能と、をコンピュータに実現させることを特徴とする。
【００２３】
このため、透明度属性を有するキャンバスが複数層重なって存在するページ記述言語の変換処理の際に、前記複数層のキャンバスによって主メモリが圧迫されること無く、アルファブレンド演算処理に必要なキャンバス層のみが主メモリに呼び戻されてアルファブレンド演算処理が行われるため、メモリオーバーフローを発生することなく、画像の変換処理が可能となった。
【発明を実施するための最良の形態】
【００２４】
ページ記述言語を中間言語に変換する画像処理を行う画像処理装置、画像処理方法及び画像処理プログラムにおいて、透明度属性を有するキャンバスが複数層重なる場合に、アルファブレンド演算処理を行うために保持されるキャンバスのイメージにより主メモリが足りなくなってしまい、メモリオーバーフローが発生して画像変換処理ができなくなってしまう問題点を、演算処理中に直近には必要としないキャンバスのメモリイメージを主メモリから補助メモリに退避して、アルファブレンド演算処理のために前記メモリイメージが必要なときに、補助メモリから主メモリに呼び戻すことにより解決した。
【実施例】
【００２５】
本発明の実施例に係る画像処理装置について以下に説明する。
【００２６】
［透明度属性の合成；アルファブレンドについて］
アルファブレンドとは、２つのそれぞれに色値を有する画像をある係数により半透明合成することである。この係数をアルファ値といい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）のアルファブレンド演算を行った場合の描画を示す。ただし、カラー表記ができないため、グレースケールに変換して描画してある。
【００６８】
［退避されるレイヤの例］
図７に三層に重なるキャンバスのレイヤについての例を示す。図７（Ａ）に透明度属性を有するキャンバス上に三角形の描画オブジェクトが載っており、図７（Ｂ）にその下層にある透明度属性を有するキャンバス、図７（Ｃ）にさらにその下層にあるキャンバス（キャンバスではなく、最終のメモリイメージを描画するページであっても良い）を示す。
【００６９】
この場合に、描画の処理はまず下層から行われ、図７（Ｃ）のキャンバス（又はページ）のイメージを展開するために主メモリに記憶容量が確保され、メモリイメージが描画されて、ストレージデバイス１．１１に退避される。同様に、図７（Ｂ）のキャンバスのイメージを展開するために主メモリに記憶容量が確保され、メモリイメージが描画されて、ストレージデバイス１．１１に退避される。
【００７０】
この後、最上位の図７（Ａ）のキャンバスのイメージを展開するために主メモリに記憶容量が確保され、三角形の描画オブジェクトの描画処理及びアルファブレンド演算が行われる。
【００７１】
最上位層の演算処理の終了後、図７（Ｂ）のキャンバスのメモリイメージがストレージデバイス１．１１から主メモリに呼び戻されて最上位層との間でのアルファブレンド演算処理が行われ、次に図７（Ｃ）のキャンバス（又はページ）のメモリイメージがストレージデバイス１．１１から主メモリに呼び戻されて、先ほどアルファブレンド演算処理を終えた上位層との間で、アルファブレンド演算処理が行われる。
【００７２】
［フローチャート］
図８は本発明実施例の画像処理装置の動作のフローチャートである。
【００７３】
画像処理装置において、印刷データを受信すると図８のフローチャートが開始して印刷データの解析を行う。
【００７４】
Ｓ１１：描画部１．５は、透明度のあるキャンバスの開始があるかどうかを判断する。透明度のあるキャンバスがあれば動作をＳ１３に移行する。なければ動作をＳ２９に移行する。
【００７５】
Ｓ１３：メモリ管理部１．９は、キャンバスに必要なバッファサイズをメモリから取得動作を行う。
【００７６】
Ｓ１５：Ｓ１３での取得動作の結果、メモリ管理部１．９は、必要なサイズのメモリがとれたかどうかを判断する。必要なサイズのメモリがとれれば、動作をＳ３１に移行する。取れない場合は、動作をＳ１７に移行する。
【００７７】
Ｓ１７：描画部１．５は、現在注目するレイヤより下のレイヤが存在するかどうかを判断する。下のレイヤが存在する場合は、動作をＳ２１に移行する。レイヤが存在しない場合には、動作をＳ１９に移行する。
【００７８】
Ｓ１９：必要なメモリサイズがとれず、また当該キャンバスより下にレイヤが存在しないので、描画部１．５は、メモリオーバーフロー処理を行って動作を終了する。
【００７９】
Ｓ２１：ストレージデバイス管理部１．１０は、ストレージデバイス１．１１にレイヤ（キャンバスのメモリイメージ）を保存する。
【００８０】
Ｓ２３：メモリ管理部１．９は、保存したメモリ上のレイヤを開放する。
【００８１】
Ｓ２５：描画部１．５は、開始されたキャンバスの描画処理を行う。
【００８２】
Ｓ２７：描画部１．５は、ページの描画が終了したかどうかを判断する。終了した場合は、動作を終了する。終了していない場合は、動作をＳ１１に移行して繰り返す。
【００８３】
Ｓ２９：描画部１．５は、透明度のあるキャンバスは終了したかどうかを判断する。
【００８４】
Ｓ３１：描画部１．５は、現在のレイヤへの描画処理を行う。
【００８５】
Ｓ３３：描画部１．５は、現在注目するレイヤより下のレイヤが存在するかどうかを判断する。下のレイヤが存在する場合は、動作をＳ３５に移行する。レイヤが存在しない場合には、動作をＳ２７に移行する。
【００８６】
Ｓ３５：ストレージデバイス管理部１．１０は、ストレージデバイスからレイヤを読み出す。
【００８７】
Ｓ３７：描画部１．５は、下のレイヤへキャンバスの描画処理を行う。
【００８８】
［実施例の効果］
本発明実施例の画像処理装置により、以下のことが可能となった。
【００８９】
XPS等のXML拡張形式等のページ記述言語によって記述された入れ子構造を有する描画オブジェクト、キャンバスの透明度属性の合成（アルファブレンド演算）を行う際に、複数層重なるキャンバスのイメージを主メモリから補助メモリにいったん退避させて、アルファブレンド演算処理が必要なときに、補助メモリから主メモリに戻す手法を採ることにより、キャンバスのイメージデータにより主メモリのリソースが枯渇して、メモリオーバーフローにより演算処理が停止してしまうことを回避することが可能となる。
【００９０】
［その他］
色値は、実施例中ではＲＧＢの三原色に基づくものを示したが、ＣＭＹＫの色値であってもよく、同様にアルファブレンド演算が可能である。
【図面の簡単な説明】
【００９１】
【図１】XPSによるアルファ値、カラー値、透明度、透明マスクの表記例である。
【図２】キャンバスへの描画時のアルファブレンド（透明度設定なし）の概念図である。
【図３】キャンバスへの描画時のアルファブレンド（透明度設定あり）の概念図である。
【図４】本発明実施例の画像処理装置の機能ブロック図である。
【図５】本発明実施例のディスプレイリストのデータ構造例である。
【図６】ネスト化されたキャンバスのXPSでの表記例（Ｅ）とその対応図面（透明度設定あり（Ｆ）及びなし（Ｇ））である。
【図７】三層からなるキャンバスでの演算処理についての説明図である。
【図８】本発明実施例の画像処理装置の動作のフローチャートである。
【符号の説明】
【００９２】
１．１  通信インタフェース
１．２  データ受信部
１．３  データ解析部
１．４  描画データ処理部（中間言語変換部）
１．５  描画部（アルファブレンド演算部）
１．６  出力部
１．７  システム制御部
１．８  エラー制御部
１．９  メモリ管理部
１．１０  ストレージデバイス管理部
１．１１  ストレージデバイス（補助メモリ；二次記憶装置）
【図１】
2010086239.tif 000003
【図２】
2010086239.tif 000004
【図３】
2010086239.tif 000005
【図４】
2010086239.tif 000006
【図５】
2010086239.tif 000007
【図６】
2010086239.tif 000008
【図７】
2010086239.tif 000009
【図８】
2010086239.tif 000010