説明

行傾きコードワード及び列傾きコードワードを使用する画素ブロック値の可逆圧縮のための方法、圧縮器、伸張器及び信号表現

本発明は、奥行き値の画素ブロック(300)の圧縮に関する。基準コードワード(410)は、基準奥行き値の表現として判定される。行傾きコードワード(420)及び列傾きコードワード(430)は、ブロック(300)の行(310)及び列(320)に対する基本奥行き傾きの表現としてそれぞれ判定される。行(310)又は列(320)の少なくとも一部分に沿って傾きが変化する画素位置を示す表現は、行(310)又は列(320)の少なくとも部分集合に対して判定される。モードコードワード(440)は、複数の傾き補正パターンの集合の表現として判定される。各パターンコードワード(450)は、傾き補正パターンのうちの1つの識別子として行(310)又は列(320)に対して選択される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、画素パラメータ値の可逆圧縮及び伸張に関し、特に、デプスバッファ圧縮及び伸張に適切な圧縮及び伸張に関する。
【背景技術】
【0002】
3次元図形のリアルタイムレンダリングは、ゲーム、マンマシンインタフェース、メッセージング及びmコマースを含む複数の魅力的なアプリケーションを移動端末上に有する。3次元レンダリングは計算コストの高いタスクであるため、多くの場合、十分な性能を達成するために専用のハードウェアが構築される必要がある。従って、そのハードウェアアーキテクチャの複雑さを軽減し且つ帯域幅の使用量を低減する革新的な方法が非常に重要である。特に移動端末にとって主に障害となるのは、メモリ帯域幅である。メモリ帯域幅の使用量を低減する一般的な技術は、デプスバッファ圧縮(depth buffer compression)である。
【0003】
一般に三角形等のプリミティブは、ソートされていない順序で描かれる。眼に最近接する三角形のみが書かれることを保証するために、一般にデプスバッファが使用される。デプスバッファは、画素毎にその特定の画素に対する奥行き、すなわち眼までの距離を保持する。新しい画素を書き込む前に、まず対応する奥行きがデプスバッファから読み出される。新しい奥行きが先に書かれた奥行きより小さい場合にのみ、新しい画素は書き込まれる。新しい奥行き値は、デプスバッファに書き込まれる必要がある。この奥行き値の読み出し及び書き込みにより、多くのメモリアクセスが発生し、性能が制限される。
【0004】
デプスバッファ圧縮は、デプスバッファをタイル又は画素ブロックに分割し且つ圧縮形式でタイルを格納することにより動作する。デプスバッファ値を読み出す時、奥行きタイル全体が読み出され且つ伸張される。奥行き値は変更され、タイルをメモリに再度書き込む前にタイルは圧縮される。一般にタイル毎に展開されるため、画素毎に読み出し且つ書き込むのではなく、タイル全体を1度に読み出し且つ書き込むことは問題にならないことが多い。
【0005】
この伸張及び圧縮が特定のタイルに対して数回行なわれてもよいため、圧縮は可逆的、すなわち非破壊的であるのが重要である。
【0006】
デプスバッファは各画素の奥行きを含み、シーンが平面三角形から構成されるため、特定の三角形から生じるタイルの全ての画素は同一直線上にある。特に、タイルの全ての画素が同一の三角形から得られる場合、タイルの全ての画素は同一直線上にある。そのような場合、個々の画素の奥行きを格納するのではなく単に当該三角形の平面の式を格納することによりタイルの可逆的表現を取得できる。このように、多くのデプスバッファアルゴリズムが動作する。Hasselgren及びAkenine-Mollerは、文献[1]において周知のデプスバッファ圧縮方式の広範な論文を提供する。
【0007】
Hasselgren及びAkenine-Mollerは、文献[1]において、差分差分パルス符号変調(DDPCM)を使用する従来の方式の改善例を更に提示する。主な寄与は、補正値{-1, 0, 1}を使用する代わりに画素毎に1ビットのみで実行できることである。これにより、x方向の傾きが2つの値を交互にとるため、常に小さい方の傾きを使用でき、画素毎に傾きに対して1ビットの補正値を使用できることが分かる。
【0008】
補正値が{-1, 0, 1}のうちの1つであり、符号化するために画素毎に2つのビットを使用する先のDDPCM方式と比較して、Hasselgren及びAkenine-Mollerは画素毎に1ビットの補正値を使用し、画素毎に1ビット節約する。換言すると、4×4画素のタイルにおいて13ビット節約されるか、あるいは8×8のタイルに対しては61ビット節約される。しかし、このようにビットが節約されても、Hasselgren及びAkenine-Mollerは可逆的方法で可能な奥行き範囲の約93%しか圧縮できない。物体がカメラ又は閲覧者に近づきすぎる場合、デプスバッファ圧縮アルゴリズムは失敗し、奥行きタイルは圧縮されずに格納される必要がある。
【発明の概要】
【発明が解決しようとする課題】
【0009】
従って、可逆的に圧縮されるタイル数を増加できるように、更に効率的な方法で圧縮タイルのビットを利用できる必要性がある。これにより、メモリ帯域幅は低減される。
【0010】
本発明は、従来技術の構成の上記欠点及び他の欠点を克服する。
【0011】
本発明の一般的な目的は、画素ブロックの効率的な圧縮及び伸張を提供することである。
【0012】
本発明の別の目的は、デプスバッファ値に適応された圧縮及び伸張を提供することである。
【課題を解決するための手段】
【0013】
これらの目的及び他の目的は、添付の請求の範囲により規定される本発明により満たされる。
【0014】
簡単に説明すると、本発明は、デプスバッファ値等の関連する画素パラメータ値を有する画素のブロックの圧縮及び伸張を含む。圧縮は、ブロックに対する基準画素パラメータの表現として基準コードワードを判定することを含む。行傾きコードワードは、ブロック中の行に対する基本パラメータ傾きの表現として判定される。それに応じて、圧縮は、列に対する基本パラメータ傾きの表現として列傾きコードワードを判定することを含む。
【0015】
少なくとも行/列の一部分に沿って傾きが変化する画素位置を示す表現は、少なくとも行/列の画素パラメータ値の一部分に基づいて判定される。そのような表現は、ブロック中の複数の行/列に対して、好ましくは全ての行/列に対して生成される。複数の傾き補正パターンの集合の表現であるモードコードワードが判定される。そのような補正パターンの各々は、行/列に沿って適用可能な位置に依存する傾き修正子を示す特定の事前定義済み表現である。各パターンコードワードは、生成された位置指示表現に基づいて行/列に対して選択される。パターンコードワードは、モードコードワードにより規定されるパターン集合からの傾き補正パターンの表現である。
【0016】
圧縮ブロックの伸張時、基準画素パラメータ値は、圧縮ブロックの基準コードワードに基づいて判定される。行及び/又は列パラメータ傾き等の基本パラメータ傾きは、(行/及び/又は列)傾きコードワードに基づいて生成される。圧縮ブロックのモードコードワードは、複数の傾き補正パターンを含むパターン集合を提供するために採用される。復号化される画素を含む行/列は、関連するパターンコードワードを有する。このパターンコードワードは、提供されたパターン集合の傾き補正パターンのうちの1つを識別するために使用される。画素の画素パラメータ値は、基準パラメータ値、基本パラメータ傾き及び傾き補正パターンを使用して計算される。
【0017】
更に本発明は、画素ブロックを圧縮する圧縮器、圧縮ブロックを伸張する伸張器及び圧縮画素ブロックの信号表現に関する。
【0018】
本発明は、添付の図面と共に以下の説明を参照することにより、本発明の更なる目的及び利点と共に最もよく理解されるだろう。
【図面の簡単な説明】
【0019】
【図1】図1は、本発明の一実施形態に係る圧縮方法を示すフローチャートである。
【図2A−B】図2A及び図2Bは、行毎又は列毎の圧縮において本発明に従って使用される画素ブロックを示す図である。
【図3】図3は、本発明の一実施形態に係る画素ブロックの圧縮表現を示す概略図である。
【図4】図4は、図1の生成ステップの一実施形態を更に詳細に示すフローチャートである。
【図5A−C】図5A〜図5Cは、本発明の圧縮方法で分布表現を生成する一実施形態を概略的に示す図である。
【図6】図6は、本発明に従って使用される利用可能な事前定義済み分布パターンの集合を示す図である。
【図7A】図7Aは、本発明に従って使用される別の画素ブロックを示す図である。
【図7B】図7Bは、図7Aに示す画素ブロックに対して本発明の圧縮方法で画素行を処理する一実施形態を概略的に示す図である。
【図8】図8は、2つの平面を含む画素ブロックを示す図である。
【図9】図9は、本発明に従って使用される他の利用可能な事前定義済み分布パターンの集合を示す図である。
【図10】図10は、本発明に従って使用される更なる利用可能な事前定義済み分布パターンの集合を示す図である。
【図11A】、
【図11B】、
【図11C】図11A〜図11Cは、本発明に従って使用される更に他の利用可能な事前定義済み分布パターンの集合を示す図である。
【図12A−E】図12A〜図12Eは、図10に示す画素ブロックに対して本発明の圧縮方法で画素行を処理する実施形態を概略的に示す図である。
【図13】図13は、本発明の一実施形態に係る伸張方法を示すフローチャートである。
【図14】図14は、本発明の教示が適用されるデプスバッファアーキテクチャを示す概略ブロック図である。
【図15】図15は、本発明の一実施形態に係る圧縮器を示す概略ブロック図である。
【図16】図16は、本発明の一実施形態に係る圧縮器の表現生成器を示す概略ブロック図である。
【図17】図17は、本発明の一実施形態に係る伸張器を示す概略ブロック図である。
【図18A−G】、
【図18H−M】図18A〜図18Gは、8画素の行又は列の実現のために本発明に従って使用される可能な分布パターンの例を示す図である。
【発明を実施するための形態】
【0020】
図中、同一の図中符号は対応する要素又は同様の要素に対して使用される。
【0021】
本発明は、一般に、画素パラメータ値の可逆圧縮及び伸張に関し、特に、デプスバッファ圧縮及び伸張に適する圧縮及び伸張に関する。
【0022】
本発明は、ゲーム、3次元(3D)地図及びシーン、例えば動画メッセージである3Dメッセージ、スクリーンセーバ、マンマシンインタフェース(MMI)等の3D図形と共に使用するのに最適であるが、それらに限定されない。従って、本発明は、1次元(1D)、2次元(2D)又は3D画像等の他の種類の画像又は図形を符号化するためにも採用可能である。
【0023】
本発明において、圧縮及び伸張は、一般に画素のタイル又はブロックの形式で複数の画素を一括処理する。本発明の好適な一実施形態において、画素ブロックは、M×N画素のサイズを有する。ここで、M、Nは整数であるが、M及びNの双方が同時に1にならないという条件付きである。好ましくは、M=2m且つN=2nである。m、nはゼロ又は整数であるが、m及びnが同時にゼロにならないという条件付きである。一般的な実現例において、M=Nであり、そのような好ましいブロック実施形態は、4×4画素、8×8画素又は16×16画素である。
【0024】
表現画素(expression pixel)又は「画像要素」は、ブロック中の要素又はブロックの符号化表現を示す。このブロックは、画像、テクスチャ又はバッファの一部分に対応する。従って、本発明によると、画像要素は、(1D、2D、3D)テクスチャのテクセル(テクスチャ要素)、(1D又は2D)画像の画素又は3D画像のボクセル(体素)であってもよい。一般に、画素は関連する画素パラメータ値又は特徴により特徴付けられる。本発明の好適な一実施形態において、画素パラメータ値は奥行き値又はいわゆるZ値である。この特徴は、特定の画素に対する眼までの奥行き又は距離を表し、レンダリング中に実際に表示される画素を制御する。
【0025】
本発明は、そのような画素ブロックの奥行き値を圧縮及び伸張するのに特に適切であるが、それに限定されず、他の種類の画素パラメータ値及び特徴と共に使用されてもよい。これらには、赤(R)色成分、緑(G)色成分又は青(B)色成分、あるいはYUV又はYCrCb等の他の色空間における色成分等の色成分値が含まれる。更なる例は、画素の透明度又はアルファ値を含む。
【0026】
しかし、圧縮及び伸張は、同一直線上の画素パラメータ値、すなわち1つの平面に位置するパラメータを処理するように構成される。従って、圧縮されるブロックの全ての画素パラメータ値は、パラメータ空間の単一平面に位置するか、あるいは複数の平面の集合、一般に2つの平面の集合のうちの1つの平面に位置する。この必要条件は、元の画素パラメータ値のビット数より少ないビット数を使用して画素ブロックの可逆圧縮を達成できることを示す。
【0027】
更に、以下において、「画像」という用語は、本発明により符号化及び復号化可能な任意の1D、2D又は3D画像又はテクスチャを示すために使用される。それらの画像又はテクスチャは、バンプマップ、法線マップ、写真、ゲーム形式のテクスチャ、テキスト、図面、ダイナミックレンジの広い画像及びテクスチャ等を含むがそれらに限定されない。
【0028】
[圧縮]
図1は、本発明に従って画素のブロックを圧縮する方法を示すフローチャートである。方法は、基準画素パラメータ値の表現である基準コードワードを判定することによりステップS1で開始する。このコードワードは、圧縮されるブロックに存在する画素パラメータ値のうちの1つの表現であるのが好ましい。第1の実施形態において、基準コードワードは、パラメータ値の非量子化値であってもよい。例えば特定のパラメータ値が230=0000 0000 1110 0110bin(24ビットの分解能を有する)であり、基準コードワードが同一のビット分解能を有する場合、値0000 0000 1110 0110binは基準コードワードとして直接使用される。しかし、他の実施形態において、元の画素パラメータ値は、基準コードワードにより表される値より高い精度を有してもよい。そのような場合、基準コードワードは、元の画素パラメータ値の量子化された値又は端数を丸めた値の表現であってもよい。例えば、0000 0000 1110 0110binの基準コードワードは、元の画素パラメータ値229.8の表現として使用されてもよい。また、基準コードワードは、元の画素パラメータ値より少ないビット数を含むことができる。例えば21ビットのコードワードは、24ビットの元の値を表すために使用されてもよく、その一方で先頭ビットが周知であることが仮定される。
【0029】
S1のコードワード判定ステップは、ブロック中の選択された画素位置の画素の画素パラメータ値を検索することを含むのが好ましく、オプションとしてその検索された値からコードワードを計算(量子化)するか又は検索された値を基準コードワードとして直接使用する。選択された画素位置は、ブロック中の事前定義済み位置であるのが好ましく、これは、同一の画素位置が本発明に従って圧縮される全てのブロックに対してコードワード判定ステップS1で使用されることを意味する。好ましい位置は、ブロックの1つの隅に位置付けられる画素である。従来、当該技術におけるデプスバッファ値圧縮の場合、左上隅の画素が使用される。しかし、本発明は、その特定の画素位置に限定されず、任意の隅の画素又は実際にはブロック中の任意の画素を使用できるが、フレーム画素及び特に隅の画素が好ましい。図2A及び図2Bは、符号化される画素330から成る4×4ブロック300を示す。これらの図において、基準コードワードを判定する際に使用される画素位置は、黒丸で印を付けられる。すなわち、左上の隅の画素である。
【0030】
次のステップS2は、ブロックの行に対する基本パラメータ傾きの表現としてブロックに対する行傾きコードワードを判定する。好適な実現例において、ブロック(の少なくとも一部分)の画素パラメータ値は同一直線上にあるため、少なくとも元の非量子化パラメータ値に対して同一の元の行傾きを有する。例えば画素行は、元の値[109.8, 112.6, 115.4, 118.2]を有することができる。本明細書において、傾きは行の隣接するパラメータ値の間の対毎の差分、すなわち118.2-115.4=115.4-112.6=112.6-109.8=2.8である。パラメータ値が同一直線上にある限り、ブロックの他の行に対しても同一の行傾きが有効である。
【0031】
行傾きコードワードは、元の行傾きの整数部の表現、すなわち上記例においては2の表現であるのが好ましい。元の非量子化パラメータ値が圧縮において利用可能である場合、ステップS2のコードワード判定は、ブロックの任意の行の隣接する画素パラメータ値の任意の対の間の差分を計算できる。行傾きコードワードは、計算された傾き(差分)の整数部の表現として判定される。
【0032】
パラメータ値が整数値に丸められるなど、量子化される場合、一般にステップS2において別の方法がとられる。上記で与えられたパラメータ値の端数を丸めた値は[110, 113, 115, 118]である。本明細書において、行の隣接する値の間の対毎の差分は値2又は3を与える。そのような場合、行傾きコードワードは、最小の傾き値の表現として一貫して判定されるか、あるいは最大の傾き値の表現として一貫して判定される。本明細書において重要なことは、最小又は最大の傾き値が符号化される全てのブロックに対して得られる必要があることである。計算された最小の傾き値は、行傾きコードワード判定ステップに対する基礎として一貫して使用されるのが好ましい。これは、負の傾きの場合にも当てはまる。例えば、元の値の場合に傾きは−1.6であり、丸めた値を使用する時は−1又は−2となる。そのような場合、最小の値−2が行傾きコードワード判定に対する基礎として使用されるのが好ましい。
【0033】
次のステップS3は、ブロック中の列に対して類似する手順を実行する。その結果は、ブロックの列に対する基本パラメータ傾きの表現である列傾きコードワードである。このステップS3は、ステップS2と同様に実行されるが、ここでは列のパラメータ値が行のパラメータの代わりに使用される。
【0034】
ステップS1〜S3は、任意の順序で又は実際には同時に実行可能である。
【0035】
次に、画素ブロック300の圧縮は、図2Aに概略的に示されるように行310毎に実行されるか、あるいは図2Bに示されるように列320毎に実行される。品質の観点から、2つの可能性は同等である。以下において、主に行毎の圧縮に関連して本発明を説明する(図2Aを参照)。しかし、本発明の教示は、列毎の圧縮にも適用可能である。後者の場合、以下の説明において、単純に「行」という表現が「列」で置換され、「列」という表現が「行」で置換される。
【0036】
次のステップS4は、少なくとも現在の行(又は図2Bの場合は列)の一部分に沿って傾きが変化する画素位置を示す表現を生成する。このステップS4は、傾きがステップS2で判定された行傾きコードワードにより表されるブロックの基本行傾きと異なる画素位置を示すことにより実現される。従って、基本パラメータ傾き2を有する上記のような画素値[110, 113, 115, 118]の行を仮定する。隣接するパラメータ値の間の差分、すなわち傾きは、この例においては[-, 3, 2, 3]である。この場合、画素位置1及び3は、2とは異なる傾きを有するため、それらの2つの画素位置で傾きが変化する。しかし、画素位置2の傾きは基本行傾きと等しく、そこで傾きは変化しない。基本行傾き値が上記で一覧表示された傾き値から減算される場合、[-, 1, 0, 1]が得られる。その結果、傾きが現在の行に沿って変化する画素位置を示す表現は、1 0 1の形式であってもよい。ここで、1binは傾きの変化を信号で伝送し、0binは、その位置で隣接するパラメータ値の間の差分が基本行傾きと等しいことを示す。
【0037】
位置指示表現は、行の全ての画素パラメータ値に基づいて生成されるのが好ましい。しかし、特定の実施形態に対して、行の画素値の部分集合を単に使用するので十分である。これらの表現は、少なくとも行/列の一部分に沿って進む時のパラメータ値の相対的な分布を示すものと考えられる。
【0038】
ステップS4は、少なくとも1度繰り返される。これを線L1で概略的に示す。これは、位置指示表現が画素ブロックの少なくとも2つの行に対して判定されることを意味する。好適な一実施形態において、ステップS4は、ブロックの行毎に実行される。
【0039】
次のステップS5は、ブロックに対するモードコードワードを判定する。このコードワードは、複数の傾き補正パターンの集合の表現である。そのような各パターンは、行に沿って適用可能な位置に依存する傾き修正子を示す特定の事前定義済み表現である。従って、そのようなパターンは、行の異なる画素位置に対して1つの補正傾き値を取得するための伸張中に基本行傾きに適用可能な傾き修正子を有するビートシーケンスである。4画素の行の場合、パターンは000binから最大111binであってもよい。利用可能な異なるパターン集合が複数存在するのが好ましい。ここで、各集合は利用可能な傾き補正パターンの異なる部分集合を含む。
【0040】
行傾きコードワードが元の非量子化画素パラメータ値を使用することにより取得可能な行傾きの整数部の表現である場合、パターン集合は行傾きの異なる小数部を処理するように構成される。例えば、第1のパターン集合は、元の行傾きの小数部が間隔[0, k1]内である場合にブロックに対して使用され、第2の集合は、小数部が間隔[k1, k2]内である場合に使用され、最後のパターン集合まで繰り返される。これは、間隔[ki, 1]内の小数の傾きを有するブロックを処理するように構成される。
【0041】
従って、モードコードワード判定ステップS5は、複数の事前定義済み集合からパターン集合を選択することを含む。元の非量子化パラメータ値が利用可能であり、元の非量子化行傾きを計算できる場合、パターン集合は、計算された行傾きの特定の小数部に基づいて選択される。しかし、他の応用例において、量子化パラメータ値のみがブロック圧縮と関連して利用可能である。そのような場合、使用する特定のパターン集合は、ステップS4で生成される位置指示表現に基づいて選択されるのが好ましい。その後、少なくとも2つ又は好ましくは全ての位置指示表現が使用され、種々の集合に利用可能な種々の傾き補正パターンと比較される。位置指示表現に対応するパターンを含む集合が選択される。各パターン集合は、集合識別子と関連付けられるのが好ましい。選択されたパターン集合と関連付けられるこの識別子は、ステップS5においてモードコードワードとして使用される。例えば2ビットのモードコードワードは、最大4つの利用可能な異なる集合が存在する場合に使用され、3ビットのモードコードワードは、最大8つの異なる集合を処理できる。
【0042】
ステップS6は、判定したモードコードワードにより表されるパターン集合から傾き補正パターンの表現としてパターンコードワードを判定する。このパターンコードワード判定は、ステップS4において現在の行に対して生成された位置指示表現に基づいて実行される。従って、ステップS6は、行に対して計算された位置指示表現に対応する選択された集合から傾き補正パターンのうちの1つを選択することを含む。パターンコードワードは、選択された傾き補正パターンの標識であると判定される。
【0043】
ステップS6は、ブロックの全ての行に対して又は位置指示表現がステップS4で生成された少なくともそれらの行に対して実行されるのが好ましい。これを線L2で概略的に示す。従って、そのような各行は、判定されたモードコードワードにより表されるパターン集合の補正パターンのうちの1つと関連付けられる割り当てられたパターンコードワードを有する。
【0044】
オプションとして、方法は、次の行に進む時に適用可能である傾き又は画素変更子の判定を含むのが好ましい。そのような傾き変更子は、次の行に進む時に正確な列傾きを取得するために適用される単一の補正項である。例えば、第1の列の量子化画素パラメータ値が[110, 231, 351, 472]であると仮定する。この場合、基本列傾きは、2つの隣接する画素値の間の最小差分、すなわち120である。0binの傾き又は画素変更子は、傾きが実際に120である(この例において、行1から2に進む)行を割り当てられ、1binの変更子は、傾きが120でなく121である行遷移に対して使用される。本明細書の例において、傾き変更子は1 0 1である。ブロックがN行を含む場合、N−1個の傾き変更子が判定されるのが好ましい。
【0045】
従って、方法は、ブロックの少なくとも1つの行(又は図2Bの場合には列)に対して列に対する基本パラメータ傾きに適用可能な傾き変更子を判定する追加のステップを含むのが好ましい。更に変更子判定は、少なくとも列の画素パラメータ値の一部分に基づいて実行される。その後、方法は終了する。
【0046】
圧縮の結果として、元の画素ブロックの圧縮表現が得られる。図3は、そのような圧縮ブロック400を示す。圧縮ブロック300は、基準コードワード410、行傾きコードワード420、列傾きコードワード430、モードコードワード440及び複数のパターンコードワード450を含み、そのようなコードワード450はブロックの行(又は列)毎に1つであるのが好ましい。圧縮ブロック400は、上述したように列の方向に対して画素又は傾き変更子460を更に含むのが好ましい。圧縮ブロック400の含まれる成分の実際の順序が図示される順序と異なってもよいことは、本発明により理解される。
【0047】
図4は、位置指示表現を生成する一実施形態を更に詳細に示すフローチャートである。方法は、図1のステップS3から継続する。次のステップS10は、パラメータ値が既に量子化されていない限り、元のパラメータ値を量子化する。量子化の一般的な例は、値を整数に丸めることである。一般に量子化は、元のパラメータ値を規定された制限されたビットサイズを有する量子化値に書き込むことを含む。量子化値は、元の値の最適なQビット表現であるのが好ましい。ここで、Qは量子化値のビットサイズである。次のステップS11は、行(又は列)の隣接する量子化画素パラメータ値及び行(又は列)の基本パラメータ傾きの対毎の減算を実行する。従って、計算は、Pi+1 - Pi- Rを判定することを含む。ここで、Piはある行の位置iにおける量子化画素パラメータ値であり、Rは行に対する基本パラメータ傾きである。その後、方法は図1のステップS5に継続するか又は次の行の位置指示表現を判定するためにステップS10に戻る。
【0048】
図5A〜図5Cは、本発明に従う位置指示表現の判定が基づく原理を示す。例えば4画素の行は、元のパラメータ値[109.8, 112.6, 115.4, 118.2]を有する。これは、図5Aに示すように、傾き2.8の線を描くことに等しい。
【0049】
図5Aにおいて、画素の中心線が描かれた線と交差する画素に印がつけられている。印がつけられた画素は、元の値を量子化することにより取得される値、すなわち[110, 113, 115, 118]を表す。
【0050】
非量子化パラメータ値から傾き2.8の整数部、すなわち2を除去することにより、値[109.8, 110.6, 111.4, 112.2]が得られる。これは、小数の傾き部分のみが残ったために線の傾きが1より小さい図5Bと同等である。この場合、小数の傾きは2.8 - 2.0 = 0.8である。
【0051】
図5Bから、傾きが変化する画素位置を識別できる。これは、行に沿って進む時に1段階進む必要がある位置に対応する。画素0はアンカー又は基準値であり、補正値を有さない。画素1は、先の画素より1段階高い。これは、この位置において行傾きが変化することを意味し、値1binが得られる。画素2は、先の値と同一の高さであり、傾きは変化しない。従って、画素は値0binを得る。最後に、画素3は補正値1binを得る。図5Cは、最終的な位置指示表現101binを示し、表現が種々のセグメント長のステップパターンとして考えられる。
【0052】
ここでの本発明の鍵は、全ての行が全く同一の小数の傾き、この場合0.8を有することを認識することである。これは、行間の差分のみが傾きではなく線の位置であることを意味する。これは、種々のステップの長さを有する種々のステップパターンに対応する。
【0053】
図6は、4画素の行に対して可能である全ての補正パターン、すなわち位置指示表現を示す。パターンは、4つの異なるパターン集合に編成されている。第1のパターン集合は、割り当てられたモードコードワード00binを有し、パターン000bin、001bin、010bin及び100binを含む。これらのパターンは、長さ3及び4のセグメントに対応する。モードは、0〜1/3の分数の傾きを範囲に含む。次の集合は、モードコードワード01binを有し、補正パターン101bin、001bin、010bin及び100binを含む。この集合は、2画素及び3画素のセグメント長を有するパターンを含み、1/3〜1/2の分数の傾きを範囲に含む。第3の集合は、モードコードワード10binを有し、パターン101bin、110bin、010bin及び011binを含む。パターンは、長さが2画素のセグメントの間に長さが1画素の0又は1つのセグメントを有する。間隔1/2〜2/3の分数の傾きは、この集合により処理される。最終的な集合は、コードワード11binを割り当てられ、補正パターン101bin、110bin、111bin及び011binを含む。これらのパターンは、長さが2画素のセグメントの間に長さが1画素の1つ又は2つのセグメントを有し、分数の間隔2/3〜1を範囲に含む。
【0054】
Hasselgren及びAkenine-Mollerにより提案された従来のDDPCM手順[1]は、補正マトリクスの4×4ブロック毎に15ビットを使用する。本発明は、このブロックサイズに対して、1つの2ビットモードコードワード、4つの2ビットパターンコードワード(行又は列毎に1つ)及び3つの1ビット傾き変更子、結果として13ビットのみを必要とする。これは、従来の解決策と比較して2ビット節約されることを意味する。この2ビットの節約は、圧縮ブロックの合計のサイズを減少する目的で使用される。あるいは、従来と同一の合計の圧縮ブロックサイズが有利である場合、2つのフリービットは、基準コードワード及び/又は傾きコードワードの分解能を増加させるために使用される。そのような増加は、可逆的に圧縮されるブロックの割合が従来技術を使用する場合と比較して増加することを意味する。
【0055】
[圧縮例]
以下において、本発明の一連の処理を示すために圧縮例を示す。以下のパラメータ値を有する量子化入力画素ブロックを仮定する。

【0056】
第1に、基準パラメータ画素値が選択され、基準コードワードが判定される。コードワードは、左上隅の画素値のビット表現、すなわち110であってもよい。この例において、ブロックは、図2Aに示すように行毎に圧縮される。基本行パラメータ傾きは、行において1段階進む時の最小の傾きとして規定される。この例において、種々の行傾きは2及び3であり、これは、行傾きコードワードが2のビット表現として判定されることを意味する。対応する列傾きは120及び121であり、これは、列傾きコードワードが120のビット表現として判定される。その後、対毎の減算が実行される。ここで、同一行の先の隣接するパラメータ値は次のパラメータ値から減算される。更に、基本行パラメータ傾き2は結果として得られる差分から減算され、位置指示表現を取得する。第1の行の結果は以下の通りである。
113 - 110 - 2 = 1
115 - 113 - 2 = 0
118 - 115 - 2 = 1
【0057】
その行の位置指示表現は101binである。他の3つの行に対して同一の手順を実行すると、以下が得られる。

【0058】
ブロックに対して使用する関連するパターン集合は、それらの4つの位置指示表現に基づいて選択される。図6を調査することにより、モードコードワード11binを有するパターン集合は、全ての要求された補正パターンを含むことが分かる。位置指示表現に対応する特定の補正パターンが行に対して判定される。第1の行は表現101binを有する。これは、図6のパターンコードワード00binを含む補正パターンに対応する。残りの行は、コードワード11bin、10bin及び01binを有する。
【0059】
最後に、列に対する傾き変更子は、第1の列における隣接する画素パラメータ値の対毎の減算及び基本列パラメータ傾きの減算により判定される。結果は以下のようになる。
231 - 110 - 120 = 1
351 - 231 - 120 = 0
472 - 351 - 120 = 1
【0060】
従って、傾き変更子は101binである。最終的に圧縮ブロックは以下を含む。
i) 110のビット表現−基準コードワード
ii) 2のビット表現−行傾きコードワード
iii)120のビット表現−列傾きコードワード
iv) 11bin−モードコードワード
v) 00bin、11bin、10bin、01bin−パターンコードワード
vi) 101bin−傾き変更子
【0061】
文献[1]の従来技術と比較して本発明を採用する利益は、4×4ブロックに対して2ビットであった。これは、単なる小さな利点と考えられる可能性がある。しかし、この2ビットの節約が圧縮品質を低下せずに無償で得られることを認識すべきである。8×8ブロック等の更に大きなブロックサイズの場合、利益は従来技術と比較して大きく増加する。
【0062】
4×4ブロックと比較して、更に多くの分数の傾きを可能にするために8×8のブロックに対して更に多くのパターンモードが必要とされる。その理由は、全ての行が4画素ではなく8画素有するために更に細かい粒状表現が可能であるためである。
【0063】
可能な補正パターンの解析は、8つのパターンモードが全ての例を範囲に含むことを示す。
モードA:長さ1又は2のセグメントを含む補正パターン、(4つ以上の連続した1)
モードB:長さ1又は2のセグメントを含む補正パターン、(3つ又は4つの連続した1)
モードC:長さ1又は2のセグメントを含む補正パターン、(2つ又は3つの連続した1)
モードD:長さ1又は2のセグメントを含む補正パターン、(1つ又は2つの連続した1)
モードE:長さ1又は2のセグメントを含む補正パターン、(ゼロ又は1つの連続した1)
モードF:長さ2又は3のセグメントを含む補正パターン
モードG:長さ3、4又は5のセグメントを含む補正パターン
モードH:長さ5、6、7又は8のセグメントを含む補正パターン
【0064】
それらの全てのモードに対して、8画素の行全体を符号化するのに4ビットのみ必要である(付録を参照)。従って、8×8ブロックにおいて、モードコードワードは3ビットになり、パターンコードワードは4ビットである。これは、基準コードワード、行及び列傾きコードワードに加えて、圧縮8×8ブロックが3 + 8x4 + 7 = 42ビットを含む。最後の7ビットは、第1の列に対する7つの1ビット傾き変更子である。これは、文献[1]の従来の解決策と比較されるべきであり、補正マトリクスに対して63ビット必要とする。その結果、圧縮ブロック毎に21ビット節約され、基準コードワード、行傾きコードワード及び/又は列傾きコードワードにおける分解能を増加するために使用される。あるいは、圧縮ブロックの合計サイズは減少される。
【0065】
この解決策は、理論的には適切であるが、実現例の観点から最適でない可能性がある。16個の7ビットパターン(補正パターン)の中から選択することは、表面積が非常に大きくなる。第2に、8×8の場合にそれ程多くの追加のビットを必要としない。全分解能で全てのパラメータを符号化する場合、以下が得られる。
基準コードワード:24ビット
行及び列傾きコードワード:2×25ビット
モードコードワード:3ビット
パターンコードワード:8×4ビット
傾き変更子:7ビット
合計:116ビット
【0066】
これは、128より非常に少なく、従って、実現例の負担を緩和するために少し非効率的な符号化を使用することは賢明だろう。一般に、圧縮ブロックの所望のビットサイズは、デプスバッファアーキテクチャで使用されるバスの帯域幅により規定される。圧縮ブロックは、1回のメモリアクセスで又は可能な限り少ないアクセスで取り出されるのが好ましい。今日、デプスバッファアーキテクチャに対するバス帯域幅は一般に64又は128ビットである。その結果、116ビットブロックが128ビットブロックと同一回数のメモリアクセスを必要とするため、128ビット又は116ビットと比較して僅かに少ないビットの圧縮ブロックサイズを有するのがより適切だろう。しかし、シリコン領域に関して実現例の負担が128ビットバージョンに対してより116ビットバージョンに対してより大きい場合、後者が最も望ましいと考えられる。
【0067】
別の例は、2行の4画素行(3つの補正ビット+1ビット傾き変更子)として8画素行(7つの補正ビット)を符号化することである。4×4の場合と同一の符号化が使用可能である。行毎に2つの2ビットパターンコードワード+1ビット傾き変更子が必要であるため、行毎に5ビット必要である。8×8ブロックは、以下を使用して符号化される。
基準コードワード:24ビット
行及び列傾きコードワード:2×25ビット
モードコードワード:2ビット
パターンコードワード:8×5ビット
傾き変更子:7ビット
合計:123ビット
【0068】
好適な圧縮ブロックサイズとして考えられる場合、これは、依然として128ビットのバジェットを下回る。
【0069】
そのような場合、図1のステップS4は、行/列に対して行/列の画素パラメータ値の第1の部分に基づいて第1の位置指示表現を生成することを含む。ステップS4は、行/列の画素パラメータの第2の(残りの)部分に基づいて第2の位置指示表現を生成することを更に含む。ステップS6は、行/列毎に2つの画素部分の各々に対してパターンコードワードを判定することを含む。
【0070】
上記で提示された本発明の例において、ブロックの全ての画素パラメータ値は1つの平面にある。これは、デプスバッファの非常に多くの種々のブロックを範囲に含む。しかし、2つ以上の三角形が少なくとも部分的に所定のブロック内に位置することが可能な場合がある。そのような場合、ブロックの画素パラメータ値は、複数の種々の平面のうちの1つに属する。ブロック毎に1つの平面又はブロック毎に2つの平面が許可される場合、大多数のブロックが処理される。以下において、ブロック毎に2つの平面の解決策が提示される。解決策は、線が2つの平面間を分割するために使用されると仮定する。分割するために線を使用することは、全ての例を範囲に含むわけではない。例えば、三角形の先端部がブロック内にある場合やそのようなタイルが圧縮されないままである場合がある。しかし、殆どの例がこの単純な分割を使用して処理される。図8に示すように、画素は、直線を使用して2つの区画に分割される。第1の画素分割は第1の平面内に位置し、他方の分割は第2の平面内に位置する。尚、本発明は、図8に示す特定の分割に限定されず、ブロックにおいて線により分離される2つの平面を有する任意のブロックを処理できる。
【0071】
一般に、実際の画素パラメータ値に依存して2つの平面に対して同一のパターンモードを有することはできない。これは、パターンモードが一般に2つの平面に対して異なる分数の傾きに依存するためである。
【0072】
線は、左上の画素(黒丸で印をつけられた)及び右下の画素(黒丸で印をつけられた)を基準パラメータ値又はアンカー点として使用でき、あるいは右上の画素及び左下の画素を使用できる。斜めビットで示される1ビットは、圧縮ブロックに格納され、それらの2つの構成から選択する。分割は、Hasselgren及びAkenine-Moller[1]により教示される方法と同一の方法で符号化されるのが好ましい。簡単に説明すると、少なくとも行又は列の一部分に対する位置指示表現が計算される。行又は列の部分の2つの隣接する画素の丸められた画素パラメータ値の間の差分が基本行(列)パラメータ傾きを2以上上回る場合、中断点に達した。その画素の水平(垂直)座標が格納される。各行又は各列に沿って第1のそのような中断点を格納する。中断点が見つけられる一方で列に沿って横断する場合、1つの行ではなく全ての残りの行にはゼロの中断点座標が与えられる。
【0073】
図8において、分割は、太いぎざぎざの線で印をつけられる。従って、例において、第1の行は最も左側の平面に完全に属し、第2の線に対しては最初の7画素が最も左側の平面に属し、最後の画素は最も右側の平面に属する。
【0074】
単に上記ビットパターンを格納することと比較してビットを節約するために、長さの合計が8になる行毎(又は列毎の圧縮が使用される場合は列毎)に2つのセグメントを格納できる必要がある。これを行なうために、3、5及び6画素に対して複数のパターンモードを導入する。
【0075】
図9は、3ビットの行セグメントに対して利用可能な補正パターン集合を示す図である。図から分かるように、2つのパターンモードが存在する。各パターンモードは、3つの補正パターンを含む。すなわち、モード0binの場合には00bin、01bin、10binを含み、モード1binの場合には11bin、01bin、10binを含む。
【0076】
各集合に3つのパターンが存在するため、2ビットパターンコードワードが要求される。しかし、更に以下で説明されるように、特に3画素行の部分にモードコードワード及びパターンコードワードをより効率的に格納できる。
【0077】
図10は、5画素の行部分の場合に利用可能な6つのパターン集合を示す。図示するように、そのようなパターン集合の各々は5つの異なる補正パターンを含む。3ビットのパターンコードワードサイズは、種々の補正パターンを表すために使用される。しかし、本明細書において、以下に更に示すように、更に効率的な方法が可能である。
【0078】
図11A〜図11Cは、6画素の行部分に対して利用可能である集合毎に6つの傾き補正パターンを含む7つのパターン集合を一括して示す。
【0079】
図8を参照すると、行を分割するのに9つの可能性が存在する。例えば、第1の行は最も左側の平面に割り当てられる8画素を有し、最も右側の平面に割り当てられる画素はない。最後の行は、最も左側の平面に割り当てられる画素を1つ有し、7つの画素は最も右側の平面に割り当てられる。最後(第9)の組合せは図示しないが、全ての8つの画素が最も右側の平面に割り当てられる。
【0080】
左側に8画素−右側に0画素の分割
図12Aに示すように、境界の左側の8つの画素310に対して、6画素の行部分312+1つの3画素の行部分314として行310を処理する。従って、現在の行は、1つの1ビット傾き変更子、6画素の行部分312に対する3ビットの第1のパターンコードワード及び3画素の部分314に対する2ビットの第2のパターンコードワードを必要とし、その結果、合計6ビットとなる。
【0081】
左側に7画素−右側に1画素の分割
この例を図12Bに示す。ここでも、左側傾き変更子(y成分)に対する1ビット及び6画素の行部分312に対する3ビットパターンコードワード+境界の左側の残りの画素330に対する単一の傾き変更子を使用する。境界の右側には、単一の傾き変更子(y成分)を有する。合計で、左側に1+3+1ビット及び右側に1ビットであり、合計で6ビットとなる。
【0082】
左側に6画素−右側に2画素
図12Cに示すように、ここでは、左側傾き変更子(y成分)に対する1ビット及び境界の左側の6画素の行部分312に対する3ビットパターンコードワードを使用する。右側には、傾き変更子(y成分)及び単一画素330に対する1ビットの傾き変更子を有する。従って、左側に1+3ビット及び右側に1+1ビットであり、合計で6ビットとなる。
【0083】
左側に5画素−右側に3画素
図12Dに示すように、単純な解決策は、境界の左側の5画素の行部分及び右側の3画素のセグメント312を使用することである。
【0084】
しかし、これに対する1つの問題は、5画素のチャンクが個々に格納される場合に3ビットを必要とする5進変数により表されることである。また、3セグメントは3進変数であり、2ビットを必要とする。2つの傾き変更子(y成分)ビットを共に考慮すると、これは7ビットである。これは、全ての他の組合せが6ビットで管理されるため不便である。しかし、実際には、現在の例に対してこのビット利用を低減できる。
【0085】
そのような場合、5進変数は、3進変数と共に格納される。5 x 3 = 15 < 16であるため、双方のセグメントを格納するのに4ビットのみ必要である。例えば、表Iの符号化が使用される。

【0086】
このように、傾き変更子(y成分)に対して2ビット及びパターンコードワードに対して4ビットを必要とし、合計で6ビットとなる。
【0087】
左側に4画素−右側に4画素
これは、単純な例であり、図12Eに示すように境界の両側の画素行部分312、314に対して4画素パターンを使用できる。
【0088】
従って、傾き変更子(y成分)に対して1ビット及び左側のパターンコードワードに対して3ビット及び右側のパターンコードワードに対して3ビットを使用する。合計で6ビットとなる。
【0089】
行の境界の左側に3画素、2画素、1画素及びゼロ画素、並びに右側に5画素、6画素、7画素及び8画素を有する例に対しては、2つの画素部分が交換されるものの、上述と同様の符号化が利用される。
【0090】
尚、種々の行に対して種々の行セグメント長を使用できるが、全ての行に対して同一のモードを使用できる。しかし、行が6画素行セグメントを含み、同一平面の別の行が3画素行セグメントを含む状況が起こる可能性があり、6画素行セグメントはモード110binを必要とする。3画素行部分の場合、選択対象のモードを2つのみ、すなわち0bin及び1binのみ有する。そのような場合、モード(コードワード)及びパターン集合の選択は、以下の表IIにしたがって実行される。表IIにおいて、チャンクの長さに対して一覧表示された種々のモードは、図6、図9、図10及び図11A〜図11Cに示す番号付けに対応する。

【0091】
従って、3ビットを使用して平面毎に1つのモードコードワードを格納する必要がある。2つの平面を有するため、これは、行コードワードに対して6ビットを意味する。上述したように、合計で行毎に6ビット必要であり且つ8行有するため、パターンコードワード及び傾き変更子に対して8x6 = 48ビット必要である。しかし、左上及び右下のy成分(又は右上及び左下)に対して傾き変更子が必要ないため、パターンコードワード及び傾き変更子に対して46ビット必要となる。モードコードワードと合わせると、46 + 6 = 52ビットとなる。これは、62ビットを必要とする文献[1]で提示されるマトリクスを用いた解決策と比較されるべきであり、従って、本発明は、従来技術と比較して2つの平面を有するブロック毎に10ビットのビット節約を達成する。
【0092】
文献[1]の2平面8×8システムの192ビットバージョンを参照すると、以下のビットレイアウトが提示される。
斜めビット:1ビット
アンカー点:21+22=43ビット
デルタ:4×15=60ビット
分割ビット:26ビット
補正ビット:62ビット
合計:192ビット
【0093】
本発明を使用すると、62ビットではなく52ビットを使用して補正ビットを符号化できる。ブロックに対して同様の合計のビットサイズが望ましい場合、可能なビット分布は以下のようになる。
斜めビット:1ビット
基準コードワード:2×24=48ビット
行傾きコードワード:2×16=32ビット
列傾きコードワード:2×16=32ビット
分割ビット:26ビット
補正ビット*:52ビット
合計:191ビット
*補正ビットはモードコードワード、パターンコードワード及び傾き変更子を表す。
【0094】
この図示する例において、基準コードワード及び傾きコードワードに使用されるビット数は、文献[1]と比較して増加した。あるいは、基準コードワードに使用されるビット数が僅かに増加するか又は全く増加せずに、より多くのビットが傾きコードワードに使用される。いずれの場合においても、他のパラメータに対するビット数が増加したことは、本発明がデプスバッファのより高い割合のブロックを圧縮できることを意味し、その結果、メモリ帯域幅が低減されることを意味する。
【0095】
文献[1]の4×4システムと比較すると、本発明は、2ビット又はビットの3%だけ一平面モードを改善した。これらの2ビットは、パラメータの範囲を拡張するために使用され、より高い割合のタイルを圧縮可能にし、それによりメモリ帯域幅に対する要求を低減する。文献[1]の8×8システムと比較すると、本発明は、14〜20ビット又はビットの11〜16%だけ一平面モードを改善した。従って、一平面モードは、全ての可能な一平面ブロックを処理でき、このモードを使用して圧縮可能なタイルの割合を増加する。二平面モードは、10ビット又はビットの8%だけ改善される。これらのビットは、より高い割合のブロックが圧縮されるように、パラメータの範囲を向上するために使用される。
【0096】
従って、本発明は、基準コードワード、行傾きコードワード、列傾きコードワード及び変更子コードワードを判定することによりM×N画素のブロックを圧縮できる。ここで、変更子コードワードは、基本行パラメータ傾き及び基本列パラメータ傾きの少なくとも一方に適用可能な複数の傾き変更子又は修正子の表現である。この変更子コードワードは、モードコードワード、パターンコードワード及び傾き変更子を一括して表す。明らかに従来技術とは対照的に、本発明は合計の長さがM×N−1ビットより小さくなるようにそのような変更子コードワードを判定できる。例えば、Hasselgren及びAkenine-Mollerが4×4ブロックを含む補正マトリクスを表すのに15ビットを必要とする一方、本発明は13ビットのみ必要とする。同様に、従来技術は8×8ブロックを含む補正マトリクスに対して少なくとも63ビットを必要とし、本発明はそのようなブロックを43ビットで処理できる。
【0097】
少しの間、図1に戻る。ブロックが上述したように2つの平面を含む場合、ステップS1は、第1の平面の画素に対する第1の基準コードワードを判定すること及び第2の平面の画素に対する第2の基準コードワードを判定することを含む。2つのコードワードは、ブロックの左上の隅及び右下の隅、あるいは右上の隅及び左下の隅の位置の画素パラメータ値を表すのが好ましい。それに応じて、ステップS2及びS3は、ブロックの2つの平面の各々に対して行及び列傾きコードワードを判定することを含む。これらのステップは、ブロックの各平面にのみ属する画素を使用して上述したように実行される。
【0098】
ステップS4は、行又は列に対して行/列の画素パラメータの第1の部分に基づいて、第1の行/列の部分に沿って傾きが変化する画素位置を示す第1の表現を生成することを含む。ステップS4は、行/列に対して行/列の画素パラメータの第2の部分に基づいて、第2の部分に沿って傾きが変化する画素位置を示す第2の表現を生成することを更に含む。この場合、第1の行/列の部分は第1の平面に属し、第2の行/列の部分は第2の平面に属する。このステップS4は、ブロック中の全ての行/列に対して繰り返されるのが好ましい。尚、行/列の1つに対して、全ての画素が1つの平面にのみ属してもよい。そのような場合、単一の位置指示表現がその行/列に対して生成される。
【0099】
ステップS5は、ブロックの第1の平面に対する第1のモードコードワード及び第2の平面に対する第2のモードコードワードを判定する。コードワード判定は、異なる平面に属する行/列に対する生成された位置指示表現及び好ましくは上記で一覧表示されて提示された表IIに基づいて実行されるのが好ましい。殆どの実際的な例において、2つのモードコードワードは種々のビット値を有するため、種々のパターン集合を表す。
【0100】
ステップS6は、ブロック中の平面毎に使用されるパターン集合から選択される傾き補正パターンの表現として種々の行/列の部分に対するパターンコードワードを判定する。従って、一般に第1の平面は、第1のパターン集合から補正パターンを選択でき、第2の異なるパターン集合からの傾き補正パターンは、第2の平面の行/列の部分に対して利用可能である。パターンコードワード判定は、種々の行/列の部分に対して生成される位置指示表現に基づいて実行される。尚、2つのパターンコードワードが共に生成されるように、完全なブロックは単一の動作で符号化される。
【0101】
最後に、傾き変更子は、基本的に上述の手順を平面毎に1回実行することにより2つの平面に対して判定される。
【0102】
図1に示す方法は、行/列の分割画素を判定することを更に含む。第1の平面に属する行/列の部分及び第2の平面に属する行/列の部分は、分割画素に基づいて規定される。そのような分割画素は、ブロック中の複数の行/列に対して判定されるのが好ましい。
【0103】
[伸張]
図13は、圧縮画素ブロックの画素を伸張する方法を示すフローチャートである。方法はステップS20で開始し、基準画素パラメータ値が基準コードワードに基づいて生成される。一般的な一実現例において、基準値とコードワードとの間には1対1関係があり、ステップS20は、単純に圧縮ブロックから基準コードワードに対応するビットを検索することを含む。しかし、他の応用例において、基準値は、例えばYビット値を得るために単一ビットをコピーすること又はYビット値を得るために最上位ビットである1binのワード等の事前定義済みビットワードをXビットコードワードに追加すること等、基準コードワードのXビットをYビット値に拡張することにより取得される。ここで、X≠Yである。
【0104】
基本パラメータ傾きは、ステップS21で判定される。このステップは、ブロックの行傾きコードワードに基づいて基本行パラメータ傾きを判定し、それにより列傾きコードワードに基づいて基本列パラメータ傾きを判定することを含むことができるが、行及び列パラメータ傾きの双方を判定することを含むのが好ましい。この生成は、基準値に対して上述したような単純なビット検索処理又は拡張処理により実行される。
【0105】
次のステップS22は、圧縮ブロックのモードコードワードに基づいて補正パターンの集合を提供する。ブロックの各行/各列は、ステップS22で提供されるパターン集合の傾き補正パターンの1つを選択するためにステップS23で使用されるパターンコードワードと関連付けられる。
【0106】
ステップS20〜S22は、任意の順序で又は実際には同時に実行可能である。
【0107】
ブロック中の画素のパラメータ値は、ステップS20からの基準画素パラメータ値、ステップS21からの基本パラメータ傾き、すなわち基本行パラメータ傾き及び/又は基本列パラメータ傾き、並びに選択された傾き補正パターンに基づいてステップS24で計算される。
【0108】
オプションとして、ブロック中の画素の特定の位置に依存して、基本列/傾きパラメータ傾きに適用可能な1つ以上の傾き変更子は、ステップS24の値の計算で使用される。
【0109】
その後、方法は終了する。
【0110】
ステップS23で選択される補正パターンは、複数の傾き修正子を含む。ステップS24のパラメータ値計算で使用する特定の傾き修正子は、画素ブロックの行又は列の画素の位置に依存する。
【0111】
以下の式1は、行毎の伸張の場合にステップS24の画素パラメータ値の計算を表すために使用される(図2Aを参照)。

【0112】
式中、Value(x, y)はブロック中の画素位置(x, y)の計算されたパラメータ値を表す。x = 0, 1, ..., M、且つy = 0, 1, ..., N(M、Nは整数であるが、M及びNの双方が1になることはないという条件付きである)である。Rは基準パラメータ値であり、Δxは基本行パラメータ傾きであり、Δyは基本列パラメータ傾きであり、Pxiは行の画素位置iにおける傾き修正子であり、且つ傾き補正パターンから取得され、Syj は行jに割り当てられる傾き修正子である。式1において、Px0=0、 且つ、Sy0=0である。列毎の伸張の場合は図2Bを参照し、式1は書き換えられて以下のようになる。
【0113】

式中、Pyi は列の画素位置iにおける傾き修正子であり、且つ傾き補正パターンから取得され、Sxjは列jに割り当てられる傾き修正子である。式2において、Py0=0、 且つ、Sx0=0である。
【0114】
[伸張例]
例えば、以下の圧縮ブロック表現を仮定する。
基準コードワード: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
【0115】
使用する特定のパターン集合は、図6のパターン2(10bin)である。第1の行において、補正パターンは1 0 1であるべきである。第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
【0116】
第2の行に対する補正パターンは、パターンコードワードがその行に対して01binであるため、1 1 0であるべきである。第2の行のパラメータ値は以下のようになる。
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
同様の手順が残りの行に対して実行される。
【0117】
[実現例の態様]
図14は、本発明の教示が適用されるデプスバッファアーキテクチャ1を示す概略図である。アーキテクチャは、特に奥行き値を含む画素ブロックを格納するランダムアクセスメモリ(RAM)50を含む。奥行きユニット(DEPTH UNIT)10は、RAM50から取り出される圧縮ブロックを伸張する本発明に係る伸張器200を含む。伸張又は復号化ブロックは、奥行きユニット10の関連するタイルキャッシュ14に一時的に格納される。本発明に係る圧縮器100は、RAM50に格納するためにキャッシュ14に存在する画素ブロックを圧縮するために奥行きユニット10に提供される。
【0118】
好適な一実施形態において、奥行きユニット10はタイルテーブルキャッシュ12を更に含む。このテーブルキャッシュ12は、画素ブロックと関連付けられるヘッダ情報を格納するが、デプスバッファデータとは別個に保持される。一般にタイルテーブルエントリは、関連する画素ブロックがRAM50に非圧縮形式で格納されるか又は圧縮形式で格納されるかを示す信号を伝送するフラグを含む。後者の場合、種々の圧縮ブロックが種々の合計ビット長を有することができるため、フラグは圧縮ブロックのサイズを示す信号を更に伝送するのが好ましい。例えば、元のサイズの75%で圧縮されるか、元のサイズの50%で圧縮されるか又は元のサイズの25%で圧縮される非圧縮ブロックを示す信号を伝送するために2ビットフラグが使用される。
【0119】
ラスタライザ20は、奥行きユニット10に接続され、画素の実際の展開を実行する。ラスタライザ20は、画素の奥行き及び色を計算するのに採用される1つ以上の画素パイプライン30に接続される。各画素パイプライン30は、先に描かれた幾何学的形状により隠蔽される画素、すなわちより大きな奥行き値を有する画素を廃棄する役割を果たす奥行きテストユニット40に接続される。
【0120】
[圧縮器]
図15は、本発明に係る圧縮器100を示す概略ブロック図である。圧縮器100は、圧縮される画素ブロックの基準画素パラメータ値の表現として基準コードワードを判定するように構成される基準量子化器110を含む。行傾き量子化器120は、上述したようにブロック中の行に対して基本パラメータ傾きの表現としてブロックに対する行傾きコードワードを判定する。対応する列傾き量子化器130は、ブロック列に対する基本パラメータ傾きを判定するように構成される。
【0121】
圧縮器100は、少なくともブロックの一部分の各行/各列に対して、好ましくはブロック中の全ての行/列に対して位置指示表現を生成する表現生成器140を更に含む。生成器140は、少なくとも行/列(の一部分)の画素パラメータ値の一部に基づいて表現生成を実行するのが好ましい。モード選択器150は、行/列に沿って適用可能な特定の事前定義済み傾き修正子の複数の補正パターンの集合の表現としてモードコードワードを判定するために圧縮器100に提供される。モード選択器150は、生成器140により生成される位置指示表現に基づいて複数の規定済みパターン集合からそのような1つの集合を選択するのが好ましい。そのようなパターン集合が選択されると、モード選択器150は、選択されたパターン集合の表現としてモードコードワードを提供する。
【0122】
パターンマネージャ160は、少なくとも1つの行/列に対して、好ましくはブロック中の全ての行/列に対して、モード選択器150により選択されたパターン集合の傾き補正パターンのうちの1つの表現としてパターンコードワードを判定するためにモード選択器150に接続されて構成される。マネージャ160は、表現生成器140に更に接続され、種々の行/列に使用する集合の傾き補正パターンを判定する際に行/列に対する特定の位置指示表現を使用する。
【0123】
図示しないが、圧縮器100は、伸張中に基本列/行パラメータ傾きに適用可能な少なくとも1つの傾き変更子を生成する変更子生成器を更に含むのが好ましい。
【0124】
上述したように、特に8画素の行/列が2つの4画素のチャンクとして管理される場合、パターンマネージャ160は、実際にブロックの行/列毎に2つのパターンコードワードを判定できる。更に、ブロック中の画素が同一直線上になく2つの平面の一方に属する場合、量子化器110は第1の基準コードワード及び第2の基準コードワード、すなわちブロックの平面毎に1つの基準コードワードを判定する。同様に、傾き量子化器120、130は、第1の行及び列傾きコードワード、並びに第2の行及び列傾きコードワードを判定する。表現生成器140は、ブロック中のいくつかの行/列に対して2つの位置指示表現を判定し、その一方で、他の行/列に対しては行/列のチャンクが含むビット数に依存して1つのそのような表現のみを判定する。モード選択器150は、第1の平面に対する第1のモードコードワード及び第2の平面に対する第2のモードコードワードを判定する。パターンマネージャ160は、第1の平面に存在する行/列のチャンクに対する第1のモードコードワードにより規定される集合の傾き補正パターンを表すパターンコードワードを選択し、第2の平面の行/列のチャンクに対する第2のモードコードワードにより規定される集合の傾き補正パターンを表すパターンコードワードを選択する。
【0125】
圧縮器100のユニット110〜160は、ソフトウェア、ハードウェア又はそれらの組合せとして提供されてもよい。ユニット110〜160は、圧縮器100に共に実現されてもよい。あるいは、いくつかのユニットがデプスバッファアーキテクチャの他の場所に提供される分散型実現例も可能である。
【0126】
図16は、表現生成器140の一実施形態を示す概略ブロック図である。この生成器140は、元のパラメータ値を量子化して量子化値にするように、例えば丸めて量子化値にするように構成されるオプションの値量子化器142を含む。入力パラメータ値が既に量子化されている場合、このユニット142は省略可能である。計算器144は、少なくとも行/列の一部分の画素毎に、行/列の先行画素の量子化パラメータ値又は行/列に対する基準パラメータ値及び基本パラメータ傾きを現在の画素の量子化パラメータ値から減算するように生成器140に構成される。この手順が行/列(の一部分)の全ての画素に対して実行されると、位置指示表現が判定される。
【0127】
表現生成器140のユニット142及び144は、ソフトウェア、ハードウェア又はそれらの組合せとして提供されてもよい。ユニット142及び144は、表現生成器140に共に実現されてもよい。あるいは、いくつかのユニットが圧縮器の他の場所に提供される分散型実現例も可能である。
【0128】
[伸張器]
図17は、本発明に係る伸張器200を示す概略ブロック図である。伸張器200は、圧縮画素ブロックの基準コードワードに基づいて基準画素パラメータ値を生成する基準生成器210を含む。生成器210は、基準値を提供するためのコードワードのビットシーケンスを単純に検索するように構成されるか、あるいは目標値を得るためにビットシーケンスを拡張するなどの処理を更に行なうように構成される。傾き生成器220は、圧縮ブロックの傾きコードワードに基づいて基本パラメータ傾きを判定するように伸張器220に提供される。第1の実施形態において、生成器220は、行傾きコードワードに基づいて基本行傾きのみを判定する。第2の実施形態は、列傾きコードワードを使用して基本列傾きを判定することを含む。しかし、第3の好適な実施形態において、傾き生成器220は、行傾きコードワード及び列傾きコードワードに基づいて基本行傾き及び基本列傾きをそれぞれ判定する。
【0129】
伸張器200は、圧縮ブロックのモードコードワードに基づいて複数の傾き補正パターンの集合を提供する集合提供器(set provider)230を更に含む。提供器230は、複数の異なるそのようなパターン集合を含む記憶位置(不図示)から集合を選択するのが好ましい。
【0130】
パターン選択器240は、復号化される画素を含む行/列と関連付けられるパターンコードワードに基づいて、提供された集合から傾き補正パターンを選択するように構成される。値判定器250は、基準生成器210、傾き生成器220及びパターン選択器240に接続される。判定器250は、基準生成器210からの基準パラメータ値、傾き生成器220からの基本(行及び/又は列)パラメータ傾き及び選択器240からの傾き補正パターンに基づいて画素に対する画素パラメータ値を計算する。判定器250は、画素パラメータ値を判定するための上記式1又は2で提示される任意の計算を実行するために実現される。別の計算において、判定器250は、傾き補正パターンから選択された傾き修正子及び基本パラメータ傾きを行/列の先の隣接する画素に対して判定器250により判定される画素パラメータ値に又は基準画素パラメータ値に単純に加算する。そのような場合、伸張器200は、ブロック又はブロックの行/列の現在の画素の位置に基づいてパターンから特定の傾き修正子を選択するように構成される変更子選択器260を含んでもよい。
【0131】
ブロックが異なる平面に属する画素を含むか否か又は行/列が2つの行/列のチャンクとして処理されるか否かに依存して、基準生成器210は2つの基本基準値(平面毎に1つ)を判定でき、傾き生成器220は2つの行パラメータ傾き及び2つの列パラメータ傾き(平面毎に1つの行傾き及び列傾き)を生成し、集合提供器230は2つのパターン集合(平面毎に1つ)を提供し、パターン選択器240は行/列毎に1つ又は2つの傾き補正パターンを選択する(分割位置に依存する)。
【0132】
伸張器200のユニット210〜260は、ソフトウェア、ハードウェア又はそれらの組合せとして提供されてもよい。ユニット210〜260は、伸張器200に共に実現されてもよい。あるいは、いくつかのユニットがデプスバッファアーキテクチャの他の場所に提供される分散型実現例も可能である。
【0133】
添付の請求の範囲により規定される本発明の範囲から逸脱せずに、種々の変形及び変更が本発明に対して行なわれてもよいことは、当業者には理解されるだろう。
【0134】
[参考文献]
[1]Haselgren及びAkenine-Mollerの「Efficient Depth Buffer Compression」Graphics Hardware、2006年、103〜110ページ
【0135】
[付録]
この付録は、行又は列毎に8画素を有するブロックに対するパターンコードワードを判定する情報を提供する。種々のセグメント長の補正パターンを有する8つの異なるモード(モードA〜モードH)が存在することが先に開示された。
【0136】
モードA
このモードは、長さが2画素のセグメント及び長さが1画素のセグメントを有する補正パターンに関連し、長さが2画素のセグメント間に長さが1画素のセグメントが4つ以上存在する。最初の3ビットは、行又は列に沿う第1の2画素セグメントの位置を表す。2画素セグメントがない場合、位置7が使用される。最後のビットは、長さが2画素の次のセグメントの前に長さが1画素のセグメントが4つ存在する(「0bin」)か、あるいは長さが2画素の次のセグメントの前に長さが1画素のセグメントが5つ以上存在する(「1bin」)かを示す。第1の2画素セグメントの位置に依存して、このビットは必要ない可能性がある。そのような場合、そのビットは省略されるか又は任意の値に設定される。図18Aは、1111011binの補正パターンを使用するこの例を概略的に示す。2画素セグメントは、行の画素位置番号5のところで現れる。その結果、パターンコードワードの最初の3ビットは101bin=5に設定される。最後のビットは省略され、101binは補正パターン1111011binの表現として使用される。あるいは、任意のビットが追加され、1010bin又は1011binは補正パターン1111011binの表現として使用される。
【0137】
別の例を図18Bに示す。ここで、パターンコードワードの最初の3ビットは010binであり、第1の2画素セグメントが位置2にあることを示す。4つ以上の1画素セグメントがこの2画素セグメントに後続するかは重要ではないため、パターンコードワードの最後のビットは省略されるか又は任意の値に設定される。
【0138】
第3の例は、図18Cのパターン0111110binである。本明細書において、最初の3ビットは000binであり、第1の2画素セグメントが位置0にあることを示す。最後のビットは0であり、次の2画素セグメントの前に4つの1画素セグメントが存在することを示す。従って、パターンコードワード0000binは、パターン011110binを表すために使用される。この原理は、このモードの第1の2画素セグメントの他の画素位置に拡張可能である。
【0139】
モードB
モードは、長さが1画素又は2画素のセグメントを含み且つ3つ又は4つの連続した1画素セグメントを有する補正パターンを含む。4ビットパターンコードワードは、このモードの種々の補正パターンを表すために使用される。ここでも、4ビットのうちの3ビットが行又は列の第1の2画素セグメントの位置を規定するために採用される。図18Cの場合、これは位置0であり、従って3ビット位置表現は000binである。第1の2画素セグメントの直後に3つ又は4つの1画素セグメントが続くかを区別するために単一ビットが使用される。図18Cにおいて、4つのそのようなセグメントが存在し、これは、この場合に完全なパターンコードワードが0001binであることを意味する。ここで、最後の1binは、4つの1画素セグメントが存在することを示す。あるいは、モードBにおいて可能な補正パターンが8つのみ存在するため、3ビットパターンコードワードが使用可能である。
【0140】
モードC
モードCは、1画素又は2画素のセグメント長を含み且つ2画素セグメントの間に2つ又は3つの連続した1画素セグメントを有する補正パターンに関する。4ビットパターンコードワードは、モードCで利用可能な補正パターンを表すことができる。4ビットのうちの3ビットは、行又は列の第1の2画素セグメントの位置を表すために使用される。残りのビットは、行又は列の次の2画素セグメントの前に2つ又は3つの連続した1画素セグメントが存在するかを信号で示すために使用される。図18Dは、補正パターン0111011binを示す。第1の2画素セグメントの位置は画素番号0であり、次の2画素セグメントの前の2つの1画素セグメントが第1の2画素セグメントに後続する。従って、この場合、パターンコードワードは0000binである。尚、本明細書において、第2の2画素セグメントの後の1画素セグメントの数は補正パターンに影響を及ぼさないため、その数を指定する必要はない。あるいは、モードBにおいて可能な補正パターンが8つのみ存在するため、3ビットパターンコードワードが使用可能である。
【0141】
モードD
このモードは、1画素又は2画素のセグメント長を含み且つ1つ又は2つの連続した1画素セグメントを有する補正パターンに関する。4ビットパターンコードワードの2ビットは、行又は列の第1の2画素セグメントに先行する連続した1画素セグメントの数を規定するために使用される(ゼロ個〜3つの1画素セグメントを区別する00bin〜11bin)。次のビットは、第1の2画素セグメントの後に1つ又は2つの連続した1画素セグメントが続くか否かを信号で示し、最後のビットは、第2の2画素セグメントの後に1つ又は2つの連続した1画素セグメントが続くか否かを規定する。図18Eを参照。図は、補正パターン0110110binを示す。第1の2画素セグメントの前に存在する1画素セグメントは0個であるため、00binを与える。単一の1画素セグメントが第1の2画素セグメント及び第2の2画素セグメントの双方に後続し、その結果、例えば0bin及び0binが得られる。従って、このモードにおいて、最終的なパターンコードワードは0000binとなる。
【0142】
モードE
モードは、1画素又は2画素のセグメント長を含み且つゼロ個又は1つの連続した1画素セグメントを有する補正パターンを有する。4ビットパターンコードワードの1ビットは、行又は列の第1のセグメントが1画素セグメントであるか又は2画素セグメントであるかを規定する。残りのビットの各々は、後続する2画素セグメントの前に1画素セグメントがゼロ個であるか又は1つ存在するかを信号で示す。図18F及び図18Gは、このモードに従って2つの可能な補正パターンを示す。図18Fは、補正パターン0101010binを有し、図18Gは1101101binを有する。図18Gにおいて、第1のセグメントは2画素セグメントであり、図18Fにおいて、第1のセグメントは1画素セグメントである。従って、パターンコードワードの第1のビットはそれぞれ1bin及び0binである。図18Gにおいて2画素セグメントに先行する1画素セグメントはなく、これは0bin、0bin及び0binにより表される。図18Fにおいて、全ての2画素セグメントは、先行する1画素セグメントを有し、1bin、1bin及び1binを与える。従って、図18Gの補正パターンに対する最終的なパターンコードワードは1000binであり、図18Fの場合は0111binである。
【0143】
モードF
モードFは、2画素又は3画素のセグメント長を含む補正パターンを有する。パターンコードワードの最初の2ビットは、以下の状況を表す。行又は列の第1のセグメントが2画素セグメントであり、その後に2画素セグメントが続く場合、00binが使用される。01binは、1画素セグメントを表し、その後3画素セグメントが続く。第1のセグメントが2画素セグメントである場合、ビット組合せ10binが使用され、11binは、第1の画素セグメントが3画素セグメントであることを規定する。パターンコードワードの第3のビットは、2つの最初のビットにより規定されるセグメントの後に2画素セグメントが続くのか又は3画素セグメントが続くのかを規定し、第4のビットは、この2画素セグメント又は3画素セグメントの後に2画素セグメントが続くのか又は3画素セグメントが続くのかを信号で示す。
【0144】
図18H〜図18Kは、このモードに対する種々の補正パターンを示す。図18Hにおいて、第1のセグメントは、上記に従って10binを与えられた2画素セグメントである。2つの2画素セグメントがこの2画素セグメントに後続し、0bin及び0binを与える。補正パターンは同一であるため、最後のセグメントが2画素セグメントであるか又は3画素セグメントであるかは重要ではない。従って、パターン0101010binは1000binにより表される。
【0145】
図18Iは、1画素セグメントを有し、その後2画素セグメントが続き、結果として00binを与える。後続する2つのセグメントは、双方とも長さが2画素である(第1の画素のみが行又は列の8画素内にあるため、最後のセグメントが2画素であるか又は3画素であるかは重要ではない)。パターンコードワードは0000binである。
【0146】
図18Jは、1画素セグメント及びその後3画素セグメントを有する。最初の2ビットは01binであるべきである。2画素セグメントがこれらのセグメントに後続する。この場合、最後の2画素が2画素セグメントに属するか又は3画素セグメントに属するかは重要でないため、パターンコードワードは3ビットのみ、すなわち010binである。従って、第4のビットは省略されるか又は任意の値に設定される。
【0147】
図18Kは、3画素セグメントを有し(結果として11binを与える)、その後2つの2画素セグメントが続く(結果として0bin及び0binを与える)。最後の画素が2画素セグメントに属するか又は3画素セグメントに属するかは関係ない。従って、このモードにおいて、補正パターン0010101binはコードワード1100binにより表される。
【0148】
モードG
このモードは、3画素、4画素又は5画素のセグメント長を有する補正パターンに関する。この場合、全ての可能な補正パターンは、以下の表IIIの左側の列から分かる。

【0149】
表IIIから分かるように、このモードにおいて、13個の補正パターンのみが可能である。従って、4ビットは、例えば表III右側の列に提案されるパターンコードワードを使用してこれらの補正パターンを指定するのに十分である。
【0150】
図18Lは、補正パターン1001001binを示す。従って、表IIIによると、この場合にパターンコードは0001binである。図18Mは補正パターン0001000binを示し、これは表IIIに従って4ビットコードワード1000binにより表される。
【0151】
モードH
モードHは、5画素、6画素、7画素又は8画素セグメントを有する補正パターンを示す。以下の表IVにおいて、このモードに対する全ての可能な補正パターンを左側の列に一覧表示する。

理解されるように、11個の異なる補正パターンのみが可能であるため、それらの補正パターンは、例えば表IVの右側の列で指定されるビットパターンである4ビットのパターンコードワードにより表される。図18Mは補正パターン0001000binを示し、これはビットパターン0110binにより表される。

【特許請求の範囲】
【請求項1】
関連する画素パラメータ値を有する画素のブロックを圧縮する方法であって:
- 基準画素パラメータ値の表現として基準コードワードを判定するステップと;
- 前記ブロックの行に対する基本パラメータ傾きの表現として行傾きコードワードを判定するステップと;
- 前記ブロックの列に対する基本パラメータ傾きの表現として列傾きコードワードを判定するステップと;
- 前記ブロックの行又は列に対して、前記行又は前記列の前記画素パラメータ値の少なくとも一部分に基づいて、前記行又は前記列の前記少なくとも一部分に沿って傾きが変化する画素位置を示す表現を生成するステップと;
- 前記ブロックの前記行又は前記列の少なくとも一部分に対して前記生成ステップを繰り返すステップと;
- 各々が行又は列に沿って適用可能な位置に依存する傾き修正子を示す特定の事前定義済み表現である複数の傾き補正パターンの集合の表現としてモードコードワードを判定するステップと;
- 前記ブロックの前記少なくとも1つの行又は列に対して、前記行又は前記列に対して生成された前記位置指示表現に基づいて、前記集合の傾き補正パターンの表現としてパターンコードワードを判定するステップと
を有することを特徴とする方法。
【請求項2】
前記モードコードワード判定ステップは、前記生成した位置指示表現に少なくとも部分的に基づいて実行されることを特徴とする請求項1に記載の方法。
【請求項3】
前記生成ステップは:
- オプションとして前記行又は前記列の前記パラメータ値を量子化するステップと;
- 前記行又は前記列の前記少なくとも一部分の画素毎に、前記行又は前記列の先行画素の量子化パラメータ値又は前記基準パラメータ値、並びに前記行又は前記列に対する前記基準パラメータ傾きを前記画素の量子化パラメータ値から減算するステップとを有することを特徴とする請求項1又は2に記載の方法。
【請求項4】
前記モードコードワード判定ステップは:
- 各々が複数の傾き補正パターンを含む複数の事前定義済み集合から1つの集合を選択するステップと;
- 前記選択した集合に基づいて前記モードコードワードを判定するステップとを有することを特徴とする請求項1乃至3のいずれか1項に記載の方法。
【請求項5】
前記行傾きコードワードは、前記ブロックの前記行に対する前記パラメータ傾きの整数部の表現であり、前記列傾きコードワードは、前記ブロックの前記列に対する前記パラメータ傾きの整数部の表現であり、前記複数の事前定義済み集合の各集合は、前記ブロックの前記行又は前記列に対する前記パラメータ傾きの小数部の範囲と関連付けられることを特徴とする請求項1乃至4のいずれか1項に記載の方法。
【請求項6】
前記生成ステップは:
- 前記行又は前記列に対して、前記行又は前記列の前記画素パラメータ値の第1の部分に基づいて、前記行又は前記列の前記第1の部分に沿って傾きが変化する画素位置を示す第1の表現を生成するステップと;
- 前記行又は前記列に対して、前記行又は前記列の前記画素パラメータ値の第2の部分に基づいて、前記行又は前記列の前記第2の部分に沿って傾きが変化する画素位置を示す第2の表現を生成するステップとを有することを特徴とする請求項1乃至5のいずれか1項に記載の方法。
【請求項7】
前記モードコードワード判定ステップは、前記生成された第1の位置指示表現及び前記生成された第2の位置指示表現に基づいて複数の傾き補正パターンの集合の表現としてモードコードワードを判定するステップを有することを特徴とする請求項6に記載の方法。
【請求項8】
前記パターンコードワード判定ステップは:
- 前記ブロックの少なくとも1つの行又は列に対して、前記行又は前記列に対して生成された前記第1の位置指示表現に基づいて前記集合の第1の傾き補正パターンの表現として第1のパターンコードワードを判定するステップと;
- 前記ブロックの前記少なくとも1つの行又は列に対して、前記行又は前記列に対して生成された前記第2の位置指示表現に基づいて前記集合の第2の傾き補正パターンの表現として第2のパターンコードワードを判定するステップとを有することを特徴とする請求項6又は7に記載の方法。
【請求項9】
前記モードコードワード判定ステップは:
- 前記生成された第1の位置指示表現に基づいて、複数の傾き補正パターンの第1の集合の表現として第1のモードコードワードを判定するステップと;
- 前記生成された第2の位置指示表現に基づいて、複数の傾き補正パターンの第2の集合の表現として第2のモードコードワードを判定するステップとを有することを特徴とする請求項6に記載の方法。
【請求項10】
前記パターンコードワード判定ステップは:
- 前記ブロックの少なくとも1つの行又は列に対して、前記行又は前記列に対して生成された前記第1の位置指示表現に基づいて、前記第1の集合の第1の傾き補正パターンの表現として第1のパターンコードワードを判定するステップと;
- 前記ブロックの少なくとも1つの行又は列に対して、前記行又は前記列に対して生成された前記第2の位置指示表現に基づいて、前記第2の集合の第2の傾き補正パターンの表現として第2のパターンコードワードを判定するステップとを有することを特徴とする請求項9に記載の方法。
【請求項11】
圧縮画素ブロックの画素を伸張する方法であって:
- 前記圧縮画素ブロックの基準コードワードに基づいて基準画素パラメータ値を生成するステップと;
- 前記圧縮画素ブロックの傾きコードワードに基づいて基本パラメータ傾きを生成するステップと;
- 前記圧縮画素ブロックのモードコードワードに基づいて、各々が行又は列に沿って適用可能な位置に依存する傾き修正子を示す特定の事前定義済み表現である複数の傾き補正パターンの集合を提供するステップと;
- 前記画素と関連付けられ且つ前記圧縮画素ブロックに含まれるパターンコードワードに基づいて、前記提供された集合から傾き補正パターンを選択するステップと;
- 前記基準画素パラメータ値、前記基本パラメータ傾き及び前記選択された傾き補正パターンに基づいて前記画素の画素パラメータ値を判定するステップとを有することを特徴とする方法。
【請求項12】
前記判定ステップは、前記基本パラメータ傾き、前記傾き補正パターンから選択された傾き修正子を前記行又は前記列の先の画素に対して判定された画素パラメータ値に、あるいは前記基準画素パラメータ値に加算するステップを有することを特徴とする請求項11に記載の方法。
【請求項13】
前記行又は前記列の前記画素の位置に基づいて前記傾き修正子を選択するステップを更に有することを特徴とする請求項12に記載の方法。
【請求項14】
前記生成ステップは:
- 前記圧縮画素ブロックの行傾きコードワードに基づいて前記画素ブロックの行に対して基本パラメータ傾きを生成するステップと;
- 前記圧縮画素ブロックの列傾きコードワードに基づいて前記画素ブロックの列に対して基本パラメータ傾きを生成するステップとを有することを特徴とする請求項11乃至13のいずれか1項に記載の方法。
【請求項15】
前記画素パラメータ値判定ステップは、前記基準画素パラメータ値、前記行に対する前記基本パラメータ傾き、前記列に対する前記基本パラメータ傾き、前記選択された傾き補正パターン及び前記圧縮画素ブロックの少なくとも1つの傾き変更子に基づいて前記画素パラメータ値を判定するステップを有することを特徴とする請求項14に記載の方法。
【請求項16】
前記判定ステップは:
- 中間値を形成するために、前記列に対する前記基本パラメータ傾き及び前記少なくとも1つの傾き変更子を前記列の先の画素に対して判定された画素パラメータ値に加算するステップと;
- 前記行に対する前記基本パラメータ傾き及び前記傾き補正パターンから選択された傾き修正子を前記行の先の画素に対して判定された画素パラメータ値又は前記中間値に加算するステップとを有することを特徴とする請求項15に記載の方法。
【請求項17】
前記判定ステップは:
- 中間値を形成するために、前記行に対する前記基本パラメータ傾き及び前記少なくとも1つの傾き変更子を前記行の先の画素に対して判定された画素パラメータ値に加算するステップと;
- 前記列に対する前記基本パラメータ傾き及び前記傾き補正パターンから選択された傾き修正子を前記列の先の画素に対して判定された画素パラメータ値又は前記中間値に加算するステップとを有することを特徴とする請求項15に記載の方法。
【請求項18】
前記提供ステップは、前記モードコードワードに基づいて複数の事前定義済み集合の集合体から前記集合を提供するステップを有することを特徴とする請求項11乃至17のいずれか1項に記載の方法。
【請求項19】
関連する画素パラメータ値を有する画素のブロックを圧縮する圧縮器であって:
- 基準画素パラメータ値の表現として基準コードワードを判定する基準量子化器と;
- 前記ブロックの行に対する基本パラメータ傾きの表現として行傾きコードワードを判定する行傾き量子化器と;
- 前記ブロックの列に対する基本パラメータ傾きの表現として列傾きコードワードを判定する列傾き量子化器と;
- 前記ブロックの少なくとも一部分の行又は列毎に、前記行又は前記列の前記画素パラメータ値の少なくとも一部分に基づいて、前記行又は前記列の前記少なくとも一部分に沿って傾きが変化する場所を示す表現を生成する表現生成器と;
- 各々が行又は列に沿って適用可能な位置に依存する傾き修正子を示す特定の事前定義済み表現である複数の傾き補正パターンの集合の表現としてモードコードワードを判定するモード選択器と;
- 前記ブロックの前記少なくとも1つの行又は列に対して、前記行又は前記列に対して生成された前記位置指示表現に基づいて、前記集合の傾き補正パターンの表現としてパターンコードワードを判定するパターン選択器とを備えることを特徴とする圧縮器。
【請求項20】
前記モード選択器は、前記生成された位置指示表現に少なくとも部分的に基づいて前記モードコードワードを判定するように構成されることを特徴とする請求項19に記載の圧縮器。
【請求項21】
- 前記行又は前記列の前記パラメータ値を量子化する値量子化器と;
- 前記行又は前記列の前記少なくとも一部分の画素毎に、前記行又は前記列の先行画素の量子化パラメータ値又は前記基準パラメータ値、並びに前記行又は前記列に対する前記基本パラメータ傾きを前記画素の前記量子化パラメータ値から減算する計算器とを更に備えることを特徴とする請求項19又は20に記載の圧縮器。
【請求項22】
前記表現生成器は、i)前記行又は前記列に対して、前記行又は前記列の前記画素パラメータ値の第1の部分に基づいて、前記行又は前記列の前記第1の部分に沿って傾きが変化する画素位置を示す第1の表現を生成し、ii)前記行又は前記列に対して、前記行又は行列の前記画素パラメータ値の第2の部分に基づいて、前記行又は前記列の前記第2の部分に沿って傾きが変化する画素位置を示す第2の表現を生成するように構成されることを特徴とする請求項19乃至21のいずれか1項に記載の圧縮器。
【請求項23】
前記モード選択器は、前記生成された第1の位置指示表現及び前記生成された第2の位置指示表現に基づいて、複数の傾き補正パターンの集合の表現としてモードコードワードを判定するように構成されることを特徴とする請求項22に記載の圧縮器。
【請求項24】
前記パターン選択器は、i)前記ブロックの少なくとも1つの行又は列に対して、前記行又は前記列に対して生成された前記第1の位置指示表現に基づいて、前記集合の第1の傾き補正パターンの表現として第1のパターンコードワードを判定し、ii)前記ブロックの前記少なくとも1つの行又は列に対して、前記行又は前記列に対して生成された前記第2の位置指示表現に基づいて、前記集合の第2の傾き補正パターンの表現として第2のパターンコードワードを判定するように構成されることを特徴とする請求項22又は23に記載の圧縮器。
【請求項25】
前記モード選択器は、i)前記生成された第1の位置指示表現に基づいて、第1の複数の傾き補正パターンの集合の表現として第1のモードコードワードを判定し、ii)前記生成された第2の位置指示表現に基づいて、第2の複数の傾き補正パターンの集合の表現として第2のモードコードワードを判定するように構成されることを特徴とする請求項24に記載の圧縮器。
【請求項26】
前記パターン選択器は、i)前記ブロックの少なくとも1つの行又は列に対して、前記行又は前記列に対して生成された前記第1の位置指示表現に基づいて、前記第1の集合の第1の傾き補正パターンの表現として第1のパターンコードワードを判定し、ii)前記ブロックの前記少なくとも1つの行又は列に対して、前記行又は前記列に対して生成された前記第2の位置指示表現に基づいて、前記第2の集合の第2の傾き補正パターンの表現として第2のパターンコードワードを判定するように構成されることを特徴とする請求項25に記載の圧縮器。
【請求項27】
圧縮画素ブロックの画素を伸張する伸張器であって:
- 前記圧縮画素ブロックの基準コードワードに基づいて基準画素パラメータ値を生成する基準生成器と;
- 前記圧縮画素ブロックの傾きコードワードに基づいて基本パラメータ傾きを生成する傾き生成器と;
- 前記圧縮画素ブロックのモードコードワードに基づいて、各々が行又は列に沿って適用可能な位置に依存する傾き修正子を示す特定の事前定義済み表現である複数の傾き補正パターンの集合を提供する集合提供器と;
- 前記画素と関連付けられ且つ前記圧縮画素ブロックに含まれるパターンコードワードに基づいて、前記提供された集合から傾き補正パターンを選択するパターン選択器と;
- 前記基準画素パラメータ値、前記基本パラメータ傾き及び前記選択された傾き補正パターンに基づいて前記画素の画素パラメータ値を判定する値判定器とを備えることを特徴とする伸張器。
【請求項28】
前記値判定器は、前記基本パラメータ傾き、前記傾き補正パターンから選択された傾き修正子を前記行又は前記列の先の画素に対して判定された画素パラメータ値に、あるいは前記基準画素パラメータ値に加算するように構成されることを特徴とする請求項27に記載の伸張器。
【請求項29】
前記行又は前記列の前記画素の位置に基づいて前記傾き修正子を選択する変更子選択器を更に具備することを特徴とする請求項28に記載の伸張器。
【請求項30】
前記傾き生成器は、i)前記圧縮画素ブロックの行傾きコードワードに基づいて、前記画素ブロックの前記行に対する基本パラメータ傾きを生成し、ii)前記圧縮画素ブロックの列傾きコードワードに基づいて、前記画素ブロックの前記列に対する基本パラメータ傾きを生成するように構成されることを特徴とする請求項27又は28に記載の伸張器。
【請求項31】
前記値判定器は、前記基準画素パラメータ値、前記行に対する前記基本パラメータ傾き、前記列に対する前記基本パラメータ傾き、前記選択された傾き補正パターン及び前記圧縮画素ブロックの少なくとも1つの傾き変更子に基づいて前記画素パラメータ値を判定するように構成されることを特徴とする請求項30に記載の伸張器。
【請求項32】
関連する画素パラメータ値を有するM×N画素のブロックを圧縮する方法であって:
- 基準画素パラメータ値の表現として基準コードワードを判定するステップと;
- 前記ブロックの行に対する基本パラメータ傾きの表現として行傾きコードワードを判定するステップと;
- 前記ブロックの列に対する基本パラメータ傾きの表現として列傾きコードワードを判定するステップと;
- 前記行に対する前記基本パラメータ傾き及び前記列に対する前記基本パラメータ傾きの少なくとも一方に適用可能である複数の傾き変更子の表現としてM×N−1ビットより少ないビットを含む変更子コードワードを判定するステップと
を有することを特徴とする方法。
【請求項33】
関連する画素パラメータ値を有する画素のブロックの信号表現であって:
- 基準画素パラメータ値の表現である基準コードワードと;
- 前記ブロックの行に対する基本パラメータ傾きの表現である行傾きコードワードと;
- 前記ブロックの列に対する基本パラメータ傾きの表現である列傾きコードワードと;
- 各々が行又は列に沿って適用可能な位置に依存する傾き修正子を示す特定の事前定義済み表現である複数の傾き補正パターンの集合の表現であるモードコードワードと;
- 前記集合の傾き補正パターンの表現である前記ブロックの行又は列毎のパターンコードワードとを有することを特徴とする信号表現。

【図1】
image rotate

【図2A−B】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A−C】
image rotate

【図6】
image rotate

【図7A】
image rotate

【図7B】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11A】
image rotate

【図11B】
image rotate

【図11C】
image rotate

【図12A−E】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18A−G】
image rotate

【図18H−M】
image rotate


【公表番号】特表2010−541094(P2010−541094A)
【公表日】平成22年12月24日(2010.12.24)
【国際特許分類】
【出願番号】特願2010−527902(P2010−527902)
【出願日】平成19年10月3日(2007.10.3)
【国際出願番号】PCT/SE2007/050705
【国際公開番号】WO2009/045133
【国際公開日】平成21年4月9日(2009.4.9)
【出願人】(598036300)テレフオンアクチーボラゲット エル エム エリクソン(パブル) (2,266)
【Fターム(参考)】