(57)【要約】【課題】  第１の画像に第２の画像を上書きして描画する際の描画時間を短縮すると共に、描画済みのデータの出力に必要なバンド幅を削減する。【解決手段】  描画命令から、１フレーム前のフレームの領域に対して更新される領域を特定する。そして、１フレーム前の符号画像データから、特定した領域のデータを読み出してデコードし、デコードしたデータに対して現在のフレームの更新される領域のデータを上書きして符号化した部分符号画像データを生成する。そして、１フレーム前のフレームの領域に対して更新される領域を参照して、１フレーム前の符号画像データと部分符号画像データとをマージする。【選択図】  図１
2015099443.tif 000002
【特許請求の範囲】
【請求項１】
第１の画像の後に入力される第２の画像の描画命令に基づいて、前記第１の画像の領域のうち、前記第２の画像により更新される更新領域を設定する設定手段と、
記憶媒体に記憶されている前記第１の画像の符号画像データのうち前記更新領域における前記第１の画像の符号画像データを復号化し、前記第１の画像の前記更新領域における復号データを生成する復号手段と、
前記復号手段により生成された前記第１の画像の前記更新領域における復号データに対して、前記第２の画像を上書きする描画処理を行い、前記第２の画像の前記更新領域を含む領域の描画データを生成し、前記第２の画像の前記更新領域の描画データを出力する描画手段と、
前記描画手段により出力された前記第２の画像の前記更新領域における描画データを符号化する符号化手段と、
前記記憶媒体に記憶されている、前記第１の画像の前記更新領域とは異なる領域における符号画像データと、前記符号化手段により符号化された前記第２の画像の前記更新領域における描画データとを合成して、前記第２の画像の符号画像データを生成する符号画像合成手段と、
前記符号画像合成手段により生成された前記第２の画像の符号画像データを前記記憶媒体に記憶する記憶手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記設定手段は、前記更新領域に含まれるオブジェクトを一意に識別する識別情報と、前記更新領域の位置および大きさを特定する情報と、を含む更新領域情報を出力することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記設定手段は、前記第２の画像の描画命令に含まれるオブジェクトの色情報を参照し、透明なオブジェクトの領域を、前記更新領域として設定せずに、透明でないオブジェクトの領域を前記更新領域として設定することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記設定手段は、予め設定されたピクセルの単位の矩形の領域の集合を前記更新領域として設定することを特徴とする請求項１〜３の何れか１項に記載の画像処理装置。
【請求項５】
前記設定手段は、前記描画手段による描画のピクセル精度と同じピクセル精度の矩形、または、前記描画手段による描画のピクセル精度よりも低いピクセル精度の矩形の領域の集合を前記更新領域として設定することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
第１の画像の後に入力される第２の画像の描画命令に基づいて、前記第１の画像の領域のうち、前記第２の画像により更新される更新領域を設定する設定工程と、
記憶媒体に記憶されている前記第１の画像の符号画像データのうち前記更新領域における前記第１の画像の符号画像データを復号化し、前記第１の画像の前記更新領域における復号データを生成する復号工程と、
前記復号工程により生成された前記第１の画像の前記更新領域における復号データに対して、前記第２の画像を上書きする描画処理を行い、前記第２の画像の前記更新領域を含む領域の描画データを生成し、前記第２の画像の前記更新領域の描画データを出力する描画工程と、
前記描画工程により出力された前記第２の画像の前記更新領域における描画データを符号化する符号化工程と、
前記記憶媒体に記憶されている、前記第１の画像の前記更新領域とは異なる領域における符号画像データと、前記符号化工程により符号化された前記第２の画像の前記更新領域における描画データとを合成して、前記第２の画像の符号画像データを生成する符号画像合成工程と、
前記符号画像合成工程により生成された前記第２の画像の符号画像データを前記記憶媒体に記憶する記憶工程と、
を有することを特徴とする画像処理方法。
【請求項７】
前記設定工程は、前記更新領域に含まれるオブジェクトを一意に識別する識別情報と、前記更新領域の位置および大きさを特定する情報と、を含む更新領域情報を出力することを特徴とする請求項６に記載の画像処理方法。
【請求項８】
前記設定工程は、前記第２の画像の描画命令に含まれるオブジェクトの色情報を参照し、透明なオブジェクトの領域を、前記更新領域として設定せずに、透明でないオブジェクトの領域を前記更新領域として設定することを特徴とする請求項６または７に記載の画像処理方法。
【請求項９】
前記設定工程は、予め設定されたピクセルの単位の矩形の領域の集合を前記更新領域として設定することを特徴とする請求項６〜８の何れか１項に記載の画像処理方法。
【請求項１０】
前記設定工程は、前記描画工程による描画のピクセル精度と同じピクセル精度の矩形、または、前記描画工程による描画のピクセル精度よりも低いピクセル精度の矩形の領域の集合を前記更新領域として設定することを特徴とする請求項９に記載の画像処理方法。
【請求項１１】
請求項６〜１０の何れか１項に記載の画像処理方法の各工程をコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、及びコンピュータプログラムに関し、特に、第１の画像に第２の画像を上書きして画像を描画するために用いて好適なものである。
【背景技術】
【０００２】
アニメーションの描画に、ベクタグラフィックスを用いるシステムが普及している。表示デバイスの大画面化や高解像度化に伴い、画像の描画に用いるレンダラが取り扱うピクセル数は今後も増大が予想される。描画対象のピクセル数が多い場合、座標情報や色情報を用いて描画図形（オブジェクト）の形状を指示するベクタグラフィックスの方が、ビットマップを用いるラスタグラフィックスと比較して描画指示に用いるデータが小さい。
【０００３】
ベクタグラフィックスアニメーションを描画するレンダラは、アニメーションを構成する各フレームを順に描画する。フレームの描画する方法として、各フレームに含まれるアニメーションの要素を毎フレームすべて描画する方法の他に、以前に描画した画像に現在のフレームで更新される差分を描画する方法がある。特許文献１には、オブジェクトの動作によって更新される領域のみを既に描画されたフレーム画像に上書きする方法が開示されている。
【０００４】
任意のベクタグラフィックスアニメーションを描画するシステムでは、レンダラによるアニメーションの描画にかかる時間が予測できない。このようなシステムでは、描画済みの画像の表示処理と画像の更新処理とのタイミング制御の容易化のため、ダブルバッファやマルチバッファを用いる構成を採るものがある。ダブルバッファを用いるシステムでは、レンダラが以前のフレームとの差分を描画する場合、ダブルバッファを構成するバッファ間で適切なデータをコピーしておく必要がある。描画中のフレームが以前のフレームで描画したオブジェクトに半透明のオブジェクトを重ねるケースや、描画命令に基づき描画済みのフレームの任意の場所を参照し、現在のオブジェクトの描画に必要な色情報を描画済みのフレームから取得するケースがある。このため、１フレーム前の描画結果を、これから描画するバッファまたはワークメモリにコピーし、コピーが完了した後に描画処理を開始する。描画処理に先だって行われるバッファ間の画像のコピーにかかる待ち時間を削減するため、特許文献２には、変化しない領域をオンスクリーンにコピーすることと、差分の描画処理を行うこととを並行して行う方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２６５３３１号公報
【特許文献２】特開２０１０−１６４９７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、描画ピクセル数の増大に伴い、レンダラが描画時に参照する画像データや、描画済みデータの出力に必要となるバンド幅が増大している。ダブルバッファやマルチバッファを用いるシステムでは、描画済み画像や背景画像のコピーのためのバンド幅も追加で必要となる。
また、全ての描画要素を再描画する方法では、フレーム間のコピーにかかるバンド幅は不要となる。しかしながら、フレーム間で差分がない領域にビットマップデータの参照や変形を含むケースでは、複数の入力ビットマップデータへのアクセスを毎フレーム繰り返す必要がある。このため、フレームの再描画のためのバンド幅が大きくなる。また、各フレームの描画処理に必要な時間も長くなってしまう。
本発明は、このような問題点に鑑みてなされたものであり、第１の画像に第２の画像を上書きして描画する際の描画時間を短縮すると共に、描画済みのデータの出力に必要なバンド幅を削減することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の画像処理装置は、第１の画像の後に入力される第２の画像の描画命令に基づいて、前記第１の画像の領域のうち、前記第２の画像により更新される更新領域を設定する設定手段と、記憶媒体に記憶されている前記第１の画像の符号画像データのうち前記更新領域における前記第１の画像の符号画像データを復号化し、前記第１の画像の前記更新領域における復号データを生成する復号手段と、前記復号手段により生成された前記第１の画像の前記更新領域における復号データに対して、前記第２の画像を上書きする描画処理を行い、前記第２の画像の前記更新領域を含む領域の描画データを生成し、前記第２の画像の前記更新領域の描画データを出力する描画手段と、前記描画手段により出力された前記第２の画像の前記更新領域における描画データを符号化する符号化手段と、前記記憶媒体に記憶されている、前記第１の画像の前記更新領域とは異なる領域における符号画像データと、前記符号化手段により符号化された前記第２の画像の前記更新領域における描画データとを合成して、前記第２の画像の符号画像データを生成する符号画像合成手段と、前記符号画像合成手段により生成された前記第２の画像の符号画像データを前記記憶媒体に記憶する記憶手段と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、第１の画像に第２の画像を上書きして描画する際の描画時間を短縮すると共に、描画済みのデータの出力に必要なバンド幅を削減することができる。
【図面の簡単な説明】
【０００９】
【図１】画像処理装置の構成を示すブロック図である。
【図２】描画命令を示す図である。
【図３】描画命令に基づき描画される２フレームの画像を示す図である。
【図４】オブジェクトのバウンディングボックスの位置関係を示す図である。
【図５】更新領域情報の一例を示す図である。
【図６】第１のフレームの更新領域をデコードした結果を示す図である。
【図７】第２のフレームにおける更新領域の描画の結果を示す図である。
【図８】部分符号画像データを示す図である。
【図９】第１のフレームの符号画像データを示す図である。
【図１０】領域判定データを示す図である。
【図１１】符号画像合成部の動作を示すフローチャートである。
【図１２】第２のフレームの符号画像データを示す図である。
【図１３】更新領域情報の他の例を示す図である。
【図１４】更新領域情報のその他の例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら、本発明の一実施形態について詳細に説明する。
図１は、本実施形態の画像処理装置１００の構成の一例を示すブロック図である。
画像入力部１０１は、ベクタグラフィックスの描画命令を受信する。更新領域抽出部１０２は、画像入力部１０１が受信した描画命令から、現在のフレームの描画処理中に参照する１フレーム前の描画結果の領域の情報を更新領域情報として抽出する。現在のフレームの描画処理中に参照する１フレーム前の描画結果の領域は、１フレーム前の描画結果の領域のうち、現在のフレームにおいて更新される領域である。以下の説明では、この領域を必要に応じて更新領域と称する。
【００１１】
部分画像復号部１０３は、１フレーム前の描画結果を部分的にデコード（復号化）する。描画部１０４は、部分画像復号部１０３で部分的にデコードされた更新領域のデータに対して現在のフレームの更新領域のデータを上書きして更新領域の描画を行い、描画データを生成する。符号化部１０５は、描画部１０４で生成された描画データをエンコード（符号化）する。
符号画像合成部１０６は、データ格納部１０８に格納された１つ前のフレームの符号画像データと、符号化部１０５で符号化された描画データとをマージ（合成）して現在のフレームの符号画像データを生成する。出力部１０７は、符号画像合成部１０６で得られた符号画像データをデータ格納部１０８に出力する。復号部１０９は、データ格納部１０８に格納された符号画像データを復号化して復号画像データを生成する。表示部１１０は、復号部１０９で生成された復号画像データに基づく画像を表示する。
【００１２】
以下、これらの動作の一例を説明する。
画像処理装置１００は、ユーザによる操作指示に基づいて、ＳＶＧやＪＡＶＡ（登録商標）で記述された画像データを、適切なパーザを用いてフレームの描画完了指示を含む描画命令に変換し、画像入力部１０１に入力する。
図２は、描画命令の一例を示す図である。図３は、図２に示す描画命令に基づき描画される２フレームの画像の一例を概念的に示す図である。具体的に図３（ａ）は、第１のフレームの画像（第１の画像）を示し、図３（ｂ）は、第１のフレームの次に表示される第２のフレームの画像（第２の画像）を示す。
命令２０１から命令２０４は、図３（ａ）に示す第１のフレームの画像の描画命令である。命令２０５から命令２１５は、図３（ｂ）に示す第２のフレームの画像の描画命令である。本実施形態では、第１のフレームの画像に追加のオブジェクトを上書きして第２のフレームの画像を描画する場合を例に挙げて示す。尚、本実施形態では、特に指定がない限り、Ｘ座標は右方向、Ｙ座標は上方向に増加するものとする。
【００１３】
命令２０１は、描画するフレームの全域を引数に指定された色で塗りつぶし、初期化することを示す。
命令２０２は、塗りつぶし色の設定を変更することを示す。命令２０２以降で塗りつぶし(FILL)が指示された場合、命令２０２の引数で指定された値が用いられる。以下、図２に含まれる色の設定を変更する命令では、ＲＧＢＡ各８ビットの色情報を用いるものとする。すなわち、図２の命令２０２、２０５、２０９、２１３は、Ｒｅｄ、Ｇｒｅｅｎ、Ｂｌｕｅ、α値をこの順で上位から８ビットずつパッキングした３２ビットのデータで表現される。命令２０２が設定する色は不透過な灰色(0xAAAAAAFF)である。
【００１４】
命令２０３は、長方形の左下と右上の座標を受け取り、命令２０２で設定された灰色で塗りつぶされた長方形３０２を描画することを示す。図２に示す例では、長方形の左下と右上の座標はそれぞれ(X, Y)＝(2.0,1.0), (5.0,3.0)である。
命令２０４は、第１のフレームの描画完了を指示することを示す。
命令２０５は、塗りつぶし色を透過な白(0xFFFFFF00)に変更することを示す。
命令２０６は、座標(X, Y)＝(6.2, 6.0), (7.8, 8.5)をそれぞれ左下、右上とする長方形を命令２０５で設定した値で描画する。α値が０（ゼロ）であるため、この長方形は図３（ｂ）の描画結果に現れない。
【００１５】
命令２０７は、塗りつぶし色を半透明の赤(0xFF000080)に設定することを示す。
命令２０８は、中心と、横幅及び高さと、角度とを指定して楕円を描画することを示す。具体的に命令２０８は、中心の座標が(X, Y)=(4.0, 4.0)、横幅及び高さがそれぞれ2.0、描画開始の開始角度が０（ゼロ）度、描画終了の角度が360度の円３０３を塗りつぶしで描画することを示す。
命令２０９は、塗りつぶし色を半透明の青(0x0000FF80)に設定することを示す。
命令２１０は、命令２１１が使用する座標情報を示す。
【００１６】
命令２１１では、描画開始の座標を指定するMOVETOと、現在の座標から指定された座標を線分で結ぶLINETOと、現在の座標と描画開始の座標とを結ぶCLOSEPATHと、を指定する。命令２１１に含まれる処理では、命令２１０で与えられた座標が順に参照される。
命令２１２は、命令２１０、命令２１１で指定した三角形３０４を描画することを示す。
命令２１３は、塗りつぶし色を黒(0x000000FF)に設定することを示す。
命令２１４は、座標(X, Y)＝(5.1, 2.1), (5.9, 2.9)をそれぞれ左下、右上とする正方形３０５を描画することを示す。
命令２１５は、第２のフレームの描画完了を指示することを示す。
画像入力部１０１に入力された描画命令は、描画部１０４と更新領域抽出部１０２に送られる。
【００１７】
更新領域抽出部１０２は、描画命令から、図形の描画に関わる図形描画命令を抽出し、抽出した図形描画命令に与えられた座標情報から更新領域情報を生成する。
以下、本実施形態では、図３（ｂ）に示す第２のフレームの画像を描画する際に、オブジェクトが存在し得る領域を囲む矩形領域であるバウンディングボックスを用いて更新領域情報を生成する方法を例に挙げて説明する。
【００１８】
図４は、命令２０５〜２１５で描画されるそれぞれのオブジェクトのバウンディングボックスの論理座標上での位置関係の一例を示す図である。
図２の命令２０５、２０６によって描画される長方形のバウンディングボックス４０１は、長方形を構成する頂点の情報から、左下、右上の座標をそれぞれ(X, Y)=(6.2, 6.0)、(7.8, 8.5)とする長方形となる。
命令２０７、２０８によって描画される円３０３のバウンディングボックス４０２は、円の中心点の情報と横幅及び高さの情報とから、左下、右上の座標をそれぞれ(X, Y)=(2.0, 2.0)、(6.0, 6.0)とする長方形となる。
【００１９】
命令２０９〜２１２によって描画される三角形３０４のバウンディングボックス４０３は、三角形を構成する頂点の情報から、左下、右上の座標をそれぞれ(X, Y)＝(2.0, 0.0)、(3.0, 2.0)とする長方形となる。
命令２１３〜２１５によって描画される正方形３０５のバウンディングボックス４０４は、正方形を構成する頂点の情報から、左下、右上の座標をそれぞれ(X, Y)=(5.1, 2.1)、(5.9, 2.9)とする正方形となる。
【００２０】
実際には、ピクセル精度（１ピクセルの単位）で描画を行うため、更新領域抽出部１０２は、バウンディングボックスを含む"１つのピクセル又は複数のピクセルの集合"を更新領域情報として抽出する。
図５は、更新領域情報の一例を示す図である。具体的に図５（ａ）は、図４に示すバウンディングボックス４０１〜４０４を、縦８ピクセル、横１０ピクセルのピクセル精度の２次元座標系にマッピングした更新領域の一例を示す図である。図５（ｂ）は、図５（ａ）に示す更新領域から生成される更新領域情報の一例を示す図である。
【００２１】
領域５０１は、バウンディングボックス４０１を含む領域である。領域５０１は、図５（ｂ）のエントリ５１３に示す通り、オブジェクトの更新領域の開始位置が(X, Y)=(6, 6)であり、サイズ（大きさ）が幅２ピクセル、高さ２ピクセルの領域として定義される。更新領域情報に記録されるオブジェクトには、オブジェクトの描画順を一意に識別する識別情報として、オブジェクトごとに異なるＩＤが付与される。
同様に領域５０２はバウンディングボックス４０２を含む領域、領域５０３はバウンディングボックス４０３を含む領域、領域５０４はバウンディングボックス４０４を含む領域である。領域５０２、領域５０３、領域５０４はそれぞれエントリ５１１、エントリ５１０、エントリ５１３に格納される。
【００２２】
図１の説明に戻り、部分画像復号部１０３は、データ格納部１０８に置かれた１フレーム前の符号画像データのうち、更新領域情報によって指示される更新領域の符号画像データを読み出してデコードし、デコードした結果を描画部１０４に出力する。
部分画像復号部１０３は、第１のフレームの符号画像データを読み出し、更新領域情報の座標にあたる部分をデコードする。本実施形態では、符号画像データの生成に、ランレングス圧縮を用いる場合を例に挙げて説明する。ランレングス圧縮の場合、部分画像復号部１０３は、符号化された第１のフレームのラン長を走査して、更新領域情報にあたる領域をデコードし、デコードした結果を描画部１０４に出力する。
【００２３】
図６は、第１のフレームの更新領域をデコードした結果の一例を概念的に示す図である。具体的に図６は、第１のフレームの符号画像データのうち、図５（ｂ）に示した更新領域情報により指示された更新領域の部分を、部分画像復号部１０３がデコードすることにより得られるピクセルイメージの一例を示す図である。
図５のエントリ５１０で指定される領域は、ピクセル６０１とピクセル６０２の領域である。エントリ５１２で指定される領域は、ピクセル６０４の領域である。以下同様に、エントリ５１１で指定される領域は、ピクセル６０３を左下とする幅４ピクセル、高さ４ピクセルの領域であり、エントリ５１３で指定される領域は、ピクセル６０５を左下とする幅２ピクセル、高さ２ピクセルの領域である。
【００２４】
図６に示すデコードの結果（復号データ）は、部分画像復号部１０３と描画部１０４がともに参照可能な図示しないワークメモリに置いてもよい。デコードの結果（復号データ）を一度ワークメモリに格納する場合、部分画像復号部１０３は、更新領域情報のＩＤと、各ＩＤに対応するデコードの結果（復号データ）へのポインタを描画部１０４に出力する。
【００２５】
描画部１０４は、第２のフレームの描画命令のうち更新領域の部分の描画命令を順に実行し、第２のフレームの更新領域の描画を行う。ピクセル値の算出に１フレーム前の描画結果が必要となる場合、描画部１０４は部分画像復号部１０３が出力した復号データを参照する。
図２に示した例では、以下のふたつの条件の何れかに当てはまるピクセルにおいて、１フレーム前の描画結果を参照する。
ひとつ目は、塗りつぶし色が半透明色で指定され、且つ、その半透明色の下地に１フレーム前の色を重ねる必要がある領域である。図３に示した例では、円３０３、三角形３０４の描画では、オブジェクトが存在する全てのピクセルで１フレーム前（第１のフレーム）の描画データを参照する必要がある。
【００２６】
ふたつ目は、オブジェクトの辺や１ピクセルに満たないオブジェクトが描画される領域である。図３において、現在の第２のフレームで描画された正方形３０５のオブジェクトの領域は幅0.8ピクセル、高さ0.8ピクセルであり、１ピクセルより小さい。よって、１ピクセル内の色の算出では、１ピクセル内でオブジェクトが覆わない部分の色と、オブジェクトが覆う部分の色を混色するため、１フレーム前のピクセル値を参照する必要がある。
【００２７】
図７は、第２のフレームにおける更新領域の（描画部１０４による）描画の結果（部分描画結果）の一例を示す図である。
ピクセル７０１では、第２のフレームで描画する三角形３０４がピクセルの７５％をカバーし、残りの２５％は第２のフレームで描画されない。ピクセル値の計算ではピクセルのカバー率が１００％となる必要がある。このため、第２のフレームで描画されない２５％の領域については、１フレーム前に描画した第１のフレームのピクセル色が用いられる。ピクセル７０１の値は、背景色を２５％、三角形３０４の半透明の青(0x0000FF80)を７５％の割合で混色した値となる。
同様にピクセル７０２の値は、長方形３０２の灰色(0xAAAAAAFF)を７５％、三角形３０４の半透明の青(0x0000FF80)を２５％の割合で混色した値である。
【００２８】
ピクセル７０３、７０４、７０５、７０６は、領域５０２に含まれているが、描画部１０４で描画された円３０３の色は、ピクセル７０３の値に寄与しない。よって、ピクセル７０３、７０４、７０５、７０６の値には、第１のフレームの描画結果として得られたピクセル値（図６に示すデコードの結果）がそのまま用いられる。
第２のフレームで描画される正方形３０５は不透過であるが、正方形３０５は、ピクセルの８１％の領域しかカバーしていない。このため、残りの１９％の領域からのピクセル値への寄与分を算出するため、描画部１０４は、ピクセル７０７の値を決定する際に、第１のフレームの描画結果として得られたピクセル値を参照する。
尚、描画部１０４は、第２のフレームの描画命令の全てを順に実行し第２のフレームの全ての描画を行い、そのうちの更新領域の描画データのみを出力してもよい。
【００２９】
図１の説明に戻り、符号化部１０５は、描画部１０４で描画された描画データを符号化したデータである部分符号画像データを生成して符号画像合成部１０６に出力する。
図８は、部分符号画像データの一例を示す図である。具体的に図８は、図７に示す部分描画結果を符号化部１０５で符号化した部分符号画像データの一例を示す図である。本実施形態では、ランレングス圧縮を行うため、部分符号はピクセル値とラン長で構成される。
図８のエントリ８０１は図７のピクセル７０１、エントリ８０２はピクセル７０２、エントリ８０３はピクセル７０３、エントリ８０４はピクセル７０８、７０９、エントリ８０５はピクセル７０４、エントリ８０６はピクセル７０７の符号化の結果を示す。以下同様に、座標値が小さいものから順に符号化される。
【００３０】
図１の説明に戻り符号画像合成部１０６は、データ格納部１０８から読み出した第１のフレームの符号画像データと、符号化部１０５が出力する第２のフレームの部分符号画像データとをマージする。マージの際に選択するデータは、図５（ｂ）に示した更新領域情報を参照して決定される。
図９は、第１のフレームの符号画像データの一例を示す図である。具体的に図９（ａ）は、第１のフレームを幅１０ピクセル、高さ８ピクセルで描画した際のピクセル精度の画像の一例を示す図である。図９（ｂ）は、第１のフレームの符号画像データの一例を示す図である。図２の描画命令によると、Color0は白、Color1は0xAAAAAAFF（灰色）である。
エントリ９１０は、ピクセル９０１からY=0のスキャンラインの１０ピクセルと、Y=1のスキャンラインのX=0,X=1の２ピクセルとを合わせた背景色領域の符号化結果であるため、ラン長は１２、ピクセル値はColor0となる。エントリ９１１は、同様にピクセル９０２から５ピクセル連続する灰色の領域であるため、ラン長は５、ピクセル値はColor1である。
【００３１】
次に、符号画像合成部１０６が、第１のフレームの符号画像データ（図９（ｂ）を参照）と、第２のフレームの部分符号画像データ（図８を参照）とをマージし、第２のフレームの符号画像データを構成するための処理の一例を説明する。
符号画像合成部１０６は、図５（ｂ）に示した更新領域情報から、第１のフレームの符号画像データをコピー（適用）する部分と、第２のフレームの部分符号画像データをコピー（適用）する部分とを判断する。本実施形態では簡単化のため、符号画像合成部１０６は、更新領域情報を読み、(X, Y)=(0, 0)からピクセル走査順にコピー元のデータを判定した結果を、図１０に示す領域判定データに当てはめて中間形式で出力するものとする。
図１０の各エントリは、ソースとレングスとを持つ。ソースは、第２のフレームの符号画像データのコピー元が、第１のフレームの符号画像データであるか、それとも、符号化部１０５が出力した第２のフレームの部分符号画像データであるかを示す。レングスは、各ソース元から取得したピクセル値が何ピクセル連続するかを示す。
【００３２】
図１１は、符号画像合成部１０６の動作の一例を示すフローチャートである。
本実施形態では、符号画像合成部１０６は、第１のフレームの符号画像データの読み出し条件の判定にピクセルカウンタを用いる。ステップＳ１１０１で、符号画像合成部１０６は、ピクセルカウンタの値を０（ゼロ）にリセットする。
次に、ステップ１１０２において、符号画像合成部１０６は、図１０に示す領域判定データの中に、未処理のエントリが存在するか否かを判定する。この判定の結果、図１０に示す領域判定データの中に、未処理のエントリが存在しない場合には、図１１のフローチャートによる処理を終了する。
【００３３】
一方、図１０に示す領域判定データの中に、未処理のエントリが存在する場合には、ステップＳ１１０３に進む。ステップＳ１１０３に進むと、符号画像合成部１０６は、図１０に示す領域判定データのエントリを１つ読み出す。
次に、ステップＳ１１０４において、符号画像合成部１０６は、ステップＳ１１０３で読み出した領域判定データのエントリのソースの値がFrame2であるか否かを判定する。この判定の結果、領域判定データのエントリのソースの値がFrame1である場合には、ステップＳ１１０５に進む。一方、領域判定データのエントリのソースの値がFrame2である場合には、後述するステップＳ１１１０に進む。
【００３４】
ステップＳ１１０５に進むと、符号画像合成部１０６は、ピクセルカウンタの値が０（ゼロ）であるか否かを判定する。この判定の結果、ピクセルカウンタの値が０（ゼロ）である場合には、ステップＳ１１０６、Ｓ１１０７を省略して後述するステップＳ１１０８に進む。一方、ピクセルカウンタの値が０（ゼロ）でない（正である）場合には、ステップＳ１１０６に進む。
ステップＳ１１０６に進むと、符号画像合成部１０６は、第１のフレームFrame1の符号画像データのエントリを１つ読み出す（図９（ｂ）を参照）。
次に、ステップＳ１１０７において、符号画像合成部１０６は、ピクセルカウンタの値に、ステップＳ１１０６で読み出した符号画像データのエントリのラン長を設定する（図９（ｂ）を参照）。また、符号画像合成部１０６は、Frame1出力ピクセル値にステップＳ１１０６で読み出した符号画像データのエントリのピクセル値を設定する（図９（ｂ）を参照）。
【００３５】
次に、ステップＳ１１０８において、符号画像合成部１０６は、次の処理を行う。すなわち、ステップＳ１１０７で設定したFrame1出力ピクセル値をピクセル値とし、ステップＳ１１０３で読み出した領域判定データのエントリのレングスをラン長として、第２のフレームFrame2の符号画像データのエントリを１つ出力する。図１２は、第２のフレームの符号画像データの一例を示す図である。また、ステップＳ１１０５からステップＳ１１０８に進んだ場合、符号画像合成部１０６は、次の処理を行う。すなわち、ステップＳ１１０７で前回設定されたFrame1出力ピクセル値をピクセル値とし、ピクセルカウンタの値をラン長として、第２のフレームFrame2の符号画像データのエントリを１つ出力する。
次に、ステップＳ１１０９において、符号画像合成部１０６は、ピクセルカウンタの現在の値から、ステップＳ１１０３で読み出した領域判定データのエントリのレングスの値を減算してピクセルカウンタの値を更新する。以上で領域判定データの１つのエントリの処理が完了するので、ステップＳ１１０２に戻り、処理を繰り返す。
【００３６】
前述したように、ステップＳ１１０４において、領域判定データのエントリのソースの値がFrame2である場合には、ステップＳ１１１０に進む。ステップＳ１１１０に進むと、符号画像合成部１０６は、第２のフレームFrame2の部分符号画像データのエントリを１つ読み出す（図８を参照）。
次に、ステップＳ１１１１において、符号画像合成部１０６は、Frame2出力ピクセル値にステップＳ１１１０で読み出した部分符号画像のエントリのピクセル値を設定する。
次に、ステップＳ１１１２において、符号画像合成部１０６は、次の処理を行う。すなわち、ステップＳ１１１０で設定したFrame2出力ピクセル値をピクセル値とし、ステップＳ１１０３で読み出した領域判定データのエントリのレングスをラン長として、第２のフレームFrame2の符号画像データのエントリを１つ出力する。
【００３７】
ステップＳ１１１０〜Ｓ１１１２で第２のフレームFrame2の符号画像データのエントリを出力した場合、当該エントリに対応する領域の第１のフレームFrame1の符号画像データのエントリの読み出しをステップＳ１１１３〜Ｓ１１２２で省略する。
具体的にステップＳ１１１３において、符号画像合成部１０６は、スキップレングスにステップＳ１１０３で読み出した領域判定データのエントリのレングスを設定する。
次に、ステップＳ１１１４において、符号画像合成部１０６は、ピクセルカウンタの値がスキップレングスの値以上であるか否かを判定する。この判定の結果、ピクセルカウンタの値がスキップレングスの値以上である場合、処理中の第１のフレームFrame1の符号画像データでスキップ処理が完了する。この場合、ステップＳ１１１５において、符号画像合成部１０６は、ピクセルカウンタの現在値からスキップレングスの値を減算してピクセルカウンタの値を更新する。
【００３８】
次に、ステップＳ１１１６において、符号画像合成部１０６は、ピクセルカウンタの値が０（ゼロ）であるか否かを判定する。この判定の結果、ピクセルカウンタの値が０（ゼロ）である場合、ステップＳ１１１７、Ｓ１１１８において、符号画像合成部１０６は、ステップＳ１１０６、Ｓ１１０７と同様の処理を行って、ステップＳ１１０２に戻る。すなわち、符号画像合成部１０６は、第１のフレームFrame1の符号画像データのエントリを１つ読み出す。そして、符号画像合成部１０６は、ピクセルカウンタの値に、当該読み出した符号画像データのエントリのラン長を設定すると共に、Frame1出力ピクセル値に当該読み出した符号画像データのエントリのピクセル値を設定する。一方、ピクセルカウンタの値が０（ゼロ）でない場合には、ステップＳ１１１７、Ｓ１１１８を省略してステップＳ１１０２に戻る。
【００３９】
ステップＳ１１１４において、ピクセルカウンタの値がスキップレングスの値以上でないと判定された場合、スキップレングスが処理中の第１のフレームFrame1の符号画像データのエントリの残りピクセル数よりも長い。この場合には、ステップＳ１１１９〜Ｓ１１２２の処理で新たな第１のフレームFrame1の符号画像データのエントリを読み出し、スキップレングス分の第１のフレームFrame1の符号画像データのエントリをスキップする。
【００４０】
そのために、まず、ステップＳ１１１９において、符号画像合成部１０６は、スキップレングスの値からピクセルカウンタの値を減算する。そして、ステップＳ１１２０、Ｓ１１２１において、符号画像合成部１０６は、ステップＳ１１０６、Ｓ１１０７と同様の処理を行う。
そして、ステップＳ１１２２において、符号画像合成部１０６は、スキップレングスの値が０（ゼロ）であるか否かを判定する。この判定の結果、スキップレングスの値が０（ゼロ）である場合には、ステップ１１０２に戻る。一方、スキップレングスの値が０（ゼロ）でない（正の値である）場合、スキップレングスの値が０（ゼロ）になるまでステップＳ１１１４〜Ｓ１１２２の処理を繰り返す。
【００４１】
以下に、符号画像合成部１０６が、図１０に示す領域判定データのエントリ１００１〜エントリ１００３を処理する方法の一例を説明する。
符号画像合成部１０６は、ステップＳ１１０１〜Ｓ１１０３の処理を順に実行し、図１０に示す領域判定データの先頭のエントリ１００１を読み出す。
図１０のエントリ１００１のソースの値はFrame1であるので、ステップＳ１１０４の判定の結果、ステップＳ１１０５に進む。
ステップＳ１１０１の初期化処理でピクセルカウンタの値は０（ゼロ）にリセットされている。このため、ステップＳ１１０５の判定の結果、ステップＳ１１０６に進む。ステップＳ１１０６において、符号画像合成部１０６は、第１のフレームFrame1の符号画像データのエントリとして、図９（ｂ）の先頭のエントリ９１０を読み出す。
【００４２】
続いて、ステップＳ１１０７において、符号画像合成部１０６は、図９（ｂ）のエントリ９１０のラン長１２をピクセルカウンタの値として設定する。さらに、符号画像合成部１０６は、図９（ｂ）のエントリ９１０のピクセル値Color0をFrame1出力ピクセル値として設定する。
ステップＳ１１０３では、図１０のエントリ１００１（ラン長２）が読み出されており、ステップＳ１１０７では、エントリ９１０のピクセル値Color0がFrame1出力ピクセル値として設定されている。そこで、ステップＳ１１０８において、符号画像合成部１０６は、ラン長を２、ピクセル値をColor0とするエントリを、第２のフレームFrame2の符号画像データのエントリ１２０１として出力する。
ステップＳ１１０７において、ピクセルカウンタの値が１２に更新されている。また、ステップＳ１１０３では、図１０のエントリ１００１（ラン長２）が読み出されている。そこで、ステップＳ１１０９において、符号画像合成部１０６は、ピクセルカウンタの現在の値１２から、エントリ１００１のレングスである２を減算し、ピクセルカウンタの値を１０に更新する。
【００４３】
その後、ステップＳ１１０２、Ｓ１１０３の処理を実行し、符号画像合成部１０６は、図１０に示す領域判定データの次のエントリ１００２を読み出す。
エントリ１００２のソースはFrame2であるので、ステップＳ１１０４の判定の結果、ステップＳ１１１０に進む。
ステップＳ１１１０において、符号画像合成部１０６は、第２のフレームFrame2の部分符号画像データのエントリとして、図８の先頭のエントリ８０１を読み出す。続いて、ステップＳ１１１１において、符号画像合成部１０６は、ステップＳ１１１０で読み出したエントリ８０１のピクセル値Color7をFrame2出力ピクセル値として設定する。
【００４４】
次に、ステップＳ１１１２において、符号画像合成部１０６は、第２のフレームFrame2の符号画像データのエントリ１２０２を出力する。このエントリ１２０２は、ステップＳ１１１０で設定したFrame2出力ピクセル値Color7をピクセル値とし、ステップＳ１１０３で読み出した領域判定データのエントリ１００２のレングス１をラン長とするエントリである。
次に、ステップＳ１１１３において、符号画像合成部１０６は、スキップレングスとして、ステップＳ１１０３で読み出した領域判定データのエントリ１００２のレングスの値１を設定する。
【００４５】
ステップＳ１１０９において、ピクセルカウンタの現在の値が１０に設定され、ステップＳ１１１３において、スキップレングスの値が１に設定されているので、ステップＳ１１１４の判定の結果、ステップＳ１１１５に進む。
そして、ステップＳ１１１５において、符号画像合成部１０６は、ピクセルカウンタの現在の値である１０からスキップレングスの値である１を減算し、ピクセルカウンタの値を９に更新する。この結果、ステップＳ１１１６において、ピクセルカウンタは０ではないと判定されるので、ステップＳ１１０２に戻る。
【００４６】
そして、ステップＳ１１０２、Ｓ１１０３の処理を実行し、符号画像合成部１０６は、図１０に示す領域判定データの次のエントリ１００３を読みだす。
エントリ１００３のソースはFrame1であるので、ステップＳ１１０４の判定の結果、ステップＳ１１０５に進む。
ステップＳ１１１５において、ピクセルカウンタの値が９に更新されている。したがって、ステップＳ１１０５の判定の結果、ステップ１１０８に進む。前回のステップＳ１１０７において、エントリ９１０のピクセル値Color0がFrame1出力ピクセル値として設定されている。そこで、ステップＳ１１０８において、符号画像合成部１０６は、ラン長を９、ピクセル値をColor0とするエントリを、第２のフレームFrame2の符号画像データのエントリ１２０３として出力する。
【００４７】
前述したように、ステップＳ１１１５において、ピクセルカウンタの値が９に更新されている。また、ステップＳ１１０３では、図１０のエントリ１００３（ラン長９）が読み出されている。そこで、ステップＳ１１０９において、符号画像合成部１０６は、ピクセルカウンタの現在の値９から、エントリ１００３のレングスである９を減算し、ピクセルカウンタの値を０に更新する。
以下同様の処理を行うことにより、図１２に示す第２のフレームFrame2の符号画像データを得ることができる。
【００４８】
図１の説明に戻り、出力部１０７は、以上のようにして符号画像合成部１０６が生成した第２のフレームFrame2の符号画像データをデータ格納部１０８に出力する。
復号部１０９は、出力部１０７による１フレーム（第２のフレームFrame2の符号画像データ）の出力が完了すると、出力が完了したフレームをデータ格納部１０８から読み出し、デコードする。
表示部１１０は、復号部１０９が出力したデータを表示する。
尚、映像や写真等、描画部１０４が描画する画像以外に複数の画像を重畳して出力するシステムでは、復号部１０９と表示部１１０との間で、画像の重ね合わせを行う処理部を追加してもよい。
【００４９】
以上のように本実施形態では、描画命令から、１フレーム前のフレームの領域に対して更新される領域を特定する。そして、１フレーム前の符号画像データから、特定した領域のデータを読み出してデコードし、デコードしたデータに対して現在のフレームの更新される領域のデータを上書きして符号化した部分符号画像データを生成する。そして、１フレーム前のフレームの領域に対して更新される領域を参照して、１フレーム前の符号画像データと部分符号画像データとをマージする。このように、１フレーム前の符号画像データをコピーして、更新される領域をデコードして描画するため、全てのオブジェクトを再描画する方法に比べて描画時間を短縮することができる。また、１フレーム前の符号画像データ及び部分符号画像データは符号化されているため、描画したデータの出力に必要なバンド幅を、非圧縮データを用いる場合と比較して削減することができる。
【００５０】
（変形例）
本実施形態では、透明なオブジェクトについてもバンディングボックスを計算し、更新領域情報に含めるようにした。しかしながら、透明なオブジェクトについては、このような処理を行わないようにしてもよい。以下に、このようにする場合のバウンディングボックスの算出と、更新領域情報の生成の方法の一例を示す。
【００５１】
更新領域抽出部１０２は、描画色の指示に関わる描画命令のα値を保持し、透明を示すα＝０で描画されたオブジェクトのバウンディングボックスの演算を行わない。図２に示す描画命令では、描画色の指示に関わる命令は命令２０２、２０５、２０９、２１３である。図２の描画命令では、命令２０５でα値が０に設定された後、命令２０７の実行前まではα値が０となる。このため、更新領域抽出部１０２は、命令２０５で設定された色を用いる命令２０６に基づき描画するオブジェクトについては、バウンディングボックスを生成しない。
【００５２】
図１３は、更新領域情報の他の例を示す図である。具体的に図１３（ａ）は、図４に示すバウンディングボックス４０２〜４０４を、縦８ピクセル、横１０ピクセルのピクセル精度の２次元座標系にマッピングした更新領域の一例を示す図である。図１３（ｂ）は、図１３（ａ）に示す更新領域から生成される更新領域情報の一例を示す図である。
図１３（ａ）に示すように、命令２０２、２０９、２１３の設定色で描画されるオブジェクトの領域、領域５０２、５０３、５０４のみが更新領域となる。図１３（ｂ）に示すように、更新領域情報は、エントリ１３０４、１３０５、１３０６の３つとなる。この更新領域情報は、更新領域抽出部１０２から、部分画像復号部１０３と符号画像合成部１０６に出力される。
【００５３】
また、本実施形態では、バウンディングボックスの計算を描画と同じピクセル精度を用いて行った場合を例に挙げて説明した。しかしながら、演算の高速化のために、バウンディングボックスの計算を描画よりも低いピクセル精度（複数のピクセルの単位）で行ってもよい。
図１４は、更新領域情報のその他の例を示す図である。具体的に図１４（ａ）は、図４に示すバウンディングボックス４０２〜４０４を、縦４ピクセル、横５ピクセルのピクセル精度（Ｘ方向、Ｙ方向ともそれぞれ描画精度の半分のピクセル精度）の２次元座標系にマッピングした更新領域の一例を示す図である。図１３（ｂ）は、図１３（ａ）に示す更新領域から生成される更新領域情報の一例を示す図である。
図１４（ａ）に示すように、領域１４０１、１４０２は、図５（ａ）の領域５０１、５０２と同じ大きさを有する。これに対し、領域１４０３、１４０４は、バウンディングボックスの計算精度を半分にしたため、それぞれ、図５（ａ）の領域５０３、５０４の２倍、４倍の大きさとなる。これに伴い、図１４（ｂ）の更新領域情報のエントリ１４１０のサイズは、図５（ｂ）の更新領域情報のエントリ５１０のサイズに対し縦が２倍の大きさになる。また、図１４（ｂ）の更新領域情報のエントリ１４１１のサイズは、図５（ｂ）の更新領域情報のエントリ５１１のサイズに対し縦横共に２倍の大きさになる。
【００５４】
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００５５】
（その他の実施例）
本発明は、以下の処理を実行することによっても実現される。即ち、まず、以上の実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）が当該コンピュータプログラムを読み出して実行する。
【符号の説明】
【００５６】
１０２  更新領域抽出部、１０３  部分画像復号部、１０６  符号画像合成部
【図１】
2015099443.tif 000003
【図２】
2015099443.tif 000004
【図３】
2015099443.tif 000005
【図４】
2015099443.tif 000006
【図５】
2015099443.tif 000007
【図６】
2015099443.tif 000008
【図７】
2015099443.tif 000009
【図８】
2015099443.tif 000010
【図９】
2015099443.tif 000011
【図１０】
2015099443.tif 000012
【図１１】
2015099443.tif 000013
【図１２】
2015099443.tif 000014
【図１３】
2015099443.tif 000015
【図１４】
2015099443.tif 000016