(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023118926
(43)【公開日】2023-08-25
(54)【発明の名称】復号化方法、復号化デバイス、復号化側機器、電子機器及び不揮発性記憶媒体
(51)【国際特許分類】
H04N 19/52 20140101AFI20230818BHJP
【FI】
H04N19/52
【審査請求】有
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2023111410
(22)【出願日】2023-07-06
(62)【分割の表示】P 2021570200の分割
【原出願日】2020-06-17
(31)【優先権主張番号】201910551169.9
(32)【優先日】2019-06-24
(33)【優先権主張国・地域又は機関】CN
(71)【出願人】
【識別番号】519061479
【氏名又は名称】杭州海康威視数字技術股▲ふん▼有限公司
【氏名又は名称原語表記】Hangzhou Hikvision Digital Technology Co.,Ltd.
【住所又は居所原語表記】No.555 Qianmo Road,Binjiang District,Hangzhou,Zhejiang 310051,China
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】陳方棟
(57)【要約】
【課題】復号化方法を提供する。
【解決手段】現在ブロックの動き情報を格納し、第1の目標動き情報と第2の目標動き情報が同じ参照フレームリストからのものである場合、第2の目標動き情報を第3の領域の目標動き情報として格納し、第1の目標動き情報と第2の目標動き情報とが異なる参照フレームリストからのものである場合、第1の目標動き情報と第2の目標動き情報とを双方向動き情報に合併した後、第3の領域の目標動き情報として格納する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
第1の目標動き情報と第2の目標動き情報とを取得し、前記第1の目標動き情報は、現在ブロックが区画された第1のサブブロックの目標動き情報であり、前記第2の目標動き情報は、現在ブロックが区画された第2のサブブロックの目標動き情報であり、前記第1の目標動き情報が前記第2の目標動き情報と異なり、前記第1のサブブロックと前記第2のサブブロックは、現在ブロックが区画線によって区画された二つの三角形サブブロックであることと、
区画線によって区画された前記第1のサブブロックと前記第2のサブブロックに基づいて、現在ブロックに含まれる第1の領域と、第2の領域と、第3の領域とを確定し、前記第1の領域が前記第1のサブブロック内に位置し、前記第2の領域が前記第2のサブブロック内に位置し、前記区画線が前記第3の領域内に位置し、且つ前記第3の領域と前記第1のサブブロックとの間、及び前記第3の領域と前記第2のサブブロックとの間の何れにも重なった領域が存在することと、
現在ブロックの動き情報を格納し、前記第1の目標動き情報と前記第2の目標動き情報が同じ参照フレームリストからのものである場合、前記第2の目標動き情報を前記第3の領域の目標動き情報として格納し、前記第1の目標動き情報と前記第2の目標動き情報とが異なる参照フレームリストからのものである場合、前記第1の目標動き情報と前記第2の目標動き情報とを双方向動き情報に合併した後、前記第3の領域の目標動き情報として格納することと、
を含む、ことを特徴とする復号化方法。
【請求項2】
動き情報を格納する時に、4*4のブロックをユニットとして、動き情報を格納し、
又は、
前記二つの三角形サブブロックは、指示情報によって指示された区画方式に従って前記現在ブロックを区画してなる二つの三角形サブブロックである、
ことを特徴とする請求項1に記載の復号化方法。
【請求項3】
前記第1の領域内のサブブロックは、重み付きなしの予測補償を用いるサブブロックであり、前記第1の目標動き情報を前記第1の領域内のサブブロックの目標動き情報として格納し、前記第2の領域内のサブブロックは、重み付きなしの予測補償を用いるサブブロックであり、前記第2の目標動き情報を前記第2の領域内のサブブロックの目標動き情報として格納する、
ことを特徴とする、請求項1に記載の復号化方法。
【請求項4】
前記区画線によって区画された前記第1のサブブロックと前記第2のサブブロックに基づいて、現在ブロックに含まれる第1の領域と、第2の領域と、第3の領域とを確定した後に、更に、
前記第1の目標動き情報に基づいて、前記第1の領域内の各サブブロックに対して動き補償を行い、前記第1の領域内の各サブブロックの予測値を得ることと、
前記第2の目標動き情報に基づいて、前記第2の領域内の各サブブロックに対して動き補償を行い、前記第2の領域内の各サブブロックの予測値を得ることと、
前記第1の目標動き情報と前記第2の目標動き情報とに基づいて、前記第3の領域内の各サブブロックに対して重み付き補償を行い、前記第3の領域内の各サブブロックの予測値を得ることと、
前記第1の領域内の各サブブロックの予測値と、前記第2の領域内の各サブブロックの予測値と、前記第3の領域内の各サブブロックの予測値とに基づいて、前記現在ブロックの予測値を確定することと、
を含み、
前記第1の目標動き情報と前記第2の目標動き情報とに基づいて、前記第3の領域内の各サブブロックに対して重み付き補償を行い、前記第3の領域内の各サブブロックの予測値を得ることは、
前記第3の領域内の各サブブロックに対して、前記第1の目標動き情報に基づいて当該サブブロックの第1の予測値を確定し、前記第2の目標動き情報に基づいて当該サブブロックの第2の予測値を確定することと、
前記第1の予測値と、前記第1の予測値に対応する第1の重み係数と、前記第2の予測値と、前記第2の予測値に対応する第2の重み係数とに基づいて、当該サブブロックに対して重み付き補償を行い、当該サブブロックの予測値を得ることと、
を含む、ことを特徴とする請求項1に記載の復号化方法。
【請求項5】
前記第1の目標動き情報と第2の目標動き情報とを取得することは、
前記現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成することと、
前記動き情報リストから、前記第1のサブブロックの第1の目標動き情報と、前記第2のサブブロックの第2の目標動き情報とを取得することと、
を含む、
ことを特徴とする請求項1に記載の復号化方法。
【請求項6】
前記第1の目標動き情報と第2の目標動き情報とを取得することは、
前記現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成することと、
指示情報によって指示される第1のインデックス値に基づいて、前記動き情報リストから、当該第1のインデックス値に対応する候補動き情報を選択し、当該候補動き情報を前記第1の目標動き情報とすることと、
指示情報によって指示される第2のインデックス値に基づいて、前記動き情報リストから、当該第2のインデックス値に対応する候補動き情報を選択し、当該候補動き情報を前記第2の目標動き情報とすることと、
を含む、ことを特徴とする請求項1に記載の復号化方法。
【請求項7】
前記現在ブロックの動き情報モードと、現在ブロックのサイズ情報と、現在フレームのフレームタイプと、現在ブロックのシーケンスレベルスイッチ制御情報とが特定の条件を満たす場合、請求項1に記載のステップを実行し、
前記現在ブロックの動き情報モードが特定の条件を満たすことは、前記現在ブロックの動き情報モードがマージモードであり、且つ前記現在ブロックの動き情報モードが通常のマージモード、サブブロックのマージモード、CIIPモードではないことを含み、
前記現在フレームのフレームタイプが特定の条件を満たすことは、前記現在ブロックの所属する現在フレームがBフレームであることを含む、
ことを特徴とする請求項1に記載の復号化方法。
【請求項8】
第1の予測値がP1であり、第2の予測値がP2であり、第1の重み係数がaであり、第2の重み係数がbであるとすると、当該サブブロックの重み付き補償された予測値は、P1*a+P2*bであり、前記第1の重み係数の値の集合が{7/8、6/8、5/8、4/8、3/8、2/8、1/8}であり、前記第1の重み係数と前記第2の重み係数との和が1であり、
前記第3の領域内の各サブブロックが輝度成分を含み、前記輝度成分に用いられる重み付き係数の集合が{7/8、6/8、5/8、4/8、3/8、2/8、1/8}であり、
輝度成分のいずれについても、前記第1の予測値は、第1の目標動き情報に基づいて確定された輝度予測値であり、前記第2の予測値は、第2の目標動き情報に基づいて確定された輝度予測値であり、当該サブブロックの重み付き補償された予測値は前記第1の予測値と、前記第2の予測値と、前記第1の重み係数と、前記第2の重み係数とに基づいて確定された、重み付き補償された輝度予測値である、
ことを特徴とする請求項4に記載の復号化方法。
【請求項9】
前記第3の領域内の各サブブロックが色度成分を含み、
色度成分について、前記第1の予測値は、前記第1の目標動き情報に基づいて確定された色度予測値であり、前記第2の予測値は、前記第2の目標動き情報に基づいて確定された色度予測値であり、当該サブブロックの重み付き補償された予測値は、前記第1の予測値と、前記第2の予測値と、前記第1の重み係数と、前記第2の重み係数とに基づいて確定された、重み付き補償された色度予測値である、
ことを特徴とする請求項8に記載の復号化方法。
【請求項10】
第1の目標動き情報と第2の目標動き情報とを取得するためのモジュールであって、前記第1の目標動き情報は、現在ブロックが区画された第1のサブブロックの目標動き情報であり、前記第2の目標動き情報は、現在ブロックが区画された第2のサブブロックの目標動き情報であり、前記第1の目標動き情報が前記第2の目標動き情報と異なり、前記第1のサブブロックと前記第2のサブブロックは、現在ブロックが区画線によって区画された二つの三角形サブブロックであるモジュールと、
区画線によって区画された前記第1のサブブロックと前記第2のサブブロックに基づいて、現在ブロックに含まれる第1の領域と、第2の領域と、第3の領域とを確定するためのモジュールであって、前記第1の領域が前記第1のサブブロック内に位置し、前記第2の領域が前記第2のサブブロック内に位置し、前記区画線が前記第3の領域内に位置し、且つ前記第3の領域と前記第1のサブブロックとの間、前記第3の領域と前記第2のサブブロックとの間の何れにも重なった領域が存在するモジュールと、
現在ブロックの動き情報を格納するためのモジュールであって、前記第1の目標動き情報と前記第2の目標動き情報が同じ参照フレームリストからのものである場合、第2の目標動き情報を前記第3の領域の目標動き情報として格納し、前記第1の目標動き情報と前記第2の目標動き情報とが異なる参照フレームリストからのものである場合、前記第1の目標動き情報と前記第2の目標動き情報とを双方向動き情報に合併した後、前記第3の領域の目標動き情報として格納するモジュールと、
を含む、ことを特徴とする復号化デバイス。
【請求項11】
動き情報を格納する時に、4*4のブロックをユニットとして、動き情報を格納し、
又は、前記第1の領域内のサブブロックは、重み付きなしの予測補償を用いるサブブロックであり、前記第1の目標動き情報を前記第1の領域内のサブブロックの目標動き情報として格納し、前記第2の領域内のサブブロックは、重み付きなしの予測補償を用いるサブブロックであり、前記第2の目標動き情報を前記第2の領域内のサブブロックの目標動き情報として格納し、
又は、前記復号化デバイスは、更に、
前記第1の目標動き情報に基づいて、前記第1の領域内の各サブブロックに対して動き補償を行い、前記第1の領域内の各サブブロックの予測値を取得し、
前記第2の目標動き情報に基づいて、前記第2の領域内の各サブブロックに対して動き補償を行い、前記第2の領域内の各サブブロックの予測値を取得し、
前記第1の目標動き情報と前記第2の目標動き情報とに基づいて、前記第3の領域内の各サブブロックに対して重み付き補償を行い、前記第3の領域内の各サブブロックの予測値を取得し、
前記第1の領域内の各サブブロックの予測値と、前記第2の領域内の各サブブロックの予測値と、前記第3の領域内の各サブブロックの予測値とに基づいて、前記現在ブロックの予測値を確定する、
ために用いられ、
前記第1の目標動き情報と前記第2の目標動き情報とに基づいて、前記第3の領域内の各サブブロックに対して重み付き補償を行い、前記第3の領域内の各サブブロックの予測値を得ることは、
前記第3の領域内の各サブブロックに対して、前記第1の目標動き情報に基づいて当該サブブロックの第1の予測値を確定し、前記第2の目標動き情報に基づいて当該サブブロックの第2の予測値を確定することと、
前記第1の予測値と、前記第1の予測値に対応する第1の重み係数と、前記第2の予測値と、前記第2の予測値に対応する第2の重み係数とに基づいて、当該サブブロックに対して重み付き補償を行い、当該サブブロックの予測値を得ることと、
を含む、ことを特徴とする請求項10に記載の復号化デバイス。
【請求項12】
プロセッサと、前記プロセッサによって実行可能なコンピュータ実行可能コマンドを記憶しているコンピュータ可読記憶媒体とを含む復号化側機器であって、
前記プロセッサは、コンピュータ実行可能なコマンドを実行して、請求項1~請求項9のいずれか1項に記載の復号化方法を実現するように構成される、
ことを特徴とする復号化側機器。
【請求項13】
プロセッサと、プロセッサによって実行可能なコマンドを記憶するためのメモリと、を含む電子機器であって、
前記プロセッサは、請求項1~請求項9のいずれか1項に記載の復号化方法を実行するように構成される、ことを特徴とする電子機器。
【請求項14】
コマンドを記憶している不揮発性記憶媒体であって、
前記コマンドがプロセッサによって実行されると、請求項1~請求項9のいずれか1項に記載の復号化方法を実現する、ことを特徴とする不揮発性記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、コーデック技術の分野に関し、特にコーデック方法、デバイス及びその機器に関する。
【背景技術】
【0002】
スペースを節約するために、ビデオ画像は、符号化されてから伝送される。完全な映像符号化方法は、予測と、変換と、量子化と、エントロピー符号化と、フィルタリング等のプロセスを含んでよい。その中、予測符号化は、フレーム内符号化とフレーム間符号化とを含む。さらに、フレーム間符号化は、ビデオ時間領域の相関により、近接する符号化済みの画像の画素を使用して現在の画素を予測することで、ビデオ時間領域の冗長性を効率的に除去する目的を達成することである。フレーム内符号化は、ビデオ空間領域の相関により、現在フレーム画像の符号化済みのブロックの画素を使用して現在の画素を予測することで、ビデオ空間領域の冗長性を除去する目的を達成することである。
【0003】
フレーム間符号化では、動きベクトルによって、現在フレーム画像の現在ブロックと参照フレーム画像の参照ブロックとの間の相対的シフトを表す。例えば、現在フレーム画像Aと参照フレーム画像Bは、時間領域の相関が高い。画像Aの現在ブロックA1を伝送する必要があると、画像Bにおいて動き探索を行い、現在ブロックA1に最も適合する参照ブロックB1を探し出し、現在ブロックA1と参照ブロックB1との間の相対的シフトを確定してよい。該相対的シフトは、現在ブロックA1の動きベクトルである。
【0004】
いくつかの実施例では、現在ブロックは矩形であるが、実際の対象物のエッジは矩形ではない場合が多い。対象物のエッジにある一つの現在ブロックに対して、2つの異なるオブジェクトが存在する場合が多い(例えば、前景物体と背景がある)。この場合、単一の予測モードのみによって矩形である現在ブロックに対して予測すると、予測効果の低下や、符号化残差の増大や、符号化性能の低下等の問題がある。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本願は、符号化性能を向上させることができるコーデック方法及びその機器を提供する。
【課題を解決するための手段】
【0006】
本願は、コーデック方法を提供する。前記方法は、
現在ブロックの特徴情報が特定条件を満たす場合、前記現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画することと、
前記現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成することと、
前記動き情報リストから、前記第1の三角形サブブロックの第1の目標動き情報と、前記第2の三角形サブブロックの第2の目標動き情報とを取得し、前記第1の目標動き情報が前記第2の目標動き情報と異なることと、
前記第1の目標動き情報に基づいて、前記第1の三角形サブブロックに対して動き補償を行い、前記第1の三角形サブブロックの予測値を得、前記第2の目標動き情報に基づいて、前記第2の三角形サブブロックに対して動き補償を行い、前記第2の三角形サブブロックの予測値を得ることと、を含む。
【0007】
本願は、コーデックデバイスを提供する。前記デバイスは、
現在ブロックの特徴情報が特定条件を満たす場合、前記現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画するための区画モジュールと、
前記現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成するための構成モジュールと、
前記動き情報リストから、前記第1の三角形サブブロックの第1の目標動き情報と、前記第2の三角形サブブロックの第2の目標動き情報とを取得するための取得モジュールであって、前記第1の目標動き情報が前記第2の目標動き情報と異なる取得モジュールと、
前記第1の目標動き情報に基づいて、前記第1の三角形サブブロックに対して動き補償を行い、第1の三角形サブブロックの予測値を得、前記第2の目標動き情報に基づいて、前記第2の三角形サブブロックに対して動き補償を行い、第2の三角形サブブロックの予測値を得るためのコーデックモジュールと、を含む。
【0008】
本願は、プロセッサと、前記プロセッサによって実行されるコンピュータ実行可能なコマンドを記憶しているコンピュータ可読記憶媒体とを含む符号化側機器を提供し、前記プロセッサは、
現在ブロックの特徴情報が特定条件を満たす場合、前記現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画することと、
前記現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成することと、
前記動き情報リストから、前記第1の三角形サブブロックの第1の目標動き情報と、前記第2の三角形サブブロックの第2の目標動き情報とを取得し、前記第1の目標動き情報が前記第2の目標動き情報と異なることと、
前記第1の目標動き情報に基づいて、前記第1の三角形サブブロックに対して動き補償を行い、前記第1の三角形サブブロックの予測値を得、前記第2の目標動き情報に基づいて、前記第2の三角形サブブロックに対して動き補償を行い、前記第2の三角形サブブロックの予測値を得ることと、
を実現するように、コンピュータ実行可能なコマンドを実行するためのものである。
【0009】
本願は、プロセッサと、前記プロセッサによって実行されるコンピュータ実行可能なコマンドを記憶しているコンピュータ可読記憶媒体とを含む復号化側機器を提供し、前記プロセッサは、
現在ブロックの特徴情報が特定条件を満たす場合、前記現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画することと、
前記現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成することと、
前記動き情報リストから、前記第1の三角形サブブロックの第1の目標動き情報と、前記第2の三角形サブブロックの第2の目標動き情報とを取得し、前記第1の目標動き情報が前記第2の目標動き情報と異なることと、
前記第1の目標動き情報に基づいて、前記第1の三角形サブブロックに対して動き補償を行い、前記第1の三角形サブブロックの予測値を得、前記第2の目標動き情報に基づいて、前記第2の三角形サブブロックに対して動き補償を行い、前記第2の三角形サブブロックの予測値を得ることと、
を実現するように、コンピュータ実行可能なコマンドを実行するためのものである。
【発明の効果】
【0010】
上記の技術案によれば、本願実施例では、現在ブロックの特徴情報が特定条件を満たす場合、現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画し、第1の三角形サブブロックの第1の目標動き情報と第2の三角形サブブロックの第2の目標動き情報とを取得し、第1の目標動き情報に基づいて第1の三角形サブブロックに対して動き補償を行い、第1の三角形サブブロックの予測値を得、第2の目標動き情報に基づいて第2の三角形サブブロックに対して動き補償を行い、第2の三角形サブブロックの予測値を得ることができる。上記の形態によれば、予測正確性を向上させ、予測性能を向上させ、符号化性能を向上させ、符号化残差を減らすことができる。
【図面の簡単な説明】
【0011】
以下、本願実施例の技術案をより明確に説明するために、本願実施例の説明に使用される図面を簡単に説明する。明らかに、以下に説明される図面は、本願に記載されるいくつかの実施例によるものに過ぎず、当業者にとって、本願実施例のこれらの図面に基づいて他の図面を得ることができる。
【0012】
【
図1】
図1は本願の一実施形態に係る映像符号化フレームワークの模式図である。
【
図2】
図2は本願の一実施形態に係るコーデック方法のフローチャートである。
【
図3】
図3は本願の一実施形態に係る符号化方法のフローチャートである。
【
図4】
図4は本願の一実施形態に係る復号化方法のフローチャートである。
【
図5A】
図5Aは本願の一実施形態に係る候補ブロックの模式図である。
【
図5B】
図5Bは本願の一実施形態に係る候補ブロックの模式図である。
【
図6A】
図6Aは本願の一実施形態に係る現在ブロックの区画の模式図である。
【
図6B】
図6Bは本願の一実施形態に係る現在ブロックの区画の模式図である。
【
図7A】
図7Aは本願の一実施形態に係るインデックス値と単方向動き情報との対応関係の模式図である。
【
図7B】
図7Bは本願の一実施形態に係る三角形サブブロックの区画の模式図である。
【
図7C】
図7Cは本願の一実施形態に係る三角形サブブロックの区画の模式図である。
【
図7D】
図7Dは本願の一実施形態に係る動き補償の模式図である。
【
図7E】
図7Eは本願の一実施形態に係る動き情報を格納する模式図である。
【
図7F】
図7Fは本願の一実施形態に係る動き情報を格納する模式図である。
【
図8】
図8は本願の一実施形態に係るコーデックデバイスの構成図である。
【
図9A】
図9Aは本願の一実施形態に係る復号化側機器のハードウェア構成図である。
【
図9B】
図9Bは本願の一実施形態に係る符号化側機器のハードウェア構成図である。
【発明を実施するための形態】
【0013】
本願実施例に用いられる用語は、特定の実施例を説明するためのものに過ぎず、本願実施例のそれぞれを限定するものではない。本願明細書及び請求の範囲に用いられる単数形の「一種」、「前記」及び「当該」との用語は、文脈で他の意味を明確に示さない限り、更に複数形を含むことを意図する。本明細書に用いられる用語「及び/または」は、1つまたは複数の関連する項目を含む任意またはすべての可能な組み合わせを指すことも理解されるべきである。本願実施例において、「第1の」、「第2の」、「第3の」等の用語を用いて各種の情報を説明する場合があるが、このような情報はこれらの用語に限定されるものではなく、これらの用語は、同じ種類の情報を互いに区別するためのものに過ぎないことが理解されるべきである。例えば、本願の範囲から逸脱しない場合、第1の情報は、第2の情報と呼ばれてもよい。同様に、第2の情報も、第1の情報と呼ばれてもよい。また、用いられる用語「…なら」は、「…すると」、「…時に」、または、「…を確定することに応答する」と解釈されるが、文脈に応じて決められる。
【0014】
本願実施例で提供されるコーデック方法、デバイス及びその機器は、次の概念に関連する。
【0015】
イントラ予測とインター予測(intra prediction and inter prediction)技術に関して、イントラ予測とは、ビデオ空間領域の相関により、現在画像の符号化済みのブロックの画素を使用して現在の画素を予測することで、ビデオ空間領域の冗長性を除去する目的を達成することを指す。インター予測とは、ビデオシーケンスに高い時間領域相関を含むため、ビデオ時間領域の相関により、近接する符号化済みの画像の画素を使用して現在画像の画素を予測することで、ビデオ時間領域の冗長性を効率的に除去する目的を達成することを指す。映像符号化規格のインター予測の部分は、基本的にブロックに基づく動き補償の技術を採用する。その原理は、現在画像の各画素ブロックに対して、符号化済みの画像から最もマッチングするブロックを探すことである。このようなプロセスは、動き推定(Motion Estimation、ME)と呼ばれる。
【0016】
動きベクトル(Motion Vector、MV)に関して、フレーム間符号化では、動きベクトルによって、現在符号化ブロックとその参照画像における最もマッチングするブロックとの間の相対的シフトを表す。区画された各ブロックは、その対応する動きベクトルが復号化側に伝送される必要がある。各ブロックの動きベクトルに対して個別に符号化及び伝送を行う場合、特に小さいブロックに区画される場合、かなり多くのビット数が必要になる。動きベクトルを符号化するためのビット数を減らすために、隣接する画像ブロック間の空間的相関を利用して、隣接する符号化済みのブロックの動きベクトルに基づいて現在符号化予定ブロックの動きベクトルを予測し、そして予測値の差分を符号化する。これにより、動きベクトルを表すビット数を効率的に減らすことができる。現在ブロックの動きベクトルを符号化するプロセスでは、まず、隣接する符号化済みのブロックの動きベクトルを使用して現在ブロックの動きベクトルを予測し、そして動きベクトルの予測値(MVP、Motion Vector Prediction)と動きベクトルの推定値との間の差分(MVD、MotionVector Difference)を符号化することによって、MVの符号化ビット数を効率的に減らすことができる。
【0017】
動き情報(Motion Information)に関して、動きベクトルにより現在画像ブロックとある参照画像ブロックとの位置ずれを表すため、画像ブロックを指す情報を正確に取得するように、動きベクトルに加えて、どの参照フレーム画像を用いるかを示す参照フレーム画像のインデックス情報も必要である。映像符号化技術では、現在フレーム画像に対して、通常、1つの参照フレーム画像リストを作成してよい。参照フレーム画像のインデックス情報は、参照フレーム画像リスト中のどの参照フレーム画像が現在画像ブロックによって使用されるかを示す。また、多くの符号化技術では、複数の参照画像リストもサポートするため、1つのインデックス値によって、どの参照画像リストを使用するかを示してもよく、このインデックス値は、参照方向と呼ばれてもよい。映像符号化技術では、動きベクトルや、参照フレームのインデックスや、参照方向等の動きに関する情報を纏めて動き情報と呼んでよい。
【0018】
レート歪み最適化(Rate-Distortion Optimized)に関して、符号化效率を評価するための2つの指標として、ビットレートとPSNR(Peak Signal to Noise Ratio、ピーク信号対雑音比)がある。ビットレートが小さいほど、圧縮率が大きくなる一方、PSNRが大きいほど、再構成後の画像の品質が良くなる。モードの選択時に、判定式は、実質的に両者に対して総合評価を行うものである。例えば、モードに対応するコストは、J(mode)=D+λ*Rである。ただし、Dは、Distortion(歪み)を示し、一般的にSSEという指標によって評価してよいが、SSEは、再構成後の画像ブロックと原画像との差分の平均平方和であり、λはラグランジュ乗数であり、Rは当該モードで画像ブロックを符号化するために必要な実際のビット数であり、このビット数は、含まれる符号化モード情報や、動き情報や、残差等に必要なビット数の合計である。
【0019】
映像符号化のフレームワークに関して、
図1に示すように、映像符号化フレームワークによって本願実施例における符号化側での処理プロセスを実現してよい。また、映像復号化フレームワークの模式図は、
図1と類似しているため、重複する説明を省略し、映像復号化フレームワークによって本願実施例における復号化側での処理プロセスを実現してよい。具体的に、映像符号化フレームワーク及び映像復号化フレームワークでは、イントラ予測と、動き推定/動き補償と、参照画像バッファーと、ループ内フィルタリングと、再構成と、変換と、量子化と、逆変換と、逆量子化と、エントロピー符号化器等のモジュールを含む。符号化側では、これらのモジュールの協力によって、符号化側処理プロセスを実現できる一方、復号化側では、これらのモジュールの協力によって、復号化側処理プロセスを実現できる。
【0020】
フラグビット符号化(flag coding)に関して、映像符号化では、例えば、Mergeモード(マージモード)と、三角形予測モード等の多種のモードがある。あるブロックに対して、あるモードを採用する可能がある。どのモードを採用するかを示すために、各ブロックでは、対応するフラグビットを符号化することでマーキングする必要がある。即ち、符号化側では、フラグビットの値を確定してから、フラグビットを符号化して、復号化側に伝送する一方、復号化側では、フラグビットを解析することによって、対応するモードを有効にするかどうかを決定する。
【0021】
マージモード(Merge mode)に関して、通常のマージモード(Normal Mergeモード)と、三角形予測のためのマージモード(triangular prediction mode、TPMモードとも呼ばれる)と、符号化動きベクトル差分のマージモード(merge mode with MVD、MMVDモードとも呼ばれる)と、サブブロックの動き情報によるマージモード(sub-block merge、SB Mergeモードとも呼ばれる)と、イントラ予測と組み合わせて新しい予測値を生成するためのマージモード(combine intra inter prediction mode、CIIPモードとも呼ばれる)とを含んでよいが、これらに限定されない。現在ブロックがマージモードを使用する場合、上記の5つのマージモード中の1つを使用してよい。
【0022】
スキップモード(skip mode)に関して、特殊なマージモードである。符号化残差を必要しない点で、マージモードと異なる。現在ブロックがスキップモードである場合、CIIPモードはデフォルトでオフになっているが、通常のマージモードと、三角形予測のためのマージモードと、符号化動きベクトル差分のマージモードと、サブブロックの動き情報によるマージモードとは適用可能である。
【0023】
なお、Normal Mergeモードと、TPMモードと、MMVDモードと、SB Mergeモードと、CIIPモード等に基づいて、予測値を生成する方法を確定できる。予測値を生成した後、Mergeモードの場合、予測値及び残差値によって再構成値を取得するが、skipモードの場合、残差値が存在しないため、直接に予測値を使用して再構成値を取得する。
【0024】
フレームタイプ(frame type)に関して、現在フレームが他のフレームの情報を参照して符号化することを許可しない場合、現在フレームは、Iフレームとしてよく、現在フレームが他の1つのフレーム(ただし、1つのフレームを超えない)の情報を参照して符号化することを許可する場合、現在フレームは、Pフレームとしてよく、現在フレームが他の1つのフレームまたは2つのフレームの情報を参照して符号化することを許可する場合、現在フレームは、Bフレームとしてよい。
【0025】
シーケンスパラメータセット(SPS、sequence parameter set)に関して、シーケンスパラメータセットには、シーケンス全体においていくつかのツールをオンにすることを許可するか否かを確定するフラグビットが存在する。当該フラグビットが1である場合、当該ビデオシーケンスでは、当該フラグビットに対応するツールをオンにすることが許可され、当該フラグビットが0である場合、当該ビデオシーケンスでは、当該フラグビットに対応するツールをオンにすることが許可されない。
【0026】
コンテキスト適応型バイナリ算術符号化(CABAC、Context-Based Adaptive Binary Arithmetic Coding)に関して、CABACは、通常用いられるエントロピー符号化/復号化方法であり、少なくとも1つのコンテキストモデルを保存及び更新する必要があるCABACモードと、コンテキストモデルを格納及び更新する必要がないbypass(バイパス) CABACモードという2つのモードがある。
【0027】
現在、現在ブロックは矩形であるが、実際の対象物のエッジが水平および垂直ではない可能があるため、対象物のエッジにおける一つの現在ブロックに対して、2つの異なるオブジェクトが存在する可能がある(例えば、前景物体と背景とが同時に存在する)。この場合、単一の予測モードのみによって現在ブロックに対して予測すると、予測の効果の低下や、符号化残差の増大や、符号化性能の低下等の問題がある。
【0028】
上記の知見に対して、本願実施例では、現在ブロックを、異なる目標動き情報を有する2つの三角形サブブロックに区画することによって、ハードウェア実装の利便性を向上させ、符号化性能を向上させることができる三角形予測モードを提供する。以下、いくつかの具体的な実施例を参照して、本願実施例に係るコーデック方法を詳しく説明する。
【0029】
(実施例1)
図2に示すように、
図2は、本願実施例に係るコーデック方法のプロセス模式図である。当該コーデック方法は、復号化側または符号化側に適用され、以下のステップを含む。
【0030】
ステップ201では、現在ブロックの特徴情報が特定の条件を満たす場合、現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックに区画する。即ち、復号化側/符号化側で、現在ブロックを2つの三角形サブブロックに区画する。
【0031】
例として、特徴情報は、動き情報モードと、サイズ情報と、フレームタイプと、シーケンスレベルスイッチ制御情報の中の一つまたは複数を含んでよいが、これらに限定されない。無論、これらは、例示であり、制限されない。
【0032】
特徴情報が動き情報モードを含み、且つ、動き情報モードが、
現在ブロックの動き情報モードがマージモードまたはスキップモードであることと、
現在ブロックの動き情報モードがマージモードまたはスキップモードであり、且つ、現在ブロックの動き情報モードが三角形予測サブモード以外の他のタイプのマージサブモードまたはスキップサブモードではないことと、
現在ブロックの動き情報モードがマージモードであり、且つ、現在ブロックの動き情報モードが通常のマージサブモード(即ち、Normal Mergeモードであり、regular mergeモードとも呼ばれる)、MMVDサブモード(符号化動きベクトル差分のマージモード)、SBマージサブモード(サブブロックの動き情報によるマージモード)、CIIP(イントラ予測と組み合わせて新しい予測値を生成するためのマージモード)サブモードの中のいずれか1つのサブモードではないことと、
現在ブロックの動き情報モードがスキップモードであり、且つ、現在ブロックの動き情報モードが通常のマージサブモード、MMVDサブモード、SBマージサブモードの中のいずれか1つのサブモードではないことと、
の少なくとも1つを満たす場合、動き情報モードが特定条件を満たすことを確定する。
【0033】
無論、これらは例示であり、制限されない。上記の例示によって、現在ブロックの動き情報モードが三角形予測モードであるか否かを判断できる。現在ブロックの動き情報モードが三角形予測モードであることを確定すると、動き情報モードが特定条件を満たすことを確定する。説明の便宜上、本願では、TPMモードと三角形予測サブモードとが互換性があり、通常のマージモードと通常のマージサブモードとが互換性があり、符号化動きベクトル差分のマージモードとMMVDサブモードとが互換性があり、サブブロックの動き情報によるマージモードとSBマージサブモードとが互換性があり、CIIPモードとCIIPサブモードとが互換性がある。
【0034】
特徴情報がフレームタイプを含み、且つ、フレームタイプが、
現在ブロックが所属する現在フレームがBフレームであることと、
現在ブロックが所属する現在フレームがイントラブロックコピーを許可することと、
の少なくとも1つを満たす場合、フレームタイプが特定条件を満たすことを確定する。
【0035】
特徴情報は、シーケンスレベルスイッチ制御情報を含み、且つ、当該シーケンスレベルスイッチ制御情報は、現在ブロックが三角形予測モードを採用することを許可するものである場合、前記シーケンスレベルスイッチ制御情報が特定条件を満たすことを確定できる。
【0036】
特徴情報がサイズ情報を含み、且つ、当該サイズ情報が幅の値、高さの値及び面積の値の中の少なくとも1つを含み、サイズ情報における幅の値、高さの値及び面積の値の中の少なくとも1つが対応する閾値条件を満たす場合、サイズ情報が特定条件を満たす。例として、当該サイズ情報が以下の少なくとも1つを満たす場合、サイズ情報が特定条件を満たすことを確定する。
1、現在ブロックの幅の値が第1の閾値以上であり、現在ブロックの幅の値が第2の閾値以下である。
2、現在ブロックの高さの値が第3の閾値以上であり、現在ブロックの高さの値が第4の閾値以下である。
3、現在ブロックの面積の値が第5の閾値以上であり、現在ブロックの面積の値が第6の閾値以下である。
4、現在ブロックの面積の値が第7の閾値以上である。
5、現在ブロックの面積の値が第8の閾値以下である。
6、現在ブロックの幅の値が第9の閾値以下であり、現在ブロックの高さの値が第10の閾値以下である。
【0037】
無論、これらは例示であり、制限されない。例として、上記の各閾値条件は、経験によって設定されてよいが、制限されない。
【0038】
例として、特徴情報は、動き情報モード、サイズ情報、フレームタイプ、シーケンスレベルスイッチ制御情報の中の一つまたは複数を含む。当特徴情報が動き情報モードを含み、且つ、動き情報モードが特定条件を満たす場合、特徴情報が特定条件を満たすことを示す。特徴情報がフレームタイプを含み、且つ、フレームタイプが特定条件を満たす場合、特徴情報が特定条件を満たすことを示す。他の場合も同様である。特徴情報が動き情報モード、サイズ情報、フレームタイプ、シーケンスレベルスイッチ制御情報の中の少なくとも二つを含む場合、動き情報モード及びフレームタイプを例として、動き情報モードが特定条件を満たし、且つ、フレームタイプが特定条件を満たす場合、特徴情報が特定条件を満たすことを示す。他の場合も同様である。
【0039】
例として、一つのタイプの特徴情報(例えば、動き情報モード、サイズ情報、フレームタイプ、シーケンスレベルスイッチ制御情報等)の少なくとも1つの特定条件が、他のタイプの特徴情報の少なくとも1つの特定条件と任意に組み合せることによって、現在ブロックの特定条件を構成する。ただし、このような組み合わせの方式は、特に限定されず、任意に設定されてもよい。
【0040】
例として、コーデック方法が復号化側に適用される場合、復号化側で、現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックに区画することは、
符号化ビットストリームから、三角形サブブロックの区画情報を示すための第1の指示情報を取得することと、
三角形サブブロックの区画情報が主対角線による区画方式である場合、現在ブロックの主対角線で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックに区画することと、
三角形サブブロックの区画情報が副対角線による区画方式である場合、現在ブロックの副対角線で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックに区画することと、
を含んでよいが、これらに限定されない。
【0041】
例として、第1の指示情報は、バイパスによるバイナリ算術復号化によって取得されてよい。または、第1の指示情報は、コンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得されてもよい。
【0042】
例として、CABACは、少なくとも1つのコンテキストモデルを保存及び更新する必要があるCABACモード(即ち、コンテキスト適応型バイナリ算術符号化)と、コンテキストモデルを格納及び更新する必要がないバイパスによるCABACモード(即ち、バイパスによるバイナリ算術符号化)という2つのモードがある。そのため、バイパスによるバイナリ算術はCABACモードの一種であり、コンテキストモデルによるコンテキスト適応型バイナリ算術はCABACモードの別の一種である。
【0043】
ステップ202では、現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成する。
【0044】
例として、通常のマージモードの動き情報リスト構成方式の再利用により、現在ブロックのために、動き情報リストを構成する。例えば、まず、通常のマージモードの動き情報リスト構成方式を確定する。そして、通常のマージモードの動き情報リスト構成方式に基づいて、現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成する。
【0045】
ステップ203では、動き情報リストから第1の三角形サブブロックの第1の目標動き情報と第2の三角形サブブロックの第2の目標動き情報とを取得する。例として、第1の目標動き情報は、第2の目標動き情報と異なってもよい。
【0046】
コーデック方法が復号化側に適用される場合、復号化側で、動き情報リストから第1の三角形サブブロックの第1の目標動き情報と第2の三角形サブブロックの第2の目標動き情報とを取得することは、
復号化側で、符号化ビットストリームから、動き情報リストにおける第1の目標動き情報の第1のインデックス値と動き情報リストにおける第2の目標動き情報の第2のインデックス値とを示すための第2の指示情報を取得することと、
第2の指示情報に基づいて、復号化側で、動き情報リストから、第1のインデックス値に対応する候補動き情報を取得し、取得された第1のインデックス値に対応する候補動き情報を第1の三角形サブブロックの第1の目標動き情報として確定することと、
第2の指示情報に基づいて、復号化側で、動き情報リストから、第2のインデックス値に対応する候補動き情報を取得し、取得された第2のインデックス値に対応する候補動き情報を第2の三角形サブブロックの第2の目標動き情報として確定することと、
を含んでよいが、これらに限定されない。
【0047】
例として、第1のインデックス値は、バイパスによるバイナリ算術復号化によって取得されてよい。または、第1のインデックス値は、コンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得されてもよい。第2のインデックス値は、バイパスによるバイナリ算術復号化によって取得されてよい。または、第2のインデックス値は、コンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得されてもよい。
【0048】
例として、第1のインデックス値は、M1ビットを含み、M1ビット中のN1ビットは、コンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得されるが、M1ビット中の残りの(M1-N1)ビットは、バイパスによるバイナリ算術復号化によって取得され、M1が1以上の正の整数であり、N1が1以上の正の整数であり、M1がN1以上である。例えば、第1のインデックス値は、4つのビットを含み、1つ目のビットがコンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得され、2、3、4つ目のビットがバイパスによるバイナリ算術復号化によって取得される。また、例えば、第1のインデックス値は、2つのビットを含み、1つ目のビットがコンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得される。
【0049】
例として、第2のインデックス値は、M2ビットを含み、M2ビット中のN2ビットは、コンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得され、M2ビット中の残りの(M2-N2)ビットは、バイパスによるバイナリ算術復号化によって取得され、M2は1以上の正の整数であり、N2は1以上の正の整数であり、M2はN2以上である。例えば、第2のインデックス値は、4ビットを含み、1つ目のビットがコンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得され、2、3、4つ目のビットがバイパスによるバイナリ算術復号化によって取得される。また、例えば、第2のインデックス値は、1つのビットを含み、1つ目のビットがコンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得される。
【0050】
例として、第1のインデックス値に対応するコンテキストモデルと第2のインデックス値に対応するコンテキストモデルとは同じである。または、第1のインデックス値に対応するコンテキストモデルと第2のインデックス値に対応するコンテキストモデルとは異なる。または、第1のインデックス値及び第1の区画情報に対応するコンテキストモデルと、第2のインデックス値及び第1の区画情報に対応するコンテキストモデルとは同じでもよく、第1のインデックス値及び第2の区画情報に対応するコンテキストモデルと、第2のインデックス値及び第2の区画情報に対応するコンテキストモデルとは同じでもよく、第1のインデックス値及び第1の区画情報に対応するコンテキストモデルと、第1のインデックス値及び第2の区画情報に対応するコンテキストモデルとは異なってもよい。または、第1のインデックス値及び第1の区画情報に対応するコンテキストモデルと、第2のインデックス値及び第1の区画情報に対応するコンテキストモデルと、第1のインデックス値及び第2の区画情報に対応するコンテキストモデルと、第2のインデックス値及び第2の区画情報に対応するコンテキストモデルとは互いに異なってもよい。第1の区画情報は、三角形サブブロックの区画情報が主対角線による区画方式であることを示し、第2の区画情報は、三角形サブブロックの区画情報が副対角線による区画方式であることを示す。
【0051】
例として、動き情報リストから第1のインデックス値に対応する候補動き情報を取得し、取得された第1のインデックス値に対応する候補動き情報を第1の三角形サブブロックの第1の目標動き情報として確定することは、
第1のインデックス値が偶数であり、第1のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含む場合、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定することと、
第1のインデックス値が偶数であり、第1のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含まない場合、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定することと、
第1のインデックス値が奇数であり、第1のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含む場合、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定することと、
第1のインデックス値が奇数であり、第1のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含まない場合、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定することと、
を含んでよいが、これらに限定されない。
【0052】
例として、動き情報リストから第2のインデックス値に対応する候補動き情報を取得し、取得された第2のインデックス値に対応する候補動き情報を第2の三角形サブブロックの第2の目標動き情報として確定することは、
第2のインデックス値が偶数であり、第2のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含む場合、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定することと、
第2のインデックス値が偶数であり、第2のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含まない場合、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定することと、
第2のインデックス値が奇数であり、第2のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含む場合、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定することと、
第2のインデックス値が奇数であり、第2のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含まない場合、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定することと、
を含んでよいが、これらに限定されない。
【0053】
例として、動き情報リストから第1のインデックス値に対応する候補動き情報を取得し、取得された第1のインデックス値に対応する候補動き情報を第1の三角形サブブロックの第1の目標動き情報として確定することは、
第1のインデックス値が奇数であり、第1のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含む場合、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定することと、
第1のインデックス値が奇数であり、第1のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含まない場合、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定することと、
第1のインデックス値が偶数であり、第1のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含む場合、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定することと、
第1のインデックス値が偶数であり、第1のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含まない場合、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定することと、
を含んでよいが、これらに限定されない。
【0054】
例として、動き情報リストから第2のインデックス値に対応する候補動き情報を取得し、取得された第2のインデックス値に対応する候補動き情報を第2の三角形サブブロックの第2の目標動き情報として確定することは、
第2のインデックス値が奇数であり、第2のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含む場合、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定することと、
第2のインデックス値が奇数であり、第2のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含まない場合、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定することと、
第2のインデックス値が偶数であり、第2のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含む場合、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定することと、
第2のインデックス値が偶数であり、第2のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含まない場合、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定することと、
を含んでよいが、これらに限定されない。
【0055】
上記の実施例では、現在ブロックの所属する現在フレームのフレームタイプがBフレームである場合、Bフレームは、複数のList(参照フレームリスト)を指すインター予測ブロックが同時に存在することを許可する。例えば、list0を指すインター予測ブロックと、list1を指すインター予測ブロックとが同時に存在する。そのため、現在ブロックが所属する現在フレームがBフレームである場合、現在ブロックが所属する現在フレームの参照フレームの構成は、2つの参照フレームリストを含んでよい。これらの2つの参照フレームリストは、それぞれlist0とlist1でもよい。候補動き情報は、list0に対応する単方向動き情報またはlist1に対応する単方向動き情報のような単方向動き情報でもよく、または、list0に対応する単方向動き情報とlist1に対応する単方向動き情報とを含む双方向動き情報でもよい。
【0056】
例として、復号化側では、第1の候補集合と第2の候補集合とを更に取得する。第1の候補集合は、動き情報リストにおける候補動き情報の一部を含み、第2の候補集合は、動き情報リストにおける候補動き情報の一部を含み、第1の候補集合における候補動き情報と第2の候補集合における候補動き情報とは完全に同じではない。そして、復号化側では、第1の候補集合から、第1のインデックス値に対応する候補動き情報を取得し、取得された第1のインデックス値に対応する候補動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。復号化側では、第2の候補集合から、第2のインデックス値に対応する候補動き情報を取得し、取得された第2のインデックス値に対応する候補動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0057】
ステップ204では、第1の目標動き情報に基づいて第1の三角形サブブロックに対して動き補償を行い、第1の三角形サブブロックの予測値を得、第2の目標動き情報に基づいて第2の三角形サブブロックに対して動き補償を行い、第2の三角形サブブロックの予測値を得る。
【0058】
例として、第1の三角形サブブロックの第1の目標動き情報と第2の三角形サブブロックの第2の目標動き情報とを得た後、第1の三角形サブブロックにおける重み付きなしの予測補償を用いるサブブロックに対して、サブブロックのための第1の目標動き情報を格納し、第2の三角形サブブロックにおける重み付きなしの予測補償を用いるサブブロックに対して、サブブロックのための第2の目標動き情報を格納し、重み付きの予測補償を用いるサブブロックに対して、サブブロックのための第1の目標動き情報、第2の目標動き情報、または双方向動き情報を格納する。
【0059】
重み付きの予測補償を用いるサブブロックに対して、サブブロックのための、第1の目標動き情報、第2の目標動き情報、または双方向動き情報を格納することは、
サブブロックのための第1の目標動き情報を格納することと、
サブブロックのための第2の目標動き情報を格納することと、
サブブロックの位置によって、サブブロックのための第1の目標動き情報または第2の目標動き情報を格納することと、
現在ブロックの区画方向によって、サブブロックのための第1の目標動き情報または第2の目標動き情報を格納することと、
サブブロックの位置と現在ブロックの区画方向とによって、サブブロックのための第1の目標動き情報または第2の目標動き情報を格納することと、
のいずれか1つを含んでよいが、これらに限定されない。
【0060】
重み付きの予測補償を用いるサブブロックについて、サブブロックのための、第1の目標動き情報、第2の目標動き情報、または双方向動き情報を格納することは、
第1の目標動き情報と第2の目標動き情報とが異なるlistからのものである場合、前記第1の目標動き情報と前記第2の目標動き情報とを双方向動き情報に合併して、サブブロックのための前記双方向動き情報を格納すること、
或いは、
第1の目標動き情報と第2の目標動き情報とが同じlistからのものである場合、サブブロックのための第1の目標動き情報を格納し、または、サブブロックのための第2の目標動き情報を格納すること、
を含んでよいが、これらに限定されない。
【0061】
例として、第1の目標動き情報と第2の目標動き情報が同じlistからのものである場合、サブブロックのための第1の目標動き情報を格納し、または、サブブロックのための第2の目標動き情報を格納することは、
サブブロックのための第1の目標動き情報を格納することと、
サブブロックのための第2の目標動き情報を格納することと、
サブブロックの位置によって、サブブロックのための第1の目標動き情報または第2の目標動き情報を格納することと、
現在ブロックの区画方向によって、サブブロックのための第1の目標動き情報または第2の目標動き情報を格納することと、
サブブロックの位置と現在ブロックの区画方向とによって、サブブロックのための第1の目標動き情報または第2の目標動き情報を格納することと、
サブブロックのための第1の目標動き情報と第2の目標動き情報との平均値を格納することと、
現在ブロックのサイズ情報によって、サブブロックのための第1の目標動き情報または第2の目標動き情報を格納することと、
のいずれか1つを含んでよいが、これらに限定されない。
【0062】
上記の例から分かるように、本願実施例では、現在ブロックの特徴情報が特定条件を満たす場合、現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画し、第1の三角形サブブロックの第1の目標動き情報と第2の三角形サブブロックの第2の目標動き情報とを取得し、第1の目標動き情報に基づいて第1の三角形サブブロックに対して動き補償を行い、第1の三角形サブブロックの予測値を得、第2の目標動き情報に基づいて第2の三角形サブブロックに対して動き補償を行い、第2の三角形サブブロックの予測値を得る。上記の形態によれば、予測の正確性を向上させ、予測性能を向上させ、符号化性能を向上させ、符号化残差を減らすことができる。
【0063】
(実施例2)
上記の方法と同様な発想に基づいて、本願実施例は、符号化側に適用される符号化方法を提供する。
図3に示すように、
図3は、当該方法のプロセス模式図である。当該方法は、以下のステップを含んでよい。
【0064】
ステップ301では、符号化側で、現在ブロックの特徴情報が特定条件を満たすか否かを判断する。特定条件を満たす場合、三角形予測モードを有効にし、ステップ302を実行する。特定条件を満たさない場合、三角形予測モードを無効にし、本実施例の技術案を採用しない。
【0065】
ステップ302では、符号化側で、現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成する。
【0066】
ステップ303では、符号化側で、現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する。例えば、主対角線(水平方向から時計回りに45度回転した角度)で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画し、または、副対角線(水平方向から時計回りに135度回転した角度)で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する。
【0067】
ステップ304では、符号化側で、動き情報リストから第1の三角形サブブロックの第1の目標動き情報と第2の三角形サブブロックの第2の目標動き情報とを取得し、第1の目標動き情報と第2の目標動き情報とは異なってもよい。
【0068】
ステップ305では、符号化側で、第1の目標動き情報に基づいて第1の三角形サブブロックに対して動き補償を行い、第1の三角形サブブロックの予測値を得、第2の目標動き情報に基づいて第2の三角形サブブロックに対して動き補償を行い、第2の三角形サブブロックの予測値を得る。第1の三角形サブブロックの予測値と第2の三角形サブブロックの予測値は、現在ブロックの予測値である。
【0069】
ステップ306では、符号化側で、後続するブロックへの符号化時の参照として、現在ブロックの動き情報を保存する。
【0070】
(実施例3)
上記の方法と同様な発想に基づいて、本願実施例は、復号化側に適用される復号化方法を提供する。
図4に示すように、
図4は、当該方法のプロセス模式図である。当該方法は、以下のステップを含んでよい。
【0071】
ステップ401では、復号化側で、現在ブロックの特徴情報が特定条件を満たすか否かを判断する。特定条件を満たす場合、三角形予測モードを有効にし、ステップ402を実行する。特定条件を満たさない場合、三角形予測モードを無効にし、本実施例の技術案を採用しない。
【0072】
ステップ402では、復号化側で、現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成する。
【0073】
ステップ403では、復号化側で、現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する。例えば、主対角線(水平方向から時計回りに45度回転した角度)で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画し、または、副対角線(水平方向から時計回りに135度回転した角度)で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する。
【0074】
ステップ404では、復号化側で、動き情報リストから第1の三角形サブブロックの第1の目標動き情報と第2の三角形サブブロックの第2の目標動き情報とを取得し、第1の目標動き情報と第2の目標動き情報とは異なってもよい。
【0075】
ステップ405では、復号化側で、第1の目標動き情報に基づいて第1の三角形サブブロックに対して動き補償を行い、第1の三角形サブブロックの予測値を得、第2の目標動き情報に基づいて第2の三角形サブブロックに対して動き補償を行い、第2の三角形サブブロックの予測値を得る。第1の三角形サブブロックの予測値と第2の三角形サブブロックの予測値とは、現在ブロックの予測値である。
【0076】
ステップ406では、復号化側で、後続するブロックへの符号化時の参照として、現在ブロックの動き情報を保存する。
【0077】
(実施例4)
ステップ301及びステップ401において、符号化側/復号化側で、現在ブロックの特徴情報が特定条件を満たすか否かを判断する必要がある。特定条件を満たす場合、三角形予測モードを有効にし、即ち、現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する。特定条件を満たさない場合、三角形予測モードを無効にする。例として、当該特徴情報は、動き情報モード、サイズ情報、フレームタイプ、シーケンスレベルスイッチ制御情報中の一つまたは複数を含んでよいが、これらに限定されない。
【0078】
以下、いくつか具体的な応用シナリオを参照して、現在ブロックの特徴情報が特定条件を満たすことを説明する。
【0079】
応用シナリオ1:
特徴情報が次の条件を満たすと、現在ブロックの特徴情報が特定条件を満たすことを確定する。
【0080】
現在ブロックの動き情報モードは、マージモードまたはスキップモードであり、且つ、現在ブロックの動き情報モードは、三角形予測サブモード以外の他のタイプのマージサブモードまたはスキップサブモードではない。
【0081】
応用シナリオ2:
特徴情報が少なくとも次の条件を同時に満たすと、現在ブロックの特徴情報が特定条件を満たすことを確定する。
【0082】
シーケンスレベルスイッチ制御情報は、現在ブロックが三角形予測モードを用いることを許可するものであり、つまり、シーケンスレベル制御は、三角形予測モードを有効にすることを許可し、即ち、シーケンスレベル制御スイッチをオンにすることは、現在ブロックが三角形予測モードを用いることを許可することを示すことと、
現在ブロックが所属する現在フレームは、Bフレームであり、即ち、現在フレームは、2つの参照フレームリストが存在することを許可することと、
現在ブロックの面積(幅*高さ)は、N*N以上であり、Nは、8でよいここと、
現在ブロックの動き情報モードは、マージモード(Mergeモード)またはスキップモード(skipモード)であることと、
を含む。
【0083】
応用シナリオ3:
特徴情報が少なくとも次の条件を同時に満たすと、現在ブロックの特徴情報が特定条件を満たすことを確定する。
【0084】
シーケンスレベルスイッチ制御情報は、現在ブロックが三角形予測モードを用いることを許可するものであり、つまり、シーケンスレベル制御は、三角形予測モードを有効にすることを許可し、即ち、シーケンスレベル制御スイッチをオンにすることは、現在ブロックが三角形予測モードを用いることを許可することを示すことと、
現在ブロックが所属する現在フレームは、Bフレームであり、即ち、現在フレームは、2つの参照フレームリストが存在することを許可することと、
現在ブロックの面積(幅*高さ)は、N*N以上であり、Nは、8でよいことと、
現在ブロックの動き情報モードは、マージモードであり、且つ、現在ブロックの動き情報モードは、通常のマージサブモード、MMVDサブモード、SBマージサブモード、CIIPサブモード中のいずれか1つのサブモードではないことと、
現在ブロックの動き情報モードは、スキップモードであり、且つ、現在ブロックの動き情報モードは、通常のマージサブモード、MMVDサブモード、SBマージサブモード中のいずれか1つのサブモードではないことと、
を含む。
【0085】
応用シナリオ4:
特徴情報が少なくとも次の条件を同時に満たすと、現在ブロックの特徴情報が特定条件を満たすことを確定する。
【0086】
シーケンスレベルスイッチ制御情報は、現在ブロックが三角形予測モードを用いることを許可することであり、つまり、シーケンスレベル制御は、三角形予測モードを有効にすることを許可し、即ち、シーケンスレベル制御スイッチをオンにすることは、現在ブロックが三角形予測モードを用いることを許可することを示すことと、
現在ブロックが所属する現在フレームは、Bフレームであり、即ち、現在フレームは、2つの参照フレームリストが存在することを許可することと、
現在ブロックの動き情報モードは、マージモード(Mergeモード)またはスキップモード(skipモード)であることと、
現在ブロックの面積(幅*高さ)は、N*N以上であり、Nは、8でよいことと、
現在ブロックの幅は、M以下であり、現在ブロックの高さは、M以下であり、Mは、128でよいことと、
を含む。
【0087】
応用シナリオ5:
特徴情報が少なくとも次の条件を同時に満たすと、現在ブロックの特徴情報が特定条件を満たすことを確定する。
【0088】
シーケンスレベルスイッチ制御情報は、現在ブロックが三角形予測モードを用いることを許可することであり、つまり、シーケンスレベル制御は、三角形予測モードを有効にすることを許可し、即ち、シーケンスレベル制御スイッチをオンにすることは、現在ブロックが三角形予測モードを用いることを許可することを示すことと、
現在ブロックが所属する現在フレームは、Bフレームであり、即ち、現在フレームは、2つの参照フレームリストが存在することを許可することと、
現在ブロックの動き情報モードは、マージモード(Mergeモード)またはスキップモード(skipモード)であることと、
現在ブロックの面積(幅*高さ)は、N*N以上であり、Nは、8でよいことと、
現在ブロックの面積(幅*高さ)は、M*M以下であり、Mは、128でよいことと、
を含む。
【0089】
応用シナリオ6:
特徴情報が少なくとも次の条件を同時に満たすと、現在ブロックの特徴情報が特定条件を満たすことを確定する。
シーケンスレベルスイッチ制御情報は、現在ブロックが三角形予測モードを用いることを許可することであり、つまり、シーケンスレベル制御は、三角形予測モードを有効にすることを許可し、即ち、シーケンスレベル制御スイッチをオンにすることは、現在ブロックが三角形予測モードを用いることを許可することを示すことと、
現在ブロックが所属する現在フレームは、Bフレームであり、即ち、現在フレームは、2つの参照フレームリストが存在することを許可することと、
現在ブロックの動き情報モードは、マージモード(Mergeモード)またはスキップモード(skipモード)であることと、
現在ブロックの幅の値は、[Wmin、Wmax]の範囲内であり、例として、WminとWmaxは、いずれも2の正の整数乗であってよく、例えば、Wminは4であり、Wmaxは128であることと、
現在ブロックの高さの値は、[Hmin、Hmax]の範囲内であり、例として、HminとHmaxはいずれも2の正の整数乗であってよく、例えば、Hminは4であり、Hmaxは128であることと、
現在ブロックの面積の値は、[Smin、Smax]の範囲内であり、例として、Smin、Smaxはいずれも2の正の整数乗であってよく、例えば、Sminは64であり、Smaxは128*128=16384であること、
を含む。
【0090】
上記の実施例では、[a、b]は、a以上で、b以下であることを示す。
【0091】
応用シナリオ7:
応用シナリオ2~応用シナリオ6中のいずれか1つの応用シナリオについて、「現在ブロックが所属する現在フレームがBフレームであること」を、現在ブロックが所属する現在フレームがイントラブロックコピーを許可することに変更し、他の限定条件が変わらない。現在ブロックが所属する現在フレームがイントラブロックコピーを許可することとは、現在ブロックが、現在フレームの復号化済みの再構成ブロック(他のフレームの復号化済みの再構成ブロックではない)において、類似するブロックを探索する技術であり、この条件で、現在ブロックが所属する現在フレームがBフレームである必要がない。
【0092】
応用シナリオ8:
現在ブロックの高さの値と幅の値の両方がCTU_Sizeである場合、三角形予測モードを無効にし、即ち、特徴情報が特定条件を満たさない。現在ブロックの高さの値がCTU_Sizeより小さい場合、または、現在ブロックの幅の値がCTU_Sizeより小さい場合、応用シナリオ1~応用シナリオ7中のいずれか1つを採用し、三角形予測モードを有効にするか否かを確定する。
【0093】
例として、CTU_Sizeとは、現在ブロックによって許可される最大サイズであり、128でよく、他の数値でもよい。
【0094】
応用シナリオ9:
現在ブロックの高さの値または幅の値がCTU_Sizeである場合、三角形予測モードを無効にし、即ち、特徴情報が特定条件を満たさない。現在ブロックの高さの値がCTU_Sizeより小さく、且つ現在ブロックの幅の値がCTU_Sizeより小さい場合、応用シナリオ1~応用シナリオ7中のいずれか1つを採用し、三角形予測モードを有効にするか否かを確定する。
【0095】
例として、CTU_Sizeとは、現在ブロックによって許可される最大サイズであり、128でよく、その他の数値でもよい。
【0096】
(実施例5)
ステップ302及びステップ402において、符号化側/復号化側で、現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成する必要がある。以下、動き情報リストを構成するプロセスを説明する。
【0097】
態様1:
符号化側/復号化側で、複数の候補動き情報を含む動き情報リストを構成し、例えば、5つの候補動き情報を含んでよいが、これに限定されない。例えば、現在ブロックに対応する候補ブロックを取得し、候補ブロックの動き情報を動き情報リストに追加し、動き情報リストにおける各動き情報は、候補動き情報と呼ばれてよい。
【0098】
現在ブロックに対応する候補ブロックについては、
図5Aに示すように、7つの位置にあるブロックを、現在ブロックに対応する候補ブロックとして用いる。
図5Aにおいて、ブロック1と、ブロック2と、ブロック3と、ブロック4と、ブロック5とは、現在フレームにおける候補ブロックであるが、ブロック6とブロック7とは、他のフレームにおける候補ブロック(即ち、時間領域に対応するブロック)である。まず、これらの7つの位置における利用可能な動き情報を収集して、単方向動き情報、双方向予測のL0動き情報、双方向予測のL1動き情報、双方向予測のL0動き情報とL1動き情報との平均値の順に並べる。そして、並べられた上位5つの動き情報を、動き情報リストに追加する。動き情報リストに追加された動き情報の数量が5以下である場合は、ゼロ動きベクトルで補充してよい。上記の補充プロセスでは、動き情報リストに重複する動き情報が存在することを避けるように、重複チェックを行ってもよい。
【0099】
態様2:
符号化側/復号化側で、通常のマージモードの動き情報リスト構成方式の再利用により、現在ブロックのために、動き情報リストを構成する。例えば、通常のマージモードの動き情報リスト構成方式を確定し、通常のマージモードの動き情報リスト構成方式に基づいて、現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成する。即ち、三角形予測モードの動き情報リスト構成方式は、通常のマージモードの動き情報リスト構成方式と同じである。
【0100】
例えば、通常のマージモードの動き情報リスト構成方式は、
図5Bに示すように、現在ブロックに対応する候補ブロックがブロックA1と、ブロックA0と、ブロックB0と、ブロックB1と、ブロックB2とを含み、これらの5つの位置における利用可能な動き情報を收集し、ブロックA1、ブロックA0、ブロックB0、ブロックB1、ブロックB2の順に、收集された利用可能な動き情報を並べて、並べられた上位複数の動き情報(例えば、上位5つの動き情報)を動き情報リストに補充する、ことである。三角形予測モードの動き情報リスト構成方式は、これらの5つの位置における利用可能な動き情報を収集し、ブロックA1、ブロックA0、ブロックB0、ブロックB1、ブロックB2の順に、收集された利用可能な動き情報を並べて、並べられた上位複数の動き情報(例えば、上位5つの動き情報)を動き情報リストに補充する、ことである。無論、上記の方式は、通常のマージモードが動き情報リストを構成する例示であり、制限されない。
【0101】
(実施例6)
ステップ303及びステップ403において、符号化側/復号化側で、現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックっとに区画する必要がある。例えば、
図6Aに示すように、主対角線(水平方向から時計回りに45度回転した角度)で、現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画してよく、または、
図6Bに示すように、副対角線(水平方向から時計回りに135度回転した角度)で、現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画してもよい。
【0102】
現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画するために、以下の態様を採用してよい。
【0103】
態様1:
符号化側では、プロトコルによって、デフォルトで主対角線法を使用して現在ブロックを区画するが、復号化側では、プロトコルによって、デフォルトで主対角線法を使用して現在ブロックを区画する。これを基に、
図6Aに示すように、符号化側では、主対角線法(水平方向から時計回りに45度回転した角度)で、現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する一方、復号化側では、主対角線法で、現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する。
【0104】
態様2:
符号化側では、プロトコルによって、デフォルトで副対角線法を使用して現在ブロックを区画する一方、復号化側では、プロトコルによって、デフォルトで副対角線法を使用して現在ブロックを区画する。これを基に、
図6Bに示すように、符号化側では、副対角線法(水平方向から時計回りに135度回転した角度)で、現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する一方、復号化側では、副対角線法で、現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する。
【0105】
態様3:
符号化側で、主対角線による区画方式に対応するレート歪みコスト1と、副対角線による区画方式に対応するレート歪みコスト2とを確定し、レート歪みコスト1及びレート歪みコスト2を確定する方式が限定されない。レート歪みコスト1がレート歪みコスト2より小さい場合、
図6Aに示すように、符号化側で、主対角線法で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する。または、レート歪みコスト1がレート歪みコスト2より大きい場合、
図6Bに示すように、符号化側で、副対角線法で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する。無論、符号化側では、他の対策または決定によって、主対角線法または副対角線法で三角形サブブロックを区画してもよいが、これに限定されない。
【0106】
符号化側から復号化側へ符号化ビットストリームを送信する時に、当該符号化ビットストリームは、例えば主対角線による区画方式または副対角線による区画方式のような、三角形サブブロックの区画情報を示すための第1の指示情報を含んでよい。
【0107】
例えば、符号化側では、主対角線法で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する場合、三角形サブブロックの区画情報は、主対角線による区画方式である。符号化側では、副対角線法で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する場合、三角形サブブロックの区画情報は、副対角線による区画方式である。
【0108】
復号化側で、符号化ビットストリームを受信した後、符号化ビットストリームから、例えば主対角線による区画方式または副対角線による区画方式のような、三角形サブブロックの区画情報を示すための第1の指示情報を取得する。三角形サブブロックの区画情報が主対角線による区画方式である場合、
図6Aに示すように、復号化側では、現在ブロックの主対角線で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する。三角形サブブロックの区画情報が副対角線による区画方式である場合、
図6Bに示すように、復号化側では、現在ブロックの副対角線で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する。
【0109】
無論、上記の3つの態様は例示に過ぎず、該三角形サブブロックの区画方式は限定されない。
【0110】
(実施例7)
上記の実施例6において、符号化側から復号化側へ符号化ビットストリームを送信する時に、当該符号化ビットストリームは、三角形サブブロックの区画情報を示すための第1の指示情報を含んでよく、例えば、1つのフラグビットにより三角形サブブロックの区画情報を示す。例えば、フラグビットが第1のタグ0である場合は、三角形サブブロックの区画情報が主対角線による区画方式であることを示す。フラグビットが第2のタグ1である場合は、三角形サブブロックの区画情報が副対角線による区画方式であることを示す。
【0111】
例として、三角形サブブロックの区画情報について、符号化側では、CABAC方式で第1の指示情報を符号化する。無論、CABAC方式は例示に過ぎず、この符号化方式は限定されない。CABAC方式は、少なくとも1つのコンテキストモデルを保存及び更新する必要があるCABACモード(以下、コンテキスト適応型バイナリ算術符号化と呼ばれる)と、コンテキストモデルを格納及び更新する必要がないバイパスによるCABACモード(以下、バイパスによるバイナリ算術符号化と呼ばれる)という2つのモードがある。そのうえ、バイパスによるバイナリ算術符号化方式で第1の指示情報(例えば、三角形サブブロックの区画情報のフラグビット)を符号化し、または、コンテキスト適応型バイナリ算術符号化方式で第1の指示情報を符号化し、即ち、コンテキストモデルによるコンテキスト適応型バイナリ算術符号化方式で第1の指示情報を符号化する。
【0112】
符号化側では、CABAC方式で第1の指示情報を符号化すると、復号化側では、CABAC方式で第1の指示情報を復号化する。例えば、符号化側では、バイパスによるバイナリ算術符号化方式で第1の指示情報を符号化する場合、復号化側では、バイパスによるバイナリ算術復号化方式で第1の指示情報を復号化して、三角形サブブロックの区画情報を得る。または、符号化側ではコンテキスト適応型バイナリ算術符号化方式で第1の指示情報を符号化する場合、復号化側では、コンテキスト適応型バイナリ算術復号化方式で第1の指示情報を復号化して、三角形サブブロックの区画情報を得る。即ち、コンテキストモデルによるコンテキスト適応型バイナリ算術復号化方式で第1の指示情報を復号化して、三角形サブブロックの区画情報を得る。
【0113】
以上のように、第1の指示情報を復号化した後、例えば三角形サブブロックの区画情報を示すフラグビットのような三角形サブブロックの区画情報を得ることができる。フラグビットが第1のタグ0である場合は、三角形サブブロックの区画情報が主対角線による区画方式であることを示す。フラグビットが第2のタグ1である場合は、三角形サブブロックの区画情報が副対角線による区画方式であることを示す。
【0114】
以上のように、復号化側では、三角形サブブロックの区画情報のフラグビットを復号化でき、例えば、バイパスモードを用いるCABAC方式でエントロピー復号化し、即ちコンテキストモデルを格納及び更新する必要がない。または、三角形サブブロックの区画情報のフラグビットを復号化し、例えばコンテキストモデルを含むモードを用いるCABAC方式でエントロピー復号化する。
【0115】
(実施例8)
ステップ304及びステップ404において、符号化側/復号化側で、動き情報リストから第1の三角形サブブロックの第1の目標動き情報と第2の三角形サブブロックの第2の目標動き情報とを取得し、第1の目標動き情報と第2の目標動き情報とは異なってもよい。以下、第1の目標動き情報と第2の目標動き情報を取得するプロセスを説明する。
【0116】
態様1:
符号化側では、プロトコルによって、第1の目標動き情報をデフォルトにする。例えば、符号化側では、動き情報リストにおける1つ目の候補動き情報が第1の三角形サブブロックの第1の目標動き情報であることをデフォルトにする。一方、復号化側では、プロトコルによって、第1の目標動き情報をデフォルトにする。例えば、復号化側では、動き情報リストにおける1つ目の候補動き情報が第1の三角形サブブロックの第1の目標動き情報であることをデフォルトにする。そして、符号化側では、プロトコルによって、第2の目標動き情報をデフォルトにする。例えば、符号化側では、動き情報リストにおける2つ目の候補動き情報が第2の三角形サブブロックの第2の目標動き情報であることをデフォルトにする。一方、復号化側では、プロトコルによって、第2の目標動き情報をデフォルトにする。例えば、復号化側では、動き情報リストにおける2つ目の候補動き情報が第2の三角形サブブロックの第2の目標動き情報であることをデフォルトにする。
【0117】
態様2:
符号化側では、動き情報リストにおける各候補動き情報に対応するレート歪みコストを確定し、最小レート歪みコストに対応する候補動き情報を第1の三角形サブブロックの第1の目標動き情報とするが、この確定方式は限定されない。符号化側では、動き情報リストから第1の目標動き情報を除外する(即ち、動き情報リストにおける第1の目標動き情報を選択しない)うえに、動き情報リスト中の他の各候補動き情報(即ち、第1の目標動き情報を除外した後に他の各候補動き情報)に対応するレート歪みコストを確定し、最小レート歪みコストに対応する候補動き情報を第2の三角形サブブロックの第2の目標動き情報とする。無論、符号化側では、他の対策で第1の三角形サブブロックの第1の目標動き情報及び第2の三角形サブブロックの第2の目標動き情報を確定してもよいが、これに限定されない。
【0118】
符号化側から復号化側へ符号化ビットストリームを送信する時に、当該符号化ビットストリームは、第2の指示情報を含んでよく、当該第2の指示情報は、動き情報リストにおける第1の目標動き情報の第1のインデックス値(第1の目標動き情報が動き情報リスト中のどの候補動き情報であるかを示すために用いられる)、及び動き情報リストにおける第2の目標動き情報の第2のインデックス値(第2の目標動き情報が動き情報リスト中のどの候補動き情報であるかを示すために用いられる)を示すために用いられる。
【0119】
復号化側では、符号化ビットストリームを受信した後、当該符号化ビットストリームから、第2の指示情報を取得し、当該第2の指示情報は、動き情報リストにおける第1の目標動き情報の第1のインデックス値(第1の目標動き情報が動き情報リスト中のどの候補動き情報であるかを示すために用いられる)、動き情報リストにおける第2の目標動き情報の第2のインデックス値(第2の目標動き情報が動き情報リスト中のどの候補動き情報であるかを示すために用いられる)を示すために用いられる。当該第2の指示情報によって示される第1のインデックス値に基づいて、復号化側では、動き情報リストから当該第1のインデックス値に対応する候補動き情報を取得し、取得された当該第1のインデックス値に対応する候補動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。そして、当該第2の指示情報によって示される第2のインデックス値に基づいて、復号化側では、動き情報リストから、当該第2のインデックス値に対応する候補動き情報を取得し、取得された第2のインデックス値に対応する候補動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0120】
(実施例9)
上記の実施例8において、符号化側/復号化側では、第1のインデックス値の偶奇性に基づいて、第1の三角形サブブロックの第1の目標動き情報がどの単方向動き情報を用いるかを確定し、そして、符号化側/復号化側では、第2のインデックス値の偶奇性に基づいて、第2の三角形サブブロックの第2の目標動き情報がどの単方向動き情報を用いるかを確定することができる。
【0121】
復号化側では、符号化ビットストリームから第1のインデックス値(動き情報リストにおける第1の目標動き情報のインデックス値を示した)を取得した後、第1のインデックス値が偶数である場合、第1のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含むか否かを判断する。list0に対応する単方向動き情報を含む場合、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。list0に対応する単方向動き情報を含まない場合、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。
【0122】
例として、復号化側では、動き情報リストから第1のインデックス値に対応する候補動き情報を取得する。第1のインデックス値が偶数であり、且つ、第1のインデックス値に対応する候補動き情報が双方向動き情報であり、前記双方向動き情報がlist0に対応する単方向動き情報とlist1に対応する単方向動き情報とを含む場合、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。第1のインデックス値が偶数であり、且つ、第1のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist0に対応する単方向動き情報である場合、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。第1のインデックス値が偶数であり、且つ、第1のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist1に対応する単方向動き情報である場合、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。
【0123】
復号化側では、符号化ビットストリームから第1のインデックス値(動き情報リストにおける第1の目標動き情報のインデックス値を示した)を取得した後、第1のインデックス値が奇数である場合、第1のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含むか否かを判断する。list1に対応する単方向動き情報を含む場合、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。list1に対応する単方向動き情報を含まない場合、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。
【0124】
例として、復号化側では、動き情報リストから第1のインデックス値に対応する候補動き情報を取得する。第1のインデックス値が奇数であり、且つ、第1のインデックス値に対応する候補動き情報が双方向動き情報であり、前記双方向動き情報がlist0に対応する単方向動き情報とlist1に対応する単方向動き情報とを含む場合、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。第1のインデックス値が奇数であり、且つ、第1のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist1に対応する単方向動き情報である場合、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。第1のインデックス値が奇数であり、且つ、第1のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist0に対応する単方向動き情報である場合、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。
【0125】
復号化側では、符号化ビットストリームから第2のインデックス値(動き情報リストにおける第2の目標動き情報のインデックス値を示した)を取得した後、第2のインデックス値が偶数である場合、第2のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含むか否かを判断する。list0に対応する単方向動き情報を含む場合、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。list0に対応する単方向動き情報を含まない場合、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0126】
例として、復号化側では、動き情報リストから第2のインデックス値に対応する候補動き情報を取得する。第2のインデックス値が偶数であり、且つ、第2のインデックス値に対応する候補動き情報が双方向動き情報であり、前記双方向動き情報がlist0に対応する単方向動き情報とlist1に対応する単方向動き情報とを含む場合、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。第2のインデックス値が偶数であり、且つ、第2のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist0に対応する単方向動き情報である場合、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。第2のインデックス値が偶数であり、且つ、第2のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist1に対応する単方向動き情報である場合、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0127】
復号化側では、符号化ビットストリームから第2のインデックス値(動き情報リストにおける第2の目標動き情報のインデックス値を示した)を取得した後、第2のインデックス値が奇数である場合、第2のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含むか否かを判断する。list1に対応する単方向動き情報を含む場合、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。list1に対応する単方向動き情報を含まない場合、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0128】
例として、復号化側では、動き情報リストから第2のインデックス値に対応する候補動き情報を取得する。第2のインデックス値が偶数であり、且つ、第2のインデックス値に対応する候補動き情報が双方向動き情報であり、前記双方向動き情報がlist0に対応する単方向動き情報とlist1に対応する単方向動き情報とを含む場合、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。第2のインデックス値が奇数であり、且つ、第2のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist1に対応する単方向動き情報である場合、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。第2のインデックス値が奇数であり、且つ、第2のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist0に対応する単方向動き情報である場合、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0129】
符号化側では、第1の三角形サブブロックの第1の目標動き情報を確定する時に、動き情報リストから最小レート歪みコストに対応する候補動き情報(以下、A1と記す)を選択し後、候動き情報リストにおける補動き情報A1のインデックス値である第1のインデ
ックス値を確定し、第1のインデックス値は、動き情報リストにおける候補動き情報A1の位置を示す。
【0130】
第1のインデックス値が偶数である場合、符号化側では、候補動き情報A1にlist0に対応する単方向動き情報を含むか否かを判断する。list0に対応する単方向動き情報を含む場合、符号化側では、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。list0に対応する単方向動き情報を含まない場合、符号化側では、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。
【0131】
第1のインデックス値が奇数である場合、符号化側では、候補動き情報A1にlist1に対応する単方向動き情報を含むか否かを判断する。list1に対応する単方向動き情報を含む場合、符号化側では、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。list1に対応する単方向動き情報を含まない場合、符号化側では、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。
【0132】
符号化側では、第2の三角形サブブロックの第2の目標動き情報を確定する時に、動き情報リストから最小レート歪みコストに対応する候補動き情報(以下、A2と記す)を選択し後、候動き情報リストにおける補動き情報A2のインデックス値である第2のインデックス値を確定し、第2のインデックス値は、動き情報リストにおける候補動き情報A2の位置を示す。
【0133】
第2のインデックス値が偶数である場合、符号化側では、候補動き情報A2にlist0に対応する単方向動き情報を含むか否かを判断する。list0に対応する単方向動き情報を含む場合、符号化側では、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。list0に対応する単方向動き情報を含まない場合、符号化側では、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0134】
第2のインデックス値が奇数である場合、符号化側では、候補動き情報A2にlist1に対応する単方向動き情報を含むか否かを判断する。list1に対応する単方向動き情報を含む場合、符号化側では、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。list1に対応する単方向動き情報を含まない場合、符号化側では、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0135】
以上のように、
図7Aに示すように、第1のインデックス値/第2のインデックス値が偶数である時に、第1のインデックス値/第2のインデックス値に対応する候補動き情報に、list0に対応する単方向動き情報が存在する場合、list0に対応する単方向動き情報を目標動き情報とするが、第1のインデックス値/第2のインデックス値に対応する候補動き情報に、list0に対応する単方向動き情報が存在しない場合、list1に対応する単方向動き情報を目標動き情報とする。第1のインデックス値/第2のインデックス値が奇数である時に、第1のインデックス値/第2のインデックス値に対応する候補動き情報に、list1に対応する単方向動き情報が存在する場合、list1に対応する単方向動き情報を目標動き情報とするが、第1のインデックス値/第2のインデックス値に対応する候補動き情報に、list1に対応する単方向動き情報が存在しない場合、list0に対応する単方向動き情報を目標動き情報とする。
【0136】
上記の実施例では、第1のインデックス値は、candIdx1としてよく、第2のインデックス値は、candIdx2としてよい。
【0137】
例として、現在ブロックの所属する現在フレームのフレームタイプがBフレームである場合、Bフレームは、複数のList(参照フレームリスト)を指すインター予測ブロックが同時に存在することを許可し、例えば、list0を指すインター予測ブロックと、list1を指すインター予測ブロックとが同時に存在する。そのため、現在ブロックが所属する現在フレームがBフレームである場合、現在ブロックが所属する現在フレームの参照フレーム構成は、2つの参照フレームリストを含んでよい。これらの2つの参照フレームリストは、それぞれlist0とlist1でもよい。以上のように、候補動き情報は、list0に対応する単方向動き情報またはlist1に対応する単方向動き情報のような単方向動き情報でもよく、又は、list0に対応する単方向動き情報とlist1に対応する単方向動き情報とを含む双方向動き情報でもよい。
【0138】
(実施例10)
上記の実施例8において、符号化側/復号化側では、第1のインデックス値の偶奇性に基づいて、第1の三角形サブブロックの第1の目標動き情報がどの単方向動き情報を用いるかを確定してよく、符号化側/復号化側では、第2のインデックス値の偶奇性に基づいて、第2の三角形サブブロックの第2の目標動き情報がどの単方向動き情報を用いるかを確定してもよい。
【0139】
復号化側では、符号化ビットストリームから第1のインデックス値(動き情報リストにおける第1の目標動き情報のインデックス値を示した)を取得した後、第1のインデックス値が奇数である場合、第1のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含むか否かを判断する。list0に対応する単方向動き情報を含む場合、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。list0に対応する単方向動き情報を含まない場合、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。
【0140】
例として、復号化側では、動き情報リストから第1のインデックス値に対応する候補動き情報を取得する。第1のインデックス値が奇数であり、且つ、第1のインデックス値に対応する候補動き情報が双方向動き情報であり、前記双方向動き情報がlist0に対応する単方向動き情報とlist1に対応する単方向動き情報とを含む場合、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。第1のインデックス値が奇数であり、且つ、第1のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist0に対応する単方向動き情報である場合、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。第1のインデックス値が奇数であり、且つ、第1のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist1に対応する単方向動き情報である場合、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。
【0141】
復号化側では、符号化ビットストリームから第1のインデックス値(動き情報リストにおける第1の目標動き情報のインデックス値を示した)を取得した後、第1のインデックス値が偶数である場合、第1のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含むか否かを判断する。list1に対応する単方向動き情報を含む場合、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。list1に対応する単方向動き情報を含まない場合、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。
【0142】
例として、復号化側では、動き情報リストから第1のインデックス値に対応する候補動き情報を取得する。第1のインデックス値が偶数であり、且つ、第1のインデックス値に対応する候補動き情報が双方向動き情報であり、前記双方向動き情報がlist0に対応する単方向動き情報とlist1に対応する単方向動き情報とを含む場合、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。第1のインデックス値が偶数であり、且つ、第1のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist1に対応する単方向動き情報である場合、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。第1のインデックス値が偶数であり、且つ、第1のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist0に対応する単方向動き情報である場合、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。
【0143】
復号化側では、符号化ビットストリームから第2のインデックス値(動き情報リストにおける第2の目標動き情報のインデックス値を示した)を取得した後、第2のインデックス値が奇数である場合、第2のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含むか否かを判断する。list0に対応する単方向動き情報を含む場合、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。list0に対応する単方向動き情報を含まない場合、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0144】
例として、復号化側では、動き情報リストから第2のインデックス値に対応する候補動き情報を取得する。第2のインデックス値が奇数であり、且つ、第2のインデックス値に対応する候補動き情報が双方向動き情報であり、前記双方向動き情報がlist0に対応する単方向動き情報とlist1に対応する単方向動き情報とを含む場合、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。第2のインデックス値が奇数であり、且つ、第2のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist0に対応する単方向動き情報である場合、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。第2のインデックス値が奇数であり、且つ、第2のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist1に対応する単方向動き情報である場合、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0145】
復号化側では、符号化ビットストリームから第2のインデックス値(動き情報リストにおける第2の目標動き情報のインデックス値を示した)を取得した後、第2のインデックス値が偶数である場合、第2のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含むか否かを判断する。list1に対応する単方向動き情報を含む場合、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。list1に対応する単方向動き情報を含まない場合、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0146】
例として、復号化側では、動き情報リストから第2のインデックス値に対応する候補動き情報を取得する。第2のインデックス値が偶数であり、且つ、第2のインデックス値に対応する候補動き情報が双方向動き情報であり、前記双方向動き情報がlist0に対応する単方向動き情報とlist1に対応する単方向動き情報とを含む場合、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。第2のインデックス値が偶数であり、且つ、第2のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist1に対応する単方向動き情報である場合、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。第2のインデックス値が偶数であり、且つ、第2のインデックス値に対応する候補動き情報が単方向動き情報であり、前記単方向動き情報がlist0に対応する単方向動き情報である場合、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0147】
符号化側では、第1の三角形サブブロックの第1の目標動き情報を確定する時に、動き情報リストから最小レート歪みコストに対応する候補動き情報(以下、A1と記す)を選択し後、候動き情報リストにおける補動き情報A1のインデックス値である第1のインデックス値を確定し、第1のインデックス値は、動き情報リストにおける候補動き情報A1の位置を示す。
【0148】
第1のインデックス値が奇数である場合、符号化側では、候補動き情報A1にlist0に対応する単方向動き情報を含むか否かを判断する。list0に対応する単方向動き情報を含む場合、符号化側では、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。list0に対応する単方向動き情報を含まない場合、符号化側では、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。
【0149】
第1のインデックス値が偶数である場合、符号化側では、候補動き情報A1にlist1に対応する単方向動き情報を含むか否かを判断する。list1に対応する単方向動き情報を含む場合、符号化側では、list1に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。list1に対応する単方向動き情報を含まない場合、符号化側では、list0に対応する単方向動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。
【0150】
符号化側では、第2の三角形サブブロックの第2の目標動き情報を確定する時に、動き情報リストから最小レート歪みコストに対応する候補動き情報(以下、A2と記す)を選択し後、候動き情報リストにおける補動き情報A2のインデックス値である第2のインデックス値を確定し、第2のインデックス値は、動き情報リストにおける候補動き情報A2の位置を示す。
【0151】
第2のインデックス値が奇数である場合、符号化側では、候補動き情報A2にlist0に対応する単方向動き情報を含むか否かを判断する。list0に対応する単方向動き情報を含む場合、符号化側では、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。list0に対応する単方向動き情報を含まない場合、符号化側では、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0152】
第2のインデックス値が偶数である場合、符号化側では、候補動き情報A2にlist1に対応する単方向動き情報を含むか否かを判断する。list1に対応する単方向動き情報を含む場合、符号化側では、list1に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。list1に対応する単方向動き情報を含まない場合、符号化側では、list0に対応する単方向動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0153】
(実施例11)
前記の実施例8において、符号化側/復号化側では、動き情報リストに基づいて、第1の候補集合と第2の候補集合とを取得してよい。例として、当該第1の候補集合は、当該動き情報リストにおける候補動き情報の一部を含んでよく、当該第2の候補集合は、当該動き情報リストにおける候補動き情報の一部を含んでよく、且つ、当該第1の候補集合における候補動き情報と当該第2の候補集合における候補動き情報とは完全に同一ではない。
【0154】
符号化側からみると、符号化側では、第1の候補集合における各候補動き情報に対応するレート歪みコストを確定し、最小レート歪みコストに対応する候補動き情報を第1の三角形サブブロックの第1の目標動き情報とする。そして、符号化側では、第2の候補集合から第1の目標動き情報を除外し、第2の候補集合中の他の各候補動き情報(即ち、第1の目標動き情報を除外した後に他の各候補動き情報)に対応するレート歪みコストを確定し、最小レート歪みコストに対応する候補動き情報を第2の三角形サブブロックの第2の目標動き情報とする。
【0155】
符号化側から復号化側へ符号化ビットストリームを送信する時に、当該符号化ビットストリームは、第2の指示情報を含んでよく、当該第2の指示情報は、第1の候補集合における第1の目標動き情報の第1のインデックス値(第1の目標動き情報が第1の候補集合中のどの候補動き情報であるかを示すため)、第2の候補集合における第2の目標動き情報の第2のインデックス値(第2の目標動き情報が第2の候補集合中のどの候補動き情報であるかを示すため)を示すために用いられる。
【0156】
復号化側からみると、復号化側で符号化ビットストリームを受信した後、復号化側では、当該符号化ビットストリームから第2の指示情報を取得してよく、当該第2の指示情報は、第1の候補集合における第1の目標動き情報の第1のインデックス値と、第2の候補集合における第2の目標動き情報の第2のインデックス値とを示すために用いられる。当該第2の指示情報によって示される当該第1のインデックス値に基づいて、復号化側で、第1の候補集合から当該第1のインデックス値に対応する候補動き情報を取得し、取得された当該第1のインデックス値に対応する候補動き情報を第1の三角形サブブロックの第1の目標動き情報として確定する。また、当該第2の指示情報によって示される当該第2のインデックス値に基づいて、復号化側で、第2の候補集合から当該第2のインデックス値に対応する候補動き情報を取得し、取得された当該第2のインデックス値に対応する候補動き情報を第2の三角形サブブロックの第2の目標動き情報として確定する。
【0157】
(実施例12)
図7Bに示すように、
図7Bは、splitDir=0時の三角形サブブロックの区画の模式図であり、splitDirは、区画方向のフラグビットであり、三角形サブブロックの区画情報を示し、splitDir=0は、主対角線(水平方向から時計回りに45度回転した角度)で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画することを示し、動き情報リストに、ブロックA1の動き情報と、ブロックB1の動き情報と、ブロックB0の動き情報と、ブロックA0の動き情報と、ブロックB2の動き情報とを含む。
【0158】
例として、動き情報リストにおける動き情報の並び順序は、ブロックA1の動き情報、ブロックB1の動き情報、ブロックB0の動き情報、ブロックA0の動き情報、ブロックB2の動き情報でもよい。ブロックA1の動き情報が利用可能である場合、上記の順序に従って、ブロックA1の動き情報を動き情報リストに追加する。ブロックA1の動き情報が利用不可能である場合、ブロックA1の動き情報を動き情報リストに追加しない。ブロックB1の動き情報が利用可能である場合、上記の順序に従って、ブロックB1の動き情報を動き情報リストに追加する。ブロックB1の動き情報が利用不可能である場合、ブロックB1の動き情報を動き情報リストに追加しない。他の場合も同様である。実際の応用では、ブロックB0の動き情報とブロックA0の動き情報との間に、例えば、時間領域動き情報等のような他のタイプの動き情報を挿入してもよく、これに限定されない。
【0159】
上部の第1の三角形サブブロックについては、ブロックA1の動き情報とブロックA0の動き情報とが選択されない概率が高い。仮に、動き情報リストにおいて、ブロックA1の動き情報のインデックス値が0であり、ブロックB0の動き情報のインデックス値が1であり、ブロックB1の動き情報のインデックス値が2であり、ブロックA0の動き情報のインデックス値が3であり、ブロックB2の動き情報のインデックス値は4であり、第1の候補集合に、ブロックB0の動き情報と、ブロックB1の動き情報と、ブロックB2の動き情報とを含むこととする。
【0160】
符号化側では、第1のインデックス値「0」によって、ブロックB0の動き情報を符号化し、第1の候補集合における1つ目の候補動き情報も動き情報リストにおける2つ目の候補動き情報であることを示す。つまり、第1のインデックス値「0」は、動き情報リストのインデックス値1に対応する。符号化側では、第1のインデックス値「10」によって、ブロックB1の動き情報を符号化し、第1の候補集合における2つ目の候補動き情報も、動き情報リストにおける3つ目の候補動き情報であることを示す。つまり、第1のインデックス値「10」は、動き情報リストのインデックス値2に対応する。符号化側では、第1のインデックス値「11」によって、ブロックB2の動き情報を符号化し、第1の候補集合における3つ目の候補動き情報も、動き情報リストにおける5つ目の候補動き情報であることを示す。つまり、第1のインデックス値「11」は、動き情報リストのインデックス値4に対応する。
【0161】
復号化側では、符号化ビットストリームから第1のインデックス値を取得した後、第1のインデックス値が「0」である場合、復号化側で、第1の候補集合における1つ目の候補動き情報(即ち、動き情報リストにおける2つ目の候補動き情報)を第1の三角形サブブロックの第1の目標動き情報とする。第1のインデックス値が「10」である場合、復号化側で、第1の候補集合における2つ目の候補動き情報(即ち、動き情報リストにおける3つ目の候補動き情報)を第1の三角形サブブロックの第1の目標動き情報とする。第1のインデックス値が「11」である場合、復号化側で、第1の候補集合における3つ目の候補動き情報(即ち、動き情報リストにおける5つ目の候補動き情報)を第1の三角形サブブロックの第1の目標動き情報とする。
【0162】
下部の第2の三角形サブブロックについては、ブロックB1の動き情報とブロックB0の動き情報とが選択されない概率が高い。仮に、動き情報リストにおいて、ブロックA1の動き情報のインデックス値が0であり、ブロックB0の動き情報のインデックス値が1であり、ブロックB1の動き情報のインデックス値が2であり、ブロックA0の動き情報のインデックス値が3であり、ブロックB2の動き情報のインデックス値は4であり、第2の候補集合に、ブロックA0の動き情報と、ブロックA1の動き情報と、ブロックB2の動き情報とを含むこととする。
【0163】
符号化側では、第2のインデックス値「0」によって、ブロックA1の動き情報を符号化し、第2の候補集合における1つ目の候補動き情報も、動き情報リストにおける1つ目の候補動き情報であることを示す。つまり、第2のインデックス値「0」は、動き情報リストのインデックス値0に対応する。符号化側では、第2のインデックス値「10」によって、ブロックA0の動き情報を符号化し、第2の候補集合における2つ目の候補動き情報も、動き情報リストにおける4つ目の候補動き情報であることを示す。つまり、第2のインデックス値「10」は、動き情報リストのインデックス値3に対応する。符号化側では、第2のインデックス値「11」によって、ブロックB2の動き情報を符号化し、第2の候補集合における3つ目の候補動き情報も、動き情報リストにおける5つ目の候補動き情報であることを示す。つまり、第2のインデックス値「11」は、動き情報リストのインデックス値4に対応する。
【0164】
復号化側では、符号化ビットストリームから第2のインデックス値を取得した後、第2のインデックス値が「0」である場合、復号化側で、第2の候補集合における1つ目の候補動き情報(即ち、動き情報リストにおける1つ目の候補動き情報)を第2の三角形サブブロックの第2の目標動き情報とする。第2のインデックス値が「10」である場合、復号化側で、第2の候補集合における2つ目の候補動き情報(即ち、動き情報リストにおける4つ目の候補動き情報)を第2の三角形サブブロックの第2の目標動き情報とする。第2のインデックス値が「11」である場合、復号化側で、第2の候補集合における3つ目の候補動き情報(即ち、動き情報リストにおける5つ目の候補動き情報)を第2の三角形サブブロックの第2の目標動き情報とする。
【0165】
例として、第2の目標動き情報と第1の目標動き情報とは異なり、即ち第2のインデックス値と第1のインデックス値とは動き情報リストにおける同一の候補動き情報を対応できないため、第1の目標動き情報がブロックB2の動き情報であり、即ち第1のインデックス値が「11」である場合、第2の候補集合に、ブロックA0の動き情報とブロックA1の動き情報とを含む。
【0166】
符号化側では、第2のインデックス値「0」によって、ブロックA1の動き情報を符号化し、第2の候補集合における1つ目の候補動き情報も、動き情報リストにおける1つ目の候補動き情報であることを示す。符号化側では、第2のインデックス値「1」によって、ブロックA0の動き情報を符号化し、第2の候補集合における2つ目の候補動き情報も、動き情報リストにおける4つ目の候補動き情報であることを示す。復号化側では、符号化ビットストリームから第2のインデックス値を取得した後、第2のインデックス値が「0」である場合、第2の候補集合における1つ目の候補動き情報(即ち、動き情報リストにおける1つ目の候補動き情報)を第2の三角形サブブロックの第2の目標動き情報とする。第2のインデックス値が「1」である場合、第2の候補集合における2つ目の候補動き情報(即ち、動き情報リストにおける4つ目の候補動き情報)を第2の三角形サブブロックの第2の目標動き情報とする。
【0167】
例として、第1の目標動き情報がブロックB2の動き情報ではない場合、第2の候補集合に、ブロックA0の動き情報と、ブロックA1の動き情報と、ブロックB2の動き情報とを含む。コーデック方法は、上記の実施例を参照すればよいため、ここで説明を省略する。
【0168】
以上のように、第1のインデックス値(candIdx1)が11であり、即ち、動き情報リストのインデックス値4に対応する場合、第2のインデックス値(candIdx2)が、インデックス値0とインデックス値3との2つの可能性があるため、符号化側で、第2のインデックス値「0」によって、インデックス値0に対応する動き情報(即ち、動き情報リストにおける1つ目の候補動き情報)を符号化し、符号化側で、第2のインデックス値「1」によって、符号化インデックス値3に対応する動き情報(即ち、動き情報リストにおける4つ目の候補動き情報)を符号化する。第1のインデックス値(candIdx1)が11ではなく、即ち、動き情報リストのインデックス値4に対応しない場合、第2のインデックス値を復号化するプロセスは、表1を参照してよい。この場合、第2のインデックス値(candIdx2)が、インデックス値0と、インデックス値3と、インデックス値4という3つの可能性があるため、符号化側では、第2のインデックス値「0」によって、インデックス値0に対応する動き情報を符号化し、第2のインデックス値「10」によって、インデックス値3に対応する動き情報を符号化し、第2のインデックス値「11」によって、インデックス値4に対応する動き情報を符号化する。
【0169】
【0170】
例として、もう1つの可能な実施形態では、第1のインデックス値(candIdx1)を、インデックス値1と2に対応するように制限してよく、即ち第1のインデックス値がブロックB0の動き情報(インデックス値が1である)またはブロックB1の動き情報(インデックス値が2である)に対応する。つまり、第1のインデックス値(candIdx1)は、ただ1つのビットだけによって符号化を行う必要がある。例えば、0によってインデックス値1を符号化し、1によってインデックス値2を符号化する。第2のインデックス値(candIdx2)は、インデックス値0、3、4に対応してよく、即ち、第2のインデックス値は、ブロックA1の動き情報(インデックス値が0である)と、ブロックA0の動き情報(インデックス値が3である)と、ブロックB2の動き情報(インデックス値が4である)に対応する。第2のインデックス値に対応する動き情報と第1のインデックス値に対応する動き情報とが異なることは、明らかである。これを基に、0、10、11によって、これらの3つのインデックス値を符号化する。例えば、0によってインデックス値0を符号化し、10によってインデックス値3を符号化し、11によってインデックス値4を符号化する。上記の形態は、第1のインデックス値に依存して復号化するプロセスを必要としないため、解析に依存することを低減させる。
【0171】
例として、もう1つの可能な実施形態では、第1のインデックス値(candIdx1)を、インデックス値1、2、4に対応するように制限してよく、即ち第1のインデックス値がブロックB0の動き情報(インデックス値が1である)と、ブロックB1の動き情報(インデックス値が2である)と、ブロックB2の動き情報(インデックス値が4である)に対応する。つまり、第1のインデックス値(candIdx1)は、0、10、11によって符号化を行ってよい。例えば、0によってインデックス値1を符号化し、10によってインデックス値2を符号化し、11によってインデックス値4を符号化する。第2のインデックス値(candIdx2)をインデックス値0、3に対応するように制限してよく、即ち第2のインデックス値がブロックA1の動き情報(インデックス値が0である)と、ブロックA0の動き情報(インデックス値が3である)に対応する。第2のインデックス値に対応する動き情報と第1のインデックス値に対応する動き情報とが異なることは、明らかである。これを基に、0と1によって、この2つのインデックス値を符号化してよく、例えば、0によってインデックス値0を符号化し、1によってインデックス値3を符号化する。上記の形態は、第1のインデックス値に依存して復号化するプロセスを必要としないため、解析に依存することを低減させる。
【0172】
(実施例13)
図7Cに示すように、
図7Cは、splitDir=1時の三角形サブブロックの区画の模式図であり、splitDirは、区画方向のフラグビットであり、三角形サブブロックの区画情報を示し、splitDir=1は、副対角線(水平方向から時計回りに135度回転した角度)で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画することを示し、動き情報リストは、ブロックA1の動き情報と、ブロックB1の動き情報と、ブロックB0の動き情報と、ブロックA0の動き情報と、ブロックB2の動き情報とを含む。
【0173】
上部の第1の三角形サブブロックについては、第1の三角形サブブロックのための第1の候補集合を構成する必要がなく、符号化側/復号化側では、直接に動き情報リストから第1の目標動き情報を選択してよい。この選択プロセスについて、説明を省略する。
【0174】
下部の第2の三角形サブブロックについては、ブロックB2の動き情報が選択されない概率が高い。仮に、動き情報リストにおいて、ブロックA1の動き情報のインデックス値が0であり、ブロックB0の動き情報のインデックス値が1であり、ブロックB1の動き情報のインデックス値が2であり、ブロックA0の動き情報のインデックス値が3であり、ブロックB2の動き情報のインデックス値は4であり、第2の候補集合に、ブロックA1の動き情報と、ブロックA0の動き情報と、ブロックB0の動き情報と、ブロックB1の動き情報とを含むこととする。
【0175】
第1の目標動き情報が動き情報リストにおける5つ目の動き情報(ブロックB2の動き情報)であり、第1の目標動き情報に対応するインデックス値が4である場合、符号化側では、第2のインデックス値「0」によって、ブロックA1の動き情報を符号化し、第2の候補集合における1つ目の候補動き情報も、動き情報リストにおける1つ目の候補動き情報であることを示す。つまり、第2のインデックス値「0」は、動き情報リストのインデックス値0に対応する。符号化側では、第2のインデックス値「10」によって、ブロックB0の動き情報を符号化し、第2の候補集合における2つ目の候補動き情報も、動き情報リストにおける2つ目の候補動き情報であることを示す。つまり、第2のインデックス値「10」は、動き情報リストのインデックス値1に対応する。符号化側では、第2のインデックス値「110」によって、ブロックB1の動き情報を符号化し、第2の候補集合における3つ目の候補動き情報も、動き情報リストにおける3つ目の候補動き情報であることを示す。つまり、第2のインデックス値「110」は、動き情報リストのインデックス値2に対応する。符号化側では、第2のインデックス値「111」によって、ブロックA0の動き情報を符号化し、第2の候補集合における4つ目の候補動き情報も、動き情報リストにおける4つ目の候補動き情報であることを示す。つまり、第2のインデックス値「111」は、動き情報リストのインデックス値3に対応する。
【0176】
復号化側では、符号化ビットストリームから第2のインデックス値を取得した後、第2のインデックス値が「0」である場合、復号化側では、第2の候補集合における1つ目の候補動き情報(即ち、動き情報リストにおける1つ目の候補動き情報)を第2の三角形サブブロックの第2の目標動き情報とする。第2のインデックス値が「10」である場合、復号化側では、第2の候補集合における2つ目の候補動き情報(即ち、動き情報リストにおける2つ目の候補動き情報)を第2の三角形サブブロックの第2の目標動き情報とする。第2のインデックス値が「110」である場合、復号化側では、第2の候補集合における3つ目の候補動き情報(即ち、動き情報リストにおける3つ目の候補動き情報)を第2の三角形サブブロックの第2の目標動き情報とする。第2のインデックス値が「111」である場合、復号化側では、第2の候補集合における4つ目の候補動き情報(即ち、動き情報リストにおける4つ目の候補動き情報)を第2の三角形サブブロックの第2の目標動き情報とする。
【0177】
第1のインデックス値がインデックス値4に対応しない場合、第1の目標動き情報が動き情報リストにおける4つ目の動き情報(即ち、ブロックA0の動き情報)であることを示す。以下、第1のインデックス値がインデックス値3に対応することを例として説明する。この場合、符号化側では、第2のインデックス値「0」によって、ブロックA1の動き情報を符号化し、第2の候補集合における1つ目の候補動き情報も、動き情報リストにおける1つ目の候補動き情報であることを示す。つまり、第2のインデックス値「0」は、動き情報リストのインデックス値0に対応する。符号化側では、第2のインデックス値「10」によって、ブロックB0の動き情報を符号化し、第2の候補集合における2つ目の候補動き情報も、動き情報リストにおける2つ目の候補動き情報であることを示す。つまり、第2のインデックス値「10」は、動き情報リストのインデックス値1に対応する。符号化側では、第2のインデックス値「11」によって、ブロックB1の動き情報を符号化し、第2の候補集合における3つ目の候補動き情報も、動き情報リストにおける3つ目の候補動き情報であることを示す。つまり、第2のインデックス値「11」は、動き情報リストのインデックス値2に対応する。
【0178】
復号化側では、符号化ビットストリームから第2のインデックス値を取得した後、第2のインデックス値が「0」である場合、復号化側では、第2の候補集合における1つ目の候補動き情報(即ち、動き情報リストにおける1つ目の候補動き情報)を第2の三角形サブブロックの第2の目標動き情報とする。第2のインデックス値が「10」である場合、復号化側では、第2の候補集合における2つ目の候補動き情報(即ち、動き情報リストにおける2つ目の候補動き情報)を第2の三角形サブブロックの第2の目標動き情報とする。第2のインデックス値が「11」である場合、復号化側では、第2の候補集合における3つ目の候補動き情報(即ち、動き情報リストにおける3つ目の候補動き情報)を第2の三角形サブブロックの第2の目標動き情報とする。
【0179】
以上のように、第1のインデックス値(candIdx1)が11であり、即ち動き情報リストのインデックス値4に対応する場合、第2のインデックス値(candIdx2)を復号化するプロセスは、表2に参照してよい。第1のインデックス値(candIdx1)が11ではなく、即ち動き情報リストのインデックス値4に対応しない場合、第2のインデックス値(candIdx2)を復号化するプロセスは、表3に参照してよい。
【0180】
【0181】
【0182】
例として、もう1つの可能な実施形態において、第2のインデックス値(candIdx2)を先に符号化してよい。第2のインデックス値(candIdx2)がインデックス値0、インデックス値1、インデックス値2、インデックス値3に対応しかない可能性があるため、0、10、110、111を用いて符号化してよい。即ち、最大3ビットを用いて、第2のインデックス値(candIdx2)を符号化する。例えば、0によってインデックス値0を符号化し、10によってインデックス値1を符号化し、110によってインデックス値2を符号化し、111によってインデックス値3を符号化する。そして、第1のインデックス値(candIdx1)を符号化してよく、即ち、candIdx1-=candIdx1<candIdx2?0:1。つまり、第1のインデックス値(candIdx1)は、インデックス値0、インデックス値1、インデックス値2、インデックス値3、インデックス値4の中から第2のインデックス値(candIdx2)を除去した後に残っている4つのインデックス値である。そのため、0、10、110、111を用いて符号化してよく、即ち、最大3ビットを用いて、第1のインデックス値(candIdx1)を符号化する。明らかに、この形態において、前の1つのインデックス値の大きさに依存して、現在復号化しようとするビット数を確定する必要がないため、解析に依存することを低減させる。
【0183】
例として、splitDir=1である時に、第2のインデックス値(candIdx2)を先に符号化してから、第1のインデックス値(candIdx1)を符号化してよい。splitDir=0である時に、第1のインデックス値(candIdx1)を先に符号化してから、第2のインデックス値(candIdx2)を符号化してよい。または、第2のインデックス値(candIdx2)を先に符号化してから、第1のインデックス値(candIdx1)を符号化してよい。
【0184】
例として、splitDir=0である時に、実施例12を用いて処理してよく、splitDir=1である時に、実施例13を用いて処理してよい。無論、上記の実施例12と実施例13とは例示に過ぎず、これらに限定されない。
【0185】
例として、上記のインデックス値を符号化する例は、動き情報リストには5つの候補動き情報を含む場合を説明したが、当動き情報リストに他の例示の候補動き情報を含む場合、その実現方式は類似するため、ここで説明を省略する。
【0186】
(実施例14)
上記の実施例では、符号化側から復号化側へ符号化ビットストリームを送信する時に、当該符号化ビットストリームは、動き情報リストにおける第1の目標動き情報の第1のインデックス値と動き情報リストにおける第2の目標動き情報の第2のインデックス値とを示すための第2の指示情報を含んでよい。例として、第1のインデックス値について、符号化側では、CABAC方式で第1のインデックス値を符号化し、復号化側では、CABAC方式で第1のインデックス値を復号化してよい。第2のインデックス値について、符号化側では、CABAC方式で第2のインデックス値を符号化し、復号化側では、CABAC方式で第2のインデックス値を復号化してよい。無論、CABACは1つの例示に過ぎず、これに限定されない。
【0187】
例として、仮に、動き情報リストには5つの候補動き情報を含み、4ビットによって第1のインデックス値(candIdx1とする)を示し、4ビットによって第2のインデックス値(candIdx2とする)を示すこととする。
【0188】
符号化側では、candIdx1が動き情報リストにおける1つ目の候補動き情報を示す場合、CABAC方式で1つ目のビットを符号化し、1つ目のビットが0である。candIdx1が動き情報リストにおける2つ目の候補動き情報を示す場合、CABAC方式で1つ目のビット及び2つ目のビットを符号化し、1つ目のビットが1であり、2つ目のビットが0である。candIdx1が動き情報リストにおける3つ目の候補動き情報を示す場合、CABAC方式で1つ目のビット、2つ目のビット及び3つ目のビットを符号化し、1つ目のビットが1であり、2つ目のビットが1であり、3つ目のビットが0である。candIdx1が動き情報リストにおける4つ目の候補動き情報を示す場合、CABAC方式で1つ目のビット、2つ目のビット、3つ目のビット及び4つ目のビットを符号化し、1つ目のビットが1であり、2つ目のビットが1であり、3つ目のビットが1であり、4つ目のビットが0である。candIdx1が動き情報リストにおける5つ目の候補動き情報を示す場合、CABAC方式で1つ目のビット、2つ目のビット、3つ目のビット及び4つ目のビットを符号化し、1つ目のビットが1であり、2つ目のビットが1であり、3つ目のビットが1であり、4つ目のビットが1である。
【0189】
復号化側では、まず、CABAC方式でcandIdx1の1つ目のビットを復号化する。1つ目のビットが0である場合、candIdx1が0に対応することを確定し、candIdx1は、動き情報リストにおける1つ目の候補動き情報を示す。1つ目のビットが1である場合、CABAC方式でcandIdx1の2つ目のビットを復号化する。2つ目のビットが0である場合、candIdx1が1(10で表す)に対応することを確定し、candIdx1は、動き情報リストにおける2つ目の候補動き情報を示す。2つ目のビットが1である場合、CABAC方式でcandIdx1の3つ目のビットを復号化する。3つ目のビットが0である場合、candIdx1が2(110で表す)に対応することを確定し、candIdx1は、動き情報リストにおける3つ目の候補動き情報を示す。3つ目のビットが1である場合、CABAC方式でcandIdx1の4つ目のビットを復号化する。4つ目のビットが0である場合、candIdx1が3(1110で表す)に対応することを確定し、candIdx1は、動き情報リストにおける4つ目の候補動き情報を示す。4つ目のビットが1である場合、ビット数が最大数に達しているため、candIdx1が4(1111で表す)に対応することを確定し、candIdx1は、動き情報リストにおける5つ目の候補動き情報を示す。
例として、復号化するプロセスにおいて、終了条件は、復号化されたビットが0であること、または、復号化されたビット数が最大数(numCandminus1)に達することである。numCandminus1は、文法情報によって取得されてよいが、これに限定されない。例えば、numCandminus1が4である場合、第1のインデックス値candIdx1のビット数の最大数が4であることを示す。
【0190】
上記の実施例では、符号化側ではcandIdx1を符号化するプロセス、及び復号化側ではcandIdx1を復号化するプロセスを説明したが、candIdx2を符号化するプロセス及びcandIdx2を復号化するプロセスは、上記の実施例と類似しているため、ここで説明を省略する。
【0191】
例として、上記の実施例については、candIdx1/candIdx2に対応するビットが表4に示す。
【0192】
【0193】
(実施例15)
上記の実施例では、符号化側から復号化側へ符号化ビットストリームを送信する時に、当該符号化ビットストリームは、動き情報リストにおける第1の目標動き情報の第1のインデックス値と動き情報リストにおける第2の目標動き情報の第2のインデックス値とを示すための第2の指示情報を含んでよい。例として、第1のインデックス値について、符号化側では、CABAC方式で第1のインデックス値を符号化し、復号化側ではCABAC方式で第1のインデックス値を復号化してよい。第2のインデックス値について、符号
化側では、CABAC方式で第2のインデックス値を符号化し、復号化側ではCABAC方式で第2のインデックス値を復号化してよい。無論、CABACは1つの例示に過ぎず、これに限定されない。
【0194】
CABACは、少なくとも1つのコンテキストモデルを保存及び更新する必要があるCABACモード(以下、コンテキスト適応型バイナリ算術符号化)と、コンテキストモデルを格納及び更新する必要がないバイパスによるCABACモード(以下、バイパスによるバイナリ算術符号化)とを含む。バイパスによるバイナリ算術符号化方式で第1のインデックス値を符号化し、または、コンテキスト適応型バイナリ算術符号化方式で第1のインデックス値を符号化し、即ち、コンテキストモデルによるコンテキスト適応型バイナリ算術符号化方式で第1のインデックス値を符号化する。バイパスによるバイナリ算術符号化方式で第2のインデックス値を符号化し、または、コンテキスト適応型バイナリ算術符号化方式で第2のインデックス値を符号化し、即ち、コンテキストモデルによるコンテキスト適応型バイナリ算術符号化方式で第2のインデックス値を符号化する。
【0195】
符号化側では、CABAC方式で第1のインデックス値を符号化する時に、復号化側では、CABAC方式で第1のインデックス値を復号化する。例えば、符号化側では、バイパスによるバイナリ算術符号化方式で第1のインデックス値を符号化する時に、復号化側では、バイパスによるバイナリ算術復号化方式で第1のインデックス値を復号化し、第1のインデックス値を得る。符号化側では、コンテキスト適応型バイナリ算術符号化方式で第1のインデックス値を符号化する時に、復号化側では、コンテキスト適応型バイナリ算術復号化方式で第1のインデックス値を復号化し、第1のインデックス値を得、即ち、コンテキストモデルによるコンテキスト適応型バイナリ算術復号化方式で第1のインデックス値を復号化し、第1のインデックス値を得る。
【0196】
符号化側では、CABAC方式で第2のインデックス値を符号化する時に、復号化側では、CABAC方式で第2のインデックス値を復号化する。例えば、符号化側では、バイパスによるバイナリ算術符号化方式で第2のインデックス値を符号化する時に、復号化側では、バイパスによるバイナリ算術復号化方式で第2のインデックス値を復号化し、第2のインデックス値を得る。符号化側では、コンテキスト適応型バイナリ算術符号化方式で第2のインデックス値を符号化する時に、復号化側では、コンテキスト適応型バイナリ算術復号化方式で第2のインデックス値を復号化し、第2のインデックス値を得、即ち、コンテキストモデルによるコンテキスト適応型バイナリ算術復号化方式で第2のインデックス値を復号化し、第2のインデックス値を得る。
【0197】
例として、第1のインデックス値は、M1ビットを含んでよく、M1ビット中のN1ビットがコンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得され、M1ビット中の残りの(M1-N1)ビットがバイパスによるバイナリ算術復号化によって取得され、M1がN1以上である。例えば、第1のインデックス値は、4ビットを含み、1つ目のビットがコンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得され、2、3、4つ目のビットがバイパスによるバイナリ算術復号化によって取得される。
【0198】
例えば、第1のインデックス値における1つ目のビットについて、符号化側では、コンテキストモデルによるコンテキスト適応型バイナリ算術符号化方式で1つ目のビットを符号化する。復号化側では、コンテキストモデルによるコンテキスト適応型バイナリ算術復号化方式で1つ目のビットを復号化し、1つ目のビットを得る。
【0199】
第1のインデックス値には、他のビット(例えば、2つ目のビット、3つ目のビット、4つ目のビット等)がある場合、符号化側では、バイパスによるバイナリ算術符号化方式で他のビットを符号化する。復号化側では、バイパスによるバイナリ算術復号化方式で他のビットを復号化し、他のビットを得る。
【0200】
以上のように、1つ目のビットについて、符号化側/復号化側では、あるコンテキストモデルを更新するCABAC方法を採用して符号化/復号化してよい。他のビットについて、符号化側/復号化側では、コンテキストモデルを更新しないCABAC方法を採用して符号化/復号化してよく、即ち、BypassモードのCABAC方法を用いる。
【0201】
例として、第2のインデックス値は、M2ビットを含んでよく、M2ビット中のN2ビットがコンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得され、M2ビット中の残りの(M2-N2)ビットがバイパスによるバイナリ算術復号化によって取得され、M2がN2以上である。例えば、第2のインデックス値は、4ビットを含み、1つ目のビットがコンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得され、2、3、4つ目のビットがバイパスによるバイナリ算術復号化によって取得される。
【0202】
例えば、第2のインデックス値における1つ目のビットについて、符号化側では、コンテキストモデルによるコンテキスト適応型バイナリ算術符号化方式で1つ目のビットを符号化する。復号化側では、コンテキストモデルによるコンテキスト適応型バイナリ算術復号化方式で1つ目のビットを復号化し、1つ目のビットを得る。
【0203】
第2のインデックス値には、他のビット(例えば、2つ目のビット、3つ目のビット、4つ目のビット等)がある場合、符号化側では、バイパスによるバイナリ算術符号化方式で他のビットを符号化する。復号化側では、バイパスによるバイナリ算術復号化方式で他のビットを復号化し、他のビットを得る。
【0204】
以上のように、1つ目のビットについて、符号化側/復号化側では、あるコンテキストモデルを更新するCABAC方法を採用して符号化/復号化してよいが、その他のビットについて、符号化側/復号化側では、コンテキストモデルを更新しないCABAC方法を採用して符号化/復号化してよく、即ち、BypassモードのCABAC方法を用いる。
【0205】
(実施例16)
第1のインデックス値に対応するコンテキストモデルと第2のインデックス値に対応するコンテキストモデルとが同じである。または、第1のインデックス値に対応するコンテキストモデルと第2のインデックス値に対応するコンテキストモデルとが異なる。または、第1のインデックス値及び第1の区画情報に対応するコンテキストモデルと、第2のインデックス値及び第1の区画情報に対応するコンテキストモデルとが同じであり、第1のインデックス値及び第2の区画情報に対応するコンテキストモデルと、第2のインデックス値及び第2の区画情報に対応するコンテキストモデルとが同じであり、第1のインデックス値及び第1の区画情報に対応するコンテキストモデルと、第1のインデックス値及び第2の区画情報に対応するコンテキストモデルとが異なる。または、第1のインデックス値及び第1の区画情報に対応するコンテキストモデルと、第2のインデックス値及び第1の区画情報に対応するコンテキストモデルと、第1のインデックス値及び第2の区画情報に対応するコンテキストモデルと、第2のインデックス値及び第2の区画情報に対応するコンテキストモデルとは、互いに異なる。または、第1のインデックス値及び第1の区画情報に対応するコンテキストモデルと、第2のインデックス値及び第1の区画情報に対応するコンテキストモデルとが異なり、第1のインデックス値及び第2の区画情報に対応するコンテキストモデルと、第2のインデックス値及び第2の区画情報に対応するコンテキストモデルとが同じである。または、第1のインデックス値及び第1の区画情報に対応するコンテキストモデルと、第2のインデックス値及び第1の区画情報に対応するコンテキストモデルとが同じであり、第1のインデックス値及び第2の区画情報に対応するコンテキストモデルと、第2のインデックス値及び第2の区画情報に対応するコンテキストモデルとが異なる。例として、第1の区画情報は、三角形サブブロックの区画情報が主対角線による区画方式であることを示し、第2の区画情報は、三角形サブブロックの区画情報が副対角線による区画方式であることを示す。
【0206】
以下、いくつか具体的な応用シナリオを参照して、上記の的コンテキストモデルを詳しく説明する。
【0207】
応用シナリオ1:
符号化側/復号化側では、コンテキストモデルA1Modelを維持してよく、第1のインデックス値(三角形予測モードにおいて、第1の三角形サブブロックの第1の目標動き情報のインデックス値を示すため)に対応するコンテキストモデルがコンテキストモデルA1Modelであり、第2のインデックス値(三角形予測モードにおいて、第2の三角形サブブロックの第2の目標動き情報のインデックス値を示すため)に対応するコンテキストモデルがコンテキストモデルA1Modelであり、通常のマージモデルのインデックス値に対応するコンテキストモデルがコンテキストモデルA1Modelである。
【0208】
例として、符号化側/復号化側では、コンテキストモデルによって、第1のインデックス値を符号化し、または復号化する必要がある場合、コンテキストモデルA1Modelを採用して第1のインデックス値(例えば、第1のインデックス値の1つ目のビット)を符号化し、または復号化する。符号化側/復号化側では、コンテキストモデルによって、第2のインデックス値を符号化または復号化する必要がある場合、コンテキストモデルA1Modelを採用して第2のインデックス値(例えば、第2のインデックス値の1つ目のビット)を符号化または復号化する。符号化側/復号化側では、コンテキストモデルによって、通常のマージモデルのインデックス値を符号化または復号化する必要がある場合、コンテキストモデルA1Modelを採用して通常のマージモデルのインデックス値(例えば、通常のマージモデルのインデックス値の1つ目のビット)を符号化または復号化する。
【0209】
応用シナリオ2:
符号化側/復号化側では、コンテキストモデルB1ModelおよびコンテキストモデルB2Modelを維持してよく、第1のインデックス値に対応するコンテキストモデルがコンテキストモデルB1Modelであり、第2のインデックス値に対応するコンテキストモデルがコンテキストモデルB1Modelであり、通常のマージモード(例えば、regular mergeモード)のインデックス値に対応するコンテキストモデルがコンテキストモデルB2Modelである。
【0210】
例として、符号化側/復号化側では、コンテキストモデルによって、第1のインデックス値を符号化または復号化する必要がある場合、コンテキストモデルB1Modelを採用して第1のインデックス値(例えば、第1のインデックス値の1つ目のビット)を符号化または復号化する。符号化側/復号化側では、コンテキストモデルによって、第2のインデックス値を符号化または復号化する必要がある場合、コンテキストモデルB1Modelを採用して第2のインデックス値(例えば、第2のインデックス値の1つ目のビット)を符号化または復号化する。符号化側/復号化側では、コンテキストモデルによって、通常のマージモデルのインデックス値を符号化または復号化する必要がある場合、コンテキストモデルB2Modelを採用して通常のマージモデルのインデックス値(例えば、通常のマージモデルのインデックス値の1つ目のビット)を符号化または復号化する。
【0211】
応用シナリオ3:
符号化側/復号化側では、コンテキストモデルC1と、コンテキストモデルC2と、コンテキストモデルC3とを維持してよく、第1のインデックス値に対応するコンテキストモデルがコンテキストモデルC1であり、第2のインデックス値に対応するコンテキストモデルがコンテキストモデルC2であり、通常のマージモード(例えば、regular mergeモード)のインデックス値に対応するコンテキストモデルがコンテキストモデルC3である。
【0212】
例として、符号化側/復号化側では、コンテキストモデルによって、第1のインデックス値を符号化または復号化する必要がある場合、コンテキストモデルC1を採用して第1のインデックス値(例えば、第1のインデックス値の1つ目のビット)を符号化または復号化する。符号化側/復号化側では、コンテキストモデルによって、第2のインデックス値を符号化または復号化する必要がある場合、コンテキストモデルC2を採用して第2のインデックス値(例えば、第2のインデックス値の1つ目のビット)を符号化または復号化する。符号化側/復号化側では、コンテキストモデルによって、通常のマージモデルのインデックス値を符号化または復号化する必要がある場合、コンテキストモデルC3を採用して通常のマージモデルのインデックス値(例えば、通常のマージモデルのインデックス値の1つ目のビット)を符号化または復号化する。
【0213】
応用シナリオ4:
符号化側/復号化側では、コンテキストモデルD1と、コンテキストモデルD2と、コンテキストモデルD3とを維持してよい。例として、第1のインデックス値及び第1の区画情報に対応するコンテキストモデルがコンテキストモデルD1であり、第2のインデックス値及び第1の区画情報に対応するコンテキストモデルがコンテキストモデルD1である。第1のインデックス値及び第2の区画情報に対応するコンテキストモデルがコンテキストモデルD2あり、第2のインデックス値及び第2の区画情報に対応するコンテキストモデルがコンテキストモデルD2である。通常のマージモード(例えば、regular mergeモード)のインデックス値に対応するコンテキストモデルがコンテキストモデルD3である。
【0214】
例として、符号化側/復号化側では、コンテキストモデルによって、第1のインデックス値を符号化または復号化する必要がある場合、三角形サブブロックの区画情報を先に確定する。三角形サブブロックの区画情報が第1の区画情報(主対角線(水平方向から時計回りに45度回転した角度)で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画することを示す)である場合、コンテキストモデルD1を採用して第1のインデックス値(例えば、第1のインデックス値の1つ目のビット)を符号化または復号化する。三角形サブブロックの区画情報が第2の区画情報(副対角線(水平方向から時計回りに135度回転した角度)で現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画することを示す)である場合、コンテキストモデルD2を採用して第1のインデックス値(例えば、第1のインデックス値の1つ目のビット)を符号化または復号化する。符号化側/復号化側では、コンテキストモデルによって、第2のインデックス値を符号化または復号化する必要がある場合、三角形サブブロックの区画情報を先に確定する。三角形サブブロックの区画情報が第1の区画情報である場合、コンテキストモデルD1を採用して第2のインデックス値(例えば、第2のインデックス値の1つ目のビット)を符号化または復号化する。三角形サブブロックの区画情報が第2の区画情報である場合、コンテキストモデルD2を採用して第2のインデックス値(例えば、第2のインデックス値の1つ目のビット)を符号化または復号化する。符号化側/復号化側では、コンテキストモデルによって、通常のマージモデルのインデックス値を符号化または復号化する必要がある場合、コンテキストモデルD3を採用して通常のマージモデルのインデックス値(例えば、通常のマージモデルのインデックス値の1つ目のビット)を符号化または復号化する。
【0215】
応用シナリオ5:
符号化側/復号化側では、コンテキストモデルE1と、コンテキストモデルE2と、コンテキストモデルE3と、コンテキストモデルE4と、コンテキストモデルE5とを維持してよい。例として、第1のインデックス値及び第1の区画情報に対応するコンテキストモデルがコンテキストモデルE1であり、第1のインデックス値及び第2の区画情報に対応するコンテキストモデルがコンテキストモデルE2であり、第2のインデックス値及び第1の区画情報に対応するコンテキストモデルがコンテキストモデルE3であり、第2のインデックス値及び第2の区画情報に対応するコンテキストモデルがコンテキストモデルE4である。通常のマージモデルのインデックス値に対応するコンテキストモデルは、コンテキストモデルE5である。
【0216】
例として、符号化側/復号化側では、コンテキストモデルによって、第1のインデックス値を符号化または復号化する場合、三角形サブブロックの区画情報を確定する。三角形サブブロックの区画情報が第1の区画情報である場合、コンテキストモデルE1を採用して第1のインデックス値(例えば、第1のインデックス値の1つ目のビット)を符号化または復号化する。三角形サブブロックの区画情報が第2の区画情報である場合、コンテキストモデルE2を採用して第1のインデックス値(例えば、第1のインデックス値の1つ目のビット)を符号化または復号化する。符号化側/復号化側では、コンテキストモデルによって、第2のインデックス値を符号化または復号化する場合、三角形サブブロックの区画情報を確定する。三角形サブブロックの区画情報が第1の区画情報である場合、コンテキストモデルE3を採用して第2のインデックス値(例えば、第2のインデックス値の1つ目のビット)を符号化または復号化する。三角形サブブロックの区画情報が第2の区画情報である場合、コンテキストモデルE4を採用して第2のインデックス値(例えば、第2のインデックス値の1つ目のビット)を符号化または復号化する。符号化側/復号化側では、コンテキストモデルによって、通常のマージモデルのインデックス値を符号化または復号化する必要がある場合、コンテキストモデルE5を採用して通常のマージモデルのインデックス値(例えば、通常のマージモデルのインデックス値の1つ目のビット)を符号化または復号化する。
【0217】
応用シナリオ6:
符号化側/復号化側では、コンテキストモデルF1と、コンテキストモデルF2と、コンテキストモデルF3と、コンテキストモデルF4とを維持してよい。例として、第1のインデックス値及び第1の区画情報に対応するコンテキストモデルがコンテキストモデルF1でもよく、第2のインデックス値及び第1の区画情報に対応するコンテキストモデルがコンテキストモデルF2でもよい。第1のインデックス値及び第2の区画情報に対応するコンテキストモデルがコンテキストモデルF3でもよく、第2のインデックス値と第2の区画情報に対応するコンテキストモデルがコンテキストモデルF3でもよい。通常のマージモデルのインデックス値に対応するコンテキストモデルは、コンテキストモデルF4である。
【0218】
例として、符号化側/復号化側では、コンテキストモデルによって、第1のインデックス値を符号化または復号化する場合、三角形サブブロックの区画情報を確定する。三角形サブブロックの区画情報が第1の区画情報である場合、コンテキストモデルF1を採用して第1のインデックス値(例えば、第1のインデックス値の1つ目のビット)を符号化または復号化する。三角形サブブロックの区画情報が第2の区画情報である場合、コンテキストモデルF3を採用して第1のインデックス値(例えば、第1のインデックス値の1つ目のビット)を符号化または復号化する。符号化側/復号化側では、コンテキストモデルによって、第2のインデックス値を符号化または復号化する場合、三角形サブブロックの区画情報を確定する。三角形サブブロックの区画情報が第1の区画情報である場合、コンテキストモデルF2を採用して第2のインデックス値(例えば、第2のインデックス値の1つ目のビット)を符号化または復号化する。三角形サブブロックの区画情報が第2の区画情報である場合、コンテキストモデルF3を採用して第2のインデックス値(例えば、第2のインデックス値の1つ目のビット)を符号化または復号化する。符号化側/復号化側では、コンテキストモデルによって、通常のマージモデルのインデックス値を符号化または復号化する必要がある場合、コンテキストモデルF4を採用して通常のマージモデルのインデックス値(例えば、通常のマージモデルのインデックス値の1つ目のビット)を符号化または復号化する。
【0219】
応用シナリオ7:
符号化側/復号化側では、コンテキストモデルG1と、コンテキストモデルG2と、コンテキストモデルG3と、コンテキストモデルG4とを維持してよい。例として、第1のインデックス値及び第1の区画情報に対応するコンテキストモデルがコンテキストモデルG1でもよく、第2のインデックス値及び第1の区画情報に対応するコンテキストモデルがコンテキストモデルG1でもよい。第1のインデックス値及び第2の区画情報に対応するコンテキストモデルがコンテキストモデルG2でもよく、第2のインデックス値及び第2の区画情報に対応するコンテキストモデルがコンテキストモデルG3でもよい。通常のマージモデルのインデックス値に対応するコンテキストモデルは、コンテキストモデルG4である。
【0220】
符号化側/復号化側では、コンテキストモデルによって、第1のインデックス値を符号化または復号化する場合、三角形サブブロックの区画情報を確定する。三角形サブブロックの区画情報が第1の区画情報である場合、コンテキストモデルG1を採用して第1のインデックス値(例えば、第1のインデックス値の1つ目のビット)を符号化または復号化する。三角形サブブロックの区画情報が第2の区画情報である場合、コンテキストモデルG2を採用して第1のインデックス値(例えば、第1のインデックス値の1つ目のビット)を符号化または復号化する。符号化側/復号化側では、コンテキストモデルによって、第2のインデックス値を符号化または復号化する場合、三角形サブブロックの区画情報を確定する。三角形サブブロックの区画情報が第1の区画情報である場合、コンテキストモデルG1を採用して第2のインデックス値(例えば、第2のインデックス値の1つ目のビット)を符号化または復号化する。三角形サブブロックの区画情報が第2の区画情報である場合、コンテキストモデルG3を採用して第2のインデックス値(例えば、第2のインデックス値の1つ目のビット)を符号化または復号化する。符号化側/復号化側では、コンテキストモデルによって、通常のマージモデルのインデックス値を符号化または復号化する必要がある場合、コンテキストモデルG4を採用して通常のマージモデルのインデックス値(例えば、通常のマージモデルのインデックス値の1つ目のビット)を符号化または復号化する。
【0221】
(実施例17)
符号化側については、三角形サブブロックの区画情報を先に符号化してから、第1のインデックス値と第2のインデックス値とを符号化する。復号化側については、三角形サブブロックの区画情報を先に復号化してから、第1のインデックス値と第2のインデックス値とを復号化する。または、符号化側については、第1のインデックス値と第2のインデックス値とを先に符号化してから、三角形サブブロックの区画情報を符号化する。復号化側については、第1のインデックス値と第2のインデックス値とを先に復号化してから、三角形サブブロックの区画情報を復号化する。
【0222】
(実施例18)
ステップ305およびステップ405において、符号化側/復号化側では、第1の目標動き情報に基づいて第1の三角形サブブロックに対して動き補償を行い、第1の三角形サブブロックの予測値を得、第2の目標動き情報に基づいて第2の三角形サブブロックに対して動き補償を行い、第2の三角形サブブロックの予測値を得る必要がある。上記のプロセスは、動き補償のプロセスである。
【0223】
例として、現在ブロックを複数のサブブロックに区画してよく、各サブブロックについては、前記サブブロックが第1の三角形サブブロック内に位置する場合、第1の目標動き情報に基づいて、前記サブブロックに対して動き補償を行う。前記サブブロックが第2の三角形サブブロック内に位置する場合、第2の目標動き情報に基づいて、前記サブブロックに対して動き補償を行う。前記サブブロックが同時に第1の三角形サブブロック内および第2の三角形サブブロック内に位置する場合、第1の目標動き情報と第2の目標動き情報とに基づいて、前記サブブロックに対して重み付き補償(重み付きの予測補償とも呼ばれる)を行う。
【0224】
例として、現在ブロックを第1の領域サブブロックと、第2の領域サブブロックと、第3の領域サブブロックとに区画してよい。第1の領域サブブロックが第1の三角形サブブロック内に位置し、第2の領域サブブロックが第2の三角形サブブロック内に位置し、第3の領域サブブロック内の各サブブロックの中心と、第1の三角形サブブロックおよび第2の三角形サブブロックを区画する対角線との垂直距離が予め設定される閾値より小さい。第1の目標動き情報に基づいて、第1の領域サブブロックに対して動き補償を行う。第2の目標動き情報に基づいて、第2の領域サブブロックに対して動き補償を行う。第1の目標動き情報と第2の目標動き情報とに基づいて、第3の領域サブブロックに対して重み付き補償を行う。例えば、第3の領域サブブロック内の各サブブロックに対して、第1の目標動き情報に基づいて、前記サブブロックの第1の予測値を確定し、第2の目標動き情報に基づいて、前記サブブロックの第2の予測値を確定し、第1の予測値と、第1の予測値に対応する第1の重み係数と、第2の予測値と、第2の予測値に対応する第2の重み係数とに基づいて、前記サブブロックに対して重み付き補償を行う。例えば、前記サブブロックが第1の三角形サブブロック内に位置する場合、第1の重み係数が第2の重み係数より大きい。前記サブブロックが第2の三角形サブブロック内に位置する場合、第1の重み係数が第2の重み係数より小さい。前記サブブロックが対角線に位置する場合、第1の重み係数と第2の重み係数とが等しい。その中、前記サブブロックが対角線に位置することは、前記サブブロックの中心が対角線に位置することを指す。
【0225】
図7Dに示すように、Z1領域のサブブロック(即ち、第1の領域サブブロック)については、Z1領域のサブブロックが第1の三角形サブブロック内に位置する場合、第1の三角形サブブロックの第1の目標動き情報によってZ1領域のサブブロックに対して動き補償を行い、予測値を得る。この動き補償プロセスは限定されない。Z2領域のサブブロック(即ち、第2の領域サブブロック)については、Z2領域のサブブロックが第2の三角形サブブロック内に位置する場合、第2の三角形サブブロックの第2の目標動き情報によってZ2領域のサブブロックに対して動き補償を行い、予測値を得る。この動き補償プロセスは限定されない。Z1領域及びZ2領域以外の他の領域のサブブロック(即ち、第3の領域サブブロック)については、1で示されたサブブロック(サブブロック1と記す)と、2で示されたサブブロック(サブブロック2と記す)と、3で示されたサブブロック(サブブロック3と記す)と、4で示されたサブブロック(サブブロック4と記す)と、5で示されたサブブロック(サブブロック5と記す)と、6で示されたサブブロック(サブブロック6と記す)と、7で示されたサブブロック(サブブロック7と記す)とを含む。
【0226】
7で示されたサブブロック7のそれぞれについては、第1の目標動き情報に基づいてサブブロック7の予測値P1を確定し、第2の目標動き情報に基づいてサブブロック7の予測値P2を確定しよく、仮に予測値P1の第1の重み係数がaであり、予測値P2の第2の重み係数がbであるとすると、サブブロック7に対して重み付き補償を行い、重み付き補償された予測値は、P1*a+P2*bである。サブブロック7が第1の三角形サブブロック内に位置するため、第1の重み係数aが第2の重み係数bより大きい。仮にaが7/8であり、bが1/8であるとすると、重み付き補償された予測値は、P1*7/8+P2*1/8である。
【0227】
6で示されたサブブロック6のそれぞれについては、その処理プロセスがサブブロック7を参照してよいため、ここで説明を省略する。サブブロック6が第1の三角形サブブロック内に位置するため、第1の重み係数aが第2の重み係数bより大きい。また、サブブロック6がサブブロック7よりP2領域に近づくため、サブブロック6の第1の重み係数aがサブブロック7の第1の重み係数aより小さくてよい。例えば、サブブロック6の第1の重み係数aが6/8であり、bが2/8であり、重み付き補償された予測値は、P1*6/8+P2*2/8である。
【0228】
5で示されたサブブロック5のそれぞれについては、その処理プロセスがサブブロック7を参照してよいため、ここで説明を省略する。サブブロック5の第1の重み係数aが5/8であり、サブブロック5の第2の重み係数bが3/8である場合、重み付き補償された予測値は、P1*5/8+P2*3/8である。
【0229】
4で示されたサブブロック4のそれぞれについては、その処理プロセスがサブブロック7を参照してよいため、ここで説明を省略する。サブブロック4が対角線に位置するため、第1の重み係数aが第2の重み係数bと等しくしてよい。例えば、サブブロック4の第1の重み係数aが4/8であり、サブブロック4の第2の重み係数bが4/8である場合、重み付き補償された予測値は、P1*4/8+P2*4/8である。
【0230】
3で示されたサブブロック3のそれぞれについては、その処理プロセスがサブブロック7を参照してよいため、ここで説明を省略する。サブブロック3の第1の重み係数aが3/8であり、サブブロック3の第2の重み係数bが5/8である場合、重み付き補償された予測値は、P1*3/8+P2*5/8である。
【0231】
2で示されたサブブロック2のそれぞれについては、その処理プロセスがサブブロック7を参照してよいため、ここで説明を省略する。サブブロック2が第2の三角形サブブロック内に位置するため、第1の重み係数aが第2の重み係数bより小さくしてよい。例えば、サブブロック2の第1の重み係数aが2/8であり、サブブロック2の第2の重み係数bが6/8である場合、重み付き補償された予測値は、P1*2/8+P2*6/8である。
【0232】
1で示されたサブブロック1のそれぞれについては、その処理プロセスがサブブロック7を参照してよいため、ここで説明を省略する。サブブロック1が第2の三角形サブブロック内に位置するため、第1の重み係数aが第2の重み係数bより小さい。また、サブブロック1がサブブロック2よりP2領域に近づくため、サブブロック1の第1の重み係数aがサブブロック2の第1の重み係数aより小さくしてよい。例えば、サブブロック1の第1の重み係数aが1/8であり、bが7/8である場合、重み付き補償された予測値は、P1*1/8+P2*7/8である。
【0233】
以上のように、本実施例は、輝度成分に用いられる重み付き係数を提供し、Z1領域からZ2領域への方向に、各サブブロックの第1の重み係数aが順番に{7/8、6/8、5/8、4/8、3/8、2/8、1/8}である。例えば、サブブロック7の第1の重み係数aが7/8であり、サブブロック6の第1の重み係数aが6/8であり、サブブロック5の第1の重み係数aが5/8であり、サブブロック4の第1の重み係数aが4/8であり、サブブロック3の第1の重み係数aが3/8であり、サブブロック2の第1の重み係数aが2/8であり、サブブロック1の第1の重み係数aが1/8である。上記の輝度成分とは、予測値P1が輝度予測値であり、予測値P2が輝度予測値であり、且つ重み付き補償された予測値P1*a+P2*bも輝度予測値であることを指す。
【0234】
図7Dに示すように、本実施例は、色度成分に用いられる重み付き係数を更に提供し、Z1領域からZ2領域への方向に、各サブブロックの第1の重み係数aが順番に{6/8、4/8、2/8}である。例えば、サブブロック6の第1の重み係数aが6/8であり、サブブロック4の第1の重み係数aが4/8であり、サブブロック2の第1の重み係数aが2/8である。上記の色度成分とは、予測値P
1が色度予測値であり、予測値P
2が色度予測値であり、且つ重み付き補償された予測値も色度予測値であることを指す。
【0235】
(実施例19)
ステップ306およびステップ406において、符号化側/復号化側では、現在ブロックの動き情報を格納する必要がある。第1の三角形サブブロックにおける重み付きなしの予測補償を用いるサブブロックに対して、当該サブブロックのための第1の目標動き情報を格納する。第2の三角形サブブロックにおける重み付きなしの予測補償を用いるサブブロックに対して、当該サブブロックのための第2の目標動き情報を格納する。重み付き予測補償を用いるサブブロックに対して、当該サブブロックのための、第1の目標動き情報、第2の目標動き情報または双方向動き情報を格納する。
【0236】
図7Eに示すように、仮に、ブロック2と、ブロック3と、ブロック4と、ブロック7と、ブロック8と、ブロック12とが第1の三角形サブブロックにおける重み付きなしの予測補償を用いるサブブロックであるとすると、ブロック2と、ブロック3と、ブロック4と、ブロック7と、ブロック8と、ブロック12のための第1の目標動き情報(即ち、第1の三角形サブブロックの第1の目標動き情報)を格納してよい。仮にブロック5と、ブロック9と、ブロック10と、ブロック13と、ブロック14と、ブロック15とが第2の三角形サブブロックにおける重み付きなしの予測補償を用いるサブブロックであるとすると、ブロック5と、ブロック9と、ブロック10と、ブロック13と、ブロック14と、ブロック15のための第2の目標動き情報(即ち、第2の三角形サブブロックの第2の目標動き情報)を格納してよい。仮にブロック1と、ブロック6と、ブロック11と、ブロック16とが重み付きの予測補償を用いるサブブロックであるとすると、ブロック1と、ブロック6と、ブロック11と、ブロック16のための第1の目標動き情報、第2の目標動き情報または双方向動き情報を格納してよい。具体的な格納方式は、後続する実施例を参照してよい。
【0237】
図7Fに示すように、仮に、ブロック1と、ブロック2と、ブロック3と、ブロック5と、ブロック6と、ブロック9とが第1の三角形サブブロックにおける重み付きなしの予測補償を用いるサブブロックであるとすると、ブロック1と、ブロック2と、ブロック3と、ブロック5と、ブロック6と、ブロック9のための第1の目標動き情報(即ち、第1の三角形サブブロックの第1の目標動き情報)を格納してよい。仮にブロック8と、ブロック11と、ブロック12と、ブロック14と、ブロック15と、ブロック16とが第2の三角形サブブロックにおける重み付きなしの予測補償を用いるサブブロックであるとすると、ブロック8と、ブロック11と、ブロック12と、ブロック14と、ブロック15と、ブロック16のための第2の目標動き情報(即ち、第2の三角形サブブロックの第2の目標動き情報)を格納してよい。仮にブロック4と、ブロック7と、ブロック10と、ブロック13とが重み付きの予測補償を用いるサブブロックであるとすると、ブロック4と、ブロック7と、ブロック10と、ブロック13のための第1の目標動き情報、第2の目標動き情報または双方向動き情報を格納してよい。具体的な格納方式は、後続する実施例を参照してよい。
【0238】
例として、4*4の大きさのサブブロックのそれぞれのための動き情報を格納してよいが、無論、サブブロックの大きさは限定されない。
【0239】
(実施例20)
第1の三角形サブブロックにおける重み付きなしの予測補償を用いるサブブロックに対して、当該サブブロックのための第1の目標動き情報を格納する。第2の三角形サブブロックにおける重み付きなしの予測補償を用いるサブブロックに対して、当該サブブロックのための第2の目標動き情報を格納する。重み付きの予測補償を用いるサブブロックに対して、当該サブブロックのための、第1の目標動き情報、第2の目標動き情報または第2の目標動き情報を格納する。
【0240】
応用シナリオ1:
重み付きの予測補償を用いるサブブロックに対して、サブブロックのための第1の目標動き情報を直接に格納する。
【0241】
応用シナリオ2:
重み付きの予測補償を用いるサブブロックに対して、サブブロックのための第2の目標動き情報を直接に格納する。
【0242】
応用シナリオ3:
重み付きの予測補償を用いるサブブロックに対して、現在ブロックの区画方向(例えば、主対角線方向または副対角線方向)によって、サブブロックのための第1の目標動き情報または第2の目標動き情報を格納する。
【0243】
例として、現在ブロックの区画方向が副対角線方向(水平方向から時計回りに135度回転した角度)である場合、サブブロックのための第1の目標動き情報を格納する。現在ブロックの区画方向が主対角線方向(水平方向から時計回りに45度回転した角度)である場合、サブブロックのための第2の目標動き情報を格納する。または、現在ブロックの区画方向が副対角線方向(水平方向から時計回りに135度回転した角度)である場合、サブブロックのための第2の目標動き情報を格納する。現在ブロックの区画方向が主対角線方向(水平方向から時計回りに45度回転した角度)である場合、サブブロックのための第1の目標動き情報を格納する。
【0244】
応用シナリオ4:
重み付きの予測補償を用いるサブブロックに対して、サブブロックの位置(例えば、サブブロックが対角線や、対角線の上側や、対角線の下側等にある)によって、サブブロックのための第1の目標動き情報または第2の目標動き情報を格納する。
【0245】
例として、サブブロックが対角線または対角線の上側にある場合、サブブロックのための第1の目標動き情報を格納する。サブブロックが対角線の下側にある場合、サブブロックのための第2の目標動き情報を格納する。または、サブブロックが対角線または対角線の下側にある場合、サブブロックのための第2の目標動き情報を格納する。サブブロックが対角線の上側にある場合、サブブロックのための第1の目標動き情報を格納する。または、サブブロックが対角線または対角線の上側にある場合、サブブロックのための第2の目標動き情報を格納する。サブブロックが対角線の下側にある場合、サブブロックのための第1の目標動き情報を格納する。または、サブブロックが対角線または対角線の下側にある場合、サブブロックのための第1の目標動き情報を格納する。サブブロックが対角線の上側にある場合、サブブロックのための第2の目標動き情報を格納する。
【0246】
応用シナリオ5:
重み付きの予測補償を用いるサブブロックに対して、サブブロックの位置(例えば、サブブロックが対角線や、対角線の上側や、対角線の下側等にある)と現在ブロックの区画方向(例えば、主対角線方向または副対角線方向)とによって、前記サブブロックのための第1の目標動き情報または第2の目標動き情報を格納する。
【0247】
例として、サブブロックが対角線にある場合、現在ブロックの区画方向によって、前記サブブロックのための第1の目標動き情報または第2の目標動き情報を格納する。例えば、現在ブロックの区画方向が副対角線方向である場合、前記サブブロックのための第1の目標動き情報を格納する。現在ブロックの区画方向が主対角線方向である場合、前記サブブロックのための第2の目標動き情報を格納する。または、現在ブロックの区画方向が副対角線方向である場合、前記サブブロックのための第2の目標動き情報を格納する。現在ブロックの区画方向が主対角線方向である場合、前記サブブロックのための第1の目標動き情報を格納する。
【0248】
例として、サブブロックが対角線の上側にある場合、前記サブブロックのための第1の目標動き情報を格納する。
【0249】
例として、サブブロックが対角線の下側にある場合、前記サブブロックのための第2の目標動き情報を格納する。
【0250】
(実施例21)
第1の三角形サブブロックにおける重み付きなしの予測補償を用いるサブブロックに対して、当該サブブロックのための第1の目標動き情報を格納する。第2の三角形サブブロックにおける重み付きなしの予測補償を用いるサブブロックに対して、当該サブブロックのための第2の目標動き情報を格納する。重み付きの予測補償を用いるサブブロックに対して、当該サブブロックのための第1の目標動き情報、第2の目標動き情報または双方向動き情報(即ち、第1の目標動き情報と第2の目標動き情報からなる双方向動き情報)を格納する。
【0251】
応用シナリオ1:
重み付きの予測補償を用いるサブブロックに対して、第1の目標動き情報と第2の目標動き情報とが異なるlistからのものである場合、直接に第1の目標動き情報と第2の目標動き情報とを双方向動き情報に合併して、サブブロックのための双方向動き情報(即ち、第1の目標動き情報と第2の目標動き情報からなる双方向動き情報)を格納する。第1の目標動き情報と第2の目標動き情報が同じlistからのものである場合、サブブロックのための第1の目標動き情報を格納する。
【0252】
応用シナリオ2:
重み付きの予測補償を用いるサブブロックに対して、第1の目標動き情報と第2の目標動き情報とが異なるlistからのものである場合、直接に第1の目標動き情報と第2の目標動き情報とを双方向動き情報に合併して、サブブロックのための双方向動き情報(即ち、第1の目標動き情報と第2の目標動き情報からなる双方向動き情報)を格納する。第1の目標動き情報と第2の目標動き情報が同じlistからのものである場合、サブブロックのための第2の目標動き情報を格納する。
【0253】
応用シナリオ3:
重み付きの予測補償を用いるサブブロックに対して、第1の目標動き情報と第2の目標動き情報とが異なるlistからのものである場合、直接に第1の目標動き情報と第2の目標動き情報とを双方向動き情報に合併して、サブブロックのための双方向動き情報(即ち、第1の目標動き情報と第2の目標動き情報からなる双方向動き情報)を格納する。第1の目標動き情報と第2の目標動き情報が同じlistからのものである場合、現在ブロックの区画方向(例えば、主対角線方向または副対角線方向)によって、サブブロックのための第1の目標動き情報または第2の目標動き情報を格納する。
【0254】
例として、現在ブロックの区画方向が副対角線方向である場合、前記サブブロックのための第1の目標動き情報を格納してよい。現在ブロックの区画方向が主対角線方向である場合、前記サブブロックのための第2の目標動き情報を格納してよい。または、現在ブロックの区画方向が副対角線方向である場合、前記サブブロックのための第2の目標動き情報を格納してよい。現在ブロックの区画方向が主対角線方向である場合、前記サブブロックのための第1の目標動き情報を格納してよい。
【0255】
応用シナリオ4:
重み付きの予測補償を用いるサブブロックに対して、第1の目標動き情報と第2の目標動き情報とが異なるlistからのものである場合、直接に第1の目標動き情報と第2の目標動き情報とを双方向動き情報に合併して、サブブロックのための双方向動き情報(即ち、第1の目標動き情報と第2の目標動き情報からなる双方向動き情報)を格納する。第1の目標動き情報と第2の目標動き情報が同じlistからのものである場合、サブブロックの位置(例えば、サブブロックが対角線や、対角線の上側や、対角線の下側等にある)によって、サブブロックのための第1の目標動き情報または第2の目標動き情報を格納する。
【0256】
例として、サブブロックが対角線または対角線の上側にある場合、サブブロックのための第1の目標動き情報を格納する。サブブロックが対角線の下側にある場合、サブブロックのための第2の目標動き情報を格納する。または、サブブロックが対角線または対角線の下側にある場合、サブブロックのための第2の目標動き情報を格納する。サブブロックが対角線の上側にある場合、サブブロックのための第1の目標動き情報を格納する。または、サブブロックが対角線または対角線の上側にある場合、サブブロックのための第2の目標動き情報を格納する。サブブロックが対角線の下側にある場合、ブブロックのための第1の目標動き情報を格納する。または、サブブロックが対角線または対角線の下側にある場合、サブブロックのための第1の目標動き情報を格納する。サブブロックが対角線の上側にある場合、サブブロックのための第2の目標動き情報を格納する。
【0257】
応用シナリオ5:
重み付きの予測補償を用いるサブブロックに対して、第1の目標動き情報と第2の目標動き情報とが異なるlistからのものである場合、直接に第1の目標動き情報と第2の目標動き情報とを双方向動き情報に合併して、サブブロックのための双方向動き情報(即ち、第1の目標動き情報と第2の目標動き情報からなる双方向動き情報)を格納する。第1の目標動き情報と第2の目標動き情報が同じlistからのものである場合、サブブロックの位置(例えば、サブブロックが対角線や、対角線の上側や、対角線の下側等にある)と現在ブロックの区画方向(例えば、主対角線方向または副対角線方向)とによって、前記サブブロックのための第1の目標動き情報または第2の目標動き情報を格納する。
【0258】
例として、サブブロックが対角線にある場合、現在ブロックの区画方向によって、前記サブブロックのための第1の目標動き情報または第2の目標動き情報を格納する。例えば、現在ブロックの区画方向が副対角線方向である場合、前記サブブロックのための第1の目標動き情報を格納する。現在ブロックの区画方向が主対角線方向である場合、前記サブブロックのための第2の目標動き情報を格納する。または、現在ブロックの区画方向が副対角線方向である場合、前記サブブロックのための第2の目標動き情報を格納する。現在ブロックの区画方向が主対角線方向である場合、前記サブブロックのための第1の目標動き情報を格納する。
【0259】
例として、サブブロックが対角線の上側にある場合、前記サブブロックのための第1の目標動き情報を格納する。
【0260】
例として、サブブロックが対角線の下側にある場合、前記サブブロックのための第2の目標動き情報を格納する。
【0261】
応用シナリオ6:
重み付きの予測補償を用いるサブブロックに対して、第1の目標動き情報と第2の目標動き情報とが異なるlistからのものである場合、直接に第1の目標動き情報と第2の目標動き情報とを双方向動き情報に合併して、サブブロックのための双方向動き情報(即ち、第1の目標動き情報と第2の目標動き情報からなる双方向動き情報)を格納する。第1の目標動き情報と第2の目標動き情報が同じlistからのものである場合、サブブロックのための第1の目標動き情報と第2の目標動き情報との平均値を格納する。例えば、第1の目標動き情報に対応するlistの参照フレームと第2の目標動き情報に対応するlistの参照フレームが同じである場合、サブブロックのための第1の目標動き情報と第2の目標動き情報との平均値を格納する。
【0262】
例として、第1の目標動き情報と第2の目標動き情報との平均値は、第1の目標動き情報と第2の目標動き情報の平均値を含んでよい。例えば、第1の目標動き情報における動きベクトルと第2の目標動き情報における動きベクトルの平均値を含む。つまり、両者の重みが同じでもよい。または、第1の目標動き情報と第2の目標動き情報との重み付き平均値を含んでもよい。例えば、第1の目標動き情報における動きベクトルと第2の目標動き情報における動きベクトルとの重み付き平均値を含む。即ち、両者の重みが異なってもよい。
【0263】
例として、第1の目標動き情報に対応するlistの参照フレームと第2の目標動き情報に対応するlistの参照フレームが同じである場合、サブブロックのための第1の目標動き情報と第2の目標動き情報との平均値を格納する。第1の目標動き情報に対応するlistの参照フレームと第2の目標動き情報に対応するlistの参照フレームとが異なる場合、現在ブロックの区画方向(例えば、主対角線方向または副対角線方向)によって、サブブロックのための第1の目標動き情報または第2の目標動き情報を格納する。
【0264】
例えば、現在ブロックの区画方向が副対角線方向である場合、前記サブブロックのための第1の目標動き情報を格納してよい。現在ブロックの区画方向が主対角線方向である場合、前記サブブロックのための第2の目標動き情報を格納してよい。または、現在ブロックの区画方向が副対角線方向である場合、前記サブブロックのための第2の目標動き情報を格納してよい。現在ブロックの区画方向が主対角線方向である場合、前記サブブロックのための第1の目標動き情報を格納してよい。
【0265】
応用シナリオ7:
重み付きの予測補償を用いるサブブロックに対して、第1の目標動き情報と第2の目標動き情報とが異なるlistからのものである場合、直接に第1の目標動き情報と第2の目標動き情報とを双方向動き情報に合併して、サブブロックのための双方向動き情報を格納する。第1の目標動き情報と第2の目標動き情報が同じlistからのものである場合、現在ブロックのサイズ情報によって、サブブロックのための第1の目標動き情報または第2の目標動き情報を格納してよい。
【0266】
例として、現在ブロックの幅の値と現在ブロックの高さの値とが等しい場合、現在ブロックの区画方向によって、サブブロックのための第1の目標動き情報または第2の目標動き情報を格納する。例えば、区画方向が副対角線方向である場合、前記サブブロックのための第1の目標動き情報を格納してよい。区画方向が主対角線方向である場合、前記サブブロックのための第2の目標動き情報を格納してよい。または、区画方向が副対角線方向である場合、前記サブブロックのための第2の目標動き情報を格納してよい。区画方向が主対角線方向である場合、前記サブブロックのための第1の目標動き情報を格納してよい。
【0267】
例として、現在ブロックの幅の値と高さの値とが等しくない場合、幅と高さの関係に基づいてサブブロックのための第1の目標動き情報または第2の目標動き情報を格納する。例えば、現在ブロックの高さの値が現在ブロックの幅の値より大きい場合、サブブロックのための第1の目標動き情報を格納する。現在ブロックの高さの値が現在ブロックの幅の値より小さい場合、サブブロックのための第2の目標動き情報を格納する。
【0268】
応用シナリオ8:
重み付きの予測補償を用いるサブブロックに対して、以下のルールによって導き出す双方向動き情報を格納してよい。第1の目標動き情報と第2の目標動き情報とが異なるlistからのものである場合、直接に第1の目標動き情報と第2の目標動き情報とを双方向動き情報に合併して、サブブロックのための双方向動き情報を格納する。そうではないと、第1の目標動き情報と第2の目標動き情報とが1つのlistからの情報である場合、ListX(X=0/1)とする。この場合は、以下の通りである。
【0269】
第2の目標動き情報の参照フレームとList(1-X)のある参照フレームとが同じである場合、第2の目標動き情報を当該参照フレームに合わせてスケーリングし、第1の目標動き情報とスケーリングされた第2の目標動き情報とを双方向動き情報に合併する。
【0270】
第1の目標動き情報の参照フレームとList(1-X)のある参照フレームとが同じである場合、第1の目標動き情報を当該参照フレームに合わせてスケーリングし、第2の目標動き情報とスケーリングされた第1の目標動き情報とを双方向動き情報に合併する。
【0271】
そうでないと、これらの重み付きの予測補償を用いるサブブロックは、第1の目標動き情報のみを格納する。
【0272】
(実施例22)
上記の方法と同様な発想に基づいて、本願実施例は、符号化側または復号化側に用いられるコーデックデバイスを更に提案している。如
図8に示すように、
図8は、前記デバイスの構成図であり、前記デバイスは、
現在ブロックの特徴情報が特定条件を満たす場合、前記現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画するための区画モジュール81と、
前記現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成するための構成モジュール82と、
前記動き情報リストから、前記第1の三角形サブブロックの第1の目標動き情報と、前記第2の三角形サブブロックの第2の目標動き情報とを取得し、前記第1の目標動き情報が第2の目標動き情報と異なる取得モジュール83と、
前記第1の目標動き情報に基づいて、前記第1の三角形サブブロックに対して動き補償を行い、第1の三角形サブブロックの予測値を得、前記第2の目標動き情報に基づいて、前記第2の三角形サブブロックに対して動き補償を行い、第2の三角形サブブロックの予測値を得るためのコーデックモジュール84と、を含んでよい。
【0273】
例として、前記特徴情報は、動き情報モードと、サイズ情報と、フレームタイプと、シーケンスレベルスイッチ制御情報との中の一つまたは複数を含んでよい。
【0274】
前記区画モジュール81は、さらに、前記特徴情報が前記動き情報モードを含み、前記動き情報モードは、以下のことの中の少なくとも1つを満たす場合、前記動き情報モードが特定条件を満たすことを確定するために用いられる。
【0275】
現在ブロックの動き情報モードは、マージモードまたはスキップモードである。
前記現在ブロックの動き情報モードは、マージモードまたはスキップモードであり、且つ、前記現在ブロックの動き情報モードは、三角形予測サブモード以外の他のタイプのマージサブモードまたはスキップサブモードではない。
前記現在ブロックの動き情報モードは、マージモードであり、且つ、前記現在ブロックの動き情報モードは、通常のマージサブモード、MMVDサブモード、SBマージサブモード、CIIPサブモードの中のいずれか1つのサブモードではない。
前記現在ブロックの動き情報モードは、スキップモードであり、且つ、前記現在ブロックの動き情報モードは、通常のマージサブモード、MMVDサブモード、SBマージサブモードの中のいずれか1つのサブモードではない。
【0276】
前記区画モジュール81は、さらに、前記特徴情報が前記フレームタイプを含み、前記フレームタイプは、以下のことの中の少なくとも1つを満たす場合、前記動き情報モードが特定条件を満たすことを確定するために用いられる。
【0277】
前記フレームタイプは、前記現在ブロックの所属する現在フレームがBフレームであることである。
前記フレームタイプは、前記現在ブロックの所属する現在フレームがイントラブロックコピーを許可することである。
【0278】
前記区画モジュール81は、さらに、前記特徴情報が前記シーケンスレベルスイッチ制御情報を含み、前記シーケンスレベルスイッチ制御情報は、前記現在ブロックが三角形予測モードを用いることを許可するものである場合、前記シーケンスレベルスイッチ制御情報が特定条件を満たすことを確定するために用いられる。
【0279】
前記区画モジュール81は、さらに、前記特徴情報が前記サイズ情報を含み、前記サイズ情報は、以下のことの中の少なくとも1つを満たす場合、前記サイズ情報が特定条件を満たすことを確定するために用いられる。
【0280】
前記現在ブロックの幅の値が第1の閾値以上であり、前記現在ブロックの幅の値が第2の閾値以下である。
前記現在ブロックの高さの値が第3の閾値以上であり、前記現在ブロックの高さの値が第4の閾値以下である。
前記現在ブロックの面積の値が第5の閾値以上であり、前記現在ブロックの面積の値が第6の閾値以下である。
前記現在ブロックの面積の値が第7の閾値以上である。
前記現在ブロックの面積の値が第8の閾値以下である。
前記現在ブロックの幅の値が第9の閾値以下であり、前記現在ブロックの高さの値が第10の閾値以下である。
【0281】
前記コーデックデバイスが復号化側に適用される場合、前記区画モジュール81は、前記現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する時、具体的に、符号化ビットストリームから、三角形サブブロックの区画情報を示す前記第1の指示情報を取得し、前記三角形サブブロックの区画情報が主対角線による区画方式である場合、前記現在ブロックの主対角線で前記現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画し、前記三角形サブブロックの区画情報が副対角線による区画方式である場合、前記現在ブロックの副対角線で前記現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画する、ために用いられる。
【0282】
例として、前記第1の指示情報は、バイパスによるバイナリ算術復号化によって取得され、または、第1の指示情報は、コンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得される。
【0283】
前記構成モジュール82は、前記現在ブロックのために動き情報リストを構成する時に、具体的に、
通常のマージモードの動き情報リスト構成方式の再利用により、前記現在ブロックのために動き情報リストを構成する、ために用いられる。
【0284】
前記コーデックデバイスが復号化側に適用される場合、前記取得モジュール83は、前記動き情報リストから前記第1の三角形サブブロックの第1の目標動き情報と、前記第2の三角形サブブロックの第2の目標動き情報とを取得する時に、具体的に、以下のことに用いられる。
符号化ビットストリームから、前記動き情報リストにおける第1の目標動き情報の第1のインデックス値と、動き情報リストにおける第2の目標動き情報の第2のインデックス値とを示すための第2の指示情報を取得する。
【0285】
前記第2の指示情報に基づいて、前記動き情報リストから、前記第1のインデックス値に対応する候補動き情報を取得し、取得された前記第1のインデックス値に対応する候補動き情報を前記第1の三角形サブブロックの第1の目標動き情報として確定する。
【0286】
前記第2の指示情報に基づいて、前記動き情報リストから、前記第2のインデックス値に対応する候補動き情報を取得し、取得された前記第2のインデックス値に対応する候補動き情報を前記第2の三角形サブブロックの第2の目標動き情報として確定する。
【0287】
前記第1のインデックス値は、バイパスによるバイナリ算術復号化によって取得され、または、前記第1のインデックス値は、コンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得される。前記第2のインデックス値は、バイパスによるバイナリ算術復号化によって取得され、または、前記第2のインデックス値は、コンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得される。
【0288】
前記第1のインデックス値は、M1ビットを含み、前記M1ビット中のN1ビットがコンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得され、前記M1ビット中の残りの(M1-N1)ビットがバイパスによるバイナリ算術復号化によって取得され、前記M1が1以上の正の整数であり、前記N1が1以上の正の整数であり、前記M1が前記N1以上である。
【0289】
前記第2のインデックス値は、M2ビットを含み、前記M2ビット中のN2ビットは、コンテキストモデルによるコンテキスト適応型バイナリ算術復号化によって取得され、前記M2ビット中の残りの(M2-N2)ビットは、バイパスによるバイナリ算術復号化によって取得され、前記M2は1以上の正の整数であり、前記N2は1以上の正の整数であり、前記M2は前記N2以上である。
【0290】
前記第1のインデックス値に対応するコンテキストモデルと前記第2のインデックス値に対応するコンテキストモデルとが同じであり、または、前記第1のインデックス値に対応するコンテキストモデルと前記第2のインデックス値に対応するコンテキストモデルとが異なる。
【0291】
前記取得モジュール83は、前記動き情報リストから、前記第1のインデックス値に対応する候補動き情報を取得し、取得された前記第1のインデックス値に対応する候補動き情報を前記第1の三角形サブブロックの第1の目標動き情報として確定する時に、具体的に、
前記第1のインデックス値が偶数であり、前記第1のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含む場合、list0に対応する単方向動き情報を前記第1の三角形サブブロックの第1の目標動き情報として確定し、
前記第1のインデックス値が偶数であり、前記第1のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含まない場合、list1に対応する単方向動き情報を前記第1の三角形サブブロックの第1の目標動き情報として確定し、
前記第1のインデックス値が奇数であり、前記第1のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含む場合、list1に対応する単方向動き情報を前記第1の三角形サブブロックの第1の目標動き情報として確定し、
前記第1のインデックス値が奇数であり、前記第1のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含まない場合、list0に対応する単方向動き情報を前記第1の三角形サブブロックの第1の目標動き情報として確定する、ために用いられる。
【0292】
前記動き情報リストから、前記第2のインデックス値に対応する候補動き情報を取得し、取得された前記第2のインデックス値に対応する候補動き情報を前記第2の三角形サブブロックの第2の目標動き情報として確定することは、
【0293】
前記第2のインデックス値が偶数であり、前記第2のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含む場合、list0に対応する単方向動き情報を前記第2の三角形サブブロックの第2の目標動き情報として確定することと、前記第2のインデックス値が偶数であり、前記第2のインデックス値に対応する候補動き情報がlist0に対応する単方向動き情報を含まない場合、list1に対応する単方向動き情報を前記第2の三角形サブブロックの第2の目標動き情報として確定することと、
前記第2のインデックス値が奇数であり、前記第2のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含む場合、list1に対応する単方向動き情報を前記第2の三角形サブブロックの第2の目標動き情報として確定することと、
前記第2のインデックス値が奇数であり、前記第2のインデックス値に対応する候補動き情報がlist1に対応する単方向動き情報を含まない場合、list0に対応する単方向動き情報を前記第2の三角形サブブロックの第2の目標動き情報として確定することと、を含む。
【0294】
前記取得モジュール83は、さらに、第1の候補集合と第2の候補集合とを取得し、前記第1の候補集合は、前記動き情報リストにおける候補動き情報の一部を含み、前記第2の候補集合は、前記動き情報リストにおける候補動き情報の一部を含み、前記第1の候補集合における候補動き情報と前記第2の候補集合における候補動き情報とは完全に同一ではなく、前記第1の候補集合から、前記第1のインデックス値に対応する候補動き情報を取得し、取得された前記第1のインデックス値に対応する候補動き情報を前記第1の三角形サブブロックの第1の目標動き情報として確定し、
【0295】
前記第2の候補集合から、前記第2のインデックス値に対応する候補動き情報を取得し、取得された前記第2のインデックス値に対応する候補動き情報前記第2の三角形サブブロックの第2の目標動き情報として確定する、ために用いられる。
【0296】
前記デバイスは、さらに、格納モジュール含み、該格納モジュールは、第1の三角形サブブロックにおける重み付きなしの予測補償を用いるサブブロックに対して、前記サブブロックのための第1の目標動き情報を格納し、第2の三角形サブブロックにおける重み付きなしの予測補償を用いるサブブロックに対して、前記サブブロックのための第2の目標動き情報を格納し、重み付きの予測補償を用いるサブブロックに対して、前記サブブロックのための、第1の目標動き情報、第2の目標動き情報または双方向動き情報を格納するために用いられる。
【0297】
前記格納モジュールは、重み付きの予測補償を用いるサブブロックに対して、前記サブブロックのための第1の目標動き情報、第2の目標動き情報または双方向動き情報を格納する時に、具体的に、
【0298】
前記サブブロックのための第1の目標動き情報を格納し、または、
前記サブブロックのための第2の目標動き情報を格納し、または、
前記サブブロックの位置によって、前記サブブロックのための第1の目標動き情報または第2の目標動き情報を格納し、または、
現在ブロックの区画方向によって、前記サブブロックのための第1の目標動き情報または第2の目標動き情報を格納し、または、
前記サブブロックの位置と前記現在ブロックの区画方向とによって、前記サブブロックのための第1の目標動き情報または第2の目標動き情報を格納する、ために用いられる。
【0299】
前記格納モジュールは、重み付きの予測補償を用いるサブブロックに対して、前記サブブロックのための第1の目標動き情報、第2の目標動き情報または双方向動き情報を格納する時に、具体的に、
【0300】
前記第1の目標動き情報と前記第2の目標動き情報とが異なるlistからのものである場合、前記第1の目標動き情報と前記第2の目標動き情報とを双方向動き情報に合併して、前記サブブロックのための前記双方向動き情報を格納し、
前記第1の目標動き情報と前記第2の目標動き情報とが同じlistからのものである場合、前記サブブロックのための前記第1の目標動き情報を格納し、または、前記サブブロックのための前記第2の目標動き情報を格納する、ために用いられる。
【0301】
前記格納モジュールは、前記サブブロックのための前記第1の目標動き情報を格納し、または、前記サブブロックのための前記第2の目標動き情報を格納する時に、具体的に、前記サブブロックのための前記第1の目標動き情報を格納し、または、
前記サブブロックのための前記第2の目標動き情報を格納し、または、
前記サブブロックの位置によって、前記サブブロックのための第1の目標動き情報または第2の目標動き情報を格納し、または、
現在ブロックの区画方向によって、前記サブブロックのための第1の目標動き情報または第2の目標動き情報を格納し、または、
前記サブブロックの位置と前記現在ブロックの区画方向とによって、前記サブブロックのための第1の目標動き情報または第2の目標動き情報を格納し、または、
前記サブブロックのための第1の目標動き情報と第2の目標動き情報との平均値を格納し、または、
前記現在ブロックのサイズ情報によって、前記サブブロックのための第1の目標動き情報または第2の目標動き情報を格納する。
【0302】
本願実施例で提供される復号化側機器は、ハードウェア上からみると、そのハードウェアアーキテクチャの模式図が、
図9Aに示すものを参照する。プロセッサ91と、コンピュータ可読記憶媒体92とを含み、前記コンピュータ可読記憶媒体92は、前記プロセッサ91によって実行されるコンピュータ実行可能なコマンドを記憶しており、前記プロセッサ91は、本願の上記例示によって開示された方法を実現するように、コンピュータ実行可能なコマンドを実行する。
【0303】
例えば、前記プロセッサ91は、
現在ブロックの特徴情報が特定条件を満たす場合、前記現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画することと、
前記現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成することと、
前記動き情報リストから、前記第1の三角形サブブロックの第1の目標動き情報と、前記第2の三角形サブブロックの第2の目標動き情報とを取得し、前記第1の目標動き情報が前記第2の目標動き情報と異なることと、
前記第1の目標動き情報に基づいて、前記第1の三角形サブブロックに対して動き補償を行い、前記第1の三角形サブブロックの予測値を得、前記第2の目標動き情報に基づいて、前記第2の三角形サブブロックに対して動き補償を行い、前記第2の三角形サブブロックの予測値を得ることと、
を実現するように、コンピュータ実行可能なコマンドを実行する。
【0304】
本願実施例で提供される符号化側機器は、ハードウェア上からみると、そのハードウェアアーキテクチャの模式図が
図9Bに示すものを参照する。プロセッサ93と、コンピュータ可読記憶媒体94とを含み、前記コンピュータ可読記憶媒体94は、前記プロセッサ93によって実行されるコンピュータ実行可能なコマンドを記憶しており、前記プロセッサ93は、本願の上記例示によって開示された方法を実現するように、コンピュータ実行可能なコマンドを実行する。
【0305】
例えば、前記プロセッサ93は、
現在ブロックの特徴情報が特定条件を満たす場合、前記現在ブロックを第1の三角形サブブロックと第2の三角形サブブロックとに区画することと、
前記現在ブロックのために、複数の候補動き情報を含む動き情報リストを構成することと、
前記動き情報リストから、前記第1の三角形サブブロックの第1の目標動き情報と、前記第2の三角形サブブロックの第2の目標動き情報とを取得し、前記第1の目標動き情報が前記第2の目標動き情報と異なることと、
前記第1の目標動き情報に基づいて、前記第1の三角形サブブロックに対して動き補償を行い、前記第1の三角形サブブロックの予測値を得、前記第2の目標動き情報に基づいて、前記第2の三角形サブブロックに対して動き補償を行い、前記第2の三角形サブブロックの予測値を得ることと、
を実現するように、コンピュータ実行可能なコマンドを実行する。
【0306】
上記の方法と同様な発想に基づいて、本願実施例は、さらに、コンピュータ可読記憶媒体を提供し、前記コンピュータ可読記憶媒体には、若干のコンピューターコマンドが記憶されている。前記コンピューターコマンドは、プロセッサによって実行される時、本願の上記の例示によって開示されたコーデック方法を実現できる。その中、上記のコンピュータ可読記憶媒体は、任意の電子や、磁気、光学または他の物理的な記憶デバイスでもよく、例えば実行可能なコマンドや、データなどの情報を含むまたは格納してよい。例えば、コンピュータ可読記憶媒体はRAM(Radom Access Memory、ランダムアクセスメモリ)や、揮発性メモリや、不揮発性メモリや、フラッシュメモリや、ストレージドライブ(例えば、ハードディスクドライブなど)や、ソリッドステートディスク、任意のタイプのストレージディスク(例えば、光ディスク、DVD等)、あるいは、類似の記憶媒体、またはそれらの組み合わせでもよい。
【0307】
上記の実施例で説明されたシステム、デバイス、モジュールまたはユニットは、コンピューターチップまたは実体によって実現され、あるいは、ある機能を備える製品によって実現され得る。典型的な実装機器は、コンピュータであり、該コンピュータは、具体的に、パーソナルコンピュータ、ラップトップコンピューター、携帯電話、カメラ付き携帯電話、スマートフォン、携帯情報端末、メディアプレーヤー、ナビゲーション機器、電子メールトランシーバ、ゲームコンソール、タブレットコンピューター、ウェアラブル機器またはこれらのいくつかの組み合わせでもよい。
【0308】
説明の便利上、上記のデバイスを説明する時に、機能によって各種のユニットに分けて説明する。無論、本願を実施する際には、同一または複数のソフトウェア及び/またはハードウェアで各ユニットの機能を実現してよい。当業者は、本願の実施例が、方法、システム、またはコンピュータープログラム製品を提供できることを理解すべきである。そのため、本願は、完全なハードウェア実施例、完全なソフトウェア実施例、またはソフトウェアとハードウェア面を組み合わせた実施例の形態を採用してもよい。また、本願実施例は、コンピュータ利用可能なプログラムコードを有する1つまたは複数のコンピュータ利用可能な記憶媒体(ディスクメモリ、CD-ROM、光学メモリ等を含むが、これらに限定されない)にコンピュータープログラム製品が実装された形態を採用してもよい。
【0309】
本願は、本願実施例の方法、機器(システム)、およびコンピュータープログラム製品のフローチャート及び/またはブロック図を参照して説明された。フローチャート及び/またはブロック図における各プロセス及び/またはブロックと、フローチャート及び/またはブロック図におけるプロセス及び/またはブロックの組み合わせとが、コンピュータープログラムコマンドによって実現してよいことを理解すべきである。これらのコンピュータープログラムコマンドを、汎用コンピュータ、専用コンピュータ、組み込みプロセッサまたは他のプログラム可能なデータ処理機器のプロセッサに提供することで、1つのコンピュータ、コンピュータまたは他のプログラム可能なデータ処理機器のプロセッサが実行されるコマンドによって、フローチャートの1つのまたは複数のプロセス及び/またはブロック図の1つのまたは複数のブロックに指定された機能を実現するデバイスを作り出す。また、これらのコンピュータープログラムコマンドを、コンピュータまたは他のプログラム可能なデータ処理機器が特定方式で作動されることを支持するコンピュータ可読メモリに格納することで、当該コンピュータ可読メモリに格納するコマンドが、フローチャートの1つのまたは複数のプロセス及び/またはブロック図の1つのまたは複数のブロックに指定された機能を実現すコマンドデバイスを含む製品を作り出す。
【0310】
また、これらのコンピュータープログラムコマンドを、コンピュータまたは他のプログラム可能なデータ処理機器に実装することで、コンピュータまたは他のプログラム可能な機器に一連の操作ステップを実行して、コンピュータが実現される処理を行うによって、コンピュータまたは他のプログラム可能な機器に実行されるコマンドが、フローチャートの1つのまたは複数のプロセス及び/またはブロック図の1つのまたは複数のブロックに指定された機能を実現するステップを提供する。以上、本願の実施例を説明したが、本願を限定するものではない。当業者にとって、本出願は、各種変更や変形がある。本願の精神及び原理を逸脱せずに行われる変更、同等置換、改良等はすべて本願の保護範囲に属する。