(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-14
(45)【発行日】2022-10-24
(54)【発明の名称】双方向オプティカルフロー(BIO)についての動きベクトル再構築
(51)【国際特許分類】
H04N 19/577 20140101AFI20221017BHJP
【FI】
H04N19/577
(21)【出願番号】P 2019536162
(86)(22)【出願日】2018-01-04
(86)【国際出願番号】 US2018012360
(87)【国際公開番号】W WO2018129172
(87)【国際公開日】2018-07-12
【審査請求日】2020-12-10
(32)【優先日】2017-01-04
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-01-11
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-01-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】100108855
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100158805
【氏名又は名称】井関 守三
(74)【代理人】
【識別番号】100112807
【氏名又は名称】岡田 貴志
(72)【発明者】
【氏名】チェン、イ-ウェン
(72)【発明者】
【氏名】チュアン、シャオ-チャン
(72)【発明者】
【氏名】リ、シャン
(72)【発明者】
【氏名】ジャン、リ
(72)【発明者】
【氏名】チェン、ウェイ-ジュン
(72)【発明者】
【氏名】チェン、ジャンレ
(72)【発明者】
【氏名】カルチェビチ、マルタ
【審査官】鉢呂 健
(56)【参考文献】
【文献】CHEN, Jianle et al.,Algorithm Description of Joint Exploration Test Model 4,Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 4th Meeting: Chengdu, CN, 15-21 October 2016, [JVET-D1001_v1],JVET-D1001 (version 1) ,ITU-T,2016年10月28日,<URL:http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/4_Chengdu/wg11/JVET-D1001-v1.zip>: JVET-D1001_V1.docx: pp. 19-22
【文献】ALSHIN, A. and ALSHINA, E.,EE3: bi-directional optical flow w/o block extension,Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 4th Meeting: Chengdu, CN, 15-21 October 2016, [JVET-E0028],JVET-E0028 (version 1),ITU-T,2017年01月03日,<URL:http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/5_Geneva/wg11/JVET-E0028-v1.zip>: JVET-E0028.docx: pp. 1-4
【文献】CHUANG, Hsiao-Chiang et al.,A block-based design for Bi-directional optical flow (BIO),Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 6th Meeting: Hobart, AU, 31 March - 7 April 2017, [JVET-F0022],JVET-F0022 (version 1),ITU-T,2017年03月15日,<URL:http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/6_Hobart/wg11/JVET-F0022-v1.zip>: JVET-F0022.doc: pp. 1-3
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
ビデオデータを復号する方法であって、前記方法は、
ビデオデータのブロックが双方向インター予測モードを使用して符号化されていると決定することと、
前記ブロックについての第1の動きベクトル(MV)を決定することと、ここにおいて、前記第1のMVは、第1の参照ピクチャを指し示す、
前記ブロックについての第2のMVを決定することと、ここにおいて、前記第2のMVは、第2の参照ピクチャを指し示し、前記第1の参照ピクチャは、前記第2の参照ピクチャとは異なる、
前記第1のMVを使用して、前記第1の参照ピクチャ中に第1の予測ブロックをロケートすることと、
前記第2のMVを使用して、前記第2の参照ピクチャ中に第2の予測ブロックをロケートすることと、
前記第1の予測ブロックの第1のサブブロックについて、第1の双方向オプティカルフロー(BIO)動き量を決定することと、
前記第1の予測ブロックの前記第1のサブブロック、前記第2の予測ブロックの第1のサブブロック、および前記第1のBIO動き量に基づいて、ビデオデータの前記ブロックについての第1の最終予測サブブロックを決定することと、
前記第1の予測ブロックの第2のサブブロックについて、第2のBIO動き量を決定することと、
前記第1の予測ブロックの前記第2のサブブロック、前記第2の予測ブロックの第2のサブブロック、および前記第2のBIO動き量に基づいて、ビデオデータの前記ブロックについての第2の最終予測サブブロックを決定することと、
前記第1の最終予測サブブロックおよび前記第2の最終予測サブブロックに基づいて、ビデオデータの前記ブロックについての最終予測ブロックを決定することと、
ビデオデータの前記ブロックの復号されたバージョンを備えるビデオデータのピクチャを出力することと、
を備える、方法。
【請求項2】
前記第1のBIO動き量を決定することは、前記第1のサブブロック中のサンプルおよび前記第1のサブブロック外のサンプルに基づいて前記第1のBIO動き量を決定することを備える、請求項1に記載の方法。
【請求項3】
前記第1のBIO動き量を決定することは、前記第1のサブブロック中のサンプルのみに基づいて前記第1のBIO動き量を決定することを備える、請求項1に記載の方法。
【請求項4】
前記第2のBIO動き量を決定することは、前記第2のサブブロック中のサンプルおよび前記第2のサブブロック外のサンプルに基づいて前記第2のBIO動き量を決定することを備える、請求項1に記載の方法。
【請求項5】
前記第2のBIO動き量を決定することは、前記第2のサブブロック中のサンプルのみに基づいて前記第2のBIO動き量を決定することを備える、請求項1に記載の方法。
【請求項6】
前記第1のBIO動き量は、水平成分および垂直成分を備える動きベクトルフィールドを備える、請求項1に記載の方法。
【請求項7】
前記第1のサブブロックは、前記ブロックについてのコーディングユニット、予測ユニット、および変換ユニットとは異なる、請求項1に記載の方法。
【請求項8】
ビデオデータの前記ブロックについての再構築されたブロックを決定するために、前記最終予測ブロックに残差データを追加すること、
をさらに備える、請求項1に記載の方法。
【請求項9】
前記第1の予測ブロックの前記第1のサブブロック、前記第2の予測ブロックの前記第1のサブブロック、および前記第1のBIO動き量に基づいて、ビデオデータの前記ブロックについての前記第1の最終予測サブブロックを決定することは、以下の式にしたがって前記第1の最終予測サブブロックを決定することを備え、
pred
BIO=1/2・(I
(0)+I
(1)+v
x・(τ
1∂I
(1)/∂x-τ
0∂I
(0)/∂x)+v
y・(τ
1∂I
(1)/∂y-τ
0∂I
(0)/∂y))
ここにおいて、
pred
BIOは、前記第1の最終予測サブブロックのサンプル値を備え、
I
(0)は、前記第1の予測ブロックの前記第1のサブブロックのサンプル値を備え、
I
(1)は、前記第2の予測ブロックの前記第1のサブブロックのサンプル値を備え、
v
xは、前記第1のBIO動き量の水平成分を備え、
v
yは、前記第1のBIO動き量の垂直成分を備え、
τ
0は、前記第1の参照ピクチャまでの距離を備え、
τ
1は、前記第2の参照ピクチャまでの距離を備える、請求項1に記載の方法。
【請求項10】
前記復号の方法は、ビデオ符号化プロセスの復号ループの一部として実行され、およびビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを出力することは、参照ピクチャメモリ中にビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを記憶することを備え、前記方法は、
前記ビデオデータの別のピクチャを符号化する際に参照ピクチャとしてビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを使用すること、
をさらに備える、請求項1に記載の方法。
【請求項11】
ビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを出力することは、ディスプレイデバイスにビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを出力することを備える、請求項1に記載の方法。
【請求項12】
1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
請求項1~11のうちの何れか一項を行わせる命令を記憶する、コンピュータ可読記憶媒体。
【請求項13】
ビデオデータを復号するための装置であって、前記装置は、
ビデオデータのブロックが双方向インター予測モードを使用して符号化されていると決定するための手段と、
前記ブロックについての第1の動きベクトル(MV)を決定するための手段と、ここにおいて、前記第1のMVは、第1の参照ピクチャを指し示す、
前記ブロックについての第2のMVを決定するための手段と、ここにおいて、前記第2のMVは、第2の参照ピクチャを指し示し、前記第1の参照ピクチャは、前記第2の参照ピクチャとは異なる、
前記第1のMVを使用して、前記第1の参照ピクチャ中に第1の予測ブロックをロケートするための手段と、
前記第2のMVを使用して、前記第2の参照ピクチャ中に第2の予測ブロックをロケートするための手段と、
前記第1の予測ブロックの第1のサブブロックについて、第1の双方向オプティカルフロー(BIO)動き量を決定するための手段と、
前記第1の予測ブロックの前記第1のサブブロック、前記第2の予測ブロックの第1のサブブロック、および前記第1のBIO動き量に基づいて、ビデオデータの前記ブロックについての第1の最終予測サブブロックを決定するための手段と、
前記第1の予測ブロックの第2のサブブロックについて、第2のBIO動き量を決定するための手段と、
前記第1の予測ブロックの前記第2のサブブロック、前記第2の予測ブロックの第2のサブブロック、および前記第2のBIO動き量に基づいて、ビデオデータの前記ブロックについての第2の最終予測サブブロックを決定するための手段と、
前記第1の最終予測サブブロックおよび前記第2の最終予測サブブロックに基づいて、ビデオデータの前記ブロックについての最終予測ブロックを決定するための手段と、
ビデオデータの前記ブロックの復号されたバージョンを備えるビデオデータのピクチャを出力するための手段と、
を備える、装置。
【請求項14】
前記装置は、ワイヤレス通信デバイスを備え、符号化されたビデオデータを受信するように構成された受信機をさらに備
え、
前記ワイヤレス通信デバイスは、電話ハンドセットを備え、
前記受信機は、前記符号化されたビデオデータを備える信号を、ワイヤレス通信規格にしたがって復調するように構成される、請求項13に記載の装置。
【請求項15】
前記装置は、ワイヤレス通信デバイスを備え、符号化されたビデオデータを送信するように構成された送信機をさらに備え
、
前記ワイヤレス通信デバイスは、電話ハンドセットを備え、
前記送信機は、前記符号化されたビデオデータを備える信号を、ワイヤレス通信規格にしたがって変調するように構成される、請求項13に記載の装置。
【発明の詳細な説明】
【優先権の主張】
【0001】
本願は、2017年1月4日に出願された米国仮特許出願第62/442,357号と、2017年1月11日に出願された米国仮特許出願第62/445,152号の利益を主張し、それらの両方の内容全体は、参照によってここに組み込まれる。
【技術分野】
【0002】
この開示は、ビデオコーディングに関する。
【背景技術】
【0003】
[0003]デジタルビデオ能力は、デジタルテレビ、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラ式または衛星無線電話、いわゆる「スマートフォン」、ビデオテレビ会議デバイス、ビデオストリーミングデバイス、および同様のものを含む、幅広い範囲のデバイスへと組み込まれることができる。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、Part 10、アドバンスドビデオコーディング(AVC)、ITU-T H.265/高効率ビデオコーディング(HEVC)、およびそのような規格の拡張によって定義された規格に説明されているもののような、ビデオコーディング技法をインプリメントする。ビデオデバイスは、そのようなビデオコーディング技法をインプリメントすることによって、より効率的にデジタルビデオ情報を送信、受信、符号化、復号、および/または記憶し得る。
【0004】
[0004]ビデオコーディング技法は、ビデオシーケンスに内在する冗長性を低減または取り除くために、空間的(イントラピクチャ)予測および/または時間的(インターピクチャ)予測を含む。ブロックベースのビデオコーディングの場合、ビデオスライス(例えば、ビデオフレームまたはビデオフレームの一部分)は、ビデオブロックへと区分され得、それはまた、ツリーブロック、コーディングユニット(CU)、および/またはコーディングノードと呼ばれ得る。ピクチャのイントラコーディングされた(I)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測を使用して符号化され得る。ピクチャのインターコーディングされた(PまたはB)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測、または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャは、フレームと呼ばれ得、および参照ピクチャは、参照フレームと呼ばれ得る。
【0005】
[0005]空間的または時間的予測は、コーディングされることになるブロックについての予測ブロックをもたらす。残差データは、コーディングされることになる元のブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされるブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトル、およびコーディングされたブロックと予測ブロックとの間の差分を示す残差データにしたがって符号化される。イントラコーディングされるブロックは、イントラコーディングモードおよび残差データにしたがって符号化される。さらなる圧縮のために、残差データは、ピクセルドメインから変換ドメインに変換され得、残差変換係数をもたらし、それはその後、量子化され得る。最初に2次元アレイ中に配置された、量子化された変換係数は、変換係数の1次元ベクトルを作り出すために走査され得、およびエントロピーコーディングが、さらにいっそうの圧縮を達成するために適用され得る。
【発明の概要】
【0006】
[0006]一般に、この開示は、ビデオコーディングにおける双方向オプティカルフロー(BIO:bi-directional optical flow)に関する技法を説明する。この開示の技法は、高効率ビデオコーディング(HEVC)のような既存のビデオコーデックと併せて使用され得、または、将来のビデオコーディング規格のための効率的なコーディングツールであり得る。
【0007】
[0007]この開示の一例によると、ビデオデータを復号する方法は、ビデオデータのブロックが双方向インター予測モードを使用して符号化されると決定することと、該ブロックについての第1の動きベクトル(MV)を決定すること、ここにおいて、第1のMVは、第1の参照ピクチャを指し示し、と、該ブロックについての第2のMVを決定すること、ここにおいて、第2のMVは、第2の参照ピクチャを指し示し、第1の参照ピクチャは、第2の参照ピクチャとは異なり、と、第1のMVを使用して、第1の参照ピクチャ中に第1の予測ブロックを定める(ロケートするlocating)ことと、第2のMVを使用して、第2の参照ピクチャ中に第2の予測ブロックを定める(ロケートする)ことと、第1の予測ブロックの第1のサブブロックについて、第1の双方向オプティカルフロー(BIO)動き量を決定することと、第1の予測ブロックの第1のサブブロック、第2の予測ブロックの第1のサブブロック、および第1のBIO動き量に基づいて、ビデオデータの該ブロックについての第1の最終予測サブブロックを決定することと、第1の予測ブロックの第2のサブブロックについて、第2のBIO動き量を決定することと、第1の予測ブロックの第2のサブブロック、第2の予測ブロックの第2のサブブロック、および第2のBIO動き量に基づいて、ビデオデータの該ブロックについての第2の最終予測サブブロックを決定することと、第1の最終予測サブブロックおよび第2の最終予測サブブロックに基づいて、ビデオデータの該ブロックについての最終予測ブロックを決定することと、ビデオデータの該ブロックの復号されたバージョンを備えるビデオデータのピクチャを出力することと、を含む。
【0008】
[0008]この開示の別の例によると、ビデオデータを復号するためのデバイスは、ビデオデータを記憶するように構成されたメモリと、ビデオデータのブロックが双方向インター予測モードを使用して符号化されると決定することと、該ブロックについての第1の動きベクトル(MV)を決定すること、ここにおいて、第1のMVは、第1の参照ピクチャを指し示し、と、該ブロックについての第2のMVを決定すること、ここにおいて、第2のMVは、第2の参照ピクチャを指し示し、第1の参照ピクチャは、第2の参照ピクチャとは異なり、と、第1のMVを使用して、第1の参照ピクチャ中に第1の予測ブロックをロケートすることと、第2のMVを使用して、第2の参照ピクチャ中に第2の予測ブロックをロケートすることと、第1の予測ブロックの第1のサブブロックについて、第1の双方向オプティカルフロー(BIO)動き量を決定することと、第1の予測ブロックの第1のサブブロック、第2の予測ブロックの第1のサブブロック、および第1のBIO動き量に基づいて、ビデオデータのブロックについての第1の最終予測サブブロックを決定することと、第1の予測ブロックの第2のサブブロックについて、第2のBIO動き量を決定することと、第1の予測ブロックの第2のサブブロック、第2の予測ブロックの第2のサブブロック、および第2のBIO動き量に基づいて、ビデオデータのブロックについての第2の最終予測サブブロックを決定することと、第1の最終予測サブブロックおよび第2の最終予測サブブロックに基づいて、ビデオデータの該ブロックについての最終予測ブロックを決定することと、ビデオデータの該ブロックの復号されたバージョンを備えるビデオデータのピクチャを出力することと、を行うように構成された1つまたは複数のプロセッサと、を含む。
【0009】
[0009]この開示の別の例によると、コンピュータ可読記憶媒体は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、ビデオデータのブロックが双方向インター予測モードを使用して符号化されると決定することと、該ブロックについての第1の動きベクトル(MV)を決定すること、ここにおいて、第1のMVは、第1の参照ピクチャを指し示し、と、該ブロックについての第2のMVを決定すること、ここにおいて、第2のMVは、第2の参照ピクチャを指し示し、第1の参照ピクチャは、第2の参照ピクチャとは異なり、と、第1のMVを使用して、第1の参照ピクチャ中に第1の予測ブロックをロケートすることと、第2のMVを使用して、第2の参照ピクチャ中に第2の予測ブロックをロケートすることと、第1の予測ブロックの第1のサブブロックについて、第1の双方向オプティカルフロー(BIO)動き量を決定することと、第1の予測ブロックの第1のサブブロック、第2の予測ブロックの第1のサブブロック、および第1のBIO動き量に基づいて、ビデオデータの該ブロックについての第1の最終予測サブブロックを決定することと、第1の予測ブロックの第2のサブブロックについて、第2のBIO動き量を決定することと、
第1の予測ブロックの第2のサブブロック、第2の予測ブロックの第2のサブブロック、および第2のBIO動き量に基づいて、ビデオデータの該ブロックについての第2の最終予測サブブロックを決定することと、第1の最終予測サブブロックおよび第2の最終予測サブブロックに基づいて、ビデオデータの該ブロックについての最終予測ブロックを決定することと、ビデオデータの該ブロックの復号されたバージョンを備えるビデオデータのピクチャを出力することと、を行わせる命令を記憶する。
【0010】
[0010]この開示の別の例によると、ビデオデータを復号するための装置は、ビデオデータのブロックが双方向インター予測モードを使用して符号化されると決定するための手段と、該ブロックについての第1の動きベクトル(MV)を決定するための手段、ここにおいて、第1のMVは、第1の参照ピクチャを指し示し、と、該ブロックについての第2のMVを決定するための手段、ここにおいて、第2のMVは、第2の参照ピクチャを指し示し、第1の参照ピクチャは、第2の参照ピクチャとは異なり、と、第1のMVを使用して、第1の参照ピクチャ中に第1の予測ブロックをロケートするための手段と、第2のMVを使用して、第2の参照ピクチャ中に第2の予測ブロックをロケートするための手段と、第1の予測ブロックの第1のサブブロックについて、第1の双方向オプティカルフロー(BIO)動き量を決定するための手段と、第1の予測ブロックの第1のサブブロック、第2の予測ブロックの第1のサブブロック、および第1のBIO動き量に基づいて、ビデオデータの該ブロックについての第1の最終予測サブブロックを決定するための手段と、第1の予測ブロックの第2のサブブロックについて、第2のBIO動き量を決定するための手段と、第1の予測ブロックの第2のサブブロック、第2の予測ブロックの第2のサブブロック、および第2のBIO動き量に基づいて、ビデオデータの該ブロックについての第2の最終予測サブブロックを決定するための手段と、第1の最終予測サブブロックおよび第2の最終予測サブブロックに基づいて、ビデオデータの該ブロックについての最終予測ブロックを決定するための手段と、ビデオデータの該ブロックの復号されたバージョンを備えるビデオデータのピクチャを出力するための手段と、を含む。
【0011】
[0011]本開示の1つまたは複数の態様の詳細は、添付の図面および以下の説明中に記載される。この開示中に説明される技法の他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0012】
【
図1】双方向オプティカルフローについての技法を利用し得る実例的なビデオ符号化および復号システムを例示するブロック図である。
【
図2】動き補償フレームレートアップコンバージョン(MC-FRUC:motion compensated frame-rate up-conversion)のために実行されるブロックマッチングアルゴリズム(BMA)としてユニラテラル(unilateral)動き推定(ME)の例を例示する概念図である。
【
図3】MC-FRUCのために遂行されるBMAとしてバイラテラルMEの例を例示する概念図である。
【
図4A】マージモードの場合の空間的隣接MV候補を示す。
【
図4B】AMVPモードの場合の空間的隣接MV候補を示す。
【
図6】オプティカルフロー軌道(trajectory)の例を示す。
【
図7】8×4ブロックについてのBIOの例を示す。
【
図8】8×4ブロックについての修正されたBIOの例を示す。
【
図9A】OBMCが適用されるサブブロックの実例的な例示を示す。
【
図9B】OBMCが適用されるサブブロックの実例的な例示を示す。
【
図11】8×4ブロックについての提案されたBIOについての例を示す。
【
図12A】OBMCに関する(on)提案された簡略化されたBIOの例を示す。
【
図12B】OBMCに関する提案された簡略化されたBIOの例を示す。
【
図12C】OBMCに関する提案された簡略化されたBIOの例を示す。
【
図12D】OBMCに関する提案された簡略化されたBIOの例を示す。
【
図13】5×5ウィンドウを有する4×4サブブロックについての実例的な重み付け関数を示す。
【
図14】ビデオ符号化器の例を例示するブロック図である。
【
図15】双方向オプティカルフローについての技法をインプリメントし得るビデオ復号器の例を例示するブロック図である。
【
図16】この開示の技法にしたがって、ビデオ復号器の実例的な動作を例示するフローチャートである。
【詳細な説明】
【0013】
[0030]一般に、この開示の技法は、双方向オプティカルフロー(BIO)ビデオコーディング技法の改善に関する。BIOは、動き補償中に適用され得る。元来提案されたように、BIOは、より良い予測ブロック、例えば、ビデオデータの元のブロックとより密接にマッチする予測ブロック、を決定するために、オプティカルフロー軌道trajectory)に基づいて双予測(bi-predicted)インターコーディングされたブロックについての予測サンプル値を修正するために使用される。この開示の様々な技法は、ビデオデータのブロックを予測するときに、例えば、動き補償中に、いつBIOを実行するか、およびBIOを実行すべきかどうかを決定するために、単独または任意の組み合わせで、適用され得る。
【0014】
[0031]この開示中に使用される場合、ビデオコーディングという用語は包括的に、ビデオ符号化またはビデオ復号のいずれかを指す。同様に、ビデオコーダという用語は包括的に、ビデオ符号化器またはビデオ復号器を指し得る。その上、ビデオ復号に関してこの開示中に説明されるある特定の技法はまた、ビデオ符号化に適用され得、および逆もまた然りである。例えば、ビデオ符号化器およびビデオ復号器は、同じプロセス、または相反するプロセスを実行するように構成されることが多い。また、ビデオ符号化器は典型的に、ビデオデータをどのように符号化するかを決定するプロセスの一部としてビデオ復号を実行する。したがって、その反対であると明示的に記載されない限り、ビデオ復号に関して説明される技法はまたビデオ符号化器によって実行されることはできない、またはその逆も然りである、と想定されるべきではない。
【0015】
[0032]この開示はまた、現在のレイヤ、現在のブロック、現在のピクチャ、現在のスライス、等のような用語を使用し得る。この開示のコンテキストでは、現在の(current)という用語は、例えば、以前にまたは既にコーディングされたブロック、ピクチャ、およびスライス、あるいは未だにコーディングされていないブロック、ピクチャ、およびスライスとは対照的に、現在コーディングされているブロック、ピクチャ、スライス、等を識別することを意図される。
【0016】
[0033]一般に、ピクチャは、ブロックへと分割され、それらの各々は、予測的にコーディングされ得る。ビデオコーダは、(現在のブロックを含むピクチャからのデータを使用する)イントラ予測技法、(現在のブロックを含むピクチャに対する以前にコーディングされたピクチャからのデータを使用する)インター予測技法、またはイントラブロックコピー、パレットモード、辞書モード、等のような他の技法を使用して現在のブロックを予測し得る。インター予測は、単方向(uni-directional)予測および双方向予測の両方を含む。
【0017】
[0034]各インター予測されるブロックについて、ビデオコーダは、動き情報のセットを決定し得る。動き情報のセットは、前方(forward)および後方(backward)予測方向についての動き情報を包含し得る。ここで、前方および後方予測方向は、双方向予測モードの2つの予測方向である。「前方」および「後方」という用語は、必ずしもジオメトリー意味(geometry meaning)を有するわけではない。代わりに、それら用語は概して、参照ピクチャが現在のピクチャの前(「後方」)または後(「前方」)に表示されることになるかどうかに対応する。いくつかの例では、「前方」および「後方」予測方向は、現在ピクチャの参照ピクチャリスト0(RefPicList0)と参照ピクチャリスト1(RefPicList1)とに対応し得る。1つの参照ピクチャリストしかピクチャまたはスライスに対して利用可能でないとき、RefPicList0のみが利用可能であり、およびスライスの各ブロックの動き情報は常に、RefPicList0のピクチャを参照する(例えば、前方である)。
【0018】
[0035]いくつかのケースでは、対応する参照インデックスとともに動きベクトルは、復号プロセスにおいて使用され得る。参照インデックスに関連するそのような動きベクトルは、動き情報の単予測(uni-predictive)セットとして表される。
【0019】
[0036]各予測方向について、動き情報は、参照インデックスおよび動きベクトルを包含する。いくつかのケースでは、簡潔さのために、動きベクトル自体が、動きベクトルが関連する参照インデックスを有すると想定される方法で参照され得る。参照インデックスは、現在の参照ピクチャリスト(RefPicList0またはRefPicList1)中の参照ピクチャを識別するために使用され得る。動きベクトルは、水平(x)および垂直(y)成分を有する。一般に、水平成分は、参照ブロックのx座標をロケートする(定めるlocate)ために必要とされる、現在のピクチャ中の現在のブロックの位置に対する、参照ピクチャ内での水平変位を示し、一方、垂直成分は、参照ブロックのy座標をロケートするために必要とされる、現在のブロックの位置に対する、参照ピクチャ内での垂直変位を示す。
【0020】
[0037]ピクチャ順序カウント(POC:Picture order count)値は、ピクチャの表示順序を識別するためにビデオコーディング規格において広く使用されている。1つのコーディングされたビデオシーケンス内の2つのピクチャが同じPOC値を有し得るケースが存在するが、これは典型的に、1つのコーディングされたビデオシーケンス内では起こらない。このことから、ピクチャのPOC値は、概して一意であり、およびこのことから、対応するピクチャを一意的に識別することができる。複数のコーディングされたビデオシーケンスがビットストリーム中に存在するとき、同じPOC値を有するピクチャは、復号順序の観点から互いにより近いことがあり得る。ピクチャのPOC値は典型的に、参照ピクチャリスト構築、HEVCにあるような参照ピクチャセットの導出、および動きベクトルスケーリングのために使用される。
【0021】
[0038]E. Alshina, A. Alshina, J.-H. Min, K. Choi, A. Saxena, M. Budagavi, “Known tools performance investigation for next generation video coding,” ITU - Telecommunications Standardization Sector, STUDY GROUP 16 Question 6, Video Coding Experts Group (VCEG), VCEG-AZ05, June. 2015, Warsaw, Poland(以下において「Alshina1」と記載される)、およびA. Alshina, E. Alshina, T. Lee, “Bi-directional optical flow for improving motion compensation,” Picture Coding Symposium (PCS), Nagoya, Japan, 2010(以下において「Alshina2」と記載される)は、双方向オプティカルフロー(BIO)と呼ばれる方法を説明している。BIOは、ピクセルレベルのオプティカルフローに基づく。Alshina1およびAlshina2によると、BIOは、前方(forward)予測および後方(backward)予測の両方を有するブロックにのみ適用される。Alshina1およびAlshina2中に説明されているようなBIOは、以下に要約される:
【0022】
[0039]時間tにおけるピクセル値I
tが与えられると、ピクセル値の1次テイラー展開は、
【数1】
である。
【0023】
[0040]It0は、Itの動き軌道(trajectory)上にある。すなわち、It0からItまでの動きは、公式において考慮される。
【0024】
[0041]オプティカルフローの想定の下では:
【数2】
であり、
【数3】
とすると、式(A)は、
【数4】
になる。
【0025】
[0042]
【数5】
を移動速度と見なすと、V
x0およびV
y0が、それらを表すために使用され得る。
【0026】
[0043]よって、式(B)は、
【数6】
になる。
【0027】
[0044]t0における前方参照およびt1における後方参照を仮定し、そして
t0-t=t-t1=Δt=1であると仮定する。
【0028】
【0029】
[0046]動きが軌道に沿っていることから、V
x0=V
x1=V
xおよびV
y0=V
y1=V
yであるとさらに想定される。よって、式(D)は、
【数8】
になり、ここで、ΔG
x=G
x0-G
x1、ΔG
y=G
y0-G
y1は、再構築された参照に基づいて算出されることができる。
【数9】
が通常の双予測であることから、
【数10】
は、便宜上、これ以降ではBIOオフセットと呼ばれる。
【0030】
[0047]V
xおよびV
yは、次の歪みを最小化することによって符号化器および復号器の両方において導出される:
【数11】
【0031】
[0048]導出されるVxおよびVyを用いて、ブロックの最終予測が式(E)で算出される。VxおよびVyは、便宜上、「BIO動き」と呼ばれる。
【0032】
[0049]一般に、ビデオコーダは、動き補償中にBIOを実行する。すなわち、ビデオコーダが現在のブロックについての動きベクトルを決定した後に、ビデオコーダは、動きベクトルに対する動き補償を使用して、現在のブロックについての予測されたブロックを作り出す。一般に、動きベクトルは、参照ピクチャ中の現在のブロックに対する参照ブロックのロケーションを識別する。BIOを実行するとき、ビデオコーダは、現在のブロックについての動きベクトルをピクセルごとに修正する。すなわち、ブロックユニットとして参照ブロックの各ピクセルを取り出すというよりはむしろ、BIOにしたがって、ビデオコーダは、現在のブロックについての動きベクトルに対するピクセルごとの修正を決定し、および参照ブロックが、動きベクトルによって識別される参照ピクセル、および現在のブロックの対応するピクセルについてのピクセルごとの修正を含むように、参照ブロックを構築する。このことから、BIOは、現在のブロックについてのより正確な参照ブロックを作り出すために使用され得る。
【0033】
[0050]
図1は、双方向オプティカルフローについての技法を利用し得る実例的なビデオ符号化および復号システム10を例示するブロック図である。
図1に示されているように、システム10は、宛先デバイス14によって後の時間に復号されることになる符号化されるビデオデータを提供するソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを提供する。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス、または同様のものを含む、幅広い範囲のデバイスのうちの任意のものを備え得る。いくつかのケースでは、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
【0034】
[0051]宛先デバイス14は、コンピュータ可読媒体16を介して復号されることになる符号化されたビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動させることが可能である任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12がリアルタイムで宛先デバイス14に符号化されたビデオデータを直接送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルのような通信規格にしたがって変調され、および宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理的伝送線路のような任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットのようなグローバルネットワークのような、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするのに有用であり得る任意の他の機器を含み得る。
【0035】
[0052]いくつかの例では、符号化されたデータは、出力インターフェース22から記憶デバイスに出力され得る。同様に、符号化されたデータは、入力インターフェースによって記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または非揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の適したデジタル記憶媒体のような、多様な分散されたまたは局所的にアクセスされるデータ記憶媒体のうちの任意のものを含み得る。さらなる例では、記憶デバイスは、ファイルサーバ、またはソースデバイス12によって生成された符号化されたビデオを記憶し得る別の中間記憶デバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して記憶デバイスからの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶することと、宛先デバイス14にその符号化されたビデオデータを送信することとが可能である任意のタイプのサーバであり得る。実例的なファイルサーバは、(例えば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続記憶(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む、任意の標準データ接続を通じて符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ上に記憶された符号化されたビデオデータにアクセスするのに適している、ワイヤレスチャネル(例えば、Wi-Fi接続)、ワイヤード接続(例えば、DSL、ケーブルモデム、等)、またはその両方の組み合わせを含み得る。記憶デバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組み合わせであり得る。
【0036】
[0053]この開示の技法は、ワイヤレスアプリケーションまたは設定に必ずしも限定されるわけではない。本技法は、無線テレビブロードキャスト、ケーブルテレビ送信、衛星テレビ送信、HTTPを通した動的適応型ストリーミング(DASH)のようなインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他のアプリケーションのような、多様なマルチメディアアプリケーションのうちの任意のものをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティングおよび/またはビデオ電話通信のようなアプリケーションをサポートするための1方向(one-way)または2方向(two-way)ビデオ送信をサポートするように構成され得る。
【0037】
[0054]
図1の例では、ソースデバイス12は、ビデオソース18、ビデオ符号化器20、および出力インターフェース22を含む。宛先デバイス14は、入力インターフェース28、ビデオ復号器30、およびディスプレイデバイス32を含む。この開示にしたがって、ソースデバイス12のビデオ符号化器20は、双方向オプティカルフローのための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他のコンポーネントまたは配列を含み得る。例えば、ソースデバイス12は、外部カメラのような外部ビデオソース18からビデオデータを受信し得る。同じように、宛先デバイス14は、統合されたディスプレイデバイスを含むというよりはむしろ、外部ディスプレイデバイスとインターフェースし得る。
【0038】
[0055]
図1の例示されているシステム10は単に、一例に過ぎない。双方向オプティカルフローのための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって遂行され得る。概して、この開示の技法は、ビデオ符号化デバイスによって遂行されるが、本技法はまた、典型的に「CODEC」と呼ばれるビデオ符号化器/復号器によって遂行され得る。その上、この開示の技法はまた、ビデオプリプロセッサによって遂行され得る。ソースデバイス12および宛先デバイス14は単に、ソースデバイス12が宛先デバイス14への送信のためのコーディングされたビデオデータを生成するそのようなコーディングデバイスの例に過ぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化および復号コンポーネントを含むような実質的に対称的な方法で動作し得る。故に、システム10は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオ電話のために、ビデオデバイス12とビデオデバイス14との間の1方向または2方向ビデオ送信をサポートし得る。
【0039】
[0056]ソースデバイス12のビデオソース18は、ビデオカメラのようなビデオキャプチャデバイス、以前にキャプチャされたビデオを包含するビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてコンピュータグラフィックスベースのデータを、またはライブビデオ、アーカイブされたビデオ、およびコンピュータ生成されたビデオの組み合わせを生成し得る。いくつかのケースでは、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ電話またはビデオ電話を形成し得る。上述されたように、しかしながら、この開示中に説明される技法は、一般にビデオコーディングに適用可能であり得、およびワイヤレスおよび/またはワイヤードアプリケーションに適用され得る。各ケースでは、キャプチャされた、事前にキャプチャされた、またはコンピュータ生成されたビデオは、ビデオ符号化器20によって符号化され得る。符号化されたビデオ情報はその後、コンピュータ可読媒体16上に出力インターフェース22によって出力され得る。
【0040】
[0057]コンピュータ可読媒体16は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信のような一過性媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu-rayディスク、または他のコンピュータ可読媒体のような記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、ソースデバイス12から符号化されたビデオデータを受信し、および例えば、ネットワーク送信を介して、宛先デバイス14に符号化されたビデオデータを提供し得る。同様に、ディスクスタンピング設備のような媒体製造設備(medium production facility)のコンピューティングデバイスは、ソースデバイス12から符号化されたビデオデータを受信し、および符号化されたビデオデータを包含するディスクを製造し得る。したがって、コンピュータ可読媒体16は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むことが理解され得る。
【0041】
[0058]宛先デバイス14の入力インターフェース28は、コンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ビデオデータの特性および/または処理を記述するシンタックス要素を含む、ビデオ符号化器20によって定義されたシンタックス情報を含み得、それはまた、ビデオ復号器30によって使用される。ディスプレイデバイス32は、ユーザに復号されたビデオデータを表示し、およびブラウン管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような多様なディスプレイデバイスのうちの任意のものを備え得る。
【0042】
[0059]ビデオ符号化器20およびビデオ復号器30は、ITU-T H.264/AVC(アドバンスドビデオコーディング)、またはITU-T H.265とも呼ばれる高効率ビデオコーディング(HEVC)のような1つまたは複数のビデオコーディング規格にしたがって動作し得る。H.264は、International Telecommunication Union, “Advanced video coding for generic audiovisual services,” SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Infrastructure of audiovisual services - Coding of moving video, H.264, June 2011、中に説明されている。H.265は、International Telecommunication Union, “High efficiency video coding,” SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Infrastructure of audiovisual services - Coding of moving video, April 2015、中に説明されている。この開示の技法はまた、効率的なコーディングツールとして任意の他の以前のまたは将来のビデオコーディング規格に適用され得る。
【0043】
[0060]他のビデオコーディング規格は、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、およびH.264のスケーラブルビデオコーディング(SVC)およびマルチビュービデオコーディング(MVC)拡張、ならびに範囲拡張、マルチビュー拡張(MV-HEVC)およびスケーラブル拡張(SHVC)のようなHEVCの拡張を含む。2015年4月に、ビデオコーディング専門家グループ(VCEG:the Video Coding Experts Group)は、次世代のビデオコーディング規格を対象にした新しい研究プロジェクトに着手した。参照ソフトウェアは、HM-KTAと呼ばれる。
【0044】
[0061]ITU-T VCEG(Q6/16)およびISO/IEC MPEG(JTC 1/SC 29/WG 11)は現在、(HEVCの現在の拡張およびスクリーンコンテンツコーディングおよびハイダイナミックレンジコーディングについての近々の拡張を含む)現在のHEVC規格のそれを有意に上回る圧縮能力を有する将来のビデオコーディング技術の標準化の潜在的な必要性を研究している。グループは、このエリアにおけるそれらの専門家によって提案された圧縮技術設計を評価するために、共同ビデオ調査チーム(JVET:the Joint Video Exploration Team)として知られている共同コラボレーションの取り組みにおいて、この調査活動で協働している。JVETは、2015年10月19日~21日中に最初の会合を行った。参照ソフトウェアの最新バージョン、すなわち、共同調査モデル3(JEM3:Joint Exploration Model 3)は、https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-4.0/からダウンロードされることができる。共同調査テストモデル3(JEM3)のアルゴリズム記述は、JVET-D1001と呼ばれることができる。
【0045】
[0062]この開示の技法に関連するH.264およびHEVCのもののような、ある特定のビデオコーディング技法が、この開示中に説明される。この開示のある特定の技法は、理解を助けるためにH.264および/またはHEVCを参照して説明され得るが、説明される技法は、必ずしもH.264またはHEVCに限定されるわけではなく、他のコーディング規格および他のコーディングツールと併せて使用されることができる。
【0046】
[0063]
図1には示されていないが、いくつかの態様では、ビデオ符号化器20およびビデオ復号器30は各々、オーディオ符号化器および復号器と統合され得、および共通のデータストリームまたは別個のデータストリーム中でのオーディオおよびビデオの両方の符号化を扱うために、適切なMUX-DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能である場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコルに、又はユーザデータグラムプロトコル(UDP)のような他のプロトコルにしたがい得る。
【0047】
[0064]HEVCおよび他のビデオコーディング仕様では、ビデオシーケンスは典型的に、一連のピクチャを含む。ピクチャはまた、「フレーム」と呼ばれ得る。ピクチャは、SL、SCb、およびSCrと表される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルはまた、ここでは「クロマ」サンプルと呼ばれ得る。他の事例では、ピクチャは、モノクロームであり得、およびルーマサンプルのアレイのみを含み得る。
【0048】
[0065]ピクチャの符号化された表現を生成するために、ビデオ符号化器20は、コーディングツリーユニット(CTU)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、それらコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別個の色平面を有するピクチャでは、CTUは、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUはまた、「ツリーブロック」または「最大コーディングユニット」(LCU)と呼ばれ得る。HEVCのCTUは、H.264/AVCのような他の規格のマクロブロックに大まかに類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるわけではなく、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスター走査順序で連続して順序付けられた整数の数のCTUを含み得る。
【0049】
[0066]CTBは、四分木を包含し、それのノードは、コーディングユニットである。CTBのサイズは、(技術的には、8×8のCTBサイズがサポートされることができるが)HEVCメインプロファイルでは16×16~64×64までの範囲であることができる。コーディングユニット(CU)は、CTBと同じサイズであることができるが、且つ8×8と同じくらい小さくあることできる。各コーディングユニットは、1つのモードでコーディングされる。CUがインターコーディングされるとき、CUは、2つまたは4つの予測ユニット(PU)へとさらに区分化され得るか、またはさらなる区分化が適用されないときには単に1つのPUになり得る。1つのCU中に2つのPUが存在するとき、2つのPUは、半分のサイズの矩形、またはCUの1/4または3/4サイズを有する2つの矩形サイズであることができる。
【0050】
[0067]コーディングされたCTUを生成するために、ビデオ符号化器20は、コーディングツリーブロックをコーディングブロックへと分割するために、CTUのコーディングツリーブロックに対して四分木区分化を再帰的に遂行し得、故に名称が「コーディングツリーユニット」である。コーディングブロックは、サンプルのN×Nブロックであり得る。CUは、ルーマサンプルアレイ、Cbサンプルアレイ、およびCrサンプルアレイを有するピクチャの、ルーマサンプルのコーディングブロックおよびクロマサンプルの2つの対応するコーディングブロックと、それらコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別個の色平面を有するピクチャでは、CUは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
【0051】
[0068]ビデオ符号化器20は、CUのコーディングブロックを、1つまたは複数の予測ブロックへと区分化し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックである。CUの予測ユニット(PU)は、ルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、それら予測ブロックを予測するために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別個の色平面を有するピクチャでは、PUは、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオ符号化器20は、CUの各PUのルーマ、Cb、およびCr予測ブロックについて、予測ルーマ、Cb、およびCrブロックを生成し得る。
【0052】
[0069]ビデオ符号化器20は、PUについて、予測ブロックを生成するためにイントラ予測またはインター予測を使用し得る。ビデオ符号化器20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオ符号化器20は、PUに関連付けられたピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成し得る。ビデオ符号化器20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオ符号化器20は、PUに関連付けられたピクチャ以外の1つまたは複数のピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成し得る。CUがインターコーディングされるとき、動き情報の1つのセットが、各PUに対して存在し得る。加えて、各PUは、動き情報のセットを導出するために、一意のインター予測モードでコーディングされ得る。
【0053】
[0070]ビデオ符号化器20がCUの1つまたは複数のPUについて、予測ルーマ、Cb、およびCrブロックを生成した後に、ビデオ符号化器20は、そのCUについてのルーマ残差ブロックを生成し得る。CUのルーマ残差ブロック中の各サンプルは、CUの予測ルーマブロックのうちの1つ中のルーマサンプルと、CUの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。加えて、ビデオ符号化器20は、CUについてのCb残差ブロックを生成し得る。CUのCb残差ブロック中の各サンプルは、CUの予測Cbブロックのうちの1つ中のCbサンプルと、CUの元のCbコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオ符号化器20はまた、CUについてのCr残差ブロックを生成し得る。CUのCr残差ブロック中の各サンプルは、CUの予測Crブロックのうちの1つ中のCrサンプルと、CUの元のCrコーディングブロック中の対応するサンプルとの間の差分を示し得る。
【0054】
[0071]さらに、ビデオ符号化器20は、CUのルーマ、Cb、およびCr残差ブロックを、1つまたは複数のルーマ、Cb、およびCr変換ブロックへと分解するために、四分木区分化を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形(例えば、正方形または非正方形)ブロックである。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、それら変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。このことから、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連付けられ得る。TUに関連付けられたルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。モノクロームピクチャまたは3つの別個の色平面を有するピクチャでは、TUは、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
【0055】
[0072]ビデオ符号化器20は、TUについてのルーマ係数ブロックを生成するために、TUのルーマ変換ブロックに1つまたは複数の変換を適用し得る。係数ブロックは、変換係数の2次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオ符号化器20は、TUについてのCb係数ブロックを生成するために、TUのCb変換ブロックに1つまたは複数の変換を適用し得る。ビデオ符号化器20は、TUについてのCr係数ブロックを生成するために、TUのCr変換ブロックに1つまたは複数の変換を適用し得る。
【0056】
[0073]係数ブロック(例えば、ルーマ係数ブロック、Cb係数ブロックまたはCr係数ブロック)を生成した後に、ビデオ符号化器20は、係数ブロックを量子化し得る。量子化は概して、変換係数を表すために使用されるデータの量をことによると低減するために変換係数が量子化されるプロセスを指し、さらなる圧縮を提供する。ビデオ符号化器20が係数ブロックを量子化した後に、ビデオ符号化器20は、量子化された変換係数を示すシンタックス要素をエントロピー符号化し得る。例えば、ビデオ符号化器20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)を遂行し得る。
【0057】
[0074]ビデオ符号化器20は、コーディングされたピクチャの表現と関連するデータとを形成するビットのシーケンスを含むビットストリームを出力し得る。ビットストリームは、NALユニットのシーケンスを備え得る。NALユニットは、NALユニット中のデータのタイプのインジケーションと、エミュレーション防止ビットが必要に応じて組み入れられている(interspersed as necessary with)RBSPのフォームのデータを包含するバイトと、を包含するシンタックス構造である。NALユニットの各々は、NALユニットヘッダを含み、およびRBSPをカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数の数のバイトを包含するシンタックス構造であり得る。いくつかの事例では、RBSPは、0ビットを含む。
【0058】
[0075]異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化し得る。例えば、第1のタイプのNALユニットは、PPSについてのRBSPをカプセル化し得、第2のタイプのNALユニットは、コーディングされたスライスについてのRBSPをカプセル化し得、第3のタイプのNALユニットは、SEIメッセージについてのRBSPをカプセル化し得、といった具合であり得る。(パラメータセットおよびSEIメッセージについてのRBSPとは対照的に)ビデオコーディングデータについてのRBSPをカプセル化するNALユニットは、VCL NALユニットと呼ばれ得る。
【0059】
[0076]ビデオ復号器30は、ビデオ符号化器20によって生成されたビットストリームを受信し得る。加えて、ビデオ復号器30は、ビットストリームからシンタックス要素を取得するために、ビットストリームを構文解析し得る。ビデオ復号器30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構築し得る。ビデオデータを再構築するためのプロセスは概して、ビデオ符号化器20によって実行されるプロセスとは相補的であり得る。加えて、ビデオ復号器30は、現在のCUのTUに関連付けられた係数ブロックを逆量子化し得る。ビデオ復号器30は、現在のCUのTUに関連付けられた変換ブロックを再構築するために、係数ブロックに対して逆変換を実行し得る。ビデオ復号器30は、現在のCUのPUについての予測ブロックのサンプルを、現在のCUのTUの変換ブロックの対応するサンプルに追加することによって、現在のCUのコーディングブロックを再構築し得る。ピクチャの各CUについてのコーディングブロックを再構築することによって、ビデオ復号器30は、ピクチャを再構築し得る。
【0060】
[0077]この開示の技法にしたがって、ビデオ符号化器20および/またはビデオ復号器30はさらに、以下により詳細に論述されるように、動き補償中にBIO技法を実行し得る。
【0061】
[0078]ビデオ符号化器20およびビデオ復号器30は各々、適宜、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック回路、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組み合わせのような、多様な適した符号化器または復号器回路のうちの任意のものとしてインプリメントされ得る。ビデオ符号化器20およびビデオ復号器30の各々は、1つまたは複数の符号化器または復号器中に含まれ得、それらのうちのいずれも、組み合わされたビデオ符号化器/復号器(CODEC)の一部として統合され得る。ビデオ符号化器20および/またはビデオ復号器30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラ電話のようなワイヤレス通信デバイスを備え得る。
【0062】
[0079]
図2は、動き補償フレームレートアップコンバージョン(MC-FRUC)のために実行されるブロックマッチングアルゴリズム(BMA)としてユニラテラル(unilateral)動き推定(ME)の例を例示する概念図である。一般に、(ビデオ符号化器20またはビデオ復号器30のような)ビデオコーダは、現在のフレーム100の現在のブロック106について、参照フレーム102からベストマッチングブロック(例えば、参照ブロック108)を探索することによって動きベクトル(MV)112のようなMVを取得するために、ユニラテラルMEを実行する。その後、ビデオコーダは、補間されたフレーム104中で動きベクトル112の動き軌道に沿って補間されたブロック110を補間する。すなわち、
図2の例では、動きベクトル112は、現在のブロック106、参照ブロック108、および補間されたブロック110の中点を通過する。
【0063】
[0080]
図2に示されているように、動き軌道をたどる3つのフレーム中の3つのブロックが関わっている(involved)。現在のフレーム100中の現在のブロック106は、コーディングされたブロックに属するが、参照フレーム102中のベストマッチングブロック(すなわち、参照ブロック108)は、コーディングされたブロックに完全には属する必要はない(すなわち、ベストマッチングブロックは、コーディングされたブロック境界上に収まらない(not fall on)ことがあり得るが、代わりに、そのような境界とオーバーラップし得る)。同じように、補間されたフレーム104中の補間されたブロック110は、コーディングされたブロックに完全には属する必要はない。その結果として、ブロックのオーバーラップされた領域と、満たされていない(穴)領域とが、補間されたフレーム104中に生じ得る。
【0064】
[0081]オーバーラップに対処するために、単純なFRUCアルゴリズムは、オーバーラップされたピクセルを平均化および上書きすることを伴い得る。その上、穴は、参照または現在のフレームからのピクセル値によってカバーされ得る。しかしながら、これらのアルゴリズムは、ブロッキングアーティファクト(blocking artifacts)およびぼやけ(blurring)をもたらし得る。故に、動きフィールドセグメント化(motion field segmentation)、離散ハートレー変換を使用する連続補外(successive extrapolation)、および画像インペインティング(image inpainting)が、ブロッキングアーティファクトおよびぼやけを増大させることなしに、穴およびオーバーラップに対処するために使用され得る。
【0065】
[0082]
図3は、MC-FRUCのために実行されるBMAとしてバイラテラルMEの例を例示する概念図である。バイラテラルMEは、オーバーラップおよび穴によって引き起こされる問題を避けるために使用されることができる(MC-FRUCにおける)別のソリューションである。バイラテラルMEを実行する(ビデオ符号化器20および/またはビデオ復号器30のような)ビデオコーダは、現在のフレーム120の現在のブロック126と参照フレーム122の参照ブロック128との間の時間的対称性を使用して、(現在のフレーム120と参照フレーム122との中間にある)補間されたフレーム124の補間されたブロック130を通るMV132、134を取得する。結果として、ビデオコーダは、補間されたフレーム124中でオーバーラップおよび穴を生成しない。例えば、ビデオコーディングのケースにおいてあるように、現在のブロック126はビデオコーダがある特定の順序で処理するブロックであると想定すると、そのようなブロックのシーケンスは、オーバーラップなしに中間ピクチャ全体をカバーするであろう。例えば、ビデオコーディングのケースでは、ブロックは、復号順序で処理されることができる。したがって、そのような方法は、FRUCのアイディアがビデオコーディングフレームワークにおいて考慮されることができる場合により適し得る。
【0066】
[0083]S.-F. Tu, O. C. Au, Y. Wu, E. Luo and C.-H. Yeun, “A Novel Framework for Frame Rate Up Conversion by Predictive Variable Block-Size Motion Estimated Optical Flow,” International Congress on Image Signal Processing (CISP), 2009は、フレームレートアップコンバージョンのためのハイブリッドブロックレベル動き推定およびピクセルレベルオプティカルフロー方法を説明した。Tuは、ハイブリッドシーンはどちらの個々の方法よりも優れていたと述べた。
【0067】
[0084]HEVC規格では、マージモード(スキップモードはマージの特殊なケースと見なされる)および高度動きベクトル予測(AMVP:advanced motion vector prediction)モードと名付けられた、2つのインター予測モードが存在する。AMVPモードまたはマージモードのいずれでも、ビデオコーダは、複数の動きベクトル予測子についてMV候補リストを維持する。ビデオコーダは、特定のPUについての(1つ以上の)動きベクトル、ならびにマージモードにおける参照インデックスが、MV候補リストから1つの候補を選択すると決定する。
【0068】
[0085]HEVCでは、MV候補リストは、マージモードの場合は最大で5つまでの候補を、およびAMVPモードの場合は2つの候補のみを包含する。他のコーディング規格は、より多くのまたはより少ない候補を含み得る。マージ候補は、動き情報のセット、例えば、両方の参照ピクチャリスト(リスト0およびリスト1)に対応する動きベクトルと参照インデックスとを包含し得る。ビデオ復号器は、マージインデックスによって識別されるマージ候補を受信し、およびビデオ復号器は、識別された(1つ以上)参照ピクチャおよび(1つ以上)動きベクトルを使用して現在のPUを予測する。しかしながら、AMVPモードの場合、リスト0またはリスト1のいずれかからの各潜在的な予測方向について、AMVP候補が1つの動きベクトルのみを包含することから、MV候補リストに対するMVP予測子(MVP)インデックスとともに、参照インデックスが明示的にシグナリングされる必要がある。AMVPモードでは、予測された動きベクトルは、さらに精緻化される(refined)ことができる。
【0069】
[0086]マージ候補は、動き情報のフルセットに対応するが、その一方でAMVP候補は、特定の予測方向についての単に1つの動きベクトルおよび参照インデックスを包含する。両方のモードについての候補は、同じ空間的および時間的隣接ブロックから同様に導出される。
【0070】
[0087]
図4Aは、マージモードの場合の空間的隣接MV候補を示しており、および
図4Bは、AMVPモードの場合の空間的隣接MV候補を示している。ブロックから候補を生成する方法は、マージモードとAMVPモードとの場合で異なるが、空間的MV候補は、特定のPU(PU
0)について、
図4Aおよび4Bに示されている隣接ブロックから導出される。
【0071】
[0088]マージモードでは、最大で4つまでの空間的MV候補が、
図4Aに示されている順序で導出されることができる。順序は、次の通りである:
図4Aに示されているように、左(0)、上(1)、右上(2)、左下(3)、および左上(4)。空間的MV候補0~3の全てが利用可能且つ一意である場合、ビデオコーダは、候補リスト中に左上ブロックについての動き情報を含めないことがあり得る。しかしながら、空間的MV候補0~3のうちの1つまたは複数が利用可能でないか、または一意でない場合、ビデオコーダは、候補リスト中に左上ブロックについての動き情報を含め得る。
【0072】
[0089]AVMPモードでは、隣接ブロックは、2つのグループへと分割される:
図4Bに示されているように、ブロック0および1から成る左グループ、およびブロック2、3、および4から成る上グループ。各グループについて、シグナリングされた参照インデックスによって示されたものと同じ参照ピクチャを参照する隣接ブロック中の潜在的な候補は、グループの最終候補を形成するために選ばれるための最高の優先度を有する。全ての隣接ブロックが同じ参照ピクチャを指し示す動きベクトルを包含するわけではない可能性がある。したがって、そのような候補が見出されることができない場合、第1の利用可能な候補が、最終候補を形成するためにスケーリングされることになり、このことから、時間的距離差分が補償されることができる。
【0073】
[0090]
図5Aは、TMVP候補の例を示しており、および
図5Bは、MVスケーリングの例を示している。時間的動きベクトル予測子(TMVP)候補は、有効且つ利用可能である場合、MV候補リストへと、空間的動きベクトル候補の後に追加される。TMVP候補についての動きベクトル導出のプロセスは、マージモードとAMVPモードとの両方の場合で同じであるが、しかしながら、マージモードにおけるTMVP候補についてのターゲット参照インデックスは、常に0に設定される。
【0074】
[0091]TMVP候補導出のためのプライマリブロックロケーションは、ブロック「T」として
図5Aに示されているような、コロケートされたPUの外部の右下ブロックであり、空間的隣接候補を生成するために使用される上ブロックおよび左ブロックに対するバイアスを補償する。しかしながら、そのブロックが現在のCTB行の外部にロケートされるか、または動き情報が利用可能でない場合、そのブロックは、PUの中心ブロックで代用される(substituted with)。
【0075】
[0092]TMVP候補についての動きベクトルは、スライスレベルで示される、コロケートされたピクチャのコロケートされたPUから導出される。コロケートされたPUについての動きベクトルは、コロケートされたMVと呼ばれる。AVCにおける時間的直接モードと同様に、TMVP候補動きベクトルを導出するために、コロケートされたMVは、
図5Bに示されているように、時間的距離差分を補償するためにスケーリングされる必要がある。
【0076】
[0093]HEVCはまた、動きベクトルスケーリングを利用する。動きベクトルの値は、提示時間におけるピクチャの距離に比例すると想定される。動きベクトルは、2つのピクチャ、参照ピクチャと、動きベクトルを包含するピクチャ(すなわち包含ピクチャ(the containing picture))とを関連付ける。動きベクトルが他の動きベクトルを予測するために利用されるとき、包含ピクチャと参照ピクチャとの距離は、POC値に基づいて算出される。
【0077】
[0094]動きベクトルが予測されるために、動きベクトルの関連する包含ピクチャと参照ピクチャとの両方は、異なり得る。したがって、(POCに基づく)新しい距離が算出され、および動きベクトルは、これらの2つのPOC距離に基づいてスケーリングされる。空間的隣接候補の場合、2つの動きベクトルについての包含ピクチャは同じであるが、参照ピクチャは異なる。HEVCでは、動きベクトルスケーリングは、空間的および時間的隣接候補についてのTMVPとAMVPとの両方に適用される。
【0078】
[0095]HEVCはまた、疑似(artificial)動きベクトル候補生成を利用する。動きベクトル候補リストが完全でない場合、動きベクトル候補リスト中の全ての利用可能なエントリが候補を有するまで、疑似動きベクトル候補が生成され、且つリストの末尾に挿入される。マージモードでは、2つのタイプの疑似MV候補が存在する:Bスライスのためにのみ導出される合成(combined)候補、および第1のタイプが十分な疑似候補を提供しない場合にAMVPのためにのみ使用されるゼロ候補。候補リスト中に既に存在し、且つ必要な動き情報を有する候補の各ペアの場合、双方向合成動きベクトル候補は、リスト0中の1つのピクチャを参照する第1の候補の動きベクトルと、リスト1中の1つのピクチャを参照する第2の候補の動きベクトルとの組み合わせによって導出される。
【0079】
[0096]HEVCはまた、候補挿入のためのプルーニングプロセスを利用する。異なるブロックからの候補は、偶然同じであり得、それは、マージ/AMVP候補リストの効率を低下させる。プルーニングプロセスは、この問題を解決するために適用され得る。プルーニングプロセスは、同一の候補を挿入するのを避けるために、ある1つの候補を現在の候補リスト中の他の複数の候補に対して比較する。複雑性を低減するために、各潜在的な候補を全ての他の既存の候補と比較する代わりに、限定された数のプルーニングプロセスのみが適用され得る。一例として、ビデオコーダは、空間的および時間的隣接候補にプルーニングプロセスを適用し得るが、疑似的に(artificially)生成された候補には適用し得ない。
【0080】
[0097]ここで、JEMにおける双方向オプティカルフローの態様が説明されることになる。
図6は、オプティカルフロー軌道の例を示している。BIOは、双予測のケースでは、ブロックワイズ動き補償に加えて(on top of)実行されるピクセルワイズ動き精緻化(refinement)を利用する。BIOがブロック内部の微細な動きを補償することから、BIOをイネーブルにすることは事実上、動き補償のためにブロックサイズを拡大することをもたらし得る。サンプルレベル動き精微化は、網羅的な探索またはシグナリングを必要としないが、代わりに、各サンプルについての微細な動きベクトルを与える明確な式(an explicit equation)を利用する。
【0081】
[0098]I
(k)を、補償ブロック動き(compensation block motion)の後の基準(reference)k(k=0,1)からのルミナンス値とすると、∂I
(k)/∂x、∂I
(k)/∂yは、それぞれ、I
(k)勾配(グラディエント)の水平および垂直成分である。オプティカルフローが有効であると想定すると、動きベクトルフィールド(v
x,v
y)が、式
【数12】
によって与えられる。
【0082】
[0099]各サンプルの動き軌道についてオプティカルフロー式をエルミート補間と組み合わせると、両端部において(at the ends)関数値I
(k)と導関数(derivatives)∂I
(k)/∂x、∂I
(k)/∂yとの両方とマッチする3次の一意の多項式を得られる。t=0におけるこの多項式の値は、BIO予測である:
【数13】
【0083】
[0100]ここで、τ
0およびτ
1は、
図6に示されているような参照フレームまでの距離を表す。距離τ
0およびτ
1は、Ref0およびRef1についてのPOCに基づいて算出される:τ
0=POC(current)-POC(Ref0),τ
1=POC(Ref1)-POC(current)。両方の予測が同じ時間方向から来る場合(両方とも過去から、または両方とも将来から)、符号(signs)は、異なるτ
0・τ
1<0。このケースでは、BIOは、予測が同じ時間モーメント(time moment)から来ない場合にのみ適用され(τ
0≠τ
1)、両方の参照される領域は、非ゼロ動きを有し(MVx
0,MVy
0,MVx
1,MVy
1≠0)、およびブロック動きベクトルは、時間距離に比例する(MVx
0/MVx
1=MVy
0/MVy
1=-τ
0/τ
1)。
【0084】
[0101]BIO動き量とも呼ばれる動きベクトルフィールド(v
x,v
y)は、点A中の値と点B中の値との間の差分Δ(
図6における動き軌道と参照フレーム面との交点(intersection))を最小化することによって決定される。モデルは、Δについて局所的テイラー展開の第1の線形項(first linear term of local Taylor expansion)のみを使用する:
【数14】
【0085】
[0102](1)中の全ての値は、サンプルロケーション(i’,j’)に依存し、それは、これまで省略されていた。動きが局所的周辺(local surrounding)中で一貫していると想定すると、現在予測されている点(i,j)を中心とした(2M+1)×(2M+1)正方形ウィンドウΩ内部のΔは、次の通りに最小化され得る:
【数15】
【0086】
[0103]この最適化の問題について、まず最小化を垂直方向に、そして次に水平方向に行う簡略化されたソリューションが使用され得、それは:
【数16】
をもたらし、ここで、
【数17】
【0087】
[0104]0または非常に小さい値による除算を避けるために、正則化パラメータrおよびmが、式(2)、(3)中に導入される。
【数18】
ここで、dは、入力ビデオの内部ビット深度である。
【0088】
[0105]いくつかのケースでは、BIOのMV精緻化は、雑音または不規則な動きに起因して信頼性が低いことがあり得る。したがって、BIOでは、MV精緻化の大きさ(the magnitude)は、ある特定のしきい値thBIOにクリップされる。しきい値は、現在のピクチャの全ての参照ピクチャが全て1つの方向からのものであるかどうかに基づいて決定される。現在のピクチャの現在のピクチャの全ての参照ピクチャが1つの方向からのものである場合、しきい値は、12×214-dに設定され得、そうでない場合は、しきい値は、12×213-dに設定され得る。
【0089】
[0106]BIOについての勾配(gradients)は、HEVC動き補償プロセスと一致する動作(2D分離型FIR(2D separable FIR))を使用して、動き補償補間と同じ時間に算出される。この2D分離型FIRのための入力は、ブロック動きベクトルの分数部分(the fractional part)にしたがった分数位置(fractional position)(fracX,fracY)および動き補償プロセスのためのと同じ参照フレームサンプルである。水平勾配∂I/∂xのケースでは、信号がまず、デスケーリングシフト(de-scaling shift)d-8を伴う(with)分数位置fracYに対応するBIOfilterSを使用して垂直に補間され、次に18-dだけデスケーリングシフトを伴う(with)分数位置fracXに対応する勾配フィルタBIOfilterGが、水平方向に適用される。垂直勾配∂I/∂yのケースでは、まず勾配フィルタが、デスケーリングシフトd-8を伴う(with)分数位置fracYに対応するBIOfilterGを使用して垂直に適用され、次に信号変位(signal displacement)が、18-dだけデスケーリングシフトを伴う(with)分数位置fracXに対応するBIOfilterSを使用して水平方向に実行される。勾配算出のための補間フィルタBIOfilterGおよび信号変位のための補間フィルタBIOfilterFの長さは、合理的な複雑性を維持するためにより短い(6タップ)。表1は、BIOにおけるブロック動きベクトルの異なる分数位置についての勾配算出のために使用されるフィルタを示している。表2は、BIOにおける予測信号生成のために使用される補間フィルタを示している。
【0090】
[0107]
図7は、8×4ブロックについての勾配(gradient)算出の例を示している。8×4ブロックについて、ビデオコーダは、動き補償予測子をフェッチし、現在のブロック内の全てのピクセルのHOR/VER勾配と、ピクセルの外側の2つの線(outer two lines)とを計算するが、これは、各ピクセルについてのvxおよびvyを解くことが、式(4)中に示されているように、各ピクセルを中心としたウィンドウΩ内のピクセルの動き補償予測子およびHOR/VER勾配値を必要とするからである。JEMでは、このウィンドウのサイズは、5×5に設定される。したがって、ビデオコーダは、動き補償予測子をフェッチし、およびピクセルの外側の2つの線(outer two lines)についての勾配を算出する必要がある。
【表1】
【0091】
[0108]JEMでは、BIOは、2つの予測が異なる参照ピクチャからのものであるとき、全ての双方向予測されたブロックに適用される。LICがCUについてイネーブルにされると、BIOは、ディセーブルにされる。
【0092】
[0109]
図8は、JVET-D0042中に提案された8×4ブロックについての修正されたBIOの例を示している。第4回のJVETの会合において、BIO動作を修正し、およびメモリアクセス帯域幅を低減するための提案書JVET-D0042(A. Alshina, E. Alshina, “AHG6: On BIO memory bandwidth”, JVET-D0042, October 2016)が提出された。この提案書では、いかなる動き補償予測も勾配値も、現在のブロックの外部のピクセルに必要とされない。その上、各ピクセルについてのvxおよびvyを解くことは、
図8中に示されているような、現在のブロック内の全てのピクセルの勾配値および動き補償予測子を使用して修正される。言い換えれば、式(4)中の正方形ウィンドウΩは、現在のブロックに等しいウィンドウに修正される。この上、重み付け係数w(i’,j’)が、vxおよびvyを導出するために考慮される。w(i’,j’)は、中心ピクセル(i,j)の位置およびウィンドウ内のピクセル(I’,j’)の位置の関数である。
【数19】
【0093】
[0110]ここで、JEMにおけるオーバーラップブロック動き補償(OBMC:Overlapped Block Motion Compensation)の態様が説明されることになる。OBMCは、例えば、H.263においてあるように、初期世代のビデオ規格に対して使用されてきた。JEMでは、OBMCは、CUの右および下の境界を除き、全ての動き補償(MC)ブロック境界について実行される。その上、OBMCは、ルーマ成分とクロマ成分との両方に適用され得る。JEMでは、MCブロックは、コーディングブロックに対応している。CUが(J. Chen, E. Alshina, G. J. Sullivan, J.-R. Ohm, J. Boyce, “Algorithm Description of Joint Exploration Test Model 4,” JVET-D1001, October 2016、中に説明されているようなサブCUマージ、アフィンおよびFRUCモードを含む)サブCUモードでコーディングされるとき、CUの各サブブロックは、MCブロックである。均一の様式でCU境界を処理するために、OBMCは、全てのMCブロック境界についてサブブロックレベルで実行され、ここで、サブブロックサイズは、
図9Aおよび9Bに例示されているように、4×4に等しく設定される。
【0094】
[0111]OBMCが現在のサブブロックに適用されるとき、現在の動きベクトルの他に、4つの接続された隣接サブブロックの動きベクトルもまた、利用可能であり且つ現在の動きベクトルと同一でない場合には、現在のサブブロックについての予測ブロックを導出するために使用される。複数の動きベクトルに基づくこれらの複数の予測ブロックは、現在のサブブロックの最終予測信号を生成するために組み合わされる。
【0095】
[0112]
図10に示されているように、隣接サブブロックの動きベクトルに基づく予測ブロックは、P
Nとして表され、ここで、Nは、隣接する上、下、左および右サブブロックについてのインデックスを示し、および現在のサブブロックの動きベクトルに基づく予測ブロックは、P
Cとして表される。P
Nが現在のサブブロックに対して同じ動き情報を包含する隣接サブブロックの動き情報に基づくとき、OBMCは、P
Nから実行されない。そうでないとき、P
Nのそれぞれのピクセルは、P
C中の同じピクセルに追加される、すなわち、P
Nの4つの行/列が、P
Cに追加される。重み付け係数{1/4,1/8,1/16,1/32}は、P
Nに対して使用され、および重み付け係数{3/4,7/8,15/16,31/32}は、P
Cに対して使用される。例外は、小さいMCブロックであり、(すなわち、コーディングブロックの高さまたは幅が4に等しいか、またはCUがサブCUモードでコーディングされるとき)、それについては、P
Nの2つの行/列のみが、P
Cに追加される。このケースは、重み付け係数{1/4,1/8}は、P
Nに対して使用され、および重み付け係数{3/4,7/8}は、P
Cに対して使用される。垂直に(水平に)隣接するサブブロックの動きベクトルに基づいて生成されるP
Nの場合、P
Nの同じ行(列)中のピクセルが、同じ重み付け係数を有するP
Cに追加される。BIOはまた、予測ブロックP
Nの導出のために適用され得る。
【0096】
[0113]JEMでは、256個のルーマサンプル以下のサイズを有するCUの場合、CUレベルフラグが、OBMCが現在のCUについて適用されるか否かを示すためにシグナリングされる。256個のルーマサンプルより大きいサイズを有するか、またはAMVPモードでコーディングされないCUの場合、OBMCは、デフォルトで適用される。符号化器において、OBMCがCUに適用されるとき、その影響は、動き推定ステージ中に考慮に入れられる。上部隣接ブロックおよび左隣接ブロックの動き情報を使用することによる予測信号は、現在のCUの元の信号の上部および左境界を補償するために使用され、およびその後、通常の動き推定プロセスが適用される。
【0097】
[0114]BIOは、JEM4.0における1%より多くのBjontegaard-Deltaビットレート(BDレート)低減を潜在的に提供するが、BIOはまた潜在的に、有意な計算の複雑性をもたらし、および符号化器と復号器との両方についてメモリ帯域幅の増大を必要とし得る。この開示は、BIOに関連付けられた必要とされるメモリ帯域幅および計算の複雑性を潜在的に低減し得る技法を説明している。一例では、この開示の技法にしたがって、ビデオコーダは、サブブロックレベルでBIO動き量、例えば、上述されたvxおよびvy値、を決定し、およびサンプルごとに予測ブロックのサンプル値を修正するために、その決定されたBIO動き量を使用し得る。それ故に、この開示の技法は、ビデオ符号化器およびビデオ復号器を、それらが、BIOの既存のインプリメンテーションのために必要とされる実質的な処理およびメモリ負担を招くことなしに、BIOのコーディング利得を達成することを可能にすることによって、改善し得る。
【0098】
[0115]式(4)に基づいて、この開示は、ウィンドウΩを再定義することによってBIOの複雑性を低減するための技法を紹介する。そのような技法は、例えば、ビデオ符号化器20(例えば、動き推定ユニット42および/または動き補償ユニット44)によって、またはビデオ復号器30(例えば、動き補償ユニット72)によって遂行され得る。ウィンドウΩは、M×Nのサイズを有する、現在のピクセルをカバーする現在のブロック内の任意のブロックとして定義され、ここで、MおよびNは、任意の正の整数である。一例では、現在のブロックは、オーバーラップされていないサブブロックへと分割され、およびウィンドウΩは、現在のピクセルをカバーするサブブロックとして定義される。
図11に示されているような別の例では、サブブロックは、現在のピクセルをカバーする、動きベクトル記憶のための最小ブロックとして定義される。HEVCおよびJEMでは、最小ブロックサイズは、4×4である。別の例では、ウィンドウΩのサイズは、現在のブロックのサイズ、コーディングモードのようなコーディング情報にしたがって適応的である。現在のブロックサイズがより大きいとき、より大きいウィンドウΩが使用されることができる。現在のブロックがサブCUマージ、アフィンおよびFRUCモードのようなサブブロックモードとしてコーディングされるとき、ウィンドウΩは、サブブロックとして設定される。
【0099】
[0116]
図11は、ピクセルA、BおよびCについてのウィンドウΩを伴う、この開示の技法にしたがって、8×4ブロックについての提案されたBIOの例を示している。この開示の技法によると、均等な重み付けが、式(7)中に示されているように、vxおよびvyを解くために使用され得る。別の例では、不均等な重み付けが、式(10)中に示されているように、vxおよびvyを解くために使用されることができる。不均等な重み付けは、中心ピクセルと関連するピクセルとの間の距離の関数であることができる。さらに別の例では、重み付けは、例えば、https://en.wikipedia.org/wiki/Bilateral_filterにおいて説明されている、バイラテラルアプローチを使用して算出されることができる。その上、ルックアップテーブルが、式(7)中のウィンドウΩについての各ピクセルについての全ての重み付け係数を記憶するために使用されることができる。
【0100】
[0117]別の例では、OBMCのためにP
Nを導出するとき、BIOは、隣接動きを使用して予測子を導出するときにのみ部分的ピクセルについて遂行される。一例では、BIOは、P
Nを導出する際に全てのピクセルについて完全にディセーブルにされる。さらなる別の例では、BIOは、
図12A~12Dに示されているように、外側の2つの線(outer two lines)中のピクセルに対してのみ適用される。
【0101】
[0118]その上、各ブロックについて、いくつの線をBIOは適用されるかは、SPS/PPSのスライスレベル中で明示的にシグナリングされることができる。BIOがディセーブルにされるか、または部分的にディセーブルにされるかもまた、SPS/PPSのスライスレベルで明示的にシグナリングされることができる。
【0102】
[0119]その一方では、いくつの線をBIOは適用されるかは、CUモード(サブブロックモードまたは非サブブロックモード)またはブロックサイズまたはシグナリングされる照明補償(IC)フラグのような他のツールの組み合わせのような、ある特定のコーディング条件に暗示的に基づくことができる。BIOがディセーブルにされるか、または部分的にディセーブルにされるかもまた、CUモード(サブブロックモードまたは非サブブロックモード)またはブロックサイズまたはシグナリングされるICフラグのような他のツールの組み合わせのような、ある特定の条件に基づいて暗示的に導出されることができる。
【0103】
[0120]
図12A~12Dは、この開示の技法にしたがって、OBMCに関する提案された簡略化されたBIOの例を示しており、ここで、xは、BIOなしで導出される予測子を表し、およびoは、BIOを伴って導出される予測子を表す。BIOからの動きベクトル精緻化は、ブロックベースであることができる。ブロックサイズをM×Nとすると、重み付け関数は、式(7)中の項の算出中に異なるロケーションのピクセルに異なるスケール係数を提供するために使用されることができる。式(5)および(6)を解くとき、ブロック全体から収集された補間されたピクセルおよびそれらの勾配値(gradient values)は、各ピクセル位置について個々にvxおよびvyを解く代わりに、一緒にvxおよびvyを解くために使用されることができる。
【0104】
[0121]一例では、ウィンドウサイズオメガは、各ピクセルロケーションを中心とした実行ウィンドウとして定義されることができ、および全てのロケーションからの値を合計することによる平均値が使用される。具体的には、
【数20】
であり、ここで、Nは、各サブブロック中のピクセルの数であり、およびΩ
kは、各ピクセルについて定義されるウィンドウである。一例では、Ω
kは、各ピクセルについての現在のBIO設計中に定義される5×5ウィンドウであることができ、および故に、重み付け関数は、前もって決定されることができる。5×5ウィンドウを有する4×4サブブロックに対して使用される重み付け関数の例が、
図13に示されている。
図13は、5×5ウィンドウを有する4×4サブブロックについての重み付け関数の例を示している。
【0105】
[0122]別の例では、重み付け関数は、SPS、PPS、またはスライスヘッダ中で送られることができる。シグナリングコストを低減するために、予め定義された重み付け関数のセットが、記憶されることができ、および重み付け関数のインデックスのみが、シグナリングされる必要がある。
【0106】
[0123]別の例では、精緻化された(refined)動きベクトルは、サブブロックの中心部分にあるピクセルを使用して見出されることができる。式(7)中の変数s1~s6を算出するために、中心ピクセルの勾配(gradient)値が、補間フィルタを使用して算出され、サイズM×Nのウィンドウが、補間されたピクセルに適用されることができ、中心ピクセルへの異なる重みを提供する。一例では、中心点の勾配値が、算出されることができ、中心点の平均値が、使用されることができる(等しい重みのウィンドウ)。別の例では、式(7)中の変数s1~s6を算出するために、中央値フィルタ(median filter)が、代表的なピクセルを選択するために使用されることができる。
【0107】
[0124]JVET-D0042では、(1つまたは複数の)BIOオフセットについて解くとき、各ピクセルについてのウィンドウサイズは、現在ブロック全体になるように修正され得、それは、現在ブロックが8×4以上であるときに、現在の設計に計算の複雑性を潜在的に追加する。修正の最悪のケースは、128×128ウィンドウが128×128ブロック内の各ピクセルについての勾配および予測子の蓄積(accumulation)のために使用されることである。
【0108】
[0125]その上、1つのCU内のサブブロックが同じMVを共有するか、または1つのインターコーディングされたCUが動き補償(MC)のためにより小さいサブブロックへと分割されるとき、JEM-4.0は、平行して各サブブロックについてMCおよびBIOを遂行するか、または一度の取り組みで(in one-time effort)同じMVを有するサブブロックのアグリゲートされたより大きいブロックについてMCおよびBIOを遂行するかのいずれかのために、柔軟性を提供する。いずれの方法でも、JEM-4.0は、同一のコーディング結果を提供する。しかしながら、JVET-D0042中の修正されたBIOは、一緒にまたは別個に2つの隣接する同じ動きブロックについてMCおよびBIOを遂行することが異なる結果をもたらし得るような、ブロックサイズ依存勾配算出および重み付け係数を利用する。異なる結果を避けるために、復号器はブロックレベルまたはある特定のサブブロックレベルのいずれかでMCおよびBIOを遂行すべきであることが指定されなければならない。そのような制約は、厳し過ぎ得、および実際的なコーデックインプリメンテーションには望ましくないことがあり得る
【0109】
[0126]式(4)に基づいて、BIOの複雑性は、ウィンドウΩを再定義することによってさらに低減され得る。ウィンドウΩの2つのタイプが定義される;1つは、オーバーラップしていないウィンドウであり、および他の1つは、スライディングウィンドウである。オーバーラップしていないウィンドウのタイプの場合、現在のブロックは、オーバーラップしていないサブブロックへと分割され、およびウィンドウΩは、
図11に示されているような、現在のピクセルをカバーするサブブロックとして定義される。スライディングウィンドウのタイプの場合、ウィンドウΩは、
図7に示されているような、現在のピクセルを中心としたブロックとして定義される。
【0110】
[0127]ウィンドウΩの両方のタイプについて、ウィンドウΩのサイズは、以下に例示されているような異なる方法を使用して決定されることができる。これ以降、ウィンドウΩはサイズM×Nを有する矩形ブロックであると想定され得、ここで、MおよびNは、(4×4、8×8、16×16、8×4、等)のような任意の非負の整数であることができる。ウィンドウΩは、矩形形状に限定されず、および菱形(diamond)形状のような任意の他の形状であることができる。説明される技法はまた、適用可能である場合、矩形形状以外の形状に適用されることができる。
【0111】
[0128]ウィンドウのサイズは、固定または可変であり得、および予め定められているか、またはビットストリーム中でシグナリングされるかのいずれかであり得る。サイズがシグナリングされるとき、サイズは、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、スライスヘッダ中で、またはCTUレベルでシグナリングされ得る。ウィンドウサイズは、以下の式による動き補償(MC)ブロックのサイズによって一緒に決定されることができる。
水平ウィンドウサイズM=min(M,MC_Size);
垂直ウィンドウサイズM=min(N,MC_Size)。
【0112】
[0129]一例では、動き補償(MC)ブロックは、現在のブロックのサイズおよびコーディングモードのようなコーディング情報に純粋に依存している。例えば、動き補償(MC)ブロックは、現在のCUがサブCUマージ、アフィンおよびFRUCモードのような非サブブロックモードでコーディングされるときに、CU全体として設定される。動き補償(MC)ブロックは、サブブロックが同じ動き情報を有するかどうかにかかわらず、サブCUマージ、アフィンおよびFRUCモードのようなサブブロックモードが使用されるときに、サブブロックとして設定される。
【0113】
[0130]別の例では、動き補償(MC)ブロックは、同じMVを有するCU内のサンプルのブロックとして定義される。このケースでは、動き補償(MC)ブロックは、現在のCUがサブCUマージ、アフィンおよびFRUCモードのような非サブブロックモードでコーディングされるときに、CU全体として設定される。CUがサブCUマージ、アフィンおよびFRUCモードのようなサブブロックモードでコーディングされるとき、同じ動き情報を有するサブブロックは、サブブロックのある特定の走査順序で動き補償(MC)ブロックとしてマージされる。
【0114】
[0131]適応的サイズ:ウィンドウΩのサイズは、現在のブロックのサイズ、コーディングモードのようなコーディング情報にしたがって適応的である。一例では、ウィンドウΩは、現在のブロックがサブCUマージ、アフィンおよびFRUCモードのような非サブブロックモードとしてコーディングされるときに、現在のブロック全体または現在のブロックの4分の1として設定される;およびウィンドウΩは、現在のブロックがサブブロックモードでコーディングされるときに、サブブロックとして設定される。適応的ウィンドウサイズは、以下の式による動き補償(MC)ブロックのサイズによって一緒に決定されることができる。
水平ウィンドウサイズM=min(M,MC_Size);
垂直ウィンドウサイズM=min(N,MC_Size)。
【0115】
[0132]ウィンドウΩのサイズを決定するための様々な技法について、サイズの高レベル限定が、フレンドリーなハードウェアまたはソフトウェアインプリメンテーションのために含まれることができる。例えば、ウィンドウサイズは、ビデオコーデックシステム中で許容される最大変形ユニット(TU)サイズ以下であるべきである。別の例では、ウィンドウサイズは、4×4のような最小MCブロック以上であるべきである。
【0116】
[0133]BIO関連動作をさらに簡略化するために、この開示は、全ての動き補償予測が終了した後の後処理としてBIOを実行するための技法を紹介する。具体的に言えば、従来のMCが終わった後に、OBMCがその後、現在のブロックについてのより良い予測子を生成するために適用されることができる。最終予測子に基づいて、BIOがその後、予測子をさらに精微化するために、現在のブロックの動き情報を使用して適用される。例えば、BIOにおける勾配算出のために、ブロック全体の動きが使用され得る。別の例では、各サブブロックについて、OBMCからの平均動きベクトルが使用されることができる。別の例では、各サブブロックについて、(個々に各次元についての)中央値動きベクトルが使用されることができる。
【0117】
[0134]重み付け関数は、BIOの動きベクトル精緻化のブロックベースの導出を考慮すると、異なって設計されることができる。等しい重みは、上述された方法のうちのいずれに対しても使用されることができる。代替として、より多くの重みが、ウィンドウの中心部分に向かって配置されることができる。一例では、重みは、ウィンドウの中心からピクセルまでの間の(L1-normまたはL2-normを含むが、それらに限定されない)逆距離によって算出されることができる。
【0118】
[0135]
図14は、双方向オプティカルフローについての技法をインプリメントし得るビデオ符号化器20の例を例示するブロック図である。ビデオ符号化器20は、ビデオスライス内のビデオブロックのイントラおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間的冗長性を低減または取り除くために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオにおける時間的冗長性を低減または取り除くために時間的予測に依拠する。イントラ(I)モードは、いくつかの空間ベースのコーディングモードのうちの任意のものを指し得る。単方向予測(Pモード)または双予測(Bモード)のようなインターモードは、いくつかの時間ベースのコーディングモードのうちの任意のものを指し得る。
【0119】
[0136]
図14に示されているように、ビデオ符号化器20は、ビデオデータを受信し、およびビデオデータメモリ38中に受信されたビデオデータを記憶する。ビデオデータメモリ38は、ビデオ符号化器20のコンポーネントによって符号化されることになるビデオデータを記憶し得る。ビデオデータメモリ38中に記憶されるビデオデータは、例えば、ビデオソース18から取得され得る。参照ピクチャメモリ64は、例えば、イントラまたはインターコーディングモードで、ビデオ符号化器20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ38および参照ピクチャメモリ64は、同期動的ランダムアクセスメモリ(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含むDRAMのような、多様なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ38および参照ピクチャメモリ64は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ38は、ビデオ符号化器20の他のコンポーネントとともにオンチップであり得るか、またはそれらのコンポーネントに対してオフチップであり得る。
【0120】
[0137]ビデオ符号化器20は、符号化されることになるビデオフレーム内の現在のビデオブロックを受信する。
図14の例では、ビデオ符号化器20は、モード選択ユニット40、(復号ピクチャバッファ(DPB)とも呼ばれ得る)参照ピクチャメモリ64、加算器50、変換処理ユニット52、量子化ユニット54、およびエントロピー符号化ユニット56を含む。モード選択ユニット40は次に、動き補償ユニット44、動き推定ユニット42、イントラ予測処理ユニット46、および区分化ユニット48を含む。ビデオブロック再構築のために、ビデオ符号化器20はまた、逆量子化ユニット58、逆変換処理ユニット60、および加算器62を含む。デブロッキングフィルタ(deblocking filter)(
図14には図示せず)もまた、再構築されたビデオからブロッキネスアーティファクト(blockiness artifact)を取り除くようにブロック境界をフィルタリングするために含まれ得る。所望される場合、デブロッキングフィルタは典型的に、加算器62の出力をフィルタリングするであろう。追加のフィルタ(インループまたはポストループ)もまた、デブロッキングフィルタに加えて使用され得る。そのようなフィルタは簡潔さのために示されていないが、所望される場合、(インループフィルタとして)加算器50の出力をフィルタリングし得る。
【0121】
[0138]符号化プロセス中に、ビデオ符号化器20は、コーディングされることになるビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックへと分割され得る。動き推定ユニット42および動き補償ユニット44は、時間的予測を提供するために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して、受信されたビデオブロックのインター予測符号化を実行する。イントラ予測処理ユニット46は代替として、空間的予測を提供するために、コーディングされることになるブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックのピクセルを使用して、受信されたビデオブロックをイントラ予測し得る。ビデオ符号化器20は、例えば、ビデオデータの各ブロックについて適切なコーディングモードを選択するために、複数のコーディングパスを遂行し得る。
【0122】
[0139]その上、区分化ユニット48は、以前のコーディングパスにおける以前の区分化スキームの評価に基づいて、ビデオデータのブロックをサブブロックへと区分化し得る。例えば、区分化ユニット48は、レート-歪み分析(例えば、レート-歪み最適化)に基づいて、最初にフレームまたはスライスをLCUへと区分化し、およびLCUの各々をサブCUへと区分化し得る。モード選択ユニット40はさらに、LCUのサブCUへの区分化を示す四分木データ構造を作り出し得る。四分木のリーフノードCUは、1つまたは複数のPUおよび1つまたは複数のTUを含み得る。
【0123】
[0140]モード選択ユニット40は、例えば、誤差結果に基づいて、予測モードのうちの1つ、イントラまたはインターを選択し得、および残差データを生成するための加算器50に、および参照フレームとして使用するための符号化されたブロックを再構築するための加算器62に、結果として生じる予測されたブロックを提供する。モード選択ユニット40はまた、エントロピー符号化ユニット56に、動きベクトル、イントラモードインジケータ、区分化情報、および他のそのようなシンタックス情報のようなシンタックス要素を提供する。
【0124】
[0141]動き推定ユニット42および動き補償ユニット44は、高度に統合され得るが、概念的な目的のために別個に例示されている。動き推定ユニット42によって実行される動き推定は、動きベクトルを生成するプロセスであり、それは、ビデオブロックについての動きを推定する。動きベクトルは、例えば、現在のフレーム(または他のコーディングされたユニット)内でコーディングされている現在ブロックに対する参照フレーム(または他のコーディングされたユニット)内の予測ブロックに対する、現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、ピクセル差分の観点から、コーディングされることになるブロックに密接にマッチすることを見出されるブロックであり、それは、絶対差分の和(SAD:sum of absolute difference)、2乗差分の和(SSD:sum of square difference)、または他の差分メトリックによって決定され得る。いくつかの例では、ビデオ符号化器20は、参照ピクチャメモリ64中に記憶された参照ピクチャのサブ整数ピクセル位置についての値を算出し得る。例えば、ビデオ符号化器20は、参照ピクチャの4分の1ピクセル位置、8分の1ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、全ピクセル位置および分数ピクセル位置に対して動き探索を遂行し、および分数ピクセル精度で動きベクトルを出力し得る。
【0125】
[0142]動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされたスライス中のビデオブロックのPUについての動きベクトルを算出する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの各々は、参照ピクチャメモリ64中に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、エントロピー符号化ユニット56および動き補償ユニット44に算出された動きベクトルを送る。
【0126】
[0143]動き補償ユニット44によって遂行される動き補償は、動き推定ユニット42によって決定される動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。繰り返すが、いくつかの例では、動き推定ユニット42および動き補償ユニット44は機能的に統合され得る。現在のビデオブロックのPUについての動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリストのうちの1つ中に、動きベクトルが指し示す予測ブロックをロケートし得る。加算器50は、以下に論述されるように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。一般に、動き推定ユニット42は、ルーマ成分に対して動き推定を実行し、および動き補償ユニット44は、クロマ成分とルーマ成分との両方について、ルーマ成分に基づいて算出された動きベクトルを使用する。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際に、ビデオ復号器30によって使用するための、ビデオブロックおよびビデオスライスに関連付けられたシンタックス要素を生成し得る。
【0127】
[0144]さらに、動き補償ユニット44は、この開示の技法のうちの任意のものまたは全てを(単独または任意の組み合わせで)実行するように構成され得る。動き補償ユニット44に関して論述されたが、モード選択ユニット40、動き推定ユニット42、区分化ユニット48、および/またはエントロピー符号化ユニット56もまた、単独または動き補償ユニット44との組み合わせで、この開示のある特定の技法を遂行するように構成され得ることが理解されるべきである。一例では、動き補償ユニット44は、ここに論述されたBIO技法を実行するように構成され得る。
【0128】
[0145]イントラ予測処理ユニット46は、上述されたように、動き推定ユニット42および動き補償ユニット44によって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測処理ユニット46は、現在のブロックを符号化するために使用するためのイントラ予測モードを決定し得る。いくつかの例では、イントラ予測処理ユニット46は、例えば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、およびイントラ予測処理ユニット46(または、いくつかの例ではモード選択ユニット40)は、テストされたモードから使用するための適切なイントラ予測モードを選択し得る。
【0129】
[0146]例えば、イントラ予測処理ユニット46は、様々なテストされたイントラ予測モードについてのレート-歪み分析を使用してレート-歪み値を算出し、およびテストされたモードの中で最良のレート-歪み特性を有するイントラ予測モードを選択し得る。レート-歪み分析は概して、符号化されたブロックと、符号化されたブロックを作り出すために符号化された元の符号化されていないブロックとの間の歪み(または誤差)の量、ならびに符号化されたブロックを作り出すために使用されたビットレート(すなわち、ビットの数)を決定する。イントラ予測処理ユニット46は、どのイントラ予測モードがブロックについての最良のレート-歪み値を示すかを決定するために、様々な符号化されたブロックについての歪みおよびレートからの比を算出し得る。
【0130】
[0147]ブロックについてイントラ予測モードを選択した後に、イントラ予測処理ユニット46は、エントロピー符号化ユニット56にブロックについて選択されたイントラ予測モードを示す情報を提供し得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオ符号化器20は、様々なブロックについての符号化コンテキストの定義、およびそれらコンテキストの各々に対して使用するための最確(most probable)イントラ予測モード、イントラ予測モードインデックス表、および修正されたイントラ予測モードインデックス表のインジケーションを、送信されるビットストリーム構成データ中に含め得、それは、複数のイントラ予測モードインデックス表および複数の修正されたイントラ予測モードインデックス表(コードワードマッピング表とも呼ばれる)を含み得る。
【0131】
[0148]ビデオ符号化器20は、コード化されている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数のコンポーネントを表す。変換処理ユニット52は、残差ブロックに離散コサイン変換(DCT)または概念的に同様の変換のような変換を適用し、変換係数値を備えるビデオブロックを作り出す。ウェーブレット変換、整数変換、サブバンド変換、離散サイン変換(DST)、または他のタイプの変換が、DCTの代わりに使用されることができる。いずれのケースでも、変換処理ユニット52は、残差ブロックに変換を適用し、変換係数のブロックを作り出す。変換は、ピクセルドメインから周波数ドメインのような変換ドメインに残差情報をコンバートし得る。変換処理ユニット52は、量子化ユニット54に結果として生じる変換係数を送り得る。量子化ユニット54は、ビットレートをさらに低減するために、変換係数を量子化する。量子化プロセスは、係数のうちのいくつかまたは全てに関連付けられたビット深度を低減し得る。量子化の程度は、量子化パラメータを調節することによって修正され得る。
【0132】
[0149]量子化に続いて、エントロピー符号化ユニット56は、量子化された変換係数をエントロピーコーディングする。例えば、エントロピー符号化ユニット56は、コンテキスト適応可変長コーディング(CAVLC:context adaptive variable length coding)、コンテキスト適応バイナリ算術コーディング(CABAC:context adaptive binary arithmetic coding)、シンタックスベースのコンテキスト適応バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分化エントロピー(PIPE:probability interval partitioning entropy)コーディング、または別のエントロピーコーディング技法を実行し得る。コンテキストベースのエントロピーコーディングのケースでは、コンテキストは隣接ブロックに基づき得る。エントロピー符号化ユニット56によるエントロピーコーディングに続いて、符号化されたビットストリームは、別のデバイス(例えば、ビデオ復号器30)に送信され得るか、または後の送信または取り出しのためにアーカイブされ得る。
【0133】
[0150]逆量子化ユニット58および逆変換処理ユニット60は、ピクセルドメイン中の残差ブロックを再構築するために、それぞれ逆量子化および逆変換を適用する。特に、加算器62は、参照ピクチャメモリ64中での記憶のための再構築されたビデオブロックを作り出すために、動き補償ユニット44またはイントラ予測処理ユニット46によって先に作り出された動き補償予測ブロックに再構築された残差ブロックを追加する。再構築されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために、参照ブロックとして動き推定ユニット42および動き補償ユニット44によって使用され得る。
【0134】
[0151]
図15は、双方向オプティカルフローについての技法をインプリメントし得るビデオ復号器30の例を例示するブロック図である。
図15の例では、ビデオ復号器30は、エントロピー復号ユニット70、動き補償ユニット72、イントラ予測処理ユニット74、逆量子化ユニット76、逆変換処理ユニット78、参照ピクチャメモリ82および加算器80を含む。ビデオ復号器30は、いくつかの例では、ビデオ符号化器20(
図14)に関して説明された符号化パスと概して相反する復号パスを遂行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成し得、その一方で、イントラ予測処理ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて予測データを生成し得る。
【0135】
[0152]復号プロセス中に、ビデオ復号器30は、ビデオ符号化器20から符号化されたビデオスライスのビデオブロックと関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。ビデオ復号器30は、ビデオデータメモリ68中に、受信された符号化されたビデオビットストリームを記憶する。ビデオデータメモリ68は、ビデオ復号器30のコンポーネントによって復号されることになる、符号化されたビデオビットストリームのようなビデオデータを記憶し得る。ビデオデータメモリ68中に記憶されるビデオデータは、例えば、コンピュータ可読媒体16を介して、記憶媒体から、またはカメラのようなローカルビデオソースから、あるいは物理的データ記憶媒体にアクセスすることによって、取得され得る。ビデオデータメモリ85は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコーディングピクチャバッファ(CPB:a coded picture buffer)を形成し得る。参照ピクチャメモリ82は、例えば、イントラまたはインターコーディングモードで、ビデオ復号器30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ68および参照ピクチャメモリ82は、DRAM、SDRAM、MRAM、RRAM、または他のタイプのメモリデバイスのような多様なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ68および参照ピクチャメモリ82は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ68は、ビデオ復号器30の他のコンポーネントとともにオンチップであり得るか、またはそれらのコンポーネントに対してオフチップであり得る。
【0136】
[0153]復号プロセス中に、ビデオ復号器30は、ビデオ符号化器20から符号化されたビデオスライスのビデオブロックと関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。ビデオ復号器30のエントロピー復号ユニット70は、量子化された係数、動きベクトルまたはイントラ予測モードインジケータ、および他のシンタックス要素を生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動き補償ユニット72に動きベクトルおよび他のシンタックス要素を転送する。ビデオ復号器30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
【0137】
[0154]ビデオスライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、イントラ予測処理ユニット74は、現在のフレームまたはピクチャの以前に復号されたブロックからのデータおよびシグナリングされたイントラ予測モードに基づいて、現在のビデオスライスのビデオブロックについての予測データを生成し得る。ビデオフレームがインターコーディングされた(すなわち、B、PまたはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックについての予測ブロックを作り出す。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから作り出され得る。ビデオ復号器30は、参照ピクチャメモリ82中に記憶された参照ピクチャに基づいて、デフォルト構築技法を使用して参照フレームリスト、リスト0およびリスト1、を構築し得る。
【0138】
[0155]動き補償ユニット72は、動きベクトルおよび他のシンタックス要素を構文解析(parsing)することによって現在のビデオスライスのビデオブロックについての予測情報を決定し、および復号されている現在のビデオブロックについての予測ブロックを作り出すために予測情報を使用する。例えば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(例えば、イントラまたはインター予測)と、インター予測スライスタイプ(例えば、Bスライス、Pスライス、またはGPBスライス)と、スライスについての参照ピクチャリストのうちの1つまたは複数についての構築情報と、スライスの各インター符号化されたビデオブロックについての動きベクトルと、スライスの各インターコーディングされたビデオブロックについてのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報と、を決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
【0139】
[0156]動き補償ユニット72はまた、サブピクセル精度のために補間フィルタに基づいて補間を遂行し得る。動き補償ユニット72は、参照ブロックのサブ整数ピクセルについての補間された値を算出するために、ビデオブロックの符号化中にビデオ符号化器20によって使用されるような補間フィルタを使用し得る。このケースでは、動き補償ユニット72は、受信されたシンタックス要素からビデオ符号化器20によって使用される補間フィルタを決定し、および予測ブロックを作り出すために補間フィルタを使用し得る。
【0140】
[0157]さらに、動き補償ユニット72は、(単独または任意の組み合わせで)この開示の技法のうちの任意のものまたは全てを実行するように構成され得る。例えば、動き補償ユニット72は、ここに論述されたBIO技法を実行するように構成され得る。
【0141】
[0158]逆量子化ユニット76は、ビットストリーム中で提供され、且つエントロピー復号ユニット70によって復号された量子化された変換係数を逆量子化(inverse quantizes)、すなわち、逆量子化(dequantizes)する。逆量子化プロセスは、量子化の程度、および同じように、適用されるべき逆量子化の程度を決定するために、ビデオスライス中の各ビデオブロックについてビデオ復号器30によって算出される量子化パラメータQPYの使用を含み得る。
【0142】
[0159]逆変換処理ユニット78は、ピクセルドメイン中に残差ブロックを作り出すために、変換係数に逆変換、例えば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを適用する。
【0143】
[0160]動き補償ユニット72が動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックについての予測ブロックを生成した後に、ビデオ復号器30は、逆変換処理ユニット78からの残差ブロックを、動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数のコンポーネントを表す。所望される場合、デブロッキングフィルタもまた、ブロッキネスアーティファクトを取り除くために復号されたブロックをフィルタするように適用され得る。(コーディングループ中またはコーディングループ後のいずれかの)他のループフィルタもまた、ピクセル遷移を平滑化にするために、またはそうでない場合はビデオ品質を改善するために使用され得る。所与のフレームまたはピクチャ中の復号されたビデオブロックはその後、参照ピクチャメモリ82中に記憶され、それは、後続する動き補償のために使用される参照ピクチャを記憶する。参照ピクチャメモリ82はまた、
図1のディスプレイデバイス32のようなディスプレイデバイス上での後の提示のために、復号されたビデオを記憶する。例えば、参照ピクチャメモリ82は、復号されたピクチャを記憶し得る。
【0144】
[0161]
図16は、この開示の技法にしたがって、ビデオデータを復号するためのビデオ復号器の実例的な動作を例示するフローチャートである。
図16に関して説明されるビデオ復号器は、例えば、表示可能な復号されたビデオを出力するための、ビデオ復号器30のようなビデオ復号器であり得るか、またはビデオ符号化器20の復号ループのような、ビデオ符号化器にインプリメントされたビデオ復号器であり得、それは、逆量子化ユニット58、逆変換処理ユニット60、加算器62、および参照ピクチャメモリ64、ならびにモード選択ユニット40の一部分を含む。
【0145】
[0162]
図16の技法にしたがって、ビデオ復号器は、ビデオデータのブロックが双方向インター予測モードを使用して符号化されていると決定する(200)。ビデオ復号器は、第1の参照ピクチャを指し示すブロックについての第1の動きベクトルを決定する(202)。ビデオ復号器は、第2の参照ピクチャを指し示すブロックについての第2のMVを決定し、ここで、第1の参照ピクチャは、第2の参照ピクチャとは異なる(204)。ビデオ復号器は、第1の参照ピクチャ中に第1の予測ブロックをロケートするために第1のMVを使用する(206)。ビデオ復号器は、第2の参照ピクチャ中に第2の予測ブロックをロケートするために第2のMVを使用する(208)。
【0146】
[0163]ビデオ復号器は、第1の予測ブロックの第1のサブブロックについて、第1のBIO動き量を決定する(210)。第1のサブブロックは、ブロックについてのコーディングユニット、予測ユニット、および変換ユニットとは異なり得る。第1のBIO動き量を決定するために、ビデオ復号器は、いくつかの例では、第1のサブブロック中のサンプルおよび第1のサブブロック外のサンプルに基づいて第1のBIO動き量を決定し、および他の例では、第1のサブブロック中のサンプルのみに基づいて第1のBIO動き量を決定し得る。第1のBIO動き量は、例えば、水平成分および垂直成分を含む動きベクトルフィールドを含み得る。
【0147】
[0164]ビデオ復号器は、第1の予測ブロックの第1のサブブロック、第2の予測ブロックの第1のサブブロック、および第1のBIO動き量に基づいて、ビデオデータのブロックについての第1の最終予測サブブロックを決定する(212)。第1の予測ブロックの第1のサブブロック、第2の予測ブロックの第1のサブブロック、および第1のBIO動き量に基づいて、ビデオデータのブロックについての第1の最終予測サブブロックを決定するために、ビデオ復号器は、例えば、上記の式(2)を使用して第1の最終予測サブブロックを決定し得る。
【0148】
[0165]ビデオ復号器は、第1の予測ブロックの第2のサブブロックについて、第2のBIO動き量を決定する(214)。第2のサブブロックは、ブロックについてのコーディングユニット、予測ユニット、および変換ユニットとは異なり得る。第2のBIO動き量を決定するために、ビデオ復号器は、いくつかの例では、第2のサブブロック中のサンプルおよび第2のサブブロック外のサンプルに基づいて第2のBIO動き量を決定し、および他の例では、第2のサブブロック中のサンプルのみに基づいて第2のBIO動き量を決定し得る。第2のBIO動き量は、例えば、水平成分および垂直成分を含む動きベクトルフィールドを含み得る。
【0149】
[0166]ビデオ復号器は、第1の予測ブロックの第2のサブブロック、第2の予測ブロックの第2のサブブロック、および第2のBIO動き量に基づいて、ビデオデータのブロックについての第2の最終予測サブブロックを決定する(216)。第1の予測ブロックの第2のサブブロック、第2の予測ブロックの第2のサブブロック、および第2のBIO動き量に基づいて、ビデオデータのブロックについての第2の最終予測サブブロックを決定するために、ビデオ復号器は、例えば、式(2)を使用して、例えば、第2の最終予測サブブロックを決定し得る。
【0150】
[0167]ビデオ復号器は、第1の最終予測サブブロックおよび第2の最終予測サブブロックに基づいて、ビデオデータのブロックについての最終予測ブロックを決定する(218)。ビデオ復号器は、例えば、ビデオデータのブロックについての再構築されたブロックを決定するために、最終予測ブロックに残差データを追加し得る。ビデオ復号器はまた、ビデオデータの再構築されたブロックに対して1つまたは複数のフィルタリングプロセスを実行し得る。
【0151】
[0168]ビデオ復号器は、ビデオデータのブロックの復号されたバージョンを備えるビデオデータのピクチャを出力する(220)。復号がビデオ符号化プロセスの復号ループの一部として実行されると、ビデオ復号器は、例えば、参照ピクチャメモリ中にピクチャを記憶することによってピクチャを出力し得、およびビデオ復号器は、ビデオデータの別のピクチャを符号化する際に参照ピクチャとしてピクチャを使用し得る。ビデオ復号器が表示可能な復号されたビデオを出力するように構成されたビデオ復号器であるとき、そのビデオ復号器は、例えば、ディスプレイデバイスにビデオデータのピクチャを出力し得る。
【0152】
[0169]例に依存して、ここに説明されたあらゆる技法のある特定の動作(acts)またはイベントは、異なるシーケンスで遂行されることができ、追加、統合、または完全に省略され得る(例えば、全ての説明された動作またはイベントが、それら技法の実施のために必要なわけではない)ことが認識されるべきである。その上、ある特定の例では、動作またはイベントは、順次にというよりはむしろ、例えば、マルチスレッド処理、割り込み処理、または複数のプロセッサを通じて、同時に遂行され得る。
【0153】
[0170]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせにおいてインプリメントされ得る。ソフトウェアにおいてインプリメントされる場合、それら機能は、コンピュータ可読媒体上で1つまたは複数の命令またはコードとして記憶あるいは送信され、およびハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、例えば、通信プロトコルにしたがって、コンピュータプログラムのある場所から別の場所への転送を容易にする任意の媒体を含む通信媒体、またはコンピュータ可読記憶媒体を含み得、それは、データ記憶媒体のような有形媒体に対応する。このように、コンピュータ可読媒体は概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波のような通信媒体に対応し得る。データ記憶媒体は、この開示中に説明された技法のインプリメンテーションのための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされることができる任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0154】
[0171]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶デバイス、フラッシュメモリ、あるいはデータ構造もしくは命令の形態で所望されるプログラムコードを記憶するために使用されることができ、且つコンピュータによってアクセスされることができる任意の他の媒体を備えることができる。また、任意の接続は、厳密にはコンピュータ可読媒体と称される。例えば、命令が、ウェブサイト、サーバ、あるいは同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波のようなワイヤレス技術を使用する他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波のようなワイヤレス技術は、媒体の定義中に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的、有形記憶媒体を対象にすることが理解されるべきである。ディスク(disk)およびディスク(disc)は、ここに使用される場合、コンパクトディスク(CD)(disc)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(DVD)(disc)、フロッピー(登録商標)ディスク(disk)およびBlu-rayディスク(disc)を含み、ここで、ディスク(disk)は通常、磁気的にデータを再生し、その一方でディスク(disc)は、レーザーを用いて光学的にデータを再生する。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【0155】
[0172]命令は、1つまたは複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA、あるいは他の同等な集積またはディスクリートロジック回路のような1つまたは複数のプロセッサによって実行され得る。それ故に、「プロセッサ」という用語は、ここに使用される場合、前述の構造またはここに説明された技法のインプリメンテーションに適したあらゆる他の構造のうちの任意のものを指し得る。加えて、いくつかの態様では、ここに説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内で提供され得るか、あるいは組み合わされたコーデック中に組み込まれ得る。また、それら技法は、1つまたは複数の回路またはロジック要素において十分にインプリメントされることができる。
【0156】
[0173]この開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、幅広い多様なデバイスまたは装置においてインプリメントされ得る。様々なコンポーネント、モジュール、またはユニットは、開示された技法を遂行するように構成されたデバイスの機能的な態様を強調するためにこの開示中に説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上述されたように、様々なユニットは、コーデックハードウェアユニット中で組み合わされ得るか、あるいは、適したソフトウェアおよび/またはファームウェアと併せて、上述されたような1つまたは複数のプロセッサを含む、相互運用ハードウェアユニットの集合によって提供され得る。
【0157】
[0174]様々な例が説明されてきた。これらおよび他の例は、次の特許請求の範囲内にある。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1] ビデオデータを復号する方法であって、前記方法は、
ビデオデータのブロックが双方向インター予測モードを使用して符号化されていると決定することと、
前記ブロックについての第1の動きベクトル(MV)を決定することと、ここにおいて、前記第1のMVは、第1の参照ピクチャを指し示す、
前記ブロックについての第2のMVを決定することと、ここにおいて、前記第2のMVは、第2の参照ピクチャを指し示し、前記第1の参照ピクチャは、前記第2の参照ピクチャとは異なる、
前記第1のMVを使用して、前記第1の参照ピクチャ中に第1の予測ブロックをロケートすることと、
前記第2のMVを使用して、前記第2の参照ピクチャ中に第2の予測ブロックをロケートすることと、
前記第1の予測ブロックの第1のサブブロックについて、第1の双方向オプティカルフロー(BIO)動き量を決定することと、
前記第1の予測ブロックの前記第1のサブブロック、前記第2の予測ブロックの第1のサブブロック、および前記第1のBIO動き量に基づいて、ビデオデータの前記ブロックについての第1の最終予測サブブロックを決定することと、
前記第1の予測ブロックの第2のサブブロックについて、第2のBIO動き量を決定することと、
前記第1の予測ブロックの前記第2のサブブロック、前記第2の予測ブロックの第2のサブブロック、および前記第2のBIO動き量に基づいて、ビデオデータの前記ブロックについての第2の最終予測サブブロックを決定することと、
前記第1の最終予測サブブロックおよび前記第2の最終予測サブブロックに基づいて、ビデオデータの前記ブロックについての最終予測ブロックを決定することと、
ビデオデータの前記ブロックの復号されたバージョンを備えるビデオデータのピクチャを出力することと、
を備える、方法。
[C2] 前記第1のBIO動き量を決定することは、前記第1のサブブロック中のサンプルおよび前記第1のサブブロック外のサンプルに基づいて前記第1のBIO動き量を決定することを備える、C1に記載の方法。
[C3] 前記第1のBIO動き量を決定することは、前記第1のサブブロック中のサンプルのみに基づいて前記第1のBIO動き量を決定することを備える、C1に記載の方法。
[C4] 前記第2のBIO動き量を決定することは、前記第2のサブブロック中のサンプルおよび前記第2のサブブロック外のサンプルに基づいて前記第2のBIO動き量を決定することを備える、C1に記載の方法。
[C5] 前記第2のBIO動き量を決定することは、前記第2のサブブロック中のサンプルのみに基づいて前記第2のBIO動き量を決定することを備える、C1に記載の方法。
[C6] 前記第1のBIO動き量は、水平成分および垂直成分を備える動きベクトルフィールドを備える、C1に記載の方法。
[C7] 前記第1のサブブロックは、前記ブロックについてのコーディングユニット、予測ユニット、および変換ユニットとは異なる、C1に記載の方法。
[C8] ビデオデータの前記ブロックについての再構築されたブロックを決定するために、前記最終予測ブロックに残差データを追加すること、
をさらに備える、C1に記載の方法。
[C9] 前記第1の予測ブロックの前記第1のサブブロック、前記第2の予測ブロックの前記第1のサブブロック、および前記第1のBIO動き量に基づいて、ビデオデータの前記ブロックについての前記第1の最終予測サブブロックを決定することは、以下の式にしたがって前記第1の最終予測サブブロックを決定することを備え、
pred
BIO
=1/2・(I
(0)
+I
(1)
+v
x
・(τ
1
∂I
(1)
/∂x-τ
0
∂I
(0)
/∂x)+v
y
・(τ
1
∂I
(1)
/∂y-τ
0
∂I
(0)
/∂y))
ここにおいて、
pred
BIO
は、前記第1の最終予測サブブロックのサンプル値を備え、
I
(0)
は、前記第1の予測ブロックの前記第1のサブブロックのサンプル値を備え、 I
(1)
は、前記第2の予測ブロックの前記第1のサブブロックのサンプル値を備え、 v
x
は、前記第1のBIO動き量の水平成分を備え、
v
y
は、前記第1のBIO動き量の垂直成分を備え、
τ
0
は、前記第1の参照ピクチャまでの距離を備え、
τ
1
は、前記第2の参照ピクチャまでの距離を備える、C1に記載の方法。
[C10] 前記復号の方法は、ビデオ符号化プロセスの復号ループの一部として実行され、およびビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを出力することは、参照ピクチャメモリ中にビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを記憶することを備え、前記方法は、
前記ビデオデータの別のピクチャを符号化する際に参照ピクチャとしてビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを使用すること、
をさらに備える、C1に記載の方法。
[C11] ビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを出力することは、ディスプレイデバイスにビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを出力することを備える、C1に記載の方法。
[C12] ビデオデータを復号するためのデバイスであって、前記デバイスは、
ビデオデータを記憶するように構成されたメモリと、
1つまたは複数のプロセッサと、を備え、前記1つまたは複数のプロセッサは、
ビデオデータのブロックが双方向インター予測モードを使用して符号化されていると決定することと、
前記ブロックについての第1の動きベクトル(MV)を決定することと、ここにおいて、前記第1のMVは、第1の参照ピクチャを指し示す、
前記ブロックについての第2のMVを決定することと、ここにおいて、前記第2のMVは、第2の参照ピクチャを指し示し、前記第1の参照ピクチャは、前記第2の参照ピクチャとは異なる、
前記第1のMVを使用して、前記第1の参照ピクチャ中に第1の予測ブロックをロケートすることと、
前記第2のMVを使用して、前記第2の参照ピクチャ中に第2の予測ブロックをロケートすることと、
前記第1の予測ブロックの第1のサブブロックについて、第1の双方向オプティカルフロー(BIO)動き量を決定することと、
前記第1の予測ブロックの前記第1のサブブロック、前記第2の予測ブロックの第1のサブブロック、および前記第1のBIO動き量に基づいて、ビデオデータの前記ブロックについての第1の最終予測サブブロックを決定することと、
前記第1の予測ブロックの第2のサブブロックについて、第2のBIO動き量を決定することと、
前記第1の予測ブロックの前記第2のサブブロック、前記第2の予測ブロックの第2のサブブロック、および前記第2のBIO動き量に基づいて、ビデオデータの前記ブロックについての第2の最終予測サブブロックを決定することと、
前記第1の最終予測サブブロックおよび前記第2の最終予測サブブロックに基づいて、ビデオデータの前記ブロックについての最終予測ブロックを決定することと、
ビデオデータの前記ブロックの復号されたバージョンを備えるビデオデータのピクチャを出力することと、
を行うように構成された、デバイス。
[C13] 前記第1のBIO動き量を決定するために、前記1つまたは複数のプロセッサは、前記第1のサブブロック中のサンプルおよび前記第1のサブブロック外のサンプルに基づいて前記第1のBIO動き量を決定するように構成される、C12に記載のデバイス。
[C14] 前記第1のBIO動き量を決定するために、前記1つまたは複数のプロセッサは、前記第1のサブブロック中のサンプルのみに基づいて前記第1のBIO動き量を決定するように構成される、C12に記載のデバイス。
[C15] 前記第2のBIO動き量を決定するために、前記1つまたは複数のプロセッサは、前記第2のサブブロック中のサンプルおよび前記第2のサブブロック外のサンプルに基づいて前記第2のBIO動き量を決定するように構成される、C12に記載のデバイス。
[C16] 前記第2のBIO動き量を決定するために、前記1つまたは複数のプロセッサは、前記第2のサブブロック中のサンプルのみに基づいて前記第2のBIO動き量を決定するように構成される、C12に記載のデバイス。
[C17] 前記第1のBIO動き量は、水平成分および垂直成分を備える動きベクトルフィールドを備える、C12に記載のデバイス。
[C18] 前記第1のサブブロックは、前記ブロックについてのコーディングユニット、予測ユニット、および変換ユニットとは異なる、C12に記載のデバイス。
[C19] 前記1つまたは複数のプロセッサは、
ビデオデータの前記ブロックについての再構築されたブロックを決定するために、前記最終予測ブロックに残差データを追加すること、
を行うように構成される、C12に記載のデバイス。
[C20] 前記第1の予測ブロックの前記第1のサブブロック、前記第2の予測ブロックの前記第1のサブブロック、および前記第1のBIO動き量に基づいて、ビデオデータの前記ブロックについての前記第1の最終予測サブブロックを決定するために、前記1つまたは複数のプロセッサは、以下の式にしたがって前記第1の最終予測サブブロックを決定するように構成され、
pred
BIO
=1/2・(I
(0)
+I
(1)
+v
x
・(τ
1
∂I
(1)
/∂x-τ
0
∂I
(0)
/∂x)+v
y
・(τ
1
∂I
(1)
/∂y-τ
0
∂I
(0)
/∂y))
ここにおいて、
pred
BIO
は、前記第1の最終予測サブブロックのサンプル値を備え、
I
(0)
は、前記第1の予測ブロックの前記第1のサブブロックのサンプル値を備え、 I
(1)
は、前記第2の予測ブロックの前記第1のサブブロックのサンプル値を備え、 v
x
は、前記第1のBIO動き量の水平成分を備え、
v
y
は、前記第1のBIO動き量の垂直成分を備え、
τ
0
は、前記第1の参照ピクチャまでの距離を備え、
τ
1
は、前記第2の参照ピクチャまでの距離を備える、C12に記載のデバイス。
[C21] 前記1つまたは複数のプロセッサは、ビデオ符号化プロセスの復号ループの一部として前記ビデオデータを復号し、およびビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを出力するために、前記1つまたは複数のプロセッサは、参照ピクチャメモリ中にビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを記憶するように構成され、前記1つまたは複数のプロセッサは、
前記ビデオデータの別のピクチャを符号化する際に参照ピクチャとしてビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを使用すること、
を行うようにさらに構成される、C12に記載のデバイス。
[C22] ビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを出力するために、前記1つまたは複数のプロセッサは、ディスプレイデバイスにビデオデータの前記ブロックの前記復号されたバージョンを備えるビデオデータの前記ピクチャを出力するように構成される、C12に記載のデバイス。
[C23] 前記デバイスは、ワイヤレス通信デバイスを備え、符号化されたビデオデータを受信するように構成された受信機をさらに備える、C12に記載のデバイス。
[C24] 前記ワイヤレス通信デバイスは、電話ハンドセットを備え、
前記受信機は、前記符号化されたビデオデータを備える信号を、ワイヤレス通信規格にしたがって復調するように構成される、C23に記載のデバイス。
[C25] 前記デバイスは、ワイヤレス通信デバイスを備え、符号化されたビデオデータを送信するように構成された送信機をさらに備える、C12に記載のデバイス。
[C26] 前記ワイヤレス通信デバイスは、電話ハンドセットを備え、
前記送信機は、前記符号化されたビデオデータを備える信号を、ワイヤレス通信規格にしたがって変調するように構成される、C25に記載のデバイス。
[C27] 1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
ビデオデータのブロックが双方向インター予測モードを使用して符号化されていると決定することと、
前記ブロックについての第1の動きベクトル(MV)を決定することと、ここにおいて、前記第1のMVは、第1の参照ピクチャを指し示す、
前記ブロックについての第2のMVを決定することと、ここにおいて、前記第2のMVは、第2の参照ピクチャを指し示し、前記第1の参照ピクチャは、前記第2の参照ピクチャとは異なる、
前記第1のMVを使用して、前記第1の参照ピクチャ中に第1の予測ブロックをロケートすることと、
前記第2のMVを使用して、前記第2の参照ピクチャ中に第2の予測ブロックをロケートすることと、
前記第1の予測ブロックの第1のサブブロックについて、第1の双方向オプティカルフロー(BIO)動き量を決定することと、
前記第1の予測ブロックの前記第1のサブブロック、前記第2の予測ブロックの第1のサブブロック、および前記第1のBIO動き量に基づいて、ビデオデータの前記ブロックについての第1の最終予測サブブロックを決定することと、
前記第1の予測ブロックの第2のサブブロックについて、第2のBIO動き量を決定することと、
前記第1の予測ブロックの前記第2のサブブロック、前記第2の予測ブロックの第2のサブブロック、および前記第2のBIO動き量に基づいて、ビデオデータの前記ブロックについての第2の最終予測サブブロックを決定することと、
前記第1の最終予測サブブロックおよび前記第2の最終予測サブブロックに基づいて、ビデオデータの前記ブロックについての最終予測ブロックを決定することと、
ビデオデータの前記ブロックの復号されたバージョンを備えるビデオデータのピクチャを出力することと、
を行わせる命令を記憶する、コンピュータ可読記憶媒体。
[C28] 前記第1のBIO動き量は、水平成分および垂直成分を備える動きベクトルフィールドを備える、C27に記載のコンピュータ可読記憶媒体。
[C29] 前記第1のサブブロックは、前記ブロックについてのコーディングユニット、予測ユニット、および変換ユニットとは異なる、C27に記載のコンピュータ可読記憶媒体。
[C30] ビデオデータを復号するための装置であって、前記装置は、
ビデオデータのブロックが双方向インター予測モードを使用して符号化されていると決定するための手段と、
前記ブロックについての第1の動きベクトル(MV)を決定するための手段と、ここにおいて、前記第1のMVは、第1の参照ピクチャを指し示す、
前記ブロックについての第2のMVを決定するための手段と、ここにおいて、前記第2のMVは、第2の参照ピクチャを指し示し、前記第1の参照ピクチャは、前記第2の参照ピクチャとは異なる、
前記第1のMVを使用して、前記第1の参照ピクチャ中の第1の予測ブロックをロケートするための手段と、
前記第2のMVを使用して、前記第2の参照ピクチャ中の第2の予測ブロックをロケートするための手段と、
前記第1の予測ブロックの第1のサブブロックについて、第1の双方向オプティカルフロー(BIO)動き量を決定するための手段と、
前記第1の予測ブロックの前記第1のサブブロック、前記第2の予測ブロックの第1のサブブロック、および前記第1のBIO動き量に基づいて、ビデオデータの前記ブロックについての第1の最終予測サブブロックを決定するための手段と、
前記第1の予測ブロックの第2のサブブロックについて、第2のBIO動き量を決定するための手段と、
前記第1の予測ブロックの前記第2のサブブロック、前記第2の予測ブロックの第2のサブブロック、および前記第2のBIO動き量に基づいて、ビデオデータの前記ブロックについての第2の最終予測サブブロックを決定するための手段と、
前記第1の最終予測サブブロックおよび前記第2の最終予測サブブロックに基づいて、ビデオデータの前記ブロックについての最終予測ブロックを決定するための手段と、
ビデオデータの前記ブロックの復号されたバージョンを備えるビデオデータのピクチャを出力するための手段と、
を備える、装置。