(57)【要約】【課題】  透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置において、透明度処理をともなうキャンバスの重ね合わせの回数が多いデータの場合にメモリオーバーフローが発生して描画処理が停止してしまうことを解決すること。【解決手段】  本発明の画像処理装置では、アルファブレンド演算処理が行なわれている層（注目層）から下位方向に２層以下のイメージ層は、当該注目層のアルファブレンド演算には必要ないので圧縮処理を行なってデータサイズを縮小する。データサイズが縮小されたことによりメモリに空き容量が得られて、メモリオーバーフローが発生するのを回避することが可能となる。一旦圧縮されたイメージ層は、再利用する際には伸張処理が行われて元のデータに戻されて処理が行なわれる。【選択図】図８
2011065413.tif 000002
【特許請求の範囲】
【請求項１】
透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、
前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量をメモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算部と、
前記アルファブレンド演算部がアルファブレンド演算を行う際に、当該アルファブレンド演算に関与していないイメージ層を判断する圧縮可能層判断部と、
前記圧縮可能層判断部により、前記アルファブレンド演算に関与していないと判断されたイメージ層を圧縮し、当該圧縮されたイメージ層を再度利用する際に伸張して元のデータに戻す圧縮伸張部と、を有する
ことを特徴とする画像処理装置。
【請求項２】
請求項１の画像処理装置であって、
前記圧縮可能層判断部は、前記アルファブレンド演算部が前記アルファブレンド演算処理を行なっている層から下位方向に二層以下の層について、当該アルファブレンド演算に関与していないイメージ層であると判断する
ことを特徴とする画像処理装置。
【請求項３】
請求項１又は２の画像処理装置であって、
前記ページ記述言語中に前記キャンバスが入れ子構造に記述された場合に、前記ページ記述言語を前記キャンバスの入れ子構造を保ったまま中間言語に変換する中間言語変換部を有し、
前記アルファブレンド演算部は、前記入れ子構造を保った中間言語に基づいて前記透明度属性の合成を行う
ことを特徴とする画像処理装置。
【請求項４】
請求項１又は２の画像処理装置であって、
前記ページ記述言語がＸＭＬ（Extended Markup Language）拡張形式により記述されたものである
ことを特徴とする画像処理装置。
【請求項５】
透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、
前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算手段と、
前記アルファブレンド演算手段がアルファブレンド演算を行う際に、当該アルファブレンド演算に関与していないイメージ層を判断する圧縮可能層判断手段と、
前記圧縮可能層判断手段により、前記アルファブレンド演算に関与していないと判断されたイメージ層を圧縮し、当該圧縮されたイメージ層を再度利用する際に伸張して元のデータに戻す圧縮伸張手段と、を有する
ことを特徴とする画像処理方法。
【請求項６】
コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、
前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算機能と、
前記アルファブレンド演算機能がアルファブレンド演算を行う際に、当該アルファブレンド演算に関与していないイメージ層を判断する圧縮可能層判断機能と、
前記圧縮可能層判断機能により、前記アルファブレンド演算に関与していないと判断されたイメージ層を圧縮し、当該圧縮されたイメージ層を再度利用する際に伸張して元のデータに戻す圧縮伸張機能と、を有する
ことを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
透明度属性を有する描画オブジェクトと該描画オブジェクトを描画する土台であり透明度属性を有するキャンバスとを表記可能であるページ記述言語について、そのビットマップ変換をする際に、複数層重なるキャンバスと描画オブジェクトによって主メモリが消費されてしまうことにより、描画変換処理が行えなくなってしまうことを抑制する技術に関するものである。
【背景技術】
【０００２】
XPS等のXML拡張形式で記述されたページ記述言語においては、透明度属性を有した描画オブジェクト（パスやフォントやイメージ等）及び前記描画オブジェクトの描画の土台となる透明度属性を有したキャンバスが複数層重なって存在させることが可能であり、これらが複数層重なった描画オブジェクト及びキャンバスの透明度属性の合成処理（アルファブレンド演算処理）を行う際には、該キャンバスの層毎に前記アルファブレンド演算処理のためのメモリの確保と、該アルファブレンド演算処理が必要となる。しかし、この場合にキャンバスが複数層重なっている場合には、一番上の層となるレイヤ（イメージ層）の描画が終わるまで、その下に構成されるアルファブレンド演算が行われるレイヤ（イメージ層）を保持する必要がある。そのため、当該レイヤ（イメージ層）のイメージを保持しておくバッファが主メモリを圧迫し、メモリオーバーフローを発生させてしまうという問題があった。
【０００３】
従来技術として、アルファブレンド演算処理の前にデバイスの色域に圧縮するか、デバイスの色域に圧縮してからアルファブレンド処理を行うかによって、レンダリング結果が異なるため、カラーマッチング手段によりどちらが適正化を判断して、より適切な方法を選択する方法があった（特許文献１参照）。
【０００４】
しかし、この方法でも前記したキャンバスのイメージを保持しておくために主メモリが圧迫されてしまいメモリオーバーフローが発生することを抑制することはできなかった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３４５１９７号公報
【非特許文献】
【０００６】
【非特許文献１】XML Paper Specification, XPS Specification and Reference Guide Version 1.0
【発明の概要】
【発明が解決しようとする課題】
【０００７】
解決しようとする問題点は、ページ記述言語を中間言語に変換する画像処理を行う画像処理装置、画像処理方法及び画像処理プログラムにおいて、透明度属性を有するキャンバスが複数層重なる場合にアルファブレンド演算処理を行うために保持されるキャンバスのイメージにより主メモリが足りなくなってしまい、メモリオーバーフローを発生させてしまうことを防止することができなかった点である。
【課題を解決するための手段】
【０００８】
本発明の画像処理装置は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量をメモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算部と、前記アルファブレンド演算部がアルファブレンド演算を行う際に、当該アルファブレンド演算に関与していないイメージ層を判断する圧縮可能層判断部と、前記圧縮可能層判断部により、前記アルファブレンド演算に関与していないと判断されたイメージ層を圧縮し、当該圧縮されたイメージ層を再度利用する際に伸張して元のデータに戻す圧縮伸張部と、を有することを特徴とする。
【０００９】
本発明の画像処理方法は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算手段と、前記アルファブレンド演算手段がアルファブレンド演算を行う際に、当該アルファブレンド演算に関与していないイメージ層を判断する圧縮可能層判断手段と、前記圧縮可能層判断手段により、前記アルファブレンド演算に関与していないと判断されたイメージ層を圧縮し、当該圧縮されたイメージ層を再度利用する際に伸張して元のデータに戻す圧縮伸張手段と、を有することを特徴とする。
【００１０】
本発明の画像処理プログラムは、コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算機能と、前記アルファブレンド演算機能がアルファブレンド演算を行う際に、当該アルファブレンド演算に関与していないイメージ層を判断する圧縮可能層判断機能と、前記圧縮可能層判断機能により、前記アルファブレンド演算に関与していないと判断されたイメージ層を圧縮し、当該圧縮されたイメージ層を再度利用する際に伸張して元のデータに戻す圧縮伸張機能と、を有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、透明度属性を有するキャンバスが複数層重なって存在するページ記述言語の変換処理の際に、アルファブレンド演算を行う際に必要の無いイメージ層について圧縮処理を行なうため、メモリに余裕ができる。このため、メモリオーバーフローを発生させてしまうことを防止する。
【図面の簡単な説明】
【００１２】
【図１】XPSによるアルファ値、カラー値、透明度、透明マスクの表記例である。
【図２】キャンバスへの描画時のアルファブレンド（透明度設定なし）の概念図である。
【図３】キャンバスへの描画時のアルファブレンド（透明度設定あり）の概念図である。
【図４】本発明実施例の画像処理装置の機能ブロック図である。
【図５】本発明実施例のディスプレイリストのデータ構造例である。
【図６】ネスト化されたキャンバスのXPSでの表記例（Ｅ）とその対応図面（透明度設定あり（Ｆ）及びなし（Ｇ））である。
【図７】三層からなるキャンバスでの演算処理での圧縮可能層についての説明図である。
【図８】本発明実施例の画像処理装置の動作のフローチャートである。
【発明を実施するための形態】
【００１３】
本発明の実施例に係る画像処理装置について以下に説明する。
【実施例１】
【００１４】
［透明度属性の合成；アルファブレンドについて］
アルファブレンドとは、２つのそれぞれに色値を有する画像をある係数により半透明合成することである。この係数をアルファ値といい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で完全に透明な何も描かれない状態で残る。そのため、描画されたオブジェクトの部分にのみ、透明度処理の効果がでる（図３（Ｃ）参照）。
【００２９】
概念的には上記したステップを経るが、同一キャンバス上にこのとおりの処理をしようとすると、オブジェクトが重なった場合などは、デスティネーションのアルファ値を考慮した図２（Ａ）の厳密なブレンド処理を行うことになる（図３（Ｄ））。
【００３０】
［構成］
図４は、本発明の実施例に係る画像処理装置の機能ブロック図である。
【００３１】
本発明の実施例に係る画像処理装置は、通信インタフェース１．１、データ受信部１．２、データ解析部１．３、描画データ処理部１．４（中間言語変換部）、描画部１．５（アルファブレンド演算部）、出力部１．６、システム制御部１．７、エラー制御部１．８、メモリ管理部１．９、ストレージデバイス管理部１．１０、ストレージデバイス１．１１の各機能部を有する。以下に各機能部について説明する。
【００３２】
通信インタフェース１．１は、ＮＩＣ（Network Interface Card）等により構成され、ホストコンピュータ等との通信を行う。
【００３３】
データ受信部１．２は、通信インタフェース１．１を介してデータ（ページ記述言語で記載してある印刷データ）を受信する。
【００３４】
データ解析部１．３は、送られてきたページ記述言語で記述された印刷データの解析を行なう。
【００３５】
描画データ処理部１．４（中間言語変換部）は、前記データ解析部１．３からの指示に従い、ページ記述言語を中間言語（ここでは、具体的にはディスプレイリスト）に変換する。
【００３６】
XPS等のXML拡張形式で記述されたページ記述言語中には、描画オブジェクトである、パス、グリフス（フォント）、イメージ等のエレメントがあり、これら描画オブジェクトを表示するための土台となるキャンバスがある。これらエレメントやキャンバスは、それぞれに透明度属性を有している。又、キャンバスは、並列に記述するだけでなく、多層構造を表すためにひとつのキャンバス中に他のキャンバスを包含する記述を行ない、さらに、この包含するキャンバスの構成をさらに重ねてゆく「入れ子構造」（ネスト構造）をとる。そして、その中に含むキャンバスやエレメントをひとつのグループとして扱うことが可能となる。
【００３７】
描画データ処理部１．４は、前記した入れ子構造をとるキャンバスデータを、その入れ子構造を保ったまま中間言語に変換する。ひとつのキャンバスオブジェクトがディスプレイリストに変換された際のデータ構造を図５に示す。
【００３８】
キャンバスのオブジェクトは、その開始を示す「Start」マークに続き、キャンバス上に存在する描画オブジェクト又はキャンバスオブジェクトのディスプレイリスト、キャンバスの終了を示す「End」マーク、その後にキャンバスの透明度情報が続き、キャンバスの下層への描画を示す「Write」コマンドで終了する。
【００３９】
キャンバスが入れ子構造となっている場合には、前記した「Start」マークと「End」マークとの間に入れ子となるキャンバスオブジェクトへのポインターが入る。
【００４０】
描画部１．５は、描画データ処理部１．４で作成されたディスプレイリスト（中間言語）からVRAM（描画メモリ）にビットマップデータを作成する。アルファブレンドの演算処理はここ描画部１．５において行われる。
【００４１】
圧縮可能層判断部１．５．１は、前記アルファブレンド演算部１．５．１がアルファブレンド演算処理を行なう際に、直近の演算処理には必要の無いレイヤ（イメージ層）であるかどうかの判断を行なう。直近の演算処理に必要が無い場合には、そのレイヤ（イメージ層）を圧縮してメモリに余裕を持たせることが可能である。実際にその判断は、前記アルファブレンド演算部１．５．１が前記アルファブレンド演算処理を行なっている層から下位方向に二層以下の層については、前記アルファブレンド演算に必要ないと判断する。より詳細な説明については、図７を用いて（圧縮による省メモリ化）の項目において後述する。
【００４２】
圧縮伸張部１．５．３は、ＡＳＩＣ（Application Specific Integrated Circuit）等により構成され、前記圧縮可能層判断部１．５．１により、圧縮が可能であると判断されたレイヤ（イメージ層）を圧縮する。又、圧縮された層を再度利用する際には、圧縮されたデータを伸張する。圧縮によりデータのサイズが縮小されて、メモリに余裕ができるため他の描画処理等によりメモリを多く使用可能になる。
【００４３】
出力部１．６は、印刷エンジン、ディスプレイデバイスその他の出力デバイスにより構成されており、上記の各機能部で画像処理が行われて得られたビットマップデータを出力する。前記出力とは、用紙などの記録媒体に印刷することであってもよいし、ディスプレイデバイスに表示出力を行う方法でもよい。
【００４４】
システム制御部１．７は、画像処理装置システムの共通情報を管理し、システムの制御を行なう。
【００４５】
エラー制御部１．８は、画像処理装置のエラーが発生した場合の処理を制御する。
【００４６】
メモリ管理部１．９は、画像処理装置のシステムのメモリ（主メモリ；一次記憶装置）を管理する。
【００４７】
ストレージデバイス管理部１．１０は、ハードディスクなどの二次記憶装置（補助メモリ）への読み書きを制御する。本画像処理装置においては、透明度属性を有する複数層のキャンバスが重なる場合などには、アルファブレンド演算処理に必要な層のキャンバスのイメージのみを主メモリに保持し、直近には必要としないキャンバスのイメージは後述の圧縮伸張部１．５．３により圧縮処理を行ない、その後ハードディスクに退避して、他のキャンバスとの間でのアルファブレンド演算が必要となった時に主メモリに呼び戻して、圧縮伸張部１．５．３によりデータの伸張を行なって演算処理を行う。
【００４８】
ストレージデバイス１．１１（補助メモリ）は、ハードディスク等により構成される二次記憶装置（補助メモリ）である。
【００４９】
本発明の実施例に係る画像処理装置は不図示のコンピュータを備える。このコンピュータは、本発明の実施例にかかる画像処理プログラムを実行することにより、データ受信部１．２、データ解析部１．３、描画データ処理部１．４、描画部１．５、圧縮可能層判断部１．５．１、システム制御部１．７、エラー制御部１．８、メモリ管理部１．９、およびストレージデバイス管理部１．１０として機能する。更に、前記コンピュータは、本発明の実施例にかかる画像処理プログラムを実行することにより、画像処理装置の構成要素を制御して、圧縮伸張部１．５．３、出力部１．６およびストレージデバイス１．１１として機能させる。
【００５０】
［アルファブレンド演算アルゴリズム］
図５で示した入れ子構造を有するディスプレイリスト（中間言語）のアルファブレンドの演算は以下に示す再帰アルゴリズムにより効率よく計算される。
【００５１】
一つのキャンバスの透過の計算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）のアルファブレンド演算を行った場合の描画を示す。ただし、カラー表記ができないため、グレースケールに変換して描画してある。
【００５９】
［退避されるレイヤの例］
図７に三層に重なるキャンバスのレイヤについての例を示す。図７（Ａ）に透明度属性を有するキャンバス上に三角形の描画オブジェクトが載っており、図７（Ｂ）にその下層にある透明度属性を有するキャンバス、図７（Ｃ）にさらにその下層にあるキャンバス（キャンバスではなく、最終のメモリイメージを描画するページであっても良い）を示す。
【００６０】
この場合に、描画の処理はまず下層から行われ、図７（Ｃ）のキャンバス（又はページ）のイメージを展開するために主メモリに記憶容量が確保され、メモリイメージが描画されて、ストレージデバイス１．１１に退避される。同様に、図７（Ｂ）のキャンバスのイメージを展開するために主メモリに記憶容量が確保され、メモリイメージが描画されて、ストレージデバイス１．１１に退避される。
【００６１】
この後、最上位の図７（Ａ）のキャンバスのイメージを展開するために主メモリに記憶容量が確保され、三角形の描画オブジェクトの描画処理及びアルファブレンド演算が行われる。
【００６２】
最上位層の演算処理の終了後、図７（Ｂ）のキャンバスのメモリイメージがストレージデバイス１．１１から主メモリに呼び戻されて最上位層との間でのアルファブレンド演算処理が行われ、次に図７（Ｃ）のキャンバス（又はページ）のメモリイメージがストレージデバイス１．１１から主メモリに呼び戻されて、先ほどアルファブレンド演算処理を終えた上位層との間で、アルファブレンド演算処理が行われる。
【００６３】
［圧縮による省メモリ化］
キャンバスを用いた重ね合わせは、前述のように複数のレイヤ（イメージ層）を重ねることができる。Opacity値、OpacityMask値が含まれるキャンバスが重なる場合、上記手段によると、一番上の層となるレイヤの描画が終わるまで、その下に構成されるレイヤを保持する必要がある。そのため、連続階調のイメージを保持しておくバッファがメモリを圧迫し、メモリーオーバーフローエラーが発生しやすいという問題があった。
【００６４】
メモリオーバーフローがおこる問題に対し、本発明では、描画処理が行われてようとしているレイヤと、その一つ下位のレイヤより下層（アルファブレンド演算を行なっている層から下位方向に二層以下の層）のイメージバッファの圧縮を行うことで、メモリの消費を抑制する。
【００６５】
例えば、図７の一番上位の（Ｃ）レイヤのバッファをメモリ空間に割当しようとした際、そのメモリが取れなかった場合、１つ下位の（Ｂ）レイヤを圧縮することはできない。その理由は、アロケート直後に（Ｂ）レイヤの画像を（Ｃ）レイヤにコピーする必要があるためである。しかしながら、（Ｃ）層から二層下位の（Ａ）レイヤは上記のようなコピーの必要がないため圧縮を行なっても問題は発生しない。
【００６６】
（Ａ）レイヤを圧縮することにより、（Ｃ）レイヤのためのイメージのバッファをメモリ空間に確保（割り当て）できる可能性が高くなる。これにより、メモリオーバーフローの発生を回避可能となり、複雑な印刷データであっても途中でメモリオーバーフローを発生させることなく処理することが可能となる。
【００６７】
また、圧縮されたレイヤは一段上位のレイヤの描画処理が終了した時（図７においての（Ｂ）レイヤの描画処理が終了した時）に、再度メモリ上に伸張処理を行い、レイヤ同士の重ね合わせ処理を行う。
【００６８】
上記の圧縮可能である層かどうかの判断は圧縮可能層判断部１．５．１が行なう。この判断は、上記したように注目層から下位方向に二層以下という簡単なアルゴリズムにより判断可能であるため、処理が高速に行なえる。
【００６９】
また、圧縮可能と判断された場合の圧縮及び当該圧縮されたデータを再度利用するために元データに戻すための伸張の処理は、圧縮伸張部１．５．３により行なわれる。具体的には、圧縮伸張の処理は、その処理専用のハードウェアである圧縮ＡＳＩＣ（Application Specific Integrated Circuit）等の専用ハードウェアによって行なわれる。また、この圧縮伸張の専用ハードウェアを有せずに当該処理を画像処理装置のコンピュータがソフトウェアを実行する方法によって実現することも可能である（この場合、コンピュータ自身が圧縮伸張部１．５．３として機能する。）。
【００７０】
［フローチャート］
図８は本発明の実施例に係る画像処理装置の動作のフローチャートである。
【００７１】
画像処理装置において、印刷データを受信すると図８のフローチャートが開始して印刷データの解析を行う。
【００７２】
Ｓ１１：描画部１．５は、透明度のあるキャンバスの開始があるかどうかを判断する。透明度のあるキャンバスがあれば動作をＳ１３に移行する。なければ動作をＳ２９に移行する。
【００７３】
Ｓ１３：メモリ管理部１．９は、キャンバスに必要なバッファサイズをメモリから取得する動作を行う。
【００７４】
Ｓ１５：Ｓ１３での取得動作の結果、メモリ管理部１．９は、必要なサイズのメモリがとれたかどうかを判断する。必要なサイズのメモリが取得できれば、動作をＳ３１に移行する。取得できない場合は、動作をＳ１７に移行する。
【００７５】
Ｓ１７：圧縮可能層判断部１．５．１は、現在注目するレイヤより下に圧縮可能なレイヤが存在するかどうかを判断する。圧縮可能な下層のレイヤが存在する場合は、動作をＳ２１に移行する。レイヤが存在しない場合には、動作をＳ１９に移行する。
【００７６】
Ｓ１９：必要なメモリサイズがとれず、また当該キャンバスより下にレイヤが存在しないので、描画部１．５は、メモリオーバーフロー処理を行って動作を終了する。
【００７７】
Ｓ２１：圧縮伸張部１．５．３は、圧縮可能なレイヤを圧縮する。圧縮後はＳ１５に戻って動作を繰り返す。圧縮後に元ファイルを消去してメモリに圧縮前後の差分だけ空き領域が発生する。
【００７８】
Ｓ２９：描画部１．５は、透明度のあるキャンバスは終了したかどうかを判断する。終了したと判断した場合には、動作をＳ３３に移行する。終了していないと判断した場合には、動作をＳ３１に移行する。
【００７９】
Ｓ３１：描画部１．５は、現在のレイヤへの描画処理を行う。
【００８０】
Ｓ３３：描画部１．５は、現在注目するレイヤの下層のレイヤが圧縮されているかどうかを判断する。圧縮された下層のレイヤが存在する場合は、動作をＳ３５に移行する。当該レイヤが存在しない場合には、動作をＳ３７に移行する。
【００８１】
Ｓ３５：圧縮伸張部１．５．３は、圧縮された下層のレイヤのデータを伸張して元のデータに戻す。
【００８２】
Ｓ３７：描画部１．５は、下のレイヤへキャンバスの描画処理を行う。
【００８３】
Ｓ３９：描画部１．５は、ページの描画が終了したかどうかを判断する。ページの描画が終了したと判断した場合は、動作を終了する。終了していないと判断した場合は、Ｓ１１に移行して動作を繰り返す。
【００８４】
以上の一連の動作により、画像処理装置において、不要のイメージバッファの圧縮を行なってキャンバスの透明度属性の合成処理が完了する。
【００８５】
［実施例の効果］
本発明実施例の画像処理装置により、以下のことが可能となった。
【００８６】
XPS等のXML拡張形式等のページ記述言語によって記述された入れ子構造を有する描画オブジェクトとキャンバスを透明度属性に基づいて合成（アルファブレンド演算）する際に、現在処理されている層とそのひとつ下位の層より下位の層、すなわち注目層より二層以下の層のイメージバッファを圧縮しておくことにより、メモリのリソースが枯渇して、メモリオーバーフローにより演算処理が停止してしまうことを回避することが可能となる。
【００８７】
本発明の実施例に係る画像処理装置では、圧縮伸張処理を圧縮ＡＳＩＣ等の専用のハードウェアで行なうため、圧縮伸張にかかる処理時間の遅延は非常に少なく、処理全体を大きく遅らせることはない。
【００８８】
圧縮可能かどうかの判断は、注目層から下位方向に二層以下であるかどうかという単純なアルゴリズムであるために、キャンバスの入れ子構造間の遷移時に簡単に判断可能であり、その判断処理時間は非常に短く、処理全体を大きく遅らせることはない。
【００８９】
［その他］
色値は、実施例中ではＲＧＢの三原色に基づくものを示したが、ＣＭＹＫの色値であってもよく、同様にアルファブレンド演算が可能である。
【００９０】
上記の圧縮処理によって空き容量に余裕が出るメモリは、一次記憶装置である主メモリに関してだけであってもよい。また、フラッシュメモリや回転磁気ディスク装置等の二次記憶装置を含めてのメモリということであってもよい。
【００９１】
上記の実施例に係る画像処理装置においては、ストレージデバイス管理部１．１０及びストレージデバイス１．１１を有して、必要の無いレイヤ（イメージ層）を退避する構成について説明したが、ストレージデバイス１．１１及びその管理部１．１０を有さずに、一次記憶装置の主メモリだけを有する構成の画像処理装置であっても、本発明は適用可能である。
【符号の説明】
【００９２】
１．１  通信インタフェース
１．２  データ受信部
１．３  データ解析部
１．４  描画データ処理部（中間言語変換部）
１．５  描画部（アルファブレンド演算部）
１．５．１  圧縮可能層判断部
１．５．３  圧縮伸張部
１．６  出力部
１．７  システム制御部
１．８  エラー制御部
１．９  メモリ管理部
１．１０  ストレージデバイス管理部
１．１１  ストレージデバイス（補助メモリ；二次記憶装置）
【図４】
2011065413.tif 000003
【図８】
2011065413.tif 000004
【図１】
2011065413.tif 000005
【図２】
2011065413.tif 000006
【図３】
2011065413.tif 000007
【図５】
2011065413.tif 000008
【図６】
2011065413.tif 000009
【図７】
2011065413.tif 000010