JP2011065413A - 画像処理装置、画像処理方法及び画像処理プログラム - Google Patents
画像処理装置、画像処理方法及び画像処理プログラム Download PDFInfo
- Publication number
- JP2011065413A JP2011065413A JP2009215447A JP2009215447A JP2011065413A JP 2011065413 A JP2011065413 A JP 2011065413A JP 2009215447 A JP2009215447 A JP 2009215447A JP 2009215447 A JP2009215447 A JP 2009215447A JP 2011065413 A JP2011065413 A JP 2011065413A
- Authority
- JP
- Japan
- Prior art keywords
- layer
- image
- alpha
- alpha blend
- canvas
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Image Generation (AREA)
Abstract
【課題】 透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置において、透明度処理をともなうキャンバスの重ね合わせの回数が多いデータの場合にメモリオーバーフローが発生して描画処理が停止してしまうことを解決すること。
【解決手段】 本発明の画像処理装置では、アルファブレンド演算処理が行なわれている層(注目層)から下位方向に2層以下のイメージ層は、当該注目層のアルファブレンド演算には必要ないので圧縮処理を行なってデータサイズを縮小する。データサイズが縮小されたことによりメモリに空き容量が得られて、メモリオーバーフローが発生するのを回避することが可能となる。一旦圧縮されたイメージ層は、再利用する際には伸張処理が行われて元のデータに戻されて処理が行なわれる。
【選択図】図8
【解決手段】 本発明の画像処理装置では、アルファブレンド演算処理が行なわれている層(注目層)から下位方向に2層以下のイメージ層は、当該注目層のアルファブレンド演算には必要ないので圧縮処理を行なってデータサイズを縮小する。データサイズが縮小されたことによりメモリに空き容量が得られて、メモリオーバーフローが発生するのを回避することが可能となる。一旦圧縮されたイメージ層は、再利用する際には伸張処理が行われて元のデータに戻されて処理が行なわれる。
【選択図】図8
Description
透明度属性を有する描画オブジェクトと該描画オブジェクトを描画する土台であり透明度属性を有するキャンバスとを表記可能であるページ記述言語について、そのビットマップ変換をする際に、複数層重なるキャンバスと描画オブジェクトによって主メモリが消費されてしまうことにより、描画変換処理が行えなくなってしまうことを抑制する技術に関するものである。
XPS等のXML拡張形式で記述されたページ記述言語においては、透明度属性を有した描画オブジェクト(パスやフォントやイメージ等)及び前記描画オブジェクトの描画の土台となる透明度属性を有したキャンバスが複数層重なって存在させることが可能であり、これらが複数層重なった描画オブジェクト及びキャンバスの透明度属性の合成処理(アルファブレンド演算処理)を行う際には、該キャンバスの層毎に前記アルファブレンド演算処理のためのメモリの確保と、該アルファブレンド演算処理が必要となる。しかし、この場合にキャンバスが複数層重なっている場合には、一番上の層となるレイヤ(イメージ層)の描画が終わるまで、その下に構成されるアルファブレンド演算が行われるレイヤ(イメージ層)を保持する必要がある。そのため、当該レイヤ(イメージ層)のイメージを保持しておくバッファが主メモリを圧迫し、メモリオーバーフローを発生させてしまうという問題があった。
従来技術として、アルファブレンド演算処理の前にデバイスの色域に圧縮するか、デバイスの色域に圧縮してからアルファブレンド処理を行うかによって、レンダリング結果が異なるため、カラーマッチング手段によりどちらが適正化を判断して、より適切な方法を選択する方法があった(特許文献1参照)。
しかし、この方法でも前記したキャンバスのイメージを保持しておくために主メモリが圧迫されてしまいメモリオーバーフローが発生することを抑制することはできなかった。
XML Paper Specification, XPS Specification and Reference Guide Version 1.0
解決しようとする問題点は、ページ記述言語を中間言語に変換する画像処理を行う画像処理装置、画像処理方法及び画像処理プログラムにおいて、透明度属性を有するキャンバスが複数層重なる場合にアルファブレンド演算処理を行うために保持されるキャンバスのイメージにより主メモリが足りなくなってしまい、メモリオーバーフローを発生させてしまうことを防止することができなかった点である。
本発明の画像処理装置は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量をメモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算部と、前記アルファブレンド演算部がアルファブレンド演算を行う際に、当該アルファブレンド演算に関与していないイメージ層を判断する圧縮可能層判断部と、前記圧縮可能層判断部により、前記アルファブレンド演算に関与していないと判断されたイメージ層を圧縮し、当該圧縮されたイメージ層を再度利用する際に伸張して元のデータに戻す圧縮伸張部と、を有することを特徴とする。
本発明の画像処理方法は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算手段と、前記アルファブレンド演算手段がアルファブレンド演算を行う際に、当該アルファブレンド演算に関与していないイメージ層を判断する圧縮可能層判断手段と、前記圧縮可能層判断手段により、前記アルファブレンド演算に関与していないと判断されたイメージ層を圧縮し、当該圧縮されたイメージ層を再度利用する際に伸張して元のデータに戻す圧縮伸張手段と、を有することを特徴とする。
本発明の画像処理プログラムは、コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算機能と、前記アルファブレンド演算機能がアルファブレンド演算を行う際に、当該アルファブレンド演算に関与していないイメージ層を判断する圧縮可能層判断機能と、前記圧縮可能層判断機能により、前記アルファブレンド演算に関与していないと判断されたイメージ層を圧縮し、当該圧縮されたイメージ層を再度利用する際に伸張して元のデータに戻す圧縮伸張機能と、を有することを特徴とする。
本発明によれば、透明度属性を有するキャンバスが複数層重なって存在するページ記述言語の変換処理の際に、アルファブレンド演算を行う際に必要の無いイメージ層について圧縮処理を行なうため、メモリに余裕ができる。このため、メモリオーバーフローを発生させてしまうことを防止する。
本発明の実施例に係る画像処理装置について以下に説明する。
[透明度属性の合成;アルファブレンドについて]
アルファブレンドとは、2つのそれぞれに色値を有する画像をある係数により半透明合成することである。この係数をアルファ値といい0.0〜1.0の値をとる。0.0が完全に透明、1.0が完全に不透明な重ね合わせであることを表している。その間の値が半透明である。PDF(Portable Document Format)、およびXPS(XML Paper Specification)ドキュメント形式ではパスによる図形や、フォント、イメージ等のオブジェクトに対してアルファ値が設定でき、描画の際に、下地の色とのアルファブレンド(透明度と色値との合成)が可能になっている。
アルファブレンドとは、2つのそれぞれに色値を有する画像をある係数により半透明合成することである。この係数をアルファ値といい0.0〜1.0の値をとる。0.0が完全に透明、1.0が完全に不透明な重ね合わせであることを表している。その間の値が半透明である。PDF(Portable Document Format)、およびXPS(XML Paper Specification)ドキュメント形式ではパスによる図形や、フォント、イメージ等のオブジェクトに対してアルファ値が設定でき、描画の際に、下地の色とのアルファブレンド(透明度と色値との合成)が可能になっている。
以下にアルファブレンドの透明度の合成処理がどのように行われるかについて、XPSドキュメント形式のデータを例に用いて説明する。
図1にXPSで表記された透明度属性を持つPathのデータを示し、XPS仕様書1.0(非特許文献1参照)の11.4 Opacity Computationsに記載されているアルファブレンドを厳密に行う場合のステップを以下に示す。
(1):ソース側のアルファ値を求める。ソースのアルファ値にOpacityアトリビュートの値とOpacityMaskの値をかける。
(1):ソース側のアルファ値を求める。ソースのアルファ値にOpacityアトリビュートの値とOpacityMaskの値をかける。
As1 = As * Oe * Om
As :ソースエレメントのアルファ値(図1参照)
Oe :ソースエレメントのOpacity値(図1参照)
Om :描画するピクセル位置のソースエレメントのOpacityMask値(図1参照)
(2):(1)で求まったアルファ値(As1)をソースの色値にかける。この処理をPre-multiply source alphaという。下記に示す式のCsはRGBや、Gray、CMYK等のカレントカラースペースにおけるプレーン毎の値である。
As :ソースエレメントのアルファ値(図1参照)
Oe :ソースエレメントのOpacity値(図1参照)
Om :描画するピクセル位置のソースエレメントのOpacityMask値(図1参照)
(2):(1)で求まったアルファ値(As1)をソースの色値にかける。この処理をPre-multiply source alphaという。下記に示す式のCsはRGBや、Gray、CMYK等のカレントカラースペースにおけるプレーン毎の値である。
Cs_tmp = Cs * As1
Cs :ソースの色値(図1参照)
Cs_tmp :ソース側カラー値のテンポラリ値
(3):デスティネーション側のアルファをデスティネーションの色値にかける。この処理をPre-multiply destination alphaという。下記に示す式のデスティネーションのピクセル色値Cdはソース側と同様に、RGBや、Gray、CMYK等のカレントカラースペースにおけるプレーン毎の値である。
Cs :ソースの色値(図1参照)
Cs_tmp :ソース側カラー値のテンポラリ値
(3):デスティネーション側のアルファをデスティネーションの色値にかける。この処理をPre-multiply destination alphaという。下記に示す式のデスティネーションのピクセル色値Cdはソース側と同様に、RGBや、Gray、CMYK等のカレントカラースペースにおけるプレーン毎の値である。
Cd_tmp = Cd * Ad
Ad :デスティネーションのアルファ値
Cd :デスティネーションの描画ピクセル位置の色値
Cd_tmp :デスティネーション側カラー値のテンポラリ
(4):ブレンド処理を行う。
Ad :デスティネーションのアルファ値
Cd :デスティネーションの描画ピクセル位置の色値
Cd_tmp :デスティネーション側カラー値のテンポラリ
(4):ブレンド処理を行う。
A_tmp = ( 1 - As1 ) * Ad + As1
C_tmp = ( 1 - As1 ) * Cd_tmp + Cs_tmp
A_tmp :(5)のチェック用テンポラリ
C_tmp :(5)のチェック用テンポラリ
(5):デスティネーション結果に書き込む値を求める。この処理をReverse pre-multiplicationという。
C_tmp = ( 1 - As1 ) * Cd_tmp + Cs_tmp
A_tmp :(5)のチェック用テンポラリ
C_tmp :(5)のチェック用テンポラリ
(5):デスティネーション結果に書き込む値を求める。この処理をReverse pre-multiplicationという。
If A_tmp = 0
{
Anew = Cnew = 0
}
Else
{
Anew = A_tmp
Cnew = min(C_tmp / A_tmp, 1)
}
(1)、(2)で現れるパラメータが図1のXPSドキュメント中に現れる(より詳細については非特許文献1を参照)。
{
Anew = Cnew = 0
}
Else
{
Anew = A_tmp
Cnew = min(C_tmp / A_tmp, 1)
}
(1)、(2)で現れるパラメータが図1のXPSドキュメント中に現れる(より詳細については非特許文献1を参照)。
[ページへの描画処理のケース]
ブレンド処理ステップ(3)において、ページへの描画処理では下地は不透明、すなわちAd=1.0ととることができる。この場合は、下記のようにソースの色値とアルファ値、および既にページに書かれているデスティネーションの色値のみでアルファブレンド処理ができる(図2(A)参照)。
ブレンド処理ステップ(3)において、ページへの描画処理では下地は不透明、すなわちAd=1.0ととることができる。この場合は、下記のようにソースの色値とアルファ値、および既にページに書かれているデスティネーションの色値のみでアルファブレンド処理ができる(図2(A)参照)。
As1 = As * Oe * Om
Anew = 1.0 (不透明で変化なし)
Cnew = ( 1 - As1 ) Cd + As1 * Cs (単純なアルファブレンドの式として知られている)
[キャンバスに透明度属性がない場合]
ブレンド処理のステップ(3)において、キャンバスへの描画処理では、初期状態において下地は完全な透明、Ad=0.0で色なし、Cd=0.0(RGBなら黒)ととらえることができる。これはガラス板のイメージになる。
Anew = 1.0 (不透明で変化なし)
Cnew = ( 1 - As1 ) Cd + As1 * Cs (単純なアルファブレンドの式として知られている)
[キャンバスに透明度属性がない場合]
ブレンド処理のステップ(3)において、キャンバスへの描画処理では、初期状態において下地は完全な透明、Ad=0.0で色なし、Cd=0.0(RGBなら黒)ととらえることができる。これはガラス板のイメージになる。
As1 = As * Oe * Om
Anew = As1 (アルファの値が累積)
Cnew = Cs (ソースの色値はそのまま)
キャンバス上にまだ何も描画されていない状態で、ブレンド処理ステップに従うと、上記のように、キャンバス上のオブジェクトに透明度が含まれている場合、キャンバス上には、色値、アルファ値がそのまま累積することとなる。これは、キャンバスをページ等の一段下のレイヤ(イメージ層)に描画するときに、累積している値がソースアルファ値として影響することを示す。
Anew = As1 (アルファの値が累積)
Cnew = Cs (ソースの色値はそのまま)
キャンバス上にまだ何も描画されていない状態で、ブレンド処理ステップに従うと、上記のように、キャンバス上のオブジェクトに透明度が含まれている場合、キャンバス上には、色値、アルファ値がそのまま累積することとなる。これは、キャンバスをページ等の一段下のレイヤ(イメージ層)に描画するときに、累積している値がソースアルファ値として影響することを示す。
しかしながら、キャンバス自体に透明度が設定されていない場合は、出来上がったキャンバスをページ上に描いた結果は、オブジェクトを直接ページに書いた場合と同じとなる(図2(B)参照)
この場合、図2(B)のようにページとは別のバッファに描画を実行する必要はなく、キャンバスが定義されていないときと同様の処理を行えばよい。
この場合、図2(B)のようにページとは別のバッファに描画を実行する必要はなく、キャンバスが定義されていないときと同様の処理を行えばよい。
[キャンバスに透明度属性がある場合]
上述のように、オブジェクトが描画された領域には色値とアルファ値が累積していくが、その他の領域は0.0の完全に透明のまま残る。
上述のように、オブジェクトが描画された領域には色値とアルファ値が累積していくが、その他の領域は0.0の完全に透明のまま残る。
キャンバス自体に透明度が設定されている場合の描画方法について、XPS仕様書中に提示される実装方法では、キャンバス上のオブジェクトの描画が終了し、下のレイヤ(イメージ層)に書き込む時に、キャンバスエレメントの属性のOpacityとOpacityMaskの値を累積しているアルファ値に適用(結合)する。これはブレンドステップ(1)にあたり、キャンバス自体のOeとOmを累積したアルファ値にかけることを意味する。
また、キャンバス中でオブジェクトが描かれていない領域はOpacity、OpacityMaskが適用されてもアルファ値は0.0で完全に透明な何も描かれない状態で残る。そのため、描画されたオブジェクトの部分にのみ、透明度処理の効果がでる(図3(C)参照)。
概念的には上記したステップを経るが、同一キャンバス上にこのとおりの処理をしようとすると、オブジェクトが重なった場合などは、デスティネーションのアルファ値を考慮した図2(A)の厳密なブレンド処理を行うことになる(図3(D))。
[構成]
図4は、本発明の実施例に係る画像処理装置の機能ブロック図である。
図4は、本発明の実施例に係る画像処理装置の機能ブロック図である。
本発明の実施例に係る画像処理装置は、通信インタフェース1.1、データ受信部1.2、データ解析部1.3、描画データ処理部1.4(中間言語変換部)、描画部1.5(アルファブレンド演算部)、出力部1.6、システム制御部1.7、エラー制御部1.8、メモリ管理部1.9、ストレージデバイス管理部1.10、ストレージデバイス1.11の各機能部を有する。以下に各機能部について説明する。
通信インタフェース1.1は、NIC(Network Interface Card)等により構成され、ホストコンピュータ等との通信を行う。
データ受信部1.2は、通信インタフェース1.1を介してデータ(ページ記述言語で記載してある印刷データ)を受信する。
データ解析部1.3は、送られてきたページ記述言語で記述された印刷データの解析を行なう。
描画データ処理部1.4(中間言語変換部)は、前記データ解析部1.3からの指示に従い、ページ記述言語を中間言語(ここでは、具体的にはディスプレイリスト)に変換する。
XPS等のXML拡張形式で記述されたページ記述言語中には、描画オブジェクトである、パス、グリフス(フォント)、イメージ等のエレメントがあり、これら描画オブジェクトを表示するための土台となるキャンバスがある。これらエレメントやキャンバスは、それぞれに透明度属性を有している。又、キャンバスは、並列に記述するだけでなく、多層構造を表すためにひとつのキャンバス中に他のキャンバスを包含する記述を行ない、さらに、この包含するキャンバスの構成をさらに重ねてゆく「入れ子構造」(ネスト構造)をとる。そして、その中に含むキャンバスやエレメントをひとつのグループとして扱うことが可能となる。
描画データ処理部1.4は、前記した入れ子構造をとるキャンバスデータを、その入れ子構造を保ったまま中間言語に変換する。ひとつのキャンバスオブジェクトがディスプレイリストに変換された際のデータ構造を図5に示す。
キャンバスのオブジェクトは、その開始を示す「Start」マークに続き、キャンバス上に存在する描画オブジェクト又はキャンバスオブジェクトのディスプレイリスト、キャンバスの終了を示す「End」マーク、その後にキャンバスの透明度情報が続き、キャンバスの下層への描画を示す「Write」コマンドで終了する。
キャンバスが入れ子構造となっている場合には、前記した「Start」マークと「End」マークとの間に入れ子となるキャンバスオブジェクトへのポインターが入る。
描画部1.5は、描画データ処理部1.4で作成されたディスプレイリスト(中間言語)からVRAM(描画メモリ)にビットマップデータを作成する。アルファブレンドの演算処理はここ描画部1.5において行われる。
圧縮可能層判断部1.5.1は、前記アルファブレンド演算部1.5.1がアルファブレンド演算処理を行なう際に、直近の演算処理には必要の無いレイヤ(イメージ層)であるかどうかの判断を行なう。直近の演算処理に必要が無い場合には、そのレイヤ(イメージ層)を圧縮してメモリに余裕を持たせることが可能である。実際にその判断は、前記アルファブレンド演算部1.5.1が前記アルファブレンド演算処理を行なっている層から下位方向に二層以下の層については、前記アルファブレンド演算に必要ないと判断する。より詳細な説明については、図7を用いて(圧縮による省メモリ化)の項目において後述する。
圧縮伸張部1.5.3は、ASIC(Application Specific Integrated Circuit)等により構成され、前記圧縮可能層判断部1.5.1により、圧縮が可能であると判断されたレイヤ(イメージ層)を圧縮する。又、圧縮された層を再度利用する際には、圧縮されたデータを伸張する。圧縮によりデータのサイズが縮小されて、メモリに余裕ができるため他の描画処理等によりメモリを多く使用可能になる。
出力部1.6は、印刷エンジン、ディスプレイデバイスその他の出力デバイスにより構成されており、上記の各機能部で画像処理が行われて得られたビットマップデータを出力する。前記出力とは、用紙などの記録媒体に印刷することであってもよいし、ディスプレイデバイスに表示出力を行う方法でもよい。
システム制御部1.7は、画像処理装置システムの共通情報を管理し、システムの制御を行なう。
エラー制御部1.8は、画像処理装置のエラーが発生した場合の処理を制御する。
メモリ管理部1.9は、画像処理装置のシステムのメモリ(主メモリ;一次記憶装置)を管理する。
ストレージデバイス管理部1.10は、ハードディスクなどの二次記憶装置(補助メモリ)への読み書きを制御する。本画像処理装置においては、透明度属性を有する複数層のキャンバスが重なる場合などには、アルファブレンド演算処理に必要な層のキャンバスのイメージのみを主メモリに保持し、直近には必要としないキャンバスのイメージは後述の圧縮伸張部1.5.3により圧縮処理を行ない、その後ハードディスクに退避して、他のキャンバスとの間でのアルファブレンド演算が必要となった時に主メモリに呼び戻して、圧縮伸張部1.5.3によりデータの伸張を行なって演算処理を行う。
ストレージデバイス1.11(補助メモリ)は、ハードディスク等により構成される二次記憶装置(補助メモリ)である。
本発明の実施例に係る画像処理装置は不図示のコンピュータを備える。このコンピュータは、本発明の実施例にかかる画像処理プログラムを実行することにより、データ受信部1.2、データ解析部1.3、描画データ処理部1.4、描画部1.5、圧縮可能層判断部1.5.1、システム制御部1.7、エラー制御部1.8、メモリ管理部1.9、およびストレージデバイス管理部1.10として機能する。更に、前記コンピュータは、本発明の実施例にかかる画像処理プログラムを実行することにより、画像処理装置の構成要素を制御して、圧縮伸張部1.5.3、出力部1.6およびストレージデバイス1.11として機能させる。
[アルファブレンド演算アルゴリズム]
図5で示した入れ子構造を有するディスプレイリスト(中間言語)のアルファブレンドの演算は以下に示す再帰アルゴリズムにより効率よく計算される。
図5で示した入れ子構造を有するディスプレイリスト(中間言語)のアルファブレンドの演算は以下に示す再帰アルゴリズムにより効率よく計算される。
一つのキャンバスの透過の計算Compositeを考えると、計算は次のようになる。
***_nのnをキャンバスに含まれるオブジェクト数とし、計算過程の値を表す。
[擬似コードによるアルゴリズム表記]
C = Composite(C_0,O_0)
入力 C_0 :キャンバスの描画先の現在の色
O_0 :キャンバスに含まれるオブジェクト全体
出力 C :キャンバスの色値
{
S_0 = C_0 (式1)
全てのオブジェクト(i を1から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が白となっていれば良い。
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が白となっていれば良い。
[処理内容の具体例]
前記した再帰アルゴリズムの処理内容の具体例について図6、図7を用いて以下に説明する。
前記した再帰アルゴリズムの処理内容の具体例について図6、図7を用いて以下に説明する。
前記アルゴリズムは、キャンバスの開始とともに、一時的に色を保持するバッファを確保し、そのバッファ内で描画処理を行う。キャンバスの終了時点でバッファをイメージとして、一つ下のレイヤにブレンド処理を行いながら描画していく方法である。キャンバス描画中にさらにネストしている場合は、再帰呼出を行って、それに応じて色を保持するバッファを確保し、一段上のキャンバスとして処理する。
この処理を行う場合の一例として、半透明キャンバスがネスト化(入れ子構造)し、さらにそのキャンバス上で、半透明のオブジェクトが重なっているケースを考える。
図6(E)は、XPSで表記した一段目のOpacity=0.5を有するCanvas1上に、描画オブジェクトである矩形のObject1が存在し、さらにOpacity=0.5を有する二段目のCanvas2がネストされており、二段目のCanvas2上に三角形のObject2とObject3が存在している。
図6(F)に、上記XPSの全オブジェクトを透明度(Opacity)が無いと仮定した場合の描画を示し、図6(G)に上記XPSに表記どおりの透明度(Opacity)のアルファブレンド演算を行った場合の描画を示す。ただし、カラー表記ができないため、グレースケールに変換して描画してある。
[退避されるレイヤの例]
図7に三層に重なるキャンバスのレイヤについての例を示す。図7(A)に透明度属性を有するキャンバス上に三角形の描画オブジェクトが載っており、図7(B)にその下層にある透明度属性を有するキャンバス、図7(C)にさらにその下層にあるキャンバス(キャンバスではなく、最終のメモリイメージを描画するページであっても良い)を示す。
図7に三層に重なるキャンバスのレイヤについての例を示す。図7(A)に透明度属性を有するキャンバス上に三角形の描画オブジェクトが載っており、図7(B)にその下層にある透明度属性を有するキャンバス、図7(C)にさらにその下層にあるキャンバス(キャンバスではなく、最終のメモリイメージを描画するページであっても良い)を示す。
この場合に、描画の処理はまず下層から行われ、図7(C)のキャンバス(又はページ)のイメージを展開するために主メモリに記憶容量が確保され、メモリイメージが描画されて、ストレージデバイス1.11に退避される。同様に、図7(B)のキャンバスのイメージを展開するために主メモリに記憶容量が確保され、メモリイメージが描画されて、ストレージデバイス1.11に退避される。
この後、最上位の図7(A)のキャンバスのイメージを展開するために主メモリに記憶容量が確保され、三角形の描画オブジェクトの描画処理及びアルファブレンド演算が行われる。
最上位層の演算処理の終了後、図7(B)のキャンバスのメモリイメージがストレージデバイス1.11から主メモリに呼び戻されて最上位層との間でのアルファブレンド演算処理が行われ、次に図7(C)のキャンバス(又はページ)のメモリイメージがストレージデバイス1.11から主メモリに呼び戻されて、先ほどアルファブレンド演算処理を終えた上位層との間で、アルファブレンド演算処理が行われる。
[圧縮による省メモリ化]
キャンバスを用いた重ね合わせは、前述のように複数のレイヤ(イメージ層)を重ねることができる。Opacity値、OpacityMask値が含まれるキャンバスが重なる場合、上記手段によると、一番上の層となるレイヤの描画が終わるまで、その下に構成されるレイヤを保持する必要がある。そのため、連続階調のイメージを保持しておくバッファがメモリを圧迫し、メモリーオーバーフローエラーが発生しやすいという問題があった。
キャンバスを用いた重ね合わせは、前述のように複数のレイヤ(イメージ層)を重ねることができる。Opacity値、OpacityMask値が含まれるキャンバスが重なる場合、上記手段によると、一番上の層となるレイヤの描画が終わるまで、その下に構成されるレイヤを保持する必要がある。そのため、連続階調のイメージを保持しておくバッファがメモリを圧迫し、メモリーオーバーフローエラーが発生しやすいという問題があった。
メモリオーバーフローがおこる問題に対し、本発明では、描画処理が行われてようとしているレイヤと、その一つ下位のレイヤより下層(アルファブレンド演算を行なっている層から下位方向に二層以下の層)のイメージバッファの圧縮を行うことで、メモリの消費を抑制する。
例えば、図7の一番上位の(C)レイヤのバッファをメモリ空間に割当しようとした際、そのメモリが取れなかった場合、1つ下位の(B)レイヤを圧縮することはできない。その理由は、アロケート直後に(B)レイヤの画像を(C)レイヤにコピーする必要があるためである。しかしながら、(C)層から二層下位の(A)レイヤは上記のようなコピーの必要がないため圧縮を行なっても問題は発生しない。
(A)レイヤを圧縮することにより、(C)レイヤのためのイメージのバッファをメモリ空間に確保(割り当て)できる可能性が高くなる。これにより、メモリオーバーフローの発生を回避可能となり、複雑な印刷データであっても途中でメモリオーバーフローを発生させることなく処理することが可能となる。
また、圧縮されたレイヤは一段上位のレイヤの描画処理が終了した時(図7においての(B)レイヤの描画処理が終了した時)に、再度メモリ上に伸張処理を行い、レイヤ同士の重ね合わせ処理を行う。
上記の圧縮可能である層かどうかの判断は圧縮可能層判断部1.5.1が行なう。この判断は、上記したように注目層から下位方向に二層以下という簡単なアルゴリズムにより判断可能であるため、処理が高速に行なえる。
また、圧縮可能と判断された場合の圧縮及び当該圧縮されたデータを再度利用するために元データに戻すための伸張の処理は、圧縮伸張部1.5.3により行なわれる。具体的には、圧縮伸張の処理は、その処理専用のハードウェアである圧縮ASIC(Application Specific Integrated Circuit)等の専用ハードウェアによって行なわれる。また、この圧縮伸張の専用ハードウェアを有せずに当該処理を画像処理装置のコンピュータがソフトウェアを実行する方法によって実現することも可能である(この場合、コンピュータ自身が圧縮伸張部1.5.3として機能する。)。
[フローチャート]
図8は本発明の実施例に係る画像処理装置の動作のフローチャートである。
図8は本発明の実施例に係る画像処理装置の動作のフローチャートである。
画像処理装置において、印刷データを受信すると図8のフローチャートが開始して印刷データの解析を行う。
S11:描画部1.5は、透明度のあるキャンバスの開始があるかどうかを判断する。透明度のあるキャンバスがあれば動作をS13に移行する。なければ動作をS29に移行する。
S13:メモリ管理部1.9は、キャンバスに必要なバッファサイズをメモリから取得する動作を行う。
S15:S13での取得動作の結果、メモリ管理部1.9は、必要なサイズのメモリがとれたかどうかを判断する。必要なサイズのメモリが取得できれば、動作をS31に移行する。取得できない場合は、動作をS17に移行する。
S17:圧縮可能層判断部1.5.1は、現在注目するレイヤより下に圧縮可能なレイヤが存在するかどうかを判断する。圧縮可能な下層のレイヤが存在する場合は、動作をS21に移行する。レイヤが存在しない場合には、動作をS19に移行する。
S19:必要なメモリサイズがとれず、また当該キャンバスより下にレイヤが存在しないので、描画部1.5は、メモリオーバーフロー処理を行って動作を終了する。
S21:圧縮伸張部1.5.3は、圧縮可能なレイヤを圧縮する。圧縮後はS15に戻って動作を繰り返す。圧縮後に元ファイルを消去してメモリに圧縮前後の差分だけ空き領域が発生する。
S29:描画部1.5は、透明度のあるキャンバスは終了したかどうかを判断する。終了したと判断した場合には、動作をS33に移行する。終了していないと判断した場合には、動作をS31に移行する。
S31:描画部1.5は、現在のレイヤへの描画処理を行う。
S33:描画部1.5は、現在注目するレイヤの下層のレイヤが圧縮されているかどうかを判断する。圧縮された下層のレイヤが存在する場合は、動作をS35に移行する。当該レイヤが存在しない場合には、動作をS37に移行する。
S35:圧縮伸張部1.5.3は、圧縮された下層のレイヤのデータを伸張して元のデータに戻す。
S37:描画部1.5は、下のレイヤへキャンバスの描画処理を行う。
S39:描画部1.5は、ページの描画が終了したかどうかを判断する。ページの描画が終了したと判断した場合は、動作を終了する。終了していないと判断した場合は、S11に移行して動作を繰り返す。
以上の一連の動作により、画像処理装置において、不要のイメージバッファの圧縮を行なってキャンバスの透明度属性の合成処理が完了する。
[実施例の効果]
本発明実施例の画像処理装置により、以下のことが可能となった。
本発明実施例の画像処理装置により、以下のことが可能となった。
XPS等のXML拡張形式等のページ記述言語によって記述された入れ子構造を有する描画オブジェクトとキャンバスを透明度属性に基づいて合成(アルファブレンド演算)する際に、現在処理されている層とそのひとつ下位の層より下位の層、すなわち注目層より二層以下の層のイメージバッファを圧縮しておくことにより、メモリのリソースが枯渇して、メモリオーバーフローにより演算処理が停止してしまうことを回避することが可能となる。
本発明の実施例に係る画像処理装置では、圧縮伸張処理を圧縮ASIC等の専用のハードウェアで行なうため、圧縮伸張にかかる処理時間の遅延は非常に少なく、処理全体を大きく遅らせることはない。
圧縮可能かどうかの判断は、注目層から下位方向に二層以下であるかどうかという単純なアルゴリズムであるために、キャンバスの入れ子構造間の遷移時に簡単に判断可能であり、その判断処理時間は非常に短く、処理全体を大きく遅らせることはない。
[その他]
色値は、実施例中ではRGBの三原色に基づくものを示したが、CMYKの色値であってもよく、同様にアルファブレンド演算が可能である。
色値は、実施例中ではRGBの三原色に基づくものを示したが、CMYKの色値であってもよく、同様にアルファブレンド演算が可能である。
上記の圧縮処理によって空き容量に余裕が出るメモリは、一次記憶装置である主メモリに関してだけであってもよい。また、フラッシュメモリや回転磁気ディスク装置等の二次記憶装置を含めてのメモリということであってもよい。
上記の実施例に係る画像処理装置においては、ストレージデバイス管理部1.10及びストレージデバイス1.11を有して、必要の無いレイヤ(イメージ層)を退避する構成について説明したが、ストレージデバイス1.11及びその管理部1.10を有さずに、一次記憶装置の主メモリだけを有する構成の画像処理装置であっても、本発明は適用可能である。
1.1 通信インタフェース
1.2 データ受信部
1.3 データ解析部
1.4 描画データ処理部(中間言語変換部)
1.5 描画部(アルファブレンド演算部)
1.5.1 圧縮可能層判断部
1.5.3 圧縮伸張部
1.6 出力部
1.7 システム制御部
1.8 エラー制御部
1.9 メモリ管理部
1.10 ストレージデバイス管理部
1.11 ストレージデバイス(補助メモリ;二次記憶装置)
1.2 データ受信部
1.3 データ解析部
1.4 描画データ処理部(中間言語変換部)
1.5 描画部(アルファブレンド演算部)
1.5.1 圧縮可能層判断部
1.5.3 圧縮伸張部
1.6 出力部
1.7 システム制御部
1.8 エラー制御部
1.9 メモリ管理部
1.10 ストレージデバイス管理部
1.11 ストレージデバイス(補助メモリ;二次記憶装置)
Claims (6)
- 透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、
前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量をメモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算部と、
前記アルファブレンド演算部がアルファブレンド演算を行う際に、当該アルファブレンド演算に関与していないイメージ層を判断する圧縮可能層判断部と、
前記圧縮可能層判断部により、前記アルファブレンド演算に関与していないと判断されたイメージ層を圧縮し、当該圧縮されたイメージ層を再度利用する際に伸張して元のデータに戻す圧縮伸張部と、を有する
ことを特徴とする画像処理装置。 - 請求項1の画像処理装置であって、
前記圧縮可能層判断部は、前記アルファブレンド演算部が前記アルファブレンド演算処理を行なっている層から下位方向に二層以下の層について、当該アルファブレンド演算に関与していないイメージ層であると判断する
ことを特徴とする画像処理装置。 - 請求項1又は2の画像処理装置であって、
前記ページ記述言語中に前記キャンバスが入れ子構造に記述された場合に、前記ページ記述言語を前記キャンバスの入れ子構造を保ったまま中間言語に変換する中間言語変換部を有し、
前記アルファブレンド演算部は、前記入れ子構造を保った中間言語に基づいて前記透明度属性の合成を行う
ことを特徴とする画像処理装置。 - 請求項1又は2の画像処理装置であって、
前記ページ記述言語がXML(Extended Markup Language)拡張形式により記述されたものである
ことを特徴とする画像処理装置。 - 透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、
前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算手段と、
前記アルファブレンド演算手段がアルファブレンド演算を行う際に、当該アルファブレンド演算に関与していないイメージ層を判断する圧縮可能層判断手段と、
前記圧縮可能層判断手段により、前記アルファブレンド演算に関与していないと判断されたイメージ層を圧縮し、当該圧縮されたイメージ層を再度利用する際に伸張して元のデータに戻す圧縮伸張手段と、を有する
ことを特徴とする画像処理方法。 - コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、
前記透明度属性の合成処理であるアルファブレンド演算のための記憶容量を主メモリに確保して、前記アルファブレンド演算を行うアルファブレンド演算機能と、
前記アルファブレンド演算機能がアルファブレンド演算を行う際に、当該アルファブレンド演算に関与していないイメージ層を判断する圧縮可能層判断機能と、
前記圧縮可能層判断機能により、前記アルファブレンド演算に関与していないと判断されたイメージ層を圧縮し、当該圧縮されたイメージ層を再度利用する際に伸張して元のデータに戻す圧縮伸張機能と、を有する
ことを特徴とする画像処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009215447A JP2011065413A (ja) | 2009-09-17 | 2009-09-17 | 画像処理装置、画像処理方法及び画像処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009215447A JP2011065413A (ja) | 2009-09-17 | 2009-09-17 | 画像処理装置、画像処理方法及び画像処理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011065413A true JP2011065413A (ja) | 2011-03-31 |
Family
ID=43951590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009215447A Pending JP2011065413A (ja) | 2009-09-17 | 2009-09-17 | 画像処理装置、画像処理方法及び画像処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011065413A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101551915B1 (ko) | 2015-03-16 | 2015-09-08 | 스타십벤딩머신 주식회사 | 영상압축방법 및 영상압축장치 |
JP2018024461A (ja) * | 2016-08-10 | 2018-02-15 | 株式会社ダイゾー | 噴射ユニットおよびエアゾール製品 |
-
2009
- 2009-09-17 JP JP2009215447A patent/JP2011065413A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101551915B1 (ko) | 2015-03-16 | 2015-09-08 | 스타십벤딩머신 주식회사 | 영상압축방법 및 영상압축장치 |
WO2016148516A1 (ko) * | 2015-03-16 | 2016-09-22 | 스타십벤딩머신 주식회사 | 영상압축방법 및 영상압축장치 |
JP2018024461A (ja) * | 2016-08-10 | 2018-02-15 | 株式会社ダイゾー | 噴射ユニットおよびエアゾール製品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5028372B2 (ja) | 画像処理装置、画像処理方法及び画像処理プログラム | |
JP5290487B2 (ja) | デジタルドキュメント処理のためのシステム及び方法 | |
JP2012022695A (ja) | デジタルドキュメント処理のための方法 | |
US8314951B2 (en) | Image processing apparatus, and computer-readable recording medium | |
JP2012240344A (ja) | 印刷データ処理装置、印刷データ処理方法及びプログラム | |
US9025189B2 (en) | Memory management for print data objects | |
US9977771B2 (en) | System and method for printable document viewer optimization | |
JP2011065413A (ja) | 画像処理装置、画像処理方法及び画像処理プログラム | |
US20140111521A1 (en) | Rendering source content for display | |
JP2008042345A (ja) | 画像処理方法、画像処理装置 | |
JP4964219B2 (ja) | 画像処理装置、方法及びプログラム | |
JP5094667B2 (ja) | 画像処理装置、画像処理方法及び画像処理プログラム | |
JP5007291B2 (ja) | 画像処理装置、画像処理方法及び画像処理プログラム | |
JP5033747B2 (ja) | 画像処理装置、画像処理方法及び画像処理プログラム | |
US9336468B2 (en) | Image forming apparatus, image forming method, and medium | |
JP2010087792A (ja) | 画像形成装置及び画像形成プログラム | |
JP5028373B2 (ja) | 画像処理装置、画像処理方法及び画像処理プログラム | |
JP2005070957A (ja) | 変換制御装置および変換制御プログラム | |
JP5033746B2 (ja) | 画像処理装置、画像処理方法及び画像処理プログラム | |
JP6882099B2 (ja) | 画像処理装置、画像処理方法及びプログラム | |
JP2010274534A (ja) | 画像形成装置及び画像形成プログラム | |
JP4840604B2 (ja) | 画像処理装置、画像処理方法及びプログラム | |
JP6140973B2 (ja) | 画像処理装置、画像処理方法ならびにプログラム | |
JP2014197349A (ja) | 画像処理装置、情報処理方法及びプログラム | |
JP2007122621A (ja) | 情報処理装置、情報処理方法 |