(57)【要約】【課題】ＭＰＥＧ４−ＡＶＣ用途のためのビットレート及び／又は歪み制御を改善すること。【解決手段】１つ又は複数の変換係数のブロックを含んだフレームの各マクロブロックについて、量子化パラメタの適用値に応じて、量子化された係数の何パーセントρが振幅「ゼロ」を得るかを求め、マクロブロックのρ値／量子化パラメタ関係に関する情報に基づいて、マクロブロックの処理の際に、ビットレートＲの制御が、Θを定数として、Ｒ（ρ）＝Θ*（１００−ρ）に基づいて行われるように、量子化パラメタ値を用いてフレームのエンコーダ出力ビットレートＲを制御し、エンコーダ出力ビットレートＲを制御する際に、現在マクロブロックに適用される量子化パラメタ値を、現在マクロブロックまですべての先行マクロブロックに関する量子化パラメタ値の平均からの所定の偏差により制限する。【選択図】図４Ａ
2006333444.tif 000002
【特許請求の範囲】
【請求項１】
ブロックベースのビデオエンコーダにおけるエンコーダ出力ビットレートを制御する方法であって、
ピクセルブロックから導出された変換（ＤＣＴ）係数が可変量子化パラメタ（ＱＰ）を用いて量子化されて符号化され、ただし、前記量子化パラメタは量子化ステップのサイズに関係しており、前記ピクセルブロックはイントラモード（Ｉｎｔｒａ）又はインターモード（Ｉｎｔｅｒ）で符号化することができ、
該方法は、
−  前記変換係数のブロックのうちの１つ又は複数を含んだフレームの各マクロブロックについて、前記量子化パラメタの適用値（ＱＰ）に応じて、量子化された係数の何パーセントρが振幅「ゼロ」を得るかを求めるステップ（ＲＨＯＩＴＡＴＢＬ，ＲＨＯＩＥＴＢＬ）と、
−  結果として得られた前記フレームのマクロブロックのρ値／量子化パラメタ関係に関する情報に基づいて、前記マクロブロックを処理する際に、ビットレートＲの制御が、Θを定数として、Ｒ（ρ）＝Θ*（１００−ρ）に基づいて行われるように、前記量子化パラメタ値（ＱＰ）を用いて前記フレームのエンコーダ出力ビットレートＲを制御するステップとを有しており、
前記量子化パラメタ値を用いてエンコーダ出力ビットレートＲを制御する際に、現在マクロブロックに適用される量子化パラメタ値を、現在マクロブロックまでの現在フレーム内のすべての先行マクロブロックに関する量子化パラメタ値の平均からの所定の偏差により制限することを特徴とする、ブロックベースのビデオエンコーダにおけるエンコーダ出力ビットレートを制御する方法。
【請求項２】
前記ビデオエンコーダはＭＰＥＧ４−ＡＶＣビデオ信号を符号化する、請求項１記載の方法。
【請求項３】
現在フレーム内の先行マクロブロックに適用された量子化パラメタ値の平均が前フレーム内のマクロブロックに適用された量子化パラメタ値の平均から所定値以上に偏差しないように、現在フレーム内の現在マクロブロックに適用される量子化パラメタ値を制限する、請求項１又は２記載の方法。
【請求項４】
フレームの変換係数の各マクロブロックについて前記パーセンテージρを求める前記ステップ（ＲＨＯＩＴＡＴＢＬ，ＲＨＯＩＥＴＢＬ）を２つの異なるタイプのルックアップテーブルを用いて実行し、
ただし、第１のタイプのルックアップテーブルは、符号化モード（Ｉｎｔｒａ，Ｉｎｔｅｒ）、ブロック内での変換係数の位置（ｉ，ｊ）、及び、変換係数の等級値を相応する量子化パラメタ値の候補にマッピングするものであり、
第２のタイプのルックアップテーブルは、符号化モード（Ｉｎｔｒａ，Ｉｎｔｅｒ）、ブロック内での変換係数の位置（ｉ，ｊ）、及び、量子化パラメタ候補（ＱＰ）を量子化パラメタに対する適用可能な量子化閾値にマッピングするものである、請求項１から４のいずれか１項記載の方法。
【請求項５】
フレームの各マクロブロックについて、前記量子化パラメタの適用値（ＱＰ）に応じて、量子化された係数の何パーセントρが振幅「ゼロ」を得るかを求める（ＲＨＯＩＴＡＴＢＬ，ＲＨＯＩＥＴＢＬ）に当たって、前記ブロックに関して、イントラ符号化モードで処理する際に、ＤＣ予測、水平予測、及び垂直予測のモードを用いて１６*１６イントラ予測のみを実行する、請求項１から５のいずれか１項記載の方法。
【請求項６】
再構成すべきイントラマクロブロックの推定として、原フレームのピクチャ内容を再構成として使用する、請求項５記載の方法。
【請求項７】
請求項１から６のいずれか１項記載の方法に従って符号化されることを特徴とするビットストリーム。
【請求項８】
請求項１から６のいずれか１項記載の方法に従って符号化されたビットストリームを保持することを特徴とする記憶媒体。
【請求項９】
ブロックベースのビデオエンコーダ装置であって、
ピクセルブロックから導出された変換（ＤＣＴ）係数が可変量子化パラメタ（ＱＰ）を用いて量子化されて符号化され、ただし、前記量子化パラメタは量子化ステップのサイズに関係しており、前記ピクセルブロックはイントラモード（Ｉｎｔｒａ）又はインターモード（Ｉｎｔｅｒ）で符号化することができ、
該装置は、
−  変換係数の前記ブロックのうちの１つ又は複数を含んだフレームの各マクロブロックについて、前記量子化パラメタの適用値（ＱＰ）に応じて、量子化された係数の何パーセントρが振幅「ゼロ」を得るかを求めるための手段（ＲＨＯＩＴＡＴＢＬ，ＲＨＯＩＥＴＢＬ；ρ）と、
−  結果として得られた前記フレームのマクロブロックのρ値／量子化パラメタ関係に関する情報に基づいて、前記マクロブロックを処理する際に、ビットレートＲの制御が、Θを定数として、Ｒ（ρ）＝Θ*（１００−ρ）に基づいて行われるように、前記量子化パラメタ値（ＱＰ）を用いて前記フレームのエンコーダ出力ビットレートＲを制御するための制御手段（ＥＣＦＲ，ＬＵＱＰ，ＲＤＯ，ＧＢＲＩＴＥ、ＵＰＤＴ）とを有しており、
前記制御手段は、現在マクロブロックに適用される量子化パラメタ値を、現在マクロブロックまでの現在フレーム内のすべての先行マクロブロックに関する量子化パラメタ値の平均からの所定の偏差により制限することを特徴とする、ブロックベースのビデオエンコーダ装置。
【請求項１０】
前記ビデオエンコーダはＭＰＥＧ４−ＡＶＣビデオ信号を符号化する、請求項９記載の装置。
【請求項１１】
現在フレーム内の現在マクロブロックに適用される量子化パラメタ値は、現在フレーム内の先行マクロブロックに適用された量子化パラメタ値の平均が前フレーム内のマクロブロックに適用された量子化パラメタ値の平均から所定値以上に偏差しないように制限される、請求項９又は１０記載の装置。
【請求項１２】
フレームの変換係数の各マクロブロックについて、前記パーセンテージρは２つの異なるタイプのルックアップテーブルを用いて求められ（ＲＨＯＩＴＡＴＢＬ，ＲＨＯＩＥＴＢＬ）、
ただし、第１のタイプのルックアップテーブルは、符号化モード（Ｉｎｔｒａ，Ｉｎｔｅｒ）、ブロック内での変換係数の位置（ｉ，ｊ）、及び、変換係数の等級値を相応する量子化パラメタ値の候補にマッピングするものであり、
第２のタイプのルックアップテーブルは、符号化モード（Ｉｎｔｒａ，Ｉｎｔｅｒ）、ブロック内での変換係数の位置（ｉ，ｊ）、及び、量子化パラメタ候補（ＱＰ）を量子化パラメタに対する適用可能な量子化閾値にマッピングするものである、請求項９から１１のいずれか１項記載の装置。
【請求項１３】
フレームの各マクロブロックについて、前記量子化パラメタの適用値（ＱＰ）に応じて、量子化された係数の何パーセントρが振幅「ゼロ」を得るかを求める（ＲＨＯＩＴＡＴＢＬ，ＲＨＯＩＥＴＢＬ）に当たって、前記ブロックに関して、イントラ符号化モードで処理する際に、モードＤＣ予測、水平予測、及び垂直予測のモードを用いて１６*１６イントラ予測のみが実行される、請求項９から１２のいずれか１項記載の装置。
【請求項１４】
再構成すべきイントラマクロブロックの推定として、原フレームのピクチャ内容が再構成として使用される、請求項１３記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロックベースのビデオエンコーダ、例えば、ＭＰＥＧ４−ＡＶＣエンコーダにおけるエンコーダ出力ビットレートを制御するための方法及び装置に関するものである。
【背景技術】
【０００２】
定ビットレート（ＣＢＲ）のレート制御は実時間ビデオ伝送に非常に有用である。しかし、ＭＰＥＧ４−ＡＶＣ（ＩＳＯ／ＩＥＣ  １４４９６−１０）ビデオコーデックにおいて良好なＣＢＲレート制御を実現することは難しい。一般に、ＭＰＥＧ４−ＡＶＣビデオコーデックにおいては、ビットレートと歪みの両方が、量子化の程度を制御する量子化パラメタＱＰに依存している。ＱＰを調節することにより、レートＱＰと歪みＱＰとの間のトレードオフを得ることができる。しかし、ほとんどのレート制御アルゴリズムは良好な画質を達成するか又は比較的大きな制御誤差を被るかのいずれかである。合同ビデオチーム（ＪＶＴ）参照ソースコードでは、非特許文献１及び非特許文献２により提案されたレート制御アルゴリズムの使用がＪＶＴ委員会により推奨されている。
【０００３】
Ｚｈｉｈａｉ  Ｈｅは、非特許文献３において、Ｈ．２６３及びＭＰＥＧ４−２（ＩＳＯ／ＩＥＣ  １４４９６−２）コーデックに対して良好なパフォーマンスを達成する新しいモデルを提案した。パラメタ‘ρ’は量子化された変換係数のうちのゼロのパーセンテージを表している。ゼロのパーセンテージは最終ビットレートを決定する際に重要な役割を果たすので、Ｚ．Ｈｅは値‘ρ’と実際のビットレートとの間に基本的に線形の関係を探し出した。Ｚ．Ｈｅは残りの係数の分布はガウス分布に従うか又はラプラス分布に従うと仮定しているため、この線形の関係又はモデルは以下のようにして導くことができる：
残余画像のラプラス分布は
Ｒ（ρ）＝２*ｌｏｇ２ｅ（１−ρ）＋Ｏ（［１−ρ］３）                  （１）
であり、ここで‘Ｏ’は高次の無限小である。
原画像のガウス分布は
【０００４】
【数１】
2006333444.tif 000003
であり、ここで‘ａ’及び‘ｂ’は原画像の統計的パラメタである。
ビットレートＲと量子化された変換のゼロ値のパーセンテージρとの間の関係は、
Ｒ（ρ）＝Θ*（１００−ρ）                            （３）
によって近似することができる。ここで、ρは％値で表されており、Θは線形関係の傾きを表す定数である。
最終的な目標は、ゼロ係数Ｐのパーセンテージρと量子化パラメタＱＰとの間の関係を見出すことである。Ｚ．Ｈｅによれば、ＱＰとρとの間には１対１写像が存在する。したがって、ＱＰ領域におけるレート／歪み関数Ｒ（ＱＰ）及びＤ（ＱＰ）はρ領域に写像することができ、それぞれＲ（ρ）及びＤ（ρ）として表される。
Ｈ．２６３ビデオ圧縮の場合、ゼロ係数Ｐのパーセンテージρと量子化パラメタＱＰとの間の関係は、
【０００５】
【数２】
2006333444.tif 000004
で与えられる。この線形ρ領域モデルはＭＰＥＧ４−２における制御誤差と画質とに対して良好なパフォーマンスを有している。
【０００６】
良好なレート制御は、小さな制御誤差と良好な画質といった良好な符号化／復号化特性を提供するものであり、小さな制御誤差と良好な画質は両方とも実際のＭＰＥＧ４−ＡＶＣの使用にとって重要である。しかし、量子化処理と量子化された変換又はＤＣＴ変換（離散コサイン変換）係数のうちのゼロのパーセンテージρは、ＭＰＥＧ４−２で使用されるものとは異なっている。Ｚ．Ｈｅの元々のρ領域モデルはＭＰＥＧ４−ＡＶＣコーデックに対しては使用することができない。というのも、共に量子化ステップのサイズに依存するレート／歪み最適化（ＲＤＯ）とレート制御とが対立するからである。
【０００７】
非特許文献１及び非特許文献２におけるレート制御アルゴリズムは、ピクチャシーケンス内に例えばフラッシュ又はフェードイン／アウトを含む制御誤差を生じる。異なる（一時的又は空間的に隣接した）マクロブロックに対しては著しく異なるＱＰが使用されるため、画質は不安定である。さらに、非特許文献２におけるレート制御は先行する単位又はシーンからの情報を使用しているため、ビデオシーケンス内の唐突なシーン内容の変化を符号化するのに適切な解決手段ではない。
【非特許文献１】Ｚ．Ｌｉ，Ｗ．Ｇａｏ，Ｆ．Ｐａｎ，Ｓ．Ｍａ，Ｋ．Ｐ．Ｌｉｎ，Ｇ．Ｆｅｎｇ，Ｘ．Ｌｉｎ，Ｓ．Ｒａｈａｒｄｊａ，Ｈ．Ｌｕ  ａｎｄ  Ｙ．Ｌｕ，“Ａｄａｐｔｉｖｅ  Ｒａｔｅ  Ｃｏｎｔｒｏｌ  ｗｉｔｈ  ＨＲＤ  Ｃｏｎｓｉｄｅｒａｔｉｏｎ”、ＪＶＴ−Ｈ０１４文書、第８回会合、ジュネーブ、２００３年５月
【非特許文献２】Ｚ．Ｇ．Ｌｉ，Ｆ．Ｐａｎ，Ｋ．Ｐ．Ｌｉｍ，Ｘ．Ｌｉｎ  ａｎｄ  Ｓ．Ｒａｈａｒｄｊａ，“Ａｄａｐｔｉｖｅ  Ｒａｔｅ  Ｃｏｎｔｒｏｌ  ｆｏｒ  Ｈ．２６４”，ＩＣＩＰ，２００４
【非特許文献３】“ρ−Ｄｏｍａｉｎ  Ｒａｔｅ−Ｄｉｓｔｏｒｔｉｏｎ  Ａｎａｌｙｓｉｓ  ａｎｄ  Ｒａｔｅ  Ｃｏｎｔｒｏｌ  ｆｏｒ  Ｖｉｓｕａｌ  Ｃｏｄｉｎｇ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ”、博士論文、カリフォルニア大学サンタバーバラ校、２００１年６月
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の課題はＭＰＥＧ４−ＡＶＣ用途のためのビットレート及び／又は歪み制御を改善することである。
【課題を解決するための手段】
【０００９】
上記課題は、ブロックベースのビデオエンコーダにおけるエンコーダ出力ビットレートを制御する方法において、ピクセルブロックから導出された変換係数が可変量子化パラメタを用いて量子化されて符号化され、ただし、前記量子化パラメタは量子化ステップのサイズに関係しており、前記ピクセルブロックはイントラモード又はインターモードで符号化することができ、前記変換係数のブロックのうちの１つ又は複数を含んだフレームの各マクロブロックについて、前記量子化パラメタの適用値に応じて、量子化された係数の何パーセントρが振幅「ゼロ」を得るかを求めるステップと、結果として得られた前記フレームのマクロブロックのρ値／量子化パラメタ関係に関する情報に基づいて、前記マクロブロックを処理する際に、ビットレートＲの制御が、Θを定数として、Ｒ（ρ）＝Θ*（１００−ρ）に基づいて行われるように、前記量子化パラメタ値を用いて前記フレームのエンコーダ出力ビットレートＲを制御するステップとを有し、前記量子化パラメタ値を用いてエンコーダ出力ビットレートＲを制御する際に、現在マクロブロックに適用される量子化パラメタ値を、現在マクロブロックまでの現在フレーム内のすべての先行マクロブロックに関する量子化パラメタ値の平均からの所定の偏差により制限するようにすることにより解決される。
【００１０】
同様に、上記課題は、ブロックベースのビデオエンコーダ装置において、ピクセルブロックから導出された変換係数が可変量子化パラメタを用いて量子化されて符号化され、ただし、前記量子化パラメタは量子化ステップのサイズに関係しており、前記ピクセルブロックはイントラモード又はインターモードで符号化することができ、変換係数の前記ブロックのうちの１つ又は複数を含んだフレームの各マクロブロックについて、前記量子化パラメタの適用値に応じて、量子化された係数の何パーセントρが振幅「ゼロ」を得るかを求めるための手段と、結果として得られた前記フレームのマクロブロックのρ値／量子化パラメタ関係に関する情報に基づいて、前記マクロブロックを処理する際に、ビットレートＲの制御が、Θを定数として、Ｒ（ρ）＝Θ*（１００−ρ）に基づいて行われるように、前記量子化パラメタ値（ＱＰ）を用いて前記フレームのエンコーダ出力ビットレートＲを制御するための制御手段とを有しており、前記制御手段が、現在マクロブロックに適用される量子化パラメタ値を、現在マクロブロックまでの現在フレーム内のすべての先行マクロブロックに関する量子化パラメタ値の平均からの所定の偏差により制限するように構成することにより解決される。
【発明を実施するための最良の形態】
【００１１】
本発明によれば、実際の使用において直接使用できる実時間レート制御のための適応ρ領域処理が適用される。量子化パラメタＱＰと変換ゼロ係数のパーセンテージとの間のマッピングを実現するために、１組のマッピングテーブルが設計されている。これらのテーブルの使用はマッピングの正確性を改善するだけでなく、計算時間を短縮する。量子化パラメタＱＰは、量子化ステップのサイズを符号化又は表すインデックス又はパラメタである。ＱＰは、ＭＰＥＧ４−ＡＶＣにおいてそうであるように、０から５１までの５２のレベルのうちの１つを有する。例えば、ＱＰ＝０，３，６，１０，１８，３０，４８及び５１は０．６２５，０．８７５，１．２５，２，５，２０，１６０及び２２４の量子化ステップサイズにそれぞれ対応する。さらに、ビットレートとゼロのパーセンテージ値との間の（線形）関係の傾きを得るために、変換レベルの詳細な分析が行われる。最後に、線形モデルの傾きが隣接フレーム又はブロックに対するルックアヘッド手続きにより制限される。
【００１２】
有利には、１パスＭＰＥＧ４−ＡＶＣコーデックに対する本発明によるレート制御は、制御誤差を小さくし、良好な画質を達成する。すなわち、
−  本発明によるレート制御は正確にビットレートを制御する−１秒当たり１％の制御誤差しか生じない；
−  本発明によるレート制御は事前分析のための計算時間を短縮する；
−  本発明によるレート制御はＭＰＥＧ４−ＡＶＣにおけるバッファのオーバーフローとアンダーフローの問題を解決する。
【００１３】
原則として、本発明による方法はブロックベースのビデオエンコーダにおけるエンコーダ出力ビットレートを制御するのに適している。本発明による方法では、ピクセルブロックから導出された変換係数が可変量子化パラメタを用いて量子化されて符号化され、ただし、前記量子化パラメタは量子化ステップのサイズに関係しており、前記ピクセルブロックはイントラモード又はインターモードで符号化することができ、該方法は、
−  前記変換係数のブロックのうちの１つ又は複数を含んだフレームの各マクロブロックについて、前記量子化パラメタの適用値に応じて、量子化された係数の何パーセントρが振幅「ゼロ」を得るかを求めるステップと、
−  結果として得られた前記フレームのマクロブロックのρ値／量子化パラメタ関係に関する情報に基づいて、前記マクロブロックを処理する際に、ビットレートＲの制御が、Θを定数として、Ｒ（ρ）＝Θ*（１００−ρ）に基づいて行われるように、前記量子化パラメタ値を用いて前記フレームのエンコーダ出力ビットレートＲを制御するステップとを有しており、
前記量子化パラメタ値を用いてエンコーダ出力ビットレートＲを制御する際に、現在マクロブロックに適用される量子化パラメタ値を、現在マクロブロックまでの現在フレーム内のすべての先行マクロブロックに関する量子化パラメタ値の平均からの所定の偏差により制限する。
【００１４】
原則的に、本発明によるブロックベースのビデオエンコーダ装置はエンコーダ出力ビットレートを制御するのに適している。本発明によるビデオエンコーダ装置では、ピクセルブロックから導出された変換係数が可変量子化パラメタを用いて量子化されて符号化され、ただし、前記量子化パラメタは量子化ステップのサイズに関係しており、前記ピクセルブロックはイントラモード又はインターモードで符号化することができ、該装置は、
−  変換係数の前記ブロックのうちの１つ又は複数を含んだフレームの各マクロブロックについて、前記量子化パラメタの適用値に応じて、量子化された係数の何パーセントρが振幅「ゼロ」を得るかを求めるための手段と、
−  結果として得られた前記フレームのマクロブロックのρ値／量子化パラメタ関係に関する情報に基づいて、前記マクロブロックを処理する際に、ビットレートＲの制御が、Θを定数として、Ｒ（ρ）＝Θ*（１００−ρ）に基づいて行われるように、前記量子化パラメタ値（ＱＰ）を用いて前記フレームのエンコーダ出力ビットレートＲを制御するための制御手段とを有しており、
前記制御手段は、現在マクロブロックに適用される量子化パラメタ値を、現在マクロブロックまでの現在フレーム内のすべての先行マクロブロックに関する量子化パラメタ値の平均からの所定の偏差により制限する。
【００１５】
本発明の有利な別の実施形態はそれぞれの従属請求項に開示されている。
【実施例】
【００１６】
ρ領域
非特許文献３によれば、ρ領域制御は、フレーム内の各マクロブロックについて変換又はＤＣＴ変換領域内での量子化の結果として生じるゼロのパーセンテージが既知であることを必要とする（変換後の残余がガウス分布又はラプラス分布に従えば、ρ領域は正しく機能することができる）。しかし、レート−歪み最適化（ＲＤＯ）は動き推定とモード決定を考慮するためにＱＰを必要とし、異なるモードに対しては異なる変換係数が存在する。本発明によれば、残余の簡単かつ正確な推定が用いられる。さらに、事前分析からの副次的情報−動きベクトルや変換係数のような−を再び使用することができ、有利にはＲＤＯステップにおける計算時間が短縮される。
【００１７】
事前処理
ａ）１６*１６マクロブロック事前分析
モード決定に続く実際のＭＰＥＧ４−ＡＶＣ符号化では、（マクロ）ブロックの大部分（一般に６０％〜９０％）が変換前に１６*１６のサイズのピクセルを有しているのに対して、変換サイズは４*４である。視覚的な滑らかさを達成するには、隣接マクロブロック間のＱＰ差が大きすぎてはならない。それゆえ、符号化すべきフレームはまず事前処理され、つぎに、ρ領域レート制御を実行するために、現在フレーム及びその隣接フレームの統計値に従って処理される。量子化されたゼロ係数のパーセンテージがρ領域モードの最終的なパフォーマンスを制御する。
【００１８】
Ｉフレームの場合、ＤＣ予測、水平予測、及び垂直予測の３つのモードを用いて、１６*１６イントラ予測のみが実行される。現在時点に対しては、再構成されたイントラマクロブロックは使用できない。それゆえ、再構成すべきイントラマクロブロック、すなわちＩフレーム予測を計算するためのイントラマクロブロックについて良好な推定を見つけ出すことが重要である。多くの実験の後に、原フレームのピクチャ内容を再構成として使用することができることが分かったが、変更されたパラメタが前マクロブロックのＱＰによるビットレート計算のために付加されなければならない。このイントラ予測に続いて、最良予測方向に従って残余画像が計算される。変換又はＤＣＴ変換が各マクロブロックの残余に施され、それにより、図１に示されているように、出力変換係数が得られる。
【００１９】
Ｐフレームの場合には、各マクロブロックに対して１６*１６動き推定が行われ、続いて、見つけ出した動きベクトルを適用した後に、残余画像が図１に従って変換される。図１によれば、生データＲＷＤが処理に入力され、ステップＩＦＲにおいて、Ｉフレーム処理を実行すべきか否かが調べられる。
【００２０】
Ｉフレーム処理を実行すべき場合には、ＤＣ予測、水平予測、又は垂直予測を実行すべきかを調べる検査ＤＣＨＶを含んだ１６*１６ピクセルブロックイントラ予測１６*１６ＩＴＡＰＲが、このフレームのマクロブロックに対して実行される。相応する計算は、ＤＣ残余取得ステージＧＲＤＣ、水平予測残余取得ステージＧＲＨ、又は垂直予測残余取得ステージＧＲＶにおいて実行される。択一的には、検査ＤＣＨＶが省略され、３つの予測がそれぞれのケースにおいて並列してＧＲＤＣ、ＧＲＨ、及びＧＲＶにおいて実行され、それに続いて、３つの結果のうちのいずれをさらに処理すべきかについて検査が行われる。相応する結果のブロックはイントラ変換ステージＩＴＡＴＲにより周波数領域に変換される。その後、ステージＲＨＯＩＴＡＴＢＬにおいて、現在ブロックに関するρＩ値（すなわち、ゼロ変換係数の数又はパーセンテージ）を得るために、以下のイントラテーブル１〜３及び７〜９を用いて、変換係数と量子化パラメタとの間でマッピング（以下を参照せよ）が行われる。
【００２１】
Ｉフレーム処理を実行すべきでない場合には、１６*１６ピクセルブロック動き推定ＭＥ１６*１６がこのフレームのマクロブロックに対して実行され、それに続いて、ステージＣＯＭＰＲにおいて残余ブロックの計算が行われる。相応する結果ブロックは変換ステージＩＴＥＤＣＴにおいて変換される。その後、ステージＲＨＯＩＴＥＴＢＬにおいて、現在ブロックに関するρＰ値（すなわち、ゼロ変換係数の数又はパーセンテージ）を得るために、以下のイントラテーブル４〜６及び１０〜１２を用いて、変換係数と量子化パラメタとの間でマッピング（以下を参照せよ）が行われる。
【００２２】
ステージＲＨＯＩＴＡＴＢＬとＲＨＯＩＴＡＴＥＢＬからの出力値ρＩとρＰは、後のレート／歪み最適化ＲＤＯのために使用される。
【００２３】
ｂ）ルックアップテーブルマッピング
ステージＲＨＯＩＴＡＴＢＬ及びＲＨＯＩＴＡＴＥＢＬでは、イントラρ値ρＩ及びインターρ値ρＰが真分数として（又はパーセンテージ値として）、ならびに、ＱＰの関数として以下の式（５）に従って計算される。ただし、Ｍは現在マクロブロック内のピクセル／係数の数であり（すなわち、一般に１マクロブロック当たりの輝度ピクセル値の数は１６*（４*４）＝２５６であり、（４：２：０フォーマットの）１マクロブロック当たりのクロミナンスピクセル値の数は４*（４*４）の２倍＝１２８であり、合計して１マクロブロック当たり３８４のピクセル値である）、ｘは４*４変換ブロック位置ｉ（０．．．３）及びｊ（０．．．３）における変換された係数であり、ｉｔａｂｌｅは現在イントラ係数がゼロであるか否かを判定するイントラ閾値であり、ｔａｂｌｅは現在インター係数がゼロであるか否かを判定するインター閾値である：
【００２４】
【数３】
2006333444.tif 000005
目標は、ビデオシーケンス内の変換されたマクロブロック値の各集合について、候補ＱＰと量子化の結果生じるゼロ振幅変換係数の数との間の関数又は関係を得ることである。
【００２５】
現在マクロブロックのステータス‘Ｉｎｔｒａ’又は‘Ｉｎｔｅｒ’、現在ブロック位置（０．．．３）（０．．．３）、及び候補ＱＰ（０．．．５１）は、現在ＱＰに対する適用可能な量子化閾値を得る目的でテーブル１〜６のうちの相応するテーブルにアドレスするために使用される。各テーブルは５２個の値、すなわち、エンコーダで使用しうるＱＰの数だけの値を含んでいる。
【００２６】
テーブル１、ブロック位置（０，０）、（０，２）、（２，０）、（２，２）に対するイントラ量子化閾テーブル：
【００２７】
【表１】
2006333444.tif 000006
【００２８】
テーブル２、ブロック位置（０，１）、（０，３）、（１，０）、（１，２）、（２，１）、（２，３）、（３，０）、（３，２）に対するイントラ量子化閾テーブル：
【００２９】
【表２】
2006333444.tif 000007
【００３０】
テーブル３、ブロック位置（１，１）、（１，３）、（３，１）、（３，３）に対するイントラ量子化閾テーブル：
【００３１】
【表３】
2006333444.tif 000008
【００３２】
テーブル４、ブロック位置（０，０）、（０，２）、（２，０）、（２，２）に対するインター量子化閾テーブル：
【００３３】
【表４】
2006333444.tif 000009
【００３４】
テーブル５、ブロック位置（０，１）、（０，３）、（１，０）、（１，２）、（２，１）、（２，３）、（３，０）、（３，２）に対するインター量子化閾テーブル：
【００３５】
【表５】
2006333444.tif 000010
【００３６】
テーブル６、ブロック位置（１，１）、（１，３）、（３，１）、（３，３）に対するインター量子化閾テーブル：
【００３７】
【表６】
2006333444.tif 000011
【００３８】
これら６つのテーブルは次のように構成されている。
ブロック位置（０，０）、（０，２）、（２，０）及び（２，２）に対しては位置係数ａ２が割当てられており、ブロック位置（０，１）、（０，３）、（１，０）、（１，２）、（２，１）、（２，３）、（３，０）及び（３，２）に対しては位置係数ｂ２／４が割り当てられており、ブロック位置（１，１）、（１，３）、（３，１）及び（３，３）に対しては位置係数ａ*ｂ／２が割り当てられている。ただし、ａ＝１／２であり、ｂ＝（２／５）１／２であり、ＰＦはその結果得られる位置係数である。
【００３９】
ゼロ値候補が
Ｚｉｊ＝ｒｏｕｎｄ（Ｗｉｊ*ＰＦ／Ｑｓｔｅｐ）
であるとする。ここで、Ｗｉｊは量子化前の変換係数値であり、Ｑｓｔｅｐは量子化ステップサイズ値である。実際的には、｜Ｚｉｊ｜＝｜Ｗｉｊ｜*ＭＦ＋ｆ＞＞ｑｂｉｔｓであり、ここで、ＭＦ＝ＰＦ／Ｑｓｔｅｐ*２ｑｂｉｔｓ、ｑｂｉｔｓ＝１５＋ｆｌｏｏｒ（ＱＰ／６）、イントラブロックの場合には、ｆ＝２ｑｂｉｔｓ／３、インターブロックの場合にはｆ＝２ｑｂｉｔｓ／６である。インターブロックの場合、Ｗｉｊ＜Ｑｓｔｅｐ*５／６／ＰＦならば、変換係数はゼロに量子化されなければならない。イントラブロックの場合には、Ｗｉｊ＜Ｑｓｔｅｐ*２／３／ＰＦならば、変換係数はゼロに量子化されなければならない。
【００４０】
ゼロに量子化される閾値の導出：
例えば、イントラブロック位置（０，０）における変換係数の場合、ＱＰ＝５１（したがってまた相応するＱｓｔｅｐ＝２２４）ならば、ゼロに量子化される変換係数の上閾値は５９８である。なぜならば、５９７．３３＝２２４*２／３／ＰＦ（０，０）、ＰＦ（０，０）＝ａ２＝１／４であるからである。同様に、イントラ及びインター量子化閾テーブル１〜６は、ＱＰ＝０からＱＰ＝５１までについて、ならびに、ブロック位置の各グループについて導出されている。イントラブロックの場合、最大の量子化閾は１５３４である。イントラ変換係数が１５３４よりも大きければ、イントラ変換係数は決してゼロには量子化されない。インターブロックの場合、最大の量子化閾は１９１７である。インター変換係数が１９１７よりも大きければ、インター変換係数は決してゼロに量子化されない。
【００４１】
以下のテーブル７〜１２は、選択されるＱＰに応じて、量子化後に得られるゼロ変換係数の数をカウントするために使用することができる。これらのテーブルの中の数はＱＰ値を表している。
【００４２】
テーブル７、ブロック位置（０，０）、（０，２）、（２，０）、（２，２）に対するイントラ量子化ルックアップテーブル：
【００４３】
【表７】
2006333444.tif 000012
このテーブルは５９８個のエントリーを有している。
【００４４】
テーブル８、ブロック位置（０，１）、（０，３）、（１，０）、（１，２）、（２，１）、（２，３）、（３，０）、（３，２）に対するイントラ量子化ルックアップテーブル：
【００４５】
【表８】
2006333444.tif 000013
【００４６】
【表９】
2006333444.tif 000014
【００４７】
【表１０】
2006333444.tif 000015
このテーブルは９６１個のエントリーを有している。
【００４８】
テーブル９、ブロック位置（１，１）、（１，３）、（３，１）、（３，３）に対するイントラ量子化ルックアップテーブル：
【００４９】
【表１１】
2006333444.tif 000016
【００５０】
【表１２】
2006333444.tif 000017
【００５１】
【表１３】
2006333444.tif 000018
【００５２】
【表１４】
2006333444.tif 000019
このテーブル１５３４個のエントリーを有している。
【００５３】
テーブル１０、ブロック位置（０，０）、（０，２）、（２，０）、（２，２）に対するインター量子化ルックアップテーブル：
【００５４】
【表１５】
2006333444.tif 000020
【００５５】
【表１６】
2006333444.tif 000021
このテーブルは７４７個のエントリーを有する。
【００５６】
テーブル１１、ブロック位置（０，１）、（０，３）、（１，０）、（１，２）、（２，１）、（２，３）、（３，０）、（３，２）に対するインター量子化ルックアップテーブル：
【００５７】
【表１７】
2006333444.tif 000022
【００５８】
【表１８】
2006333444.tif 000023
【００５９】
【表１９】
2006333444.tif 000024
このテーブルは１２０１個のエントリーを有する。
【００６０】
テーブル１２、ブロック位置（１，１）、（１，３）、（３，１）、（３，３）に対するインター量子化ルックアップテーブル：
【００６１】
【表２０】
2006333444.tif 000025
【００６２】
【表２１】
2006333444.tif 000026
【００６３】
【表２２】
2006333444.tif 000027
【００６４】
【表２３】
2006333444.tif 000028
【００６５】
【表２４】
2006333444.tif 000029
【００６６】
【表２５】
2006333444.tif 000030
このテーブルは１９１７個のエントリーを有する。
【００６７】
すべての現在変換係数候補の等級値はテーブル７〜１２のうちの相応するテーブルにアドレスする。ルックアップテーブル出力は‘０’から‘５１’の間の相応するＱＰ数である。例えば、現在変換係数がイントラブロック内の位置（０，０）に属し、その等級値が‘５’であるならば、ＱＰ＝６又はそれよりも高いＱＰしかゼロに量子化するために使用することができない。したがって、テーブル７において、位置‘５’はＱＰ＝６にマッピングされている。例えば、イントラブロックの場合には、現在変換係数の等級値が１４８２から１５３４の間にあり、位置（１，１）を有しているならば、この係数は自動的にＱＰ＝５１にマッピングされる。イントラブロック係数の等級値が１４８２よりも大きな場合には、テーブル７〜１０はアドレスされない（つまり、アドレスする必要がない）。例えば、イントラブロック係数の等級値が５９８よりも大きく、ブロック位置が（０，０）、（０，２）、（２，０）、（２，２）である場合には、テーブル７はアドレスされない（つまり、アドレスする必要がない）。
【００６８】
これら６つのテーブル７〜１２は、ブロック内での現在位置とイントラ又はインタータイプとを考慮して、現在変換係数の等級値とこの変換係数がゼロに量子化されるＱＰとの間で迅速にマッピングを行うために使用することができる。
【００６９】
テーブル７〜１２から得られるＱＰ値はテーブル１〜６のうちの相応するテーブルにアドレスする、すなわち、テーブル７はテーブル１に関連しており、テーブル８はテーブル２に関連しており、等々。テーブル１〜６のうちの相応するテーブルからの出力は、現在係数の等級値と所与のＱＰとに対する実際の量子化閾値である。それぞれの候補ＱＰについて、結果として得られるブロックのゼロ係数の数が積算され、続いて、テーブル１〜６からの相応する量子化閾値を用いて量子化が行われるので、関数ρＩ（ＱＰ）とρＰ（ＱＰ）を確定することができる。したがって、テーブル１〜１２を使用すれば、変換値の１つのブロックに関して、特定のＱＰが量子化において適用された場合に変換値のうちのいくつがゼロになるのかを容易に求めることができる。上記のテーブルを使用することにより、計算がスピードアップし、式（５）における比較ステップ（すなわち、ｉｆ節）を回避することが可能になる。
【００７０】
上記のテーブル処理は図２に示されている。変換値ＴＲＶを受け取り、量子化パラメタＱＰを出力するテーブル７〜１２は、内部テーブルＩＴＢＬと見なすことができる。所与のＱＰに対するゼロ係数の実際の数ＮＺＱＰは、テーブル１〜６を用いて計算される。テーブル１〜６は外部テーブルＯＢＴＬと見なすことができる。
【００７１】
ρ−ＱＰルックアップマッピングテーブルはテーブル７〜１２に従って形成することができる。各ＱＰについて、変換ブロック内のゼロ係数の総数はテーブル７〜１２から読み出すことができる。現在ＱＰに対するフレーム内のゼロ係数の総数は、変換ブロック内のゼロ係数の総数から積算される。最終的に、ρ−ＱＰルックアップマッピングテーブルにおけるこの結果は、ＱＰ＝０からＱＰ＝５１に相当する。なお、ρ−ＱＰルックアップマッピングテーブルのサイズは５２である。
【００７２】
レート制御
以下の処理はビデオシーケンスのフレームを実際に符号化するために行われる。
【００７３】
本発明によるレート制御は図３に関連して示されている。ステージＥＣＦＲにおいて、マクロブロックを処理するために、現在フレームの終端に達しているか否かが検査される。現在フレームの終端に達していれば、次のフレームのためのマクロブロック処理が始まる。現在フレームの終端に達していなければ、ステージＬＵＱＰにおいて、現在フレーム内の次のマクロブロックが（イントラモード）で検査される。なお、ステージＬＵＱＰは、上で説明した双線形ルックアップテーブル１〜１２を格納したメモリＢＬＮＬＵにアクセスし、現在の総ビットレートと現在フレームのΘ値を計算する。つぎに、現在のρＩ値を用いて、レート／歪み最適化ステップＲＤＯが実行される。その後、相応するマクロブロックの１６*１６インターモード符号化のためのビットレートがステージＧＢＲＩＴＥにおいて計算される。各マクロブロックについてＲＤＯを実行した後、ρ値が調整される。続く更新ステージＵＰＤＴは、フレームの第１マクロブロックからフレームの現在マクロブロックまで、ビットの実際の総数と量子化されたゼロ変換係数の総数と値Θを計算する。
【００７４】
ステップＡ）
符号化遅延の小さな状態を達成するために、（例えば、グループオブピクチャのような符号化単位に対して）最初のＩフレームの後にはＰフレームだけが符号化されると仮定してよい。したがって、（仮想）エンコーダバッファは次のように初期化することができる：
【００７５】
【数４】
2006333444.tif 000031
ここで、Ｂはフレームの目標ビット数（量子化された変換係数、動きベクトル、及びヘッダ情報のためのビットを含む）であり、Ｒはビット／秒でのチャネルレートであり、Ｆはフレーム／秒でのフレームレートであり、Ｗはエンコーダバッファ内のビット数であり、またフレームが符号化された後に更新されるフレームのための変更値を表しており、Φは最大バッファサイズであり、Ｗｐｒｅｖはバッファ内の前ビット数であり、Ｂ’は前フレームの符号化に使用された実際のビット数であり、Ｍは現在マクロブロック内の変換係数の数であり、Ｚ＝０．１は遅延を小さくするためのデフォルト値として設定されている。つぎに、線形モデルパラメタ値Θが１．５に設定され、現在フレームのマクロブロックの総数が初期化される。
【００７６】
ステップＢ）
上記の事前処理ステップに続いて、各マクロブロックについてのρとＱＰ（０．．．５１）との間のマッピングテーブルが得られる。ＱＰは式（７）を用いて上記ρ−ＱＰルックアップマッピングテーブルから計算される：
ρ＝３８４（Ｎ−Ｎｍ）−（Ｒｃ−Ｒｍ）／Θ                      （７）
ここで、３８４はマクロブロック内の変換係数の数であり、Ｎは１フレーム当たりのマクロブロック数であり、Ｎｍは現在フレーム内の既に符号化されたマクロブロックの数であり、Ｒｃは現在フレームのビット／秒でのエンコーダ出力ビットレートであり、Ｒｍは現在フレーム内の既に符号化されたマクロブロックにより使用されるビット数である。
【００７７】
現在マクロブロックを符号化するためにＱＰを求める際、Ｐ／ＱＰフレームマッピングテーブルからＱＰを得るために、双線形探索法を使用することができる。なお、Ｐ／ＱＰフレームマッピングテーブルは式（５）に記載されているマクロブロックρ／ＱＰマッピングテーブルの合計である。
【００７８】
マクロブロック間の隣接情報を使用することにより、現在マクロブロックのＱＰは、有利には、現在マクロブロックまでの現在フレーム内のすべての先行マクロブロックに関するＱＰの平均を用いて制限される。疑似コード（８）及び（９）を参照のこと。フレーム内でのＱＰの空間的変動は好ましくは±３ＱＰ値よりも小さい。有利には、現在フレームの平均ＱＰと前ピクチャの平均ＱＰとの間の差も制限することができる。フレーム間でのＱＰの一時的な変動は好ましくは±４ＱＰ値よりも小さい。隣接するマクロブロックのＱＰが過度に変動しないようにするという目標に従って、現在マクロブロックのＱＰは、現在マクロブロックまでの現在フレーム内のすべての先行マクロブロック（ｍｂ）の平均ＱＰ（AverageQP）を用いて制限される。これは次の疑似コードにより記述することができる：
TempAverageQP = SumQP / number_mb
if ( absolute ( Delta = ( CurrentQP−TempAverageQP ) ) > 3 )
{
if ( Delta < 0 )
Delta = 3;
else
Delta = −3;
CurrentQP = TempAverageQP−Delta;
}
ここで、SumQPは現在マクロブロックまでの現在フレーム内のすべてのＱＰ値の総計であり、TempAverageQPは現在マクロブロックまでの現在フレーム内の平均ＱＰであり、CurrentQPは現在マクロブロックのＱＰであり、“absolute”は絶対値を計算することを意味する。
【００７９】
時間的に隣接するフレームの中の相応するマクロブロックのＱＰが過度に変動しないようにするという目標にしたがって、現在マクロブロックのＱＰは、以下の疑似コードにより記述されているように、さらに制限される：
if ( absolute ( Delta = ( CurrentQP−AverageRhoQP ) ) > 4 )
{
if ( Delta < 0 )
Delta = 4;
else
Delta = −4;
CurrentQP = AverageRhoQP−Delta;
}
ここで、AverageRhoQPは１つ又は複数の前フレームの平均ＱＰであり、異なるフレームのΘ値の差に応じて選択することができる。
【００８０】
ステップＣ）
ゼロ係数の数（ρ）と現在マクロブロックのビット数を取得し、ヘッダと符号化バッファを更新する。
【００８１】
ステップＤ）
現在フレームの終端までステップＢ及びＣを繰り返す。
【００８２】
図４Ｂは、歪み（すなわち、符号化誤差）を所与とした場合のＱＰの既知の関数として符号化出力ビットレートを示しており、一方で図４Ｃは、ビットレートを所与とした場合のＱＰの既知の関数として歪み（すなわち、符号化誤差）を示している。図４Ａでは、入力マクロブロックＩＭＢが変換ステージＤＣＴに入る。結果として得られる変換係数は量子化器ＱＵにおいて量子化される。ただし、量子化器ＱＵの特性は量子化パラメタＱＰにより制御される。各マクロブロックに対するρ値は、事前処理の際にρステージにおいて、候補ＱＰとテーブル１〜１２とを用いて求められる。これらのテーブルはステージρに又はコントローラ（図示せず）に格納してもよい。量子化器ＱＵは量子化されたマクロブロックデータＱＭＢをエンコーダＥＮＣに出力する。このエンコーダＥＮＣは、例えば、動きベクトルやヘッダ情報のような副次的情報ＳＩも受け取ることのできるエントロピーエンコーダである。エンコーダＥＮＣの出力データはエンコーダバッファＢＵＦを通過し、エンコーダＢＵＦは後続のチャネルにビットを出力する。ステージρ又はコントローラはもバッファＢＵＦの充填レベルに関する情報を受け取り、本発明にしたがって、ゼロ変換係数のパーセンテージと空間的及び／又は時間的に隣接するマクロブロックのＱＰに対してのＱＰの調整とに基づいたレート／歪み最適化を適用することによって、各マクロブロックのＱＰを設定する。
【００８３】
本発明は、例えば、ＰＣ又はＤＳＰプラットフォームにおいて、実時間符号化のために使用することができる。また、本発明は、例えばＭＰＥＧ２−Ｖｉｄｅｏのような他のビデオ符号化規格に対しても使用することができる。
【００８４】
本発明に従って符号化されたビットストリームは、例えばＤＶＤ、Ｂｌｕｒａｙ、又はＨＤ−ＤＶＤ光ディスクのような記憶媒体に記録することができる。
【図面の簡単な説明】
【００８５】
【図１】本発明による事前分析ならびにρＩ及びρＰの決定のためのフローチャートを示す。
【図２】ＱＰとρと変換値との間の関係を示す。
【図３】ρレート制御のフローチャートを示す。
【図４Ａ】本発明による量子化コントローラの簡略化されたブロック図を示す。
【図４Ｂ】歪み（すなわち、符号化誤差）を所与とした場合のＱＰの既知の関数として符号化出力ビットレートを示す。
【図４Ｃ】ビットレートを所与とした場合のＱＰの既知の関数として歪み（すなわち、符号化誤差）を示す。
【図１】
2006333444.tif 000032
【図２】
2006333444.tif 000033
【図３】
2006333444.tif 000034
【図４Ａ】
2006333444.tif 000035
【図４Ｂ】
2006333444.tif 000036
【図４Ｃ】
2006333444.tif 000037