(57)【要約】      （修正有）【課題】変換を使用してデータ（例えば、映像データ）を復号するための方法及び装置を提供する。【解決手段】復号プロセスは、各係数に対してインデックスを計算し、該インデックスを使用してルックアップテーブル（ＬＵＴ）を指し示すことによって各係数に対して決定されるスケーリングファクタを使用して係数のブロックをスケーリングするステップを含む。インデックスは、量子化パラメータ、上記係数のブロックのサイズ、及び上記ブロック内の各係数の位置に基づくものである。この方法は、スケーリングされた係数のブロックに変換を適用するステップも含む。【選択図】図３
2010213296.tif 000002
【特許請求の範囲】
【請求項１】
係数のブロックをスケーリングし、スケーリングされた係数のブロックを得るステップと、
前記スケーリングされた係数のブロックに垂直変換及び水平変換を適用するステップと、
を含み、
前記水平及び垂直変換の基底ベクトルが、
１    １     １     １     １    １    １     １
12/8   10/8   6/8   3/8    -3/8   -6/8   -10/8   -12/8
1      1/2   -1/2    -1     -1   -1/2    1/2      1
10/8   -3/8   -12/8  -6/8    6/8   12/8    3/8  -10/8
１    -１     -１    １     １  -１    -１     １
6/8   -12/8   3/8   10/8  -10/8   -3/8   12/8    -6/8
1/2   -１      １   -1/2    -1/2    １    -１      1/2
3/8   -6/8   10/8   -12/8  12/8   -10/8   6/8    -3/8
若しくは、該基底ベクトルの倍数又は転置である、
復号方法。
【請求項２】
前記垂直変換及び水平変換を適用する前記ステップは、一連の加算、減算及びシフトの演算のみを使用して、前記垂直変換及び水平変換を適用する、請求項１に記載の復号方法。
【請求項３】
係数のブロックをスケーリングし、スケーリングされた係数のブロックを得る手段と、
前記スケーリングされた係数のブロックに垂直変換及び水平変換を適用する手段と、
を備え、
前記水平及び垂直変換の基底ベクトルが、
１    １     １     １     １    １    １     １
12/8   10/8   6/8   3/8    -3/8   -6/8   -10/8   -12/8
1      1/2   -1/2    -1     -1   -1/2    1/2      1
10/8   -3/8   -12/8  -6/8    6/8   12/8    3/8  -10/8
１    -１     -１    １     １  -１    -１     １
6/8   -12/8   3/8   10/8  -10/8   -3/8   12/8    -6/8
1/2   -１      １   -1/2    -1/2    １    -１      1/2
3/8   -6/8   10/8   -12/8  12/8   -10/8   6/8    -3/8
若しくは、該基底ベクトルの倍数又は転置である、
復号装置。
【請求項４】
前記垂直変換及び水平変換を適用する前記手段は、一連の加算、減算及びシフトの演算のみを使用して、前記垂直変換及び水平変換を適用する、請求項３に記載の復号装置。
【請求項５】
コンピュータを、
係数のブロックをスケーリングし、スケーリングされた係数のブロックを得る手段と、
前記スケーリングされた係数のブロックに垂直変換及び水平変換を適用する手段と、
として機能させ、
前記水平及び垂直変換の基底ベクトルが、
１    １     １     １     １    １    １     １
12/8   10/8   6/8   3/8    -3/8   -6/8   -10/8   -12/8
1      1/2   -1/2    -1     -1   -1/2    1/2      1
10/8   -3/8   -12/8  -6/8    6/8   12/8    3/8  -10/8
１    -１     -１    １     １  -１    -１     １
6/8   -12/8   3/8   10/8  -10/8   -3/8   12/8    -6/8
1/2   -１      １   -1/2    -1/2    １    -１      1/2
3/8   -6/8   10/8   -12/8  12/8   -10/8   6/8    -3/8
若しくは、該基底ベクトルの倍数又は転置である、
復号プログラム。
【請求項６】
前記垂直変換及び水平変換を適用する前記手段は、一連の加算、減算及びシフトの演算のみを使用して、前記垂直変換及び水平変換を適用する、請求項４に記載の復号プログラム。
【発明の詳細な説明】
【版権について】
【０００１】
[0001]  この特許文書の開示の一部分は、（版権又はマスクワーク）保護を受ける資料を含む。（版権又はマスクワークの）所有者は、誰かが特許文書又は特許開示を特許商標庁の特許ファイル又は記録に残るように複写することに異議を唱えるものではないが、それ以外は、全ての（版権又はマスクワークの）権利が保護されるものとする。
【優先権】
【０００２】
[0002]  本出願は、２００２年９月２６日に出願されたフランクＪ．ボッセンの「Low Complexity and Unified Transforms For Video Coding」と題し、参照することによって本明細書に組み込まれた米国仮特許出願第６０／４１３，８１９号に関する優先権を主張する。
【技術分野】
【０００３】
[0003]  本発明は、映像符号化に関し、より詳細には、映像符号化のための低複雑性単一化変換に関する。
【背景技術】
【０００４】
[0004]  デジタルテレビジョン及びＤＶＤビデオは、映像圧縮技術の標準化によって可能になっている。最近の規格ＩＴＵ−Ｔ  Ｈ．２６４（以下、Ｈ．２６４）は、新世代のアプリケーションを可能にしている。Ｈ．２６４規格は、コーデックを明確に定義するものではなく、この規格は、符号化映像ビットストリームのシンタックスを、ビットストリームの復号方法と共に定義する。
【０００５】
[0005]  Ｈ．２６４規格に記載された方法に基づき復号可能な符号化映像ビットストリームを生成するプロセスの一部分として、エンコーダは、変換及び量子化を実行する。より詳細には、エンコーダは、データをマクロブロックに分割する。各マクロブロックは、変換され、量子化され、符号化される。以前の規格は、フローティングポイント係数を操作する基本変換として、８×８離散的コサイン変換（ＤＣＴ）を使用していた。対照的に、Ｈ．２６４の草案（Ｔ．ウィガンド編集「Editor’s Proposed Draft Text Modifications for Joint VideoSpecification」（ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ２６４｜ＩＳＯ／ＩＥＣ１４４９６−１０ＡＶＣ）、ドラフト７、セクション１２．４．３）では、ＤＣＴのような４×４整数変換を使用するが、当該変換を多数の異なるブロックサイズ（４×４、４×８、８×４及び８×８）に適用することができる。変換段階からの係数は、量子化を受ける。量子化後に、量子化係数がエントロピー符号化される。
【０００６】
[0006]  Ｈ．２６４の復号方法は、上述した符号化プロセスの逆である。より詳細には、符号化データは、エントロピー復号された後に、逆量子化及び逆変換の適用を受ける。より詳細には、Ｈ．２６４規格の初期の草案に記載されたように（ＪＦＣＤを参照）、復号中に、量子化係数が２次元アレー（４×４、４×８、８×４又は８×８のいずれかのサイズの）へと編成された後に、逆量子化が適用される。逆量子化を実行した後に、係数に逆変換が、通常は最初に水平方向に、次いで垂直方向に適用される。最終的に、得られた値がスケーリングされる。４×８、８×４又は８×８のブロックサイズの場合には、水平方向の逆変換の適用と垂直方向の逆変換の適用との間に、付加的なスケーリング演算（operation）が実行される。
【０００７】
[0007]  ブロックサイズ（例えば、４×４ブロック、４×８又は８×４ブロック及び８×８ブロック）に拘らず、同じ量子化パラメータ（QP）を使用して、エンコーダでどれほど微細に又は大まかに量子化が実行されたかを指示する。このQPは、通常、０と５１との間の正の整数値である。一つの公知の実装では、例えば、参照することによって本明細書に組み込まれたＴ．ウィガンド編集「Joint Final Committee Draft (JFCD) of Joint Video Specification」（ＩＴＵ−Ｔ  Ｒｅｃ．  Ｈ．２６４｜ＩＳＯ／ＩＥＣ１４４９６−１０ＡＶＣ）（以下、「ウィガンド」）に記載されているように、４×８、８×４及び８×８ブロックに対するＱＰは、１２以上の値に制限される。それに説明されているように、アレーVと称されるアレーを使用して逆量子化が適用される。このアレーVは、三つの異なるブロックサイズのタイプ、即ち４×４ブロック、４×８又は８×４ブロック、及び８×８ブロックに対して異なる。
【０００８】
[0008]  ４×４ブロック用のアレーVを図１Ａに示す。各量子化係数c_ijに対して、係数w_ijは、アレーVを量子化係数のブロックに適用した結果として得られる。標準Ｃ言語の表記では次のように得られる。
w_ij=(c_ij*R_ij(QP % 6))<<(QP / 6)
ここで、R_ij(m)は、ijが{00,02,20,22}である場合に、V_m0に等しく、ijが{11,13,31,33}である場合に、V_m1に等しく、他の場合には、V_m2に等しい。ここで、V_mnは、アレーVのm番目の行及びn番目の列におけるエントリーである。
【０００９】
[0009]  ８×４又は４×８のブロック用のアレーVを図１Ｂに示す。各量子化係数c_ijに対して、係数w_ijは、アレーＶを量子化係数のブロックに適用した結果として、次のように得られる。
w_ij=(c_ij*R_ij(QP % 6))<<((QP / 6)-2)
ここで、R_ij(m)は、i（４×８ブロックの場合）又はj（８×４ブロックの場合）が{0,2}である場合に、V_m0に等しく、他の場合には、V_m1に等しい。
【００１０】
[0010]  ８×８ブロック用のアレーVを図１Ｃに示す。各量子化係数c_ijに対して、係数w_ijは、アレーＶを量子化係数のブロックに適用した結果として、次のように得られる。
w_ij=(c_ij*R_ij(QP % 6))<<((QP / 6)-2)
ここで、R_ij(m)は、V_mに等しい。
【００１１】
[0011]  逆量子化が実行された後に、逆変換が係数に対して実行される。Ｈ．２６４草案規格の一つの実装の一部分として、逆変換を係数に適用することは、水平方向変換を適用し、中間スケーリングを実行し、垂直方向変換を適用し、最終的なスケーリングを実行することを含む。通常、使用される逆変換は、分離可能な変換である。従って、通常、４及び８のサイズの２つの一次元変換がそれぞれ使用されている。
【００１２】
[0012]  基底ベクトルは逆変換を定義する。サイズ４の公知の変換の一つにおける基底ベクトルは、図２Ａに示すマトリクスM4によって定義される。一方、サイズ８の公知の変換の一つにおける基底ベクトルは、図２Ｂに示すマトリクスM8によって定義される。
【００１３】
[0013]  公知の実装の一つにおける水平方向変換は、係数のアレーWと、基底ベクトルを含む対応変換マトリクス（即ち、４×４及び４×８ブロックについては変換マトリクスM4、並びに８×４及び８×８ブロックについては変換マトリクスＭ８）の転置(transpose)との間のマトリクス乗算を行うことによって、適用される。水平方向変換の結果を含むアレーZ'は、次のように求められる。
Z'=W*transpose(M4)，４×８及び４×４ブロックの場合
Z'=W*transpose(M8)，８×８及び８×４ブロックの場合
ここで、「*」は、マトリクス乗算を表わす。
【００１４】
[0014]  次いで、水平方向変換によって得られたマトリクスZ'をスケーリングすることによって、中間スケーリングが次のように実行される。
Z_ij=sign(Z'_ij)*((abs(Z'_ij)+(1<<(B-1))>>B)
ここで、Z'_ijは、アレーZ'の係数であり、Ｂは、４×４ブロックについては０であり、４×８及び８×４ブロックについては２であり、更に、８×８ブロックについては７である。
【００１５】
[0015]  次いで、垂直方向変換が適用される。アレーZが与えられると、アレーZと、基底ベクトルを含む対応マトリクス（即ち、８×４及び４×４ブロックについてはM4、並びに８×８及び４×８ブロックについてはM8）との間のマトリクス乗算を実行することによって、垂直方向の逆変換が適用される。垂直方向変換の結果を含むアレーX'は、次のように求められる。
X'=M4*Z，８×４及び４×４ブロックの場合
X'=M8*Z，８×８及び４×８ブロックの場合
【００１６】
[0016]  垂直方向変換が適用された後に、垂直方向変換の結果をスケーリングすることによって、最終的なスケーリングが次のように実行される。
X_ij=(X'_ij+32)>>6
【００１７】
[0017]  M4又は転置（M4）を使用するマトリクス乗算は、通常、次のように実行される。入力ベクトルw[0...3]が与えられると、出力ベクトルx[0...3]は、次のように得られる。
z[0]=w[0]+w[2]
z[1]=w[0]-w[2]
z[2]=(w[1]>>1)-w[3]
z[3]=w[1]+(w[3]>>1)
x[0]=z[0]+z[3]
x[1]=z[1]+z[2]
x[2]=z[1]-z[2]
x[3]=z[1]-z[3]
上記手順は、入力アレーの各行又は列について一度づつ、４回適用されて、マトリクス乗算を完了する。
【００１８】
[0018]  このように逆量子化を実行すると、量子化パラメータQPの値が、４×４情報ブロックについては０−５１に、そして４×８、８×４及び８×８情報ブロックについては１２−５１の値に限定される。これによって、４×４以外の変換で達成できる最高クオリティが制限される。
【００１９】
[0019]  更に、上述したように逆変換を実行すると、水平及び垂直方向の逆変換中における乗算演算と、中間スケーリングとが、少なくとも８×４、４×８及び８×８の情報ブロックのオペレーションに対して、必要となる。このような乗算は、著しい処理オペレーションを費やす。それ故、変換の基底ベクトルは、４×４の場合のように高速実施を可能にする変更を必要とする。
【００２０】
[0020]  更に、上述したスケーリングを実行するために、どの逆変換が実行されるかに基づいて異なるテーブルが使用される。即ち、異なるブロックサイズに基づく多数の変換が行われるので、スケーリングを実行するときに多数のテーブルを使用しなければならない。多数のテーブルの使用が必要とされることは、あまり効率的な実装ではない。
【００２１】
[0021]  更に、逆変換は、サイズが１６ビットを越えるレジスタをしばしば必要とし、ＳＩＭＤアーキテクチャーにおいて並列実行可能なオペレーションの数を制限することによって、追加のプロセッサ資源を消費する（ＳＩＭＤ＝単一命令多数データ、例えば、インテルプロセッサのＭＭＸ）。エンコーダにも、上述した欠点の一つ以上が存在する。
【発明の概要】
【００２２】
変換を使用してデータ（例えば、映像データ）を復号するための方法及び装置を本明細書に開示する。一実施形態では、復号方法は、各係数に対するインデックスを計算し、そのインデックスを使用してルックアップテーブル（ＬＵＴ）を指し示すことによって各係数に対して求められたスケーリングファクタを使用して係数のブロックをスケーリングするステップを含む。インデックスは、量子化パラメータ、係数のブロックのサイズ、及びブロック内の上記各係数の位置に基づくものである。また、この方法は、スケーリングされた係数のブロックに変換を適用するステップも含む。
【００２３】
[0022]  本発明は、種々の実施形態を示す添付図面及び以下の詳細な説明から充分に理解されよう。しかしながら、これは、本発明を特定の実施形態に限定するものではなく、本発明を説明と理解のためのものに過ぎない。
【図面の簡単な説明】
【００２４】
【図１Ａ】４×４ブロックを逆量子化するために使用される公知のアレーVのテーブルである。
【図１Ｂ】８×４又は４×８ブロックを逆量子化するために使用される公知のアレーVのテーブルである。
【図１Ｃ】８×８ブロックを逆量子化するために使用される公知のアレーVのテーブルである。
【図２Ａ】マトリクスM4を定義するサイズ４の基底ベクトルを示すテーブルである。
【図２Ｂ】マトリクスM8を定義するサイズ８の基底ベクトルを示すテーブルである。
【図３】逆量子化を実行するためのプロセスの一実施形態を示すフローチャートである。
【図４】サイズ８の逆変換の一実施形態に対する基底ベクトルのテーブルである。
【図５】逆変換を実行するためのプロセスの一実施形態を示すフローチャートである。
【図６】逆変換を求めるために使用できるアルゴリズムの一実施形態を示す図である。
【図７】図６のアルゴリズムを使用して水平方向逆変換を決定するためのプロセスの一実施形態を示すフローチャートである。
【図８】図６のアルゴリズムを使用して垂直方向逆変換を決定するためのプロセスの一実施形態を示すフローチャートである。
【図９】単一化変換の一実施形態の構成に使用される基底ベクトルを示すテーブルである。
【図１０】単一化逆変換を決定するのに使用されるアルゴリズムの一実施形態を示す図である。
【図１１】エンコーダにおいて単一化変換を実行するためのプロセスの一実施形態を示すフローチャートである。
【図１２】マトリクスM4の一実施形態に対するサイズ４の基底ベクトルを示すテーブルである。
【図１３Ａ】デコーダの一実施形態を示すブロック図である。
【図１３Ｂ】エンコーダの一実施形態を示すブロック図である。
【図１４】コンピュータシステムの一例を示すブロック図である。
【発明を実施するための形態】
【００２５】
[0041]  以下、データ（例えば、映像データ）を符号化及び復号するための方法及び装置について説明する。データの符号化及び復号は、一部分において、変換を使用する。一実施形態では、これら変換は、以下に詳細に説明するように、低複雑性であり、且つ、単一化されている。
【００２６】
[0042]  一実施形態では、この方法は、スケーリングファクタを使用して係数のブロックをスケーリングするステップを含む。スケーリングファクタは、量子化パラメータ、ブロックのサイズ、及びブロック内の係数の位置に基づきインデックスを計算することによって求められる。一実施形態では、このインデックスは、量子化パラメータと、ブロックのサイズ及びブロック内の係数の位置によって求められる値との和である。ブロックのサイズ及びブロック内の係数の位置によって求められる当該値は、ブロックの垂直方向サイズ及びブロック内の係数の垂直方向位置によって求められてもよい。また、ブロックの水平方向サイズ及びブロック内の係数の水平方向位置によって求められる値でもよい。一実施形態では、ブロックのサイズは、４×４、４×８、８×４又は８×８のいずれかである。
【００２７】
[0043]  データを処理する当該方法は、更に、インデックスを使用して単一のルックアップテーブル（ＬＵＴ）を指し示すステップを含む。ＬＵＴをインデックスで指し示し、乗算を行って、係数のブロックのスケーリングを完了した後、それらのスケーリングされた係数のブロックに変換が施される。一実施形態では、この変換は、一連の加算、減算及びシフトの演算を使用して計算され、マトリクス乗算演算を実行する必要がない。尚、スケーリングされた係数のブロックに適用される変換に拘りなく、同じＬＵＴを使用してもよい。
【００２８】
[0044]  より詳細には、一実施形態では、情報（例えば、映像信号）のブロックは、係数値（例えば、量子化係数値）のブロックを受け取り、該量子化係数値のブロックの係数に対応するオフセット値を求め、求められたオフセット値に応じて逆量子化係数値を求めることによって、処理される。量子化係数値のブロックは、量子化係数値の４×４、４×８、８×４及び８×８のブロックの少なくとも一つを含むものであってもよい。
【００２９】
[0045]  一実施形態では、オフセット値は、受け取られた値のブロックと、値の一次元アレーとに応じて決定される。逆量子化係数値の決定に応じて、再構成された係数マトリクスが生成される。
【００３０】
[0046]  別の実施形態では、係数値のブロックを受け取り、受け取った係数値のブロックに、離散コサイン変換（ＤＣＴ）を近似する基底ベクトルを用いて逆変換を実行することを含む情報ブロックの符号化によって、データが処理される。一実施形態において、係数値のブロックは、量子化係数値の４×４、４×８、８×４及び８×８のブロックの少なくとも一つを含む。更に、係数値のブロックは、逆量子化映像データを含んでもよい。
【００３１】
[0047]  逆変換に関して、一実施形態では、基底ベクトルは、互いに実質的に直交し、分数値をもつエレメントを含む。基底ベクトルは、８×８のサイズとすることができる。
【００３２】
[0048]  一実施形態では、水平方向逆変換及び垂直方向逆変換を使用して逆変換が実行される。一実施形態では、水平方向逆変換は、係数の量子化形態に逆量子化マトリクスを適用することによって逆量子化された係数に対して実行される。変換の基底ベクトルは、ＤＣＴを近似している。或いは又、基底ベクトルは、実質的に直交している。水平方向逆変換は、一連の加算、減算及びシフトの演算を使用して、逆量子化係数のベクトルに対して実行されてもよい。
【００３３】
[0049]  垂直方向逆変換は、水平方向逆変換の後に実行されるが、垂直方向逆変換と水平方向逆変換の順序が逆であってもよい。一実施形態では、垂直方向逆変換は、逆量子化係数に水平方向逆変換マトリクスを適用した後に実行される。垂直方向逆変換は、ＤＣＴを近似する基底ベクトルを有する。或いは又、垂直方向逆変換は、直交する基底ベクトルを有してもよい。垂直方向逆変換は、加算、減算及びシフトの少なくとも一つを含む演算のみを使用して実行される。
【００３４】
[0050]  以下の説明において、本発明をより完全に説明するために多数の細部について述べる。しかしながら、当業者であれば、これらの特定の細部が無くとも、本発明を実施できることが明らかであろう。他の例では、本発明を不明瞭にしないために、周知の構造及び装置は、詳細図ではなく、ブロック図によって示す。
【００３５】
[0051]  以下の詳細な説明では、コンピュータメモリ内のデータビットに対するオペレーションのアルゴリズム及び記号表示の形態で記載してある部分がある。これらのアルゴリズム記述及び表示は、データ処理分野の当業者が仕事の実体をその分野の他の当業者に最も効果的に伝えるための手段である。アルゴリズムとは、本明細書においても、且つ一般的にも、所望の結果を導くステップの自己一貫性シーケンスであると考えられる。ステップとは、物理的な量の物理的な操作を要求するものである。必ずしもそうでないが、通常、これらの量は、記憶、転送、合成、比較、及びその他操作することのできる電気的又は磁気的信号の形態をとる。主として一般に使用される理由は、時に、これらの信号を、ビット、値、エレメント、シンボル、キャラクタ、用語、番号等と称するのが便利であると分かっているからである。
【００３６】
[0052]  しかしながら、これら及び同様の全ての用語は、適当な物理的量に関連付けされると共に、これらの量に適用される単なる便利な表示に過ぎないことに留意されたい。以下の説明から明らかなように、特に指示のない限り、説明全体にわたり、「処理」又は「計算」又は「算出」又は「決定」或いは「表示」等の用語を用いた説明は、コンピュータシステムのレジスタ及びメモリ内の物理的（電子的）量として表わされたデータを、コンピュータシステムのメモリ又はレジスタ或いは他の情報記憶、送信又は表示装置内の物理的量として同様に表わされた他のデータへと操作及び変換するコンピュータシステム、又は同様の電子計算装置のアクション及びプロセスを指すことは理解されよう。
【００３７】
[0053]  本発明は、また、本明細書におけるオペレーションを実行する装置に関する。この装置は、要求された目的のために構成されることができ、又は記憶されたコンピュータプログラムによって選択的に作動され又は再構成される汎用コンピュータを備えることもできる。このようなコンピュータプログラムは、コンピュータ読み取り可能な記憶媒体、例えば、フロッピーディスク、光学的ディスク、ＣＤ−ＲＯＭ、磁気−光学ディスクを含む任意の形式のディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光学カード、或いは電子的命令を記憶するのに適した任意の形式の媒体に記憶できるが、これらに限定されない。これらは各々コンピュータシステムバスに接続される。
【００３８】
[0054]  本明細書に記載されたアルゴリズム及び表示は、特定のコンピュータ又は他の装置に固有に関連したものではない。種々の汎用システムを、ここでの教示に基づくプログラムと共に使用してもよく、或いは、必要な方法ステップを実行するための更に特殊な装置を構成するのも便利であることは理解されよう。種々のこれらシステムに必要とされる構造は、以下の説明から明らかとなろう。更に、本発明を、特定のプログラミング言語を参照して説明しない。ここに述べる本発明の教示を実施するために種々のプログラミング言語を使用できることが明らかであろう。
【００３９】
[0055]  マシン読み取り可能な媒体は、装置（例えばコンピュータ）で読み取り可能な形態で情報を記憶又は転送するためのメカニズムを含む。例えば、マシン読み取り可能な媒体は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、電気的、光学的、音響的又は他の形態の伝播信号（例えば、搬送波、赤外線信号、デジタル信号等）、等々を含む。
【００４０】
概要
【００４１】
[0056]  以下、例えば、映像符号化に使用するための逆量子化及び逆変換技術について説明する。以下の説明は、デコーダにおける実施に焦点を当てているが、当業者であれば、同じ技術をエンコーダにおいても実施できることが明らかであろう。以下に詳細に述べるように、一実施形態において、これらの技術は、単一アレー（例えば、単一化１ＤアレーV）を使用する。一実施形態では、一次元アレーの値を情報（例えば、映像情報）のブロックに適用することによって、逆量子化が実行される。一次元アレー、例えば、アレーVは、３２個のエントリー、すなわち
V={10,11,11,12,13,13,14,15,16,17,18,19,20,21,23,24,25,27,29,30,32,34,36,38,40,43,45,48,51,54,57,60}
を有する。
他の単一アレーが使用されてもよい。上記例では、アレーVのエントリーは、ｐｏｗ（２，(ｋ＋Ｏ)／１２）の形態をとっている。ここで、ｋは、アレーにおけるエントリーの位置を表わし、Ｏは、定数である。例えば、Ｏは、４０である。
【００４２】
[0057]  一つのアレーしか使用しないと、使用する逆量子化関数も一つだけとなり、より効率的なオペレーションがもたらされるという点において、単一アレーの使用は効果的である。適用すべき逆変換に拘らず、単一の逆量子化関数を使用することができる。従って、これは、復号プロセスに使用されるいずれかの変換の前に、係数を量子化するために使用される。一実施形態では、逆量子化及び逆変換は、逆変換を計算するために、少数の演算しか必要としない。その理由は、乗算演算ではなく、加算、減算及びシフトの演算しか使用しないからである。
【００４３】
[0058]  更に、一実施形態では、水平方向逆変換と垂直方向逆変換との間に中間スケーリングを必要としない。サイズ８の変換は、サイズ４の変換によって使用される要素を再使用する。サイズ８の変換は、離散的コサイン変換（ＤＣＴ）の厳密な近似を与える。更に、少なくとも４×４、４×８、８×４及び８×８のブロックサイズに対する逆変換は、１６ビットレジスタを使用して実施することができ、１６ビットよりサイズの大きいレジスタを必要としない。エンコーダにおいても同様の技術を使用して変換及び量子化を実行することができる。これについては、以下に説明する。
【００４４】
逆量子化及び逆変換
【００４５】
[0059]  図３は、本発明の一実施形態に基づいて逆量子化を実行するためのプロセスの一実施形態を示すフローチャートである。このプロセスは、ハードウェア（回路、専用ロジック等）、ソフトウェア（汎用コンピュータシステム又は専用マシンで実行されるような）、又はその両方の組合せで構成される処理ロジックにより実行される。図３のフローチャートを参照して説明する逆量子化は、一次元アレーVについて説明されるが、異なるエレメント値又は異なる数のエレメントをもつ一次元アレーも使用できることは明らかであろう。
【００４６】
[0060]  逆量子化は、量子化係数c_ijを含む量子化係数のアレーCに対して実行される。図３に示すように、処理ブロック３０５において、処理ロジックは、量子化係数アレーCの量子化係数c_ijを受け取る。ここで、量子化係数c_ijは、量子化係数マトリクスCにおける位置i,jをとる係数である。
【００４７】
[0061]  処理ロジックは、量子化係数マトリクスにおける係数c_ijの位置i,jに基づいてアレーVのオフセットを求める（処理ブロック３１０）。このオフセットは、その係数に関連した基底ベクトルのノルムに基づくスケーリング値となっており、一実施形態では、次のように求められる。
offset(i,j)=ofst4[i]+ofst4[j]，４×４ブロックの場合
offset(i,j)=ofst8[i]+ofst4[j]，８×４ブロックの場合
offset(i,j)=ofst4[i]+ofst8[j]，４×８ブロックの場合
offset(i,j)=ofst8[i]+ofst8[j]，８×８ブロックの場合
ここで、ofst4={0,4,0,4}、及びofst8={6,5,10,5,6,5,10,5}である。
【００４８】
[0062]  量子化係数マトリクスにおける係数の特定位置i,jに対するオフセットを求める際に、処理ロジックは、以下に述べるように、係数に対する逆量子化値を求める（処理ブロック３１５）。
【００４９】
[0063]  ４×４変換の場合には、逆量子化は、再構成された係数のマトリクスWをＣ言語プログラミング表記で次のように生成することができる。
w_ij=(c_ij*V[2*(QP%6)+offset(i,j)])<<(QP/6)
尚、一実施形態では、上記式及び他の式に記載のV[.]のオペレーションは、テーブルルックアップオペレーションとして実施される。
【００５０】
[0064]  ４×８又は８×４変換の場合には、逆量子化によって得られる再構成係数は、次のように求めることができる。
w_ij=(c_ij*V[2*(QP%6)+offset(i,j)])<<(QP/6-1)，QP≧6の場合、及び
w_ij=(c_ij*V[2*(QP%6)+offset(i,j)+1])>>1，その他の場合
ここで、「w_ij」は、例えば、上述した係数w_ijと同様に、マトリクスWの再構成係数である。８×８変換の場合には、逆量子化によって得られる再構成係数を、次のように求めることができる。
w_ij=(c_ij*V[2*(QP%6)+offset(i,j)])<<(QP/6-2)、QP≧12の場合、及び
w_ij=(c_ij*V[2*(QP%6)+offset(i,j)+(1<<(1-QP/6))])>>(2-QP/6)，その他の場合
ここで、w_ijは、マトリクスWの係数である。
【００５１】
[0065]  別の実施形態では、アレーofst4及びofst8を、次のように定義することができる。
ofst4={4,11,4,11}
ofst8={1,0,5,0,1,0,5,0}
更に、再構成係数w_ijは、サイズ４×４、４×８、８×４及び８×８のブロックに対して次のように求められる。
w_ij=(c_ij*V[2*(QP%6)+offset(i,j)])<<(QP/6)
【００５２】
[0066]  更に別の実施形態では、アレーVのサイズが増加され、再構成式が次のように定義される。
w_ij=(c_ij*V[QP+offset(i,j)])
【００５３】
[0067]  更に別の実施形態では、追加の重み付けファクタが、ブロックサイズとブロック内の係数の位置との関数として次のように含まれる。
w_ij=(c_ij*V[QP+offset(i,j)+f(block size,i,j)])
ここで、f(block size,i,j)は、重み付けファクタを定義する。このような重み付けは、各係数の知覚的重要性に適応させるために使用される。ＭＰＥＧ−２（ＩＳＯ／ＩＥＣ１３８１８−２）は、追加の乗算及びシフト演算を要求することによって、このような機能を提供するが、現在の情報では、追加の加算演算しか要求されない。
【００５４】
[0068]  量子化係数マトリクスにおける係数の特定位置i,jに対して逆量子化値w_ijを求める際に、処理ロジックは、逆量子化を実行すべき量子化係数マトリクスＣの係数が更にあるかどうかを決定する（処理ブロック３２０）。もしあれば、処理は、処理ブロック３０５に移行して、量子化マトリクスCの次の量子化係数c_ijが受け取られる。しかしながら、逆量子化を実行すべき係数が更になければ、量子化係数マトリクスに対する逆量子化は、終了となる（処理ブロック３２５）。
【００５５】
[0069]  このように、量子化係数マトリクスの逆量子化は、複数の値をもつ単一の一次元アレーを使用して求められる。ここで、逆量子化されるサイズブロックは、少なくとも４×４、４×８、８×４及び８×８のサイズの情報ブロックである。
【００５６】
[0070]  逆量子化プロセスは、量子化係数マトリクスの係数に対するオフセット値及び逆量子化値の両方を、次の係数を処理する前に、求めることができる。しかしながら、当業者であれば、別の実施形態において、量子化係数マトリクスの全ての係数に対するオフセット値を最初に求め、次いで、求められたオフセット値を使用して、量子化係数マトリクスの全ての係数に対して逆量子化値を求めることができることは明らかであろう。
【００５７】
[0071]  別の実施形態では、以下に述べるように、乗算演算を実行せずに逆変換を実行してもよい。加えて、又はそれに代えて、中間のスケーリング演算を実行せずに逆変換を実行してもよい。
【００５８】
[0072]  逆量子化が適用された後に、逆変換が適用される。この実施形態では、サイズ４の変換に対する基底ベクトルは、不変とすることができる（例えば、図２Ａに示すように）。基底ベクトルを８×８の変換用に変えることによって逆変換を変更することができる。更に、中間のスケーリングプロセスを取り除くことができる。このような場合には、水平方向変換によって得られたアレーが垂直方向変換に直接入力される。
【００５９】
[0073]  サイズ８の逆変換の一実施形態に対するベクトル基底を図４のテーブルに示す。これは、ＤＣＴを近似するもので、実質的に直交する基底を有している（即ち、いずれの２つのベクトルの積も、ゼロであるか又はほぼゼロに近い）。逆変換を説明するフローチャートを図５に示す。
【００６０】
[0074]  図５は、逆変換を実行するプロセスの一実施形態を示すフローチャートである。このプロセスは、ハードウェア（回路、専用ロジック等）、ソフトウェア（汎用コンピュータシステム又は専用マシンで実行されるような）、又はその両方の組合せで構成される処理ロジックによって実行される。
【００６１】
[0075]  図５に示すように、処理ロジックは、水平方向逆変換によって得るアレーZを次のように計算する（処理ブロック５０５）。
Z=W*transpose(M4)，４×８及び４×４ブロックの場合
Z=W*transpose(M8)，８×８及び８×４ブロックの場合
ここで、M4は、一実施形態については、図１Ａに示されており、M8は、一実施形態については、図４に示されている。水平方向逆変換によって得られるアレーZの決定については、以下に詳細に説明する。また、以下に更に述べるように、水平方向逆変換は、乗算演算を使用せずに計算されてもよい。
【００６２】
[0076]  次いで、処理ロジックは、垂直方向変換をアレーZに適用することによって得られるアレーX'を次のように求める（処理ブロック５１０）。
X'=M4*Z，８×４及び４×４ブロックの場合
X'=M8*Z，８×８及び４×８ブロックの場合
ここで、M4は、一実施形態においては、図２Ａに示されたものであり、M8は、一実施形態においては、図４に示されたものである。アレーX'の決定は、以下に詳細に説明する。また、以下に述べるように、アレーX'は、別の形態では、乗算演算を使用せずに得ることもできる。
【００６３】
[0077]  水平及び垂直方向の逆変換を適用した後に、処理ロジックは、得られたアレーX'に対して最終的なスケーリングを次のように実行する（処理ブロック５１５）。
X_ij=(X'_ij+32)>>6
【００６４】
[0078]  上記式は、通常、映像サンプルのビット深さが８に等しいときに使用される。映像サンプルのビット深さが８より大きいときには、スケーリング演算は、より一般的な形態、すなわち
X_ij=(X'_ij+(1<<(13-D))>>(14-D)
をとることができる。ここで、Dは、映像サンプルのビット深さを表わす。
【００６５】
[0079]  図６は、マトリクス乗算を使用せずに、少なくとも８×８、８×４及び４×８の情報ブロックに対して逆変換（即ち、水平方向逆変換のZ及び垂直方向逆変換のX'）を計算するために使用できるアルゴリズムの一実施形態を示す。図６のアルゴリズムの「in」ベクトルの「in」係数が、INマトリクス（入力マトリクス）から検索され、図６のアルゴリズムの「out」ベクトルの「out」係数が使用されて、OUTマトリクス（出力マトリクス）が形成される。操作されるINマトリクスの「in」ベクトルと、形成されるOUTマトリクスの「out」ベクトルは、次のように求められる。水平方向変換の場合、「in」ベクトルはアレーWの行であり、「out」ベクトルはアレーZの対応の行である。垂直方向変換では、図７〜図９のフローチャートを参照して以下に述べるように、「in」ベクトルはアレーZの列であり、「out」ベクトルは、逆変換の特定の部分を実行することによるアレーX'の対応の列である。
【００６６】
[0080]  図７は、図６のアルゴリズムを使用して水平方向逆変換を計算するためのプロセスの一実施形態を示すフローチャートである。このプロセスは、ハードウェア（回路、専用ロジック等）、ソフトウェア（汎用コンピュータシステム又は専用マシンで実行されるような）、又はその両方の組合せで構成される処理ロジックによって実行される。
【００６７】
[0081]  図７を参照する。まず、処理ロジックは、INマトリクスから「in」ベクトルを検索する（処理ブロック７０５）。実行されている逆変換は、水平方向逆変換であるので、当該ベクトルは、逆量子化によって得られたマトリクスWの行である（従って、マトリクスWは、使用するINマトリクスである）。量子化係数マトリクスWの「in」ベクトルを受け取ると、処理ロジックは、一連の加算、減算及びシフトの演算（非乗算演算）を実行して、「out」ベクトル係数、ここでは、アレーZの行を生成する（処理ブロック７１０）。これら演算は、例えば、図６のアルゴリズムによって示されたように達成される。図６のアルゴリズムを使用する場合に、「in」ベクトルは、逆量子化マトリクスWの行であり、生成される「out」ベクトルは、Zマトリクスの出力ベクトル（行）である。
【００６８】
[0082]  マトリクスZの「out」ベクトルを生成した後に、処理ロジックは、処理すべき逆量子化INマトリクスのベクトルが更にあるかどうかを決定する（処理ブロック７１５）。逆量子化マトリクスのベクトルが更にある場合には、処理は処理ブロック７０５へ移行する。しかしながら、逆量子化マトリクスの全てのベクトルが変換されている場合には、水平方向逆変換の適用が終了となる（処理ブロック７２０）。当業者であれば、カリフォルニア州、サンタ・クララのインテル・コーポレーションのＰｅｎｔｉｕｍＩＶプロセッサのようなマルチメディア拡張型プロセッサを使用するときには、多数のベクトルを並列に処理できることが明らかであろう。
【００６９】
[0083]  このように、水平方向逆変換は、例えば、加算、減算及びシフトの演算を使用するが、乗算演算を伴わずに、少なくともサイズ８×８及び４×８のブロックの逆量子化マトリクスに対して実行することができる。
【００７０】
[0084]  逆量子化係数マトリクスWからマトリクスZを求めると、中間スケーリングの必要なく、垂直方向逆変換を実行することができる。例えば、垂直方向逆変換は、上述した水平方向変換によって得られたマトリクスZに対して実行される。次いで、図８のフローチャートに示すように、垂直方向逆変換が実行される。
【００７１】
[0085]  図８は、図６のアルゴリズムを使用して垂直方向逆変換を実行するためのプロセスの一実施形態を示すフローチャートである。このプロセスは、ハードウェア（回路、専用ロジック等）、ソフトウェア（汎用コンピュータシステム又は専用マシンで実行されるような）、又はその両方の組合せで構成される処理ロジックにより実行される。
【００７２】
[0086]  図８に示すように、処理ロジックは、INマトリクスから「in」ベクトルを受け取る（処理ブロック８０５）。実行されている逆変換は、垂直方向逆変換であるので（即ち、図５の処理ブロック５１０）、当該ベクトルは、マトリクスZの列である。
【００７３】
[0087]  「in」ベクトルを受け取った後に、処理ロジックは、非乗算演算を実行して、「out」ベクトル係数（したがって、マトリクスX'の列）を生成する（処理ブロック８１０）。非乗算演算は、例えば、図６のアルゴリズムに示されるように、達成される。図６のアルゴリズムを使用すると、「in」は、マトリクスZ'から検索されたベクトル（列）である（処理ブロック８０５で受け取られた）。「out」は、マトリクスX'の列の出力ベクトル（列）である。
【００７４】
[0088]  「out」ベクトルを生成した後に、処理ロジックは、処理すべきマトリクスZのベクトルが更にあるかどうかを決定する（処理ブロック８１５）。マトリクスZのベクトルが更にある場合には、処理は、上述したように、処理ブロック８０５へ移行する。しかし、マトリクスZの全てのベクトルが変換されている場合には、処理ロジックは、垂直方向逆変換の適用を停止する（処理ブロック８２０）。水平方向逆変換について上述したのと同様に、当業者であれば、Ｐｅｎｔｉｕｍ４プロセッサのようなマルチメディア拡張型プロセッサを使用する場合に、多数のベクトルを並列に処理できることは明らかであろう。
【００７５】
[0089]  このように、図６のアルゴリズムを使用して、マトリクス乗算を必要とせずに、水平方向逆変換及び垂直方向逆変換を計算することができる。従って、逆変換を、より効率的に且つ迅速に計算することができる。更に、サイズ８の変換（並びに他の変換サイズ）に対して、水平方向逆変換と垂直方向逆変換との間に中間スケーリングを必要としない。
【００７６】
[0090]  別の実施形態では、量子化と変換との組合せを、単一変換の構成に使用することができる。
【００７７】
[0091]  図９は、単一の４×４変換の一実施形態の構成に使用される基底ベクトルを示すテーブルである。図９に示す基底ベクトルにおいて、第１及び第３の基底ベクトルのノルムは２であり、第２及び第４の基底ベクトルのノルムは、３．６２５の平方根（ｓｑｒｔ（３．６２５）＝１．９０３９４３．．．）に実質的に等しい。ノルム間の比は、１．０５０４５１．．．であり、ｐｏｗ（２，１／１４）＝１．０５０７５６．．．に非常に近い。
【００７８】
[0092]  それ故、逆量子化に単一スケーリングテーブルを使用することができる。このスケーリングテーブルは、Ｃプログラミングコンピュータ言語表記で、次の形態をとる。
c*pow(2,k/14)
ここで、cは、定数であり、kは、k=0...15で、オフセットを表わす。一実施形態では、このテーブルの値は、上記式の結果をそれに最も近い整数に丸めることにより導出される整数であってもよい。
【００７９】
[0093]  例えば、c=32の場合は、スケーリングテーブルは、次の値を含むものであってもよい。
V[]=32,34,35,37,39,41,43,45,48,50,53,55,58,61,64,67
【００８０】
[0094]  次いで、オフセット値を使用してスケーリングを次のように実行することができる。
w_ij=c_ij*V[(QP%14)+offs[i]+offs[j]]<<(QP/14)
ここで、オフセット値は、次のように決定される。
offs[]=0,1,0,1
【００８１】
[0095]  別の実施形態では、大きなアレーVが使用され、スケーリング演算は、次のように変更される。
w_ij=c_ij*V[QP+offs[i]+offs[j]]
このような場合、アレーVのサイズは、QPの最大値＋２によって決定される。
【００８２】
[0096]  更に別の実施形態では、アレーＶの値は、次の形態をとる。
c*pow(2/sqrt(3.625),k)
【００８３】
[0097]  更に別の実施形態では、スケーリングは、次のように計算することができる。
w_ij=(c_ij<<(QP/14))*V[(QP%14)+offs[i]+offs[j]]>>16
ここで、乗算と、１６位置右シフトとの組み合せは、これをサポートするプロセッサにおいて単一の命令で実施される。例えば、ＭＭＸ命令セットでは、乗算は、２つの１６ビット値を引数としてとって、並列性を犠牲にせずに、３２ビットの結果の最上位の数ビットを返す。
【００８４】
[0098]  変換ベクトルの値は、全て、２の累乗、又は２つの２の累乗の和として表わすことができ、一次元逆変換の実施は簡単である。例えば、x[]が入力で、y[]が出力である場合には、入力ベクトルに適用する逆変換を、一実施形態では、図１０のアルゴリズムで示されるように実施することができる。別の実施形態では、右シフト演算の前の丸めファクタを変更することができる。例えば、演算x>>1を、(x+1)>>1に置き換え、演算(x+2)>>2を、x>>2又は(x+1)>>2に置き換えることができる。
【００８５】
[0099]  図９及び１０の基底ベクトル及びアルゴリズムを各々使用すると、簡単なアルゴリズムを高い精度で使用することができる。
【００８６】
[0100]  本明細書に説明された技術は、当業者に明らかなように、符号化プロセス及び復号プロセスの両方に適用することができる。従って、上述した復号プロセスと同様に考慮することによって、符号化の実施形態においてもオフセット及びスケーリングベクトルを再計算することができる。
【００８７】
符号化
【００８８】
[0101]  図１１は、符号化のための単一化変換を実行するプロセスの一実施形態を示すフローチャートである。このプロセスは、ハードウェア（回路、専用ロジック等）、ソフトウェア（汎用コンピュータシステム又は専用マシンで実行されるような）、又はその両方の組合せで構成される処理ロジックによって実行される。
【００８９】
[0102]  符号化のための変換の実行において、Xは変換されるべき入力ブロックであり、Zは変換されたブロックであり（マトリクスYは水平方向に変換されたブロックを表わし、マトリクスZは更に垂直方向に変換されたマトリクスを表わす）、更に、Z'は、変換され量子化されたブロックである。図１１に示すように、処理ロジックは、符号化されるべき情報ブロックを受け取る（処理ブロック１１０５）。次いで、処理ロジックは、水平方向変換をＣ言語コンピュータ表記で次のように実行する（処理ブロック１１１０）。
Y=X*M4，４×８及び４×４ブロックの場合
Y=X*M8，８×８及び８×４ブロックの場合
ここで、M4は、サイズ４の変換に対する基底ベクトルで、一実施形態では、図１２のテーブルに示すようなものである。更に、M8は、サイズ８の変換に対する基底ベクトルであり、一実施形態では、M8基底ベクトルは、図４に示すように、サイズ８の逆変換に使用される。
【００９０】
[0103]  水平方向変換が実行されると、処理ロジックは、垂直方向変換を実行する（処理ブロック１１１５）。垂直方向に変換されたマトリクスZを求めるための垂直方向変換は、次のように実行される。
Z=transpose(M4)*Y，８×４及び４×４ブロックの場合
Z=transpose(M8)*Y，８×８及び４×８ブロックの場合
ここで、M4及びM8は、処理ブロック１１１０の水平方向変換に関して上述したものと同様とすることができる。
【００９１】
[0104]  ボックス１１１５において垂直方向変換を実行すると、処理ブロック１１２０において量子化が実行される。一実施形態では、量子化は、一次元，３２エレメントのアレーV'を使用して実行することができる。
V'={26008,24548,23170,21870,20643,19484,18390,17358,
16384,15464,14596,13777,13004,12274,11585,10935,
10321,9742,9195,8679,8192,7732,7298,6889,
6502,6137,5793,5468,5161,4871,4598,4340｝
ここで、アレーV'の各エレメントkは、16384*pow(0.5,(k-8)/12.0)に等しい。
【００９２】
[0105]  量子化を実行するために、変換マトリクスZの各係数に対するオフセットを次のように計算することができる。
offset(i,j)=ofst4[i]+ofst4[j]，４×４ブロックの場合
offset(i,j)=ofst4[i]+ofst8[j]，４×８ブロックの場合
offset(i,j)=ofst8[i]+ofst4[j]，８×４ブロックの場合
offset(i,j)=ofst8[i]+ofst8[j]，８×８ブロックの場合
但し、ofst4={0,8,0,8}、及びofst8={6,7,2,7,6,7,2,7}である。
【００９３】
[0106]  量子化された変換ブロックZは、次のように計算することができる。
Z_ijz'_ij=sign(z_ij)*abs{(z_ij*V'[2*(QP%6)+offset(i,j)]+(1<<(16+(QP/6)))/B)>>(16+(QP/6))}
ここで、Bは、２以上の任意の数であることができ、係数の符号化のコストと再構成エラーとの間でのトレードオフのために使用されるバイアスを表す。
【００９４】
[0107]  単一化逆量子化及び単一化量子化の実行に使用される一次元マトリクスV及びV'、デコーダにおいて逆変換を実行するための図４の基底ベクトル、デコーダでの単一変換構成用の単純な変換と量子化との組合せを実行するための図９の基底ベクトル、及びエンコーダにおいて変換を実行するための図１２及び図４の基底ベクトルは、単なる例示に過ぎず、ここに述べた効果の少なくとも幾つかを達成するように他のアレー及び／又は基底ベクトルを決定することもできる。例えば、一次元マトリクスは、そのエントリーを２の分数乗にセットする（ここに示す例では、マトリクスのｉ番目のエントリーが、floor(pow(2,4+(i-8)/12.0)+0.5)の値を有する）ことによって単一化逆量子化を可能とするので、これらの考慮によって構成された一次元アレーを使用することができる。ある環境では、変換の基底ベクトルのノルムを考慮して、上述したオフセットを計算するためのオフセットベクトルを変更することによって、単一量子化を使用することが可能となる。例えば、図４に示すマトリクスの場合に、第１の基底ベクトルは、sqrt(8)=pow(2,18/12.0)のノルムを有し、第２のベクトルは、略pow(2,19/12.0)であるsqrt(578/64)のノルムを有し、更に、第３のベクトルは、略pow(2,14/12.0)であるsqrt(5)のノルムを有する。尚、{6,5,10...}は、{24-18,24-19,24-10...}によって得られる。
【００９５】
[0108]  同様に、上述した図４のベクトル基底を、乗算演算及び中間スケーリングを必要とせずに、図６のアルゴリズムに使用することができる。その理由は、各ベクトルの最大係数が１であるか又は１に近く、係数は、せいぜい２つの２の累乗の和として表わすことができ、従って、これらの考慮によって構成された／決定された任意のベクトル基底を使用しても、本明細書に説明された利点の少なくとも幾つかを達成できるからである。
【００９６】
[0109]  このように、基底ベクトル係数が２つの２の整数（正又は負）乗の和であり、且つベクトル係数が通常２を越えないという考慮によって、上述した効果の一つ以上を得ることができる。
【００９７】
[0110]  更に、上述した考慮によって、他のサイズ（８より大きな）の変換に対しても同様にベクトル基底を決定／構成することができる。従って、本発明は、サイズ４×４、４×８、８×４又は８×８の変換に限定されない。例えば、基底ベクトルのノルムをｐｏｗ（２，ｋ／ｎ）によって厳密に近似できるようにサイズ１６×１６の変換を構成することができる。ここで、ｋ及びｎは、小さい数字である（８×８変換の場合には、ｎは１２である）。
【００９８】
デコーダの例
【００９９】
[0111]  図１３Ａは、デコーダの一実施形態を示すブロック図である。図１３Ａに示すように、圧縮データ１３００は、エントロピーデコーダ１３０１によってエントロピー復号される。エントロピー符号化されたデータは、係数を含む。一実施形態において、エントロピーデコーダ１３０１は、可変長復号又はコンテクスト適応型２進算術復号を実行する。
【０１００】
[0112]  エントロピーデコーダ１３０１によって出力されたエントロピー復号データは、逆量子化器１３０２を用いて逆量子化を受ける。逆量子化器１３０２は、上述した逆量子化を実行するためのルックアップテーブルを記憶するメモリ１３２１を備えているか、又はそれにアクセスすることができる。尚、エントロピー復号データは、逆量子化される前に、係数を編成してアレーにデシリアライズされる。或いは又、逆量子化の後にデシリアライズ処理を行ってもよい。
【０１０１】
[0113]  逆量子化の後、逆量子化された係数に逆変換１３０３が適用される。一実施形態では、逆変換１３０３は、上述した水平及び垂直方向の一次元変換を含む。逆変換１３０３を適用することによって生成された復号データは、加算器１３０４を用いて、要素１３０５において生成される動き補償されたブロック又は空間予測されたブロックのいずれかと合成される。
【０１０２】
[0114]  加算器１３０４の出力は、フィルタ１３０６を用いてフィルタリングされ、変換及び量子化の適用及び隣接ブロック間の動きベクトルの差によって生じたアーチファクトが除去される。フィルタ１３０６の出力は、再構成データ１３０７である。一実施形態では、フィルタ１３０６は、イン・ループフィルタである（即ち、フィルタリングされた画像は、将来の動き補償予測に使用される）。イン・ループフィルタは、１６×１６マクロブロック及びブロック境界の両方に作用することができる。ここで、ブロックは、４×４、４×８、８×４又は８×８に等しいサイズを有することができる。
【０１０３】
[0115]  図１３Ｂは、エンコーダの一実施形態のブロック図である。図１３Ｂに示すように、入力データ１３１７は、減算器１３１４によって受け取られる。入力データ１３１７は、入力フレームを含む。減算器１３１４は、動き補償又は空間予測ユニット１３１５によって生成された予測データを入力データ１３１７から減算する。一実施形態では、予測データは、動き補償されたブロック又は空間予測されたブロックで構成される。
【０１０４】
[0116]  減算結果は、順方向変換１３１３へ入力され、このブロックにおいて、データが変換されて係数が生成される。一実施形態では、順方向変換１３１３は、上述した逆変換とは逆の水平及び垂直方向の一次元変換で構成される。
【０１０５】
[0117]  これらの係数は、次いで、量子化器１３１２において量子化されて、量子化変換係数が生成される。量子化器１３１２は、上述した逆量子化とは逆に量子化動作を実行するためのルックアップテーブルを記憶したメモリ１３２１を備えているか又はそれにアクセスすることができる。量子化変換係数は、当該量子化変換係数をシリアライズするために、アレーから再順序付けされる。再順序付けの後に、量子化変換係数は、エントロピーエンコーダ１３１１によってエントロピー符号化される。一実施形態では、エントロピーエンコーダ１３１１は、可変長符号化又はコンテクスト適応型２進算術符号化を実行する。
【０１０６】
[0118]  上述したように、エンコーダにおいて変換を実行するための考慮は、デコーダにおいて逆変換を実行するための考慮と同様である。映像符号化のための変換の提供に関して説明してきたが、当業者であれば、このような変換は、映像を処理するための量子化及び変換とは異なる技術領域にも適用することができることは明らかであろう。従って、本明細書の教示は、映像符号化に限定されない。
【０１０７】
[0119]  本明細書に説明されている単一化された逆量子化及び逆変換を実行するときには、量子化及び逆変換の適用が、適切なプロセッサで実行されるソフトウェアによって、且つ、要求のオペレーションの実行に好適なメモリを有することによって、達成されることは、当業者には明らかであろう。処理セット内にマルチメディア拡張を使用することができるプロセッサは、有利であるが、必要ではない。或いは又、本明細書に教示された量子化及び変換技術は、ソフトウェア及びハードウェア装置の任意の組合せによって達成されてもよく、或いは必要に応じて完全にハードウェアによって達成されてもよいことが当業者には明らかであろう。
【０１０８】
コンピュータシステムの例
【０１０９】
[0120]  図１４は、本明細書に説明されたオペレーションの一つ以上を実行できるコンピュータシステムの一例を示すブロック図である。尚、これらのブロック又はブロックのサブセットは、ここに述べる技術を実行するために、例えば、セルラー電話のような装置に一体化できる。
【０１１０】
[0121]  図１４を参照する。コンピュータシステム１４００は、情報を通信するための通信メカニズム即ちバス１４１１と、情報を処理するためにこのバス１４１１に接続されたプロセッサ１４１２とを備えている。このプロセッサ１４１２は、例えば、Ｐｅｎｔｉｕｍ（登録商標）、ＰｏｗｅｒＰＣ（登録商標）、Ａｌｐｈａ（登録商標）等のマイクロプロセッサを含むが、これに限定されない。
【０１１１】
[0122]  システム１４００は、また、プロセッサ１４１２によって実行される情報及び命令を記憶するためにバス１４１１に接続されたランダムアクセスメモリ（ＲＡＭ）又は他のダイナミック記憶装置１４０４（メインメモリと称される）を備えている。また、このメインメモリ１４０４は、プロセッサ１４１２によって命令を実行する間に一時的な変数又は他の中間情報を記憶するために使用されてもよい。
【０１１２】
[0123]  また、コンピュータシステム１４００は、プロセッサ１４１２用の静的な情報及び命令を記憶するためにバス１４１１に接続されたリードオンリメモリ（ＲＯＭ）及び／又は他のスタティック記憶装置１４０６と、磁気ディスク又は光学ディスク及びそれに対応するディスクドライブのようなデータ記憶装置１４０７とを備えている。このデータ記憶装置１４０７は、情報及び命令を記憶するためにバス１４１１に接続される。
【０１１３】
[0124]  コンピュータシステム１４００は、更に、コンピュータのユーザに情報を表示するためにバス１４１１に接続された陰極線管（ＣＲＴ）又は液晶ディスプレイ（ＬＣＤ）のようなディスプレイ装置１４２１にも接続される。また、アルファニューメリック及び他のキーを含むアルファニューメリック入力装置１４２２も、情報及びコマンドの選択をプロセッサ１４１２へ伝えるためにバス１４１１に接続される。更に別のユーザ入力装置は、マウス、トラックボール、トラックパッド、スタイラス、又はカーソル方向キーのようなカーソル制御器１４２３であり、方向情報及びコマンド選択をプロセッサ１４１２に伝えると共に、ディスプレイ１４２１上のカーソル移動を制御するためにバス１４１１に接続される。
【０１１４】
[0125]  バス１４１１に接続される別の装置は、命令、データ又は他の情報をペーパーやフィルムのような媒体や同様の形式の媒体にプリントするために使用されるハードコピー装置１４２４である。更に、スピーカ及び／又はマイクロホンのような音声記録及び再生装置も、コンピュータシステム１４００に音声をインターフェイスするためにバス１４１１に任意に接続できる。バス１４１１に接続できる別の装置は、電話、ハンドヘルド式のパームデバイス(palm device)又は他の装置と通信するための有線／無線通信装置１４２５である。
【０１１５】
[0126]  尚、システム１４００のいずれか又は全部の要素及びそれに関連したハードウェアを本発明に適用できる。しかしながら、他の構成のコンピュータシステムが、それら装置の幾つか又は全部を含んでもよいことが明らかであろう。
【０１１６】
[0127]  当業者であれば、以上の説明を読んだ後に、本発明の多数の変更や修正が疑いなく明らかとなるであろうが、図示して説明した特定の実施形態は、本発明を単に例示するものに過ぎず、本発明を限定するためのものではないことを理解されたい。それ故、種々の実施形態の詳細な説明は、本発明の本質とみなす特徴のみを記載した特許請求の範囲を何ら限定するものではない。
【図１Ａ】
2010213296.tif 000003
【図１Ｂ】
2010213296.tif 000004
【図１Ｃ】
2010213296.tif 000005
【図２Ａ】
2010213296.tif 000006
【図２Ｂ】
2010213296.tif 000007
【図３】
2010213296.tif 000008
【図４】
2010213296.tif 000009
【図５】
2010213296.tif 000010
【図６】
2010213296.tif 000011
【図７】
2010213296.tif 000012
【図８】
2010213296.tif 000013
【図９】
2010213296.tif 000014
【図１０】
2010213296.tif 000015
【図１１】
2010213296.tif 000016
【図１２】
2010213296.tif 000017
【図１３Ａ】
2010213296.tif 000018
【図１３Ｂ】
2010213296.tif 000019
【図１４】
2010213296.tif 000020