(57)【特許請求の範囲】
【請求項１】
圧縮されたビットストリームを生成するためのビデオシーケンスの符号化におけるレート制御の方法であって、
前記ビデオシーケンス内のピクチャのシーケンスについてシーケンスベース量子化ステップサイズを演算することであって、前記演算が前記ピクチャのシーケンス内の先頭ピクチャ内に使用される平均量子化ステップサイズに基づいており、同じ量子化ステップサイズが全体のピクチャに対して使用される、前記演算することと、
前記ピクチャのシーケンス内のピクチャについてピクチャベース量子化ステップサイズを演算することであって、前記演算が前記シーケンスベース量子化ステップサイズと前記ピクチャの種類とレート制御階層における前記ピクチャのレベルとに基づいており、１つのレベル０のフレームを保証するために前記レート制御のための前記量子化ステップサイズを演算し、前記レベル０のフレームが最初のフレームであり、複数のフレームがレート制御階層内に異なるレベルを有する、前記演算することと、
圧縮されたビットストリームの一部を生成するために前記ピクチャベース量子化ステップサイズを用いて前記ピクチャを符号化することと、
を含む、方法。
【請求項２】
請求項１に記載の方法であって、
前記シーケンスベース量子化ステップサイズを演算することが、
前記ピクチャのシーケンス内の先頭ピクチャがイントラ符号化ピクチャであるときに、前記ビデオシーケンス内の前に符号化された複数のピクチャの平均量子化ステップサイズの重み平均として前記シーケンスベース量子化ステップサイズを演算すること、
を更に含む、方法。
【請求項３】
請求項２に記載の方法であって、
前記ピクチャを符号化することが、
前記ピクチャの符号化に用いられるべき最小ビット数と前記ピクチャの符号化に用いられるべき最大ビット数とを演算することと、
前記最小ビット数よりも大きく、前記最大ビット数よりも小さい或る数のビットを用いて前記ピクチャを符号化することと、
を更に含む、方法。
【請求項４】
請求項３に記載の方法であって、
前記或る数のビットを用いて前記ピクチャを符号化することが、
前記ピクチャ内の符号化ブロックのシーケンスを符号化する前に、前記ピクチャを符号化するために必要とされるビット数を推定することと、
前記推定されるビット数が前記最大ビット数よりも大きいときに、前記符号化ブロックのシーケンスについての量子化ステップサイズを増加させることと、
前記推定されるビット数が前記最小ビット数よりも小さいときに、前記符号化ブロックのシーケンスについての前記量子化ステップサイズを低減することと、
を更に含む、方法。
【請求項５】
請求項３に記載の方法であって、
前記ピクチャを符号化することが、
前記ピクチャのシーケンス内の前記ピクチャの直前のピクチャでシーン変化が検出されたときに、前記ピクチャ内の符号化ブロックのシーケンスのレート制御のために前記最小ビット数と前記最大ビット数とを適合させること、
を更に含む、方法。
【請求項６】
請求項１に記載の方法であって、
前記ビデオシーケンス内のシーン変化に応答して、前記シーン変化後の先頭のシーン変化なしピクチャの符号化に用いられる量子化ステップサイズの平均値に基づいて前記シーケンスベース量子化ステップサイズを適応させること、
を更に含む、方法。
【請求項７】
圧縮されたビットストリームを生成するようにビデオシーケンスを符号化するためのエンコーダであって、
前記ビデオシーケンス内の符号化ブロックを量子化するための量子化ステップサイズを生成するように構成されるレート制御構成要素と、
前記量子化ステップサイズを用いて前記符号化ブロックを量子化するように構成される量子化構成要素と、
を含み、
前記レート制御構成要素が、
前記ビデオシーケンス内のピクチャのシーケンスについてシーケンスベース量子化ステップサイズを演算することであって、前記量子化ステップサイズが前記ピクチャのシーケンス内の先頭ピクチャを符号化するときに使用される平均量子化ステップサイズに基づいてセットされ、同じ量子化ステップサイズが全体のピクチャに対して使用される、前記演算することと、
前記ピクチャのシーケンス内のピクチャについてピクチャベース量子化ステップサイズを演算することであって、前記演算が前記シーケンスベース量子化ステップサイズと前記ピクチャの種類とレート制御階層における前記ピクチャのレベルとに基づいており、１つのレベル０のフレームを保証するために前記レート制御のための前記量子化ステップサイズを演算し、前記レベル０のフレームが最初のフレームであり、複数のフレームが前記レート制御階層内に異なるレベルを有する、前記演算することと、
によって前記量子化ステップサイズを生成する、エンコーダ。
【請求項８】
圧縮されたビットストリームを生成するためのビデオシーケンスの符号化におけるレート制御用の命令を記憶する機械可読媒体であって、
ビデオエンコーダ内のプロセッサによる前記命令の実行により、前記ビデオエンコーダが、
前記ビデオシーケンス内のピクチャのシーケンスについてのシーケンスベース量子化ステップサイズを演算する動作であって、前記量子化ステップサイズが前記ピクチャのシーケンス内の先頭ピクチャを符号化するときに使用される平均量子化ステップサイズに基づいてセットされ、同じ量子化ステップサイズが全体のピクチャに対して使用される、前記動作と、
前記ピクチャのシーケンス内のピクチャについてのピクチャベース量子化ステップサイズを演算することであって、前記演算が前記シーケンスベース量子化ステップサイズと前記ピクチャの種類とレート制御階層における前記ピクチャのレベルとに基づいており、１つのレベル０のフレームを保証するために前記レート制御のための前記量子化ステップサイズを演算し、前記レベル０のフレームが最初のフレームであり、複数のフレームが前記レート制御階層内に異なるレベルを有する、前記動作と、
前記圧縮されたビットストリームの一部を生成するために前記ピクチャベース量子化ステップサイズを用いて前記ピクチャを符号化する動作と、
を実施する、機械可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、ビデオ信号を符号化／復号化するための装置、システム、および方法に関する。
【背景技術】
【０００２】
デジタルビデオ製品に対する要求が増え続けている。デジタルビデオ用アプリケーションのいくつかの例として、ビデオ通信、セキュリティと監視、工業自動化、および娯楽（例えば、ＤＶ、ＨＤＴＶ、衛星ＴＶ、セットトップボックス、インターネットビデオストリーミング、デジタルカメラ、携帯電話、ビデオジュークボックス、ハイエンドディスプレイ、およびパーソナルビデオレコーダ）が挙げられる。さらに、ハンドセットの演算能力の向上、電池技術の発達、および高速無線接続の結果、ビデオアプリケーションはますますモバイル化している。
【０００３】
デジタルビデオ製品を本質的に可能にしているのがビデオ圧縮である。圧縮・解凍（コーデック）アルゴリズムによりデジタルビデオの記憶および送信が可能である。コーデックは、例えば、ＭＰＥＧ−２、ＭＰＥＧ−４、Ｈ．２６４／ＡＶＣなどの工業規格、および現在開発中の規格であるＨＥＶＣとし得る。これらすべての規格の中核をなすのは、ブロック動き補償（予測）に加えて予測誤りの変換符号化のハイブリッドビデオ符号化手法である。ブロック動き補償は、前のピクチャからの予測によって連続ピクチャ（フレームまたはフィールド）間の時間冗長性を除去するために用いられ、変換符号化は、ピクチャの各ブロック内の空間冗長性を除去するために用いられる。
【０００４】
このようなブロックに基づく符号化手法は、冗長な情報を取り除くことと、復号化されるビデオシーケンスにおいてぎりぎり知覚できるかどうかのわずかな画質の妥協を行うことによって圧縮を達成するので、本質的にロスが多い。特に、圧縮された符号化ブロックにおいてどの程度空間的な細部が保持されるかを制御するのが量子化ステップサイズ（Ｑｓ）である。Ｑｓが小さいほど、細部の保持の度合いが高く画質がよくなるが、その代わりにビットレートが高くなってしまう。Ｑｓが大きくなると、保持される細部が少なくなりビットレートが減少するが、その代わりに歪みが大きくなり画質が損なわれる。
【０００５】
レート制御は、いかなるビデオエンコーダでも重要な部分である。レート制御では、各ピクチャを符号化するために用いられるビット数を管理することによって、符号化したビデオを復号化する際に知覚される画質を最大にしようとする。つまり、レート制御では、出力バッファの現在の充足状況に鑑みて、Ｑｓなどの様々なエンコーダパラメータを動的に調整して圧縮ビットストリームにおいて目標ビットレートを実現する。
【０００６】
本発明の原理を実施するための例示の実施形態を、添付の図面を参照して以下に説明する。
【図面の簡単な説明】
【０００７】
【図１Ａ】１つまたは複数の実施形態に従った例を示す。
【図１Ｂ】１つまたは複数の実施形態に従った例を示す。
【図１Ｃ】１つまたは複数の実施形態に従った例を示す。
【図１Ｄ】１つまたは複数の実施形態に従った例を示す。
【図１Ｅ】１つまたは複数の実施形態に従った例を示す。
【０００８】
【図２】１つまたは複数の実施形態に従ったデジタルシステムのブロック図を示す。
【０００９】
【図３】１つまたは複数の実施形態に従ったビデオエンコーダのブロック図を示す。
【００１０】
【図４Ａ】１つまたは複数の実施形態に従ったレート制御のための方法のフローチャートを示す。
【図４Ｂ】１つまたは複数の実施形態に従ったレート制御のための方法のフローチャートを示す。
【００１１】
【図５】１つまたは複数の実施形態に従った例示のデジタルシステムを示す。
【図６】１つまたは複数の実施形態に従った例示のデジタルシステムを示す。
【図７】１つまたは複数の実施形態に従った例示のデジタルシステムを示す。
【発明を実施するための形態】
【００１２】
本明細書では、「ピクチャ」という用語はフレームまたはフレームのフィールドを指す。フレームは、既知のタイムインタバル中に取得される全体イメージである。ビデオシーケンスがプログレッシブフォーマットである場合、ピクチャという用語は全体フレームを指す。ビデオシーケンスがインターレースフォーマットである場合、各フレームは奇数走査線フィールドと、それに続く偶数走査線フィールドとからなる。これらのフィールドがひとつのピクチャになる。さらに、Ｉピクチャはイントラ符号化ピクチャであり、Ｐピクチャは、別のＩピクチャまたはＰピクチャ、例えば、前のＩピクチャまたはＰピクチャ、から予測されるインター符号化ピクチャであり、Ｂピクチャは２枚のピクチャ、例えば、前のＩピクチャまたはＰピクチャおよび後続のＩピクチャまたはＰピクチャ、を用いて予測されるインター符号化ピクチャである。一般に、一グループのピクチャ（ＧＯＰ）はビデオシーケンス内の一群の連続ピクチャであり、ＧＯＰ構造が、ＧＯＰ内の各ピクチャをどのように符号化するか、すなわち、所与のピクチャをＩピクチャ、Ｐピクチャ、またはＢピクチャとして符号化するかどうか、を指定する。
【００１３】
ＧＯＰ構造が非階層構造の場合、各ＧＯＰはＩピクチャで始まり、次のＩピクチャまでにすべてのピクチャを含む。これら２枚のＩピクチャ間のピクチャは、この特定のＧＯＰ構造によって決まる何らかの定義されたＰピクチャおよび／またはＢピクチャのシーケンスとし得る。このようなＧＯＰの例を図１Ａ〜１Ｃに示す。ＧＯＰ構造が階層構造、例えば、階層Ｂ構造の場合、ＧＯＰは、キーピクチャおよびこのキーピクチャと前のキーピクチャとの間に時間的に存在するすべてのピクチャになるように定義される。キーピクチャは、イントラ符号化ピクチャ、すなわちＩピクチャ、または前のキーピクチャを用いるインター符号化ピクチャ、すなわちＰピクチャとし得る。ＧＯＰ内の他のピクチャは階層的に予測される。階層Ｂ符号化構造を有するＧＯＰでは、このＧＯＰ内の他のピクチャはＢピクチャである。階層Ｐ符号化構造を有するＧＯＰでは、このＧＯＰ内の他のピクチャはＰピクチャである。階層Ｐおよび階層Ｂ符号化構造を有するＧＯＰの例をそれぞれ図１Ｄおよび図１Ｅに示す。
【００１４】
ビデオ符号化に用いられる多くのレート制御手法、例えば、Ｈ．２６３  ＴＭＮ５（ｔｅｓｔ  ｍｏｄｅｌ  ｎｅａｒ−ｔｅｒｍ  ５）に基づくレート制御手法では、ビデオシーケンス内にＩピクチャおよびＰピクチャだけが現れると仮定する。さらに、このような手法では、ピクチャレベルでベース量子化ステップサイズ（Ｑｓ）を変調し得る。つまり、Ｐピクチャ用のベースＱｓは、前のＰピクチャの符号化に用いられたＱｓの平均値になるように設定される。次いで、このベースＱｓは、ピクチャを符号化する前に、前のＰピクチャを符号化するために用いられたビット数が目標ビット数よりも大きかったか小さかったかに基づいて変調される。次いで、得られたベースＱｓは、ピクチャ内の各符号化ブロックを符号化するために用いられる実際のＱｓを決定するための開始点として用いられる。さらに、ピクチャの符号化中に、このピクチャの推定符号化サイズがピクチャの目標符号化サイズにどのくらい近いかに基づいてＱｓを周期的に増減し得る。
【００１５】
このようなレート制御手法は、一グループのピクチャ（ＧＯＰ）の構造が、Ｉピクチャの後に何枚かのＰピクチャが続き、ピクチャからピクチャに複雑さが大きく変化しない、（ピクチャがビデオシーケンスのフレームである）プログレッシブ符号化では、良好な結果を得ることができる。しかし、このようなレート制御手法は、ＧＯＰ構造がＢピクチャを含み、かつ／または階層符号化構造を有する場合には、十分でないことがある。
【００１６】
本発明の実施形態は、各ピクチャの開始時ではなく、ピクチャのシーケンスの開始時にベースＱｓを決定および変調するレート制御を提供する。さらに、シーケンスベースＱｓは、ピクチャのシーケンスの先頭ピクチャの種類（例えば、ＩピクチャまたはＰピクチャ）に基づいて異なって決定および変調される。次いで、シーケンスベースＱｓを用いて、シーケンス内の各ピクチャに対しベースＱｓが決定される。或るピクチャについてのピクチャベースＱｓは、このピクチャの種類およびレート制御階層におけるこのピクチャのレベルに基づいてシーケンスベースＱｓから適合され得る。さらに、１つまたは複数の実施形態では、ピクチャを符号化する前に、様々な基準に基づいてこのピクチャについて最小および最大符号化サイズを演算する。次いで、サブピクチャレベルでのレート制御、すなわち、或るピクチャにおける符号化ブロックのシーケンスについて、例えば、行など、このピクチャにおける符号化ブロックのシーケンスについてのベースＱｓが、ピクチャベースＱｓと最小および最大符号化サイズとに基づいて決定される。より具体的には、このピクチャの符号化サイズは符号化ブロックのシーケンスの開始時に推定され、このサブピクチャベースＱｓは、このピクチャの推定符号化サイズが最小または最大符号化サイズから外れる場合に適宜増減され得る。特定のＧＯＰ構造は必要とされず、ＧＯＰは、Ｂピクチャを含むことができ、かつ／または階層符号化構造を有し得る。
【００１７】
ビデオシーケンスにおいてシーン変化が生じるときに起こり得る質の劣化を低減するために、いくつかの実施形態では、シーン変化が生じた時点を認識し、シーン変化が検出された後で先頭のシーン変化なしピクチャにおけるＱｓを管理する処置を取る。本明細書においてより詳細に説明するように、レート制御では、各符号化ブロックシーケンスの開始時に、前のピクチャでシーン変化が検出され、この時点で符号化中のピクチャではシーン変化が検出されなかったときに、最小および最大符号化サイズを適合させ得る。次いで、このシーン変化なしピクチャからの、符号化ブロックシーケンスに用いられる平均Ｑｓ値が、このシーン変化なしピクチャを含むピクチャのシーケンスについてのシーケンスベースＱｓとなるように設定される。
【００１８】
本明細書では、レート制御の実施形態で用いられるフレームシーケンスをサブＧＯＰと称する。サブＧＯＰを決定するために、ビデオシーケンス内の各フレームは、レート制御階層において異なるレベルにあると見なされる。レート制御階層におけるこれらのレベルは次のように定義される。レベル０フレームは、キーフレームとも呼ばれ、他のレベル０フレームを予測するために使用し得る。さらに、予測されたレベル０フレームは、基準フレームとして他のレベル０ピクチャのみを使用し得る。レベルｎ（ｎ＞０）のピクチャは、（ｎ−１）およびそれよりも低い（ｎ＞０）レベルのフレームから予測され得、ｎ＋１およびそれよりも高い（ｎ＞０）レベルのフレームを予測するために用いられ得る。サブＧＯＰは、レベル０フレーム、すなわちキーフレーム、で始まり、次のレベル０ピクチャの前の最終フレームで終わるフレームシーケンスである。これにより、サブＧＯＰにはレベル０フレームが１つしかないことが保証され、このレベル０フレームがこのサブＧＯＰにおける最初のフレーム（符号化順であり、表示順ではない）になる。
【００１９】
図１Ａ〜図１Ｅは、様々なＧＯＰ構造の例を示し、これらのＧＯＰ構造に関連するサブＧＯＰを特定している。図１Ａ〜図１Ｃは非階層ＧＯＰ構造の例であり、図１Ｄおよび図１Ｅは階層ＧＯＰ構造の例である。より具体的には、図１ＡはＩＰＰＰ符号化構造の例であり、図１ＢはＩＢＰ符号化構造の例であり、図１ＣはＩＢＢＰ符号化構造の例であり、図１Ｄは階層Ｐ符号化構造の例であり、図１Ｅは階層Ｂ符号化構造の例である。これらの各図では、ピクチャが表示順で示されており、各ピクチャの上または下の番号はそのピクチャの符号化順を識別するものである。
【００２０】
レート制御階層には２種類のサブＧＯＰがある。ＩサブＧＯＰとＰサブＧＯＰである。ＩサブＧＯＰは、先頭ピクチャがＩピクチャであるサブＧＯＰであり、ＰサブＧＯＰは、先頭ピクチャがＰピクチャであるサブＧＯＰである。本明細書においてより詳細に説明するように、１つまたは複数の実施形態では、ＩサブＧＯＰとＰサブＧＯＰではシーケンスベースＱｓの決定のしかたが異なる。
【００２１】
図２は、１つまたは複数の実施形態に従ったデジタルシステムのブロック図を示す。このシステムは、ソースデジタルシステム２００および送信先デジタルシステム２０２を含み、前者から後者に通信チャネル２１６を介して符号化されたビデオシーケンスを送信する。ソースデジタルシステム２００は、ビデオ取得構成要素２０４、ビデオエンコーダ構成要素２０６、およびトランスミッタ構成要素２０８を含む。ビデオ取得構成要素２０４は、ビデオエンコーダ構成要素２０６によって符号化されるビデオシーケンスを提供するように構成される。ビデオ取得構成要素２０４は、例えば、ビデオカメラ、ビデオアーカイブ、またはビデオコンテンツプロバイダからのビデオフィードとし得る。いくつかの実施形態では、ビデオ取得構成要素２０４は、ビデオシーケンスとしてのコンピュータグラフィックスや、ライブビデオとコンピュータ生成ビデオの組合せを生成し得る。
【００２２】
ビデオエンコーダ構成要素２０６は、ビデオ取得構成要素２０４からビデオシーケンスを受け取り、トランスミッタ構成要素２０８による送信のため、かつ／またはストレージ構成要素（図示せず）への記憶のため、それを符号化する。一般に、ビデオエンコーダ構成要素２０６は、ビデオ取得構成要素２０４からピクチャのシーケンスとしてビデオシーケンスを受け取り、ピクチャ全体またはピクチャの一部であり得る符号化ブロックにピクチャを分割し、符号化ブロックを予測ブロックに分割し、予測ブロックに基づいて符号化ブロック内のビデオデータを符号化する。符号化プロセスの間、本明細書に記載するようなレート制御のための方法を実施し得る。ビデオエンコーダ構成要素２０６の実施形態の機能性は、図３Ａおよび図３Ｂを参照して以下でより詳細に説明する。
【００２３】
トランスミッタ構成要素２０８は、符号化されたビデオデータを送信先デジタルシステム２０２に通信チャネル２１６を介して送信する。通信チャネル２１６は、例えば、有線または無線通信媒体、ローカルエリアネットワーク、またはワイドエリアネットワークなど、符号化されたビデオシーケンスの送信に適した任意の通信媒体または通信媒体の組み合せとし得る。
【００２４】
送信先デジタルシステム２０２は、レシーバ構成要素２１０、ビデオデコーダ構成要素２１２、および表示構成要素２１４を含む。レシーバ構成要素２１０は、ソースデジタルシステム２００から通信チャネル２１６を介して符号化されたビデオデータを受け取り、符号化されたビデオデータを、復号化のためビデオデコーダ構成要素２１２に提供する。一般に、ビデオデコーダ構成要素２１２は、ビデオエンコーダ構成要素２０６によって行われた符号化プロセスの逆を行って、ビデオシーケンスの符号化ブロックを再構築する。次いで、再構築されたビデオシーケンスは、表示構成要素２１４に表示され得る。表示構成要素２１４は、例えば、プラズマディスプレイ、液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）ディスプレイなどの任意の適切な表示デバイスとし得る。
【００２５】
いくつかの実施形態では、ビデオストリーミング、ビデオ放送、およびビデオ電話通信のためのビデオシーケンスの双方向送信のために、ソースデジタルシステム２００が、レシーバ構成要素およびビデオデコーダ構成要素も含んでよく、かつ／または送信先デジタルシステム２０２が、トランスミッタ構成要素およびビデオエンコーダ構成要素を含んでもよい。また、ビデオエンコーダ構成要素２０６およびビデオデコーダ構成要素２１２は、例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、およびＭＰＥＧ−４などの動画像符号化専門家グループ（ＭＰＥＧ）ビデオ圧縮規格、Ｈ．２６３、Ｈ．２６４、およびＨＥＶＣなどのＩＴＵ−Ｔビデオ圧縮規格、映画テレビ技術者協会（ＳＭＰＴＥ）の４２１  Ｍビデオコーデック規格（通称「ＶＣ−１」）、中国オーディオビデオスタンダードワークグループ（通称「ＡＶＳ」）によって定義されたビデオ圧縮規格、ＩＴＵ−Ｔ／ＩＳＯ高効率ビデオ符号化（ＨＥＶＣ）規格など、１つまたは複数のビデオ圧縮規格に従って符号化および復号化を実施し得る。ビデオエンコーダ構成要素２０６およびビデオデコーダ構成要素２１２は、ソフトウェア、ファームウェア、および例えば１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、マイクロプロセッサ、離散ロジック、特殊用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのハードウェアの任意の適切な組み合せで実装され得る。
【００２６】
図３は、１つまたは複数の実施形態に従ってレート制御を実施するように構成されるビデオエンコーダ、例えば、図２のビデオエンコーダ２０６など、のブロック図を示す。見やすくするために、図に示すブロック符号化アーキテクチャはＨ．２６４ビデオエンコーダのものとする。図３に示すように、符号化に供する入力ピクチャ３００が、例えばマクロブロックなどの符号化ブロックに分割され、符号化ブロックは、動き推定構成要素３２０の１つの入力として、イントラ予測構成要素３２４の１つの入力として、およびコンバイナ３０２（例えば、加算器または減算器など）の正の入力に、供給される。さらに、具体的には示さないが、各入力フレームについて、予測モード、すなわち、インター予測またはイントラ予測、が選択され、モードセレクタ構成要素およびエントロピエンコーダ３３４に提供される。
【００２７】
ストレージ構成要素３１８が、動き推定構成要素３２０および動き補償構成要素３２２に基準データを提供する。基準データは、前に符号化および復号化された１つまたは複数のピクチャ、すなわち、再構成されたピクチャを含み得る。いくつかの実施形態では、ストレージ構成要素３１８は、外部メモリ、すなわち、オフチップメモリである。
【００２８】
動き推定構成要素３２０は、動き推定情報を動き補償構成要素３２２におよびエントロピエンコーダ３３４に提供する。より具体的には、動き推定構成要素３２０は、ストレージ３１８からの基準データを用いる複数の時間予測モードに基づいて符号化ブロックに対してテストを実施して、符号化コストに基づいて最良の動きベクトル／予測モードを選ぶ。予測モードをテストするために、動き推定構成要素３２０は、予測モードのブロックサイズに従って符号化ブロックを予測ブロックに分割し得る。動き推定構成要素３２０は、選択された１つまたは複数の動きベクトル（ＭＶ）および選択された予測モードを動き補償構成要素３２２に提供し、選択された動きベクトル（ＭＶ）をエントロピエンコーダ３３４に提供する。動き補償構成要素３２２は、動き補償されたインター予測ブロックおよび選択された時間予測モードを含む動き補償されたインター予測情報をセレクタスイッチ３２６に提供する。インター予測ブロックの符号化コストもモードセレクタ構成要素に提供される。
【００２９】
イントラ予測構成要素３２４は、イントラ予測ブロックおよび対応する空間予測モードを含むイントラ予測情報をセレクタスイッチ３２６に提供する。つまり、イントラ予測構成要素３２４は空間予測を実施し、この空間予測では、複数の空間予測モードに基づくテストが符号化ブロックに対して、バッファ３２８からの前に符号化されたこのフレームの近隣のブロックを用いて実施されて、符号化コストに基づいてイントラ予測ブロックを生成するための最良の空間予測モードが選ばれる。空間予測モードをテストするために、イントラ予測構成要素３２４は、予測モードのブロックサイズに従って符号化ブロックを予測ブロックに分割し得る。具体的には示さないが、セレクタスイッチ３２６に提供される各イントラ予測ブロックの空間予測モードは、変換構成要素３０４にも提供される。また、具体的には示さないが、イントラ予測ブロックの符号化コストもモードセレクタ構成要素に提供される。
【００３０】
セレクタスイッチ３２６は、動き補償構成要素３２２からの動き補償されたインター予測ブロックと、イントラ予測構成要素３２４からのイントラ予測ブロックの間で、これらのブロックの計量値の差およびモードセレクタ構成要素によって提供されるフレーム予測モードに基づいて選択する。セレクタスイッチ３２６の出力、すなわち、予測された予測ブロックは、コンバイナ３０２の負の入力におよび遅延構成要素３３０に提供される。遅延構成要素３３０の出力は、別のコンバイナ（すなわち加算器）３３８に提供される。コンバイナ３０２は、この予測された予測ブロックを現在の符号化ブロックの現在の予測ブロックから減算して、残余予測ブロックを変換構成要素３０４に提供する。得られた残余予測ブロックは、元の予測ブロックと予測された予測ブロックとの画素値間の差分を定量化した１セットの画素差分値である。
【００３１】
変換構成要素３０４は、残余予測ブロックに対してブロック変換を実施して、残余画素値を変換係数に変換し、これらの変換係数を出力する。変換構成要素３０４からの変換係数は、量子化された変換係数を出力する量子化構成要素３０６に提供される。より具体的には、量子化構成要素３０６は、レート制御構成要素３４０が提供する量子化パラメータ（Ｑｐ）から導出される量子化スケール（Ｑｓ）によって残余予測ブロックの変換係数の値を分割する。一般に、量子化構成要素３０６は、所望の数の量子化ステップを用いることによって係数を表し、用いられるステップ数（あるいはこれに対応してＱｓ値またはスケーリングマトリックス内の値）により、残余を表すために用いられるビット数が決定される。
【００３２】
レート制御構成要素３４０は、本明細書に記載するようなレート制御の方法に従って各符号化ブロックについてベースＱｓを演算し、このベースＱｓを、量子化構成要素３０６が使用するために適切なＱｐ値に変換する。図４Ａおよび図４Ｂを参照して以下でより詳細に説明するように、レート制御方法のいくつかの実施形態では、ビデオバッファ３３６の現在の充足状況を含むいくつかの因子に鑑みて、符号化ブロックについてベースＱｓを、この符号化ブロックを含むサブＧＯＰについてのベースＱｓを目標ビットレートに適合させることによって生成する。
【００３３】
ＤＣＴ変換により残余信号のエネルギーが周波数ドメインに再配分されるので、量子化された変換係数は、走査構成要素３０８でそれらのラスター走査順序から取り出され、有意性により、例えば、より有意の係数から始まりより有意でない係数がそれに続くように配される。順序付けられた量子化された変換係数は、走査構成要素３０８を介してヘッダ情報とともに提供され、エントロピエンコーダ３３４によって符号化される。エントロピエンコーダ３３４は、圧縮されたビットストリームを送信または記憶のためビデオバッファ３３６に提供する。エントロピエンコーダ３３４によって実施されるエントロピ符号化は、例えば、コンテキスト適合型可変長符号化（ＣＡＶＬＣ）、コンテキスト適合型２値算術符号化（ＣＡＢＡＣ）、ランレングス符号化などの任意の適切なエントロピ符号化手法とし得る。
【００３４】
どのエンコーダの中にも埋め込みデコーダがある。いかなる準拠したデコーダも圧縮されたビットストリームからイメージを再構築すると見込まれているので、埋め込みデコーダは同じ役目をビデオエンコーダに与えている。再構築された入力がわかると、ビデオエンコーダは、適切な残余エネルギーを伝えて後続のフレームを構成することができる。再構築された入力、すなわち、基準データ、を決定するために、走査構成要素３０８を介して提供される順序付けられた量子化された変換係数は、逆走査構成要素３１０によって元の変換後配列に戻される。逆走査構成要素３１０の出力は、逆量子化構成要素３１２に提供され、逆量子構成要素３１２は、推定された変換された情報、すなわち、変換構成要素３０４からの変換結果を推定または再構築したもの、を出力する。推定された変換された情報は逆変換構成要素３１４に提供され、逆変換構成要素３１４は、残余予測ブロックを再構築したものを表す、推定された残余情報を出力する。再構築された残余予測ブロックは、コンバイナ３３８に提供される。
【００３５】
コンバイナ３３８は、再構築された残余予測ブロックに、遅延された選択された予測ブロックを加算して、フィルタリングされていない再構築された予測ブロックを生成する。この予測ブロックは、再構築されたフレーム情報の一部になる。再構築されたフレーム情報は、バッファ３２８を介してイントラ予測構成要素３２４に提供され、フィルタ構成要素３１６にも提供される。フィルタ構成要素３１６は、再構築されたフレーム情報をフィルタリングし、フィルタリングされた再構築された符号化ブロック、すなわち、基準データ、をストレージ構成要素３１８に提供するループ内フィルタである。
【００３６】
図４Ａおよび図４Ｂは、１つまたは複数の実施形態に従ったレート制御のための方法のフローチャートを示す。説明を簡単にするために、サブピクチャレベルでのレート制御は符号化ブロック行に基づいて行われると仮定してこれらの方法を説明する。サブピクチャレベルでのレート制御が、ピクチャの行よりも短いことも長いこともあり、ピクチャ内で長さが変化し得る、符号化ブロックシーケンスに基づいて行われる実施形態が当業者には理解されよう。
【００３７】
レート制御方法の１つまたは複数の実施形態では、ビデオシーケンスの各サブＧＯＰの開始時にベースＱｓを演算する（４０２）。次いで、このサブＧＯＰベースＱｓを用いて、サブＧＯＰ内の各ピクチャに対しベースＱｓを演算する（４０４）。最小および最大符号化サイズも各ピクチャに対し演算される（４２０）。次いで、ピクチャベースＱｓと最小および最大ピクチャサイズとを用いて、ピクチャの符号化ブロックの各行に対しベースＱｓを決定する（４３０〜４３８）。より具体的には、或る行についての行ベースＱｓは、ピクチャの推定符号化サイズが最小または最大ピクチャサイズから外れる場合、必要に応じて増減され得る（４３０〜４３４）。さらに、ピクチャの符号化中にシーン変化が検出された場合、最小および最大ピクチャサイズは、シーン変化検出後の最初のシーン変化なしピクチャの各行に対し適合され（４２４〜４２８）て、このピクチャに対する特別なサイズ制約が有効になる。本明細書ではこのサイズ制約をシーン変化サイズ制約と称することがある。シーン変化なしピクチャを符号化した後、次のピクチャを符号化する前に、サブＧＯＰベースＱｓをこのピクチャについての平均行ベースＱｓに設定する（４０８）。
【００３８】
シーン変化の前後ではピクチャの複雑さが大きく異なり得、この複雑さは、この複雑さの変化の影響を低減するために何らかの対策が取られない限り、シーン変化後いくらか時間が経ってから符号化されるピクチャの質に悪影響を及ぼす恐れがあるので、シーン変化の特別な処理が実施される。例えば、ピクチャの複雑さがシーン変化前は極めて小さいが、シーン変化後に極めて大きい場合、新たなシーンの最初の数ピクチャについてのＱｓ値は極めて小さくなる。これは、前のピクチャの複雑さが極めて小さいために目標ビットレートを満足するためシーン変化前のＱｓ値が極めて小さくなるからである。このため、新たなシーンにおける最初の数ピクチャの符号化は、目標ビットレートと比較してかなり多くのビット数を消費することになる。そのため、後続の数ピクチャにわたってＱｓ値をかなり大きな値に増加させて目標ビットレートを満足させる。これにより、新たなシーンの開始時に極めて良好な画質のピクチャが数枚得られるが、その後、画質の悪いピクチャが多数続くことになる。
【００３９】
別の例では、ピクチャの複雑さがシーン変化前は極めて大きいが、シーン変化後に極めて小さい場合、新たなシーンにおける最初の数ピクチャで用いられるＱｓ値は極めて大きくなる。これは、前のピクチャの複雑さが極めて大きいために目標ビットレートを満足するためシーン変化前のＱｓ値が極めて大きくなるからである。このため、新たなシーンにおける最初の数ピクチャは、或るピクチャについての目標ビット数と比較してかなり少ないビット数しか取らないことになる。このため、新たなシーンの開始時に画質の悪いピクチャが多くなる。
【００４０】
シーン変化サイズ制約が課されるように、シーン変化後の最初のシーン変化なしピクチャにおける行レベルでの最小および最大ピクチャサイズを適合させて、シーン変化後のより迅速な安定を提供するサブＧＯＰベースＱｓの新たな値を生成する。以下でより詳細に説明するように、この特定の適合は、サブＧＯＰベースＱｓの新たな値を生成するために経験的に導出される最小および最大サイズ閾値に基づく。
【００４１】
ここで図４Ａおよび図４Ｂの方法のステップをより詳細に説明する。本方法のステップを説明では、本方法の実施形態の例示実装形態の態様を記述する疑似コードの形式で例を提供する。この疑似コードは説明の目的にのみ提供されるものであり、限定的なものと解釈すべきではない。レート制御方法は様々の異なる方式で実施し得ることが当業者には理解されよう。この疑似コードは、Ｃプログラミング言語の構文で表現され、本明細書の最後に示す表１０で定義される様々な変数および定数を引用している。従って、この疑似コードは、実行される特定の命令および演算を詳細に説明しなくても当業者には理解可能なはずである。
【００４２】
例示の疑似コードの一部は、量子化パラメータ（Ｑｐ）ドメインで動作し、Ｑｐ値をＱｓ値に変換するか、あるいは、Ｑｐのデルタ変化に基づいてＱｓ値を調整する。疑似コードでは、これらの演算は、サブルーチンＱｐ２ＱｓおよびａｄｄＤｅｌｔａ２Ｑｕａｎｔとしてそれぞれ参照される。いくつかのビデオ符号化規格では、量子化ステップサイズは、整数値を有する整数値量子化パラメータに関連付けられている。Ｑｐ値からＱｓ値への変換の手法およびＱｐデルタ変化に基づくＱｓ値の調整の手法は、当技術分野ではよく知られている。例えば、或るＱｐ値に対するＱｓ値は、ルックアップテーブルを用いて、かつ／または計算による導出によって決定し得る。
【００４３】
図４Ａに示すように、ビデオシーケンスの開始時に、このビデオシーケンス内の最初のピクチャについての初期Ｑｓが演算される（４００）。理想的には、初期ＱｓはＱｓの安定状態値に近く、それによって、そうでない場合にビデオシーケンスの開始時、すなわちコールドスタート時、に生じ得るビデオ品質劣化が低減される。つまり、コールドスタート時に用いられるＱｓは、適切に設定されていない場合、このＱｓが安定状態に落ち着く前に多数のピクチャの符号化にわたって調整が必要とされることがある。例えば、初期ランプ期間（立ち上がり時間）中、開始時のＱｓが安定状態に到達したＱｓより大きい場合、知覚／測定される画質は、このランプ期間中のほうが安定化後よりも悪い。また、開始時のＱｓが安定状態に到達したＱｓより小さい場合、ランプ期間中にピクチャを符号化するために必要以上のビットが消費されることになり、ランプ期間後に符号化されるピクチャのビデオ画質が、ランプ期間中のビットの過剰消費を補うためにしばらくの間劣化することがある。
【００４４】
従って、ビデオシーケンスの初期Ｑｓは、目標ビットレートに基づいて、低い目標ビットレートに対しては大きな初期Ｑｓが用いられ、高い目標ビットレートに対しては小さな初期Ｑｓが用いられるように演算される。いくつかの実施形態では、初期Ｑｓは、ビデオシーケンスの目標ビットレート、低いビットレートに対して経験的に決定されるデフォルトＱｓ値、およびより高いビットレート、例えば、高ビットレートおよび中ビットレート、を表す１つまたは複数の経験的に決定される閾値に基づいて決定される。用いられる閾値の数は、所与のビデオエンコーダが提供するビットレートの範囲によって決まり得る。ビデオシーケンスの目標ビットレートが高いビットレートを表す閾値より低い場合、初期ＱｓがデフォルトＱｓに設定される。そうでない場合、デフォルトＱｓ値は、目標ビットレートが高いほどデフォルトＱｓ値が小さくなるように、それが超える最高ビットレート閾値に応じていくらか下げられる。初期Ｑｓは、符号化効率に影響を及ぼすビデオエンコーダで用いられる特定の符号化手法に基づいて決定されてもよい。
【００４５】
表１の疑似コードは、初期Ｑｓ、ｓｅｑＩｎｉｔＱｓの動的決定の例を示す。この例では、２つの経験的に決定される閾値が用いられる。一つは高ビットレートを表す閾値であり、もう一つは中ビットレートを表す閾値である。また、高ビットレートおよび中ビットレートに対する目標ビットレートの比較解析は、目標ビットレートから導出されるマクロブロック（ＭＢ）目標ビットレートｔａｒｇｅｔＢｉｔｓＭＢに基づく。この疑似コードは、初期量子化パラメータ（Ｑｐ）を決定し、次いで、このＱｐをＱｓ値に変換する（Ｑｐ２Ｑｓ）ことに留意されたい。デフォルトＱｐ値は、経験的に決定され、マクロブロック目標ビットレートがこれらの閾値の一方よりも高くない場合に限り初期Ｑｓを決定するために用いられる。
【表１】
0005893002.tif 000002
【００４６】
次いで、ビデオシーケンス内の各サブＧＯＰが符号化される（４０２〜４１２）。サブＧＯＰの開始時に、そのサブＧＯＰについてのベースＱｓが演算される（４０２）。さらに、このサブＧＯＰについてのベースＱｓが、サブＧＯＰがＩサブＧＯＰかＰサブＧＯＰかに基づいて決定される。サブＧＯＰがＩサブＧＯＰである場合、サブＧＯＰベースＱｓが、ビデオシーケンスにおける各前に符号化されたピクチャの平均行ベースＱｓに基づいて演算される。つまり、現在のサブＧＯＰより前に符号化されたビデオシーケンス内の各ピクチャの平均行ベースＱｓが、現在のサブＧＯＰについてのベースＱｓの値に寄与する。いくつかの実施形態では、サブＧＯＰベースＱは、前のピクチャの平均行ベースＱｓ値の移動（running）重み平均として演算される。この移動重み平均は、各ピクチャが次のように符号化された後で演算され得る。
ｃｕｒＱｓＩ＝ｗｅｉｇｈｔｅｄＡｖｇ（ｍｏｄＱｓ，ｃｕｒＱｓＩ）
ここで、ｗｅｉｇｈｔｅｄＡｖｇ（ｑａ，ｑｂ）＝ｑａ×ｗ１＋ｑｂ×ｗ２であり、ｍｏｄＱｓ＝ｆｕｎ（ａｖｇＱｓＣｕｒＰｉｃ）である。これら２つの重みの値は経験的に決定され得る。いくつかの実施形態では、ｗ１＝０．７５およびｗ２＝０．２５である。
【００４７】
サブＧＯＰがＰサブＧＯＰである場合、サブＧＯＰベースＱｓは、ビデオシーケンスにおける前のＰサブＧＯＰの符号化からの様々なレート制御統計値に基づいて演算される。いくつかの実施形態では、サブＧＯＰベースＱｓは、前のＰサブＧＯＰ内のピクチャによって消費される平均ビット数とピクチャ当たりの目標ビットとの間の不一致の調整因子によって適合される、前のＰサブＧＯＰ内の先頭ピクチャの平均Ｑｓである。
【００４８】
いくつかの実施形態では、ＰサブＧＯＰについてのサブＧＯＰベースＱｓの演算は、ビデオバッファの充足状況に基づく。より具体的には、レート制御は、バッファ充足状況を公称バッファレベル近くに維持することによって、フレーム飛ばしを減らし、バッファアンダーフローが生じないようにビデオバッファの充足状況を管理しようとする。ＰサブＧＯＰの開始時にバッファ充足状況がこの公称バッファレベルよりも高い場合、サブＧＯＰベースＱｓの演算は、Ｑｓを大きくするようにバイアスされ得る。また、バッファ充足状況が低すぎる場合、この演算はＱｓを小さくするようにバイアスされ得る。
【００４９】
ＰサブＧＯＰについてのサブＧＯＰベースＱｓの演算は、ＶＢＲまたはＣＢＲのいずれの符号化が実施されているかも考慮し得る。さらに、この演算は、サブＧＯＰベースＱｓが連続するサブＧＯＰ間で変化し得る度合いを制限し得る。
【００５０】
表２の疑似コードは、或るサブＧＯＰについてのベースＱｓの決定例を示す。この疑似コードでは、サブＧＯＰベースＱｓ  ｂａｓｅＱｓＣｕｒＳｕｂＧｏｐは、ＩサブＧＯＰの場合はｃｕｒＱｓＩに設定され、ＰサブＧＯＰの場合は前のＰサブＧＯＰ内の先頭ピクチャの平均Ｑｓ  ｂａｓｅＱｓＡｖｅＰｒｅｖＰＳｕｂＧｏｐに調整因子ｇｌｏｂａｌＡｄｊを適用することによって演算される。調整因子ｇｌｏｂａｌＡｄｊの値は、前のＰサブＧＯＰ内のピクチャによって消費された平均ビット数ｐｒｅｖＰｔｙｐｅＳｕｂＧｏｐＢｉｔｓと、ピクチャ当たりの目標ビットｔａｒｇｅｔＢｉｔｓＰｅｒＰｉｃとの間の不一致、および充足状況の所望のレベルｖｂＵｓｅＬｅｖｅｌと比較したビデオバッファの充足状況の現在のレベルｖｂＬｅｖｅｌに基づいて決定されるバイアス値ｖｂｃｏｎｖｅｒｇｅに基づいて演算される。また、サブＧＯＰベースＱｓの値ｂａｓｅＱｓＣｕｒＳｕｂＧｏｐは、ＶＢＲまたはＣＢＲ符号化のいずれが使用されているかによって決まる最大Ｑｓ  ｍａｘＱｓＬｉｍｉｔよりも大きくなれない。
【００５１】
ｃｕｒＱｓＩの値ｂａｓｅＱｓＰｒｅｖＰＳｕｂＧｏｐ、ｂａｓｅＱｓＣｕｒＳｕｂＧｏｐ、およびｂａｓｅＱｓＡｖｅＰｒｅｖＰＳｕｂＧｏｐは、ビデオシーケンス内の最初のサブＧＯＰについてのサブＧＯＰベースＱｓを演算するために、このビデオシーケンスの初期ＱｓであるｓｅｑＩｎｉｔＱｓに基づいて初期化される。より具体的には、ｂａｓｅＱｓＰｒｅｖＰＳｕｂＧｏｐ＝ｂａｓｅＱｓＣｕｒＳｕｂＧｏｐ＝ｂａｓｅＱｓＡｖｅＰｒｅｖＰＳｕｂＧｏｐ＝ａｄｄＤｅｌｔａ２Ｑｕａｎｔ（ｓｅｑＩｎｉｔＱｓ，＋ｒｃＩＱＰＢｏｏｓｔ  ａｎｄ  ｃｕｒＱｓＩ＝ｂａｓｅＱｓＰｒｅｖＰＳｕｂＧｏｐである。ｒｃＩＱＰＢｏｏｓｔの値は、得られる視覚的な質に基づいて経験的に決定され得る。ｐｒｅｖＰｔｙｐｅＳｕｂＧｏｐＢｉｔｓの値も初期化される。
【表２】
0005893002.tif 000003
【００５２】
再び図４Ａを参照して、サブＧＯＰベースＱｓが演算されると（４０２）、このサブＧＯＰベースＱｓを用いてサブＧＯＰ内の各ピクチャが符号化される（４０４〜４１０）。ピクチャの開始時に、このピクチャのベースＱｓがサブＧＯＰベースＱｓを用いて演算される（４０４）。ピクチャベースＱｓは、ピクチャの種類およびレート制御階層におけるピクチャのレベルに基づいてサブＧＯＰベースＱｓを調整することによって演算される。一般に、Ｉピクチャは、サブＧＯＰベースＱｓより小さいピクチャベースＱｓを有し、レート制御階層のレベル０のＰピクチャは、サブＧＯＰベースＱｓと等しいピクチャベースＱｓを有し、レート制御階層のレベルがより高いピクチャは、サブＧＯＰベースＱｓより高いピクチャベースＱｓを有する。さらに、レート制御階層のレベルｎのピクチャは、レート制御階層のレベルｎ−１のピクチャより高いピクチャベースＱｓを有する。
【００５３】
表３の疑似コードは、或るピクチャについてのベースＱｓをサブＧＯＰベースＱｓを用いて決定する例を示す。このピクチャがＩピクチャである場合、サブＧＯＰベースＱｓは固定量−ｒｃＩＱＰＢｏｏｓｔだけ上げられる。このピクチャがレート制御階層でレベル０のＰピクチャである場合、サブＧＯＰベースＱｓは変更されない。レート制御階層でのレベルがレベル０より低いピクチャについては、サブＧＯＰベースＱｓは、固定量ｄｅｌｔａＱｐＰＢだけ下げられ、このピクチャのレート制御階層レベルｇｏｐＬｅｖｅｌに従ってさらに下げられる。
【表３】
0005893002.tif 000004
【００５４】
ピクチャベースＱｓが演算されると（４０４）、ピクチャベースＱｓを用いてピクチャが符号化される（４０６）。図４Ｂを参照して以下にピクチャの符号化をより詳細に説明する。ピクチャが符号化された後、シーン変化が検出され、符号化されたばかりのピクチャがシーン変化後の最初のシーン変化なしピクチャであった場合、次のピクチャについてのピクチャベースＱｓを演算する前にサブＧＯＰベースＱｓが調整され得る（４０８）。上述したように、この調整は、シーン変化の前後でピクチャの複雑さがかなり異なる場合に生じ得る符号化品質の劣化を低減するように成される。上記条件が満足される場合、シーン変化なしピクチャについての平均行ベースＱｓに基づいてサブＧＯＰベースＱｓが調整される。平均行ベースＱｓは、ピクチャの符号化に用いられる行ベースＱｓ値の和をこのピクチャ内の行数で除算することによって演算し得る。
【００５５】
この調整は、シーン変化なしピクチャ後の次のピクチャについてのピクチャベースＱｓを演算する前に実施される。さらに、この調整は、シーン変化なしピクチャの種類に依存し得る。いくつかの実施形態では、シーン変化なしピクチャがＰピクチャである場合、サブＧＯＰベースＱｓは、シーン変化なしピクチャの平均行ベースＱｓに設定される。また、シーン変化なしピクチャがＢピクチャである場合、サブＧＯＰベースＱｓは、レート制御階層におけるこのピクチャのレベルに対して調整される平均行ベースＱｓに設定される。すなわち、サブＧＯＰベースＱｓが平均行ベースＱｓよりも大きくなり、平均行ベースＱｓに対するデルタ変化がレート制御階層における各連続レベルに対し大きくなるようにする。ＰサブＧＯＰについてのサブＧＯＰベースＱｓの演算に用いられる様々な統計値も必要に応じて調整される。
【００５６】
表４の疑似コードは、シーン変化に対してサブＧＯＰベースＱｓを必要に応じて調整する例を示す。フラグｕｐｄａｔｅＢａｓｅＱｓＡｆｔｅｒＳｃｅｎｅＣｈａｎｇｅは、シーン変化のため、サブＧＯＰベースＱｓ  ｂａｓｅＱｓＣｕｒＳｕｂＧｏｐを更新すべきかどうかを示すために用いられる。フラグｉｓＮｅｗＳｃｅｎｅは、符号化されたばかりのピクチャにシーン変化があったか否かを示す。この値ｉｓＮｅｗＳｃｅｎｅは、レート制御と同時に行われるシーン検出手法によって更新される。任意の適切なレート制御手法を用いることができる。サブＧＯＰベースＱｓの演算に用いられる他の変数も、現在のサブＧＯＰについてのベースＱｓの変化が次のＰサブＧＯＰについてのベースＱｓの演算に反映されるように更新されることに留意されたい。
【００５７】
この疑似コードでは、ｕｐｄａｔｅＢａｓｅＱｓＡｆｔｅｒＳｃｅｎｅＣｈａｎｇｅが真である場合、現在のサブＧＯＰにおける前に符号化されたピクチャでシーン変化が検出されている。ｉｓＮｅｗＳｃｅｎｅが偽である場合、符号化されたばかりのピクチャでシーン変化は検出されておらず、すなわち、符号化されたばかりのピクチャはシーン変化なしピクチャである。ｂａｓｅＱｓＣｕｒＳｕｂＧｏｐの値は、これらの条件両方が満たされる場合にのみ変更される。サブＧＯＰ内のシーン変化なしピクチャがＰピクチャである場合、ｂａｓｅＱｓＣｕｒＳｕｂＧｏｐは、シーン変化なしピクチャの符号化に用いられる平均行ＱｓであるｂａｓｅＱｓＡｖｇＣｕｒＰｉｃに設定される。このシーン変化なしピクチャがＢピクチャである場合、ｂａｓｅＱｓＣｕｒＳｕｂＧｏｐは、固定量ｄｅｌｔａＱｐＰＢだけ下げられたｂａｓｅＱｓＡｖｇＣｕｒＰｉｃに設定され、このピクチャのレート制御階層のレベルｇｏｐＬｅｖｅｌに従ってさらに下げられる。
【表４】
0005893002.tif 000005
【００５８】
サブＧＯＰ内のすべてのピクチャが符号化された（４１０）後、現在のサブＧＯＰがＰサブＧＯＰである場合、ＰサブＧＯＰについてのサブＧＯＰベースＱｓの演算に用いられる様々な統計値が更新される。例えば、このサブＧＯＰ内の先頭ピクチャの平均Ｑｓが記憶され得、ピクチャの符号化に用いられる平均ビット数が演算され得る。表５の疑似コードは、ＰサブＧＯＰについてのサブＧＯＰベースＱｓの演算に用いられる統計値を更新する例を示す。
【表５】
0005893002.tif 000006
【００５９】
図４Ｂは、図４Ａのステップ４０６を実施するための方法、すなわち、サブＧＯＰベースＱｓを用いてピクチャベースＱｓが演算されるとピクチャを符号化するための方法を示す。ピクチャの開始時に、このピクチャについて最大ピクチャサイズおよび最小ピクチャサイズが演算される（４２０）。最大ピクチャサイズはピクチャを符号化するために用いられる最大ビット数を示し、最小ピクチャサイズはピクチャを符号化するために用いられる最小ビット数を示す。一般に、最大ピクチャサイズは、ピクチャ当たりの目標ビットより大きく設定される。最大ピクチャサイズはＶＢＲ符号化とＣＢＲ符号化で異なることもあり、ＶＢＲ符号化ではより大きい最大ピクチャサイズがより望ましく、ＣＢＲ符号化ではより小さい最大ピクチャサイズがより望ましい。下にあるハードウェアの性能などの他の因子も、最大ピクチャサイズの演算に際して考慮され得る。いくつかの実施形態では、最大ピクチャサイズは、ピクチャ当たりの目標ビットの倍数として演算され、ＶＢＲ符号化で用いられる倍率はＣＢＲ符号化で用いられるものよりも大きい。倍率は経験的に決定され得る。
【００６０】
最小ピクチャサイズは、ＶＢＲ符号化では典型的には０である。ＣＢＲ符号化では、最小ピクチャサイズは、起こり得る経時的ビット消費変動が小さくなるように設定される。さらに、最小ピクチャサイズと最大ピクチャサイズは、互いにあまり近い値とすべきではない。近くすると、ピクチャ内でＱｓが過度の振動をきたすことがあるからである。そのために、いくつかの実施形態では、最小ピクチャサイズは、ピクチャ当たりの目標ビットの半分よりも小さく、または最大ピクチャサイズの１／４に設定される。
【００６１】
表６の疑似コードは、最大ピクチャサイズｍａｘＰｉｃＳｉｚｅの演算例を示し、表７の疑似コードは、最小ピクチャサイズｍｉｎＰｉｃＳｉｚｅの演算例を示す。
【表６】
0005893002.tif 000007
【表７】
0005893002.tif 000008
【００６２】
再び図４Ｂを参照して、最小および最大ピクチャサイズが演算された（４２０）後、ピクチャ内の符号化ブロックの各行がピクチャベースＱｓと最小および最大ピクチャサイズとを用いて符号化すされ（４２２〜４３８）。まず、行ベースＱｓがピクチャベースＱｓになるように設定される（４２２）。前のピクチャにシーン変化がなく（４２４）、行ベースＱｓの現在の値が用いられる場合、この時点でピクチャを符号化するために必要とされるビット数が推定される（４３０）。推定されたサイズが最大ピクチャサイズよりも大きいか、または最小ピクチャサイズよりも小さい場合（４３２）、行ベースＱｓが調整される（４３４）。より具体的には、現在の行についての行ベースＱｓが、ピクチャサイズ制約を満足するように必要に応じて増減される。推定されたサイズがピクチャサイズ制約から外れない場合（４３２）、行ベースＱｓは変更されない。次いで、この行における符号化ブロックがこの行ベースＱｓを用いて符号化される。
【００６３】
前のピクチャでシーン変化があった場合（４２４）、現在のピクチャでシーン変化が検出されたかを判断するために検査がなされる（４２６）。シーン変化検出はレート制御と同時に実施され、ピクチャが符号化される一方でシーン変化インジケータを設定することによってシーン変化を知らせることができる。シーン変化が検出された場合（４２６）、最大ピクチャサイズおよび最小ピクチャサイズの現在の値を用いて行が符号化される（４３０〜４３６）。これらの値は、このピクチャの開始時に演算された値（４２０）と同じでないことがある。このピクチャでシーン変化が検出される前にこれらの値が適合された（４２８）かもしれないからである。
【００６４】
シーン変化が検出されなかった場合（４２６）、最大および最小ピクチャサイズがこの行に対して適合される（４２８）。この適合は、サイズ閾値に従って最大及び最小ピクチャサイズを制約する。このサイズ閾値は、サブＧＯＰベースＱｓが順方向に進むときに用いるために適した、このピクチャについての平均行ベースＱｓが得られるように、すなわち、シーン変化後のより早い安定となるサブＧＯＰベースＱｓの新たな値が得られるように、選択される。最大及び最小ピクチャサイズの適合に用いられる特定のサイズ閾値は、現在のピクチャの種類に基づいて選択される。より具体的には、Ｉピクチャの場合の適合される最大ピクチャサイズは、Ｐピクチャの場合の適合される最大ピクチャサイズよりも大きくなり、Ｐピクチャの場合の適合される最大ピクチャサイズは、Ｂピクチャの場合の適合される最大ピクチャサイズよりも大きくなる。同様に、Ｉピクチャの場合の適合される最小ピクチャサイズは、Ｐピクチャの場合の適合される最小ピクチャサイズよりも大きくなり、Ｐピクチャの場合の適合される最小ピクチャサイズは、Ｂピクチャの場合の適合される最小ピクチャサイズよりも大きくなる。
【００６５】
さらに、いくつかの実施形態では、適合される最大ピクチャサイズは、ピクチャの種類にかかわらず、ピクチャ当たりの目標ビットの倍数である。つまり、最大サイズの閾値は、適合される最大ピクチャサイズを演算するためにピクチャ当たりの目標ビットに適用される、経験的に決定される倍率である。同様に、適合される最小ピクチャサイズは、ピクチャの種類にかかわらず、ピクチャ当たりの目標ビットに基づいている。Ｉピクチャの場合、適合される最小ピクチャサイズは、ピクチャ当たりの目標ビットを、ＧＯＰ内のＰおよび／またはＢピクチャの数に基づいて決定される約数で除算したものである。Ｐピクチャの場合、適合される最小ピクチャサイズは、ピクチャ当たりの目標ビットである。Ｂピクチャの場合、適合される最小ピクチャサイズは、ピクチャ当たりの目標ビットの半分である。
【００６６】
表８の疑似コードは、行レベルで最大ピクチャサイズｍａｘＰｉｃＳｉｚｅを演算する例を示し、表９の疑似コードは、行レベルで最小ピクチャサイズｍｉｎＰｉｃＳｉｚｅを演算する例を示す。
【表８】
0005893002.tif 000009
【表９】
0005893002.tif 000010
【００６７】
再び図４Ｂを参照して、最小および最大ピクチャサイズが適合された（４２８）後、最大ピクチャサイズおよび最小ピクチャサイズの適合された値を用いて行が符号化される（４３０〜４３６）。
【００６８】
ピクチャ内のすべての行が符号化された（４３８）後、ＩサブＧＯＰについてのサブＧＯＰベースＱｓの値を設定するために用いられる移動重み平均が、このピクチャを符号化するために用いられた平均Ｑｓで更新される。前のピクチャでシーン変化が検出されたことを知らせるために用いられるインジケータもこのレベルで管理される。現在のピクチャの符号化においてシーン変化が検出されると、インジケータは、シーン変化が検出されたことを知らせるように設定される。また、このピクチャが、シーン変化が検出された後の最初のシーン変化なしピクチャである場合、インジケータは、シーン変化が検出されていないことを知らせるように設定される。このピクチャの符号化が開始されピクチャの符号化中にシーン変化が検出されなかったときこのインジケータが前のピクチャでシーン変化を知らせる場合、このピクチャは最初のシーン変化なしピクチャであることに留意されたい。このインジケータは、疑似コードの例では、ｕｐｄａｔｅＢａｓｅＱｓＡｆｔｅｒＳｃｅｎｅＣｈａｎｇｅと呼ばれる。
【００６９】
ビデオシーケンスの開始時、すなわち、コールドスタート時に、シーン変化について上述したものと同様の理由で、ビデオ品質劣化となり得ることを理解されたい。つまり、何らかの方式で緩和しない限り、コールドスタート時に用いられるＱｓは、安定状態に落ち着く前に、多数のピクチャの符号化にわたって調整を必要とし得る。いくつかの実施形態では、ビデオシーケンスの開始時のコールドスタートは、ビデオシーケンス内の最初のピクチャを新たなシーンの最初のピクチャ、すなわち、シーン変化が生じたピクチャ、として扱うようにレート制御を初期化することによって処理される。そのため、上述したように、レート制御は、最初のピクチャ後の先頭のシーン変化なしピクチャにおけるＱｓを管理する処置を取る。
【００７０】
本開示に記載したレート制御手法は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合せで実施され得る。レート制御手法の任意の一部または全部がソフトウェア内にある場合、このソフトウェアは、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、またはデジタル信号プロセッサ（ＤＳＰ）など、１つまたは複数のプロセッサにおいて実行され得る。ソフトウェアは、まず、コンパクトディスク（ＣＤ）、ディスケット、テープ、ファイル、メモリ、または任意の他のコンピュータ可読ストレージデバイスなど、コンピュータ可読媒体に記憶され、プロセッサにロードされ実行され得る。場合によっては、このソフトウェアは、コンピュータ可読媒体およびこのコンピュータ可読媒体用のパッケージ材料を含むコンピュータプログラム製品として販売され得る。場合によっては、ソフトウェア命令が、着脱可能なコンピュータ可読媒体（例えば、フロッピーディスク、光ディスク、フラッシュメモリ、ＵＳＢキー）を介して、別のデジタルシステム上のコンピュータ可読媒体から送信経路を介する等の方式で配信され得る。
【００７１】
本明細書に記載したようなレート制御のための方法およびシステムの実施形態は、事実上いかなる種類のデジタルシステム（例えば、デスクトップコンピュータ、ラップトップコンピュータ、携帯電話（すなわちセルホン）またはＭＰ３プレーヤなどのハンドヘルドデバイス、パーソナルデジタルアシスタント（ＰＤＡ）、デジタルビデオカメラ、セットトップボックス、デジタルビデオレコーダ（ＤＶＲ）など）に対して、デジタルビデオシーケンスを取得するかまたは別の方法で生成する機能性を備えて実装され得る。図５〜図７は、例示のデジタルシステムのブロック図である。
【００７２】
図５は、１つまたは複数の実施形態に従った、埋め込みシステム（例えばデジタルカメラ）に適したデジタルシステムを示す。このデジタルシステムは、構成要素の中でもとりわけ、ＤＳＰに基づくイメージコプロセッサ（ＩＣＰ）５０２、ＲＩＳＣプロセッサ５０４、および本明細書に記載したレート制御方法を実施するように構成され得るビデオ処理エンジン（ＶＰＥ）５０６を含む。ＲＩＳＣプロセッサ５０４は、任意の適切に構成されるＲＩＳＣプロセッサとし得る。ＶＰＥ５０６は、イメージセンサ、ビデオデコーダなどのイメージング周辺機器からのビデオ取得用に用いられる入力インターフェースを備えた、構成可能なビデオ処理フロントエンド（ビデオＶＥ）５０８、ＳＤＴＶディスプレイ、デジタルＬＣＤパネル、ＨＤＴＶビデオエンコーダなどの表示デバイス用に用いられる出力インターフェースを備えた、構成可能なビデオ処理バックエンド（ビデオＢＥ）５１０、ならびにビデオＦＥ５０８とビデオＢＥ５１０に共有されるメモリインターフェース５２４を含む。このデジタルシステムは、マルチメディアカード、オーディオシリアルポート、ユニバーサルシリアルバス（ＵＳＢ）コントローラ、シリアルポートインターフェースなどを含み得る様々な周辺機器用の周辺機器インターフェース５１２も含む。
【００７３】
ビデオＶＥ５０８は、イメージ信号プロセッサ（ＩＳＰ）５１６および３Ａ統計生成器（３Ａ）５１８を含む。ＩＳＰ５１６は、イメージセンサおよびデジタルビデオソースにインターフェースを提供する。より具体的には、ＩＳＰ５１６は、センサ（ＣＭＯＳまたはＣＣＤ）から未処理イメージ／ビデオデータを受け取ることができ、数多くのフォーマットのＹＵＶビデオデータを受け取ることもできる。ＩＳＰ５１６は更に、未処理ＣＣＤ／ＣＭＯＳデータからカラーフォーマット（例えばＲＧＢ）のイメージデータを生成する機能性を備えたパラメータ化イメージ処理モジュールを含む。ＩＳＰ５１６は、センサの種類毎にカスタム化が可能であり、取得したデジタルイメージのプレビュー表示用かつビデオ記録モード用のビデオフレームレートをサポートする。ＩＳＰ５１６は更に、他の機能性の中でもとりわけ、イメージリサイザ、統計収集機能性、および境界信号計算機を含む。３Ａモジュール５１８は、ＩＳＰ５１６または外部メモリからの未処理イメージデータに関する計量値を収集することによって、オートフォーカス、オートホワイトバランス、および自動露出用のための制御ループをサポートする機能性を含む。
【００７４】
ビデオＢＥ５１０は、オンスクリーンディスプレイエンジン（ＯＳＤ）５２０およびビデオアナログエンコーダ（ＶＡＣ）５２２を含む。ＯＳＤエンジン５２０は、いくつかの異なる種類のハードウェアディスプレイウィンドウ用の様々なフォーマットの表示データを管理する機能性を含み、また、ビデオデータおよび表示／ビットマップデータを収集し、単一のディスプレイウィンドウに合成した後、このデータをＹＣｂＣｒフォーマットでＶＡＣ５２２に提供する。ＶＡＣ５２２は、ＯＳＤエンジン５２０から表示フレームを取り込み、それを所望の出力フォーマットにフォーマットし、表示デバイスにインターフェースするために必要とされる信号を出力する機能性を含む。ＶＡＣ５２２は、コンポジットＮＴＳＣ／ＰＡＬビデオデバイス、Ｓビデオデバイス、デジタルＬＣＤデバイス、高精細ビデオエンコーダ、ＤＶＩ／ＨＤＭＩデバイスなどにインターフェースし得る。
【００７５】
メモリインターフェース５２４は、外部メモリにデータを要求しかつ／または外部メモリからデータを送信している、ビデオＦＥ５０８およびビデオＢＥ５１０内のモジュールへのプライマリソースおよびシンクとして機能する。メモリインターフェース５２４は、読出しおよび書込みバッファおよびアービトレーションロジックを含む。
【００７６】
ＩＣＰ５０２は、取得イメージのビデオ符号化に必要とされる計算演算を実施する機能性を含む。サポートされるビデオ符号化規格は、例えば、ＪＰＥＧ規格、ＭＰＥＧ規格、およびＨ．２６ｘ規格の１つまたは複数を含み得る。１つまたは複数の実施形態では、ＩＣＰ５０２は、本明細書に記載したレート制御方法の計算演算をビデオ符号化中に実施するように構成される。
【００７７】
図６は、本明細書に記載したようなレート制御を実施するように構成され得るデジタルシステム（例えば、携帯電話）６００のブロック図である。信号処理ユニット（ＳＰＵ）６０２は、埋め込みメモリ及びセキュリティ機能を含むデジタル処理プロセッサシステム（ＤＳＰ）を含む。アナログベースバンドユニット６０４は、ハンドセットマイクロホン６１３ａから音声データストリームを受け取り、ハンドセットモノラルスピーカ６１３ｂに音声データストリームを送る。アナログベースバンドユニット６０４は更に、マイクロホン６１４ａから音声データストリームを受け取り、モノラルハンドセット６１４ｂに音声データストリームを送る。アナログベースバンドユニット６０４とＳＰＵ６０２とは別々のＩＣとし得る。多くの実施形態では、アナログベースバンドユニット６０４は、プログラマブルプロセッサコアを埋め込まないが、ＳＰＵ６０２上で動作するソフトウェアによって設定されるオーディオ経路、フィルタ、利得などの構成に基づいて処理を実行する。いくつかの実施形態では、アナログベースバンド処理は、通話処理または他の処理中のデジタルシステム６００のユーザとの相互作用のため、同じプロセッサ上で実行され、かつ、このプロセッサに情報を送ることができる。
【００７８】
ディスプレイ６２０は、ネットワークから、ローカルカメラ６２８から、またはＵＳＢ６２６やメモリ６１２などの他のソースから受け取ったピクチャや符号化されたビデオストリームも表示し得る。ＳＰＵ６０２は、ＲＦトランシーバ６０６を介してセルラネットワークなどの様々なソースから、またはカメラ６２８から受け取ったビデオストリームをディスプレイ６２０に送ることもできる。ＳＰＵ６０２は更に、エンコーダ６２２を経由しコンポジット出力端子６２４で外部ビデオディスプレイユニットへビデオストリームを送ることもできる。エンコーダユニット６２２は、ＰＡＬ／ＳＥＣＡＭ／ＮＴＳＣビデオ規格に従って符号化を提供し得る。
【００７９】
ＳＰＵ６０２は、ビデオ符号化および復号化に必要とされる計算演算を実施する機能性を含む。サポートされるビデオ符号化規格は、例えば、ＪＰＥＧ規格、ＭＰＥＧ規格、Ｈ．２６ｘ規格、および新たに出てきたＨＥＶＣ規格の１つまたは複数を含み得る。１つまたは複数の実施形態では、ＳＰＵ６０２は、本明細書に記載したようにビデオ符号化中にレート制御の計算演算を実施するように構成される。レート制御の全部または一部を実施するソフトウェア命令がメモリ６１２に記憶され得、例えばピクチャやビデオストリームなどのデジタルイメージデータの符号化の一部としてＳＰＵ６０２によって実行し得る。
【００８０】
図７は、プロセッサ７０２、関連するメモリ７０４、ストレージデバイス７０６、およびデジタルシステムに典型的な数多くの他の要素および機能性（図示せず）を含むデジタルシステム７００（例えば、パーソナルコンピュータ）を示す。１つまたは複数の実施形態では、デジタルシステムが複数のプロセッサを含み得、かつ／または、これらのプロセッサの１つまたは複数をデジタル信号プロセッサとし得る。デジタルシステム７００は更に、キーボード７０８およびマウス７１０（または他のカーソル制御デバイス）などの入力手段、およびモニタ７１２（または他の表示デバイス）などの出力手段を含み得る。これらの入力および出力手段は他の形態を取り得ることが当業者には理解されよう。デジタルシステム７００は更に、ビデオシーケンスを取得するための回路（例えば、光学素子、センサ、読出し電子機器）を含むイメージ取得デバイス（図示せず）を含み得る。デジタルシステム７００は、本明細書に記載したようなレート制御を実施する機能性を備えたビデオエンコーダを含み得る。
【００８１】
デジタルシステム７００は、ネットワークインターフェース接続（図示せず）を介して、ネットワーク（図示せず）（例えば、ローカルエリアネットワーク（ＬＡＮ）、インターネットなどのワイドエリアネットワーク（ＷＡＮ）、セルラネットワーク、任意の他の類似の種類のネットワーク、および／またはこれらの任意の組み合せ）に接続され得る。デジタルシステム７００は、ストレージデバイス７０６からおよび／または着脱可能な記憶媒体から、ネットワークインターフェース接続を介して、符号化されたビデオシーケンスを受け取る機能性を含み得る。
【００８２】
また、上述したデジタルシステム７００の１つまたは複数の要素は、離れた場所に配置され得、ネットワークを介して他の要素に接続され得ることが当業者には理解されよう。また、複数のノードを有する分散システムで実施形態を実施し得、このシステムの各部分およびソフトウェア命令が、分散システム内の異なるノードに位置していてもよい。一実施形態では、ノードをデジタルシステムとし得る。あるいは、ノードは、関連する物理メモリを備えたプロセッサとし得る。あるいは、ノードは、共有されるメモリおよび／またはリソースを備えたプロセッサとし得る。
【００８３】
本明細書に記載したようなレート制御の計算演算を実施するソフトウェア命令は、コンパクトディスク（ＣＤ）、ディスケット、テープ、ファイル、メモリ、または任意の他のコンピュータ可読ストレージデバイスなど、コンピュータ可読媒体に記憶され得る。ソフトウェア命令は、着脱可能なコンピュータ可読媒体（例えば、フロッピーディスク、光ディスク、フラッシュメモリ、ＵＳＢキー）を介する、別のデジタルシステム上のコンピュータ可読媒体から送信経路を介する等の方式で、デジタルシステム７００に配信され得る。
【００８４】
例示の実施形態の文脈で説明したような特徴またはステップの全てまたはその幾つかを有する例示の実施形態の文脈で説明した一つ又は複数の特徴又はステップの異なる組合せを有する実施形態も、本明細書に包含されることを意図している。当業者には、本発明の特許請求の範囲内で多くの他の実施形態および変形も可能であることが理解されよう。
【表１０】
0005893002.tif 000011
【図１Ａ】
0005893002.tif 000012
【図１Ｂ】
0005893002.tif 000013
【図１Ｃ】
0005893002.tif 000014
【図１Ｄ】
0005893002.tif 000015
【図１Ｅ】
0005893002.tif 000016
【図２】
0005893002.tif 000017
【図３】
0005893002.tif 000018
【図４Ａ】
0005893002.tif 000019
【図４Ｂ】
0005893002.tif 000020
【図５】
0005893002.tif 000021
【図６】
0005893002.tif 000022
【図７】
0005893002.tif 000023