(57)【特許請求の範囲】
【請求項１】
圧縮画素ブロックを伸張する方法であって、
複数の画素プロパティ値を規定するステップと、
前記圧縮画素ブロックに含まれた基準コードワードに基づいて、画素ブロックに対する少なくとも１つの参照点を識別するステップと、
前記識別された少なくとも１つの参照点のうちの少なくとも１つの参照点に対する前記画素ブロックにおける前記少なくとも１つの画素の位置に基づいて前記画素ブロックにおける少なくとも１つの画素に対して前記規定された複数の画素プロパティ値のうち画素プロパティ値を選択するステップと、
前記少なくとも１つの画素の元の画素プロパティ値の伸張された表現として前記選択された画素プロパティ値を前記少なくとも１つの画素に割り当てるステップと
を有することを特徴とする方法。
【請求項２】
前記規定するステップは、前記圧縮画素ブロックに含まれたセットコードワードに基づいて複数の画素プロパティ値のプロパティ値セットを提供するステップを有することを特徴とする請求項１に記載の方法。
【請求項３】
前記セットコードワードはベースコードワード及び修飾子コードワードを含み、
前記規定するステップは、
前記ベースコードワードに基づいてベースプロパティ値を提供するステップと、
前記修飾子コードに基づいて複数の値修飾子の修飾子セットを提供するステップと、
前記提供されたベースプロパティ値及び前記提供された修飾子セットに基づいて前記プロパティ値を算出するステップと
を含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記識別するステップは、
前記基準コードワードに基づいて前記画素ブロックにおける第１の参照画素及び前記画素ブロックにおける第２の参照画素を識別するステップと、
前記第１の参照画素から前記第２の参照画素に延在する前記画素ブロックにおける線を規定するステップと；ここで前記第１の参照画素、前記第２の参照画素、及び前記線上に置かれている前記画素ブロックにおけるあらゆる中間画素の位置が前記少なくとも１つの参照点を構成する
を有することをことを特徴とする請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
前記選択するステップは、
参照点であり且つ前記画素ブロックにおける前記少なくとも１つの画素に隣接する隣接画素数をカウントするステップと、
前記カウントされた隣接画素数に基づいて前記規定された複数の画素プロパティ値のうち前記画素プロパティ値を選択するステップと
を有することを特徴とする請求項４に記載の方法。
【請求項６】
圧縮画素ブロックを伸張するための伸張器であって、
複数の画素プロパティ値を規定するための数値デファイナと、
前記圧縮画素ブロックに含まれた基準コードワードに基づいて、画素ブロックに対する少なくとも１つの参照点を識別するための参照点識別器と、
前記参照点識別器により識別された少なくとも１つの参照点のうちの少なくとも１つの参照点に対する前記画素ブロックにおける前記少なくとも１つの画素の位置に基づいて前記画素ブロックにおける少なくとも１つの画素に対して前記数値デファイナにより規定された前記複数の画素プロパティ値のうち画素プロパティ値を選択するための値選択器と、
前記少なくとも１つの画素の元の画素プロパティ値の伸張された表現として前記値選択器により選択された前記画素プロパティ値を前記少なくとも１つの画素に割り当てるための値割当器と
を有することを特徴とする伸張器。
【請求項７】
前記数値デファイナは、前記圧縮画素ブロックに含まれたセットコードワードに基づいて複数の画素プロパティ値のプロパティ値セットを提供するように構成されることを特徴とする請求項６に記載の伸張器。
【請求項８】
前記セットコードワードはベースコードワード及び修飾子コードワードを含み、
前記数値デファイナは、
前記ベースコードワードに基づいてベースプロパティ値を供給するための値供給器と、
前記修飾子コードワードに基づいて複数の値修飾子の修飾子セットを供給するための修飾子供給器と、
前記値供給器により供給された前記ベースプロパティ値及び前記修飾子供給器により供給された前記修飾子セットに基づいて前記プロパティ値セットを算出するための値算出器と
を有することを特徴とする請求項７に記載の伸張器。
【請求項９】
前記参照点識別器は：
前記基準コードワードに基づいて前記画素ブロックにおける第１の参照画素及び前記画素ブロックにおける第２の参照画素を識別するための画素識別器と、
前記第１の参照画素から前記第２の参照画素に延在する前記画素ブロックにおける線を規定するための線デファイナと；ここで前記第１の参照画素、前記第２の参照画素及び前記線上に置かれている前記画素ブロックにおけるあらゆる中間画素の位置が前記参照点識別器により識別された前記少なくとも１つの参照点を構成する
を有することを特徴とする請求項６乃至８のいずれか１項に記載の伸張器。
【請求項１０】
前記値選択器は、
参照点であり且つ前記画素ブロックにおける前記少なくとも１つの画素に隣接する隣接画素数をカウントするための画素カウンタと、
前記画素カウンタによりカウントされた前記隣接画素数に基づいて前記数値デファイナにより規定された前記複数の画素プロパティ値のうち前記画素プロパティ値を選択するための選択器と
を有することを特徴とする請求項９に記載の伸張器。
【請求項１１】
各々がそれぞれの画素プロパティ値を有する複数の画素の画素ブロックを圧縮する方法であって、
複数の画素プロパティ値を規定するステップと、
前記複数の画素の前記画素プロパティ値のうちの少なくとも一部に基づいて前記画素ブロックに対する少なくとも１つの参照点を判定するステップと；ここで前記画素ブロックにおける前記少なくとも１つの参照点に対する前記複数の画素の１つの画素の位置が、前記規定された複数のうちの画素プロパティ値の画素プロパティ値の識別器を規定する、
前記少なくとも１つの参照点の表現に基づき、前記画素ブロックの圧縮表現を生成するステップと
を有することを特徴とする方法。
【請求項１２】
前記規定するステップは、
前記複数の画素の前記画素プロパティ値のうちの少なくとも一部に基づいてベースプロパティ値を判定するステップと、
前記複数の画素の前記画素プロパティ値のうちの前記少なくとも一部に基づいて、複数の画素プロパティ値のプロパティ値セットを取得するため、前記ベースプロパティ値に適用可能な複数の値修飾子の修飾子セットを選択するステップとを有し、
前記生成するステップは、前記少なくとも１つの参照点の前記表現、前記ベースプロパティ値の表現及び前記修飾子セットの表現に基づいて前記画素ブロックの前記圧縮された表現を生成するステップを有することを特徴とする請求項１１に記載の方法。
【請求項１３】
前記判定するステップは、
前記複数の画素の前記画素プロパティ値のうちの前記少なくとも一部に基づいて、前記画素ブロックにおける第１の参照画素及び前記画素ブロックにおける第２の参照画素を識別するステップと、
前記識別された第１の参照画素、前記第２の参照画素、及び、前記第１の参照画素から前記第２の参照画素に延在する線上に置かれている前記画素ブロックにおけるあらゆる中間画素の位置として前記少なくとも１つの参照点を判定するステップと
を有することを特徴とする請求項１１又は１２に記載の方法。
【請求項１４】
各々がそれぞれの画素プロパティ値を有する複数の画素の画素ブロックを圧縮するための圧縮器であって、
複数の画素プロパティ値を規定するための数値デファイナと、
前記複数の画素の前記画素プロパティ値のうちの少なくとも一部に基づいて前記画素ブロックに対する少なくとも１つの参照点を判定するための参照点判定器と；ここで、前記画素ブロックにおける前記少なくとも１つの参照点に対する前記複数の画素の画素の位置が、前記数値デファイナにより規定された前記複数の画素プロパティ値のうちの画素プロパティ値の識別器を規定する、
前記少なくとも１つの参照点の表現に基づき、前記画素ブロックの圧縮表現を生成する表現生成器と
を有することを特徴とする圧縮器。
【請求項１５】
前記数値デファイナは、
前記複数の画素の前記画素プロパティ値のうちの少なくとも一部に基づいてベースプロパティ値を判定するための値判定器と、
前記複数の画素の前記画素プロパティ値のうちの前記少なくとも一部に基づいて複数の画素プロパティ値のプロパティ値セットを取得するように前記値判定器により判定された前記ベースプロパティ値に適用可能な複数の値修飾子の修飾子セットを選択するための修飾子セット選択器とを有し、
前記表現生成器は、前記少なくとも１つの参照点の前記表現、前記ベースプロパティ値の表現、及び、前記修飾子セットの表現に基づいて前記画素ブロックの前記圧縮された表現を生成するように構成されることを特徴とする請求項１４に記載の圧縮器。
【請求項１６】
前記参照点判定器は：
前記複数の画素の前記画素プロパティ値のうちの前記少なくとも一部に基づいて前記画素ブロックにおける第１の参照画素、及び、前記ブロックにおける第２の参照画素を識別するための画素識別器と、
前記画素識別器により識別された前記第１の参照画素、前記第２の参照画素、並びに前記第１の参照画素から前記第２の参照画素に延在する線上に置かれている前記画素ブロックにおけるあらゆる中間画素の位置として前記少なくとも１つの参照点を判定するための判定器と
を有することを特徴とする請求項１４又は１５に記載の圧縮器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に画素ブロック処理に関し、特に画素ブロックの圧縮及び伸張に関する。
【背景技術】
【０００２】
グラフィックス処理装置（ＧＰＵ）の性能を向上しようとする場合、１つの解決方法は、メモリ帯域幅の消費量を減少するように種々の技術を適用することである。処理能力に対する性能成長率が帯域幅に対する性能成長率及びランダムアクセスメモリ（ＲＡＭ）に対する遅延時間を大きく上回るため、帯域幅の削減は益々重要になってきている。
【０００３】
テクスチャの圧縮は、帯域幅に対する要求を低減する１つの一般的な方法である。テクスチャが圧縮された形態でメモリに格納し且つバスを介して圧縮されたデータのブロックを転送することにより、テクスチャの帯域幅は大幅に削減される。
【０００４】
テクスチャは、通常、赤、緑、青及びアルファの４つのチャンネルから構成される。本来アルファチャンネルは、完全に透明から完全に不透明までの範囲にわたる不透明度情報を格納することを意図した。しかし、ピクセルシェーダの出現により、現在、アルファチャンネルは、通常の色データと共にレンダリングする間に有用なあらゆる種類の情報を格納するために使用される。そのような情報の例には、鏡面性又は明るさ等の物質プロパティ(material properties)及びバンプマップ等の幾何学情報が含まれる。例えばスペキュラマップ等のスカラデータを格納するために、アルファチャンネルのみを含む、すなわち赤、緑及び青のチャンネルを含まないテクスチャを使用することが更に益々一般的になってきている。
【０００５】
アルファ圧縮に対する現在の業界標準のアルゴリズムは、ＤＸＴＣ／Ｓ３ＴＣテクスチャ圧縮規格［１］に組み込まれたものである。これらのアルゴリズムは２つの異なるアルファ圧縮モードを含み、その双方は、アルファチャンネルを１画素当たり通常８ビットの元のサイズから１画素当たり４ビットに圧縮する。
【０００６】
従って、ＤＸＴＣ圧縮アルファチャンネルの品質は非常に高い。いくつかの応用例において、１画素当たり４ビットを使用するのは過剰である場合もある。これに対して、３つの色チャンネルは合わせて１画素当たり４ビットに圧縮され、圧縮ＲＧＢＡテクスチャに対しては１画素当たり合計で８ビットである。従って、アルファチャンネルに格納されたデータが一般にテクスチャの色より低い精度を要求するが、アルファチャンネルに含まれた情報は４つのチャンネルの優れた最高品質を得る。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従って、アルファチャンネルの効率的な処理を可能にし且つ非常に高い圧縮率を達成することにより、帯域幅又はメモリを節約するたに、あるいは色チャンネルを更に増強するために使用される節約ビットを可能にするテクスチャの圧縮及び伸張方式が必要である。
【０００８】
一般的な目的は、テクスチャを圧縮及び伸張する効率的な処理方式を提供することである。
【課題を解決するための手段】
【０００９】
この目的及び他の目的は、添付の請求の範囲により規定されたように実施形態により達成される。
【００１０】
簡単に説明すると、本発明の実施形態は、関連付けられたプロパティ値を有する画素を含む画素ブロックの圧縮及び伸張を含む。伸張において、圧縮画素ブロックは、好ましくは圧縮画素ブロックに含まれたコードワードデータに基づいて複数の使用可能な画素プロパティ値を規定するために処理される。圧縮画素ブロックに含まれた基準コードワード(reference codeward)は、画素ブロックに対する少なくとも１つの参照点を識別するために使用される。
【００１１】
画素が復号化又は伸張される場合、画素プロパティ値は規定された複数のプロパティ値から画素に対して選択される。このような値の選択は、更に少なくとも１つの参照点に対する画素ブロックにおける画素の位置に基づいて実行される。選択された画素プロパティ値は、現在の画素に割り当てられ、画素に対する元のプロパティ値の復号化された表現として使用される。
【００１２】
圧縮において、複数の画素プロパティ値は、好ましくは画素ブロックにおける画素プロパティ値のうちの少なくとも一部に基づいて画素ブロックに対して規定される。また、画素ブロックに対する少なくとも１つの参照点は、画素プロパティ値に基づいて判定される。この少なくとも１つの参照点は、画素ブロックにおける画素に対して規定されたプロパティ値の中からそれぞれの画素プロパティ値を識別できるように、上述したような伸張の間使用される。画素ブロックの圧縮された表現は、判定された１つ又は複数の参照点の表現に基づいて及び好ましくは規定されたプロパティ値の表現に基づいて生成される。
【００１３】
更に実施形態は、圧縮器及び伸張器に関する。
【００１４】
実施形態は、１つ以上の参照点に対する画素の位置を介して選択されたプロパティ値に対して画素インデックスを黙示的に信号伝送することにより、効率的な圧縮を提供する。これにより、圧縮画素ブロックにおいて明示的な画素インデックスの信号伝送を使用する従来技術のアルゴリズムと比較してより高い圧縮率が可能になる。
【００１５】
実施形態の以下の説明を読むことにより、実施形態により与えられた他の利点が理解されるだろう。
【００１６】
添付の図面と共に以下の説明を参照することにより、更なる目的及び利点を加えた実施形態が最もよく理解されるだろう。
【図面の簡単な説明】
【００１７】
【図１】一実施形態に従って圧縮画素ブロックを伸張する方法を示すフローチャートである。
【図２】図１の伸張方法の値を規定するステップの一実施形態を示すフローチャートである。
【図３】図１の伸張方法の識別するステップの一実施形態を示すフローチャートである。
【図４】図１の伸張方法の更なるオプションのステップを示すフローチャートである。
【図５】一実施形態に従って画素ブロックを圧縮する方法を示すフローチャートである。
【図６】図５の圧縮方法の値を規定するステップの一実施形態を示すフローチャートである。
【図７】図５の圧縮方法の参照点を判定するステップの一実施形態を示すフローチャートである。
【図８】一実施形態に係る伸張器を示す概略ブロック図である。
【図９】図８の伸張器における数値デファイナの一実施形態を示す概略ブロック図である。
【図１０】図８の伸張器における参照識別器の一実施形態を示す概略ブロック図である。
【図１１】図８の伸張器における値選択器の一実施形態を示す概略ブロック図である。
【図１２】一実施形態に係る圧縮器を示す概略ブロック図である。
【図１３】図１２の圧縮器における数値デファイナの一実施形態を示す概略ブロック図である。
【図１４】図１２の圧縮器における参照点判定器の一実施形態を示す概略ブロック図である。
【図１５】、
【図１６】、
【図１７】画素に対する参照点を規定し且つ価値指数を黙示的に判定する種々の実施形態を示す図である。
【図１８】ベースプロパティ値及び修飾子値の修飾子セットから画素プロパティ値のセットを算出する一実施形態を概略的に示す図である。
【図１９】２つのベースプロパティ値から画素プロパティ値のセットを算出する一実施形態を概略的に示す図である。
【図２０】一実施形態に係る圧縮画素ブロックを示す概略図である。
【発明を実施するための形態】
【００１８】
図中、同一の参照符号は対応する要素又は類似する要素に対応づけるために使用されるものである。
【００１９】
本発明は、一般に画素プロパティ値(pixel property values)の圧縮及び伸張に関し、特にテクスチャの圧縮及び伸張に適するような圧縮及び伸張に関する。
【００２０】
本発明の実施形態は、例えば限定しない例であるゲーム、３次元（３Ｄ）マップ及び３Ｄシーン、動画メッセージ等の３Ｄメッセージ、スクリーンセーバ、マンマシンインタフェース（ＭＭＩ）等の３Ｄグラフィックスで使用するように適切に構成される。従って、実施形態は、１次元（１Ｄ）、２次元（２Ｄ）又は３Ｄ画像等の他の種類の画像又はグラフィックスを符号化するように更に採用されてもよい。
【００２１】
本明細書において、圧縮及び伸張は、通常画素のブロック又はタイルの形態で複数の画素を一元的に処理する。好適な一実施形態において、そのような画素ブロックはＭ×Ｎ画素のサイズを有する。ここで、Ｍ、Ｎは、Ｍ及びＮの双方が同時に１ではないという条件で整数である。Ｍ＝２m及びＮ＝２nであるのが好ましく、ここで、ｍ、ｎは、ｍ及びｎが同時にゼロではないという条件でゼロ又は整数である。一般的な実現例において、Ｍ＝Ｎ及び好適なそのような画素ブロックの実施形態は、４×４画素、８×８画素、又は１６×１６画素であってもよい。
【００２２】
画素又は「ブロック要素」という表現は、画素ブロックにおける要素又は画素ブロックの符号化された表現を示す。その結果、この画素ブロックは、画像又はテクスチャの一部に対応する。従って、画素は、１Ｄ、２Ｄ、３Ｄテクスチャのテクセル、すなわちテクスチャ要素、１Ｄ又は２Ｄ画像の画素、あるいは３Ｄ画像のボクセル、すなわち体積要素であってもよい。一般に、画素は、関連付けられた画素パラメータ、あるいは画素プロパティ値又は画素機能により特徴付けられる。
【００２３】
通常どのような種類の画素ブロックを圧縮／伸張するかに依存して、画素に割り当てられるそのような種々の特徴的なプロパティ値が存在する。例えばプロパティ値は、画素に割り当てられた色値であってもよい。当技術分野において周知のように、種々の色空間が使用可能であり且つ画素色値を示すために使用される。通常のそのような色空間は、いわゆる赤、緑、青（ＲＧＢ）の色空間である。従って、画素プロパティ値は、ＲＧＢ色の赤値、緑値又は青値であってもよい。
【００２４】
画素カラーは、輝度及びクロミナンス構成要素の形態で更に表現される。そのような場合、変換は、ＲＧＢ色値を輝度値及び一般に２つのクロミナンス構成要素に変換するために使用される。当技術分野における輝度クロミナンス空間の例は、ＹＵＶ、ＹＣoＣg及びＹＣrＣbを含む。従って、プロパティ値は、そのような輝度値（Ｙ）、あるいはクロミナンス値（Ｕ、Ｖ、Ｃo、Ｃg、Ｃr又はＣb）であってもよい。
【００２５】
本発明の実施形態は、ＲＧＢ色データ中のテクスチャ及び画素がＲＧＢＡ形式である場合にＲＧＢ色データとは別に又はＲＧＢデータと共に使用されたアルファチャンネルにより含まれた画素プロパティ値を処理するために使用されるのに有利である。その結果、アルファチャンネルは、例えば不透明なデータ、物質プロパティデータ、鏡面性、明るさ、幾何学データ、バンプマップ又は深度データ、スペキュラマップデータ等の非常に種々の画素特徴を規定できる。従って、プロパティ値は、画素ブロックの画素、すなわちタイルと関連付けられるか、あるいはそれを用いて処理されるあらゆるプロパティ又は特徴を示す。しかし、実施形態は、ＲＧＢＡテクスチャのアルファチャンネルにおいて保持された画素プロパティ値を圧縮及び伸張するために使用されることに必ずしも限定されない。明らかに対照的に、実施形態は、あらゆる既知の画素プロパティ値を処理するためのスタンドアロンツールとして使用されてもよく、又は画素と関連付けられた他の画素プロパティデータを処理する他のあらゆる圧縮／伸張アルゴリズムを補完するものとして使用されてもよい。
【００２６】
従って、本明細書において開示された実施形態は、例えばアルファチャンネルデータ、ＲＧＢデータ及びＲＧＢＡデータを圧縮及び伸張するために使用される。後者において、アルファチャンネルデータは本明細書において開示されたように処理され、あらゆる従来技術の圧縮／伸張方式はＲＧＢデータを処理するために使用される。
【００２７】
また、以下において、用語「画像」は、本発明の実施形態を利用して符号化及び復号化されるあらゆる１Ｄ、２Ｄ又は３Ｄ画像又はテクスチャを示すために使用される。あらゆる１Ｄ、２Ｄ又は３Ｄ画像又はテクスチャは、バンプマップ、通常の地図、写真、ゲームタイプのテクスチャ、文字、図面、ハイダイナミックレンジ画像及びテクスチャ等を含むがそれらに限定されない。
【００２８】
本発明は、圧縮画素ブロックにおいて、明示的な画素インデックスの信号伝送を使用するのではなく、黙示的そのような画素インデックスの信号伝送を提供することにより、画像及びテクスチャの圧縮に新規な方法を提供する。これは、よりコンパクトな符号化を達成するか又は圧縮画素ブロックに含まれた他の特徴に対してより多くのビットを費やすために使用される。
【００２９】
［伸張］
図１は、画素ブロックにおいて少なくとも１つの画素の元のプロパティ値の伸張された表現を取得するために、圧縮画素ブロックを伸張する方法を示すフローチャートである。
【００３０】
方法は、一般に復号化／伸張する圧縮画素ブロックを識別することにより開始する。符号化された画像又はテクスチャの全ての圧縮画素ブロックが元のテクスチャの復号化された表現を生成するように復号化されることが可能であってもよい。あるいは、テクスチャの一部分のみがアクセスされてもよい。その結果、選択された複数の画素ブロックのみが復号化されなければならず、すなわちより正確には、ある特定の画素ブロックの選択された複数の画素が復号化されなければならない。
【００３１】
方法はステップＳ１から開始し、複数の許容可能な画素プロパティ値が現在の画素ブロックに対して規定される。第１の実施形態において、これらの複数のプロパティ値は、あらゆる値、すなわち少なくとも［０．０，１．０］等の規定の間隔内において限られたビット分解能で表現可能なあらゆる値をとってもよい。第２の実施形態において、これらの複数のプロパティ値は、例えば８個の異なるプロパティ値の場合にプロパティ値の範囲が０００binから１１１binの範囲にわたる複数のプロパティ値のプロパティ値セットを共に規定する。しかし、好適な一実施形態において、規定するステップＳ１は、圧縮画素ブロックに含まれた情報、すなわちセットコードワードに基づいてプロパティ値セットを提供することを含み、これは本明細書において更に説明される。
【００３２】
次のステップＳ２は、画素ブロックに対する少なくとも１つの参照点を識別する。このような参照点の識別は、圧縮画素ブロックに含まれた基準コードワードに基づいて実行される。一般的な一実施形態において、ステップＳ２は、少なくとも１つの画素の中心位置であるのが好ましい画素ブロックにおける１つ以上の画素位置と一致するような１つ以上の参照点を識別する。そのような場合、画素ブロックは、画素ブロックに対する事前定義された位置を有する座標の原点を含む座標系に配置されると考えられる。一般に原点は、画素ブロックにおいて座標（ｘ，ｙ）＝（０，０）を有する左上の画素位置と一致する。ここで、ｘは画素ブロックにおける列座標又は列番号を示し、ｙは対応する行座標又は行番号である。少なくとも１つの参照点を画素ブロックの内側の座標として位置付けるのが好ましいが、参照点のうちの少なくとも１つは、実際に座標系において現在の画素ブロックの境界の外側に位置付けられてもよい。
【００３３】
オプションの一実施形態において、基準コードワード(reference codeword)は、画素ブロックに対する１つ又は複数の参照点を規定する。少なくとも１つの更なる参照点は、規定された１つ又は複数の参照点に基づいてステップＳ２において識別される。この状況を図１５及び図１６において概略的に説明する。図１５及び図１６の左部分において、基準コードワード４１０は、画素ブロック３００において２つの画素位置、すなわちこの図示する例において（０，０）及び（３，１）を含むものとして概略的に示される。図１５において、これらの座標を有する２つの参照点／画素３１２、３１４は、画素ブロック３００において黒でマーク付けされる。更に本実施形態において、更なる参照点は、一方の参照点から他方の参照点に移動する際にパス上に置かれている中間画素３１６として識別される。本発明の例において、２つのそのような中間参照点／画素３１６は、図１５において陰影をつけて示される。
【００３４】
図１６は、更なる参照点を提供する別の方法を示す。この場合、基準コードワード４１０の２つの参照点座標を相互接続する線が画素ブロック３００において示される。この線又は曲線上のあらゆる点は、ステップＳ２において識別された参照点であると考えられる。
【００３５】
図１５及び図１６の例において、複数の参照点がステップＳ２において識別される。図１７は、単一の参照点／画素３１２のみが基準コードワード４１０に基づいて識別される別の方法を示す。
【００３６】
ステップＳ１及びＳ２は、ステップＳ１がステップＳ２に先行する図１において示されたように連続して実行される。あるいは、ステップＳ２はステップＳ１に先行して実行されてもよく又は実際に２つのステップＳ１及びＳ２は同時に実行されてもよい。後続する２つのステップＳ３及びＳ４は、画素ブロックにおいて復号化されるべき画素毎に実行される。
【００３７】
ステップＳ３は、復号化される画素に対してステップＳ１において規定された複数のプロパティ値の中から画素プロパティ値を選択する。更にこのような値の選択は、ステップＳ２において識別された参照点のうちの少なくとも１つの位置に対する画素ブロックにおける画素の位置に基づいて実行される。従って、参照点のうちの１つ以上に対する画素の相対位置により、ステップＳ１の許容可能なプロパティ値のうち画素に対して選択されるプロパティ値が判定される。その結果、圧縮画素ブロックにおける画素に割り当てられ且つ許容可能なプロパティ値のうちの１つを示す明示的な画素インデックスは、画素に対して必要ない。
【００３８】
ステップＳ３における値の選択は、本明細書において更に説明されるように種々の実施形態に従って、例えば画素ブロックにおいて現在の画素に隣接する隣接参照点の数、現在の画素から最近接の参照点までの距離等に基づいて実行される。
【００３９】
最後のステップＳ４は、ステップＳ３において選択されたプロパティ値を復号化される現在の画素に割り当てる。従って、この割り当てられたプロパティ値は、画素の元のプロパティ値の伸張又は復号化された表現として使用される。
【００４０】
ステップＳ３及びＳ４は、線Ｌ１により概略的に示されるように画素ブロックにおいていくつかの画素に対して実行されてもよい。ある応用例においては単一の画素のみが画素ブロックから復号化され、他の応用例においては画素ブロックの複数の画素及び／又は全ての画素が復号化されることが予想される。
【００４１】
ステップＳ１〜Ｓ４は、線Ｌ２により概略的に示されるように、復号化されるべき画素を含む全ての画素ブロックに対して繰り返されるのが好ましい。これは、ステップＳ１〜Ｓ４のループが１回実行されてもよいが、殆どの場合種々の圧縮画素ブロック及び／又は特定の圧縮画素ブロックに対してループが複数回実行されることを意味する。
【００４２】
次に、元の画像／テクスチャ又はその一部が復号化された表現は、復号化された画素及び画素ブロックに基づいて生成される。尚、いくつかの応用例において、いくつかの画素は、復号化された表現の単一の画素をレンダリングするために復号化されなければならない。例えば、３次元線形補間中に８個の隣接画素が復号化され、２次元線形補間の場合には対応する数は４個の画素である。これは当業者には周知である。その後、方法は終了する。
【００４３】
図２は、図１の値を規定するステップの特定の実施形態を示すフローチャートである。本実施形態において、複数の画素プロパティ値であるプロパティ値セットは、圧縮画素ブロックに含まれたセットコードワードに基づいて提供される。また、このセットコードワードは、ベースコードワード及び修飾子コードワードを含むのが好ましい。
【００４４】
方法はステップＳ１０から開始し、現在の画素ブロックに対してベースプロパティ値を提供する。このベースプロパティ値は、圧縮画素ブロックに含まれたベースコードワードに基づいて更に提供される。従って、ベースコードワードは、関連するベースプロパティ値の符号化された表現である。一実施形態において、ベースコードワードはベースプロパティ値の非量子化バージョンであり、ベースコードワードのビットシーケンスが圧縮画素ブロックから単純に取り出され且つ画素ブロックに対してベースプロパティ値として直接使用されることを意味する。別の実施形態において、ベースコードワードはベースプロパティ値の量子化バージョンである。そのような場合、量子化された値は、ベースプロパティ値を取得するために最初に逆量子化されなければならない。いくつかの種々の量子化−逆量子化技術は、当技術分野において既知であり、情報に対して使用される。図示された例は、例えば２Ｂビットプロパティ値のＢ個の最上位ビット及びＢ個の最下位ビットと同一のＢビットシーケンスを再使用することにより、２Ｂビットプロパティ値に拡張されるＢビットベースコードワードを使用するものである。
【００４５】
ステップＳ１１は、ベースプロパティ値に適用可能な複数の値修飾子の修飾子セットを提供する。この修飾子セットは、圧縮画素ブロックに含まれた修飾子コードワードに基づいてステップＳ１１において提供される。第１の実施形態において、修飾子コードワードは、複数の値修飾子の量子化バージョン又は非量子化バージョンを含む。しかし、修飾子コードワードのビット長を短縮するために、修飾子コードワードが複数の値修飾子のサブセットのみを含めば更に効率的だろう。次に、修飾子セットの残りの値修飾子は、この値修飾子のサブセットから算出される。例えば、サブセットは正又は負の値修飾子を含む。そのような場合、負又は正に相当するものは、サブセットにおいて値修飾子を否定することにより算出される。更に又はあるいは、更なる値修飾子は、１つ以上の更なる値識別子を取得するためにサブセットからの値修飾子に１つ以上の事前定義された係数を乗算することにより算出される。
【００４６】
更なる実施形態は、複数の修飾子セットを含む表を使用する。そのような場合、表の各セットはセットインデックスと関連付けられる。従って、圧縮画素ブロックにおける修飾子コードワードは、表から修飾子セットのうちの１つを識別及び提供するためにセットインデックスとして使用される。
【００４７】
複数の許容可能な画素プロパティ値は、ステップＳ１０のベースプロパティ値及びステップＳ１１の値修飾子に基づいてステップＳ１２において算出される。好適な一実施形態において、修飾子セットの種々の値修飾子は、プロパティ値セットを取得するためにベースプロパティ値に加算される。これは、値修飾子をベースプロパティ値に単純に加算するものとして実現されてもよい。別の一実施形態において、加算ではなく、乗算、ＸＯＲ又は別の算術演算等の別の種類の変更が採用されてもよい。
【００４８】
プロパティ値が事前定義された間隔内にのみ存在できる場合、結果として得られるプロパティ値は最小閾値と最大閾値との間でクランプされる。例えば、値修飾子をベースプロパティ値に加算した後の場合、結果として得られるプロパティ値は最小閾値より小さく、プロパティ値はこの最小閾値の値にクランプされる。それに対応して、結果として得られるプロパティ値が最大閾値より大きい場合、最大閾値の値はプロパティ値として代わりに使用されるべきである。２５６個の異なる画素プロパティ値を含む場合、最小閾値及び最大閾値の限定しない例は、それぞれ０及び２５５である。
【００４９】
図１８は、画素プロパティ値を提供する本実施形態を示す概略図である。図１８の上部分において、ベースコードワード４２２は、０１１１bin＝７の量子化された値を示すものとして概略的に示される。その結果、逆量子化後に０１１１０１１１bin＝１１９のベースプロパティ値１０が得られる。修飾子コードワード４２４は、値０１０１bin＝５を有する。図１８は、この場合は１６個である複数の修飾子セット２２を含む表２０の限定しない例を更に示す。修飾子コードワード４２４は、この例において値修飾子［−５８、３、−４６、−６、１、２２、４５、５２］を有する正確な修飾子セット２２を検索するために使用される。これらの値修飾子は、１１９等のベースプロパティ値１０に加算され、結果として得られるアルファ値の形態で図１８の右側上に示された異なるグレーの陰影として示される最後のプロパティ値セット３０を取得する。
【００５０】
実施形態に従って使用される複数の修飾子セットを含む表の限定しない例は、図１８及び以下において表Ｉとして示された表である。
【００５１】
【表１】
0005228111.tif 000002
【００５２】
表における実際の値修飾子は、画素ブロックにおいて画素のプロパティ値の種類に少なくともある程度依存する。表Ｉにおけるような修飾子セットの適切な表は、ピーク信号対雑音比（ＰＳＮＲ）に関して可能な限り高い精度で検査画素ブロックを圧縮及び伸張するために種々の修飾子セットが異なる検査画素ブロックに対して検査される最適化手順において判定される。
【００５３】
図１９は、プロパティ値セット３０を提供する別の一実施形態を示す。本実施形態において、セットコードワード４２０は、１００１bin＝９等の第１の量子化プロパティ値の表現及び１１１０bin＝１４等の第２の量子化プロパティ値の表現を含む。これらのプロパティ値は、量子化された形式であるのが好ましく、１００１１００１bin＝１５３及び１１１０１１１０bin＝２３８の最後の画素プロパティ値４０、４２を取得するために最初に逆量子化される。プロパティ値セットの残りの画素プロパティ値は、これらの２つのプロパティ値４０、４２の種々の重み付き組み合わせ、好ましくは線形組み合わせとして算出される。残りのプロパティ値は
0005228111.tif 000003
として算出された中間プロパティ値であるのが好ましい。ここで、Ａは１５３等の第１の画素プロパティ値４０を示し、Ｂは２３８等の第２の画素プロパティ値４２を示し、Ｒは８等のプロパティ値セットにおけるプロパティ値の総数を示し、ｊ∈［０，Ｒ−１］である。
【００５４】
本実施形態は、ＲＧＢデータを処理するのに特に適している。
【００５５】
図３は、図１の識別するステップの一実施形態を示すフローチャートである。方法は図１のステップＳ１から継続する。次のステップＳ２０は、基準コードワードに基づいて画素ブロックにおける第１の参照画素及び第２の参照画素を識別する。従って、基準コードワードは、図１５及び図１６に示されたようにこれらの２つの画素の座標を含む。次のステップＳ２１は、第１の参照画素３１２から第２の参照画素３１４に延在する画素ブロック３００における線を規定する。第１の実施形態において、参照点は、第１の参照画素３１２及び第２の参照画素３１４の位置、並びに線上に置かれている画素ブロック３００におけるあらゆる中間画素３１６の位置を含む。これを図１５に示す。
【００５６】
図１５の実施形態において、１つの画素幅の線が２つの参照画素３１２と３１４との間に描かれ、線上の全ての画素３１６は参照点であると考えられる。線を描くために使用された方法は非常に単純である。第１の画素３１２から出発して第２の画素３１４に向けてステップを移動し、座標が既に同一でない限り、各ステップは終点に１つの画素の長さだけ水平座標及び垂直座標を近接する。その間の全ての画素３１６は、図１５において陰影をつけて示され、終点に到達すると停止する。基本的に、同一のアルゴリズムが圧縮及び伸張のために使用される限り、ブレセンハムアルゴリズム(Bresenham algorithm)等のあらゆる線画アルゴリズムが代わりに使用されてもよい。
【００５７】
図１６は、参照点又は参照画素３１２と３１４との間に相互接続する直線を代わりに描くことにより、別の方法を使用した。この線上のあらゆる点は、本実施形態における参照点であると考えられる。
【００５８】
図１のステップＳ３に進む。
【００５９】
参照点の１つ以上の位置は特別な画素ブロック専用であってもよい。例えば、画素ブロックにおける全ての画素が少なくとも実質的に同一のプロパティ値を有する場合、画素ブロックの適切な表現は、このプロパティ値の表現となるベースプロパティ値を判定し、このベースプロパティ値を画素ブロックにおける全ての画素に対して使用することである。２つの参照点に対する座標の所定の結合は、そのような特別な例を信号伝送する。その後、修飾子セットが提供されなくてもよいため、修飾子コードワードは任意の値を有する。あるいは、基準コードワードがこの特定の座標の結合を示す場合、ベースコードワード及び修飾子コードワードの双方に対するコードは、ベースプロパティ値を示すために使用されてもよい。これは、ベースプロパティ値がこれらの特別な例においてより高い精度で示されることを意味する。
【００６０】
別の特別な例は、２つの参照点が画素ブロックにおいて同一の座標及び位置を有する場合であってもよい。そのような場合、これらの画素ブロックは別個のモードに従って処理される。例えば、使用可能な修飾子セットは、表における修飾子セットのサブセットであってもよく、又は２つの異なる参照点を有する場合に使用不可である他の修飾子セットを使用してもよい。
【００６１】
基準コードワードが２つの参照画素又は参照点の２つの座標を示し、且つ更に中間の参照点が相互接続線上にあるか、あるいは２つの参照画素又は参照点の間のパス上にある場合、更なる特別な例が発生するだろう。従って、第１の参照画素又は参照点が座標（α，β）を有し、且つ第２の参照画素又は参照点が座標（χ，δ）を有すると仮定する。そのような画素ブロックは、画素ブロックと同様に割り当てられた画素プロパティ値を分配される。ここで、ベースコードワード及び修飾子コードワードが２つの画素ブロックに対して同一である場合、第１の参照画素又は参照点は座標（χ，δ）を有し、第２の参照画素又は参照点は座標座標（α，β）を有する。従って、第１の参照点又は参照画素及び第２の参照点又は参照画素の位置が入れ替えられる場合、結果は同一となる。これは、２つの異なるモードを信号伝送するために利用される。例えば第１のモードにおいて、例えば図１８に示されたように修飾子セットの事前定義された表が使用される。第２のモードにおいて、修飾子セットにおける値修飾子の順序は逆になる。基本的にこれは、第１のモードと比較すると、第２のモードにおいて画素に提供されたプロパティ値セットの順序を逆にすることに対応する。第２のモードの別の変形例は、第１のモードにおいて使用された値修飾子と比較して、事前定義された表において種々の修飾子セットの値修飾子の符号を入れ替えることである。
【００６２】
図４は、一実施形態に従って伸張方法の更なるオプションのステップを示すフローチャートである。方法は図１のステップＳ２から継続する。次のステップＳ３０は、参照点であると考えられる画素に対する画素ブロックにおける隣接画素数を復号化される所定の画素に対してカウントする。ステップＳ３に進み、このカウントされた数は、規定されたプロパティ値のうちの１つを識別及び選択するために使用される。
【００６３】
例えばそのようなカウントは、図１５に関連して以下において説明されるように実行される。残りの画素３１０、すなわち参照点であると考えられない各画素は、ゼロの開始カウント値を割り当てられる。参照画素３１２、３１４、３１６である対角線上に隣接する各画素に対して１が加算され、参照画素３１２、３１４、３１６である垂直に又は水平に隣接する各画素に対して２が加算され、最後に隣接画素のいずれかが参照点である場合に画素３１０に隣接する画素ブロック３００の各縁部に対して１が加算される。従って、これらの残りの画素３１０は、０〜６のカウント値を取得する。カウント値７は、参照点画素３１２、３１４、３１６に対して確保される。手順を図１５に示す。例えば、画素ブロックの位置（０，２）における画素は、参照点である対角線の隣接画素（位置（１，１）における）を有するために１点を取得し、縁部の画素でもある画素に対して更に１点を取得し、合計のカウント値は２となる。図１５の右側の画素ブロックは、本実施形態を図１５における参照画素の例の位置に適用する場合に結果として得られたカウント値を示す。
【００６４】
図１６は、事前定義された値７を２つの参照画素３１２、３１４に割り当てる。残りの画素３１０は、相互接続線上の参照点までのそれぞれの最短距離に依存して０〜６のいずれかの値を取得する。そのような一実施形態の結果を図１６の右側の画素ブロックにおいて示す。
【００６５】
図１７において、基準コードワード４１０は、画素ブロック３００において単一の画素３１２の座標を含み、オプションとして画素座標の中心に置かれた円の半径の座標を含む。この場合、画素ブロック３００におけるカウント値は、画素３１０の中心から円の中心までの距離及び円の半径までの距離の関数として算出される。楕円等の他の同様の表現を想像することは容易であり、基準コードワード４１０におけるパラメータは形状を規定し、画素３１０のカウント値はこの形状までの距離に基づいて算出される。
【００６６】
生成されたカウント値は、画素ブロックに対して使用可能なプロパティ値のうちの１つを選択するために画素インデックスとして使用される。従って、プロパティ値セットが８個の使用可能なプロパティ値を含む場合、カウント値０〜７は、８個の可能なプロパティ値のうちの１つを識別するために使用される。画素ブロックにおける相対位置に基づいて画素の画素インデックスを割り当てる特定の方法がプロパティ値セットにおける使用可能なプロパティ値の数に依存して種々の画素インデックス値の間隔を使用することは、当業者には明らかである。
【００６７】
図２０は、圧縮画素ブロック４００の一実施形態を示す概略図である。圧縮画素ブロック４００は、２つの参照画素又は参照点のｘ、ｙ座標で示された基準コードワード０を含む。セットコードワード４２０は、本実施形態においてベースコードワード４２２及び修飾子コードワード４２４を含む。含まれたコードワード４１０、４２０の実際の順序は、上記で示された実施形態とは異なってもよい。
【００６８】
他の実施形態は、図２０の圧縮画素ブロック４００においてコードワード４１０、４２０のうちの１つを置換又は省略してもよい。例えばいくつかの実施形態において、プロパティ値セットが固定されるため、圧縮器及び伸張器の双方においてハードコードされる。そのような場合、ベースコードワード４２２及び修飾子コードワード４２４は省略される。あるいは、圧縮器及び伸張器は、制限された数の種々のプロパティ値セットへアクセスできる。そのような場合、セットコードワード４２０は、これらのプロパティ値セットのうちの１つに対するセットインデックスとして使用される。
【００６９】
また、基準コードワード４１０は、単一の座標のみを含んでもよく、単一の座標及び半径又は３つ以上の座標を含んでもよい。
【００７０】
［伸張の例］
この例において、４×４画素の画素ブロックが仮定された。また、圧縮画素ブロックは１６ビットを含む。この例において圧縮された画素ブロックの１６ビットを復号化する場合、最初のステップはベースコードワード及び修飾子コードワードを読み取ることである。ベースコードワードは、８ビットの４番目に高く且つ４番目に低いものと同一の４ビットシーケンスを再使用することにより、８ビットのベースプロパティ値に拡張される４ビットの整数である。
【００７１】
修飾子コードワードは、図１８に示された修飾子セットのコードブック又は表からエントリを取り出すために使用される。取り出された修飾子セットにおける８個の値修飾子は８ビットのベースプロパティ値に加算され、その結果は間隔［０，２５５］に対してクランプされる。ここで、復号化されたブロックにおいて使用される８個の可能な画素プロパティ値から構成されるプロパティ値セットを有する。
【００７２】
例えば、０１１１bin（７）のベースコードワード及び０１０１bin（５）の修飾子コードワードは、８ビットのベースプロパティ値０１１１０１１１bin（１１９）及び値修飾子［−５８、３、−４６、−６、１、２２、４５、５２］を生成する。これらが加算されると、ブロックに対して結果として得られる画素プロパティ値は、［６１、１２２、７３、１１３、１２０、１４１、１６４、１７１］の順序である。
【００７３】
８個の画素プロパティ値が判定されると又は判定されるのと同時に、４×４ブロック内のそれらの配置は、基準コードワードの２ビットの値（ｘ1，ｙ1）及び（ｘ2，ｙ2）を使用して判定される。第１の２つの値は第１の参照画素のｘ座標及びｙ座標をマーク付けし、第２の２つの値は第２の参照画素の座標をマーク付けする。１つの画素幅の線が２つの画素間に描かれ、線上の全ての画素は上述の例においては１７１であるブロックに対する最後の画素プロパティ値を受信する。
【００７４】
線が描かれると、上述されたように残りの画素毎にカウントされる。
【００７５】
この方法を使用すると、第１の所定の画素及び第２の所定の画素の位置が入れ替えられる場合に結果が非常に類似する。これは、例えば左から右、上から下を使用するなどブロックの１６画素の固定された順序付けを仮定して第２の参照画素の後に第１の参照画素が置かれている場合にプロパティ値セットの画素プロパティ値の順序を逆にすることにより、特定の実施形態において利用される。
【００７６】
説明した伸張手順は、一般にテクスチャがアクセスされる際にリアルタイムでＧＰＵ上で実行される。
【００７７】
説明した方法の単純な変形は、黙示的に規定された第１の参照画素の中心から第２の参照画素の中心への線に依存するのではなく、明示的にマーク付けされたあらゆる線画素を有さないことである。画素ブロックにおける全ての画素は、中心から図１６のように規定された線上の最近接の点までの距離の関数のみに基づいて全く同様に処理され且つ画素インデックスを与えられる。この方法は、多少より複雑な計算を必要とするが、より並列処理可能であるという利点を有するため、画素ブロックにおける画素毎にインデックスを別個に復号化できる。
【００７８】
更に、プロパティ値セットは異なる方法で選択されてもよい。例えば、２つのベースプロパティ値は図１９のように規定される。ベースプロパティ値間の値は補間される。検査は、この方法が複数の値修飾子を含む表を使用するより結果として劣る圧縮となるが、修飾子セットの表がオンチップに格納される必要はないという利点を有することを示す。
【００７９】
［圧縮］
図５は、各々がそれぞれのプロパティ値を有する複数の画素の画素ブロックを圧縮する方法を示すフローチャートである。方法はステップＳ４０から開始し、複数のプロパティ値は、画素ブロックにおける元のプロパティ値の表現として規定される。この値を規定するステップは、画素ブロックにおけるプロパティ値のうちの少なくとも一部に基づいて実行されるのが好ましく、且つ画素ブロックにおける全てのプロパティ値に基づいて実行されるのが更に好ましい。
【００８０】
規定するステップＳ４０は、図１のステップＳ１に関連して説明したような種々の実施形態に従って実行される。例えば、複数の事前定義されたプロパティ値のプロパティ値セットはステップＳ４０において提供される。そのような場合、この事前定義されたプロパティ値セットは、画素ブロックにおける元のプロパティ値を考慮せずに提供される。別の方法において、ステップＳ４０は、複数のそのように事前定義されたプロパティ値セットを含む表から複数のプロパティ値のプロパティ値セットを選択することを含む。選択は、画素ブロックにおける画素プロパティ値に基づいて実行されるのが好ましい。別の手段は、場合によっては画素ブロックにおけるプロパティ値、許容可能なプロパティ値を取り囲む値の間隔又は範囲に基づいて規定することである。更に別の実施形態では、画素ブロックにおけるプロパティ値、第１の画素プロパティ値及び第２の画素プロパティ値に基づいて判定する。一般的な実現例において、第１の値は画素ブロックにおける最小プロパティ値に基づいて選択されるか又はそれと等しくなるように選択され、第２の値は画素ブロックにおける最大プロパティ値に基づいて選択されるか又はそれと等しくなるように選択される。少なくとも１つの更なるプロパティ値は、プロパティ値セットを取得するために、ステップＳ４０においてこれらの２つの画素プロパティ値の重み付け組み合わせとして規定される。図６を参照して、ステップＳ４０の更なる実施形態を更に詳細に説明する。
【００８１】
次のステップＳ４１は、画素ブロックにおける画素プロパティ値のうちの少なくとも一部に基づいて画素ブロックに対する少なくとも１つの参照点を判定する。この少なくとも１つの参照点は、１つ又は複数の参照的に対する画素ブロックにおける画素のそれぞれの位置に基づいて画素ブロックにおける画素に対するカウント値を算出するために、伸張の間使用される。
【００８２】
２つのステップＳ４０、Ｓ４１の動作は、連続して実行されてもよいが、一般に現在の画素ブロックに対して最適なプロパティ値及び参照点を規定するために同時に実行される。
【００８３】
次のステップＳ４２は、ステップＳ４１において判定された少なくとも１つの参照点の表現及び好ましくはステップＳ４０において規定されたプロパティ値の表現として使用されたセットコードワードに基づいて画素ブロックの圧縮された表現を生成する。
【００８４】
ステップＳ４０〜Ｓ４２は、線Ｌ３により概略的に示されるように、テクスチャの圧縮される全ての画素ブロックに対して繰り返されるのが好ましい。その結果、圧縮画素ブロックのシーケンス又はファイルが得られる。その後、方法は終了する。
【００８５】
符号化されたテクスチャは、テクスチャの後続の表示等のレンダリングまで記憶しておくためにメモリに提供されてもよい。更に符号化されたテクスチャは、別の装置に無線又は有線で送信するために符号化された画素ブロックの信号として送信機に提供されてもよい。
【００８６】
テクスチャの伸張とは明らかに対照的に、圧縮は、テクスチャが使用される前にオフ線で実行されるため、より複雑で時間がかかる。従って、一実施形態において、全ての可能なプロパティ値セット及び参照点の間で徹底的に探索される。例えば、特定のプロパティ値セットが与えられたとすると、４×４の画素ブロックに対してカウント値から２５６個の異なる画素インデックスが分配される。更に、１６個の異なる修飾子セットを含む表から選択された４ビットのベースコードワード及び修飾子セットを使用してプロパティ値セットが判定される場合、２５６個の異なる可能なプロパティ値セットが存在する。これにより、画素ブロックに対して合計で６５，５３６個の異なる結合が得られる。従って、全てのこれらの結合間で徹底的に探索することは、オフ線で圧縮する際に実際に実現可能である。そのような場合、これらの６５，５３６個の可能な候補画素は事前に算出される。次に、画素ブロックが圧縮される場合、それを候補画素ブロックのリストと比較し、最少の平均二乗誤差を含むものを画素ブロックの圧縮された表現として選択する。
【００８７】
この手順は、最初にある特定の候補画素ブロックを除去して６５，５３６個の候補画素ブロックのサブセットに対する探索を制限することにより、計算上より効率的だろう。そのような場合、平均的な画素プロパティ値は、６５，５３６個の候補画素ブロック毎に事前に算出されるのが好ましい。圧縮中、圧縮される画素ブロックにおける画素の平均的なプロパティ値が算出される。その後、探索は、算出された平均値から非常に異なる事前に算出された平均値、すなわち既定の閾値以上異なる事前に算出された平均値をそれぞれ有するこれらの候補画素ブロックを除去することにより、この算出された平均値を使用して制限される。
【００８８】
図６は、図５のプロパティ値を規定するステップの一実施形態を示すフローチャートである。方法は、ステップＳ５０から開始する。このステップＳ５０は、画素ブロックにおける画素プロパティ値のうちの少なくとも一部に基づいてベースプロパティ値を判定する。次のステップＳ５１は、好ましくは複数のそのような種々の修飾子セットを含む表又はコードブックから複数の値修飾子の修飾子セットを選択する。これらの値修飾子は、ベースプロパティ値を修飾して複数の画素プロパティ値のプロパティ値セットを取得するために伸張の間使用される。その後、図５のステップＳ４１に進む。
【００８９】
本実施形態において、画素ブロックの圧縮された表現は、ベースプロパティ値の表現、すなわちベースコードワード及び修飾子セットの表現、すなわち修飾子コードワードを含む。
【００９０】
プロパティ値セットが代わりに図１９において示されたように規定される場合、圧縮ブロックは、プロパティ値セットの残りの値を補間するために使用された２つの画素プロパティ値の表現としてセットコードワードを含むのが好ましい。
【００９１】
図７は、圧縮方法のオプションの更なるステップを示すフローチャートである。方法は図５のステップＳ４０から継続する。次のステップＳ６０は、画素ブロックにおける第１の参照画素及び対応する第２の参照画素を識別する。ステップＳ６１は、これらの２つの参照画素間の線を規定する。そのような場合、図５のステップＳ４１において判定された参照点は、第１の参照画素及び第２の参照画素、並びに既定の線上に置かれている画素ブロックにおけるあらゆる中間画素の位置として判定される。
【００９２】
圧縮中、プロパティ値セットから取得した画素ブロックで元の画素ブロックを表現する場合の誤差を最小限にするか又はある形態で部分最適化するプロパティ値セット及び参照点、並びに参照点により規定されたようなカウント値からの画素インデックスの分配が判定される。
【００９３】
［伸張器］
図８は、一実施形態に係る伸張器又は復号化器２００を示す概略図である。復号化器２００は、複数の画素プロパティ値、好ましくは複数のプロパティ値のプロパティ値セットを規定するための数値デファイナ(value definer)２１０を備える。これらの複数のプロパティ値は、上述されたセットコードワード等の圧縮画素ブロックに含まれた情報に基づいて規定されるのが好ましい。
【００９４】
参照識別器２２０は、圧縮画素ブロックに含まれた基準コードワードに基づいて画素ブロックに対する少なくとも１つの参照点を識別するために使用される。
【００９５】
復号化器２００は、画素ブロックにおいて伸張される画素毎に数値デファイナ２１０により規定された複数のプロパティ値から画素プロパティ値を選択する値選択器２３０を更に備える。更に値選択器２３０は、参照識別器２２０により提供された少なくとも１つの参照点に対する画素ブロックにおける画素の位置に基づいてこのような値の選択を実行する。その後、選択されたプロパティ値は、値割当器２４０により画素に割り当てられ、画素の元の画素プロパティ値の伸張された表現として使用される。
【００９６】
復号化器２００の装置２１０〜２４０は、ソフトウェア、ハードウェア又はそれらの組合せとして提供されてもよい。特にソフトウェアの実現例において、復号化器２００は、例えばコンピュータ、ラップトップコンピュータ、移動電話又は別の移動処理装置、ゲーム機等のテクスチャ処理端末のＧＰＵ上に配置されてもよい。
【００９７】
図９は、数値デファイナ２１０の一実施形態を示す概略ブロック図である。この場合、圧縮画素ブロックは、ベースコードワード及び修飾子コードワードを更に含むセットコードを含む。値供給器２１２は、ベースコードワードに基づいて伸張される現在の画素ブロックにベースプロパティ値を供給する。このような供給は、ベースコードワードをベースプロパティ値に逆量子化することにより実行されるのが好ましい。
【００９８】
数値デファイナ２１０の修飾子供給器２１４は、修飾子コードワードに基づいて複数の値修飾子の修飾子セットを供給する。供給器２１４は、複数の修飾子セットを含む表からこの修飾子セットを供給するのが好ましい。値算出器２１６は、プロパティ値セットを取得するために、修飾子供給２１４からの値修飾子で値供給器２１２からのベースプロパティ値を修飾する。
【００９９】
数値デファイナ２１０の装置２１２〜２１６は、ソフトウェア、ハードウェア又はそれらの組合せとして提供されてもよい。装置２１２〜２１６は、数値デファイナ２１０において共に実現されてもよい。あるいは、いくつかの装置が復号化器の他の場所に提供される分散型実現例も可能である。
【０１００】
図１０は、復号化器における参照識別器２２０の一実施形態を示す概略ブロック図である。識別器２２０は、基準コードワードに基づいて画素ブロックにおける第１の参照画素及び第２の参照画素を識別するための画素識別器２２２を備える。次に線デファイナ２２４は、これらの参照画素間に延在する画素ブロックにおける線を実質的に規定する。参照点は、２つの参照画素及び線上に置かれているブロックにおけるあらゆる中間画素として規定される。
【０１０１】
参照識別器２２０の装置２２２及び２２４は、ソフトウェア、ハードウェア又はそれらの組合せとして提供されてもよい。装置２２２及び２２４は、参照識別器２２０において共に実現されてもよい。あるいは、いくつかの装置が復号化器の他の場所に提供される分散型実現例も可能である。
【０１０２】
図１１は、復号化器の値選択器２３０の一実施形態を示す概略ブロック図である。選択器２３０は、参照点であると仮定され且つ例えば対角線上に、垂直に又は水平に現在の画素に隣接する画素ブロックにおける隣接画素数をカウントするための画素カウンタ２３２を備える。このカウント数又はカウント値は、画素ブロックに対して使用可能な画素プロパティ値のうちの１つを選択するために選択器２３４により使用される画素に対する画素インデックスを判定するために使用される。
【０１０３】
値選択器２３０の装置２３２及び２３４は、ソフトウェア、ハードウェア又はそれらの組合せとして提供されてもよい。装置２３２及び２３４は、値選択器２３０において共に実現されてもよい。あるいは、いくつかの装置が復号化器の他の場所に提供される分散型実現例も可能である。
【０１０４】
［圧縮器］
図１２は、圧縮器又は符号化器１００の一実施形態を示す概略ブロック図である。圧縮器１００は、現在の画素ブロックに対して使用可能な複数の画素プロパティ値を規定するための数値デファイナ１１０を備える。参照点判定器１２０は、圧縮される現在の画素ブロックにおける画素の画素プロパティ値のうちの少なくとも一部に基づいて画素ブロックに対する少なくとも１つの参照点を判定する。画素ブロックの圧縮された表現は、少なくとも１つの参照点の表現及び好ましくは規定された複数のプロパティ値の表現に基づいて表現生成器１３０により生成される。
【０１０５】
圧縮器１００の装置１１０〜１３０は、ソフトウェア、ハードウェア又はそれらの組合せとして提供されてもよい。圧縮器１００は、例えばコンピュータ、ラップトップコンピュータ、移動電話及び他の移動処理装置、ゲーム機等のテクスチャ処理端末のＣＰＵ上に配置されてもよい。
【０１０６】
図１３は、数値デファイナ１１０の一実施形態を示す概略ブロック図である。デファイナ１１０は、画素ブロックにおける画素プロパティ値のうちの少なくとも一部に基づいてベースプロパティ値を判定するための値判定器を備える。修飾子セット選択器１１４は、画素ブロックにおける画素プロパティ値に基づいて複数の値修飾子を含む修飾子セットを選択する。この修飾子セットは、複数のそのような修飾子セットを含む表から選択されるのが好ましい。
【０１０７】
そのような場合、圧縮画素ブロックは、ベースプロパティ値の表現としてベースコードワードを含み、且つ修飾子セットの表現として修飾子コードワードを含む。
【０１０８】
数値デファイナ１１０の装置１１２及び１１４は、ソフトウェア、ハードウェア又はそれらの組合せとして提供されてもよい。装置１１２及び１１４は、数値デファイナ１１０において共に実現されてもよい。あるいは、いくつかの装置が圧縮器の他の場所に提供される分散型実現例も可能である。
【０１０９】
図１４は、圧縮器の参照点判定器１２０の一実施形態を示す概略ブロック図である。画素識別器１２２は、画素ブロックにおいて複数の画素の中から第１の参照画素及び第２の参照画素を識別する。識別器１２２は、画素ブロックにおける元のプロパティ値のうちの少なくともいくつかに基づいてこのような選択を実行するのが好ましい。
【０１１０】
判定器１２４は、２つの参照画素の位置である参照点及び２つの参照画素を相互接続する線上に置かれているブロックにおけるあらゆる中間画素を判定する。
【０１１１】
参照点判定器１２０の装置１２２及び１２４は、ソフトウェア、ハードウェア又はそれらの組合せとして提供されてもよい。装置１２２及び１２４は、参照点判定器１２０において共に実現されてもよい。あるいは、いくつかの装置が、圧縮器の他の場所に提供される分散型実現例も可能である。
【０１１２】
アルファチャンネルがより少ないビットを必要とし、他の領域における視覚品質又はシステムの性能及びエネルギー消費量を向上するために利用されるという点で、本発明の方式はＤＸＴＣ［１］より有利である。
【０１１３】
アルファチャンネルをより効率的に圧縮することにより、アルファチャンネルに対する品質が低下する。本明細書における重要な問題は、このサイズの減少に付随する品質の低下が許容可能かどうかである。これは、Ｂｅｔｈｅｓｄａ  Ｓｏｆｔｗｏｒｋｓによる２００６  ｃｏｍｐｕｔｅｒ  ｇａｍｅ  Ｏｂｌｉｖｉｏｎにおいて種々の目的で使用されたアルファチャンネルを圧縮することにより検査されている。
【０１１４】
この特定の応用例の場合、アルファチャンネルにおける画像品質の著しい劣化はそれから生成された最後にレンダリングされた画像において殆ど目立たないと考えられ、これは多くの他の応用例に対しても当てはまると考えられる。
【０１１５】
実施形態に従って実行された圧縮が実際に有効な圧縮であり且つ単なる不作為な情報の除去ではないかどうかを調査するために、比較検査が実施された。この検査において、本発明の方式で達成されたＰＳＮＲのスコアは、ｘ次元及びｙ次元の双方で画像を半分のサイズに縮小し、ＤＸＴＣを使用してそれを１画素当たり４ビットに圧縮し且つ伸張後に元の分解能に拡大することにより容易に達成できるものと比較された。
【０１１６】
検査は、本発明の方式が一連の検査画像より平均で約２〜３ｄＢだけ良いＰＳＮＲスコアを達成することを示しており、本発明の方式が実際に圧縮に対して有用な方式であることを示す。
【０１１７】
添付の請求の範囲により規定される本発明の範囲から逸脱せずに、種々の変形及び変更が本発明に対して行なわれてもよいことが当業者には理解されるだろう。
【０１１８】
［参考文献］
［１］米国特許第５，９５６，４３１号公報
【図１】
0005228111.tif 000004
【図２】
0005228111.tif 000005
【図３】
0005228111.tif 000006
【図４】
0005228111.tif 000007
【図５】
0005228111.tif 000008
【図６】
0005228111.tif 000009
【図７】
0005228111.tif 000010
【図８】
0005228111.tif 000011
【図９】
0005228111.tif 000012
【図１０】
0005228111.tif 000013
【図１１】
0005228111.tif 000014
【図１２】
0005228111.tif 000015
【図１３】
0005228111.tif 000016
【図１４】
0005228111.tif 000017
【図１５】
0005228111.tif 000018
【図１６】
0005228111.tif 000019
【図１７】
0005228111.tif 000020
【図１８】
0005228111.tif 000021
【図１９】
0005228111.tif 000022
【図２０】
0005228111.tif 000023