説明

画像処理装置、画像処理方法及び画像処理プログラム

【課題】 透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置において、透明度属性の合成であるアルファブレンド演算を行う際に、メモリ容量の利用を効率化し、高速にアルファブレンド演算を行うこと。
【解決手段】 本発明の画像処理装置では、キャンバスが不透明で、かつ最初のキャンバスから連続して不透明なキャンバスが指定されているかどうかを判定し、前記不透明なキャンバスが連続している場合には、該キャンバスへの描画を直接VRAM(ページ描画メモリ)に描画し、そうでないキャンバスへの描画は当該キャンバス上でのアルファブレンド演算処理を行うことにより課題を解決した。

【発明の詳細な説明】
【技術分野】
【0001】
透明度属性を有する描画オブジェクトと、該描画オブジェクトを描画する土台であり透明度属性を有するキャンバスとを表記可能であるページ記述言語をビットマップ変換する際に、該ビットマップ変換処理を高速に処理可能とし、かつメモリの利用効率を高める技術に関するものである。
【背景技術】
【0002】
XPS等のXML拡張形式で記述されたページ記述言語においては、透明度属性を有した描画オブジェクト(パスやフォントやイメージ等)及び前記描画オブジェクトの描画の土台となる透明度属性を有したキャンバスが複数層重なって存在させることが可能であり、これらが複数層重なった描画オブジェクト及びキャンバスの透明度属性の合成処理(アルファブレンド演算処理)を行う際には、該キャンバスの層毎に前記アルファブレンド演算処理のためのメモリの確保と、該アルファブレンド演算処理が必要となる。しかし、前記キャンバスによっては、透明度属性が不透明か又は完全に透明である場合もあり、その場合には、該透明度属性が不透明のキャンバスの色値でその下層のキャンバスや描画オブジェクトが覆われてしまうか、又は該当明度属性が透明の場合には透過してしまうので、アルファブレンド演算処理を行う必要は無く、また、そのためのメモリをキャンバスの層毎に保持する必要も無い。
【0003】
従来技術として、アルファブレンド演算処理の前にデバイスの色域に圧縮するか、デバイスの色域に圧縮してからアルファブレンド処理を行うかによって、レンダリング結果が異なるため、カラーマッチング手段によりどちらが適正化を判断して、より適切な方法を選択する方法があった(特許文献1参照)。
【0004】
しかし、この方法でも前記した透明度属性が不透明又は透明なキャンバスが存在する場合に、メモリの効率化と処理の高速化を実現することはできなかった。
【特許文献1】特開2006−345197号公報
【非特許文献1】XML Paper Specification, XPS Specification and Reference Guide Version 1.0
【発明の開示】
【発明が解決しようとする課題】
【0005】
解決しようとする問題点は、ページ記述言語を中間言語に変換する画像処理を行う画像処理装置、画像処理方法及び画像処理プログラムにおいて、透明度属性を有するキャンバス中に透明度属性が不透明のキャンバスが最初から連続して存在する場合に、描画処理を高速にかつメモリの利用効率を高めて行うことができなかった点である。
【課題を解決するための手段】
【0006】
請求項1記載の本発明の画像処理装置は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、前記キャンバスの透明度属性が不透明であるかどうかを判定し、前記不透明と判定されたキャンバスが最初のキャンバスから連続している場合には、前記連続したキャンバスを仮キャンバスと判断し、そうでないキャンバスを実キャンバスと判断するキャンバスチェック部と、前記仮キャンバスと判断されたキャンバスへの描画は、直接ページ描画メモリに描画し、前記実キャンバスと判断されたキャンバスへの描画は、当該キャンバス上で透明度属性の合成であるアルファブレンド演算を行って描画する描画部とを有することを最も主要な特徴とする。ここで、キャンバスとは、XML拡張形式のページ記述言語に記載される描画オブジェクト(パスやフォントやイメージ)を描画する土台となるオブジェクトのことで、透明度を示す透明度値、さらに透明度分布を表す透明度マスク等の透明度属性を有する。また、不透明とはキャンバスの透明度が1.0であることを言う。
【0007】
請求項2記載の本発明の画像処理装置は、請求項1の画像処理装置であって、前記ページ記述言語中に前記キャンバスが入れ子構造に記述された場合に、前記ページ記述言語を前記キャンバスの入れ子構造を保ったまま中間言語に変換する中間言語変換部を有し、前記描画部は、前記入れ子構造を保った中間言語に基づいて前記アルファブレンド演算を行うことを主要な特徴とする。
【0008】
請求項3記載の本発明の画像処理装置は、請求項1又は2の画像処理装置であって、前記ページ記述言語がXML(Extended Markup Language)拡張形式により記述されたものであることを主要な特徴とする。
【0009】
請求項4記載の本発明の画像処理方法は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、前記キャンバスの透明度属性が不透明であるかどうかを判定し、前記不透明と判定されたキャンバスが最初のキャンバスから連続している場合には、前記連続したキャンバスを仮キャンバスと判断し、そうでないキャンバスを実キャンバスと判断し、前記仮キャンバスと判断されたキャンバスへの描画は、直接ページ描画メモリに描画し、前記実キャンバスと判断されたキャンバスへの描画は、当該キャンバス上でアルファブレンド演算を行って描画することを最も主要な特徴とする。
【0010】
請求項5記載の本発明の画像処理プログラムは、コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、前記キャンバスの透明度属性が不透明であるかどうかを判定し、前記不透明と判定されたキャンバスが最初のキャンバスから連続している場合には、前記連続したキャンバスを仮キャンバスと判断し、そうでないキャンバスを実キャンバスと判断するキャンバスチェック機能と、前記キャンバスチェック機能により、前記仮キャンバスと判断されたキャンバスへの描画は、直接ページ描画メモリに描画し、前記実キャンバスと判断されたキャンバスへの描画は、当該キャンバス上でアルファブレンド演算を行って描画する描画機能とをコンピュータに実現させることを最も主要な特徴とする。
【発明の効果】
【0011】
請求項1記載の本発明の画像処理装置は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、前記キャンバスの透明度属性が不透明であるかどうかを判定し、前記不透明と判定されたキャンバスが最初のキャンバスから連続している場合には、前記連続したキャンバスを仮キャンバスと判断し、そうでないキャンバスを実キャンバスと判断するキャンバスチェック部と、前記仮キャンバスと判断されたキャンバスへの描画は、直接ページ描画メモリに描画し、前記実キャンバスと判断されたキャンバスへの描画は、当該キャンバス上で透明度属性の合成であるアルファブレンド演算を行って描画する描画部とを有することを最も主要な特徴とするため、不透明キャンバスが連続して存在する際には、そのキャンバスごとの処理を行うことを省略し、直接ページ描画メモリへの描画を行うため、画像変換処理が高速化され、メモリの利用効率が高まった。
【0012】
請求項2記載の本発明の画像処理装置は、請求項1の画像処理装置であって、前記ページ記述言語中に前記キャンバスが入れ子構造に記述された場合に、前記ページ記述言語を前記キャンバスの入れ子構造を保ったまま中間言語に変換する中間言語変換部を有し、前記描画部は、前記入れ子構造を保った中間言語に基づいて前記アルファブレンド演算を行うことを主要な特徴とするため、前記入れ子構造で描かれた中間言語において、連続する不透明のキャンバスの処理を再帰的アルゴリズムにより行うことが可能となった。
【0013】
請求項3記載の本発明の画像処理装置は、請求項1又は2の画像処理装置であって、前記ページ記述言語がXML(Extended Markup Language)拡張形式により記述されたものであることを主要な特徴とするため、XPS(XML Paper Specification)等のページ記述言語において、最初から連続した不透明のキャンバスの処理を高速に行うことが可能となった。
【0014】
請求項4記載の本発明の画像処理方法は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、前記キャンバスの透明度属性が不透明であるかどうかを判定し、前記不透明と判定されたキャンバスが最初のキャンバスから連続している場合には、前記連続したキャンバスを仮キャンバスと判断し、そうでないキャンバスを実キャンバスと判断し、前記仮キャンバスと判断されたキャンバスへの描画は、直接ページ描画メモリに描画し、前記実キャンバスと判断されたキャンバスへの描画は、当該キャンバス上でアルファブレンド演算を行って描画することを最も主要な特徴とするため、不透明キャンバスが連続して存在する際には、そのキャンバスごとの処理を行うことを省略し、直接ページ描画メモリへの描画を行うため、画像変換処理が高速化され、メモリの利用効率が高まった。
【0015】
請求項5記載の本発明の画像処理プログラムは、コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、前記キャンバスの透明度属性が不透明であるかどうかを判定し、前記不透明と判定されたキャンバスが最初のキャンバスから連続している場合には、前記連続したキャンバスを仮キャンバスと判断し、そうでないキャンバスを実キャンバスと判断するキャンバスチェック機能と、前記キャンバスチェック機能により、前記仮キャンバスと判断されたキャンバスへの描画は、直接ページ描画メモリに描画し、前記実キャンバスと判断されたキャンバスへの描画は、当該キャンバス上でアルファブレンド演算を行って描画する描画機能とをコンピュータに実現させることを最も主要な特徴とするため、不透明キャンバスが連続して存在する際には、そのキャンバスごとの処理を行うことを省略し、直接ページ描画メモリへの描画を行うため、画像変換処理が高速化され、メモリの利用効率が高まった。
【発明を実施するための最良の形態】
【0016】
ページ記述言語を中間言語に変換する画像処理を行う画像処理装置、画像処理方法及び画像処理プログラムにおいて、不透明なキャンバスが最初から連続して存在する際には、そのキャンバスごとに処理を行うのではなく、ページ描画メモリに直接描画することにより、ページ記述言語のビットマップへの変換処理を高速にかつメモリの利用効率を高めて行うことを可能とした。
【実施例】
【0017】
本発明の実施例に係る画像処理装置について以下に説明する。
【0018】
[透明度属性の合成;アルファブレンドについて]
アルファブレンドとは、2つのそれぞれに色値を有する画像をある係数により半透明合成することである。この係数をアルファ値といい0.0〜1.0の値をとる。0.0が完全に透明、1.0が完全に不透明な重ね合わせであることを表している。PDF(Portable Document Format)、およびXPS(XML Paper Specification)ドキュメント形式ではパスによる図形や、フォント、イメージ等のオブジェクトに対してアルファ値が設定でき、描画の際に、下地の色とのアルファブレンド(透明度と色値との合成)が可能になっている。
【0019】
以下にアルファブレンドの透明度の合成処理がどのように行われるかについて、XPSドキュメント形式のデータを例に用いて説明する。
【0020】
図1にXPSで表記された透明度属性を持つPathのデータを示し、XPS仕様書1.0(非特許文献1参照)の11.4 Opacity Computationsに記載されているアルファブレンドを厳密に行う場合のステップを以下に示す。
(1):ソース側のアルファ値を求める。ソースのアルファ値にOpacityアトリビュートの値とOpacityMaskの値をかける。
【0021】
As1 = As * Oe * Om
As :ソースエレメントのアルファ値(図1参照)
Oe :ソースエレメントのOpacity値(図1参照)
Om :描画するピクセル位置のソースエレメントのOpacityMask値(図1参照)
(2):(1)で求まったアルファ値(As1)をソースの色値にかける。この処理をPre-multiply source alphaという。下記に示す式のCsはRGBや、Gray、CMYK等のカレントカラースペースにおけるプレーン毎の値である。
【0022】
Cs_tmp = Cs * As1
Cs :ソースの色値(図1参照)
Cs_tmp :ソース側カラー値のテンポラリ値
(3):デスティネーション側のアルファをデスティネーションの色値にかける。この処理をPre-multiply destination alphaという。下記に示す式のデスティネーションのピクセル色値Cdはソース側と同様に、RGBや、Gray、CMYK等のカレントカラースペースにおけるプレーン毎の値である。
【0023】
Cd_tmp = Cd * Ad
Ad :デスティネーションのアルファ値
Cd :デスティネーションの描画ピクセル位置の色値
Cd_tmp :デスティネーション側カラー値のテンポラリ
(4):ブレンド処理を行う。
【0024】
A_tmp = ( 1 - As1 ) * Ad + As1
C_tmp = ( 1 - As1 ) * Cd_tmp + Cs_tmp
A_tmp :(5)のチェック用テンポラリ
C_tmp :(5)のチェック用テンポラリ
(5):デスティネーション結果に書き込む値を求める。この処理をReverse pre-multiplicationという。
【0025】
If A_tmp = 0
{
Anew = Cnew = 0
}
Else
{
Anew = A_tmp
Cnew = min(C_tmp / A_tmp, 1)
}
(1)、(2)で現れるパラメータが図1のXPSドキュメント中に現れる(より詳細については非特許文献1を参照)。
【0026】
[ページへの描画処理のケース]
ブレンド処理ステップ(3)において、ページへの描画処理では下地は不透明、すなわちAd=1.0ととることができる。この場合は、下記のようにソースの色値とアルファ値、および既にページに書かれているデスティネーションの色値のみでアルファブレンド処理ができる(図2(A)参照)。
【0027】
As1 = As * Oe * Om
Anew = 1.0 (不透明で変化なし)
Cnew = ( 1 - As1 ) Cd + As1 * Cs (単純なアルファブレンドの式として知られている)
[キャンバスに透明度属性がない場合]
ブレンド処理のステップ(3)において、キャンバスへの描画処理では、初期状態において下地は完全な透明、Ad=0.0で色なし、Cd=0.0(RGBなら黒)ととらえることができる。これはガラス板のイメージになる。
【0028】
As1 = As * Oe * Om
Anew = As1 (アルファの値が累積)
Cnew = Cs (ソースの色値はそのまま)
キャンバス上にまだ何も描画されていない状態で、ブレンド処理ステップに従うと、上記のように、キャンバス上のオブジェクトに透明度が含まれている場合、キャンバス上には、色値、アルファ値がそのまま累積することとなる。これは、キャンバスをページ等の一段下のレイヤーに描画するときに、累積している値がソースアルファ値として影響することを示す。
【0029】
しかしながら、キャンバス自体に透明度が設定されていない場合は、出来上がったキャンバスをページ上に描いた結果は、オブジェクトを直接ページに書いた場合と同じとなる(図2(B)参照)。
【0030】
この場合、図2(B)のようにページとは別のバッファに描画を実行する必要はなく、キャンバスが定義されていないときと同様の処理を行えばよい。
【0031】
[キャンバスに透明度属性がある場合]
上述のように、オブジェクトが描画された領域には色値とアルファ値が累積していくが、その他の領域は0.0の完全に透明のまま残る。
【0032】
キャンバス自体に透明度が設定されている場合の描画方法について、XPS仕様書中に提示される実装方法では、キャンバス上のオブジェクトの描画が終了し、下のレイヤーに書き込む時に、キャンバスエレメントの属性のOpacityとOpacityMaskの値を累積しているアルファ値に適用(結合)する。これはブレンドステップ(1)にあたり、キャンバス自体のOeとOmを累積したアルファ値にかけることを意味する。
【0033】
また、キャンバス中でオブジェクトが描かれていない領域はOpacity、OpacityMaskが適用されてもアルファ値は0.0で完全に透明な何もかかれない状態で残る。そのため、描画されたオブジェクトの部分にのみ、透明度処理の効果がでる(図3(C)参照)。
【0034】
概念的には上記したステップを経るが、同一キャンバス上にこのとおりの処理をしようとすると、オブジェクトが重なった場合などは、デスティネーションのアルファ値を考慮した図2(A)の厳密なブレンド処理を行うことになる(図3(D))。
【0035】
[構成]
図4は、本発明の実施例に係る画像処理装置の機能ブロック図である。
【0036】
画像処理装置は、通信インタフェース1.1、データ受信部1.2、データ解析部1.3、描画データ処理部1.4(中間言語変換部)、キャンバスチェック部1.4.1、キャンバス用メモリ算出部1.4.3、描画部1.5(アルファブレンド演算部)、出力部1.6、システム制御部1.7、エラー制御部1.8、メモリ管理部1.9の各機能部を有する。以下に各機能部について説明する。
【0037】
通信インタフェース1.1は、ホストコンピュータ等との通信を行う機能部である。
【0038】
データ受信部1.2は、通信インタフェース1.1を介してデータ(ページ記述言語で記載してある印刷データ)を受信する機能部である。
【0039】
データ解析部1.3は、送られてきたページ記述言語で記述された印刷データの解析を行なう機能部である。
【0040】
描画データ処理部1.4(中間言語変換部)は、前記データ解析部1.4からの指示に従い、ページ記述言語を中間言語(ここでは、具体的にはディスプレイリスト)に変換する。
【0041】
XPS等のXML拡張形式で記述されたページ記述言語中には、描画オブジェクトである、パス、グリフス(フォント)、イメージ等のエレメントがあり、これら描画オブジェクトを表示するための土台となるキャンバスがある。これらエレメントやキャンバスは、それぞれに透明度属性を有することが可能である。又、キャンバスは、入れ子構造(ネスト構造)をとって、その中に含むキャンバスやエレメントをひとつのグループとして扱うことが可能となる。
【0042】
描画データ処理部1.4は、前記した入れ子構造をとるキャンバスデータを中間言語に変換する際に、その入れ子構造を保ったままの構成とする。ひとつのキャンバスオブジェクトがディスプレイリストに変換された際の構造を図5に示す。
【0043】
キャンバスのオブジェクトは、その開始を示す「Start」マークに続き、キャンバス上に存在する描画オブジェクト又はキャンバスオブジェクトのディスプレイリスト、キャンバスの終了を示す「End」マーク、その後にキャンバスの透明度情報が続き、キャンバスの下層への描画を示す「Write」コマンドで終了する。
【0044】
キャンバスが入れ子構造となっている場合には、前記した「Start」マークと「End」マークとの間に入れ子となるキャンバスオブジェクトへのポインターが入る。
【0045】
キャンバスチェック部1.4.1は、描画データ処理部1.4に入ってくる描画データの中に透明度設定があった場合にこれをページ単位で覚えておく。透明度設定にはキャンバスの透明度や描画オブジェクトの色の透明度、OpacityMask等が含まれる。また、キャンバスチェック部1.4.1は、描画データ処理部1.4から問い合わせがあった時に、その時点で透明度設定があるかどうかの情報を返す。
【0046】
キャンバス用メモリ算出部1.4.3は、キャンバスデータを保持するのに必要なメモリを算出する。
【0047】
描画部1.5は、描画データ処理部1.4で作成されたディスプレイリスト(中間言語)からVRAM(ページ描画メモリ)にビットマップデータを作成する機能部である。アルファブレンドの演算処理はここ描画部1.5において行われる。
【0048】
出力部1.6は、上記の各機能部で画像処理が行われて得られたビットマップデータを出力する機能部である。前記出力とは、用紙などの記録媒体に印刷することであってもよいし、ディスプレイデバイスに表示出力を行う方法でもよい。
【0049】
システム制御部1.7は、画像処理装置システムの共通情報を管理し、システムの制御を行なう機能部である。
【0050】
エラー制御部1.8は、画像処理装置のエラーが発生した場合の処理を制御する機能部である。
【0051】
メモリ管理部1.9は、画像処理装置のシステムのメモリを管理する機能部である。
【0052】
[アルファブレンド演算アルゴリズム]
図5で示した入れ子構造を有するディスプレイリスト(中間言語)のアルファブレンドの演算は以下に示す再帰アルゴリズムにより効率よく計算される。
【0053】
一つのキャンバスの透過の計算Compositeを考えると、計算は次のようになる。
【0054】
***_nのnをキャンバスに含まれるオブジェクト数とし、計算過程の値を表す。
[擬似コードによるアルゴリズム表記]
C = Composite(C_0,O_0)
入力 C_0 :キャンバスの描画先の現在の色
O_0 :キャンバスに含まれるオブジェクト全体
出力 C :キャンバスの色値

S_0 = C_0 (式1)
全てのオブジェクト(i を1からnまで)で以下の処理を繰り返す。
【0055】
{
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が白となっていれば良い。
【0056】
[処理内容の具体例]
前記した再帰アルゴリズムの処理内容の具体例について図6、図7を用いて以下に説明する。
【0057】
前記アルゴリズムは、キャンバスの開始とともに、一時的に色を保持するバッファを確保し、そのバッファ内で描画処理を行う。キャンバスの終了時点でバッファをイメージとして、一つ下のレイヤーにブレンド処理を行いながら描画していく方法である。キャンバス描画中にさらにネストしている場合は、再帰呼出を行って、それに応じて色を保持するバッファを確保し、一段上のキャンバスとして処理する。
【0058】
この処理を行う場合の一例として、半透明キャンバスがネスト化(入れ子構造)し、さらにそのキャンバス上で、半透明のオブジェクトが重なっているケースを考える。
【0059】
図6(E)は、XPSで表記した一段目のOpacity=0.5を有するCanvas1上に、描画オブジェクトである矩形のObject1が存在し、さらにOpacity=0.5を有する二段目のCanvas2がネストされており、二段目のCanvas2上に三角形のObject2とObject3が存在している。
【0060】
図6(F)に、上記XPSの全オブジェクトを透明度(Opacity)が無いと仮定した場合の描画を示し、図6(G)に上記XPSに表記どおりの透明度(Opacity)のアルファブレンド演算を行った場合の描画を示す。ただし、カラー表記ができないため、グレースケールに変換して描画してある。
【0061】
このデータに対する描画部1.5による処理手順を図7に示し、前記した再帰アルゴリズムの式と対比させて説明を行う。
【0062】
[ページバッファの確保];図7(H)
最初に描画するための最終のページであるページバッファを確保する。
【0063】
[Canvas1の開始];図7(I)
これまでページバッファに描かれている結果をCanvas1にコピーする(式1)。さらに、Canvas1上のObject1を描画する。(式3〜4)。また、Canvas1の透明度情報を何らかの形(例えば、再帰呼出しルーチンのローカル変数等)で保持しておく。
【0064】
[Canvas2の開始];図7(J)
Canvas1に描かれている結果をCanvas2にコピーする。(式2による再帰呼出しと式1)。
【0065】
次に、Canvas2上のオブジェクト(Object2, Object3)を描画する。このとき、Canvas2上でアルファブレンド演算処理を行う(式3〜4)。
【0066】
また、前記と同様にCanvas2の透明度情報を何らかの形(例えば、再帰呼出しルーチンのローカル変数等)で保持しておく。
【0067】
[Canvas2の終了];図7(K)
Canvas2自体の透明度情報(エレメントのOpacity値、OpacityMask値)をもって、Canvas2をイメージとして一段下のCanvas1に描画する(式4)。
【0068】
Canvas2のバッファを開放。
【0069】
[Canvas1の終了];図7(L)
Canvas1自体の透明度属性情報(エレメントのOpacity値、OpacityMask値)をもって、Canvas1をイメージとしてページに描画(式4)。
【0070】
Canvas1のバッファを開放。
【0071】
以上の一連の動作により、再帰アルゴリズムによってアルファブレンド演算処理が可能となった。
【0072】
[フローチャート]
図8は本発明実施例の画像処理装置の動作のフローチャートである。
【0073】
S301:PC等から印刷命令を送信すると通信インタフェース1.1を介してデータ受信部1.2で受信される。
【0074】
S302:データ受信部1.2で受信されたデータはデータ解析部1.3で解析される。データ解析部1.3は描画データ処理部1.4を利用して描画処理を行なう。
【0075】
S303:データ解析部1.3で解析した命令がページ出力命令かどうか判定する。
【0076】
S304:データ解析部1.3で解析した命令がページ出力命令でない場合は、描画データ処理部1.4は命令通りの処理を行う。描画データ処理部1.4はデータ解析部1.3から与えられた情報を基にディスプレイリスト(中間言語の描画命令)を生成する。この時、透明度設定の命令があった場合は、描画データ処理部1.4はその命令の内容をキャンバスチェック部1.4.1に伝える。キャンバスチェック部1.4.1は透明度設定が全く透明の場合や全く不透明以外の透明度(以下ではこれを半透明と記す)が指定されているかどうかを確認し、記憶しておく。そして実際に半透明の描画オブジェクトが生成されたかどうかを記憶しておく。
【0077】
S305:データ解析部1.3はデータ受信部1.2で受信されたデータを全て処理し終えたかどうかを判定する。まだ処理するデータがある場合はS302の処理に戻って解析を行う。
【0078】
S306:データ受信部1.2で受信されたデータを全て処理し終えた場合は、終了の処理を行う。描画処理に使用していたメモリで不要になったメモリを解放したり、エンジンに描画処理が終わったことを伝えたりする。
【0079】
S307:描画データ処理部1.4はキャンバスチェック部1.4.1に現在処理中のページの中に半透明の透明度が設定された描画オブジェクトがあるかどうかを問い合わせる。そしてその情報を描画部1.5に伝える。
【0080】
S308:描画データ処理部1.4は描画部1.5にページ出力命令を送信する。
【0081】
S309:描画部1.5はS307,S308の情報を基にディスプレイリストをビットマップ化する処理を最適に行う。キャンバスの処理を行う際に、仮キャンバスの場合は全ての描画オブジェクトを直接VRAM(ページ描画メモリ)上にビットマップ化する。実キャンバスの場合は図3(C)や図3(D)にあるようにブレンド処理に必要なキャンバス用のメモリを使ってビットマップ化処理を行う。
【0082】
S310:描画部1.5は出来あがった1ページ分のビットマップを出力部1.6へ送ることで印刷が行なわれる。
【0083】
図9は図8のフローチャートのS304の部分で、キャンバスが指定された場合のフローチャートである。
【0084】
S401:キャンバスチェック部1.4.1は指定されたキャンバスの透明度設定が不透明かどうか確認する。
【0085】
S402:指定されたキャンバスが不透明な場合は、キャンバスチェック部1.4.1は最初のキャンバスから連続して不透明なキャンバスが指定されているかどうか確認する。
【0086】
S403:指定されたキャンバスも含めて、最初のキャンバスから連続して不透明なキャンバスが指定されている場合は、キャンバスチェック部1.4.1は指定されたキャンバスは仮キャンバスだという情報をキャンバスの情報に記録する。
【0087】
S404:キャンバスチェック部1.4.1は指定されたキャンバスは実キャンバスだという情報をキャンバスの情報に記録する。
【0088】
S405:キャンバス用メモリ算出部1.4.3はキャンバス処理用に必要なメモリ量を算出して記憶する。
【0089】
[実施例の効果]
本発明実施例の画像処理装置により、以下のことが可能となった。
【0090】
XPS等のXML拡張形式等のページ記述言語によって記述された入れ子構造を有する描画オブジェクト、キャンバスの透明度属性の合成(アルファブレンド演算)を効率よく行うため、ページ記述言語を中間言語に変換する際に前記入れ子構造を保持した形で変換を行った。さらに、前記入れ子構造を有する中間言語データのアルファブレンド演算を再帰アルゴリズムにより実現した。
【0091】
上記の方法により、入れ子構造をまたいだアルファブレンド演算を効率よく行うことが可能となった。
【0092】
上記の構造を有する中間言語により、アルファブレンド演算処理を行い、その後のビットマップデータへの変換を行ってプリンタでの印刷処理が可能となった。
【0093】
本画像処理装置では、指定されたキャンバスが不透明で、かつ最初のキャンバスから連続して不透明なキャンバスが指定されているかどうかを判定することで、キャンバス処理用に実際にメモリを獲得しないといけないキャンバスと直接(ページ描画メモリ)に描画出来るキャンバスを区別し、メモリ効率を良くすると共に、処理速度の向上を図ることが可能となった。
【0094】
[その他]
色値は、実施例中ではRGBの三原色に基づくものを示したが、CMYKの色値であってもよく、同様にアルファブレンド演算が可能である。
【図面の簡単な説明】
【0095】
【図1】XPSによるアルファ値、カラー値、透明度、透明マスクの表記例である。
【図2】キャンバスへの描画時のアルファブレンド(透明度設定なし)の概念図である。
【図3】キャンバスへの描画時のアルファブレンド(透明度設定あり)の概念図である。
【図4】本発明実施例の画像処理装置の機能ブロック図である。
【図5】本発明実施例のディスプレイリストのデータ構造例である。
【図6】ネスト化されたキャンバスのXPSでの表記例(E)とその対応図面(透明度設定あり(F)及びなし(G))である。
【図7】図6(E)に記載のXPSデータの描画の処理手順を示す図である。
【図8】本発明実施例の画像処理装置の動作のフローチャートである。
【図9】図8中のS304の「指定された処理」についての詳細なフローチャートである。
【符号の説明】
【0096】
1.1 通信インタフェース
1.2 データ受信部
1.3 データ解析部
1.4 描画データ処理部(中間言語変換部)
1.4.1 キャンバスチェック部
1.4.3 キャンバス用メモリ算出部
1.5 描画部(アルファブレンド演算部)
1.6 出力部
1.7 システム制御部
1.8 エラー制御部
1.9 メモリ管理部

【特許請求の範囲】
【請求項1】
透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、
前記キャンバスの透明度属性が不透明であるかどうかを判定し、前記不透明と判定されたキャンバスが最初のキャンバスから連続している場合には、前記連続したキャンバスを仮キャンバスと判断し、そうでないキャンバスを実キャンバスと判断するキャンバスチェック部と、
前記仮キャンバスと判断されたキャンバスへの描画は、直接ページ描画メモリに描画し、前記実キャンバスと判断されたキャンバスへの描画は、当該キャンバス上で透明度属性の合成であるアルファブレンド演算を行って描画する描画部とを有する
ことを特徴とする画像処理装置。
【請求項2】
請求項1の画像処理装置であって、
前記ページ記述言語中に前記キャンバスが入れ子構造に記述された場合に、前記ページ記述言語を前記キャンバスの入れ子構造を保ったまま中間言語に変換する中間言語変換部を有し、
前記描画部は、前記入れ子構造を保った中間言語に基づいて前記アルファブレンド演算を行う
ことを特徴とする画像処理装置。
【請求項3】
請求項1又は2の画像処理装置であって、
前記ページ記述言語がXML(Extended Markup Language)拡張形式により記述されたものである
ことを特徴とする画像処理装置。
【請求項4】
透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、
前記キャンバスの透明度属性が不透明であるかどうかを判定し、前記不透明と判定されたキャンバスが最初のキャンバスから連続している場合には、前記連続したキャンバスを仮キャンバスと判断し、そうでないキャンバスを実キャンバスと判断し、
前記仮キャンバスと判断されたキャンバスへの描画は、直接ページ描画メモリに描画し、前記実キャンバスと判断されたキャンバスへの描画は、当該キャンバス上でアルファブレンド演算を行って描画する
ことを特徴とする画像処理方法。
【請求項5】
コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、
前記キャンバスの透明度属性が不透明であるかどうかを判定し、前記不透明と判定されたキャンバスが最初のキャンバスから連続している場合には、前記連続したキャンバスを仮キャンバスと判断し、そうでないキャンバスを実キャンバスと判断するキャンバスチェック機能と、
前記キャンバスチェック機能により、前記仮キャンバスと判断されたキャンバスへの描画は、直接ページ描画メモリに描画し、前記実キャンバスと判断されたキャンバスへの描画は、当該キャンバス上でアルファブレンド演算を行って描画する描画機能とを
コンピュータに実現させることを特徴とする画像処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2010−86044(P2010−86044A)
【公開日】平成22年4月15日(2010.4.15)
【国際特許分類】
【出願番号】特願2008−251315(P2008−251315)
【出願日】平成20年9月29日(2008.9.29)
【出願人】(000006150)京セラミタ株式会社 (13,173)
【Fターム(参考)】