(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-01
(45)【発行日】2023-12-11
(54)【発明の名称】ビデオデコーダおよび方法
(51)【国際特許分類】
H04N 19/51 20140101AFI20231204BHJP
H04N 19/70 20140101ALI20231204BHJP
【FI】
H04N19/51
H04N19/70
(21)【出願番号】P 2021522430
(86)(22)【出願日】2019-10-24
(86)【国際出願番号】 RU2019050196
(87)【国際公開番号】W WO2020085954
(87)【国際公開日】2020-04-30
【審査請求日】2021-06-22
(32)【優先日】2018-10-24
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-10-02
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133569
【氏名又は名称】野村 進
(72)【発明者】
【氏名】ティモフェイ・ミハイロヴィチ・ソロヴィエフ
(72)【発明者】
【氏名】ローマン・イゴレヴィチ・チェルニャック
(72)【発明者】
【氏名】アレクサンダー・アレクサンドロヴィッチ・カラブトフ
(72)【発明者】
【氏名】ジエンレ・チェン
(72)【発明者】
【氏名】セルゲイ・ユリエヴィッチ・イコニン
(72)【発明者】
【氏名】エレナ・アレクサンドロブナ・アルシナ
【審査官】間宮 嘉誉
(56)【参考文献】
【文献】米国特許出願公開第2020/0186820(US,A1)
【文献】国際公開第2020/030187(WO,A1)
【文献】特表2022-502972(JP,A)
【文献】SU, Yu-Chi et al.,CE4-related: Generalized Bi-Prediction Improvements Combined from JVET-L0197 and JVET-L0296,JVET-L0646 (version 6),ITU,2018年10月08日,pp.1-6,[online],[retrieved on 2023-04-12],Retrieved from the Internet: <URL: https://jvet-experts.org/doc_end_user/documents/12_Macao/wg11/JVET-L0646-v6.zip>,JVET-L0646-v5-clean.docx
【文献】SU, Yu-Chi et al.,CE4-related: Generalized Bi-Prediction Improvements Combined from JVET-L0197 and JVET-L0296,JVET-L0646 (version 6),ITU,2018年10月08日,pp.1, 69-76, 90-93, 100, 101,[online],[retrieved on 2023-04-12],Retrieved from the Internet: <URL: https://jvet-experts.org/doc_end_user/documents/12_Macao/wg11/JVET-L0646-v6.zip>,JVET-L0646_DraftText.docx
【文献】ZHANG, Li et al.,Suggested Specification Changes for JVET-L0266,JVET-L0266 (version 3),ITU,2018年10月04日,pp.1-6,[online],[retrieved on 2023-04-12],Retrieved from the Internet: <URL: https://jvet-experts.org/doc_end_user/documents/12_Macao/wg11/JVET-L0266-v3.zip>,JVET-L0266_spec_d1.docx
【文献】ZHANG, Li et al.,CE4-related: History-Based Motion Vector Prediction,JVET-K0104 (version 5),ITU,2018年07月18日,pp.1-7,[online],[retrieved on 2023-11-08],Retrieved from the Internet: <URL: https://jvet-experts.org/doc_end_user/documents/11_Ljubljana/wg11/JVET-K0104-v5.zip>,JVET-K0104_r4.docx
【文献】LI,JVET-L0266 History-Based Motion Vector Prediction (HMVP),VVCSoftware_VTM_L0266_HMVP,Fraunhofer HHI,2018年10月25日,ll.512-520,[online],[retrieved on 2023-11-08],Retrieved from the Internet: <URL: https://vcgit.hhi.fraunhofer.de/Zhang/VVCSoftware_VTM/-/commit/6bbc1e92ea4aa3574547d2edccb2ebffdf6234f4>,source/Lib/CommonLib/UnitTools.cpp
【文献】ZHANG, Li et al.,CE4: History-Based Motion Vector Prediction (Test 4.4.7) ,JVET-L0266 (version 2),ITU,2018年10月02日,pp.1-6,JVET-L0266_r1.docx
【文献】CHEN, Chun-Chi et al.,Generalized Bi-Prediction for Inter Coding,JVET-C0047 (version 2),ITU,2016年05月28日,pp.1-4,JVET-C0047_r1.docx
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/12
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
履歴ベース動きベクトル予測子(HMVP)リストに基づいてフレームの現在のブロックに対する動き情報を決定するための方法であって、
前記現在のブロックに先行する前記フレームのN個の先行するブロックの動き情報と関連付けられるN個の履歴ベース候補H
k(k=0,...,N-1)の順序付けられたリストである前記HMVPリストを構築するステップであって、Nが1以上であり、各履歴ベース候補が、
i)1つまたは複数の動きベクトル(MV)、
ii)前記MVに対応する1つまたは複数の参照ピクチャインデックス、および
iii)1つまたは複数の双方向予測重みインデックス
という要素を含む動き情報を備える、ステップと、
前記HMVPリストからの1つまたは複数の履歴ベース候補を前記現在のブロックに対する動き情報候補リストへと追加するステップと、
前記動き情報候補リストに基づいて前記現在のブロックに対する動き情報を導出するステップとを備え
、前記方法は、
前記HMVPリストの各履歴ベース候補の前記要素のうちの少なくとも1つを、前記現在のブロックに対する前記動き情報の前記対応する要素と比較するステップと、
前記比較の結果として、前記HMVPリストの各履歴ベース候補の前記要素のうちの少なくとも1つが前記現在のブロックの前記動き情報の前記対応する要素と異なる場合、前記現在のブロックの前記動き情報を前記HMVPリストに追加するステップとをさらに備え、
前記比較するステップは、前記HMVPリストの前記履歴ベース候補の前記MVおよび前記参照ピクチャインデックスと前記現在のブロックに対する前記動き情報の前記対応する前記MVおよび前記参照ピクチャインデックスに関する差を他の要素が同じであるかどうかとは無関係に確認することについてのみ実行される
方法。
【請求項2】
履歴ベース候補が、前記1つまたは複数の双方向予測重みインデックスとは異なる、1つまたは複数のインデックスをさらに含む、請求項1に記載の方法。
【請求項3】
前記HMVPリストの前記履歴ベース候補が、前記先行するブロックの前記履歴ベース候補がビットストリームから得られる順序で順序付けられる、請求項
1または2に記載の方法。
【請求項4】
前記HMVPリストがNの長さを有し、Nが6または5である、請求項1から
3のいずれか一項に記載の方法。
【請求項5】
前記動き情報候補リストが、
第1のブロックの動き情報からの第1の動き情報を含み、前記第1のブロックが前記現在のブロックとのあらかじめ設定された空間的または時間的な位置関係を有する、請求項1から
4のいずれか一項に記載の方法。
【請求項6】
現在のブロックに対する動き情報を決定するための装置であって、
メモリおよび前記メモリに結合されたプロセッサを備え、
前記プロセッサが請求項1から
5のいずれか一項に記載の方法を実行するように構成される、装置。
【請求項7】
履歴ベース動きベクトル予測子(HMVP)リストに基づいてフレームの現在のブロックに対する動き情報を決定するための装置であって、
前記現在のブロックに先行する前記フレームのN個の先行するブロックの動き情報と関連付けられるN個の履歴ベース候補H
k(k=0,...,N-1)の順序付けられたリストである前記HMVPリストを構築するように構成されるHMVPリスト構築ユニットであって、Nが1以上であり、各履歴ベース候補が、
i)1つまたは複数の動きベクトル(MV)、
ii)前記MVに対応する1つまたは複数の参照ピクチャインデックス、および
iii)1つまたは複数の双方向予測重みインデックス
という要素を含む動き情報を備える、HMVPリスト構築ユニットと、
前記HMVPリストからの1つまたは複数の履歴ベース候補を前記現在のブロックに対する動き情報候補リストへと追加するように構成されるHMVP追加ユニットと、
前記動き情報候補リストに基づいて前記現在のブロックに対する動き情報を導出するように構成される動き情報導出ユニットとを備え
、
前記HMVPリストの各履歴ベース候補の前記要素のうちの少なくとも1つを、前記現在のブロックに対する前記動き情報の前記対応する要素と比較する動き情報比較ユニットと、
前記動き情報比較ユニットの比較の結果として、前記HMVPリストの各HMVP候補の前記要素のうちの少なくとも1つが前記現在のブロックの前記動き情報の前記対応する要素と異なる場合、前記現在のブロックの前記動き情報を前記HMVPリストに追加する追加ユニットとを備え、
前記動き情報比較ユニットは、前記HMVPリストの前記履歴ベース候補の前記MVおよび前記参照ピクチャインデックスと前記現在のブロックに対する前記動き情報の前記対応する前記MVおよび前記参照ピクチャインデックスに関する差を他の要素が同じであるかどうかとは無関係に確認することについてのみ比較するようにさらに構成される、
装置。
【請求項8】
コンピュータに、請求項1から
5のいずれか一項に記載の方法を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ビデオコーディングの分野にあり、より詳細には、インター予測による動き補償の分野にある。
【背景技術】
【0002】
ビデオコーディング(ビデオ符号化および復号)は、広範囲のデジタルビデオ用途、たとえば、デジタルTV放送、インターネットおよびモバイルネットワークを介したビデオ送信、ビデオチャット、ビデオ会議などのリアルタイム会話用途、DVDディスクおよびBlu-ray(登録商標)ディスク、ビデオコンテンツ取得および編集システム、ならびにセキュリティ用途のカムコーダにおいて使用される。
【0003】
1990年のH.261規格におけるブロックベースのハイブリッドビデオコーディング手法の開発以来、新しいビデオコーディングの技法およびツールが開発され、新しいビデオコーディング規格のための基礎を形成した。さらなるビデオコーディング規格には、MPEG-1ビデオ、MPEG-2ビデオ、ITU-T H.262/MPEG-2、ITU-T H.263、ITU-T H.264/MPEG4, Part 10, Advanced Video Coding(AVC), ITU-T H.265/High Efficiency Video Coding(HEVC)、ITU-T H.266/Versatile video coding(VVC)、およびこれらの規格の拡張、たとえば、スケーラビリティおよび/または3次元(3D)拡張がある。ビデオの制作と使用がより普遍的になっているので、ビデオトラフィックは通信ネットワークおよびデータストレージに対する最大の負荷であり、したがって、大半のビデオコーディング規格の目標の1つは、ピクチャ品質を犠牲にすることなく、その前の規格と比較してビットレートの低減を達成することであった。最新の高効率ビデオコーディング(HEVC)は、品質を犠牲にすることなくAVCの2倍ビデオを圧縮することができるが、HEVCと比較してさらにビデオを圧縮することが望ましい。
【発明の概要】
【課題を解決するための手段】
【0004】
本開示は、ビデオを符号化して復号するための装置および方法を提供する。具体的には、本発明は、インター予測装置の一般化された双方向予測方法に関する。より具体的には、以下の態様が説明される。
1. 履歴ベース動き情報リスト構築の修正: 現在のブロックの動き情報は、動きベクトルおよびそれぞれの参照ピクチャインデックスの他に、現在のブロックの一般化された双方向予測重みインデックス(bcwIdxインデックス)も伴う。
2. マージモードに対するbcwIdxインデックス導出手順の修正: 履歴ベース候補に対応するマージインデックスを有するブロックに対しては、この候補のbcwIdxインデックスが現在のブロックのために使用される。
【0005】
修正されたbcwIdxインデックス導出方法は、CUのためのより適切なbcwIdxインデックスを使用することによってコーディング効率を改善し、このbcwIdxインデックスは、マージモードにおいてコーディングされ、履歴ベースマージ候補に対応するマージインデックスを有する。
【0006】
前述のおよび他の目的が、独立請求項の主題によって達成される。さらなる実装形式が、従属請求項、説明、および図面から明らかである。
【0007】
本発明の実施形態は、独立請求項の特徴によって定義され、実施形態のさらに有利な実装形態は、従属請求項の特徴によって定義される。
【0008】
本開示のある態様によれば、履歴ベース動きベクトル予測子(HMVP)リストに基づいてフレームの現在のブロックに対する動き情報を決定するための方法が提供され、この方法は、現在のブロックに先行するフレームのN個の先行するブロックの動き情報と関連付けられる、N個の履歴ベース候補Hk(k=0,...,N-1)の順序付けられたリストである、HMVPリストを構築するステップであって、Nが1以上であり、各履歴ベース候補が、i)1つまたは複数の動きベクトル(MV)、ii)MVに対応する1つまたは複数の参照ピクチャインデックス、およびiii)1つまたは複数の双方向予測重みインデックスという要素を含む動き情報を備える、ステップと、HMVPリストからの1つまたは複数の履歴ベース候補を現在のブロックに対する動き情報候補リストへと追加するステップと、動き情報候補リストに基づいて動き情報を導出するステップとを備える。
【0009】
双方向予測重みインデックス(bcw_idx)という用語は、一般化された双方向予測重みインデックス(GBIdx)および/またはCUレベル重み(BCW)インデックスを用いた双方向予測とも呼ばれる。代替的に、前記インデックスは、単に双方向予測重みインデックス(bi-prediction weight index)を指すBWIにより省略され得る。
【0010】
動き情報候補リストは、マージ候補リストまたは動きベクトル予測子リストであり得る。
【0011】
HMVPリストは、履歴ベース動きベクトルリスト(HMVL)とも呼ばれ得る。
【0012】
1つの例示的な実施形態では、HMVP候補の動き情報は、1つより多くの動きベクトル(MV)がある場合、特にMVの数が2であるとき、1つの双方向予測重みインデックスを要素として含み得る。1つのbcwインデックスで十分であり、それは、予測候補を構築するために使用される2つのbcw重みインデックス(w0およびw1)の合計が1であるからである。言い換えると、bcwインデックス重みペアは正規化される。これは、2つの重みが、たとえばw0またはw1のそれぞれのbcw重みの1つだけのbcwインデックスによって定義されることを意味する。
【0013】
これは、必要な要素だけが動き情報の一部となり、一方で(bcw重みが正規化されることを知った結果としての)冗長な要素は廃棄されるという、利点をもたらし得る。したがって、動き情報は少ないストレージしか必要としない。
【0014】
代替的な実装形態は、各MVに対して1つのbcwインデックスを使用し、しかし0のbcw重みに対応する1つのbcwインデックスを設定することを含み得る。
【0015】
本開示のある態様によれば、履歴ベース候補は、1つまたは複数の双方向予測重みインデックスとは異なる、1つまたは複数のインデックスをさらに含む。
【0016】
動き補償の間にブロックの補間のために代替的な補間フィルタを使用することを示すために、1つまたは複数のインデックスが使用され得る。1つの例示的な実施形態では、さらなるインデックスの1つは、切り替え可能な補間フィルタインデックスであり得る。
【0017】
これは、他のインデックスの使用によって、動き情報の導出をよりフレキシブルにするという利点をもたらし得る。
【0018】
本開示のある態様によれば、HMVPリストの構築はさらに、HMVPリストの各履歴ベース候補の要素のうちの少なくとも1つを先行するブロックの対応する要素と比較するステップと、比較の結果として、HMVPリストの各履歴ベース候補の要素のうちの少なくとも1つが先行するブロックの対応する要素とは異なる場合、HMVPリストに先行するブロックの動き情報を追加するステップとを備える。
【0019】
本開示のある態様によれば、方法はさらに、HMVPリストの各履歴ベース候補の要素のうちの少なくとも1つを現在のブロックに対する動き情報の対応する要素と比較するステップと、比較の結果として、HMVPリストの各HMVP候補の要素のうちの少なくとも1つが現在のブロックの動き情報の対応する要素とは異なる場合、HMVPリストに現在のブロックの動き情報を追加するステップとを備える。
【0020】
HMVPリストからのHMVP候補を先行するブロックおよび/または現在のブロックと比較することは、前記比較が要素ごとに実行されることを意味する。さらに、比較の結果(C-resultとも呼ばれる)は、同様の要素が同じであるか異なるかという、要素の単純な比較に関する通常の意味を有する。言い換えると、少なくとも1つまたは複数の要素のC-resultは、HMVP候補ならびに先行するおよび/または現在のブロックが少なくとも1つの要素において異なり得ることを示し得る。そうである(すなわち、C-result=異なる)場合、先行するブロックおよび/または現在のブロックのそれぞれの動き情報がHMVPリストに追加される。
【0021】
これは、HMVPリストから動き情報の冗長性がなくなるという利点をもたらし得る。HMVPリストは、そこからの動き情報を動き情報候補リストへと追加するために使用されるので、上記の冗長性の回避は、動き情報候補リストへと直接反映される。したがって、重複なしの動き情報が使用されるので、動き情報導出はより正確になる。
【0022】
その上、HMVPリストは限られたサイズ/長さを有するので、HMVPリストからの冗長な動き情報(記録)の除去は、実際に異なるより多くの記録の追加を可能にする。言い換えると、HMVPリストの中の記録の多様性が向上する。
【0023】
本開示のある態様によれば、比較するステップは、対応する動きベクトルを比較するステップと、対応する参照ピクチャインデックスを比較するステップとを備える。
【0024】
本開示のある態様によれば、比較するステップは、対応する動きベクトルを比較するステップと、対応する参照ピクチャインデックスを比較するステップと、双方向予測重みインデックスを比較するステップとを備える。
【0025】
動きベクトルの比較は、成分ごとに実行され得る。これは、2つの成分MVxおよびMVy(それぞれ水平成分および垂直成分とも呼ばれる)を有する動きベクトルMVが各成分MVxおよびMVyに関して比較されることを意味する。具体的には、比較するステップは、MV成分が異なるかどうかという単純な比較に基づいて実行される。
【0026】
代替的に、対応する動きベクトルの比較は、前記比較に適した任意の他のメトリックに基づき得る。そのようなメトリックは、たとえば、p≧1であるpノルムであり得る。MVの比較は、MVの大きさを比較することを含み得る。
【0027】
参照インデックスの比較は、参照ピクチャインデックスが異なるかどうかを確認することに関する単純な比較にも基づき得る。
【0028】
ある例示的な実施形態では、単純な比較は、HMVP候補の要素のうちの少なくとも1つが先行するブロックおよび/もしくは現在のブロックの対応する要素に等しいかどうか、ならびに/またはそれより小さいかどうかを比較することによって、拡張され得る。代替的に、およびまたは追加で、比較基準として「等しいおよび/またはそれより大きい」が使用され得る。上記のより小さい/より大きい基準は、動き情報の要素の各々に対して異なるように適用され得る。
【0029】
前に言及されたように、比較は要素ごとに実行される。特に、比較は、動き情報のすべての要素を含み得る。代替的に、要素のいくつかが比較において使用され得る。言い換えると、i)1つまたは複数のMV、ii)1つまたは複数の参照ピクチャインデックス、iii)双方向予測重みインデックスを備える動き情報を考慮した比較のために、動き情報の要素のサブセットが使用され得る。また、前記動き情報は、iv)bcwインデックスとは異なる1つまたは複数のインデックスを伴い得る。
【0030】
たとえば、動き情報の要素のサブセットは、上記のMVおよび参照ピクチャインデックスを含み得る。比較は次いで、(サブセットの一部ではない)他の要素が同じであるかどうかとは無関係に、MVと参照ピクチャインデックスに関する差を確認することについてのみ実行され得る。所与のサブセットの例では、比較から除外されるこれらの要素は、bcwインデックスおよびbcwインデックスとは異なる1つまたは複数の他のインデックスである。
【0031】
第2の例では、サブセットは、動き情報の要素として、MV、参照ピクチャインデックス、および双方向予測インデックスを含み得る。bcwインデックスと異なる1つまたは複数の他のインデックスは、このサブセットから除外される。この場合、比較は、これらの3つのタイプの要素に関する差を確認することについて実行される。
【0032】
したがって、動き情報は複数の要素を伴い得るが、比較は、前記動き情報からの要素のサブセットに基づいて要素ごとに実行され得る。
【0033】
これは、比較が実行されることにより、HMVPリストに追加されるべきまたは追加されるべきではない動き情報がフレキシブルにプルーニングされるという利点をもたらすことがあり、それは、比較の制約レベルが、動き情報から使用される要素の数および/またはタイプによって適合され得るからである。
【0034】
本開示のある態様によれば、HMVPリストの履歴ベース候補は、先行するブロックの履歴ベース候補がビットストリームから得られる順序で順序付けられる。
【0035】
本開示のある態様によれば、HMVPリストはNの長さを有し、Nは6または5である。
【0036】
本開示のある態様によれば、動き情報候補リストは、第1のブロックの動き情報から第1の動き情報を含み、第1のブロックは、現在のブロックとのあらかじめ設定された空間的なまたは時間的な位置関係を有する。
【0037】
本開示のある態様によれば、動き情報候補リストに基づいて動き情報を導出するステップは、現在のブロックがマージモードでコーディングされるのでビットストリームからのマージインデックスを参照することによって、または、現在のブロックが高度動きベクトル予測(AMVP)モードでコーディングされるのでビットストリームからの動きベクトル予測子インデックスを参照することによって、動き情報を導出するステップを備える。
【0038】
動き情報候補リストは、マージ候補リストまたは動きベクトル予測子リストであり得る。
【0039】
図10は、動き情報を決定するための方法のフローチャートを示す。ステップ1001において、HMVPリストが構築される。ステップ1002において、HMVPリストからの1つまたは複数の履歴ベース候補が、動き情報候補リストに追加される。ステップ1003において、動き情報候補リストに基づく動き情報が導出される。
【0040】
本開示のある態様によれば、動き情報候補リストに基づいて導出される動き情報に含まれる双方向予測重みインデックスを使用することによって、現在のブロックの予測値を取得することがさらに含まれる。
【0041】
1つの例示的な実装形態では、動き情報候補リストに基づく動き情報導出は、動き情報候補リストから直接実行される。代替として、前記導出は、動き情報候補リストに関して間接的に実行され得る。
【0042】
本開示のある態様によれば、履歴ベース動きベクトル予測子(HMVP)リストを構築して更新するための方法が提供され、この方法は、現在のブロックに先行するフレームのN個の先行するブロックの動き情報と関連付けられる、N個の履歴ベース候補Hk(k=0,...,N-1)の順序付けられたリストである、HMVPリストを構築するステップであって、Nが1以上であり、各履歴ベース候補が、i)1つまたは複数の動きベクトル(MV)、ii)MVに対応する1つまたは複数の参照ピクチャインデックス、およびiii)1つまたは複数の双方向予測重みインデックスという要素を含む動き情報を備える、ステップと、HMVPリストの各履歴ベース候補の要素のうちの少なくとも1つを現在のブロックの対応する要素と比較するステップと、比較の結果として、HMVPリストの履歴ベース候補の各々の要素のうちの少なくとも1つが現在のブロックの対応する要素と異なる場合、HMVPリストに現在のブロックの動き情報を追加するステップとを備える。
【0043】
HMVPリスト更新は、現在のブロックの冗長性のない最新の動き情報をHMVPリストにおいて保つという利点をもたらし得る。これは、現在のブロックとの空間的な相関が維持された状態で履歴ベース動き情報を使用することによって、動き情報導出を改善する。言い換えると、HMVPリストの継続的な更新は、動き情報の導出の間の空間的な相関の存在および活用を確実にする。
【0044】
本開示のある態様によれば、履歴ベース候補は、1つまたは複数の双方向予測重みインデックスとは異なる、1つまたは複数のインデックスをさらに含む。
【0045】
本開示のある態様によれば、比較するステップは、対応する動きベクトルを比較するステップと、対応する参照ピクチャインデックスを比較するステップとを備える。
【0046】
本開示のある態様によれば、比較するステップは、対応する動きベクトルを比較するステップと、対応する参照ピクチャインデックスを比較するステップと、双方向予測重みインデックスを比較するステップとを備える。
【0047】
本開示のある態様によれば、HMVPリストの履歴ベース候補は、先行するブロックの履歴ベース候補がビットストリームから得られる順序で順序付けられる。
【0048】
本開示のある態様によれば、HMVPリストはNの長さを有し、Nは6または5である。
【0049】
図11は、履歴ベース動きベクトル予測子を構築して更新するための方法のフローチャートを示す。ステップ1101において、HMVPリストが構築される。ステップ1102において、HMVPリストの各履歴ベース候補の要素のうちの少なくとも1つが、現在のブロックの対応する要素と比較される。
【0050】
要素ベースの比較の結果は、
図11においてC-resultと呼ばれる。C-resultは、すべての要素が同じである/等しいというもの、または、少なくとも1つまたは複数の要素が同じではない/等しくない/異なるというものであり得る。
【0051】
C-resultが、少なくとも1つまたは複数の要素が異なるというものである場合、現在のブロックの動き情報がHMVPリストに追加される(ステップ1103)。それ以外の場合、すべての要素が同じである場合、それぞれの動き情報はHMVPリストに追加されない(ステップ1104)。
【0052】
「すべて」という用語は、要素ごとの比較において実際に使用される要素を指す。これは、i)1つまたは複数のMV、ii)1つまたは複数の参照ピクチャインデックス、iii)双方向予測重みインデックスを備える動き情報を考慮した比較のために、動き情報の要素のサブセットが使用され得ることを意味する。また、前記動き情報は、iv)bcwインデックスとは異なる1つまたは複数のインデックスを伴い得る。
【0053】
たとえば、動き情報の要素のあり得るサブセットは、MVおよび参照ピクチャインデックスを含み得るので。上記の比較は次いで、サブセットの一部ではない他の要素が同じであるかどうかとは無関係に、MVと参照ピクチャインデックスに関する差を確認することについてのみ実行され得る。所与の例では、比較から除外されるこれらの要素は、bcwインデックスおよびbcwインデックスとは異なる1つまたは複数の他のインデックスである。
【0054】
したがって、動き情報は複数の要素を伴い得るが、比較は、前記動き情報からの要素のサブセットに基づいて要素ごとに実行され得る。
【0055】
これは、比較が実行されることにより、HMVPリストに追加されるべきまたは追加されるべきではない動き情報がフレキシブルにプルーニングされるという利点をもたらすことがあり、それは、比較の制約レベルが、動き情報から使用される要素の数および/またはタイプによって適合され得るからである。
【0056】
本開示のある態様によれば、メモリおよびメモリに結合されたプロセッサを備える、現在のブロックに対する動き情報を決定するための装置が提供され、プロセッサは、本開示の以前の態様のいずれか1つによる方法を実行するように構成される。
【0057】
図12は、メモリ1201およびプロセッサ1202をそれぞれ備える、動き情報決定ユニット1200の概略図を示す。
【0058】
本開示のある態様によれば、履歴ベース動きベクトル予測子(HMVP)リストに基づいてフレームの現在のブロックに対する動き情報を決定するための装置が提供され、この装置は、現在のブロックに先行するフレームのN個の先行するブロックの動き情報と関連付けられる、N個の履歴ベース候補Hk(k=0,...,N-1)の順序付けられたリストである、HMVPリストを構築するように構成され、Nが1以上であり、各履歴ベース候補が、i)1つまたは複数の動きベクトル(MV)、ii)MVに対応する1つまたは複数の参照ピクチャインデックス、およびiii)1つまたは複数の双方向予測重みインデックスという要素を含む動き情報を備える、HMVPリスト構築ユニットと、現在のブロックに対する動き情報候補リストへとHMVPリストからの1つまたは複数の履歴ベース候補を追加するように構成されるHMVP追加ユニットと、動き情報候補リストに基づいて動き情報を導出するように構成される動き情報導出ユニットとを備える。
【0059】
図13は、HMVPリスト構築ユニット1301、HMVP追加ユニット1302、および動き情報導出ユニット1303をさらに備える、動き情報決定ユニット1200の概略図を示す。
【0060】
本開示のある態様によれば、履歴ベース動きベクトル予測子(HMVP)リストを構築して更新するための装置が提供され、この装置は、現在のブロックに先行するフレームのN個の先行するブロックの動き情報と関連付けられる、N個の履歴ベース候補Hk(k=0,...,N-1)の順序付けられたリストである、HMVPリストを構築するように構成され、Nが1以上であり、各履歴ベース候補が、i)1つまたは複数の動きベクトル(MV)、ii)MVに対応する1つまたは複数の参照ピクチャインデックス、およびiii)1つまたは複数の双方向予測重みインデックスという要素を含む動き情報を備える、HMVPリスト構築ユニットと、HMVPリストの各履歴ベース候補の要素のうちの少なくとも1つを現在のブロックの対応する要素と比較するように構成される動き情報比較ユニットと、比較の結果として、HMVPリストの履歴ベース候補の各々の要素のうちの少なくとも1つが現在のブロックの対応する要素と異なる場合、HMVPリストに現在のブロックの動き情報を追加するように構成される動き情報追加ユニットとを備える。
【0061】
図14は、HMVPリスト構築ユニット1301、動き情報比較ユニット1401、および動き情報追加ユニット1402を備える、HMVPリスト更新ユニット1400の概略図を示す。
【0062】
本開示のある態様によれば、本開示の以前の態様のいずれか1つによる方法を実行するためのプログラムコードを備える、コンピュータプログラム製品が提供される。
【0063】
1つまたは複数の実施形態の詳細が、以下の添付の図面および説明に記載される。他の特徴、目的、および利点が、説明、図面、および特許請求の範囲から明らかであろう。
【0064】
この実装形態には、境界シフトベクトルの選択を最適化するという、したがって、符号化方法のコーディング効率を最適化するという利点がある。
【0065】
本発明は、ハードウェアおよび/またはソフトウェアで実施され得る。
【0066】
明瞭にするために、前述の実施形態のいずれか1つを他の前述の実施形態のいずれか1つまたは複数と組み合わせて、本開示の範囲内にある新しい実施形態を作り出すことができる。
【0067】
これらのおよび他の特徴は、添付の図面および特許請求の範囲に関連して考慮される以下の詳細な説明からより明確に理解されるであろう。
【0068】
以下では、本発明の実施形態が、添付の図および図面に関してより詳しく説明される。
【図面の簡単な説明】
【0069】
【
図1A】本発明の実施形態を実装するように構成されるビデオコーディングシステムの例を示すブロック図である。
【
図1B】本発明の実施形態を実装するように構成されるビデオコーディングシステムの別の例を示すブロック図である。
【
図2】本発明の実施形態を実装するように構成されるビデオエンコーダの例を示すブロック図である。
【
図3】本発明の実施形態を実装するように構成されるビデオデコーダの例示的な構造を示すブロック図である。
【
図4】符号化装置または復号装置の例を示すブロック図である。
【
図5】符号化装置または復号装置の別の例を示すブロック図である。
【
図6】ブロック、たとえばCUの例を、いくつかの隣接するブロックの位置とともに概略的に示す図である。
【
図10】動き情報決定方法のフローチャートである。
【
図11】HMVPリスト更新方法のフローチャートである。
【
図12】メモリおよびプロセッサを含む、動き情報決定ユニットのブロック図である。
【
図13】HMVPリスト構築ユニット、HMVP追加ユニット、および動き情報導出ユニットを含む、動き情報決定ユニットのブロック図である。
【
図14】HMVPリスト構築ユニット、動き情報比較ユニット、および動き情報追加ユニットを含む、HMVPリスト更新ユニットのブロック図である。
【発明を実施するための形態】
【0070】
以下では、同一の参照符号は、それらの同一の参照符号の違いに関する具体的な注記がない場合、同一のまたは少なくとも機能的に等価な特徴を指す。
【0071】
以下の説明では、本開示の一部を形成し、本発明の実施形態の特定の態様または本発明の実施形態が使用され得る特定の態様を例として示す、添付の図面に対する参照が行われる。本発明の実施形態は、他の態様において使用されてもよく、図面に示されない構造的または論理的な変化を備えてもよいことが理解される。したがって、以下の詳細な説明は、限定する意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によって定義される。
【0072】
たとえば、説明される方法に関連する開示は、方法を実行するように構成される対応するデバイスまたはシステムについても当てはまることがあり、その逆も当てはまることが理解される。たとえば、1つまたは複数の特定の方法ステップが説明される場合、対応するデバイスは、説明される1つまたは複数の方法ステップを実行するための1つまたは複数のユニット(たとえば、1つまたは複数のステップを実行する1つのユニット、または複数のステップのうちの1つまたは複数を各々実行する複数のユニット)、たとえば機能ユニットを、そのような1つまたは複数のユニットが図面において明示的に説明されず、または示されない場合であっても、含み得る。一方、たとえば、特定の装置が1つまたは複数のユニット、たとえば機能ユニットに基づいて説明される場合、対応する方法は、1つまたは複数のユニットの機能を実行するための1つのステップ(たとえば、1つまたは複数のユニットの機能を実行する1つのステップ、または、複数のユニットのうちの1つまたは複数の機能を各々実行する複数のステップ)を、そのような1つまたは複数のステップが図面において明示的に説明されず、または示されない場合であっても、含み得る。さらに、本明細書において説明される様々な例示的な実施形態および/または態様の特徴は、別様に明示的に述べられない限り、互いに組み合わせられてもよいことが理解される。
【0073】
ビデオコーディングは通常、ビデオまたはビデオシーケンスを形成するピクチャのシーケンスの処理を指す。「ピクチャ」という用語ではなく、「フレーム」または「画像」という用語が、ビデオコーディングの分野では同義語として使用され得る。本出願(または本開示)において使用されるビデオコーディングは、ビデオ符号化またはビデオ復号のいずれかを示す。ビデオピクチャを表現するために必要なデータの量を減らすために(より効率的な記憶および/または送信のために)、元のビデオピクチャを(たとえば、圧縮によって)処理することを通常は備える、ビデオ符号化がソース側において実行される。ビデオ復号は、デスティネーション側において実行され、通常は、ビデオピクチャを再構築するためにエンコーダと比較して逆の処理を備える。ビデオピクチャ(または後で説明されるように、一般にピクチャ)の「コーディング」に言及する実施形態は、ビデオシーケンスの「符号化」または「復号」のいずれかに関係するものと理解されるべきである。符号化部分および復号部分の組合せは、CODEC(CodingおよびDecoding)とも呼ばれる。
【0074】
無損失ビデオコーディングの場合、元のビデオピクチャを再構築することができ、すなわち、再構築されたビデオピクチャは、元のビデオピクチャと同じ品質を有する(記憶または送信の間に送信損失または他のデータ損失がないと仮定して)。有損失ビデオコーディングの場合、ビデオピクチャを表現するデータの量を減らすために、さらなる圧縮が、たとえば量子化によって実行され、このビデオピクチャは、デコーダにおいて完全に再構築することはできず、すなわち、再構築されたビデオピクチャの品質は、元のビデオピクチャの品質と比較してより低く、または悪い。
【0075】
H.261以降のいくつかのビデオコーディング規格は、「有損失ハイブリッドビデオコーデック」というグループに属する(すなわち、サンプル領域における空間予測および時間予測と、変換領域における量子化を適用するための2D変換コーディングとを組み合わせる)。ビデオシーケンスの各ピクチャは通常、重複しないブロックのセットへと区分され、コーディングは通常、ブロックレベルで実行される。言い換えると、エンコーダにおいて、ビデオは通常、たとえば、空間(イントラピクチャ)予測および時間(インターピクチャ)予測を使用して予測ブロックを生成し、現在のブロック(現在処理されている/処理されることになるブロック)から予測ブロックを減算して残差ブロックを取得し、変換領域において残差ブロックを変換し残差ブロックを量子化して送信されることになるデータの量を減らす(圧縮)ことによって、ブロック(ビデオブロック)レベルで処理され、すなわち符号化され、一方でデコーダにおいて、エンコーダと比較して逆の処理が、表現のために現在のブロックを再構築するために、符号化または圧縮されたブロックに部分的に適用される。さらに、エンコーダは、後続のブロックを処理する、すなわちコーディングするための同一の予測(たとえば、イントラ予測およびインター予測)および/または再構築を両方が生成するように、デコーダ処理ループを繰り返す。
【0076】
本明細書では、「ブロック」という用語は、ピクチャまたはフレームの一部分であってもよい。説明の便宜上、本発明の実施形態は、ITU-T Video Coding Experts Group (VCEG)およびISO/IEC Motion Picture Experts Group (MPEG)のJoint Collaboration Team on Video Coding (JCT-VC)によって開発された、High-Efficiency Video Coding (HEVC)またはVersatile video coding (VVC)の参照ソフトウェアに関して、本明細書において説明される。本発明の実施形態はHEVCまたはVVCに限定されないことを、当業者は理解するであろう。それは、CU、PU、およびTUに言及し得る。HEVCでは、CTUは、コーディングツリーと表記される四分木構造を使用することによってCUに分割される。インターピクチャ(時間)予測を使用してピクチャエリアをコーディングするか、またはイントラピクチャ(空間)予測を使用してピクチャエリアをコーディングするかの決定が、CUレベルにおいて行われる。各CUは、PU分割タイプに従って、1つ、2つ、または4つのPUへとさらに分割され得る。1つのPUの内部で、同じ予測プロセスが適用され、関連する情報がPUごとにデコーダに送信される。PU分割タイプに基づいて予測プロセスを適用することによって残差ブロックを取得した後、CUは、CUのためのコーディングツリーに類似した別の四分木構造に従って、変換単位(TU)へと区分され得る。ビデオ圧縮技術の最新の開発において、コーディングブロックを区分するために、四分木および二分木(QTBT)区分フレームが使用される。QTBTブロック構造では、CUは正方形または長方形のいずれかの形状を有し得る。たとえば、コーディングツリー単位(CTU)はまず、四分木構造によって区分される。四分木リーフノードはさらに、二分木構造によって区分される。二分木リーフノードはコーディング単位(CU)と呼ばれ、さらなる区分を伴わない予測および変換処理のために、そのセグメンテーションが使用される。これは、CU、PU、およびTUが、QTBTコーディングブロック構造において同じブロックサイズを有することを意味する。並行して、多重区分、たとえば三分木区分も、QTBTブロック構造と一緒に使用されることが提案された。
【0077】
以下では、エンコーダ20、デコーダ30、およびコーディングシステム10の実施形態が
図1から
図3に基づいて説明される。
【0078】
図1Aは、例示的なコーディングシステム10、たとえば、本出願(本開示)の技法を利用し得るビデオコーディングシステム10を概略的に示す。ビデオコーディングシステム10のエンコーダ20(たとえば、ビデオエンコーダ20)およびデコーダ30(たとえば、ビデオデコーダ30)は、本出願において説明される様々な例に従った技法を実行するように構成され得るデバイスの例を表す。
図1Aに示されるように、コーディングシステム10は、符号化されたデータ13、たとえば符号化されたピクチャ13を、たとえば、符号化されたデータ13を復号するためのデスティネーションデバイス14に提供するように構成される、ソースデバイス12を備える。
【0079】
ソースデバイス12は、エンコーダ20を備え、追加で、すなわち任意選択で、ピクチャソース16、前処理ユニット18、たとえばピクチャ前処理ユニット18、および通信インターフェースまたは通信ユニット22を備えてもよい。
【0080】
ピクチャソース16は、たとえば現実世界のピクチャをキャプチャするための、任意の種類のピクチャキャプチャデバイス、ならびに/または、任意の種類のピクチャもしくはコメント(スクリーンコンテンツのコーディングのために、画面上の何らかのテキストも、符号化されるべきピクチャまたは画像の一部であると考えられる)生成デバイス、たとえば、コンピュータアニメーションピクチャを生成するためのコンピュータグラフィクスプロセッサ、または、現実世界のピクチャ、コンピュータアニメーションピクチャ(たとえば、スクリーンコンテンツ、仮想現実(VR)ピクチャ)、および/もしくはこれらの任意の組合せ(たとえば、拡張現実(AR)ピクチャ)を取得および/もしくは提供するための任意の種類のデバイスを備えてもよく、またはそれらであってもよい。
【0081】
(デジタル)ピクチャは、強度値を伴うサンプルの2次元アレイもしくは行列であり、またはそのように見なされ得る。アレイの中のサンプルは、ピクセル(ピクチャ要素の短縮形)またはペルとも呼ばれ得る。アレイまたはピクチャの水平方向および垂直方向(または軸)におけるサンプルの数は、ピクチャのサイズおよび/または分解能を定義する。色の表現のために、通常は3つの色成分が利用され、すなわち、ピクチャは3つのサンプルアレイによって表され、またはそれらを含んでもよい。RGBフォーマットまたは色空間では、ピクチャは、対応する赤、緑、および青のサンプルアレイを備える。しかしながら、ビデオコーディングでは、各ピクセルは通常、輝度/色度フォーマットまたは色空間において、たとえばYCbCrにおいて表され、これは、Yによって示される輝度成分(代わりにLも使用されることがある)およびCbとCrによって示される2つの色度成分を備える。輝度(または略してルマ)成分Yは、明るさまたはグレーレベルの強度(たとえば、グレースケールピクチャなどにおける)を表すが、2つの色度(または略してクロマ)成分CbおよびCrは、色度情報成分または色情報成分を表す。したがって、YCbCrフォーマットにおけるピクチャは、輝度サンプル値(Y)の輝度サンプルアレイ、および色度値の2つの色度サンプルアレイ(CbおよびCr)を備える。RGBフォーマットにおけるピクチャは、YCbCrフォーマットへと転換または変換されてもよく、かつその逆も当てはまり、この処理は、色変換または色転換としても知られている。ピクチャがモノクロームである場合、ピクチャは輝度サンプルアレイのみを備え得る。
【0082】
ピクチャソース16(たとえば、ビデオソース16)は、たとえば、ピクチャをキャプチャするためのカメラ、以前にキャプチャもしくは生成されたピクチャを備える、もしくはそれを記憶するメモリ、たとえばピクチャメモリ、および/または、ピクチャを取得もしくは受信するための任意の種類のインターフェース(内部または外部)であり得る。カメラは、たとえば、ソースデバイスに統合されるローカルのまたは統合されたカメラであってもよく、メモリは、ローカルのまたは統合されたメモリ、たとえばソースデバイスに統合されたメモリであってもよい。インターフェースは、たとえば、外部のビデオソース、たとえば、カメラのような外部のピクチャキャプチャデバイス、外部メモリ、または外部のピクチャ生成デバイス、たとえば、外部のコンピュータグラフィクスプロセッサ、コンピュータ、もしくはサーバから、ピクチャを受信するための外部インターフェースであり得る。インターフェースは、任意のプロプライエタリインターフェースプロトコルまたは標準化されたインターフェースプロトコルに従った、任意の種類のインターフェース、たとえば有線またはワイヤレスインターフェース、光学インターフェースであり得る。ピクチャデータ17を取得するためのインターフェースは、通信インターフェース22と同じインターフェースであってもよく、またはその一部であってもよい。
【0083】
前処理ユニット18および前処理ユニット18によって実行される処理と区別して、ピクチャまたはピクチャデータ17(たとえば、ビデオデータ16)は、生のピクチャまたは生のピクチャデータ17とも呼ばれ得る。
【0084】
前処理ユニット18は、(生の)ピクチャデータ17を受信し、ピクチャデータ17に対して前処理を実行して、前処理されたピクチャ19または前処理されたピクチャデータ19を取得するように構成される。前処理ユニット18によって実行される前処理は、たとえば、トリミング、カラーフォーマット転換(たとえば、RGBからYCbCrへの)、色補正、またはノイズ除去を備え得る。前処理ユニット18は任意選択のコンポーネントであり得ることが理解され得る。
【0085】
エンコーダ20(たとえば、ビデオエンコーダ20)は、前処理されたピクチャデータ19を受信し、符号化されたピクチャデータ21を提供するように構成される(さらなる詳細が、たとえば
図2または
図4に基づいて以下で説明される)。
【0086】
ソースデバイス12の通信インターフェース22は、符号化されたピクチャデータ21を受信して、それを記憶もしくは直接の再構築のために、別のデバイス、たとえばデスティネーションデバイス14もしくは任意の他のデバイスに送信するように、または、符号化されたデータ13を記憶する前、および/もしくは符号化されたデータ13を、復号もしくは記憶のために別のデバイス、たとえばデスティネーションデバイス14もしくは任意の他のデバイスに送信する前にそれぞれ、符号化されたピクチャデータ21を処理するように構成され得る。
【0087】
デスティネーションデバイス14は、デコーダ30(たとえば、ビデオデコーダ30)を備え、追加で、すなわち任意選択で、通信インターフェースまたは通信ユニット28、後処理ユニット32、および表示デバイス34を備え得る。
【0088】
デスティネーションデバイス14の通信インターフェース28は構成される、符号化されたピクチャデータ21または符号化されたデータ13を、たとえばソースデバイス12から、または任意の他のソース、たとえばストレージデバイス、たとえば符号化ピクチャデータストレージデバイスから直接受信する。
【0089】
通信インターフェース22および通信インターフェース28は、ソースデバイス12とデスティネーションデバイス14との間の直接の通信リンク、たとえば、直接の有線もしくはワイヤレス接続を介して、または、任意の種類のネットワーク、たとえば、有線ネットワークもしくはワイヤレスネットワークもしくはこれらの任意の組合せ、もしくは任意の種類のプライベートネットワークおよびパブリックネットワーク、もしくはこれらの任意の種類の組合せを介して、符号化されたピクチャデータ21または符号化されたデータ13を送信または受信するように構成され得る。
【0090】
通信インターフェース22は、たとえば、符号化されたピクチャデータ21を、通信リンクまたは通信ネットワークを介した送信に適切なフォーマット、たとえばパケットへとパッケージングするように構成され得る。
【0091】
通信インターフェース22のカウンターパートを形成する通信インターフェース28は、たとえば、符号化されたデータ13をパッケージング解除して符号化されたピクチャデータ21を取得するように構成され得る。
【0092】
通信インターフェース22と通信インターフェース28の両方が、
図1Aにおいてソースデバイス12からデスティネーションデバイス14を指し示す符号化されたピクチャデータ13についての矢印によって示されるように無指向性の通信インターフェースとして、または双方向通信インターフェースとして構成されてもよく、通信リンクおよび/またはデータ送信、たとえば、符号化されたピクチャデータの送信に関する任意の他の情報に肯定応答し、それを交換するために、たとえばメッセージを送信して受信するように、たとえば接続をセットアップするように構成されてもよい。
【0093】
デコーダ30は、符号化されたピクチャデータ21を受信し、復号されたピクチャデータ31または復号されたピクチャ31を提供するように構成される(さらなる詳細が、たとえば
図3または
図5に基づいて以下で説明される)。
【0094】
デスティネーションデバイス14のポストプロセッサ32は、復号されたピクチャデータ31(再構築されたピクチャデータとも呼ばれる)、たとえば復号されたピクチャ31を後処理して、後処理されたピクチャデータ33、たとえば後処理されたピクチャ33を取得するように構成される。後処理ユニット32によって実行される後処理は、たとえば表示デバイス34による表示のために、たとえば復号されたピクチャデータ31を準備するための、たとえば、カラーフォーマット転換(たとえば、YCbCrからRGBへの)、色補正、トリミング、または再サンプリング、または任意の他の処理を備え得る。
【0095】
デスティネーションデバイス14の表示デバイス34は、たとえばユーザまたは視聴者にピクチャを表示するために、後処理されたピクチャデータ33を受信するように構成される。表示デバイス34は、再構築されたピクチャを表現するための任意の種類のディスプレイ、たとえば、統合されたまたは外部のディスプレイもしくはモニタであってもよく、またはそれらを備えてもよい。ディスプレイは、たとえば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、liquid crystal on silicon (LCoS)、デジタル光プロセッサ(DLP)、または任意の種類の他のディスプレイを備え得る。
【0096】
図1Aは、ソースデバイス12とデスティネーションデバイス14を別々のデバイスとして示すが、デバイスの実施形態は、それらの両方または両方の機能、すなわちソースデバイス12または対応する機能およびデスティネーションデバイス14または対応する機能も備えてもよい。そのような実施形態では、ソースデバイス12または対応する機能およびデスティネーションデバイス14または対応する機能は、同じハードウェアおよび/もしくはソフトウェアを使用して、または、別々のハードウェアおよび/もしくはソフトウェアによって、またはこれらの任意の組合せによって実装され得る。
【0097】
説明に基づくと当業者には明らかになるように、
図1Aに示されるようなソースデバイス12および/またはデスティネーションデバイス14内での異なるユニットまたは機能の存在と(実際の)機能の分割は、実際のデバイスおよび適用例に応じて異なり得る。
【0098】
エンコーダ20(たとえば、ビデオエンコーダ20)およびデコーダ30(たとえば、ビデオデコーダ30)は各々、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ハードウェア、またはこれらの任意の組合せなどの、様々な適切な回路のいずれかとして実装され得る。技法がソフトウェアで部分的に実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェアのための命令を記憶してもよく、本開示の技法を実行するために、1つまたは複数のプロセッサを使用してハードウェアにおいて命令を実行してもよい。前述のもの(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)のいずれもが、1つまたは複数のプロセッサであると考えられ得る。ビデオエンコーダ20およびビデオデコーダ30の各々が、1つまたは複数のエンコーダまたはデコーダに含まれてもよく、それらのいずれかが、それぞれのデバイスの中の組み合わせられたエンコーダ/デコーダ(コーデック)の一部として統合されてもよい。
【0099】
ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれ得る。デスティネーションデバイス14は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれ得る。ソースデバイス12およびデスティネーションデバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
【0100】
ソースデバイス12およびデスティネーションデバイス14は、任意の種類のハンドヘルドデバイスまたは固定式デバイス、たとえば、ノートブックまたはラップトップコンピュータ、携帯電話、スマートフォン、タブレットまたはタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビジョン、表示デバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス(コンテンツサービスサーバまたはコンテンツ配信サーバなど)、放送受信機デバイス、放送送信機デバイスなどを含む、広範なデバイスのいずれかを備えてもよく、オペレーティングシステムを使用しなくても、または任意の種類のオペレーティングシステムを使用してもよい。
【0101】
いくつかの場合、ソースデバイス12およびデスティネーションデバイス14は、ワイヤレス通信に対応し得る。したがって、ソースデバイス12およびデスティネーションデバイス14は、ワイヤレス通信デバイスであり得る。
【0102】
いくつかの場合、
図1Aに示されるビデオコーディングシステム10は例にすぎず、本出願の技法は、符号化デバイスと復号デバイスとの間にデータ通信を必ずしも含まないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データは、ローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスは、データを符号化してメモリに記憶してもよく、かつ/または、ビデオ復号デバイスは、メモリからデータを取り出して復号してもよい。いくつかの例では、符号化および復号は、互いに通信しないデバイスによって実行されるが、単にメモリへとデータを符号化し、かつ/または、メモリからデータを取り出して復号してもよい。
【0103】
ビデオエンコーダ20に関して説明された上の例の各々に対して、ビデオデコーダ30は逆のプロセスを実行するように構成され得ることが理解されるべきである。シンタックス要素をシグナリングすることに関して、ビデオデコーダ30は、そのようなシンタックス要素を受信して構文解析し、関連するビデオデータをそれに従って復号するように構成され得る。いくつかの例では、ビデオエンコーダ20は、1つまたは複数のシンタックス要素を符号化されたビデオビットストリームへとエントロピー符号化し得る。そのような例では、ビデオデコーダ30は、そのようなシンタックス要素を構文解析し、関連するビデオデータをそれに従って復号し得る。
【0104】
図1Bは、ある例示的な実施形態による、
図2のエンコーダ20および/または
図3のデコーダ30を含む、別の例示的なビデオコーディングシステム40の説明のための図である。システム40は、本出願において説明される様々な例に従って、本出願の技法を実施することができる。示される実装形態では、ビデオコーディングシステム40は、撮像デバイス41、ビデオエンコーダ100、ビデオデコーダ30(および/または処理ユニット46の論理回路47を介して実装されるビデオコーダ)、アンテナ42、1つまたは複数のプロセッサ43、1つまたは複数のメモリストア44、および/または表示デバイス45を含み得る。
【0105】
示されるように、撮像デバイス41、アンテナ42、処理ユニット46、論理回路47、ビデオエンコーダ20、ビデオデコーダ30、プロセッサ43、メモリストア44、および/または表示デバイス45は、互いに通信が可能であり得る。論じられるように、ビデオエンコーダ20とビデオデコーダ30の両方とともに示されているが、ビデオコーディングシステム40は、様々な例において、ビデオエンコーダ20だけまたはビデオデコーダ30だけを含み得る。
【0106】
示されるように、いくつかの例では、ビデオコーディングシステム40はアンテナ42を含み得る。アンテナ42は、たとえば、ビデオデータの符号化されたビットストリームを送信または受信するように構成され得る。さらに、いくつかの例では、ビデオコーディングシステム40は表示デバイス45を含み得る。表示デバイス45は、ビデオデータを提示するように構成され得る。示されるように、いくつかの例では、論理回路47は処理ユニット46を介して実装され得る。処理ユニット46は、特定用途向け集積回路(ASIC)論理、グラフィクスプロセッサ、汎用プロセッサなどを含み得る。ビデオコーディングシステム40は、特定用途向け集積回路(ASIC)論理、グラフィクスプロセッサ、汎用プロセッサなどを同様に含み得る、任意選択のプロセッサ43も含み得る。いくつかの例では、論理回路47は、ハードウェア、ビデオコーディング専用ハードウェアなどを介して実装されてもよく、プロセッサ43は、実装された汎用ソフトウェア、オペレーティングシステムなどもよい。加えて、メモリストア44は、揮発性メモリ(たとえば、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)など)または不揮発性メモリ(たとえば、フラッシュメモリなど)などの、任意のタイプのメモリであり得る。非限定的な例において、メモリストア44はキャッシュメモリによって実装され得る。いくつかの例では、論理回路47は(たとえば画像バッファの実装のために)メモリストア44にアクセスしてもよい。他の例では、論理回路47および/または処理ユニット46は、画像バッファなどの実装のためのメモリストア(たとえば、キャッシュなど)を含み得る。
【0107】
いくつかの例では、論理回路を介して実装されるビデオエンコーダ100は、(たとえば、処理ユニット46またはメモリストア44のいずれかを介して)画像バッファを、および(たとえば、処理ユニット46を介して)グラフィクス処理ユニットを含み得る。グラフィクス処理ユニットは、画像バッファに通信可能に結合され得る。グラフィクス処理ユニットは、
図2に関して論じられるような様々なモジュール、および/または本明細書において説明される任意の他のエンコーダシステムもしくはサブシステムを具現化するために、論理回路47を介して実装されるようなビデオエンコーダ100を含み得る。論理回路は、本明細書において論じられるような様々な動作を実行するように構成され得る。
【0108】
ビデオデコーダ30は、
図3のデコーダ30に関して論じられるような様々なモジュール、および/または本明細書において説明される任意の他のエンコーダシステムもしくはサブシステムを具現化するために、論理回路47を介して実装されるのと同様の方式で実装され得る。いくつかの例では、ビデオデコーダ30は論理回路を介して実装されてもよく、(たとえば、処理ユニット420またはメモリストア44のいずれかを介して)画像バッファを、および(たとえば、処理ユニット46を介して)グラフィクス処理ユニットを含み得る。グラフィクス処理ユニットは、画像バッファに通信可能に結合され得る。グラフィクス処理ユニットは、
図3に関して論じられるような様々なモジュール、および/または本明細書において説明される任意の他のデコーダシステムもしくはサブシステムを具現化するために、論理回路47を介して実装されるようなビデオデコーダ30を含み得る。
【0109】
いくつかの例では、ビデオコーディングシステム40のアンテナ42は、ビデオデータの符号化されたビットストリームを受信するように構成され得る。論じられるように、符号化されたビットストリームは、コーディング区分と関連付けられるデータ(たとえば、変換係数もしくは量子化された変換係数、任意選択のインジケータ(論じられるような)、および/またはコーディング区分を定義するデータ)などの、本明細書において論じられるようなビデオフレームを符号化することと関連付けられる、データ、インジケータ、インデックス値、モード選択データなどを含み得る。ビデオコーディングシステム40はまた、アンテナ42に結合され、符号化されたビットストリームを復号するように構成される、ビデオデコーダ30を含み得る。ビデオフレームを提示するように構成される表示デバイス45。
【0110】
エンコーダおよび符号化方法
図2は、本出願の技法を実施するように構成されるビデオエンコーダ20の例を概略的に示す。
図2の例では、ビデオエンコーダ20は、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、バッファ216、ループフィルタユニット220、復号ピクチャバッファ(DPB)230、予測処理ユニット260、およびエントロピー符号化ユニット270を備える。予測処理ユニット260は、インター予測ユニット244、イントラ予測ユニット254、およびモード選択ユニット262を含み得る。インター予測ユニット244は、動き推定ユニットおよび動き補償ユニット(図示されず)を含み得る。
図2に示されるようなビデオエンコーダ20は、ハイブリッドビデオコーデックに従って、ハイブリッドビデオエンコーダまたはビデオエンコーダとも呼ばれ得る。
【0111】
たとえば、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、予測処理ユニット260、およびエントロピー符号化ユニット270は、エンコーダ20の順方向信号経路を形成し、一方、たとえば、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、バッファ216、ループフィルタ220、復号ピクチャバッファ(DPB)230、予測処理ユニット260は、エンコーダの逆方向信号経路を形成し、エンコーダの逆方向信号経路は、デコーダの信号経路に対応する(
図3のデコーダ30参照)。
【0112】
エンコーダ20は、たとえば、入力202によって、ピクチャ201またはピクチャ201のブロック203、たとえば、ビデオまたはビデオシーケンスを形成するピクチャのシーケンスのピクチャを受信するように構成される。ピクチャブロック203はまた、現在のピクチャブロックまたはコーディングされることになるピクチャブロックとも呼ばれることがあり、ピクチャ201は、現在のピクチャまたはコーディングされることになるピクチャとも呼ばれることがある(特にビデオコーディングでは、現在のピクチャを他のピクチャ、たとえば、同じビデオシーケンスの以前に符号化および/または復号されたピクチャ、すなわち、現在のピクチャも備えるビデオシーケンスと区別するために)。
【0113】
区分
エンコーダ20の実施形態は、ピクチャ201を複数のブロックへと、たとえば、ブロック203のようなブロックを通常は複数の重複しないブロックへと区分するように構成される、区分ユニット(
図2には示されない)を備え得る。区分ユニットは、ビデオシーケンスのすべてのピクチャに対する同じブロックサイズと、そのブロックサイズを画定する対応する格子とを使用するように、または、ピクチャ間で、もしくはピクチャのサブセットもしくはグループ間でブロックサイズを変更し、各ピクチャを対応するブロックへと区分するように構成されてもよい。
【0114】
一例では、ビデオエンコーダ20の予測処理ユニット260は、上で説明された区分技法の任意の組合せを実行するように構成され得る。
【0115】
ピクチャ201のように、ブロック203はやはり、強度値(サンプル値)を伴うサンプルの2次元アレイもしくは行列であり、またはそのように見なされ得るが、ピクチャ201より次元が小さい。言い換えると、ブロック203は、たとえば、1サンプルのアレイ(たとえば、モノクロームピクチャ201の場合のルマアレイ)または3サンプルのアレイ(たとえば、カラーピクチャ201の場合のルマアレイおよび2つのクロマアレイ)または適用されるカラーフォーマットに応じた任意の他の数および/もしくは種類のアレイを備え得る。ブロック203の水平方向および垂直方向(または軸)におけるサンプルの数は、ブロック203のサイズを決める。
【0116】
図2に示されるようなエンコーダ20が構成される、ブロックごとにピクチャ201を符号化し、たとえば、符号化および予測はブロック203ごとに実行される。
【0117】
残差計算
残差計算ユニット204は、たとえば、ピクチャブロック203のサンプル値から予測ブロック265のサンプル値をサンプルごとに(ピクセルごとに)減算して、サンプル領域において残差ブロック205を取得することによって、ピクチャブロック203および予測ブロック265に基づいて残差ブロック205を計算するように構成される(予測ブロック265についてのさらなる詳細が後で提供される)。
【0118】
変換
変換処理ユニット206は、変換領域において変換係数207を取得するために、残差ブロック205のサンプル値に対して変換、たとえば、離散コサイン変換(DCT)または離散サイン変換(DST)を適用するように構成される。変換係数207は、変換残差係数とも呼ばれることがあり、変換領域において残差ブロック205を表すことがある。
【0119】
変換処理ユニット206は、HEVC/H.265について規定される変換などの、DCT/DSTの整数近似を適用するように構成され得る。直交DCT変換と比較して、そのような整数近似は通常、ある係数によりスケーリングされる。順方向変換および逆方向変換によって処理される残差ブロックのノルムを保つために、変換プロセスの一部として追加のスケーリング係数が適用される。スケーリング係数は通常、スケーリング係数がシフト演算のための2のべき乗であること、変換係数のビット深度、正確さと実装コストのトレードオフなどのような、何らかの制約に基づいて選ばれる。具体的なスケーリング係数は、たとえば、デコーダ30において逆変換処理ユニット212によって、たとえば逆変換のために指定され(対応する逆変換は、たとえばエンコーダ20において逆変換処理ユニット212によって)指定され、順方向変換のための対応するスケーリング係数は、たとえばエンコーダ20における変換処理ユニット206によって、それに従って指定され得る。
【0120】
量子化
量子化ユニット208は、たとえば、スカラー量子化またはベクトル量子化を適用することによって、変換係数207を量子化して量子化された変換係数209を取得するように構成される。量子化された変換係数209は、量子化された残差係数209とも呼ばれ得る。量子化プロセスは、変換係数207のいくつかまたはすべてと関連付けられるビット深度を減らし得る。たとえば、nビットの変換係数は、量子化の間にmビットの変換係数へと丸められてもよく、nはmより大きい。量子化の程度は、量子化パラメータ(QP)を調整することによって修正され得る。たとえば、スカラー量子化では、より細かいまたは粗い量子化を実現するために、異なるスケーリングが適用され得る。より小さい量子化ステップサイズはより細かい量子化に対応するが、より大きい量子化ステップサイズはより粗い量子化に対応する。適用可能な量子化ステップサイズは、量子化パラメータ(QP)によって示され得る。量子化パラメータは、たとえば、適用可能な量子化ステップサイズのあらかじめ定められたセットに対するインデックスであり得る。たとえば、小さい量子化パラメータは細かい量子化(小さい量子化ステップサイズ)に対応することがあり、大きい量子化パラメータは粗い量子化(大きい量子化ステップサイズ)に対応することがあり、またはこの逆であることがある。量子化は量子化ステップサイズによる除算を含んでもよく、たとえば逆量子化210による、対応するまたは逆の量子化解除は、量子化ステップサイズによる乗算を含んでもよい。いくつかの規格、たとえばHEVCによる実施形態は、量子化ステップサイズを決定するために量子化パラメータを使用するように構成され得る。一般に、量子化ステップサイズは、除算を含む式の不動点近似を使用した量子化パラメータに基づいて計算され得る。追加のスケーリング係数が、残差ブロックのノルムを復元するための量子化および量子化解除のために導入されてもよく、これは、量子化ステップサイズおよび量子化パラメータの式の不動点近似において使用されるスケーリングが原因で修正され得る。1つの例示的な実装形態では、逆変換および量子化解除のスケーリングは組み合わせられ得る。代替的に、カスタマイズされた量子化テーブルが使用され、たとえばビットストリームにおいて、エンコーダからデコーダにシグナリングされ得る。量子化は有損失演算であり、損失は量子化ステップサイズの増大とともに増大する。
【0121】
逆量子化ユニット210は、たとえば、量子化ユニット208と同じ量子化ステップサイズに基づいて、またはそれを使用して、量子化ユニット208によって適用される量子化方式の逆を適用することによって、量子化された係数に対する量子化ユニット208の逆量子化を適用して、量子化解除された係数211を取得するように構成される。量子化解除された係数211は、量子化解除された残差係数211とも呼ばれることがあり、量子化による損失が原因で変換係数とは通常は同一ではないが、変換係数207に対応することがある。
【0122】
逆変換処理ユニット212は、変換処理ユニット206によって適用される変換の逆変換、たとえば、逆離散コサイン変換(DCT)または逆離散サイン変換(DST)を適用して、サンプル領域において逆変換ブロック213を取得するように構成される。逆変換ブロック213は、逆変換量子化解除されたブロック213または逆変換残差ブロック213とも呼ばれることがある。
【0123】
再構築ユニット214(たとえば、加算器214)は、たとえば、再構築された残差ブロック213のサンプル値と予測ブロック265のサンプル値を加算することによって、逆変換ブロック213(すなわち、再構築された残差ブロック213)を予測ブロック265に加算して、サンプル領域において再構築されたブロック215を取得するように構成される。
【0124】
任意選択で、バッファユニット216(または略して「バッファ」216)、たとえば行バッファ216は、たとえばイントラ予測のために、再構築されたブロック215およびそれぞれのサンプル値をバッファまたは記憶するように構成される。さらなる実施形態では、エンコーダは、任意の種類の推定および/または予測、たとえばイントラ予測のために、バッファユニット216に記憶されている、フィルタリングされていない再構築されたブロックおよび/またはそれぞれのサンプル値を使用するように構成され得る。
【0125】
エンコーダ20の実施形態は、たとえば、バッファユニット216がイントラ予測254のために再構築されたブロック215を記憶するためだけではなく、ループフィルタユニット220(
図2には示されていない)のためにも使用されるように、ならびに/または、たとえばバッファユニット216および復号ピクチャバッファユニット230が1つのバッファを形成するように、構成され得る。さらなる実施形態は、イントラ予測254のための入力または基礎として、フィルタリングされたブロック221および/または復号ピクチャバッファ230からのブロックもしくはサンプル(両方とも
図2には示されていない)を使用するように構成され得る。
【0126】
ループフィルタユニット220(または略して「ループフィルタ」220)は、たとえばピクセル遷移を滑らかにするために、またはビデオ品質を別様に改善するために、再構築されたブロック215をフィルタリングして、フィルタリングされたブロック221を取得するように構成される。ループフィルタユニット220は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ、または他のフィルタ、たとえば、バイラテラルフィルタまたは適応ループフィルタ(ALF)または先鋭化もしくは平滑化フィルタまたは協調フィルタなどの、1つまたは複数のループフィルタを表すことが意図されている。ループフィルタユニット220は、ループフィルタの中にあるものとして
図2において示されているが、他の構成では、ループフィルタユニット220は、ポストループフィルタとして実装され得る。フィルタリングされたブロック221は、フィルタリングされた再構築されたブロック221とも呼ばれ得る。復号ピクチャバッファ230は、ループフィルタユニット220が再構築されたコーディングブロックに対するフィルタリング動作を実行した後、再構築されたコーディングブロックを記憶し得る。
【0127】
エンコーダ20(それぞれループフィルタユニット220)の実施形態は、たとえば、デコーダ30が復号のために同じループフィルタパラメータを受信して適用し得るように、ループフィルタパラメータ(サンプル適応オフセット情報など)を、たとえば直接、またはエントロピー符号化ユニット270もしくは任意の他のエントロピーコーディングユニットを介してエントロピー符号化された状態で出力するように構成され得る。
【0128】
復号ピクチャバッファ(DPB)230は、ビデオエンコーダ20によりビデオデータを符号化する際に使用するための参照ピクチャデータを記憶する参照ピクチャメモリであり得る。DPB230は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM)、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)などの様々なメモリデバイスのいずれかによって形成され得る。DPB230およびバッファ216は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。いくつかの例では、復号ピクチャバッファ(DPB)230は、フィルタリングされたブロック221を記憶するように構成される。復号ピクチャバッファ230はさらに、同じ現在のピクチャの、または異なるピクチャ、たとえば以前に再構築されたピクチャの、他の以前にフィルタリングされたブロック、たとえば以前に再構築されフィルタリングされたブロック221を記憶するように構成されてもよく、たとえばインター予測のために、完全に以前に再構築された、すなわち復号されたピクチャ(および対応する参照ブロックおよびサンプル)および/または部分的に再構築された現在のピクチャ(および対応する参照ブロックおよびサンプル)を提供してもよい。いくつかの例では、再構築されたブロック215が再構築されるが、ループ内フィルタリングを伴わない場合、復号ピクチャバッファ(DPB)230は、再構築されたブロック215を記憶するように構成される。
【0129】
ブロック予測処理ユニット260とも呼ばれる、予測処理ユニット260は、ブロック203(現在のピクチャ201の現在のブロック203)および再構築されたピクチャデータ、たとえば、バッファ216からの同じ(現在の)ピクチャの参照サンプルおよび/または復号ピクチャバッファ230からの1つまたは複数の以前に復号されたピクチャからの参照ピクチャデータ231を受信または取得して、そのようなデータを予測のために処理するように、すなわち、予測ブロック265を提供するように構成され、予測ブロック265は、インター予測されたブロック245またはイントラ予測されたブロック255であり得る。
【0130】
モード選択ユニット262は、予測モード(たとえば、イントラ予測モードまたはインター予測モード)、および/または、残差ブロック205の計算および再構築されたブロック215の再構築のために予測ブロック265として使用されることになる対応する予測ブロック245もしくは255を選択するように構成され得る。
【0131】
モード選択ユニット262の実施形態は、最良の一致をもたらす、もしくは言い換えると最小の残差をもたらす(最小の残差は送信または記憶のためのより優れた圧縮を意味する)、または、最小のシグナリングオーバーヘッドをもたらす(最小のシグナリングオーバーヘッドは送信または記憶のためのより優れた圧縮を意味する)、または、これらの両方を考慮し、もしくは両方のバランスをとる、予測モードを(たとえば、予測処理ユニット260によってサポートされるものから)選択するように構成され得る。モード選択ユニット262は、レート歪み最適化(RDO)に基づいて予測モードを決定し、すなわち、最低限のレート歪み最適化をもたらす、またはその関連するレート歪みが少なくとも予測モード選択基準を満たす、予測モードを選択するように構成され得る。
【0132】
以下では、予測処理(たとえば、予測処理ユニット260)および例示的なエンコーダ20によって実行されるモード選択(たとえば、モード選択ユニット262による)が、より詳細に説明される。
【0133】
上で説明されたように、エンコーダ20は、(所定の)予測モードのセットから最良のまたは最適な予測モードを決定または選択するように構成される。予測モードのセットは、たとえば、イントラ予測モードおよび/またはインター予測モードを備え得る。
【0134】
イントラ予測モードのセットは、35個の異なるイントラ予測モード、たとえばDC(または平均)モードおよび平面モードのような無指向性モード、もしくは、たとえばH.265において定義されるような指向性モードを備えてもよく、または、67個の異なるイントラ予測モード、たとえばDC(または平均)モードおよび平面モードのような無指向性モード、もしくは、たとえば開発中のH.266において定義されるような指向性モードを備えてもよい。
【0135】
インター予測モードのセット(または可能なインター予測モード)は、利用可能な参照ピクチャ(すなわち、たとえばDBP230に記憶されている、以前に少なくとも部分的に復号されたピクチャ)および他のインター予測パラメータ、たとえば、最もよく一致する参照ブロックを探すために、参照ピクチャの全体の参照ピクチャが使用されるか、もしくはその一部、たとえば現在のブロックのエリアの周りの探索ウィンドウエリアだけが使用されるか、ならびに/または、たとえばピクセル補間、たとえば2分の1/セミペル補間および/もしくは4分の1ペル補間が適用されるかどうかに、依存する。
【0136】
上の予測モードに加えて、スキップモードおよび/またはダイレクトモードが適用され得る。
【0137】
予測処理ユニット260はさらに、たとえば、四分木区分(QT)、二分木区分(BT)、または三分木区分(TT)、またはこれらの任意の組合せを繰り返し使用して、ブロック203をより小さいブロック区分またはサブブロックへと区分し、たとえばブロック区分またはサブブロックの各々に対する予測を実行するように構成されてもよく、モード選択は、区分されたブロック203の木構造およびブロック区分またはサブブロックの各々に適用される予測モードの選択を備える。
【0138】
インター予測ユニット244は、動き推定(ME)ユニット(
図2には示されない)および動き補償(MC)ユニット(
図2には示されない)を含み得る。動き推定ユニットは、ピクチャブロック203(現在のピクチャ201の現在のピクチャブロック203)および復号されたピクチャ231を、または、少なくとも1つまたは複数の以前に再構築されたブロック、たとえば、1つまたは複数の他の/異なる以前に復号されたピクチャ231の再構築されたブロックを、動き推定のために受信または取得するように構成される。たとえば、ビデオシーケンスは、現在のピクチャおよび以前に復号されたピクチャ231を備えてもよく、または言い換えると、現在のピクチャおよび以前に復号されたピクチャ231は、ビデオシーケンスを形成するピクチャのシーケンスの一部であってもよく、またはそれを形成してもよい。
【0139】
エンコーダ20は、たとえば、複数の他のピクチャの同じまたは異なるピクチャの複数の参照ブロックから参照ブロックを選択し、参照ピクチャ(または参照ピクチャインデックス、...)および/または参照ブロックの位置(x、y座標)と現在のブロックの位置との間のオフセット(空間オフセット)をインター推定パラメータとして動き推定ユニット(
図2には示されない)に提供するように構成され得る。このオフセットは動きベクトル(MV)とも呼ばれる。
【0140】
動き補償ユニットは、インター予測パラメータを取得、たとえば受信して、インター予測パラメータに基づいて、またはそれを使用してインター予測を実行し、インター予測ブロック245を取得するように構成される。動き補償ユニット(
図2には示されない)によって実行される動き補償は、動き推定によって決定される動き/ブロックベクトルに基づいて予測ブロックをフェッチまたは生成し、場合によってはサブピクセル精度への補間を実行することを伴い得る。補間フィルタリングは、既知のピクセルサンプルから追加のピクセルサンプルを生成し得るので、ピクチャブロックをコーディングするために使用され得る候補予測ブロックの数を増やす可能性がある。現在のピクチャブロックのPUに対する動きベクトルを受信すると、動き補償ユニット246は、参照ピクチャリストのうちの1つにおいて動きベクトルが指し示す予測ブロックを位置特定し得る。動き補償ユニット246はまた、ビデオスライスのピクチャブロックを復号する際にビデオデコーダ30によって使用するための、ブロックおよびビデオスライスと関連付けられるシンタックス要素を生成し得る。
【0141】
イントラ予測ユニット254は、ピクチャブロック203(現在のピクチャブロック)、および同じピクチャの1つまたは複数の以前に再構築されたブロック、たとえば再構築された近隣のブロックを、イントラ推定のために取得し、たとえば受信するように構成される。エンコーダ20は、たとえば、複数の(所定の)イントラ予測モードからイントラ予測モードを選択するように構成され得る。
【0142】
エンコーダ20の実施形態は、最適化基準、たとえば最小の残差(たとえば、現在のピクチャブロック203に最も類似する予測ブロック255を提供するイントラ予測モード)または最小のレート歪みに基づいてイントラ予測モードを選択するように構成され得る。
【0143】
イントラ予測ユニット254はさらに、イントラ予測パラメータ、たとえば選択されたイントラ予測モードに基づいて、イントラ予測ブロック255を決定するように構成される。いずれの場合でも、ブロックに対するイントラ予測モードを選択した後で、イントラ予測ユニット254はまた、イントラ予測パラメータ、すなわちブロックに対する選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット270に提供するように構成される。一例では、イントラ予測ユニット254は、後で説明されるイントラ予測技法の任意の組合せを実行するように構成され得る。
【0144】
エントロピー符号化ユニット270は、エントロピー符号化アルゴリズムまたは方式(たとえば、可変長コーディング(VLC)方式、コンテキスト適応VLC方式(CALVC)、算術コーディング方式、コンテキスト適応バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピー符号化方法もしくは技法)を、量子化された残差係数209、インター予測パラメータ、イントラ予測パラメータ、および/またはループフィルタパラメータを、個別にまたは一緒に適用し(またはまったく適用せず)、たとえば符号化されたビットストリーム21の形で、出力272によって出力され得る符号化されたピクチャデータ21を取得するように構成される。符号化されたビットストリーム21は、ビデオデコーダ30に送信されてもよく、または、ビデオデコーダ30による後の送信もしくは取り出しのためにアーカイブされてもよい。エントロピー符号化ユニット270はさらに、コーディングされている現在のビデオスライスに対する他のシンタックス要素をエントロピー符号化するように構成され得る。
【0145】
ビデオエンコーダ20の他の構造的な変形が、ビデオストリームを符号化するために使用され得る。たとえば、非変換ベースのエンコーダ20は、いくつかのブロックまたはフレームに対して、変換処理ユニット206なしで直接残差信号を量子化することができる。別の実装形態では、エンコーダ20は、単一のユニットへと組み合わせられる量子化ユニット208および逆量子化ユニット210を有し得る。
【0146】
図3は、本出願の技法を実施するように構成される例示的なビデオデコーダ30を示す。復号されたピクチャ131を取得するために、たとえばエンコーダ100によって符号化される、符号化されたピクチャデータ(たとえば、符号化されたビットストリーム)21を受信するように構成されるビデオデコーダ30。復号プロセスの間に、ビデオデコーダ30は、ビデオデータ、たとえば、符号化されたビデオスライスのピクチャブロックおよび関連するシンタックス要素を表す符号化されたビデオビットストリームを、ビデオエンコーダ100から受信する。
【0147】
図3の例では、デコーダ30は、エントロピー復号ユニット304、逆量子化ユニット310、逆変換処理ユニット312、再構築ユニット314(たとえば、加算器314)、バッファ316、ループフィルタ320、復号ピクチャバッファ330、および予測処理ユニット360を備える。予測処理ユニット360は、インター予測ユニット344、イントラ予測ユニット354、およびモード選択ユニット362を含み得る。ビデオデコーダ30は、いくつかの例では、
図2からビデオエンコーダ100に関して説明された符号化パスとは全般に逆の復号パスを実行し得る。
【0148】
エントロピー復号ユニット304は、エントロピー復号を符号化されたピクチャデータ21に対して実行し、たとえば、量子化された係数309および/または復号されたコーディングパラメータ(
図3には示されない)、たとえば、インター予測パラメータ、イントラ予測パラメータ、ループフィルタパラメータ、および/もしくは他のシンタックス要素の(復号された)いずれかまたはすべてを取得するように構成される。エントロピー復号ユニット304はさらに、インター予測パラメータ、イントラ予測パラメータ、および/または他のシンタックス要素を予測処理ユニット360に転送するように構成される。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
【0149】
逆量子化ユニット310は、逆量子化ユニット110と機能において同一であってもよく、逆変換処理ユニット312は、逆変換処理ユニット112と機能において同一であってもよく、再構築ユニット314は再構築ユニット114と機能において同一であってもよく、バッファ316はバッファ116と機能において同一であってもよく、ループフィルタ320はループフィルタ120と機能において同一であってもよく、復号ピクチャバッファ330は復号ピクチャバッファ130と機能において同一であってもよい。
【0150】
予測処理ユニット360は、インター予測ユニット344およびイントラ予測ユニット354を備えてもよく、インター予測ユニット344は、インター予測ユニット144と機能において機能的に同様であってもよく、イントラ予測ユニット354は、イントラ予測ユニット154と機能的に同様であってもよい。予測処理ユニット360は通常、符号化されたデータ21からブロック予測を実行し、および/または予測ブロック365を取得して、たとえばエントロピー復号ユニット304から、予測関連パラメータおよび/または選択された予測モードについての情報を(明示的にまたは暗黙的に)受信または取得するように構成される。
【0151】
ビデオスライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、予測処理ユニット360のイントラ予測ユニット354は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの以前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのピクチャブロックに対する予測ブロック365を生成するように構成される。ビデオフレームがインターコーディングされた(すなわち、BまたはP)スライスとしてコーディングされるとき、予測処理ユニット360のインター予測ユニット344(たとえば、動き補償ユニット)は、エントロピー復号ユニット304から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックに対する予測ブロック365を生み出すように構成される。インター予測では、予測ブロックは、参照ピクチャリストのうちの1つの中にある参照ピクチャのうちの1つから生み出され得る。ビデオデコーダ30は、DPB330に記憶されている参照ピクチャに基づくデフォルトの構築技法を使用して、参照フレームリストList0およびList1を構築し得る。
【0152】
予測処理ユニット360は、動きベクトルおよび他のシンタックス要素を構文解析することによって現在のビデオスライスのビデオブロックに対する予測情報を決定するように構成され、予測情報を使用して、復号されている現在のビデオブロックに対する予測ブロックを生み出す。たとえば、予測処理ユニット360は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)、スライスのための参照ピクチャリストのうちの1つまたは複数に対する構築情報、スライスの各インター符号化されたビデオブロックに対する動きベクトル、スライスの各インターコーディングされたビデオブロックに対するインター予測ステータス、および現在のビデオスライスの中のビデオブロックを復号するための他の情報を決定するために、受信されたシンタックス要素のいくつかを使用する。
【0153】
逆量子化ユニット310は、ビットストリームにおいて提供されエントロピー復号ユニット304によって復号される量子化された変換係数を逆量子化、すなわち量子化解除するように構成される。逆量子化プロセスは、量子化の程度を、同様に、適用されるべき逆量子化の程度を決定するために、ビデオスライスの中の各ビデオブロックに対して、ビデオエンコーダ100によって計算される量子化パラメータを使用することを含み得る。
【0154】
逆変換処理ユニット312は、ピクセル領域において残差ブロックを生み出すために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを、変換係数に適用するように構成される。
【0155】
再構築ユニット314(たとえば、加算器314)は、たとえば、再構築された残差ブロック313のサンプル値と予測ブロック365のサンプル値を加算することによって、逆変換ブロック313(すなわち、再構築された残差ブロック313)を予測ブロック365に加算して、サンプル領域において再構築されたブロック315を取得するように構成される。
【0156】
ループフィルタユニット320(コーディングループの中またはコーディングループの後のいずれかの)は、たとえばピクセル遷移を滑らかにするために、またはビデオ品質を別様に改善するために、再構築されたブロック315をフィルタリングして、フィルタリングされたブロック321を取得するように構成される。一例では、ループフィルタユニット320は、後で説明されるフィルタリング技法の任意の組合せを実行するように構成され得る。ループフィルタユニット320は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ、または他のフィルタ、たとえば、バイラテラルフィルタまたは適応ループフィルタ(ALF)または先鋭化もしくは平滑化フィルタまたは協調フィルタなどの、1つまたは複数のループフィルタを表すことが意図されている。ループフィルタユニット320は、ループフィルタの中にあるものとして
図3において示されているが、他の構成では、ループフィルタユニット320は、ポストループフィルタとして実装され得る。
【0157】
所与のフレームまたはピクチャの中の復号されたビデオブロック321は次いで、復号ピクチャバッファ330に記憶され、これは、後続の動き補償のために使用される参照ピクチャを記憶する。
【0158】
デコーダ30は、ユーザへの提示または視聴のために、たとえば出力332を介して、復号されたピクチャ331を出力するように構成される。
【0159】
ビデオデコーダ30の他の変形が、圧縮されたビットストリームを復号するために使用され得る。たとえば、デコーダ30は、ループフィルタリングユニット320なしで出力ビデオストリームを生み出すことができる。たとえば、非変換ベースのデコーダ30は、いくつかのブロックまたはフレームに対して、逆変換処理ユニット312なしで直接残差信号を逆量子化することができる。別の実装形態では、ビデオデコーダ30は、単一のユニットへと組み合わせられる逆量子化ユニット310および逆変換処理ユニット312を有し得る。
【0160】
図4は、本開示のある実施形態による、ビデオコーディングデバイス400の概略図である。ビデオコーディングデバイス400は、本明細書において説明されるような開示される実施形態を実装するのに適している。ある実施形態では、ビデオコーディングデバイス400は、
図1Aのビデオデコーダ30などのデコーダ、または
図1Aのビデオエンコーダ20などのエンコーダであり得る。ある実施形態では、ビデオコーディングデバイス400は、上で説明されたような、
図1Aのビデオデコーダ30または
図1Aのビデオエンコーダ20の1つまたは複数の構成要素であり得る。
【0161】
ビデオコーディングデバイス400は、データを受信するための入口ポート410および受信機ユニット(Rx)420、データを処理するためのプロセッサ、論理ユニット、または中央処理装置(CPU)430、データを送信するための送信機ユニット(Tx)440および出口ポート450、ならびにデータを記憶するためのメモリ460を備える。ビデオコーディングデバイス400は、光信号もしくは電気信号の放出または進入のために、入口ポート410、受信機ユニット420、送信機ユニット440、および出口ポート450に結合された、光-電気(OE)コンポーネントおよび電気-光(EO)コンポーネントも備え得る。
【0162】
プロセッサ430は、ハードウェアおよびソフトウェアによって実装される。プロセッサ430は、1つまたは複数のCPUチップ、コア(たとえば、マルチコアプロセッサのような)、FPGA、ASIC、およびDSPとして実装され得る。プロセッサ430は、入口ポート410、受信機ユニット420、送信機ユニット440、出口ポート450、およびメモリ460と通信している。プロセッサ430はコーディングモジュール470を備える。コーディングモジュール470は、上で説明された開示された実施形態を実装する。たとえば、コーディングモジュール470は、様々なコーディング動作を実装し、処理し、準備し、または提供する。したがって、コーディングモジュール470が含まれることは、ビデオコーディングデバイス400の機能をかなり改善し、異なる状態へのビデオコーディングデバイス400の変換をもたらす。代替的に、コーディングモジュール470は、メモリ460に記憶されておりプロセッサ430によって実行される命令として実装される。
【0163】
メモリ460は、1つまたは複数のディスク、テープドライブ、およびソリッドステートドライブを備え、そのようなプログラムが実行のために選択されるときにプログラムを記憶するために、およびプログラム実行の間に読み取られる命令とデータを記憶するために、オーバーフローデータストレージデバイスとして使用され得る。メモリ460は、揮発性および/または不揮発性であってもよく、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想メモリ(TCAM)、および/またはスタティックランダムアクセスメモリ(SRAM)であってもよい。
【0164】
図5は、ある例示的な実施形態による、
図1からのソースデバイス310とデスティネーションデバイス320のいずれかまたは両方として使用され得る装置500の簡略化されたブロック図である。装置500は、上で説明された本出願の技法を実施することができる。装置500は、複数のコンピューティングデバイスを含むコンピューティングシステムの形態であってもよく、または、単一のコンピューティングデバイス、たとえば携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータなどの形態であってもよい。
【0165】
装置500の中のプロセッサ502は、中央処理装置であり得る。代替的に、プロセッサ502は、今ある、または今後開発される、情報を操作または処理することが可能な任意の他のタイプのデバイスまたは複数のデバイスであり得る。開示される実装形態は、示されるように単一のプロセッサ、たとえばプロセッサ502を用いて実践され得るが、1つより多くのプロセッサを使用すると、速さおよび効率性の点で利点を得ることができる。
【0166】
ある実装形態では、装置500の中のメモリ504は、読取り専用メモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスであり得る。任意の他の適切なタイプのストレージデバイスがメモリ504として使用され得る。メモリ504は、バス512を使用してプロセッサ502によってアクセスされるコードおよびデータ506を含み得る。メモリ504はさらに、オペレーティングシステム508およびアプリケーションプログラム510を含んでもよく、アプリケーションプログラム510は、プロセッサ502がここで説明される方法を実行することを可能にする少なくとも1つのプログラムを含む。たとえば、アプリケーションプログラム510は、アプリケーション1からNを含んでもよく、さらに、ここで説明される方法を実行するビデオコーディングアプリケーションを含む。装置500はまた、たとえばモバイルコンピューティングデバイスとともに使用されるメモリカードであり得る、二次的ストレージ514の形態の追加のメモリを含み得る。ビデオ通信セッションは、大量の情報を含み得るので、処理のために必要とされるものとして、全体または一部が、二次的ストレージ514に記憶され、メモリ504にロードされ得る。
【0167】
装置500はまた、ディスプレイ518などの1つまたは複数の出力デバイスを含み得る。ディスプレイ518は、一例では、タッチ入力を感知するように動作可能なタッチ感知素子をディスプレイと組み合わせる、タッチ感知ディスプレイであってもよい。ディスプレイ518は、バス512を介してプロセッサ502に結合され得る。ユーザが装置500をプログラムすること、または別様に使用することを可能にする他の出力デバイスが、ディスプレイ518に加えて、またはその代わりに設けられ得る。出力デバイスがディスプレイであるとき、またはそれを含むとき、ディスプレイは、液晶ディスプレイ(LCD)、陰極線管(CRT)ディスプレイ、プラズマディスプレイ、または、有機LED(OLED)ディスプレイなどの発光ダイオード(LED)ディスプレイによるものを含めて、様々な方法で実装され得る。
【0168】
装置500はまた、画像感知デバイス520、たとえばカメラ、または、装置500を操作するユーザの画像などの画像を感知できる今あるもしくは今後開発される任意の他の画像感知デバイス520を含んでもよく、またはそれと通信していてもよい。画像感知デバイス520は、装置500を操作するユーザの方を向くように配置され得る。ある例では、画像感知デバイス520の位置および光学軸は、視野が、ディスプレイ518に直接隣接しそこからディスプレイ518が見えるエリアを含むように、構成され得る。
【0169】
装置500はまた、音声感知デバイス522、たとえばマイクロフォン、または、装置500の近くの音声を感知できる今あるもしくは今後開発される任意の他の音声感知デバイスを含んでもよく、またはそれと通信していてもよい。音声感知デバイス522は、装置500を操作するユーザの方を向くように配置されてもよく、音、たとえば、ユーザが装置500を操作する間にユーザにより行われる発話または他の発声を受け取るように構成されてもよい。
【0170】
図5は、単一のユニットに統合されるものとして装置500のプロセッサ502およびメモリ504を示すが、他の構成が利用され得る。プロセッサ502の動作は、直接結合され得る複数の機械(各機械はプロセッサのうちの1つまたは複数を有する)に、またはローカルエリアネットワークもしくは他のネットワークにわたって分散され得る。メモリ504は、ネットワークベースのメモリ、または装置500の動作を実行する複数の機械の中のメモリなどの、複数の機械にわたって分散され得る。ここでは単一のバスとして示されているが、装置500のバス512は複数のバスからなり得る。さらに、二次的ストレージ514は、装置500の他のコンポーネントに直接結合されてもよく、または、ネットワークを介してアクセスされてもよく、メモリカードなどの単一の統合されたユニットもしくは複数のメモリカードなどの複数のユニットを備えてもよい。したがって、装置500は、多種多様な構成で実装され得る。
【0171】
1. 動きベクトルコーディングについての基本的な情報
H.265/HEVC規格におけるインター予測の重要な部分は、動きベクトル(MV)コーディングである。動きベクトルは通常、たとえば次の2つの方式によって予測コーディングされる。
1. 動きベクトルが動きベクトル予測子から構築され、動きベクトル間の差が動き推定プロセスおよび予測子によって取得される。HEVC規格におけるこのMVコーディング方法は、高度動きベクトル予測(AMVP)と呼ばれる。
2. 動きベクトル差分を符号化することなく、候補(予測子)の構成可能なセットからの選択によって、動きベクトルが導出される。この手法はマージモードと呼ばれる。
【0172】
両方の技法に対して、すでに符号化された動きベクトルから構築される潜在的な予測候補の大きなセットを考慮することができる。HEVC規格では、空間候補、時間候補、合成双方向予測候補、およびゼロ候補という、動きベクトル予測子の4つのグループがある。符号化プロセスの間に、最良の動きベクトル予測子がある量の候補から選択され、候補リストにおけるそのインデックスがビットストリームに書き込まれる。(マージモードのための)空間MVP候補の位置の例が
図6に示されている。
【0173】
所与の例では、MVP候補はそれぞれ、A0、A1、B0、B1、およびB2と表記される。Ai候補の位置は現在のCUの左にある予測子を示し、Bjの位置は現在のCUの上にある予測子を示す。一般には、候補の位置はCUのコーディング順序に依存し得ることに留意されたい。コーディング順序に応じて、上、左、右、および下にある隣接するCUから候補が選択され得る。
【0174】
HEVC規格における空間MVP候補(マージモードおよび高度動きベクトル予測のための)のすべてが、隣接する近隣のCUに属する(それらが現在のCUと境界を共有することを意味する)。
【0175】
履歴ベース動きベクトル予測
動きベクトル予測のさらなる改善のために、非調整CUからの動き情報を使用する技法(動き情報は、マージリストインデックス、参照ピクチャインデックス、動きベクトルのセットである)が提案された。
【0176】
そのような技法のうちの1つは、Li Zhang他、「CE4-related: History-based Motion Vector Prediction」、ITU-T SG 16 WP 3およびISO/IEC JTC1/SC 29/WG 11 JVET-K0104のJoint Video Exploration Team (JVET)、第11回会議、リュブリャナ、スロベニア、2018年7月10~18日により記述される、履歴ベース動きベクトル予測 (HMVP)である。HMVPは、以前にコーディングされたCUからの動き情報からなるルックアップテーブル(LUT)を使用する。基本的に、HMVP方法は2つの主要な部分からなる。
1. HMVP LUT構築および更新方法
2. マージ候補リスト(またはAMVP候補リスト)を構築するためのHMVP LUTの使用
【0177】
1.1 HMVP LUT構築および更新方法
符号化プロセスおよび復号プロセスの間、LUTが維持される。新しいスライスに遭遇すると、LUTは空にされる。現在のCUがインターコーディングされるときは常に、新しいHMVP候補として、関連する動き情報がテーブルの最後のエントリに追加される。LUTサイズ(Nと表記される)はHMVP方法におけるパラメータである。
【0178】
以前にコーディングされたCUからのHMVP候補の数がLUTサイズより大きい場合、新しい方からN個以下の以前にコーディングされた動き候補をLUTが常に含むようにするために、テーブル更新方法が適用される。Zhang他の手法では、2つのテーブル更新方法が提案されている。
1. First-In-First-Out (FIFO)
2. Constrained FIFO
【0179】
1.1.1 FIFO LUT更新方法
FIFO LUT更新方法に従うと、新しい候補を挿入する前に、最も古い候補(0番目のテーブルのエントリ)がテーブルから除去される。このプロセスは
図7に示されている。
図7に示される例では、H
0が最も古い(0番目の)HMVP候補であり、Xが新しいHMVP候補である。
【0180】
この更新方法は相対的に複雑ではないが、この方法が適用されるとき、LUT要素の一部が同じである(同じ動き情報を含む)ことがある。これは、LUTの中の一部のデータが冗長であり、LUTの中の動き情報の多様性が、複製された場合、すなわち冗長な候補が実際になくされた場合よりも低いということを意味する。
【0181】
1.1.2 Constraint FIFO LUT更新方法
コーディング効率をさらに改善するために、constraint FIFO LUT更新方法が導入される。この方法に従うと、新しいHMVP候補をテーブルに挿入する前に、冗長性の確認がまず適用される。冗長性の確認は、新しい候補Xからの動き情報が、LUTの中にすでに位置する候補Hmからの動き情報と一致するかどうかを見出すことを意味する。そのような候補Hmが見つからない場合、単純なFIFO方法が使用され、それ以外の場合、次の手順が実行される。
1. Hmの後のすべてのLUTエントリが、(テーブルの最初に向かって)左に1つの位置だけ動かされるので、候補Hmはテーブルから削除され、LUTの最後にある1つの位置が解放される。
2. 新しい候補Xがテーブルの最初の空の位置に追加される。
【0182】
constraint FIFO LUT更新方法を使用することの例が、
図8に示されている。
【0183】
1.2 HMVP LUTを使用する動きベクトルコーディング
HMVP候補が、マージ候補リスト構築プロセスにおいて、および/またはAMVP候補リスト構築プロセスにおいて使用され得る。
【0184】
1.2.1 HMVP LUTを使用するマージ候補リスト構築
Zhang他によれば、最後のエントリから最初のエントリ(H
N-1,H
N-2,...,H
0)までのHMVP候補が、TMVP候補の後にマージリストに挿入される。LUT走査順序が
図9に示されている。HMVP候補がマージリストにすでに存在する候補のうちの1つに等しい場合、HMVP候補はリストに追加されない。マージリストサイズは限られているので、LUTの最初に位置するHMVP候補のいくつかは、現在のCUのためのマージリスト構築プロセスにおいて使用されなくてもよい。
【0185】
1.2.2 HMVP LUTを使用するAMVP候補リスト構築プロセス
Zhang他の手法において、マージモードのために構築されるHMVP LUTもAMVPのために使用される。マージモードにおけるその使用との差は、このLUTからのわずか数個のエントリがAMVP候補リスト構築のために使用されるということである。より具体的には、最後のM個の要素が使用される(Zhang他、4に等しいMを使用する)。AMVP候補リスト構築プロセスの間に、最後のエントリから(N-K)番目のエントリ(H
N-1,H
N-2,...,H
N-K)までのHMVP候補が、TMVP候補の後にリストに挿入される。LUT走査順序が
図9に示されている。
【0186】
AMVP標的参照ピクチャと同じ参照ピクチャを伴うHMVP候補のみが使用される。HMVP候補がリストにすでに存在する候補のうちの1つに等しい場合、HMVP候補はAMVP候補リスト構築のために使用されない。AMVP候補リストサイズは限られているので、HMVP候補のいくつかは、現在のCUのためのAMVPリスト構築プロセスにおいて使用されなくてもよい。
【0187】
1.3 HMVP方法の欠点
図6に示されるように、HEVCおよびVVCにおいて、マージリスト構築プロセスは、隣接するCUからの動き情報の分析とともに開始する。HMVP LUTからの候補は、隣接する候補およびTMVP候補の後に挿入される。これにもかかわらず、多くの場合において、HMVP LUT構築方法は、HMVP LUTの中の最後のエントリが隣接するCUからの動き情報も含むように設計される。結果として、新しい要素を候補リストに追加することのない、不要な候補比較動作が実行される。同じ問題が、HMVP LUTがAMVP候補リスト構築プロセスのために使用されるときに存在し、それは、AMVPリスト構築プロセスも、隣接するCUからの動き情報の分析とともに開始するからである。
【0188】
2. 一般化された双方向予測
一般化された双方向予測(GBi)が、C.-C. Chen、X. Xiu、Y. He、およびY. Ye、「Generalized bi-prediction for inter coding」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のJoint Video Exploration Team、JVET-C0047、2016年5月によって提案された。GBiは、双方向予測モードにおいて、等しくない重みをリスト0およびリスト1からの予測子に適用する。インター予測モードでは、等しい重みペア(1/2, 1/2)を含む複数の重みペアが、レート歪み最適化に基づいて評価され、選択された重みペアのGBiインデックスがデコーダにシグナリングされる。
【0189】
マージモードでは、GBiインデックスは近隣のCUから継承される。双方向予測モードにおける予測子の生成が、式(1)に示されている。
PGBi=(w0*PL0+w1*PL1+RoundingOffsetGBi)>>shiftNumGBi (1)
ここで、PGBiは、GBiの最後の予測子である。w0およびw1は、選択されたGBi重みペアであり、それぞれ、リスト0(L0)およびリスト1(L1)の予測子に適用される。RoundingOffsetGBiおよびshiftNumGBiは、GBiにおける最後の予測子を正規化するために使用される。サポートされるw1の重みのセットは{-1/4, 3/8, 1/2, 5/8, 5/4}であり、5つの重みは1つの等しい重みペアおよび4つの等しくない重みペアに対応する。w1およびw0の合計は1.0に固定される。したがって、対応するw0の重みセットは{5/4, 5/8, 1/2, 3/8, -1/4}である。重みペアの選択はCUレベルにある。
【0190】
非低遅延ピクチャでは、重みセットのサイズは5から3に減らされ、ここでw1の重みセットは{3/8, 1/2, 5/8}であり、w0の重みセットは{5/8, 1/2, 3/8}である。
【0191】
マージ/AMVP候補リスト構築の複雑さを下げ、不要な比較動作を避けることが、本発明の目的である。
【0192】
本発明は、インター予測装置の一般化された双方向予測方法および装置に関する。より具体的には、以下の態様が説明される。
1. 履歴ベース動き情報リスト構築の修正: 現在のブロックの動き情報に加えて、現在のブロックの一般化された双方向予測重みインデックス(bcwIdxインデックス)がリストに記憶される。
2. マージモードに対するbcwIdxインデックス導出手順の修正:履歴ベース候補に対応するマージインデックスを有するブロックに対しては、この候補のbcwIdxインデックスが現在のブロックのために使用される。
【0193】
本開示のある実施形態によれば、履歴ベース動きベクトル予測子(HMVP)リストに基づいてフレームの現在のブロックに対する動き情報を決定するための方法が提供され、この方法は、現在のブロックに先行するフレームのN個の先行するブロックの動き情報と関連付けられる、N個の履歴ベース候補Hk(k=0,...,N-1)の順序付けられたリストである、HMVPリストを構築するステップであって、Nが1以上であり、各履歴ベース候補が、i)1つまたは複数の動きベクトル(MV)、ii)MVに対応する1つまたは複数の参照ピクチャインデックス、およびiii)1つまたは複数の双方向予測重みインデックスという要素を含む動き情報を備える、ステップと、現在のブロックに対する動き情報候補リストへとHMVPリストからの1つまたは複数の履歴ベース候補を追加するステップと、動き情報候補リストに基づいて動き情報を導出するステップとを備える。
【0194】
図10は、動き情報を決定するための方法のフローチャートを示す。ステップ1001において、HMVPリストが構築される。ステップ1002において、HMVPリストからの1つまたは複数の履歴ベース候補が、動き情報候補リストに追加される。ステップ1003において、動き情報候補リストに基づく動き情報が導出される。
【0195】
本開示のある実施形態によれば、履歴ベース候補は、1つまたは複数の双方向予測重みインデックスとは異なる、1つまたは複数のインデックスをさらに含む。
【0196】
本開示のある実施形態によれば、HMVPリストの構築はさらに、HMVPリストの各履歴ベース候補の要素のうちの少なくとも1つを先行するブロックの対応する要素と比較するステップと、比較の結果として、HMVPリストの各履歴ベース候補の要素のうちの少なくとも1つが先行するブロックの対応する要素とは異なる場合、HMVPリストに先行するブロックの動き情報を追加するステップとを備える。
【0197】
本開示のある実施形態によれば、方法はさらに、HMVPリストの各履歴ベース候補の要素のうちの少なくとも1つを現在のブロックに対する動き情報の対応する要素と比較するステップと、比較の結果として、HMVPリストの各HMVP候補の要素のうちの少なくとも1つが現在のブロックの動き情報の対応する要素とは異なる場合、HMVPリストに現在のブロックの動き情報を追加するステップとを備える。
【0198】
本開示のある実施形態によれば、比較するステップは、対応する動きベクトルを比較するステップと、対応する参照ピクチャインデックスを比較するステップとを備える。
【0199】
本開示のある実施形態によれば、比較するステップは、対応する動きベクトルを比較するステップと、対応する参照ピクチャインデックスを比較するステップと、双方向予測重みインデックスを比較するステップとを備える。
【0200】
前に言及されたように、比較は要素ごとに実行される。特に、比較は、動き情報のすべての要素を含み得る。代替的に、要素のいくつかが比較において使用され得る。言い換えると、i)1つまたは複数のMV、ii)1つまたは複数の参照ピクチャインデックス、iii)双方向予測重みインデックスを備える動き情報を考慮した比較のために、動き情報の要素のサブセットが使用され得る。また、前記動き情報は、iv)bcwインデックスとは異なる1つまたは複数のインデックスを伴い得る。
【0201】
たとえば、動き情報の要素のサブセットは、上記のMVおよび参照ピクチャインデックスを含み得る。比較は次いで、(サブセットの一部ではない)他の要素が同じであるかどうかとは無関係に、MVと参照ピクチャインデックスに関する差を確認することについてのみ実行され得る。所与のサブセットの例では、比較から除外されるこれらの要素は、bcwインデックスおよびbcwインデックスとは異なる1つまたは複数の他のインデックスである。
【0202】
第2の例では、サブセットは、動き情報の要素として、MV、参照ピクチャインデックス、および双方向予測インデックスを含み得る。bcwインデックスと異なる1つまたは複数の他のインデックスは、このサブセットから除外される。この場合、比較は、これらの3つのタイプの要素に関する差を確認することについて実行される。
【0203】
したがって、動き情報は複数の要素を伴い得るが、比較は、前記動き情報からの要素のサブセットに基づいて要素ごとに実行され得る。
【0204】
本開示のある実施形態によれば、HMVPリストの履歴ベース候補は、先行するブロックの履歴ベース候補がビットストリームから得られる順序で順序付けられる。
【0205】
本開示のある実施形態によれば、HMVPリストはNの長さを有し、Nは6または5である。
【0206】
本開示のある実施形態によれば、動き情報候補リストは、第1のブロックの動き情報から第1の動き情報を含み、第1のブロックは、現在のブロックとのあらかじめ設定された空間的なまたは時間的な位置関係を有する。
【0207】
本開示のある実施形態によれば、動き情報候補リストに基づいて動き情報を導出するステップは、現在のブロックがマージモードでコーディングされるのでビットストリームからのマージインデックスを参照することによって、または、現在のブロックが高度動きベクトル予測(AMVP)モードでコーディングされるのでビットストリームからの動きベクトル予測子インデックスを参照することによって、動き情報を導出するステップを備える。
【0208】
本開示のある実施形態によれば、動き情報候補リストに基づいて導出される動き情報に含まれる双方向予測重みインデックスを使用することによって、現在のブロックの予測値を取得することがさらに含まれる。
【0209】
修正されたbcwIdxインデックス導出方法は、マージモードにおいてコーディングされ履歴ベースマージ候補に対応するマージインデックスを有する、CUのためのより適切なbcwIdxインデックスを使用することによってコーディング効率を改善するという利点をもたらし得る。
【0210】
1. HMVP動き候補を用いたテーブルの修正された更新プロセス
提案されるHMVPテーブル更新論理は、従来の方法におけるものと同じである。違いは、2つの動きベクトル、2つの参照インデックス、および2つの予測リスト利用フラグに加えて、HMVPテーブル更新プロセスに対する入力である動き候補(mvCand)が、一般化された双方向予測重みインデックスも含むということである。このbcwIdxインデックスは、HMVPテーブルに記憶され、HMVPテーブル更新プロセスにおけるプルーニング手順(以下の説明における変数sameCandの計算)に影響を与え得る。
【0211】
本開示のある実施形態によれば、履歴ベース動きベクトル予測子(HMVP)リストを構築して更新するための方法が提供され、この方法は、現在のブロックに先行するフレームのN個の先行するブロックの動き情報と関連付けられる、N個の履歴ベース候補Hk(k=0,...,N-1)の順序付けられたリストである、HMVPリストを構築するステップであって、Nが1以上であり、各履歴ベース候補が、i)1つまたは複数の動きベクトル(MV)、ii)MVに対応する1つまたは複数の参照ピクチャインデックス、およびiii)1つまたは複数の双方向予測重みインデックスという要素を含む動き情報を備える、ステップと、HMVPリストの各履歴ベース候補の要素のうちの少なくとも1つを現在のブロックの対応する要素と比較するステップと、比較の結果として、HMVPリストの履歴ベース候補の各々の要素のうちの少なくとも1つが現在のブロックの対応する要素と異なる場合、HMVPリストに現在のブロックの動き情報を追加するステップとを備える。
【0212】
図11は、履歴ベース動きベクトル予測子を構築して更新するための方法のフローチャートを示す。ステップ1101において、HMVPリストが構築される。ステップ1102において、HMVPリストの各履歴ベース候補の要素のうちの少なくとも1つが、現在のブロックの対応する要素と比較される。
【0213】
要素ベースの比較の結果は、
図11においてC-resultと呼ばれる。C-resultは、すべての要素が同じである/等しいというもの、または、少なくとも1つまたは複数の要素が同じではない/等しくない/異なるというものであり得る。
【0214】
C-resultが、少なくとも1つまたは複数の要素が異なるというものである場合、現在のブロックの動き情報がHMVPリストに追加される(ステップ1103)。それ以外の場合、すべての要素が同じである場合、それぞれの動き情報はHMVPリストに追加されない(ステップ1104)。
【0215】
本開示のある実施形態によれば、履歴ベース候補は、1つまたは複数の双方向予測重みインデックスとは異なる、1つまたは複数のインデックスをさらに含む。
【0216】
本開示のある実施形態によれば、比較するステップは、対応する動きベクトルを比較するステップと、対応する参照ピクチャインデックスを比較するステップとを備える。
【0217】
本開示のある実施形態によれば、比較するステップは、対応する動きベクトルを比較するステップと、対応する参照ピクチャインデックスを比較するステップと、双方向予測重みインデックスを比較するステップとを備える。
【0218】
本開示のある実施形態によれば、HMVPリストの履歴ベース候補は、先行するブロックの履歴ベース候補がビットストリームから得られる順序で順序付けられる。
【0219】
本開示のある実施形態によれば、HMVPリストはNの長さを有し、Nは6または5である。
【0220】
HMVPテーブル更新プロセスへの入力は次の通りである。
- 2つの動きベクトルmvL0およびmvL1を伴う動き候補mvCand、2つの参照インデックスrefIdxL0およびrefIdxL1、2つの変数予測リスト利用フラグpredFlagL0およびpredFlagL1、ならびに一般化された双方向予測重みインデックスbcwIdx。
【0221】
このプロセスの出力は、修正されたHMVPアレイHMVPCandListである。
【0222】
更新プロセスは次の順序付けられたステップからなる。
1. HMVPIdx=0...HMVPCandNum-1である各インデックスHMVPIdxに対して、変数sameCandが真に等しくなるまで次のステップが順番に適用される。
1.1 mvCandがHMVPCandList[HMVPIdx]と同じ動きベクトル、同じ参照インデックス、および同じGBiインデックスを有する場合、変数sameCandは真に設定される。
1.2 それ以外の場合、変数sameCandは偽に設定される。
1.3 HMVPIdx ++
2. 変数tempIdxはHMVPCandNumに設定される。
3. sameCandが真に等しい、またはHMVPCandNumが6に等しい場合、tempIdx=(sameCand ? HMVPIdx :1) … HMVPCandNum-1である各インデックスtempIdxに対して、HMVPCandList[tempIdx]をHMVPCandList[tempIdx-1]にコピーする。
4. mvCandをHMVPCandList[tempIdx]にコピーする。
5. HMVPCandNumが6より小さい場合、HMVPCandNumは1だけ増やされる。
【0223】
いくつかの実施形態では、sameCand変数の計算(上のアルゴリズムのステップ1.1、1.2の説明)は次の通りであり得る。
1.1 mvCandがHMVPCandList[HMVPIdx]と同じ動きベクトル、同じ参照インデックスを有する場合、変数sameCandは真に設定される。
1.2 それ以外の場合、変数sameCandは偽に設定される。
【0224】
いくつかの実施形態では、sameCand変数の計算は、mvCandのGBiインデックスとHMVPCandList[HMVPIdx]のGBiインデックスとの差に依存し得る。
【0225】
いくつかの実施形態では、sameCand変数の計算は、mvCandのbcwIdxインデックスとHMVPCandList[HMVPIdx]のbcwIdxインデックスの実際の値に依存し得る。たとえば、bcwIdxインデックスのいくつかのペアが、HMVPテーブル更新プロセスの文脈においては等しいと考えられ得る。
【0226】
2. HMVPマージ候補に対する修正された導出プロセス
HMVPマージ候補のための提案される導出プロセスと従来の導出プロセスの違いは、提案されるプロセスではbcwIdxインデックスも導出されるということである。これらのbcwIdxインデックスは、HMVPテーブルに記憶され、HMVPマージ候補導出プロセスにおけるプルーニング手順に影響を与え得る。
【0227】
HMVPマージ候補導出プロセスへの入力は次の通りである。
- マージ候補リストmergeCandList、
- mergeCandListの中のあらゆる候補Nの参照インデックスrefIdxL0NおよびrefIdxL1N、
- mergeCandListの中のあらゆる候補Nの予測リスト利用フラグpredFlagL0NおよびpredFlagL1N、
- mergeCandListの中のあらゆる候補Nの1/16分数サンプル精度の動きベクトルmvL0NおよびmvL1N、
- mergeCandList内の要素numCurrMergeCandの数、
- 空間的なおよび時間的なマージ候補導出プロセスの後のmergeCandList内の要素numOrigMergeCandの数、
- HMVPCandNum要素からなる、HMVPリストHMVPCandList、
- マージ候補MaxNumMergeCandの最大の数、
- mergeCandListの中のあらゆる候補の一般化された双方向予測重みインデックスbcwIdx。
【0228】
HMVPマージ候補導出プロセスの出力は次の通りである。
- マージ候補リストmergeCandList、
- mergeCandList内の要素numCurrMergeCandの数、
- このプロセスの呼び出しの間にmergeCandListに追加されるあらゆる新しい候補combCandkの参照インデックスrefIdxL0combCandkおよびrefIdxL1combCandk、
- このプロセスの呼び出しの間にmergeCandListに追加されるあらゆる新しい候補combCandkの予測リスト利用フラグpredFlagL0combCandkおよびpredFlagL1combCandk、
- このプロセスの呼び出しの間にmergeCandListに追加されるあらゆる新しい候補combCandkの1/16分数サンプル精度の動きベクトルmvL0combCandkおよびmvL1combCandk、
- このプロセスの呼び出しの間にmergeCandListに追加されるあらゆる新しい候補combCandkの一般化された双方向予測重みインデックスmvL0combCandk。
【0229】
1. 変数numOrigMergeCandはnumCurrMergeCandに等しく設定され、変数hmvpStopはFALSEに等しく設定される。
【0230】
2. HMVPIdx=1..HMVPCandNumであるHMVPCandListの中の各候補に対して、次の順序付けられたステップが、hmvpStopがTRUEに等しくなるまで繰り返される。
2.1 sameMotionがFALSEに設定される
2.2 HMVPCandList[HMVPCandNum-HMVPIdx]が、iが0...numOrigMergeCand-1である任意のmergeCandList[i]と同じ動きベクトル、同じ参照インデックス、および同じbcwIdxインデックスを有する場合、sameMotionはTRUEに設定される。
2.3 sameMotionがfalseに等しい場合、mergeCandList[numCurrMergeCand++]はHMVPCandList[HMVPCandNum-HMVPIdx]に設定される
2.4 numCurrMergeCandが(MaxNumMergeCand-1)に等しい場合、hmvpStopはTRUEに設定される
【0231】
いくつかの実施形態では、sameMotion変数の計算(上のアルゴリズムのステップ2.2の説明)は次の通りであり得る。
2.2. HMVPCandList[HMVPCandNum-HMVPIdx]が、iが0...numOrigMergeCand-1である任意のmergeCandList[i]と同じ動きベクトル、同じ参照インデックスを有する場合、sameMotionはTRUEに設定される。
【0232】
いくつかの実施形態では、sameMotion変数の計算は、HMVPCandList[HMVPCandNum-HMVPIdx]のGBiインデックスとmergeCandList[i]のGBiインデックスとの差に依存し得る。
【0233】
いくつかの実施形態では、sameMotion変数の計算は、HMVPCandList[HMVPCandNum-HMVPIdx]のbcwIdxインデックスとmergeCandList[i]のbcwIdxインデックスの実際の値に依存し得る。たとえば、bcwIdxインデックスのいくつかのペアが、HMVPマージ候補導出プロセスの文脈においては等しいと考えられ得る。
【0234】
HMVPマージ候補の処理の詳細実施形態の例が以下で説明される。
【0235】
8.5.2 動きベクトル成分および参照インデックスの導出プロセス
8.5.2.1 全般
このプロセスへの入力は次の通りである。
- 現在のピクチャの左上ルマサンプルに対する相対的な、現在のルマコーディングブロックの左上サンプルのルマ位置(xCb, yCb)、
- ルマサンプルの中の現在のコーディングブロックの幅を指定する変数cbWidth、
- ルマサンプルの中の現在のコーディングブロックの高さを指定する変数cbHeight。
【0236】
このプロセスの出力は次の通りである。
- 1/16分数サンプル精度のルマ動きベクトルmvL0[0][0]およびmvL1[0][0]、
- 参照インデックスrefIdxL0およびrefIdxL1、
- 予測リスト利用フラグpredFlagL0[0][0]およびpredFlagL1[0][0]、
- 半サンプル補間フィルタインデックスhpelIfIdx、
- 双方向予測重みインデックスbcwIdx。
【0237】
変数LXを現在のピクチャのRefPicList[X]とし、Xは0または1である。
【0238】
変数mvL0[0][0]およびmvL1[0][0]、refIdxL0およびrefIdxL1、ならびにpredFlagL0[0][0]およびpredFlagL1[0][0]の導出のために、次のことが適用される。
- general_merge_flag[xCb][yCb]が1に等しい場合、8.5.2.2項において規定されるようなマージモードに対するルマ動きベクトルの導出プロセスが呼び出され、ルマ位置(xCb, yCb)、変数cbWidthおよびcbHeightが入力であり、出力は、ルマ動きベクトルmvL0[0][0]、mvL1[0][0]、参照インデックスrefIdxL0、refIdxL1、予測リスト利用フラグpredFlagL0[0][0]およびpredFlagL1[0][0]、半サンプル補間フィルタインデックスhpelIfIdx、双方向予測重みインデックスbcwIdx、ならびにマージ候補リストmergeCandListである。
- それ以外の場合、次のことが適用される。
- 変数predFlagLX[0][0]、mvLX[0][0]、およびrefIdxLXにおいて、PRED_LXにおいて、ならびにシンタックス要素ref_idx_IXおよびMvdLXにおいて、0または1のいずれかにより置き換えられるXに対して、次の順序付けられたステップが適用される。
1. 変数refIdxLxおよびpredFlagLX[0][0]は次のように導出される。
- inter_pred_idc[xCb][yCb]がPRED_LXまたはPRED_BIに等しい場合、
refIdxLX=ref_idx_lX[xCb][yCb] (8-292)
predFlagLX[0][0]=1 (8-293)
- それ以外の場合、変数refIdxLxおよびpredFlagLX[0][0]は
refIdxLX=-1 (8-294)
predFlagLX[0][0]=0 (8-295)
によって規定される。
2. 変数mvdLXは次のように導出される。
mvdLX[0]=MvdLX[xCb][yCb][0] (8-296)
mvdLX[1]=MvdLX[xCb][yCb][1] (8-297)
3. predFlagLX[0][0]が1に等しいとき、8.5.2.8項におけるルマ動きベクトル予測の導出プロセスが、ルマコーディングブロック位置(xCb, yCb)、コーディングブロックの幅cbWidth、コーディングブロックの高さcbHeight、および変数refIdxLXを入力として用いて呼び出され、出力はmvpLXである。
4. predFlagLX[0][0]が1に等しいとき、ルマ動きベクトルmvLX[0][0]は次のように導出される。
uLX[0]=(mvpLX[0]+mvdLX[0]+218)%218 (8-298)
mvLX[0][0][0]=(uLX[0]>= 217)?(uLX[0]-218):uLX[0] (8-299)
uLX[1]=(mvpLX[1]+mvdLX[1]+218)%218 (8-300)
mvLX[0][0][1]=(uLX[1]>= 217)?(uLX[1]-218):uLX[1](8-301)
NOTE1- 上で指定されたようなmvLX[0][0][0]およびmvLX[0][0][1]の得られる値は、両端を含めて常に-217から217-1の範囲にある。
- 半サンプル補間フィルタインデックスhpelIfIdxは次のように導出される。
hpelIfIdx=AmvrShift== 3?1:0 (8-302)
- 双方向予測重みインデックスbcwIdxは、bcw_idx[xCb][yCb]に等しく設定される。
【0239】
次の条件のすべてが真であるとき、refIdxL1は-1に等しく設定され、predFlagL1は0に等しく設定され、bcwIdxは0に等しく設定される。
- predFlagL0[0][0]が1に等しい。
- predFlagL1[0][0]が1に等しい。
- (cbWidth+cbHeight)の値が12に等しい。
【0240】
8.5.2.16項において規定されるような履歴ベース動きベクトル予測子リストの更新プロセスは、ルマ動きベクトルmvL0[0][0]およびmvL1[0][0]、参照インデックスrefIdxL0およびrefIdxL1、予測リスト利用フラグpredFlagL0[0][0]およびpredFlagL1[0][0]、双方向予測重みインデックス、ならびに半サンプル補間フィルタインデックスhpelIfIdxを用いて呼び出される。
【0241】
8.5.2.3 空間マージ候補の導出プロセス
このプロセスへの入力は次の通りである。
- 現在のピクチャの左上ルマサンプルに対する相対的な、現在のルマコーディングブロックの左上サンプルのルマ位置(xCb, yCb)、
- ルマサンプルの中の現在のコーディングブロックの幅を指定する変数cbWidth、
- ルマサンプルの中の現在のコーディングブロックの高さを指定する変数cbHeight。
【0242】
このプロセスの出力は次の通りであり、Xは0または1である。
- 近隣のコーディング単位の利用可能性フラグavailableFlagA0、availableFlagA1、availableFlagB0、availableFlagB1、およびavailableFlagB2、
- 近隣のコーディング単位の参照インデックスrefIdxLXA0、refIdxLXA1、refIdxLXB0、refIdxLXB1、およびrefIdxLXB2、
- 近隣のコーディング単位の予測リスト利用フラグpredFlagLXA0、predFlagLXA1、predFlagLXB0、predFlagLXB1、およびpredFlagLXB2、
- 近隣のコーディング単位の1/16分数サンプル精度の動きベクトルmvLXA0、mvLXA1、mvLXB0、mvLXB1、およびmvLXB2、
- 半サンプル補間フィルタインデックスhpelIfIdxA0、hpelIfIdxA1、hpelIfIdxB0、hpelIfIdxB1、およびhpelIfIdxB2、
- 双方向予測重みインデックスbcwIdxA0、bcwIdxA1、bcwIdxB0、bcwIdxB1、およびbcwIdxB2。
【0243】
availableFlagA1、refIdxLXA1、predFlagLXA1、およびmvLXA1の導出のために、次のことが適用される。
- 近隣のルマコーディングブロックの内部のルマ位置(xNbA1, yNbA1)が(xCb-1, yCb+cbHeight-1)に等しく設定される。
- 6.4.4項において規定されるような近隣のブロック利用可能性の導出プロセスは、(xCb, yCb)に等しく設定される現在のルマ位置(xCurr, yCurr)、近隣のルマ位置(xNbA1, yNbA1)、TRUEに等しく設定されるcheckPredModeY、および0に等しく設定されるcIdxを入力として用いて呼び出され、出力は、ブロック利用可能性フラグavailableA1に割り当てられる。
- 変数availableFlagA1、refIdxLXA1、predFlagLXA1、およびmvLXA1は次のように導出される。
- availableA1がFALSEに等しい場合、availableFlagA1が0に等しく設定され、mvLXA1の両方の成分が0に等しく設定され、refIdxLXA1が-1に等しく設定され、predFlagLXA1が0に等しく設定され、Xは0または1であり、bcwIdxA1は0に等しく設定される。
- それ以外の場合、availableFlagA1が1に等しく設定され、次の割当てが行われる。
mvLXA1=MvLX[xNbA1][yNbA1] (8-319)
refIdxLXA1=RefIdxLX[xNbA1][yNbA1] (8-320)
predFlagLXA1=PredFlagLX[xNbA1][yNbA1] (8-321)
hpelIfIdxA1=HpelIfIdx[xNbA1][yNbA1] (8-322)
bcwIdxA1=BcwIdx[xNbA1][yNbA1] (8-323)
【0244】
availableFlagB1、refIdxLXB1、predFlagLXB1、およびmvLXB1の導出のために、次のことが適用される。
- 近隣のルマコーディングブロックの内部のルマ位置(xNbB1, yNbB1)が(xCb+cbWidth-1, yCb-1)に等しく設定される。
- 6.4.4項において規定されるような近隣のブロック利用可能性の導出プロセスは、(xCb, yCb)に等しく設定される現在のルマ位置(xCurr, yCurr)、近隣のルマ位置(xNbB1, yNbB1)、TRUEに等しく設定されるcheckPredModeY、および0に等しく設定されるcIdxを入力として用いて呼び出され、出力は、ブロック利用可能性フラグavailableB1に割り当てられる。
- 変数availableFlagB1、refIdxLXB1、predFlagLXB1、およびmvLXB1は次のように導出される。
- 次の条件のうちの1つまたは複数が真である場合、availableFlagB1が0に等しく設定され、mvLXB1の両方の成分が0に等しく設定され、refIdxLXB1が-1に等しく設定され、predFlagLXB1が0に等しく設定され、Xは0または1であり、bcwIdxB1は0に等しく設定される。
- availableB1がFALSEに等しい。
- availableA1がTRUEに等しく、ルマ位置(xNbA1, yNbA1)および(xNbB1, yNbB1)が、同じ動きベクトル、同じ参照インデックス、同じ双方向予測重みインデックス、および同じ半サンプル補間フィルタインデックスを有する。
- それ以外の場合、availableFlagB1が1に等しく設定され、次の割当てが行われる。
mvLXB1=MvLX[xNbB1][yNbB1] (8-324)
refIdxLXB1=RefIdxLX[xNbB1][yNbB1] (8-325)
predFlagLXB1=PredFlagLX[xNbB1][yNbB1] (8-326)
hpelIfIdxB1=HpelIfIdx[xNbB1][yNbB1] (8-327)
bcwIdxB1=BcwIdx[xNbB1][yNbB1] (8-328)
【0245】
availableFlagB0、refIdxLXB0、predFlagLXB0、およびmvLXB0の導出のために、次のことが適用される。
- 近隣のルマコーディングブロックの内部のルマ位置(xNbB0, yNbB0)が(xCb+cbWidth, yCb-1)に等しく設定される。
- 6.4.4項において規定されるような近隣のブロック利用可能性の導出プロセスは、(xCb, yCb)に等しく設定される現在のルマ位置(xCurr, yCurr)、近隣のルマ位置(xNbB0, yNbB0)、TRUEに等しく設定されるcheckPredModeY、および0に等しく設定されるcIdxを入力として用いて呼び出され、出力は、ブロック利用可能性フラグavailableB0に割り当てられる。
- 変数availableFlagB0、refIdxLXB0、predFlagLXB0、およびmvLXB0は次のように導出される。
- 次の条件のうちの1つまたは複数が真である場合、availableFlagB0が0に等しく設定され、mvLXB0の両方の成分が0に等しく設定され、refIdxLXB0が-1に等しく設定され、predFlagLXB0が0に等しく設定され、Xは0または1であり、bcwIdxB0は0に等しく設定される。
- availableB0がFALSEに等しい。
- availableB1がTRUEに等しく、ルマ位置(xNbB1, yNbB1)および(xNbB0, yNbB0)が、同じ動きベクトル、同じ参照インデックス、同じ双方向予測重みインデックス、および同じ半サンプル補間フィルタインデックスを有する。
- availableA1がTRUEに等しく、ルマ位置(xNbA1, yNbA1)および(xNbB0, yNbB0)が、同じ動きベクトル、同じ参照インデックス、同じ双方向予測重みインデックス、および同じ半サンプル補間フィルタインデックスを有し、MergeTriangleFlag[xCb][yCb]が1に等しい。
- それ以外の場合、availableFlagB0が1に等しく設定され、次の割当てが行われる。
mvLXB0=MvLX[xNbB0][yNbB0] (8-329)
refIdxLXB0=RefIdxLX[xNbB0][yNbB0] (8-330)
predFlagLXB0=PredFlagLX[xNbB0][yNbB0] (8-331)
hpelIfIdxB0=HpelIfIdx[xNbB0][yNbB0] (8-332)
bcwIdxB0=BcwIdx[xNbB0][yNbB0] (8-333)
【0246】
availableFlagA0、refIdxLXA0、predFlagLXA0、およびmvLXA0の導出のために、次のことが適用される。
- 近隣のルマコーディングブロックの内部のルマ位置(xNbA0, yNbA0)が(xCb-1, yCb+cbWidth)に等しく設定される。
- 6.4.4項において規定されるような近隣のブロック利用可能性の導出プロセスは、(xCb, yCb)に等しく設定される現在のルマ位置(xCurr, yCurr)、近隣のルマ位置(xNbA0, yNbA0)、TRUEに等しく設定されるcheckPredModeY、および0に等しく設定されるcIdxを入力として用いて呼び出され、出力は、ブロック利用可能性フラグavailableA0に割り当てられる。
- 変数availableFlagA0、refIdxLXA0、predFlagLXA0、およびmvLXA0は次のように導出される。
- 次の条件のうちの1つまたは複数が真である場合、availableFlagA0が0に等しく設定され、mvLXA0の両方の成分が0に等しく設定され、refIdxLXA0が-1に等しく設定され、predFlagLXA0が0に等しく設定され、Xは0または1であり、bcwIdxA0は0に等しく設定される。
- availableA0がFALSEに等しい。
- availableA1がTRUEに等しく、ルマ位置(xNbA1, yNbA1)および(xNbA0, yNbA0)が、同じ動きベクトル、同じ参照インデックス、同じ双方向予測重みインデックス、および同じ半サンプル補間フィルタインデックスを有する。
- availableB1がTRUEに等しく、ルマ位置(xNbB1, yNbB1)および(xNbA0, yNbA0)が、同じ動きベクトル、同じ参照インデックス、同じ双方向予測重みインデックス、および同じ半サンプル補間フィルタインデックスを有し、MergeTriangleFlag[xCb][yCb]が1に等しい。
- availableB0がTRUEに等しく、ルマ位置(xNbB0, yNbB0)および(xNbA0, yNbA0)が、同じ動きベクトル、同じ参照インデックス、同じ双方向予測重みインデックス、および同じ半サンプル補間フィルタインデックスを有し、MergeTriangleFlag[xCb][yCb]が1に等しい。
- それ以外の場合、availableFlagA0が1に等しく設定され、次の割当てが行われる。
mvLXA0=MvLX[xNbA0][yNbA0] (8-334)
refIdxLXA0=RefIdxLX[xNbA0][yNbA0] (8-335)
predFlagLXA0=PredFlagLX[xNbA0][yNbA0] (8-336)
hpelIfIdxA0=HpelIfIdx[xNbA0][yNbA0] (8-337)
bcwIdxA0=BcwIdx[xNbA0][yNbA0] (8-338)
【0247】
availableFlagB2、refIdxLXB2、predFlagLXB2、およびmvLXB2の導出のために、次のことが適用される。
- 近隣のルマコーディングブロックの内部のルマ位置(xNbB2, yNbB2)が(xCb-1, yCb-1)に等しく設定される。
- 6.4.4項において規定されるような近隣のブロック利用可能性の導出プロセスは、(xCb, yCb)に等しく設定される現在のルマ位置(xCurr, yCurr)、近隣のルマ位置(xNbB2, yNbB2)、TRUEに等しく設定されるcheckPredModeY、および0に等しく設定されるcIdxを入力として用いて呼び出され、出力は、ブロック利用可能性フラグavailableB2に割り当てられる。
- 変数availableFlagB2、refIdxLXB2、predFlagLXB2、およびmvLXB2は次のように導出される。
- 次の条件のうちの1つまたは複数が真である場合、availableFlagB2が0に等しく設定され、mvLXB2の両方の成分が0に等しく設定され、refIdxLXB2が-1に等しく設定され、predFlagLXB2が0に等しく設定され、Xは0または1であり、bcwIdxB2は0に等しく設定される。
- availableB2がFALSEに等しい。
- availableA1がTRUEに等しく、ルマ位置(xNbA1, yNbA1)および(xNbB2, yNbB2)が、同じ動きベクトル、同じ参照インデックス、同じ双方向予測重みインデックス、および同じ半サンプル補間フィルタインデックスを有する。
- availableB1がTRUEに等しく、ルマ位置(xNbB1, yNbB1)および(xNbB2, yNbB2)が、同じ動きベクトル、同じ参照インデックス、同じ双方向予測重みインデックス、および同じ半サンプル補間フィルタインデックスを有する。
- availableB0がTRUEに等しく、ルマ位置(xNbB0, yNbB0)および(xNbB2, yNbB2)が、同じ動きベクトル、同じ参照インデックス、同じ双方向予測重みインデックス、および同じ半サンプル補間フィルタインデックスを有し、MergeTriangleFlag[xCb][yCb]が1に等しい。
- availableA0がTRUEに等しく、ルマ位置(xNbA0, yNbA0)および(xNbB2, yNbB2)が、同じ動きベクトル、同じ参照インデックス、同じ双方向予測重みインデックス、および同じ半サンプル補間フィルタインデックスを有し、MergeTriangleFlag[xCb][yCb]が1に等しい。
- availableFlagA0+availableFlagA1+availableFlagB0+availableFlagB1が4に等しく、MergeTriangleFlag[xCb][yCb]が0に等しい。
- それ以外の場合、availableFlagB2が1に等しく設定され、次の割当てが行われる。
mvLXB2=MvLX[xNbB2][yNbB2] (8-339)
refIdxLXB2=RefIdxLX[xNbB2][yNbB2] (8-340)
predFlagLXB2=PredFlagLX[xNbB2][yNbB2] (8-341)
hpelIfIdxB2=HpelIfIdx[xNbB2][yNbB2] (8-342)
bcwIdxB2=BcwIdx[xNbB2][yNbB2] (8-343)
【0248】
8.5.2.6 履歴ベースマージ候補の導出プロセス
このプロセスへの入力は次の通りである。
- マージ候補リストmergeCandList、
- リストの中の利用可能なマージ候補の数numCurrMergeCand。
【0249】
このプロセスの出力は次の通りである。
- 修正されたマージ候補リストmergeCandList、
- リストの中のマージ候補の修正された数numCurrMergeCand。
【0250】
変数isPrunedA1とisPrunedB1はともにFALSEに等しく設定される。
【0251】
インデックスhMvpIdx=1..NumHmvpCandであるHmvpCandList[hMvpIdx]の中の各候補に対して、次の順序付けられたステップが、numCurrMergeCandがMaxNumMergeCand-1に等しくなるまで繰り返される。
1. 変数sameMotionは次のように導出される。
- 次の条件のすべてが、NがA1またはB1である任意のマージ候補Nに対して真である場合、sameMotionおよびisPrunedNはともにTRUEに等しく設定される。
- hMvpIdxが2以下である。
- 候補HmvpCandList[NumHmvpCand-hMvpIdx]がマージ候補Nに等しく、同じ動きベクトル、同じ参照インデックス、同じ双方向予測重みインデックス、および同じ半サンプル補間フィルタインデックスを有する。
- isPrunedNがFALSEに等しい。
- それ以外の場合、sameMotionがFALSEに等しく設定される。
2. sameMotionがFALSEに等しいとき、次のように候補HmvpCandList[NumHmvpCand-hMvpIdx]がマージ候補リストに追加される。
mergeCandList[numCurrMergeCand++]=HmvpCandList[NumHmvpCand-hMvpIdx] (8-381)
【0252】
8.5.2.16 履歴ベース動きベクトル予測子候補リストの更新プロセス
このプロセスへの入力は次の通りである。
- 1/16分数サンプル精度のルマ動きベクトルmvL0およびmvL1、
- 参照インデックスrefIdxL0およびrefIdxL1、
- 予測リスト利用フラグpredFlagL0およびpredFlagL1、
- 双方向予測重みインデックスbcwIdx、
- 半サンプル補間フィルタインデックスhpelIfIdx。
【0253】
MVP候補hMvpCandは、ルマ動きベクトルmvL0およびmvL1、参照インデックスrefIdxL0およびrefIdxL1、予測リスト利用フラグpredFlagL0およびpredFlagL1、双方向予測重みインデックスbcwIdx、ならびに半サンプル補間フィルタインデックスhpeIfIdxからなる。
【0254】
候補リストHmvpCandListは、次の順序付けられたステップによって候補hMvpCandを使用して修正される。
1. 変数identicalCandExistはFALSEに等しく設定され、変数removeIdxは0に等しく設定される。
2. NumHmvpCandが0より大きいとき、hMvpIdx=0..NumHmvpCand-1である各インデックスhMvpIdxに対して、identicalCandExistがTRUEに等しくなるまで次のステップが適用される。
- hMvpCandがHmvpCandList[hMvpIdx]に等しく、同じ動きベクトル、同じ参照インデックス、同じ双方向予測重みインデックス、および同じ半サンプル補間フィルタインデックスを有するとき、identicalCandExistはTRUEに等しく設定され、removeIdxはhMvpIdxに等しく設定される。
3. 候補リストHmvpCandListは次のように更新される。
- identicalCandExistがTRUEに等しい場合、またはNumHmvpCandが5に等しい場合、次のことが適用される。
- i=(removeIdx+1)..(NumHmvpCand-1)である各インデックスiに対して、HmvpCandList[i-1]がHmvpCandList[i]に等しく設定される。
- HmvpCandList[NumHmvpCand-1]がhMvpCandに等しく設定される。
- それ以外の場合(identicalCandExistがFALSEに等しく、NumHmvpCandが5未満である)、次のことが適用される。
- HmvpCandList[NumHmvpCand++]がhMvpCandに等しく設定される。
【0255】
(VVCワーキングドラフトに追加する)HMVPマージ候補の処理の詳細実施形態の別の例が以下で説明され、下線付きの部分が追加されている。
【0256】
8.5.2 動きベクトル成分および参照インデックスの導出プロセス
8.5.2.1 全般
このプロセスへの入力は次の通りである。
- 現在のピクチャの左上ルマサンプルに対する相対的な、現在のルマコーディングブロックの左上サンプルのルマ位置(xCb, yCb)、
- ルマサンプルの中の現在のコーディングブロックの幅を指定する変数cbWidth、
- ルマサンプルの中の現在のコーディングブロックの高さを指定する変数cbHeight。
【0257】
このプロセスの出力は次の通りである。
- 1/16分数サンプル精度のルマ動きベクトルmvL0[0][0]およびmvL1[0][0]、
- 参照インデックスrefIdxL0およびrefIdxL1、
- 予測リスト利用フラグpredFlagL0[0][0]およびpredFlagL1[0][0]、
- 半サンプル補間フィルタインデックスhpelIfIdx、
- 双方向予測重みインデックスbcwIdx。
【0258】
変数LXを現在のピクチャのRefPicList[X]とし、Xは0または1である。
【0259】
変数mvL0[0][0]およびmvL1[0][0]、refIdxL0およびrefIdxL1、ならびにpredFlagL0[0][0]およびpredFlagL1[0][0]の導出のために、次のことが適用される。
- general_merge_flag[xCb][yCb]が1に等しい場合、8.5.2.2項において規定されるようなマージモードに対するルマ動きベクトルの導出プロセスが呼び出され、ルマ位置(xCb, yCb)、変数cbWidthおよびcbHeightが入力であり、出力は、ルマ動きベクトルmvL0[0][0]、mvL1[0][0]、参照インデックスrefIdxL0、refIdxL1、予測リスト利用フラグpredFlagL0[0][0]およびpredFlagL1[0][0]、半サンプル補間フィルタインデックスhpelIfIdx、双方向予測重みインデックスbcwIdx、ならびにマージ候補リストmergeCandListである。
- それ以外の場合、次のことが適用される。
- 変数predFlagLX[0][0]、mvLX[0][0]、およびrefIdxLXにおいて、PRED_LXにおいて、ならびにシンタックス要素ref_idx_IXおよびMvdLXにおいて、0または1のいずれかにより置き換えられるXに対して、次の順序付けられたステップが適用される。
5. 変数refIdxLxおよびpredFlagLX[0][0]は次のように導出される。
- inter_pred_idc[xCb][yCb]がPRED_LXまたはPRED_BIに等しい場合、
refIdxLX=ref_idx_lX[xCb][yCb] (8-292)
predFlagLX[0 ][0]=1 (8-293)
- それ以外の場合、変数refIdxLxおよびpredFlagLX[0][0]は
refIdxLX=-1 (8-294)
predFlagLX[0 ][0]=0 (8-295)
によって指定される。
6. 変数mvdLXは次のように導出される。
mvdLX[0]=MvdLX[xCb][yCb][0] (8-296)
mvdLX[1]=MvdLX[xCb][yCb][1] (8-297)
7. predFlagLX[0][0]が1に等しいとき、8.5.2.8項におけるルマ動きベクトル予測の導出プロセスが、ルマコーディングブロック位置(xCb, yCb)、コーディングブロックの幅cbWidth、コーディングブロックの高さcbHeight、および変数refIdxLXを入力として用いて呼び出され、出力はmvpLXである。
8. predFlagLX[0][0]が1に等しいとき、ルマ動きベクトルmvLX[0][0]は次のように導出される。
uLX[0]=(mvpLX[0]+mvdLX[0]+218)%218 (8-298)
mvLX[0][0][0]=(uLX[0]>= 217)?(uLX[0]-218):uLX[0] (8-299)
uLX[1]=(mvpLX[1]+mvdLX[1]+218)%218 (8-300)
mvLX[0][0][1]=(uLX[1]>= 217)?(uLX[1]-218):uLX[1] (8-301)
NOTE1- 上で指定されたようなmvLX[0][0][0]およびmvLX[0][0][1]の得られる値は、両端を含めて常に-217から217-1の範囲にある。
- 半サンプル補間フィルタインデックスhpelIfIdxは次のように導出される。
hpelIfIdx=AmvrShift== 3?1:0 (8-302)
- 双方向予測重みインデックスbcwIdxは、bcw_idx[xCb][yCb]に等しく設定される。
【0260】
次の条件のすべてが真であるとき、refIdxL1は-1に等しく設定され、predFlagL1は0に等しく設定され、bcwIdxは0に等しく設定される。
- predFlagL0[0][0]が1に等しい。
- predFlagL1[0][0]が1に等しい。
- (cbWidth+cbHeight)の値が12に等しい。
【0261】
8.5.2.16項において規定されるような履歴ベース動きベクトル予測子リストの更新プロセスは、ルマ動きベクトルmvL0[0][0]およびmvL1[0][0]、参照インデックスrefIdxL0およびrefIdxL1、予測リスト利用フラグpredFlagL0[0][0]およびpredFlagL1[0][0]、双方向予測重みインデックスbcwIdx、ならびに半サンプル補間フィルタインデックスhpelIfIdxを用いて呼び出される。
【0262】
8.5.2.6 履歴ベースマージ候補の導出プロセス
このプロセスへの入力は次の通りである。
- マージ候補リストmergeCandList、
- リストの中の利用可能なマージ候補の数numCurrMergeCand。
【0263】
このプロセスの出力は次の通りである。
- 修正されたマージ候補リストmergeCandList、
- リストの中のマージ候補の修正された数numCurrMergeCand。
【0264】
変数isPrunedA1とisPrunedB1はともにFALSEに等しく設定される。
【0265】
インデックスhMvpIdx=1..NumHmvpCandであるHmvpCandList[hMvpIdx]の中の各候補に対して、次の順序付けられたステップが、numCurrMergeCandがMaxNumMergeCand-1に等しくなるまで繰り返される。
3. 変数sameMotionは次のように導出される。
- 次の条件のすべてが、NがA1またはB1である任意のマージ候補Nに対して真である場合、sameMotionおよびisPrunedNはともにTRUEに等しく設定される。
- hMvpIdxが2以下である。
- 候補HmvpCandList[NumHmvpCand-hMvpIdx]およびマージ候補Nが、同じ動きベクトルおよび同じ参照インデックスを有する。
- isPrunedNがFALSEに等しい。
- それ以外の場合、sameMotionがFALSEに等しく設定される。
4. sameMotionがFALSEに等しいとき、次のように候補HmvpCandList[NumHmvpCand-hMvpIdxが]マージ候補リストに追加される。
mergeCandList[ numCurrMergeCand++ ] = HmvpCandList[ NumHmvpCand - hMvpIdx ] (8-381)
【0266】
8.5.2.16 履歴ベース動きベクトル予測子候補リストの更新プロセス
このプロセスへの入力は次の通りである。
- 1/16分数サンプル精度のルマ動きベクトルmvL0およびmvL1、
- 参照インデックスrefIdxL0およびrefIdxL1、
- 予測リスト利用フラグpredFlagL0およびpredFlagL1、
- 双方向予測重みインデックスbcwIdx、
- 半サンプル補間フィルタインデックスhpelIfIdx。
【0267】
MVP候補hMvpCandは、ルマ動きベクトルmvL0およびmvL1、参照インデックスrefIdxL0およびrefIdxL1、予測リスト利用フラグpredFlagL0およびpredFlagL1、双方向予測重みインデックスbcwIdx、ならびに半サンプル補間フィルタインデックスhpeIfIdxからなる。
【0268】
候補リストHmvpCandListは、次の順序付けられたステップによって候補hMvpCandを使用して修正される。
4. 変数identicalCandExistはFALSEに等しく設定され、変数removeIdxは0に等しく設定される。
5. NumHmvpCandが0より大きいとき、hMvpIdx=0..NumHmvpCand-1である各インデックスhMvpIdxに対して、identicalCandExistがTRUEに等しくなるまで次のステップが適用される。
- hMvpCandおよびHmvpCandList[hMvpIdx]が同じ動きベクトルおよび同じ参照インデックスを有するとき、identicalCandExistはTRUEに等しく設定され、removeIdxはhMvpIdxに等しく設定される。
6. 候補リストHmvpCandListは次のように更新される。
- identicalCandExistがTRUEに等しい場合、またはNumHmvpCandが5に等しい場合、次のことが適用される。
- i=(removeIdx+1)..(NumHmvpCand-1)である各インデックスiに対して、HmvpCandList[i-1]がHmvpCandList[i]に等しく設定される。
- HmvpCandList[NumHmvpCand-1]がhMvpCandに等しく設定される。
- それ以外の場合(identicalCandExistがFALSEに等しく、NumHmvpCandが5未満である)、次のことが適用される。
【0269】
HmvpCandList[NumHmvpCand++]は、hMvpCandに等しく設定される。
【0270】
実施形態および例示的な実施形態は、それらのそれぞれの方法に言及して、対応する装置を有する。
【0271】
本開示のある実施形態によれば、メモリおよびメモリに結合されたプロセッサを備える、現在のブロックに対する動き情報を決定するための装置が提供され、プロセッサは、本開示の以前の態様のいずれか1つによる方法を実行するように構成される。
【0272】
図12は、メモリ1201およびプロセッサ1202をそれぞれ備える、動き情報決定ユニット1200の概略図を示す。
【0273】
本開示のある実施形態によれば、履歴ベース動きベクトル予測子(HMVP)リストに基づいてフレームの現在のブロックに対する動き情報を決定するための装置が提供され、この装置は、現在のブロックに先行するフレームのN個の先行するブロックの動き情報と関連付けられる、N個の履歴ベース候補Hk(k=0,...,N-1)の順序付けられたリストである、HMVPリストを構築するように構成され、Nが1以上であり、各履歴ベース候補が、i)1つまたは複数の動きベクトル(MV)、ii)MVに対応する1つまたは複数の参照ピクチャインデックス、およびiii)1つまたは複数の双方向予測重みインデックスという要素を含む動き情報を備える、HMVPリスト構築ユニットと、現在のブロックに対する動き情報候補リストへとHMVPリストからの1つまたは複数の履歴ベース候補を追加するように構成されるHMVP追加ユニットと、動き情報候補リストに基づいて動き情報を導出するように構成される動き情報導出ユニットとを備える。
【0274】
図13は、HMVPリスト構築ユニット1301、HMVP追加ユニット1302、および動き情報導出ユニット1303をさらに備える、動き情報決定ユニット1200の概略図を示す。
【0275】
本開示のある実施形態によれば、履歴ベース動きベクトル予測子(HMVP)リストを構築して更新するための装置が提供され、この装置は、現在のブロックに先行するフレームのN個の先行するブロックの動き情報と関連付けられる、N個の履歴ベース候補Hk(k=0,...,N-1)の順序付けられたリストである、HMVPリストを構築するように構成され、Nが1以上であり、各履歴ベース候補が、i)1つまたは複数の動きベクトル(MV)、ii)MVに対応する1つまたは複数の参照ピクチャインデックス、およびiii)1つまたは複数の双方向予測重みインデックスという要素を含む動き情報を備える、HMVPリスト構築ユニットと、HMVPリストの各履歴ベース候補の要素のうちの少なくとも1つを現在のブロックの対応する要素と比較するように構成される動き情報比較ユニットと、比較の結果として、HMVPリストの履歴ベース候補の各々の要素のうちの少なくとも1つが現在のブロックの対応する要素と異なる場合、HMVPリストに現在のブロックの動き情報を追加するように構成される動き情報追加ユニットとを備える。
【0276】
図14は、HMVPリスト構築ユニット1301、動き情報比較ユニット1401、および動き情報追加ユニット1402を備える、HMVPリスト更新ユニット1400の概略図を示す。
【0277】
本開示のある実施形態によれば、本開示の以前の態様のいずれか1つによる方法を実行するためのプログラムコードを備える、コンピュータプログラム製品が提供される。
【0278】
1つまたは複数の例では、説明される機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せにおいて実装され得る。ソフトウェアにおいて実装される場合、機能は、コンピュータ可読媒体に1つまたは複数の命令もしくはコードとして記憶され、またはそれを介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体、または、たとえば通信プロトコルに従った、ある場所から別の場所へのコンピュータプログラムの移動を容易にする任意の媒体を含む通信媒体に対応する、コンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号波もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示において説明される技法の実施のための命令、コード、および/またはデータ構造を取り出すための、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【0279】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ディスクストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形で所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、任意の接続がコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または、赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または、赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに、非一時的な有形の記憶媒体を対象とすることが理解されるべきである。本明細書において使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスクおよびBlu-ray(登録商標)ディスクを含み、ディスク(disk)は通常データを磁気的に再生し、ディスク(disc)はレーザーでデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【0280】
命令は、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の等価な集積論理回路もしくはディスクリート論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書において使用される「プロセッサ」という用語は、本明細書において説明される技法の実施に適した前述の構造のいずれかまたは任意の他の構造を指し得る。加えて、いくつかの態様では、本明細書において説明される機能は、符号化および復号のために構成される専用ハードウェアおよび/もしくはソフトウェアモジュール内で提供され、または合成されたコーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素において完全に実装され得る。
【0281】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。様々なコンポーネント、モジュール、またはユニットは、開示される技法を実行するように構成されるデバイスの機能的な態様を強調するために本開示において説明されるが、異なるハードウェアユニットによる実現を必ずしも必要としない。むしろ、上で説明されたように、様々なユニットが、コーデックハードウェアユニットにおいて組み合わせられてもよく、または、適切なソフトウェアおよび/もしくはファームウェアとともに、上で説明されたような1つまたは複数のプロセッサを含む、相互運用可能なハードウェアユニットの集合体によって提供されてもよい。
【0282】
まとめると、本開示は、ビデオ符号化および復号に関し、具体的には、履歴ベース動きベクトル予測子(HMVP)リストを使用して現在のブロックに対する動き情報を決定することに関する。HMVPリストが構築され、前記リストは、N個のHMVP候補Hk(k=0,...,N-1)の順序付けられたリストであり、これらは、フレームのN個の先行するブロックの動き情報と関連付けられ、現在のブロックに先行する。各HMVP候補は、1つまたは複数の動きベクトル(MV)の要素、MVに対応する1つまたは複数の参照ピクチャインデックス、および1つまたは複数の双方向予測重みインデックスを含む、動き情報を有する。HMVPリストからの1つまたは複数のHMVP候補が現在のブロックに対する動き情報候補リストに追加され、動き情報は動き情報候補リストに基づいて導出される。HMVPはさらに、HMVPリストの各履歴ベース候補の要素のうちの少なくとも1つを現在のブロックの対応する要素と比較することによって、更新される。HMVP要素のうちの少なくとも1つが現在のブロックの対応する要素と異なるとき、現在のブロックの動き情報がHMVPリストに追加される。
【0283】
追加の実施形態が以下の項において要約される。
【0284】
項1: 双方向予測重みインデックスを導出する方法であって、
フレームのN個の先行するブロックと関連付けられるN個の動き記録Hk(k=0,...,N-1)の順序付けられたリストである、履歴ベース動き情報リスト(HMVL)を構築するステップであって、Nが1以上であり、各動き記録が、1つまたは複数の動きベクトルと、動きベクトルに対応する1つまたは複数の参照ピクチャインデックスと、動き記録がより多くの動きベクトルを備える場合、1つまたは複数の双方向予測重みインデックスとを備える、ステップと、
履歴ベース動き情報リストに基づいて、現在のブロックに対する履歴ベース動き情報候補を構築するステップとを備える、方法。
【0285】
項2: 履歴ベース動き情報リストに基づいて、現在のブロックに対する履歴ベース動き情報候補を構築するステップが、
履歴ベース動き情報リスト記録Hkに対応する履歴ベース動き情報候補の中の候補に対して、記録Hkの重みインデックスとして双方向予測重みインデックスを設定するステップを備える、項1の方法。
【0286】
項3: 履歴ベース動き情報リストの中の動き記録が、前記先行するブロックの動き記録がビットストリームから取得される順序で順序付けられる、項1の方法。
【0287】
項4: 履歴ベース動き情報リストがNの長さを有し、Nが6または5である、項1の方法。
【0288】
項5: 履歴ベース動き情報リスト(HMVL)を構築するステップが、
現在のブロックの動き情報をHMVLに追加する前に、HMVLの各要素が現在のブロックの動き情報と異なるかどうかを確認するステップと、
HMVLの各要素が現在のブロックの動き情報と異なる場合にのみ、現在のブロックの動き情報をHMVLに追加するステップとを備える、項1の方法。
【0289】
項6: HMVLの各要素が現在のブロックの動き情報と異なるかどうかを確認するステップが、
対応する動きベクトルを比較するステップと、
対応する参照ピクチャインデックスを比較するステップとを備える、項5の方法。
【0290】
項7: HMVLの各要素が現在のブロックの動き情報と異なるかどうかを確認するステップが、
対応する動きベクトルを比較するステップと、
対応する参照ピクチャインデックスを比較するステップと、
双方向予測重みインデックスを比較するステップとを備える、項5の方法。
【0291】
項8: 現在のブロックに対する動き情報候補セットを構築するステップが、
第1のブロックの動き情報から動き情報を導出するステップを備え、第1のブロックが現在のブロックとのあらかじめ設定された空間的または時間的な位置関係を有する、項1から7のいずれか1つの方法。
【0292】
項9: 現在のブロックに対する候補動き情報セットを構築するステップが、
第2のブロックの動き情報から動き情報を導出するステップを備え、第2のブロックが現在のブロックの前に再構築される、項1から7のいずれか1つの方法。
【0293】
項10: 履歴ベース動き情報リストに基づいて、現在のブロックに対する履歴ベース動き情報候補を構築するステップが、
構築された履歴ベース動き情報候補(履歴ベース動き情報リスト記録Hk)が候補動き情報リストからの要素の何らかの(あらかじめ定められた)サブセットと異なるかどうかを確認するステップと、
履歴ベース動き情報候補(履歴ベース動き情報リスト記録Hk)が候補動き情報リストからの要素の何らかの(あらかじめ定められた)サブセットと異なる場合にのみ、それを使用するステップとを備える、項1~9のいずれか1つの方法。
【0294】
項11: 構築された履歴ベース動き情報候補(履歴ベース動き情報リスト記録Hk)が候補動き情報リストからの要素の何らかの(あらかじめ定められた)サブセットと異なるかどうかを確認するステップが、
対応する動きベクトルを比較するステップと、
対応する参照ピクチャインデックスを比較するステップとを備える、項10の方法。
【0295】
項12: 構築された履歴ベース動き情報候補(履歴ベース動き情報リスト記録Hk)が候補動き情報リストからの要素の何らかの(あらかじめ定められた)サブセットと異なるかどうかを確認するステップが、
対応する動きベクトルを比較するステップと、
対応する参照ピクチャインデックスを比較するステップと、
双方向予測重みインデックスの比較とを備える、項10の方法。
【0296】
項13: 候補動き情報リストがマージ候補リストである、項10から12のいずれかの方法。
【0297】
項14: 履歴ベース動き情報候補セットが、現在のブロックがマージモードにあるときは現在のブロックの候補動き情報リストのサブセットであり、または、現在のブロックがAMVPモードにあるときは現在のブロックの候補予測動き情報リストのサブセットである、項1から13のいずれか1つ、特に請求項1から9のいずれかの方法。
【0298】
項15: 現在のブロックに対する動き情報を導出する方法であって、
動き情報リストを構築する構築するステップを備え、このステップが、
第1および第2のブロックの動き情報を取得するステップであって、第1および第2のブロックが、あらかじめ設定された現在のブロックとの空間的または時間的な位置関係を有する、ステップと、
第1のブロックの動き情報を動き情報リストに追加するステップと、
第2のブロックの動き情報を動き情報リストに追加する前に、第1のブロックの双方向予測重みインデックスが第2のブロックの双方向予測重みインデックスに等しいかどうかを確認するステップと、
第1のブロックの双方向予測重みインデックスが第2のブロックの双方向予測重みインデックスに等しくない場合にのみ、第2のブロックの動き情報を動き情報リストに追加するステップと、
ビットストリームから動き情報候補インデックスを取得するステップと、
構築された動き情報候補および取得された動き情報候補インデックスに基づいて、現在のブロックに対する動き情報を導出するステップとを備える、方法。
【0299】
項16: 動き情報リストがマージ候補リストである、項15の方法。
【0300】
項17: 動き情報が、
1つまたは複数の動きベクトル、
1つまたは複数の参照インデックス、または
双方向予測重みインデックス
のうちの少なくとも1つを備える、項15から16の方法。
【0301】
項18: 動き情報が、
1つまたは複数の動きベクトル、
1つまたは複数の参照インデックス、
双方向予測重みインデックス、または
補間フィルタインデックス
のうちの少なくとも1つを備える、項15から16の方法。
【0302】
項19: 候補動き情報セットを構築する装置であって、
メモリおよびメモリに結合されたプロセッサを備える装置、および、
プロセッサが、請求項1から18のいずれか1つの方法、特に請求項1から9および14のいずれかの方法を実行するように構成される。
【符号の説明】
【0303】
10 ビデオコーディングシステム
12 ソースデバイス
13 通信チャネル
14 デスティネーションデバイス
16 ピクチャソース
17 ピクチャ(データ)
18 プリプロセッサ
19 前処理されたピクチャ(データ)
20 ビデオエンコーダ
21 符号化されたピクチャデータ
22 通信インターフェース
28 通信インターフェース
30 ビデオデコーダ
31 復号されたピクチャデータ
32 ポストプロセッサ
33 後処理されたピクチャデータ
34 表示デバイス
40 ビデオコーディングシステム
41 撮像デバイス
42 アンテナ
43 プロセッサ
44 メモリストア
45 表示デバイス
46 処理回路
201 入力(インターフェース)
203 ピクチャブロック
204 残差計算[ユニットまたはステップ]
205 残差ブロック
206 変換処理ユニット
207 変換係数
208 量子化ユニット
209 量子化された係数
210 逆量子化ユニット
211 量子化解除された係数
212 逆変換処理ユニット
213 再構築された残差ブロック
214 再構築ユニット
215 再構築されたブロック
220 ループフィルタユニット
221 フィルタリングされたブロック
230 復号ピクチャバッファ(DPB)
231 復号されたピクチャ
244 インター予測ユニット
254 イントラ予測ユニット
260 モード選択ユニット
262 区分ユニット
265 予測ブロック
266 シンタックス要素
270 エントロピー符号化ユニット
272 出力(インターフェース)
304 エントロピー復号ユニット
309 量子化された係数
310 逆量子化ユニット
311 量子化解除された係数
312 逆変換処理ユニット
313 再構築された残差ブロック
314 再構築ユニット
315 再構築されたブロック
320 ループフィルタ
321 フィルタリングされたブロック
330 復号ピクチャバッファDBP
331 復号されたピクチャ
344 インター予測ユニット
354 イントラ予測ユニット
360 モード適用ユニット
365 予測ブロック
366 シンタックス要素
400 ビデオコーディングデバイス
410 入口ポート/入力ポート
420 受信機ユニットRx
430 プロセッサ
440 送信機ユニットTx
450 出口ポート/出力ポート
460 メモリ
470 コーディングモジュール
500 ソースデバイスまたはデスティネーションデバイス
502 プロセッサ
504 メモリ
506 コードおよびデータ
508 オペレーティングシステム
510 アプリケーションプログラム
512 バス
518 ディスプレイ
1000 動き情報決定方法のフローチャート
1100 HMVPリスト更新方法のフローチャート
1200 動き情報決定ユニット
1201 メモリ
1202 プロセッサ
1301 HMVPリスト構築ユニット
1302 HMVP追加ユニット
1303 動き情報導出ユニット
1400 HMVPリスト更新ユニット
1401 動き情報比較ユニット
1402 動き情報追加ユニット
HEVC 高効率ビデオコーディング
CTU コーディングツリー単位
LCU 最大コーディング単位
CU コーディング単位
MV 動きベクトル
MVP 動きベクトル予測
MVCL 動きベクトル候補リスト
HMVL 履歴ベース動きベクトルリスト
HMVP 履歴ベース動きベクトル予測
AMVP 高度動きベクトル予測
LUT ルックアップテーブル
FIFO First-In-First-Out
TMVP 時間動きベクトル予測
GBi 一般化された双方向予測
RDO レート歪み最適化
BCW 双方向予測重みインデックス