(57)【特許請求の範囲】
【請求項１】
画像データのスクエアを提供するステップと、
前記画像データのスクエアをデータのタイルへと変形するステップと、
左上画素、右上画素、左下画素、及び右下画素を各クワッドが有するデータの複数のクワッドに前記データのタイルを分割するステップと、
各クワッドを表現要素、第１のデルタ要素、第２のデルタ要素、第３のデルタ要素、及び制御ワードへと変換するステップと、
クワッドごとに変換された前記表現要素を伴うデータの新たなタイルを形成するステップと、
前記データの新たなタイルが、前記分割するステップ、変換するステップ、及び形成するステップの次の繰り返しのための前記データのタイルになるように、前記分割すること、前記変換すること、及び前記形成することを単一の表現要素が残るまで繰り返すステップと、
前記単一の表現要素、前記制御ワード、及び前記デルタ要素を出力ストリーム内に埋め込むステップと、をコンピュータが実行する、画像データ圧縮方法。
【請求項２】
前記画像データのスクエアはデータの２次元表面の分割である請求項１の方法。
【請求項３】
前記画像データはＺバッファデータ、色バッファデータ、及び正規図データの少なくとも１つである請求項１の方法。
【請求項４】
前記画像データのスクエアをデータのタイルへと変形するステップは各データ値を新たなデータ値で置換することを備えており、前記新たなデータ値は当該データ値から隣接するデータ値を減じたものに等しい請求項３の方法。
【請求項５】
前記画像データのスクエアをデータのタイルへと変形するステップは各データ値を非相関データ値で置換することを備えている請求項１の方法。
【請求項６】
前記画像データのスクエアをデータのタイルへと変形するステップは１つ小さい成分を有する新たなデータ値で各データ値を置換することを備えている請求項１の方法。
【請求項７】
前記各クワッドを変換するステップは、
前記左上画素を前記表現要素としてセットすることと、
前記右上画素から前記左上画素を減じることによって前記第１のデルタ要素を形成することと、
前記左下画素から前記左上画素を減じることによって前記第２のデルタ要素を形成することと、
前記右下画素から前記左下画素を減じることによって前記第３のデルタ要素を形成することと、
前記デルタ要素の間での相関に従って前記制御ワードをセットすることとを備えている請求項１の方法。
【請求項８】
制御情報が前記出力ストリーム内に埋め込まれる請求項１の方法。
【請求項９】
サブタイルのディレクトリが前記出力ストリーム内に埋め込まれ、前記サブタイルのディレクトリは前記分割するステップ、変換するステップ、及び形成するステップの結果から形成される請求項１の方法。
【請求項１０】
前記埋め込むことはサブタイルパターンに従う請求項１の方法。
【請求項１１】
前記デルタ要素をそれらに関連する制御ワードに従って符号化するステップを更に備えた請求項１の方法。
【請求項１２】
データ圧縮方法を実行することを実行可能な命令のプログラムを有形的に実施する機械によって可読なプログラム記憶デバイスであって、
前記データ圧縮方法は、
データのスクエアを提供するステップと、
前記データのスクエアをデータのタイルへと変形するステップと、
左上画素、右上画素、左下画素、及び右下画素を各クワッドが有するデータの複数のクワッドに前記データのタイルを分割するステップと、
各クワッドを表現要素、第１のデルタ要素、第２のデルタ要素、第３のデルタ要素、及び制御ワードへと変換するステップと、
クワッドごとに変換された前記表現要素を伴うデータの新たなタイルを形成するステップと、
前記データの新たなタイルが、前記分割するステップ、変換するステップ、及び形成するステップの次の繰り返しのための前記データのタイルになるように、前記分割すること、前記変換すること、及び前記形成することを単一の表現要素が残るまで繰り返すステップと、
前記単一の表現要素、前記制御ワード、及び前記デルタ要素を出力ストリーム内に埋め込むステップと、を備えているプログラム記憶デバイス。
【請求項１３】
前記データのスクエアはデータの２次元表面の分割である請求項１２のプログラム記憶デバイス。
【請求項１４】
前記データはＺバッファデータ、色バッファデータ、及び正規図データの少なくとも１つである請求項１２のプログラム記憶デバイス。
【請求項１５】
前記データのスクエアをデータのタイルへと変形するステップは各データ値を新たなデータ値で置換することを備えており、前記新たなデータ値は当該データ値から隣接するデータ値を減じたものに等しい請求項１４のプログラム記憶デバイス。
【請求項１６】
前記データのスクエアをデータのタイルへと変形するステップは各データ値を非相関データ値で置換することを備えている請求項１２のプログラム記憶デバイス。
【請求項１７】
前記データのスクエアをデータのタイルへと変形するステップは１つ小さい成分を有する新たなデータ値で各データ値を置換することを備えている請求項１２のプログラム記憶デバイス。
【請求項１８】
前記各クワッドを変換するステップは、
前記左上画素を前記表現要素としてセットすることと、
前記右上画素から前記左上画素を減じることによって前記第１のデルタ要素を形成することと、
前記左下画素から前記左上画素を減じることによって前記第２のデルタ要素を形成することと、
前記右下画素から前記左下画素を減じることによって前記第３のデルタ要素を形成することと、
前記デルタ要素の間での相関に従って前記制御ワードをセットすることとを備えている請求項１２のプログラム記憶デバイス。
【請求項１９】
制御情報が前記出力ストリーム内に埋め込まれる請求項１２のプログラム記憶デバイス。
【請求項２０】
サブタイルのディレクトリが前記出力ストリーム内に埋め込まれ、前記サブタイルのディレクトリは前記分割するステップ、変換するステップ、及び形成するステップの結果から形成される請求項１２のプログラム記憶デバイス。
【請求項２１】
前記埋め込むことはサブタイルパターンに従う請求項１２のプログラム記憶デバイス。
【請求項２２】
前記デルタ要素をそれらに関連する制御ワードに従って符号化するステップを更に備えた請求項１２のプログラム記憶デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ圧縮に関する。より特定的には、本発明はハードウエア実装に適する可逆データ圧縮に関する。
【背景技術】
【０００２】
データ圧縮は、より少ないビットを用いてデータが記憶されるようにデータを変換するプロセスである。データ圧縮には、非可逆(lossy)及び可逆(lossless)の２種類がある。非可逆データ圧縮は、より大きな程度でデータを圧縮するが、プロセスの最中にデータを喪失する。従って、復元(decompression)に際しては、データは、その正確な複製であるよりはむしろその元の形態の近似である。可逆データ圧縮は、より小さな程度でデータを圧縮するが、プロセスの最中にいかなるデータも喪失しない。従って、復元に際しては、データは圧縮前にあった通りに正確に再構築される。データ圧縮の目的は、伝送に必要な帯域幅及び／又は記憶に必要なメモリの量を低減することである。
【０００３】
一般的な可逆圧縮技術の例としてハフマン符号化(Huffman coding)がある。ハフマン符号化はデータ項目の出現頻度に基いている。この技術は、より低い数(lower number)のビットを用いて、より頻繁に出現するデータを符号化する。残念なことに、ハフマン符号化の限界は、ハフマン符号化が固定されたシーケンス長手続きを有しておりまたシーケンス長を超えるデータにおける冗長性を圧縮することができないところにある。結果として、ハフマン符号化は複雑であり、また大量のメモリが有効にされることを必要とする。ハフマン符号化は、ファイルの任意の部分が抽出され得る前に全ファイルの解析を実行することを伴う。また、ハフマン技術は本質的に非対称であり、このことは復号プロセスが符号化プロセスよりも低速であることを意味している。そのような特性は、コンピュータが一般に単一のクロックサイクル上で概ね同じ量のデータを読み出し且つ書き込むように設計されていることを理由として、特定のハードウエア実装のためには受け入れられない。
【０００４】
別の一般的な可逆技術は、レンペル・ジブ・ウェルチ法(Lempel-Ziv-Welch method)（ＬＺＷ）である。ＬＺＷは、圧縮されているデータファイル内に以前に見えたストリングス(previously seen strings)の辞書を自動的に作成する。辞書は２５６エントリで動作開始し、１つのエントリは各可能な文字(character)のためにある。辞書内に未だないストリングが見つかるたびに、当該ストリングで構成されるもっと長いストリングが付け加えられる。出力は辞書内への整数指標(integer indices)で構成される。残念なことに、ＬＺＷにはそれが作成するストリングテーブルに起因する弱点がある。辞書は短時間の間に極めて大量に獲得することができる。加えて、必要とされるメモリの量は全ストリングの全長に依存するから、必要とされる記憶量が不確定である。また、ハフマン符号化と同様に、ファイルの任意の部分が圧縮され且つ／又は復元される前に全ファイルが符号化され且つ／又は復号される必要がある。更に、全体的プロセスは本質的に非対称であり、復元より圧縮の方がかなり長い時間を要する。
【０００５】
上述の圧縮技術によって課せられる制限以外に、別の主要な問題は、データの異なるフォーマットに対する統一された圧縮方法がないことである。例えば、複数の画素からなるコンピュータグラフィックは、Ｚバッファリングを用いて表現され得る。Ｚバッファリングは、画素深さを試験することと、現在の位置のＺ座標をＺバッファに記憶されているデータと比較することとによって機能する。Ｚバッファは、各画素の最後の位置に関する情報を記憶している。観察者により近い位置における画素が、表示されることになる画素である。複数の画素からなるグラフィックスを表現するために用いられる他の一般的なデータフォーマットは、色バッファリング及び正規図(normal maps)である。現在のところ、正規図データのための可逆圧縮技術はなく、また色バッファリングデータは、ソフトウエア指向の独特な圧縮方法を必要としている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本質的に対称であり、それによりハードウエア実装に適しているデータ圧縮／復元方法が必要とされている。また、正規図データを含む幾つかの異なるデータフォーマットを圧縮し且つ復元することが可能なデータ圧縮／復元方法が必要とされている。更に、グラフィックに係る種々のハードウエアデバイスに適応可能なデータ圧縮／復元方法が必要とされている。
【課題を解決するための手段】
【０００７】
本発明の１つの側面においては、データを主アレイへと配置するステップと、主アレイを複数の主サブアレイに分割するステップと、複数の圧縮されたサブアレイが形成されるように、各主サブアレイを圧縮されたサブアレイへと圧縮するステップと、圧縮されたサブアレイを補助アレイへと配置するステップと、分割するステップ、圧縮するステップ、及び配置するステップを単一のサブアレイが残るまで繰り返すステップと、をコンピュータが実行することを備えた階層的データ圧縮方法が提供され、ここでは、補助アレイはこれらのステップの繰り返しのための主アレイになる。圧縮されたサブアレイからのデータは出力ストリーム内に埋め込まれ得る。
【０００８】
本発明の別の側面においては、データのスクエアを提供するステップと、データのスクエアをデータのタイルへと変形するステップと、左上画素、右上画素、左下画素、及び右下画素を各クワッドが有するデータの複数のクワッドにデータのタイルを分割するステップと、各クワッドを表現要素、第１のデルタ要素、第２のデルタ要素、第３のデルタ要素、及び制御ワードへと変換するステップと、表現要素を伴うデータの新たなタイルを形成するステップと、データの新たなタイルが分割するステップ、変換するステップ、及び形成するステップの繰り返しのためのデータのタイルになるように、分割すること、変換すること、及び形成することを単一の表現要素が残るまで繰り返すステップと、単一の表現要素、制御ワード、及びデルタ要素を出力ストリーム内に埋め込むステップと、をコンピュータが実行することを備えたデータ圧縮方法が提供される。
【０００９】
本発明の更に別の側面においては、機械によって可読なプログラム記憶デバイスが提供される。デバイスは、データ圧縮方法を実行することを機械によって実行可能な命令のプログラムを有形的に実施し、方法は、データのスクエアを提供することと、データのスクエアをデータのタイルへと変形することと、左上画素、右上画素、左下画素、及び右下画素を各クワッドが有するデータの複数のクワッドにデータのタイルを分割することと、各クワッドを表現要素、第１のデルタ要素、第２のデルタ要素、第３のデルタ要素、及び制御ワードへと変換することと、表現要素を伴うデータの新たなタイルを形成することと、データの新たなタイルが分割するステップ、変換するステップ、及び形成するステップの繰り返しに対するデータのタイルになるように、分割すること、変換すること、及び形成することを単一の表現要素が残るまで繰り返すことと、単一の表現要素、制御ワード、及びデルタ要素を出力ストリーム内に埋め込むことと、を備えている。
【００１０】
本発明は、上述の及び下記のように構成される他の実施形態の他、他の特徴及び代替案を伴う他の実施形態をも包含する。
【図面の簡単な説明】
【００１１】
本発明は、添付の図面と併せて以下の詳細な説明によって容易に理解されるであろう。この説明を容易にするために、同様の参照番号は同様の要素を指定する。
【００１２】
【図１Ａ】図１Ａは本発明の実施形態に従い画素ビットを含むデータの２次元表面を示す図（その１）である。
【図１Ｂ】図１Ｂは本発明の実施形態に従い画素ビットを含むデータの２次元表面を示す図（その２）である。
【図１Ｃ】図１Ｃは本発明の実施形態に従い画素ビットを含むデータの２次元表面を示す図（その３）である。
【図２Ａ】図２Ａは本発明の実施形態に従うスクエアからタイルへの変形を示す図（その１）である。
【図２Ｂ】図２Ｂは本発明の実施形態に従うスクエアからタイルへの変形を示す図（その２）である。
【図３Ａ】図３Ａは本発明の実施形態に従うタイルの分割、クワッドの変換、及び新たなタイルの形成を示す図（その１）である。
【図３Ｂ】図３Ｂは本発明の実施形態に従うタイルの分割、クワッドの変換、及び新たなタイルの形成を示す図（その２）である。
【図３Ｃ】図３Ｃは本発明の実施形態に従うタイルの分割、クワッドの変換、及び新たなタイルの形成を示す図（その３）である。
【図３Ｄ】図３Ｄは本発明の実施形態に従うタイルの分割、クワッドの変換、及び新たなタイルの形成を示す図（その４）である。
【図４】図４は本発明の実施形態に従うデータのタイルの階層を示す図である。
【図５】図５は本発明の実施形態に従うグラフィックに係る形態におけるデータ圧縮方法を示す図である。
【図６】図６は本発明の実施形態に従い階層的データを符号化すると共に出力ストリーム内に埋め込むために好ましく用いられるサブタイルパターンを示す図である。
【図７】図７は本発明の実施形態に従う階層的データのビット割り付けされた出力ストリームを示す図である。
【図８】図８は本発明の実施形態に従いグラフィックに係る形態におけるビット割り付けを示す図である。
【発明を実施するための形態】
【００１３】
階層的可逆データ圧縮方法のための発明が開示される。本発明の実施形態の完全な理解をもたらすために、多くの特定の詳細が記載されている。しかし、本発明の実施形態は他の特定の詳細でも実施され得ることが当業者によって理解されるはずである。
【００１４】
１つの実施形態においては、データの２次元表面が概念的にはデータの複数のスクエア(squares of data)に分割される。物理的なスクエアはないことが理解されるであろう。しかし、次元（長さ及び幅）及び表面を伴う物理的実体としてスクエアをみなすことは、本発明のための概念を理解するのに役立ち得る。データの２次元表面は、グラフィックに係る画像を表現する複数の画素ビットを含む。データの２次元表面は、１６×１６スクエアのサイズであるデータのスクエアに分割される。代替的な実施形態においては、データの２次元表面は、望ましい圧縮又は基本的なデータフォーマットに応じて、より大きな又はより小さな任意の数のスクエアに分割され得る。例えば、データの２次元表面は画素データの８×８スクエアに分割され得る。
【００１５】
データの各スクエアは次いでデータのタイル(a tile of data)に変形される(transformed)。変形は、ハードウエア実装に適する整数加算演算又は整数減算演算を用いて行われる。データのスクエアをデータのタイルに変形するために用いられる技術は、グラフィックに係る画像を表現するのに用いられるデータフォーマットに依存し得る。例えばデータフォーマットがＺバッファリングである場合には、データのタイルの第２列はデータのスクエアの第２列から第１列を減じたものに等しくセットされ、データのタイルの第３列はデータのスクエアの第３列からデータのスクエアの第２列を減じたものに等しくセットされ、データのタイルの第４列はデータのスクエアの第４列からデータのスクエアの第３列を減じたものに等しくセットされ、そして当該パターンは、各データ値が隣接データ値及びデータのタイル内に記憶される差を減ぜられるまで繰り返す。
【００１６】
代替的な実施形態においては、異なる技術を用いて異なるデータフォーマットがタイルに変形され得る。例えば、各画素に対して色バッファデータのスクエアを変形するために、データのスクエアにおける第１チャネルは、データのスクエアにおける第２チャネルを減ぜられる。結果としてもたらされる値は、データのタイルにおける第１チャネル内に記憶される。データのスクエアにおける第２チャネルは、データのタイルにおける第２チャネル内に記憶される。データのスクエアにおける第３チャネルは、データのスクエアにおける第１チャネルを減ぜられ、そして当該値はデータのタイルにおける第３チャネル内に記憶される。当該パターンは、非相関変形が各画素に実行されるまで繰り返す。
【００１７】
別の実施形態においては、各画素に対して正規図データを変形するために、データのスクエアにおける第１チャネルが落とされ、そしてその符号を表しているビットがデータのタイルにおける第１チャネル内に記憶される。データのスクエアにおける第２及び第３チャネルは、データのタイルにおけるそれぞれ第２及び第３チャネル内に記憶される。
【００１８】
データのスクエアがデータのタイルに変形された後、タイルはクワッド(quads)に分割される。クワッドは、好ましくは左上画素、右上画素、左下画素、及び右下画素を有する２×２である。タイルがクワッドに分割されると、クワッドは表現要素(representative element)、３つのデルタ要素、及び制御ワードに変換される(converted)。変換は、好ましくはハードウエア実装に適した整数加算演算又は整数減算演算を含む。データフォーマットに応じて異なる技術がデータのクワッドを表現要素、３つのデルタ要素、及び制御ワードに変換するために用いられ得る。異なる変換技術の例が後で更に詳細に論じられることになる。
【００１９】
クワッドが変換され終わった後に、結果としてもたらされる表現要素を伴う新たなタイルが形成される。新たなタイルは次いでクワッドに分割され、そしてそれらのクワッドは表現要素、３つのデルタ、及び制御ワードに変換される。同様に、結果としてもたらされる表現要素は別の新たなタイルを形成し、そして当該タイルはクワッドに分割され、分割されたクワッドは表現要素、３つのデルタ要素、及び制御ワードに変換される。当該パターンは単一の表現要素が残るまで繰り返す。結果はデータの階層であり、その最上層は単一の表現要素であり、またその最下層は、データの変形されたスクエアを表しているデータの変換されたクワッドである。最下層から最上層へ行き来すると、階層の各レベルはより小さいクワッドの４倍を有している。尚、この設計は、データの多重スクエアがグラフィックに係る画像を表現している場合に、全体プロセスが容易に並列化されることを可能にする。
【００２０】
単一の表現要素が残ったら、圧縮されたデータのしっかりとアラインされた画素ストリーム内へ画素を埋め込むプロセスが開始する。好ましくは制御情報が最初にストリーム内へ埋め込まれ、これはデータフォーマットに応じて僅かに変化し得る。例えば、Ｚバッファ又は正規図データが用いられる場合には、制御情報は各画素のための符号の２５６画素マップを含み得る。次いで単一の表現要素が、適切な数の画素と共に出力ストリーム内へ埋め込まれる。
【００２１】
階層内のデータのタイルの各々を４つの等しいスクエアに分割することは、データの４つのサブタイルを生成する。例えば、データのタイルは、最上位左サブタイルがサブタイル０、最上位右サブタイルがサブタイル１、最下位左サブタイルがサブタイル２、そして最下位右サブタイルがサブタイル３であるように分割されるであろう。例えばタイルが１６×１６である場合には、各サブタイルは８×８であろう。単一の表現要素の埋め込みに続いて、好ましくは、オフセットから構成されるサブタイルのディレクトリが埋め込まれる。例えばデータのタイルが１６×１６である場合、サブタイル１のためのオフセットはサブタイルゼロ（［０，７］［０，７］）からの（［８，１５］［０，７］）であろう一方で、サブタイル２のためのオフセットはサブタイル１の開始からの（［０，７］［８，１５］）であろうし、そしてサブタイル３はサブタイル２からの（［８，１５］［８，１５］）であろう。
【００２２】
単一の表現要素及びサブタイルの好ましいディレクトリが出力ストリーム内へ埋め込まれた後、クワッドの各々からのデルタ要素が符号化される。符号化は階層の最上層で開始し、そして最下層へと進む。クワッドはそれらの対応する制御ワードに従って符号化される。符号化は好ましくはサブタイルパターンに追随する。例えば、最上層から最下層までのサブタイル０に対する全てのデルタが最初に符号化されるであろうし、最上層から最下層までのサブタイル１のデルタがそれに続くであろう。次いで、サブタイル２のデルタが最上層から最下層まで符号化されるであろうし、サブタイル３のデルタの符号化がそれに続くであろう。尚、階層の低い方のレベルが高い方のレベルから完全に復号され得る場合には、低い方のレベルの符号化が回避されるので、圧縮が増大される。
【００２３】
符号化された画素は、次いで好ましくはサブタイルパターンに追随する出力ストリーム内に埋め込まれる。符号化された画素の埋め込みは、好ましくはサブタイル０に対して最上層クワッドを表している画素で開始することになる。次に、サブタイル０に対して階層の低い方のレベルで符号化された画素が、最上層から最下層まで出力ストリーム内に埋め込まれる。次いで、サブタイル１に対して最上層クワッドを表している画素が埋め込まれることになる。次に、好ましくはサブタイル１のためのディレクトリが出力ストリーム内に埋め込まれる。例えばデータのスクエアが１６×１６である場合には、サブタイル１のためのディレクトリはオフセット（［４，７］［０，３］）であろう。ディレクトリに続いて、サブタイル１に対して階層の低い方のレベルで符号化された画素が、次いで最上層から最下層まで出力ストリーム内に埋め込まれることになる。次に、サブタイル２に対して最上層クワッドを表している画素が埋め込まれることになる。次いで、好ましくはサブタイル２のためのディレクトリが出力ストリーム内に埋め込まれる。例えばデータのスクエアが１６×１６である場合には、サブタイル２のためのディレクトリはオフセット（［０，３］［４，７］）であろう。ディレクトリに続いて、サブタイル２に対して階層の低い方のレベルで符号化された画素が、次いで最上層から最下層まで出力ストリーム内に埋め込まれることになる。次に、サブタイル３に対して最上層クワッドを表している画素が埋め込まれることになる。次いで、サブタイル３のためのディレクトリが出力ストリーム内に埋め込まれる。例えばデータのスクエアが１６×１６である場合には、サブタイル３のためのディレクトリはオフセット（［４，７］［４，７］）であろう。ディレクトリに続いて、サブタイル３に対して階層の低い方のレベルで符号化された画素が、次いで最上層から最下層まで出力ストリーム内に埋め込まれることになる。
【００２４】
前述したように、データフォーマットに応じて、データのクワッドを表現要素、３つのデルタ要素、及び制御ワードに変換するために種々の技術が用いられ得る。例えば色バッファ又は正規図データを変換するために、表現要素はクワッドの左上画素に等しくセットされる。第１のデルタ要素は左上画素を減ぜられた右上画素に等しい。第２のデルタ要素は左上画素を減ぜられた左下画素に等しい。第３のデルタ要素は左下画素を減ぜられた右下画素に等しい。制御ワードはデルタ要素の間での相関に従ってセットされる。全てのデルタ要素がゼロに等しい場合には、制御ワードはゼロにセットされる。これは、画素割り付けの間、画素割り付け器(pixel allocator)がそのクワッドに対する画素の任意の更なる割り付けを中断するための信号である。デルタ要素がゼロに等しくない場合には、制御ワードは３つのデルタのうちの最大絶対値に応じてセットされる。デルタのうちの最大絶対値が１以下である場合には、制御ワードは１にセットされる。デルタのうちの最大絶対値が３以下である場合には、制御ワードは２にセットされる。デルタのうちの最大絶対値が７以下である場合には、制御ワードは３にセットされる。デルタのうちの最大絶対値が７より大きい場合には、異なる戦略が採用される。デルタのうちの最大絶対値が７より大きいと仮定すると、左上画素、右上画素、左下画素、及び右下画素の平均が計算される。表現要素はクワッド画素の平均に等しくなるようにリセットされる。第１のデルタ要素は、平均を減ぜられた左上画素に等しくなるようにリセットされる。第２のデルタ要素は、平均を減ぜられた右上画素に等しくなるようにリセットされる。第３のデルタ要素は、平均を減ぜられた左下画素に等しくなるようにリセットされる。制御ワードは、リセットされたデルタ要素のうちの最大絶対値が７以下である場合には、４にセットされる。リセットされたデルタ要素のうちの最大絶対値が１５以下である場合には、制御ワードは５にセットされる。
【００２５】
リセットされたデルタ要素のうちの最大絶対値が１５より大きい場合には、制御ワードは６にセットされ、そして表現要素及びデルタ要素は元のクワッド画素としてセットされる。従って、リセットされたデルタ要素のうちの最大絶対値が１５より大きいと仮定すると、表現要素は左上画素に等しく、第１のデルタ要素は右上画素に等しく、第２のデルタ要素は左下画素に等しく、そして第３のデルタ要素は右下画素に等しい。
【００２６】
デルタの符号化及び埋め込みは、データフォーマットに応じて異なり得る。好ましい実施形態によると、データがどのように符号化されるのかを定義する６ビットプレフィックス(prefix)がある。各バッファのために２ビットある。各２ビット制御ワードは００、０１、１０、又は１１であり得る。
【００２７】
【表１】
0005651170.tif 000002
【００２８】
１つの例においては、Ｚバッファデータが用いられ、そして制御ワードは２ビットである。制御ワードが「００」である場合、制御ワードのみが出力ストリーム内に埋め込まれ、そして他のデータは埋め込まれない。このことは大幅な圧縮を可能にし、この場合、データの変化はない。制御ワードが「０１」である場合、制御ワードが埋め込まれ、そしてデルタがそれらの対応する画素値と共に埋め込まれる。最後に制御ワードが「１１」である場合、制御ワードを表しているビットが埋め込まれ、そしてデルタは関連する事例（以下の表を参照）に従って符号化される。
【００２９】
【表２】
0005651170.tif 000003
【００３０】
符号化は、幾つかのビットを定義している５ビットプレフィックスと符号ビットとを含む。事例が０、１、又は２である場合、単一の値がプレフィックスと共に出力ストリーム内に埋め込まれて、ビットの最大数が１であることを指定する。事例が３、４、又は５である場合、２つの値がプレフィックスと共に出力ストリーム内に埋め込まれて、それらのうちのビットの最大数が２であることを指定する。事例が６である場合、３つの値がプレフィックスと共に出力ストリーム内に埋め込まれて、それらのうちのビットの最大数が３であることを指定する。代替的な実施形態においては、デルタ要素は異なる技術を用いて符号化され得るし、また埋め込まれ得る。
【００３１】
例えば色バッファ又は正規図データが用いられ且つ制御ワードが０である場合、制御ワードを表す３ビットが出力ストリーム内に埋め込まれ、そして他のデータは埋め込まれない。色に対しては３ビット制御ワードが用いられる。
【００３２】
制御ワードが１である場合には、制御ワードを表す３ビットが出力ストリーム内に埋め込まれる。次いで、第１のデルタ要素を表す１ビットが埋め込まれた後に、第１のデルタ要素の符号を表すビットが続く。次に、第２のデルタ要素を表す１ビットが埋め込まれた後に、第２のデルタ要素の符号を表すビットが続く。次いで、第３のデルタ要素を表す１ビットが埋め込まれた後に、第３のデルタ要素の符号を表すビットが続く。
【００３３】
制御ワードが２である場合には、制御ワードを表す３ビットが出力ストリーム内に埋め込まれる。次いで、第１のデルタ要素を表す２ビットが埋め込まれた後に、第１のデルタ要素の符号を表すビットが続く。次に、第２のデルタ要素を表す２ビットが埋め込まれた後に、第２のデルタ要素の符号を表すビットが続く。次いで、第３のデルタ要素を表す２ビットが埋め込まれた後に、第３のデルタ要素の符号を表すビットが続く。
【００３４】
制御ワードが３である場合には、制御ワードを表す３ビットが出力ストリーム内に埋め込まれる。次いで、第１のデルタ要素を表す３ビットが埋め込まれた後に、第１のデルタ要素の符号を表すビットが続く。次に、第２のデルタ要素を表す３ビットが埋め込まれた後に、第２のデルタ要素の符号を表すビットが続く。次いで、第３のデルタ要素を表す３ビットが埋め込まれた後に、第３のデルタ要素の符号を表すビットが続く。
【００３５】
制御ワードが４である場合には、制御ワードを表す３ビットが出力ストリーム内に埋め込まれる。次いで、クワッドの平均を表す２ビットが埋め込まれた後に、平均の符号を表すビットが続く。次に、第１のデルタ要素を表す３ビットが埋め込まれた後に、第１のデルタ要素の符号を表すビットが続く。次いで、第２のデルタ要素を表す３ビットが埋め込まれた後に、第２のデルタ要素の符号を表すビットが続く。次に、第３のデルタ要素を表す３ビットが埋め込まれた後に、第３のデルタ要素の符号を表すビットが続く。
【００３６】
制御ワードが５である場合には、制御ワードを表す３ビットが出力ストリーム内に埋め込まれる。次いで、クワッドの平均を表す２ビットが埋め込まれた後に、平均の符号を表すビットが続く。次に、第１のデルタ要素を表す４ビットが埋め込まれた後に、第１のデルタ要素の符号を表すビットが続く。次いで、第２のデルタ要素を表す４ビットが埋め込まれた後に、第２のデルタ要素の符号を表すビットが続く。次に、第３のデルタ要素を表す４ビットが埋め込まれた後に、第３のデルタ要素の符号を表すビットが続く。
【００３７】
制御ワードが６である場合には、制御ワードを表す３ビットが出力ストリーム内に埋め込まれる。次いで、第１のデルタ要素を表す８ビットが埋め込まれた後に、第１のデルタ要素の符号を表すビットが続く。次に、第２のデルタ要素を表す８ビットが埋め込まれた後に、第２のデルタ要素の符号を表すビットが続く。次いで、第３のデルタ要素を表す８ビットが埋め込まれた後に、第３のデルタ要素の符号を表すビットが続く。
【００３８】
制御ワードが７である場合には、データは全部ゼロで埋められる。
【００３９】
出力ストリームを再構築するために、ビットアラインされたストリーム(bit-aligned stream)を構文解析することによって復号プロセスが開始する。ビットアラインされたストリームが構文解析され終わると、逆変換及び変形(inverse conversions and transforms)が実行されてデータを再構築する。復号プロセスは符号化プロセスと完全に対称である。一旦データ階層の最上層レベルが復号されると、下層の方のレベルは、それらの各々に対するビットストリーム内に開始位置が設けられている場合には、並列的に復号され得る。サブタイルのための適切なオフセットのディレクトリが好ましくは出力ストリーム内に埋め込まれており、並列ビットストリーム復号を可能にしている。
【００４０】
上述のステップは、同一の結果を達成するためのアレイの組み合わせにおける種々のデータフォーマットで実行され得る。特に、データフォーマットは、データの２次元表面として表現され得る任意の便利な且つ／又は既知のデータフォーマットであってよい。例えば、データフォーマットは、静止画、動画、テクスチャ(textures)を代表していてよく、そして浮動３２及び／又は固定２４フォーマットであってよい。また、データのスクエア及び／又はクワッドに実行される変形及び／又は変換は、同一の結果を達成するための任意の便利な且つ／又は既知の方法で行われ得る。例えば、データのスクエア及びクワッドは、加算され、減算され、乗算され、除算され、且つ／又は同一の結果を達成するための任意の他の方法で操作され得る。加えて、ビット割り付けは、任意の便利な且つ／又は既知の方法で実行され得る。典型的な追加の制御情報が追加されてよく、又は出力ストリームには制御情報が埋め込まれなくてよい。また、デルタは、処理の間に任意の便利な且つ／又は既知のタイミングで符号化され得る。デルタは、対応するクワッドが変換された後、又は階層の同様のレベルのクワッドが変換されてすぐに且つ／若しくはビット割り付けに先立つ任意の他のタイミングで、符号化され得る。更に、追加のディレクトリがビットストリーム内に含まれ得るし、又はディレクトリを除去して圧縮を増大してもよい。
【００４１】
図１Ａ〜１Ｃは、本発明の実施形態に従い画素を含むデータの２次元表面によって表されるグラフィックに係る画像を示している。図１Ａにおいては、グラフィックに係る画像１０１が画面１０２上に表示されている。
【００４２】
図１Ｂにおいては、グラフィックに係る画像１０１は、データの２次元表面１０３上の一連の画素１０４によって表されている。グラフィックに係る画像１０１の存在は一連の１によって表される一方で、グラフィックに係る画像１０１の不在は０によって表される。
【００４３】
図１Ｃにおいては、階層的圧縮を用いて圧縮され得るデータの２次元表面１０３から、データの１６×１６スクエア１０５が分割されたものとなっている。データのスクエア１０５は、グラフィックに係る画像１０１の左上部分を表している。
【００４４】
代替的な実施形態においては、データの２次元表面は、任意の数の画素幅と任意の数の画素高さであってよい。例えば、データの２次元表面は、４×４若しくは１２８０×１０２４又は任意の他の便利な若しくは既知の幅×高さ画素表示であってよい。また、データのスクエア１０５は、より大きく又はより小さくてよい。例えば、データのスクエア１０５は、データの２次元表面の８×８分割であってよい。更に、代替的な実施形態においては、データの追加的なスクエアがデータの２次元表面から分割されてよく、そして並列的に圧縮されてよい。
【００４５】
図２Ａ及び２Ｂは本発明の実施形態に従うスクエアからタイルへの変形を示している。図２Ａにおいては、データの８×８スクエア２０１はＡ１〜Ｈ８の値を含む。データ２０３はＺバッファフォーマットにある。
【００４６】
図２Ｂにおいては、データのスクエア２０１は、全ての画素を隣接画素間の値の差で置換することによって、データのタイル２０２へと変形される。Ｚバッファに対する変形は、Ｔ［ｉ］［ｊ］が（ｊ，ｉ）座標のタイル内の画素の座標を表し、Ｓ［ｉ］［ｊ］が（ｊ，ｉ）座標のスクエア内の画素の座標を表し、Ｈがタイル高さを表し、そしてＷがタイル幅を表す場合、各行に沿って左から右に水平に移動しながら次の式に追随し得る。
（ｉ＝０，…，Ｈ−１）に対して
（ｊ＝０，…，Ｗ−１）に対して
Ｔ［ｉ］［ｊ］＝Ｓ［ｉ］［ｊ］−Ｓ［ｉ］［ｊ−１］
また、第０列に沿って上から下に垂直に移動しながら次の式に追随する。
（ｉ＝１，…，Ｈ−１）に対して
Ｔ［ｉ］［０］＝Ｓ［ｉ］［０］−Ｓ［ｉ−１］［０］
Ｓ［０］［０］は一定であり、Ｔ［０］［０］はＴ［０］［１］（即ち最も近い右の近隣）で置換される。従って、画素Ａ２はＡ２−Ａ１で置換される。画素Ａ３はＡ３−Ａ２で置換される。プロセスは、データ１の全スクエアが隣接画素間の値の差を含むデータ２０２のタイルへと変形されるまで継続する。
【００４７】
代替的な実施形態においては、データのスクエアは、データフォーマットに応じて異なる技術を用いて変形され得る。例えば、データのスクエアが色バッファフォーマットである場合において、Ｔ［ｉ］［ｊ］［ｃ］が（ｊ，ｉ）座標のタイル内の画素の座標及びその画素のチャネルｃを表し、Ｓ［ｉ］［ｊ］［ｃ］が（ｊ，ｉ）座標のスクエア内の画素の座標及びその画素のチャネルｃを表し、Ｈがタイル高さを表し、そしてＷがタイル幅を表すときには、変形は次の式に追随し得る。
（ｉ＝０，…，Ｈ−１）に対して
（ｊ＝０，…，Ｗ−１）に対して
Ｔ［ｉ］［ｊ］［０］＝Ｓ［ｉ］［ｊ］［０］−Ｓ［ｉ］［ｊ］［１］
Ｔ［ｉ］［ｊ］［１］＝Ｓ［ｉ］［ｊ］［１］
Ｔ［ｉ］［ｊ］［２］＝Ｓ［ｉ］［ｊ］［２］−Ｓ［ｉ］［ｊ］［１］
従って、タイル画素毎の第０チャネルは、対応するスクエア画素の第０チャネルから対応するスクエア画素の第１チャネルを減じたものに等しい。タイル画素毎の第１チャネルは、対応するスクエア画素の第１チャネルに等しい。タイル画素毎の第２チャネルは、対応するスクエア画素の第２チャネルから対応するスクエア画素の第１チャネルを減じたものに等しい。各画素について非相関変形を実行することによって、色バッファデータのスクエアがデータのタイルへと変形される。
【００４８】
代替的な実施形態の別の例では、データのスクエアが正規図フォーマットである場合において、Ｔ［ｉ］［ｊ］［ｃ］が（ｊ，ｉ）座標のタイル内の画素の座標及びその画素のチャネルｃを表し、Ｓ［ｉ］［ｊ］［ｃ］が（ｊ，ｉ）座標のスクエア内の画素の座標及びその画素のチャネルｃを表し、Ｈがタイル高さを表し、そしてＷがタイル幅を表すときには、変形は次の式に追随し得る。
（ｉ＝０，…，Ｈ−１）に対して
（ｊ＝０，…，Ｗ−１）に対して
Ｓ［ｉ］［ｊ］［０］＞０の場合にはＴ［ｉ］［ｊ］［０］＝１；
それ以外の場合にはＴ［ｉ］［ｊ］［０］＝０
Ｔ［ｉ］［ｊ］［１］＝Ｓ［ｉ］［ｊ］［１］
Ｔ［ｉ］［ｊ］［２］＝Ｓ［ｉ］［ｊ］［２］
従って、タイル画素毎の第０チャネルは、対応するスクエア画素の第０チャネル内に記憶されている値が正である場合には、１に等しい。それ以外の場合には、タイル画素の第０チャネルは０に等しい。タイル画素毎の第１及び第２チャネルは、対応するスクエア画素の第１及び第２チャネルにそれぞれ等しい。一方の成分の値を落とし且つその符号を保存することによって、正規図データのスクエアはデータのタイルへと変形される。
【００４９】
図３Ａ〜３Ｄは本発明の実施形態に従いデータの階層を生成する一連のタイル分割及びクワッド変換を示している。図３Ａにおいては、１６×１６データのタイル３０１がデータの複数のクワッド３０２に分割される。データの各クワッドは、表現要素３０３、第１のデルタ要素３０４、第２のデルタ要素３０５、第３のデルタ要素３０６、及び制御ワード３０７へと変換される。１６×１６タイル３０１の分割は、６４個のクワッド３０２を生じさせる。データのクワッド３０２の変換の後、６４個の表現要素３０３、６４個の第１のデルタ要素３０４、６４個の第２のデルタ要素３０５、６４個の第３のデルタ要素３０６、及び６４個の制御ワード３０７が生成される。
【００５０】
図３Ｂにおいては、６４個の表現要素３０３は新たなタイル３０８を形成する。表現要素３０３の８×８タイル３０８は、データのクワッド３０９に分割される。データの各クワッドは、表現要素３１０、第１のデルタ要素３１１、第２のデルタ要素３１２、第３のデルタ要素３１３、及び制御ワード３１４へと変換される。８×８タイル３０８の分割は、１６個のクワッド３０９を生じさせる。データのクワッド３０９の変換の後、１６個の表現要素３１０、１６個の第１のデルタ要素３１１、１６個の第２のデルタ要素３１２、１６個の第３のデルタ要素３１３、及び１６個の制御ワード３１４が生成される。
【００５１】
図３Ｃにおいては、１６個の表現要素３１０は新たなタイル３１５を形成する。表現要素３１０の４×４タイル３１５は、データのクワッド３１６に分割される。データの各クワッドは、表現要素３１７、第１のデルタ要素３１８、第２のデルタ要素３１９、第３のデルタ要素３２０、及び制御ワード３２１へと変換される。４×４タイル３１５の分割は、４個のクワッド３１６を生じさせる。データのクワッド３１６の変換の後、４個の表現要素３１７、４個の第１のデルタ要素３１８、４個の第２のデルタ要素３１９、４個の第３のデルタ要素３２０、及び４個の制御ワード３２１が生成される。
【００５２】
図３Ｄにおいては、４個の表現要素３１７は新たなタイル３２２を形成する。表現要素３１７の２×２タイル３２２は、データの更なるクワッドに分割することができない。従って、データのタイル３２２は、データの最上層クワッド３２２である。データのクワッド３２２は、単一の表現要素３２３、第１のデルタ要素３２４、第２のデルタ要素３２５、第３のデルタ要素３２６、及び制御ワード３２７へと変換される。単一の表現要素３２３は、データの階層の最上層である。階層の次のレベルは、データの２×２タイル３２２から変換されたデルタ要素３２４，３２５，３２６及び制御ワード３２７である。階層の次のレベルは、データの４×４タイル３１５から変換されたデルタ要素３１８，３１９，３２０及び制御ワード３２１である。階層の次のレベルは、データの８×８タイル３０８から変換されたデルタ要素３１１，３１２，３１３及び制御ワード３１４である。階層の次のレベルは、データの１６×１６タイル３０１から変換されたデルタ要素３０４，３０５，３０６及び制御ワード３０７である。
【００５３】
代替的な実施形態においては、データのタイルは、同様の結果を生じさせる任意の便利な且つ／又は既知の方法で分割され得る。また、代替的な実施形態においては、クワッドは、同様の結果を生じさせる種々の技術を用いる任意の便利な且つ／又は既知の方法で変換され得る。更に、代替的な実施形態においては、クワッドの変換は、異なっていてよく且つ／又はデータフォーマットに依存していてよい。
【００５４】
図４は本発明の実施形態に従うデータのタイルの階層を示している。階層の最上層は、階層の第２のレベルからの単一の表現要素３２３である。階層の第２のレベルは、階層の第３のレベルからの表現要素３１７のタイルである。階層の第３のレベルは、階層の第４のレベルからの表現要素３１０のタイルである。階層の第４のレベルは、階層の第５のレベルからの表現要素３０３のタイルである。階層の第５のレベルは、データの変形されたスクエアのタイル３０１である。
【００５５】
図５は本発明の実施形態に従うグラフィックに係る形態におけるデータ圧縮方法を示している。ステップ５０１では、データの２次元表面がデータの複数のスクエアに分割される。好ましくはデータの各スクエアは、独立して圧縮され、そして並列で実行される。データのスクエアは好ましくはデータの１６×１６スクエアであるが、任意の便利な且つ／又は既知のサイズのデータのスクエアであり得る。ステップ５０２では、データの各スクエアがデータのタイルへと変形される。好ましくは、変形は用いられるデータ種類に依存する。ステップ５０３では、データのタイルがデータの複数のクワッドに分割される。好ましくは、データのクワッドは２×２である。ステップ５０４では、データの各クワッドは、表現要素、第１のデルタ要素、第２のデルタ要素、第３のデルタ要素、及び制御ワードへと変換される。ステップ５０５では、データの新たなタイルが、変換から結果として得られる表現要素と共に形成される。
【００５６】
判断動作５０６では、新たなタイルが複数のクワッドに分割され得るかどうかが決定される。データの新たなタイルが複数のクワッドに分割され得る場合には、プロセスはステップ５０３へ戻り、タイルがデータの複数のクワッドに分割される。方法はそこから継続する。
【００５７】
一方、データの新たなタイルが複数のクワッドに分割され得ない場合には、ステップ５０７において、データの階層のビットが符号化されると共に出力ストリーム内へ割り付けられる。方法はこうして完結する。
【００５８】
図６は本発明の実施形態に従い階層的データを符号化し且つ出力ストリーム内へ埋め込むために好ましく用いられるサブタイルパターンを示している。データの階層内の各タイルは、４つのサブタイルに分割される。階層の最上層から開始して、最上層タイル６０１、即ちデータの最上層クワッドは、サブタイル０＿６０２、サブタイル１＿６０３、サブタイル２＿６０４、及びサブタイル３＿６０５に分割される。階層の次のレベル６０６、即ちデータの４×４タイルは、同様にしてサブタイル０＿６０７、サブタイル１＿６０８、サブタイル２＿６０９、及びサブタイル３＿６１０に分割される。階層の次のレベル６１１、即ちデータの８×８タイルは、同様にしてサブタイル０＿６１２、サブタイル１＿６１３、サブタイル２＿６１４、及びサブタイル３＿６１５に分割される。階層の次で且つ最下層のレベル６１６、即ちデータの変換された１６×１６スクエアは、同様にしてサブタイル０＿６１７、サブタイル１＿６１８、サブタイル２＿６１９、及びサブタイル３＿６２０に分割される。好ましくは、符号化及び／又は埋め込みプロセスは、サブタイル０＿６０２のためのデルタ要素を伴い最上層で開始し、そしてサブタイル０階層６０７，６１２，６１７を下りながら進む。次に、符号化及び／又は埋め込みプロセスは、サブタイル１＿６０３のためのデルタ要素を伴い最上層で開始し、そしてサブタイル１階層６０８，６１３，６１８を下りながら進む。次いで、符号化及び／又は埋め込みプロセスは、サブタイル２＿６０４のためのデルタ要素を伴い最上層で開始し、そしてサブタイル２階層６０９，６１４，６１９を下りながら進む。最後に、符号化及び／又は埋め込みプロセスは、サブタイル３＿６０５のためのデルタ要素を伴い最上層で開始し、そしてサブタイル３階層６１０，６１５，６２０を下りながら進む。サブタイルパターンは、並列ビットストリーム復号を可能にすると共に、サブタイルにおける全ての基本的なデルタがゼロである場合にビット割り付けを中断する能力を可能にする。
【００５９】
図７は本発明の実施形態に従いビット割り付けされた階層的データの出力ストリームを示している。制御情報７０１を表すビットが出力ストリーム７１５内に埋め込まれる。制御情報は好ましくはデータ種類に依存している。例えば、データの符号の２５６ビットマップを表している制御ビットは、用いられているフォーマットが正規図及び／又はＺバッファである場合に埋め込まれ得る。制御情報７０１に続いて、データの階層の最上層からの単一の表現要素７０２を表すビットが、出力ストリーム７１５内に埋め込まれる。単一の表現要素７０２に続いて、サブタイル７０３のディレクトリを表すビットが出力ストリーム７１５内に埋め込まれる。ディレクトリは好ましくは３つのオフセットを備えている。サブタイル７０３のディレクトリに続いて、対応する制御ワードに従ってデルタ要素が埋め込まれる。例えばデータフォーマットがＺバッファデータである場合、ＰＵＴ（由来、量）(PUT (From, Amount))が特定のデルタ要素に由来するビットの量を送る関数であり、Ｄ０が制御ワードを表し、Ｄ１がデルタ１を表し、Ｄ２がデルタ２を表し、そしてＤ３がデルタ３を表しているとして、符号化は以下の式に追随し得る。
ＰＵＴ（Ｄ０，６）
Ｄ０＝２の場合、
他のデータは階層に対するストリーム内には埋め込まれない。
Ｄ０＝３の場合において、
Ｄ１＝Ｙ，Ｄ２＝Ｎ，Ｄ３＝Ｎ又は
Ｄ１＝Ｎ，Ｄ２＝Ｙ，Ｄ３＝Ｎ又は
Ｄ１＝Ｎ，Ｄ２＝Ｎ，Ｄ３＝Ｙであるときには、
５ビットプレフィックス、符号ビット及び１つの値が符号化され、
Ｄ１＝Ｎ，Ｄ２＝Ｙ，Ｄ３＝Ｙ又は
Ｄ１＝Ｙ，Ｄ２＝Ｎ，Ｄ３＝Ｙ又は
Ｄ１＝Ｙ，Ｄ２＝Ｙ，Ｄ３＝Ｎであるときには、
５ビットプレフィックス、符号ビット及び２つの値が符号化され、
Ｄ１＝Ｙ，Ｄ２＝Ｙ，Ｄ３＝Ｙであるときには、
５ビットプレフィックス、符号ビット及び３つの値が符号化される。
例えばデータフォーマットが色又は正規図データである場合、ＰＵＴ（由来、量）が特定のデルタ要素に由来するビットの量を送る関数であり、ＰＵＴ＿ＳＩＧＮ（値）が、値がゼロでないときのその値の符号を送る関数であり、Ｄ０が制御ワードを表し、Ｄ１がデルタ１を表し、Ｄ２がデルタ２を表し、Ｄ３がデルタ３を表し、そしてＬＳＢがデルタ要素の平均を表しているとして、符号化は以下の式に追随し得る。
ＰＵＴ（Ｄ０，３）
Ｄ０＝０の場合、
他のデータは階層に対するストリーム内には埋め込まれない。
Ｄ０＝７の場合、
他のデータはストリーム内には埋め込まれない。
Ｄ０＝１の場合、
ＰＵＴ（Ｄ１，１）；
ＰＵＴ＿ＳＩＧＮ（Ｄ１）；
ＰＵＴ（Ｄ２，１）；
ＰＵＴ＿ＳＩＧＮ（Ｄ２）；
ＰＵＴ（Ｄ３，１）；
ＰＵＴ＿ＳＩＧＮ（Ｄ３）；
Ｄ０＝２の場合、
ＰＵＴ（Ｄ１，２）；
ＰＵＴ＿ＳＩＧＮ（Ｄ１）；
ＰＵＴ（Ｄ２，２）；
ＰＵＴ＿ＳＩＧＮ（Ｄ２）；
ＰＵＴ（Ｄ３，２）；
ＰＵＴ＿ＳＩＧＮ（Ｄ３）；
Ｄ０＝３の場合、
ＰＵＴ（Ｄ１，３）；
ＰＵＴ＿ＳＩＧＮ（Ｄ１）；
ＰＵＴ（Ｄ２，３）；
ＰＵＴ＿ＳＩＧＮ（Ｄ２）；
ＰＵＴ（Ｄ３，３）；
ＰＵＴ＿ＳＩＧＮ（Ｄ３）；
Ｄ０＝４の場合、
ＰＵＴ（ＬＳＢ，２）；
ＬＳＢが陽符号を有しているときはＰＵＴ（ＬＢＳ＿ＳＩＧＮ，１）；
ＰＵＴ（Ｄ１，３）；
ＰＵＴ＿ＳＩＧＮ（Ｄ１）；
ＰＵＴ（Ｄ２，３）；
ＰＵＴ＿ＳＩＧＮ（Ｄ２）；
ＰＵＴ（Ｄ３，３）；
ＰＵＴ＿ＳＩＧＮ（Ｄ３）；
Ｄ０＝５の場合、
ＰＵＴ（ＬＳＢ，２）；
ＬＳＢが陽符号を有しているときはＰＵＴ（ＬＢＳ＿ＳＩＧＮ，１）；
ＰＵＴ（Ｄ１，４）；
ＰＵＴ＿ＳＩＧＮ（Ｄ１）；
ＰＵＴ（Ｄ２，４）；
ＰＵＴ＿ＳＩＧＮ（Ｄ２）；
ＰＵＴ（Ｄ３，４）；
ＰＵＴ＿ＳＩＧＮ（Ｄ３）；
Ｄ０＝６の場合、
ＰＵＴ（Ｄ１，８）；
ＰＵＴ＿ＳＩＧＮ（Ｄ１）；
ＰＵＴ（Ｄ２，８）；
ＰＵＴ＿ＳＩＧＮ（Ｄ２）；
ＰＵＴ（Ｄ３，８）；
ＰＵＴ＿ＳＩＧＮ（Ｄ３）。
一旦デルタ要素が対応する制御ワードに従って符号化されると、サブタイル０に対する最上層クワッドを表すビット７０４が出力ストリーム７１５内に埋め込まれる。次いで、サブタイル０に対する階層の低い方のレベル上のクワッドを表すビット７０５が埋め込まれる。次に、サブタイル１に対する最上層クワッドを表すビット７０６が埋め込まれる。次いで、サブタイル１に対するサブタイルディレクトリを表すビット７０７が埋め込まれる。次に、サブタイル１に対する階層の低い方のレベル上のクワッドを表すビット７０８が埋め込まれる。次いで、サブタイル２に対する最上層クワッドを表すビット７０９が埋め込まれる。次に、サブタイル２に対するサブタイルディレクトリを表すビット７１０が埋め込まれる。次いで、サブタイル２に対する階層の低い方のレベル上のクワッドを表すビット７１１が埋め込まれる。次に、サブタイル３に対する最上層クワッドを表すビット７１２が埋め込まれる。次いで、サブタイル３に対するサブタイルディレクトリを表すビット７１３が埋め込まれる。次に、サブタイル３に対する階層の低い方のレベル上のクワッドを表すビット７１４が埋め込まれる。
【００６０】
代替的な実施形態においては、デルタ要素は任意の便利な且つ／又は既知の方法で符号化され得る。例えばデータフォーマットに応じて、同様の符号化結果を達成するために種々の式が用いられる。また、デルタ要素は任意の便利な且つ／又は既知の方法で埋め込まれ得る。例えば、デルタ要素はサブタイルパターンよりはむしろタイルパターン上に埋め込まれ得る。更に、追加のデータが出力ストリーム内に埋め込まれ得る。例えば、追加の制御情報がデータフォーマットに応じて出力ストリーム全体に追加され得る。また、更なる圧縮のために出力ストリームからデータが除去され得る。例えばディレクトリを表しているビットが除去されて、より大きな圧縮をもたらし得る。
【００６１】
図８は本発明の実施形態に従うグラフィックに係る形態におけるビット割り付けを示している。制御情報８０１が出力ストリーム内に埋め込まれる。代替的な実施形態においては、制御情報は更なる圧縮のために取り除かれ得る。次に、単一の表現要素８０２がストリーム内に埋め込まれる。単一の表現要素８０２に続いて、サブタイルのディレクトリ８０３が出力ストリーム内に埋め込まれる。代替的な実施形態においては、サブタイルのディレクトリ８０３は更なる圧縮のために取り除かれ得る。次に、対応する１つ以上の制御ワード８０４に従ってデルタ要素が符号化される。符号化は好ましくはサブタイルパターンに追随する。代替的な実施形態においては、デルタはプロセスの間の任意の都合の良いタイミングで符号化され得る。次いで、サブタイル０に対する最上層クワッドを表すビット８０５が出力ストリーム内に埋め込まれた後、サブタイル０に対する残りのクワッドを表すビット８０６が続く。サブタイル１に対する最上層クワッドを表すビット８０７が次いで埋め込まれた後、サブタイル１に対するディレクトリ８０８が続く。代替的な実施形態においては、ディレクトリは更なる圧縮のために取り除かれ得る。サブタイル１に対するクワッドを表す残りのビットが次いで出力ストリーム内に埋め込まれる。次に、サブタイル２に対する最上層クワッドを表すビット８１０が出力ストリーム内に埋め込まれる。サブタイル２に対する最上層クワッドを表すビット８１０に続いて、サブタイル２に対するディレクトリを表すビット８１１が埋め込まれる。代替的な実施形態においては、ディレクトリは更なる圧縮をもたらすために取り除かれ得る。次いで、サブタイル２に対するクワッドを表す残りのビット８１２が埋め込まれる。サブタイル３に対する最上層クワッドを表すビット８１３が次いで埋め込まれた後、サブタイル３に対するディレクトリ８１４が続く。代替的な実施形態においては、ディレクトリは更なる圧縮をもたらすために取り除かれ得る。サブタイル３に対するクワッドを表す残りのビット８１５が次いで出力ストリーム内に埋め込まれる。
【００６２】
本発明の実施形態のデータ圧縮方法は、データのスクエアをデータのタイルへと変形する。データのタイルは次いでデータの複数のクワッドに分割され、データの複数のクワッドは、表現要素、第１のデルタ要素、第２のデルタ要素、第３のデルタ要素、及び制御ワードへと変換される。データの新たなタイルが次いで複数の表現要素を伴って形成され、そしてプロセスは単一の表現要素が残るまで繰り返す。単一の表現要素は次いで複数の制御ワード及び対応する複数のデルタ要素と共に出力ストリーム内に埋め込まれる。
【００６３】
データ圧縮のシステム及び方法実装
【００６４】
コンピュータ分野における当業者には明らかであろうように、本発明の実施形態の部分は、本開示の教示に従ってプログラムされる標準的な汎用の又は専用のデジタルコンピュータ又はマイクロプロセッサを用いて便利に実装され得る。
【００６５】
ソフトウエア分野における当業者には明らかであろうように、本開示の教示に基づいて当業者的プログラマによって適切なソフトウエア符号化が容易に準備され得る。当業者には明らかであろうように、本発明はまた、特定用途向け集積回路の準備によって、又は標準的な要素回路の適切なネットワークを相互接続することによっても実装され得る。集積回路の実装は、ソフトウエアコード（例えばハードウエア記述言語におけるコード）の作成を通して達成されるであろうし、ソフトウエアコードは、合成されそして処理されるときに、本発明の側面を実施することができる半導体集積回路を製造する製造プロセス（例えば半導体製造工場におけるような製造プロセス）を構成するように整えられる。
【００６６】
本発明の実施形態は、その上に／内部に命令（例えば、ソフトウエア、ファームウエア、及び／又はハードウエア記述言語コードを含むハードウエア命令）を有する記憶媒体（複数の記憶媒体）であるコンピュータプログラム製品を含み、命令は、本発明の実施形態の任意のプロセスを実行するようにコンピュータを制御することができ又はコンピュータに当該プロセスをさせることができる。記憶媒体は、限定はされないが、フロッピー(登録商標)ディスク、ミニディスク（ＭＤ）、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、及び光磁気ディスクを含む任意の種類のディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス（フラッシュカードを含む）、磁気若しくは光カード、ナノシステム（分子メモリＩＣを含む）、ＲＡＩＤデバイス、遠隔データ記憶／アーカイブ／ウェアハウジング、又は命令及び／若しくはデータを記憶するのに適した任意の種類の媒体若しくはデバイスを含む。
【００６７】
コンピュータ可読媒体（複数の媒体）の任意の１つに記憶されて、本発明の実施形態は、汎用／専用両方のコンピュータ又はマイクロプロセッサのハードウエアを制御するためのソフトウエア、及び人間のユーザ又は本発明の実施形態の結果を利用する他のメカニズムとコンピュータ又はマイクロプロセッサが相互作用することを可能にするためのソフトウエアを含む。そのようなソフトウエアは、限定はされないが、デバイスドライバ、オペレーティングシステム、及びユーザアプリケーションを含む。最終的には、そのようなコンピュータ可読媒体は、前述したような本発明の実施形態を実行するためのソフトウエアを更に含む。
【００６８】
汎用／専用のコンピュータ又はマイクロプロセッサのプログラミング（ソフトウエア）には、本発明の実施形態の教示を実装するためのソフトウエアモジュールが含まれ、それらは、限定はされないが、本発明の実施形態のプロセスに従って、データのスクエアを提供することと、データのスクエアをデータのタイルへと変形することと、データのタイルをデータの複数のクワッドに分割することと、各クワッドを表現要素へと変換することと、複数の表現要素を伴うデータの新たなタイルを形成することと、単一の表現要素が残るまで繰り返すことと、単一の表現要素、複数の制御ワード、及び複数のデルタ要素を出力ストリーム内に埋め込むことと、を含んでいる。
【００６９】
本発明の実施形態は、本発明の構成及び動作の原理の理解を容易にする詳細を組み込んでいる特定の実施形態に関して説明されてきた。特定の実施形態及びその詳細に対するここでのそのような参照は、ここに添付される特許請求の範囲を限定することを意図してはいない。本発明の精神及び範囲から逸脱することなしに、例示を目的として選択された実施形態において多くの修正がなされ得ることが、当業者にとって明白であろう。例えば、例示される実施形態の機能を実行するために、符号化及び／若しくは埋め込みのための異なる式、並びに／又は種々のデータ及び／若しくはデータフォーマットが追加され且つ／又は除去され得る。
【図１Ａ】
0005651170.tif 000004
【図１Ｂ】
0005651170.tif 000005
【図１Ｃ】
0005651170.tif 000006
【図２Ａ】
0005651170.tif 000007
【図２Ｂ】
0005651170.tif 000008
【図３Ａ】
0005651170.tif 000009
【図３Ｂ】
0005651170.tif 000010
【図３Ｃ】
0005651170.tif 000011
【図３Ｄ】
0005651170.tif 000012
【図４】
0005651170.tif 000013
【図５】
0005651170.tif 000014
【図６】
0005651170.tif 000015
【図７】
0005651170.tif 000016
【図８】
0005651170.tif 000017