(57)【要約】  本発明は、奥行き値の画素ブロック（３００）の圧縮に関する。基準コードワード（４１０）は、基準奥行き値の表現として判定される。行傾きコードワード（４２０）及び列傾きコードワード（４３０）は、ブロック（３００）の行（３１０）及び列（３２０）に対する基本奥行き傾きの表現としてそれぞれ判定される。行（３１０）又は列（３２０）の少なくとも一部分に沿って傾きが変化する画素位置を示す表現は、行（３１０）又は列（３２０）の少なくとも部分集合に対して判定される。モードコードワード（４４０）は、複数の傾き補正パターンの集合の表現として判定される。各パターンコードワード（４５０）は、傾き補正パターンのうちの１つの識別子として行（３１０）又は列（３２０）に対して選択される。
2010541094.tif 000002
【特許請求の範囲】
【請求項１】
関連する画素パラメータ値を有する画素のブロックを圧縮する方法であって：
- 基準画素パラメータ値の表現として基準コードワードを判定するステップと；
- 前記ブロックの行に対する基本パラメータ傾きの表現として行傾きコードワードを判定するステップと；
- 前記ブロックの列に対する基本パラメータ傾きの表現として列傾きコードワードを判定するステップと；
- 前記ブロックの行又は列に対して、前記行又は前記列の前記画素パラメータ値の少なくとも一部分に基づいて、前記行又は前記列の前記少なくとも一部分に沿って傾きが変化する画素位置を示す表現を生成するステップと；
- 前記ブロックの前記行又は前記列の少なくとも一部分に対して前記生成ステップを繰り返すステップと；
- 各々が行又は列に沿って適用可能な位置に依存する傾き修正子を示す特定の事前定義済み表現である複数の傾き補正パターンの集合の表現としてモードコードワードを判定するステップと；
- 前記ブロックの前記少なくとも１つの行又は列に対して、前記行又は前記列に対して生成された前記位置指示表現に基づいて、前記集合の傾き補正パターンの表現としてパターンコードワードを判定するステップと
を有することを特徴とする方法。
【請求項２】
前記モードコードワード判定ステップは、前記生成した位置指示表現に少なくとも部分的に基づいて実行されることを特徴とする請求項１に記載の方法。
【請求項３】
前記生成ステップは：
- オプションとして前記行又は前記列の前記パラメータ値を量子化するステップと；
- 前記行又は前記列の前記少なくとも一部分の画素毎に、前記行又は前記列の先行画素の量子化パラメータ値又は前記基準パラメータ値、並びに前記行又は前記列に対する前記基準パラメータ傾きを前記画素の量子化パラメータ値から減算するステップとを有することを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記モードコードワード判定ステップは：
- 各々が複数の傾き補正パターンを含む複数の事前定義済み集合から１つの集合を選択するステップと；
- 前記選択した集合に基づいて前記モードコードワードを判定するステップとを有することを特徴とする請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
前記行傾きコードワードは、前記ブロックの前記行に対する前記パラメータ傾きの整数部の表現であり、前記列傾きコードワードは、前記ブロックの前記列に対する前記パラメータ傾きの整数部の表現であり、前記複数の事前定義済み集合の各集合は、前記ブロックの前記行又は前記列に対する前記パラメータ傾きの小数部の範囲と関連付けられることを特徴とする請求項１乃至４のいずれか１項に記載の方法。
【請求項６】
前記生成ステップは：
- 前記行又は前記列に対して、前記行又は前記列の前記画素パラメータ値の第１の部分に基づいて、前記行又は前記列の前記第１の部分に沿って傾きが変化する画素位置を示す第１の表現を生成するステップと；
- 前記行又は前記列に対して、前記行又は前記列の前記画素パラメータ値の第２の部分に基づいて、前記行又は前記列の前記第２の部分に沿って傾きが変化する画素位置を示す第２の表現を生成するステップとを有することを特徴とする請求項１乃至５のいずれか１項に記載の方法。
【請求項７】
前記モードコードワード判定ステップは、前記生成された第１の位置指示表現及び前記生成された第２の位置指示表現に基づいて複数の傾き補正パターンの集合の表現としてモードコードワードを判定するステップを有することを特徴とする請求項６に記載の方法。
【請求項８】
前記パターンコードワード判定ステップは：
- 前記ブロックの少なくとも１つの行又は列に対して、前記行又は前記列に対して生成された前記第１の位置指示表現に基づいて前記集合の第１の傾き補正パターンの表現として第１のパターンコードワードを判定するステップと；
- 前記ブロックの前記少なくとも１つの行又は列に対して、前記行又は前記列に対して生成された前記第２の位置指示表現に基づいて前記集合の第２の傾き補正パターンの表現として第２のパターンコードワードを判定するステップとを有することを特徴とする請求項６又は７に記載の方法。
【請求項９】
前記モードコードワード判定ステップは：
- 前記生成された第１の位置指示表現に基づいて、複数の傾き補正パターンの第１の集合の表現として第１のモードコードワードを判定するステップと；
- 前記生成された第２の位置指示表現に基づいて、複数の傾き補正パターンの第２の集合の表現として第２のモードコードワードを判定するステップとを有することを特徴とする請求項６に記載の方法。
【請求項１０】
前記パターンコードワード判定ステップは：
- 前記ブロックの少なくとも１つの行又は列に対して、前記行又は前記列に対して生成された前記第１の位置指示表現に基づいて、前記第１の集合の第１の傾き補正パターンの表現として第１のパターンコードワードを判定するステップと；
- 前記ブロックの少なくとも１つの行又は列に対して、前記行又は前記列に対して生成された前記第２の位置指示表現に基づいて、前記第２の集合の第２の傾き補正パターンの表現として第２のパターンコードワードを判定するステップとを有することを特徴とする請求項９に記載の方法。
【請求項１１】
圧縮画素ブロックの画素を伸張する方法であって：
- 前記圧縮画素ブロックの基準コードワードに基づいて基準画素パラメータ値を生成するステップと；
- 前記圧縮画素ブロックの傾きコードワードに基づいて基本パラメータ傾きを生成するステップと；
- 前記圧縮画素ブロックのモードコードワードに基づいて、各々が行又は列に沿って適用可能な位置に依存する傾き修正子を示す特定の事前定義済み表現である複数の傾き補正パターンの集合を提供するステップと；
- 前記画素と関連付けられ且つ前記圧縮画素ブロックに含まれるパターンコードワードに基づいて、前記提供された集合から傾き補正パターンを選択するステップと；
- 前記基準画素パラメータ値、前記基本パラメータ傾き及び前記選択された傾き補正パターンに基づいて前記画素の画素パラメータ値を判定するステップとを有することを特徴とする方法。
【請求項１２】
前記判定ステップは、前記基本パラメータ傾き、前記傾き補正パターンから選択された傾き修正子を前記行又は前記列の先の画素に対して判定された画素パラメータ値に、あるいは前記基準画素パラメータ値に加算するステップを有することを特徴とする請求項１１に記載の方法。
【請求項１３】
前記行又は前記列の前記画素の位置に基づいて前記傾き修正子を選択するステップを更に有することを特徴とする請求項１２に記載の方法。
【請求項１４】
前記生成ステップは：
- 前記圧縮画素ブロックの行傾きコードワードに基づいて前記画素ブロックの行に対して基本パラメータ傾きを生成するステップと；
- 前記圧縮画素ブロックの列傾きコードワードに基づいて前記画素ブロックの列に対して基本パラメータ傾きを生成するステップとを有することを特徴とする請求項１１乃至１３のいずれか１項に記載の方法。
【請求項１５】
前記画素パラメータ値判定ステップは、前記基準画素パラメータ値、前記行に対する前記基本パラメータ傾き、前記列に対する前記基本パラメータ傾き、前記選択された傾き補正パターン及び前記圧縮画素ブロックの少なくとも１つの傾き変更子に基づいて前記画素パラメータ値を判定するステップを有することを特徴とする請求項１４に記載の方法。
【請求項１６】
前記判定ステップは：
- 中間値を形成するために、前記列に対する前記基本パラメータ傾き及び前記少なくとも１つの傾き変更子を前記列の先の画素に対して判定された画素パラメータ値に加算するステップと；
- 前記行に対する前記基本パラメータ傾き及び前記傾き補正パターンから選択された傾き修正子を前記行の先の画素に対して判定された画素パラメータ値又は前記中間値に加算するステップとを有することを特徴とする請求項１５に記載の方法。
【請求項１７】
前記判定ステップは：
- 中間値を形成するために、前記行に対する前記基本パラメータ傾き及び前記少なくとも１つの傾き変更子を前記行の先の画素に対して判定された画素パラメータ値に加算するステップと；
- 前記列に対する前記基本パラメータ傾き及び前記傾き補正パターンから選択された傾き修正子を前記列の先の画素に対して判定された画素パラメータ値又は前記中間値に加算するステップとを有することを特徴とする請求項１５に記載の方法。
【請求項１８】
前記提供ステップは、前記モードコードワードに基づいて複数の事前定義済み集合の集合体から前記集合を提供するステップを有することを特徴とする請求項１１乃至１７のいずれか１項に記載の方法。
【請求項１９】
関連する画素パラメータ値を有する画素のブロックを圧縮する圧縮器であって：
- 基準画素パラメータ値の表現として基準コードワードを判定する基準量子化器と；
- 前記ブロックの行に対する基本パラメータ傾きの表現として行傾きコードワードを判定する行傾き量子化器と；
- 前記ブロックの列に対する基本パラメータ傾きの表現として列傾きコードワードを判定する列傾き量子化器と；
- 前記ブロックの少なくとも一部分の行又は列毎に、前記行又は前記列の前記画素パラメータ値の少なくとも一部分に基づいて、前記行又は前記列の前記少なくとも一部分に沿って傾きが変化する場所を示す表現を生成する表現生成器と；
- 各々が行又は列に沿って適用可能な位置に依存する傾き修正子を示す特定の事前定義済み表現である複数の傾き補正パターンの集合の表現としてモードコードワードを判定するモード選択器と；
- 前記ブロックの前記少なくとも１つの行又は列に対して、前記行又は前記列に対して生成された前記位置指示表現に基づいて、前記集合の傾き補正パターンの表現としてパターンコードワードを判定するパターン選択器とを備えることを特徴とする圧縮器。
【請求項２０】
前記モード選択器は、前記生成された位置指示表現に少なくとも部分的に基づいて前記モードコードワードを判定するように構成されることを特徴とする請求項１９に記載の圧縮器。
【請求項２１】
- 前記行又は前記列の前記パラメータ値を量子化する値量子化器と；
- 前記行又は前記列の前記少なくとも一部分の画素毎に、前記行又は前記列の先行画素の量子化パラメータ値又は前記基準パラメータ値、並びに前記行又は前記列に対する前記基本パラメータ傾きを前記画素の前記量子化パラメータ値から減算する計算器とを更に備えることを特徴とする請求項１９又は２０に記載の圧縮器。
【請求項２２】
前記表現生成器は、ｉ）前記行又は前記列に対して、前記行又は前記列の前記画素パラメータ値の第１の部分に基づいて、前記行又は前記列の前記第１の部分に沿って傾きが変化する画素位置を示す第１の表現を生成し、ｉｉ）前記行又は前記列に対して、前記行又は行列の前記画素パラメータ値の第２の部分に基づいて、前記行又は前記列の前記第２の部分に沿って傾きが変化する画素位置を示す第２の表現を生成するように構成されることを特徴とする請求項１９乃至２１のいずれか１項に記載の圧縮器。
【請求項２３】
前記モード選択器は、前記生成された第１の位置指示表現及び前記生成された第２の位置指示表現に基づいて、複数の傾き補正パターンの集合の表現としてモードコードワードを判定するように構成されることを特徴とする請求項２２に記載の圧縮器。
【請求項２４】
前記パターン選択器は、ｉ）前記ブロックの少なくとも１つの行又は列に対して、前記行又は前記列に対して生成された前記第１の位置指示表現に基づいて、前記集合の第１の傾き補正パターンの表現として第１のパターンコードワードを判定し、ｉｉ）前記ブロックの前記少なくとも１つの行又は列に対して、前記行又は前記列に対して生成された前記第２の位置指示表現に基づいて、前記集合の第２の傾き補正パターンの表現として第２のパターンコードワードを判定するように構成されることを特徴とする請求項２２又は２３に記載の圧縮器。
【請求項２５】
前記モード選択器は、ｉ）前記生成された第１の位置指示表現に基づいて、第１の複数の傾き補正パターンの集合の表現として第１のモードコードワードを判定し、ｉｉ）前記生成された第２の位置指示表現に基づいて、第２の複数の傾き補正パターンの集合の表現として第２のモードコードワードを判定するように構成されることを特徴とする請求項２４に記載の圧縮器。
【請求項２６】
前記パターン選択器は、ｉ）前記ブロックの少なくとも１つの行又は列に対して、前記行又は前記列に対して生成された前記第１の位置指示表現に基づいて、前記第１の集合の第１の傾き補正パターンの表現として第１のパターンコードワードを判定し、ｉｉ）前記ブロックの前記少なくとも１つの行又は列に対して、前記行又は前記列に対して生成された前記第２の位置指示表現に基づいて、前記第２の集合の第２の傾き補正パターンの表現として第２のパターンコードワードを判定するように構成されることを特徴とする請求項２５に記載の圧縮器。
【請求項２７】
圧縮画素ブロックの画素を伸張する伸張器であって：
- 前記圧縮画素ブロックの基準コードワードに基づいて基準画素パラメータ値を生成する基準生成器と；
- 前記圧縮画素ブロックの傾きコードワードに基づいて基本パラメータ傾きを生成する傾き生成器と；
- 前記圧縮画素ブロックのモードコードワードに基づいて、各々が行又は列に沿って適用可能な位置に依存する傾き修正子を示す特定の事前定義済み表現である複数の傾き補正パターンの集合を提供する集合提供器と；
- 前記画素と関連付けられ且つ前記圧縮画素ブロックに含まれるパターンコードワードに基づいて、前記提供された集合から傾き補正パターンを選択するパターン選択器と；
- 前記基準画素パラメータ値、前記基本パラメータ傾き及び前記選択された傾き補正パターンに基づいて前記画素の画素パラメータ値を判定する値判定器とを備えることを特徴とする伸張器。
【請求項２８】
前記値判定器は、前記基本パラメータ傾き、前記傾き補正パターンから選択された傾き修正子を前記行又は前記列の先の画素に対して判定された画素パラメータ値に、あるいは前記基準画素パラメータ値に加算するように構成されることを特徴とする請求項２７に記載の伸張器。
【請求項２９】
前記行又は前記列の前記画素の位置に基づいて前記傾き修正子を選択する変更子選択器を更に具備することを特徴とする請求項２８に記載の伸張器。
【請求項３０】
前記傾き生成器は、ｉ）前記圧縮画素ブロックの行傾きコードワードに基づいて、前記画素ブロックの前記行に対する基本パラメータ傾きを生成し、ｉｉ）前記圧縮画素ブロックの列傾きコードワードに基づいて、前記画素ブロックの前記列に対する基本パラメータ傾きを生成するように構成されることを特徴とする請求項２７又は２８に記載の伸張器。
【請求項３１】
前記値判定器は、前記基準画素パラメータ値、前記行に対する前記基本パラメータ傾き、前記列に対する前記基本パラメータ傾き、前記選択された傾き補正パターン及び前記圧縮画素ブロックの少なくとも１つの傾き変更子に基づいて前記画素パラメータ値を判定するように構成されることを特徴とする請求項３０に記載の伸張器。
【請求項３２】
関連する画素パラメータ値を有するＭ×Ｎ画素のブロックを圧縮する方法であって：
- 基準画素パラメータ値の表現として基準コードワードを判定するステップと；
- 前記ブロックの行に対する基本パラメータ傾きの表現として行傾きコードワードを判定するステップと；
- 前記ブロックの列に対する基本パラメータ傾きの表現として列傾きコードワードを判定するステップと；
- 前記行に対する前記基本パラメータ傾き及び前記列に対する前記基本パラメータ傾きの少なくとも一方に適用可能である複数の傾き変更子の表現としてＭ×Ｎ−１ビットより少ないビットを含む変更子コードワードを判定するステップと
を有することを特徴とする方法。
【請求項３３】
関連する画素パラメータ値を有する画素のブロックの信号表現であって：
- 基準画素パラメータ値の表現である基準コードワードと；
- 前記ブロックの行に対する基本パラメータ傾きの表現である行傾きコードワードと；
- 前記ブロックの列に対する基本パラメータ傾きの表現である列傾きコードワードと；
- 各々が行又は列に沿って適用可能な位置に依存する傾き修正子を示す特定の事前定義済み表現である複数の傾き補正パターンの集合の表現であるモードコードワードと；
- 前記集合の傾き補正パターンの表現である前記ブロックの行又は列毎のパターンコードワードとを有することを特徴とする信号表現。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、画素パラメータ値の可逆圧縮及び伸張に関し、特に、デプスバッファ圧縮及び伸張に適切な圧縮及び伸張に関する。
【背景技術】
【０００２】
３次元図形のリアルタイムレンダリングは、ゲーム、マンマシンインタフェース、メッセージング及びｍコマースを含む複数の魅力的なアプリケーションを移動端末上に有する。３次元レンダリングは計算コストの高いタスクであるため、多くの場合、十分な性能を達成するために専用のハードウェアが構築される必要がある。従って、そのハードウェアアーキテクチャの複雑さを軽減し且つ帯域幅の使用量を低減する革新的な方法が非常に重要である。特に移動端末にとって主に障害となるのは、メモリ帯域幅である。メモリ帯域幅の使用量を低減する一般的な技術は、デプスバッファ圧縮(depth buffer compression)である。
【０００３】
一般に三角形等のプリミティブは、ソートされていない順序で描かれる。眼に最近接する三角形のみが書かれることを保証するために、一般にデプスバッファが使用される。デプスバッファは、画素毎にその特定の画素に対する奥行き、すなわち眼までの距離を保持する。新しい画素を書き込む前に、まず対応する奥行きがデプスバッファから読み出される。新しい奥行きが先に書かれた奥行きより小さい場合にのみ、新しい画素は書き込まれる。新しい奥行き値は、デプスバッファに書き込まれる必要がある。この奥行き値の読み出し及び書き込みにより、多くのメモリアクセスが発生し、性能が制限される。
【０００４】
デプスバッファ圧縮は、デプスバッファをタイル又は画素ブロックに分割し且つ圧縮形式でタイルを格納することにより動作する。デプスバッファ値を読み出す時、奥行きタイル全体が読み出され且つ伸張される。奥行き値は変更され、タイルをメモリに再度書き込む前にタイルは圧縮される。一般にタイル毎に展開されるため、画素毎に読み出し且つ書き込むのではなく、タイル全体を１度に読み出し且つ書き込むことは問題にならないことが多い。
【０００５】
この伸張及び圧縮が特定のタイルに対して数回行なわれてもよいため、圧縮は可逆的、すなわち非破壊的であるのが重要である。
【０００６】
デプスバッファは各画素の奥行きを含み、シーンが平面三角形から構成されるため、特定の三角形から生じるタイルの全ての画素は同一直線上にある。特に、タイルの全ての画素が同一の三角形から得られる場合、タイルの全ての画素は同一直線上にある。そのような場合、個々の画素の奥行きを格納するのではなく単に当該三角形の平面の式を格納することによりタイルの可逆的表現を取得できる。このように、多くのデプスバッファアルゴリズムが動作する。Hasselgren及びAkenine-Mollerは、文献［１］において周知のデプスバッファ圧縮方式の広範な論文を提供する。
【０００７】
Hasselgren及びAkenine-Mollerは、文献［１］において、差分差分パルス符号変調（ＤＤＰＣＭ）を使用する従来の方式の改善例を更に提示する。主な寄与は、補正値{-1, 0, 1}を使用する代わりに画素毎に１ビットのみで実行できることである。これにより、ｘ方向の傾きが２つの値を交互にとるため、常に小さい方の傾きを使用でき、画素毎に傾きに対して１ビットの補正値を使用できることが分かる。
【０００８】
補正値が{-1, 0, 1}のうちの１つであり、符号化するために画素毎に２つのビットを使用する先のＤＤＰＣＭ方式と比較して、Hasselgren及びAkenine-Mollerは画素毎に１ビットの補正値を使用し、画素毎に１ビット節約する。換言すると、４×４画素のタイルにおいて１３ビット節約されるか、あるいは８×８のタイルに対しては６１ビット節約される。しかし、このようにビットが節約されても、Hasselgren及びAkenine-Mollerは可逆的方法で可能な奥行き範囲の約９３％しか圧縮できない。物体がカメラ又は閲覧者に近づきすぎる場合、デプスバッファ圧縮アルゴリズムは失敗し、奥行きタイルは圧縮されずに格納される必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従って、可逆的に圧縮されるタイル数を増加できるように、更に効率的な方法で圧縮タイルのビットを利用できる必要性がある。これにより、メモリ帯域幅は低減される。
【００１０】
本発明は、従来技術の構成の上記欠点及び他の欠点を克服する。
【００１１】
本発明の一般的な目的は、画素ブロックの効率的な圧縮及び伸張を提供することである。
【００１２】
本発明の別の目的は、デプスバッファ値に適応された圧縮及び伸張を提供することである。
【課題を解決するための手段】
【００１３】
これらの目的及び他の目的は、添付の請求の範囲により規定される本発明により満たされる。
【００１４】
簡単に説明すると、本発明は、デプスバッファ値等の関連する画素パラメータ値を有する画素のブロックの圧縮及び伸張を含む。圧縮は、ブロックに対する基準画素パラメータの表現として基準コードワードを判定することを含む。行傾きコードワードは、ブロック中の行に対する基本パラメータ傾きの表現として判定される。それに応じて、圧縮は、列に対する基本パラメータ傾きの表現として列傾きコードワードを判定することを含む。
【００１５】
少なくとも行／列の一部分に沿って傾きが変化する画素位置を示す表現は、少なくとも行／列の画素パラメータ値の一部分に基づいて判定される。そのような表現は、ブロック中の複数の行／列に対して、好ましくは全ての行／列に対して生成される。複数の傾き補正パターンの集合の表現であるモードコードワードが判定される。そのような補正パターンの各々は、行／列に沿って適用可能な位置に依存する傾き修正子を示す特定の事前定義済み表現である。各パターンコードワードは、生成された位置指示表現に基づいて行／列に対して選択される。パターンコードワードは、モードコードワードにより規定されるパターン集合からの傾き補正パターンの表現である。
【００１６】
圧縮ブロックの伸張時、基準画素パラメータ値は、圧縮ブロックの基準コードワードに基づいて判定される。行及び／又は列パラメータ傾き等の基本パラメータ傾きは、（行／及び／又は列）傾きコードワードに基づいて生成される。圧縮ブロックのモードコードワードは、複数の傾き補正パターンを含むパターン集合を提供するために採用される。復号化される画素を含む行／列は、関連するパターンコードワードを有する。このパターンコードワードは、提供されたパターン集合の傾き補正パターンのうちの１つを識別するために使用される。画素の画素パラメータ値は、基準パラメータ値、基本パラメータ傾き及び傾き補正パターンを使用して計算される。
【００１７】
更に本発明は、画素ブロックを圧縮する圧縮器、圧縮ブロックを伸張する伸張器及び圧縮画素ブロックの信号表現に関する。
【００１８】
本発明は、添付の図面と共に以下の説明を参照することにより、本発明の更なる目的及び利点と共に最もよく理解されるだろう。
【図面の簡単な説明】
【００１９】
【図１】図１は、本発明の一実施形態に係る圧縮方法を示すフローチャートである。
【図２Ａ−Ｂ】図２Ａ及び図２Ｂは、行毎又は列毎の圧縮において本発明に従って使用される画素ブロックを示す図である。
【図３】図３は、本発明の一実施形態に係る画素ブロックの圧縮表現を示す概略図である。
【図４】図４は、図１の生成ステップの一実施形態を更に詳細に示すフローチャートである。
【図５Ａ−Ｃ】図５Ａ〜図５Ｃは、本発明の圧縮方法で分布表現を生成する一実施形態を概略的に示す図である。
【図６】図６は、本発明に従って使用される利用可能な事前定義済み分布パターンの集合を示す図である。
【図７Ａ】図７Ａは、本発明に従って使用される別の画素ブロックを示す図である。
【図７Ｂ】図７Ｂは、図７Ａに示す画素ブロックに対して本発明の圧縮方法で画素行を処理する一実施形態を概略的に示す図である。
【図８】図８は、２つの平面を含む画素ブロックを示す図である。
【図９】図９は、本発明に従って使用される他の利用可能な事前定義済み分布パターンの集合を示す図である。
【図１０】図１０は、本発明に従って使用される更なる利用可能な事前定義済み分布パターンの集合を示す図である。
【図１１Ａ】、
【図１１Ｂ】、
【図１１Ｃ】図１１Ａ〜図１１Ｃは、本発明に従って使用される更に他の利用可能な事前定義済み分布パターンの集合を示す図である。
【図１２Ａ−Ｅ】図１２Ａ〜図１２Ｅは、図１０に示す画素ブロックに対して本発明の圧縮方法で画素行を処理する実施形態を概略的に示す図である。
【図１３】図１３は、本発明の一実施形態に係る伸張方法を示すフローチャートである。
【図１４】図１４は、本発明の教示が適用されるデプスバッファアーキテクチャを示す概略ブロック図である。
【図１５】図１５は、本発明の一実施形態に係る圧縮器を示す概略ブロック図である。
【図１６】図１６は、本発明の一実施形態に係る圧縮器の表現生成器を示す概略ブロック図である。
【図１７】図１７は、本発明の一実施形態に係る伸張器を示す概略ブロック図である。
【図１８Ａ−Ｇ】、
【図１８Ｈ−Ｍ】図１８Ａ〜図１８Ｇは、８画素の行又は列の実現のために本発明に従って使用される可能な分布パターンの例を示す図である。
【発明を実施するための形態】
【００２０】
図中、同一の図中符号は対応する要素又は同様の要素に対して使用される。
【００２１】
本発明は、一般に、画素パラメータ値の可逆圧縮及び伸張に関し、特に、デプスバッファ圧縮及び伸張に適する圧縮及び伸張に関する。
【００２２】
本発明は、ゲーム、３次元（３Ｄ）地図及びシーン、例えば動画メッセージである３Ｄメッセージ、スクリーンセーバ、マンマシンインタフェース（ＭＭＩ）等の３Ｄ図形と共に使用するのに最適であるが、それらに限定されない。従って、本発明は、１次元（１Ｄ）、２次元（２Ｄ）又は３Ｄ画像等の他の種類の画像又は図形を符号化するためにも採用可能である。
【００２３】
本発明において、圧縮及び伸張は、一般に画素のタイル又はブロックの形式で複数の画素を一括処理する。本発明の好適な一実施形態において、画素ブロックは、Ｍ×Ｎ画素のサイズを有する。ここで、Ｍ、Ｎは整数であるが、Ｍ及びＮの双方が同時に１にならないという条件付きである。好ましくは、Ｍ=2m且つＮ=2nである。ｍ、ｎはゼロ又は整数であるが、ｍ及びｎが同時にゼロにならないという条件付きである。一般的な実現例において、Ｍ＝Ｎであり、そのような好ましいブロック実施形態は、４×４画素、８×８画素又は１６×１６画素である。
【００２４】
表現画素（expression pixel）又は「画像要素」は、ブロック中の要素又はブロックの符号化表現を示す。このブロックは、画像、テクスチャ又はバッファの一部分に対応する。従って、本発明によると、画像要素は、（１Ｄ、２Ｄ、３Ｄ）テクスチャのテクセル（テクスチャ要素）、（１Ｄ又は２Ｄ）画像の画素又は３Ｄ画像のボクセル（体素）であってもよい。一般に、画素は関連する画素パラメータ値又は特徴により特徴付けられる。本発明の好適な一実施形態において、画素パラメータ値は奥行き値又はいわゆるＺ値である。この特徴は、特定の画素に対する眼までの奥行き又は距離を表し、レンダリング中に実際に表示される画素を制御する。
【００２５】
本発明は、そのような画素ブロックの奥行き値を圧縮及び伸張するのに特に適切であるが、それに限定されず、他の種類の画素パラメータ値及び特徴と共に使用されてもよい。これらには、赤（Ｒ）色成分、緑（Ｇ）色成分又は青（Ｂ）色成分、あるいはＹＵＶ又はＹＣｒＣｂ等の他の色空間における色成分等の色成分値が含まれる。更なる例は、画素の透明度又はアルファ値を含む。
【００２６】
しかし、圧縮及び伸張は、同一直線上の画素パラメータ値、すなわち１つの平面に位置するパラメータを処理するように構成される。従って、圧縮されるブロックの全ての画素パラメータ値は、パラメータ空間の単一平面に位置するか、あるいは複数の平面の集合、一般に２つの平面の集合のうちの１つの平面に位置する。この必要条件は、元の画素パラメータ値のビット数より少ないビット数を使用して画素ブロックの可逆圧縮を達成できることを示す。
【００２７】
更に、以下において、「画像」という用語は、本発明により符号化及び復号化可能な任意の１Ｄ、２Ｄ又は３Ｄ画像又はテクスチャを示すために使用される。それらの画像又はテクスチャは、バンプマップ、法線マップ、写真、ゲーム形式のテクスチャ、テキスト、図面、ダイナミックレンジの広い画像及びテクスチャ等を含むがそれらに限定されない。
【００２８】
［圧縮］
図１は、本発明に従って画素のブロックを圧縮する方法を示すフローチャートである。方法は、基準画素パラメータ値の表現である基準コードワードを判定することによりステップＳ１で開始する。このコードワードは、圧縮されるブロックに存在する画素パラメータ値のうちの１つの表現であるのが好ましい。第１の実施形態において、基準コードワードは、パラメータ値の非量子化値であってもよい。例えば特定のパラメータ値が230=0000 0000 1110 0110bin（２４ビットの分解能を有する）であり、基準コードワードが同一のビット分解能を有する場合、値0000 0000 1110 0110binは基準コードワードとして直接使用される。しかし、他の実施形態において、元の画素パラメータ値は、基準コードワードにより表される値より高い精度を有してもよい。そのような場合、基準コードワードは、元の画素パラメータ値の量子化された値又は端数を丸めた値の表現であってもよい。例えば、0000 0000 1110 0110binの基準コードワードは、元の画素パラメータ値２２９．８の表現として使用されてもよい。また、基準コードワードは、元の画素パラメータ値より少ないビット数を含むことができる。例えば２１ビットのコードワードは、２４ビットの元の値を表すために使用されてもよく、その一方で先頭ビットが周知であることが仮定される。
【００２９】
Ｓ１のコードワード判定ステップは、ブロック中の選択された画素位置の画素の画素パラメータ値を検索することを含むのが好ましく、オプションとしてその検索された値からコードワードを計算（量子化）するか又は検索された値を基準コードワードとして直接使用する。選択された画素位置は、ブロック中の事前定義済み位置であるのが好ましく、これは、同一の画素位置が本発明に従って圧縮される全てのブロックに対してコードワード判定ステップＳ１で使用されることを意味する。好ましい位置は、ブロックの１つの隅に位置付けられる画素である。従来、当該技術におけるデプスバッファ値圧縮の場合、左上隅の画素が使用される。しかし、本発明は、その特定の画素位置に限定されず、任意の隅の画素又は実際にはブロック中の任意の画素を使用できるが、フレーム画素及び特に隅の画素が好ましい。図２Ａ及び図２Ｂは、符号化される画素３３０から成る４×４ブロック３００を示す。これらの図において、基準コードワードを判定する際に使用される画素位置は、黒丸で印を付けられる。すなわち、左上の隅の画素である。
【００３０】
次のステップＳ２は、ブロックの行に対する基本パラメータ傾きの表現としてブロックに対する行傾きコードワードを判定する。好適な実現例において、ブロック（の少なくとも一部分）の画素パラメータ値は同一直線上にあるため、少なくとも元の非量子化パラメータ値に対して同一の元の行傾きを有する。例えば画素行は、元の値[109.8, 112.6, 115.4, 118.2]を有することができる。本明細書において、傾きは行の隣接するパラメータ値の間の対毎の差分、すなわち118.2-115.4=115.4-112.6=112.6-109.8=2.8である。パラメータ値が同一直線上にある限り、ブロックの他の行に対しても同一の行傾きが有効である。
【００３１】
行傾きコードワードは、元の行傾きの整数部の表現、すなわち上記例においては２の表現であるのが好ましい。元の非量子化パラメータ値が圧縮において利用可能である場合、ステップＳ２のコードワード判定は、ブロックの任意の行の隣接する画素パラメータ値の任意の対の間の差分を計算できる。行傾きコードワードは、計算された傾き（差分）の整数部の表現として判定される。
【００３２】
パラメータ値が整数値に丸められるなど、量子化される場合、一般にステップＳ２において別の方法がとられる。上記で与えられたパラメータ値の端数を丸めた値は[110, 113, 115, 118]である。本明細書において、行の隣接する値の間の対毎の差分は値２又は３を与える。そのような場合、行傾きコードワードは、最小の傾き値の表現として一貫して判定されるか、あるいは最大の傾き値の表現として一貫して判定される。本明細書において重要なことは、最小又は最大の傾き値が符号化される全てのブロックに対して得られる必要があることである。計算された最小の傾き値は、行傾きコードワード判定ステップに対する基礎として一貫して使用されるのが好ましい。これは、負の傾きの場合にも当てはまる。例えば、元の値の場合に傾きは−１．６であり、丸めた値を使用する時は−１又は−２となる。そのような場合、最小の値−２が行傾きコードワード判定に対する基礎として使用されるのが好ましい。
【００３３】
次のステップＳ３は、ブロック中の列に対して類似する手順を実行する。その結果は、ブロックの列に対する基本パラメータ傾きの表現である列傾きコードワードである。このステップＳ３は、ステップＳ２と同様に実行されるが、ここでは列のパラメータ値が行のパラメータの代わりに使用される。
【００３４】
ステップＳ１〜Ｓ３は、任意の順序で又は実際には同時に実行可能である。
【００３５】
次に、画素ブロック３００の圧縮は、図２Ａに概略的に示されるように行３１０毎に実行されるか、あるいは図２Ｂに示されるように列３２０毎に実行される。品質の観点から、２つの可能性は同等である。以下において、主に行毎の圧縮に関連して本発明を説明する（図２Ａを参照）。しかし、本発明の教示は、列毎の圧縮にも適用可能である。後者の場合、以下の説明において、単純に「行」という表現が「列」で置換され、「列」という表現が「行」で置換される。
【００３６】
次のステップＳ４は、少なくとも現在の行（又は図２Ｂの場合は列）の一部分に沿って傾きが変化する画素位置を示す表現を生成する。このステップＳ４は、傾きがステップＳ２で判定された行傾きコードワードにより表されるブロックの基本行傾きと異なる画素位置を示すことにより実現される。従って、基本パラメータ傾き２を有する上記のような画素値[110, 113, 115, 118]の行を仮定する。隣接するパラメータ値の間の差分、すなわち傾きは、この例においては[-, 3, 2, 3]である。この場合、画素位置１及び３は、２とは異なる傾きを有するため、それらの２つの画素位置で傾きが変化する。しかし、画素位置２の傾きは基本行傾きと等しく、そこで傾きは変化しない。基本行傾き値が上記で一覧表示された傾き値から減算される場合、[-, 1, 0, 1]が得られる。その結果、傾きが現在の行に沿って変化する画素位置を示す表現は、1 0 1の形式であってもよい。ここで、1binは傾きの変化を信号で伝送し、0binは、その位置で隣接するパラメータ値の間の差分が基本行傾きと等しいことを示す。
【００３７】
位置指示表現は、行の全ての画素パラメータ値に基づいて生成されるのが好ましい。しかし、特定の実施形態に対して、行の画素値の部分集合を単に使用するので十分である。これらの表現は、少なくとも行／列の一部分に沿って進む時のパラメータ値の相対的な分布を示すものと考えられる。
【００３８】
ステップＳ４は、少なくとも１度繰り返される。これを線Ｌ１で概略的に示す。これは、位置指示表現が画素ブロックの少なくとも２つの行に対して判定されることを意味する。好適な一実施形態において、ステップＳ４は、ブロックの行毎に実行される。
【００３９】
次のステップＳ５は、ブロックに対するモードコードワードを判定する。このコードワードは、複数の傾き補正パターンの集合の表現である。そのような各パターンは、行に沿って適用可能な位置に依存する傾き修正子を示す特定の事前定義済み表現である。従って、そのようなパターンは、行の異なる画素位置に対して１つの補正傾き値を取得するための伸張中に基本行傾きに適用可能な傾き修正子を有するビートシーケンスである。４画素の行の場合、パターンは000binから最大111binであってもよい。利用可能な異なるパターン集合が複数存在するのが好ましい。ここで、各集合は利用可能な傾き補正パターンの異なる部分集合を含む。
【００４０】
行傾きコードワードが元の非量子化画素パラメータ値を使用することにより取得可能な行傾きの整数部の表現である場合、パターン集合は行傾きの異なる小数部を処理するように構成される。例えば、第１のパターン集合は、元の行傾きの小数部が間隔[0, k1]内である場合にブロックに対して使用され、第２の集合は、小数部が間隔[k1, k2]内である場合に使用され、最後のパターン集合まで繰り返される。これは、間隔[ki, 1]内の小数の傾きを有するブロックを処理するように構成される。
【００４１】
従って、モードコードワード判定ステップＳ５は、複数の事前定義済み集合からパターン集合を選択することを含む。元の非量子化パラメータ値が利用可能であり、元の非量子化行傾きを計算できる場合、パターン集合は、計算された行傾きの特定の小数部に基づいて選択される。しかし、他の応用例において、量子化パラメータ値のみがブロック圧縮と関連して利用可能である。そのような場合、使用する特定のパターン集合は、ステップＳ４で生成される位置指示表現に基づいて選択されるのが好ましい。その後、少なくとも２つ又は好ましくは全ての位置指示表現が使用され、種々の集合に利用可能な種々の傾き補正パターンと比較される。位置指示表現に対応するパターンを含む集合が選択される。各パターン集合は、集合識別子と関連付けられるのが好ましい。選択されたパターン集合と関連付けられるこの識別子は、ステップＳ５においてモードコードワードとして使用される。例えば２ビットのモードコードワードは、最大４つの利用可能な異なる集合が存在する場合に使用され、３ビットのモードコードワードは、最大８つの異なる集合を処理できる。
【００４２】
ステップＳ６は、判定したモードコードワードにより表されるパターン集合から傾き補正パターンの表現としてパターンコードワードを判定する。このパターンコードワード判定は、ステップＳ４において現在の行に対して生成された位置指示表現に基づいて実行される。従って、ステップＳ６は、行に対して計算された位置指示表現に対応する選択された集合から傾き補正パターンのうちの１つを選択することを含む。パターンコードワードは、選択された傾き補正パターンの標識であると判定される。
【００４３】
ステップＳ６は、ブロックの全ての行に対して又は位置指示表現がステップＳ４で生成された少なくともそれらの行に対して実行されるのが好ましい。これを線Ｌ２で概略的に示す。従って、そのような各行は、判定されたモードコードワードにより表されるパターン集合の補正パターンのうちの１つと関連付けられる割り当てられたパターンコードワードを有する。
【００４４】
オプションとして、方法は、次の行に進む時に適用可能である傾き又は画素変更子の判定を含むのが好ましい。そのような傾き変更子は、次の行に進む時に正確な列傾きを取得するために適用される単一の補正項である。例えば、第１の列の量子化画素パラメータ値が[110, 231, 351, 472]であると仮定する。この場合、基本列傾きは、２つの隣接する画素値の間の最小差分、すなわち１２０である。0binの傾き又は画素変更子は、傾きが実際に１２０である（この例において、行１から２に進む）行を割り当てられ、1binの変更子は、傾きが１２０でなく１２１である行遷移に対して使用される。本明細書の例において、傾き変更子は1 0 1である。ブロックがＮ行を含む場合、Ｎ−１個の傾き変更子が判定されるのが好ましい。
【００４５】
従って、方法は、ブロックの少なくとも１つの行（又は図２Ｂの場合には列）に対して列に対する基本パラメータ傾きに適用可能な傾き変更子を判定する追加のステップを含むのが好ましい。更に変更子判定は、少なくとも列の画素パラメータ値の一部分に基づいて実行される。その後、方法は終了する。
【００４６】
圧縮の結果として、元の画素ブロックの圧縮表現が得られる。図３は、そのような圧縮ブロック４００を示す。圧縮ブロック３００は、基準コードワード４１０、行傾きコードワード４２０、列傾きコードワード４３０、モードコードワード４４０及び複数のパターンコードワード４５０を含み、そのようなコードワード４５０はブロックの行（又は列）毎に１つであるのが好ましい。圧縮ブロック４００は、上述したように列の方向に対して画素又は傾き変更子４６０を更に含むのが好ましい。圧縮ブロック４００の含まれる成分の実際の順序が図示される順序と異なってもよいことは、本発明により理解される。
【００４７】
図４は、位置指示表現を生成する一実施形態を更に詳細に示すフローチャートである。方法は、図１のステップＳ３から継続する。次のステップＳ１０は、パラメータ値が既に量子化されていない限り、元のパラメータ値を量子化する。量子化の一般的な例は、値を整数に丸めることである。一般に量子化は、元のパラメータ値を規定された制限されたビットサイズを有する量子化値に書き込むことを含む。量子化値は、元の値の最適なＱビット表現であるのが好ましい。ここで、Ｑは量子化値のビットサイズである。次のステップＳ１１は、行（又は列）の隣接する量子化画素パラメータ値及び行（又は列）の基本パラメータ傾きの対毎の減算を実行する。従って、計算は、Pi+1 - Pi- Rを判定することを含む。ここで、Piはある行の位置ｉにおける量子化画素パラメータ値であり、Ｒは行に対する基本パラメータ傾きである。その後、方法は図１のステップＳ５に継続するか又は次の行の位置指示表現を判定するためにステップＳ１０に戻る。
【００４８】
図５Ａ〜図５Ｃは、本発明に従う位置指示表現の判定が基づく原理を示す。例えば４画素の行は、元のパラメータ値[109.8, 112.6, 115.4, 118.2]を有する。これは、図５Ａに示すように、傾き２．８の線を描くことに等しい。
【００４９】
図５Ａにおいて、画素の中心線が描かれた線と交差する画素に印がつけられている。印がつけられた画素は、元の値を量子化することにより取得される値、すなわち[110, 113, 115, 118]を表す。
【００５０】
非量子化パラメータ値から傾き２．８の整数部、すなわち２を除去することにより、値[109.8, 110.6, 111.4, 112.2]が得られる。これは、小数の傾き部分のみが残ったために線の傾きが１より小さい図５Ｂと同等である。この場合、小数の傾きは2.8 - 2.0 = 0.8である。
【００５１】
図５Ｂから、傾きが変化する画素位置を識別できる。これは、行に沿って進む時に１段階進む必要がある位置に対応する。画素０はアンカー又は基準値であり、補正値を有さない。画素１は、先の画素より１段階高い。これは、この位置において行傾きが変化することを意味し、値1binが得られる。画素２は、先の値と同一の高さであり、傾きは変化しない。従って、画素は値0binを得る。最後に、画素３は補正値1binを得る。図５Ｃは、最終的な位置指示表現101binを示し、表現が種々のセグメント長のステップパターンとして考えられる。
【００５２】
ここでの本発明の鍵は、全ての行が全く同一の小数の傾き、この場合０．８を有することを認識することである。これは、行間の差分のみが傾きではなく線の位置であることを意味する。これは、種々のステップの長さを有する種々のステップパターンに対応する。
【００５３】
図６は、４画素の行に対して可能である全ての補正パターン、すなわち位置指示表現を示す。パターンは、４つの異なるパターン集合に編成されている。第１のパターン集合は、割り当てられたモードコードワード00binを有し、パターン000bin、001bin、010bin及び100binを含む。これらのパターンは、長さ３及び４のセグメントに対応する。モードは、０〜１／３の分数の傾きを範囲に含む。次の集合は、モードコードワード01binを有し、補正パターン101bin、001bin、010bin及び100binを含む。この集合は、２画素及び３画素のセグメント長を有するパターンを含み、１／３〜１／２の分数の傾きを範囲に含む。第３の集合は、モードコードワード10binを有し、パターン101bin、110bin、010bin及び011binを含む。パターンは、長さが２画素のセグメントの間に長さが１画素の０又は１つのセグメントを有する。間隔１／２〜２／３の分数の傾きは、この集合により処理される。最終的な集合は、コードワード11binを割り当てられ、補正パターン101bin、110bin、111bin及び011binを含む。これらのパターンは、長さが２画素のセグメントの間に長さが１画素の１つ又は２つのセグメントを有し、分数の間隔２／３〜１を範囲に含む。
【００５４】
Hasselgren及びAkenine-Mollerにより提案された従来のＤＤＰＣＭ手順［１］は、補正マトリクスの４×４ブロック毎に１５ビットを使用する。本発明は、このブロックサイズに対して、１つの２ビットモードコードワード、４つの２ビットパターンコードワード（行又は列毎に１つ）及び３つの１ビット傾き変更子、結果として１３ビットのみを必要とする。これは、従来の解決策と比較して２ビット節約されることを意味する。この２ビットの節約は、圧縮ブロックの合計のサイズを減少する目的で使用される。あるいは、従来と同一の合計の圧縮ブロックサイズが有利である場合、２つのフリービットは、基準コードワード及び／又は傾きコードワードの分解能を増加させるために使用される。そのような増加は、可逆的に圧縮されるブロックの割合が従来技術を使用する場合と比較して増加することを意味する。
【００５５】
［圧縮例］
以下において、本発明の一連の処理を示すために圧縮例を示す。以下のパラメータ値を有する量子化入力画素ブロックを仮定する。
2010541094.tif 000003
【００５６】
第１に、基準パラメータ画素値が選択され、基準コードワードが判定される。コードワードは、左上隅の画素値のビット表現、すなわち110であってもよい。この例において、ブロックは、図２Ａに示すように行毎に圧縮される。基本行パラメータ傾きは、行において１段階進む時の最小の傾きとして規定される。この例において、種々の行傾きは２及び３であり、これは、行傾きコードワードが２のビット表現として判定されることを意味する。対応する列傾きは１２０及び１２１であり、これは、列傾きコードワードが１２０のビット表現として判定される。その後、対毎の減算が実行される。ここで、同一行の先の隣接するパラメータ値は次のパラメータ値から減算される。更に、基本行パラメータ傾き２は結果として得られる差分から減算され、位置指示表現を取得する。第１の行の結果は以下の通りである。
113 - 110 - 2 = 1
115 - 113 - 2 = 0
118 - 115 - 2 = 1
【００５７】
その行の位置指示表現は101binである。他の３つの行に対して同一の手順を実行すると、以下が得られる。
2010541094.tif 000004
【００５８】
ブロックに対して使用する関連するパターン集合は、それらの４つの位置指示表現に基づいて選択される。図６を調査することにより、モードコードワード11binを有するパターン集合は、全ての要求された補正パターンを含むことが分かる。位置指示表現に対応する特定の補正パターンが行に対して判定される。第１の行は表現101binを有する。これは、図６のパターンコードワード00binを含む補正パターンに対応する。残りの行は、コードワード11bin、10bin及び01binを有する。
【００５９】
最後に、列に対する傾き変更子は、第１の列における隣接する画素パラメータ値の対毎の減算及び基本列パラメータ傾きの減算により判定される。結果は以下のようになる。
231 - 110 - 120 = 1
351 - 231 - 120 = 0
472 - 351 - 120 = 1
【００６０】
従って、傾き変更子は101binである。最終的に圧縮ブロックは以下を含む。
i）  １１０のビット表現−基準コードワード
ii） ２のビット表現−行傾きコードワード
iii）１２０のビット表現−列傾きコードワード
iv） 11bin−モードコードワード
v）  00bin、11bin、10bin、01bin−パターンコードワード
vi） 101bin−傾き変更子
【００６１】
文献［１］の従来技術と比較して本発明を採用する利益は、４×４ブロックに対して２ビットであった。これは、単なる小さな利点と考えられる可能性がある。しかし、この２ビットの節約が圧縮品質を低下せずに無償で得られることを認識すべきである。８×８ブロック等の更に大きなブロックサイズの場合、利益は従来技術と比較して大きく増加する。
【００６２】
４×４ブロックと比較して、更に多くの分数の傾きを可能にするために８×８のブロックに対して更に多くのパターンモードが必要とされる。その理由は、全ての行が４画素ではなく８画素有するために更に細かい粒状表現が可能であるためである。
【００６３】
可能な補正パターンの解析は、８つのパターンモードが全ての例を範囲に含むことを示す。
モードＡ：長さ１又は２のセグメントを含む補正パターン、（４つ以上の連続した１）
モードＢ：長さ１又は２のセグメントを含む補正パターン、（３つ又は４つの連続した１）
モードＣ：長さ１又は２のセグメントを含む補正パターン、（２つ又は３つの連続した１）
モードＤ：長さ１又は２のセグメントを含む補正パターン、（１つ又は２つの連続した１）
モードＥ：長さ１又は２のセグメントを含む補正パターン、（ゼロ又は１つの連続した１）
モードＦ：長さ２又は３のセグメントを含む補正パターン
モードＧ：長さ３、４又は５のセグメントを含む補正パターン
モードＨ：長さ５、６、７又は８のセグメントを含む補正パターン
【００６４】
それらの全てのモードに対して、８画素の行全体を符号化するのに４ビットのみ必要である（付録を参照）。従って、８×８ブロックにおいて、モードコードワードは３ビットになり、パターンコードワードは４ビットである。これは、基準コードワード、行及び列傾きコードワードに加えて、圧縮８×８ブロックが3 + 8x4 + 7 = 42ビットを含む。最後の７ビットは、第１の列に対する７つの１ビット傾き変更子である。これは、文献［１］の従来の解決策と比較されるべきであり、補正マトリクスに対して６３ビット必要とする。その結果、圧縮ブロック毎に２１ビット節約され、基準コードワード、行傾きコードワード及び／又は列傾きコードワードにおける分解能を増加するために使用される。あるいは、圧縮ブロックの合計サイズは減少される。
【００６５】
この解決策は、理論的には適切であるが、実現例の観点から最適でない可能性がある。１６個の７ビットパターン（補正パターン）の中から選択することは、表面積が非常に大きくなる。第２に、８×８の場合にそれ程多くの追加のビットを必要としない。全分解能で全てのパラメータを符号化する場合、以下が得られる。
基準コードワード：２４ビット
行及び列傾きコードワード：２×２５ビット
モードコードワード：３ビット
パターンコードワード：８×４ビット
傾き変更子：７ビット
合計：１１６ビット
【００６６】
これは、１２８より非常に少なく、従って、実現例の負担を緩和するために少し非効率的な符号化を使用することは賢明だろう。一般に、圧縮ブロックの所望のビットサイズは、デプスバッファアーキテクチャで使用されるバスの帯域幅により規定される。圧縮ブロックは、１回のメモリアクセスで又は可能な限り少ないアクセスで取り出されるのが好ましい。今日、デプスバッファアーキテクチャに対するバス帯域幅は一般に６４又は１２８ビットである。その結果、１１６ビットブロックが１２８ビットブロックと同一回数のメモリアクセスを必要とするため、１２８ビット又は１１６ビットと比較して僅かに少ないビットの圧縮ブロックサイズを有するのがより適切だろう。しかし、シリコン領域に関して実現例の負担が１２８ビットバージョンに対してより１１６ビットバージョンに対してより大きい場合、後者が最も望ましいと考えられる。
【００６７】
別の例は、２行の４画素行（３つの補正ビット＋１ビット傾き変更子）として８画素行（７つの補正ビット）を符号化することである。４×４の場合と同一の符号化が使用可能である。行毎に２つの２ビットパターンコードワード＋１ビット傾き変更子が必要であるため、行毎に５ビット必要である。８×８ブロックは、以下を使用して符号化される。
基準コードワード：２４ビット
行及び列傾きコードワード：２×２５ビット
モードコードワード：２ビット
パターンコードワード：８×５ビット
傾き変更子：７ビット
合計：１２３ビット
【００６８】
好適な圧縮ブロックサイズとして考えられる場合、これは、依然として１２８ビットのバジェットを下回る。
【００６９】
そのような場合、図１のステップＳ４は、行／列に対して行／列の画素パラメータ値の第１の部分に基づいて第１の位置指示表現を生成することを含む。ステップＳ４は、行／列の画素パラメータの第２の（残りの）部分に基づいて第２の位置指示表現を生成することを更に含む。ステップＳ６は、行／列毎に２つの画素部分の各々に対してパターンコードワードを判定することを含む。
【００７０】
上記で提示された本発明の例において、ブロックの全ての画素パラメータ値は１つの平面にある。これは、デプスバッファの非常に多くの種々のブロックを範囲に含む。しかし、２つ以上の三角形が少なくとも部分的に所定のブロック内に位置することが可能な場合がある。そのような場合、ブロックの画素パラメータ値は、複数の種々の平面のうちの１つに属する。ブロック毎に１つの平面又はブロック毎に２つの平面が許可される場合、大多数のブロックが処理される。以下において、ブロック毎に２つの平面の解決策が提示される。解決策は、線が２つの平面間を分割するために使用されると仮定する。分割するために線を使用することは、全ての例を範囲に含むわけではない。例えば、三角形の先端部がブロック内にある場合やそのようなタイルが圧縮されないままである場合がある。しかし、殆どの例がこの単純な分割を使用して処理される。図８に示すように、画素は、直線を使用して２つの区画に分割される。第１の画素分割は第１の平面内に位置し、他方の分割は第２の平面内に位置する。尚、本発明は、図８に示す特定の分割に限定されず、ブロックにおいて線により分離される２つの平面を有する任意のブロックを処理できる。
【００７１】
一般に、実際の画素パラメータ値に依存して２つの平面に対して同一のパターンモードを有することはできない。これは、パターンモードが一般に２つの平面に対して異なる分数の傾きに依存するためである。
【００７２】
線は、左上の画素（黒丸で印をつけられた）及び右下の画素（黒丸で印をつけられた）を基準パラメータ値又はアンカー点として使用でき、あるいは右上の画素及び左下の画素を使用できる。斜めビットで示される１ビットは、圧縮ブロックに格納され、それらの２つの構成から選択する。分割は、Hasselgren及びAkenine-Moller［１］により教示される方法と同一の方法で符号化されるのが好ましい。簡単に説明すると、少なくとも行又は列の一部分に対する位置指示表現が計算される。行又は列の部分の２つの隣接する画素の丸められた画素パラメータ値の間の差分が基本行（列）パラメータ傾きを２以上上回る場合、中断点に達した。その画素の水平（垂直）座標が格納される。各行又は各列に沿って第１のそのような中断点を格納する。中断点が見つけられる一方で列に沿って横断する場合、１つの行ではなく全ての残りの行にはゼロの中断点座標が与えられる。
【００７３】
図８において、分割は、太いぎざぎざの線で印をつけられる。従って、例において、第１の行は最も左側の平面に完全に属し、第２の線に対しては最初の７画素が最も左側の平面に属し、最後の画素は最も右側の平面に属する。
【００７４】
単に上記ビットパターンを格納することと比較してビットを節約するために、長さの合計が８になる行毎（又は列毎の圧縮が使用される場合は列毎）に２つのセグメントを格納できる必要がある。これを行なうために、３、５及び６画素に対して複数のパターンモードを導入する。
【００７５】
図９は、３ビットの行セグメントに対して利用可能な補正パターン集合を示す図である。図から分かるように、２つのパターンモードが存在する。各パターンモードは、３つの補正パターンを含む。すなわち、モード0binの場合には00bin、01bin、10binを含み、モード1binの場合には11bin、01bin、10binを含む。
【００７６】
各集合に３つのパターンが存在するため、２ビットパターンコードワードが要求される。しかし、更に以下で説明されるように、特に３画素行の部分にモードコードワード及びパターンコードワードをより効率的に格納できる。
【００７７】
図１０は、５画素の行部分の場合に利用可能な６つのパターン集合を示す。図示するように、そのようなパターン集合の各々は５つの異なる補正パターンを含む。３ビットのパターンコードワードサイズは、種々の補正パターンを表すために使用される。しかし、本明細書において、以下に更に示すように、更に効率的な方法が可能である。
【００７８】
図１１Ａ〜図１１Ｃは、６画素の行部分に対して利用可能である集合毎に６つの傾き補正パターンを含む７つのパターン集合を一括して示す。
【００７９】
図８を参照すると、行を分割するのに９つの可能性が存在する。例えば、第１の行は最も左側の平面に割り当てられる８画素を有し、最も右側の平面に割り当てられる画素はない。最後の行は、最も左側の平面に割り当てられる画素を１つ有し、７つの画素は最も右側の平面に割り当てられる。最後（第９）の組合せは図示しないが、全ての８つの画素が最も右側の平面に割り当てられる。
【００８０】
左側に８画素−右側に０画素の分割
図１２Ａに示すように、境界の左側の８つの画素３１０に対して、６画素の行部分３１２＋１つの３画素の行部分３１４として行３１０を処理する。従って、現在の行は、１つの１ビット傾き変更子、６画素の行部分３１２に対する３ビットの第１のパターンコードワード及び３画素の部分３１４に対する２ビットの第２のパターンコードワードを必要とし、その結果、合計６ビットとなる。
【００８１】
左側に７画素−右側に１画素の分割
この例を図１２Ｂに示す。ここでも、左側傾き変更子（ｙ成分）に対する１ビット及び６画素の行部分３１２に対する３ビットパターンコードワード＋境界の左側の残りの画素３３０に対する単一の傾き変更子を使用する。境界の右側には、単一の傾き変更子（ｙ成分）を有する。合計で、左側に1+3+1ビット及び右側に１ビットであり、合計で６ビットとなる。
【００８２】
左側に６画素−右側に２画素
図１２Ｃに示すように、ここでは、左側傾き変更子（ｙ成分）に対する１ビット及び境界の左側の６画素の行部分３１２に対する３ビットパターンコードワードを使用する。右側には、傾き変更子（ｙ成分）及び単一画素３３０に対する１ビットの傾き変更子を有する。従って、左側に1+3ビット及び右側に1+1ビットであり、合計で６ビットとなる。
【００８３】
左側に５画素−右側に３画素
図１２Ｄに示すように、単純な解決策は、境界の左側の５画素の行部分及び右側の３画素のセグメント３１２を使用することである。
【００８４】
しかし、これに対する１つの問題は、５画素のチャンクが個々に格納される場合に３ビットを必要とする５進変数により表されることである。また、３セグメントは３進変数であり、２ビットを必要とする。２つの傾き変更子（ｙ成分）ビットを共に考慮すると、これは７ビットである。これは、全ての他の組合せが６ビットで管理されるため不便である。しかし、実際には、現在の例に対してこのビット利用を低減できる。
【００８５】
そのような場合、５進変数は、３進変数と共に格納される。5 x 3 = 15 ＜ 16であるため、双方のセグメントを格納するのに４ビットのみ必要である。例えば、表Ｉの符号化が使用される。
2010541094.tif 000005
【００８６】
このように、傾き変更子（ｙ成分）に対して２ビット及びパターンコードワードに対して４ビットを必要とし、合計で６ビットとなる。
【００８７】
左側に４画素−右側に４画素
これは、単純な例であり、図１２Ｅに示すように境界の両側の画素行部分３１２、３１４に対して４画素パターンを使用できる。
【００８８】
従って、傾き変更子（ｙ成分）に対して１ビット及び左側のパターンコードワードに対して３ビット及び右側のパターンコードワードに対して３ビットを使用する。合計で６ビットとなる。
【００８９】
行の境界の左側に３画素、２画素、１画素及びゼロ画素、並びに右側に５画素、６画素、７画素及び８画素を有する例に対しては、２つの画素部分が交換されるものの、上述と同様の符号化が利用される。
【００９０】
尚、種々の行に対して種々の行セグメント長を使用できるが、全ての行に対して同一のモードを使用できる。しかし、行が６画素行セグメントを含み、同一平面の別の行が３画素行セグメントを含む状況が起こる可能性があり、６画素行セグメントはモード110binを必要とする。３画素行部分の場合、選択対象のモードを２つのみ、すなわち0bin及び1binのみ有する。そのような場合、モード（コードワード）及びパターン集合の選択は、以下の表ＩＩにしたがって実行される。表ＩＩにおいて、チャンクの長さに対して一覧表示された種々のモードは、図６、図９、図１０及び図１１Ａ〜図１１Ｃに示す番号付けに対応する。
2010541094.tif 000006
【００９１】
従って、３ビットを使用して平面毎に１つのモードコードワードを格納する必要がある。２つの平面を有するため、これは、行コードワードに対して６ビットを意味する。上述したように、合計で行毎に６ビット必要であり且つ８行有するため、パターンコードワード及び傾き変更子に対して8x6 = 48ビット必要である。しかし、左上及び右下のｙ成分（又は右上及び左下）に対して傾き変更子が必要ないため、パターンコードワード及び傾き変更子に対して４６ビット必要となる。モードコードワードと合わせると、46 + 6 = 52ビットとなる。これは、６２ビットを必要とする文献［１］で提示されるマトリクスを用いた解決策と比較されるべきであり、従って、本発明は、従来技術と比較して２つの平面を有するブロック毎に１０ビットのビット節約を達成する。
【００９２】
文献［１］の２平面８×８システムの１９２ビットバージョンを参照すると、以下のビットレイアウトが提示される。
斜めビット：１ビット
アンカー点：２１＋２２＝４３ビット
デルタ：４×１５＝６０ビット
分割ビット：２６ビット
補正ビット：６２ビット
合計：１９２ビット
【００９３】
本発明を使用すると、６２ビットではなく５２ビットを使用して補正ビットを符号化できる。ブロックに対して同様の合計のビットサイズが望ましい場合、可能なビット分布は以下のようになる。
斜めビット：１ビット
基準コードワード：２×２４＝４８ビット
行傾きコードワード：２×１６＝３２ビット
列傾きコードワード：２×１６＝３２ビット
分割ビット：２６ビット
補正ビット＊：５２ビット
合計：１９１ビット
＊補正ビットはモードコードワード、パターンコードワード及び傾き変更子を表す。
【００９４】
この図示する例において、基準コードワード及び傾きコードワードに使用されるビット数は、文献［１］と比較して増加した。あるいは、基準コードワードに使用されるビット数が僅かに増加するか又は全く増加せずに、より多くのビットが傾きコードワードに使用される。いずれの場合においても、他のパラメータに対するビット数が増加したことは、本発明がデプスバッファのより高い割合のブロックを圧縮できることを意味し、その結果、メモリ帯域幅が低減されることを意味する。
【００９５】
文献［１］の４×４システムと比較すると、本発明は、２ビット又はビットの３％だけ一平面モードを改善した。これらの２ビットは、パラメータの範囲を拡張するために使用され、より高い割合のタイルを圧縮可能にし、それによりメモリ帯域幅に対する要求を低減する。文献［１］の８×８システムと比較すると、本発明は、１４〜２０ビット又はビットの１１〜１６％だけ一平面モードを改善した。従って、一平面モードは、全ての可能な一平面ブロックを処理でき、このモードを使用して圧縮可能なタイルの割合を増加する。二平面モードは、１０ビット又はビットの８％だけ改善される。これらのビットは、より高い割合のブロックが圧縮されるように、パラメータの範囲を向上するために使用される。
【００９６】
従って、本発明は、基準コードワード、行傾きコードワード、列傾きコードワード及び変更子コードワードを判定することによりＭ×Ｎ画素のブロックを圧縮できる。ここで、変更子コードワードは、基本行パラメータ傾き及び基本列パラメータ傾きの少なくとも一方に適用可能な複数の傾き変更子又は修正子の表現である。この変更子コードワードは、モードコードワード、パターンコードワード及び傾き変更子を一括して表す。明らかに従来技術とは対照的に、本発明は合計の長さがＭ×Ｎ−１ビットより小さくなるようにそのような変更子コードワードを判定できる。例えば、Hasselgren及びAkenine-Mollerが４×４ブロックを含む補正マトリクスを表すのに１５ビットを必要とする一方、本発明は１３ビットのみ必要とする。同様に、従来技術は８×８ブロックを含む補正マトリクスに対して少なくとも６３ビットを必要とし、本発明はそのようなブロックを４３ビットで処理できる。
【００９７】
少しの間、図１に戻る。ブロックが上述したように２つの平面を含む場合、ステップＳ１は、第１の平面の画素に対する第１の基準コードワードを判定すること及び第２の平面の画素に対する第２の基準コードワードを判定することを含む。２つのコードワードは、ブロックの左上の隅及び右下の隅、あるいは右上の隅及び左下の隅の位置の画素パラメータ値を表すのが好ましい。それに応じて、ステップＳ２及びＳ３は、ブロックの２つの平面の各々に対して行及び列傾きコードワードを判定することを含む。これらのステップは、ブロックの各平面にのみ属する画素を使用して上述したように実行される。
【００９８】
ステップＳ４は、行又は列に対して行／列の画素パラメータの第１の部分に基づいて、第１の行／列の部分に沿って傾きが変化する画素位置を示す第１の表現を生成することを含む。ステップＳ４は、行／列に対して行／列の画素パラメータの第２の部分に基づいて、第２の部分に沿って傾きが変化する画素位置を示す第２の表現を生成することを更に含む。この場合、第１の行／列の部分は第１の平面に属し、第２の行／列の部分は第２の平面に属する。このステップＳ４は、ブロック中の全ての行／列に対して繰り返されるのが好ましい。尚、行／列の１つに対して、全ての画素が１つの平面にのみ属してもよい。そのような場合、単一の位置指示表現がその行／列に対して生成される。
【００９９】
ステップＳ５は、ブロックの第１の平面に対する第１のモードコードワード及び第２の平面に対する第２のモードコードワードを判定する。コードワード判定は、異なる平面に属する行／列に対する生成された位置指示表現及び好ましくは上記で一覧表示されて提示された表ＩＩに基づいて実行されるのが好ましい。殆どの実際的な例において、２つのモードコードワードは種々のビット値を有するため、種々のパターン集合を表す。
【０１００】
ステップＳ６は、ブロック中の平面毎に使用されるパターン集合から選択される傾き補正パターンの表現として種々の行／列の部分に対するパターンコードワードを判定する。従って、一般に第１の平面は、第１のパターン集合から補正パターンを選択でき、第２の異なるパターン集合からの傾き補正パターンは、第２の平面の行／列の部分に対して利用可能である。パターンコードワード判定は、種々の行／列の部分に対して生成される位置指示表現に基づいて実行される。尚、２つのパターンコードワードが共に生成されるように、完全なブロックは単一の動作で符号化される。
【０１０１】
最後に、傾き変更子は、基本的に上述の手順を平面毎に１回実行することにより２つの平面に対して判定される。
【０１０２】
図１に示す方法は、行／列の分割画素を判定することを更に含む。第１の平面に属する行／列の部分及び第２の平面に属する行／列の部分は、分割画素に基づいて規定される。そのような分割画素は、ブロック中の複数の行／列に対して判定されるのが好ましい。
【０１０３】
［伸張］
図１３は、圧縮画素ブロックの画素を伸張する方法を示すフローチャートである。方法はステップＳ２０で開始し、基準画素パラメータ値が基準コードワードに基づいて生成される。一般的な一実現例において、基準値とコードワードとの間には１対１関係があり、ステップＳ２０は、単純に圧縮ブロックから基準コードワードに対応するビットを検索することを含む。しかし、他の応用例において、基準値は、例えばＹビット値を得るために単一ビットをコピーすること又はＹビット値を得るために最上位ビットである1binのワード等の事前定義済みビットワードをＸビットコードワードに追加すること等、基準コードワードのＸビットをＹビット値に拡張することにより取得される。ここで、Ｘ≠Ｙである。
【０１０４】
基本パラメータ傾きは、ステップＳ２１で判定される。このステップは、ブロックの行傾きコードワードに基づいて基本行パラメータ傾きを判定し、それにより列傾きコードワードに基づいて基本列パラメータ傾きを判定することを含むことができるが、行及び列パラメータ傾きの双方を判定することを含むのが好ましい。この生成は、基準値に対して上述したような単純なビット検索処理又は拡張処理により実行される。
【０１０５】
次のステップＳ２２は、圧縮ブロックのモードコードワードに基づいて補正パターンの集合を提供する。ブロックの各行／各列は、ステップＳ２２で提供されるパターン集合の傾き補正パターンの１つを選択するためにステップＳ２３で使用されるパターンコードワードと関連付けられる。
【０１０６】
ステップＳ２０〜Ｓ２２は、任意の順序で又は実際には同時に実行可能である。
【０１０７】
ブロック中の画素のパラメータ値は、ステップＳ２０からの基準画素パラメータ値、ステップＳ２１からの基本パラメータ傾き、すなわち基本行パラメータ傾き及び／又は基本列パラメータ傾き、並びに選択された傾き補正パターンに基づいてステップＳ２４で計算される。
【０１０８】
オプションとして、ブロック中の画素の特定の位置に依存して、基本列／傾きパラメータ傾きに適用可能な１つ以上の傾き変更子は、ステップＳ２４の値の計算で使用される。
【０１０９】
その後、方法は終了する。
【０１１０】
ステップＳ２３で選択される補正パターンは、複数の傾き修正子を含む。ステップＳ２４のパラメータ値計算で使用する特定の傾き修正子は、画素ブロックの行又は列の画素の位置に依存する。
【０１１１】
以下の式１は、行毎の伸張の場合にステップＳ２４の画素パラメータ値の計算を表すために使用される（図２Ａを参照）。
2010541094.tif 000007
【０１１２】
式中、Value(x, y)はブロック中の画素位置(x, y)の計算されたパラメータ値を表す。x = 0, 1, ..., M、且つy = 0, 1, ..., N（Ｍ、Ｎは整数であるが、Ｍ及びＮの双方が１になることはないという条件付きである）である。Ｒは基準パラメータ値であり、Δxは基本行パラメータ傾きであり、Δyは基本列パラメータ傾きであり、Ｐxiは行の画素位置ｉにおける傾き修正子であり、且つ傾き補正パターンから取得され、Ｓyj  は行ｊに割り当てられる傾き修正子である。式１において、Ｐx0＝０、 且つ、Ｓy0＝０である。列毎の伸張の場合は図２Ｂを参照し、式１は書き換えられて以下のようになる。
【０１１３】
2010541094.tif 000008
式中、Ｐyi  は列の画素位置ｉにおける傾き修正子であり、且つ傾き補正パターンから取得され、Ｓxjは列ｊに割り当てられる傾き修正子である。式２において、Ｐy0＝０、 且つ、Ｓx0＝０である。
【０１１４】
［伸張例］
例えば、以下の圧縮ブロック表現を仮定する。
基準コードワード：0000 0000 0010 0100 0110 1001
行傾きコードワード：0 0000 0000 0000 0001 1011 0000
列傾きコードワード：1 1111 1111 1111 1111 1001 0111
モードコードワード：10
パターンコードワード：00 01 11 01
傾き変更子：1 0 1
基準パラメータ値：9321
基本行パラメータ傾き：432
基本列パラメータ傾き：-105
【０１１５】
使用する特定のパターン集合は、図６のパターン２（10bin）である。第１の行において、補正パターンは1 0 1であるべきである。第１の行のパラメータ値は以下の通りである。
Value(0, 0) = 9321
Value(1, 0) = 9321 + 432 + 1 =9754
Value(2, 0) = 9754 + 432 + 0 =10186
Value(3, 0) = 10186 + 432 + 1 =10619
【０１１６】
第２の行に対する補正パターンは、パターンコードワードがその行に対して01binであるため、1 1 0であるべきである。第２の行のパラメータ値は以下のようになる。
Value(1, 0) = 9321 - 105 + 1 =9217
Value(1, 1) = 9217 + 432 + 1 =9650
Value(1, 2) = 9650 + 432 + 1 =10083
Value(1, 3) = 10083 + 432 + 0 =10515
同様の手順が残りの行に対して実行される。
【０１１７】
［実現例の態様］
図１４は、本発明の教示が適用されるデプスバッファアーキテクチャ１を示す概略図である。アーキテクチャは、特に奥行き値を含む画素ブロックを格納するランダムアクセスメモリ（ＲＡＭ）５０を含む。奥行きユニット(DEPTH UNIT)１０は、ＲＡＭ５０から取り出される圧縮ブロックを伸張する本発明に係る伸張器２００を含む。伸張又は復号化ブロックは、奥行きユニット１０の関連するタイルキャッシュ１４に一時的に格納される。本発明に係る圧縮器１００は、ＲＡＭ５０に格納するためにキャッシュ１４に存在する画素ブロックを圧縮するために奥行きユニット１０に提供される。
【０１１８】
好適な一実施形態において、奥行きユニット１０はタイルテーブルキャッシュ１２を更に含む。このテーブルキャッシュ１２は、画素ブロックと関連付けられるヘッダ情報を格納するが、デプスバッファデータとは別個に保持される。一般にタイルテーブルエントリは、関連する画素ブロックがＲＡＭ５０に非圧縮形式で格納されるか又は圧縮形式で格納されるかを示す信号を伝送するフラグを含む。後者の場合、種々の圧縮ブロックが種々の合計ビット長を有することができるため、フラグは圧縮ブロックのサイズを示す信号を更に伝送するのが好ましい。例えば、元のサイズの７５％で圧縮されるか、元のサイズの５０％で圧縮されるか又は元のサイズの２５％で圧縮される非圧縮ブロックを示す信号を伝送するために２ビットフラグが使用される。
【０１１９】
ラスタライザ２０は、奥行きユニット１０に接続され、画素の実際の展開を実行する。ラスタライザ２０は、画素の奥行き及び色を計算するのに採用される１つ以上の画素パイプライン３０に接続される。各画素パイプライン３０は、先に描かれた幾何学的形状により隠蔽される画素、すなわちより大きな奥行き値を有する画素を廃棄する役割を果たす奥行きテストユニット４０に接続される。
【０１２０】
［圧縮器］
図１５は、本発明に係る圧縮器１００を示す概略ブロック図である。圧縮器１００は、圧縮される画素ブロックの基準画素パラメータ値の表現として基準コードワードを判定するように構成される基準量子化器１１０を含む。行傾き量子化器１２０は、上述したようにブロック中の行に対して基本パラメータ傾きの表現としてブロックに対する行傾きコードワードを判定する。対応する列傾き量子化器１３０は、ブロック列に対する基本パラメータ傾きを判定するように構成される。
【０１２１】
圧縮器１００は、少なくともブロックの一部分の各行／各列に対して、好ましくはブロック中の全ての行／列に対して位置指示表現を生成する表現生成器１４０を更に含む。生成器１４０は、少なくとも行／列（の一部分）の画素パラメータ値の一部に基づいて表現生成を実行するのが好ましい。モード選択器１５０は、行／列に沿って適用可能な特定の事前定義済み傾き修正子の複数の補正パターンの集合の表現としてモードコードワードを判定するために圧縮器１００に提供される。モード選択器１５０は、生成器１４０により生成される位置指示表現に基づいて複数の規定済みパターン集合からそのような１つの集合を選択するのが好ましい。そのようなパターン集合が選択されると、モード選択器１５０は、選択されたパターン集合の表現としてモードコードワードを提供する。
【０１２２】
パターンマネージャ１６０は、少なくとも１つの行／列に対して、好ましくはブロック中の全ての行／列に対して、モード選択器１５０により選択されたパターン集合の傾き補正パターンのうちの１つの表現としてパターンコードワードを判定するためにモード選択器１５０に接続されて構成される。マネージャ１６０は、表現生成器１４０に更に接続され、種々の行／列に使用する集合の傾き補正パターンを判定する際に行／列に対する特定の位置指示表現を使用する。
【０１２３】
図示しないが、圧縮器１００は、伸張中に基本列／行パラメータ傾きに適用可能な少なくとも１つの傾き変更子を生成する変更子生成器を更に含むのが好ましい。
【０１２４】
上述したように、特に８画素の行／列が２つの４画素のチャンクとして管理される場合、パターンマネージャ１６０は、実際にブロックの行／列毎に２つのパターンコードワードを判定できる。更に、ブロック中の画素が同一直線上になく２つの平面の一方に属する場合、量子化器１１０は第１の基準コードワード及び第２の基準コードワード、すなわちブロックの平面毎に１つの基準コードワードを判定する。同様に、傾き量子化器１２０、１３０は、第１の行及び列傾きコードワード、並びに第２の行及び列傾きコードワードを判定する。表現生成器１４０は、ブロック中のいくつかの行／列に対して２つの位置指示表現を判定し、その一方で、他の行／列に対しては行／列のチャンクが含むビット数に依存して１つのそのような表現のみを判定する。モード選択器１５０は、第１の平面に対する第１のモードコードワード及び第２の平面に対する第２のモードコードワードを判定する。パターンマネージャ１６０は、第１の平面に存在する行／列のチャンクに対する第１のモードコードワードにより規定される集合の傾き補正パターンを表すパターンコードワードを選択し、第２の平面の行／列のチャンクに対する第２のモードコードワードにより規定される集合の傾き補正パターンを表すパターンコードワードを選択する。
【０１２５】
圧縮器１００のユニット１１０〜１６０は、ソフトウェア、ハードウェア又はそれらの組合せとして提供されてもよい。ユニット１１０〜１６０は、圧縮器１００に共に実現されてもよい。あるいは、いくつかのユニットがデプスバッファアーキテクチャの他の場所に提供される分散型実現例も可能である。
【０１２６】
図１６は、表現生成器１４０の一実施形態を示す概略ブロック図である。この生成器１４０は、元のパラメータ値を量子化して量子化値にするように、例えば丸めて量子化値にするように構成されるオプションの値量子化器１４２を含む。入力パラメータ値が既に量子化されている場合、このユニット１４２は省略可能である。計算器１４４は、少なくとも行／列の一部分の画素毎に、行／列の先行画素の量子化パラメータ値又は行／列に対する基準パラメータ値及び基本パラメータ傾きを現在の画素の量子化パラメータ値から減算するように生成器１４０に構成される。この手順が行／列（の一部分）の全ての画素に対して実行されると、位置指示表現が判定される。
【０１２７】
表現生成器１４０のユニット１４２及び１４４は、ソフトウェア、ハードウェア又はそれらの組合せとして提供されてもよい。ユニット１４２及び１４４は、表現生成器１４０に共に実現されてもよい。あるいは、いくつかのユニットが圧縮器の他の場所に提供される分散型実現例も可能である。
【０１２８】
［伸張器］
図１７は、本発明に係る伸張器２００を示す概略ブロック図である。伸張器２００は、圧縮画素ブロックの基準コードワードに基づいて基準画素パラメータ値を生成する基準生成器２１０を含む。生成器２１０は、基準値を提供するためのコードワードのビットシーケンスを単純に検索するように構成されるか、あるいは目標値を得るためにビットシーケンスを拡張するなどの処理を更に行なうように構成される。傾き生成器２２０は、圧縮ブロックの傾きコードワードに基づいて基本パラメータ傾きを判定するように伸張器２２０に提供される。第１の実施形態において、生成器２２０は、行傾きコードワードに基づいて基本行傾きのみを判定する。第２の実施形態は、列傾きコードワードを使用して基本列傾きを判定することを含む。しかし、第３の好適な実施形態において、傾き生成器２２０は、行傾きコードワード及び列傾きコードワードに基づいて基本行傾き及び基本列傾きをそれぞれ判定する。
【０１２９】
伸張器２００は、圧縮ブロックのモードコードワードに基づいて複数の傾き補正パターンの集合を提供する集合提供器(set provider)２３０を更に含む。提供器２３０は、複数の異なるそのようなパターン集合を含む記憶位置（不図示）から集合を選択するのが好ましい。
【０１３０】
パターン選択器２４０は、復号化される画素を含む行／列と関連付けられるパターンコードワードに基づいて、提供された集合から傾き補正パターンを選択するように構成される。値判定器２５０は、基準生成器２１０、傾き生成器２２０及びパターン選択器２４０に接続される。判定器２５０は、基準生成器２１０からの基準パラメータ値、傾き生成器２２０からの基本（行及び／又は列）パラメータ傾き及び選択器２４０からの傾き補正パターンに基づいて画素に対する画素パラメータ値を計算する。判定器２５０は、画素パラメータ値を判定するための上記式１又は２で提示される任意の計算を実行するために実現される。別の計算において、判定器２５０は、傾き補正パターンから選択された傾き修正子及び基本パラメータ傾きを行／列の先の隣接する画素に対して判定器２５０により判定される画素パラメータ値に又は基準画素パラメータ値に単純に加算する。そのような場合、伸張器２００は、ブロック又はブロックの行／列の現在の画素の位置に基づいてパターンから特定の傾き修正子を選択するように構成される変更子選択器２６０を含んでもよい。
【０１３１】
ブロックが異なる平面に属する画素を含むか否か又は行／列が２つの行／列のチャンクとして処理されるか否かに依存して、基準生成器２１０は２つの基本基準値（平面毎に１つ）を判定でき、傾き生成器２２０は２つの行パラメータ傾き及び２つの列パラメータ傾き（平面毎に１つの行傾き及び列傾き）を生成し、集合提供器２３０は２つのパターン集合（平面毎に１つ）を提供し、パターン選択器２４０は行／列毎に１つ又は２つの傾き補正パターンを選択する（分割位置に依存する）。
【０１３２】
伸張器２００のユニット２１０〜２６０は、ソフトウェア、ハードウェア又はそれらの組合せとして提供されてもよい。ユニット２１０〜２６０は、伸張器２００に共に実現されてもよい。あるいは、いくつかのユニットがデプスバッファアーキテクチャの他の場所に提供される分散型実現例も可能である。
【０１３３】
添付の請求の範囲により規定される本発明の範囲から逸脱せずに、種々の変形及び変更が本発明に対して行なわれてもよいことは、当業者には理解されるだろう。
【０１３４】
［参考文献］
［１］Haselgren及びAkenine-Mollerの「Efficient Depth Buffer Compression」Graphics Hardware、２００６年、１０３〜１１０ページ
【０１３５】
［付録］
この付録は、行又は列毎に８画素を有するブロックに対するパターンコードワードを判定する情報を提供する。種々のセグメント長の補正パターンを有する８つの異なるモード（モードＡ〜モードＨ）が存在することが先に開示された。
【０１３６】
モードＡ
このモードは、長さが２画素のセグメント及び長さが１画素のセグメントを有する補正パターンに関連し、長さが２画素のセグメント間に長さが１画素のセグメントが４つ以上存在する。最初の３ビットは、行又は列に沿う第１の２画素セグメントの位置を表す。２画素セグメントがない場合、位置７が使用される。最後のビットは、長さが２画素の次のセグメントの前に長さが１画素のセグメントが４つ存在する（「0bin」）か、あるいは長さが２画素の次のセグメントの前に長さが１画素のセグメントが５つ以上存在する（「1bin」）かを示す。第１の２画素セグメントの位置に依存して、このビットは必要ない可能性がある。そのような場合、そのビットは省略されるか又は任意の値に設定される。図１８Ａは、1111011binの補正パターンを使用するこの例を概略的に示す。２画素セグメントは、行の画素位置番号５のところで現れる。その結果、パターンコードワードの最初の３ビットは101bin=5に設定される。最後のビットは省略され、101binは補正パターン1111011binの表現として使用される。あるいは、任意のビットが追加され、1010bin又は1011binは補正パターン1111011binの表現として使用される。
【０１３７】
別の例を図１８Ｂに示す。ここで、パターンコードワードの最初の３ビットは010binであり、第１の２画素セグメントが位置２にあることを示す。４つ以上の１画素セグメントがこの２画素セグメントに後続するかは重要ではないため、パターンコードワードの最後のビットは省略されるか又は任意の値に設定される。
【０１３８】
第３の例は、図１８Ｃのパターン0111110binである。本明細書において、最初の３ビットは000binであり、第１の２画素セグメントが位置０にあることを示す。最後のビットは０であり、次の２画素セグメントの前に４つの１画素セグメントが存在することを示す。従って、パターンコードワード0000binは、パターン011110binを表すために使用される。この原理は、このモードの第１の２画素セグメントの他の画素位置に拡張可能である。
【０１３９】
モードＢ
モードは、長さが１画素又は２画素のセグメントを含み且つ３つ又は４つの連続した１画素セグメントを有する補正パターンを含む。４ビットパターンコードワードは、このモードの種々の補正パターンを表すために使用される。ここでも、４ビットのうちの３ビットが行又は列の第１の２画素セグメントの位置を規定するために採用される。図１８Ｃの場合、これは位置０であり、従って３ビット位置表現は000binである。第１の２画素セグメントの直後に３つ又は４つの１画素セグメントが続くかを区別するために単一ビットが使用される。図１８Ｃにおいて、４つのそのようなセグメントが存在し、これは、この場合に完全なパターンコードワードが0001binであることを意味する。ここで、最後の1binは、４つの１画素セグメントが存在することを示す。あるいは、モードＢにおいて可能な補正パターンが８つのみ存在するため、３ビットパターンコードワードが使用可能である。
【０１４０】
モードＣ
モードＣは、１画素又は２画素のセグメント長を含み且つ２画素セグメントの間に２つ又は３つの連続した１画素セグメントを有する補正パターンに関する。４ビットパターンコードワードは、モードＣで利用可能な補正パターンを表すことができる。４ビットのうちの３ビットは、行又は列の第１の２画素セグメントの位置を表すために使用される。残りのビットは、行又は列の次の２画素セグメントの前に２つ又は３つの連続した１画素セグメントが存在するかを信号で示すために使用される。図１８Ｄは、補正パターン0111011binを示す。第１の２画素セグメントの位置は画素番号０であり、次の２画素セグメントの前の２つの１画素セグメントが第１の２画素セグメントに後続する。従って、この場合、パターンコードワードは0000binである。尚、本明細書において、第２の２画素セグメントの後の１画素セグメントの数は補正パターンに影響を及ぼさないため、その数を指定する必要はない。あるいは、モードＢにおいて可能な補正パターンが８つのみ存在するため、３ビットパターンコードワードが使用可能である。
【０１４１】
モードＤ
このモードは、１画素又は２画素のセグメント長を含み且つ１つ又は２つの連続した１画素セグメントを有する補正パターンに関する。４ビットパターンコードワードの２ビットは、行又は列の第１の２画素セグメントに先行する連続した１画素セグメントの数を規定するために使用される（ゼロ個〜３つの１画素セグメントを区別する00bin〜11bin）。次のビットは、第１の２画素セグメントの後に１つ又は２つの連続した１画素セグメントが続くか否かを信号で示し、最後のビットは、第２の２画素セグメントの後に１つ又は２つの連続した１画素セグメントが続くか否かを規定する。図１８Ｅを参照。図は、補正パターン0110110binを示す。第１の２画素セグメントの前に存在する１画素セグメントは０個であるため、00binを与える。単一の１画素セグメントが第１の２画素セグメント及び第２の２画素セグメントの双方に後続し、その結果、例えば0bin及び0binが得られる。従って、このモードにおいて、最終的なパターンコードワードは0000binとなる。
【０１４２】
モードＥ
モードは、１画素又は２画素のセグメント長を含み且つゼロ個又は１つの連続した１画素セグメントを有する補正パターンを有する。４ビットパターンコードワードの１ビットは、行又は列の第１のセグメントが１画素セグメントであるか又は２画素セグメントであるかを規定する。残りのビットの各々は、後続する２画素セグメントの前に１画素セグメントがゼロ個であるか又は１つ存在するかを信号で示す。図１８Ｆ及び図１８Ｇは、このモードに従って２つの可能な補正パターンを示す。図１８Ｆは、補正パターン0101010binを有し、図１８Ｇは1101101binを有する。図１８Ｇにおいて、第１のセグメントは２画素セグメントであり、図１８Ｆにおいて、第１のセグメントは１画素セグメントである。従って、パターンコードワードの第１のビットはそれぞれ1bin及び0binである。図１８Ｇにおいて２画素セグメントに先行する１画素セグメントはなく、これは0bin、0bin及び0binにより表される。図１８Ｆにおいて、全ての２画素セグメントは、先行する１画素セグメントを有し、1bin、1bin及び1binを与える。従って、図１８Ｇの補正パターンに対する最終的なパターンコードワードは1000binであり、図１８Ｆの場合は0111binである。
【０１４３】
モードＦ
モードＦは、２画素又は３画素のセグメント長を含む補正パターンを有する。パターンコードワードの最初の２ビットは、以下の状況を表す。行又は列の第１のセグメントが２画素セグメントであり、その後に２画素セグメントが続く場合、00binが使用される。01binは、１画素セグメントを表し、その後３画素セグメントが続く。第１のセグメントが２画素セグメントである場合、ビット組合せ10binが使用され、11binは、第１の画素セグメントが３画素セグメントであることを規定する。パターンコードワードの第３のビットは、２つの最初のビットにより規定されるセグメントの後に２画素セグメントが続くのか又は３画素セグメントが続くのかを規定し、第４のビットは、この２画素セグメント又は３画素セグメントの後に２画素セグメントが続くのか又は３画素セグメントが続くのかを信号で示す。
【０１４４】
図１８Ｈ〜図１８Ｋは、このモードに対する種々の補正パターンを示す。図１８Ｈにおいて、第１のセグメントは、上記に従って10binを与えられた２画素セグメントである。２つの２画素セグメントがこの２画素セグメントに後続し、0bin及び0binを与える。補正パターンは同一であるため、最後のセグメントが２画素セグメントであるか又は３画素セグメントであるかは重要ではない。従って、パターン0101010binは1000binにより表される。
【０１４５】
図１８Ｉは、１画素セグメントを有し、その後２画素セグメントが続き、結果として00binを与える。後続する２つのセグメントは、双方とも長さが２画素である（第１の画素のみが行又は列の８画素内にあるため、最後のセグメントが２画素であるか又は３画素であるかは重要ではない）。パターンコードワードは0000binである。
【０１４６】
図１８Ｊは、１画素セグメント及びその後３画素セグメントを有する。最初の２ビットは01binであるべきである。２画素セグメントがこれらのセグメントに後続する。この場合、最後の２画素が２画素セグメントに属するか又は３画素セグメントに属するかは重要でないため、パターンコードワードは３ビットのみ、すなわち010binである。従って、第４のビットは省略されるか又は任意の値に設定される。
【０１４７】
図１８Ｋは、３画素セグメントを有し（結果として11binを与える）、その後２つの２画素セグメントが続く（結果として0bin及び0binを与える）。最後の画素が２画素セグメントに属するか又は３画素セグメントに属するかは関係ない。従って、このモードにおいて、補正パターン0010101binはコードワード1100binにより表される。
【０１４８】
モードＧ
このモードは、３画素、４画素又は５画素のセグメント長を有する補正パターンに関する。この場合、全ての可能な補正パターンは、以下の表ＩＩＩの左側の列から分かる。
2010541094.tif 000009
【０１４９】
表ＩＩＩから分かるように、このモードにおいて、１３個の補正パターンのみが可能である。従って、４ビットは、例えば表ＩＩＩ右側の列に提案されるパターンコードワードを使用してこれらの補正パターンを指定するのに十分である。
【０１５０】
図１８Ｌは、補正パターン1001001binを示す。従って、表ＩＩＩによると、この場合にパターンコードは0001binである。図１８Ｍは補正パターン0001000binを示し、これは表ＩＩＩに従って４ビットコードワード1000binにより表される。
【０１５１】
モードＨ
モードＨは、５画素、６画素、７画素又は８画素セグメントを有する補正パターンを示す。以下の表ＩＶにおいて、このモードに対する全ての可能な補正パターンを左側の列に一覧表示する。
2010541094.tif 000010
理解されるように、１１個の異なる補正パターンのみが可能であるため、それらの補正パターンは、例えば表ＩＶの右側の列で指定されるビットパターンである４ビットのパターンコードワードにより表される。図１８Ｍは補正パターン0001000binを示し、これはビットパターン0110binにより表される。
【図１】
2010541094.tif 000011
【図２Ａ−Ｂ】
2010541094.tif 000012
【図３】
2010541094.tif 000013
【図４】
2010541094.tif 000014
【図５Ａ−Ｃ】
2010541094.tif 000015
【図６】
2010541094.tif 000016
【図７Ａ】
2010541094.tif 000017
【図７Ｂ】
2010541094.tif 000018
【図８】
2010541094.tif 000019
【図９】
2010541094.tif 000020
【図１０】
2010541094.tif 000021
【図１１Ａ】
2010541094.tif 000022
【図１１Ｂ】
2010541094.tif 000023
【図１１Ｃ】
2010541094.tif 000024
【図１２Ａ−Ｅ】
2010541094.tif 000025
【図１３】
2010541094.tif 000026
【図１４】
2010541094.tif 000027
【図１５】
2010541094.tif 000028
【図１６】
2010541094.tif 000029
【図１７】
2010541094.tif 000030
【図１８Ａ−Ｇ】
2010541094.tif 000031
【図１８Ｈ−Ｍ】
2010541094.tif 000032
【国際調査報告】
2010541094.tif 000033
2010541094.tif 000034
2010541094.tif 000035
2010541094.tif 000036