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

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

▶ 華為技術有限公司の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-08
(45)【発行日】2024-05-16
(54)【発明の名称】ビデオピクチャ予測方法及び装置
(51)【国際特許分類】
   H04N 19/52 20140101AFI20240509BHJP
   H04N 19/70 20140101ALI20240509BHJP
【FI】
H04N19/52
H04N19/70
【請求項の数】 11
【外国語出願】
(21)【出願番号】P 2023123159
(22)【出願日】2023-07-28
(62)【分割の表示】P 2021521771の分割
【原出願日】2019-10-23
(65)【公開番号】P2023153178
(43)【公開日】2023-10-17
【審査請求日】2023-08-25
(31)【優先権主張番号】201811268188.2
(32)【優先日】2018-10-29
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】201811642717.0
(32)【優先日】2018-12-29
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】チェン,ホアンバン
(72)【発明者】
【氏名】ヤン,ハイタオ
【審査官】岩井 健二
(56)【参考文献】
【文献】Ting Fu, Huanbang Chen, Haitao Yang, and Jianle Chen,Non-CE4: separate merge candidate list for sub-block modes,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-K0364-v3,11th Meeting: Ljubljana, SI,2018年07月,pp.1-5
【文献】Benjamin Bross, Jianle Chen, and Shan Liu,Versatile Video Coding (Draft 2),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-K1001-v6,11th Meeting: Ljubljana, SI,2018年09月,pp.25,41-42
【文献】Benjamin Bross, Jianle Chen, and Shan Liu,Versatile Video Coding (Draft 3),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-L1001-v9,12th Meeting: Macao, CN,2019年01月,pp.30-31,57-61,131-135
【文献】Xiaozhong Xu, Xiang Li, and Shan Liu,CE2/4-related: Unified merge list size for block and sub-block merge modes,Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-M0406-v1,JVET-M0406-v1,2019年01月,pp.1-4
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
ビデオピクチャ予測方法であって、
シンタックス構造に基づいてビットストリームを解析するステップと、
現ブロックについてのインター予測モードを決定するステップと、
前記現ブロックについての前記インター予測モードがサブブロックマージモードであると決定された場合、サブブロックマージモードに対応する動き情報候補リストを構築するステップと
を含み、
前記動き情報候補リストの最大長は、以下の方法、すなわち、
前記ビットストリーム内のシーケンスパラメータセットSPSから第1のインジケータsps_affine_enabled_flagの値及び第3のインジケータsps_sbtmvp_enabled_flagの値を解析するステップと、
前記第1のインジケータの前記値が第1の値に等しいとき、前記SPSから第2のインジケータの値を解析するステップと、
前記第2のインジケータの前記値に基づいて前記動き情報候補リスト前記最大長を決定するステップと
前記第1のインジケータの前記値が第2の値に等しいとき、前記第3のインジケータの前記値に基づいて前記動き情報候補リストの前記最大長を決定するステップであり、前記第2の値は前記第1の値と異なる、ステップと
に従って決定される、方法。
【請求項2】
前記動き情報候補リストの前記最大長は、以下の式、すなわち、
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand
に従って取得され、MaxNumSubblockMergeCandは前記動き情報候補リストの前記最大長を表し、K_minus_max_num_subblock_merge_candは前記第2のインジケータを表し、Kは予め設定された負でない整数である、請求項1に記載の方法。
【請求項3】
前記第3のインジケータの前記値に基づいて前記動き情報候補リストの前記最大長を決定するステップは、
前記第3のインジケータの前記値が0であるとき、前記動き情報候補リストの前記最大長が0であると決定するステップを含む、請求項1又は2に記載の方法。
【請求項4】
前記第3のインジケータの前記値に基づいて前記動き情報候補リストの前記最大長を決定するステップは、
前記第3のインジケータの前記値が1であるとき、前記動き情報候補リストの前記最大長が1であると決定するステップを含む、請求項1乃至3のうちいずれか1項に記載の方法。
【請求項5】
前記第3のインジケータの前記値が1であることは、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在することを示す、請求項4に記載の方法。
【請求項6】
前記第3のインジケータの前記値が0であることは、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示す、請求項3に記載の方法。
【請求項7】
前記高度時間動きベクトル予測モードは、サブブロックの時間動きベクトルに基づく予測モードである、請求項5又は6に記載の方法。
【請求項8】
前記第1のインジケータの前記値は、処理対象ブロックをインター予測するために使用される候補モードがアフィンモードを含むか否かを示す、請求項1乃至7のうちいずれか1項に記載の方法。
【請求項9】
前記第1の値は1であり、前記第2の値は0である、請求項1乃至8のうちいずれか1項に記載の方法。
【請求項10】
ビデオピクチャ予測装置であって、
プロセッサ及びメモリを含み、
前記メモリは、前記プロセッサにより実行されたとき、前記プロセッサに請求項1乃至9のうちいずれか1項に記載の方法を実行させるプログラムコードを記憶するように構成される、装置。
【請求項11】
コンピュータ又はプロセッサ請求項1乃至9のうちいずれか1項に記載の方法を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[技術分野]
この出願は、ピクチャ符号化技術の分野に関し、特に、ビデオピクチャ予測方法及び装置に関する。
【背景技術】
【0002】
情報技術の発達によって、高精細度テレビ、ウェブ会議、IPTV及び3Dテレビのようなビデオサービスが急速に発達している。直感性及び高効率のような利点のため、ビデオ信号は、人々の日常生活の中での主要な情報取得方式になっている。ビデオ信号は大量のデータを含み、したがって、大量の送信帯域幅及び記憶空間を占有する。ビデオ信号を効果的に送信及び記憶するために、圧縮符号化がビデオ信号に対して実行される必要がある。ビデオ圧縮技術は、次第にビデオアプリケーションの分野において不可欠な主要技術になっている。
【0003】
ビデオ符号化圧縮の基本原理は、空間ドメイン、時間ドメイン及びコードワードの間の相関を使用することにより、冗長性を最大限に低減することである。現在、一般的な方法は、ピクチャブロックベースのハイブリッドビデオ符号化フレームワークを使用することにより、且つ、予測(イントラ予測及びインター予測を含む)、変換、量子化及びエントロピーエンコードのようなステップを実行することにより、ビデオ符号化圧縮を実現することである。
【0004】
様々なビデオエンコード/デコード解決策において、インター予測における動き推定/動き補償は、エンコード/デコード性能に影響を与える主要技術である。既存のインター予測では、並進動きモデルが使用されるブロックベースの動き補償(motion compensation, MC)予測に基づいて、サブブロックベースのマージ動きベクトル予測が追加されている。既存の技術では、サブブロックマージモードに対応する候補動きベクトルリストの最大長を決定する実現可能な方式は存在しない。
【発明の概要】
【0005】
この出願は、サブブロックマージモードにおける候補動きベクトルリストの最大長を決定する方式を提供するための、ビデオピクチャ予測方法及び装置を提供する。
【0006】
第1の態様によれば、この出願の実施形態はビデオピクチャ予測方法を提供し、
ビットストリームから第1のインジケータ(例えば、sps_affine_enable_flag)を解析するステップと、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードがアフィンモードを含むことを示すとき、ビットストリームから第2のインジケータ(例えば、five_minus_max_num_subblock_merge_cand又はsix_minus_max_num_subblock_merge_cand)を解析するステップであり、第2のインジケータは、第1の候補動きベクトルリストの最大長を示すために使用され、第1の候補動きベクトルリストは、処理対象ブロックについて構築される候補動きベクトルリストであり、サブブロックマージ予測モードが処理対象ブロックに使用される、ステップと、第2のインジケータに基づいて第1の候補動きベクトルリストの最大長を決定するステップとを含む。
【0007】
上記の方法は、サブブロックマージモードにおける候補動きベクトルリストの最大長を決定する方式を提供する。これは実装するのが簡単で容易である。
【0008】
可能な設計では、第2のインジケータに基づいて第1の候補動きベクトルリストの最大長を決定する前に、当該方法は、ビットストリームから第3のインジケータ(例えば、sps_sbtmvp_enabled_flag)を解析するステップであり、第3のインジケータは、サブブロックマージ予測モードにおける高度時間動きベクトル予測モードの存在状態を示すために使用される、ステップを更に含む。
【0009】
可能な設計では、サブブロックマージ予測モードは、プラナー動きベクトル予測モード、高度時間動きベクトル予測モード又はアフィンモードのうち少なくとも1つを含み、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示すとき、第2のインジケータに基づいて第1の候補動きベクトルリストの最大長を決定するステップは、第3のインジケータに基づいて第1の数を決定するステップと、第2のインジケータ及び第1の数に基づいて第1の候補動きベクトルリストの最大長を決定するステップとを含む。
【0010】
例えば、sps_sbtmvp_enabled_flag=0であるとき、これは、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示す。例えば、第1の数は、高度時間動きベクトル予測モードを使用することにより実行される予測においてサポートされる動きベクトルの数に等しい。sps_sbtmvp_enabled_flag=0であるとき、第1の数は、高度時間動きベクトル予測モードを使用することにより実行される予測においてサポートされる動きベクトルの数に等しい。
【0011】
可能な設計では、第2のインジケータに基づいて第1の候補動きベクトルリストの最大長を決定する前に、当該方法は、ビットストリームから第4のインジケータ(例えば、sps_planar_enabled_flag)を解析するステップであり、第4のインジケータは、サブブロックマージ予測モードにおけるプラナー動きベクトル予測モードの存在状態を示すために使用される、ステップを更に含む。
【0012】
可能な設計では、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在することを示し、第4のインジケータが、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示すとき、第2のインジケータに基づいて第1の候補動きベクトルリストの最大長を決定するステップは、第4のインジケータに基づいて第2の数を決定するステップと、第2のインジケータ及び第2の数に基づいて第1の候補動きベクトルリストの最大長を決定するステップとを含む。
【0013】
例えば、sps_planar_enabled_flag=0であるとき、これは、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示す。例えば、第2の数は、プラナー動きベクトル予測モードを使用することにより実行される予測においてサポートされる動きベクトルの数に等しい。
【0014】
可能な設計では、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示し、第4のインジケータが、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在することを示すとき、第2のインジケータに基づいて第1の候補動きベクトルリストの最大長を決定するステップは、第2のインジケータ及び第1の数に基づいて第1の候補動きベクトルリストの最大長を決定するステップを含む。
【0015】
可能な設計では、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示し、第4のインジケータが、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示すとき、第2のインジケータに基づいて第1の候補動きベクトルリストの最大長を決定するステップは、第2のインジケータ、第1の数及び第2の数に基づいて第1の候補動きベクトルリストの最大長を決定するステップを含む。
【0016】
可能な設計では、第1の候補動きベクトルリストの最大長は、以下の式、すなわち、
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand
に従って取得され、MaxNumSubblockMergeCandは第1の候補動きベクトルリストの最大長を表し、K_minus_max_num_subblock_merge_candは第2のインジケータを表し、Kは予め設定された負でない整数である。
【0017】
可能な設計では、第1の候補動きベクトルリストの最大長が第2のインジケータ及び第1の数に基づいて決定されるとき、第1の候補動きベクトルリストの最大長は、以下の式、すなわち、
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1
に従って取得され、MaxNumSubblockMergeCandは第1の候補動きベクトルリストの最大長を表し、K_minus_max_num_subblock_merge_candは第2のインジケータを表し、L1は第1の数を表し、Kは予め設定された負でない整数である。
【0018】
可能な設計では、第1の候補動きベクトルリストの最大長が第2のインジケータ及び第2の数に基づいて決定されるとき、第1の候補動きベクトルリストの最大長は、以下の式、すなわち、
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L2
に従って取得され、MaxNumSubblockMergeCandは第1の候補動きベクトルリストの最大長を表し、K_minus_max_num_subblock_merge_candは第2のインジケータを表し、L2は第2の数を表し、Kは予め設定された負でない整数である。
【0019】
可能な設計では、第1の候補動きベクトルリストの最大長が第2のインジケータ、第1の数及び第2の数に基づいて決定されるとき、第1の候補動きベクトルリストの最大長は、以下の式、すなわち、
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1-L2
に従って取得され、MaxNumSubblockMergeCandは第1の候補動きベクトルリストの最大長を表し、K_minus_max_num_subblock_merge_candは第2のインジケータを表し、L1は第1の数を表し、L2は第2の数を表し、Kは予め設定された負でない整数である。
【0020】
可能な設計では、ビットストリームから第2のインジケータを解析するステップは、
ビットストリーム内のシーケンスパラメータセットから第2のインジケータを解析するステップ、又はビットストリーム内のスライスのスライスヘッダから第2のインジケータを解析するステップであり、処理対象ブロックはスライスに含まれるステップを含む。
【0021】
可能な設計では、当該方法は、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことを示し、第3のインジケータ(例えば、sps_sbtmvp_enabled_flag)が、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在することを示すとき、第3のインジケータに基づいて第3の数を決定し、第3の数に基づいて第1の候補動きベクトルリストの最大長を決定するステップを更に含む。例えば、sps_sbtmvp_enabled_flag=1であるとき、これは、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在することを示す。第3の数は、高度時間動きベクトル予測モードを使用することにより実行される予測においてサポートされる動きベクトルの数に等しい。例えば、第1の候補動きベクトルリストの最大長は第3の数に等しい。
【0022】
可能な設計では、第4のインジケータ(例えば、sps_planar_enabled_flag)が、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在することを示すとき、第1の数に基づいて第1の候補動きベクトルリストの最大長を決定するステップは、第4のインジケータに基づいて第4の数を決定するステップと、第3の数及び第4の数に基づいて第1の候補動きベクトルリストの最大長を決定するステップとを含む。例えば、第1の候補動きベクトルリストの最大長は、第3の数と第4の数との和に等しい。
【0023】
例えば、sps_planar_enabled_flag=1であるとき、これは、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在することを示す。第4の数は、プラナー動きベクトルリストを使用することにより実行される予測においてサポートされる動きベクトルの数に等しい。
【0024】
可能な設計では、当該方法は、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことを示し、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示し、第4のインジケータが、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在することを示すとき、第4のインジケータに基づいて第4の数を決定するステップと、第4の数に基づいて第1の候補動きベクトルリストの最大長を決定するステップとを更に含む。例えば、第1の候補動きベクトルリストの最大長は第4の数に等しい。
【0025】
可能な設計では、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことを示し、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示すとき、第1の候補動きベクトルリストの最大長はゼロである。
【0026】
可能な設計では、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことを示し、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示し、第4のインジケータが、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示すとき、第1の候補動きベクトルリストの最大長はゼロである。
【0027】
可能な設計では、第3のインジケータは第1の値に等しく、第1の数は1に等しい。
【0028】
可能な設計では、第4のインジケータは第3の値に等しく、第2の数は1に等しい。
【0029】
可能な設計では、第3のインジケータは第2の値に等しく、第3の数は1に等しい。
【0030】
可能な設計では、第4のインジケータは第4の値に等しく、第4の数は1に等しい。
【0031】
第2の態様によれば、この出願の実施形態はビデオピクチャ予測装置を提供し、
ビットストリームから第1のインジケータを解析し、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードがアフィンモードを含むことを示すとき、ビットストリームから第2のインジケータを解析するように構成された解析ユニットであり、第2のインジケータは、第1の候補動きベクトルリストの最大長を示すために使用され、第1の候補動きベクトルリストは、処理対象ブロックについて構築される候補動きベクトルリストであり、サブブロックマージ予測モードが処理対象ブロックに使用される、解析ユニットと、
第2のインジケータに基づいて第1の候補動きベクトルリストの最大長を決定するように構成された決定ユニットと
を含む。
【0032】
可能な設計では、解析ユニットは、第1の候補動きベクトルリストの最大長が第2のインジケータに基づいて決定される前に、ビットストリームから第3のインジケータを解析するように更に構成され、第3のインジケータは、サブブロックマージ予測モードにおける高度時間動きベクトル予測モードの存在状態を示すために使用される。
【0033】
可能な設計では、サブブロックマージ予測モードは、プラナー動きベクトル予測モード、高度時間動きベクトル予測モード又はアフィンモードのうち少なくとも1つを含み、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示すとき、決定ユニットは、
第3のインジケータに基づいて第1の数を決定し、
第2のインジケータ及び第1の数に基づいて第1の候補動きベクトルリストの最大長を決定するように具体的に構成される。
【0034】
可能な設計では、第1の候補動きベクトルリストの最大長が第2のインジケータに基づいて決定される前に、解析ユニットは、
ビットストリームから第4のインジケータを解析するように更に構成され、第4のインジケータは、サブブロックマージ予測モードにおけるプラナー動きベクトル予測モードの存在状態を示すために使用される。
【0035】
可能な設計では、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在することを示し、第4のインジケータが、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示すとき、決定ユニットは、
第4のインジケータに基づいて第2の数を決定し、
第2のインジケータ及び第2の数に基づいて第1の候補動きベクトルリストの最大長を決定するように具体的に構成される。
【0036】
可能な設計では、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示し、第4のインジケータが、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在することを示すとき、決定ユニットは、
第2のインジケータ及び第1の数に基づいて第1の候補動きベクトルリストの最大長を決定するように具体的に構成される。
【0037】
可能な設計では、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示し、第4のインジケータが、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示すとき、決定ユニットは、
第2のインジケータ、第1の数及び第2の数に基づいて第1の候補動きベクトルリストの最大長を決定するように具体的に構成される。
【0038】
可能な設計では、第1の候補動きベクトルリストの最大長は、以下の式、すなわち、
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand
に従って取得され、MaxNumSubblockMergeCandは第1の候補動きベクトルリストの最大長を表し、K_minus_max_num_subblock_merge_candは第2のインジケータを表し、Kは予め設定された負でない整数である。
【0039】
可能な設計では、第1の候補動きベクトルリストの最大長は、以下の式、すなわち、
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1
に従って取得され、MaxNumSubblockMergeCandは第1の候補動きベクトルリストの最大長を表し、K_minus_max_num_subblock_merge_candは第2のインジケータを表し、L1は第1の数を表し、Kは予め設定された負でない整数である。
【0040】
可能な設計では、第1の候補動きベクトルリストの最大長は、以下の式、すなわち、
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L2
に従って取得され、MaxNumSubblockMergeCandは第1の候補動きベクトルリストの最大長を表し、K_minus_max_num_subblock_merge_candは第2のインジケータを表し、L2は第2の数を表し、Kは予め設定された負でない整数である。
【0041】
可能な設計では、第1の候補動きベクトルリストの最大長は、以下の式、すなわち、
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1-L2
に従って取得され、MaxNumSubblockMergeCandは第1の候補動きベクトルリストの最大長を表し、K_minus_max_num_subblock_merge_candは第2のインジケータを表し、L1は第1の数を表し、L2は第2の数を表し、Kは予め設定された負でない整数である。
【0042】
可能な設計では、ビットストリームから第2のインジケータを解析するとき、解析ユニットは、
ビットストリーム内のシーケンスパラメータセットから第2のインジケータを解析するか、或いは、ビットストリーム内のスライスのスライスヘッダから第2のインジケータを解析するように具体的に構成され、処理対象ブロックはスライスに含まれる。
【0043】
可能な設計では、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことを示し、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在することを示すとき、決定ユニットは、第3のインジケータに基づいて第3の数を決定し、第3の数に基づいて第1の候補動きベクトルリストの最大長を決定するように更に構成される。
【0044】
可能な設計では、第4のインジケータが、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在することを示すとき、第1の数に基づいて第1の候補動きベクトルリストの最大長を決定するとき、決定ユニットは、
第4のインジケータに基づいて第4の数を決定し、
第1の数及び第4の数に基づいて第1の候補動きベクトルリストの最大長を決定するように具体的に構成される。
【0045】
可能な設計では、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことを示し、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示し、第4のインジケータが、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在することを示すとき、決定ユニットは、第4のインジケータに基づいて第4の数を決定し、第4の数に基づいて第1の候補動きベクトルリストの最大長を決定するように更に構成される。
【0046】
可能な設計では、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことを示し、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示すとき、第1の候補動きベクトルリストの最大長はゼロである。
【0047】
可能な設計では、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことを示し、第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示し、第4のインジケータが、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示すとき、第1の候補動きベクトルリストの最大長はゼロである。
【0048】
可能な設計では、第1の候補動きベクトルリストの最大長は第3の数に等しい。
【0049】
可能な設計では、第1の候補動きベクトルリストの最大長は第3の数と第4の数との和に等しい。
【0050】
可能な設計では、第1の候補動きベクトルリストの最大長は第4の数に等しい。
【0051】
可能な設計では、第3のインジケータは第1の値に等しく、第1の数は1に等しい。
【0052】
可能な設計では、第4のインジケータは第3の値に等しく、第2の数は1に等しい。
【0053】
可能な設計では、第3のインジケータは第2の値に等しく、第3の数は1に等しい。
【0054】
可能な設計では、第4のインジケータは第4の値に等しく、第4の数は1に等しい。
【0055】
第3の態様によれば、この出願の実施形態は装置を提供する。当該装置はデコーダでもよく、プロセッサとメモリとを含む。メモリは命令を記憶するように構成される。当該装置が動作するとき、プロセッサは、メモリに記憶された命令を実行し、当該装置が第1の態様又は第1の態様の設計のうちいずれか1つによる方法を実行することを可能にする。メモリは、プロセッサに統合されてもよく、プロセッサから独立してもよい点に留意すべきである。
【0056】
第4の態様によれば、この出願の実施形態は、エンコーダ側で使用されるビデオピクチャ予測方法を提供し、
ビットストリームに第1のインジケータを符号化するステップと、
第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードがアフィンモードを含むことを示すとき、ビットストリームに第2のインジケータを符号化するステップであり、第2のインジケータは、第1の候補動きベクトルリストの最大長を示すために使用され、第1の候補動きベクトルリストは、処理対象ブロックについて構築される候補動きベクトルリストであり、サブブロックマージ予測モードが処理対象ブロックに使用される、ステップと
を含む。
【0057】
第5の態様によれば、この出願の実施形態はビデオピクチャ予測装置を提供する。当該装置はエンコーダでもよく、プロセッサとメモリとを含む。メモリは命令を記憶するように構成される。当該装置が動作するとき、プロセッサは、メモリに記憶された命令を実行し、当該装置が第4の態様による方法を実行することを可能にする。メモリは、プロセッサに統合されてもよく、プロセッサから独立してもよい点に留意すべきである。
【0058】
この出願の第6の態様によれば、コンピュータ読み取り可能記憶媒体が提供される。コンピュータ読み取り可能記憶媒体は命令を記憶する。命令がコンピュータ上で実行されたとき、コンピュータは、上記の態様のそれぞれによる方法を実行することが可能になる。
【0059】
この出願の第7の態様によれば、命令を含むコンピュータプログラム製品が提供される。コンピュータプログラム製品がコンピュータ上で動作するとき、コンピュータは、上記の態様のそれぞれによる方法を実行することが可能になる。
【0060】
この出願の第2の態様~第7の態様に記載の技術的解決策は、この出願の第1の態様に記載の技術的解決策と一致しており、全ての態様及び対応する実現設計において達成される有利な効果は同様であることが理解されるべきである。したがって、詳細は再び説明しない。
【図面の簡単な説明】
【0061】
図1A】この出願の実施形態を実現するためのビデオエンコード及びデコードシステム10の例のブロック図である。
図1B】この出願の実施形態を実現するためのビデオ符号化システム40の例のブロック図である。
図2】この出願の実施形態を実現するためのエンコーダ20の例示的な構造のブロック図である
図3】この出願の実施形態を実現するためのデコーダ30の例示的な構造のブロック図である
図4】この出願の実施形態を実現するためのビデオ符号化デバイス400の例のブロック図である。
図5】この出願の実施形態を実現するための他のエンコード装置又はデコード装置の例のブロック図である。
図6A】この出願の実施形態を実現するための動き情報についての候補位置の概略図である。
図6B】この出願の実施形態を実現するための継承制御点動きベクトル予測の概略図である。
図6C】この出願の実施形態を実現するための構築制御点動きベクトル予測の概略図である。
図6D】この出願の実施形態を実現するための構築制御点動き情報を取得するために制御点動き情報を結合する手順の概略図である。
図6E】この出願の実施形態を実現するためのATMVP予測方式の概略図である。
図7】この出願の実施形態を実現するためのプラナー動きベクトル予測方式の概略図である。
図8A】この出願の実施形態を実現するためのインター予測方法のフローチャートである。
図8B】この出願の実施形態を実現するための候補動きベクトルリストを構成する概略図である。
図8C】この出願の実施形態を実現するための動き補償単位の概略図である。
図9】この出願の実施形態を実現するためのビデオピクチャ予測方法の概略フローチャートである。
図10】この出願の実施形態を実現するための他のビデオピクチャ予測方法の概略フローチャートである。
図11】この出願の実施形態を実現するための更に他のビデオピクチャ予測方法の概略フローチャートである。
図12A】この出願の実施形態を実現するためのもう1つの他のビデオピクチャ予測方法の概略フローチャートである。
図12B】この出願の実施形態を実現するためのもう1つの他のビデオピクチャ予測方法の概略フローチャートである。
図13】この出願の実施形態を実現するための装置1300の概略図である。
図14】この出願の実施形態を実現するための装置1400の概略図である。
図15】この出願の実施形態を実現するための装置1500の概略図である。
【発明を実施するための形態】
【0062】
以下に、この出願の実施形態における添付の図面を参照して、この出願の実施形態について説明する。以下の説明において、この開示の一部を形成し、例示により、この出願の実施形態の具体的な態様又はこの出願の実施形態が使用され得る具体的な態様を示す添付の図面に参照が行われる。この出願の実施形態は、他の態様で使用されてもよく、添付の図面に示されていない構造的又は論理的な変更を含んでもよいことが理解されるべきである。したがって、以下の詳細な説明は、限定的な意味で受け取られるものではなく、この出願の範囲は、添付の特許請求の範囲により定義される。例えば、記載の方法に関する開示はまた、当該方法を実行するように構成された対応するデバイス又はシステムについても当てはまってもよく、その逆も同様であることが理解されるべきである。例えば、1つ以上の具体的な方法のステップが記載されている場合、対応するデバイスは、記載の1つ以上の方法のステップを実行するための機能ユニットのような1つ以上のユニット(例えば、1つ以上のステップを実行する1つのユニット、又は複数のステップのうち1つ以上をそれぞれ実行する複数のユニット)を、このような1つ以上のユニットが添付の図面に明示的に記載又は図示されていなくても含んでもよい。他方、例えば、具体的な装置が機能ユニットのような1つ以上のユニットに基づいて記載されている場合、対応する方法は、1つ以上のユニットの機能を実行するために使用される1つのステップ(例えば、1つ以上のユニットの機能を実行するために使用される1つのステップ、又は複数のユニットのうち1つ以上の機能を実行するためにそれぞれ使用される複数のステップ)を、このような1つ以上のステップが添付の図面に明示的に記載又は図示されていなくても含んでもよい。さらに、この明細書に記載されている様々な例示的な実施形態及び/又は態様の特徴は、特に断らない限り、互いに組み合わされてもよいことが理解されるべきである。
【0063】
この出願の実施形態における技術的解決策は、既存のビデオ符号化標準(例えば、H.264及びHEVCのような標準)に適用可能であるだけでなく、将来のビデオ符号化標準(例えば、H.266標準)にも適用可能である。この出願の発明を実施するための形態において使用される用語は、この出願の具体的な実施形態を説明するためにのみ使用され、この出願を限定することを意図するものではない。以下に、まず、この出願の実施形態における関連する概念について簡単に説明する。
【0064】
ビデオ符号化は、通常では、ビデオ又はビデオシーケンスを形成する一連のピクチャの処理を示す。ビデオ符号化の分野では、「ピクチャ(picture)」、「フレーム(frame)」及び「画像(image)」という用語は同義語として使用されてもよい。この明細書におけるビデオ符号化は、ビデオエンコード又はビデオデコードを表す。ビデオ符号化は、送信元側で実行され、通常では、より効率的な記憶及び/又は送信のため、ビデオピクチャを表すために必要なデータ量を低減するために、元のビデオピクチャを(例えば、圧縮により)処理することを含む。ビデオデコードは、宛先側で実行され、通常では、ビデオピクチャを復元するために、エンコーダと比較して逆の処理を含む。実施形態におけるビデオピクチャの「符号化」は、ビデオシーケンスの「エンコード」又は「デコード」として理解されるべきである。エンコード部とデコード部との組み合わせはまた、コーデック(エンコード及びデコード)と呼ばれる。
【0065】
ビデオシーケンスは一連のピクチャ(picture)を含み、ピクチャはスライス(slice)に更に分割され、スライスはブロック(block)に更に分割される。ビデオ符号化処理は、ブロック単位で実行される。いくつかの新たなビデオ符号化標準において、ブロックの概念について更に説明する。例えば、マクロブロック(macroblock, MB)がH.264標準において導入されている。マクロブロックは、予測符号化に使用できる複数の予測ブロック(partition)に更に分割されてもよい。高効率ビデオ符号化(high efficiency video coding, HEVC)標準において、符号化ユニット(coding unit, CU)、予測ユニット(prediction unit, PU)及び変換ユニット(transform unit, TU)のような基本的な概念が使用される。複数のブロックユニットは機能分割を通じて取得され、新たなツリーベースの構造を使用することにより記述される。例えば、CUは四分木に基づいてより小さいCUに分割されてもよく、より小さいCUは四分木構造を生成するように更に分割されてもよい。CUは、符号化されたピクチャを分割してエンコードするための基本単位である。PU及びTUもまた、同様のツリー構造を有する。PUは予測ブロックに対応してもよく、予測符号化に使用される基本単位である。CUは、分割パターンに基づいて複数のPUに更に分割される。TUは変換ブロックに対応してもよく、予測残差を変換するために使用される基本単位である。しかし、本質的には、CU、PU及びTUの全ては、概念的にブロック(又はピクチャブロック)である。
【0066】
例えば、HEVCでは、CTUは、符号化ツリーとして表される四分木構造を使用することにより、複数のCUに分割される。インターピクチャ(時間的)予測を使用することによりピクチャ領域をエンコードするかイントラピクチャ(空間的)予測を使用することによりピクチャ領域をエンコードするかに関する判定は、CUレベルで行われる。各CUは、PU分割パターンに基づいて、1つ、2つ又は4つのPUに更に分割されてもよい。1つのPUの内部では、同じ予測プロセスが適用され、関連する情報がPUベースでデコーダに送信される。PU分割パターンに基づいて予測プロセスを適用することにより残差ブロックを取得した後に、CUは、CUに使用される符号化ツリーと同様の他の四分木構造に基づいて変換ユニット(transform unit, TU)に区分されてもよい。ビデオ圧縮技術の最近の開発では、四分木プラス二分木(Quad-tree and binary tree, QTBT)区分フレームが符号化ブロックを区分するために使用される。QTBTブロック構造では、CUは正方形又は長方形でもよい。
【0067】
この明細書では、説明及び理解を容易にするために、現在の符号化されているピクチャ内の符号化対象ピクチャブロックは、現ブロックと呼ばれてもよい。例えば、エンコードにおいて、現ブロックは、現在エンコードされているブロックであり、デコードにおいて、現ブロックは、現在デコードされているブロックである。現ブロックを予測するために使用される、参照ピクチャ内のデコードされたピクチャブロックは、参照ブロックと呼ばれる。言い換えると、参照ブロックは、現ブロックのための参照信号を提供するブロックである。参照信号は、ピクチャブロック内のピクセル値を表す。参照ピクチャ内の現ブロックのための予測信号を提供するブロックは、予測ブロックと呼ばれてもよい。予測信号は、予測ブロック内のピクセル値、サンプリング値又はサンプリング信号を表す。例えば、複数の参照ブロックをトラバースした後に、最適な参照ブロックが見つかり、最適な参照ブロックは現ブロックのための予測を提供し、このブロックは予測ブロックと呼ばれる。
【0068】
可逆ビデオ符号化の場合、元のビデオピクチャが復元できる。すなわち、復元されたビデオピクチャは、元のビデオピクチャと同じ品質を有する(記憶又は送信の間に送信ロス又は他のデータロスが引き起こされないと仮定する)。非可逆ビデオ符号化の場合、ビデオピクチャを表すために必要なデータ量を低減するために、例えば、量子化を通じて更なる圧縮が実行され、ビデオピクチャはデコーダ側で完全に復元できない。すなわち、復元されたビデオピクチャの品質は、元のビデオピクチャの品質よりも低いか或いは悪い。
【0069】
いくつかのH.261ビデオ符号化標準は、「非可逆ハイブリッドビデオコーデック」(すなわち、サンプルドメインにおける空間的及び時間的予測は、変換ドメインにおける量子化を適用するために2D変換符号化と組み合わされる)のためのものである。ビデオシーケンスの各ピクチャは、通常では重複しないブロックのセットに区分され、符号化は、通常ではブロックレベルで実行される。言い換えると、エンコーダ側では、ビデオは、通常ではブロック(ビデオブロック)レベルで処理され、すなわち、エンコードされる。例えば、予測ブロックは、空間的(イントラピクチャ)予測及び時間的(インターピクチャ)予測を通じて生成され、予測ブロックは、残差ブロックを取得するために現ブロック(現在処理中又は処理予定のブロック)から減算され、残差ブロックは、送信(圧縮)されるデータ量を低減するために変換されて変換ドメインにおいて量子化される。デコーダ側では、エンコーダと比較して逆の処理が、表現のために現ブロックを復元するために、エンコード又は圧縮されたブロックに対して実行される。さらに、エンコーダは、デコーダ処理ループを複製し、それにより、エンコーダ及びデコーダは、後続のブロックを処理する、すなわち、符号化するために同じ予測(例えば、イントラ予測及びインター予測)及び/又は復元を生成する。
【0070】
以下に、この出願の実施形態において使用されるシステムアーキテクチャについて説明する。図1Aは、この出願の実施形態において使用されるビデオエンコード及びデコードシステム10の例の概略ブロック図である。図1Aに示すように、ビデオエンコード及びデコードシステム10は、送信元デバイス12と宛先デバイス14とを含んでもよい。送信元デバイス12はエンコードされたビデオデータを生成し、したがって、送信元デバイス12はビデオエンコード装置と呼ばれてもよい。宛先デバイス14は、送信元デバイス12により生成されたエンコードされたビデオデータをデコードしてもよく、したがって、宛先デバイス14はビデオデコード装置と呼ばれてもよい。様々な実現解決策では、送信元デバイス12、宛先デバイス14又は送信元デバイス12と宛先デバイス14との双方は、1つ以上のプロセッサと、1つ以上のプロセッサに結合されたメモリとを含んでもよい。メモリは、RAM、ROM、EEPROM、フラッシュメモリ、又はこの明細書に記載のように、コンピュータにアクセス可能な命令若しくはデータ構造の形式で所望のプログラムコードを記憶するために使用できるいずれかの他の媒体を含んでもよいが、これらに限定されない。送信元デバイス12及び宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティング装置、ノートブック(例えば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、テレビ、カメラ、ディスプレイ装置、デジタルメディアプレーヤ、ビデオゲームコンソール、車載コンピュータ、無線通信デバイス等を含む様々な装置を含んでもよい。
【0071】
図1Aは、送信元デバイス12及び宛先デバイス14を別個のデバイスとして示しているが、デバイスの実施形態は、代替として、送信元デバイス12と宛先デバイス14との双方、又は送信元デバイス12と宛先デバイス14との双方の機能、すなわち、送信元デバイス12又は対応する機能及び宛先デバイス14又は対応する機能を含んでもよい。このような実施形態では、送信元デバイス12又は対応する機能及び宛先デバイス14又は対応する機能は、同じハードウェア及び/又はソフトウェア、別個のハードウェア及び/又はソフトウェア又はこれらのいずれかの組み合わせを使用することにより実現されてもよい。
【0072】
送信元デバイス12と宛先デバイス14との間の通信接続は、リンク13上で実現されてもよく、宛先デバイス14は、リンク13上で送信元デバイス12からエンコードされたビデオデータを受信してもよい。リンク13は、エンコードされたビデオデータを送信元デバイス12から宛先デバイス14に伝達できる1つ以上の媒体又は装置を含んでもよい。一例では、リンク13は、送信元デバイス12がエンコードされたビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にする1つ以上の通信媒体を含んでもよい。この例では、送信元デバイス12は、通信標準(例えば、無線通信プロトコル)に従ってエンコードされたビデオデータを変調してもよく、変調されたビデオデータを宛先デバイス14に送信してもよい。1つ以上の通信媒体は、無線通信媒体及び/又は有線通信媒体、例えば、無線周波数(RF)スペクトル又は1つ以上の物理送信ケーブルを含んでもよい。1つ以上の通信媒体は、パケットベースのネットワークの一部でもよく、パケットベースのネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク又はグローバルネットワーク(例えば、インターネット)である。1つ以上の通信媒体は、ルータ、スイッチ、基地局、又は送信元デバイス12から宛先デバイス14への通信を容易にする他のデバイスを含んでもよい。
【0073】
送信元デバイス12はエンコーダ20を含む。任意選択で、送信元デバイス12は、ピクチャソース16と、ピクチャプリプロセッサ18と、通信インタフェース22とを更に含んでもよい。具体的な実現方式では、エンコーダ20、ピクチャソース16、ピクチャプリプロセッサ18及び通信インタフェース22は、送信元デバイス12内のハードウェアコンポーネントでもよく、或いは、送信元デバイス12内のソフトウェアプログラムでもよい。説明は以下の通り別々に提供される。
【0074】
ピクチャソース16は、例えば、実世界のピクチャをキャプチャするように構成されたいずれかの種類のピクチャキャプチャデバイス、及び/又はピクチャ若しくはコメントを生成するためのいずれかの種類のデバイス(スクリーンコンテンツのエンコードのために、スクリーン上のいくつかのテキストはまた、エンコード対象ピクチャ又は画像の一部として考えられる)、例えば、コンピュータアニメーションピクチャを生成するように構成されたコンピュータグラフィックスプロセッサ、又は実世界のピクチャ若しくはコンピュータアニメーションピクチャ(例えば、スクリーンコンテンツ又は仮想現実(virtual reality, VR)ピクチャ)を取得及び/又は提供するように構成されたいずれかの種類のデバイス、及び/又はこれらのいずれかの組み合わせ(例えば、拡張現実(augmented reality, AR)ピクチャ)でもよく或いはこれらを含んでもよい。ピクチャソース16は、ピクチャをキャプチャするように構成されたカメラ又はピクチャを記憶するように構成されたメモリでもよい。ピクチャソース16は、先立ってキャプチャ又は生成されたピクチャが記憶される、及び/又はピクチャが取得又は受信される、いずれかの種類の(内部又は外部)インタフェースを更に含んでもよい。ピクチャソース16がカメラであるとき、ピクチャソース16は、例えば、ローカルカメラ又は送信元デバイスに統合された統合カメラでもよい。ピクチャソース16がメモリであるとき、ピクチャソース16は、ローカルメモリ又は例えば、送信元デバイスに統合された統合メモリでもよい。ピクチャソース16がインタフェースを含むとき、インタフェースは、例えば、外部ビデオソースからピクチャを受信するための外部インタフェースでもよい。外部ビデオソースは、例えば、カメラ、外部メモリ又は外部ピクチャ生成デバイスのような外部ピクチャキャプチャデバイスである。外部ピクチャ生成デバイスは、例えば、外部コンピュータグラフィックスプロセッサ、コンピュータ又はサーバである。インタフェースは、いずれかのプロプライエタリの或いは標準化されたインタフェースプロトコルに従った、いずれかの種類のインタフェース、例えば、有線若しくは無線インタフェース又は光インタフェースでもよい。
【0075】
ピクチャは、ピクセル成分(picture element)の二次元配列又は行列として考えられてもよい。配列内のピクセル成分はまた、サンプルと呼ばれてもよい。配列又はピクチャの水平及び垂直方向(又は軸)のサンプルの数は、ピクチャのサイズ及び/又は解像度を定義する。色の表現について、典型的には3つの色成分が使用され、具体的には、ピクチャは、3つのサンプル配列として表されてもよく或いはこれらを含んでもよい。例えば、RBGフォーマット又は色空間において、ピクチャは対応する赤、緑及び青のサンプル配列を含む。しかし、ビデオ符号化では、各ピクセルは、通常では、輝度/色差フォーマット又は色空間で表される。例えば、YUVフォーマットのピクチャは、Yにより示される(場合によっては代わりにLにより示される)輝度成分と、U及びVにより示される2つの色差成分とを含む。輝度(luma)成分Yは明るさ又はグレーレベル強度を表し(例えば、双方はグレースケールピクチャでは同じである)、2つの色差(chroma)成分U及びVは色差又は色情報成分を表す。対応して、YUVフォーマットのピクチャは、輝度サンプル値(Y)の輝度サンプル配列と、色差値(U及びV)の2つの色差サンプル配列とを含む。RGBフォーマットのピクチャは、YUVフォーマットのピクチャに変換又は転換されてもよく、その逆も同様である。このプロセスはまた、色転換又は変換と呼ばれる。ピクチャがモノクロである場合、当該ピクチャは輝度サンプル配列のみを含んでもよい。この出願のこの実施形態では、ピクチャソース16によりピクチャプロセッサに送信されるピクチャはまた、生ピクチャデータ17と呼ばれてもよい。
【0076】
ピクチャプリプロセッサ18は、生ピクチャデータ17を受信し、生ピクチャデータ17に対して前処理を実行し、前処理されたピクチャ19又は前処理されたピクチャデータ19を取得するように構成される。例えば、ピクチャプリプロセッサ18により実行される前処理は、トリミング、カラーフォーマット転換(例えば、RGBフォーマットからYUVフォーマットへ)、色補正又はノイズ除去を含んでもよい。
【0077】
エンコーダ20(或いはビデオエンコーダ20と呼ばれる)は、前処理されたピクチャデータ19を受信し、関連する予測モード(例えば、この明細書の各実施形態における予測モード)を使用することにより、前処理されたピクチャデータ19を処理し、エンコードされたピクチャデータ21を提供するように構成される(エンコーダ20の構造の詳細について、図2図4又は図5に基づいて以下に更に説明する)。いくつかの実施形態では、エンコーダ20は、以下に説明する各実施形態を実行し、この出願に記載の色差ブロック予測方法のエンコーダ側の適用を実現するように構成されてもよい。
【0078】
通信インタフェース22は、エンコードされたピクチャデータ21を受信し、記憶又は直接の復元のために、リンク13上でエンコードされたピクチャデータ21を宛先デバイス14又はいずれかの他のデバイス(例えば、メモリ)に送信するように構成されてもよい。他のデバイスは、デコード又は記憶に使用されるいずれかのデバイスでもよい。通信インタフェース22は、例えば、リンク13上で送信するために、エンコードされたピクチャデータ21を適切なフォーマット、例えば、データパケットにパッケージするように構成されてもよい。
【0079】
宛先デバイス14はデコーダ30を含む。任意選択で、宛先デバイス14は、通信インタフェース28と、ピクチャポストプロセッサ32と、表示デバイス34とを更に含んでもよい。説明は以下の通り別々に提供される。
【0080】
通信インタフェース28は、送信元デバイス12又はいずれかの他の送信元からエンコードされたピクチャデータ21を受信するように構成されてもよい。いずれかの他の送信元は、例えば、記憶デバイスである。記憶デバイスは、例えば、エンコード済ピクチャデータ記憶デバイスである。通信インタフェース28は、送信元デバイス12と宛先デバイス14との間のリンク13上で、或いは、いずれかの種類のネットワーク上で、エンコードされたピクチャデータ21を送信又は受信するように構成されてもよい。リンク13は、例えば、直接有線又は無線接続である。いずれかの種類のネットワークは、例えば、有線若しくは無線ネットワーク又はこれらのいずれかの組み合わせ、又はいずれかの種類のプライベート若しくは公衆ネットワーク又はこれらのいずれかの組み合わせである。通信インタフェース28は、例えば、通信インタフェース22を通じて送信されたデータパケットをパッケージ解除し、エンコードされたピクチャデータ21を取得するように構成されてもよい。
【0081】
通信インタフェース28及び通信インタフェース22の双方は、一方向通信インタフェース又は双方向通信インタフェースとして構成されてもよく、例えば、接続を設定するためにメッセージを送信及び受信し、通信リンク及び/又はエンコードされたピクチャデータの送信のようなデータ送信に関連するいずれかの他の情報を確認及び交換するように構成されてもよい。
【0082】
デコーダ30(或いはデコーダ30と呼ばれる)は、エンコードされたピクチャデータ21を受信し、デコードされたピクチャデータ31又はデコードされたピクチャ31を提供するように構成される(デコーダ30の構造の詳細について、図3図4又は図5に基づいて以下に更に説明する)。いくつかの実施形態では、デコーダ30は、以下に説明する各実施形態を実行し、この出願に記載の色差ブロック予測方法のデコーダ側の適用を実現するように構成されてもよい。
【0083】
ピクチャポストプロセッサ32は、デコードされたピクチャデータ31(復元ピクチャデータとも呼ばれる)を後処理し、後処理されたピクチャデータ33を取得するように構成される。ピクチャポストプロセッサ32により実行される後処理は、カラーフォーマット転換(例えば、YUVフォーマットからRGBフォーマットへ)、色補正、トリミング、再サンプリング又はいずれかの他の処理を含んでもよい。ピクチャポストプロセッサ32は、後処理されたピクチャデータ33を表示デバイス34に送信するように更に構成されてもよい。
【0084】
表示デバイス34は、後処理されたピクチャデータ33を受信し、例えば、ユーザ又はビューアにピクチャを表示するように構成される。表示デバイス34は、復元されたピクチャを提示するためのいずれかのディスプレイ、例えば、統合された或いは外部のディスプレイ又はモニタでもよく或いはこれを含んでもよい。例えば、ディスプレイは、液晶ディスプレイ(liquid crystal display, LCD)、有機発光ダイオード(organic light emitting diode, OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、シリコン上液晶(liquid crystal on silicon, LCoS)、デジタル光プロセッサ(digital light processor, DLP)又はいずれかの種類の他のディスプレイを含んでもよい。
【0085】
図1Aは、送信元デバイス12及び宛先デバイス14を別個のデバイスとして示しているが、デバイスの実施形態は、代替として、送信元デバイス12と宛先デバイス14との双方又は送信元デバイス12と宛先デバイス14との双方の機能、すなわち、送信元デバイス12又は対応する機能及び宛先デバイス14又は対応する機能を含んでもよい。このような実施形態では、送信元デバイス12又は対応する機能及び宛先デバイス14又は対応する機能は、同じハードウェア及び/又はソフトウェア、別個のハードウェア及び/又はソフトウェア又はこれらのいずれかの組み合わせを使用することにより実現されてもよい。
【0086】
当該説明に基づいて当業者に明らかなように、異なるユニットの機能又は図1Aに示す送信元デバイス12及び/又は宛先デバイス14の機能の存在及び(厳密な)分割は、実際のデバイス及び用途に依存して変化してもよい。送信元デバイス12及び宛先デバイス14は、いずれかの種類のハンドヘルド又は据え置きデバイス、例えば、ノートブックコンピュータ若しくはラップトップコンピュータ、携帯電話、スマートフォン、タブレット若しくはタブレットコンピュータ、ビデオカメラ、デスクトップコンピュータ、セットトップボックス、テレビ、カメラ、車載デバイス、表示デバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス(コンテンツサービスサーバ又はコンテンツ配信サーバ等)、放送受信機デバイス又は放送送信機デバイスを含む広範囲のデバイスのうちいずれかを含んでもよく、いずれかの種類のオペレーティングシステムを使用してもよく或いは使用しなくてもよい。
【0087】
エンコーダ20及びデコーダ30は、様々な適切な回路、例えば、1つ以上のマイクロプロセッサ、デジタルシグナルプロセッサ(digital signal processor, DSP)、特定用途向け集積回路(application-specific integrated circuit, ASIC)、フィールドプログラマブルゲートアレイ(field-programmable gate array, FPGA)、ディスクリートロジック、ハードウェア又はこれらのいずれかの組み合わせのうちいずれか1つとしてそれぞれ実現されてもよい。技術が部分的にソフトウェアを使用することにより実現される場合、デバイスは、適切な非一時的なコンピュータ読み取り可能記憶媒体にソフトウェア命令を記憶し、この開示の技術を実行するために、1つ以上のプロセッサのようなハードウェアを使用することにより命令を実行してもよい。上記の内容(ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組み合わせ等を含む)のいずれかは、1つ以上のプロセッサとして考えられてもよい。
【0088】
いくつかの場合、図1Aに示すビデオエンコード及びデコードシステム10は、単なる例であり、この出願の技術は、必ずしもエンコードデバイスとデコードデバイスとの間にいずれかのデータ通信を含むとは限らないビデオ符号化設定(例えば、ビデオエンコード又はビデオデコード)に適用可能である。他の例では、データは、ローカルメモリから取り出されるもの、ネットワーク上でストリーミングされるもの等でもよい。ビデオエンコードデバイスは、データをエンコードし、データをメモリに記憶してもよく、及び/又はビデオデコードデバイスは、メモリからデータを取り出し、データをデコードしてもよい。いくつかの例では、エンコード及びデコードは、互いに通信しないが単にメモリに対してデータをエンコードし及び/又はメモリからデータを取り出してデータをデコードするデバイスにより実行される。
【0089】
図1Bは、例示的な実施形態による、図2におけるエンコーダ20及び/又は図3におけるデコーダ30を含むビデオ符号化システム40の例の例示的な図である。ビデオ符号化システム40は、この出願の実施形態における様々な技術の組み合わせを実現できる。図示の実施形態では、ビデオ符号化システム40は、撮像デバイス41、エンコーダ20、デコーダ30(及び/又は処理ユニット46の論理回路47により実現されるビデオエンコーダ/デコーダ)、アンテナ42、1つ以上のプロセッサ43、1つ以上のメモリ44及び/又は表示デバイス45を含んでもよい。
【0090】
図1Bに示すように、撮像デバイス41、アンテナ42、処理ユニット46、論理回路47、エンコーダ20、デコーダ30、プロセッサ43、メモリ44及び/又は表示デバイス45は、互いに通信できる。記載のように、ビデオ符号化システム40は、エンコーダ20及びデコーダ30の双方によって示されているが、異なる例では、ビデオ符号化システム40は、エンコーダ20のみ又はデコーダ30のみを含んでもよい。
【0091】
いくつかの例では、アンテナ42は、ビデオデータのエンコードされたビットストリームを送信又は受信するように構成されてもよい。さらに、いくつかの例では、表示デバイス45は、ビデオデータを提示するように構成されてもよい。いくつかの例では、論理回路47は、処理ユニット46により実現されてもよい。処理ユニット46は、特定用途向け集積回路(application-specific integrated circuit, ASIC)ロジック、グラフィックスプロセッサ、汎用プロセッサ等を含んでもよい。ビデオ符号化システム40はまた、任意選択のプロセッサ43を含んでもよい。同様に、任意選択のプロセッサ43は、特定用途向け集積回路(application-specific integrated circuit, ASIC)ロジック、グラフィックスプロセッサ、汎用プロセッサ等を含んでもよい。いくつかの例では、論理回路47は、ハードウェア、例えば、ビデオ符号化専用ハードウェアにより実現されてもよく、プロセッサ43は、汎用ソフトウェア、オペレーティングシステム等を使用することにより実現されてもよい。さらに、メモリ44は、いずれかの種類のメモリ、例えば、揮発性メモリ(例えば、スタティックランダムアクセスメモリ(Static Random Access Memory, SRAM)又はダイナミックランダムアクセスメモリ(Dynamic Random Access Memory, DRAM))又は不揮発性メモリ(例えば、フラッシュメモリ)でもよい。非限定的な例では、メモリ44は、キャッシュメモリにより実現されてもよい。いくつかの例では、論理回路47は、メモリ44にアクセスしてもよい(例えば、ピクチャバッファの実現のため)。他の例では、論理回路47及び/又は処理ユニット46は、ピクチャバッファ等の実現のためのメモリ(例えば、キャッシュ)を含んでもよい。
【0092】
いくつかの例では、論理回路により実現されるエンコーダ20は、ピクチャバッファ(例えば、処理ユニット46又はメモリ44により実現される)と、グラフィックス処理ユニット(例えば、処理ユニット46により実現される)とを含んでもよい。グラフィックス処理ユニットは、ピクチャバッファに通信可能に結合されてもよい。グラフィックス処理ユニットは、図2を参照して説明する様々なモジュール及び/又はこの明細書に記載のいずれかの他のエンコーダシステム又はサブシステムを実現するために、論理回路47により実現されるエンコーダ20を含んでもよい。論理回路は、この明細書に記載の様々な動作を実行するように構成されてもよい。
【0093】
いくつかの例では、デコーダ30は、図3におけるデコーダ30を参照して説明する様々なモジュール及び/又はこの明細書に記載のいずれかの他のデコーダシステム又はサブシステムを実現するために、同様の方式で論理回路47により実現されてもよい。いくつかの例では、論理回路により実現されるデコーダ30は、ピクチャバッファ(例えば、処理ユニット2820又はメモリ44により実現される)と、グラフィックス処理ユニット(例えば、処理ユニット46により実現される)とを含んでもよい。グラフィックス処理ユニットは、ピクチャバッファに通信可能に結合されてもよい。グラフィックス処理ユニットは、図3を参照して説明する様々なモジュール及び/又はこの明細書に記載のいずれかの他のデコーダシステム又はサブシステムを実現するために、論理回路47により実現されるデコーダ30を含んでもよい。
【0094】
いくつかの例では、アンテナ42は、ビデオデータのエンコードされたビットストリームを受信するように構成されてもよい。記載のように、エンコードされたビットストリームは、この明細書に記載のビデオフレームエンコードに関連するデータ、インジケータ、インデックス値、モード選択データ等、例えば、符号化区分に関連するデータ(例えば、変換係数又は量子化された変換係数、任意選択のインジケータ(記載の通り)及び/又は符号化区分を定義するデータ)を含んでもよい。ビデオ符号化システム40は、アンテナ42に結合され且つエンコードされたビットストリームをデコードするように構成されたデコーダ30を更に含んでもよい。表示デバイス45は、ビデオフレームを提示するように構成される。
【0095】
この出願のこの実施形態では、エンコーダ20を参照して説明する例について、デコーダ30は、逆のプロセスを実行するように構成されてもよいことが理解されるべきである。シンタックスエレメントをシグナリングすることに関して、デコーダ30は、このようなシンタックスエレメントを受信して解析し、関連するビデオデータを対応してデコードするように構成されてもよい。いくつかの例では、エンコーダ20は、シンタックスエレメントをエンコードされたビデオビットストリーム内にエントロピーエンコードしてもよい。このような例では、デコーダ30は、シンタックスエレメントを解析し、関連するビデオデータを対応してデコードしてもよい。
【0096】
この出願の実施形態に記載の方法は、主にインター予測プロセスで使用される点に留意すべきである。このプロセスはエンコーダ20及びデコーダ30の双方により実行される。この出願の実施形態におけるエンコーダ20及びデコーダ30は、例えば、H.263、H.264、HEVC、MPEG-2、MPEG-4、VP8若しくはVP9のようなビデオ標準プロトコル、又は次世代ビデオ標準プロトコル(H.266等)に対応するエンコーダ及びデコーダでもよい。
【0097】
図2は、この出願の実施形態を実現するためのエンコーダ20の例の概略/概念ブロック図である。図2の例では、エンコーダ20は、残差計算ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、復元ユニット214と、バッファ216と、ループフィルタユニット220と、デコード済ピクチャバッファ(decoded picture buffer, DPB)230と、予測処理ユニット260と、エントロピーエンコードユニット270とを含む。予測処理ユニット260は、インター予測ユニット244と、イントラ予測ユニット254と、モード選択ユニット262とを含んでもよい。インター予測ユニット244は、動き推定ユニットと、動き補償ユニット(図示せず)とを含んでもよい。図2に示すエンコーダ20はまた、ハイブリッドビデオエンコーダ又はハイブリッドビデオコーデックによるビデオエンコーダと呼ばれてもよい。
【0098】
例えば、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、予測処理ユニット260及びエントロピーエンコードユニット270は、エンコーダ20の順方向信号経路を形成するが、例えば、逆量子化ユニット210、逆変換処理ユニット212、復元ユニット214、バッファ216、ループフィルタ220、デコード済ピクチャバッファ(decoded picture buffer, DPB)230及び予測処理ユニット260は、エンコーダの逆方向信号経路を形成する。エンコーダの逆方向信号経路は、デコーダの信号経路に対応する(図3におけるデコーダ30を参照する)。
【0099】
エンコーダ20は、例えば、入力202を介して、ピクチャ201又はピクチャ201のピクチャブロック203、例えば、ビデオ又はビデオシーケンスを形成するピクチャのシーケンス内のピクチャを受信する。ピクチャブロック203はまた、現ピクチャブロック又はエンコード対象ピクチャブロックと呼ばれてもよい。ピクチャ201は、現ピクチャ又はエンコード対象ピクチャ(特に、ビデオ符号化において現ピクチャを他のピクチャ、例えば、同じビデオシーケンス、すなわち、現ピクチャも含むビデオシーケンスの先立ってエンコード及び/又はデコードされたピクチャから区別するため)と呼ばれてもよい。
【0100】
エンコーダ20の実施形態は、ピクチャ201をピクチャブロック203のような複数のブロックに区分するように構成された区分ユニット(図2に図示せず)を含んでもよい。ピクチャ201は、通常では、複数の重複しないブロックに区分される。区分ユニットは、ビデオシーケンス内の全てのピクチャについて同じブロックサイズ及びブロックサイズを定義する対応するグリッドを使用するように、或いは、ピクチャ又はピクチャのサブセット若しくはグループの間でブロックサイズを変更し、各ピクチャを対応するブロックに区分するように構成されてもよい。
【0101】
一例では、エンコーダ20内の予測処理ユニット260は、上記の区分技術のいずれかの組み合わせを実行するように構成されてもよい。
【0102】
ピクチャ201と同様に、ピクチャブロック203もサンプル値を有するサンプルの二次元配列又は行列であるか或いはこのように考えられてもよいが、ピクチャブロック203のサイズはピクチャ201のサイズよりも小さい。言い換えると、ピクチャブロック203は、例えば、1つのサンプル配列(例えば、モノクロピクチャ201の場合の輝度配列)、3つのサンプル配列(例えば、カラーピクチャの場合の1つの輝度配列及び2つの色差配列)又は適用されるカラーフォーマットに依存するいずれかの他の数及び/又は種類の配列を含んでもよい。ピクチャブロック203の水平及び垂直方向(又は軸)のサンプルの数は、ピクチャブロック203のサイズを定義する。
【0103】
図2に示すエンコーダ20は、ブロック毎にピクチャ201をエンコードするように構成される。例えば、エンコード及び予測は、ピクチャブロック203毎に実行される。
【0104】
残差計算ユニット204は、ピクチャブロック203及び予測ブロック265(予測ブロック265についての更なる詳細は以下に提供される)に基づいて、例えば、サンプル毎(ピクセル毎)にピクチャブロック203のサンプル値から予測ブロック265のサンプル値を減算することにより、残差ブロック205を計算し、サンプルドメインにおける残差ブロック205を取得するように構成される。
【0105】
変換処理ユニット206は、変換、例えば、離散コサイン変換(discrete cosine transform, DCT)又は離散サイン変換(discrete sine transform, DST)を残差ブロック205のサンプル値に適用し、変換ドメインにおける変換係数207を取得するように構成される。変換係数207はまた、変換残差係数と呼ばれてもよく、変換ドメインにおける残差ブロック205を表す。
【0106】
変換処理ユニット206は、HEVC/H.265で指定された変換のようなDCT/DSTの整数近似を適用するように構成されてもよい。直交DCT変換と比較して、このような整数近似は、通常では、ファクタに基づいてスケーリングされる。順変換及び逆変換を使用することにより処理される残差ブロックのノルムを保存するために、更なるスケールファクタが変換プロセスの一部として適用される。スケールファクタは、通常では、いくつかの制約に基づいて選択され、例えば、スケールファクタは、シフト演算のための2のべき乗、変換係数のビット深度、及び精度と実現コストとの間のトレードオフである。例えば、具体的なスケールファクタは、逆変換については、例えば、デコーダ30側の逆変換処理ユニット212(及び、例えば、エンコーダ20側の逆変換処理ユニット212による対応する逆変換)により指定され、対応して、対応するスケールファクタは、順変換については、エンコーダ20側の変換処理ユニット206による順変換により指定されてもよい。
【0107】
量子化ユニット208は、例えば、スカラー量子化又はベクトル量子化を適用することにより、変換係数207を量子化し、量子化された変換係数209を取得するように構成される。量子化された変換係数209はまた、量子化された残差係数209と呼ばれてもよい。量子化プロセスは、変換係数207の一部又は全部に関連するビット深度を低減してもよい。例えば、nビットの変換係数は、量子化中にmビットの変換係数に切り捨てられてもよく、nはmよりも大きい。量子化度は、量子化パラメータ(quantization parameter, QP)を調整することにより変更されてもよい。例えば、スカラー量子化について、より細かい或いはより粗い量子化を達成するために異なるスケールが使用されてもよい。より小さい量子化ステップサイズはより微かい量子化に対応し、より大きい量子化ステップサイズはより粗い量子化に対応する。適切な量子化ステップサイズは、量子化パラメータ(quantization parameter, QP)により示されてもよい。例えば、量子化パラメータは、適切な量子化ステップサイズの所定のセットに対するインデックスでもよい。例えば、より小さい量子化パラメータは、より細かい量子化(より小さい量子化ステップサイズ)に対応してもよく、より大きい量子化パラメータは、より粗い量子化(より大きい量子化ステップサイズ)に対応してもよく、或いは、その逆も同様である。量子化は、量子化ステップサイズによる除算と、例えば、逆量子化ユニット210により実行される、対応する量子化又は逆量子化とを含んでもよく、或いは、量子化ステップサイズによる乗算を含んでもよい。HEVCのようないくつかの標準による実施形態では、量子化パラメータは、量子化ステップサイズを決定するために使用されてもよい。一般的に、量子化ステップサイズは、除算を含む式の固定点近似を使用することにより、量子化パラメータに基づいて計算されてもよい。残差ブロックのノルムを回復するために、量子化及び反量子化について更なるスケールファクタが導入されてもよく、量子化ステップサイズ及び量子化パラメータについての式の固定点近似に使用されるスケールのため、残差ブロックのノルムが変更されてもよい。例示的な実現方式では、逆変換のスケールが反量子化のスケールと組み合わされてもよい。代替として、カスタマイズされた量子化テーブルが使用され、エンコーダからデコーダに、例えば、ビットストリームでシグナリングされてもよい。量子化は非可逆演算であり、ロスは量子化ステップサイズの増加とともに増加する。
【0108】
逆量子化ユニット210は、量子化ユニット208の逆量子化を量子化された係数に適用し、反量子化された係数211を取得するように、例えば、量子化ユニット208と同じ量子化ステップサイズに基づいて或いはこれを使用することにより、量子化ユニット208により適用される量子化方式の逆を適用するように構成される。反量子化された係数211はまた、反量子化された残差係数211と呼ばれ、変換係数207に対応してもよいが、反量子化された係数221は、通常では、量子化により引き起こされるロスのため変換係数と異なる。
【0109】
逆変換処理ユニット212は、変換処理ユニット206により適用される変換の逆変換、例えば、逆離散コサイン変換(discrete cosine transform, DCT)又は逆離散サイン変換(discrete sine transform, DST)を適用し、サンプルドメインにおいて逆変換ブロック213を取得するように構成される。逆変換ブロック213はまた、逆変換反量子化されたブロック213又は逆変換残差ブロック213と呼ばれてもよい。
【0110】
復元ユニット214(例えば、加算器214)は、例えば、復元された残差ブロック213のサンプル値及び予測ブロック265のサンプル値を加算することにより、逆変換ブロック213(すなわち、復元された残差ブロック213)を予測ブロック265に加算し、サンプルドメインにおいて復元されたブロック215を取得するように構成される。
【0111】
任意選択で、例えば、ラインバッファ216のバッファユニット216(略称で「バッファ」216)は、例えば、イントラ予測のために、復元されたブロック215及び対応するサンプル値をバッファ又は記憶するように構成される。他の実施形態では、エンコーダは、いずれかの種類の推定及び/又は予測、例えば、イントラ予測を実行するために、バッファユニット216に記憶されたフィルタリングされていない復元されたブロック及び/又は対応するサンプル値を使用するように構成されてもよい。
【0112】
例えば、実施形態では、エンコーダ20は、バッファユニット216が、イントラ予測ユニット254のために使用されるだけでなく、ループフィルタユニット220(図2に図示せず)にも使用される復元されたブロック215を記憶するように、及び/又は、例えば、バッファユニット216及びデコード済ピクチャバッファユニット230が1つのバッファを形成するように構成されてもよい。他の実施形態では、フィルタリングされたブロック221及び/又はデコード済ピクチャバッファ230からのブロック又はサンプル(図2に図示せず)が、イントラ予測ユニット254のための入力又は基礎として使用される。
【0113】
ループフィルタユニット220(略称で「ループフィルタ」220)は、復元されたブロック215をフィルタリングし、フィルタリングされたブロック221を取得し、ピクセル遷移を平滑化するか或いはビデオ品質を改善するように構成される。ループフィルタユニット220は、デブロッキングフィルタ、サンプル適応オフセット(sample-adaptive offset, SAO)フィルタ、又は他のフィルタ、例えば、バイラテラルフィルタ、適応ループフィルタ(adaptive loop filter, ALF)、鮮鋭化若しくは平滑化フィルタ又は協調フィルタのような1つ以上のループフィルタを表すことを意図している。ループフィルタユニット220は、図2ではループ内フィルタとして示されているが、他の実現方式では、ループフィルタユニット220は、ポストループフィルタとして実現されてもよい。フィルタリングされたブロック221はまた、フィルタリング済の復元されたブロック221と呼ばれてもよい。デコード済ピクチャバッファ230は、ループフィルタユニット220が復元済のエンコードされたブロックに対してフィルタリング動作を実行した後に、復元済のエンコードされたブロックを記憶してもよい。
【0114】
実施形態では、エンコーダ20(対応して、ループフィルタユニット220)は、例えば、直接的に、或いは、エントロピーエンコードユニット270又はいずれかの他のエントロピーエンコードユニットにより実行されるエントロピーエンコードの後に、ループフィルタパラメータ(例えば、サンプル適応オフセット情報)を出力するように構成されてもよく、それにより、デコーダ30はデコードのために同じループフィルタパラメータを受信して適用できる。
【0115】
デコード済ピクチャバッファ(decoded picture buffer, DPB)230は、エンコーダ20によりビデオデータのエンコードの際に使用するための参照ピクチャデータを記憶する参照ピクチャメモリでもよい。DPB230は、ダイナミックランダムアクセスメモリ(dynamic random access memory, DRAM)(シンクロナスDRAM(synchronous DRAM, SDRAM)、磁気抵抗RAM(magnetoresistive RAM, MRAM)、抵抗変化型RAM(resistive RAM, RRAM)を含む)又は他の種類の記憶デバイスのような様々な記憶デバイスのうちいずれか1つにより形成されてもよい。DPB230及びバッファ216は、同じ記憶デバイス又は別個の記憶デバイスにより提供されてもよい。一例では、デコード済ピクチャバッファ(decoded picture buffer, DPB)230は、フィルタリングされたブロック221を記憶するように構成される。デコード済ピクチャバッファ230は、同じ現ピクチャ又は異なるピクチャ、例えば、先立って復元されたピクチャの他の先立ってフィルタリングされたブロック、例えば、先立って復元及びフィルタリングされたブロック221を記憶するように更に構成されてもよく、例えば、インター予測のために、完全な先立って復元されたピクチャ、すなわち、デコードされたピクチャ(並びに対応する参照ブロック及びサンプル)及び/又は部分的に復元された現ピクチャ(並びに対応する参照ブロック及びサンプル)を提供してもよい。一例では、復元されたブロック215がループ内フィルタリングなしで復元される場合、デコード済ピクチャバッファ(decoded picture buffer, DPB)230は、復元されたブロック215を記憶するように構成される。
【0116】
ブロック予測処理ユニット260とも呼ばれる予測処理ユニット260は、予測ブロック203(現ピクチャ201の現ピクチャブロック203)と、復元されたピクチャデータ、例えば、バッファ216からの同じ(現)ピクチャの参照サンプル及び/又はデコード済ピクチャバッファ230からの1つ以上の先立ってデコードされたピクチャの参照ピクチャデータ231とを受信又は取得し、予測のためにこのようなデータを処理するように、すなわち、インター予測ブロック245又はイントラ予測ブロック255でもよい予測ブロック265を提供するように構成される。
【0117】
モード選択ユニット262は、残差ブロック205の計算のため且つ復元されるブロック215の復元のために、予測モード(例えば、イントラ又はインター予測モード)及び/又は予測ブロック265として使用されるべき対応する予測ブロック245又は255を選択するように構成されてもよい。
【0118】
実施形態では、モード選択ユニット262は、予測モードを(例えば、予測処理ユニット260によりサポートされる予測モードから)選択するように構成されてもよく、予測モードは、最善の一致又は言い換えると最小の残差(最小の残差は、送信又は記憶のためのより良い圧縮を意味する)を提供するか、最小のシグナリングオーバヘッド(最小のシグナリングオーバヘッドは、或いは、送信又は記憶のためのより良い圧縮を意味する)を提供するか、或いは、双方を考慮するか或いはバランスさせる。モード選択ユニット262は、レート歪み最適化(rate distortion optimization, RDO)に基づいて予測モードを決定するように、すなわち、最小のレート歪みを提供する予測モードを選択するか、或いは、関連するレート歪みが予測モード選択基準を少なくとも満たす予測モードを選択するように構成されてもよい。
【0119】
以下に、エンコーダ20の例により実行される予測処理(例えば、予測処理ユニット260により実行される)及びモード選択(例えば、モード選択ユニット262により実行される)について詳細に説明する。
【0120】
上記のように、エンコーダ20は、(所定の)予測モードのセットから最善又は最適な予測モードを決定又は選択するように構成される。予測モードのセットは、例えば、イントラ予測モード及び/又はインター予測モードを含んでもよい。
【0121】
イントラ予測モードのセットは、35個の異なるイントラ予測モード、例えば、DC(又は平均)モード及びプラナーモードのような非方向性モード、又はH.265で定義されるもののような方向性モードを含んでもよく、或いは、67個の異なるイントラ予測モード、例えば、DC(又は平均)モード及びプラナーモードのような非方向性モード、又は開発中のH.266で定義されるもののような方向性モードを含んでもよい。
【0122】
可能な実現方式では、インター予測モードのセットは、利用可能な参照ピクチャ(すなわち、例えば、上記のようにDBP230に記憶されたデコードされた少なくとも部分的にデコードされたピクチャ)及び他のインター予測パラメータに依存し、例えば、最善に一致する参照ブロックを探索するために全体の参照ピクチャが使用されるか、参照ピクチャの一部のみ、例えば、現ブロックの領域を取り囲む探索ウィンドウ領域が使用されるかに依存し、及び/又は、例えば、半ピクセル及び/又は四分ピクセル補間のようなピクセル補間が適用されるか否かに依存する。インター予測モードのセットは、例えば、高度動きベクトル予測(Advanced Motion Vector Prediction, AMVP)モード及びマージ(merge)モードを含んでもよい。具体的な実現方式では、インター予測モードのセットは、この出願の実施形態では、改良された制御点ベースのAMVPモード及び改良された制御点ベースのmergeモードを含んでもよい。一例では、イントラ予測ユニット254は、以下に説明するインター予測技術のいずれかの組み合わせを実行するように構成されてもよい。
【0123】
上記の予測モードに加えて、スキップモード及び/又は直接モードもまた、この出願の実施形態において適用されてもよい。
【0124】
予測処理ユニット260は、例えば、四分木(quad-tree, QT)区分、二分木(binary-tree, BT)区分、三分木(triple-tree, TT)区分又はこれらのいずれかの組み合わせを反復的に使用することにより、ピクチャブロック203をより小さいブロック区分又はサブブロックに区分し、例えば、ブロック区分又はサブブロックのそれぞれに対して予測を実行するように更に構成されてもよい。モード選択は、区分されたピクチャブロック203のツリー構造の選択と、ブロック区分又はサブブロックのそれぞれに使用される予測モードの選択とを含む。
【0125】
インター予測ユニット244は、動き推定(motion estimation, ME)ユニット(図2に図示せず)と、動き補償(motion compensation, MC)ユニット(図2に図示せず)とを含んでもよい。動き推定ユニットは、動き推定のために、ピクチャブロック203(現ピクチャ201の現ピクチャブロック203)及びデコードされたピクチャ231、又は少なくとも1つ以上の先立って復元されたブロック、例えば、他の/異なる先立ってデコードされたピクチャ231の1つ以上の復元されたブロックを受信又は取得するように構成される。例えば、ビデオシーケンスは、現ピクチャと、先立ってデコードされたピクチャ31とを含んでもよい。言い換えると、現ピクチャ及び先立ってデコードされたピクチャ31は、ビデオシーケンスを形成するピクチャの一部でもよく、或いは、ピクチャのシーケンスを形成してもよい。
【0126】
例えば、エンコーダ20は、複数の他のピクチャのうち同じピクチャ又は異なるピクチャの複数の参照ブロックから参照ブロックを選択し、参照ピクチャ及び/又は参照ブロックの位置(X,Y座標)と現ブロックの位置との間のオフセット(空間オフセット)を動き推定ユニット(図2に図示せず)にインター予測パラメータとして提供するように構成されてもよい。このオフセットはまた、動きベクトル(motion vector, MV)と呼ばれる。
【0127】
動き補償ユニットは、インター予測パラメータを取得し、インター予測パラメータに基づいて或いはこれを使用することによりインター予測を実行し、インター予測ブロック245を取得するように構成される。動き補償ユニット(図2に図示せず)により実行される動き補償は、動き推定を通じて決定された動き/ブロックベクトルに基づいて、予測ブロックをフェッチ又は生成することを含んでもよい(場合によっては、サブピクセル精度の補間を実行する)。補間フィルタリングは、既知のピクセルサンプルから更なるピクセルサンプルを生成してもよい。これは、ピクチャブロックを符号化するために使用され得る候補予測ブロックの数を潜在的に増加させる。現ピクチャブロックのPUについての動きベクトルを受信すると、動き補償ユニット246は、参照ピクチャリストの1つにおいて動きベクトルが指す予測ブロックを位置決定してもよい。動き補償ユニット246はまた、ブロック及びビデオスライスに関連するシンタックスエレメントを生成してもよく、それにより、デコーダ30は、ビデオスライス内のピクチャブロックをデコードするためにシンタックスエレメントを使用する。
【0128】
具体的には、インター予測ユニット244は、シンタックスエレメントをエントロピーエンコードユニット270に送信してもよい。シンタックスエレメントは、インター予測パラメータ(複数のインター予測モードがトラバースされた後の現ブロックの予測に使用されるインター予測モードの選択の指示情報等)を含む。可能な適用シナリオでは、1つのみのインター予測モードが存在する場合、インター予測パラメータは、シンタックスエレメントで搬送されなくてもよい。この場合、デコーダ側30は、デフォルトの予測モードを使用することによりデコードを直接実行してもよい。インター予測ユニット244は、インター予測技術のいずれかの組み合わせを実行するように構成されてもよいことが理解され得る。
【0129】
イントラ予測ユニット254は、例えば、イントラ推定のために、同じピクチャのピクチャブロック203(現ピクチャブロック)及び1つ以上の先立って復元されたブロック、例えば、復元された隣接ブロックを取得する、例えば、受信するように構成される。例えば、エンコーダ20は、複数の(所定の)イントラ予測モードからイントラ予測モードを選択するように構成されてもよい。
【0130】
実施形態では、エンコーダ20は、例えば、最小の残差(例えば、現ピクチャブロック203に最も類似した予測ブロック255を提供するイントラ予測モード)又は最小のレート歪みに基づいて、最適化基準に従ってイントラ予測モードを選択するように構成されてもよい。
【0131】
イントラ予測ユニット254は、例えば、選択されたイントラ予測モード内のイントラ予測パラメータに基づいて、イントラ予測ブロック255を決定するように更に構成される。いずれの場合でも、ブロックについてイントラ予測モードを選択した後に、イントラ予測ユニット254は、イントラ予測パラメータ、すなわち、ブロックについての選択されたイントラ予測モードを示す情報をエントロピーエンコードユニット270に提供するように更に構成される。一例では、イントラ予測ユニット254は、イントラ予測技術のいずれかの組み合わせを実行するように構成されてもよい。
【0132】
具体的には、イントラ予測ユニット254は、シンタックスエレメントをエントロピーエンコードユニット270に送信してもよい。シンタックスエレメントは、イントラ予測パラメータ(複数のイントラ予測モードがトラバースされた後の現ブロックの予測に使用されるイントラ予測モードの選択の指示情報)を含む。可能な適用シナリオでは、1つのみのイントラ予測モードが存在する場合、イントラ予測パラメータは、シンタックスエレメントで搬送されなくてもよい。この場合、デコーダ側30は、デフォルトの予測モードを使用することによりデコードを直接実行してもよい。
【0133】
エントロピーエンコードユニット270は、量子化された残差係数209、インター予測パラメータ、イントラ予測パラメータ及び/又はループフィルタパラメータのうち1つ又は全てに対して、エントロピーエンコードアルゴリズム又は方式(例えば、可変長符号化(variable length coding, VLC)方式、コンテキスト適応VLC(context adaptive VLC, CAVLC)方式、算術符号化方式、コンテキスト適応バイナリ算術符号化(context adaptive binary arithmetic coding, CABAC)方式、シンタックスベースのコンテキスト適応バイナリ算術符号化(syntax-based context-adaptive binary arithmetic coding, SBAC)方式、確率区間区分エントロピー(probability interval partitioning entropy, PIPE)符号化方式又は他のエントロピー符号化方法若しくは技術)を適用し(或いは適用せず)、例えば、エンコードされたビットストリーム21の形式で出力272を介して出力され得るエンコードされたピクチャデータ21を取得するように構成される。エンコードされたビットストリームは、ビデオデコーダ30に送信されてもよく、或いは、ビデオデコーダ30による後続の送信又は取り出しのために記憶されてもよい。エントロピーエンコードユニット270は、エンコードされている現ビデオスライスについての他のシンタックスエレメントをエントロピーエンコードするように更に構成されてもよい。
【0134】
ビデオエンコーダ20の他の構造的な変形は、ビデオストリームをエンコードするために使用されてもよい。例えば、非変換ベースのエンコーダ20は、いくつかのブロック又はフレームについて変換処理ユニット206なしに残差信号を直接量子化できる。他の実現方式では、エンコーダ20は、単一のユニットに結合された量子化ユニット208及び逆量子化ユニット210を有することができる。
【0135】
具体的には、この出願のこの実施形態では、エンコーダ20は、以下の実施形態に記載のインター予測方法を実現するように構成されてもよい。
【0136】
ビデオエンコーダ20の他の構造的な変形は、ビデオストリームをエンコードするために構成されてもよいことが理解されるべきである。例えば、いくつかのピクチャブロック又はピクチャフレームについて、ビデオエンコーダ20は、残差信号を直接量子化してもよい。この場合、変換処理ユニット206による処理は必要とされず、対応して、逆変換処理ユニット212による処理も必要とされない。代替として、いくつかのピクチャブロック又はピクチャフレームについて、ビデオエンコーダ20は残差データを生成しない。対応して、この場合、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210及び逆変換処理ユニット212による処理は必要とされない。代替として、ビデオエンコーダ20は、復元されたピクチャブロックを参照ブロックとして直接記憶してもよい。この場合、フィルタ220による処理は必要とされない。代替として、ビデオエンコーダ20内の量子化ユニット208及び逆量子化ユニット210は組み合わされてもよい。ループフィルタ220は任意選択である。さらに、可逆圧縮符号化の場合、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210及び逆変換処理ユニット212も任意選択である。異なる適用シナリオにおいて、インター予測ユニット244及びイントラ予測ユニット254は選択的に使用されてもよいことが理解されるべきである。
【0137】
図3は、この出願の実施形態を実現するためのデコーダ30の例の概略/概念ブロック図である。ビデオデコーダ30は、例えば、エンコーダ20によるエンコードを通じて取得された、エンコードされたピクチャデータ(例えば、エンコードされたビットストリーム)21を受信し、デコードされたピクチャ231を取得するように構成される。デコードプロセスにおいて、ビデオデコーダ30は、ビデオエンコーダ20からビデオデータ、例えば、エンコードされたビデオスライス内のピクチャブロックを表すエンコードされたビデオビットストリーム及び関連するシンタックスエレメントを受信する。
【0138】
図3における例では、デコーダ30は、エントロピーデコードユニット304と、逆量子化ユニット310と、逆変換処理ユニット312と、復元ユニット314(例えば、加算器314)と、バッファ316と、ループフィルタ320と、デコード済ピクチャバッファ330と、予測処理ユニット360とを含む。予測処理ユニット360は、インター予測ユニット344と、イントラ予測ユニット354と、モード選択ユニット362とを含んでもよい。いくつかの例では、ビデオデコーダ30は、図2におけるビデオエンコーダ20を参照して説明したエンコード経路と一般的に逆のデコード経路を実行してもよい。
【0139】
エントロピーデコードユニット304は、エンコードされたピクチャデータ21をエントロピーデコードし、例えば、量子化された係数309及び/又はデコードされたエンコードパラメータ(図3に図示せず)、例えば、(デコードされた)インター予測パラメータ、イントラ予測パラメータ、ループフィルタパラメータ及び/又は他のシンタックスエレメントのうちいずれか1つ又は全てを取得するように構成される。エントロピーデコードユニット304は、インター予測パラメータ、イントラ予測パラメータ及び/又は他のシンタックスエレメントを予測処理ユニット360に転送するように更に構成される。ビデオデコーダ30は、ビデオスライスレベル及び/又はピクチャブロックレベルのシンタックスエレメントを受信してもよい。
【0140】
逆量子化ユニット310は、機能において逆量子化ユニット110と同じでもよく、逆変換処理ユニット312は、機能において逆変換処理ユニット212と同じでもよく、復元ユニット314は、機能において復元ユニット214と同じでもよく、バッファ316は、機能においてバッファ216と同じでもよく、ループフィルタ320は、機能においてループフィルタ220と同じでもよく、デコード済ピクチャバッファ330は、機能においてデコード済ピクチャバッファ230と同じでもよい。
【0141】
予測処理ユニット360は、インター予測ユニット344と、イントラ予測ユニット354とを含んでもよい。インター予測ユニット344は、機能においてインター予測ユニット244と同様でもよく、イントラ予測ユニット354は、機能においてイントラ予測ユニット254と同様でもよい。予測処理ユニット360は、通常では、ブロック予測を実行し及び/又はエンコードされたデータ21から予測ブロック365を取得し、例えば、エントロピーデコードユニット304から予測関連パラメータ及び/又は選択された予測モードに関する情報を(明示的又は暗示的に)受信又は取得するように構成される。
【0142】
ビデオスライスがイントラ符号化(I)スライスにエンコードされるとき、予測処理ユニット360内のイントラ予測ユニット354は、シグナリングされたイントラ予測モードと、現フレーム又はピクチャの先立ってデコードされたブロックのデータとに基づいて、現ビデオスライス内のピクチャブロックの予測ブロック365を生成するように構成される。ビデオフレームがインター符号化(すなわち、B又はP)スライスにエンコードされるとき、予測処理ユニット360内のインター予測ユニット344(例えば、動き補償ユニット)は、動きベクトル及びエントロピーデコードユニット304から受信した他のシンタックスエレメントに基づいて、現ビデオスライス内のビデオブロックの予測ブロック365を生成するように構成される。インター予測において、予測ブロックは、参照ピクチャリスト内の参照ピクチャから生成されてもよい。ビデオデコーダ30は、DPB330に記憶された参照ピクチャに基づいてデフォルトの構築技術を使用することにより、参照フレームリスト、すなわち、リスト0及びリスト1を構築してもよい。
【0143】
予測処理ユニット360は、動きベクトル及び他のシンタックスエレメントを解析することにより、現ビデオスライス内のビデオブロックの予測情報を決定し、予測情報を使用することにより、デコードされている現ビデオブロックの予測ブロックを生成するように構成される。この出願の例では、予測処理ユニット360は、いくつかの受信したシンタックスエレメントを使用することにより、ビデオスライス内のビデオブロックをエンコードするための予測モード(例えば、イントラ予測又はインター予測)、インター予測スライスタイプ(例えば、Bスライス、Pスライス又はGPBスライス)、スライスについての参照ピクチャリストのうち1つ以上の構築情報、スライス内の各インター符号化ビデオブロックの動きベクトル、スライス内の各インター符号化ビデオブロックのインター予測状態、及び他の情報を決定し、現ビデオスライス内のビデオブロックをデコードする。この開示の他の例では、ビットストリームからビデオデコーダ30により受信されるシンタックスエレメントは、適応パラメータセット(adaptive parameter set, APS)、シーケンスパラメータセット(sequence parameter set, SPS)、ピクチャパラメータセット(picture parameter set, PPS)又はスライスヘッダのうち1つ以上におけるシンタックスエレメントを含む。
【0144】
逆量子化ユニット310は、ビットストリーム内に提供され且つエントロピーデコードユニット304によりデコードされる量子化された変換係数に対して逆量子化(すなわち、反量子化)を実行するように構成されてもよい。逆量子化プロセスは、適用されるべき量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス内の各ビデオブロックについてビデオエンコーダ20により計算された量子化パラメータの使用を含んでもよい。
【0145】
逆変換処理ユニット312は、逆変換(例えば、逆DCT、逆整数変換又は概念的に同様の逆変換プロセス)を変換係数に適用し、ピクセルドメインにおける残差ブロックを生成するように構成される。
【0146】
復元ユニット314(例えば、加算器314)は、例えば、復元された残差ブロック313のサンプル値及び予測ブロック365のサンプル値を加算することにより、逆変換ブロック313(すなわち、復元された残差ブロック313)を予測ブロック365に加算し、サンプルドメインにおける復元されたブロック315を取得するように構成される。
【0147】
(符号化ループにおいて或いは符号化ループの後に)ループフィルタユニット320は、復元されたブロック315をフィルタリングし、フィルタリングされたブロック321を取得し、ピクセル遷移を平滑化にするか或いはビデオ品質を改善するように構成される。一例では、ループフィルタユニット320は、以下に説明するフィルタリング技術のいずれかの組み合わせを実行するように構成されてもよい。ループフィルタユニット320は、デブロッキングフィルタ、サンプル適応オフセット(sample-adaptive offset, SAO)フィルタ、又は他のフィルタ、例えば、バイラテラルフィルタ、適応ループフィルタ(adaptive loop filter, ALF)、鮮鋭化若しくは平滑化フィルタ又は協調フィルタのような1つ以上のループフィルタを表すことを意図している。ループフィルタユニット320は、図3ではループ内フィルタとして示されているが、他の実現方式では、ループフィルタユニット320は、ポストループフィルタとして実現されてもよい。
【0148】
次いで、所与のフレーム又はピクチャ内のデコードされたビデオブロック321は、後続の動き補償のために使用される参照ピクチャを記憶するデコード済ピクチャバッファ330に記憶される。
【0149】
デコーダ30は、例えば、ユーザへの提示又は閲覧のために、出力332を介してデコードされたピクチャ31を出力するように構成される。
【0150】
ビデオデコーダ30の他の変形は、圧縮されたビットストリームをデコードするために使用されてもよい。例えば、デコーダ30は、ループフィルタユニット320なしに出力ビデオストリームを生成できる。例えば、非変換ベースのデコーダ30は、いくつかのブロック又はフレームについて逆変換処理ユニット312なしに残差信号を直接逆量子化できる。他の実現方式では、ビデオデコーダ30は、単一のユニットに結合される逆量子化ユニット310及び逆変換処理ユニット312を有してもよい。
【0151】
具体的には、この出願のこの実施形態では、デコーダ30は、以下の実施形態に記載のインター予測方法を実現するように構成されてもよい。
【0152】
ビデオデコーダ30の他の構造的な変形は、エンコードされたビデオビットストリームをデコードするために使用されてもよいことが理解されるべきである。例えば、ビデオデコーダ30は、フィルタ320による処理なしに出力ビデオストリームを生成してもよい。代替として、いくつかのピクチャブロック又はピクチャフレームについて、ビデオデコーダ30内のエントロピーデコードユニット304は、デコードを通じて量子化された係数を取得しない。対応して、この場合、逆量子化ユニット310及び逆変換処理ユニット312による処理は必要とされない。ループフィルタ320は任意選択である。さらに、可逆圧縮の場合、逆量子化ユニット310及び逆変換処理ユニット312も任意選択である。異なる適用シナリオでは、インター予測ユニット及びイントラ予測ユニットは選択的に使用されてもよいことが理解されるべきである。
【0153】
この出願におけるエンコーダ20及びデコーダ30では、ステップの処理結果が更に処理され、次いで、次のステップに出力されてもよいことが理解されるべきである。例えば、補間フィルタリング、動きベクトル導出又はループフィルタリングのようなステップの後に、clip又はshiftのような更なる動作が、対応するステップの処理結果に対して実行される。
【0154】
例えば、現ピクチャブロックの制御点であり且つ隣接するアフィン符号化されたブロックの動きベクトルに基づいて導出される動きベクトルは更に処理されてもよい。これは、この出願では限定されない。例えば、動きベクトルの値は、特定のビット幅の範囲内にあるように制約される。動きベクトルの許容ビット幅がbitDepthであると仮定すると、動きベクトルの値は、-2^(bitDepth-1)~2^(bitDepth-1)-1の範囲であり、記号「^」はべき乗を表す。bitDepthが16である場合、値は-32768~32767の範囲である。bitDepthが18である場合、値は-131072~131071の範囲である。動きベクトルの値は、以下の2つの方式のうちいずれかで制約されてもよい。
【0155】
方式1:動きベクトルのオーバーフロー最上位ビットが除去される。
ux=(vx+2bitDepth)%2bitDepth
vx=(ux>=2bitDepth-1)?(ux-2bitDepth):ux
uy=(vy+2bitDepth)%2bitDepth
vy=(uy>=2bitDepth-1)?(uy-2bitDepth):uy
【0156】
例えば、vxの値は-32769であり、32767は上記の式に従って導出される。値は2の補数表現でコンピュータに記憶され、-32769の2の補数表現は1,0111,1111,1111,1111(17ビット)であり、オーバーフローのためにコンピュータにより実行される処理は最上位ビットを破棄することである。したがって、vxの値は0111,1111,1111,1111、すなわち、32767である。この値は、当該式に従った処理を通じて導出された結果と一致する。
【0157】
方式2:動きベクトルに対してclippingが実行され、以下の式が使用される。
vx=Clip3(-2bitDepth-1,2bitDepth-1-1,vx)
vy=Clip3(-2bitDepth-1,2bitDepth-1-1,vy)
【0158】
上記の式において、Clip3は、zの値を[x,y]の範囲にクリッピングするものとして定義される。
【数1】
【0159】
図4は、この出願の実施形態によるビデオ符号化デバイス400(例えば、ビデオエンコードデバイス400又はビデオデコードデバイス400)の概略構造図である。ビデオ符号化デバイス400は、この明細書に記載の実施形態を実現するのに適している。実施形態では、ビデオ符号化デバイス400は、ビデオデコーダ(例えば、図1Aにおけるデコーダ30)又はビデオエンコーダ(例えば、図1Aにおけるエンコーダ20)でもよい。他の実施形態では、ビデオ符号化デバイス400は、図1Aにおけるデコーダ30又は図1Aにおけるエンコーダ20のうち1つ以上のコンポーネントでもよい。
【0160】
ビデオ符号化デバイス400は、データを受信するように構成された入口ポート410及び受信機(Rx)420と、データを処理するように構成されたプロセッサ、論理ユニット又は中央処理装置(CPU)430と、データを送信するように構成された送信機(Tx)440及び出口ポート450と、データを記憶するように構成されたメモリ460とを含む。ビデオ符号化デバイス400は、光又は電気信号の出口又は入口のために、入口ポート410、受信機420、送信機440及び出口ポート450に結合された光対電気コンポーネント及び電気対光(EO)コンポーネントを更に含んでもよい。
【0161】
プロセッサ430は、ハードウェア及びソフトウェアにより実現される。プロセッサ430は、1つ以上のCPUチップ、コア(例えば、マルチコアプロセッサ)、FPGA、ASIC及びDSPとして実現されてもよい。プロセッサ430は、入口ポート410、受信機420、送信機440、出口ポート450及びメモリ460と通信する。プロセッサ430は、符号化モジュール470(例えば、エンコードモジュール470又はデコードモジュール470)を含む。エンコード/デコードモジュール470は、この出願の実施形態において提供される色差ブロック予測方法を実現するために、この明細書に開示される実施形態を実現する。例えば、エンコード/デコードモジュール470は、様々な符号化動作を実現、処理又は提供する。したがって、エンコード/デコードモジュール470は、ビデオ符号化デバイス400の機能に実質的な改善を提供し、ビデオ符号化デバイス400の異なる状態への変換に影響を与える。代替として、エンコード/デコードモジュール470は、メモリ460に記憶されてプロセッサ430により実行される命令として実現される。
【0162】
メモリ460は、1つ以上のディスク、テープドライブ及びソリッドステートドライブを含み、プログラムが実行のために選択されるときにこのようなプログラムを記憶し、プログラムの実行中に読み取られる命令及びデータを記憶するために、オーバーフローデータ記憶デバイスとして使用されてもよい。メモリ460は、揮発性及び/又は不揮発性でもよく、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、三値コンテンツアドレス指定可能メモリ(ternary content-addressable memory, TCAM)及び/又はスタティックランダムアクセスメモリ(SRAM)でもよい。
【0163】
図5は、例示的な実施形態による図1Aの送信元デバイス12及び宛先デバイス14のいずれか又は双方として使用され得る装置500の簡略化したブロック図である。装置500は、この出願の技術を実現できる。言い換えると、図5は、この出願の実施形態によるエンコードデバイス又はデコードデバイス(略称で符号化デバイス500と呼ばれる)の実現方式の概略ブロック図である。符号化デバイス500は、プロセッサ510と、メモリ530と、バスシステム550とを含んでもよい。プロセッサ及びメモリは、バスシステムを通じて接続される。メモリは命令を記憶するように構成される。プロセッサは、メモリに記憶された命令を実行するように構成される。符号化デバイスのメモリはプログラムコードを記憶する。プロセッサはメモリに記憶されたプログラムコードを呼び出し、この出願に記載の様々なビデオエンコード又はデコード方法を実行してもよい。繰り返しを回避するために、詳細はここでは説明しない。
【0164】
この出願のこの実施形態では、プロセッサ510は、中央処理装置(Central Processing Unit, 略称で「CPU」)でもよい。代替として、プロセッサ510は、他の汎用プロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASSIC)、フィールドプログラマブルゲートアレイ(FPGA)又は他のプログラム可能論理デバイス、ディスクリートゲート又はトランジスタ論理デバイス、ディスクリートハードウェアコンポーネント等でもよい。汎用プロセッサは、マイクロプロセッサ、いずれかの従来のプロセッサ等でもよい。
【0165】
メモリ530は、読み取り専用メモリ(ROM)デバイス又はランダムアクセスメモリ(RAM)デバイスを含んでもよい。いずれかの他の適切な種類の記憶デバイスが、代替としてメモリ530として使用されてもよい。メモリ530は、バス550を通じてプロセッサ510によりアクセスされるコード及びデータ531を含んでもよい。メモリ530は、オペレーティングシステム533及びアプリケーションプログラム535を更に含んでもよい。アプリケーションプログラム535は、プロセッサ510が、この出願に記載のビデオエンコード又はデコード方法を実行することを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーションプログラム535は、アプリケーション1~Nを含んでもよい。アプリケーションは、この出願に記載のビデオエンコード又はデコード方法を実行するビデオエンコード又はデコードアプリケーション(略称でビデオ符号化アプリケーションと呼ばれる)を更に含む。
【0166】
バスシステム550は、データバスを含むだけでなく、電力バス、制御バス、状態信号バス等を含んでもよい。しかし、明確な説明のために、図面における様々な種類のバスはバスシステム550として記される。
【0167】
任意選択で、符号化デバイス500は、1つ以上の出力デバイス、例えば、ディスプレイ570を更に含んでもよい。一例では、ディスプレイ570は、ディスプレイと、タッチ入力を感知するように動作可能なタッチセンシティブユニットとを組み合わせたタッチセンシティブディスプレイでもよい。ディスプレイ570は、バス550を通じてプロセッサ510に接続されてもよい。
【0168】
以下に、まず、この出願の概念について説明する。
【0169】
1.インター予測モード:
【0170】
HEVCでは、2つのインター予測モード、すなわち、高度動きベクトル予測(advanced motion vector prediction, AMVP)モード及びマージ(merge)モードが使用される。
【0171】
AMVPモードでは、まず、現ブロックの空間的又は時間的に隣接するエンコードされたブロック(隣接ブロックとして記される)がトラバースされ、候補動きベクトルリスト(動き情報候補リストとも呼ばれてもよい)が隣接ブロックの動き情報に基づいて構築され、次いで、最適な動きベクトルが、レート歪みコストに基づいて候補動きベクトルリストから決定される。最小のレート歪みコストに対応する候補動き情報は、現ブロックの動きベクトル予測子(motion vector predictor, MVP)として使用される。隣接ブロックの位置及びこれらのトラバース順序の双方が予め定義されている。レート歪みコストは、式(1)に従って計算され、Jはレート歪みコスト(RD cost)を表し、SADは、元のサンプル値と、候補動きベクトル予測子を使用することによる動き推定を通じて取得された予測サンプル値との間の差分絶対値和(sum of absolute differences, SAD)であり、Rはビットレートを表し、λはラグランジュ乗数を表す。エンコーダ側は、候補動きベクトルリスト内の選択された動きベクトル予測子のインデックス値と、参照フレームインデックス値とをデコーダ側に伝達する。さらに、現ブロックの実際の動きベクトルを取得するために、MVPを中心とした近傍で動き探索が実行される。エンコーダ側は、MVPと実際の動きベクトルとの間の差(motion vector difference)をデコーダ側に伝達する。
J=SAD+λR (1)
【0172】
mergeモードでは、まず、候補動きベクトルリストが現ブロックの空間的又は時間的に隣接するエンコードされたブロックの動き情報に基づいて構築される。次いで、最適な動き情報が、レート歪みコストに基づいて現ブロックの動き情報として候補動きベクトルリストから決定される。候補動きベクトルリスト内の最適な動き情報の位置のインデックス値(以下、merge indexとして記される)がデコーダ側に伝達される。現ブロックの空間的及び時間的候補動き情報が図6Aに示されている。空間的候補動き情報は5つの空間的に隣接するブロック(A0、A1、B0、B1及びB2)からのものである。隣接ブロックが利用不可能である場合(隣接ブロックが存在しないか、隣接ブロックがエンコードされていないか、或いは、隣接ブロックに使用される予測モードがインター予測モードでない場合)、隣接ブロックの動き情報は候補動きベクトルリストに追加されない。現ブロックの時間的候補動き情報は、参照フレーム及び現フレームのピクチャオーダカウント(picture order count, POC)に基づいて、参照フレーム内の対応する位置におけるブロックのMVをスケーリングすることにより取得される。まず、参照フレーム内の位置Tにおけるブロックが利用可能であるか否かが決定される。ブロックが利用不可能である場合、位置Cにおけるブロックが選択される。
【0173】
AMVPモードと同様に、mergeモードでは、隣接ブロックの位置及びこれらのトラバーサル順序の双方がまた、予め定義されている。さらに、隣接ブロックの位置及びこれらのトラバーサル順序は、異なるモードにおいて異なってもよい。
【0174】
1つの候補動きベクトルリストがAMVPモード及びmergeモードの双方で維持される必要があることが習得できる。毎回新たな動き情報が候補リストに追加される前に、まず、リスト内に同じ動き情報が存在するか否かが検査される。同じ動き情報がリストに存在する場合、動き情報はリストに追加されない。この検査プロセスは、候補動きベクトルリストのプルーニングと呼ばれる。リストのプルーニングは、冗長なレート歪みコスト計算を回避するために、リスト内の同じ動き情報の存在を回避するためのものである。
【0175】
HEVCにおけるインター予測では、同じ動き情報が符号化ブロックの全てのサンプルに使用され、次いで、動き補償が動き情報に基づいて実行され、符号化ブロックのサンプルの予測子を取得する。しかし、符号化ブロックでは、全てのサンプルが同じ動き特徴を有するとは限らない。同じ動き情報を使用することは、不正確な動き補償予測及びより多くの残差情報を生じる可能性がある。
【0176】
既存のビデオ符号化標準では、並進動きモデルベースのブロックマッチング動き推定が使用され、ブロック内の全サンプルの動きが一致していると仮定する。しかし、現実の世界では、様々な動きが存在する。多くの物体、例えば、回転物体、異なる方向に回転するジェットコースター、花火のディスプレイ及び映画におけるいくつかの演技、特に、UGCシナリオにおける移動物体は、非並進的な動きにある。これらの移動物体について、既存の符号化標準における並進動きモデルベースのブロック動き補償技術が符号化に使用される場合、符号化効率が大きく影響される可能性がある。これを鑑みて、非並進動きモデル、例えば、アフィン動きモデルが符号化効率を改善するために導入される。
【0177】
これに基づいて、異なる動きモデルに関して、AMVPモードは、並進モデルベースのAMVPモードと非並進モデルベースのAMVPモードとに分類されてもよく、mergeモードは、並進モデルベースのmergeモードと非並進モデルベースのmergeモードとに分類されてもよい。
【0178】
2.非並進動きモデル
【0179】
非並進動きモデルベースの予測は、現ブロックの各サブブロックの動き情報を導出するために、同じ動きモデルがエンコーダ及びデコーダ側の双方で使用され、予測ブロックを取得するために、動き補償がサブブロックの動き情報に基づいて実行されることを意味する。このように、予測効率が改善される。一般的な非並進動きモデルは、4パラメータアフィン動きモデルと、6パラメータアフィン動きモデルとを含む。
【0180】
この出願の実施形態におけるサブブロックは、特定の区分方法を使用することにより取得されたサンプル又はN1×N2のサンプルブロックでもよく、N1及びN2の双方は正の整数であり、N1はN2に等しくてもよく、或いは、N2に等しなくてもよい。
【0181】
4パラメータアフィン動きモデルは、式(2)に従って表される。
【数2】
【0182】
4パラメータアフィン動きモデルは、2つのサンプルの動きベクトルと、現ブロックの左上サンプルに対するこれらの座標とにより表されてもよい。動きモデルパラメータを表すために使用されるサンプルは、制御点と呼ばれる。左上サンプル(0,0)及び右上サンプル(W,0)が制御点として使用される場合、まず、現ブロックの左上頂点及び右上頂点のそれぞれの動きベクトル(vx0,vy0)及び(vx1,vy1)が決定される。次いで、現ブロックの各サブブロックの動き情報が式(3)に従って取得され、(x,y)は、現ブロックの左上サンプルに対するサブブロックの座標を表し、Wは現ブロックの幅を表す。
【数3】
【0183】
6パラメータアフィン動きモデルは、式(4)に従って表される。
【数4】
【0184】
6パラメータアフィン動きモデルは、3つのサンプルの動きベクトルと、現ブロックの左上サンプルに対するこれらの座標とにより表されてもよい。現ブロックの左上サンプル(0,0)、右上サンプル(W,0)及び左下サンプル(0,H)が制御点として使用される場合、まず、現ブロックの左上制御点、右上制御点及び左下制御点のそれぞれの動きベクトル(vx0,vy0)、(vx1,vy1)及び(vx2,vy2)が決定される。次いで、現ブロックの各サブブロックの動き情報が式(5)に従って取得され、(x,y)は、現ブロックの左上サンプルに対するサブブロックの座標を表し、W及びHはそれぞれ現ブロックの幅及び高さを表す。
【数5】
【0185】
アフィン動きモデルを使用することにより予測される符号化ブロックは、アフィン符号化ブロックと呼ばれる。
【0186】
一般的に、アフィン符号化ブロックの制御点の動き情報は、アフィン動きモデルベースの高度動きベクトル予測(Advanced Motion Vector Prediction, AMVP)モード又はアフィン動きモデルベースのマージ(Merge)モードを使用することにより取得されてもよい。
【0187】
現符号化ブロックの制御点の動き情報は、継承制御点動きベクトル予測方法又は構築制御点動きベクトル予測方法を使用することにより取得されてもよい。
【0188】
3.継承制御点動きベクトル予測方法
【0189】
継承制御点動きベクトル予測方法は、現ブロックの候補制御点動きベクトルを決定するために、隣接するエンコードされたアフィン符号化ブロックの動きモデルを使用することである。
【0190】
図6Bに示す現ブロックが例として使用される。現ブロックの周辺の隣接位置におけるブロックは、指定の順序、例えば、A1->B1->B0->A0->B2でトラバースされ、現ブロックの隣接位置におけるブロックを含むアフィン符号化ブロックを見つけ、アフィン符号化ブロックの制御点動き情報を取得する。さらに、現ブロックの制御点動きベクトル(mergeモードで使用される)又は制御点動きベクトル予測子(AMVPモードで使用される)は、アフィン符号化ブロックの制御点動き情報に基づいて構築された動きモデルを使用することにより導出される。順序A1->B1->B0->A0->B2は、単に例として使用される。他の組み合わせの順序もまた、この出願において使用されてもよい。さらに、隣接位置におけるブロックは、A1、B1、B0、A0及びB2に限定されない。
【0191】
隣接位置におけるブロックは、特定の区分方法を使用することにより取得された予め設定されたサイズのサンプル又はサンプルブロックでもよい。例えば、サンプルブロックは、4×4のサンプルブロック、4×2のサンプルブロック又は他のサイズのサンプルブロックでもよい。これは、ここでは限定されない。
【0192】
以下に、A1を例として使用することによる決定プロセスについて説明し、同様のプロセスが他の場合にも使用できる。
【0193】
図4に示すように、A1が位置する符号化ブロックが4パラメータアフィン符号化ブロックである場合、アフィン符号化ブロックの左上頂点(x4,y4)の動きベクトル(vx4,vy4)及び右上頂点(x5,y5)の動きベクトル(vx5,vy5)が取得される。現アフィン符号化ブロックの左上頂点(x0,y0)の動きベクトル(vx0,vy0)は式(6)に従って計算され、現アフィン符号化ブロックの右上頂点(x1,y1)の動きベクトル(vx1,vy1)は式(7)に従って計算される。
【数6】
【数7】
【0194】
A1が位置するアフィン符号化ブロックに基づいて取得される現ブロックの左上頂点(x0,y0)の動きベクトル(vx0,vy0)と右上頂点(x1,y1)の動きベクトル(vx1,vy1)との組み合わせは、現ブロックの候補制御点動きベクトルである。
【0195】
A1が位置する符号化ブロックが6パラメータアフィン符号化ブロックである場合、アフィン符号化ブロックの左上頂点(x4,y4)の動きベクトル(vx4,vy4)、右上頂点(x5,y5)の動きベクトル(vx5,vy5)及び左下頂点(x6,y6)の動きベクトル(vx6,vy6)が取得される。現ブロックの左上頂点(x0,y0)の動きベクトル(vx0,vy0)は式(8)に従って計算され、現ブロックの右上頂点(x1,y1)の動きベクトル(vx1,vy1)は式(9)に従って計算され、現ブロックの左下頂点(x2,y2)の動きベクトル(vx2,vy2)は式(10)に従って計算される。
【数8】
【数9】
【数10】
【0196】
A1が位置するアフィン符号化ブロックに基づいて取得される現ブロックの左上頂点(x0,y0)の動きベクトル(vx0,vy0)と右上頂点(x1,y1)の動きベクトル(vx1,vy1)と左下頂点(x2,y2)の動きベクトル(vx2,vy2)との組み合わせは、現ブロックの候補制御点動きベクトルである。
【0197】
他の動きモデル、候補位置並びに探索及びトラバーサル順序もまた、この出願において使用されてもよい点に留意すべきである。詳細はこの出願の実施形態では説明しない。
【0198】
他の制御点に基づいて隣接及び現符号化ブロックの動きモデルを表すための方法もまた、この出願において使用されてもよい点に留意すべきである。詳細はここでは説明しない。
【0199】
4.構築制御点動きベクトル(constructed control point motion vectors)予測方法1
【0200】
構築制御点動きベクトル予測方法は、隣接するエンコードされたブロックがアフィン符号化ブロックであるか否かを考慮することなく、現ブロックの制御点の周辺の隣接するエンコードされたブロックの動きベクトルを現アフィン符号化ブロックの制御点動きベクトルとして組み合わせることである。
【0201】
現ブロックの左上頂点及び右上頂点の動きベクトルは、現符号化ブロックの周辺の隣接するエンコードされたブロックの動き情報に基づいて決定される。図6Cは、構築制御点動きベクトル予測方法を説明するための例として使用される。図6Cは、単なる例として使用される点に留意すべきである。
【0202】
図6Cに示すように、左上角の隣接するエンコードされたブロックA2、B2及びB3の動きベクトルは、現ブロックの左上頂点の動きベクトルについての候補動きベクトルとして使用され、右上角の隣接するエンコードされたブロックB1及びB0の動きベクトルは、現ブロックの右上頂点の動きベクトルについての候補動きベクトルとして使用される。左上頂点及び右上頂点の候補動きベクトルは、複数の2タプルを構成するように組み合わされる。2タプルに含まれる2つのエンコードされたブロックの動きベクトルは、以下の式(11A)に示すように、現ブロックの候補制御点動きベクトルとして使用されてもよい。
{vA2,vB1},{vA2,vB0},{vB2,vB1},{vB2,vB0},{vB3,vB1},{vB3,vB0} (11A)
ここで、vA2はA2の動きベクトルを表し、vB1はB1の動きベクトルを表し、vB0はB0の動きベクトルを表し、vB2はB2の動きベクトルを表し、vB3はB3の動きベクトルを表す。
【0203】
図6Cに示すように、左上角の隣接するエンコードされたブロックA2、B2及びB3の動きベクトルは、現ブロックの左上頂点の動きベクトルについての候補動きベクトルとして使用され、右上角の隣接するエンコードされたブロックB1及びB0の動きベクトルは、現ブロックの右上頂点の動きベクトルについての候補動きベクトルとして使用され、左下角の隣接するエンコードされたブロックA0及びA1の動きベクトルは、現ブロックの左下頂点の動きベクトルについての候補動きベクトルとして使用される。左上頂点、右上頂点及び左下頂点の候補動きベクトルは、3タプルを構成するように組み合わされる。3タプルに含まれる3つのエンコードされたブロックの動きベクトルは、以下の式(11B)及び(11C)に示すように、現ブロックの候補制御点動きベクトルとして使用されてもよい。
{vA2,vB1,vA0},{vA2,vB0,vA0},{vB2,vB1,vA0},{vB2,vB0,vA0},{vB3,vB1,vA0},{vB3,vB0,vA0} (11B)
{vA2,vB1,vA1},{vA2,vB0,vA1},{vB2,vB1,vA1},{vB2,vB0,vA1},{vB3,vB1,vA1},{vB3,vB0,vA1} (11C)
ここで、vA2はA2の動きベクトルを表し、vB1はB1の動きベクトルを表し、vB0はB0の動きベクトルを表し、vB2はB2の動きベクトルを表し、vB3はB3の動きベクトルを表し、vA0はA0の動きベクトルを表し、vA1はA1の動きベクトルを表す。
【0204】
制御点動きベクトルを組み合わせるための他の方法もまた、この出願において使用されてもよい点に留意すべきである。詳細はここでは説明しない。
【0205】
他の制御点に基づいて隣接及び現符号化ブロックの動きモデルを表すための方法もまた、この出願において使用されてもよい点に留意すべきである。詳細はここでは説明しない。
【0206】
5.図6Dに示す構築制御点動きベクトル(constructed control point motion vectors)予測方法2
【0207】
ステップ601:現ブロックの制御点の動き情報を取得する。
【0208】
例えば、図6Cにおいて、CPk(k=1,2,3,4)は、第kの制御点を表す。A0、A1、A2、B0、B1、B2及びB3は、現ブロックの空間的に隣接する位置であり、CP1、CP2又はCP3を予測するために使用される。Tは現ブロックの時間的に隣接する位置であり、CP4を予測するために使用される。
【0209】
CP1、CP2、CP3及びCP4の座標は、それぞれ(0,0)、(W,0)、(H,0)及び(W,H)であり、W及びHは現ブロックの幅及び高さを表すと仮定する。
【0210】
各制御点について、制御点の動き情報は以下の順序で取得される。
【0211】
(1)CP1について、検査順序はB2->A2->B3である。B2が利用可能である場合、B2の動き情報がCP1に使用される。そうでない場合、A2及びB3が検査される。全ての3つの位置の動き情報が利用不可能である場合、CP1の動き情報は取得できない。
【0212】
(2)CP2について、検査順序はB0->B1である。B0が利用可能である場合、B0の動き情報がCP2に使用される。そうでない場合、B1が検査される。双方の位置の動き情報が利用不可能である場合、CP2の動き情報は取得できない。
【0213】
(3)CP3について、検査順序はA0->A1である。
【0214】
(4)CP4について、Tの動き情報が使用される。
【0215】
ここで、Xが利用可能であることは、X(XはA0、A1、A2、B0、B1、B2、B3又はTである)におけるブロックが既にエンコードされており、インター予測モードが当該ブロックに使用されることを意味する。そうでない場合、Xは利用不可能である。
【0216】
制御点動き情報を取得するための他の方法もまた、この出願において使用されてもよい点に留意すべきである。詳細はここでは説明しない。
【0217】
ステップ602:構築制御点動き情報を取得するために、制御点の動き情報を組み合わせる。
【0218】
2つの制御点の動き情報は、2タプルを構成するように組み合わされ、4パラメータアフィン動きモデルを構築する。2つの制御点の組み合わせは、{CP1,CP4}、{CP2,CP3}、{CP1,CP2}、{CP2,CP4}、{CP1,CP3}及び{CP3,CP4}でもよい。例えば、制御点CP1及びCP2を含む2タプルを使用することにより構築された4パラメータアフィン動きモデルは、Affine(CP1,CP2)として記されてもよい。
【0219】
3つの制御点の動き情報は、3タプルを構成するように組み合わされ、6パラメータアフィン動きモデルを構築する。3つの制御点の組み合わせは、{CP1,CP2,CP4}、{CP1,CP2,CP3}、{CP2,CP3,CP4}及び{CP1,CP3,CP4}でもよい。例えば、制御点CP1、CP2及びCP3を含む3タプルを使用することにより構築された6パラメータアフィン動きモデルは、Affine(CP1,CP2,CP3)として記されてもよい。
【0220】
4つの制御点の動き情報は、4タプルを構成するように組み合わされ、8パラメータバイリニア動きモデルを構築する。制御点CP1、CP2、CP3及びCP4を含む4タプルを使用することにより構築された8パラメータバイリニアモデルは、Bilinear(CP1,CP2,CP3,CP4)として記されてもよい。
【0221】
この出願の実施形態では、説明を容易にするために、2つの制御点(又は2つのエンコードされたブロック)の動き情報の組み合わせが単に2タプルと呼ばれ、3つの制御点(又は3つのエンコードされたブロック)の動き情報の組み合わせが単に3タプルと呼ばれ、4つの制御点(又は4つのエンコードされたブロック)の動き情報の組み合わせが単に4タプルと呼ばれる。
【0222】
これらのモデルは、予め設定された順序でトラバースされる。組み合わせモデルに対応する制御点の動き情報が利用不可能である場合、当該モデルが利用不可能であると考えられる。そうでない場合、モデルの参照フレームインデックスが決定され、制御点の動きベクトルがスケーリングされる。スケーリング後の全ての制御点の動き情報が一致している場合、モデルは無効である。モデルを制御する制御点の全ての動き情報が利用可能であり、モデルが有効である場合、当該モデルを構成するために使用される制御点の動き情報が、動き情報候補リストに追加される。
【0223】
制御点動きベクトルスケーリング方法が式(12)に示される。
【数11】
ここで、CurPocは現フレームのPOC番号を表し、DesPocは現ブロックの参照フレームのPOC番号を表し、SrcPocは制御点の参照フレームのPOC番号を表し、MVsはスケーリング後に取得された動きベクトルを表し、MVは制御点の動きベクトルを表す。
【0224】
制御点の異なる組み合わせが、同じ位置における制御点に変換されてもよい点に留意すべきである。
【0225】
例えば、{CP1,CP4}、{CP2,CP3}、{CP2,CP4}、{CP1,CP3}又は{CP3,CP4}の組み合わせに基づいて取得された4パラメータアフィン動きモデルは、変換後に{CP1,CP2}又は{CP1,CP2,CP3}により表される。変換方法は、モデルパラメータを取得するために、動きベクトル及び制御点の座標情報を式(2)に代入し、次いで、{CP1,CP2}の動きベクトルを取得するために、{CP1,CP2}の座標情報を式(3)に代入することを含む。
【0226】
より直接的には、変換は式(13)~(21)に従って実行されてもよく、Wは現ブロックの幅を表し、Hは現ブロックの高さを表す。式(13)~(21)において、(vx0,vy0)はCP1の動きベクトルを表し、(vx1,vy1)はCP2の動きベクトルを表し、(vx2,vy2)はCP3の動きベクトルを表し、(vx3,vy3)はCP4の動きベクトルを表す。
【0227】
{CP1,CP2}は、式(13)に従って{CP1,CP2,CP3}に変換されてもよい。言い換えると、{CP1,CP2,CP3}におけるCP3の動きベクトルは、式(13)に従って決定されてもよい。
【数12】
【0228】
{CP1,CP3}は、式(14)に従って{CP1,CP2}又は{CP1,CP2,CP3}に変換されてもよい。
【数13】
【0229】
{CP2,CP3}は、式(15)に従って{CP1,CP2}又は{CP1,CP2,CP3}に変換されてもよい。
【数14】
【0230】
{CP1,CP4}は、式(16)又は(17)に従って{CP1,CP2}又は{CP1,CP2,CP3}に変換されてもよい。
【数15】
【数16】
【0231】
{CP2,CP4}は、式(18)に従って{CP1,CP2}に変換されてもよく、{CP2,CP4}は式(18)及び(19)に従って{CP1,CP2,CP3}に変換されてもよい。
【数17】
【数18】
【0232】
{CP3,CP4}は、式(20)に従って{CP1,CP2}に変換されてもよく、{CP3,CP4}は式(20)及び(21)に従って{CP1,CP2,CP3}に変換されてもよい。
【数19】
【数20】
【0233】
例えば、組み合わせ{CP1,CP2,CP4}、{CP2,CP3,CP4}又は{CP1,CP3,CP4}に基づいて取得された6パラメータアフィン動きモデルは、{CP1,CP2,CP3}を使用することにより変換されて表される。変換方法は、モデルパラメータを取得するために、動きベクトル及び制御点の座標情報を式(4)に代入し、次いで、{CP1,CP2,CP3}の動きベクトルを取得するために、{CP1,CP2,CP3}の座標情報を式(5)に代入することを含む。
【0234】
より直接的には、変換は式(22)~(24)に従って実行されてもよく、Wは現ブロックの幅を表し、Hは現ブロックの高さを表す。式(13)~(21)において、(vx0,vy0)はCP1の動きベクトルを表し、(vx1,vy1)はCP2の動きベクトルを表し、(vx2,vy2)はCP3の動きベクトルを表し、(vx3,vy3)はCP4の動きベクトルを表す。
【0235】
{CP1,CP2,CP4}は、式(22)に従って{CP1,CP2,CP3}に変換されてもよい。
【数21】
【0236】
{CP2,CP3,CP4}は、式(23)に従って{CP1,CP2,CP3}に変換されてもよい。
【数22】
【0237】
{CP1,CP3,CP4}は、式(24)に従って{CP1,CP2,CP3}に変換されてもよい。
【数23】
【0238】
6.高度時間動きベクトル予測(advanced temporal motion vector prediction, ATMVP)
【0239】
HEVCにおけるインター予測では、処理対象ブロックのサンプルの予測子を取得するために、同じ動き情報に基づいて現ブロックの全てのサンプルに対して動き補償が実行される。しかし、処理対象ブロックの全てのサンプルが同じ動き特徴を有するとは限らない。処理対象ブロックの全てのサンプルを予測するために同じ動き情報を使用することは、動き補償精度を低減させ、残差情報を増加させる可能性がある。
【0240】
上記の問題を解決するために、高度時間動きベクトル予測(advanced temporal motion vector prediction, ATMVP)技術が既存の解決策において提供されている。
【0241】
ATMVP技術を使用することにより予測を実行するプロセスは、主に、図6Eに示すように、以下のステップを含む。
【0242】
(1)処理対象ブロックのオフセットベクトルを決定する。
【0243】
(2)対応するターゲットピクチャにおいて、処理対象ブロックの処理対象サブブロックの位置及びオフセットベクトルに基づいて、処理対象サブブロックに対応するサブブロックを決定し、ターゲットピクチャはエンコードされたピクチャのうち1つである。
【0244】
(3)対応するサブブロックの動きベクトルに基づいて、処理対象サブブロックの動きベクトルを決定する。
【0245】
例えば、現在の処理対象サブブロックの動きベクトルは、スケーリング方法を使用することにより決定されてもよい。例えば、スケーリング方法は、式(25)に従って実現される。
【数24】
ここで、CPocは処理対象ブロックが位置するフレームのPOC番号を表し、DPocは対応するサブブロックが位置するフレームのPOC番号を表し、SrcPocは対応するサブブロックの参照フレームのPOC番号を表し、MVcはスケーリングを通じて取得された動きベクトルを表し、MVgは対応するサブブロックの動きベクトルを表す。
【0246】
(4)処理対象サブブロックの動きベクトルに基づいて処理対象サブブロックに対して動き補償予測を実行し、処理対象サブブロックの予測サンプル値を取得する。
【0247】
7.プラナー動きベクトル予測(PLANAR)
【0248】
planar動きベクトル予測では、処理対象ブロックの各処理対象サブブロックの上側空間隣接位置、左側空間隣接位置、右側位置及び下側位置の動き情報が取得され、動き情報の平均が計算され、現在の処理対象サブブロックの動き情報に変換される。
【0249】
座標が(x,y)である処理対象サブブロックについて、処理対象サブブロックの動きベクトルP(x,y)は、式(26)に従って、水平補間動きベクトルPh(x,y)及び水平補間動きベクトルPv(x,y)に基づいて計算される。
P(x,y)=(H×Ph(x,y)+W×Pv(x,y)+H×W)/(2×H×W) (26)
ここで、Hは処理対象ブロックの高さを表し、Wは処理対象ブロックの幅を表す。
【0250】
水平補間動きベクトルPh(x,y)及び水平補間動きベクトルPv(x,y)は、式(27)及び(28)に従って、現在の処理対象サブブロックの左側、右側、上側及び下側のサブブロックの動きベクトルに基づいて計算されてもよい。
Ph(x,y)=(W-1-x)×L(-1,y)+(x+1)×R(w,y) (27)
Pv(x,y)=(H-1-y)×A(x,-1)+(y+1)×B(x,H) (28)
ここで、L(-1,y)は処理対象サブブロックの左側のサブブロックの動きベクトルを表し、R(w,y)は処理対象サブブロックの右側のサブブロックの動きベクトルを表し、A(x,-1)は処理対象サブブロックの上側のサブブロックの動きベクトルを表し、B(x,H)は処理対象サブブロックの下側のサブブロックの動きベクトルを表す。
【0251】
左側ブロックの動きベクトルL及び上側ブロックの動きベクトルAは、現符号化ブロックの空間的に隣接するブロックに基づいて取得される。予め設定された位置(-1,y)及び(x,-1)における符号化ブロックの動きベクトルL(-1,y)及びA(x,-1)は、処理対象サブブロックの座標(x,y)に基づいて取得される。
【0252】
図7に示すように、右側ブロックの動きベクトルR(w,y)及び下側ブロックの動きベクトルB(x,h)は、以下の方法を使用することにより抽出されてもよい。
【0253】
(1)処理対象ブロックの右下空間隣接位置における時間動き情報BRを抽出する。
【0254】
(2)式(29)に示すように、右上空間隣接位置における抽出された動きベクトルAR及び右下空間隣接位置における抽出された時間動き情報BRに基づいて重み付け計算を実行することにより、右側ブロックの動きベクトルR(w,y)を取得する。
R(w,y)=((H-y-1)*AR+(y+1)*BR)/H (29)
【0255】
(3)式(30)に示すように、左下空間隣接位置における抽出された動きベクトルBL及び右下空間隣接位置における抽出された時間動き情報BRに基づいて重み付け計算を実行することにより、下側ブロックの動きベクトルB(x,H)を取得する。
B(x,H)=((W-x-1)*BL+(x+1)*BR)/H (30)
【0256】
計算において使用される動きベクトルは、動きベクトルが指定の参照フレームキュー内の第1の参照フレームを指すようにスケーリングされた後にスケーリングを通じて取得された動きベクトルである点に留意すべきである。
【0257】
8.アフファイン動きモデルベースの高度動きベクトル予測モード(Affine AMVP mode)
【0258】
(1)候補動きベクトルリストを構築する。
【0259】
アフィン動きモデルベースのAMVPモードに対応する候補動きベクトルリストは、継承制御点動きベクトル予測方法及び/又は構築制御点動きベクトル予測方法を使用することにより構築される。この出願の実施形態では、アフィン動きモデルベースのAMVPモードに対応する候補動きベクトルリストは、制御点動きベクトル予測子候補リスト(control point motion vectors predictor candidate list)と呼ばれてもよい。各制御点の動きベクトル予測子は、2つの制御点の動きベクトル(4パラメータアフィン動きモデルの場合)又は3つの制御点の動きベクトル(6パラメータアフィン動きモデルの場合)を含む。
【0260】
任意選択で、制御点動きベクトル予測子候補リストは、特定のルールに従ってプルーニングされてソートされ、特定の数に切り捨てられてもよく或いはパディングされてもよい。
【0261】
(2)最適な制御点動きベクトル予測子を決定する。
【0262】
エンコーダ側では、現符号化ブロックの各サブブロックの動きベクトルは、式(3)又は(5)に従って制御点動きベクトル予測子候補リスト内の各制御点動きベクトル予測子に基づいて取得される。取得された動きベクトルは、サブブロックの動きベクトルが指す参照フレーム内の対応する位置におけるサンプル値を取得するために使用される。取得されたサンプル値は、アフィン動きモデルを使用して動き補償を実行するための予測子として使用される。現符号化ブロックの各サンプルの元の値と予測値との間の平均差が計算される。最小の平均差に対応する制御点動きベクトル予測子が、最適な制御点動きベクトル予測子として選択され、現符号化ブロックの2つ又は3つの制御点の動きベクトル予測子として使用される。制御点動きベクトル予測子候補リスト内の制御点動きベクトル予測子の位置を表すインデックス番号は、ビットストリームにエンコードされ、デコーダに送信される。
【0263】
デコーダ側では、インデックス番号が解析され、制御点動きベクトル予測子(control point motion vectors predictor, CPMVP)が、インデックス番号に基づいて制御点動きベクトル予測子候補リストから決定される。
【0264】
(3)制御点動きベクトルを決定する。
【0265】
エンコーダ側では、制御点動きベクトル予測子が、制御点動きベクトル(control point motion vectors, CPMV)を取得するために、特定の探索範囲内での動き探索のための探索開始点として使用される。制御点動きベクトルと制御点動きベクトル予測子との間の差(control point motion vectors differences, CPMVD)がデコーダ側に伝達される。
【0266】
デコーダ側では、制御点動きベクトル差が解析され、制御点動きベクトル予測子に加算され、制御点動きベクトルを取得する。
【0267】
9.サブブロックマージモード(sub-block based merging mode)
【0268】
サブブロックベースのマージ候補リスト(sub-block based merging candidate list)は、高度時間動きベクトル予測、継承制御点動きベクトル予測方法、構築制御点動きベクトル予測方法及びplanar予測方法のうち少なくとも1つを使用することにより構築される。
【0269】
任意選択で、サブブロックベースのマージ候補リストは、特定のルールに従ってプルーニングされてソートされ、特定の数に切り捨てられてもよく或いはパディングされてもよい。
【0270】
エンコーダ側では、高度時間動きベクトル予測が使用される場合、各サブブロック(特定の区分方法を使用することにより取得されたサンプル又はN1×N2のサンプルブロック)の動きベクトルは、「7.プラナー動きベクトル予測」における上記の説明に記載の方法を使用することにより取得される。planar予測方法が使用される場合、各サブブロックの動きベクトルは、「8.アフィン動きモデルベースの高度動きベクトル予測モード」における上記の説明に記載の方法を使用することにより取得される。
【0271】
継承制御点動きベクトル予測方法又は構築制御点動きベクトル予測方法が使用される場合、現ブロックの各サブブロック(特定の区分方法を使用することにより取得されたサンプル又はN1×N2のサンプルブロック)の動きベクトルは、式(3)又は(5)に従って取得される。各サブブロックの動きベクトルが取得された後に、サブブロックの動きベクトルが指す参照フレーム内の位置におけるサンプル値が更に取得され、サンプル値が、アフィン動き補償のためのサブブロックの予測子として使用される。現符号化ブロックの各サンプルの元の値と予測子との間の平均差が計算される。最小の平均差に対応する制御点動きベクトルが、現符号化ブロックの2つ又は3つの制御点の動きベクトルとして選択される。候補リスト内の制御点動きベクトルの位置を表すインデックス番号は、ビットストリームにエンコードされ、デコーダに送信される。
【0272】
デコーダ側では、インデックス番号が解析され、制御点動きベクトル(control point motion vectors, CPMV)が、インデックス番号に基づいて制御点動きベクトルマージ候補リストから決定される。
【0273】
さらに、この出願において、「少なくとも1つ」は1つ以上を意味し、「複数」は2つ以上を意味する点に留意すべきである。用語「及び/又は」は、関連する対象物を記述するための関連付け関係を記述し、3つの関係が存在し得ることを表す。例えば、A及び/又はBは、以下の場合、すなわち、Aのみが存在すること、A及びBの双方が存在すること、並びにBのみが存在することを表してもよく、A及びBは単数又は複数でもよい。文字「/」は、一般的に、関連する対象物の間の「又は」の関係を表す。「以下のもののうち少なくとも1つの項目(もの)」又はこの同様の表現は、単数の項目(もの)又は複数の項目(もの)のいずれかの組み合わせを含み、これらの項目のいずれかの組み合わせを意味する。例えば、a、b又はcのうち少なくとも1つの項目(もの)は、a、b、c、a-b、a-c、b-c又はa-b-cを表してもよく、a、b及びcは単数又は複数でもよい。
【0274】
この出願では、インター予測モードが現ブロックをデコードするために使用されるとき、シンタックスエレメントが、インター予測モードをシグナリングするために使用されてもよい。
【0275】
現ブロックを解析するために使用されるインター予測モードのいくつかの現在使用されているシンタックスエレメントについては、表1を参照する。シンタックス構造内のシンタックスエレメントは、代替として他のインジケータにより表されてもよい点に留意すべきである。これは、この出願では具体的に限定されない。
【表1】




【0276】
変数treeTypeは、現ブロックをエンコードするために使用される符号化ツリータイプを指定する。
【0277】
変数slice_typeは、現ブロックが位置するスライスのタイプ、例えば、Pタイプ、Bタイプ又はIタイプを指定するために使用される。
【0278】
シンタックスエレメントcu_skip_flag[x0][y0]は、現ブロックが残差を有するか否かを指定するために使用されてもよい。例えば、cu_skip_flag[x0][y0]=1であるとき、これは、現ブロックが残差を有することを示し、或いは、cu_skip_flag[x0][y0]=0であるとき、これは、現ブロックが残差を有さないことを示す。
【0279】
skipモードは、特別なmergeモードである点に留意すべきである。mergeモードが動きベクトルを見つけるために使用された後に、エンコーダが、或る方法を使用することにより、現ブロックが基本的に参照ブロックと同じであると決定した場合、残差データは送信される必要はなく、動きベクトルのインデックス及びcu_skip_flagのみが送信される必要がある。したがって、cu_skip_flag[x0][y0]=0である場合、これは、現ブロックが残差を有さず、残差データが解析される必要がないことを示す。
【0280】
シンタックスエレメントpred_mode_flag[x0][y0]は、現ブロックについての予測モードがインター予測モードであるかイントラ予測モードであるかを指定するために使用される。
【0281】
変数CuPredMode[x0][y0]はpre_mode_flag[x0][y0]に基づいて決定される。MODE_INTRAは、イントラ予測モードを指定する。
【0282】
シンタックスエレメントmerge_flag[x0][y0]は、マージ(merge)モードが現ブロックに使用されているか否かを指定するために使用されてもよい。例えば、merge_flag[x0][y0]=1であるとき、これは、マージモードが現ブロックに使用されていることを示し、或いは、merge_flag[x0][y0]=0であるとき、これは、マージモードが現ブロックに使用されていないことを示し、x0及びy0はビデオピクチャ内の現ブロックの座標を表す。
【0283】
cbWidthは現ブロックの幅を指定し、cbHeightは現ブロックの高さを指定する。
【0284】
シンタックスエレメントsps_affine_enabled_flagは、アフィン動きモデルがビデオピクチャに含まれるピクチャブロックに対してインター予測するために使用され得るか否かを指定するために使用されてもよい。例えば、sps_affine_enabled_flag=0であるとき、これは、アフィン動きモデルがビデオピクチャに含まれるピクチャブロックをインター予測するために使用できないことを示し、或いは、sps_affine_enabled_flag=1であるとき、これは、アフィン動きモデルがビデオピクチャに含まれるピクチャブロックをインター予測するために使用できることを示す。
【0285】
シンタックスエレメントmerge_subblock_flag[x0][y0]は、サブブロックベースのmergeモードが現ブロックに使用されているか否かを指定するために使用されてもよい。現ブロックが位置するスライスのタイプ(slice_type)は、Pタイプ又はBタイプである。例えば、merge_subblock_flag[x0][y0]=1であるとき、これは、サブブロックベースのmergeモードが現ブロックに使用されていることを示し、merge_subblock_flag[x0][y0]=0であるとき、これは、サブブロックベースのmergeモードが現ブロックに対して使用されていないが、並進動きモデルベースのmergeモードが使用できることを示す。
【0286】
シンタックスエレメントmerge_idx[x0][y0]は、merge候補リストのインデックスを指定するために使用されてもよい。
【0287】
シンタックスエレメントmerge_subblock_idx[x0][y0]は、サブブロックベースのmerge候補リストのインデックスを指定するために使用されてもよい。
【0288】
sps_sbtmvp_enabled_flagは、ATMVPモードがビデオピクチャに含まれるピクチャブロックをインター予測するために使用できるか否かを指定するために使用されてもよい。例えば、sps_sbtmvp_enabled_flag=1であるとき、これは、ATMVPモードがビデオピクチャに含まれるピクチャブロックをインター予測するために使用できることを示し、或いは、sps_sbtmvp_enabled_flag=0であるとき、これは、ATMVPモードがビデオピクチャに含まれるピクチャブロックをインター予測するために使用できないことを示す。
【0289】
シンタックスエレメントinter_affine_flag[x0][y0]は、現ブロックが位置するスライスがPタイプのスライス又はBタイプのスライスであるとき、アフィン動きモデルベースのAMVPモードが現ブロックに使用されているか否かを指定するために使用されてもよい。例えば、inter_affine_flag[x0][y0]=0であるとき、これは、アフィン動きモデルベースのAMVPモードが現ブロックに使用されていることを示し、或いは、inter_affine_flag[x0][y0]=1であるとき、これは、アフィン動きモデルベースのAMVPモードが現ブロックに使用されていないが、並進動きモデルベースのAMVPモードが使用できることを示す。
【0290】
シンタックスエレメントcu_affine_type_flag[x0][y0]は、現ブロックが位置するスライスがPタイプのスライス又はBタイプのスライスであるとき、6パラメータアフィン動きモデルが現ブロックについて動き補償を実行するために使用されているか否かを指定するために使用されてもよい。cu_affine_type_flag[x0][y0]=0であるとき、これは、6パラメータアフィン動きモデルが現ブロックについて動き補償を実行するために使用されていないが、4パラメータアフィン動きモデルのみが動き補償を実行するために使用され得ることを示し、或いは、cu_affine_type_flag[x0][y0]=1であるとき、これは、6パラメータアフィン動きモデルが現ブロックについて動き補償を実行するために使用されていることを示す。
【0291】
表2に示すように、MotionModelIdc[x0][y0]=1であるとき、これは、4パラメータアフィン動きモデルが使用されていることを示し、MotionModelIdc[x0][y0]=2であるとき、これは、6パラメータアフィン動きモデルが使用されていることを示し、或いは、MotionModelIdc[x0][y0]=0であるとき、これは、並進動きモデルが使用されていることを示す。
【表2】
【0292】
変数MaxNumMergeCandはmerge候補動きベクトルリストの最大長を指定するために使用され、変数MaxNumSubblockMergeCandはサブブロックベースのmerge候補動きベクトルリストの最大長を指定するために使用され、inter_pred_idc[x0][y0]は予測方向を指定するために使用され、PRED_L0は順方向予測を指定し、num_ref_idx_l0_active_minus1は順方向参照フレームリスト内の参照フレームの数を指定し、ref_idx_l0[x0][y0]は現ブロックの順方向参照フレームについてのインデックス値を指定し、mvd_coding(x0,y0,0,0)は第1の動きベクトル差を指定し、mvp_l0_flag[x0][y0]は順方向MVP候補リストについてのインデックス値を指定し、PRED_L1は逆方向予測を示すために使用され、num_ref_idx_l1_active_minus1は逆方向参照フレームリスト内の参照フレームの数を示し、ref_idx_l1[x0][y0]は現ブロックの逆方向参照フレームについてのインデックス値を指定し、mvp_l1_flag[x0][y0]は逆方向MVP候補リストについてのインデックス値を指定する。
【0293】
表1において、ae(v)は、コンテキストベースの適応バイナリ演算符号化(context-based adaptive binary arithmetic coding, CABAC)を使用することによりエンコードされたシンタックスエレメントを表す。
【0294】
以下に、図8Aに示すように、インター予測プロセスについて詳細に説明する。
【0295】
ステップ801:表1に示すシンタックス構造に基づいてビットストリームを解析し、現ブロックについてのインター予測モードを決定する。
【0296】
現ブロックについてのインター予測モードがアフィン動きモデルベースのAMVPモードであると決定された場合、ステップ802aが実行される。
【0297】
シンタックスエレメントsps_affine_enabled_flag=1、merge_flag=0及びinter_affine_flag=1は、現ブロックについてのインター予測モードがアフィン動きモデルベースのAMVPモードであることを示す。
【0298】
現ブロックについてのインター予測モードがサブブロックマージ(merge)モードであると決定された場合、ステップ802bが実行される。
【0299】
シンタックスエレメントsps_affine_enabled_flag=1又はシンタックスエレメントsps_sbtmvp_enabled_flag=1、並びにシンタックスエレメントmerge_flag=1及びmerge_subblock_flag=1は、現ブロックについてのイントラ予測モードがサブブロックマージモードであることを示す。
【0300】
ステップ802a:アフィン動きモデルベースのAMVPモードに対応する候補動きベクトルリストを構築する。ステップ803aを実行する。
【0301】
現ブロックの候補制御点動きベクトルは、継承制御点動きベクトル予測方法及び/又は構築制御点動きベクトル予測方法を使用することにより導出され、候補動きベクトルリストに追加される。
【0302】
候補動きベクトルリストは、2タプルリスト(4パラメータアフィン動きモデルが現符号化ブロックに使用される)又は3タプルリストを含んでもよい。2タプルリストは、4パラメータアフィン動きモデルを構築するために使用される1つ以上の2タプルを含む。3タプルリストは、6パラメータアフィン動きモデルを構築するために使用される1つ以上の3タプルを含む。
【0303】
任意選択で、候補動きベクトル2タプル/3タプルリストは、特定のルールに従ってプルーニングされてソートされ、特定の数に切り捨てられてもよく或いはパディングされてもよい。
【0304】
A1:継承制御点動きベクトル予測方法を使用することにより候補動きベクトルリストを構築するプロセスについて説明する。
【0305】
図4が例として使用される。現ブロックの周辺の隣接位置におけるブロックは、A1->B1->B0->A0->B2の順序でトラバースされ、現ブロックの隣接位置におけるブロックを含むアフィン符号化ブロックを見つけ、アフィン符号化ブロックの制御点動き情報を取得する。さらに、アフィン符号化ブロックの制御点動き情報が動きモデルを構築するために使用され、現ブロックの候補制御点動き情報を導出する。詳細は、「3.継承制御点動きベクトル予測方法」における上記の説明を参照する。詳細はここでは再び説明しない。
【0306】
例えば、現ブロックに使用されているアフィン動きモデルは、4パラメータアフィン動きモデルである(すなわち、MotionModelIdc=1)。4パラメータアフィン動きモデルが隣接するアフィンデコードブロックに使用される場合、アフィンデコードブロックの2つの制御点の動きベクトル、すなわち、左上制御点(x4,y4)の動きベクトル(vx4,vy4)及び右上制御点(x5,y5)の動きベクトル(vx5,vy5)が取得される。アフィンデコードブロックは、エンコード中にアフィン動きモデルを使用することにより予測が実行されるアフィン符号化ブロックである。
【0307】
2つの制御点、すなわち、現ブロックの左上及び右上制御点の動きベクトルは、隣接するアフィンデコードブロックの2つの制御点を含む4パラメータアフィン動きモデルを使用することにより、4パラメータアフィン動きモデルに対応する式(6)及び(7)に従ってそれぞれ導出される。
【0308】
6パラメータアフィン動きモデルが隣接するアフィンデコードブロックに使用される場合、隣接するアフィンデコードブロックの3つの制御点の動きベクトル、例えば、図4における左上制御点(x4,y4)の動きベクトル(vx4,vy4)、右上制御点(x5,y5)の動きベクトル(vx5,vy5)及び左下頂点(x6,y6)の動きベクトル(vx6,vy6)が取得される。
【0309】
2つの制御点、すなわち、現ブロックの左上及び右上制御点の動きベクトルは、隣接するアフィンデコードブロックの3つの制御点を含む6パラメータアフィン動きモデルを使用することにより、6パラメータアフィン動きモデルに対応する式(8)及び(9)に従ってそれぞれ導出される。
【0310】
例えば、現デコードブロックに使用されているアフィン動きモデルは、6パラメータアフィン動きモデルである(すなわち、MotionModelIdc=2)。隣接するアフィンデコードブロックに使用されるアフィン動きモデルが6パラメータアフィン動きモデルである場合、隣接するアフィンデコードブロックの3つの制御点の動きベクトル、例えば、図4における左上制御点(x4,y4)の動きベクトル(vx4,vy4)、右上制御点(x5,y5)の動きベクトル(vx5,vy5)及び左下頂点(x6,y6)の動きベクトル(vx6,vy6)が取得される。
【0311】
3つの制御点、すなわち、現ブロックの左上、右上及び左下制御点の動きベクトルは、隣接するアフィンデコードブロックの3つの制御点を含む6パラメータアフィン動きモデルを使用することにより、6パラメータアフィン動きモデルに対応する式(8)、(9)及び(10)に従ってそれぞれ導出される。
【0312】
隣接するアフィンデコードブロックに使用されるアフィン動きモデルが4パラメータアフィン動きモデルである場合、隣接するアフィンデコードブロックの2つの制御点の動きベクトル、すなわち、左上制御点(x4,y4)の動きベクトル(vx4,vy4)及び右上制御点(x5,y5)の動きベクトル(vx5,vy5)が取得される。
【0313】
3つの制御点、すなわち、現ブロックの左上、右上及び左下制御点の動きベクトルは、隣接するアフィンデコードブロックの2つの制御点を含む4パラメータアフィン動きモデルを使用することにより、4パラメータアフィン動きモデルに対応する式(6)及び(7)に従ってそれぞれ導出される。
【0314】
他の動きモデル、候補位置及び探索順序もまた、この出願において使用されてもよい点に留意すべきである。詳細はここでは説明しない。他の制御点に基づいて隣接及び現符号化ブロックの動きモデルを表すための方法もまた、この出願において使用されてもよい点に留意すべきである。詳細はここでは説明しない。
【0315】
A2:構築制御点動きベクトル予測方法を使用することにより候補動きベクトルリストを構築するプロセスについて説明する。
【0316】
例えば、現デコードブロックに使用されるアフィン動きモデルは、4パラメータアフィン動きモデルであり(すなわち、MotionModelIdc=1)、現符号化ブロックの左上頂点及び右上頂点の動きベクトルは、現符号化ブロックの隣接するエンコードされたブロックの動き情報に基づいて決定される。具体的には、候補動きベクトルリストは、構築制御点動きベクトル予測方法1又は構築制御点動きベクトル予測方法2を使用することにより構築されてもよい。具体的な方法については、「4.構築制御点動きベクトル予測方法1」及び「5.構築制御点動きベクトル予測方法2」における上記の説明を参照する。詳細はここでは再び説明しない。
【0317】
例えば、現デコードブロックに使用されるアフィン動きモデルは、6パラメータアフィン動きモデルであり(すなわち、MotionModelIdc=2)、現符号化ブロックの左上頂点、右上頂点及び左下頂点の動きベクトルは、現符号化ブロックの隣接するエンコードされたブロックの動き情報に基づいて決定される。具体的には、候補動きベクトルリストは、構築制御点動きベクトル予測方法1又は構築制御点動きベクトル予測方法2を使用することにより構築されてもよい。具体的な方法については、「4.構築制御点動きベクトル予測方法1」及び「5.構築制御点動きベクトル予測方法2」における上記の説明を参照する。詳細はここでは再び説明しない。
【0318】
制御点動き情報の他の組み合わせもまた、この出願において使用されてもよい点に留意すべきである。詳細はここでは説明しない。
【0319】
ステップ803a:ビットストリームを解析し、最適な制御点動きベクトル予測子を決定する。ステップ804aを実行する。
【0320】
B1:現デコードブロックに使用されるアフィン動きモデルが4パラメータアフィン動きモデルである場合(MotionModelIdc=1)、インデックス番号が解析され、2つの制御点についての最適な動きベクトル予測子が、インデックス番号に基づいて候補動きベクトルリストから決定される。
【0321】
例えば、インデックス番号はmvp_l0_flag又はmvp_l1_flagである。
【0322】
B2:現デコードブロックに使用されるアフィン動きモデルが6パラメータアフィン動きモデルである場合(MotionModelIdc=2)、インデックス番号が解析され、3つの制御点についての最適な動きベクトル予測子が、インデックス番号に基づいて候補動きベクトルリストから決定される。
【0323】
ステップ804a:ビットストリームを解析し、制御点動きベクトルを決定する。
【0324】
C1:現デコードブロックに使用されるアフィン動きモデルが4パラメータアフィン動きモデルである場合(MotionModelIdc=1)、現ブロックの2つの制御点の動きベクトル差は、ビットストリームをデコードすることにより取得され、次いで、2つの制御点の動きベクトルは、制御点の動きベクトル差及び動きベクトル予測子に基づいて取得される。順方向予測を例として使用すると、2つの制御点の動きベクトル差は、それぞれmvd_coding(x0,y0,0,0)及びmvd_coding(x0,y0,0,1)である。
【0325】
例えば、左上制御点及び右上制御点の動きベクトル差は、ビットストリームをデコードすることにより取得され、それぞれの動きベクトル予測子に加算され、現ブロックの左上制御点及び右上制御点の動きベクトルを取得する。
【0326】
C2:現デコードブロックに使用されるアフィン動きモデルが6パラメータアフィン動きモデルである場合(MotionModelIdc=2)、現ブロックの3つの制御点の動きベクトル差は、ビットストリームをデコードすることにより取得され、次いで、3つの制御点の動きベクトルは、制御点の動きベクトル差及び動きベクトル予測子に基づいて取得される。順方向予測を例として使用すると、3つの制御点の動きベクトル差は、それぞれmvd_coding(x0,y0,0,0)、mvd_coding(x0,y0,0,1)及びmvd_coding(x0,y0,0,2)である。
【0327】
例えば、左上制御点、右上制御点及び左下制御点の動きベクトル差は、ビットストリームをデコードすることにより取得され、それぞれの動きベクトル予測子に加算され、現ブロックの左上制御点、右上制御点及び左下制御点の動きベクトルを取得する。
【0328】
ステップ805a:制御点動き情報及び現デコードブロックに使用されているアフィン動きモデルに基づいて、現ブロックの各サブブロックの動きベクトルを取得する。
【0329】
現アフィンデコードブロック内の1つのサブブロックは、1つの動き補償単位と等価でもよく、サブブロックの幅及び高さは、現ブロックの幅及び高さよりも小さい。動き補償単位内の予め設定された位置におけるサンプルの動き情報は、動き補償単位の全てのサンプルの動き情報を表すために使用されてもよい。動き補償単位のサイズがM×Nであると仮定すると、予め設定された位置におけるサンプルは、動き補償単位内の中心サンプル(M/2,N/2)、左上サンプル(0,0)、右上サンプル(M-1,0)又は他の位置におけるサンプルでもよい。図8Cに示すように、動き補償単位の中心サンプルが以下の説明のための例として使用される。図8Cにおいて、V0は左上制御点の動きベクトルを表し、V1は右上制御点の動きベクトルを表す。それぞれの小さいボックスは、1つの動き補償単位を表す。
【0330】
現アフィンデコードブロックの左上サンプルに対する動き補償単位の中心サンプルの座標は、式(31)に従って計算される。式(31)において、iは水平方向(左から右へ)の第iの動き補償単位を表し、jは垂直方向(上から下へ)の第jの動き補償単位を表し、(x(i,j),y(i,j))は、現アフィンデコードブロックの左上制御点サンプルに対する第(i,j)の動き補償単位の中心サンプルの座標を表す。
【0331】
現アフィンデコードブロックに使用されるアフィン動きモデルが6パラメータアフィン動きモデルである場合、(x(i,j),y(i,j))は、各動き補償単位の中心サンプルの動きベクトル(vx(i,j),vy(i,j))を取得するために、6パラメータアフィン動きモデルに対応する式(32)に代入され、動きベクトルは、動き補償単位の全てのサンプルの動きベクトルとして使用される。
【0332】
現アフィンデコードブロックに使用されるアフィン動きモデルが4パラメータアフィン動きモデルである場合、(x(i,j),y(i,j))は、各動き補償単位の中心サンプルの動きベクトル(vx(i,j),vy(i,j))を取得するために、4パラメータアフィン動きモデルに対応する式(33)に代入され、動きベクトルは、動き補償単位の全てのサンプルの動きベクトルとして使用される。
【数25】
【数26】
【数27】
【0333】
ステップ806a:サブブロックの決定された動きベクトルに基づいて、各サブブロックについての動き補償を実行し、サブブロックの予測サンプル値を取得する。
【0334】
ステップ802b:サブブロックマージ(merge)モードに対応する動き情報候補リストを構築する。
【0335】
具体的には、サブブロックマージモードに対応する動き情報候補リスト(sub-block based merging candidate list)は、高度時間動きベクトル予測、継承制御点動きベクトル予測方法、構築制御点動きベクトル予測方法又はプラナー方法のうち1つ以上を使用することにより構築されてもよい。この出願のこの実施形態では、サブブロックマージモードに対応する動き情報候補リストは、略称で、サブブロックベースのマージ候補リストと呼ばれてもよい。
【0336】
任意選択で、動き情報候補リストは、特定のルールに従ってプルーニングされてソートされ、特定の数に切り捨てられてもよく或いはパディングされてもよい。
【0337】
D0:sps_sbtmvp_enabled_flag=1である場合、候補動きベクトルはATMVPを使用することにより取得され、サブブロックベースのマージ候補リストに追加される。詳細については、「6.高度時間動きベクトル予測」における上記の説明を参照する。
【0338】
D1:sps_affine_enabled_flag=1である場合、現ブロックの候補制御点動き情報は、継承制御点動きベクトル予測方法を使用することにより導出され、サブブロックベースのマージ候補リストに追加される。詳細については、「3.継承制御点動きベクトル予測方法」における上記の説明を参照する。
【0339】
例えば、図6Cにおいて、現ブロックの周辺の隣接位置におけるブロックは、A1->B1->B0->A0->B2の順序でトラバースされ、現ブロックの隣接位置におけるブロックを含むアフィン符号化ブロックを見つけ、アフィン符号化ブロックの制御点動き情報を取得する。さらに、アフィン符号化ブロックに対応する動きモデルが、現ブロックの候補制御点動き情報を導出するために使用される。
【0340】
サブブロックベースのマージ候補リストが空である場合、候補制御点動き情報がサブブロックベースのマージ候補リストに追加される。そうでない場合、サブブロックベースのマージ候補リスト内の動き情報は、候補制御点動き情報と同じ動き情報がサブブロックベースのマージ候補リストに存在するか否かを検査するために、順次トラバースされる。候補制御点動き情報と同じ動き情報がサブブロックベースのマージ候補リストに存在しない場合、候補制御点動き情報がサブブロックベースのマージ候補リストに追加される。
【0341】
2つの候補動き情報が同じであるか否かを決定することは、2つの候補動き情報の順方向及び逆方向参照フレームと、各順方向動きベクトル及び逆方向動きベクトルの水平及び垂直成分とが同じであるか否かを決定することにより実現されるものである。2つの候補動き情報は、全てのこれらの要素が異なるときにのみ異なると考えられる。
【0342】
サブブロックベースのマージ候補リスト内の動き情報の数が最大リスト長MaxNumSubblockMergeCandに達した場合(MaxNumSubblockMergeCandは1、2、3、4又は5のような正の整数であり、5が以下の説明における例として使用され、詳細はここでは説明しない)、候補リストの構築は完了する。そうでない場合、次の隣接位置におけるブロックがトラバースされる。
【0343】
D2:sps_affine_enabled_flag=1である場合、現ブロックの候補制御点動き情報は、構築制御点動きベクトル予測方法を使用することにより導出され、図8Bに示すように、サブブロックベースのマージ候補リストに追加される。
【0344】
ステップ801c:現ブロックの制御点の動き情報を取得する。例えば、詳細については、「5.構築制御点動きベクトル予測方法2」における上記の説明のステップ601を参照する。詳細はここでは再び説明しない。
【0345】
ステップ802c:構築制御点動き情報を取得するために、制御点の動き情報を組み合わせる。詳細については、図6Dにおけるステップ602を参照する。詳細はここでは再び説明しない。
【0346】
ステップ803c:構築制御点動き情報をサブブロックベースのマージ候補リストに追加する。
【0347】
サブブロックベースのマージ候補リストの長さが最大リスト長MaxNumSubblockMergeCand未満である場合、制御点の動き情報の組み合わせは予め設定された順序でトラバースされ、結果の有効な組み合わせが候補制御点動き情報として使用される。この場合、サブブロックベースのマージ候補リストが空である場合、候補制御点動き情報がサブブロックベースのマージ候補リストに追加される。そうでない場合、候補動きベクトルリスト内の動き情報は、候補制御点動き情報と同じ動き情報がサブブロックベースのマージ候補リストに存在するか否かを検査するために、順次トラバースされる。候補制御点動き情報と同じ動き情報がサブブロックベースのマージ候補リストに存在しない場合、候補制御点動き情報がサブブロックベースのマージ候補リストに追加される。
【0348】
例えば、予め設定された順序は、以下の通り、すなわち、Affine(CP1,CP2,CP3)->Affine(CP1,CP2,CP4)->Affine(CP1,CP3,CP4)->Affine(CP2,CP3,CP4)->Affine(CP1,CP2)->Affine(CP1,CP3)である。合計で6つの組み合わせが存在する。
【0349】
例えば、sps_affine_type_flag=1である場合、予め設定された順序は、以下の通り、すなわち、Affine(CP1,CP2,CP3)->Affine(CP1,CP2,CP4)->Affine(CP1,CP3,CP4)->Affine(CP2,CP3,CP4)->Affine(CP1,CP2)->Affine(CP1,CP3)である。合計で6つの組み合わせが存在する。6つの組み合わせを候補動きベクトルリストに追加する順序は、この出願のこの実施形態では具体的に限定されない。
【0350】
sps_affine_type_flag=0である場合、予め設定された順序は、以下の通り、すなわち、Affine(CP1,CP2)->Affine(CP1,CP3)である。合計で2つの組み合わせが存在する。2つの組み合わせを候補動きベクトルリストに追加する順序は、この出願のこの実施形態では具体的に限定されない。
【0351】
組み合わせに対応する制御点動き情報が利用不可能である場合、組み合わせは利用不可能であるとみなされる。組み合わせが利用可能である場合、組み合わせの参照フレームインデックスが決定される(2つの制御点が存在するとき、最小の参照フレームインデックスが組み合わせの参照フレームインデックスとして選択され、2つよりも多くの制御点が存在するとき、最大の存在周波数を有する参照フレームインデックスが組み合わせの参照フレームインデックスとして選択され、複数の参照フレームインデックスが同じ存在周波数を有する場合、最小の参照フレームインデックスが組み合わせの参照フレームインデックスとして選択される)。制御点動きベクトルは、更にスケーリングされる。スケーリングの後の全ての制御点の動き情報が同じである場合、当該組み合わせは無効である。
【0352】
D3:任意選択で、sps_planar_enabled_flag=1である場合、ATMVPを使用することにより構築された動き情報がサブブロックベースのマージ候補リストに追加される。詳細については、「7.プラナー動きベクトル予測」における上記の説明を参照する。
【0353】
任意選択で、この出願のこの実施形態では、候補動きベクトルリストはパディングされてもよい。例えば、上記のトラバーサルプロセスの後に、候補動きベクトルリストの長さが最大リスト長MaxNumSubblockMergeCand未満である場合、候補動きベクトルリストは、リスト長がMaxNumSubblockMergeCandと等しくなるまでパディングされてもよい。
【0354】
パディングは、ゼロ動きベクトルパディング方法を使用することにより、或いは、既存のリスト内の既存の候補動き情報を組み合わせるか或いは重み付け平均するための方法を使用することにより実行されてもよい。候補動きベクトルリストをパディングするための他の方法もまた、この出願において使用されてもよい点に留意すべきである。詳細はここでは説明しない。
【0355】
ステップ803b:ビットストリームを解析し、最適な制御点動き情報を決定する。
【0356】
インデックス番号merge_subblock_idxが解析され、最適な動き情報が、インデックス番号に基づいてサブブロックベースのマージ候補リストから決定される。
【0357】
merge_subblock_idxは、通常では、TRコード(truncated unary、切り捨て単項コード)を使用することにより二値化される。言い換えると、merge_subblock_idxは、最大インデックス値に基づいて異なるビン列にマッピングされる。最大インデックス値は、予め構成されるか或いは送信される。例えば、最大インデックス値が4である場合、merge_subblock_idxは表3に従って二値化される。
【表3】
【0358】
最大インデックス値が2であるとき、merge_subblock_idxは表4に従って二値化される。
【表4】
【0359】
merge_subblock_idxがビン列を使用することにより送信される場合、デコーダ側は、最大インデックス値及び表2又は表3に基づいてインデックス番号を決定してもよい。例えば、最大インデックス値は4である。インデックス番号を取得するためにデコードが実行されるとき、0が取得された場合、或いは、デコードを通じて取得されたインデックス番号が最大インデックス値に等しい場合、インデックス番号が決定される。例えば、インデックス番号を取得するためにデコードが実行されるとき、第1ビットが0である場合、インデックス番号を取得するために実行されるデコードが終了し、インデックス番号は0であると決定される。他の例では、第1ビットが1であり、第2ビットが0である場合、インデックス番号を取得するために実行されるデコードが終了し、インデックス番号は1であると決定される。
【0360】
最大インデックス値及び二値化テーブルの設定は、この出願のこの実施形態では具体的に限定されない。
【0361】
ステップ804b:最適な動き情報がATMVP又はplanar動き情報である場合、ATMVP又はplanar方法を直接使用することにより、各サブブロックの動きベクトルを取得する。
【0362】
最適な動き情報により示される動きモードがアフィンモードである場合、現ブロックの各サブブロックの動きベクトルは、最適な制御点動き情報及び現デコードブロックに使用されるアフィン動きモデルに基づいて取得される。このプロセスは、ステップ805aと同じである。
【0363】
ステップ805b:サブブロックの決定された動きベクトルに基づいて各サブブロックについての動き補償を実行し、サブブロックの予測サンプル値を取得する。
【0364】
既存の技術では、サブブロックマージモードに対応する候補動きベクトルリストの最大長(MaxNumSubblockMergeCand)を決定する実現可能な方式は存在しない。
【0365】
これを鑑みて、この出願の実施形態は、サブブロックマージモードに対応する候補動きベクトルリストの最大長(MaxNumSubblockMergeCand)を決定する方式を提供するための、ビデオピクチャ予測方法及び装置を提供する。当該方法及び装置は、同じ発明概念に基づく。方法の問題解決の原理は、装置の問題解決の原理と同様であるので、装置及び方法の実現方式の間で相互参照が行われてもよい。繰り返しの説明は提供されない。
【0366】
サブブロックマージモードに対応する候補動きベクトルリストの最大長を決定する方式について、2つの場合において以下に詳細に説明する。
【0367】
第1の場合、サブブロックマージモードは、アフィンモード、高度時間動きベクトル予測モード又はプラナー動きベクトル予測モードのうち少なくとも1つを含んでもよい。
【0368】
第2の場合、プラナー動きベクトル予測モードは、サブブロックマージモードに存在するとは考えられない。言い換えると、サブブロックマージモードは、アフィンモード又は高度時間動きベクトル予測モードのうち少なくとも1つを含んでもよい。
【0369】
以下に、添付の図面を参照して、デコーダ側の観点からこの出願の実現方式について詳細に説明する。具体的には、当該方式は、ビデオデコーダ30により実行されてもよく、或いは、ビデオデコーダ内の動き補償モジュールにより実現されてもよく、或いは、プロセッサにより実行されてもよい。
【0370】
第1の場合について、いくつかの可能な実現方式、すなわち、第1の実現方式~第5の実現方式が、例として提供される。
【0371】
図9は第1の実現方式の説明を示す。
【0372】
ステップ901:ビットストリームから第1のインジケータを解析する。S902又はS904を実行する。
【0373】
第1のインジケータは、処理対象ブロックをインター予測するために使用される候補モードがアフィンモードを含むか否かを示すために使用される。言い換えると、インジケータ1は、アフィンモードが処理対象ブロックに対して動き補償を実行するために使用できる(或いは許容される)か否かを示すために使用される。
【0374】
例えば、第1のインジケータは、ビットストリーム内のSPSに構成されてもよい。これに基づいて、ビットストリームから第1のインジケータを解析することは、以下の方式、すなわち、ビットストリーム内のSPSからインジケータ1を解析することで実現されてもよい。代替として、第1のインジケータは、ビットストリーム内のスライスのスライスヘッダに構成されてもよく、処理対象ブロックはスライスに含まれる。これに基づいて、ビットストリームから第1のインジケータを解析することは、以下の方式、すなわち、ビットストリーム内のスライスのスライスヘッダから第1のインジケータを解析し、処理対象ブロックがスライスに含まれることで実現されてもよい。
【0375】
例えば、第1のインジケータは、シンタックスエレメントsps_affine_enabled_flagにより表されてもよく、sps_affine_enabled_flagは、アフィンモードがビデオピクチャに含まれるピクチャブロックをインター予測するために使用できるか否かを指定するために使用される。例えば、sps_affine_enabled_flag=0であるとき、これは、アフィンモードがビデオピクチャに含まれるピクチャブロックをインター予測するために使用できないことを示す。sps_affine_enabled_flag=1であるとき、これは、アフィン動きモデルがビデオピクチャに含まれるピクチャブロックをインター予測するために使用できることを示す。
【0376】
S902:第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードがアフィンモードを含むことを示すとき、ビットストリームから第2のインジケータを解析し、第2のインジケータは、第1の候補動きベクトルリストの最大長を示す(或いは決定する)ために使用され、第1の候補動きベクトルリストは、サブブロックマージ予測モードを使用することにより処理対象ブロックについて構築される候補動きベクトルリストである。第1の候補動きベクトルリストは、MaxNumSubblockMergeCandと呼ばれてもよい。
【0377】
例えば、第2のインジケータは、SPS、PPS又はスライスヘッダに構成されてもよい。これに基づいて、ビットストリームから第2のインジケータを解析することは、以下の方式、すなわち、ビットストリーム内のシーケンスパラメータセットから第2のインジケータを解析すること、又は処理対象ブロックを含む、ビットストリーム内のスライスのスライスヘッダから第2のインジケータを解析することで実装されてもよい。
【0378】
例えば、第2のインジケータは、K_minus_max_num_subblock_merge_candにより表されてもよい。
【0379】
例えば、K_minus_max_num_subblock_merge_candの値は0~4の範囲になることが許容される。
【0380】
例えば、MaxNumSubblockMergeCandの最大値は5になることが許容される。
【0381】
MaxNumSubblockMergeCandの最大値が5になることが許容されるとき、第2のインジケータはfive_minus_max_num_subblock_merge_candにより表されてもよい。
【0382】
表5は、第2のインジケータを解析するためのシンタックス構造の例を示す。
【表5】
【0383】
S903:第2のインジケータに基づいて第1の候補動きベクトルリストの最大長を決定する。
【0384】
一例では、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードがアフィンモードを含むことを示すとき、第1の候補動きベクトルリストの最大長(MaxNumSubblockMergeCand)は、以下の式、すなわち、MaxNumSubblockMergeCand=K K_minus_max_num_subblock_merge_candに従って取得されてもよく、MaxNumSubblockMergeCandは第1の候補動きベクトルリストの最大長を表し、K_minus_max_num_subblock_merge_candは第2のインジケータを表し、Kは予め設定された負でない整数である。
【0385】
S904:第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことを示し、第3のインジケータが、ATMVPモードがサブブロックマージ予測モードに存在することを示すために使用されるとき、第3のインジケータに基づいて第3の数を決定し、第3の数に基づいて第1の候補動きベクトルリストの最大長を決定する。
【0386】
処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことは、処理対象ブロックをインター予測するために使用される候補モードがアフィンモードを含むことができない(許容されない)ことを意味する。第3のインジケータは、ATMVPモードがサブブロックマージ予測モードに存在するか否かを示すために使用される。言い換えると、第3のインジケータは、ATMVPモードが処理対象ブロックをインター予測するために使用されることが許容されるか否かを示すために使用される。第3のインジケータは、SPS、PPS又はスライスヘッダに構成されてもよい。
【0387】
一例では、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことを示し、第3のインジケータが、ATMVPモードがサブブロックマージ予測モードに存在することを示すために使用されるとき、第1の候補動きベクトルリストの最大長(MaxNumSubblockMergeCand)は第3の数に等しい。
【0388】
例えば、第3のインジケータはsps_sbtmvp_enabled_flagにより表されてもよい。例えば、sps_sbtmvp_enabled_flagが第1の値に等しいとき、これは、ATMVPモードがサブブロックマージ予測モードに存在しないことを示し、sps_sbtmvp_enabled_flagが第2の値に等しいとき、これは、ATMVPモードがサブブロックマージ予測モードに存在することを示す。例えば、第1の値は0に等しく、第2の値は1に等しい。
【0389】
例えば、第3の数は、ATMVPモードを使用することにより実行される予測においてサポートされる動きベクトルの最大数を示すために使用されてもよい。例えば、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことを示すとき、sps_sbtmvp_enabled_flag=0である場合、第3の数は0に等しく、或いは、sps_sbtmvp_enabled_flag=1である場合、第3の数は、ATMVPモードを使用することにより実行される予測においてサポートされる動きベクトルの最大数に等しい。さらに、ATMVPモードを使用することにより実行される予測においてサポートされる動きベクトルの最大数が1であるとき、第3の数はsps_sbtmvp_enabled_flagの値に等しくてもよい。例えば、sps_sbtmvp_enabled_flag=0である場合、第3の数は0に等しく、或いは、sps_sbtmvp_enabled_flag=1である場合、第3の数は1に等しい。
【0390】
MaxNumSubblockMergeCandの最大値が5になることが許容されることが例として使用される。sps_affine_enable_flag=0である場合、MaxNumSubblockMergeCandは以下の式に従って取得される。
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag
【0391】
sps_affine_enable_flag=1である場合、MaxNumSubblockMergeCandは以下の式に従って取得される。
MaxNumSubblockMergeCand=5-five_minus_max_num_subblock_merge_cand
【0392】
例えば、five_minus_max_num_subblock_merge_candは、5からスライス内のサブブロックベースのマージ動きベクトル予測リストの最大長を減算することとして定義されてもよい(five_minus_max_num_subblock_merge_cand pecifies the maximum number of subblock-based merging motion vector prediction (MVP) candidates supported in the slice subtracted from 5)。
【0393】
The maximum number of subblock-based merging MVP candidates, MaxNumSubblockMergeCand, is derived as follows:
-If sps_affine_enabled_flag is equal to 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag;
-Otherwise (sps_affine_enabled_flag is equal to 1):
MaxNumSubblockMergeCand = 5-five_minus_max_num_subblock_merge_cand.
【0394】
A value of MaxNumSubblockMergeCand shall be in a range of 0 to 5, inclusive.
【0395】
図10は第2の実現方式の説明を示す。
【0396】
S1001:S1001の詳細については、S901を参照する。詳細はここでは再び説明しない。S1002又はS1004を実行する。
【0397】
S1002:第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードがアフィンモードを含むことを示すとき、ビットストリームから第2のインジケータ及び第3のインジケータを解析し、第2のインジケータは、第1の候補動きベクトルリストの最大長を示す(或いは決定する)ために使用され、第1の候補動きベクトルリストは、サブブロックマージ予測モードを使用することにより処理対象ブロックについて構築される候補動きベクトルリストである。
【0398】
S1003:第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示すとき、第3のインジケータに基づいて第1の数を決定し、第2のインジケータ及び第1の数に基づいて第1の候補動きベクトルリストの最大長を決定する。
【0399】
第1のインジケータ、第2のインジケータ及び第3のインジケータの説明については、図9に対応する実施形態を参照する。詳細はここでは再び説明しない。
【0400】
第3のインジケータが、ATMVPモードがサブブロックマージ予測モードに存在しないことを示すとき、第1の数は、ATMVPモードを使用することにより実行される予測においてサポートされる動きベクトルの最大数に等しくてもよい。例えば、第3のインジケータはsps_sbtmvp_enabled_flagにより表されてもよい。sps_sbtmvp_enabled_flag=0であるとき、これは、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示す。この場合、第1の数は、ATMVPモードを使用することにより実行される予測においてサポートされる動きベクトルの最大数に等しい。逆に、sps_sbtmvp_enabled_flag=1であるとき、これは、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在することを示す。この場合、第1の数は0に等しい。例えば、ATMVPモードを使用することにより実行される予測においてサポートされる動きベクトルの最大数は1でもよい。この場合、第1の数は第3のインジケータの値に等しくてもよい。詳細については、図9に対応する実施形態における説明を参照する。詳細はここでは再び説明しない。
【0401】
可能な例では、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードがアフィンモードを含むことを示すとき、第1の候補動きベクトルリストの最大長は、以下の式に従って取得されてもよい。
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1
ここで、MaxNumSubblockMergeCandは第1の候補動きベクトルリストの最大長を表し、K_minus_max_num_subblock_merge_candは第2のインジケータを表し、L1は第1の数を表し、Kは予め設定された負でない整数である。
【0402】
例えば、K_minus_max_num_subblock_merge_candの値は0~3の範囲になることが許容されてもよい。
【0403】
例えば、MaxNumSubblockMergeCandの最大値は5になることが許容される。
【0404】
MaxNumSubblockMergeCandの最大値が5になることが許容されるとき、第2のインジケータはfive_minus_max_num_subblock_merge_candにより表されてもよい。
【0405】
一例では、L1は以下の式に従って取得されてもよい。
L1=sps_sbtmvp_enabled_flag==1?0:1
sps_sbtmvp_enabled_flag=1である場合、L1=0である。sps_sbtmvp_enabled_flag=0である場合、L1=1である。
【0406】
S1004:S1004の詳細については、S904を参照する。詳細はここでは再び説明しない。
【0407】
MaxNumSubblockMergeCandの最大値が5になることが許容されることが例として使用される。sps_affine_enable_flag=0である場合、MaxNumSubblockMergeCandは以下の式に従って取得される。
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag
【0408】
sps_affine_enable_flag=1である場合、MaxNumSubblockMergeCandは以下の式に従って取得される。
MaxNumSubblockMergeCand=5-five_minus_max_num_subblock_merge_cand-(sps_sbtmvp_enabled_flag==1?0:1).
【0409】
例えば、five_minus_max_num_subblock_merge_candは、5からスライス内のサブブロックベースのマージ動きベクトル予測リストの最大長を減算することとして定義されてもよい(five_minus_max_num_subblock_merge_cand specifies the maximum number of subblock-based merging motion vector prediction (MVP) candidates supported in the slice subtracted from 5)。The maximum number of subblock-based merging MVP candidates, MaxNumSubblockMergeCand, is derived as follows:
-If sps_affine_enabled_flag is equal to 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag;
-Otherwise (sps_affine_enabled_flag is equal to 1):
MaxNumSubblockMergeCand=5-five_minus_max_num_subblock_merge_cand-(sps_sbtmvp_enabled_flag==1?0:1).
【0410】
A value of MaxNumSubblockMergeCand shall be in a range of 0 to 5, inclusive.
【0411】
図11は第3の実現方式の説明を示す。
【0412】
S1101~S1103:S1101~S1103の詳細については、S901~S903を参照する。詳細はここでは再び説明しない。
【0413】
第3の実現方式では、MaxNumSubblockMergeCandの最大値が5になることが許容されてもよい点に留意すべきである。例えば、第2のインジケータは、K_minus_max_num_subblock_merge_candにより表されてもよく、K_minus_max_num_subblock_merge_candの値は0~4の範囲になることが許容される。MaxNumSubblockMergeCandの最大値が5になることが許容されるとき、第2のインジケータはfive_minus_max_num_subblock_merge_candにより表されてもよい。
【0414】
S1104:第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことを示すとき、ビットストリームから第3のインジケータ及び第4のインジケータを解析する。S1105、S1106又はS1107を実行する。
【0415】
第3のインジケータは、サブブロックマージ予測モードにおけるATMVPモードの存在状態を示すために使用される。第3のインジケータの関連する説明については、図9に対応する実施形態における説明を参照する。詳細はここでは再び説明しない。
【0416】
第4のインジケータは、サブブロックマージ予測モードにおける並進(PLANAR)動きベクトル予測モードの存在状態を示すために使用される。言い換えると、第4のインジケータは、planarモードが、処理対象ブロックをインター予測するために使用されることが許されるか否かを示すために使用される。
【0417】
S1105:第3のインジケータが、ATMVPモードがサブブロックマージ予測モードに存在することを示し、第4のインジケータが、planarモードがサブブロックマージ予測モードに存在しないことを示すとき、第3のインジケータに基づいて第3の数を決定し、第3の数のみに基づいて第1の候補動きベクトルリストの最大長を決定する。
【0418】
例えば、第4のインジケータが第3の値であるとき、これは、planarモードがサブブロックマージ予測モードに存在しないことを示し、或いは、第4のインジケータが第4の値であるとき、これは、planarモードがサブブロックマージ予測モードに存在することを示す。例えば、第3の値は0に等しく、第4の値は1に等しい。例えば、第4のインジケータは、SPS、PPS又はスライスヘッダに構成されてもよい。第4のインジケータはsps_planar_enabled_flagにより表されてもよい。
【0419】
S1106:第3のインジケータが、ATMVPモードがサブブロックマージ予測モードに存在しないことを示し、第4のインジケータが、planarモードがサブブロックマージ予測モードに存在することを示すとき、第4のインジケータに基づいて第4の数を決定し、第4の数に基づいて第1の候補動きベクトルリストの最大長を決定する。
【0420】
例えば、第4のインジケータが、planarモードがサブブロックマージ予測モードに存在することを示すとき、第4の数は、planarモードを使用することにより実行される予測においてサポートされる動きベクトルの最大数に等しい。
【0421】
例えば、S1106において、第1の候補動きベクトルリストの最大長は第4の数に等しい。例えば、planarモードを使用することにより実行される予測においてサポートされる動きベクトルの最大数が1である場合、第1の候補動きベクトルリストの最大長は1である。他の例では、第4のインジケータが1であるとき、これは、planarモードがサブブロックマージ予測モードに存在することを示す。この場合、第1の候補動きベクトルリストの最大長は第4のインジケータに等しい。
【0422】
S1107:第3のインジケータが、ATMVPモードがサブブロックマージ予測モードに存在することを示し、第4のインジケータが、planarモードがサブブロックマージ予測モードに存在することを示すとき、第3のインジケータに基づいて第3の数を決定し、第4のインジケータに基づいて第4の数を決定し、第3の数及び第4の数に基づいて第1の候補動きベクトルリストの最大長を決定する。
【0423】
一例では、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことを示し、planarモードを使用することにより実行される予測においてサポートされる動きベクトルの最大数が1であり、ATMVPモードで使用することにより実行される予測においてサポートされる動きベクトルの最大数が1であるとき、第3のインジケータが1である場合、これは、ATMVPモードがサブブロックマージ予測モードに存在することを示し、或いは、第3のインジケータが0である場合、これは、ATMVPモードがサブブロックマージ予測モードに存在しないことを示し、第4のインジケータが1である場合、これは、PLANARモードがサブブロックマージ予測モードに存在することを示し、或いは、第4のインジケータが0である場合、これは、planarモードがサブブロックマージ予測モードに存在することを示す。この場合、第1の候補動きベクトルリストの最大長は、第3のインジケータと第4のインジケータとの和に等しくてもよい。
【0424】
第3のインジケータはsps_sbtmvp_enabled_flagにより表され、第4のインジケータはsps_planar_enabled_flagにより表される。第1の候補動きベクトルリストの最大長は以下の式に従って取得されてもよい。
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag
【0425】
sps_sbtmvp_enabled_flag=1であり(ATMVPモードがサブブロックマージ予測モードに存在することを示す)、sps_planar_enabled_flag=0である(planarモードがサブブロックマージ予測モードに存在しないことを示す)とき、MaxNumSubbblockMergeCand=sps_sbtmvp_enabled_flag=1であり、これはS1105に対応する。sps_sbtmvp_enabled_flag=0であり(ATMVPモードがサブブロックマージ予測モードに存在しないことを示す)、sps_planar_enabled_flag=1である(planarモードがサブブロックマージ予測モードに存在することを示す)とき、MaxNumSubbblockMergeCand=sps_planar_enabled_flag=1であり、これはS1106に対応する。sps_sbtmvp_enabled_flag=1であり、sps_planar_enabled_flag=1であるとき、MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag=2であり、これはS1107に対応する。
【0426】
明らかに、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードが並進動きベクトル予測モードのみを含むことを示すとき、第3のインジケータは、ATMVPモードがサブブロックマージ予測モードに存在しないことを示し、第4のインジケータは、planarモードがサブブロックマージ予測モードに存在しないことを示し、MaxNumSubblockMergeCand=0である。
【0427】
MaxNumSubblockMergeCandの最大値が5になることが許容されることが例として使用される。
【0428】
sps_affine_enable_flag=0である場合、MaxNumSubblockMergeCandは以下の式に従って取得される。
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag
【0429】
sps_affine_enable_flag=1である場合、MaxNumSubblockMergeCandは以下の式に従って取得される。
MaxNumSubblockMergeCand=5-five_minus_max_num_subblock_merge_cand
【0430】
例えば、five_minus_max_num_subblock_merge_candは、5からスライス内のサブブロックベースのマージ動きベクトル予測リストの最大長を減算することとして定義されてもよい(five_minus_max_num_subblock_merge_cand specifies the maximum number of subblock-based merging motion vector prediction (MVP) candidates supported in the slice subtracted from 5)。
【0431】
The maximum number of subblock-based merging MVP candidates, MaxNumSubblockMergeCand, is derived as follows:
-If sps_affine_enabled_flag is equal to 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;
-Otherwise (sps_affine_enabled_flag is equal to 1):
MaxNumSubblockMergeCand=5-five_minus_max_num_subblock_merge_cand.
【0432】
A value of MaxNumSubblockMergeCand shall be in a range of 0 to 5, inclusive.
【0433】
図12A及び図12Bは第4の実現方式の説明を示す。
【0434】
S1201:S1201の詳細については、S901を参照する。詳細はここでは再び説明しない。S1202又はS1206を実行する。
【0435】
S1202:第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードがアフィンモードを含むことを示す場合、ビットストリームから第2のインジケータ、第3のインジケータ及び第4のインジケータを解析し、第2のインジケータは、第1の候補動きベクトルリストの最大長を示す(或いは決定する)ために使用され、第1の候補動きベクトルリストは、サブブロックマージ予測モードを使用することにより処理対象ブロックについて構築される候補動きベクトルリストである。S1203、S1204又はS1205を実行する。
【0436】
S1203:第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在することを示し、第4のインジケータが、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示すとき、第4のインジケータに基づいて第2の数を決定し、第2のインジケータ及び第2の数に基づいて第1の候補動きベクトルリストの最大長を決定する。
【0437】
S1204:第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示し、第4のインジケータが、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在することを示すとき、第3のインジケータに基づいて第1の数を決定し、第2のインジケータ及び第1の数に基づいて第1の候補動きベクトルリストの最大長を決定する。
【0438】
S1205:第3のインジケータが、高度時間動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示し、第4のインジケータが、プラナー動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示すとき、第3のインジケータに基づいて第1の数を決定し、第4のインジケータに基づいて第2の数を決定し、第2のインジケータ、第1の数及び第2の数に基づいて第1の候補動きベクトルリストの最大長を決定する。
【0439】
第4のインジケータが、プラナーモードがサブブロックマージ予測モードに存在しないことを示すとき、第2の数は、プラナーモードを使用することにより実行される予測においてサポートされる動きベクトルの最大数に等しくてもよい。例えば、第4のインジケータはsps_planar_enabled_flagにより表されてもよい。sps_planar_enabled_flag=0であるとき、これは、planar動きベクトル予測モードがサブブロックマージ予測モードに存在しないことを示す。この場合、第2の数は、ATMVPモードを使用することにより実行される予測においてサポートされる動きベクトルの最大数に等しい。逆に、sps_planar_enabled_flag=1であるとき、これは、planar動きベクトル予測モードがサブブロックマージ予測モードに存在することを示す。この場合、第2の数は0に等しい。例えば、planarモードを使用することにより実行される予測においてサポートされる動きベクトルの最大数は1でもよい。この場合、第2の数はsps_planar_enabled_flagの値に等しくてもよい。
【0440】
可能な例では、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードがアフィンモードを含むことを示すとき、第1の候補動きベクトルリストの最大長は、以下の式に従って取得されてもよい。
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1-L2
【0441】
例えば、第4の実現方式では、K_minus_max_num_subblock_merge_candの値は0~2又は0~3の範囲になることが許容されてもよい。
【0442】
例えば、MaxNumSubblockMergeCandの最大値は5又は6になることが許容されてもよい。
【0443】
MaxNumSubblockMergeCandの最大値が5になることが許容されるとき、第2のインジケータはfive_minus_max_num_subblock_merge_candにより表されてもよい。MaxNumSubblockMergeCandの最大値が6になることが許容されるとき、第2のインジケータはsix_minus_max_num_subblock_merge_candにより表されてもよい。
【0444】
一例では、L1は以下の式に従って取得されてもよい。
L1=sps_sbtmvp_enabled_flag==1?0:1
sps_sbtmvp_enabled_flag=1である場合、L1=0である。sps_sbtmvp_enabled_flag=0である場合、L1=1である。
【0445】
一例では、L2は以下の式に従って取得されてもよい。
L2=sps_planar_enabled_flag==1?0:1
sps_planar_enabled_flag=1である場合、L2=0である。sps_sbtmvp_enabled_flag=0である場合、L2=1である。
【0446】
S1206~S1209:S1206~S1209の詳細については、S1104~S1107を参照する。詳細はここでは再び説明しない。
【0447】
例えば、MaxNumSubblockMergeCandの最大値は5になることが許容されてもよい。five_minus_max_num_subblock_merge_candの値は0~2の範囲にある。
【0448】
sps_affine_enable_flag=0である場合、MaxNumSubblockMergeCandは以下の式に従って取得される。
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag
【0449】
そうでない場合(sps_affine_enable_flag=1である場合)、MaxNumSubblockMergeCandは以下の式に従って取得される。
MaxNumSubblockMergeCand=5-five_minus_max_num_subblock_merge_cand-(sps_sbtmvp_enabled_flag==1?0:1)-(sps_planar_enabled_flag==1?0:1)
(five_minus_max_num_subblock_merge_cand specifies the maximum number of subblock-based merging motion vector prediction (MVP) candidates supported in the slice subtracted from 5)
The maximum number of subblock-based merging MVP candidates, MaxNumSubblockMergeCand, is derived as follows:
-If sps_affine_enabled_flag is equal to 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;
-Otherwise (sps_affine_enabled_flag is equal to 1):
MaxNumSubblockMergeCand=5-five_minus_max_num_subblock_merge_cand-(sps_sbtmvp_enabled_flag==1?0:1)-(sps_planar_enabled_flag==1?0:1).
【0450】
A value of MaxNumSubblockMergeCand shall be in a range of 0 to 5, inclusive.
【0451】
例えば、MaxNumSubblockMergeCandの最大値は6になることが許容されてもよい。five_minus_max_num_subblock_merge_candの値は0~3の範囲にある。
【0452】
sps_affine_enable_flag=0である場合、MaxNumSubblockMergeCandは以下の式に従って取得される。
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag
【0453】
そうでない場合(sps_affine_enable_flag=1である場合)、MaxNumSubblockMergeCandは以下の式に従って取得される。
MaxNumSubblockMergeCand=6-six_minus_max_num_subblock_merge_cand-(sps_sbtmvp_enabled_flag==1?0:1)-(sps_planar_enabled_flag==1?0:1)
(six_minus_max_num_subblock_merge_cand specifies the maximum number of subblock-based merging motion vector prediction (MVP) candidates supported in the slice subtracted from 6)
The maximum number of subblock-based merging MVP candidates, MaxNumSubblockMergeCand, is derived as follows:
-If sps_affine_enabled_flag is equal to 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;
-Otherwise (sps_affine_enabled_flag is equal to 1):
MaxNumSubblockMergeCand=6-six_minus_max_num_subblock_merge_cand-(sps_sbtmvp_enabled_flag==1?0:1)-(sps_planar_enabled_flag==1?0:1).
【0454】
A value of MaxNumSubblockMergeCand shall be in a range of 0 to 6, inclusive.
【0455】
第2の場合、プラナー動きベクトル予測モードはサブブロックマージモードに存在すると考えられない。言い換えると、サブブロックマージモードが、アフィンモード及び高度時間動きベクトル予測モードのうち少なくとも1つを含んでもよいとき、第1の実現方式又は第2の実現方式が使用されてもよい。詳細はここでは再び説明しない。
【0456】
方法の実施形態と同じ発明概念に基づいて、この出願の実施形態は装置を更に提供する。図13に示すように、装置1300は、具体的には、ビデオデコーダ内のプロセッサ、チップ、チップシステム又はビデオデコーダ内のモジュール、例えば、エントロピーデコードユニット304及び/又はインター予測ユニット344でもよい。
【0457】
例えば、装置は、解析ユニット1301及び決定ユニット1302を含んでもよい。解析ユニット1301及び決定ユニット1302は、図9図12A及び図12Bに対応する実施形態に記載の方法のステップを実行する。例えば、解析ユニット1301は、ビットストリームに含まれるインジケータ(例えば、第1のインジケータ、第2のインジケータ、第3のインジケータ又は第4のインジケータ)を解析するように構成されてもよく、決定ユニット1302は、第1の候補動きベクトルリストの最大長を決定するように構成される。
【0458】
この出願の実施形態は、デコーダにおいて使用される装置の他の構造を更に提供する。図14に示すように、装置1400は、通信インタフェース1410及びプロセッサ1420を含んでもよい。任意選択で、装置1400は、メモリ1430を更に含んでもよい。メモリ1430は、装置の内部又は外部に配置されてもよい。図13に示す解析ユニット1301及び決定ユニット1302の双方は、プロセッサ1420により実現されてもよい。プロセッサ1420は、通信インタフェース1410を通じてビデオストリーム又はビットストリームを送信又は受信し、図9図12A及び図12Bにおける方法を実現するように構成される。実現プロセスにおいて、処理手順におけるステップは、図9図12A及び図12Bにおける方法を完了するために、プロセッサ1420内のハードウェアの集積論理回路又はソフトウェアの形式の命令を使用することにより実行されてもよい。
【0459】
この出願のこの実施形態における通信インタフェース1410は、回路、バス、トランシーバ、又は情報を交換するように構成できるいずれかの他の装置でもよい。例えば、他の装置は、装置1400に接続されたデバイスでもよい。例えば、装置がビデオエンコーダである場合、他の装置はビデオデコーダでもよい。
【0460】
この出願のこの実施形態では、プロセッサ1420は、汎用プロセッサ、デジタルシグナルプロセッサ、特定用途向け集積回路、フィールドプログラマブルゲートアレイ若しくは他のプログラマブルロジックデバイス、ディスクリートゲート若しくはトランジスタ論理デバイス、又はディスクリートハードウェアコンポーネントでもよく、この出願の実施形態に開示される方法、ステップ及び論理ブロック図を実現又は実行してもよい。汎用プロセッサは、マイクロプロセッサ、いずれかの従来のプロセッサ等でもよい。この出願の実施形態を参照して開示される方法のステップは、ハードウェアプロセッサにより直接実行されてもよく、或いは、プロセッサ内のハードウェアとソフトウェアユニットとの組み合わせを使用することにより実行されてもよい。上記の方法を実現するためにプロセッサ1420により実行されるプログラムコードは、メモリ1430に記憶されてもよい。メモリ1430はプロセッサ1420に結合される。
【0461】
この出願のこの実施形態における結合は、電気的形式、機械的形式又は他の形式での装置、ユニット又はモジュールの間の間接結合又は通信接続でもよく、装置、ユニット又はモジュールの間の情報交換に使用される。
【0462】
プロセッサ1420は、メモリ1430と協調して動作してもよい。メモリ1430は、不揮発性メモリ、例えば、ハードディスクドライブ(hard disk drive, HDD)又はソリッドステートドライブ(solid-state drive, SSD)でもよく、或いは、揮発性メモリ、例えば、ランダムアクセスメモリ(random-access memory, RAM)でもよい。メモリ1430は、命令又はデータ構造の形式で想定されるプログラムコードを搬送又は記憶するように構成でき且つコンピュータによりアクセスできるいずれかの他の媒体であるが、これに限定されない。
【0463】
この出願のこの実施形態では、通信インタフェース1410とプロセッサ1420とメモリ1430との間の具体的な接続媒体は限定されない。この出願のこの実施形態では、メモリ1430、プロセッサ1420及び通信インタフェース1410は、図14におけるバスを通じて接続される。バスは、図14において太線により表される。他のコンポーネントの間の接続モードは、単に概略的に記載されており、これに限定されない。バスは、アドレスバス、データバス、制御バス等に分類されてもよい。表現を容易にするために、図14においてバスを表すために1つの太線のみが使用されるが、これは、1つのバスのみ又は1つのタイプのバスのみが存在することを意味するものではない。
【0464】
図9図12A及び図12Bに関連する上記の実現可能な実現方式及び具体的な実施形態は、この出願における1つ以上のビデオデータデコード装置の説明を提供する。上記の説明に従って、エンコーダ側は、通常では、インター予測モードを決定し、インター予測モードをビットストリームにエンコードすることが理解されるべきである。インター予測モードが最終的に選択された後に、上記のデコード方法と完全に逆のエンコードプロセス(エンコードプロセスは、第1のインジケータ、第2のインジケータ、第3のインジケータ又は第4のインジケータを解析するデコードプロセスに対応する)を使用することにより、インター予測モードのためのインジケータ(例えば、上記の第1のインジケータ、第2のインジケータ、第3のインジケータ又は第4のインジケータ)がビットストリームにエンコードされる。エンコーダ側により第1の候補動きベクトルリストの最大長を決定することは、デコーダ側によるものと完全に一致することが理解されるべきである。エンコーダ側の具体的な実施形態については説明しない。しかし、この出願に記載のビデオピクチャ予測方法はまた、エンコード装置において使用されることが理解されるべきである。
【0465】
この出願の実施形態は、エンコーダにおいて使用される装置を更に提供する。図15に示すように、装置1500は、通信インタフェース1510及びプロセッサ1520を含んでもよい。任意選択で、装置1500は、メモリ1530を更に含んでもよい。メモリ1530は、装置の内部又は外部に配置されてもよい。プロセッサ1520は、通信インタフェース1510を通じてビデオストリーム又はビットストリームを送信又は受信する。
【0466】
一態様では、プロセッサ1520は、第1のインジケータをビットストリームにエンコードし、第1のインジケータが、処理対象ブロックをインター予測するために使用される候補モードがアフィンモードを含むことを示すとき、第2のインジケータをビットストリームにエンコードするように構成され、第2のインジケータは、第1の候補動きベクトルリストの最大長を示すために使用され、第1の候補動きベクトルリストは、サブブロックマージ予測モードを使用することにより処理対象ブロックについて構築される候補動きベクトルリストである。
【0467】
この出願のこの実施形態における通信インタフェース1510は、回路、バス、トランシーバ、又は情報を交換するように構成できるいずれかの他の装置でもよい。例えば、他の装置は、装置1500に接続されたデバイスでもよい。例えば、装置がビデオエンコーダである場合、他の装置はビデオデコーダでもよい。
【0468】
この出願のこの実施形態では、プロセッサ1520は、汎用プロセッサ、デジタルシグナルプロセッサ、特定用途向け集積回路、フィールドプログラマブルゲートアレイ若しくは他のプログラマブルロジックデバイス、ディスクリートゲート若しくはトランジスタ論理デバイス、又はディスクリートハードウェアコンポーネントでもよく、この出願の実施形態に開示される方法、ステップ及び論理ブロック図を実現又は実行してもよい。汎用プロセッサは、マイクロプロセッサ、いずれかの従来のプロセッサ等でもよい。この出願の実施形態を参照して開示される方法のステップは、ハードウェアプロセッサにより直接実行されてもよく、或いは、プロセッサ内のハードウェアとソフトウェアユニットとの組み合わせを使用することにより実行されてもよい。上記の方法を実現するためにプロセッサ1520により実行されるプログラムコードは、メモリ1530に記憶されてもよい。メモリ1530はプロセッサ1520に結合される。
【0469】
この出願のこの実施形態における結合は、電気的形式、機械的形式又は他の形式での装置、ユニット又はモジュールの間の間接結合又は通信接続でもよく、装置、ユニット又はモジュールの間の情報交換に使用される。
【0470】
プロセッサ1520は、メモリ1530と協調して動作してもよい。メモリ1530は、不揮発性メモリ、例えば、ハードディスクドライブ(hard disk drive, HDD)又はソリッドステートドライブ(solid-state drive, SSD)でもよく、或いは、揮発性メモリ、例えば、ランダムアクセスメモリ(random-access memory, RAM)でもよい。メモリ1530は、命令又はデータ構造の形式で想定されるプログラムコードを搬送又は記憶するように構成でき且つコンピュータによりアクセスできるいずれかの他の媒体であるが、これに限定されない。
【0471】
この出願のこの実施形態では、通信インタフェース1510とプロセッサ1520とメモリ1530との間の具体的な接続媒体は限定されない。この出願のこの実施形態では、メモリ1530、プロセッサ1520及び通信インタフェース1510は、図15におけるバスを通じて接続される。バスは、図15において太線により表される。他のコンポーネントの間の接続モードは、単に概略的に記載されており、これに限定されない。バスは、アドレスバス、データバス、制御バス等に分類されてもよい。表現を容易にするために、図15においてバスを表すために1つの太線のみが使用されるが、これは、1つのバスのみ又は1つのタイプのバスのみが存在することを意味するものではない。
【0472】
上記の実施形態に基づいて、この出願の実施形態は、コンピュータ記憶媒体を更に提供する。記憶媒体は、ソフトウェアプログラムを記憶する。ソフトウェアプログラムが1つ以上のプロセッサにより読み取られて実行されたとき、上記の実施形態のうちいずれか1つ以上において提供される方法が実現できる。コンピュータ記憶媒体は、USBフラッシュドライブ、取り外し可能ハードディスク、読み取り専用メモリ、ランダムアクセスメモリ、磁気ディスク又は光ディスクのようなプログラムコードを記憶できるいずれかの媒体を含んでもよい。
【0473】
上記の実施形態に基づいて、この出願の実施形態は、チップを更に提供する。チップは、上記の実施形態のうちいずれか1つ以上における機能、例えば、上記の方法において使用される情報又はメッセージを取得又は処理することを実現するように構成されたプロセッサを含む。任意選択で、チップはメモリを更に含む。メモリは、プロセッサにより必要であり実行されるプログラム命令及びデータを記憶するように構成される。チップは、チップを含んでもよく、或いは、チップ及び他の個別素子を含んでもよい。
【0474】
この出願の具体的な態様について、ビデオエンコーダ20及びビデオデコーダ30を参照して説明したが、この出願の技術は、多くの他のビデオエンコード及び/又はデコードユニット、プロセッサ、処理ユニット及びハードウェアベースのデコードユニット等、例えば、エンコーダ/デコーダ(CODEC)により使用されてもよいことが理解されるべきである。さらに、図8A図12A及び図12Bに記載及び図示のステップは、単に実現可能な実現方式として提供されていることが理解されるべきである。言い換えると、図8A図12A及び図12Bにおける実現可能な実現方式に記載のステップは、必ずしも図8A図12A及び図12Bに示す順序で実行されるとは限らず、より少ない、更なる或いは代替のステップが実行されてもよい。
【0475】
さらに、実現可能な実現方式に依存して、この明細書に記載の方法のいずれかにおける具体的なアクション又はイベントは、異なる順序で実行されてもよく、アクション又はイベントが追加されてもよく、或いは、アクション又はイベントが組み合わされてもよく或いは省略されてもよい(例えば、記載のアクション又はイベントの全てが、方法を実現するために必要であるとは限らない)ことが理解されるべきである。さらに、特定の実現可能な実現方式では、アクション又はイベントは、(例えば)マルチスレッド処理又は割り込み処理を受けてもよく、或いは、複数のプロセッサにより逐次的にではなく同時に処理されてもよい。さらに、この出願の具体的な態様は、明確性の目的で単一のモジュール又はユニットにより実行されるとして記載されているが、この出願の技術は、ビデオデコーダに関連するユニット又はモジュールの組み合わせにより実行されてもよいことが理解されるべきである。
【0476】
1つ以上の実現可能な実現方式では、記載の機能は、ハードウェア、ソフトウェア、ファームウェア又はこれらのいずれかの組み合わせを使用することにより実現されてもよい。機能がソフトウェアを使用することにより実現される場合、機能は、1つ以上の命令又はコードとしてコンピュータ読み取り可能媒体に記憶されてもよく、或いは、コンピュータ読み取り可能媒体を通じて送信されてハードウェアベースの処理ユニットにより実行されてもよい。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能記憶媒体又は通信媒体を含んでもよい。コンピュータ読み取り可能記憶媒体は、データ記憶媒体のような有形の媒体に対応する。通信媒体は、通信プロトコルに従って、1つの位置から他の位置へのコンピュータプログラムの送信を容易にするいずれかの媒体を含む。
【0477】
このように、コンピュータ読み取り可能媒体は、例えば、(1)非一時的な有形のコンピュータ読み取り可能記憶媒体、又は(2)信号又は搬送波のような通信媒体に対応してもよい。データ記憶媒体は、この出願に記載の技術を実現するための命令、コード及び/又はデータ構造を取得するために、1つ以上のコンピュータ又は1つ以上のプロセッサによりアクセスできるいずれかの利用可能な媒体でもよい。コンピュータプログラム製品は、コンピュータ読み取り可能媒体を含んでもよい。
【0478】
限定ではなく実現可能な実現方式として、コンピュータ読み取り可能記憶媒体は、RAM、ROM、EEPROM、CD-ROM若しくは他の光ディスク記憶装置、磁気ディスク記憶装置若しくは他の磁気記憶装置、フラッシュメモリ、又は命令若しくはデータ構造の形式で必要なコードを記憶するために使用でき且つコンピュータによりアクセスできるいずれかの他の媒体を含んでもよい。同様に、いずれかの接続は、コンピュータ読み取り可能媒体と適宜呼ばれてもよい。例えば、命令が、同軸ケーブル、光ファイバ、ツイストペア、デジタル加入者線(DSL)、又は赤外線、無線及びマイクロ波のような無線技術を通じて、ウェブサイト、サーバ又は他の遠隔ソースから送信される場合、同軸ケーブル、光ファイバ、ツイストペア、DSL、又は赤外線、無線及びマイクロ波のような無線技術は、媒体の定義に含まれる。
【0479】
しかし、コンピュータ読み取り可能記憶媒体及びデータ記憶媒体は、接続、搬送波、信号又は他の一時的な媒体を含まなくてもよく、代替として、非一時的な有形の記憶媒体を意味することが理解されるべきである。この明細書に記載の磁気ディスク及び光ディスクは、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスク及びブルーレイディスクを含む。磁気ディスクは、通常ではデータを磁気的に再生し、光ディスクは、レーザーを通してデータを光学的に再生する。上記の磁気ディスクと光ディスクとの組み合わせもまた、コンピュータ読み取り可能媒体の範囲内に含まれるものとする。
【0480】
命令は、1つ以上のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)又は他の等価な集積若しくは個別の論理回路のような1つ以上のプロセッサにより実行されてもよい。したがって、この明細書において使用される用語「プロセッサ」は、上記の構造又はこの明細書に記載の技術を実現するために使用される他の構造のうちいずれか1つでもよい。さらに、いくつかの態様では、この明細書に記載の機能は、エンコード及びデコードのために構成された専用ハードウェア及び/又はソフトウェアモジュール内に提供されてもよく、或いは、組み合わされたコーデックに組み込まれてもよい。同様に、技術は全て1つ以上の回路又は論理素子において実現されてもよい。
【0481】
この出願における技術は、無線携帯電話、集積回路(IC)又はICのセット(例えば、チップセット)を含む様々な装置又はデバイスにおいて実現されてもよい。様々なコンポーネント、モジュール又はユニットは、開示の技術を実行するように構成された装置の機能的態様を強調するためにこの出願において記載されているが、必ずしも異なるハードウェアユニットにより実現されるとは限らない。より正確には、上記のように、様々なユニットは、コーデックハードウェアユニットに組み合わされてもよく、或いは、適切なソフトウェア及び/又はファームウェアセットと組み合わせて相互運用可能なハードウェアユニット(上記の1つ以上のプロセッサを含む)により提供されてもよい。
【0482】
上記の説明は、単にこの出願の具体的な実現方式の例であり、この出願の保護範囲を限定することを意図するものではない。この出願に開示の技術的範囲内で、当業者により容易に理解される如何なる変更又は置換も、この出願の保護範囲に含まれるものとする。したがって、この出願の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
図1A
図1B
図2
図3
図4
図5
図6A
図6B
図6C
図6D
図6E
図7
図8A
図8B
図8C
図9
図10
図11
図12A
図12B
図13
図14
図15