(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-27
(45)【発行日】2022-01-19
(54)【発明の名称】ビデオコーディングのためのアフィン予測動き情報をコーディングすること
(51)【国際特許分類】
H04N 19/52 20140101AFI20220112BHJP
H04N 19/54 20140101ALI20220112BHJP
【FI】
H04N19/52
H04N19/54
(21)【出願番号】P 2020518778
(86)(22)【出願日】2018-10-02
(86)【国際出願番号】 US2018053936
(87)【国際公開番号】W WO2019070683
(87)【国際公開日】2019-04-11
【審査請求日】2021-01-05
(32)【優先日】2017-10-03
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-10-01
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】100108855
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100158805
【氏名又は名称】井関 守三
(74)【代理人】
【識別番号】100112807
【氏名又は名称】岡田 貴志
(72)【発明者】
【氏名】ジャン、カイ
(72)【発明者】
【氏名】チェン、ジャンレ
(72)【発明者】
【氏名】リ、シャン
(72)【発明者】
【氏名】チェン、ウェイ-ジュン
(72)【発明者】
【氏名】チェン、イ-ウェン
(72)【発明者】
【氏名】ジャン、リ
(72)【発明者】
【氏名】カルチェビチ、マルタ
【審査官】坂東 大五郎
(56)【参考文献】
【文献】特開2011-223176(JP,A)
【文献】米国特許出願公開第2016/0134886(US,A1)
【文献】Feng Zou et al.,EE4: Improved affine motion prediction,Joint Video Exploration Team (JVET),2016年10月06日,[JVET-D0121] (version 1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
ビデオデータをコーディングする方法であって、
アフィン予測を使用して予測されるビデオデータの現在のブロックの第1の制御点の第1の動きベクトルと、前記第1の動きベクトルのための第1の動きベクトル予測子(MVP)と、の間の第1の差を表す第1の動きベクトル差(MVD)をコーディングすることと、
前記現在のブロックの第2の制御点の第2の動きベクトルのために、前記第1のMVDから第2のMVDを予測することと、前記第2のMVDは、前記第2の動きベクトルと、前記第2の動きベクトルのための第2のMVPと、の間の第2の差を表し、前記第2の動きベクトルは前記第1の動きベクトルとは異なり、
前記第1の動きベクトルと前記第2の動きベクトルとに従ってアフィン予測を使用して前記現在のブロックをコーディングすることと、
を備える、方法。
【請求項2】
前記第1のMVDは、水平成分(MVDx1)と垂直成分(MVDy1)とを含み、
前記第1のMVPは、水平成分(MVPx1)と垂直成分(MVPy1)とを含み、
前記第1の動きベクトルは、水平成分(MVx1)と垂直成分(MVy1)とを含み、
MVDx1=MVx1-MVPx1、および、MVDy1=MVy1-MVPy1である、
請求項1に記載の方法。
【請求項3】
前記現在のブロックをコーディングすることは、4つのパラメータアフィンモデルに従って前記現在のブロックをコーディングすることを備える、請求項1に記載の方法。
【請求項4】
前記現在のブロックの第3の制御点の第3の動きベクトルについて、前記第1のMVDまたは前記第2のMVDのうちの少なくとも1つから第3のMVDを予測すること、をさらに備え、
前記現在のブロックをコーディングすることは、前記第1の動きベクトルと、前記第2の動きベクトルと、前記第3の動きベクトルとに従ってアフィン予測を使用して前記現在のブロックをコーディングすることを備える、請求項1に記載の方法。
【請求項5】
前記現在のブロックをコーディングすることは、6つのパラメータアフィンモデルに従って前記現在のブロックをコーディングすることを備える、請求項4に記載の方法。
【請求項6】
前記第1の動きベクトルは、前記現在のブロックの左上隅から発生し、前記第2の動きベクトルは、前記現在のブロックの右上隅から発生する、請求項1に記載の方法。
【請求項7】
前記第1の動きベクトルと前記第2の動きベクトルとのための制御点を定義するデータをコーディングすることをさらに備える、請求項1に記載の方法。
【請求項8】
前記現在のブロックの形状に基づいて前記第1の動きベクトルと前記第2の動きベクトルとのための制御点を決定することをさらに備える、請求項1に記載の方法。
【請求項9】
前記第1の動きベクトルと前記第2の動きベクトルとのための制御点を暗黙的に導出することをさらに備える、請求項1に記載の方法。
【請求項10】
前記第2のMVDのため
のMVD’2を表すデータをコーディングすること、をさらに備え、MVD’2は、前記第1のMVDに対する前記第2のMVDの残差値を表す、請求項1に記載の方法。
【請求項11】
前記第1のMVDは、MVD1であり、前記第2のMVDは、MVD2であり、wは、重み付け値であり、MVD’2=MVD2-w*MVD1である、請求項10に記載の方法。
【請求項12】
前記第1のMVDは、MVD1であり、前記第2のMVDは、MVD2であり、0.5の重み付け値の場合、MVD’2=MVD2-((MVD1+1)>>1)であり、ここにおいて、「>>」はビットごとの右シフト演算子である、請求項10に記載の方法。
【請求項13】
前記第1のMVDは、MVD1であり、前記第2のMVDは、MVD2であり、0.25の重み付け値の場合、MVD’2=MVD2-((MVD1+2)>>2)であり、ここにおいて、「>>」はビットごとの右シフト演算子である、請求項10に記載の方法。
【請求項14】
前記第1のMVDから前記第2のMVDを予測すると決定すること、をさらに備え、
前記第1のMVDから前記第2のMVDを予測することは、前記第1のMVDから前記第2のMVDを予測すると決定することに応答して、前記第1のMVDから前記第2のMVDを予測することを備える、請求項1に記載の方法。
【請求項15】
前記第1のMVDから前記第2のMVDを予測すると決定することは、前記現在のブロックの形状に基づいて、前記第1のMVDから前記第2のMVDを予測すると決定することを備える、請求項14に記載の方法。
【請求項16】
前記第1のMVDから前記第2のMVDを予測すると決定することは、前記現在のブロックのための動き予測方法に基づいて、前記第1のMVDから前記第2のMVDを予測すると決定することを備える、請求項14に記載の方法。
【請求項17】
前記第1のMVDから前記第2のMVDを予測すると決定することは、前記動き予測方法がアフィンマージモードであると決定することを備える、請求項16に記載の方法。
【請求項18】
前記第2のMVDは、水平成分(MVD2
x)と垂直成分(MVD2
y)とを含み、前記第2のMVDを予測することは、MVD2
yを予測することとは別様にMVD2
xを予測することを備える、請求項1に記載の方法。
【請求項19】
前記第1のMVDまたは前記第2のMVDのうちの少なくとも1つから、前記現在のブロックの第3の制御点の第3の動きベクトルのための第3のMVPを生成することをさらに備え、
前記第3のMVPは、前記第1のMVDまたは前記第2のMVDのうちの少なくとも1つと、前記現在のブロックの1つまたは複数の隣接ブロックの動きベクトルから決定される前記第3の動きベクトルのための第3の中間MVP(MVP’3)と、から生成される、
請求項1に記載の方法。
【請求項20】
前記第1のMVDは、MVD1であり、前記方法は、
前記現在のブロックの1つまたは複数の隣接ブロックの動きベクトルから、前記第2の動きベクトルのための第2の中間MVP(MVP’2)を決定することと、
MVP’2とMVD1とから、前記第2の動きベクトルのための前記第2のMVP(MVP2)を生成することと、
をさらに備える、請求項1に記載の方法。
【請求項21】
前記現在のブロックの第3の制御点の第3の動きベクトルについての第3のMVDと前記第1のMVDとから前記第2の動きベクトルのための前記第2のMVPを生成すること、ここにおいて、前記第2のMVPは、MVP2であり、前記第1のMVDは、MVD1であり、前記第3のMVDは、MVD3である、をさらに備え、前記方法は、
前記現在のブロックの1つまたは複数の隣接ブロックの動きベクトルから、前記第2の動きベクトルのための第2の中間MVP(MVP’2)を決定することをさらに備え、
MVP2を生成することは、MVP2=MVP’2+((MVD1+MVD3)>>1)としてMVP2を生成することを備え、ここにおいて、「>>」はビットごとの右シフト演算子である、請求項1に記載の方法。
【請求項22】
前記現在のブロックをコーディングすることは、前記現在のブロックを復号することを備え、前記現在のブロックを復号することは、
前記第1の動きベクトルを再構成するために、前記第1のMVPに前記第1のMVDを加算することと、
前記第2の動きベクトルのための前記第2のMVPを決定することと、
前記第1のMVDからの前記予測を使用して前記第2のMVDを再構成することと、
前記第2の動きベクトルを再構成するために、前記第2のMVPに前記第2のMVDを加算することと、
前記第1の動きベクトルと前記第2の動きベクトルとを使用して、前記現在のブロックのための予測ブロックを形成することと、
前記現在のブロックのための残差ブロックを復号することと、
前記現在のブロックを再構成するために、前記残差ブロックと前記予測ブロックとを加算することと、
を備える、請求項1に記載の方法。
【請求項23】
前記現在のブロックをコーディングすることは、前記現在のブロックを符号化することを備え、前記現在のブロックを符号化することは、
前記第1のMVDを生成するために、前記第1の動きベクトルから前記第1のMVPを減算することと、
前記第2の動きベクトルのための前記第2のMVPを決定することと、
前記第2のMVDを生成するために、前記第2の動きベクトルから前記第2のMVPを減算することと、
前記第1のMVDを符号化することと、
前記第1のMVDから予測された前記第2のMVDを表すデータを符号化することと、
前記第1の動きベクトルと前記第2の動きベクトルとを使用して、前記現在のブロックのための予測ブロックを形成することと、
残差ブロックを生成するために、前記現在のブロックから前記予測ブロックを減算することと、
前記残差ブロックを符号化することと、
を備える、請求項1に記載の方法。
【請求項24】
ビデオデータをコーディングするためのデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
回路に実装された1つまたは複数のプロセッサと、を備え、前記1つまたは複数のプロセッサは、
アフィン予測を使用して予測されるビデオデータの現在のブロックの第1の制御点の第1の動きベクトルと、前記第1の動きベクトルのための第1の動きベクトル予測子(MVP)と、の間の差を表す第1の動きベクトル差(MVD)をコーディングすることと、
前記現在のブロックの第2の制御点の第2の動きベクトルについて、前記第1のMVDから第2のMVDを予測することと、前記第2のMVDは、前記第2の動きベクトルと、前記第2の動きベクトルのための第2のMVPと、の間の第2の差を表し、前記第2の動きベクトルは前記第1の動きベクトルとは異なり、
前記第1の動きベクトルと前記第2の動きベクトルとに従ってアフィン予測を使用して前記現在のブロックをコーディングすることと、
を行うように構成された、デバイス。
【請求項25】
前記1つまたは複数のプロセッサは、
前記第1の動きベクトルを再構成するために、前記第1のMVPに前記第1のMVDを加算することと、
前記第2の動きベクトルのための前記第2のMVPを決定することと、
前記第1のMVDからの前記予測を使用して前記第2のMVDを再構成することと、
前記第2の動きベクトルを再構成するために、前記第2のMVPに前記第2のMVDを加算することと、
前記第1の動きベクトルと前記第2の動きベクトルとを使用して、前記現在のブロックのための予測ブロックを形成することと、
前記現在のブロックのための残差ブロックを復号することと、
前記現在のブロックを再構成するために、前記残差ブロックと前記予測ブロックとを加算することと、
を行うように構成された、請求項24に記載のデバイス。
【請求項26】
前記1つまたは複数のプロセッサは、
前記第1のMVDを生成するために、前記第1の動きベクトルから前記第1のMVPを減算することと、
前記第2の動きベクトルのための前記第2のMVPを決定することと、
前記第2のMVDを生成するために、前記第2の動きベクトルから前記第2のMVPを減算することと、
前記第1のMVDを符号化することと、
前記第1のMVDから予測された前記第2のMVDを表すデータを符号化することと、
前記第1の動きベクトルと前記第2の動きベクトルとを使用して、前記現在のブロックのための予測ブロックを形成することと、
残差ブロックを生成するために、前記現在のブロックから前記予測ブロックを減算することと、
前記残差ブロックを符号化することと、
を行うように構成された、請求項24に記載のデバイス。
【請求項27】
復号されたビデオデータを表示するように構成されたディスプレイをさらに備える、請求項24に記載のデバイス。
【請求項28】
前記デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、請求項24に記載のデバイス。
【請求項29】
命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記命令は、実行されたとき、ビデオデータをコーディングするためのデバイスのプロセッサに、
アフィン予測を使用して予測されるビデオデータの現在のブロックの第1の制御点の第1の動きベクトルと、前記第1の動きベクトルのための第1の動きベクトル予測子(MVP)と、の間の差を表す第1の動きベクトル差(MVD)をコーディングすることと、
前記現在のブロックの第2の制御点の第2の動きベクトルについて、前記第1のMVDから第2のMVDを予測することと、前記第2のMVDは、前記第2の動きベクトルと、前記第2の動きベクトルのための第2のMVPと、の間の第2の差を表し、前記第2の動きベクトルは前記第1の動きベクトルとは異なり、
前記第1の動きベクトルと前記第2の動きベクトルとに従ってアフィン予測を使用して前記現在のブロックをコーディングすることと、
を行わせる、非一時的コンピュータ可読記憶媒体。
【請求項30】
ビデオデータをコーディングするためのデバイスであって、
アフィン予測を使用して予測されるビデオデータの現在のブロックの第1の制御点の第1の動きベクトルと、前記第1の動きベクトルのための第1の動きベクトル予測子(MVP)と、の間の差を表す第1の動きベクトル差(MVD)をコーディングするための手段と、
前記現在のブロックの第2の制御点の第2の動きベクトルについて、前記第1のMVDから第2のMVDを予測するための手段と、前記第2のMVDは、前記第2の動きベクトルと、前記第2の動きベクトルのための第2のMVPと、の間の第2の差を表し、前記第2の動きベクトルは前記第1の動きベクトルとは異なり、
前記第1の動きベクトルと前記第2の動きベクトルとに従ってアフィン予測を使用して前記現在のブロックをコーディングするための手段と、
を備えるデバイス。
【発明の詳細な説明】
【優先権の主張】
【0001】
[0001]本出願は、各々の内容全体が参照により本明細書に組み込まれる、2017年10月3日に出願された米国仮出願第62/567,598号および2018年10月1日に出願された米国出願第16/148,738号の利益を主張する。
【技術分野】
【0002】
[0002]本開示は、ビデオコーディングに関し、より詳細には、ビデオデータの動き情報をコーディングすることに関する。
【背景技術】
【0003】
[0003]デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4,Part10,アドバンストビデオコーディング(AVC)、高効率ビデオコーディング(HEVC)規格、ITU-T H.265/高効率ビデオコーディング(HEVC)によって定義された規格、およびそのような規格の拡張に記載されているビデオコーディング技法など、ビデオコーディング技法を実装する。ビデオデバイスは、そのようなビデオコーディング技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
【0004】
[0004]ビデオコーディング技法は、ビデオシーケンスに固有の冗長性を低減または除去するための空間的(ピクチャ内)予測および/または時間的(ピクチャ間)予測を含む。ブロックベースのビデオコーディングでは、ビデオスライス(たとえば、ビデオピクチャまたはビデオピクチャの一部分)が、コーディングツリーユニット(CTU:coding tree unit)、コーディングユニット(CU:coding unit)および/またはコーディングノードと呼ばれることもある、ビデオブロックに区分され得る。ピクチャのイントラコード化(I)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコード化(PまたはB)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測、または他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【0005】
[0005]空間予測または時間予測により、コーディングされるべきブロックのための予測ブロックが生じる。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コード化ブロックと予測ブロックとの間の差を示す。イントラコード化ブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて、残差変換係数が得られ得、その残差変換係数は、次いで量子化され得る。最初に2次元アレイで構成される量子化された変換係数は、変換係数の1次元ベクトルを生成するために走査され得、なお一層の圧縮を達成するためにエントロピーコーディングが適用され得る。
【発明の概要】
【0006】
[0006]概して、本開示はインターピクチャ予測に関係する技法について説明する。たとえば、本開示の技法は、ブロックベースのビデオコーディングにおけるアフィン動き補償のための動きベクトルコーディング(符号化および/または復号)を含む。これらの技法は、既存のおよび/または将来のビデオコーディング規格に適用され得る。
【0007】
[0007]一例では、ビデオデータをコーディングする(たとえば、符号化または復号する)方法は、アフィン予測を使用して予測されるビデオデータの現在のブロックの第1の動きベクトルと第1の動きベクトルのための第1の動きベクトル予測子(MVP)との間の差を表す第1の動きベクトル差(MVD)をコーディングすることと、現在のブロックの第2の動きベクトルについて第1のMVDから第2のMVDを予測することと、第1の動きベクトルと第2の動きベクトルとに従ってアフィン予測を使用して現在のブロックをコーディングすることとを含む。
【0008】
[0008]別の例では、ビデオデータをコーディングする(たとえば、符号化または復号する)ためのデバイスは、ビデオデータを記憶するように構成されたメモリと、回路に実装された1つまたは複数のプロセッサとを含み、1つまたは複数のプロセッサは、アフィン予測を使用して予測されるビデオデータの現在のブロックの第1の動きベクトルと第1の動きベクトルのための第1の動きベクトル予測子(MVP)との間の差を表す第1の動きベクトル差(MVD)をコーディングすることと、現在のブロックの第2の動きベクトルについて第1のMVDから第2のMVDを予測することと、第1の動きベクトルと第2の動きベクトルとに従ってアフィン予測を使用して現在のブロックをコーディングすることとを行うように構成される。
【0009】
[0009]別の例では、コンピュータ可読記憶媒体は、実行されたとき、プロセッサに、アフィン予測を使用して予測されるビデオデータの現在のブロックの第1の動きベクトルと第1の動きベクトルのための第1の動きベクトル予測子(MVP)との間の差を表す第1の動きベクトル差(MVD)をコーディングすることと、現在のブロックの第2の動きベクトルについて第1のMVDから第2のMVDを予測することと、第1の動きベクトルと第2の動きベクトルとに従ってアフィン予測を使用して現在のブロックをコーディングすることとを行わせる命令を記憶している。
【0010】
[0010]別の例では、ビデオデータをコーディングする(たとえば、符号化または復号する)ためのデバイスは、アフィン予測を使用して予測されるビデオデータの現在のブロックの第1の動きベクトルと第1の動きベクトルのための第1の動きベクトル予測子(MVP)との間の差を表す第1の動きベクトル差(MVD)をコーディングするための手段と、現在のブロックの第2の動きベクトルについて第1のMVDから第2のMVDを予測するための手段と、第1の動きベクトルと第2の動きベクトルとに従ってアフィン予測を使用して現在のブロックをコーディングするための手段とを含む。
【0011】
[0011]1つまたは複数の例の詳細を添付の図面および以下の説明に記載する。他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【0012】
【
図1A】[0012]高効率ビデオコーディング(HEVC)のマージモードのための空間隣接候補の例を示す概念図。
【
図1B】高効率ビデオコーディング(HEVC)の高度動きベクトル予測(AMVP)モードのための空間隣接候補の例を示す概念図。
【
図2】[0013]現在のブロックのための4つのアフィンパラメータをもつ例示的な2点動きベクトルアフィンを示す概念図。
【
図3】[0014]現在のブロックのためのアフィンインター予測モードの一例を示す概念図。
【
図4A】[0015]現在のブロックのためのアフィンマージモードの一例を示す概念図。
【
図4B】現在のブロックのためのアフィンマージモードの一例を示す概念図。
【
図5】[0016]6つのパラメータ(3つの動きベクトル)をもつ例示的なアフィンモデルを示す概念図。
【
図6】[0017]アフィン予測での効率的なコーディング動き情報のための開示の技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図。
【
図7】[0018]アフィン予測動き情報を符号化するための本開示の技法を実装し得るビデオエンコーダの一例を示すブロック図。
【
図8】[0019]アフィン予測動き情報を復号するための本開示の技法を実装し得るビデオデコーダ30の一例を示すブロック図。
【
図9】[0020]アフィン動き情報予測のための動きベクトル差(MVD)予測の一例を示す概念図。
【
図10】[0021]3つの動きベクトルを用いるアフィン予測(6パラメータアフィン予測)でのMVD予測の一例を示す概念図。
【
図11】[0022]本開示の技法による、ビデオデータの現在のブロックを符号化するための例示的な方法を示すフローチャート。
【
図12】[0023]本開示の技法による、ビデオデータの現在のブロックを復号する例示的な方法を示すフローチャート。
【発明を実施するための形態】
【0013】
[0024]ビデオコーディング規格は、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、およびそれのスケーラブルビデオコーディング(SVC)拡張とマルチビュービデオコーディング(MVC)拡張とを含む、(ISO/IEC MPEG-4 AVCとしても知られる)ITU-T H.264を含む。
【0014】
[0025]最近では、新しいビデオコーディング規格、すなわち、ITU-T H.265/高効率ビデオコーディング(HEVC)の設計が、ITU-Tビデオコーディングエキスパートグループ(VCEG)とISO/IECモーションピクチャエキスパートグループ(MPEG)とのジョイントコラボレーションチームオンビデオコーディング(JCT-VC)によって確定された。以下で「HEVC WD」と呼ばれる、最新のHEVCドラフト仕様が、phenix.int-evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC-O1003-v2.zipから入手可能である。HEVCに対する範囲拡張、すなわちHEVC-Rextも、JCT-VCによって開発されている。以下でRExt WD6と呼ばれる、範囲拡張の作業草案(WD)が、phenix.int-evry.fr/jct/doc_end_user/documents/16_San%20Jose/wg11/JCTVC-P1005-v1.zipから入手可能である。
【0015】
[0026]将来のビデオコーディングのための新しいコーディングツールについての調査が進行中であり(たとえば、JVET-ジョイントビデオ探査チームにおいて研究されている)、ビデオコーディングのためのコーディング効率を改善する技術が提案されている。H.265/HEVCを越えた新規の専用コーディングツールを用いて4Kのような高解像度コンテンツのために特にビデオコンテンツの特性を活用することによってコーディング効率における有意な改善が獲得され得るという証拠がある。ビデオコーディング効率の可能なさらなる改善のための探査ステージにおいて提案を提出するように会社および団体が勧誘されている。
【0016】
[0027]H.265/HEVCでは、ブロックごとに、動き情報のセットが利用可能であり得る。動き情報のセットは、前方および後方の予測方向に関する動き情報を含み得る。前方予測方向および後方予測方向は、双方向予測モードの2つの予測方向であり、「前方」および「後方」という用語は、必ずしも幾何学的な意味を有するとは限らず、代わりに、これらの用語は現在ピクチャの参照ピクチャリスト0(RefPicList0)および参照ピクチャリスト1(RefPicList1)に対応する。ピクチャまたはスライスに関して1つの参照ピクチャリストのみが利用可能であるとき、RefPicList0のみが利用可能であり、スライスの各ブロックの動き情報は常に前方である。
【0017】
[0028]予測方向ごとに、H.265/HEVCによれば、動き情報は参照インデックスと動きベクトルとを含まなければならない。場合によっては、簡単のために、動きベクトルが関連する参照インデックスを有すると仮定されるような方法では、動きベクトル自体が参照されることがある。参照インデックスは、現在の参照ピクチャリスト(RefPicList0またはRefPicList1)中の参照ピクチャを特定するために使用される。動きベクトルは水平成分と垂直成分とを有する。
【0018】
[0029]ビデオコーディング規格において、ピクチャの表示順序を識別するためにピクチャ順序カウント(POC)が広く使用されている。1つのコード化ビデオシーケンス内の2つのピクチャが同じPOC値を有し得る場合があるが、これは、一般に、コード化ビデオシーケンス内で生じない。複数のコーディングされたビデオシーケンスがビットストリーム中に存在するとき、POCの同じ値をもつピクチャは、復号順序に関して互いに近いことがある。ピクチャのPOC値は、一般に、参照ピクチャリスト構成と、HEVCの場合のような参照ピクチャセットの導出と、動きベクトルスケーリングとのために使用される。
【0019】
[0030]HEVCでは、スライス中の最大コーディングユニットはコーディングツリーブロック(CTB)と呼ばれる。CTBは4分木を含んでおり、そのノードはコーディングユニットである。(技術的に、8×8CTBサイズがサポートされ得るが)CTBのサイズは、HEVCメインプロファイルにおいて16×16ピクセルから64×64ピクセルに及び得る。コーディングユニット(CU)は、CTBの同じサイズであり、8×8ピクセル程度に小さくなり得る。各コーディングユニットは1つのモードでコーディングされ得る。CUがインターコーディングされるとき、CUは、2つ以上の予測ユニット(PU)にさらに区分され得るか、または、さらなる区分が適用されないとき、1つのPUだけになる。1つのCU中に2つのPUが存在するとき、それらのPUは、1/2サイズの長方形、あるいはCUの1/4または3/4サイズをもつ2つの長方形サイズであり得る。CUがインターコーディングされるとき、各PUについて動き情報の1つのセットが存在する。さらに、各PUは、動き情報のセットを導出するために固有のインター予測モードを用いてコーディングされる。HEVCでは、最小PUサイズは8×4および4×8である。
【0020】
[0031]HEVCでは、予測ユニット(PU)のために、マージモード(スキップはマージの特殊な場合と見なされる)および高度動きベクトル予測(AMVP)モードと称される2つのインター予測モードがある。AMVPモードまたはマージモードのいずれかでは、1つの動きベクトル(MV)候補リストは、複数の動きベクトル予測子について維持される。現在PUの、動きベクトル、ならびにマージモードにおける参照インデックスは、MV候補リストから1つの候補を取ることによって生成される。
【0021】
[0032]MV候補リストは、HEVCごとに、マージモードのために最高5つの候補を、およびAMVPモードのために2つだけの候補を含んでいる。マージ候補は、動き情報のセット、たとえば、両方の参照ピクチャリスト(リスト0およびリスト1)に対応する動きベクトルと、参照インデックスとを含み得る。マージ候補がマージインデックスによって特定される場合、現在のブロックの予測のために参照ピクチャが使用され、ならびに関連する動きベクトルが決定される。しかしながら、リスト0またはリスト1のいずれかからの各潜在的予測方向についてのAMVPモード下で、参照インデックスは、AMVP候補が動きベクトルのみを含んでいるので、MV候補リストへの動きベクトル予測子(MVP)インデックスとともに明示的にシグナリングされる必要がある。AMVPモードでは、予測動きベクトルはさらに改良され得る。
【0022】
[0033]このように、マージ候補は、動き情報のフルセットに対応するが、AMVP候補は、特定の予測方向および参照インデックスのための1つだけの動きベクトルを含む。両方のモードのための候補は、同じ空間および時間隣接ブロックから同様に導出される。
【0023】
[0034]
図1Aおよび
図1Bは、HEVCのマージおよびAMVPモードのための空間隣接候補の例を示す概念図である。特に、
図1Aに、マージモードのための空間隣接動きベクトル(MV)候補を示し、一方、
図1Bに、AMVPモードのための空間隣接MV候補を示す。HEVCによれば、空間MV候補は、特定のPU(PU
0)に関して
図1Aおよび
図1Bに示す隣接ブロックから導出されるが、ブロックから候補を生成するための技法は、マージモードおよびAMVPモードに関して異なる。
【0024】
[0035]HEVCのマージモードでは、番号付きで
図1Aに示す順序で、最高4つの空間MV候補が導出され得、順序は、
図1Aに示すように、左(0)、上(1)、右上(2)、左下(3)、および左上(4)である。
【0025】
[0036]HEVCのAVMPモードでは、隣接ブロックは、2つのグループ、すなわち、
図1Bに示すように、ブロック0および1を含む左グループと、ブロック2、3、および4を含む上グループとに分割される。各グループについて、シグナリングされた参照インデックスによって示された参照ピクチャと同じ参照ピクチャを参照する隣接ブロック中の潜在的候補は、グループの最終候補を形成するために選定されるべき最高優先度を有する。隣接ブロックが、同じ参照ピクチャを指す動きベクトルを含まない可能性がある。したがって、そのような候補が見つけられ得ない場合、第1の利用可能な候補は、最終候補を形成するためにスケーリングされることになる。したがって、時間距離差が補償され得る。
【0026】
[0037]H.265/HEVCにおける動き補償は、現在のインター符号化ブロックのための予測子を生成するために使用される。クォータピクセル精度動きベクトルが使用され得、分数位置におけるピクセル値は、ルーマ成分とクロマ成分との両方の隣接整数ピクセル値を使用して補間され得る。
【0027】
[0038]
図2は、現在のブロックのための4つのアフィンパラメータをもつ例示的な2点動きベクトルアフィンを示す概念図である。現在の既存のビデオコーデック規格では、平行移動動きモデル(translational motion model)のみが、動き補償予測(MCP)に適用される。しかしながら、実世界では、多くの種類の動き、たとえばズームイン/アウト、回転、遠近法の動きおよび他の不規則な動きがある。MCPのための平行移動動きモデルのみが不規則な動きをもつそのようなテストシーケンスに適用される場合、予測精度に影響を及ぼし、低いコーディング効率を生じることになる。長年の間、多くのビデオ専門家は、より高いコーディング効率のためにMCPを改善するために多くのアルゴリズムを設計することを試みてきた。アフィンマージおよびアフィンインター(AMVP)モードは、次のような4つのパラメータをもつアフィン動きモデルに対処するために提案されている。
【0028】
【0029】
[0039]上記の式(1)では、(vx
0,vy
0)は、
図2の現在のブロックの左上隅にある制御点動きベクトルであり、(vx
1,vy
1)は、
図2の現在のブロックの右上隅にある別の制御点動きベクトルである。アフィンモデルは、以下に帰着する。
【0030】
【0031】
[0040]現在のJEMソフトウェアでは、アフィン動き予測は、正方形ブロックにのみ適用される。自然な流れとして、アフィン動き予測は、非正方形ブロックに適用され得る。
【0032】
[0041]
図3は、現在のブロックのためのアフィンインター予測モードの一例を示す概念図である。現在のブロックは、現在のCU、または現在のPUであり得る。この例では、現在のブロックは、左上隅に「V0」と標示されたブロックと右上隅に「V1」と標示されたブロックとの2つのブロックとA、B、C、D、およびEと標示された隣接ブロックとを含む。特に、「V0」ブロックは、ブロックA、B、およびCに隣接し、一方、「V1」ブロックは、ブロックDおよびEに隣接する。
【0033】
[0042]サイズが16×16に等しいかそれよりも大きいCU/PUごとに、アフィンインター予測モード(AF_INTERモード)が次のように適用され得る。現在のCU/PUがAF_INTERモードにある場合、CU/PUレベル中のアフィンフラグがビットストリーム中でシグナリングされ得る。候補リスト{(v0,v1)|v0={vA,vB,vc},v1={vD,vE}}は、ネイバーの有効な再構成されたブロックを使用して構築される。
【0034】
[0043]
図3に示すように、動き情報v
0は、ブロックA、B、および/またはCの動きベクトルから選択される。ネイバーブロックからの動きベクトルは、参照リストと、ネイバーブロックのための参照のPOC、現在のCU/PUのための参照のPOC、および現在のCU/PUのPOCの間の関係と、に従ってスケーリングされる。また、ネイバーブロックDおよびEからv
1を選択するための手法は、同様である。候補リストの数が2よりも小さい場合、AMVPの候補は、v
0およびv
1に割り当てられる。現在のCU/PUのレートひずみ最適化(RDO)コストは、どの(v
0,v
1)が現在のCU/PUの制御点動きベクトル予測(CPMVP)として選択されるのかを決定するために使用される。また、候補リスト中のCPMVPの位置を示すインデックスが、ビットストリーム中でシグナリングされる。
【0035】
[0044]現在のアフィンCU/PUのCPMVPが決定された後に、アフィン動き推定が適用され、CPMVが見つけられる。次いで、CPMVとCPMVPとの差がビットストリーム中にコーディングされる。前述のアフィン動き補償予測は、現在のCU/PUの残余を生成するために適用される。最後に、現在のCU/PUの残余は、従来のプロシージャに従って、変換され、量子化され、ビットストリームにコーディングされる。
【0036】
[0045]
図4Aおよび
図4Bは、現在のブロックのためのアフィンマージモードの一例を示す概念図である。現在のブロックは、現在のCU、または現在のPUであり得る。この例では、現在のブロックは、
図4Aに示すように、A、B、C、D、およびEと標示された5つの隣接ブロックを有する。
【0037】
[0046]現在のCU/PUは、アフィンマージモード(AF_MERGEモード)で適用されるとき、A、B、C、D、およびEの有効なネイバーの再構成されたブロックからアフィンモードを用いてコーディングされた第1のブロックを得る。候補ブロックのための選択順序は、
図4Aに示すように、左、上、右上、左下、左上の順である。たとえば、ネイバー左下ブロックAが、
図4Bに示すようにアフィンモードにおいてコーディングされる場合、ブロックAを含んでいるCU/PUの左上隅、右上隅および左下隅の動きベクトルv
2、v
3およびv
4が導出される。現在のCU/PU上の左上隅の動きベクトルv
0は、v
2、v
3、およびv
4に従って計算される。同様に、現在のCU/PUの右上の動きベクトルv
1は、v
2、v
3、およびv
4に基づいて計算される。
【0038】
[0047]現在のCU/PUのCPMVv
0およびv
1が計算された後に、上記の式(2)に定義されている簡略化されたアフィン動きモデルに従って、現在のCU/PUのMVFが生成される。次いで、アフィンMCPが適用される。現在のCU/PUがAF_MERGEモードを用いてコーディングされるのかどうかを識別するために、アフィンモードにおいてコーディングされた少なくとも1つのネイバーブロックがあるとき、アフィンフラグがビットストリーム中でシグナリングされる。
図4Aに示すように、現在のブロックに隣接するアフィンブロックが存在しない場合、アフィンフラグがビットストリーム中に書かれない。
【0039】
[0048]HEVCでは、コンテキスト適応型バイナリ算術コーディング(CABAC)は、2値化された値にシンボルを変換するために使用される2値化プロセスを含む。2値化により、ビンと呼ばれるビットのシーケンスへの非バイナリシンタックス要素の一意のマッピングを介して効率的なバイナリ算術符号化が可能になる。JEM2.0参照ソフトウェアでは、アフィンマージモードの場合、アフィンフラグのみがコーディングされ、マージインデックスは、あらかじめ定義されたチェック順序A→B→C→D→Eで第1の利用可能な隣接アフィンモデルであると推測される。アフィンインターモードの場合、2つのMVDシンタックスが予測リストごとにコーディングされ、導出されたアフィン動きベクトルと予測された動きベクトルとの間の動きベクトル差を示す。
【0040】
[0049]
図5は、6つのパラメータ(3つの動きベクトル)をもつ例示的なアフィンモデルを示す概念図である。Zouらによる、2017年5月4日に出願された「AFFINE MOTION PREDICTION FOR VIDEO CODING」と題する米国出願第15/587,044号では、切替え可能なアフィン動き予測方式について説明した。アフィン予測を用いるブロックは、4つのパラメータのアフィンモデルまたは6つのパラメータのアフィンモデルを適応的に使用することができる。6つのパラメータを用いるアフィンモデルは、次のように定義され得る。
【0041】
【0042】
[0050]6つのパラメータを用いるアフィンモデルは、3つの制御点を有する。言い換えれば、6つのパラメータを用いるアフィンモデルは、たとえば、
図5に示すように、3つの動きベクトル(MV0、MV1、およびMV2)によって決定される。
図5に示すように、MV0は、現在のブロックの左上隅にある第1の制御点動きベクトルであり、MV1は、現在のブロックの右上隅にある第2の制御点動きベクトルであり、MV2は、現在のブロックの左下隅にある第3の制御点動きベクトルである。3つの動きベクトルを用いて構築されるアフィンモデルは、次のように計算される。
【0043】
【0044】
[0051]上の式(4)は、wに等しい辺を有する正方形ブロックのためのものである。wの幅とhの高さとを有する非正方形ブロック(たとえば、矩形ブロック)の場合、以下のアフィンモデルが使用され得る。
【0045】
【0046】
[0052]左上隅、右上隅、および左下隅のためのMVPを導出するために、上記の
図4に関して説明した左上隅および右上隅の動きベクトルを導出するアフィンマージと同様の方法が同じく使用され得る。追加の例は、Chenらによる、2016年10月5日に出願された「MOTION VETOR PREDICTION FOR AFFINE MOTION MODEL」と題する米国仮出願第62/404,719号に記載されている。
【0047】
[0053]
図6は、アフィン予測での効率的なコーディング動き情報のための開示の技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。
図6に示すように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを与えるソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを与える。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォン、いわゆる「スマート」パッドなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信に対応し得る。
【0048】
[0054]宛先デバイス14は、コンピュータ可読媒体16を介して復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な、任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信標準規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワークなどのパケットベースのネットワーク、またはインターネットなどのグローバルネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするために有用であり得る任意の他の機器を含み得る。
【0049】
[0055]いくつかの例では、符号化されたデータは、出力インターフェース22からストレージデバイスに出力され得る。同様に、符号化されたデータは、ストレージデバイスから入力インターフェースによってアクセスされ得る。ストレージデバイスは、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる例では、ストレージデバイスは、ソースデバイス12によって生成された符号化されたビデオを記憶することができるファイルサーバまたは別の中間ストレージデバイスに対応することができる。宛先デバイス14は、ストリーミングまたはダウンロードを介してストレージデバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス14に送信することができる任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイト用の)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を介して符号化ビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに適した、両方の組合せを含み得る。ストレージデバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
【0050】
[0056]本開示の技法は、ワイヤレス応用またはワイヤレス設定に必ずしも限定されない。本技法は、無線テレビジョンブロードキャスト、ケーブルテレビジョン送信、衛星テレビジョン送信、HTTP上の動的適応ストリーミング(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の応用など、様々なマルチメディア応用のいずれかのサポートにおけるビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオ放送、および/またはビデオ電話などの応用例をサポートするために一方向または両方向のビデオ送信をサポートするように構成され得る。
【0051】
[0057]
図6の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。本開示によれば、ソースデバイス12のビデオエンコーダ20は、アフィン予測での効率的なコーディング動き情報のための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または配置を含み得る。たとえば、ソースデバイス12は、外部カメラなどの外部のビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【0052】
[0058]
図6の図示のシステム10は一例にすぎない。アフィン予測での効率的なコーディング動き情報のための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。一般に、本開示の技法は、ビデオ符号化デバイスによって実行されるが、これらの技法は、通常は「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実行され得る。さらに、本開示の技法はまた、ビデオプリプロセッサによって実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14への送信のためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的な様式で動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオ電話のための、ビデオデバイス12とビデオデバイス14との間の一方向または双方向のビデオ送信をサポートし得る。
【0053】
[0059]ソースデバイス12のビデオソース18は、ビデオカメラ、以前にキャプチャされたビデオを包含するビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなどの、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてコンピュータグラフィックスベースのデータ、または、ライブビデオ、アーカイブされたビデオ、およびコンピュータ生成ビデオの組合せを生成し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ付き電話またはビデオ付き電話を形成し得る。しかしながら、上述されたように、本開示で説明される技法は、一般にビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤードの応用に適用され得る。各場合において、キャプチャされたビデオ、前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオ情報は、次いで、出力インターフェース22によってコンピュータ可読媒体16上に出力され得る。
【0054】
[0060]コンピュータ可読媒体16は、ワイヤレスブロードキャストもしくはワイヤードネットワーク送信などの一時媒体、または、ハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu-rayディスク、もしくは他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化ビデオデータを受信し、宛先デバイス14に符号化ビデオデータを与え得る。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを包含しているディスクを生成し得る。したがって、コンピュータ可読媒体16は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。
【0055】
[0061]宛先デバイス14の入力インターフェース28はコンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ビデオエンコーダ20によって定義され、またビデオデコーダ30によって使用される、ブロックおよび他のコード化ユニットの特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス32は、復号されたビデオデータをユーザに対して表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【0056】
[0062]ビデオエンコーダ20およびビデオデコーダ30は、ITU-T H.265とも呼ばれる、高効率ビデオコーディング(HEVC)規格など、ビデオコーディング規格に従って動作し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG-4、Part10、アドバンストビデオコーディング(AVC)と呼ばれるITU-T H.264規格など、他のプロプライエタリ規格または業界規格、あるいはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例は、MPEG-2およびITU-T H.263を含む。
図6には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX-DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、MUX-DEMUXユニットはITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
【0057】
[0063]ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなどの、様々な適切なエンコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれ得、両者のいずれかがそれぞれのデバイス中の複合エンコーダ/デコーダ(CODEC)の一部として組み込まれ得る。
【0058】
[0064]概して、ITU-T H.265に従って、ビデオピクチャが、ルーマサンプルとクロマサンプルの両方を含み得る、コーディングツリーユニット(CTU)(または最大コーディングユニット(LCU))のシーケンスに分割され得る。代替的に、CTUはモノクロームデータ(すなわち、ルーマサンプルのみ)を含み得る。ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大コーディングユニットであるCTUのサイズを定義し得る。スライスは、コーディング順序でいくつかの連続するCTUを含む。ビデオピクチャは、1つまたは複数のスライスに区分され得る。各CTUは、4分木に従ってコーディングユニット(CU)に分割され得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードはCTUに対応する。CUが4つのサブCUに分割される場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。
【0059】
[0065]4分木データ構造の各ノードは、対応するCUにシンタックスデータを与え得る。たとえば、4分木内のノードは、そのノードに対応するCUがサブCUに分割されるか否かを示すスプリットフラグを含み得る。CUのシンタックス要素は、再帰的に定義され得、CUがサブCUに分割されるか否かに依存し得る。CUがさらに分割されない場合、そのCUはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的分割が存在しない場合でも、リーフCUの4つのサブCUはリーフCUとも呼ばれる。たとえば、16×16サイズのCUがさらに分割されない場合、この16×16CUが決して分割されなくても、4つの8×8サブCUはリーフCUとも呼ばれる。
【0060】
[0066]CUは、CUがサイズの特異性を有しないことを別にすれば、H.264規格のマクロブロックと同様の目的を有する。たとえば、CTUは、(サブCUとも呼ばれる)4つの子ノードに分割され得、各子ノードは、今度は親ノードとなり、別の4つの子ノードに分割され得る。4分木のリーフノードと呼ばれる、最後の分割されていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コード化ビットストリームに関連するシンタックスデータは、最大CU深さと呼ばれる、CTUが分割され得る最大回数を定義し得、また、コーディングノードの最小サイズを定義し得る。それに応じて、ビットストリームはまた、最小コーディングユニット(SCU)を定義し得る。本開示は、HEVCのコンテキストにおけるCU、予測ユニット(PU)、または変換ユニット(TU)、あるいは他の規格のコンテキストにおける同様のデータ構造(たとえば、H.264/AVCにおけるマクロブロックおよびそれのサブブロック)のいずれかを指すために「ブロック」という用語を使用する。
【0061】
[0067]CUは、コーディングノードと、コーディングノードに関連する予測ユニット(PU)および変換ユニット(TU)とを含む。CUのサイズは、コーディングノードのサイズに対応し、概して形状が正方形である。CUのサイズは、8×8ピクセルから最大サイズ、たとえば、64×64以上のピクセルをもつCTUのサイズに及び得る。各CUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。CUに関連付けられたシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を記述し得る。区分モードは、CUがスキップモード符号化もしくは直接モード符号化されるのか、イントラ予測モード符号化されるのか、またはインター予測モード符号化されるのかの間で異なり得る。PUは、形状が非正方形に区分され得る。CUに関連付けられたシンタックスデータはまた、たとえば、4分木に従うCUの1つまたは複数のTUへの区分を記述し得る。TUは、形状が方形または非正方形(たとえば、長方形)であり得る。
【0062】
[0068]HEVC規格は、CUごとに異なり得る、TUに従う変換を可能にする。TUは、一般に、区分されたCTUについて定義された所与のCU内のPU(またはCUの区分)のサイズに基づいてサイズ決定されるが、これは常にそうであるとは限らない。TUは、一般に、PU(または、たとえば、イントラ予測の場合は、CUの区分)と同じサイズであるか、またはそれよりも小さい。いくつかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT)として知られる4分木構造を使用して、より小さいユニットにさらに分割され得る。RQTのリーフノードは、変換ユニット(TU)と呼ばれることがある。TUに関連付けられたピクセル差分値は、変換係数を生成するために変換され得、変換係数は量子化され得る。
【0063】
[0069]リーフCUは、インター予測を用いて予測されるとき、1つまたは複数の予測ユニット(PU)を含み得る。概して、PUは、対応するCUの全部または一部分に対応する空間エリアを表し、そのPUの参照サンプルを取り出しおよび/または生成するためのデータを含み得る。その上、PUは、予測に関係するデータを含む。CUがインターモード符号化されるとき、CUの1つまたは複数のPUは、1つまたは複数の動きベクトルなどの動き情報を定義するデータを含み得るか、またはPUは、スキップモードコーディングされ得る。PUの動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルの参照ピクチャリスト(たとえば、リスト0またはリスト1)を記述し得る。
【0064】
[0070]リーフCUはまた、イントラモード予測され得る。概して、イントラ予測は、イントラモードを使用してリーフCU(またはそれの区分)を予測することに関与する。ビデオコーダは、リーフCU(またはそれの区分)を予測するために使用すべきリーフCUに隣接する以前にコーディングされたピクセルのセットを選択し得る。
【0065】
[0071]リーフCUはまた、1つまたは複数の変換ユニット(TU)を含み得る。変換ユニットは、上で論じたように、RQT(TU4分木構造とも称する)を使用して指定され得る。たとえば、分割フラグは、リーフCUが4つの変換ユニットに分割されるのかどうかを示し得る。次いで、各TUは、さらなるサブTUにさらに分割され得る。TUがさらに分割されないとき、そのTUはリーフTUと呼ばれることがある。概して、イントラコーディングの場合、リーフCUに属するすべてのリーフTUは同じイントラ予測モードを共有する。すなわち、同じイントラ予測モードが、概して、リーフCUのすべてのTUのための予測値を計算するために適用される。イントラコーディングでは、ビデオエンコーダは、イントラ予測モードを使用して各リーフTUについての残差値をTUに対応するCUの一部と元のブロックとの間の差分として計算し得る。TUは、必ずしも、PUのサイズに限定されるとは限らない。したがって、TUは、PUよりも大きいまたは小さいことがある。イントラコーディングの場合、CUの区分、またはCU自体は、CUのための対応するリーフTUとコロケートされ得る。いくつかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに対応し得る。
【0066】
[0072]さらに、リーフCUのTUはまた、残差4分木(RQT)と呼ばれる、それぞれの4分木データ構造に関連付けられ得る。すなわち、リーフCUは、そのリーフCUがTUにどのように区分されるのかを示す4分木を含み得る。TU4分木のルートノードは概してリーフCUに対応し、CU4分木のルートノードは概してCTU(またはLCU)に対応する。分割されないRQTのTUはリーフTUと呼ばれる。概して、本開示は、別段に明記されていない限り、リーフCUおよびリーフTUに言及するためにそれぞれCUおよびTUという用語を使用する。
【0067】
[0073]ビデオシーケンスは、一般に、ランダムアクセスポイント(RAP)ピクチャで開始する、一連のビデオフレームまたはピクチャを含む。ビデオシーケンスは、シーケンスパラメータセット(SPS)ビデオシーケンスのその特性中にシンタックスデータを含み得る。ピクチャの各スライスは、それぞれのスライスのための符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は、通常、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに作用する。ビデオブロックは、CU内のコーディングノードに対応し得る。ビデオブロックは、固定サイズまたは可変サイズを有し、指定のコーディング規格に応じてサイズが異なり得る。
【0068】
[0074]一例として、予測は様々なサイズのPUについて実行され得る。特定のCUのサイズが2N×2Nであると仮定すると、イントラ予測が、2N×2NまたはN×NのPUサイズに対して実行され得、インター予測が、2N×2N、2N×N、N×2N、またはN×Nの対称的なPUサイズに対して実行され得る。インター予測のための非対称区分は、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズについても実行され得る。非対称区分では、CUの一方向は区分されないが、他の方向は25%と75%とに区分される。25%の区分に対応するCUの部分は、「n」とそれに続く「Up」、「Down」、「Left」、または「Right」という表示によって示される。したがって、たとえば、「2N×nU」は、上部の2N×0.5N PUと下部の2N×1.5N PUとで水平方向に区分される2N×2N CUを指す。
【0069】
[0075]本開示では、「N×N(NxN)」および「N×N(N by N)」は、垂直寸法および水平寸法の観点からビデオブロックのピクセル寸法、たとえば、16×16(16x16)ピクセルまたは16×16(16 by 16)ピクセルを指すために互換的に使用され得る。一般に、16x16ブロックは、垂直方向に16ピクセルを有し(y=16)、水平方向に16ピクセルを有する(x=16)。同様に、N×Nブロックは、概して、垂直方向にNピクセルを有し、水平方向にNピクセルを有し、ここで、Nは非負整数値を表す。ブロック中のピクセルは行および列に配列され得る。さらに、ブロックは、必ずしも、水平方向において垂直方向と同じ数のピクセルを有する必要があるとは限らない。たとえば、ブロックはN×Mピクセルを備え得、ここで、Mは必ずしもNに等しいとは限らない。
【0070】
[0076]CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングに続いて、ビデオエンコーダ20は、CUのTUについての残差データを計算し得る。PUは、空間領域(ピクセル領域とも呼ばれる)において予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備え、TUは、変換、たとえば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の適用後に、変換領域において係数を備え得る。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ20は、CUのための残差データを表す被量子化変換係数を含むようにTUを形成し得る。すなわち、ビデオエンコーダ20は、(残差ブロックの形態の)残差データを計算し、変換係数のブロックを生成するために残差ブロックを変換し、次いで、被量子化変換係数を形成するために変換係数を量子化し得る。ビデオエンコーダ20は、被量子化変換係数を含むTU、ならびに他のシンタックス情報(たとえば、TUのためのスプリッティング情報)を形成し得る。
【0071】
[0077]上述のように、変換係数を生成するための任意の変換の後に、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスは、係数の一部またはすべてに関連するビット深度を低減し得る。たとえば、nビットの値は、量子化中にmビットの値に切り捨てられ得、ここで、nはmよりも大きい。
【0072】
[0078]量子化の後に、ビデオエンコーダは、変換係数を走査して、量子化された変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、アレイの前部により高いエネルギー(したがって、より低い周波数)係数を配置し、アレイの後部により低いエネルギー(したがって、より高い周波数)係数を配置するように設計され得る。いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化された変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。他の例では、ビデオエンコーダ20は適応型走査を実行し得る。1次元ベクトルを形成するために、量子化された変換係数を走査した後に、ビデオエンコーダ20は、たとえば、コンテキスト適応型可変長コーディング(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)コーディング、または別のエントロピー符号化方法に従って1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30によって使用するための、符号化ビデオデータに関連付けられたシンタックス要素をエントロピー符号化し得る。
【0073】
[0079]CABACを実行するために、ビデオエンコーダ20は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの近隣値が非0であるのか否かに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボルのための可変長コードを選択し得る。VLCにおけるコードワードは、比較的短いコードが優勢シンボルに対応し、より長いコードが劣勢シンボルに対応するように、構成され得る。このようにして、VLCの使用は、たとえば、送信されるべき各シンボルのために等長コードワードを使用することに勝るビット節約を達成し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
【0074】
[0080]概して、ビデオデコーダ30は、符号化データを復号するためにビデオエンコーダ20によって実行されるものと、逆ではあるが、実質的に同様のプロセスを実行する。たとえば、ビデオデコーダ30は、残差ブロックを再生するために、受信されたTUの係数を逆量子化および逆変換する。ビデオデコーダ30は、予測されたブロックを形成するために、シグナリングされた予測モード(イントラ予測またはインター予測)を使用する。次いで、ビデオデコーダ30は、元のブロックを再生するために、(ピクセルごとに)予測されたブロックと残差ブロックとを組み合わせる。ブロック境界に沿って視覚的アーティファクトを低減するためにデブロッキングプロセスを実行することなど、追加の処理が実行され得る。さらに、ビデオデコーダ30は、ビデオエンコーダ20のCABAC符号化プロセスと逆ではあるが、それと実質的に同様の様式でCABACを使用してシンタックス要素を復号し得る。
【0075】
[0081]概して、ビデオエンコーダ20とビデオデコーダ30とは、本開示の技法に従ってアフィン予測での動き情報をより効率的にコーディングする(それぞれ、符号化するまたは復号する)ように構成され得る。ビデオエンコーダ20および/またはビデオデコーダ30は、単独でまたは任意の組合せで、後述する様々な技法のいずれかを適用するように構成され得る。
【0076】
[0082]いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、アフィン予測を用いて予測されたブロック中の別のベクトル(MV)のMVDを予測するために1つの動きベクトル(MV)の動きベクトル差(MVD)を使用し得る。MVDは、MVと動きベクトル予測(MVP)との間の差MVD=MV-MVPとして定義され得る。より詳細には、動きベクトル(MVx,MVy)がそれの水平成分(MVx)と垂直成分(MVy)とによって示され、動きベクトル予測子が成分(MVPx,MVPy)を有する場合、MVDの水平(垂直)成分は、それぞれ、MVとMVPとの水平(垂直)成分の差として定義される。したがって、MVDは、(MVDx,MVDy)として定義され得、ここで、MVDx=MVx-MVPxであり、MVDy=MVy-MVPyである。
【0077】
[0083]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、アフィン予測において1つまたは複数の他のMVのMVDを予測するために第1のMVのMVDを使用するように構成され得る。
図9は、そのようなMVD予測の一例を示す概念図である。いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、アフィン予測(たとえば、4パラメータアフィン)において第2のMVのMVDを予測するために第1のMVのMVDを使用するように構成され得る。下の
図9は、2つの動きベクトルを用いるアフィン予測でのMVD予測の一例を示し、ここで、MVD1は、MVD0によって予測される。
【0078】
[0084]
図10は、3つの動きベクトルを用いるアフィン予測(6パラメータアフィン予測)でのMVD予測の一例を示す概念図である。6パラメータアフィン予測の場合、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のMVのMVDを予測するために第1のMVのMVDを使用し得る。さらに、ビデオエンコーダ20および/またはビデオデコーダ30は、3つの動きベクトルを用いるアフィン予測において第3のMVのMVDを予測するために第1のMVのMVDを使用し得る。
図10は、3つの動きベクトルを用いるアフィン予測でのMVD予測の一例を示し、ここで、MVD1は、MVD0によって予測され、MVD2はまた、MVD0によって予測される。
【0079】
[0085]
図6を再び参照すると、いくつかの例では、ビデオエンコーダ20とビデオデコーダ30とは、上記の例中の第1のMVが
図3、
図9、および
図10中の「MV0」で示される左上の制御点に関連するMVとして定義されるように構成し得る。代替的に、ビデオエンコーダ20とビデオデコーダ30とは、第1のMVに関連する第1の制御点を適応的に選択するように構成され得る。たとえば、第1の制御点は、ブロック形状などのコーディングされた情報に依存し得る。代替的に、ビデオエンコーダ20とビデオデコーダ30とは、第1のMVに関連する第1の制御点を暗黙的に導出し得る。
【0080】
[0086]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、アフィン予測では任意の2つのMVD間にMVD予測を適用するように構成され得る。たとえば、ビデオエンコーダ20とビデオデコーダ30とは、2つの動きベクトルを用いるアフィン予測ではMVD1からMVD0を予測し得る。別の例では、ビデオエンコーダ20とビデオデコーダ30とは、3つの動きベクトルを用いるアフィン予測ではMVD0からMVD1を予測し、MVD1からMVD2を予測し得る。
【0081】
[0087]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、MVDbからMVDaを予測するように構成され得る。ビデオエンコーダ20は、MVDa’=MVDa-MVDbを計算し、ビットストリームの一部としてMVDa’を表す情報をコーディングし得、したがって、ビデオデコーダ30は、MVDa’を決定するためにこの情報を復号し得る。ビデオデコーダ30は、次いで、MVDa=MVDa’+MVDbを計算し得る。一例では、4つのパラメータを用いるアフィン予測ではa=1であり、b=0である。
【0082】
[0088]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、MVDbからMVDaを予測するように構成され得る。ビデオエンコーダ20は、次いで、MVDa’=MVDa-w*MVDbを計算し、ビットストリームの一部としてMVDa’を表す情報をコーディングし得、したがって、ビデオデコーダ30は、MVDa’を決定するためにこの情報を復号し得る。ビデオデコーダ30は、次いで、MVDa=MVDa’+w*MVDbを計算し得る。この例では、wは、0.5などの重み付け値である。一例では、2つのパラメータを用いるアフィン予測ではa=1であり、b=0である。この例は、w=0.5であるときにMVD1’=MVD1-((MVD0+1)>>1)であるか、またはw=0.25であるときにMVD1’=MVD1-((MVD0+2)>>2)であるような整数形態(integer form)で実装され得る。一例では、ビデオエンコーダ20は、たとえば、(シーケンスパラメータセット(SPS)などの)シーケンスレベル、(ピクチャパラメータセット(PPS)などの)ピクチャレベル、(スライスヘッダ中でなどの)スライスレベル、または(ブロックヘッダ中でなどの)ブロックレベルでビットストリームの一部としてwを表すデータを符号化する。ビデオデコーダ30は、対応するレベルの情報からこのシグナリングされた情報をさらに抽出し得る。
【0083】
[0089]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、2つ以上の他の制御点のMVDから1つの制御点のMVDを予測するように構成され得る。たとえば、ビデオエンコーダ20とビデオデコーダ30とは、6パラメータアフィンモデルにおいてMVD0とMVD1とからMVD2を予測し得る。一例として、ビデオエンコーダ20は、MVD2’=MVD2-((MVD0+MVD1)>>1)を計算し、ビットストリームの一部としてMVD2’を表す情報をコーディングし得、したがって、ビデオデコーダ30は、MVD2’を決定するためにこの情報を復号し得る。ビデオデコーダ30は、次いで、MVD2=MVD2’+((MVD0+MVD1)>>1)を計算するためにこの情報を使用し得る。
【0084】
[0090]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、MVD値に基づいてMVDを予測すべきか否かを決定するように構成され得る。たとえば、ビデオエンコーダ20は、|MVDbx+MVDby|<Tである場合にMVDbからMVDaを予測することを決定し得、そうでない場合、ビデオエンコーダ20は、MVDbからMVDaを予測しない。別の例では、ビデオエンコーダ20は、max(|MVDbx|,|MVDby|)<Tである場合にMVDbからMVDaを予測することを決定し得、そうでない場合、ビデオエンコーダ20は、MVDbからMVDaを予測しない。さらに別の例では、ビデオエンコーダ20は、|MVDbx+MVDby|>Tである場合にMVDbからMVDaを予測し得、そうでない場合、ビデオエンコーダ20は、MVDbからMVDaを予測しない。さらに別の例では、ビデオエンコーダ20は、min(|MVDbx|,|MVDby|)>Tである場合にMVDbからMVDaを予測し得、そうでない場合、ビデオエンコーダ20は、MVDbからMVDaを予測しない。上記の例では、Tは、固定数であるか、またはビデオエンコーダ20によってシグナリングされ、ビデオデコーダ30によって復号され得るしきい値を表す。ビデオエンコーダ20は、上記の例示的な決定のいずれかに基づいてMVDbからMVDaを予測すべきか否かを表すデータを符号化し得、ビデオデコーダ30は、MVDbからMVDaを予測すべきかどうかを決定するためにこの符号化されたデータを復号し得る。
【0085】
[0091]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、様々な方法でMVDの水平(x)および/または垂直(y)成分を予測するように構成され得る。たとえば、ビデオエンコーダ20とビデオデコーダ30とは、MVDaのx成分からMVDbのx成分のみを予測するが、別のMVD(たとえば、MVDa)からMVDbのy成分を予測しないことがある。
【0086】
[0092]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、MVPの値に基づいてMVDを予測すべきかどうかについて決定するように構成され得る。たとえば、ビデオエンコーダ20は、|MVPax-MVPbx|+|MVPay-MVPby|<Sである場合にMVDbからMVDaを予測することを決定し得、そうでない場合、ビデオエンコーダ20は、MVDbからMVDaを予測しない。別の例では、ビデオエンコーダ20は、max(||MVPax-MVPbx|,|MVPay-MVPby|)<Sである場合にMVDbからMVDaを予測することを決定し得、そうでない場合、ビデオエンコーダ20は、MVDbからMVDaを予測しない。上記の例では、Sは、固定数であるか、またはビデオエンコーダ20によってシグナリングされ、ビデオデコーダ30によって復号され得るしきい値を表す。ビデオエンコーダ20は、上記の例示的な決定のいずれかに基づいてMVDbからMVDaを予測すべきか否かを表すデータを符号化し得、ビデオデコーダ30は、MVDbからMVDaを予測すべきかどうかを決定するためにこの符号化されたデータを復号し得る。
【0087】
[0093]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、動き予測方法に基づいてアフィン予測を使用して予測されるブロックのためのMVDを予測すべきかどうかを決定するように構成され得る。たとえば、MVPが
図3に関して上記で説明したようにJEMにおけるMVP導出方法から来る場合、ビデオエンコーダ20とビデオデコーダ30とは、MVD予測を使用しないことを決定し得る。別の例として、MVPが米国仮出願第62/404,719号に関して上記で説明したアフィンマージと同様のMVP導出方法から来る場合、ビデオエンコーダ20とビデオデコーダ30とは、MVD予測を使用することを決定し得る。追加または代替として、ビデオエンコーダ20とビデオデコーダ30とは、照度補償がMVPのソースブロックのために使用されるのかどうかに基づいてMVD予測を使用すべきかどうかを決定し得る。
【0088】
[0094]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、現在のブロックのサイズおよび/または形状に基づいてMVDを予測すべきかどうかについて決定するように構成され得る。たとえば、ビデオエンコーダ20とビデオデコーダ30とは、W*H>TであるときにMVD予測を使用することを決定し得、ここで、Wは、現在のブロックの幅を表し、Hは、現在のブロックの高さを表し、Tは、しきい値を表す。Tは、固定数であるか、またはビットストリーム中でビデオエンコーダ20からビデオデコーダ30にシグナリングされ得る。別の例では、ビデオエンコーダ20とビデオデコーダ30とは、W*H<TであるときにMVD予測を使用することを決定し得る。
【0089】
[0095]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、ビットストリーム中のMVD(またはそれの成分)を予測すべきか否かを表すデータをコーディングするように構成され得る。すなわち、ビデオエンコーダ20は、ビットストリーム中のMVDのいずれかのまたは両方の成分(水平および垂直)を予測すべきかどうかを表すデータを符号化し得、ビデオデコーダ30は、(データを復号することによって)ビットストリームの符号化されたデータからMVDのいずれかのまたは両方の成分を予測すべきかどうかを決定し得る。
【0090】
[0096]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、どの(1つまたは複数の)制御点をビットストリーム中のMVD予測のための参照として使用すべきかを表すデータをコーディングするように構成され得る。すなわち、ビデオエンコーダ20は、このデータを符号化し得、ビデオデコーダ30は、どの(1つまたは複数の)制御点をMVD予測のための参照として使用すべきかを決定するためにこのデータを復号し得る。
【0091】
[0097]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、アフィン予測を使用して予測されるブロック中の別のMVのMVDからMVのMVPを生成するように構成され得る。
【0092】
[0098]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、アフィン予測において1つまたは複数の他のMVのMVPを生成するために第1のMVのMVDを使用するように構成され得る。一例では、ビデオエンコーダ20およびビデオデコーダ30は、アフィン予測(たとえば、4パラメータアフィン)において第2のMVのMVPを生成するために第1のMVのMVDを使用し得る。別の例では、6パラメータアフィン予測の場合、ビデオエンコーダ20とビデオデコーダ30とは、3つの動きベクトルを用いるアフィン予測において第2のMVのMVPを生成するために第1のMVのMVDを使用し得る。さらに、ビデオエンコーダ20とビデオデコーダ30とは、3つの動きベクトルを用いるアフィン予測において第3のMVのMVPを生成するために第1のMVのMVDを使用し得る。代替的に、ビデオエンコーダ20とビデオデコーダ30とは、3つの動きベクトルを用いるアフィン予測において第3のMVのMVPを生成するために第2のMVのMVDを使用し得る。
【0093】
[0099]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、2つの動きベクトルを用いるアフィン予測ではMVD1からMVP0を生成するように構成され得る。別の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、3つの動きベクトルを用いるアフィン予測ではMVD0からMVP1を生成し、MVD1からMVP2を生成するように構成され得る。
【0094】
[0100]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、MVPa=MVP’a+MVDbに従ってMVPaを計算するように構成され得る。MVP’aは、アフィン予測のためのAMVPおよびマージモードについて上記で説明したようにMVDbについて考えることなしに元の(original)方法で生成されたMVPを表す。一例では、4つのパラメータ(2つの動きベクトル)を用いるアフィン予測ではa=1であり、b=0である。
【0095】
[0101]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、MVPa=MVP’a+w*MVDbに従ってMVPaを計算するように構成され得、ここで、wは、0.5などの重み付け値である。この例では、MVP’aは、アフィン予測のためのAMVPおよびマージモードについて上記で説明したようにMVDbについて考えることなしに元の方法で生成されたMVPである。一例では、2つのパラメータを用いるアフィン予測ではa=1であり、b=0である。この例は、w=0.5であるときにMVP1=MVP’1+((MVD0+1)>>1)であるか、またはw=0.25であるときにMVP1=MVP’1+((MVD0+2)>>2)であるような整数形態(integer form)で実装され得る。一例では、ビデオエンコーダ20は、wを決定し、シーケンスレベル、ピクチャレベル、スライスレベル、またはブロックレベルでビットストリーム中でwの値をシグナリングする。ビデオデコーダ30は、相応して、適切なレベルの情報からwの値を復号することになる。
【0096】
[0102]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、複数の他の制御点の複数のMVDから1つの制御点のMVPを生成するように構成され得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30とは、6パラメータアフィンモデルにおいてMVD0とMVD1とからMVP2を生成し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、MVP2=MVP’2+((MVD0+MVD1)>>1)としてMVP2を計算し得る。
【0097】
[0103]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、アフィン予測を使用して予測される1つのブロック中の1つまたは複数の他の制御点の(1つまたは複数の)MVの(1つまたは複数の)MVPを生成するために1つの制御点のMVを使用するように構成され得る。一例では、ビデオエンコーダ20および/またはビデオデコーダ30は、アフィン予測(たとえば、4パラメータアフィン)において第2のMVのMVPを生成するために第1のMVを使用し得る。別の例では、6パラメータアフィン予測の場合、ビデオエンコーダ20および/またはビデオデコーダ30とは、3つの動きベクトルを用いるアフィン予測において第2のMVのMVPを生成するために第1のMVを使用し、3つの動きベクトルを用いるアフィン予測において第3のMVのMVPを生成するために第1のMVを使用し得る。代替的に、6パラメータアフィン予測の場合、エンコーダ20および/またはビデオデコーダ30は、3つの動きベクトルを用いるアフィン予測において第3のMVのMVPを生成するために第2のMVを使用し得る。
【0098】
[0104]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、MVPa=(MVP’a+MVb)>>1としてMVPaを計算するように構成され得る。MVP’aは、アフィン予測のためのAMVPおよびマージを説明したセクションにおいて上記で説明したようにMVbについて考えることなしに元の方法で生成されたMVPである。一例では、4つのパラメータを用いるアフィン予測ではa=1であり、b=0である。
【0099】
[0105]追加または代替として、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、MVPa=w1*MVP’a+w2*MVbとしてMVPaを計算するように構成され得る。この例では、w1とw2とは、同じまたは異なる値、たとえば、w1=w2=0.5を有し得る重み付け値である。MVP’aは、アフィン予測のためのAMVPおよびマージモードに関する上記のセクションにおいて説明したようにMVbについて考えることなしに元の方法で生成されたMVPである。一例では、4つのパラメータを用いるアフィン予測ではa=1であり、b=0である。この例は、w1=0.75であり、w2=0.25であるときにMVP1=(3*MVP’1+MV0+2)>>2であるような整数形態で実装され得る。一例では、ビデオエンコーダ20は、シーケンスレベル、ピクチャレベル、スライスレベル、またはブロックレベルのいずれかでビットストリーム中でw1およびw2についてのデータを符号化する。同様に、ビデオデコーダ30は、適切なレベルでこのデータを復号することによってw1とw2とを決定することになる。
【0100】
[0106]ビデオエンコーダ20は、さらに、ブロックベースシンタックスデータ、ピクチャベースシンタックスデータ、およびシーケンスベースシンタックスデータなど、シンタックスデータを、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、あるいはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、またはビデオパラメータセット(VPS)など、他のシンタックスデータ中でビデオデコーダ30に送り得る。
【0101】
[0107]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、適用可能なとき、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、離散論理回路、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、様々な好適なエンコーダまたはデコーダ回路のいずれかとして実装され得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも複合ビデオエンコーダ/デコーダ(コーデック)の一部として組み込まれ得る。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
【0102】
[0108]
図7は、アフィン予測動き情報を符号化するための本開示の技法を実装し得るビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングとインターコーディングとを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間冗長性を低減または除去するために、空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの時間冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースコーディングモードのいずれかを指すことがある。単方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースのコーディングモードのいずれかを指すことがある。
【0103】
[0109]
図7に示すように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内で現在のビデオブロックを受信する。
図7の例では、ビデオエンコーダ20は、モード選択ユニット40と、(復号ピクチャバッファ(DPB)と呼ばれることもある)参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。モード選択ユニット40は、今度は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット46と、区分ユニット48とを含む。ビデオブロックの再構成のために、ビデオエンコーダ20は、また、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するための(
図7に示されていない)デブロッキングフィルタも含まれ得る。所望される場合、デブロッキングフィルタは、通常、加算器62の出力をフィルタリングすることになる。デブロッキングフィルタに加えて、追加のフィルタ(ループ内またはループ後)も使用され得る。そのようなフィルタは、簡潔のために示されていないが、所望される場合、(ループ内フィルタとして)加算器50の出力をフィルタリングし得る。
【0104】
[0110]符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間予測を行うために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対する受信されたビデオブロックのインター予測符号化を実行する。イントラ予測ユニット46は、代替的に、空間予測を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対する受信されたビデオブロックのイントラ予測符号化を実行し得る。ビデオエンコーダ20は、たとえば、ビデオデータの各ブロックについて適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
【0105】
[0111]その上、区分ユニット48は、以前のコーディングパスにおける以前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、区分ユニット48は、初めにフレームまたはスライスをCTUに区分し、レートひずみ分析(たとえば、レートひずみ最適化)に基づいてCTUの各々をサブCUに区分し得る。モード選択ユニット40は、さらに、サブCUへのCTUの区分を示す4分木データ構造を生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。
【0106】
[0112]モード選択ユニット40は、たとえば、誤差結果に基づいて予測モード、すなわち、イントラまたはインターのうちの1つを選択し得、残差データを生成するために、得られた予測されたブロックを加算器50に与え、参照フレームとして使用するための符号化ブロックを再構成するために、得られた予測されたブロックを加算器62に与える。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、区分情報、および他のそのようなシンタックス情報などのシンタックス要素をエントロピー符号化ユニット56に与える。
【0107】
[0113]動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別個に示されている。動き推定ユニット42によって実施される動き推定は、ビデオブロックの動きを推定する動きベクトルを発生するプロセスである。動きベクトルは、たとえば、現在のフレーム内でコーディングされている現在のブロック(または、他のコード化ユニット)に対する、参照フレーム内の予測ブロック(または、他のコード化ユニット)に対する、現在のビデオフレーム内またはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、ピクセル差分の観点で、コーディングされるべきブロックと密に適合すると見出されたブロックであり、ピクセル差分は、絶対値差分の合計(SAD)、二乗差分の合計(SSD)、または他の差分の測定規準によって決定され得る。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの4分の1ピクセル位置、8分の1ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置と分数ピクセル位置とに対して動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
【0108】
[0114]動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックに関するPUの動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの参照ピクチャリストの各々は、参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
【0109】
[0115]動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは発生することを伴い得る。この場合も、動き推定ユニット42および動き補償ユニット44は、いくつかの例では、機能的に統合され得る。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストのうちの1つにおいてそれを指す予測ブロックの位置を特定し得る。加算器50は、下で議論されるように、コーディングされつつある現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差値を形成することによって、残差ビデオブロックを形成する。一般に、動き推定ユニット42は、ルーマ成分に対して動き推定を実行し、動き補償ユニット44は、クロマ成分とルーマ成分の両方に関して、ルーマ成分に基づいて計算された動きベクトルを使用する。動き補償ユニット44は、動きベクトルを使用して予測ブロックを生成し得、これは、動きベクトルと呼ばれる予測ブロックの値を補間するかまたは場合によっては数学的に操作することを含み得る。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を発生し得る。
【0110】
[0116]ビデオエンコーダ20は、
図6に関して上記で説明された本開示の様々な技法のいずれかを実行するように構成され得る。たとえば、動き補償ユニット44は、HEVCに従ってAMVPまたはマージモードを使用してビデオデータのブロックについての動き情報をコーディングするように構成され得、および/または本開示の技法に従ってアフィンインターモードまたはアフィンマージモードを使用してアフィン動き情報またはビデオデータのブロックをコーディングするように構成され得る。
【0111】
[0117]イントラ予測ユニット46は、上記で説明したように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば別々の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードから使用すべき適当なイントラ予測モードを選択し得る。
【0112】
[0118]たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化されたブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化ブロックのひずみおよびレートから比を計算し得る。
【0113】
[0119]イントラ予測ユニット46は、ブロックに関するイントラ予測モードを選択した後、ブロックに関して選択されたイントラ予測モードを示す情報を、エントロピー符号化ユニット56に提供し得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の変更されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および変更されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを送信ビットストリーム中に含み得る。
【0114】
[0120]ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用し、変換係数値を備えるビデオブロックを生成する。ウェーブレット変換、整数変換、サブバンド変換、離散サイン変換(DST)、または他のタイプの変換が、DCTの代わりに使用され得る。いずれの場合も、変換処理ユニット52は、変換を残差ブロックに適用し、変換係数のブロックを生成する。変換は、残差情報をピクセル領域から周波数領域などの変換領域に変換し得る。変換処理ユニット52は、得られた変換係数を量子化ユニット54へ送り得る。量子化ユニット54は、ビットレートをさらに低減するために、変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連付けられたビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって、変更され得る。
【0115】
[0121]量子化に続いて、エントロピー符号化ユニット56は量子化された変換係数をエントロピーコーディングする。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型2値算術コーディング(CABAC)、シンタックスベースコンテキスト適応型2値算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピーコーディング技法を実行し得る。コンテキストベースエントロピーコーディングの場合、コンテキストは近隣ブロックに基づき得る。エントロピー符号化ユニット56によるエントロピーコーディングに続いて、符号化ビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)に送信されるか、または後で送信するかもしくは取り出すためにアーカイブされ得る。
【0116】
[0122]逆量子化ユニット58および逆変換ユニット60は、ピクセル領域において残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。特に、加算器62は、参照ピクチャメモリ64に記憶するための再構成されたビデオブロックを生成するために、動き補償ユニット44またはイントラ予測ユニット46によって前に生成された動き補償予測ブロックに、再構成された残差ブロックを加算する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために、動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
【0117】
[0123]
図8は、アフィン予測動き情報を復号するための本開示の技法を実装し得るビデオデコーダ30の一例を示すブロック図である。
図8の例では、ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、参照ピクチャメモリ82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(
図7)に関して説明された符号化パスに対して概ね相反の復号パスを実行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて、予測データを生成し得、一方、イントラ予測ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて、予測データを生成し得る。
【0118】
[0124]復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化されたビデオスライスのビデオブロックと、関連するシンタックス要素とを表す、符号化されたビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化係数、動きベクトルまたはイントラ予測モードインジケータ、および他のシンタックス要素を生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルと、他のシンタックス要素とを、動き補償ユニット72へ転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでのシンタックス要素を受信し得る。
【0119】
[0125]ビデオスライスが、イントラコード化(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、現在のフレームまたはピクチャの以前に復号されたブロックから、シグナリングされたイントラ予測モードおよびデータに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化(すなわち、BまたはP)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つの内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ82に記憶された参照ピクチャに基づくデフォルト構成技法を使用して、参照フレームリスト、リスト0およびリスト1を構成し得る。動き補償ユニット72は、動きベクトルと他のシンタックス要素とをパースすることによって現在のビデオスライスのビデオブロックのための予測情報を決定し、この予測情報を使用して、復号されている現在のビデオブロックのための予測ブロックを生成する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)と、インター予測スライスタイプ(たとえば、BスライスまたはPスライス)と、スライスの参照ピクチャリストのうちの1つまたは複数についての構成情報と、スライスの各インター符号化されたビデオブロックのための動きベクトルと、スライスの各インターコーディングされたビデオブロックについてのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用する。
【0120】
[0126]ビデオデコーダ30は、
図6に関して上記で説明された本開示の様々な技法のいずれかを実行するように構成され得る。たとえば、動き補償ユニット72は、HEVCに従ってAMVPまたはマージモードを使用して動きベクトル予測を実行するように構成され得、および/または本開示の技法に従ってアフィンインターモードまたはアフィンマージモードを使用してアフィン動き情報またはビデオデータのブロックを実行するように構成され得る。エントロピー復号ユニット70は、動き情報(たとえば、アフィン動き情報)が現在のブロックについてどのようにコーディングされるかを表す1つまたは複数のシンタックス要素を復号し得る。
【0121】
[0127]動き補償ユニット72はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット72は、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。このケースでは、動き補償ユニット72は、受信したシンタックス要素からビデオエンコーダ20で使用された補間フィルタを決定し、補間フィルタを使用して予測ブロックを生成し得る。
【0122】
[0128]逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された量子化された変換係数を逆量子化、すなわち、量子化解除(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中の各ビデオブロックについてビデオデコーダ30によって計算される量子化パラメータQPYの使用を含み得る。
【0123】
[0129]逆変換ユニット78は、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用して、ピクセル領域において残差ブロックを生成する。
【0124】
[0130]動き補償ユニット72が、動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数の構成要素を表す。望まれる場合に、デブロッキングフィルタも、ブロッキネスアーティファクトを除去するために、復号されたブロックをフィルタリングするために適用され得る。他のループフィルタ(コーディングループ内またはコーディングループの後のいずれであれ)も、ピクセル推移を平滑化し、または他の形でビデオ品質を改善するために、使用され得る。その後、所与のフレームまたはピクチャ内の復号されたビデオブロックは、参照ピクチャメモリ82内に記憶され、参照ピクチャメモリ82は、後続の動き補償のために使用される参照ピクチャを記憶する。参照ピクチャメモリ82はまた、
図6のディスプレイデバイス32などのディスプレイデバイス上で後に提示するために、復号されたビデオを記憶する。
【0125】
[0131]
図11は、本開示の技法による、ビデオデータの現在のブロックを符号化するための例示的な方法を示すフローチャートである。例および説明の目的で、
図11の方法は、
図6および
図7のビデオエンコーダ20に関して説明される。ただし、他のデバイスが、この方法または同様の方法を実行するように構成され得ることを理解されたい。
【0126】
[0132]最初に、
図11には示されていないが、モード選択ユニット40は、現在のブロックを予測するために使用されるべき予測モードを決定し得る。この例では、モード選択ユニット40は、少なくとも2つの動きベクトルを使用した予測を含むアフィン予測モードを選択すると仮定する。したがって、モード選択ユニット40は、動き推定ユニット42に、第1の動きベクトルと第2の動きベクトルとを決定するために動き探索を実行させる(100)。モード選択ユニット40は、イントラ予測、インター予測、およびアフィン予測などの様々な予測方法間のレートひずみ結果を比較し、アフィン予測が様々なテストされた予測モードのうちで最良のレートひずみ結果を生じると決定し得る。
【0127】
[0133]動き推定ユニット42が第1のおよび第2の動きベクトルを決定した後、ビデオエンコーダ20は、第1の動きベクトルについて第1の動きベクトル予測子(MVP)を計算し得る(102)。第1のMVPは、隣接ブロックの動きベクトルに対応し得る。ビデオエンコーダ20は、次いで、第1の動きベクトルと第1の動きベクトル予測子との間の差として第1の動きベクトル差(MVD)を計算し得る(104)。特に、ビデオエンコーダ20は、それぞれ、動きベクトルとMVDとのx成分とy成分との両方の間の差を計算し得る。
【0128】
[0134]ビデオエンコーダ20は、次いで、第2の動きベクトルについて第2のMVPを決定し得る(106)。ビデオエンコーダ20は、さらに、第2の動きベクトルと第2のMVDとの間の差として第2のMVDを計算し得る(108)。
【0129】
[0135]動き補償ユニット44はまた、現在のブロックのための予測ブロックを生成するためにアフィン予測を使用して現在のブロックを予測し得る(110)。例として2つの動きベクトルについて説明したが、予測ブロックを生成するためにアフィン予測のために3つの動きベクトルが使用され得ることを理解されたい。同様に、ビデオエンコーダ20は、上記で説明したように、第3の動きベクトルのための本開示の技法によれば第3のMVDと第3のMVPとを生成し得る。
【0130】
[0136]予測ブロックを生成した後、ビデオエンコーダ20は、現在のブロックと予測ブロックとの間のピクセルごとの差を表す残差ブロックを計算し得る(112)。特に、加算器50は、現在のブロックと予測ブロックとの間のピクセルごとの差を計算し得る。ビデオエンコーダ20は、次いで、現在のブロックを符号化するために第1のMVDと、第2のMVDと、残差ブロックとを符号化し得る(114)。すなわち、本開示の技法によれば、ビデオエンコーダ20は、たとえば、マージモードまたはAMVPモードなどの動きベクトル予測技法を使用して第1のMVDを符号化し、第1のMVDから第2のMVDを予測することによって第2のMVDを符号化し得る。したがって、第2のMVDを符号化するために、ビデオエンコーダ20は、第1のMVDと第2のMVDとのx成分とy成分との間の差などの第1のMVDと第2のMVDとの間の差を表すデータを符号化し得る。残差ブロックを符号化するために、変換処理ユニット52は、残差ブロックを変換し得、量子化ユニット54は、得られた変換ブロックの変換係数を量子化し得、エントロピー符号化ユニット56は、得られた量子化された変換係数をエントロピー符号化し得る。
【0131】
[0137]このようにして、
図11の方法は、アフィン予測を使用して予測されるビデオデータの現在のブロックの第1の動きベクトルと第1の動きベクトルのための第1の動きベクトル予測子(MVP)との間の差を表す第1の動きベクトル差(MVD)をコーディングする(すなわち、符号化する)ことと、現在のブロックの第2の動きベクトルについて第1のMVDから第2のMVDを予測することと、第1の動きベクトルと第2の動きベクトルとに従ってアフィン予測を使用して現在のブロックをコーディングする(すなわち、符号化する)こととを含む方法の一例を表す。
図11の方法を実行することによって、第2のMVDが第1のMVDから予測されるので第2のMVDを表すデータがより小さくなり得るので、ビデオエンコーダ20は、前の技法を実行するときより良い帯域幅効率であるビットストリームを生成し得る。
【0132】
[0138]
図12は、本開示の技法による、ビデオデータの現在のブロックを復号する例示的な方法を示すフローチャートである。
図12の方法について、例として
図6および
図8のビデオデコーダ30に関して説明する。ただし、他のデバイスが、この方法または同様の方法の技法を実行するように構成され得ることを理解されたい。
【0133】
[0139]ビデオデコーダ30は、現在のブロックの第1の動きベクトル差(MVD)、第2のMVD、および残差ブロックを復号し得る(120)。すなわち、本開示の技法によれば、ビデオデコーダ30は、たとえば、マージモードまたはAMVPモードなどの動きベクトル予測技法を使用して第1のMVDを復号し、第1のMVDから第2のMVDを予測することによって第2のMVDを復号し得る。したがって、第2のMVDを復号するために、ビデオデコーダ30は、第1のMVDと第2のMVDとのx成分とy成分との間の差などの第1のMVDと第2のMVDとの間の差を表すデータを復号し得る。残差ブロックを復号するために、エントロピー復号ユニット70は、量子化された変換係数をエントロピー復号し、逆量子化ユニット76は、変換係数を逆量子化し、逆変換ユニット78は、残差ブロックを再生するために変換係数を逆変換し得る。
【0134】
[0140]動き補償ユニット72は、次いで、現在のブロックの第1の動きベクトルのための第1の動きベクトル予測子(MVP)を決定し(122)、第1のMVPから第1の動きベクトルを計算し得る(124)。特に、動き補償ユニット72は、第1の動きベクトルを計算するために第1のMVPに第1のMVDを加算し得る。動き補償ユニット72は、同様に、現在のブロックの第2の動きベクトルのための第2のMVPを決定し(126)、第2のMVPから第2の動きベクトルを計算し得る(128)。特に、動き補償ユニット72は、第2の動きベクトルを計算するために第2のMVPに第2のMVDを加算し得る。いくつかの例では、第3の動きベクトルが含まれ得、その場合、エントロピー復号ユニット70は、たとえば、第3の動きベクトルのための第1のMVDと第3のMVDとの間の差を表すデータをエントロピー復号し得、動き補償ユニット72は、同様の様式で第3のMVDと第3のMVPとから第3の動きベクトルを計算し得る。
【0135】
[0141]動き補償ユニット72は、次いで、第1のおよび第2の(および潜在的に第3の)動きベクトルを使用して、たとえば、アフィン動き予測に従って現在のブロックを予測し得る(130)。ビデオデコーダ30は、次いで、たとえば、加算器80に、ピクセルごとに残差ブロックの値に予測ブロックの値を加算させることによって現在のブロックを復号し得る(132)。
【0136】
[0142]このようにして、
図12の方法は、アフィン予測を使用して予測されるビデオデータの現在のブロックの第1の動きベクトルと、第1の動きベクトルのための第1の動きベクトル予測子(MVP)と、の間の差を表す第1の動きベクトル差(MVD)をコーディングする(すなわち、復号する)ことと、現在のブロックの第2の動きベクトルについて第1のMVDから第2のMVDを予測することと、第1の動きベクトルと第2の動きベクトルとに従ってアフィン予測を使用して現在のブロックをコーディングする(すなわち、復号する)ことと、を含む方法の一例を表す。
図12の方法を実行することによって、第2のMVDが第1のMVDから予測されるので第2のMVDを表すデータがより小さくなり得るので、ビデオデコーダ30は、前の技法を実行するときより良い帯域幅効率であるビットストリームを復号し得る。
【0137】
[0143]上記例に応じて、本明細書で説明された技法のいずれかのいくつかの行為またはイベントが、異なるシーケンスで実施され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明された行為またはイベントが本技法の実施のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実施され得る。
【0138】
[0144]1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実施され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的な有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【0139】
[0145]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。さらに、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体が、接続、搬送波、信号、または他の一時的媒体を含むのではなく、非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu-rayディスク(disc)を含み、ここで、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上述の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【0140】
[0146]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、または本明細書で説明した技法の実装に好適な任意の他の構造のいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用のハードウェアモジュールおよび/またはソフトウェアモジュール内で提供され得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
【0141】
[0147]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置で実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされ得るか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
【0142】
[0148]様々な例について説明した。これらおよび他の例は添付の特許請求の範囲内に入る。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1] ビデオデータをコーディングする方法であって、
アフィン予測を使用して予測されるビデオデータの現在のブロックの第1の動きベクトルと、前記第1の動きベクトルのための第1の動きベクトル予測子(MVP)と、の間の差を表す第1の動きベクトル差(MVD)をコーディングすることと、
前記現在のブロックの第2の動きベクトルについて、前記第1のMVDから第2のMVDを予測することと、
前記第1の動きベクトルと前記第2の動きベクトルとに従ってアフィン予測を使用して前記現在のブロックをコーディングすることと、
を備える方法。
[C2] 前記第1のMVDは、水平成分(MVDx1)と垂直成分(MVDy1)とを含み、 前記第1のMVPは、水平成分(MVPx1)と垂直成分(MVPy1)とを含み、 前記第1の動きベクトルは、水平成分(MVx1)と垂直成分(MVy1)とを含み、 MVDx1=MVx1-MVPx1、および、MVDy1=MVy1-MVPy1である、
C1に記載の方法。
[C3] 前記現在のブロックをコーディングすることは、4つのパラメータアフィンモデル
【数6】
に従って前記現在のブロックをコーディングすることを備える、C1に記載の方法。
[C4] 前記現在のブロックの第3の動きベクトルについて、前記第1のMVDまたは前記第2のMVDのうちの少なくとも1つから第3のMVDを予測すること、をさらに備え、
前記現在のブロックをコーディングすることは、前記第1の動きベクトルと、前記第2の動きベクトルと、前記第3の動きベクトルとに従ってアフィン予測を使用して前記現在のブロックをコーディングすることを備える、C1に記載の方法。
[C5] 前記現在のブロックをコーディングすることは、6つのパラメータアフィンモデル
【数7】
に従って前記現在のブロックをコーディングすることを備える、C4に記載の方法。
[C6] 前記第1の動きベクトルは、前記現在のブロックの左上隅から発生し、前記第2の動きベクトルは、前記現在のブロックの右上隅から発生する、C1に記載の方法。
[C7] 前記第1の動きベクトルと前記第2の動きベクトルとのための制御点を定義するデータをコーディングすることをさらに備える、C1に記載の方法。
[C8] 前記現在のブロックの形状に基づいて前記第1の動きベクトルと前記第2の動きベクトルとのための制御点を決定することをさらに備える、C1に記載の方法。
[C9] 前記第1の動きベクトルと前記第2の動きベクトルとのための制御点を暗黙的に導出することをさらに備える、C1に記載の方法。
[C10] 前記第2のMVDのためのMVD’2を表すデータをコーディングすること、をさらに備え、MVD’2は、前記第1のMVDに対する前記第2のMVDの残差値を表す、C1に記載の方法。
[C11] 前記第1のMVDは、MVD1を備え、前記第2のMVDは、MVD2を備え、wは、重み付け値を備え、MVD’2=MVD1-w*MVD2である、C10に記載の方法。
[C12] 前記第1のMVDは、MVD1を備え、前記第2のMVDは、MVD2を備え、0.5の重み付け値の場合、MVD’2=MVD2-((MVD1+1)>>1)である、C10に記載の方法。
[C13] 前記第1のMVDは、MVD1を備え、前記第2のMVDは、MVD2を備え、0.25の重み付け値の場合、MVD’2=MVD2-((MVD1+2)>>2)である、C10に記載の方法。
[C14] 前記第1のMVDから前記第2のMVDを予測すると決定すること、をさらに備え、 前記第1のMVDから前記第2のMVDを予測することは、前記第1のMVDから前記第2のMVDを予測すると決定することに応答して、前記第1のMVDから前記第2のMVDを予測することを備える、C1に記載の方法。
[C15] 前記第1のMVDから前記第2のMVDを予測すると決定することは、前記現在のブロックの形状に基づいて、前記第1のMVDから前記第2のMVDを予測すると決定することを備える、C14に記載の方法。
[C16] 前記第1のMVDから前記第2のMVDを予測すると決定することは、前記現在のブロックのための動き予測方法に基づいて、前記第1のMVDから前記第2のMVDを予測すると決定することを備える、C14に記載の方法。
[C17] 前記第1のMVDから前記第2のMVDを予測すると決定することは、前記動き予測方法がアフィンマージモードであると決定することを備える、C16に記載の方法。
[C18] 前記第2のMVDは、水平成分(MVD2
x
)と垂直成分(MVD2
y
)とを含み、前記第2のMVDを予測することは、MVD2
y
を予測することとは別様にMVD2
x
を予測することを備える、C1に記載の方法。
[C19] 前記第1のMVDまたは前記第2のMVDのうちの少なくとも1つから、前記現在のブロックの第3の動きベクトルのための第3のMVPを生成することをさらに備える、C1に記載の方法。
[C20] 前記第1のMVDは、MVD1を備え、前記方法は、
前記現在のブロックの1つまたは複数の隣接ブロックの動きベクトルから、前記第2の動きベクトルのための第2の中間MVP(MVP’2)を決定することと、
MVP’2とMVD1とから、前記第2の動きベクトルのための第2のMVP(MVP2)を生成することと、
をさらに備える、C1に記載の方法。
[C21] 前記現在のブロックの第3の動きベクトルについて、前記第1のMVDと第3のMVDとから前記第2の動きベクトルのための第2のMVPを生成すること、ここにおいて、前記第2のMVPは、MVP2を備え、前記第1のMVDは、MVD1を備え、前記第3のMVDは、MVD3を備える、をさらに備え、前記方法は、
前記現在のブロックの1つまたは複数の隣接ブロックの動きベクトルから、前記第2の動きベクトルのための第2の中間MVP(MVP’2)を決定することをさらに備え、 MPV2を生成することは、MVP2=MVP’2+((MVD1+MVD3)>>1)としてMVP2を生成することを備える、C1に記載の方法。
[C22] 前記現在のブロックをコーディングすることは、前記現在のブロックを復号することを備え、前記現在のブロックを復号することは、
前記第1の動きベクトルを再構成するために、前記第1のMVPに前記第1のMVDを加算することと、
前記第2の動きベクトルのための第2のMVPを決定することと、
前記第1のMVDからの前記予測を使用して前記第2のMVDを再構成することと、 前記第2の動きベクトルを再構成するために、前記第2のMVPに前記第2のMVDを加算することと、
前記第1の動きベクトルと前記第2の動きベクトルとを使用して、前記現在のブロックのための予測ブロックを形成することと、
前記現在のブロックのための残差ブロックを復号することと、
前記現在のブロックを再構成するために、前記残差ブロックと前記予測ブロックとを加算することと、
を備える、C1に記載の方法。
[C23] 前記現在のブロックをコーディングすることは、前記現在のブロックを符号化することを備え、前記現在のブロックを符号化することは、
前記第1のMVDを生成するために、前記第1の動きベクトルから前記第1のMVPを減算することと、
前記第2の動きベクトルのための第2のMVPを決定することと、
前記第2のMVDを生成するために、前記第2のMVPから前記第2の動きベクトルを減算することと、
前記第1のMVDを符号化することと、
前記第1のMVDから予測された前記第2のMVDを表すデータを符号化することと、 前記第1の動きベクトルと前記第2の動きベクトルとを使用して、前記現在のブロックのための予測ブロックを形成することと、
残差ブロックを生成するために、前記現在のブロックから前記予測ブロックを減算することと、
前記残差ブロックを符号化することと、
を備える、C1に記載の方法。
[C24] ビデオデータをコーディングするためのデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
回路に実装された1つまたは複数のプロセッサと、を備え、前記1つまたは複数のプロセッサは、
アフィン予測を使用して予測されるビデオデータの現在のブロックの第1の動きベクトルと、前記第1の動きベクトルのための第1の動きベクトル予測子(MVP)と、の間の差を表す第1の動きベクトル差(MVD)をコーディングすることと、
前記現在のブロックの第2の動きベクトルについて、前記第1のMVDから第2のMVDを予測することと、
前記第1の動きベクトルと前記第2の動きベクトルとに従ってアフィン予測を使用して前記現在のブロックをコーディングすることと、
を行うように構成された、デバイス。
[C25] 前記1つまたは複数のプロセッサは、
前記第1の動きベクトルを再構成するために、前記第1のMVPに前記第1のMVDを加算することと、
前記第2の動きベクトルのための第2のMVPを決定することと、
前記第1のMVDからの前記予測を使用して前記第2のMVDを再構成することと、 前記第2の動きベクトルを再構成するために、前記第2のMVPに前記第2のMVDを加算することと、
前記第1の動きベクトルと前記第2の動きベクトルとを使用して、前記現在のブロックのための予測ブロックを形成することと、
前記現在のブロックのための残差ブロックを復号することと、
前記現在のブロックを再構成するために、前記残差ブロックと前記予測ブロックとを加算することと、
を行うように構成された、C24に記載のデバイス。
[C26] 前記1つまたは複数のプロセッサは、
前記第1のMVDを生成するために、前記第1の動きベクトルから前記第1のMVPを減算することと、
前記第2の動きベクトルのための第2のMVPを決定することと、
前記第2のMVDを生成するために、前記第2のMVPから前記第2の動きベクトルを減算することと、
前記第1のMVDを符号化することと、
前記第1のMVDから予測された前記第2のMVDを表すデータを符号化することと、 前記第1の動きベクトルと前記第2の動きベクトルとを使用して、前記現在のブロックのための予測ブロックを形成することと、
残差ブロックを生成するために、前記現在のブロックから前記予測ブロックを減算することと、
前記残差ブロックを符号化することと、
を行うように構成された、C24に記載のデバイス。
[C27] 復号されたビデオデータを表示するように構成されたディスプレイをさらに備える、C24に記載のデバイス。
[C28] 前記デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、C24に記載のデバイス。
[C29] 命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されたとき、ビデオデータをコーディングするためのデバイスのプロセッサに、
アフィン予測を使用して予測されるビデオデータの現在のブロックの第1の動きベクトルと、前記第1の動きベクトルのための第1の動きベクトル予測子(MVP)と、の間の差を表す第1の動きベクトル差(MVD)をコーディングすることと、
前記現在のブロックの第2の動きベクトルについて、前記第1のMVDから第2のMVDを予測することと、
前記第1の動きベクトルと前記第2の動きベクトルとに従ってアフィン予測を使用して前記現在のブロックをコーディングすることと、
を行わせる、コンピュータ可読記憶媒体。
[C30] ビデオデータをコーディングするためのデバイスであって、
アフィン予測を使用して予測されるビデオデータの現在のブロックの第1の動きベクトルと、前記第1の動きベクトルのための第1の動きベクトル予測子(MVP)と、の間の差を表す第1の動きベクトル差(MVD)をコーディングするための手段と、
前記現在のブロックの第2の動きベクトルについて、前記第1のMVDから第2のMVDを予測するための手段と、
前記第1の動きベクトルと前記第2の動きベクトルとに従ってアフィン予測を使用して前記現在のブロックをコーディングするための手段と、
を備えるデバイス。