IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特表2024-542839ビデオコーディングのためのランク付けされた参照フレームワーク
<>
  • 特表-ビデオコーディングのためのランク付けされた参照フレームワーク 図1
  • 特表-ビデオコーディングのためのランク付けされた参照フレームワーク 図2
  • 特表-ビデオコーディングのためのランク付けされた参照フレームワーク 図3
  • 特表-ビデオコーディングのためのランク付けされた参照フレームワーク 図4
  • 特表-ビデオコーディングのためのランク付けされた参照フレームワーク 図5
  • 特表-ビデオコーディングのためのランク付けされた参照フレームワーク 図6
  • 特表-ビデオコーディングのためのランク付けされた参照フレームワーク 図7
  • 特表-ビデオコーディングのためのランク付けされた参照フレームワーク 図8
  • 特表-ビデオコーディングのためのランク付けされた参照フレームワーク 図9
  • 特表-ビデオコーディングのためのランク付けされた参照フレームワーク 図10A
  • 特表-ビデオコーディングのためのランク付けされた参照フレームワーク 図10B
  • 特表-ビデオコーディングのためのランク付けされた参照フレームワーク 図11
  • 特表-ビデオコーディングのためのランク付けされた参照フレームワーク 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-15
(54)【発明の名称】ビデオコーディングのためのランク付けされた参照フレームワーク
(51)【国際特許分類】
   H04N 19/13 20140101AFI20241108BHJP
   H04N 19/134 20140101ALI20241108BHJP
   H04N 19/176 20140101ALI20241108BHJP
   H04N 19/96 20140101ALI20241108BHJP
【FI】
H04N19/13
H04N19/134
H04N19/176
H04N19/96
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024534081
(86)(22)【出願日】2022-12-07
(85)【翻訳文提出日】2024-08-01
(86)【国際出願番号】 US2022052174
(87)【国際公開番号】W WO2023107577
(87)【国際公開日】2023-06-15
(31)【優先権主張番号】63/286,587
(32)【優先日】2021-12-07
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】サラ・パーカー
(72)【発明者】
【氏名】デバーガ・ムクハージー
(72)【発明者】
【氏名】レスター・ルー
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159MC11
5C159ME01
5C159PP04
5C159TA58
5C159TB08
5C159TC41
5C159UA02
5C159UA05
(57)【要約】
規範的な手順(例えば、計算されたスコア)に基づいて参照フレームをランク付けし、ランクに基づいて参照フレームを通知する、新しい参照フレームワークが説明されている。ビットストリーム構文は、ランキングに依存するコンテキストツリーを使用することで簡素化される。さらに、参照フレームをバッファにマッピングすることは、通知する必要がなく、デコーダで決定できる。一例では、現在のブロックをコーディングするために使用される参照フレームの識別子は、識別子に対応する構文要素を識別すること、構文要素のコンテキスト情報を決定すること、構文要素を含むコンテキストツリーのノードを決定すること、及びノードに関連付けられたコンテキスト情報を使用して確率モデルに従って構文要素をコーディングすることが含まれていてもよい。コンテキストツリーは、ランキングに並べられた利用可能な参照フレームをノードとして含むバイナリツリーである。
【特許請求の範囲】
【請求項1】
ビデオフレームの現在のブロックをコーディングするために使用される少なくとも1つの参照フレームの識別子をコーディングする方法であって、
コーディングされる構文要素を識別することであって、前記構文要素は前記識別子に対応する、前記識別することと、
前記構文要素のコンテキスト情報を決定することであって、前記コンテキスト情報は、利用可能な参照フレームのうち、コーディング順序で前記現在のブロックの前のブロックをコーディングするために使用された参照フレームが含まれる、前記コンテキスト情報を決定することと、
前記構文要素を含むコンテキストツリーのノードを決定することであって、前記コンテキストツリーは、前記参照フレームが前記現在のブロックを他の参照フレームよりも効率的にエンコードする可能性があるかどうかを示す前記参照フレームの少なくとも1つの特性を使用して各参照フレームに対して計算されたスコアに基づいてランキングに配置された前記利用可能な参照フレームをノードとして含むバイナリツリーである、前記コンテキストツリーのノードを決定することと、
前記ノードに関連付けられた前記コンテキスト情報を使用して、確率モデルに従って前記構文要素をコーディングすることとを含む、方法。
【請求項2】
前記少なくとも1つの特性が、少なくとも2つの異なる特性を含む、請求項1に記載の方法。
【請求項3】
前記現在のブロックのコーディングモードが単一参照コーディングモードであるか複合参照コーディングモードであるかを決定することであって、前記コンテキストツリーは、前記現在のブロックの前記コーディングモードが前記単一参照コーディングモードであるか前記複合参照コーディングモードであるかに関係なく、同じ構文構造を持つ、前記決定することを含む、請求項1または2に記載の方法。
【請求項4】
前記コンテキストツリーに含まれる前記利用可能な参照フレームが、前方参照フレームと後方参照フレームを含む、請求項1から3のいずれかに記載の方法。
【請求項5】
前記コンテキストツリーが、前方参照フレームと後方参照フレームを含む単一のコンテキストツリーであり、
前記現在のブロックのコーディングモードが、複合参照コーディングモードであり、
前記識別子が、第1の参照フレームの第1の識別子と、第2の参照フレームの第2の識別子とを含み、
コーディングされる前記構文要素を識別することは、前記第1の識別子に対応する第1の構文要素を識別し、前記第2の識別子に対応する第2の構文要素を識別することを含み、
前記ノードを決定することは、前記第1の構文要素を含む前記単一のコンテキストツリーの第1のノードを決定し、前記第2の構文要素を含む前記単一のコンテキストツリーの第2のノードを決定することを含み、
前記構文要素の前記コンテキスト情報を決定することは、前記第1の構文要素の第1のコンテキスト情報を決定し、前記第2の構文要素の第2のコンテキスト情報を決定することを含み、
前記構文要素をコーディングすることは、前記第1のコンテキスト情報を使用して第1の確率モデルに従って前記第1の構文要素をコーディングすることと、前記第1のコンテキスト情報を使用して第2の確率モデルに従って前記第2の構文要素をコーディングすることとを含む、請求項1または2に記載の方法。
【請求項6】
前記少なくとも1つの特性が、ランク付けされる前記利用可能な参照フレームの前記参照フレームの品質レベルと、前記現在のブロックを含む前記ビデオフレームからの前記参照フレームの時間的距離とを含む、請求項1から5のいずれかに記載の方法。
【請求項7】
前記現在のブロックを含む前記ビデオフレームのフレームヘッダには、前記利用可能な参照フレームの基数に等しいビット長を持つマスクが含まれ、前記マスクは、前記現在のブロックが前記利用可能な参照フレームのどれをインター予測に使用してもよく、前記現在のブロックが前記利用可能な参照フレームのどれをインター予測に使用してはいけないかを示す、請求項1に記載の方法。
【請求項8】
ビデオフレームの現在のブロックをデコードする方法であって、
利用可能な参照フレームのリストを、各参照フレームの少なくとも1つの特性に従ってランク付けすることと、
前記現在のブロックのブロックヘッダから、コンテキストツリーを使用して前記現在のブロックをエンコードするために使用される少なくとも1つの参照フレームの識別子をデコードすることであって、前記コンテキストツリーは、前記利用可能な参照フレームの最高ランクの参照フレームから前記利用可能な参照フレームの最低ランクの参照フレームまで配置されたノードを有する単一のバイナリツリーである、前記デコードすることと、
前記少なくとも1つの参照フレームを使用して前記現在のブロックをデコードすることとを含む、方法。
【請求項9】
各参照フレームの前記少なくとも1つの特性が、前記参照フレームが前記現在のブロックを他の参照フレームよりも効率的にエンコードする可能性があるかどうかを示す、請求項8に記載の方法。
【請求項10】
前記少なくとも1つの特性が、前記現在のブロックを含む前記ビデオフレームからの時間的距離、前記参照フレームの品質または量子化レベル、前記参照フレームがインター予測のために選択された回数、または前記参照フレームの勾配情報のうちの少なくとも2つを含む、請求項8または9に記載の方法。
【請求項11】
ビデオフレームの現在のブロックをエンコードする方法であって、
参照フレームが前記現在のブロックを他の参照フレームよりも効率的にエンコードする可能性があるかどうかを示す前記参照フレームの少なくとも1つの特性を使用して、各参照フレームに対して計算されたスコアに基づいて、利用可能な前記参照フレームのリストをランク付けすることと、
前記利用可能な参照フレームのうち少なくとも1つの参照フレームを使用して前記現在のブロックをエンコードすることと、
前記現在のブロックのブロックヘッダに、コンテキストツリーを使用して前記現在のブロックをエンコードするために使用される少なくとも1つの参照フレームの識別子をエンコードすることであって、前記コンテキストツリーは、前記利用可能な参照フレームの最高ランクの参照フレームから前記利用可能な参照フレームの最低ランクの参照フレームまで配置されたノードを有する単一のバイナリツリーである、前記エンコードすることとを含む、方法。
【請求項12】
前記現在のブロックをエンコードすることが、
単一参照コーディングモードと、少なくとも前記最低ランクの参照フレームを除く前記利用可能な参照フレームのそれぞれを使用して、前記現在のブロックを複数回コーディングすることと、
前記少なくとも1つの参照フレームを、前記利用可能な参照フレームのうち最も高いコーディング効率を有する前記単一の参照フレームとして選択することとを含む、請求項11に記載の方法。
【請求項13】
少なくとも1つの参照フレームを使用して前記現在のブロックをエンコードすることが、2つの参照フレームを使用して前記現在のブロックをエンコードすることを含み、前記識別子をエンコードすることが、前記単一のバイナリツリーを使用して前記2つの参照フレームのうちの第1の参照フレームの第1の識別子をエンコードすることと、前記単一のバイナリツリーを使用して前記2つの参照フレームのうちの第2の参照フレームの第2の識別子をエンコードすることとを含む、請求項11に記載の方法。
【請求項14】
前記単一のバイナリツリーの前記利用可能な参照フレームが、前方参照フレームと後方参照フレームを含む、請求項11から13のいずれかに記載の方法。
【請求項15】
請求項1から14のいずれかに記載の方法を実行するように構成されたプロセッサを備える装置。
【発明の詳細な説明】
【背景技術】
【0001】
関連出願の相互参照
本出願は、2021年12月7日に出願された米国仮特許出願第63/286,587号に対する優先権の利益を主張するものであり、その開示の全体は参照により本明細書に組み込まれる。
【0002】
デジタルビデオストリームは、一連のフレームまたは静止画像を使用してビデオを表示する場合がある。デジタルビデオは、例えば、ビデオ会議、高解像度ビデオエンターテイメント、ビデオ広告、またはユーザが生成したビデオの共有など、さまざまな用途に使用可能である。デジタルビデオストリームには大量のデータが含まれる可能性があり、ビデオデータの処理、送信、または保存のためにコンピューティングデバイスの大量のコンピューティングリソースまたは通信リソースを消費する。ビデオストリームのデータ量を削減するために、圧縮及び他のコーディング技術など、さまざまなアプローチが提案されてきた。これらの技術には、非可逆コーディング技術及び可逆コーディング技術の両者が含まれる可能性がある。
【発明の概要】
【0003】
本開示は、一般的には参照フレームを使用してビデオデータをエンコード及びデコードすることに関し、より具体的には、参照フレームのランク付けされた参照フレームワークを使用してビデオフレームのブロックをエンコード及びデコードすることに関する。
【0004】
本明細書の教示の態様は、ビデオフレームの現在のブロックをコーディングするために使用される少なくとも1つの参照フレームの識別子をコーディング(つまり、エンコードまたはデコード)する方法である。この方法は、コーディングされる構文要素を識別することであって、構文要素は識別子に対応する、識別することと、構文要素のコンテキスト情報を決定することであって、コンテキスト情報には、利用可能な参照フレームのうち、コーディングの順序において、現在のブロックの前のブロックをコーディングするために使用された参照フレームが含まれる、決定することと、構文要素を含むコンテキストツリーのノードを決定することと、及びノードに関連付けられたコンテキスト情報を使用して確率モデルに従って構文要素をコーディングすることとを含むことができる。コンテキストツリーは、参照フレームが現在のブロックを他の参照フレームよりも効率的にエンコードする可能性があるかどうかを示す参照フレームの少なくとも1つの特性を使用して各参照フレームに対して計算されたスコアに基づいてランキングに配置された利用可能な参照フレームをノードとして含むバイナリツリーである。
【0005】
いくつかの実施態様では、少なくとも1つの特性は、少なくとも2つの異なる特性を含む。
【0006】
いくつかの実施態様では、この方法は、現在のブロックのコーディングモードが単一参照コーディングモードであるか複合参照コーディングモードであるかを決定することを含み、コンテキストツリーは、現在のブロックのコーディングモードが単一参照コーディングモードであるか複合参照コーディングモードであるかに関係なく、同じ構文構造を持つ。
【0007】
いくつかの実施態様では、コンテキストツリーに含まれる利用可能な参照フレームには、前方参照フレーム及び後方参照フレームが含まれる。
【0008】
いくつかの実施態様では、コンテキストツリーは、前方参照フレーム及び後方参照フレームを含む単一のコンテキストツリーであり、現在のブロックのコーディングモードは複合参照コーディングモードであり、識別子は、第1の参照フレームの第1の識別子及び第2の参照フレームの第2の識別子を含み、コーディングされる構文要素を識別することは、第1の識別子に対応する第1の構文要素を識別し、第2の識別子に対応する第2の構文要素を識別することを含み、ノードを決定することは、第1の構文要素を含む単一のコンテキストツリーの第1のノードを決定し、第2の構文要素を含む単一のコンテキストツリーの第2のノードを決定することを含み、構文要素のコンテキスト情報を決定することは、第1の構文要素の第1のコンテキスト情報を決定し、第2の構文要素の第2のコンテキスト情報を決定することを含み、構文要素をコーディングすることは、第1のコンテキスト情報を使用して第1の確率モデルに従って第1の構文要素をコーディングし、第1のコンテキスト情報を使用して第2の確率モデルに従って第2の構文要素をコーディングすることを含む。
【0009】
いくつかの実施態様では、少なくとも1つの特性は、ランク付けされる利用可能な参照フレームの参照フレームの品質レベルと、現在のブロックを含むビデオフレームからの参照フレームの時間的距離とを含む。
【0010】
いくつかの実施態様では、現在のブロックを含むビデオフレームのフレームヘッダには、利用可能な参照フレームの基数に等しいビット長を持つマスクが含まれ、このマスクは、現在のブロックが利用可能な参照フレームのどれをインター予測に使用してもよく、現在のブロックが利用可能な参照フレームのどれをインター予測に使用してはいけないかを示す。
【0011】
本明細書の教示の別の態様は、ビデオフレームの現在のブロックをデコードする方法である。この方法は、各参照フレームの少なくとも1つの特性に従って利用可能な参照フレームのリストをランク付けすることと、現在のブロックのブロックヘッダから、コンテキストツリーを使用して現在のブロックをエンコードするために使用される少なくとも1つの参照フレームの識別子をデコードすることと、少なくとも1つの参照フレームを使用して現在のブロックをデコードすることとを含むことができる。コンテキストツリーは、使用可能な参照フレームの最高ランクの参照フレームから、使用可能な参照フレームの最低ランクの参照フレームまで配置されたノードを持つ単一のバイナリツリーである。
【0012】
いくつかの実施態様では、各参照フレームの少なくとも1つの特性は、参照フレームが現在のブロックを他の参照フレームよりも効率的にエンコードする可能性があるかどうかを示す。
【0013】
いくつかの実施態様では、少なくとも1つの特性は、現在のブロックを含むビデオフレームからの時間的距離、参照フレームの品質または量子化レベル、参照フレームがインター予測のために選択された回数、または参照フレームの勾配情報のうちの少なくとも2つを含む。
【0014】
本明細書の教示のさらに別の態様は、ビデオフレームの現在のブロックをエンコードする方法である。この方法は、参照フレームが他の参照フレームよりも現在のブロックをより効率的にエンコードする可能性があるかどうかを示す参照フレームの少なくとも1つの特性を使用して各参照フレームに対して計算されたスコアに基づいて利用可能な参照フレームのリストをランク付けすることと、利用可能な参照フレームの少なくとも1つの参照フレームを使用して現在のブロックをエンコードすることと、及びコンテキストツリーを使用して現在のブロックをエンコードするために使用される少なくとも1つの参照フレームの識別子を現在のブロックのブロックヘッダにエンコードすることとを含むことができる。コンテキストツリーは、使用可能な参照フレームの最高ランクの参照フレームから、使用可能な参照フレームの最低ランクの参照フレームまで配置されたノードを持つ単一のバイナリツリーである。
【0015】
いくつかの実施態様では、現在のブロックをエンコードすることは、単一の参照コーディングモードと、少なくとも最低ランクの参照フレームを除いた利用可能な参照フレームのそれぞれを使用して、現在のブロックを複数回エンコードすることと、少なくとも1つの参照フレームを、最高のコーディング効率を持つ利用可能な参照フレームの単一の参照フレームとして選択することとを含む。
【0016】
いくつかの実施態様では、少なくとも1つの参照フレームを使用して現在のブロックをエンコードすることは、2つの参照フレームを使用して現在のブロックをエンコードすることを含み、識別子をエンコードすることは、単一のバイナリツリーを使用して2つの参照フレームのうちの第1の参照フレームの第1の識別子をエンコードすることと、単一のバイナリツリーを使用して2つの参照フレームのうちの第2の参照フレームの第2の識別子をエンコードすることとを含む。
【0017】
いくつかの実施態様では、単一のバイナリツリーの利用可能な参照フレームは、前方参照フレームと後方参照フレームを含む。
【0018】
これらの方法のいずれかを実行できる装置についても説明する。
【0019】
本開示のこれらの態様及び他の態様は、以下の実施形態の詳細な説明、添付の特許請求の範囲、及び添付の図面に開示されている。
【0020】
本明細書の説明は、以下に記載する添付図面を参照しており、複数の図にわたって同様の参照番号は同様の部分を指し示している。
【図面の簡単な説明】
【0021】
図1】ビデオエンコーディング及びデコーディングシステムの概略図である。
図2】送信ステーションまたは受信ステーションを実装できるコンピューティングデバイスの一例を示すブロック図である。
図3】エンコードされ、その後デコードされるビデオストリームの例を示す図である。
図4】本開示の実施態様によるエンコーダのブロック図である。
図5】本開示の実施態様によるデコーダのブロック図である。
図6】参照フレームバッファの一例を示すブロック図である。
図7】1層コーディング構造の一例を示す図である。
図8】単一参照予測モードを使用してエンコードされたブロックの参照フレーム識別子をエントロピーコーディングするためのコンテキストツリーの例を示す図である。
図9】単方向複合参照予測モードを使用してエンコードされたブロックのフレーム識別子をエントロピーコーディングするためのコンテキストツリーの例を示す図である。
図10A】双方向複合参照予測モードを使用してエンコードされたブロックの前方フレーム識別子をエントロピーコーディングするためのコンテキストツリーの例を示す図である。
図10B】双方向複合参照予測モードを使用してエンコードされたブロックの後方フレーム識別子をエントロピーコーディングするためのコンテキストツリーの例を示す図である。
図11】インター予測ブロックの1つ以上の参照フレームをコーディングする方法のフローチャート図である。
図12】インター予測ブロックの1つ以上の参照フレームをエントロピーコーディングするためのコンテキストツリーの例を示す図である。
【発明を実施するための形態】
【0022】
ビデオコンテンツ(例えば、ビデオストリーム、ビデオファイルなど)のコーディングに関連する圧縮方式には、各画像をブロックに分割し、出力に含まれる情報を制限するために1つ以上の手法を使用してデジタルビデオ出力ビットストリームを生成することが含まれる場合がある。受信したビットストリームをデコードして、限られた情報からブロックとソースイメージを再作成できる。ビデオストリーム、またはその一部(フレームまたはブロックなど)をエンコードする際には、ビデオストリーム内の時間的及び空間的な類似性を使用してコーディング効率を向上させることができる。例えば、1つ以上の他のフレームの以前にエンコードされたピクセルに基づいて現在のブロックの動きと色の情報を予測し、予測値(予測ブロック)と現在のブロックとの差(残差)を識別することによって、現在のフレームの現在のブロックをエンコードする際に、時間的な類似性を利用することができる。この方法では、現在のブロック全体を含めるのではなく、残差と予測ブロックの生成に使用されるパラメータのみをビットストリームに追加する必要がある。この手法は、インター予測と呼ばれることがある。
【0023】
ビデオシーケンス内の他のフレームから現在のフレームのピクセルの予測ブロックを生成するこのプロセスには、参照フレームのセットを維持することが含まれる。セットを維持するために使用される参照バッファ管理システムまたは方式には、参照として保持するフレームの決定、新しい参照を優先して参照を破棄するタイミング、現在のフレームまたは予測単位(例えば、ブロック)で使用可能な参照の数、予測単位に使用される参照の通知方法、予測のためにバッファプール内の関連する参照を効率的に検索する方法など、多くの決定が含まれ得る。この方式の設計は、適切なブロック予測(例えば、エンコードされている現在のブロックと密接に一致する予測ブロック)に有用であり、この方式の高度な柔軟性により、特定のコーデックのビットストリーム仕様で許可されるものを最大限に活用できる。
【0024】
参照バッファ管理システムまたは方式(参照画像管理方式とも呼ばれる)がいくつか知られており、それぞれがコーデックに関連付けられている。例えば、H.265/HEVCは、参照フレームの表示順序に基づいて参照画像リストを順序付けする。この順序付けにより、参照フレームの維持、更新、及び信号送信のための比較的単純な方式が提供される。ただし、参照画像リストを順序付けるために距離のみを使用すると、参照フレームの信号送信においてコーディングの効率が幾分か低下するおそれがある。
【0025】
対照的に、VP9の参照バッファ管理方式では、予測ユニットは8つのフレームバッファのプールから動的に選択できる3つの可能な参照フレームから選択できる。これら3つの可能な参照フレームには、それぞれLAST、GOLDEN、ALTREFと名前が付けられる(例えば、ラベル付けまたはその他の識別など)。AV1は、8つのフレームバッファのプールから参照フレームを選択する参照バッファ管理方式において、動的参照も使用する。ただし、AV1では、7つの予測単位の参照が可能である。これら7つの可能な参照フレームは、それぞれLAST、LAST2、LAST3、GOLDEN、BWDREF(またはALTREF3)、ALTREF2、及びALTREFと名前が付けられる(例えば、ラベル付けまたはその他の識別など)。これらは、本明細書において参照フレーム名またはラベルと呼ばれることがある。後者の2つのコーデックのそれぞれにおける動的参照バッファ管理方式では、効率的なコーディングのために参照フレームを柔軟に選択できるが、バッファのラベルによる識別は、以下でさらに詳しく説明するように、関連する参照フレームに関する特定の品質または統計量を意味する。これらの品質または統計量は、それぞれの参照フレームラベルに関連付けられた実際の参照フレームを正確に反映していない可能性がある。さらに、ラベルによる識別は、参照フレームのシグナリングを複雑にする。
【0026】
本開示は、n個の可能な参照のランク付けされたリストに依拠する参照フレーム管理方式の実施態様について説明する。ランキングは、各可能な参照フレームの有用性、現在のフレーム内のブロックを予測するための適切な選択である可能性(例えば、ブロックの残差を最小化する可能性)、またはそれらの組み合わせを決定するように設計されたヒューリスティックを使用して実行することができる。このヒューリスティックでは、現在のフレームからの参照フレームの距離を含む、あるいはその代わりに複数のフレーム統計量を考慮するため、既存の手法よりもコーディング効率が向上する可能性がある。さらに、参照フレームの管理方式は、参照フレームにラベルに基づく識別を使用する方式に比べて簡素化され、柔軟性が向上する。
【0027】
参照フレーム管理方式のさらなる詳細について、本明細書では、まずそれを実装できるシステムを参照して説明する。
【0028】
図1は、ビデオエンコーディング及びデコーディングシステム100の概略図である。送信ステーション102は、例えば、図2で説明したようなハードウェアの内部構成を有するコンピュータであることができる。ただし、送信ステーション102の他の適切な実施態様も可能である。例えば、送信ステーション102の処理は複数の装置に分散されてもよい。
【0029】
ネットワーク104は、ビデオストリームのエンコード及びデコードのために送信ステーション102と受信ステーション106を接続することができる。具体的には、ビデオストリームは送信ステーション102でエンコードされ、エンコードされたビデオストリームは受信ステーション106でデコードされる。ネットワーク104は、例えばインターネットであることができる。ネットワーク104は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、仮想プライベートネットワーク(VPN)、携帯電話ネットワーク、または、この例では、送信ステーション102から受信ステーション106にビデオストリームを転送するその他の手段であってもよい。
【0030】
受信ステーション106は、一例では、図2で説明したようなハードウェアの内部構成を備えたコンピュータであることができる。ただし、受信ステーション106の他の適切な実施態様も可能である。例えば、受信ステーション106の処理は複数の装置に分散されてもよい。
【0031】
ビデオエンコード及びデコードシステム100の他の実施態様も可能である。例えば、実施態様ではネットワーク104を省略できる。別の実施態様では、ビデオストリームをエンコードして保存し、後で受信ステーション106またはメモリを備えた他の装置に送信することができる。一実施態様では、受信ステーション106は、エンコードされたビデオストリームを受信し(例えば、ネットワーク104、コンピュータバス、及び/または何らかの通信経路を介して)、後でデコードするためにビデオストリームを保存する。実施態様の一例として、ネットワーク104を介してエンコードされたビデオを送信するに、リアルタイムトランスポートプロトコル(RTP)が使用される。別の実施態様では、RTP以外のトランスポートプロトコル(例えば、ハイパーテキスト転送プロトコル(HTTP)ビデオストリーミングプロトコル)が使用される場合がある。
【0032】
例えば、ビデオ会議システムで使用する場合、送信ステーション102及び/または受信ステーション106には、以下に説明するようにビデオストリームをエンコード及びデコードする機能が含まれる場合がある。例えば、受信ステーション106は、ビデオ会議サーバ(例えば、送信ステーション102)からエンコードされたビデオビットストリームを受信してデコードし、表示し、さらに自身のビデオビットストリームをエンコードしてビデオ会議サーバに送信し、他の参加者がデコードして表示するビデオ会議参加者である可能性がある。
【0033】
図2は、送信ステーションまたは受信ステーションを実装できるコンピューティングデバイス200(例えば、装置)の一例を示すブロック図である。例えば、コンピューティングデバイス200は、図1の送信ステーション102及び受信ステーション106の一方または両方を実装できる。コンピューティングデバイス200は、複数のコンピューティングデバイスを含むコンピューティングシステムの形式、または、例えば、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータなどの1つのコンピューティングデバイスの形式にすることができる。
【0034】
コンピューティングデバイス200内のCPU202は、従来の中央処理装置であってもよい。あるいは、CPU202は、情報を操作または処理することができる、現存もしくは今後開発される任意の他のタイプの装置、または複数の装置とすることもできる。開示された実施態様は、図示されているように、例えばCPU202などの1つのプロセッサで実施できるが、速度と効率の利点は、複数のプロセッサを使用して達成することができる。
【0035】
コンピューティングデバイス200内のメモリ204は、実施態様において、読み出し専用メモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスであってもよい。メモリ204として、任意の他の適切なタイプのストレージデバイスを使用してもよい。メモリ204には、バス212を使用してCPU202によってアクセスされるコード及びデータ206を含めることができる。メモリ204には、オペレーティングシステム208及びアプリケーションプログラム210がさらに含まれ、アプリケーションプログラム210には、CPU202がここで説明する方法を実行できるようにする少なくとも1つのプログラムが含まれる場合がある。例えば、アプリケーションプログラム210は、アプリケーション1からNを含み、さらに、ここで説明する方法を実行するビデオコーディングアプリケーションを含む場合がある。コンピューティングデバイス200は、二次ストレージ214も含み、これは、例えば、モバイルコンピューティングデバイスで使用されるメモリカードであってもよい。ビデオ通信セッションには大量の情報が含まれる可能性があるため、それらの全部または一部を二次記憶装置214に保存し、処理の必要に応じてメモリ204に読み込むことができる。
【0036】
コンピューティングデバイス200はまた、ディスプレイ218などの1つ以上の出力デバイスを含んでいてもよい。ディスプレイ218は、一例では、タッチ入力を感知するように動作可能なタッチ感知要素とディスプレイを組み合わせたタッチ感知ディスプレイであってもよい。ディスプレイ218は、バス212を介してCPU202に接続できる。ディスプレイ218に加えて、またはディスプレイ218の代わりに、ユーザがコンピューティングデバイス200をプログラムし、または他の方法で使用できるようにする他の出力デバイスを提供することができる。出力デバイスがディスプレイであり、またはディスプレイを含む場合、ディスプレイは、液晶ディスプレイ(LCD)、ブラウン管(CRT)ディスプレイ、または有機LED(OLED)ディスプレイなどの発光ダイオード(LED)ディスプレイなど、さまざまな方法で実装できる。
【0037】
コンピューティングデバイス200はまた、例えばカメラなどのイメージセンシングデバイス220またはコンピューティングデバイス200を操作するユーザの画像などの画像を感知できる、現在存在し、または今後開発される任意のその他のイメージセンシングデバイス220を含み、またはそれらと通信することができる。イメージセンシングデバイス220は、コンピューティングデバイス200を操作するユーザに向けられるように配置することができる。一例では、イメージセンシングデバイス220の位置及び光軸は、視野がディスプレイ218に直接隣接し、そこからディスプレイ218が見える領域を含むように構成することができる。
【0038】
コンピューティングデバイス200には、例えばマイクロフォンなどの音響検知デバイス222、またはコンピューティングデバイス200の近くの音を検知できる、現在存在し、または今後開発される任意のその他の音響検知デバイスを含み、またはそれらと通信することができる。音響検知デバイス222は、コンピューティングデバイス200を操作するユーザに向けられるように配置され、ユーザがコンピューティングデバイス200を操作している間にユーザが発する音、例えば、音声またはその他の発話を受信するように構成することができる。
【0039】
図2では、コンピューティングデバイス200のCPU202とメモリ204が1つのユニットに統合されているように示されているが、他の構成も利用可能である。CPU202の動作は、直接またはローカルエリアネットワークもしくはその他のネットワークを介して結合できる複数のマシン(個々のマシンは1つ以上のプロセッサを有していてもよい)に分散できる。メモリ204は、ネットワークベースのメモリ、またはコンピューティングデバイス200の操作を実行する複数のマシン内のメモリなど、複数のマシンに分散できる。ここでは1つのバスとして示されているが、コンピューティングデバイス200のバス212は複数のバスから構成されてもよい。さらに、二次記憶装置214は、コンピューティングデバイス200の他のコンポーネントに直接接続することも、ネットワーク経由でアクセスすることもでき、メモリカードなどの統合ユニット、または複数のメモリカードなどの複数のユニットを含んでもよい。したがって、コンピューティングデバイス200は、さまざまな構成で実装できる。
【0040】
図3は、エンコードされ、その後デコードされるビデオストリーム300の例を示す図である。ビデオストリーム300には、ビデオシーケンス302が含まれる。次のレベルでは、ビデオシーケンス302には、いくつかの隣接フレーム304が含まれる。隣接フレーム304として3つのフレームが示されているが、ビデオシーケンス302には任意の数の隣接フレーム304を含んでいてもよい。隣接フレーム304は、さらに個別のフレーム、例えばフレーム306に細分割できる。次のレベルでは、フレーム306は一連のプレーンまたはセグメント308に分割することができる。セグメント308は、例えば並列処理を可能にするフレームのサブセットである可能性がある。セグメント308は、ビデオデータを個別の色に分離できるフレームのサブセットであってもよい。例えば、カラービデオデータのフレーム306は、輝度平面と2つの色差平面を含む。セグメント308は、異なる解像度でサンプリングされる場合がある。
【0041】
フレーム306がセグメント308に分割されているかどうかにかかわらず、フレーム306は、例えばフレーム306内の16x16ピクセルに対応するデータを含むことができるブロック310にさらに細分化され得る。ブロック310は、ピクセルデータの1つ以上のセグメント308からのデータを含むように配置することもできる。ブロック310は、4x4ピクセル、8x8ピクセル、16x8ピクセル、8x16ピクセル、16x16ピクセル、またはそれ以上のサイズなどの、任意の他の適切なサイズにすることもできる。特に明記しない限り、ブロックとマクロブロックという用語は本明細書では互換的に使用される。
【0042】
図4は、本開示の実施態様によるエンコーダ400のブロック図である。エンコーダ400は、前述のように、メモリ、例えばメモリ204に格納されたコンピュータソフトウェアプログラムを提供することなどによって、送信ステーション102に実装できる。コンピュータソフトウェアプログラムには、CPU202などのプロセッサによって実行されると、送信ステーション102が図4で説明した方法でビデオデータをエンコードするマシン命令を含めることができる。エンコーダ400は、例えば送信ステーション102に含まれる専用のハードウェアとして実装することもできる。特に望ましい一実施態様では、エンコーダ400はハードウェアエンコーダである。
【0043】
エンコーダ400には、ビデオストリーム300を入力として使用してエンコードまたは圧縮されたビットストリーム420を生成するために、順方向パス(実線の接続線で表示)でさまざまな機能を実行する以下のステージを有する:イントラ/インター予測ステージ402、変換ステージ404、量子化ステージ406、及びエントロピーエンコーディングステージ408。エンコーダ400はまた、将来のブロックのエンコードのためにフレームを再構築するための再構築パス(点線の接続線で示される)を含んでいてもよい。図4では、エンコーダ400は、再構成パス内のさまざまな機能を実行するために、以下のステージを有する:逆量子化ステージ410、逆変換ステージ412、再構成ステージ414、及びループフィルタリングステージ416。エンコーダ400の他の構造バリエーションを使用して、ビデオストリーム300をエンコードすることもできる。
【0044】
ビデオストリーム300がエンコードのために提示されると、フレーム306などの各フレーム304はブロック単位で処理することができる。イントラ/インター予測ステージ402では、各ブロックは、フレーム内予測(イントラ予測とも呼ばれる)またはフレーム間予測(インター予測とも呼ばれる)を使用してエンコードされることができる。いずれの場合も、予測ブロックを形成できる。イントラ予測の場合、予測ブロックは、以前にエンコードされ再構築された現在のフレームのサンプルから形成される場合がある。インター予測の場合、予測ブロックは、以前に構築された1つ以上の参照フレーム内のサンプルから形成される場合がある。
【0045】
次に、引き続き図4を参照すると、予測ブロックは、イントラ/インター予測ステージ402で現在のブロックから減算され、残差ブロック(残差とも呼ばれる)が生成され得る。変換ステージ404は、ブロックベースの変換を使用して、残差を、例えば周波数領域の変換係数に変換する。量子化ステージ406は、量子化値または量子化レベルを使用して、変換係数を量子化変換係数と呼ばれる離散量子値に変換する。例えば、変換係数は量子化値で除算され、切り捨てられもよい。量子化された変換係数は、エントロピーエンコーディングステージ408によってエントロピーエンコーディングされる。エントロピーエンコーディングされた係数は、ブロックをデコードするために使用される他の情報(例えば、使用される予測のタイプ、変換タイプ、動きベクトル、及び量子化値を含み得る)とともに、圧縮ビットストリーム420に出力される。圧縮ビットストリーム420は、可変長コーディング(VLC)または算術コーディングなどのさまざまな技術を使用してフォーマットできる。圧縮ビットストリーム420は、エンコードされたビデオストリームまたはエンコードされたビデオビットストリームとも呼ばれ、これらの用語は本明細書では互換的に使用される。
【0046】
図4の再構成パス(点線の接続線で表示)を使用すると、エンコーダ400とデコーダ500(後述)が同じ参照フレームを使用して圧縮ビットストリーム420をデコードできるようになり得る。再構成経路は、逆量子化ステージ410で量子化された変換係数を逆量子化すること、及び逆変換ステージ412で逆量子化された変換係数を逆変換して微分残差ブロック(微分残差とも呼ばれる)を生成することを含む、以下で詳細に説明するデコーディングプロセス中に行われる機能と同様の機能を実行する。再構成ステージ414では、イントラ/インター予測ステージ402で予測された予測ブロックを微分残差に追加して、再構成されたブロックを作成できる。ループフィルタリングステージ416を再構成されたブロックに適用すると、ブロッキングアーティファクトなどの歪みが低減され得る。
【0047】
エンコーダ400の他のバリエーションを使用して、圧縮されたビットストリーム420をエンコードすることができる。例えば、非変換ベースのエンコーダは、特定のブロックまたはフレームに対して、変換ステージ404を使用せずに残差信号を直接量子化できる。別の実施態様では、エンコーダは、共通のステージに組み合わせた量子化ステージ406と逆量子化ステージ410を有していてもよい。
【0048】
図5は、本開示の実施態様によるデコーダ500のブロック図である。デコーダ500は、例えば、メモリ204に格納されたコンピュータソフトウェアプログラムを提供することによって、受信ステーション106に実装できる。コンピュータソフトウェアプログラムは、CPU202などのプロセッサによって実行されると、受信ステーション106に図5で説明した方法でビデオデータをデコードさせるマシン命令を含んでいてもよい。デコーダ500は、例えば送信ステーション102または受信ステーション106に含まれるハードウェアに実装することもできる。
【0049】
デコーダ500は、前述のエンコーダ400の再構成パスと同様に、一例では、圧縮ビットストリーム420から出力ビデオストリーム516を生成するためのさまざまな機能を実行する次のステージを含む:エントロピーデコーディングステージ502、逆量子化ステージ504、逆変換ステージ506、イントラ/インター予測ステージ508、再構成ステージ510、ループフィルタリングステージ512、及びデブロッキングフィルタリングステージ514。デコーダ500の他の構造バリエーションを使用して、圧縮ビットストリーム420をデコードできる。
【0050】
圧縮ビットストリーム420がデコードのために提示されると、圧縮ビットストリーム420内のデータ要素はエントロピーデコーディングステージ502によってデコードされ、量子化された変換係数のセットが生成され得る。逆量子化ステージ504は、(例えば、量子化された変換係数に量子化値を乗算することによって)量子化された変換係数を逆量子化し、逆変換ステージ506は、逆量子化された変換係数を逆変換して、エンコーダ400の逆変換ステージ412によって作成されたものと同一であり得る微分残差を生成する。圧縮ビットストリーム420からデコードされたヘッダ情報を使用して、デコーダ500は、イントラ/インター予測ステージ508を使用して、エンコーダ400(例えば、イントラ/インター予測ステージ402)で作成されたものと同じ予測ブロックを作成できる。再構成ステージ510では、予測ブロックを微分残差に追加して再構成ブロックを作成できる。ループフィルタリングステージ512を再構成されたブロックに適用すると、ブロッキングアーティファクトが低減され得る。
【0051】
再構築されたブロックには他のフィルタリングを適用できる。この例では、再構成されたブロックにデブロッキングフィルタリングステージ514を適用してブロッキング歪みを低減し、その結果を出力ビデオストリーム516として出力する。出力ビデオストリーム516は、デコードされたビデオストリームとも呼ばれ得、これらの用語は本明細書では互換的に使用される。圧縮されたビットストリーム420をデコードするために、デコーダ500の他のバリエーションを使用することができる。例えば、デコーダ500は、デブロッキングフィルタリングステージ514なしで出力ビデオストリーム516を生成できる。
【0052】
図6は、最大8個のバッファを保持できる参照フレームバッファ600の一例を示すブロック図である。参照フレームバッファ600は、ビデオシーケンスのフレームのブロックをエンコードまたはデコードするために使用される参照フレームを格納する。この例では、ラベル、役割、またはタイプは、参照フレームバッファ600のそれぞれのバッファで識別される(例えば、関連付けられる、格納されるなど)さまざまな参照フレームに関連付けられるか、またはそれらの参照フレームを記述するために使用される場合がある。
【0053】
現在の参照フレームのフレームヘッダは、参照フレームが格納されている参照フレームバッファ600内の位置への仮想インデックス608を含んでいてもよい。参照フレームマッピング612は、参照フレームの仮想インデックス608を、参照フレームが格納されているメモリの物理インデックス614にマッピングできる。1つ以上のリフレッシュフラグ610は、参照フレームバッファ600から1つ以上の格納済み参照フレームを削除するために使用でき、例えば、格納済み参照フレームを使用してエンコードまたはデコードするブロックが他にない場合、新しいキーフレームがエンコードまたはデコードされる場合、またはそれらの組み合わせの場合に、新しい参照フレーム用の参照フレームバッファ600内のスペースがクリアされる。フレームレベルの参照構文の例では、(例えば8ビットの)フラグは、参照フレームバッファ600のどのバッファを現在のフレームで更新するかを示す。フレームレベル参照構文の別のコンポーネントは、名前付き参照割り当てへのバッファのマッピングを示す値のリストである。この例では、参照フレームは、LASTフレーム602、GOLDENフレーム604、及び代替参照(ALTREF)フレーム606として割り当てられ、名前が付けられ、識別され、または指定される。
【0054】
一般的に、表示順序を持つビデオシーケンスのフレームのグループは、キーフレームから始まってコード化されることがある。キーフレームは、他のフレームを参照せずにコーディングされるフレームである(例えば、そのブロックはイントラ予測を使用してコーディングされる)。本明細書で、コーディングという用語またはその変形が使用されている場合、その用語は、文脈からエンコードまたはデコードのいずれか一方のみを指していることが明白でない限り、エンコードまたはデコードのいずれかを指す。キーフレームは、再構築されると、表示順序とは異なる可能性があるコーディング順序でコーディングされたグループの1つ以上の後続フレームのブロックをコーディングするための参照フレームとして使用できる。図7は、フレームのグループがコーディングされる様子を説明するために使用できる1層コーディング構造700の一例を示す図である。図7では、参照フレームバッファ600などの8つのバッファのプールから3つよりも多い名前付き参照が動的に選択され得る。
【0055】
図4のエンコーダ400などのエンコーダは、1層コーディング構造700に従ってフレームのグループをエンコードすることができる。図5のデコーダ500などのデコーダは、1層コーディング構造700を使用してフレームのグループをデコードすることができる。デコーダは、図5の圧縮ビットストリーム420などのエンコードされたビットストリームを受信することができる。エンコードされたビットストリームでは、フレームグループのフレームは、1層コーディング構造700のコーディング順序で順序付け(例えば、配列、格納など)できる。デコーダは、1層コーディング構造700内のフレームをデコードし、表示順序に従って表示することができる。エンコードされたビットストリームは、デコーダが表示順序を決定するために使用できる構文要素を含んでいてもよい。
【0056】
図7のフレームのグループは、フレーム702、フレーム704、フレーム706、フレーム708、フレーム710、フレーム712、フレーム714、フレーム716、フレーム718、及びフレーム720の表示順序で示されている。ボックス内の数字はフレームのコーディングの順序を示す。前述したように、コーディング用のビデオシーケンスのフレームのグループは、通常、キーフレームから開始される。一旦再構成されたキーフレームは、コーディングの順序でコーディングされたグループの1つ以上の後続フレームのブロックをコーディングするための参照フレームとして利用可能である。フレームがキーフレームであることを示す(例えば、フレームのヘッダ内の)表示により、参照フレームバッファ600のすべてのフレームを更新するなど、コーディングのためにすべてのフレームを更新するコマンドが発行される場合がある。インター予測には、最大5つの名前付き参照フレーム(GOLDEN、ALTREF、LAST、LAST2、及びLAST3)があり、これらについては以下で詳しく説明する。
【0057】
この例では、フレーム702がキーフレームである。再構築されたキーフレーム702は、GOLDENフレームとして識別されてもよい。例えば、再構成されたキーフレーム702は、現在のフレーム(例えば、再構成されたキーフレーム702)で8つのバッファのうちどれを更新するかを示す8ビットのビットマップを使用してバッファに割り当てられ、その3ビットのインデックスを使用して、バッファを名前付き参照スロットGOLDENにマッピングすることができる。GOLDENフレームは、グループ内の後続のフレームをコーディングするために使用できる。例えば、コーディング順序における次のフレームは、表示順序においてキーフレーム702より定義された数のフレーム先のフレーム、例えば将来のフレームであってもよい。図7では、コーディング順序の2番目のフレームはフレーム720であり、これはフレームグループ内の最後のフレームである。フレーム720のブロックは、インター予測にGOLDENフレームを使用することができる。再構成されたフレーム720はALTREFフレームとして識別され得、時間的にフィルタリングされてもよい。
【0058】
図7のコーディング順序における3番目のフレームはフレーム704であり、これは表示順序における2番目のフレームである。フレーム704のブロックは、インター予測のためにGOLDENフレーム、ALTREFフレーム、またはその両方を使用できる。再構成されたフレーム704は、表示順序で次のフレームで、コーディング順序でも次のフレームでもある、フレーム706をコーディングするためのLASTフレームとして識別されてもよい。フレーム706には、インター予測に使用できるGOLDENフレーム、ALTREFフレーム、及びLASTフレームがある。名前付き参照スロットが3つよりも多い場合、再構成されたフレーム706は参照フレームとして識別されてもよい。この例では、フレームヘッダ参照構文は、再構成フレーム706が、表示順序の次のフレームで、コーディング順序の次のフレームでもあるフレーム708をコーディングするためのLASTフレームで識別され、再構成フレーム704がLAST2フレームとして識別されるように、バッファをリフレッシュしてもよい。フレーム708には、インター予測に使用できるGOLDENフレーム、ALTREFフレーム、LASTフレーム、及びLAST2フレームがある。フレーム710をコーディングする場合、フレームヘッダ参照構文は、再構築されたフレーム708がLASTフレームとして識別され、再構築されたフレーム706がLAST2フレームとして識別され、及び再構築されたフレーム704がLAST3フレームとして識別されるように、バッファを更新することができる。
【0059】
バッファを更新し、フレームをコーディングするこのプロセスは継続される。例えば、図7の矢印で示されるように、GOLDENフレームとして識別されるフレーム702、ALTREFフレームとして識別されるフレーム720、LASTフレームとして識別されるフレーム714、LAST2フレームとして識別されるフレーム712、及びLAST3フレームとして識別されるフレーム710は、フレーム716のブロックをコーディングするために使用できる。コーディング順序の最後のフレームがコーディングされると、コーディングが完了する。
【0060】
図7は、後方予測のための将来のフレームが1つだけ、つまりALTREFフレームとして識別されるフレーム720の例である。他のコーディング構造は、例えばALTREF2及びBWDREFなどの追加の将来のフレーム(例えば、現在のフレームを基準とした)を含む追加の参照フレームを使用するフレームのグループをコーディングするために使用できる。いくつかの実施態様では、多層コーディング構造が使用されてもよい。
【0061】
これらの例では現在のブロックと呼ばれるフレームの予測単位は、図4の例に関して上で説明したように、インター予測を使用してイントラ/インター予測ステージ402で予測できる。インター予測は、単一の参照フレーム予測モードまたは複合参照フレーム予測モードを含み得る。いくつかの実施態様では、単一参照フレーム予測モードまたは複合参照フレーム予測モードを使用してブロックをコーディングする際に、最大7つの参照フレームが利用可能になる場合がある。複合参照フレーム予測モードに関しては、それぞれの動きベクトルを持つ参照フレームの組み合わせが使用されてもよい。一例では、複合参照フレーム予測モードにおいて任意の2つの参照フレームが使用されてもよい。したがって、利用可能な7つの参照フレームのうち2つの任意の組み合わせ(例えば、28通りの可能な組み合わせ)を使用できる。別の例では、すべての可能な組み合わせのサブセット(例えば、現在のブロックのコーディングに使用される)のみが有効である場合がある。
【0062】
現在のブロックをビットストリーム420などのビットストリームにエンコードする場合、動きベクトル及び参照フレームなど、現在のブロックをエンコードするために使用されるパラメータ及び/またはパラメータの識別子(例えば、構文要素)は、エントロピーエンコーディングステージ408などでエントロピーエンコードされる。エントロピーコーディングの一般的な手法では、現在のブロックのコンテキスト(例えば、関連する値)が考慮され、及び隣接するブロックのコンテキストも考慮されることがある。ここでは、コンテキスト適応型バイナリ算術コーディング(CABAC)を使用して、本発明の教示の例を説明する。しかし、本発明はそれほど限定されるものではなく、例えば、コンテキスト適応型可変長コーディング(CAVLC)及び非バイナリコンテキストツリーを使用するものなど、コンテキストを使用する他のエントロピーコーディング方式に本教示を適用することができる。
【0063】
一般に、CABACはこれらのブロックレベルの構文要素をバイナリシンボルとしてエンコードし、任意のシンボルのより頻繁に使用されるビットの確率モデリングを可能にする。確率モデルは、ローカルコンテキスト(例えば、近くの要素)に基づいて適応的に選択されるため、確率推定のより適切なモデリングが可能になる。参照フレームに対応する構文要素の確率モデリングのローカルコンテキストは、例えば、複合参照フレーム予測モードと比較して、単一参照フレーム予測モードを使用して隣接ブロックがコーディングされるかどうか及びどれだけ多くの隣接ブロックがコーディングされるか、ならびに隣接ブロックをコーディングするためにどれだけ多くの及びどの参照フレームが使用されるかに関連する。
【0064】
名前付き参照バッファまたはスロットは、関連付けられた参照フレームに関する特定の品質または統計量を示すことを意図している。例えば、LAST、LAST2、LAST3、及びGOLDENは、ビデオシーケンス内のフレームまたは画像のグループの表示順序で現在のフレームからの距離が増加する過去の参照フレームであるとみなされるが、BWDREF、ALTREF2、及びALTREFは、現在のフレームからの表示順序が増加する将来の参照フレームであるとみなされる。最初に説明したように、名前付きスロットまたはバッファを使用する参照バッファ管理方式では、コーディングの効率が低下する可能性がある。その理由の1つは、特定の名前付きスロットで識別される参照フレームが、その名前が示すことを意図したプロパティを持っているという保証がないためである。これは、ブロックレベルの構文要素として参照フレームをコーディングすることで説明できる。
【0065】
最初に、単一参照予測モードと比較して、複合参照予測モードを使用して現在のブロックがコーディングされる異なる構文がある。ビットストリームは、モードが単一参照予測モードであるか複合参照予測モードであるかを、例えばブロックヘッダ内のフラグによって通知することができる。図8は、単一参照予測モードを使用してエンコードされたブロックの参照フレーム識別子をエントロピーコーディングするためのコンテキストツリーの例を示す図である。コンテキストツリー800は、可能な各参照フレームスロットのバイナリコードを記述する。コンテキストツリーの各ノードP1~P6は、異なる確率モデル(例えば、累積分布関数)とコンテキストを持つエントロピーコーディングされたビットである。つまり、各ノードP1~P6は、ノードP1~P6での特定のバイナリ決定のコンテキストを計算する異なる方法を表す。
【0066】
コンテキストは、現在のブロックに隣接するブロックの情報を使用して決定されてもよい。隣接ブロックは、現在のブロックに物理的または時間的に隣接し、現在のブロックより前にコード化されたブロックであってもよい。いくつかの実施態様では、隣接ブロックは、現在のフレームに配置された現在のブロックの左側にある1つ以上のブロック、現在のフレームに配置された現在のブロックの上にある1つ以上のブロック、現在のブロックと同じ位置にある前のフレーム内の1つ以上のブロック、またはそれらの組み合わせであってもよい。
【0067】
最初に、隣接ブロックのコーディングに使用される前方参照フレームの基数(つまり、この例では、LAST、LAST2、LAST3、GOLDEN)と、隣接ブロックのコーディングに使用される後方参照フレームの基数(つまり、この例では、BWDREF、ALTREF2、ALTREF)がノードP1で比較されてもよい。隣接ブロックのコーディングに使用される前方参照フレームの基数は、隣接フレームがLAST、LAST2、LAST3、またはGOLDENのいずれか1つを使用する各インスタンスを合計することによって決定できる。隣接ブロックのコーディングに使用される後方参照フレームの基数は、隣接フレームがBWDREF、ALTREF2、またはALTREFのいずれか1つを使用する各インスタンスを合計することによって決定できる。前方参照フレームの基数が後方参照フレームの基数より小さい場合、コンテキスト値は0に設定され、前方参照フレームの基数が後方参照フレームの基数と等しい場合、コンテキスト値は1に設定され、前方参照フレームの基数が後方参照フレームの基数より大きい場合、コンテキスト値は2に設定されてもよい。
【0068】
隣接ブロックのコーディングに使用されるBWDREF及びALTREF2参照フレームの基数と、隣接ブロックのコーディングに使用されるALTREF参照フレームの基数は、ノードP2で比較される場合がある。BWDREF及びALTREF2参照フレームの基数がALTREF参照フレームの基数より小さい場合、コンテキスト値は0に設定され、BWDREF及びALTREF2参照フレームの基数がALTREF参照フレームの基数と等しい場合、コンテキスト値は1に設定され、BWDREF及びALTREF2参照フレームの基数がALTREF参照フレームの基数より大きい場合、コンテキスト値は2に設定されてもよい。コンテキストツリー800の残りのノードについても同様に考えることができる。
【0069】
複合参照予測モードでは、現在のブロックが双方向に予測される場合(つまり、過去と未来の参照フレームの組み合わせが後方予測と前方予測に使用される)と、現在のブロックが一方向に予測される場合(つまり、過去の参照フレームまたは未来の参照フレームが予測に使用され、両方が使用されることはない)と比較して、使用される構文が異なる場合がある。図9は、単方向複合参照予測モードを使用してエンコードされたブロックのフレーム識別子をエントロピーコーディングするためのコンテキストツリー900の例を示す図である。コンテキストツリー900は、参照フレームスロットの組み合わせのバイナリコードを記述する。コンテキストツリーの各ノードP0~P2は、異なる確率モデル(例えば、累積分布関数)とコンテキストを持つエントロピーコーディングされたビットである。言い換えれば、各ノードP0~P2は、ノードP0~P2における特定の二分決定に対するコンテキストの異なる計算方法を表している。
【0070】
コンテキストは、コンテキストツリー800に関して説明したものと同様の戦略を使用して、コンテキストツリー900を使用して計算される。つまり、ノードP0のコンテキスト値は、隣接するブロックをコーディングするために使用される前方参照フレームの基数と、隣接するブロックをコーディングするために使用される後方参照フレームの基数の比較に基づいていてもよい。一部の実施態様では、複合参照予測モードを使用して予測された隣接ブロックにカウントが制限される場合がある。コーディングの複雑さを軽減するために、名前付きフレームの完全なセットを使用することはできない。例えば、図9の例に示すように、単方向複合参照予測モードでは、ALTREF2は考慮されない場合がある。一部の実施態様では、コーディングの複雑さを軽減するために、前方(例えば、過去)参照フレームの組み合わせ、後方(例えば、未来)参照フレームの組み合わせ、またはその両方が制限される場合がある。例えば、図9の例に示すように、単方向複合参照予測モードで使用される2つの過去の参照フレームの組み合わせのそれぞれには、LASTが含まれる。したがって、LAST2、LAST3、及びGOLDENの組み合わせはコンテキストツリー900に含まれない。
【0071】
図8の例で示される単一参照予測モードのコンテキストツリー800及び図9の例で示される単方向複合参照予測モードのコンテキストツリー900とは対照的に、計算されたコンテキストでは、隣接ブロックの前方予測フレームと後方予測フレームの比較が必要ないため、双方向複合参照予測モードに関連付けられたコンテキストツリーが2つ存在する場合がある。図10Aは、双方向複合参照予測モードを使用してエンコードされたブロックの前方フレーム識別子をエントロピーコーディングするためのコンテキストツリー1000の一例を示す図であり、図10Bは、双方向複合参照予測モードを使用してエンコードされたブロックの後方フレーム識別子をエントロピーコーディングするためのコンテキストツリー1002の一例を示す図である。
【0072】
コンテキストツリー1000は、過去の参照フレームスロットのバイナリコードを記述する。コンテキストツリーの各ノードP、P1、P2は、異なる確率モデル(例えば、累積分布関数)とコンテキストを持つエントロピーコーディングされたビットである。言い換えれば、各ノードP、P1、P2は、ノードP、P1、P2における特定の二分決定に対するコンテキストの異なる計算方法を表している。
【0073】
例えば、ノードPでは、隣接ブロックのコーディングに使用される前方参照フレームLAST及びLAST2の基数と、隣接ブロックのコーディングに使用される前方参照フレームLAST3及びGOLDENの基数を比較できる。前方参照フレームLAST及びLAST2の基数が前方参照フレームLAST3及びGOLDENの基数より小さい場合、コンテキスト値は0に設定され、前方参照フレームLAST及びLAST2の基数が前方参照フレームLAST3及びGOLDENの基数と等しい場合、コンテキスト値は1に設定され、前方参照フレームLAST及びLAST2の基数が前方参照フレームLAST3及びGOLDENの基数より大きい場合、コンテキスト値は2に設定されてもよい。例えば、ノードP1では、隣接ブロックのコーディングに使用される前方参照フレームLASTの基数と、隣接ブロックのコーディングに使用される前方参照フレームLAST2の基数を比較できる。前方参照フレームLASTの基数が前方参照フレームLAST2の基数より小さい場合、コンテキスト値は0に設定され、前方参照フレームLASTの基数が前方参照フレームLAST2の基数と等しい場合、コンテキスト値は1に設定され、前方参照フレームLASTの基数が前方参照フレームLAST2の基数より大きい場合、コンテキスト値は2に設定されてもよい。例えば、ノードP3では、隣接ブロックのコーディングに使用される前方参照フレームLAST3の基数と、隣接ブロックのコーディングに使用される前方参照フレームGOLDENの基数を比較できる。前方参照フレームLAST3の基数が前方参照フレームGOLDENの基数より小さい場合、コンテキスト値は0に設定され、前方参照フレームLAST3の基数が前方参照フレームGOLDENの基数と等しい場合、コンテキスト値は1に設定され、前方参照フレームLAST3の基数が前方参照フレームGOLDENの基数より大きい場合、コンテキスト値は2に設定されてもよい。
【0074】
コンテキストツリー1002は、将来の参照フレームスロットのバイナリコードを記述する。コンテキストツリーの各ノードP、P1、P2は、異なる確率モデル(例えば、累積分布関数)とコンテキストを持つエントロピーコーディングされたビットである。言い換えれば、各ノードP、P1、P2は、ノードP、P1、P2における特定の二分決定に対するコンテキストの異なる計算方法を表している。図10Bの各ノードのコンテキストは、図10Aのノードと同様の方法で決定することができる。
【0075】
上記の説明からわかるように、名前付き参照と関連する参照マッピングを使用すると、確率モデルの決定が比較的複雑になる。この複雑な決定は、参照フレーム識別子をコード化するために使用される確率モデルの精度の向上との許容可能なトレードオフである。ただし、エンコーダ400などのエンコーダは、参照フレームの柔軟な選択を可能にする。ラベルによるバッファの識別は、関連する参照フレームに関する特定の品質または統計量を意味する。エンコーダの柔軟性により、参照フレームラベルに関連付けられた実際の参照フレームは、期待される品質または統計量を有しない場合がある。例えば、LAST2として識別されるフレームは、代わりに上記でLAST3として説明されているものに対応する場合がある。これにより、コンテキストツリーを使用して導出された確率モデルの精度が低下する可能性がある。さらに、参照フレームの管理方式は比較的柔軟性が低く、コードに大幅な変更を加えずに追加の参照フレームを追加することはできない。
【0076】
本明細書で説明する参照フレーム管理方式には、名前付き参照/参照マッピングを使用せずに、n個の可能な参照のリストをランク付けすることが含まれる。ランク付けについては、図11以降でさらに詳しく説明する。図11は、インター予測ブロックの1つ以上の参照フレームをコーディングするプロセス、技術、または方法1100の例を示している。より具体的には、方法1100は、1つ以上の参照フレームを表す構文要素をコーディングすることを記述している。
【0077】
最初に、図11の方法は、インター予測ブロックがコーディングシーケンス内の現在のブロックであることを想定している。例えば、方法1100がエンコーダ400などでエンコード処理の一部として実行される場合、現在のブロック、現在のフレームのブロックコーディング順序で現在のブロックの前のブロック(存在する場合)、及びフレームコーディング順序で任意の前のフレーム(複数可)(例えば、その前のフレームのブロック)は、インター予測、変換、量子化、及び該当する場合は図4の再構成パスなどの再構成をすでに実行している。したがって、方法1100は、図4のエンコーダ400のエントロピーエンコーディングステージ408などのエントロピーコーディング中に、全体的または部分的に実装できる。別の例では、方法1100がデコーダ500などでデコード処理の一部として実行される場合、現在のブロック、現在のフレームのブロックコーディング順序で現在のブロックの前のブロック(存在する場合)、及びフレームコーディング順序で任意の以前のフレーム(複数可)(例えば、その前のフレームのブロック)が、圧縮ビットストリーム420などのエンコードされたビットストリームの一部として受信され、以前にコーディングされたブロックがデコードされ、現在のブロックをデコードするための処理が開始されている。この後者の例では、方法1100は、図5のデコーダ500のエントロピーデコーディングステージ502などのエントロピーコーディング中に全体的または部分的に実装されてもよい。
【0078】
方法1100は、例えば、図1の送信ステーション102または受信ステーション106などのコンピューティングデバイスによって実行できるソフトウェアプログラムとして実装できる。例えば、ソフトウェアプログラムには、図2のメモリ204または二次ストレージ214などのメモリに格納できる機械可読命令が含まれ、図2のCPU202などのプロセッサによって実行されると、コンピューティングデバイスに方法1100を実行させることができる。方法1100は、専用のハードウェアまたはファームウェアを使用して実装できる。一部のコンピューティングデバイスには複数のメモリまたはプロセッサが搭載されている場合があり、方法1100で説明する操作は、複数のプロセッサ、メモリ、またはその両方を使用して分散処理できる。方法1100は、専用のハードウェアまたはファームウェアを使用して実装できる。複数のプロセッサ、メモリ、またはその両方を使用できる。
【0079】
1102において、方法1100は、現在のインター予測ブロックをコーディングするために使用されるコーディングモードが単一参照コーディングモードであるか複合参照コーディングモードであるかを決定する。その後、コーディングされる構文要素が1104で識別される。本明細書で説明する例では、構文要素は、現在のブロックをコーディングするために使用される参照フレームの識別子または参照フレームの識別子である。エンコーダでは、この情報はエントロピーエンコーディングステージに渡され、現在のブロックのヘッダに組み込まれる場合がある。デコーダでは、この情報はエントロピーデコーディングステージで現在のブロックのヘッダから読み取られる場合がある。
【0080】
1106では、構文要素をコーディングするためのコンテキスト情報が識別される場合がある。コンテキスト情報は、以前にコーディングされたブロックに関連付けられた構文要素である場合があってもよい。例えば、以前にコーディングされたブロックには、以前にコーディングされたフレーム内の現在のブロックに時間的に隣接する1つ以上のブロック、現在のフレーム内の現在のブロックに空間的に隣接する1つ以上のブロック、またはそれらのいくつかの組み合わせが含まれていてもよい。コンテキスト情報には、それぞれのインターコーディングモード(例えば、単一参照または複合参照)と、以前にコーディングされたブロックをコーディングするために使用された参照フレームを識別する値が含まれていてもよい。コンテキスト情報は、キャッシュまたはその他のメモリに保存され、そこから取得されてもよい。
【0081】
1108では、構文要素を含むコンテキストツリーのノードが決定される。上記の例では、名前付き参照の割り当て/スロットを使用するには、複数のコンテキストツリーから選択を行う必要がある。このような方式のフレームレベル参照構文には、例えば、参照フレームバッファ600などの参照フレームバッファのうちどのバッファ(複数可)を現在のフレームで更新するかを示す8ビットのフラグが含まれる。フレームレベルの参照構文はまた、名前付き参照割り当てへのバッファのマッピングを示す値のリストを含む。例えば、例えば7つの名前付き参照スロットのそれぞれにバッファをマッピングするために、それぞれ3ビットを使用することができる。これらのインデックス値はリテラルとしてコーディングされてもよい。
【0082】
本明細書で説明するランク付けされた参照フレームワークを使用すると、リフレッシュビットマップと参照マッピングをエンコーダ側だけでなくデコーダ側でも導出できる。これにより、これらの値を直接通知する必要がなくなる。さらに、ランク付けされた参照フレームワークにより、コンテキストツリーが大幅に簡素化される。本明細書で説明するランク付けされた参照フレームワークは、すべての実施態様において名前付き参照バッファシステムを完全に置き換える必要がないことは注目に値する。例えば、エンコードまたはデコードされる同じビデオストリームの異なるフレームグループでは、一方または他方のシステムを使用することができる。これは、例えば、キーフレームのヘッダにエンコードされた、参照フレームのランキングが有効かどうかを示すフラグを使用ことで実現できる。
【0083】
最初に述べたように、ランク付けされた参照フレームワークは、各可能な参照フレームの有用性、現在のフレーム内のブロックを予測するための適切な選択である可能性(例えば、ブロックの残差を最小化する可能性)、またはそれらのいくつかの組み合わせを決定するように設計されたヒューリスティックを使用する。例えば、エンコードされたブロックに関する研究では、一般的に、現在のフレームからの時間的な距離が、予測のための参照フレームの有用性を示す強力な指標であることが示されている。したがって、いくつかの実施態様では、ランキングは、ランキングの参照フレームのスコア付けに使用される複数のフレーム統計量の1つとして、時間的距離(つまり、参照と現在のフレーム間の表示順序の距離)を考慮する場合がある。その他の統計量には、フレームの品質または量子化レベル、参照用にフレームが選択された回数、フレームの勾配情報、またはそれらのいくつかの組み合わせが含まれ得るが、これらに限定されない。例えば、エンコードされたブロックに関する研究では、一般的に、フレームの品質または量子化レベルが、予測のための参照フレームの有用性を示す強力な指標であることが示されている。いくつかの実施態様では、複数の参照が同じまたは類似の時間的距離を持つ場合に品質レベルが有用である場合がある。さらに、複数の参照が過去にある場合(例えば、3フレームより離れている場合)には、品質が有用である場合がある。
【0084】
可能な参照フレームのそれぞれは、例えば、参照フレームと現在のフレームのそれぞれの統計値間の差の組み合わせ、参照フレームのそれぞれの統計値間の差の組み合わせ、またはそれらのいくつかの組み合わせを使用してランク付けされてもよい。例えば、第1の参照フレームが、表示順序で現在のフレームに近い場合、第1の参照フレームは第2の参照フレームよりも高いランクにランク付けされる場合がある。例えば、第1の参照フレームが、第2の参照フレームよりも品質が高い場合、第1の参照フレームは第2の参照フレームよりも高いランクにランク付けされる場合がある。例えば、第1参照フレームの勾配情報が、第2の参照フレームの勾配情報よりも現在のフレームの勾配情報に近い場合、第1の参照フレームは第2の参照フレームよりも高いランクにランク付けされる場合がある。例えば、第1の参照フレームが、第2の参照フレームよりも使用される場合、第1の参照フレームは第2の参照フレームよりも高いランクにランク付けされる場合がある。
【0085】
一実施態様では、現在のフレームと参照フレーム間の距離が最初にランキングに使用されてもよい。参照フレームが現在のフレームから同じ距離にある限り、次のメトリックをランキングに使用できる。ここで、変数スコアの値が高いほど、変数スコアの値が低い場合よりも参照フレームがインター予測により有用である可能性が高いことを示す。
【0086】
【数1】
【0087】
上記のスコアを決定するメトリックにおいて、Dは現在のフレームの表示順序番号、Dは参照フレームの表示順序番号、Lは参照フレームの品質レベル、Lは現在のフレームの品質レベルである。表示順序番号の差の絶対値が判定されるため、参照フレームが表示順序において現在のフレームの前か後かは決定に関係ない。
【0088】
品質レベルに関しては、フレームに関連付けられたいくつかの値を使用して、フレームの品質レベルを示すことができる。いくつかの実施態様では、品質レベルはフレームの量子化値または量子化レベルによって決定される場合がある。図4に関して説明したように、量子化ステージ406などの量子化ステージは、フレームブロックの変換係数を量子化値で除算し、エントロピーエンコーディングの前に結果の値を切り捨てる。量子化値または量子化レベルが高くなるほど、フレームの品質レベルは低くなる。逆に、量子化値または量子化レベルが低くなるほど、フレームの品質レベルは高くなる。このため、一部の実施態様では、品質レベルは、スコアを決定する上記のメトリックのように、量子化値または量子化レベルの逆数になる場合がある。参照フレームの品質レベルLが現在のフレームの品質レベルLよりも高い場合、スコアの値は、参照フレームの品質レベルLが現在のフレームの品質レベルLよりも低い場合よりも高くなる。
【0089】
別の実施態様では、現在のフレームと参照フレーム間の距離が最初にランキングに使用されてもよく、参照フレームが現在のフレームから同じ距離にある場合、次のメトリックがランキングに使用される場合がある。繰り返しになるが、変数スコアの値が高いほど、変数スコアの値が低い場合よりも参照フレームがインター予測により有用である可能性が高いことを示す。
【0090】
【数2】
【0091】
式(1)及び式(2)を適用する例では、3つの参照フレームが利用可能であり、1つの参照フレームが現在のフレームの隣に位置し、2つの参照フレームが現在のフレームから1フレーム離れている場合、隣接する参照フレームが最も高くランク付けされ、残りの2つの参照フレームには式(1)または式(2)に従って計算されたスコアが付与される。スコアの値が高い方が2位にランク付けされ、もう1つは3位にランク付けされる。
【0092】
さらに別の実施態様では、参照フレームをランク付けするために次のメトリックが使用される場合がある。
【0093】
【数3】
【0094】
このメトリックでは、Qは参照フレームの品質レベルである。スコアは、表示順序番号の差の絶対値の関数をとることによって決定されてもよい。いくつかの実施態様では、関数は凹関数であってもよい。例えば、関数f(x)は、次の表に示すように単調増加する凹関数であってもよい。
【0095】
【表1】
【0096】
このメトリックでは、変数スコアの値が低いほど、変数スコアの値が高い場合よりも参照フレームがインター予測に有用である可能性が高いことを示す。品質レベルQに関しては、Lと同様に、フレームに関連付けられたいくつかの値を使用して、参照フレームの品質レベルを示すことができる。いくつかの実施態様では、前述のように、品質レベルが参照フレームの量子化値または量子化レベルによって決定される場合がある。しかし、式(1)及び式(2)のLとは対照的に、式(3)では、品質レベルQは、品質の低いフレームでは高くなり、品質の高いフレームでは低くなる。したがって、Qの値は、量子化値または量子化レベル自体、または他の量子化器をコーディングするために使用される基本フレーム値(例えば、この値またはレベルの逆数に反して)などのその代表値であってもよい。ランキングは、例えば単純なバブルソートを使用して完了することができる。
【0097】
さらに別の実施態様では、参照フレームをランク付けするために次のメトリックが使用される場合がある。
【0098】
【数4】
【0099】
式(3)と同様、変数スコアの値が低いほど、変数スコアの値が高い場合よりも参照フレームがインター予測に有用である可能性が高いことを示す。ランキングは、例えば単純なバブルソートを使用して完了することができる。
【0100】
上記によれば、時間的距離は参照フレームの有用性を示す強力な指標となる。時間的な距離とは別に、特に複数の参照が現在のフレームから同一または同様の時間的距離を持つ場合に、参照フレームの品質が考慮されてもよい。いくつかの実施態様では、フレームの総数と比較した過去の参照フレームの数が関連していてもよい。例えば、低遅延構成の場合や、ランダムアクセスで前方キーフレームをエンコードする場合、複数の参照フレームが遠い過去のもの(例えば、3フレームより離れたもの)になる場合がある。これにより、このようなフレームでは品質がより重要になり、過去の参照フレームの基数及び/または将来の参照フレームの基数に応じてスコアを異なる方法で計算することが望ましい場合がある。一実施態様では、式(3)と式(4)の両方が使用されてもよい。例えば、式(3)は、すべての参照フレームが過去のものである場合にスコアを計算するために使用することができ、式(4)は、それ以外の場合に、スコアを計算するために使用することができる。
【0101】
使用可能な参照フレームの数が参照スロットの数よりも多い場合、例えば7つのアクティブな参照スロットに対して8つの参照フレームが使用可能な場合などにも、これらの同じ原則が有用である場合がある。使用する参照フレームを決定する際には、利用可能なすべての参照フレームの平均品質レベルを計算することを含む場合がある(例えば、Qを使用)。過去の参照フレームが将来の参照フレームよりも多い場合、品質レベルが平均よりも低い品質フレームであることを示す(例えば、品質レベルQが平均品質レベルを上回っている)最もスコアの低い(例えば、スコアの最高値)過去の参照フレームは省略される。それ以外の場合、品質レベルが平均よりも低い品質フレームであることを示す(例えば、品質レベルQが平均品質レベルを超えている)最もスコアが低い将来の参照フレームは省略される。
【0102】
フレームグループのフレームブロックが再構築されると、再構築されたフレームは、さらにフレームをコーディングするための参照フレームとして使用できるようになる。現在のフレームのブロックのインター予測に使用可能な各参照フレームは、フレームごとに使用可能な参照フレームの最大数までのランキングを使用して考慮される場合がある。フレームのグループをエンコードまたはデコードする場合、最初の(例えば、キー)フレームを受信すると、すべての参照フレームバッファが更新されてもよい。コーディングシーケンスの次のフレームでは、後続のフレームがそのブロックのインター予測に使用可能になり、それが続く。再構築されたフレームは参照に使用できるため、参照フレームバッファ600などのバッファに追加され、スコアが再計算されて参照フレームがランクにマッピングされる。
【0103】
いくつかの実施態様では、レート歪み技術を使用して最適な予測モードの検索から参照フレームを除外することにより、ランク付けされた参照フレームを使用してエンコーダの決定を高速化できる。例えば、複合予測の場合、2つの参照フレームのランクが4以上(つまり、ランクが4、5、6、7)の場合、両方の参照フレームを使用した組み合わせはエンコーダによって考慮されない場合がある。前述のように、参照フレームの方向はコーディングの決定に関連する可能性がある。したがって、参照フレームは、1つは過去の参照フレーム用と1つは将来の参照フレーム用の方向リストで別々にランク付けされ、各リスト内の各フレームには、スコアの値に基づく方向ランクが付与される。現在のブロックの複合予測モードの予測が単方向である場合、方向ランクが両方とも2より大きい組み合わせは省略される場合がある。それ以外の場合(予測が双方向予測の場合)、両方の参照フレームの方向ランクが3を超える組み合わせは省略されてもよい。すべての参照が過去のものである場合は、特別なケースになる場合がある。このような状況では、方向ランクが両方とも4より大きい組み合わせは省略され得、一般的な場合よりも多くの検索が実行される。
【0104】
前述のように、ランク付けされた参照フレームワークにより、コンテキストの決定が簡素化される。この簡略化された決定の理由の1つは、ランク付けされた参照フレームワークでは過去の参照フレームと将来の参照フレームが区別されないためである。したがって、ブロックをコーディングするために使用される各参照フレームに同じコンテキストツリーが使用され得る。いくつかの実施態様では、単一参照予測モードと複合参照予測モードの両方の参照フレーム識別子をコーディングするために同じ構文構造が使用されてもよい。図12に示すように、ランク付けされた参照フレームワークが実装されている識別子をコード化するために使用できるコンテキストツリー1200の構文構造の例。
【0105】
図12のコンテキストツリー1200は、1108で構文要素を含むコンテキストツリーのノードがどのように決定されるかを説明するために使用できる。コンテキストツリー1200は、エントロピーコーディングのためのライスコードを決定するバイナリツリーである。コンテキストツリー1200では、最高ランクの参照フレームにREF RANK1というラベルが付けられ、次にランクの高い参照フレームにREF RANK2というラベルが付けられ、次にランクの高い参照フレームにREF RANK3というラベルが付けられ、最もランクの低い参照フレーム、つまりREF RANK7にラベルが付けられるまで続く。例えば、コンテキストツリー1200はバイナリツリーであるため、コンテキスト情報の値は、各ツリーレベルでの分離基準に対して真(1)または偽(0)として解決できる。この例では、使用可能な参照フレームが7つあることを想定しているが、より少ない数または追加の参照フレームが使用されてもよい。
【0106】
まず、単一参照予測モードについて説明する。ノードP0では、現在のブロックをコーディングするために使用される参照フレームが、ラベルREF RANK1で識別されるものに対応するかどうかが判断される。対応する場合は、コード1がエントロピーコーディングに使用される。そうでない場合、ノードP1で、現在のブロックをコーディングするために使用される参照フレームが、ラベルREF RANK2で識別されるものに対応するかどうかが検討される。対応する場合は、コード01がエントロピーコーディングに使用される。そうでない場合、ノードP2で、現在のブロックをコーディングするために使用される参照フレームが、ラベルREF RANK3で識別されるものに対応するかどうかが検討される。対応する場合は、コード001がエントロピーコーディングに使用される。そうでない場合、ノードP3で、現在のブロックをコーディングするために使用される参照フレームが、ラベルREF RANK4で識別されるものに対応するかどうかが検討される。対応する場合は、コード0001がエントロピーコーディングに使用される。そうでない場合、ノードP4で、現在のブロックをコーディングするために使用される参照フレームが、ラベルREF RANK5で識別されるものに対応するかどうかが検討される。対応する場合は、コード00001がエントロピーコーディングに使用される。そうでない場合、ノードP5で、現在のブロックをコーディングするために使用される参照フレームが、ラベルREF RANK6で識別されるものに対応するかどうかが検討される。対応する場合は、コード000001がエントロピーコーディングに使用される。そうでない場合、現在のブロックをコーディングするために使用される参照フレームは、ラベルREF RANK7で識別されるものに対応し、コード000000がエントロピーコーディングに使用される。
【0107】
1110では、1108で決定されたノードに関連付けられたコンテキスト情報を使用して、確率モデルに従って構文要素がコーディングされる。累積分布関数(例えば、各ノードの確率モデルから得られるもの)は、ノードのコードを含むコンテキスト値を使用して決定できる。コンテキスト値は各ノードに対して決定され、そのコンテキスト値は1106で識別されたコンテキスト情報を使用して決定されてもよい。例えば、ノードP0では、REF RANK1として識別される隣接ブロックによって使用される参照フレームの基数が、REF RANK2からREF RANK7として識別される各参照フレームのそれぞれの各基数の合計よりも小さい場合、コンテキスト値は0になり、REF RANK1として識別される隣接ブロックによって使用される参照フレームの基数が上記合計に等しい場合、コンテキスト値は1になり、REF RANK1として識別される隣接ブロックによって使用される参照フレームの基数が上記合計より大きい場合、コンテキスト値は2になる。ノードP1では、REF RANK2として識別される隣接ブロックによって使用される参照フレームの基数が、REF RANK3からREF RANK7として識別される各参照フレームのそれぞれの各基数の合計よりも小さい場合、コンテキスト値は0になり、REF RANK2として識別される隣接ブロックによって使用される参照フレームの基数が上記合計に等しい場合、コンテキスト値は1になり、REF RANK2として識別される隣接ブロックによって使用される参照フレームの基数が上記合計より大きい場合、コンテキスト値は2になる。より一般的に言えば、各ノードについて、各ノードのコンテキスト値は次の表に従って決定され、ここで、Nはランク付けされた参照の合計数であり、nは現在のノードに関連付けられた参照フレームのランキングであり、n=1からN-1である。
【0108】
【表2】
【0109】
いくつかの実施態様では、1106で識別され、コンテキスト値の決定に使用される参照フレームコンテキスト情報は、単一参照予測モードを使用して予測された隣接ブロックからのコンテキスト情報に限定されてもよい。
【0110】
コンテキストツリー1200のノードはそれぞれ確率モデルに関連付けられている。ノードに関連付けられた確率モデルは、そのノードの構文要素の確率を反映できる。確率モデルは、ビデオフレームの現在のブロックに関連付けられた構文要素が特定の値になる確率(例えば、現在のブロックを予測するために使用される参照フレームが特定の参照フレームである確率)を示すことができる。一例では、確率モデルには、構文要素を表すコードの各ビットに関連付けられる可能性があるさまざまな確率を反映する整数値を含めることができる。確率モデルに最大値を定義することができ、与えられた確率を、整数値を最大値で割ることによって得られるパーセンテージとして表すことができる。
【0111】
エンコード操作中、識別された確率モデルに従って構文要素に対してエントロピーコーディング(例えば、Golomb-Riceコーディング)が実行された後、結果のコードはエンコードされたビットストリーム内の現在のブロックヘッダに含められる。あるいは、デコード操作中に、エンコードされたビットストリーム内の現在のブロックヘッダからコーディングされた構文要素が取得され、識別された確率モデルに従って構文要素に対して算術コーディングが実行され、参照フレーム(複数可)が識別され、エンコードされたブロックがデコードされる。
【0112】
1108に戻ると、複合参照予測モードが使用される各構文要素(例えば、参照フレームのそれぞれの識別子)のノードの決定は、コンテキストツリー1200と同じ構文構造を使用して1108で実行できるが、1110でのコーディングのノードに対しては異なる累積分布関数が使用される。単一の参照フレームの場合に上で説明したのと同じ方法で、最もランクの低い参照フレームを最初にコーディングできる。第2の参照フレームは、第1の参照フレームのノードから構文ツリー1200を続けて下ることによってコーディングできる。例えば、現在のブロックの複合参照予測モードが{REF RANK2、REF RANK5}を使用する場合、エントロピーコーディングにはコード01001が使用される。コンテキスト値の決定に使用される参照フレームコンテキスト情報は、複合参照予測モードを使用して予測された隣接ブロックからのコンテキスト情報に限定される場合がある。
【0113】
図11による方法は、インター予測を使用してコーディングされている現在のフレームの各ブロックに対して実行することができる。
【0114】
これらの各例では、隣接するブロック(または隣接ブロック)を使用して1106でコンテキスト情報を識別することができると説明されているが、本明細書の教示はこの手法に限定されない。例えば、フレームの各ブロックがコーディング順序(例えば、ラスタースキャン順序)でコーディングされるときに、インター予測されるブロックを使用してコンテキスト情報を蓄積することができる。
【0115】
ランク付けされた参照フレームワークを使用すると、エントロピーコーディングの簡素化に加えて、参照フレームのコーディングに必要なフレームヘッダ(つまり、リフレッシュビットマップと参照マッピング)を排除できるという追加の利点がもたらされる。例えば、ランク付けされた参照リストを使用すると、エンコーダがリスト内でランク付けが下位の参照フレームのモード検索をスキップできるようにすることで、エンコーディングアルゴリズムを高速化できる。
【0116】
上記のランク付けされた参照フレームワークの例では、7つの参照フレームが使用されている。ただし、コンテキストツリー内のノードの決定とコンテキスト値の決定は実質的に同様であるため、説明した7つより少ない、または追加の参照フレームの処理は比較的容易である。ランク付けされた参照フレームワークにより、フレームごと及びブロックごとに利用可能な参照の数を柔軟にできる。フレームごとに、ランキングに含める参照フレームの最大数を(例えば、フレームヘッダで)通知することによってこれを実現できる。代替的に、または追加する形で、特定のフレームの利用可能なすべての参照が使用されていない場合には、ブロックレベルの構文が改善されてもよい。この場合、例えば、フレームヘッダには、ブロックがどの参照フレームを使用できるかを示すマスクなどの構文が含まれていてもよい。例えば、7ビットのマスクは、参照フレーム(1)を使用することと、参照フレーム(0)を使用しないことを示していてもよい。いくつかの実施態様では、セグメントヘッダまたはブロックヘッダには、フレームヘッダで説明したものと同様に、セグメントまたはブロックがどの参照フレームを使用できるかを示すマスクなどの構文が含まれていてもよい。参照フレームは、役に立たない場合は削除されてもよく、例えば、フレームの1つのブロックは4つの参照フレームに制限され、別のブロックは2つの参照フレームに制限される。
【0117】
ここで説明する新しい参照フレームワークは、規範的な手順(例えば、計算されたスコア)に基づいて参照フレームをランク付けし、ランクに基づいて参照フレームを通知する。ビットストリーム構文は、ランキングに依存するコンテキストツリーを使用することで簡素化される。さらに、参照フレームをバッファにマッピングすることは、通知する必要がなく、デコーダで決定できる。
【0118】
説明を簡単にするために、図11の方法1100及びその変形など、本明細書で説明する方法は、一連のステップまたは操作として図示及び説明されている。しかしながら、本開示に従ったステップまたは操作は、さまざまな順序で、及び/または同時に実行され得る。さらに、本明細書に提示及び説明されていない他のステップまたは操作が使用されてもよい。さらに、開示された主題に従って方法を実行するために、図示されたステップまたは操作がすべて必要なわけではない。
【0119】
上で説明したエンコードとデコードの態様は、エンコーディングとデコーディング技術のいくつかの例を示している。ただし、特許請求の範囲で使用されている用語としてのエンコード及びデコードは、圧縮、解凍、変換、またはその他のデータ処理または変更を意味する場合があることが理解されるべきである。
【0120】
「例」という単語は、例、実例、または例示として機能することを意味するために本明細書で使用される。本明細書で「例」として記載された任意の態様または設計は、必ずしも他の態様または設計よりも好ましい、または有利であると解釈されるべきではない。むしろ、「例」という単語の使用は、概念を具象的な態様で提示することを意図したものである。本出願で使用される場合、「または」という用語は、排他的な「または」ではなく包含的な「または」を意味することが意図される。すなわち、別様に指定されない限り、または文脈から明らかでない限り、「XはAまたはBを含む」とは、自然な包括的置換のいずれかを意味することが意図される。すなわち、XがAを含む場合、XがBを含む場合、または、XがA及びBの両方を含む場合、前述のいずれの場合でも、「XはAまたはBを含む」が満たされる。さらに、本出願及び添付の特許請求の範囲で使用される冠詞「a」及び「an」は、特に指定がない限り、または文脈から単数形を指すことが明らかでない限り、一般に「1つまたは複数」を意味すると解釈されるべきである。さらに、全体を通して「実施態様」または「一実施態様」という用語の使用は、その旨説明されていない限り、同じ実施形態または実施態様を意味することを意図していない。
【0121】
送信ステーション102及び/または受信ステーション106(及びそこに保存され、及び/またはそれによって実行されるアルゴリズム、方法、命令など、エンコーダ400及びデコーダ500によっても実行されるもの)の実施態様は、ハードウェア、ソフトウェア、またはそれらの任意の組み合わせによって実現できる。ハードウェアには、例えば、コンピュータ、知的財産(IP)コア、特定用途向け集積回路(ASIC)、プログラマブルロジックアレイ、光プロセッサ、プログラマブルロジックコントローラ、マイクロコード、マイクロコントローラ、サーバ、マイクロプロセッサ、デジタル信号プロセッサ、または任意の他の適切な回路が含まれる。特許請求の範囲において、「プロセッサ」という用語は、前述のハードウェアのいずれかを単独または組み合わせて含むものとして理解されるべきである。「信号」と「データ」という用語は互換的に使用される。さらに、送信ステーション102及び受信ステーション106の各部分は、必ずしも同じ方法で実装される必要はない。
【0122】
さらに、一態様では、例えば、送信ステーション102または受信ステーション106は、実行されると本明細書で説明されているそれぞれの方法、アルゴリズム、及び/または命令のいずれかを実行するコンピュータプログラムを備えた汎用コンピュータまたは汎用プロセッサを使用して実装することができる。さらに、または代わりに、例えば、本明細書で説明した方法、アルゴリズム、または命令のいずれかを実行するための他のハードウェアを含むことができる専用コンピュータ/プロセッサを利用することもできる。
【0123】
送信ステーション102及び受信ステーション106は、例えば、ビデオ会議システム内のコンピュータ上に実装できる。あるいは、送信ステーション102はサーバ上に実装され、受信ステーション106は、ハンドヘルド通信デバイスなどのサーバとは別のデバイス上に実装されることもできる。この場合、送信ステーション102は、エンコーダ400を使用してコンテンツをエンコードされたビデオ信号にエンコードし、そのエンコードされたビデオ信号を通信デバイスに送信することができる。次に、通信デバイスは、デコーダ500を使用してエンコードされたビデオ信号をデコードできる。あるいは、通信デバイスは、通信デバイス上にローカルに保存されたコンテンツ、例えば、送信ステーション102によって送信されなかったコンテンツをデコードすることができる。他の適切な送信及び受信実装方式も利用可能である。例えば、受信ステーション106は、携帯型通信デバイスではなく、一般的に固定式のパーソナルコンピュータであってもよく、及び/またはエンコーダ400を含むデバイスはデコーダ500を含んでいてもよい。
【0124】
さらに、本開示の実施態様のすべてまたは一部は、例えばコンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形をとることができる。コンピュータ使用可能またはコンピュータ可読媒体とは、例えば、任意のプロセッサによって使用され、または任意のプロセッサと接続されるプログラムを有形に格納、保存、通信、または転送できる任意の装置であってもよい。媒体としては、例えば、電子デバイス、磁気デバイス、光学デバイス、電磁気デバイス、または半導体デバイスなどが挙げられ得る。他の適切な媒体も利用可能である。
【0125】
上述の実施形態、実施態様及び態様は、本発明を容易に理解できるようにするために記載されており、本発明を限定するものではない。むしろ、本発明は、添付の特許請求の範囲に含まれる様々な変更及び同等の構成を網羅することを意図しており、その範囲は、法律で認められる限りのそのような変更及び均等な構造をすべて包含するように、最も広い解釈が与えられるべきである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10A
図10B
図11
図12
【手続補正書】
【提出日】2024-08-01
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ビデオフレームの現在のブロックをコーディングするために使用される少なくとも1つの参照フレームの識別子をコーディングする方法であって、
コーディングされる構文要素を識別することであって、前記構文要素は前記識別子に対応する、前記識別することと、
前記構文要素のコンテキスト情報を決定することであって、前記コンテキスト情報は、利用可能な参照フレームのうち、コーディング順序で前記現在のブロックの前のブロックをコーディングするために使用された参照フレームが含まれる、前記コンテキスト情報を決定することと、
前記構文要素を含むコンテキストツリーのノードを決定することであって、前記コンテキストツリーは、前記参照フレームが前記現在のブロックを他の参照フレームよりも効率的にエンコードする可能性があるかどうかを示す前記参照フレームの少なくとも1つの特性を使用して各参照フレームに対して計算されたスコアに基づいてランキングに配置された前記利用可能な参照フレームをノードとして含むバイナリツリーである、前記コンテキストツリーのノードを決定することと、
前記ノードに関連付けられた前記コンテキスト情報を使用して、確率モデルに従って前記構文要素をコーディングすることとを含む、方法。
【請求項2】
前記少なくとも1つの特性が、少なくとも2つの異なる特性を含む、請求項1に記載の方法。
【請求項3】
前記現在のブロックのコーディングモードが単一参照コーディングモードであるか複合参照コーディングモードであるかを決定することであって、前記コンテキストツリーは、前記現在のブロックの前記コーディングモードが前記単一参照コーディングモードであるか前記複合参照コーディングモードであるかに関係なく、同じ構文構造を持つ、前記決定することを含む、請求項1に記載の方法。
【請求項4】
前記コンテキストツリーに含まれる前記利用可能な参照フレームが、前方参照フレームと後方参照フレームを含む、請求項1に記載の方法。
【請求項5】
前記コンテキストツリーが、前方参照フレームと後方参照フレームを含む単一のコンテキストツリーであり、
前記現在のブロックのコーディングモードが、複合参照コーディングモードであり、
前記識別子が、第1の参照フレームの第1の識別子と、第2の参照フレームの第2の識別子とを含み、
コーディングされる前記構文要素を識別することは、前記第1の識別子に対応する第1の構文要素を識別し、前記第2の識別子に対応する第2の構文要素を識別することを含み、
前記ノードを決定することは、前記第1の構文要素を含む前記単一のコンテキストツリーの第1のノードを決定し、前記第2の構文要素を含む前記単一のコンテキストツリーの第2のノードを決定することを含み、
前記構文要素の前記コンテキスト情報を決定することは、前記第1の構文要素の第1のコンテキスト情報を決定し、前記第2の構文要素の第2のコンテキスト情報を決定することを含み、
前記構文要素をコーディングすることは、前記第1のコンテキスト情報を使用して第1の確率モデルに従って前記第1の構文要素をコーディングすることと、前記第1のコンテキスト情報を使用して第2の確率モデルに従って前記第2の構文要素をコーディングすることとを含む、請求項1に記載の方法。
【請求項6】
前記少なくとも1つの特性が、ランク付けされる前記利用可能な参照フレームの前記参照フレームの品質レベルと、前記現在のブロックを含む前記ビデオフレームからの前記参照フレームの時間的距離とを含む、請求項1に記載の方法。
【請求項7】
前記現在のブロックを含む前記ビデオフレームのフレームヘッダには、前記利用可能な参照フレームの基数に等しいビット長を持つマスクが含まれ、前記マスクは、前記現在のブロックが前記利用可能な参照フレームのどれをインター予測に使用してもよく、前記現在のブロックが前記利用可能な参照フレームのどれをインター予測に使用してはいけないかを示す、請求項1に記載の方法。
【請求項8】
ビデオフレームの現在のブロックをデコードする方法であって、
利用可能な参照フレームのリストを、各参照フレームの少なくとも1つの特性に従ってランク付けすることと、
前記現在のブロックのブロックヘッダから、コンテキストツリーを使用して前記現在のブロックをエンコードするために使用される少なくとも1つの参照フレームの識別子をデコードすることであって、前記コンテキストツリーは、前記利用可能な参照フレームの最高ランクの参照フレームから前記利用可能な参照フレームの最低ランクの参照フレームまで配置されたノードを有する単一のバイナリツリーである、前記デコードすることと、
前記少なくとも1つの参照フレームを使用して前記現在のブロックをデコードすることとを含む、方法。
【請求項9】
各参照フレームの前記少なくとも1つの特性が、前記参照フレームが前記現在のブロックを他の参照フレームよりも効率的にエンコードする可能性があるかどうかを示す、請求項8に記載の方法。
【請求項10】
前記少なくとも1つの特性が、前記現在のブロックを含む前記ビデオフレームからの時間的距離、前記参照フレームの品質または量子化レベル、前記参照フレームがインター予測のために選択された回数、または前記参照フレームの勾配情報のうちの少なくとも2つを含む、請求項8に記載の方法。
【請求項11】
ビデオフレームの現在のブロックをエンコードする方法であって、
参照フレームが前記現在のブロックを他の参照フレームよりも効率的にエンコードする可能性があるかどうかを示す前記参照フレームの少なくとも1つの特性を使用して、各参照フレームに対して計算されたスコアに基づいて、利用可能な前記参照フレームのリストをランク付けすることと、
前記利用可能な参照フレームのうち少なくとも1つの参照フレームを使用して前記現在のブロックをエンコードすることと、
前記現在のブロックのブロックヘッダに、コンテキストツリーを使用して前記現在のブロックをエンコードするために使用される少なくとも1つの参照フレームの識別子をエンコードすることであって、前記コンテキストツリーは、前記利用可能な参照フレームの最高ランクの参照フレームから前記利用可能な参照フレームの最低ランクの参照フレームまで配置されたノードを有する単一のバイナリツリーである、前記エンコードすることとを含む、方法。
【請求項12】
前記現在のブロックをエンコードすることが、
単一参照コーディングモードと、少なくとも前記最低ランクの参照フレームを除く前記利用可能な参照フレームのそれぞれを使用して、前記現在のブロックを複数回コーディングすることと、
前記少なくとも1つの参照フレームを、前記利用可能な参照フレームのうち最も高いコーディング効率を有する前記単一の参照フレームとして選択することとを含む、請求項11に記載の方法。
【請求項13】
少なくとも1つの参照フレームを使用して前記現在のブロックをエンコードすることが、2つの参照フレームを使用して前記現在のブロックをエンコードすることを含み、前記識別子をエンコードすることが、前記単一のバイナリツリーを使用して前記2つの参照フレームのうちの第1の参照フレームの第1の識別子をエンコードすることと、前記単一のバイナリツリーを使用して前記2つの参照フレームのうちの第2の参照フレームの第2の識別子をエンコードすることとを含む、請求項11に記載の方法。
【請求項14】
前記単一のバイナリツリーの前記利用可能な参照フレームが、前方参照フレームと後方参照フレームを含む、請求項11に記載の方法。
【請求項15】
請求項1から14のいずれかに記載の方法を実行するように構成されたプロセッサを備える装置。
【国際調査報告】