(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-01-20
(45)【発行日】2025-01-28
(54)【発明の名称】符号化方法、復号化方法、符号器、復号器及び記憶媒体
(51)【国際特許分類】
H04N 19/11 20140101AFI20250121BHJP
H04N 19/176 20140101ALI20250121BHJP
H04N 19/70 20140101ALI20250121BHJP
H04N 19/186 20140101ALI20250121BHJP
H04N 19/157 20140101ALI20250121BHJP
【FI】
H04N19/11
H04N19/176
H04N19/70
H04N19/186
H04N19/157
(21)【出願番号】P 2022541305
(86)(22)【出願日】2020-12-29
(86)【国際出願番号】 CN2020141080
(87)【国際公開番号】W WO2021139572
(87)【国際公開日】2021-07-15
【審査請求日】2023-11-29
(32)【優先日】2020-01-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】516227559
【氏名又は名称】オッポ広東移動通信有限公司
【氏名又は名称原語表記】GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP., LTD.
【住所又は居所原語表記】No. 18 Haibin Road,Wusha, Chang’an,Dongguan, Guangdong 523860 China
(74)【代理人】
【識別番号】100120031
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100152205
【氏名又は名称】吉田 昌司
(74)【代理人】
【識別番号】100137523
【氏名又は名称】出口 智也
(72)【発明者】
【氏名】フオ、チュンイェン
(72)【発明者】
【氏名】ワン、シューアイ
(72)【発明者】
【氏名】マー、イェンチュオ
【審査官】鈴木 隆夫
(56)【参考文献】
【文献】特表2022-532114(JP,A)
【文献】特開2021-048485(JP,A)
【文献】特表2022-535618(JP,A)
【文献】Junyan Huo Haixin Wang Yu Sun Yanzhuo Ma Shuai Wan Fuzheng Yang Yuanfang Yu Yang Liu,Non-CE3: MIP Simplification [online],JVET-P0136-v2,[retrieved on 2024.11.27], Retrieved from the Internet:<URL:https://jvet-experts.org/doc_end_user/documents/16_Geneva/wg11/JVET-P0136-v3.zip>, JVET-P0136-v2.docx, JVET-P0136-v2.pptx,2019年10月04日,pp.1-4, pp1-11
【文献】Karam NASER Frank GALPIN Tangi POIRIER Ya CHEN,CE6 Related: MIP Adaptation On Top of CE6-1.1d [online],JVET-P0349,[retrieved on 2024.11.27], Retrieved from the Internet<URL:https://jvet-experts.org/doc_end_user/documents/16_Geneva/wg11/JVET-P0349-v1.zip>JVET-P0349-v1.docx,2019年09月25日,pp.1-4
【文献】B.Bross et al,Versatile Video Coding (Draft 7),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 16th Meeting: Geneva, CH, 1-11 October 2019,JVET-P2001-vE,[online], [retrieved on 2024.11.27], Retrieved from the Internet:<URL:https://jvet-experts.org/doc_end_user/documents/16_Geneva/wg11/JVET-P2001-v14.zip> JVET-P2001-vE.docx,2019年11月14日,pp.67-71,80-85,148-154,178-188,294-319
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
符号器に適用される符号化方法であって、前記
符号化方法は、
現在のブロックの予測パラメータを決定することであって、前記予測パラメータは予測モードパラメータを含むことと、
前記予測モードパラメータがマトリックスベースイントラ予測(Matrix-based intra prediction、MIP)モードを用いて前記現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、前記現在のブロックの隣接サンプル値を取得し、且つ前記現在のブロックの前記隣接サンプル値に基づいて前記現在のブロックのMIP入力サンプル値を決定することと、
前記MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、前記現在のブロックの前記彩度コンポーネントのMIP予測値を決定することであって、前記MIP予測値は前記現在のブロックの前記彩度コンポーネントにおける一部のサンプルの予測値であることと、
前記MIP予測値をフィルタリングすることによって、前記現在のブロックの前記彩度コンポーネントの前記イントラ予測値を決定することと、
前記現在のブロックの前記彩度コンポーネントの前記イントラ予測値に基づいて、前記現在のブロックの前記彩度コンポーネントの予測残差値を決定することと、
前記予測残差値に対して低周波非分離変換(low-frequency non-separable transform、LFNST)を行うことによって、LFNSTパラメータを決定することと、
前記LFNSTパラメータを符号化し、且つビットストリームに書き込むことと、を含む、
ことを特徴とする符号化方法。
【請求項2】
前記シフトパラメータは、シフトオフセットパラメータ及びシフトナンバーパラメータを含み、
前記MIP入力サンプル値、前記MIP重み付け行列及び前記シフトパラメータに基づいて、前記現在のブロックの前記彩度コンポーネントの前記MIP予測値を決定することは、
固定の定数である前記シフトオフセットパラメータの値に基づいて、前記MIP入力サンプル値の合計と前記シフトオフセットパラメータとの乗積を決定することと、
固定の定数である前記シフトナンバーパラメータの値に基づいて第1の定数値を決定することと、
第1のオフセットの値を前記第1の定数値と前記乗積との差に設定することと、
前記予測パラメータに基づいて、前記現在のブロックのMIP重み付け行列を決定することと、
前記MIP重み付け行列、前記MIP入力サンプル値、前記シフトナンバーパラメータ及び前記第1のオフセットに基づいて、前記現在のブロックの前記彩度コンポーネントの前記MIP予測値を決定することと、を含
み、
前記MIP重み付け行列、前記MIP入力サンプル値、前記シフトナンバーパラメータ及び前記第1のオフセットに基づいて、前記現在のブロックの前記彩度コンポーネントの前記MIP予測値を決定することは、
前記MIP重み付け行列と前記MIP入力サンプル値との第1の重み付け和を計算することと、
前記第1の重み付け和と前記第1のオフセットとの第1の合計を計算することと、
前記第1の合計を2進右シフトすることによって第1の右シフト値を取得することであって、前記右シフトされたビット数は前記シフトナンバーパラメータの値に等しいことと、
前記現在のブロックの前記彩度コンポーネントの前記MIP予測値を、前記第1の右シフト値と第1の一時的参照値におけるインデックス0に対応の値との合計に設定することであって、前記第1の一時的参照値は、前記現在のブロックの前記隣接サンプル値をダウンサンプリングすることによって取得されることと、を含む、
ことを特徴とする請求項1に記載の
符号化方法。
【請求項3】
前記予測パラメータは、前記現在のブロックのサイズパラメータをさらに含
み、
前記現在のブロックの前記隣接サンプル値に基づいて前記現在のブロックの前記MIP入力サンプル値を決定することは、
前記現在のブロックの前記サイズパラメータに基づいて、前記現在のブロックのブロックサイズインデックス値を決定することと、
前記現在のブロックの前記隣接サンプル値をダウンサンプリングすることによって、第1の一時的参照値を取得することと、
前記現在のブロックの前記ブロックサイズインデックス値が予め設定された範囲内にある場合に、前記現在のブロックの隣接サンプル値のビット深度に基づいて第2の定数値を決定し、前記MIP入力サンプル値におけるインデックス0に対応の値を、前記第2の定数値と前記第1の一時的参照値におけるインデックス0に対応の値との差に設定し、前記MIP入力サンプル値におけるインデックスiに対応の値を、前記第1の一時的参照値におけるインデックスiに対応の値と前記第1の一時的参照値におけるインデックス0に対応の前記値との差に設定することであって、iは0より大きい整数であることと、
前記現在のブロックの前記ブロックサイズインデックス値が前記予め設定された範囲外にある場合に、前記MIP入力サンプル値におけるインデックスjに対応の値を、前記第1の一時的参照値におけるインデックス(j+1)に対応の値と前記第1の一時的参照値におけるインデックス0に対応の前記値との差に設定することであって、jは0以上の整数であることと、を含む、
ことを特徴とする請求項
1に記載の
符号化方法。
【請求項4】
前記現在のブロックの前記隣接サンプル値の前記ビット深度に基づいて前記第2の定数値を決定することは、
前記第2の定数値を2の累乗に設定することであって、前記累乗の指数は整数であり、前記現在のブロックの前記隣接サンプル値の前記ビット深度から1を引いたものに等しいこと、を含
み、
又は、
「1」を2進左シフトすることによって前記第2の定数値を取得することであって、前記左シフトされたビット数は、前記現在のブロックの前記隣接サンプル値の前記ビット深度から1を引いたものに等しいこと、を含む、
ことを特徴とする請求項
3に記載の
符号化方法。
【請求項5】
前記シフトナンバーパラメータの前記値は、ブロックサイズインデックス値及びMIPモードインデックス値に関連しない固定の定数であ
り、
前記シフトナンバーパラメータの値が6に設定さ
れ、
前記シフトオフセットパラメータの値は、ブロックサイズインデックス値及びMIPモードインデックス値に関連しない固定の定数であ
り、
前記シフトオフセットパラメータの値が32に設定さ
れ、
前記シフトナンバーパラメータの値に基づいて前記第1の定数値を決定することは、
前記第1の定数値を2の累乗に設定することであって、前記累乗の指数は整数であり、前記シフトナンバーパラメータの値から1を引いたものに等しいことを含
み、
又は、
「1」を2進左シフトすることによって前記第1の定数値を取得することであって、前記左シフトされたビット数は前記シフトナンバーパラメータの値から1を引いたものに等しいこと、を含む、
ことを特徴とする請求項
2に記載の
符号化方法。
【請求項6】
前記予測残差値に対して前記LFNSTを行うことによって、前記LFNSTパラメータを決定することは、
前記現在のブロックの前記予測残差値に対して第1の変換を行うことによって第1の変換係
数を取得することと、
前記第1の変換係数
の少なくとも一部の変換係数に対して前記LFNSTを行うか否かを決定することと、
決定の結果が前記少なくとも一部の変換係数に対して前記LFNSTを行うことである場合に、前記第1の変換係数
の前記少なくとも一部の変換係数に対して前記LFNSTを行うことによって、前記LFNSTパラメータを決定することと、を含
み、
前記第1の変換係数
の前記少なくとも一部の変換係数に対して前記LFNSTを行うか否かを決定することは、
前記MIPモードを用いて前記現在のブロックの前記彩度コンポーネントの前記イントラ予測値を決定する場合に、前記現在のブロックのサイズパラメータのうちの最小値を決定することと、
前記最小値が第1の予め設定された閾値以上である場合に、前記第1の変換係数
の前記少なくとも一部の変換係数に対して前記LFNSTを行うことを決定することと、を含
み、
前記LFNSTパラメータはLFNSTインデックスを含み、前記LFNSTパラメータを決定することは、
前記第1の変換係数
の前記少なくとも一部の変換係数に対して前記LFNSTを行うと決定される場合に、前記LFNSTインデックスの値を0より大きく設定することと、
前記第1の変換係数
の前記少なくとも一部の変換係数に対して前記LFNSTを行わないと決定される場合に、前記LFNSTインデックスの値を0に設定することと、を含み、
前記LFNSTパラメータを符号化し、且つ前記ビットストリームに書き込むことは、
前記LFNSTインデックスを符号化し、且つ前記ビットストリームに書き込むことを含
み、
又は、
前記LFNSTパラメータはLFNST係数をさらに含み、前記LFNSTパラメータを決定することは、
前記第1の変換係数
の前記少なくとも一部の変換係数に対して前記LFNSTを行うことによって、前記LFNST係数を取得することを含み、
前記LFNSTパラメータを符号化し、且つ前記ビットストリームに書き込むことは、
前記LFNST係数を量子化することによって、量子化係数を取得することと、
前記量子化係数を符号化し、且つ前記ビットストリームに書き込むことと、を含む、
ことを特徴とする請求項
1に記載の
符号化方法。
【請求項7】
復号器に適用される復号化方法であって、前記
復号化方法は、
現在のブロックの予測パラメータ及び低周波非分離変換(low-frequency non-separable transform、LFNST)パラメータを取得するようにビットストリームを解析することであって、前記予測パラメータは予測モードパラメータを含むことと、
前記予測モードパラメータがマトリックスベースイントラ予測(Matrix-based intra prediction、MIP)モードを用いて前記現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、前記現在のブロックの隣接サンプル値を取得し、且つ前記現在のブロックの前記隣接サンプル値に基づいて前記現在のブロックのMIP入力サンプル値を決定することと、
前記MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、前記現在のブロックの前記彩度コンポーネントのMIP予測値を決定することであって、前記MIP予測値は前記現在のブロックの前記彩度コンポーネントにおける一部のサンプルの予測値であることと、
前記MIP予測値をフィルタリングすることによって、前記現在のブロックの前記彩度コンポーネントの前記イントラ予測値を決定することと、
前記LFNSTパラメータが前記現在のブロックに対して前記LFNSTを行うことを示す場合に、前記現在のブロックの再構成変換係
数を決定し、前記再構成変換係数
の一部の再構成変換係数に対して前記LFNSTを行うことによって、第2の変換係
数を取得することと、
前記第2の変換係
数に対して第1の変換を行うことによって、前記現在のブロックの前記彩度コンポーネントの再構成残差
値を取得することと、
前記現在のブロックの前記彩度コンポーネントの前記イントラ予測値と前記再構成残差
値とに基づいて、前記現在のブロックの前記彩度コンポーネントの再構成
値を決定することと、を含む、
ことを特徴とする復号化方法。
【請求項8】
前記シフトパラメータは、シフトオフセットパラメータ及びシフトナンバーパラメータを含み、
前記MIP入力サンプル値、前記MIP重み付け行列及び前記シフトパラメータに基づいて、前記現在のブロックの前記彩度コンポーネントの前記MIP予測値を決定することは、
固定の定数である前記シフトオフセットパラメータの値に基づいて、前記MIP入力サンプル値の合計と前記シフトオフセットパラメータとの乗積を決定することと、
固定の定数である前記シフトナンバーパラメータの値に基づいて第1の定数値を決定することと、
第1のオフセットの値を前記第1の定数値と前記乗積との差に設定することと、
前記予測パラメータに基づいて、前記現在のブロックのMIP重み付け行列を決定することと、
前記MIP重み付け行列、前記MIP入力サンプル値、前記シフトナンバーパラメータ及び前記第1のオフセットに基づいて、前記現在のブロックの前記彩度コンポーネントの前記MIP予測値を決定することと、を含
み、
前記MIP重み付け行列、前記MIP入力サンプル値、前記シフトナンバーパラメータ及び前記第1のオフセットに基づいて、前記現在のブロックの前記彩度コンポーネントの前記MIP予測値を決定することは、
前記MIP重み付け行列と前記MIP入力サンプル値との第1の重み付け和を計算することと、
前記第1の重み付け和と前記第1のオフセットとの第1の合計を計算することと、
前記第1の合計を2進右シフトすることによって第1の右シフト値を取得することであって、前記右シフトされたビット数は前記シフトナンバーパラメータの値に等しいことと、
前記現在のブロックの前記彩度コンポーネントの前記MIP予測値を、前記第1の右シフト値と第1の一時的参照値におけるインデックス0に対応の値との合計に設定することであって、前記第1の一時的参照値は、前記現在のブロックの前記隣接サンプル値をダウンサンプリングすることによって取得されることと、を含む、
ことを特徴とする請求項
7に記載の
復号化方法。
【請求項9】
前記予測パラメータは、前記現在のブロックのサイズパラメータをさらに含
み、
前記現在のブロックの前記隣接サンプル値に基づいて前記現在のブロックの前記MIP入力サンプル値を決定することは、
前記現在のブロックの前記サイズパラメータに基づいて、前記現在のブロックのブロックサイズインデックス値を決定することと、
前記現在のブロックの前記隣接サンプル値をダウンサンプリングすることによって、第1の一時的参照値を取得することと、
前記現在のブロックの前記ブロックサイズインデックス値が予め設定された範囲内にある場合に、前記現在のブロックの隣接サンプル値のビット深度に基づいて第2の定数値を決定し、前記MIP入力サンプル値におけるインデックス0に対応の値を、前記第2の定数値と前記第1の一時的参照値におけるインデックス0に対応の値との差に設定し、前記MIP入力サンプル値におけるインデックスiに対応の値を、前記第1の一時的参照値におけるインデックスiに対応の値と前記第1の一時的参照値におけるインデックス0に対応の前記値との差に設定することであって、iは0より大きい整数であることと、
前記現在のブロックの前記ブロックサイズインデックス値が前記予め設定された範囲外にある場合に、前記MIP入力サンプル値におけるインデックスjに対応の値を、前記第1の一時的参照値におけるインデックス(j+1)に対応の値と前記第1の一時的参照値におけるインデックス0に対応の前記値との差に設定することであって、jは0以上の整数であることと、を含む、
ことを特徴とする請求項
7に記載の
復号化方法。
【請求項10】
前記現在のブロックの前記隣接サンプル値の前記ビット深度に基づいて前記第2の定数値を決定することは、
前記第2の定数値を2の累乗に設定することであって、前記累乗の指数は整数であり、前記現在のブロックの前記隣接サンプル値の前記ビット深度から1を引いたものに等しいこと、を含
み、
又は、
「1」を2進左シフトすることによって前記第2の定数値を取得することであって、前記左シフトされたビット数は、前記現在のブロックの前記隣接サンプル値の前記ビット深度から1を引いたものに等しいこと、を含む、
ことを特徴とする請求項
9に記載の
復号化方法。
【請求項11】
前記シフトナンバーパラメータの前記値は、ブロックサイズインデックス値及びMIPモードインデックス値に関連しない固定の定数であ
り、
前記シフトナンバーパラメータの値が6に設定さ
れ、
前記シフトオフセットパラメータの値は、ブロックサイズインデックス値及びMIPモードインデックス値に関連しない固定の定数であ
り、
前記シフトオフセットパラメータの値が32に設定さ
れ、
前記シフトナンバーパラメータの値に基づいて前記第1の定数値を決定することは、
前記第1の定数値を2の累乗に設定することであって、前記累乗の指数は整数であり、前記シフトナンバーパラメータの値から1を引いたものに等しいこと、を含
み、
又は、
「1」を2進左シフトすることによって前記第1の定数値を取得することであって、前記左シフトされたビット数は前記シフトナンバーパラメータの値から1を引いたものに等しいこと、を含む、
ことを特徴とする請求項
8に記載の
復号化方法。
【請求項12】
前記LFNSTパラメータを取得するように前記ビットストリームを解析することは、
前記ビットストリームにLFNSTパラメータがあるか否かを決定することと、
前記ビットストリームに前記LFNSTパラメータがある場合に、前記LFNSTパラメータを取得するように前記ビットストリームを解析することとを含
み、
又は、
前記LFNSTパラメータを取得するように前記ビットストリームを解析することは、
LFNSTインデックスの値を取得するように前記ビットストリームを解析することと、
前記LFNSTインデックスの値が0より大きい場合に、前記現在のブロックに対して前記LFNSTを行うと決定することと、
前記LFNSTインデックスの値が0に等しい場合に、前記現在のブロックに対して前記LFNSTを行わないと決定することと、を含み、
前記ビットストリームにLFNSTパラメータがあるか否かを決定することは、
前記MIPモードを用いて前記現在のブロックの前記彩度コンポーネントの前記イントラ予測値を決定する場合に、前記現在のブロックのサイズパラメータのうちの最小値を決定することと、
前記最小値が第1の予め設定された閾値以上である場合に、前記ビットストリームに前記LFNSTパラメータがあると決定することとを含む、
ことを特徴とする請求項
7に記載の
復号化方法。
【請求項13】
前記LFNSTパラメータが前記現在のブロックに対して前記LFNSTを行うことを示す場合に、前記現在のブロックの前記再構成変換係
数を決定することは、
前記現在のブロックの量子化係数を取得するように前記ビットストリームを解析することと、
前記量子化係数を逆量子化することによって、前記現在のブロックの前記再構成変換係
数を取得することと、を含
み、
前記量子化係数を逆量子化することによって、前記現在のブロックの前記再構成変換係
数を取得することは、
前記量子化係数をスケーリングすることによって、前記現在のブロックの前記再構成変換係
数を取得することを含む、
ことを特徴とする請求項
7に記載の
復号化方法。
【請求項14】
第1のメモリ及び第1のプロセッサを含む符号器であって、
前記第1のメモリは、前記第1のプロセッサで実行可能なコンピュータプログラムを記憶するように構成されており、
前記第1のプロセッサは、前記コンピュータプログラムを実行すると、請求項
1~6のいずれか一項に記載の
符号化方法を実行するように構成されている、
ことを特徴とする符号器。
【請求項15】
第2のメモリ及び第2のプロセッサを含む復号器であって、
前記第2のメモリは、前記第2のプロセッサで実行可能なコンピュータプログラムを記憶するように構成されており、
前記第2のプロセッサは、前記コンピュータプログラムを実行すると、請求項
7~13のいずれか一項に記載の
復号化方法を実行するように構成されている、
ことを特徴とする復号器。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の参照]
本出願は、Junyan Huo、Shuai Wan、Yanzhuo Maの名義で2020年01月08日に出願された「VIDEO ENCODING AND DECODING METHOD,APPARATUS AND COMMUNICATION SYSTEM(ビデオ符号化・復号化方法、装置、及び通信システム)」と題する米国仮出願第62/958,582号の優先権を主張しており、そのすべての内容は参照として本出願に組み込まれる。
【0002】
本発明の実施形態はビデオ符号化の技術分野に関し、特に、符号化方法、復号化方法、符号器、復号器及び記憶媒体に関する。
【背景技術】
【0003】
ビデオ表示品質に対する人々の要求が高まるにつれて、高精細映像や超高精細映像などの新しいビデオアプリケーション形態が出現している。H.265/高効率ビデオ符号化(High Efficiency Video Coding、HEVC)は既に、急速に発展しているビデオアプリケーションのニーズを満たすことができない。そこで、JVET(Joint Video Exploration Team)は、次世代ビデオ符号化規格であるH.266/多用途ビデオ符号化(Versatile Video Coding、VVC)を提案した。
【0004】
H.266/VVCにおいて、マトリックスベースイントラ予測(Matrix-based Intra Prediction、MIP)は、1つのイントラ予測モードであり、現在のブロックのイントラ予測ブロックを取得するために用いられる。次に、低周波非分離変換(Low-Frequency Non-Separable Transform、LFNST)技術を用いて現在のブロックの予測残差を決定する。しかしながら、LFNST技術がMIPモード予測に適用される場合に、VVCの符号化効率に悪影響を及ぼすという課題がある。
【発明の概要】
【0005】
本発明の実施形態において、符号化・復号化効率を向上させることができる符号化方法、復号化方法、符号器、復号器及び記憶媒体が提供される。
【0006】
本発明の実施形態の技術的解決策は、以下のように実現されることができる。
【0007】
第一様態において、本発明の実施形態では、符号器に適用される符号化方法が提供される。当該方法は以下を含むことができる。
【0008】
現在のブロックの予測パラメータを決定する。予測パラメータは予測モードパラメータを含む。
予測モードパラメータがマトリックスベースイントラ予測(Matrix-based intra prediction、MIP)モードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定する。
MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。MIP予測値は現在のブロックの彩度コンポーネントにおける一部のサンプルの予測値である。
MIP予測値をフィルタリングすることによって、現在のブロックの彩度コンポーネントのイントラ予測値を決定する。
現在のブロックの彩度コンポーネントのイントラ予測値に基づいて、現在のブロックの彩度コンポーネントの予測残差値を決定する。
予測残差値に対して低周波非分離変換(low-frequency non-separable transform、LFNST)を行うことによって、LFNSTパラメータを決定する。
LFNSTパラメータを符号化し、且つビットストリームに書き込む。
【0009】
第二様態において、本発明の実施形態では、復号器に適用される復号化方法が提供される。当該方法は以下を含むことができる。
【0010】
現在のブロックの予測パラメータ及び低周波非分離変換(LFNST)パラメータを取得するようにビットストリームを解析する。予測パラメータは予測モードパラメータを含む。
予測モードパラメータがマトリックスベースイントラ予測(MIP)モードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定する。
MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。MIP予測値は現在のブロックの彩度コンポーネントにおける一部のサンプルの予測値である。
MIP予測値をフィルタリングすることによって、現在のブロックの彩度コンポーネントのイントラ予測値を決定する。
LFNSTパラメータが現在のブロックに対してLFNSTを行うことを示す場合に、現在のブロックの再構成変換係数ブロックを決定し、再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得する。
第2の変換係数ブロックに対して第1の変換を行うことによって、現在のブロックの彩度コンポーネントの再構成残差ブロックを取得する。
現在のブロックの彩度コンポーネントのイントラ予測値と再構成残差ブロックとに基づいて、現在のブロックの彩度コンポーネントの再構成ブロックを決定する。
【0011】
第三様態において、本発明の実施形態では、符号器が提供される。当該符号器は、第1の決定ユニット、第1の予測ユニット、第1の変換ユニット、及び符号化ユニットを含む。
【0012】
第1の決定ユニットは、現在のブロックの予測パラメータを決定するように構成されており、予測パラメータは予測モードパラメータを含む。
第1の決定ユニットは、予測モードパラメータがマトリックスベースイントラ予測(MIP)モードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定するようにさらに構成されている。
第1の予測ユニットは、MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定し、且つMIP予測値をフィルタリングすることによって現在のブロックの彩度コンポーネントのイントラ予測値を決定するように構成されており、MIP予測値は現在のブロックの彩度コンポーネントにおける一部のサンプルの予測値である。
第1の変換ユニットは、現在のブロックの彩度コンポーネントのイントラ予測値に基づいて、現在のブロックの彩度コンポーネントの予測残差値を決定し、且つ予測残差値に対して低周波非分離変換(LFNST)を行うことによってLFNSTパラメータを決定するように構成されている。
符号化ユニットは、LFNSTパラメータを符号化し、且つビットストリームに書き込むように構成されている。
【0013】
第四様態において、本発明の実施形態では、符号器が提供される。当該符号器は、第1のメモリ及び第1のプロセッサを含む。
第1のメモリは、第1のプロセッサで実行可能なコンピュータプログラムを記憶するように構成されている。
第1のプロセッサは、コンピュータプログラムを実行すると、第一様態に記載の方法を実行するように構成されている。
【0014】
第五様態において、本発明の実施形態では、復号器が提供される。当該復号器は、解析ユニット、第2の決定ユニット、第2の予測ユニット及び第2の変換ユニットを含む。
【0015】
解析ユニットは、現在のブロックの予測パラメータ及び低周波非分離変換(LFNST)パラメータを取得するようにビットストリームを解析するように構成されており、予測パラメータは予測モードパラメータを含む。
第2の決定ユニットは、予測モードパラメータがマトリックスベースイントラ予測(MIP)モードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定するように構成されている。
第2の予測ユニットは、MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定し、且つMIP予測値をフィルタリングすることによって現在のブロックの彩度コンポーネントのイントラ予測値を決定するように構成されており、MIP予測値は現在のブロックの彩度コンポーネントにおける一部のサンプルの予測値である。
第2の変換ユニットは、LFNSTパラメータが現在のブロックに対してLFNSTを行うことを示す場合に、現在のブロックの再構成変換係数ブロックを決定し、再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得し、且つ第2の変換係数ブロックに対して第1の変換を行うことによって、現在のブロックの彩度コンポーネントの再構成残差ブロックを取得するように構成されている。
第2の決定ユニットは、現在のブロックの彩度コンポーネントのイントラ予測値と再構成残差ブロックとに基づいて、現在のブロックの彩度コンポーネントの再構成ブロックを決定するようにさらに構成されている。
【0016】
第六様態において、本発明の実施形態では、復号器が提供される。当該復号器は、第2のメモリ及び第2のプロセッサを含む。
第2のメモリは、第2のプロセッサで実行可能なコンピュータプログラムを記憶するように構成されている。
第2のプロセッサは、コンピュータプログラムを実行すると、第二様態に記載の方法を実行するように構成されている。
【0017】
第七様態において、本発明の実施形態では、コンピュータプログラムを記憶するコンピュータ記憶媒体が提供される。当該コンピュータプログラムが第1のプロセッサによって実行されると、第一様態に記載の方法を実行し、又は第2のプロセッサによって実行されると、第二様態に記載の方法を実行する。
【0018】
本発明の実施形態では、符号化方法、復号化方法、符号器、復号器及び記憶媒体が提供される。符号器側では、現在のブロックの予測パラメータを決定した後、予測モードパラメータがマトリックスベースイントラ予測(MIP)モードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定する。MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。MIP予測値をフィルタリングすることによって、現在のブロックの彩度コンポーネントのイントラ予測値を決定する。現在のブロックの彩度コンポーネントのイントラ予測値に基づいて、現在のブロックの彩度コンポーネントの予測残差値を決定する。予測残差値に対して低周波非分離変換(LFNST)を行うことによって、LFNSTパラメータを決定する。LFNSTパラメータを符号化し、且つビットストリームに書き込む。復号器側では、現在のブロックの予測パラメータ及びLFNSTパラメータを取得するようにビットストリームを解析した後、予測モードパラメータがMIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定する。MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。MIP予測値をフィルタリングすることによって、現在のブロックの彩度コンポーネントのイントラ予測値を決定する。LFNSTパラメータが現在のブロックに対してLFNSTを行うことを示す場合に、現在のブロックの再構成変換係数ブロックを決定し、再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得する。第2の変換係数ブロックに対して第1の変換を行うことによって、現在のブロックの彩度コンポーネントの再構成残差ブロックを取得する。現在のブロックの彩度コンポーネントのイントラ予測値と再構成残差ブロックとに基づいて、現在のブロックの彩度コンポーネントの再構成ブロックを決定する。このように、MIPモードでは、符号化・復号化の性能を確保した上で、複雑度を下げ、同時に符号化・復号化のプロセスに必要な記憶スペースを減らし、符号化・復号化効率を効果的に高めることができる。また、LFNST技術がMIPモード予測に適用される場合に、MIPパラメータの導入により、LFNSTがより柔軟になり、符号化・復号化効率がさらに向上することができる。
【図面の簡単な説明】
【0019】
【
図1】
図1は、本発明の実施形態に係る符号器の構造を示す概略図である。
【
図2】
図2は、本発明の実施形態に係る復号器の構造を示す概略図である。
【
図3】
図3は、本発明の実施形態に係る符号化方法を示すフローチャートである。
【
図4】
図4は、本発明の実施形態に係る別の符号化方法を示すフローチャートである。
【
図5】
図5は、本発明の実施形態に係るマトリックスベースイントラ予測(MIP)予測プロセスを示すフローチャートである。
【
図6】
図6は、本発明の実施形態に係るMIPモードを用いてイントラ予測ブロックを取得することを示すフローチャートである。
【
図7】
図7は、本発明の実施形態に係る低周波非分離変換(LFNST)を行うフローを示す概略図である。
【
図8】
図8は、本発明の実施形態に係るLFNSTパラメータの符号化を示すフローチャートである。
【
図9】
図9は、本発明の実施形態に係る復号化方法を示すフローチャートである。
【
図10】
図10は、本発明の実施形態に係るLFNSTパラメータの解析を示すフローチャートである。
【
図11】
図11は、本発明の実施形態に係るLFNSTを行う別のフローを示す概略図である。
【
図12】
図12は、本発明の実施形態に係る別の符号器の構造を示す概略図である。
【
図13】
図13は、本発明の実施形態に係る符号器の具体的なハードウェア構造を示す概略図である。
【
図14】
図14は、本発明の実施形態に係る別の復号器の構造を示す概略図である。
【
図15】
図15は、本発明の実施形態に係る復号器の具体的なハードウェア構造を示す概略図である。
【
図16】
図16は、本発明の実施形態に係る送信デバイスの構造を示す概略図である。
【
図17】
図17は、本発明の実施形態に係る目標デバイスの構造を示す概略図である。
【
図18】
図18は、本発明の実施形態に係る通信システムの構造を示す概略図である。
【発明を実施するための形態】
【0020】
本発明の実施形態の特徴及び技術内容をより詳しく理解するために、以下、図面を参照しながら本発明の実施形態の実現を詳細に説明する。添付された図面はただ説明のために用いられ、本発明の実施形態を限定するものではない。
【0021】
本明細書で使用されるすべての技術的及び科学的用語は、特に定義されない限り、本発明の技術分野に属する当業者が一般的に理解するのと同じ意味を有する。本明細書で使用される用語は、本発明の実施形態を説明するためのものであり、本発明を限定することを意図するものではない。
【0022】
以下の説明では、「いくつかの実施形態」に係るが、それはすべての可能な実施形態のサブセットを説明するが、「いくつかの実施形態」は、すべての可能な実施形態の同じサブセット又は異なるサブセットであってもよく、矛盾がない限りそれらが互いに組み合わせられてもよいことが理解されることができる。また、本発明の実施形態に係る用語「第1/第2/第3」は、単に類似のオブジェクトを区別し、オブジェクトの特定の順序を意味するものではないことに留意されたい。本明細書に記載された本発明の実施形態が本明細書に図示又は記載された順序以外の順序で実施され得るように、「第1/第2/第3」は、許可される場合に特定の順序又は優先順位を交換することができる。
【0023】
ビデオ圧縮技術の発展に伴い、国際電気通信連合-電気通信標準化部門(International Telecommunication Union-Telecommunication、ITU-T)及び国際標準化機構(International Organization for Standardization、ISO)/国際電気標準会議(International Electrotechnical Commission、IEC)は、新世代のビデオ符号化規格を開発するために、多用途ビデオ符号化(VVC)と題する標準化プロジェクトを開始し、高解像度、高フレームレート、高ビット深度、高ダイナミックレンジ、広色域及び全方位視野角のうちの1つ又は複数の特徴を持つ高品質なビデオを符号化するとき、最新のH.265/HEVC規格と比べると、VVCの性能を約50%向上させることを目標とする。ITU-T SG16WP3とISO/IEC JTC1/SC29/WG11のJVET(Joint Video Exploration Team)は当該標準化プロジェクトを担当する。様々なイントラ予測モードやインター予測モードが、高品質なビデオを符号化する際に高い圧縮効率を実現できることが検証されたため、VVCのワーキングドラフト(Working Draft、WD))に採用された。
【0024】
マトリックスベースイントラ予測(MIP)モードは、1つのイントラ予測モードである。VVCにおいて、符号器又は復号器は、現在のブロックのイントラ予測ブロックを取得するために、MIPモードを呼び出すことができる。次に、低周波非分離変換(LFNST)は、二次変換(又は、第2の変換と呼ばれる)として、現在のブロックの予測残差に適用されることが可能である。
【0025】
関連技術において、LFNSTは、LFNST変換カーネル候補セットとLFNST転置指示パラメータ(transposition indication parameter)とが固定的に構成されたMIPモード予測に適用されることができるが、これはVVCの符号化・復号化効率に悪影響を与える。
【0026】
上記に基づいて、本発明の1つの実施形態において、符号化方法が提供される。当該符号化方法の基本的な思想は以下の通りである。現在のブロックの予測パラメータを決定する。予測パラメータは予測モードパラメータを含む。予測モードパラメータがMIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定する。MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。MIP予測値をフィルタリングすることによって、現在のブロックの彩度コンポーネントのイントラ予測値を決定する。現在のブロックの彩度コンポーネントのイントラ予測値に基づいて、現在のブロックの彩度コンポーネントの予測残差値を決定する。予測残差値に対してLFNSTを行うことによって、LFNSTパラメータを決定する。LFNSTパラメータを符号化し、且つビットストリームに書き込む。本発明の別の実施形態において、復号化方法が提供される。当該復号化方法の基本的な思想は以下の通りである。現在のブロックの予測パラメータ及びLFNSTパラメータを取得するようにビットストリームを解析する。予測パラメータは予測モードパラメータを含む。予測モードパラメータがMIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定する。MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。MIP予測値をフィルタリングすることによって、現在のブロックの彩度コンポーネントのイントラ予測値を決定する。LFNSTパラメータが現在のブロックに対してLFNSTを行うことを示す場合に、現在のブロックの再構成変換係数ブロックを決定し、再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得する。第2の変換係数ブロックに対して第1の変換を行うことによって、現在のブロックの彩度コンポーネントの再構成残差ブロックを取得する。現在のブロックの彩度コンポーネントのイントラ予測値と再構成残差ブロックとに基づいて、現在のブロックの彩度コンポーネントの再構成ブロックを決定する。このように、MIPモードでは、符号化・復号化の性能を確保した上で、複雑度を下げ、同時に符号化・復号化のプロセスに必要な記憶スペースを減らし、符号化・復号化効率を効果的に高めることができる。また、LFNST技術がMIPモード予測に適用される場合に、MIPパラメータの導入により、LFNSTがより柔軟になり、符号化・復号化効率がさらに向上することができる。
【0027】
以下、添付図面を参照しながら、本発明の各実施形態を詳細に説明する。
【0028】
図1を参照すると、
図1は、本発明の実施形態に係る符号器のシステムの構造の一例のブロック図を示している。
図1に示すように、符号器100は、分割ユニット101、予測ユニット102、第1の加算器107、変換ユニット108、量子化ユニット109、逆量子化ユニット110、逆変換ユニット111、第2の加算器112、フィルタリングユニット113、復号化画像バッファ(Decoded Picture Buffer、DPB)ユニット114及びエントロピー符号化ユニット115を含む。ここで、符号器100の入力は、一連の画像又は一枚の静止画像からなるビデオであってもよく、符号器100の出力は、入力ビデオの圧縮されたバージョンを表すビットストリームであってもよい。
【0029】
分割ユニット101は、入力ビデオにおける画像を1つ又は複数の符号化ツリーユニット(coding tree units、CTUs)に分割する。分割ユニット101は、画像を複数のタイル(tiles)に分割し、さらに、1つのタイルを1つ又は複数のブリック(bricks)に分割してもよい。ここで、1つのタイル又は1つのブリックは、1つ又は複数の完全な及び/又は部分的なCTUを含んでもよい。また、分割ユニット101は、1つ又は複数のスライス(slices)を形成してもよい。1つのスライスは、ラスタ順に並ぶ画像内の1つ又は複数のタイル、又は矩形領域をカバーする画像内の1つ又は複数のタイルを含んでもよい。分割ユニット101は、1つ又は複数のサブ画像をさらに形成してもよく、サブ画像は、1つ又は複数のスライス、タイル、又はブリックを含んでもよい。
【0030】
符号器100の符号化のプロセスにおいて、分割ユニット101はCTUを予測ユニット102に送る。予測ユニット102は一般的に、ブロック分割ユニット103、動き推定(Motion Estimation、ME)ユニット104、動き補償(Motion Compensation、MC)ユニット105及びイントラ予測ユニット106を含むことができる。具体的に、ブロック分割ユニット103は、4分木分割、2分木分割、3分木分割を反復的に用いて、入力CTUをより小さい符号化ユニット(Coding Units、CUs)にさらに分割する。予測ユニット102は、MEユニット104及びMCユニット105を用いて、CUのインター予測ブロックを取得することができる。イントラ予測ユニット106は、MIPモードを含む様々なイントラ予測モードを用いて、CUのイントラ予測ブロックを取得することができる。例示として、インター予測ブロックを取得するために、レート歪み最適化(rate-distortion optimized)の動き推定法が、MEユニット104及びMCユニット105によって呼び出されることができ、また、インター予測ブロックを取得するために、レート歪み最適化のモード決定法が、イントラ予測ユニット106によって呼び出されることができる。
【0031】
予測ユニット102はCUの予測ブロックを出力し、第1の加算器107は、分割ユニット101の出力におけるCUとCUの予測ブロックとの間の差、即ち、残差CUを計算する。変換ユニット108は係数を取得するために、残差CUを読み出し、且つ残差CUに対して1つ又は複数の変換操作を行う。量子化ユニット109は、係数を量子化し、且つ量子化係数(即ち、レベル(levels))を出力する。逆量子化ユニット110は、量子化係数に対してスケーリング操作を行うことによって、再構成係数を出力する。逆変換ユニット111は、変換ユニット108における変換に対応の1つ又は複数の逆変換を行い、且つ再構成残差を出力する。第2の加算器112は、再構成残差と予測ユニット102からのCUの予測ブロックとを加算することによって、再構成CUを算出する。また、第2の加算器112は、その出力をイントラ予測の参照として用いるために、予測ユニット102に送る。画像又はサブ画像内のすべてのCUが再構成された後、フィルタリングユニット113は、再構成された画像又はサブ画像に対してインループフィルタリングを実行する。ここで、フィルタリングユニット113は1つ又は複数のフィルタを含み、例えば、デブロッキングフィルタ(deblocking filter)、サンプル適応オフセット(sample adaptive offset、SAO)フィルタ、適応ループフィルタ(adaptive loop filter、ALF)、クロマスケーリング付きルママッピング(luma mapping with chroma scaling、LMCS)フィルタ、及びニューラルネットワークベースフィルタ(neural-network-based filter)などが挙げられる。又は、フィルタリングユニット113は、CUが他のCUを符号化するための参照として用いられないと判断した場合に、CUにおける1つ又は複数の目標サンプルに対してインループフィルタリングを行う。
【0032】
フィルタリングユニット113の出力は復号化された画像又はサブ画像であり、これらの復号化された画像又はサブ画像はDPBユニット114にバッファリングされる。DPBユニット114は、タイミング及び制御情報に基づいて、復号化された画像又はサブ画像を出力する。ここで、DPBユニット114に記憶された画像はさらに、予測ユニット102によるインター予測又はイントラ予測の参照として用いられることができる。最後に、エントロピー符号化ユニット115は、符号器100からの、画像の復号化に必要なパラメータ(制御パラメータや補足情報など)を2進数形式に変換し、且つ各データユニットのシンタックス構造に基づいてその2進数形式をビットストリームに書き込み、即ち、符号器100は最終的に、ビットストリームを出力する。
【0033】
さらに、符号器100は、第1のプロセッサと、コンピュータプログラムを記録する第1のメモリとを備えることができる。第1のプロセッサがコンピュータプログラムを読み出して実行すると、符号器100は入力ビデオを読み出し、且つ対応するビットストリームを生成する。また、符号器100は、1つ又は複数のチップを備えた計算デバイスであってもよい。チップで集積回路として実装された上記ユニットは、
図1における対応のユニットと類似の接続及びデータ交換機能を有する。
【0034】
図2を参照すると、
図2は、本発明の実施形態に係る復号器のシステムの構造の一例のブロック図を示している。
図2に示すように、復号器200は、解析ユニット201、予測ユニット202、スケーリングユニット205、変換ユニット206、加算器207、フィルタリングユニット208及び復号化画像バッファユニット209を含むことができる。ここで、復号器200の入力は、ビデオ又は一枚の静止画像の圧縮されたバージョンを表すビットストリームであり、復号器200の出力は、一連の画像からなる復号化ビデオ又は一枚の復号化された静止画像であってもよい。
【0035】
復号器200の入力ビットストリームは、符号器100が生成したビットストリームであってもよい。解析ユニット201は入力ビットストリームを解析し、且つ入力ビットストリームからシンタックス要素の値を取得する。解析ユニット201は、1つ又は複数の復号化された画像を取得するために、シンタックス要素の2進表現を数値に変換し、且つ数値を復号器200におけるユニットに送る。解析ユニット201はさらに、復号化された画像を表示するために、入力ビットストリームから1つ又は複数のシンタックス要素を解析することができる。
【0036】
復号器200の復号化のプロセスにおいて、解析ユニット201は、シンタックス要素の値と、シンタックス要素の値に基づいて設定された又は決定された、1つ又は複数の復号化された画像を取得するための1つ又は複数の変数とを、復号器200におけるユニットに送る。
【0037】
予測ユニット202は、現在の復号化ブロック(例えば、CU)の予測ブロックを決定する。ここで、予測ユニット202は、動き補償ユニット203及びイントラ予測ユニット204を含むことができる。具体的に、インター復号化モードが現在の復号化ブロックを復号化するために用いられることが示される場合に、予測ユニット202は、インター予測ブロックを取得するために、解析ユニット201からの関連パラメータを動き補償ユニット203に送る。イントラ予測モード(MIPモードインデックス値に基づいて示されるMIPモードを含む)が現在の復号化ブロックを復号化するために用いられることが示される場合に、予測ユニット202は、イントラ予測ブロックを取得するために、解析ユニット201からの関連パラメータをイントラ予測ユニット204に送信する。
【0038】
スケーリングユニット205は、符号器100における逆量子化ユニット110と同じ機能を有する。スケーリングユニット205は、再構成係数を取得するために、解析ユニット201からの量子化係数(即ち、レベル)に対してスケーリング操作を行う。
【0039】
変換ユニット206は、符号器100における逆変換ユニット111と同じ機能を有する。変換ユニット206は、再構成残差を取得するために、1つ又は複数の変換操作(即ち、符号器100における逆変換ユニット111による1つ又は複数の変換操作の逆操作)を行う。
【0040】
加算器207は、現在の復号化ブロックの再構成ブロックを取得するために、その入力(予測ユニット202からの予測ブロック及び変換ユニット206からの再構成残差)に対して加算操作を行う。再構成ブロックはまた、イントラ予測モードのもとで符号化される他のブロックの参照として用いられるために、予測ユニット202に送られる。
【0041】
画像又はサブ画像におけるすべてのCUが再構成された後、フィルタリングユニット208は再構成された画像又はサブ画像に対してインループフィルタリングを実行する。フィルタリングユニット208は1つ又は複数のフィルタを含み、例えば、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ、適応ループフィルタ(ALF)、クロマスケーリング付きルママッピング(LMCS)フィルタ、及びニューラルネットワークベースフィルタなどが挙げられる。又は、フィルタリングユニット208は、再構成ブロックが他のブロックを復号化するための参照として用いられないと判断した場合に、再構成ブロックにおける1つ又は複数の目標サンプルに対してインループフィルタリングを行う。フィルタリングユニット208の出力は復号化された画像又はサブ画像であり、これらの復号化された画像又はサブ画像はDPBユニット209にバッファリングされる。DPBユニット209は、タイミング及び制御情報に基づいて、復号化された画像又はサブ画像を出力する。DPBユニット209に記憶された画像はさらに、予測ユニット202によるインター予測又はイントラ予測の参照として用いられることができる。
【0042】
さらに、復号器200は、第2のプロセッサと、コンピュータプログラムを記録する第2のメモリとを備えることができる。第
2のプロセッサがコンピュータプログラムを読み出して実行すると、復号器200は、入力ビットストリームを読み出し、且つ対応する復号化ビデオを生成する。また、復号器200は、1つ又は複数のチップを備えた計算デバイスであってもよい。チップで集積回路として実装された上記ユニットは、
図2における対応のユニットと類似の接続及びデータ交換機能を有する。
【0043】
なお、本発明の実施形態に係る符号化方法は、主に符号器100のイントラ予測ユニット106及び変換ユニット108に適用され、本発明の実施形態に係る復号化方法は、主に復号器200のイントラ予測ユニット204及び変換ユニット206に適用されることに留意されたい。即ち、本発明の実施形態は、符号器に適用されてもよく、復号器に適用されてもよく、さらに、符号器と復号器の両方に同時に適用されてもよい。本明細書ではそれについては限定されない。
【0044】
また、本発明の実施形態が符号器100に適用される場合に、「現在のブロック」は具体的に、イントラ予測における現在符号化しようとする画像ブロック(「符号化ブロック」とも呼ばれ得る)を指し、本発明の実施形態が復号器200に適用される場合に、「現在のブロック」は具体的に、イントラ予測における現在復号化しようとする画像ブロック(「復号化ブロック」とも呼ばれ得る)を指すことに留意されたい。
【0045】
符号器100が本発明の実施形態に係る符号化方法を介してより良い予測効果を実現することで符号化性能を向上させることができる場合に、復号器200はそれに応じて、本発明の実施形態に係る復号化方法を介してビデオ復号化品質を改善することで復号化性能を向上させることもできる。
【0046】
本発明の1つの実施形態において、
図3を参照すると、
図3は、本発明の実施形態に係る符号化方法のフローチャートを示している。
図3に示すように、当該方法は以下を含むことができる。
【0047】
S301:現在のブロックの予測パラメータを決定する。予測パラメータは予測モードパラメータを含む。
【0048】
なお、符号化しようとする画像は複数の画像ブロックに分割されることができ、各符号化しようとする画像ブロックは、符号化ブロックと呼ばれ得る。ここで、各符号化ブロックは、第1の画像コンポーネント、第2の画像コンポーネント及び第3の画像コンポーネントを含むことができる。現在のブロックは、ビデオの画像における第1の画像コンポーネント、第2の画像コンポーネント又は第3の画像コンポーネントの予測が現在実行されようとする符号化ブロックである。
【0049】
現在のブロックに対して第1の画像コンポーネントの予測が実行され、第1の画像コンポーネントが輝度コンポーネントであり、即ち、予測しようとする画像コンポーネントが輝度コンポーネントであると仮定すると、現在のブロックが輝度ブロックと呼ばれることもでき、現在のブロックの輝度コンポーネントの予測値を取得する。又は、現在のブロックに対して第2の画像コンポーネントの予測が実行され、第2の画像コンポーネントが彩度コンポーネントであり、即ち、予測しようとする画像コンポーネントが彩度コンポーネントであると仮定すると、現在のブロックが彩度ブロックと呼ばれることもでき、現在のブロックの彩度コンポーネントの予測値を取得する。
【0050】
また、予測パラメータは予測モードパラメータを含むことができ、予測モードパラメータは、現在のブロックが採用した予測モードを示すために用いられ、異なる予測モードは、異なる予測モードパラメータに対応することに留意されたい。ここで、予測モードパラメータの決定について、簡単な決定戦略を採用してもよく、例として、歪み値(distortion value)の大きさに基づいて決定する。また、複雑な決定戦略を採用してもよく、例として、レート歪み最適化(Rate Distortion Optimization、RDO)の結果に基づいて決定する。本発明の実施形態では、それについては限定されない。一般に、RDO方法を採用して現在のブロックの予測モードパラメータを決定し、即ち、現在のブロックの予測パラメータを決定する。
【0051】
具体的に、いくつかの実施形態において、上記現在のブロックの予測パラメータを決定することは、以下を含むことができる。
複数の予測モードを用いて現在のブロックを予めに符号化することによって、複数の予測モードに対応のレート歪みコスト値を取得する。
取得された複数のレート歪みコスト値から最適なレート歪みコスト値を選択し、最適なレート歪みコスト値に対応の予測モードのもとの予測パラメータを、現在のブロックの予測パラメータとして決定する。
【0052】
即ち、符号器側では、現在のブロックに対して、複数の予測モードを用いて現在のブロックをそれぞれ予めに符号化することができる。ここで、複数の予測モードは一般に、インター予測モード、従来のイントラ予測モード、及び従来と異なるイントラ予測モードを含む。従来のイントラ予測モードは、直流(Direct Current、DC)モード、平面(PLANAR)モード、角度イントラ予測モード(angular intra prediction mode)などを含むことができる。従来と異なるイントラ予測モードは、MIPモード、CCLM(Cross-component Linear Model Prediction)モード、イントラブロックコピー(Intra Block Copy、IBC)モード、PLT(Palette)モードなどを含むことができる。インター予測モードは、従来のインター予測モード及びインターブロックのための幾何学的分割(Geometrical(GEO) partitioning for inter blocks)モードなどを含むことができる。
【0053】
このように、複数の予測モードを用いて現在のブロックをそれぞれ予めに符号化した後、複数の予測モードに対応のレート歪みコスト値を取得することができる。次に、取得された複数のレート歪みコスト値から最適なレート歪みコスト値を選択し(一般に、最小レート歪みコスト値が最適なレート歪みコスト値である)、当該最適なレート歪みコスト値に対応の予測モードのもとの予測パラメータを、現在のブロックの予測パラメータとして決定する。
【0054】
さらに、複数の予測モードを用いて現在のブロックをそれぞれ予めに符号化することによって、複数の予測モードに対応の歪み値を取得することができる。次に、取得された複数の歪み値から最適な歪み値を選択し、当該最適な歪み値に対応の予測モードのもとの予測パラメータを、現在のブロックの予測パラメータとして決定する。このように、符号器は最終的に、決定された予測パラメータにおける予測モードパラメータが示す予測モードを用いて、現在のブロックに対して予測符号化を行う。それによって、より小さい予測残差を取得することができ、符号化効率を向上させることができる。
【0055】
S302:予測モードパラメータがマトリックスベースイントラ予測(MIP)モードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定する。
【0056】
なお、現在のブロックに対して、本発明の実施形態において、MIPモードを用いて現在のブロックの彩度コンポーネントに対してイントラ予測を行う。このプロセスにおいて、まず現在のブロックの隣接サンプル値を取得し、次に、現在のブロックの隣接サンプル値に基づいて、現在のブロックのMIP入力サンプル値を決定する。
【0057】
MIPモードに対して、まず、MIPコアパラメータを構成する必要があることが理解されるべきである。ここで、MIPコアパラメータは、現在のブロックの種類(mipSizeIdで表す)、各エッジの参照サンプルの数(boundySizeで表す)、MIP入力サンプルの数(inSizeで表す)、及び行列乗算から出力されるMIP予測ブロックのサイズ(predSize×predSizeで配列される)を含むことができる。MIPモードにおいて、現在のブロックの幅及び高さに基づいて現在のブロックが3つの種類に分類されることができ、mipSizeIdは0、1又は2に等しくてもよい。本明細書において、mipSizeIdは、現在のブロックの種類、即ち本発明の実施形態に示される「現在のブロックのブロックサイズインデックス値」を示す。mipSizeIdが異なると、参照サンプルの数(各エッジに必要な参照サンプルの数がboundySize個であり)、MIP入力サンプルの数(inSize)、行列乗算から出力されるMIP予測ブロックのサイズ(predSize×predSizeで配列される)も異なる。
【0058】
また、予測パラメータは、予測モードパラメータに加えて、現在のブロックのサイズパラメータをさらに含むことができることに留意されたい。現在のブロックのサイズパラメータは、現在のブロックの幅(nTbWで表す)及び高さ(nTbHで表す)を含むことができる。また、現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値(即ち、mipSizeId)を決定することができる。
【0059】
1つの可能な実施態様において、上記現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定することは、
現在のブロックの幅と高さがいずれも4に等しい場合に、現在のブロックのブロックサイズインデックス値を0に設定することと、
そうでなければ、現在のブロックの幅と高さがいずれも8に等しいか、又は現在のブロックの幅と高さの一方が4に等しい場合に、現在のブロックのブロックサイズインデックス値を1に設定することと、
そうでなければ、現在のブロックが別のサイズである場合に、現在のブロックのブロックサイズインデックス値を2に設定することと、を含むことができる。
【0060】
別の可能な実施態様において、上記現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定することは、
現在のブロックの幅と高さがいずれも4に等しい場合に、現在のブロックのブロックサイズインデックス値を0に設定することと、
そうでなければ、現在のブロックの幅と高さの一方が4に等しい場合に、現在のブロックのブロックサイズインデックス値を1に設定することと、
そうでなければ、現在のブロックが別のサイズである場合に、現在のブロックのブロックサイズインデックス値を2に設定することと、を含むことができる。
【0061】
このように、現在のブロックのブロックサイズインデックス値に基づいて、表1に示すルックアップテーブル(Look-Up Table、LUT)によって、隣接境界参照サンプルの数(変数がboundarySizeであり)及びMIP予測ブロックのサイズ(変数がpredSizeであり、MIP予測ブロックのサイズがpredSize×predSizeであり)を決定することができ、MIP行列乗算のプロセスに用いられるMIP入力サンプル値の数(inSizeで表す)を計算する。当該計算式は次の通りである。
【数1】
【0062】
式(1)における演算子の演算規則は、ITU-TH.265規格で定義されている演算子の演算規則と同じであり、例えば、「==」は論理「イコール(equal to)」演算子である。
【0063】
【0064】
このように、表1によれば、mipSizeIdの値が0に等しい場合に、boundarySizeの値は2に等しく、predSizeの値は4に等しい。即ち、この場合、参照サンプルは、各エッジにおいて選択された2つのサンプルであり、行列乗算の出力は4×4のMIP予測ブロックである。
【0065】
mipSizeIdの値が1に等しい場合に、boundarySizeの値は4に等しく、predSizeの値は4に等しい。即ち、この場合、参照サンプルは、各エッジにおいて選択された4つのサンプルであり、行列乗算の出力は4×4のMIP予測ブロックである。
【0066】
mipSizeIdの値が2に等しい場合に、boundarySizeの値は4に等しく、predSizeの値は8に等しい。即ち、この場合、参照サンプルは、各エッジにおいて選択された4つのサンプルであり、行列乗算の出力は8×8のMIP予測ブロックである。
【0067】
さらに、現在のブロックのブロックサイズインデックス値に基づいて、表2に示すルックアップテーブルによって、同時に、boundarySize、inSize及びpredSizeの値を決定することができる。
【0068】
【0069】
このように、表2によれば、mipSizeIdの値が0に等しい場合に、boundarySizeの値は2に等しく、inSizeの値は4に等しく、predSizeの値は4に等しい。即ち、この場合、参照サンプルは、各エッジにおいて選択された2つのサンプルであり、行列乗算の入力サンプルの数は4であり、行列乗算の出力は4×4のMIP予測ブロックである。
【0070】
mipSizeIdの値が1に等しい場合に、boundarySizeの値は4に等しく、inSizeの値は8に等しく、predSizeの値は4に等しい。即ち、この場合、参照サンプルは、各エッジにおいて選択された4つのサンプルであり、行列乗算の入力サンプルの数は8であり、行列乗算の出力は4×4のMIP予測ブロックである。
【0071】
mipSizeIdの値が2に等しい場合に、boundarySizeの値は4に等しく、inSizeの値は7に等しく、predSizeの値は8に等しい。即ち、この場合、参照サンプルは、各エッジにおいて選択された4つのサンプルであり、行列乗算の入力サンプルの数は7であり、行列乗算の出力は8×8のMIP予測ブロックである。
【0072】
さらに、MIPコアパラメータを構成した後、参照サンプルを取得する必要がある。その後、参照サンプル及びMIPコアパラメータに基づいて、MIP入力サンプル値を構築する。ここで、参照サンプルは、現在のブロックの隣接サンプル値を指し、現在のブロックの左隣接サンプル値及び現在のブロックの上隣接サンプル値を含むことができる。即ち、現在のブロックの左隣接サンプル値及び上隣接サンプル値に基づいて、現在のブロックのMIP入力サンプル値を決定することができる。
【0073】
いくつかの実施形態において、上記現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定することは、以下を含むことができる。
【0074】
現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定する。
【0075】
現在のブロックの隣接サンプル値をダウンサンプリングすることによって、第1の一時的参照値を取得する。
【0076】
上記現在のブロックのブロックサイズインデックス値が予め設定された範囲内にある場合に、現在のブロックの隣接サンプル値のビット深度に基づいて第2の定数値を決定し、MIP入力サンプル値におけるインデックス0に対応の値を、第2の定数値と第1の一時的参照値におけるインデックス0に対応の値との差に設定し、MIP入力サンプル値におけるインデックスiに対応の値を、第1の一時的参照値におけるインデックスiに対応の値と第1の一時的参照値におけるインデックス0に対応の値との差に設定する。iは0より大きい整数である。
【0077】
上記現在のブロックのブロックサイズインデックス値が予め設定された範囲外にある場合に、MIP入力サンプル値におけるインデックスjに対応の値を、第1の一時的参照値におけるインデックス(j+1)に対応の値と第1の一時的参照値におけるインデックス0に対応の値との差に設定する。jは0以上の整数である。
【0078】
さらに、上記現在のブロックのブロックサイズインデックス値が予め設定された範囲内にある場合に、上記方法はさらに、以下を含むことができる。
現在のブロックの隣接サンプル値のビット深度に基づいて、第2の定数値を決定し、MIP入力サンプル値におけるインデックス0に対応の値を、第1の一時的参照値におけるインデックス0に対応の値と第2の定数値との差に設定し、MIP入力サンプル値におけるインデックスiに対応の値を、第1の一時的参照値におけるインデックスiに対応の値と第1の一時的参照値におけるインデックス0に対応の値との差に設定する。iは0より大きい整数である。
【0079】
現在のブロックの隣接サンプル値をダウンサンプリングした後、第1の一時的参照値を取得できることに留意されたい。第1の一時的参照値について、具体的には、現在のブロックの隣接サンプル値をダウンサンプリングした後、フィルタリングされた隣接サンプル値をバッファ(pTempで表す)にバッファリングされることができる。第1の一時的参照値におけるインデックス0に対応の値は、pTemp[0]を指し、第1の一時的参照値におけるインデックスiに対応の値は、pTemp[i]を指す。
【0080】
また、現在のブロックのブロックサイズインデックス値(mipSizeIdで表す)が予め設定された範囲内にあるか否かに基づいて、現在のブロックのサイズパラメータの値が予め設定された範囲内にあるか否かを決定できることに留意されたい。具体的に、mipSizeId=0又は1の場合に、現在のブロックのブロックサイズインデックス値が予め設定された範囲内にあり、即ち、現在のブロックのサイズパラメータの値が予め設定された範囲内にあることが示される。mipSizeId=2の場合に、現在のブロックのブロックサイズインデックス値が予め設定された範囲外にあり、即ち、現在のブロックのサイズパラメータの値が予め設定された範囲内にないことが示される。
【0081】
換言すると、MIP入力サンプル値は、バッファ(pTempで表す)、現在のブロックのブロックサイズインデックス値(MipSizeIdで表す)、現在のブロックの隣接サンプル値のビット深度(BitDepthで表す)によって決定され、MIP入力サンプル値に対応の入力サンプルの数は、現在のブロックのブロックサイズインデックス値に関連する。最後に、MIP入力サンプル値におけるインデックスxに対応の値(p[x]で表す)が取得されることができる。
【0082】
さらに、いくつかの実施形態において、上記現在のブロックの隣接サンプル値のビット深度に基づいて第2の定数値を決定することは、以下を含むことができる。
第2の定数値を2の累乗に設定する。累乗の指数は整数であり、現在のブロックの隣接サンプル値のビット深度から1を引いたものに等しい。
【0083】
又は、いくつかの実施形態において、上記現在のブロックの隣接サンプル値のビット深度に基づいて第2の定数値を決定することは、以下を含むことができる。
「1」を2進左シフトすることによって第2の定数値を取得する。左シフトされたビット数は、現在のブロックの隣接サンプル値のビット深度から1を引いたものに等しい。
【0084】
換言すると、現在のブロックの隣接サンプル値のビット深度(BitDepthで表す)が取得された後、第2の定数値は1<<(BitDepth-1)又は2^(BitDepth-1)として表されることができる。このように、現在のブロックのサイズパラメータの値が予め設定された範囲内にある場合に、第2の定数値と合わせて現在のブロックのMIP入力サンプル値を決定することができる。
【0085】
また、MIP入力サンプルは、行列乗算演算に用いられる行列ベクトルであることに留意されたい。現在の関連技術方案は以下の通りである。バッファ(pTempで表す)、現在のブロックの種類(即ち、mipSizeIdで表す現在のブロックのブロックサイズインデックス値)、現在のブロックの隣接サンプル値のビット深度(BitDepthで表す)及びMIP入力サンプルの数に基づいて、MIP入力サンプル値におけるインデックスxに対応の値(p[x]で表す)を最終的に取得する。
【0086】
具体的に、x番目の入力サンプル値p[x]の構築のプロセスは以下の通りである。
【0087】
1つの可能な実施態様において、上記現在のブロックのブロックサイズインデックス値が予め設定された範囲内にある場合に、当該構築のプロセスは以下を含むことができる。
第2の定数値と第1の一時的参照値におけるインデックス0に対応の値との差を計算することによって、MIP入力サンプル値におけるインデックス0に対応の値を取得する。
第1の一時的参照値におけるインデックスiに対応の値及び第1の一時的参照値におけるインデックス0に対応の値に対して減算演算を行うことによって、MIP入力サンプル値におけるインデックスiに対応の値を取得する。iは0より大きくNより小さい正の整数であり、Nは入力サンプル行列に含まれる要素の数を表す。
【0088】
本発明の実施形態において、上記差の計算における被減数を第2の定数値に等しく設定し、上記差の計算における減数を第1の一時的参照値におけるインデックス0に対応の値に等しく設定する。
【0089】
換言すると、mipSizeId=0又は1の場合に、1<<(BitDepth-1)からpTemp[0]を引いたものをp[0]とし、xが0でない場合に、pTemp[x]からpTemp[0]を引いたものをp[x]とする。具体的は以下に示す通りである。
【数2】
【0090】
別の可能な実施態様において、上記現在のブロックのブロックサイズインデックス値が予め設定された範囲内にある場合に、当該構築のプロセスは以下を含むことができる。
第1の一時的参照値におけるインデックス0に対応の値と第2の定数値との差を計算することによって、MIP入力サンプル値におけるインデックス0に対応の値を取得する。
第1の一時的参照値におけるインデックスiに対応の値及び第1の一時的参照値におけるインデックス0に対応の値に対して減算演算を行うことによって、MIP入力サンプル値におけるインデックスiに対応の値を取得する。iは0より大きくNより小さい正の整数であり、Nは入力サンプル行列に含まれる要素の数を表す。
【0091】
本発明の実施形態において、上記差の計算における被減数を第1の一時的参照値におけるインデックス0に対応の値に等しく設定し、上記差の計算における減数を第2の定数値に等しく設定する。
【0092】
換言すると、mipSizeId=0又は1のとき、xが0に等しい場合に、MIP入力サンプル値におけるインデックス0に対応の値(p[0]で表す)は、第1の一時的参照値におけるインデックス0に対応の値(即ち、pTemp[0])から第2の定数値(即ち、1<<(BitDepth-1))を引くことによって取得される。xが0に等しくない場合に、MIP入力サンプル値におけるインデックスxに対応の値(p[x]で表す)は、第1の一時的参照値におけるインデックスxに対応の値(即ち、pTemp[x])から第1の一時的参照値におけるインデックス0に対応の値(即ち、pTemp[0])を引くことによって取得される。
【0093】
【0094】
もう1つの可能な実施形態において、上記現在のブロックのブロックサイズインデックス値が予め設定された範囲外にある場合に、当該構築のプロセスは以下を含むことができる。
第1の一時的参照値におけるインデックス(i+1)に対応の値及び第1の一時的参照値におけるインデックス0に対応の値に対して減算演算を行うことによって、MIP入力サンプル値におけるインデックスiに対応の値を取得する。iは0以上でNより小さい正の整数であり、Nは入力サンプル行列に含まれる要素の数を表す。
【0095】
換言すると、mipSizeId=2の場合に、第1の一時的参照値におけるインデックス0に対応の値、即ちpTemp[0]を無視してもよい。次に、MIP入力サンプル値におけるインデックスxに対応の値(p[x]で表す)は、第1の一時的参照値におけるインデックス(x+1)に対応の値(即ち、pTemp[x+1])から第1の一時的参照値におけるインデックス0に対応の値(即ち、pTemp[0])を引くことによって取得される。ここで、xは0以上の正の整数である。具体的は以下に示す通りである。
【数4】
【0096】
ここで、依然として4×4の現在のブロックを例として、バッファpTempに4つの値が記憶されている。即ち、第1の一時的参照値は、インデックス0に対応の値(即ち、pTemp[0])、インデックス1に対応の値(即ち、pTemp[1])、インデックス2に対応の値(即ち、pTemp[2])及びインデックス3に対応の値(即ち、pTemp[3])を含む。この場合、式(2)、式(3)又は式(4)によって、p[x]で表す4つのMIP入力サンプル値を決定することができ、x=0、1、2、3。ここで、4つのMIP入力サンプル値は、1×4のMIP入力サンプル行列を形成することもできる。
【0097】
上記以外に、本発明の実施形態において、mipSizeIdの値を決定せず、統一的な計算方法でp[x]の値を取得することも可能である。いくつかの実施形態において、現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定することは、以下を含むことができる。
【0098】
現在のブロックの隣接サンプル値をダウンサンプリングすることによって、第1の一時的参照値を取得する。
現在のブロックの隣接サンプル値のビット深度に基づいて第2の定数値を決定し、第1の一時的参照値の後の1つのデータユニット内で第2の定数値をバッファリングすることによって第2の一時的参照値を取得する。
MIP入力サンプル値におけるインデックスjに対応の値を、第2の一時的参照値におけるインデックス(j+1)に対応の値と第2の一時的参照値におけるインデックス0に対応の値との差に設定する。jは0以上の整数である。
【0099】
換言すると、本発明の実施形態において、第2の定数値(即ち、(1<<(BitDepth-1)))を付加要素として、バッファpTempの末尾に追加する。この場合、現在のブロックのサイズパラメータを考慮する必要はなく(即ち、mipSizeIdの値を考慮する必要はなく)、p[x]を、p[x]=pTemp[x+1]-pTemp[0]に直接に設定することができ、x=0、...、inSize-1。
【0100】
このように、現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定した後、現在のブロックのMIP予測値をさらに決定することができる。
【0101】
S303:MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。
【0102】
MIP予測値は、現在のブロックの彩度コンポーネントにおける一部のサンプルの予測値である。
【0103】
なお、シフトパラメータは、シフトオフセットパラメータ(shifting offset parameter)及びシフトナンバーパラメータ(shifting number parameter)を含むことができる。この場合、
図4に示すように、S303は以下のステップを含むことができる。
【0104】
S303-1:シフトオフセットパラメータの値に基づいて、MIP入力サンプル値の合計とシフトオフセットパラメータとの乗積を決定する。シフトオフセットパラメータの値は、固定の定数である。
【0105】
なお、シフトオフセットパラメータは、シフト補償パラメータ(shifting compensation parameter)又はオフセット因子(offset factor)と呼ばれてもよく、fOで表されることができる。本発明の実施形態において、シフトオフセットパラメータの値は固定の定数、例えば、32、46、56、又は66などに設定されることができる。さらに、シフトオフセットパラメータの値は、シフト・オフセット・パラメータ・テーブルに関連するように設定されることができ、シフトオフセットパラメータの値は、ルックアップテーブルによって決定されることができる。本明細書では、それについては限定されない。
【0106】
S303-2:シフトナンバーパラメータの値に基づいて、第1の定数値を決定する。
【0107】
S303-3:第1のオフセットの値を第1の定数値と上記乗積との差に設定する。
【0108】
なお、シフトナンバーパラメータはシフト因子(shifting factor)、シフトビット数又は重みシフト値(weight shifting value)などと呼ばれてもよく、sW、shift又はweight shiftで表されることができる。本発明の実施形態において、シフトナンバーパラメータはsWで表される。また、第1のオフセットはoWで表されることができ、第1のオフセットは、シフトナンバーパラメータとシフトオフセットパラメータの両方に関連する。
【0109】
本発明の実施形態において、シフトナンバーパラメータの値は固定の定数、例えば、5、6、又は7などに設定されることができる。さらに、シフトナンバーパラメータの値は、シフト・ナンバー・パラメータ・テーブルに関連するように設定されることができ、シフトナンバーパラメータの値は、ルックアップテーブルによって決定されることができる。本明細書では、それについては限定されない。
【0110】
S303-4:予測パラメータに基づいて、現在のブロックのMIP重み付け行列を決定する。
【0111】
なお、予測パラメータは、予測モードパラメータを含むことができ、また、現在のブロックのサイズパラメータを含むこともできる。予測パラメータにおいて、予測モードパラメータがMIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、重み付け行列テーブルは予めに確立されることができ、当該重み付け行列テーブルはメモリ又は記憶ユニットに記憶されている。ここのメモリ又は記憶ユニットは、符号器に集積されてもよいし、又は、単独に設けられてもよい。このように、現在のブロックのブロックサイズインデックス値(mipSizeId)及びMIPモードインデックス値(modelId)に基づいて、現在のブロックのために使用される必要のあるMIP重み付け行列(MIP重み行列、又はMIP行列とも呼ばれる)は、ルックアップテーブルによって決定されることができ、mWeight[x][y]で表される。現在のブロックのブロックサイズインデックス値(mipSizeId)は、現在のブロックのサイズパラメータに基づいて決定され、MIP重み付け行列mWeight[x][y]のサイズは、表3に示すように、現在のブロックのブロックサイズインデックス値に関連する。
【0112】
表3に示すMIP重み付け行列において、列数はinSizeに等しい行列乗算の入力サンプルの数であり、行数はpredSize×predSizeに等しい行列乗算の出力サンプルの数であり、現在のブロックのMIP重み付け行列が決定されることができる。
【0113】
【0114】
符号器において、シフト・ナンバー・パラメータ・テーブルが予めに確立されることができ、当該シフト・ナンバー・パラメータ・テーブルもメモリ又は記憶ユニットに記憶されている。ここのメモリ又は記憶ユニットは、符号器に集積されてもよいし、又は、単独に設けられてもよい。本発明の実施形態において、シフトナンバーパラメータ(sW)は以下のいくつかの方法で決定されることができる。
【0115】
1つの可能な実施形態において、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトナンバーパラメータは異なってもよい。いくつかの実施形態において、上記方法以下をさらに含むことができる。
【0116】
MIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定する場合に、現在のブロックのMIPモードインデックス値を決定する。
MIPモードインデックス値に基づいて、第1の予め設定されたルックアップテーブルからMIPモードインデックス値に対応の値をクエリーする。第1の予め設定されたルックアップテーブルは、MIPモードインデックス値とシフトナンバーパラメータの値との対応関係を記録するために用いられる。
クエリーした値をシフトナンバーパラメータの値として決定する。
【0117】
なお、現在のブロックのブロックサイズインデックス値(mipSizeIdで表す)及びMIPモードインデックス値(modelId)に基づいて、シフトナンバーパラメータの値をクエリーすることができる。表4に示す第1の予め設定されたルックアップテーブルにおいて、異なるmipSizeId及びmodelIdに対して、ルックアップテーブルによって、行列乗算において必要とされるシフトナンバーパラメータを決定することができる。
【0118】
【0119】
ただし、符号器側では、表4をルックアップテーブルの形でメモリ又は記憶ユニットに記憶する必要がある。しかし、記憶にはコストがかかり、ルックアップのプロセスにもコストがかかる。表4におけるシフトナンバーパラメータの値は、現在のブロックのブロックサイズ及びMIPモードインデックス値の両方に関連するため、メモリの占有量が増え、計算複雑度も増加する。
【0120】
メモリの占有を低減し、計算複雑度を下げるために、本発明の実施形態において、シフトナンバーパラメータの決定方法を簡略化することができる。
【0121】
別の可能な実施態様において、シフトナンバーパラメータの値を、ブロックサイズインデックス値及びMIPモードインデックス値に関連しない固定の定数に設定することができる。例えば、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトナンバーパラメータの値を5に設定することができる。又は、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトナンバーパラメータの値を6に設定することができる。又は、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトナンバーパラメータの値を7に設定することができる。本発明の実施形態において、シフトナンバーパラメータの値を6に設定することが好ましいが、それについては限定されない。
【0122】
もう1つの可能な実施形態において、シフトナンバーパラメータの値について、上記方法は以下をさらに含む。
現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定する。
上記現在のブロックのブロックサイズインデックス値に基づいて、シフトナンバーパラメータの値を決定する。
【0123】
現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定できることに留意されたい。いくつかの実施形態において、上記現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定することは、以下を含むことができる。
【0124】
現在のブロックの幅と高さがいずれも4に等しい場合に、現在のブロックのブロックサイズインデックス値を0に設定する。
現在のブロックの幅と高さがいずれも8に等しいか、又は現在のブロックの幅と高さの一方が4に等しい場合に、現在のブロックのブロックサイズインデックス値を1に設定する。
現在のブロックの幅と高さが上記条件を満たさない場合に、現在のブロックのブロックサイズインデックス値を2に設定する。
【0125】
このように、現在のブロックのブロックサイズインデックス値を決定した後、現在のブロックのブロックサイズインデックス値に基づいて、シフトナンバーパラメータの値をさらに決定することができる。
【0126】
選択的に、いくつかの実施形態において、上記現在のブロックのブロックサイズインデックス値に基づいて、シフトナンバーパラメータの値を決定することは、以下を含むことができる。
ブロックサイズインデックス値が0、1又は2にそれぞれ等しい場合に、現在のブロックのブロックサイズインデックス値に対応のシフトナンバーパラメータの値が5、6又は5にそれぞれ等しいと決定する。
【0127】
選択的に、いくつかの実施形態において、上記現在のブロックのブロックサイズインデックス値に基づいて、シフトナンバーパラメータの値を決定することは、以下を含むことができる。
シフトナンバーパラメータの値を、現在のブロックのブロックサイズインデックス値に対応の第1の予め設定された値に対する現在のブロックの幅又は高さの比率に等しく設定する。
【0128】
ここで、第1の予め設定された値は、現在のブロックの境界から取得されたMIP入力サンプル値の数を表す。この場合、上記方法は以下を含むこともできる。
現在のブロックのブロックサイズインデックス値が0、1又は2にそれぞれ等しい場合に、現在のブロックのブロックサイズインデックス値に対応の第1の予め設定された値が2、4又は4にそれぞれ等しいと決定する。
【0129】
換言すると、第1の予め設定された値が、現在のブロックの境界から取得されたMIP入力サンプル値の数を表すとき、現在のブロックのブロックサイズインデックス値が0に等しい場合に、対応の第1の予め設定された値は2に等しく、現在のブロックのブロックサイズインデックス値が1に等しい場合に、対応の第1の予め設定された値は4に等しく、現在のブロックのブロックサイズインデックス値が2に等しい場合に、対応の第1の予め設定された値は4に等しい。このように、対応の第1の予め設定された値に対する現在のブロックの幅又は高さの比率に基づいて、シフトナンバーパラメータの値を決定することができる。
【0130】
選択的に、いくつかの実施形態において、上記現在のブロックのブロックサイズインデックス値に基づいて、シフトナンバーパラメータの値を決定することは、以下を含むことができる。
シフトナンバーパラメータの値を、現在のブロックのブロックサイズインデックス値に対応の第2の予め設定された値に対する現在のブロックの幅又は高さの比率に等しく設定する。
【0131】
ここで、第2の予め設定された値は、MIP重み付け行列を直接に使用することによって取得される現在のブロックのMIP予測ブロックのサイズを表す。この場合、上記方法は以下を含むこともできる。
現在のブロックのブロックサイズインデックス値が0、1又は2にそれぞれ等しい場合に、現在のブロックのブロックサイズインデックス値に対応の第2の予め設定された値が4、4又は8にそれぞれ等しいと決定する。
【0132】
換言すると、第2の予め設定された値が、MIP重み付け行列を直接に使用することによって取得される現在のブロックのMIP予測ブロックのサイズを表すとき、現在のブロックのブロックサイズインデックス値が0に等しい場合に、対応の第2の予め設定された値は4に等しく、現在のブロックのブロックサイズインデックス値が1に等しい場合に、対応の第2の予め設定された値は4に等しく、現在のブロックのブロックサイズインデックス値が2に等しい場合に、対応の第2の予め設定された値は8に等しい。このように、対応の第2の予め設定された値に対する現在のブロックの幅又は高さの比率に基づいて、シフトナンバーパラメータの値を決定することができる。
【0133】
もう1つの可能な実施形態において、シフト・ナンバー・パラメータ・テーブルを最小化することができ、また、依然としてルックアップテーブルの方法によってシフトナンバーパラメータの値を決定する。選択的に、いくつかの実施形態において、上記現在のブロックのブロックサイズインデックス値に基づいて、シフトナンバーパラメータの値を決定することは、以下を含むことができる。
ブロックサイズインデックス値に基づいて、第2の予め設定されたルックアップテーブルからブロックサイズインデックス値に対応の値をクエリーする。第2の予め設定されたルックアップテーブルは、ブロックサイズインデックス値とシフトナンバーパラメータの値との対応関係を記録するために用いられる。
クエリーした値をシフトナンバーパラメータの値として決定する。
【0134】
なお、現在のブロックのブロックサイズインデックス値(mipSizeIdで表す)のみに基づいて、シフトナンバーパラメータの値をクエリーすることができる。表5に示す第2の予め設定されたルックアップテーブルにおいて、各ブロックサイズインデックス値は、固定値に対応することができる。即ち、各ブロックのサイズ又は各ブロックのサイズセットは、表5に示すような固定したシフトナンバーパラメータの値を有することができる。
【0135】
【0136】
表5によれば、現在のブロックのブロックサイズインデックス値が0、1又は2にそれぞれ等しい場合に、ブロックサイズインデックス値に対応のシフトナンバーパラメータの値が5、6又は5にそれぞれ等しいと決定することができる。
【0137】
上記実施形態において、シフトナンバーパラメータの決定方法を簡略化することで、特にシフト・ナンバー・パラメータ・テーブルを最小化し又はシフトナンバーパラメータの値を固定することで、ルックアップテーブルの記憶量を最小化することができ、それで、計算複雑度を増やさずに、MIPモードのもとのシフト・ナンバー・パラメータ・テーブルの記憶に占有されるメモリを低減することができる。
【0138】
符号器において、シフト・オフセット・パラメータ・テーブルが予めに確立されることができ、当該シフト・オフセット・パラメータ・テーブルもメモリ又は記憶ユニットに記憶されている。ここのメモリ又は記憶ユニットは、符号器に集積されてもよいし、又は、単独に設けられてもよい。本発明の実施形態において、シフトオフセットパラメータ(fO)は以下のいくつかの方法で決定されることができる。
【0139】
1つの可能な実施形態において、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトオフセットパラメータは異なってもよい。いくつかの実施形態において、上記方法以下をさらに含むことができる。
MIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定する場合に、現在のブロックのMIPモードインデックス値を決定する。
MIPモードインデックス値に基づいて、第3の予め設定されたルックアップテーブルからMIPモードインデックス値に対応の値をクエリーする。第3の予め設定されたルックアップテーブルは、MIPモードインデックス値とシフトオフセットパラメータの値との対応関係を記録するために用いられる。
クエリーした値をシフトオフセットパラメータの値として決定する。
【0140】
なお、現在のブロックのブロックサイズインデックス値(mipSizeIdで表す)及びMIPモードインデックス値(modelId)に基づいて、シフトオフセットパラメータの値をクエリーすることができる。表6に示す第3の予め設定されたルックアップテーブルにおいて、異なるmipSizeId及びmodelIdに対して、ルックアップテーブルによって、行列乗算において必要とされるシフトオフセットパラメータを決定することができる。
【0141】
【0142】
ただし、符号器側では、表6をルックアップテーブルの形でメモリ又は記憶ユニットに記憶する必要がある。しかし、記憶にはコストがかかり、ルックアップのプロセスにもコストがかかる。表6におけるシフトオフセットパラメータの値は、現在のブロックのブロックサイズ及びMIPモードインデックス値の両方に関連するため、メモリの占有量が増え、計算複雑度も増加する。
【0143】
メモリの占有を低減し、計算複雑度を下げるために、本発明の実施形態において、シフトオフセットパラメータの決定方法を簡略化することができる。
【0144】
別の可能な実施態様において、シフトオフセットパラメータの値を、ブロックサイズインデックス値及びMIPモードインデックス値に関連しない固定の定数に設定することができる。一般的に、当該固定の定数は0~100の範囲にある。例えば、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトオフセットパラメータの値を32に設定することができる。又は、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトオフセットパラメータの値を46に設定することができる。又は、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトオフセットパラメータの値を56に設定することができる。又は、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトオフセットパラメータの値を66に設定することができる。本発明の実施形態において、シフトオフセットパラメータの値を32に設定することが好ましいが、それについては限定されない。
【0145】
もう1つの可能な実施形態において、シフトオフセットパラメータの値について、上記方法は以下をさらに含むことができる。
現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定する。
上記現在のブロックのブロックサイズインデックス値に基づいて、シフトオフセットパラメータの値を決定する。
【0146】
現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定できることに留意されたい。その後、現在のブロックのブロックサイズインデックス値に基づいて、シフトオフセットパラメータの値をさらに決定することができる。
【0147】
選択的に、いくつかの実施形態において、上記現在のブロックのブロックサイズインデックス値に基づいて、シフトオフセットパラメータの値を決定することは、以下を含むことができる。
ブロックサイズインデックス値が0、1又は2にそれぞれ等しい場合に、現在のブロックのブロックサイズインデックス値に対応のシフトオフセットパラメータの値が34、23又は46にそれぞれ等しいと決定する。
【0148】
選択的に、いくつかの実施形態において、シフト・オフセット・パラメータ・テーブルを最小化することがさらにでき、また、依然としてルックアップテーブルの方法によってシフト因子を決定する。選択的に、いくつかの実施形態において、上記現在のブロックのブロックサイズインデックス値に基づいて、シフトオフセットパラメータの値を決定することは、以下を含むことができる。
ブロックサイズインデックス値に基づいて、第4の予め設定されたルックアップテーブルからブロックサイズインデックス値に対応の値をクエリーする。第4の予め設定されたルックアップテーブルは、ブロックサイズインデックス値とシフトオフセットパラメータの値との対応関係を記録するために用いられる。
クエリーした値をシフトオフセットパラメータの値として決定する。
【0149】
なお、現在のブロックのブロックサイズインデックス値(mipSizeIdで表す)のみに基づいて、シフトオフセットパラメータの値をクエリーすることができる。表7に示す第4の予め設定されたルックアップテーブルにおいて、各ブロックサイズインデックス値は、固定値に対応することができる。即ち、各ブロックのサイズ又は各ブロックのサイズセットは、表7に示すような固定したシフトオフセットパラメータの値を有することができる。
【0150】
【0151】
表7によれば、現在のブロックのブロックサイズインデックス値が0、1又は2にそれぞれ等しい場合に、ブロックサイズインデックス値に対応のシフトオフセットパラメータの値が34、23又は46にそれぞれ等しいと決定することができる。
【0152】
上記実施形態において、シフトオフセットパラメータの決定方法を簡略化することで、特にシフト・オフセット・パラメータ・テーブルを最小化し又はシフトオフセットパラメータの値を固定することで、ルックアップテーブルの記憶量を最小化することができ、それで、計算複雑度を増やさずに、MIPモードのもとのシフト・オフセット・パラメータ・テーブルの記憶に占有されるメモリを低減することができる。
【0153】
このように、シフトオフセットパラメータ(fO)及びシフトナンバーパラメータ(sW)を決定した後、第1の定数値について、選択的に、いくつかの実施形態において、上記シフトナンバーパラメータの値に基づいて第1の定数値を決定することは、以下を含むことができる。
第1の定数値を2の累乗に設定する。累乗の指数は整数であり、シフトナンバーパラメータの値から1を引いたものに等しい。
【0154】
選択的に、いくつかの実施形態において、上記シフトナンバーパラメータの値に基づいて第1の定数値を決定することは、以下を含むことができる。
「1」を2進左シフトすることによって第1の定数値を取得する。左シフトされたビット数はシフトナンバーパラメータの値から1を引いたものに等しい。
【0155】
換言すると、シフトナンバーパラメータ(sW)が取得された後、第1の定数値は、1<<(sW-1)と表記されてもよく、2^(sW-1)と表記されてもよい。この場合、シフトナンバーパラメータの値を6に設定するとき、32に等しい第1の定数値を取得することができる。
【0156】
【0157】
このように、MIPモードのもとで、MIP重み付け行列、MIP入力サンプル値、シフトナンバーパラメータ及び第1のオフセットを取得することができ、それで、その後の現在のブロックのMIP予測値の決定が容易になる。
【0158】
S303-5:MIP重み付け行列、MIP入力サンプル値、シフトナンバーパラメータ及び第1のオフセットに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。
【0159】
ここで、MIP予測値は、現在のブロックの彩度コンポーネントにおける一部のサンプルの予測値である。
【0160】
上記MIP重み付け行列、MIP入力サンプル値、シフトナンバーパラメータ及び第1のオフセットに基づいて、現在のブロックのMIP予測値を決定することは、以下を含むことができる。
【0161】
MIP重み付け行列とMIP入力サンプル値との第1の重み付け和を計算する。
第1の重み付け和と第1のオフセットとの第1の合計を計算する。
第1の合計を2進右シフトすることによって第1の右シフト値を取得する。右シフトされたビット数はシフトナンバーパラメータの値に等しい。
現在のブロックのMIP予測値を、第1の右シフト値と第1の一時的参照値におけるインデックス0に対応の値との合計に設定する。第1の一時的参照値は、現在のブロックの隣接サンプル値をダウンサンプリングすることによって取得される。
【0162】
具体的に、MIPモードのもとで、現在のブロックのブロックサイズインデックス値(mipSizeIdで表す)及びMIPモードインデックス値(modelIdで表す)に基づいて、MIP重み付け行列(mWeightで表す)、シフトナンバーパラメータ(sWで表す)及びシフトオフセットパラメータ(fOで表す)を決定することができる。次に、MIP入力サンプル値(p[x]で表す)、mWeight、sW及びfOを行列乗算に入力することによって、行列乗算から出力されるMIP予測値(predMip[x][y]で表すことができる)を取得する。predMip[x][y]におけるサンプルは、predSize×predSizeに基づいて行列/アレーの形式で配列される。計算式は次の通りである。
【数5】
【0163】
[x][y]はサンプルの位置座標を表し、xは水平方向、yは垂直方向を表し、inSizeは入力サンプルの数を表し、p[i]はMIP入力サンプル値におけるインデックスiに対応の値を表し、pTemp[0]は第1の一時的参照値におけるインデックス0に対応の値を表し、「>>」は2進右シフト演算子を表し、「<<」は2進左シフト演算子を表し、x=0、…、predSize-1、y=0、…、predSize-1。このように、上記式(5)に基づいて、predMip[x][y]を計算することによって、MIP予測ブロックを取得することができる。
【0164】
いくつかの実施形態において、sWの固定値が6であり、fOの固定値が32である場合に、計算式は次の通りである。
【数6】
【0165】
さらに、現在のブロックのMIP予測ブロックを取得するために、MIP予測ブロックにおけるサンプルの予測値に対してクリッピング(clipping)を行う必要がある。次に、当該MIP予測ブロックを転置するか否かを判断する。判断結果がYesの場合に、当該MIP予測ブロックにおける予測サンプル値を転置する必要があり、転置されたMIP予測ブロックを現在のブロックのMIP予測ブロックとして決定する。判断結果がNoの場合に、当該MIP予測ブロックにおける予測サンプル値を転置する必要がなく、当該MIP予測ブロックを現在のブロックのMIP予測ブロックとして直接に決定することによって、現在のブロックのMIP予測値を取得することができ、当該MIP予測値は現在のブロックにおける一部のサンプルの予測値である。
【0166】
S304:MIP予測値をフィルタリングすることによって、現在のブロックの彩度コンポーネントのイントラ予測値を決定する。
【0167】
上記MIP予測値をフィルタリングすることによって、現在のブロックのイントラ予測値を決定することは、以下を含むことができる。
【0168】
MIP予測ブロックのサイズパラメータと現在のブロックのサイズパラメータが同じであるか否かを判断する。
MIP予測ブロックのサイズパラメータと現在のブロックのサイズパラメータが同じである場合に、現在のブロックのイントラ予測ブロックをMIP予測ブロックに等しく設定する。MIP予測ブロックは、現在のブロックにおけるすべてのサンプル位置の予測サンプル値を含む。
MIP予測ブロックのサイズパラメータが現在のブロックのサイズパラメータと異なる場合に、MIP予測ブロックをフィルタリングすることによって、フィルタリングされた予測ブロックを取得し、フィルタリングされた予測ブロックを現在のブロックのイントラ予測ブロックとして設定する。
【0169】
ここで、フィルタリングは、アップサンプリング(upsampling)又はローパスフィルタリング(low-pass filtering)を含むことができる。
【0170】
なお、MIP予測ブロックはMIP予測値で構成される。MIP予測ブロックを取得した後、MIP予測ブロックのサイズパラメータが4×4のMIP予測ブロック及び8×8のMIP予測ブロックという2種類しか含まないため、現在のブロックのサイズパラメータとMIP予測ブロックのサイズパラメータは同じである場合もあれば、そうでない場合もある。換言すると、MIP予測ブロックに対応のサンプル値は、現在のブロックを完全に埋めるとは限らないため、最終的な予測値の生成にはMIP予測ブロックに対するアップサンプリングが必要となる可能性がある。即ち、MIP予測ブロックのサイズパラメータと現在のブロックのサイズパラメータが同じであるか否かを判断することによって、MIP予測ブロックをアップサンプリングするか否かを決定する。
【0171】
また、MIP予測ブロックのサイズパラメータと現在のブロックのサイズパラメータが同じである場合に、即ち、MIP予測ブロックの幅と高さがいずれも現在のブロックと同じである場合に、MIP予測ブロックのアップサンプルが必要でないことが示される。この場合、MIP予測ブロックを直接に現在のブロックに埋めることができ、即ち、埋めた後の現在のブロックには空孔サンプル(vacant sample)がない。この場合、現在のブロックにおける各サンプルのイントラ予測値は、以下に示すように、MIP予測ブロックにおける各サンプルの予測値に直接に設定されることができる。
【数7】
【0172】
[x][y]はサンプルの位置座標を表し、xは水平方向、yは垂直方向を表し、predSamples[x][y]は現在のブロックにおける位置座標が[x][y]であるサンプルに対応のイントラ予測値を表し、predMip[x][y]はMIP予測ブロックにおける位置座標が[x][y]であるサンプルに対応の予測値を表す。このように、式(7)に基づいて、MIP予測ブロックpredMip[x][y]を、直接に現在のブロックのイントラ予測ブロックpredSamples[x][y]とし、即ち、現在のブロックにおける少なくとも1つのサンプルのイントラ予測値とすることができる。
【0173】
なお、MIP予測ブロックのサイズパラメータが現在のブロックのサイズパラメータと異なる場合に、即ち、MIP予測ブロックの幅と高さのうちの少なくとも一方が現在のブロックと異なる場合に、MIP予測ブロックは現在のブロックを完全に埋めることができず、即ち、埋めた後の現在のブロックには空孔サンプルがあり、この場合に、MIP予測ブロックをフィルタリングする必要があることが示される。換言すると、水平方向と垂直方向の両方にアップサンプリングが必要な場合に、MIP予測ブロックを先に水平方向にアップサンプリングし、次に垂直方向にアップサンプリングすることによって、predSamples[x][y]で表すことができる第1のアップサンプルブロックを取得する。その後、MIP予測ブロックを垂直方向にアップサンプリングしてから水平方向にアップサンプリングすることによって、predSamplesTemp[x][y]で表すことができる第2のアップサンプルブロックを取得することができる。最後に、predSamples[x][y]とpredSamplesTemp[x][y]とを加重平均することによって、現在のブロックの彩度コンポーネントのイントラ予測値を最終的に取得し、即ち、現在のブロックのイントラ予測ブロックを取得する。
【0174】
例示的に、現在のブロックのエッジ長さnTbS(ここで、SはWとHにそれぞれ置き換えられることができる)が、predMipのエッジ長さpredSize(ここで、predSizeは現在のブロックのblocksizeIdxのみに関連する)に等しい場合に、MIP予測ブロックを現在のブロックのイントラ予測ブロックに直接に設定することができる。そうでなければ、現在のブロックのイントラ予測ブロックを取得するために、MIP予測ブロックをフィルタリングする必要がある。ここで、4×4の現在のブロックを例として、現在のブロックのサイズパラメータとMIP予測ブロックのサイズパラメータが同じである場合に、MIP予測ブロックをフィルタリングする必要がなく、MIP予測ブロックを現在のブロックのイントラ予測ブロックに直接に設定することができ、そして、現在のブロックにおける少なくとも1つのサンプルのイントラ予測値を取得する。
【0175】
簡単に説明すると、MIPモードのもとの予測プロセスについて、MIPモードの入力データは、現在のブロックの位置(xTbCmp、yTbCmp)、現在のブロックに適用されるMIPモードインデックス値(modelIdで表すことができる)、現在のブロックの高さ(nTbHで表す)、現在のブロックの幅(nTbWで表す)、及び転置が必要か否かを示す転置指示フラグ(即ち、MIP転置指示パラメータ(isTransposedで表すことができる))などを含むことができる。MIPモードの出力データは、現在のブロックのイントラ予測ブロックを含むことができる。当該イントラ予測ブロックにおけるサンプル座標[x][y]に対応の予測値は、predSamples[x][y]であり、x=0、1、…nTbW-1、y=0、1、… nTbH-1。
【0176】
図5に示すように、MIP予測プロセスは具体的に、以下のステップを含む。
【0177】
S501:コアパラメータを構成する。
【0178】
S501について、MIPコアパラメータは、現在のブロックの種類(mipSizeIdで表す)、各エッジの参照サンプルの数(boundySizeで表す)、MIP入力サンプルの数(inSizeで表す)、及び行列乗算から出力されるMIP予測ブロックのサイズ(predSize×predSizeで配列される)を含むことができる。現在のブロックのサイズに基づいて、現在のブロックを3つの種類に分類することができ、mipSizeIdで現在のブロックの種類を記録する。ここで、mipSizeIdは0、1又は2に等しくてもよい。また、現在のブロックの種類が異なると、参照サンプルの数及び行列乗算から出力されるMIP予測ブロックのサイズも異なる。
【0179】
S502:参照サンプルを取得する。
【0180】
S502について、現在のブロックを予測するとき、現在のブロックの上隣接ブロックと左隣接ブロックはいずれも符号化済みのブロックであり、MIPモードのもとの参照サンプルは、現在のブロックに隣接する上の行と左の列におけるサンプルの再構成値である。換言すると、現在のブロックの上隣接参照サンプル(refTで表す)と左隣接参照サンプル(refLで表す)を取得するプロセスは、参照サンプルの取得プロセスである。
【0181】
S503:入力サンプルを構築する。
【0182】
S503について、当該ステップは、行列乗算の入力のために用いられ、具体的に以下を含むことができる。
S5031:参照サンプルを取得する。
S5032:参照サンプルバッファを構築する。
S5033:行列乗算の入力サンプルを導く。
【0183】
S5031について、参照サンプルを取得するプロセスは、参照サンプルをダウンサンプリングするプロセスである。S5031について、参照サンプルバッファの構築において、2種類の埋め方法があり、具体に以下を含むことができる。
S5032-1:転置を必要としないバッファの埋め方法。
S5032-2:転置を必要とするバッファの埋め方法。
【0184】
S504:イントラ予測値を生成する。
【0185】
S504について、当該ステップは、現在のブロックのMIP予測値を取得するために用いられ、具体的に以下を含むことができる。
S5041:行列乗算の出力サンプルのMIP予測ブロックを構築する。
S5042:行列乗算の出力サンプルのMIP予測ブロックに対してクリッピングを実行する。
S5043:行列乗算の出力サンプルのMIP予測ブロックに対して転置を行う。
S5044:MIP予測値を生成する。
【0186】
S5041について、MIP予測ブロックを構築するプロセスは、具体的に以下を含むことができる。
S5041-1:重み付け行列を取得する。
S5041-2:シフトパラメータを取得する。
S5041-3:行列乗算演算を行う。
【0187】
換言すると、MIP予測ブロックを構築するプロセスにおいて、重み付け行列だけではなく、シフトパラメータ(シフトオフセットパラメータ及びシフトナンバーパラメータを含む)を取得する必要がある。次に、行列乗算の出力サンプルのMIP予測ブロックを取得するために、行列乗算演算を行う。S5044について、最終的なMIP予測値の生成は、2つの状況を含み、具体的に以下を含むことができる。
S5044-1:アップサンプリングを必要としない予測値を生成する。
S5044-2:アップサンプリングを必要とする予測値を生成する。
【0188】
このように、上記S501~S504という4つのステップの後、本発明の実施形態において、現在のブロックの彩度コンポーネントにおける少なくとも1つのサンプルのイントラ予測値を取得することができる。
【0189】
S305:現在のブロックの彩度コンポーネントのイントラ予測値に基づいて、現在のブロックの彩度コンポーネントの予測残差値を決定する。
【0190】
なお、現在のブロックの彩度コンポーネントのイントラ予測値を取得した後、現在のブロックの彩度コンポーネントの実際の値と現在のブロックの彩度コンポーネントのイントラ予測値との差を計算することによって、現在のブロックの彩度コンポーネントの予測残差値を取得し、即ち、現在のブロックの残差ブロックを取得する。
【0191】
S306:予測残差値に対して低周波非分離変換(LFNST)を行うことによって、LFNSTパラメータを決定する。
【0192】
なお、
図1に示す変換ユニット108について、変換ユニット108は、現在のブロックの残差ブロックに対して第1の変換を行うことができ、例として、離散コサイン変換(Discrete Cosine Transform、DCT)に基づいて初期に設計された整数変換が挙げられる。また、現在のブロックの残差ブロックに対して第2の変換を行うことができ、例として、低周波非分離変換(LFNST)が挙げられる。具体的に、いくつかの実施形態において、上記予測残差値に対してLFNSTを行うことによって、LFNSTパラメータを決定することは、以下を含むことができる。
【0193】
予測残差値に基づいて現在のブロックの残差ブロックを決定し、残差ブロックに対して第1の変換を行うことによって第1の変換係数ブロックを取得する。
第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うか否かを決定する。
決定の結果がYesの場合に、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことによって、LFNSTパラメータを決定する。
【0194】
本発明の実施形態において、符号器は、残差ブロックにおける予測残差値に対して第1の変換(「コア変換」、「一次変換」又は「主変換」とも呼ばれる)を行うことによって、第1の変換の後の第1の変換係数ブロックを取得する。次に、第1の変換係数ブロックにおける一部又は全部の変換係数に対してLFNST(「セカンダリ変換」又は「二次変換」とも呼ばれる)を行うことによって、LFNSTパラメータを決定する。なお、本明細書における第1の変換は、LFNSTとは異なる変換であることに留意されたい。
【0195】
また、LFNSTは、任意の現在のブロックに対して行われないことに留意されたい。第1の変換の後、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うか否かを決定するために、いくつかの条件(例えば、現在のブロックのサイズパラメータのうちの最小値、現在のブロックのブロックサイズインデックス値など)をチェックする(check)必要がある。選択的に、いくつかの実施形態において、上記第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うか否かを決定することは、以下を含むことができる。
MIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定する場合に、現在のブロックのサイズパラメータのうちの最小値を決定する。
最小値に基づいて、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うか否かを決定する。
【0196】
さらに、上記最小値に基づいて、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うか否かを決定することは、以下を含むことができる。
最小値が第1の予め設定された閾値以上である場合に、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことを決定する。
【0197】
ここで、第1の予め設定された閾値は、LFNSTを行うか否かを判断するための予め設定された閾値を表すために用いられることができる。本発明の実施形態において、第1の予め設定された閾値は、8に設定されることができるが、特に限定されない。
【0198】
換言すると、MIPモードを用いて現在のブロックの彩度コンポーネントに対してイントラ予測を行う場合に、現在のブロックのサイズパラメータのうちの最小値を決定することができる。例えば、幅と高さの最小値が8以上である場合に、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うと決定することができる。
【0199】
選択的に、いくつかの実施形態において、上記第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うか否かを決定することは、以下を含むことができる。
MIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定する場合に、現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定する。
ブロックサイズインデックス値に基づいて、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うか否かを決定する。
【0200】
さらに、上記ブロックサイズインデックス値に基づいて、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うか否かを決定することは、
ブロックサイズインデックス値が第2の予め設定された閾値に等しい場合に、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うと決定すること、を含むことができる。
【0201】
ここで、第2の予め設定された閾値は、LFNSTを行うか否かを判断するための予め設定された閾値を表すために用いられることができる。本発明の実施形態において、第2の予め設定された閾値は、1つの設定された値(例えば、2)、又は複数の設定された値(例えば1、2)のうちの1つに設定されることができるが、特に限定されない。
【0202】
換言すると、MIPモードを用いて現在のブロックの彩度コンポーネントに対してイントラ予測を行う場合に、現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値(mipSizeId)を決定することができる。例えば、mipSizeIdの値が2に等しい場合に、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うと決定することができる。
【0203】
選択的に、いくつかの実施形態において、上記第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うか否かを決定することは、以下を含むことができる。
第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行わない場合に、第1のコスト結果を計算する。
第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行う場合に、第2のコスト結果を計算する。
第1のコスト結果及び第2のコスト結果に基づいて、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うか否かを決定する。
【0204】
さらに、第1のコスト結果及び第2のコスト結果に基づいて、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うか否かを決定することは、
第1のコスト結果が第2のコスト結果より大きい場合に、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うと決定すること、を含むことができる。
【0205】
なお、本発明の実施形態において、従来のレート歪み最適化方法が採用され得ることに留意されたい。まず、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行わない場合に、第1のコスト結果を計算する。次に、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行う場合に、第2のコスト結果を計算する。第1のコスト結果と第2のコスト結果とを比較し、第1のコスト結果が第2のコスト結果より大きい場合に、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うと決定することができる。
【0206】
このように、決定の結果がYesの場合に、即ち、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行う必要がある場合に、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことによって、LFNSTパラメータを決定することができる。
【0207】
S307:LFNSTパラメータを符号化し、且つビットストリームに書き込む。
【0208】
なお、LFNSTパラメータは、LFNSTインデックスを含み、lfnst_indexで表されることができる。いくつかの実施形態において、LFNSTパラメータを決定することは、以下を含むことができる。
第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うと決定される場合に、LFNSTインデックスの値を0より大きく設定する。
第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行わないと決定される場合に、LFNSTインデックスの値を0に設定する。
【0209】
さらに、S307について、上記LFNSTパラメータを符号化し且つビットストリームに書き込むことは、
LFNSTインデックスを符号化し且つビットストリームに書き込むこと、を含むことができる。
【0210】
換言すると、LFNSTパラメータ、即ちlfnst_indexを決定した後、lfnst_indexが0に等しい場合に、LFNSTを行わないことが示される。lfnst_indexが0より大きい場合に、LFNSTを行う必要があることが示される。符号化のプロセスにおいて、記述子が「ae(v)」であるコンテキスト適応バイナリ算術符号化(Context-based Adaptive Binary Arithmetic Coding、CABAC)を用いてlfnst_indexを符号化することができる。
【0211】
例示的に、表8を参照すると、表8は関連技術に係るLFNSTパラメータのシンタックス構造の記述の一例を示している。この場合、第1の変換係数ブロックにおける少なくとも一部の変換係数ブロックに対してLFNSTを行うか否かを決定する条件は、treeType = = DUAL_TREE_CHROMA、!IntraMipFlag[ x0 ][ y0 ]、Min( lfnstWidth, lfnstHeight ) >= 16のうちの少なくとも1つを含むことができる。
【0212】
【0213】
表9Aと表9Bを参照すると、表9Aと表9Bはそれぞれ、本発明の実施形態に係るLFNSTパラメータのシンタックス構造の記述の一例を示している。この場合、第1の変換係数ブロックにおける少なくとも一部の変換係数ブロックに対してLFNSTを行うか否かを決定する条件は、intra_mip_flag[x0][y0]= = 1&&Min(lfnstWidth, lfnstHeight) >= 8、intra_mip_flag[x0][y0]= = 1&& mipSizeId = = 2のうちの少なくとも1つを含むことができる。
【0214】
具体的に、表9Aのシンタックス構造に示すように、現在のブロックのサイズパラメータの最小値が8以上である場合(即ち、幅と高さがいずれも8以上である場合)に、MIPモードを用いて(即ち、intra_mip_flag[x0][y0]==1のとき)現在のブロックのlfnst_indexを符号化することができる。又は、決定の条件は、幅と高さがいずれも第1の値(例えば、8)以上であり、且つ幅と高さの合計が第2の値(例えば、16)以上であると設定されてもよい。表9Bのシンタックス構造に示すように、現在のブロックのブロックサイズインデックス値(mipSizeId)が2に等しい場合に、MIPモードを用いて(即ち、intra_mip_flag[x0][y0]==1のとき)現在のブロックのlfnst_indexを符号化することができる。又は、決定の条件は、mipSizeIdが複数の設定された値(例えば、1、2)のうちの1つに等しいと設定されてもよい。
【0215】
【0216】
【0217】
また、現在のブロックに対してLFNSTを行うことができると決定される場合に、現在のブロックのために使用されるLFNST変換カーネル(kernelで表す)が決定される必要がある。いくつかの実施形態において、上記予測残差値に対してLFNSTを行うことによって、LFNSTパラメータを決定することは、以下を含むことができる。現在のブロックのために使用されるLFNST変換カーネルを決定し、LFNST変換カーネルを利用して予測残差値に対してLFNSTを行うことによって、LFNSTパラメータを決定する。
【0218】
本発明の実施形態において、LFNSTには4つの変換カーネル候補セットがある。この4つの変換カーネル候補セットは、セット0、セット1、セット2及びセット3を含むことができる。ここで、本発明の実施形態において、MIPパラメータを利用してLFNST変換カーネル候補セットを決定することができ、次に、LFNST変換カーネル候補セットから、現在のブロックのために使用されるLFNST変換カーネルを選択する。従って、いくつかの実施形態において、上記方法は、以下をさらに含むことができる。
【0219】
MIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定する場合に、現在のブロックの予測パラメータからMIPパラメータを決定する。
MIPパラメータに基づいて、LFNST変換カーネル候補セットを決定する。
LFNST変換カーネル候補セットにおいて、LFNSTインデックスによって示される変換カーネルを、現在のブロックのために使用されるLFNST変換カーネルとして設定する。
LFNSTインデックスの値を、現在のブロックに対してLFNSTを行うこと及びLFNST変換カーネル候補セットにおけるLFNST変換カーネルのインデックスを示すように設定する。
LFNST変換カーネル候補セットは、2つ又は複数の予めに設定されたLFNST変換カーネルを含む。
【0220】
なお、MIPパラメータは、MIPモードインデックス値(modelIdで表す)及びMIP転置指示パラメータ(isTransposedで表す)のうちの少なくとも1つを含むことができる。現在のブロックのために使用されるLFNST変換カーネルについて、MIP転置指示パラメータの値が、MIPモードに使用されるサンプル入力ベクトルに対して転置を行うことを示す場合に、現在のブロックのために使用されるLFNST変換カーネルを取得するために、選択された変換カーネルに対して行列転置を行う必要がある。
【0221】
さらに、いくつかの実施形態において、上記MIPパラメータに基づいて、LFNST変換カーネル候補セットを決定することは、以下を含むことができる。
MIPモードインデックス値に基づいて、LFNSTイントラ予測モードインデックスの値を決定する。
LFNSTイントラ予測モードインデックスの値に基づいて、第5の予め設定されたルックアップテーブルによって、LFNST変換カーネル候補セットのインデックス値を決定する。
LFNST変換カーネル候補セットのインデックス値に基づいて、複数の候補LFNST変換カーネル候補セットから前記LFNST変換カーネル候補セットを選択する。
【0222】
ここで、LFNSTイントラ予測モードインデックスをpredModeIntraで表すことができ、LFNST変換カーネル候補セットのインデックス値をlfnstTrSetIdxで表すことができる。
【0223】
なお、第5の予め設定されたルックアップテーブルは、表10に示す通りである。MIPモードインデックス値(即ち、modelIdの値)に基づいて、predModeIntraの値を決定することができる。次に、predModeIntraの値に基づいて、表10と合わせてlfnstTrSetIdxの値を直接に決定し、即ち、現在のブロックのために選択されたLFNST変換カーネル候補セットを決定することができる。ここで、lfnstTrSetIdxの値は、LFNSTに使用される変換カーネル候補セットを示す。modelIdの値は0、1、2、3、4、5を含むことができるため、predModeIntraの値も0、1、2、3、4、又は5である。predModeIntraとlfnstTrSetIdxとの対応関係は以下の通りである。
【0224】
【0225】
1つの具体的な実施形態において、上記MIPモードインデックス値に基づいて、LFNSTイントラ予測モードインデックスの値を決定することは、
LFNSTイントラ予測モードインデックスの値をMIPモードインデックス値に等しく設定すること、を含むことができる。
【0226】
換言すると、本発明の実施形態において、predModeIntraの値をmodelIdの値に等しく設定することができ、次に、predModeIntraの値に基づいて、表10と合わせてlfnstTrSetIdxの値を直接に決定し、即ち、現在のブロックのために選択されたLFNST変換カーネル候補セットを決定する。また、本発明の別の具体的な実施形態において、modelIdの値をPLANARモードの値に直接にマッピングし、次に、PLANARモードに対応のpredModeIntraの値を利用して、lfnstTrSetIdxの値を決定し、即ち、現在のブロックのために選択されたLFNST変換カーネル候補セットを決定する。
【0227】
いくつかの実施形態において、LFNSTパラメータはLFNST係数をさらに含む。上記LFNSTパラメータを決定することは、
第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことによって、LFNST係数を取得すること、を含むことができる。
【0228】
それに応じて、上記LFNSTパラメータを符号化し、且つビットストリームに書き込むことは、
LFNST係数を量子化することによって、量子化係数を取得することと、
量子化係数を符号化し、且つビットストリームに書き込むことと、を含む。
【0229】
なお、lfnst_indexが0に等しくない場合に、即ち、現在のブロックに対してLFNSTを行うと決定する場合に、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことによって、LFNST係数を取得することができる。次に、LFNST係数を量子化し、符号化し、且つビットストリーム(bitstream)に書き込む。
【0230】
なお、d[x][y]は第1の変換係数ブロックであると仮設し、ここで、x=0、...、nTbW-1、y=0、…、nTbH-1、nTbWとnTbHはそれぞれ現在のブロックの幅と高さを表す。v[x]はLFNST係数を含むブロックを表すと仮設し、ここで、x=0、…、nLfnstOutSize-1、nLfnstOutSize =(nTbW> = 8 && nTbH> = 8)? 48 : 16。
【0231】
1つの可能な実施態様において、LFNST係数を取得するために、水平走査順序で第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことができる。具体的は以下の通りである。
【数8】
【0232】
log2LfnstSizeは以下のように決定される。
【数9】
【0233】
別の可能な実施態様において、走査順序は水平走査順序及び垂直走査順序を含むことができる。ここで、走査順序の決定は、MIP転置指示パラメータ(isTransposedで表す)に関連する。
【0234】
選択的に、いくつかの実施形態において、上記第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことによって、LFNST係数を取得することは、以下を含むことができる。
【0235】
MIP転置指示パラメータの値が、MIPモードに使用されるサンプル入力ベクトルに対して転置を行うことを示す場合に、垂直走査順序で第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことによって、LFNST係数を取得する。
MIP転置指示パラメータの値が、MIPモードに使用されるサンプル入力ベクトルに対して転置を行わないことを示す場合に、水平走査順序で第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことによって、LFNST係数を取得する。
【0236】
具体的に、isTransposedの値が0に等しい場合に、MIPモードに使用されるサンプル入力ベクトルに対して転置を行わない。そして、水平走査順序で第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことができる。具体的は以下の通りである。
【数10】
【0237】
isTransposedの値が1に等しい場合に、MIPモードに使用されるサンプル入力ベクトルに対して転置を行う。そして、垂直走査順序で第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことができる。具体的は以下の通りである。
【数11】
【0238】
log2LfnstSizeは上記式(9)のように決定される。
【0239】
選択的に、いくつかの実施形態において、上記第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことによって、LFNST係数を取得することは、以下を含むことができる。
【0240】
MIP転置指示パラメータの値が、MIPモードに使用されるサンプル入力ベクトルに対して転置を行うことを示す場合に、水平走査順序で第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことによって、LFNST係数を取得する。
MIP転置指示パラメータの値が、MIPモードに使用されるサンプル入力ベクトルに対して転置を行わないことを示す場合に、垂直走査順序で第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことによって、LFNST係数を取得する。
【0241】
具体的に、isTransposedの値が1に等しい場合に、MIPモードに使用されるサンプル入力ベクトルに対して転置を行う。そして、水平走査順序で第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことができる。具体的は上記式(10)に示したようである。
【0242】
isTransposedの値が0に等しい場合に、MIPモードに使用されるサンプル入力ベクトルに対して転置を行わない。そして、垂直走査順序で第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことができる。具体的は上記式(11)に示したようである。
【0243】
log2LfnstSizeは上記式(9)のように決定される。
【0244】
また、本発明の実施形態におけるLFNSTは、MIPモードだけではなく、従来のイントラ予測モード(例えば、角度イントラ予測モード、DCモード及びPLANARモードなど)に適用されることができる。その具体的な実現方式は、MIPモードと類似である。
【0245】
いくつかの実施形態において、上記MIPパラメータに基づいて、LFNST変換カーネル候補セットを決定することは、以下を含むことができる。
従来のイントラ予測モードのインデックス値に基づいて、LFNSTイントラ予測モードインデックスの値を決定する。
LFNSTイントラ予測モードインデックスの値に基づいて、第6の予め設定されたルックアップテーブルによって、LFNST変換カーネル候補セットのインデックス値を決定する。
LFNST変換カーネル候補セットのインデックス値に基づいて、複数の候補LFNST変換カーネル候補セットからLFNST変換カーネル候補セットを選択する。
【0246】
なお、第6の予め設定されたルックアップテーブルは表11に示す通りである。従来のイントラ予測モードのインデックス値に基づいて、predModeIntraの値を決定することができる。次に、predModeIntraの値に基づいて、表11と合わせてlfnstTrSetIdxの値を直接に決定し、即ち、現在のブロックのために選択されたLFNST変換カーネル候補セットを決定することができる。ここで、lfnstTrSetIdxの値を決定するために、従来のイントラ予測モードのインデックス値をpredModeIntraに割り当てることができる。
【0247】
【0248】
以下、
図1に示す符号器100を参照しながら、本発明の実施形態の符号化方法を具体的に説明する。
【0249】
本発明の実施形態における現在のブロック(又は「符号化ブロック」と呼ばれる)が、CU又はCUのパーティション(例えば、変換ブロック)であってもよいと理解されるべきである。具体的に、イントラ予測ユニット106はMIPモードを用いて現在のブロックを符号化することを決定する場合に、又はイントラ予測ユニット106はレート歪み最適化方法で現在のブロックを符号化するためのMIPモードを評価する場合に、イントラ予測ユニット106は、現在のブロックのイントラ予測ブロックを取得する。現在のブロックのイントラ予測ブロックは、現在のブロックにおける少なくとも1つのサンプル(samples)のイントラ予測値を含む。
【0250】
具体的に、イントラ予測ユニット106がMIPモードを用いてイントラ予測ブロックを取得するステップは、以下の通りである。
【0251】
まず、イントラ予測ユニット106は、現在のブロックの隣接サンプルから1つ又は複数の参照サンプルを取得する。例えば、隣接サンプルをダウンサンプリングすることによって、又は隣接サンプルから直接に抽出することによって取得する。
【0252】
次に、イントラ予測ユニット106は、取得した参照サンプル、MIP行列及びシフトパラメータを用いて、現在のブロックにおけるサンプル位置に対応の1つ又は複数の部分的な予測サンプルを決定する。ここで、サンプル位置は、現在のブロックにおける予め設定されたサンプル位置であることができ、例として、サンプル位置は均等な水平方向及び垂直方向の座標値を有する。また、シフトパラメータは、シフトナンバーパラメータ及びシフトオフセットパラメータを含み、シフトパラメータは、部分的なサンプルのイントラ予測値を取得するプロセスにおいて、オフセット操作のために用いられることができる。
【0253】
最後に、現在のブロックの部分的なサンプルに対応の予測サンプルを取得した場合に、イントラ予測ユニット106は、現在のブロックにおける部分的なサンプル以外の残りのサンプルに対応の予測サンプルをさらに取得する必要がある。例えば、イントラ予測ユニット106は、補間フィルターを利用して残りのサンプルに対応の予測サンプルを取得することができ、補間フィルターの入力は部分的なサンプルと隣接サンプルであることができる。
【0254】
図6に示すように、
図6は、本発明の実施形態に係るMIPモードを用いてイントラ予測ブロックを取得することのフローチャートを示している。このフローは符号器100で実現されることができ、ここの「現在のブロック」は「符号化ブロック」を指す。
【0255】
ステップ601、イントラ予測ユニット106は現在のブロックの隣接サンプルを取得し、例として、隣接サンプルは、
図6に示すステップ601における現在のブロックに隣接する灰色の正方形としてマークされる。イントラ予測ユニット106は隣接サンプルから1つ又は複数の参照サンプルを取得する。
図6に示すステップ601の例において、選択的に、イントラ予測ユニット106は、2つの隣接サンプルの平均値を計算し、且つ当該平均値を参照サンプルとして用いることができる。選択的に、イントラ予測ユニット106は1つの隣接サンプルおきに1つの隣接サンプルを参照サンプルを選択する。例えば、
図6に示すステップ601の例において、イントラ予測ユニット106は、現在のブロックの8つの上隣接サンプルから4つの参照サンプルを選択し、且つ現在のブロックの8つの左隣接サンプルから別の4つの参照サンプルを選択する。
【0256】
ステップ601の具体的なプロセスは、以下のように示される。
【0257】
イントラ予測ユニット106は、ブロック分割ユニット103から現在のブロックの幅と高さを取得し、幅と高さはそれぞれ、変数cbWidthとcbHeightで表される。例示として、イントラ予測ユニット106は、レート歪み最適化のモード決定方法を呼び出すことによってイントラ予測モードを決定する。現在のブロックは1つ又は複数の変換ブロックに分割される。変数nTbWとnTbHをそれぞれ、変換ブロックの幅と高さとする。イントラ予測モードとしてMIPモードを用いて現在のブロックのイントラ予測値を取得する場合に、イントラ予測ユニット106は、MIPのブロックサイズインデックス値、即ち、mipSizeIdで表す変数を決定する。
【0258】
選択的に、イントラ予測ユニット106は、以下のようにmipSizeIdの値を決定する。
-nTbWとnTbHがいずれも4に等しい場合に、mipSizeIdを0に等しく設定する。
-そうでなければ、cbWidth又はcbHeightが4に等しい場合に、mipSizeIdを1に等しく設定する。
-そうでなければ、mipSizeIdを2に等しく設定する。
【0259】
具体的に、現在のブロックのサイズパラメータが8×8である(即ち、cbWidthとcbHeightがいずれも8に等しい)場合に、mipSizeIdを2に等しく設定する。
【0260】
選択的に、イントラ予測ユニット106は、以下のようにmipSizeIdの値を決定する。
-nTbWとnTbHがいずれも4に等しい場合に、mipSizeIdを0に等しく設定する。
-そうでなければ、cbWidth又はcbHeightが4に等しいか、又はcbWidthとcbHeightがいずれも8に等しい場合に、mipSizeIdを1に等しく設定する。
-そうでなければ、mipSizeIdを2に等しく設定する。
【0261】
具体的に、現在のブロックのサイズパラメータが8×8である場合に、mipSizeIdを1に等しく設定する。
【0262】
さらに、イントラ予測ユニット106はmipSizeIdに基づいて、boundarySizeとpredSizeの値を取得する。具体的は以下の通りである。
-mipSizeIdが0に等しい場合に、boundarySizeを2に等しく設定し、predSizeを4に等しく設定する。
-そうでなければ、mipSizeIdが1に等しい場合に、boundarySizeを4に等しく設定し、predSizeを4に等しく設定する。
-そうでなければ(mipSizeIdが2に等しい場合に)、boundarySizeを4に等しく設定し、predSizeを8に等しく設定する。
boundarySizeは、現在のブロックの上隣接参照サンプル及び左隣接参照サンプルの各々から取得される参照サンプル数を表す。
【0263】
イントラ予測ユニット106は、バッファpTempに記憶された参照サンプルの順序を示すために、変数isTransposedをさらに取得することができる。例えば、isTransposedが0に等しいことは、イントラ予測ユニット106がまず現在のブロックの上隣接参照サンプルから取得された参照サンプルを呈し、次に、左隣接参照サンプルから取得された参照サンプルを呈することを示す。そうでなければ、isTransposedが1に等しいことは、イントラ予測ユニット106がまず現在のブロックの左隣接参照サンプルから取得された参照サンプルを呈し、次に、上隣接参照サンプルから取得された参照サンプルを呈することを示す。isTransposedの値は、符号化され且つビットストリームに書き込まれる必要のあるMIPモードのパラメータの1つとして、エントロピー符号化ユニット115に送られる。
【0264】
イントラ予測ユニット106は、上記式(1)に示したように、MIPモードに使用される参照サンプル数を示すために、inSizeの値を取得する。
【0265】
イントラ予測ユニット106は、現在のブロックの隣接参照サンプルを用いて参照サンプル群(アレーp[x]として記憶され、xは0、…、inSize-1である)を取得するために、以下のプロセスを呼び出す。
【0266】
イントラ予測ユニット106は、現在のブロックの上隣接参照サンプル(例えば、アレーrefTに記憶されている)からnTbW参照サンプルを取得し、且つ現在のブロックの左隣接参照サンプル(例えば、アレーrefLに記憶されている)からnTbH参照サンプルを取得する。イントラ予測ユニット106は、boundarySize参照サンプルを取得するためにrefTに対してダウンサンプリングを呼び出し、且つboundarySize参照サンプルをrefTに記憶する。イントラ予測ユニット106は、boundarySize参照サンプルを取得するためにrefLに対してダウンサンプリングを呼び出し、且つboundarySize参照サンプルをrefLに記憶する。
【0267】
イントラ予測ユニット106は、バッファpTempに記憶された参照サンプルの順序を示すために、変数isTransposedをさらに取得することができる。例えば、isTransposedが0(又は、FALSE)に等しいことは、イントラ予測ユニット106がまず現在のブロックの上隣接参照サンプルから取得された参照サンプルを呈し、次に、左隣接参照サンプルから取得された参照サンプルを呈することを示す。そうでなければ、isTransposedが1(又は、TRUE)に等しいことは、イントラ予測ユニット106がまず現在のブロックの左隣接参照サンプルから取得された参照サンプルを呈し、次に、上隣接参照サンプルから取得された参照サンプルを呈することを示す。イントラ予測ユニット106は、レート歪み最適化方法を用いることで、又は隣接参照サンプルと現在のブロックとの相関の比較に基づいて、isTransposedの値を決定することができる。isTransposedの値は、符号化され且つビットストリームに書き込まれる必要のあるMIPモードのパラメータの1つとして、エントロピー符号化ユニット115に送られる。
【0268】
イントラ予測ユニット106は、isTransposedによって示される順序に基づいて、refTとrefLにおける要素をバッファpTempに入れる。
【0269】
選択的に、イントラ予測ユニット106は以下のようにp[x]を取得し、x=0、…、inSize-1。
-mipSizeIdが2に等しい場合に、p[x]= pTemp[x + 1]- pTemp[0]。
-そうでなければ(mipSizeIdが2より小さい)、p[0]= pTemp[0]- (1 << (BitDepth-1))、p[x]= pTemp[x]- pTemp[0]。
BitDepthは、現在のブロックにおけるサンプルのカラーコンポーネントのビット深度である。ここで、カラーコンポーネントは、RGBコンポーネントのうちの1つ、YUVコンポーネントのうちの1つ、又はYCbCrコンポーネントのうちの1つであることができ、例として、Yコンポーネントなどが挙げられる。
【0270】
選択的に、イントラ予測ユニット106は以下のようにp[x]を取得することができ、x=0、…、inSize-1。
-mipSizeIdが2に等しい場合に、p[x]= pTemp[x + 1]- pTemp[0]。
-そうでなければ(mipSizeIdが2より小さい)、p[0]= (1 << (BitDepth-1)) - pTemp[0]、p[x]= pTemp[x]- pTemp[0]。
【0271】
選択的に、イントラ予測ユニット106は、mipSizeIdの値を決定せず、統一的な計算方法でp[x]の値を取得することが可能である。例えば、(1<<(BitDepth-1))を付加要素としてバッファpTempに追加する。この場合、イントラ予測ユニット106はp[x]をpTemp[x+1]-pTemp[0]として計算する。
【0272】
ステップ602、イントラ予測ユニット106は、参照サンプル群及びMIP重み付け行列を用いて現在のブロックのMIP予測値を取得する。MIP重み付け行列は、MIPモードに対応のMIPモードインデックス値(ModeIdで表す)及びMIPのブロックサイズインデックス値(mipSizeIdで表す)に基づいて、予め定義されMIP重み付け行列群から選択される。
【0273】
イントラ予測ユニット106は、現在のブロックにおける1つ又は複数のサンプル位置に対応の部分的な予測サンプルのMIP予測値(predMip[x][y]で表す)を取得する。
図6に示すステップ602の例において、部分的な予測サンプルは、現在のブロックにおいて灰色の正方形としてマークされるサンプルである。予測モジュール601の入力は、ステップ601において取得された参照サンプルp[x]であり、予測モジュール601は、MIP重み付け行列及びシフトパラメータを用いて部分的な予測サンプルを計算する。シフトパラメータは、シフトナンバーパラメータ及びシフトオフセットパラメータを含む。
【0274】
1つの可能な実施形態において、予測モジュール601は、その座標を(x,y)にすることで、predMip[x][y]で表される予測サンプルを取得する。predMip[x][y]の計算式は、式(5)又は式(6)に示すようである。
【0275】
式(5)又は式(6)において、mWeight[i][j]はMIP重み付け行列であり、行列要素は予め定められた定数であってもよく、又は、トレーニング方法などを用いて適応的に更新してもよい。当該トレーニング方法の入力は1つ又は複数の符号化された画像又はブロックであり、又は、外部装置によって符号器100に提供される他のビットストリームからの画像である。fOはoWを決定するためのシフトオフセットパラメータであり、sWはシフトナンバーパラメータであり、p[i]は参照サンプルを用いて計算されたMIP入力サンプル値であり、pTemp[0]は第1の一時的参照値におけるインデックス0に対応の値であり、「>>」はVVCにおいて定義される2進右シフト演算子である。MIPモードを用いて現在のブロックに対してイントラ予測を行うと最終的に決定する場合に、イントラ予測ユニット106は、mWeight[i][j]をエントロピー符号化ユニット115にさらに送ることができる。エントロピー符号化ユニット115は、ビットストリームにおける1つ又は複数のデータユニットにmWeight[i][j]を書き込むことができる。
【0276】
予測モジュール601は、現在のブロックのサイズと現在のブロックのために用いられるMIPモードとに基づいて、sWとfOの値を決定することができる。1つの例において、予測モジュール601は、ルックアップテーブルを用いてsWとfOの値を取得する。
【0277】
選択的に、予測モジュール601は、上記表4を利用することで、現在のブロックのサイズパラメータ及びMIPモードに基づいてsWを決定することができる。
【0278】
選択的に、予測モジュール601は、上記表5を利用することで、現在のブロックのサイズパラメータに基づいてsWを決定することもできる。
【0279】
選択的に、予測モジュール601はさらに、sWを定数値に直接に設定することができる。例えば、様々なサイズパラメータを有するブロック及び異なるMIPモードに対して、予測モジュール601は、sWを5に設定することができる。又は、様々なサイズパラメータを有するブロック及び異なるMIPモードに対して、予測モジュール601は、sWを6に設定することができる。又は、様々なサイズパラメータを有するブロック及び異なるMIPモードに対して、予測モジュール601は、sWを7に設定することができる。
【0280】
選択的に、予測モジュール601は、上記表6を利用することで、現在のブロックのサイズパラメータ及びMIPモードに基づいてfOを決定することができる。
【0281】
選択的に、予測モジュール601は、上記表7を利用することで、現在のブロックのサイズパラメータに基づいてfOを決定することもできる。
【0282】
選択的に、予測モジュール601はさらに、fOを定数値(例えば、0~100)に直接に設定することができる。例えば、様々なサイズパラメータを有するブロック及び異なるMIPモードに対して、予測モジュール601は、fOを32に設定することができる。又は、予測モジュール601はfOを46に設定する。又は、予測モジュール601はfOを56に設定する。又は、予測モジュール601はfOを66に設定する。
【0283】
イントラ予測ユニット106は、predMipにおけるMIP予測値に対してクリッピング操作を行うことができる。isTransposedが1(又は、TRUE)に等しい場合に、predSize×predSizeのアレーpredMip[x][y](x =0、...、predSize-1、y=0、...、predSize-1)はpredTemp[y][x]=predMip[x][y]に変換され、次に、predMip=predTemp。
【0284】
例示として、選択的に、現在のブロックのサイズパラメータが8×8である(即ち、cbWidthとcbHeightがいずれも8に等しい)場合に、イントラ予測ユニット106は、mipSizeIdを2に等しく設定し、且つ8×8のpredMipを取得する。
【0285】
選択的に、現在のブロックのサイズパラメータが8×8である(即ち、cbWidthとcbHeightがいずれも8に等しい)場合に、イントラ予測ユニット106は、mipSizeIdを1に等しく設定し、且つ4×4のpredMipを取得する。
【0286】
ステップ603、イントラ予測ユニット106は、現在のブロックのイントラ予測値(predSamples[x][y]としてアレーに記憶され、x=0、...、nTbW-1、y=0、...、nTbH-1)を以下のように取得する。
【0287】
-イントラ予測ユニット106は、nTbWがpredSizeより大きく、又は、nTbHがpredSizeより大きいと決定すると、predMipを用いてpredSamplesを取得するために、アップサンプリングプロセスを呼び出す。イントラ予測ユニット106は、現在のブロックにおける部分的なサンプル以外の残りのサンプルに対応の予測サンプルを取得する。
図6において、イントラ予測ユニット106は、フィルタリングモジュール602を利用して、現在のブロックにおける部分的なサンプル以外の残りのサンプルに対応の予測サンプルを取得することができる。フィルタリングモジュール602の入力は、ステップ602における灰色の正方形としてマークされるサンプルである。フィルタリングモジュール602は1つ又は複数の補間フィルターを用いて、当該入力を利用して現在のブロックにおける部分的なサンプル以外の残りのサンプルに対応の予測サンプルを取得することができる。例えば、入力は、参照サンプル及び現在のブロックにおける1つ又は複数のサンプル位置の部分的な予測サンプルを含むことができる。又は、入力は、隣接サンプル及び現在のブロックにおける1つ又は複数のサンプル位置の部分的な予測サンプルを含むことができる。又は、入力は参照サンプル、隣接サンプル及び現在のブロックにおける1つ又は複数のサンプル位置の部分的な予測サンプルを含むことができる。例えば、選択的に、現在のブロックのサイズが8×8である(即ち、cbWidthとcbHeightがいずれも8に等しい)場合に、イントラ予測ユニット106は、mipSizeIdが1に等しいと決定し、イントラ予測ユニット106はアップサンプリングプロセスを4×4のpredMipに適用することによって、現在のブロックの8×8のイントラ予測ブロックを取得する。
【0288】
-そうでなければ、イントラ予測ユニット106は、現在のブロックのイントラ予測ブロックを現在のブロックのMIP予測ブロックに等しく設定し、即ち、predSamples[x][y](x=0、...、nTbW-1、y=0、...、nTbH-1)をpredMip[x][y]に等しく設定する。例えば、具体的に、現在のブロックのサイズパラメータが8×8である(即ち、cbWidthとcbHeightがいずれも8に等しい)場合に、イントラ予測ユニット106は、mipSizeIdが2に等しいと決定し、サイズが8×8である(即ち、cbWidthとcbHeightがいずれも8に等しい)現在のブロックのpredSamplesを取得する。
【0289】
このように、
図6に示したフローのブロック図によれば、ステップ603の後、イントラ予測ユニット106は、現在のブロック(即ち、CU)のイントラ予測ブロックを取得することができ、即ち、現在のブロックの少なくとも1つのサンプルのイントラ予測値を決定することができる。
【0290】
予測ユニット102は、現在のブロックのイントラ予測ブロックを出力する。第1の加算器107は、分割ユニット101の出力における現在のブロックと現在のブロックのイントラ予測ブロックとの差、即ち、残差ブロック(即ち、残差CU)を計算する。変換ユニット108は、残差ブロックを読み出し、且つ残差ブロックに対して1つ又は複数の変換操作を行うことによって係数を取得する。量子化ユニット109は係数を量子化し、且つ量子化係数(即ち、レベル)を出力する。
【0291】
変換ユニット108は残差ブロックに対して第1の変換を行い、例として、DCTに基づいて初期に設計された整数変換が挙げられる。変換ユニット108は、二次変換を当該ブロックに適用することが許可されるか否かを決定する。適用が許可されると決定する場合に、変換ユニット108は、二次変換を第1の変換を行った後に取得した係数に適用するか否かをさらに決定する。LFNSTは二次変換の一例である。
【0292】
図7を参照すると、
図7は、本発明の実施形態に係るLFNSTを行うフローの概略図を示している。
図7において、ブロック701は残差ブロックを表す。
【0293】
ステップ701、変換ユニット108は、ブロック701に対して第1の変換(即ち、コア変換)、例として、DCTに基づいて初期に設計された整数変換を行うことによって、第1の変換に対応の変換係数(「第1の変換係数」と呼ぶ)を含むブロック702を取得する。
【0294】
ステップ702、変換ユニット108は、ブロック702における全部又は一部の第1の変換係数に対して、LFNSTなどの二次変換を行うことが許可されるか否かを決定する。
【0295】
例示として、選択的に、LFNSTを含む変換ブロックのイントラ予測モードがMIPモードであり、且つ変換ブロックの幅と高さの最小値が8以上である場合に、変換ユニット108が変換ブロックに対してLFNSTを行うことが許可される。
【0296】
選択的に、LFNSTを含む変換ブロックのイントラ予測モードがMIPモードであり、且つmipSizeIdの値が設定された値(例えば、2)又は複数の設定された値(例えば1、2)のうちの1つに等しい場合に、変換ユニット108が変換ブロックに対してLFNSTを行うことが許可される。
【0297】
変換ユニット108が変換ブロックに対してLFNSTを行うことが許可される場合に、変換ユニット108はLFNSTパラメータ、例として、lfnst_indexを決定する。lfnst_indexが0に等しいことは、変換ユニット108が変換ブロックに対してLFNSTを行わないことを示す。lfnst_indexが0より大きいことは、LFNST変換カーネル候補セットにおける変換カーネルを用いて変換ブロックに対してLFNSTを行うことを示す。
【0298】
変換ユニット108は、従来のレート歪み最適化方法を用いてlfnst_indexの値を決定することができる。まず、変換ユニット108は、変換ブロックに対してLFNSTを行わない場合に、第1のコスト結果を取得する。
【0299】
変換ユニット108は、MIPパラメータに基づいてLFNST変換カーネル候補セットを選択する。MIPパラメータは、MIPモードインデックス値(即ち、modelId)及びMIP転置指示パラメータ(即ち、isTransposed)のうちの1つを含むことができる。
【0300】
変換ユニット108は、変数predModeIntraの値をmodelIdの値に等しく設定する。変換ユニット108はブロック702において第1の変換係数の一部、例として、サブブロック7001、7002及び7003における係数を選択し、且つサブブロックにおける係数に対してLFNSTを行うための変換カーネルを決定する。サブブロックのサイズは設定された値、例として、8×8であることができる。変換ユニット108はpredModeIntraの値に基づいて、LFNST変換カーネル候補セットのインデックス値(即ち、lfnstTrSetIdx)を決定する。MIPモードのもとのブロック符号化について、変換ユニット108は、表10に示したようなルックアップテーブルを用いてlfnstTrSetIdxの値を取得することができる。
【0301】
変換ユニット108は、従来のレート歪み最適化方法を用いてlfnst_indexの値を決定することができる(即ち、この値が0より大きいことは、LFNST変換カーネル候補セットに使用される変換カーネルがlfnstTrSetIdxによって示されることを示す)。変換ユニット108はlfnst_indexの値を、LFNST変換カーネル候補セットにおける変換カーネルのインデックスに設定する。これで、コスト関数には最小値を有し、また、第2のコスト結果が取得される。
【0302】
第1のコスト結果が第2のコスト結果より大きい場合に、変換ユニット108は、変換ブロックに対してLFNSTを行うと決定し、且つ変換カーネルのインデックスを示すlfnst_indexをエントロピー符号化ユニット115に送る。そうでなければ、変換ユニット108は変換ブロックに対してLFNSTを行わない場合に、lfnst_valueを0に等しく設定し、且つLFNSTを行わないことを示すlfnst_indexをエントロピー符号化ユニット115に送る。
【0303】
lfnst_indexが0に等しくない場合に、変換ユニット108は、サブブロック7001、7002及び7003からの係数を用いて変換ブロックに対してLFNSTを行い、LFNST係数を取得し、且つLFNST係数をブロック703のサブブロック7011、7012及び7013に入れる。d[x][y]が第1の変換係数のブロックであると仮設し、ここで、x=0、...、nTbW-1、y=0、...、nTbH-1、nTbWとnTbHはそれぞれ、ブロック703の幅と高さである。v[x]がLFNST係数のブロックであると仮設し、ここで、x=0、...、nLfnstOutSize-1、nLfnstOutSize =(nTbW> = 8 && nTbH> = 8)? 48:16。
【0304】
選択的に、変換ユニット108は、以下の命令を採用して変換係数のブロック703を取得し、且つd[x][y]におけるLFNST係数のブロック703を量子化ユニット109に送る。具体的は上記式(8)に示したようである。log2LfnstSizeは上記式(9)のように決定される。
【0305】
選択的に、isTransposedが0に等しい場合に、変換ユニット108は、以下の命令を採用してLFNST係数のブロック703を取得し、且つd[x][y]におけるLFNST係数のブロック703を量子化ユニット109に送る。具体的は上記式(10)に示したようである。
isTransposedが1に等しい場合に、変換ユニット108は、以下の命令を採用してLFNST係数のブロック703を取得し、且つd[x][y]におけるLFNST係数のブロック703を量子化ユニット109に送る。具体的は上記式(11)に示したようである。
【0306】
選択的に、isTransposedが1に等しい場合に、変換ユニット108は、以下の命令を採用してLFNST係数のブロック703を取得し、且つd[x][y]におけるLFNST係数のブロック703を量子化ユニット109に送る。具体的は上記式(10)に示したようである。
isTransposedが0に等しい場合に、変換ユニット108は、以下の命令を採用してLFNST係数のブロック703を取得し、且つd[x][y]におけるLFNST係数のブロック703を量子化ユニット109に送る。具体的は上記式(11)に示したようである。
【0307】
log2LfnstSizeは上記式(9)のように決定される。
【0308】
さらに、変換ユニット108は、従来のイントラ予測モード(即ち、角度イントラ予測モード、DCモード及びPLANARモードなど)のもとで符号化される変換ブロックにlfnst_indexの値を決定することができる。MIPモードのもとで変換ブロックのlfnst_indexの値を決定するために用いられるレート歪み最適化方法と類似で、変換ブロックに対してLFNSTを行わずに第1のコスト結果を決定する。
【0309】
変換ユニット108は、ルックアップテーブルを用いることで、従来のイントラ予測モードのモードインデックス値(predModeIntraに割り当てられ)に基づいて、lfnstTrSetIdxの値を決定し、即ち、現在のブロックのために選択されたLFNST変換カーネル候補セットを決定する。具体的は上記表11に示したようである。
【0310】
次に、変換ユニット108は、従来のレート歪み最適化方法を用いてlfnst_indexの値を決定することができる(即ち、この値が0より大きいことは、LFNST変換カーネル候補セットに使用される変換カーネルがlfnstTrSetIdxによって示されることを示す)。変換ユニット108はlfnst_indexの値を、LFNST変換カーネル候補セットにおける変換カーネルのインデックスに設定する。これで、コスト関数には最小値を有し、また、第2のコスト結果が取得される。
【0311】
第1のコスト結果が第2のコスト結果より大きい場合に、変換ユニット108は、変換ブロックに対してLFNSTを行うと決定し、且つ変換カーネルのインデックスを示すlfnst_indexをエントロピー符号化ユニット115に送る。そうでなければ、変換ユニット108は変換ブロックに対してLFNSTを行わない場合に、lfnst_valueを0に等しく設定し、且つLFNSTを行わないことを示すlfnst_indexをエントロピー符号化ユニット115に送る。
【0312】
lfnst_indexが0に等しくない場合に、変換ユニット108は、サブブロック7001、7002及び7003からの係数を用いて変換ブロックに対してLFNSTを行い、LFNST係数を取得し、且つLFNST係数をブロック703のサブブロック7011、7012及び7013に入れる。d[x][y]が第1の変換係数のブロックであると仮設し、ここで、x=0、...、nTbW-1、y=0、...、nTbH-1、nTbWとnTbHはそれぞれ、ブロック703の幅と高さである。v[x]がLFNST係数のブロックであると仮設し、ここで、x=0、...、nLfnstOutSize-1、nLfnstOutSize =(nTbW> = 8 && nTbH> = 8)? 48:16。
【0313】
選択的に、predModeIntraが34以下である場合に、変換ユニット108は、以下の命令を採用してLFNST係数のブロック703を取得し、且つd[x][y]におけるLFNST係数のブロック703を量子化ユニット109に送る。具体的は上記式(10)に示したようである。
選択的に、predModeIntraが34より大きい場合に、変換ユニット108は、以下の命令を採用してLFNST係数のブロック703を取得し、且つd[x][y]におけるLFNST係数のブロック703を量子化ユニット109に送る。具体的は上記式(11)に示したようである。
【0314】
選択的に、predModeIntraが34より大きい場合に、変換ユニット108は、以下の命令を採用してLFNST係数のブロック703を取得し、且つd[x][y]におけるLFNST係数のブロック703を量子化ユニット109に送る。具体的は上記式(10)に示したようである。
選択的に、predModeIntraが34以下である場合に、変換ユニット108は、以下の命令を採用してLFNST係数のブロック703を取得し、且つd[x][y]におけるLFNST係数のブロック703を量子化ユニット109に送る。具体的は上記式(11)に示したようである。
【0315】
log2LfnstSizeは上記式(9)のように決定される。
【0316】
さらに、逆量子化ユニット110は再構成係数を出力するために、量子化係数に対してスケーリング操作を行う。逆変換ユニット111は、変換ユニット108における変換に対応の1つ又は複数の逆変換を行い、且つ再構成残差を出力する。第2の加算器112は、再構成残差と予測ユニット102からの現在のブロックのイントラ予測ブロックとを加算することによって、再構成CUを算出する。第2の加算器112はさらに、その出力をイントラ予測参照として用いられるために、予測ユニット102に送る。
【0317】
フィルタリングユニット113の出力は、復号化された画像又はサブ画像であり、これらの復号化された画像又はサブ画像はDPBユニット114に送られる。DPBユニット114は、タイミング及び制御情報に基づいて、復号化された画像を出力する。DPBユニット114に記憶された画像は、予測ユニット102がインター予測又はイントラ予測を行うための参照として用いられることができる。
【0318】
エントロピー符号化ユニット115は、符号器100におけるユニットからのパラメータ(復号化された画像の取得に必要である)、制御パラメータ及び補足情報を2進表現に変換し、且つ各データユニットのシンタックス構造に基づいて、上記2進表現を生成されたビットストリーム(又は、「ビデオビットストリーム」と呼ぶ)に書き込む。具体的は表9Aと表9Bに示したようである。
【0319】
表9Aにおけるシンタックス構造を用いて、符号化ユニットにおける変換ブロックの幅と高さの最小値が8以上である(即ち、幅と高さがいずれも8以上である)場合に、エントロピー符号化ユニット115は、MIPモードを用いて当該符号化ユニットのlfnst_indexを符号化する。別の選択可能な条件は、幅と高さがいずれも第1の値(例えば、8)以上であり、且つ幅と高さの合計が第2の値(例えば、16)以上であると設定されてもよい。
【0320】
表9Bにおけるシンタックス構造を用いて、符号化ユニットのmipSizeIdが2に等しい場合に、エントロピー符号化ユニット115は、MIPモードを用いて符号化ユニットのlfnst_indexを符号化する。別の選択可能な条件は、符号化ユニットのmipSizeIdが複数の値(例えば、1、2)のうちの1つに等しいと設定されてもよい。
【0321】
図8を参照すると、
図8は、本発明の実施形態に係るLFNSTパラメータの符号化のフローチャートを示している。
図8に示すように、このフローは以下を含むことができる。
【0322】
S801:エントロピー符号化ユニット115は、LFNSTパラメータを符号化するか否かを決定するために、上記条件をチェックする。
【0323】
S802:エントロピー符号化ユニット115は、コンテキスト適応バイナリ算術符号化(CABAC)を用いてLFNSTパラメータを符号化する。
【0324】
なお、ステップS801において、エントロピー符号化ユニット115はLFNSTパラメータ、例として、lfnst_indexの値を決定するために、チェックを行う。次に、ステップS802において、表9Aと表9Bに示した記述子が「ae(v)」であるCABACを用いてlfnst_indexの値を符号化する。
【0325】
本発明の実施形態において、符号器100は、プロセッサと符号化プログラムを記憶する記憶媒体とを備えた計算デバイスであってもよい。プロセッサが符号化プログラムを読み出して実行すると、符号器100は入力ビデオを読み出し且つ対応のビットストリームを生成する。また、符号器100は、1つ又は複数のチップを備えた計算デバイスであってもよい。チップで集積回路として実装されたユニットは、
図1における対応のユニットと類似の接続及びデータ交換機能を有する。
【0326】
本実施形態において、符号化方法が提供される。現在のブロックの予測パラメータを決定する。予測パラメータは予測モードパラメータを含む。予測モードパラメータがMIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定する。MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。MIP予測値をフィルタリングすることによって、現在のブロックの彩度コンポーネントのイントラ予測値を決定する。現在のブロックの彩度コンポーネントのイントラ予測値に基づいて、現在のブロックの彩度コンポーネントの予測残差値を決定する。予測残差値に対してLFNSTを行うことによって、LFNSTパラメータを決定する。LFNSTパラメータを符号化し、且つビットストリームに書き込む。このように、MIPモードでは、符号化性能を確保した上で、複雑度を下げ、同時に符号化のプロセスに必要な記憶スペースを減らし、符号化効率を効果的に高めることができる。また、LFNST技術がMIPモード予測に適用される場合に、MIPパラメータの導入により、LFNSTがより柔軟になり、符号化効率がさらに向上することができる。
【0327】
本発明の別の実施形態において、
図9を参照すると、
図9は、本発明の実施形態に係る復号化方法のフローチャートを示している。
図9に示すように、当該方法は、以下を含むことができる。
【0328】
S901:現在のブロックの予測パラメータ及びLFNSTパラメータを取得するために、ビットストリームを解析する。予測パラメータは予測モードパラメータを含む。
【0329】
なお、復号化しようとする画像は複数の画像ブロックに分割されることができ、各復号化しようとする画像ブロックは、復号化ブロックと呼ばれ得る。ここで、各復号化ブロックは、第1の画像コンポーネント、第2の画像コンポーネント及び第3の画像コンポーネントを含むことができる。現在のブロックは、ビデオの画像における第1の画像コンポーネント、第2の画像コンポーネント又は第3の画像コンポーネントの予測が現在実行されようとする復号化ブロックである。
【0330】
また、予測パラメータは予測モードパラメータを含むことができ、予測モードパラメータは、現在のブロックが採用した予測モードを示すために用いられ、異なる予測モードは、異なる予測モードパラメータに対応することに留意されたい。予測モードは一般に、インター予測モード、従来のイントラ予測モード、及び従来と異なるイントラ予測モードを含む。従来のイントラ予測モードは、DCモード、PLANARモード、角度イントラ予測モードなどを含むことができる。従来と異なるイントラ予測モードは、MIPモード、CCLMモード、IBCモード、PLTモードなどを含むことができる。換言すると、符号器は、最適な予測モードを選択して現在のブロックを符号化する。このプロセスにおいて、現在のブロックの予測モードを決定することができ、それに対応して、予測モードパラメータを取得することができる。その後、予測モードパラメータを含む予測パラメータがビットストリームに書き込まれ、符号器から復号器に送られる。
【0331】
このように、復号器において、ビットストリームを解析することによって現在のブロックの予測パラメータを取得することができ、解析によって取得される予測パラメータに含まれる予測モードパラメータは、現在のブロックに対してMIPモードが使用されるか否かを決定するために用いられることができる。
【0332】
S902:予測モードパラメータがMIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定する。
【0333】
なお、現在のブロックに対して、本発明の実施形態において、MIPモードを用いて現在のブロックの彩度コンポーネントに対してイントラ予測を行う。このプロセスにおいて、まず現在のブロックの隣接サンプル値を取得し、次に、現在のブロックの隣接サンプル値に基づいて、現在のブロックのMIP入力サンプル値を決定する。
【0334】
現在のブロックの隣接サンプル値は、現在のブロックの左隣接サンプル値及び現在のブロックの上隣接サンプル値を含むことができる。即ち、現在のブロックの左隣接サンプル値及び上隣接サンプル値に基づいて、現在のブロックのMIP入力サンプル値を決定することができる。
【0335】
いくつかの実施形態において、上記現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定することは、以下を含むことができる。
【0336】
現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定する。
【0337】
現在のブロックの隣接サンプル値をダウンサンプリングすることによって、第1の一時的参照値を取得する。
【0338】
上記現在のブロックのブロックサイズインデックス値が予め設定された範囲内にある場合に、現在のブロックの隣接サンプル値のビット深度に基づいて第2の定数値を決定し、MIP入力サンプル値におけるインデックス0に対応の値を、第2の定数値と第1の一時的参照値におけるインデックス0に対応の値との差に設定し、MIP入力サンプル値におけるインデックスiに対応の値を、第1の一時的参照値におけるインデックスiに対応の値と第1の一時的参照値におけるインデックス0に対応の値との差に設定する。iは0より大きい整数である。
【0339】
上記現在のブロックのブロックサイズインデックス値が予め設定された範囲外にある場合に、MIP入力サンプル値におけるインデックスjに対応の値を、第1の一時的参照値におけるインデックス(j+1)に対応の値と第1の一時的参照値におけるインデックス0に対応の値との差に設定する。jは0以上の整数である。
【0340】
さらに、上記現在のブロックのブロックサイズインデックス値が予め設定された範囲内にある場合に、上記方法はさらに、以下を含むことができる。
現在のブロックの隣接サンプル値のビット深度に基づいて、第2の定数値を決定し、MIP入力サンプル値におけるインデックス0に対応の値を、第1の一時的参照値におけるインデックス0に対応の値と第2の定数値との差に設定し、MIP入力サンプル値におけるインデックスiに対応の値を、第1の一時的参照値におけるインデックスiに対応の値と第1の一時的参照値におけるインデックス0に対応の値との差に設定する。iは0より大きい整数である。
【0341】
現在のブロックの隣接サンプル値をダウンサンプリングした後、第1の一時的参照値を取得できることに留意されたい。第1の一時的参照値について、具体的には、フィルタリングされた隣接サンプル値をバッファ(pTempで表す)にバッファリングされることができる。第1の一時的参照値におけるインデックス0に対応の値は、pTemp[0]を指し、第1の一時的参照値におけるインデックスiに対応の値は、pTemp[i]を指す。
【0342】
本発明の実施態様において、予測パラメータは、予測モードパラメータに加えて、現在のブロックのサイズパラメータをさらに含むことができる。現在のブロックのサイズパラメータは、現在のブロックの幅(nTbWで表す)及び高さ(nTbHで表す)を含むことができる。また、現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値(即ち、mipSizeId)を決定することができる。
【0343】
また、現在のブロックのブロックサイズインデックス値(mipSizeIdで表す)が予め設定された範囲内にあるか否かに基づいて、現在のブロックのサイズパラメータの値が予め設定された範囲内にあるか否かを決定できることに留意されたい。具体的に、mipSizeId=0又は1の場合に、現在のブロックのブロックサイズインデックス値が予め設定された範囲内にあり、即ち、現在のブロックのサイズパラメータの値が予め設定された範囲内にあることが示される。mipSizeId=2の場合に、現在のブロックのブロックサイズインデックス値が予め設定された範囲外にあり、即ち、現在のブロックのサイズパラメータの値が予め設定された範囲内にないことが示される。
【0344】
換言すると、MIP入力サンプル値は、バッファ(pTempで表す)、現在のブロックのブロックサイズインデックス値(MipSizeIdで表す)、現在のブロックの隣接サンプル値のビット深度(BitDepthで表す)によって決定され、MIP入力サンプル値に対応の入力サンプルの数は、現在のブロックのブロックサイズインデックス値に関連する。最後に、MIP入力サンプル値におけるインデックスxに対応の値(p[x]で表す)が取得されることができる。
【0345】
さらに、いくつかの実施形態において、上記現在のブロックの隣接サンプル値のビット深度に基づいて第2の定数値を決定することは、以下を含むことができる。
第2の定数値を2の累乗に設定する。累乗の指数は整数であり、現在のブロックの隣接サンプル値のビット深度から1を引いたものに等しい。
【0346】
又は、いくつかの実施形態において、上記現在のブロックの隣接サンプル値のビット深度に基づいて第2の定数値を決定することは、以下を含むことができる。
「1」を2進左シフトすることによって第2の定数値を取得する。左シフトされたビット数は、現在のブロックの隣接サンプル値のビット深度から1を引いたものに等しい。
【0347】
換言すると、現在のブロックの隣接サンプル値のビット深度(BitDepthで表す)が取得された後、第2の定数値は1<<(BitDepth-1)又は2^(BitDepth-1)として表されることができる。このように、現在のブロックのサイズパラメータの値が予め設定された範囲内にある場合に、第2の定数値と合わせて現在のブロックのMIP入力サンプル値を決定することができる。
【0348】
また、MIP入力サンプルは、行列乗算演算に用いられる行列ベクトルであることに留意されたい。現在の関連技術方案は以下の通りである。バッファ(pTempで表す)、現在のブロックの種類(即ち、mipSizeIdで表す現在のブロックのブロックサイズインデックス値)、現在のブロックの隣接サンプル値のビット深度(BitDepthで表す)及びMIP入力サンプルの数に基づいて、MIP入力サンプル値におけるインデックスxに対応の値(p[x]で表す)を最終的に取得する。
【0349】
1つの可能な実施態様において、mipSizeId=0又は1の場合に、1<<(BitDepth-1)からpTemp[0]を引いたものをp[0]とし、xが0でない場合に、pTemp[x]からpTemp[0]を引いたものをp[x]とする。具体的は上記式(2)に示した通りである。
【0350】
別の可能な実施態様において、mipSizeId=0又は1の場合に、pTemp[0]から1<<(BitDepth-1)を引いたものをp[0]とし、xが0でない場合に、pTemp[x]からpTemp[0]を引いたものをp[x]とする。具体的は上記式(3)に示した通りである。
【0351】
もう1つの可能な実施形態において、mipSizeId=2の場合に、pTemp[x+1]からpTemp[0]を引いたものをp[x]とする。具体的は上記式(4)に示した通りである。
【0352】
上記以外に、本発明の実施形態において、mipSizeIdの値を決定せず、統一的な計算方法でp[x]の値を取得することも可能である。この場合、本発明の実施形態において、(1<<(BitDepth-1))を付加要素として、バッファpTempの末尾に追加する。p[x]を、p[x]=pTemp[x+1]-pTemp[0]に直接に設定することができ、x=0、...、inSize-1。
【0353】
このように、現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定した後、現在のブロックのMIP予測値をさらに決定することができる。
【0354】
S903:MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。
【0355】
MIP予測値は、現在のブロックの彩度コンポーネントにおける一部のサンプルの予測値である。
【0356】
なお、シフトパラメータは、シフトオフセットパラメータ及びシフトナンバーパラメータを含むことができる。S903について、上記MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定することは、以下を含むことができる。
【0357】
シフトオフセットパラメータの値に基づいて、MIP入力サンプル値の合計とシフトオフセットパラメータとの乗積を決定する。シフトオフセットパラメータの値は、固定の定数である。
シフトナンバーパラメータの値に基づいて第1の定数値を決定する。シフトナンバーパラメータの値は、固定の定数である。
第1のオフセットの値を第1の定数値と上記乗積との差に設定する。
予測パラメータに基づいて、現在のブロックのMIP重み付け行列を決定する。
MIP重み付け行列、MIP入力サンプル値、シフトナンバーパラメータ及び第1のオフセットに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。
【0358】
なお、シフトオフセットパラメータは、シフト補償パラメータ又はオフセット因子と呼ばれてもよく、fOで表されることができる。本発明の実施形態において、シフトオフセットパラメータの値は固定の定数、例えば、32、46、56、66、又は32などに設定されることができる。さらに、シフトオフセットパラメータの値は、シフト・オフセット・パラメータ・テーブルに関連するように設定されることができ、シフトオフセットパラメータの値は、ルックアップテーブルによって決定されることができる。本明細書では、それについては限定されない。
【0359】
なお、シフトナンバーパラメータはシフト因子、シフトビット数又は重みシフト値などと呼ばれてもよく、sW、shift又はweight shiftで表されることができる。本発明の実施形態において、シフトナンバーパラメータは一般的に、sWで表される。本発明の実施形態において、シフトナンバーパラメータの値は固定の定数、例えば、5、6、又は7などに設定されることができる。さらに、シフトナンバーパラメータの値は、シフト・ナンバー・パラメータ・テーブルに関連するように設定されることができ、シフトナンバーパラメータの値は、ルックアップテーブルによって決定されることができる。本明細書では、それについては限定されない。
【0360】
また、第1のオフセットはoWで表されることができ、第1のオフセットは、シフトナンバーパラメータとシフトオフセットパラメータの両方に関連する。
【0361】
なお、予測パラメータは、予測モードパラメータ及び現在のブロックのサイズパラメータを含むことができる。予測モードパラメータがMIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、重み付け行列テーブルは予めに確立されることができ、当該重み付け行列テーブルはメモリ又は記憶ユニットに記憶されている。ここのメモリ又は記憶ユニットは、復号器に集積されてもよいし、又は、単独に設けられてもよい。このように、現在のブロックのブロックサイズインデックス値(mipSizeId)及びMIPモードインデックス値(modelId)に基づいて、現在のブロックのために使用される必要のあるMIP重み付け行列(MIP重み行列、又はMIP行列とも呼ばれる)は、ルックアップテーブルによって決定されることができ、mWeight[x][y]で表される。
【0362】
また、復号器において、シフト・ナンバー・パラメータ・テーブルが予めに確立されることができ、当該シフト・ナンバー・パラメータ・テーブルもメモリ又は記憶ユニットに記憶されている。ここのメモリ又は記憶ユニットは、復号器に集積されてもよいし、又は、単独に設けられてもよい。本発明の実施形態において、シフトナンバーパラメータ(sW)は以下のいくつかの方法で決定されることができる。
【0363】
1つの可能な実施形態において、異なるブロックサイズ及び異なるMIPモードインデックス値に対して、シフトナンバーパラメータは異なってもよい。いくつかの実施形態において、上記方法以下をさらに含むことができる。
MIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定する場合に、現在のブロックのMIPモードインデックス値を取得するようにビットストリームを解析する。
MIPモードインデックス値に基づいて、第1の予め設定されたルックアップテーブルからMIPモードインデックス値に対応の値をクエリーする。第1の予め設定されたルックアップテーブルは、MIPモードインデックス値とシフトナンバーパラメータの値との対応関係を記録するために用いられる。
クエリーした値をシフトナンバーパラメータの値として決定する。
【0364】
なお、現在のブロックのブロックサイズインデックス値(mipSizeIdで表す)及びMIPモードインデックス値(modelId)に基づいて、シフトナンバーパラメータの値をクエリーすることができる。上記表4に示した第1の予め設定されたルックアップテーブルにおいて、異なるmipSizeId及びmodelIdに対して、ルックアップテーブルによって、行列乗算において必要とされるシフトナンバーパラメータを決定することができる。
【0365】
ただし、復号器側では、表4をルックアップテーブルの形でメモリ又は記憶ユニットに記憶する必要がある。しかし、記憶にはコストがかかり、ルックアップのプロセスにもコストがかかる。表4におけるシフト因子は、現在のブロックのブロックサイズ及びMIPモードインデックス値の両方に関連するため、メモリの占有量が増え、計算複雑度も増加する。
【0366】
メモリの占有を低減し、計算複雑度を下げるために、本発明の実施形態において、シフト因子の決定方法を簡略化することができる。
【0367】
別の可能な実施態様において、シフトナンバーパラメータの値を、ブロックサイズインデックス値及びMIPモードインデックス値に関連しない固定の定数に設定することができる。例えば、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトナンバーパラメータの値を5に設定することができる。又は、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトナンバーパラメータの値を6に設定することができる。又は、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトナンバーパラメータの値を7に設定することができる。本発明の実施形態において、シフトナンバーパラメータの値を6に設定することが好ましいが、それについては限定されない。
【0368】
もう1つの可能な実施形態において、シフトナンバーパラメータの値について、上記方法は以下をさらに含む。
現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定する。
上記現在のブロックのブロックサイズインデックス値に基づいて、シフトナンバーパラメータの値を決定する。
【0369】
現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定できることに留意されたい。いくつかの実施形態において、上記現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定することは、以下を含むことができる。
現在のブロックの幅と高さがいずれも4に等しい場合に、現在のブロックのブロックサイズインデックス値を0に設定する。
現在のブロックの幅と高さがいずれも8に等しいか、又は現在のブロックの幅と高さの一方が4に等しい場合に、現在のブロックのブロックサイズインデックス値を1に設定する。
現在のブロックの幅と高さが上記条件を満たさない場合に、現在のブロックのブロックサイズインデックス値を2に設定する。
【0370】
このように、現在のブロックのブロックサイズインデックス値を決定した後、現在のブロックのブロックサイズインデックス値に基づいて、シフトナンバーパラメータの値をさらに決定することができる。
【0371】
選択的に、いくつかの実施形態において、上記現在のブロックのブロックサイズインデックス値に基づいて、シフトナンバーパラメータの値を決定することは、以下を含むことができる。
ブロックサイズインデックス値が0、1又は2にそれぞれ等しい場合に、現在のブロックのブロックサイズインデックス値に対応のシフトナンバーパラメータの値が5、6又は5にそれぞれ等しいと決定する。
【0372】
選択的に、いくつかの実施形態において、上記現在のブロックのブロックサイズインデックス値に基づいて、シフトナンバーパラメータの値を決定することは、以下を含むことができる。
シフトナンバーパラメータの値を、現在のブロックのブロックサイズインデックス値に対応の第1の予め設定された値に対する現在のブロックの幅又は高さの比率に等しく設定する。
【0373】
ここで、第1の予め設定された値は、現在のブロックの境界から取得されたMIP入力サンプル値の数を表す。この場合、上記方法は以下を含むこともできる。
現在のブロックのブロックサイズインデックス値が0、1又は2にそれぞれ等しい場合に、現在のブロックのブロックサイズインデックス値に対応の第1の予め設定された値が2、4又は4にそれぞれ等しいと決定する。
【0374】
換言すると、第1の予め設定された値が、現在のブロックの境界から取得されたMIP入力サンプル値の数を表すとき、現在のブロックのブロックサイズインデックス値が0に等しい場合に、対応の第1の予め設定された値は2に等しく、現在のブロックのブロックサイズインデックス値が1に等しい場合に、対応の第1の予め設定された値は4に等しく、現在のブロックのブロックサイズインデックス値が2に等しい場合に、対応の第1の予め設定された値は4に等しい。このように、対応の第1の予め設定された値に対する現在のブロックの幅又は高さの比率に基づいて、シフトナンバーパラメータの値を決定することができる。
【0375】
選択的に、いくつかの実施形態において、上記現在のブロックのブロックサイズインデックス値に基づいて、シフトナンバーパラメータの値を決定することは、以下を含むことができる。
シフトナンバーパラメータの値を、現在のブロックのブロックサイズインデックス値に対応の第2の予め設定された値に対する現在のブロックの幅又は高さの比率に等しく設定する。
【0376】
ここで、第2の予め設定された値は、MIP重み付け行列を直接に使用することによって取得される現在のブロックのMIP予測ブロックのサイズを表す。この場合、上記方法は以下を含むこともできる。
現在のブロックのブロックサイズインデックス値が0、1又は2にそれぞれ等しい場合に、現在のブロックのブロックサイズインデックス値に対応の第2の予め設定された値が4、4又は8にそれぞれ等しいと決定する。
【0377】
換言すると、第2の予め設定された値が、MIP重み付け行列を直接に使用することによって取得される現在のブロックのMIP予測ブロックのサイズを表すとき、現在のブロックのブロックサイズインデックス値が0に等しい場合に、対応の第2の予め設定された値は4に等しく、現在のブロックのブロックサイズインデックス値が1に等しい場合に、対応の第2の予め設定された値は4に等しく、現在のブロックのブロックサイズインデックス値が2に等しい場合に、対応の第2の予め設定された値は8に等しい。このように、対応の第2の予め設定された値に対する現在のブロックの幅又は高さの比率に基づいて、シフトナンバーパラメータの値を決定することができる。
【0378】
もう1つの可能な実施形態において、シフト・ナンバー・パラメータ・テーブルを最小化することができ、また、依然としてルックアップテーブルの方法によってシフトナンバーパラメータの値を決定する。選択的に、いくつかの実施形態において、上記現在のブロックのブロックサイズインデックス値に基づいて、シフトナンバーパラメータの値を決定することは、以下を含むことができる。
ブロックサイズインデックス値に基づいて、第2の予め設定されたルックアップテーブルからブロックサイズインデックス値に対応の値をクエリーする。第2の予め設定されたルックアップテーブルは、ブロックサイズインデックス値とシフトナンバーパラメータの値との対応関係を記録するために用いられる。
クエリーした値をシフトナンバーパラメータの値として決定する。
【0379】
なお、現在のブロックのブロックサイズインデックス値(mipSizeIdで表す)のみに基づいて、シフトナンバーパラメータの値をクエリーすることができる。上記表5に示した第2の予め設定されたルックアップテーブルにおいて、各ブロックサイズインデックス値は、固定値に対応することができる。即ち、各ブロックのサイズ又は各ブロックのサイズセットは、表5に示したような固定したシフトナンバーパラメータの値を有することができる。
【0380】
上記表5によれば、現在のブロックのブロックサイズインデックス値が0、1又は2にそれぞれ等しい場合に、ブロックサイズインデックス値に対応のシフトナンバーパラメータの値が5、6又は5にそれぞれ等しいと決定することができる。
【0381】
このように、シフトナンバーパラメータの決定方法を簡略化することで、特にシフト・ナンバー・パラメータ・テーブルを最小化し又はシフトナンバーパラメータの値を固定することで、ルックアップテーブルの記憶量を最小化することができ、計算複雑度を増やさずに、MIPモードのもとのシフト因子テーブルの記憶に占有されるメモリを低減することができる。
【0382】
さらに、復号器において、シフト・オフセット・パラメータ・テーブルが予めに確立されることができ、当該シフト・オフセット・パラメータ・テーブルもメモリ又は記憶ユニットに記憶されている。ここのメモリ又は記憶ユニットは、復号器に集積されてもよいし、又は、単独に設けられてもよい。本発明の実施形態において、シフトオフセットパラメータ(fO)は以下のいくつかの方法で決定されることができる。
【0383】
1つの可能な実施形態において、異なるブロックサイズ及び異なるMIPモードインデックス値に対して、シフトオフセットパラメータは異なってもよい。いくつかの実施形態において、上記方法以下をさらに含むことができる。
MIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定する場合に、現在のブロックのMIPモードインデックス値を取得するようにビットストリームを解析する。
MIPモードインデックス値に基づいて、第3の予め設定されたルックアップテーブルからMIPモードインデックス値に対応の値をクエリーする。第3の予め設定されたルックアップテーブルは、MIPモードインデックス値とシフトオフセットパラメータの値との対応関係を記録するために用いられる。
クエリーした値をシフトオフセットパラメータの値として決定する。
【0384】
なお、現在のブロックのブロックサイズインデックス値(mipSizeIdで表す)及びMIPモードインデックス値(modelId)に基づいて、シフトオフセットパラメータの値をクエリーすることができる。上記表6に示した第3の予め設定されたルックアップテーブルにおいて、異なるmipSizeId及びmodelIdに対して、ルックアップテーブルによって、行列乗算において必要とされるシフトオフセットパラメータを決定することができる。
【0385】
ただし、復号器側では、表6をルックアップテーブルの形でメモリ又は記憶ユニットに記憶する必要がある。しかし、記憶にはコストがかかり、ルックアップのプロセスにもコストがかかる。表6におけるシフトオフセットパラメータの値は、現在のブロックのブロックサイズ及びMIPモードインデックス値の両方に関連するため、メモリの占有量が増え、計算複雑度も増加する。
【0386】
メモリの占有を低減し、計算複雑度を下げるために、本発明の実施形態において、シフトオフセットパラメータの決定方法を簡略化することができる。
【0387】
別の可能な実施態様において、シフトオフセットパラメータの値を、ブロックサイズインデックス値及びMIPモードインデックス値に関連しない固定の定数に設定することができる。一般的に、当該固定の定数は0~100の範囲にある。例えば、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトオフセットパラメータの値を32に設定することができる。又は、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトオフセットパラメータの値を46に設定することができる。又は、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトオフセットパラメータの値を56に設定することができる。又は、異なるブロックサイズインデックス値及び異なるMIPモードインデックス値に対して、シフトオフセットパラメータの値を66に設定することができる。本発明の実施形態において、シフトオフセットパラメータの値を32に設定することが好ましいが、それについては限定されない。
【0388】
もう1つの可能な実施形態において、シフトオフセットパラメータの値について、上記方法は以下をさらに含むことができる。
現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定する。
上記現在のブロックのブロックサイズインデックス値に基づいて、シフトオフセットパラメータの値を決定する。
【0389】
現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定できることに留意されたい。その後、現在のブロックのブロックサイズインデックス値に基づいて、シフトオフセットパラメータの値をさらに決定することができる。
【0390】
選択的に、いくつかの実施形態において、上記現在のブロックのブロックサイズインデックス値に基づいて、シフトオフセットパラメータの値を決定することは、以下を含むことができる。
ブロックサイズインデックス値が0、1又は2にそれぞれ等しい場合に、現在のブロックのブロックサイズインデックス値に対応のシフトオフセットパラメータの値が34、23又は46にそれぞれ等しいと決定する。
【0391】
選択的に、いくつかの実施形態において、シフト・オフセット・パラメータ・テーブルを最小化することがさらにでき、また、依然としてルックアップテーブルの方法によってシフト因子を決定する。選択的に、いくつかの実施形態において、上記現在のブロックのブロックサイズインデックス値に基づいて、シフトオフセットパラメータの値を決定することは、以下を含むことができる。
ブロックサイズインデックス値に基づいて、第4の予め設定されたルックアップテーブルからブロックサイズインデックス値に対応の値をクエリーする。第4の予め設定されたルックアップテーブルは、ブロックサイズインデックス値とシフトオフセットパラメータの値との対応関係を記録するために用いられる。
クエリーした値をシフトオフセットパラメータの値として決定する。
【0392】
なお、現在のブロックのブロックサイズインデックス値(mipSizeIdで表す)のみに基づいて、シフトオフセットパラメータの値をクエリーすることができる。上記表7に示した第4の予め設定されたルックアップテーブルにおいて、各ブロックサイズインデックス値は、固定値に対応することができる。即ち、各ブロックのサイズ又は各ブロックのサイズセットは、表7に示したような固定したシフトオフセットパラメータの値を有することができる。
【0393】
上記表7によれば、現在のブロックのブロックサイズインデックス値が0、1又は2にそれぞれ等しい場合に、ブロックサイズインデックス値に対応のシフトオフセットパラメータの値が34、23又は46にそれぞれ等しいと決定することができる。
【0394】
このように、シフトオフセットパラメータの決定方法を簡略化することで、特にシフト・オフセット・パラメータ・テーブルを最小化し又はシフトオフセットパラメータの値を固定することで、ルックアップテーブルの記憶量を最小化することができ、それで、計算複雑度を増やさずに、MIPモードのもとのシフト・オフセット・パラメータ・テーブルの記憶に占有されるメモリを低減することができる。
【0395】
このように、シフトオフセットパラメータ(fO)及びシフトナンバーパラメータ(sW)を決定した後、第1の定数値について、選択的に、いくつかの実施形態において、上記シフトナンバーパラメータの値に基づいて第1の定数値を決定することは、以下を含むことができる。
第1の定数値を2の累乗に設定する。累乗の指数は整数であり、シフトナンバーパラメータの値から1を引いたものに等しい。
【0396】
選択的に、いくつかの実施形態において、上記シフトナンバーパラメータの値に基づいて第1の定数値を決定することは、以下を含むことができる。
「1」を2進左シフトすることによって第1の定数値を取得する。左シフトされたビット数はシフトナンバーパラメータの値から1を引いたものに等しい。
【0397】
換言すると、シフトナンバーパラメータ(sW)が取得された後、第1の定数値は、1<<(sW-1)と表記されてもよく、2^(sW-1)と表記されてもよい。この場合、シフトナンバーパラメータの値を6に設定するとき、32に等しい第1の定数値を取得することができる。
【0398】
【0399】
このように、MIPモードのもとで、MIP重み付け行列、MIP入力サンプル値、シフトナンバーパラメータ及び第1のオフセットを取得することができ、それで、その後の現在のブロックのMIP予測値の決定が容易になる。具体的に、いくつかの実施形態において、上記MIP重み付け行列、MIP入力サンプル値、シフトナンバーパラメータ及び第1のオフセットに基づいて、現在のブロックのMIP予測値を決定することは、以下を含むことができる。
【0400】
MIP重み付け行列とMIP入力サンプル値との第1の重み付け和を計算する。
第1の重み付け和と第1のオフセットとの第1の合計を計算する。
第1の合計を2進右シフトすることによって第1の右シフト値を取得する。右シフトされたビット数はシフトナンバーパラメータの値に等しい。
現在のブロックのMIP予測値を、第1の右シフト値と第1の一時的参照値におけるインデックス0に対応の値との合計に設定する。第1の一時的参照値は、現在のブロックの隣接サンプル値をダウンサンプリングすることによって取得される。
【0401】
換言すると、MIPモードのもとで、現在のブロックのブロックサイズインデックス値(mipSizeIdで表す)及びMIPモードインデックス値(modelIdで表す)に基づいて、MIP重み付け行列(mWeightで表す)、シフトナンバーパラメータ(sWで表す)及びシフトオフセットパラメータ(fOで表す)を決定することができる。次に、MIP入力サンプル値(p[x]で表す)、mWeight、sW及びfOを行列乗算に入力することによって、行列乗算から出力されるMIP予測値(predMip[x][y]で表すことができる)を取得する。predMip[x][y]におけるサンプルは、predSize×predSizeに基づいて行列/アレーの形式で配列される。計算式は上記式(5)又は式(6)に示した通りである。
【0402】
S904:MIP予測値をフィルタリングすることによって、現在のブロックの彩度コンポーネントのイントラ予測値を決定する。
【0403】
なお、MIP予測ブロックはMIP予測値で構成される。MIP予測ブロックを取得した後、MIP予測ブロックのサイズパラメータと現在のブロックのサイズパラメータが同じであるか否かを判断することによって、現在のブロックのイントラ予測値をさらに決定することができる。具体的に、判断結果に基づいて、MIP予測ブロックのサイズパラメータと現在のブロックのサイズパラメータが同じである場合に、現在のブロックのイントラ予測ブロックをMIP予測ブロックに等しく設定する。この場合、MIP予測ブロックは、現在のブロックにおけるすべてのサンプル位置の予測値を含む。MIP予測ブロックのサイズパラメータが現在のブロックのサイズパラメータと異なる場合に、MIP予測ブロックをフィルタリングすることによって、フィルタリングされた予測ブロックを取得し、フィルタリングされた予測ブロックを現在のブロックのイントラ予測ブロックとして設定する。ここで、フィルタリングは、アップサンプリング又はローパスフィルタリングを含むことができる。
【0404】
S905:LFNSTパラメータが現在のブロックに対してLFNSTを行うことを示す場合に、現在のブロックの再構成変換係数ブロックを決定し、再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得する。
【0405】
また、LFNSTは、任意の現在のブロックに対して行われないことに留意されたい。それは、ビットストリームにLFNSTパラメータが必ずあるとは限らないことを意味する。この場合、ビットストリームにLFNSTパラメータがあるか否かを決定するために、いくつかの条件(例えば、現在のブロックのサイズパラメータのうちの最小値、現在のブロックのブロックサイズインデックス値など)をチェックする(check)必要がある。従って、いくつかの実施形態において、LFNSTパラメータを取得するようにビットストリームを解析することは、以下を含むことができる。
ビットストリームにLFNSTパラメータがあるか否かを決定する。
ビットストリームにLFNSTパラメータがある場合に、LFNSTパラメータを取得するようにビットストリームを解析する。
【0406】
換言すると、まず、ビットストリームにLFNSTパラメータがあるか否かを決定する必要がある。決定の結果がYesの場合にのみ、即ち、ビットストリームにLFNSTパラメータがある場合にのみ、LFNSTパラメータを取得するようにビットストリームを解析するステップを実行することができる。
【0407】
選択的に、いくつかの実施形態において、上記ビットストリームにLFNSTパラメータがあるか否かを決定することは、以下を含むことができる。
MIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定する場合に、現在のブロックのサイズパラメータのうちの最小値を決定する。
最小値に基づいて、ビットストリームにLFNSTパラメータがあるか否かを決定する。
【0408】
さらに、上記最小値に基づいて、ビットストリームにLFNSTパラメータがあるか否かを決定することは、
最小値が第1の予め設定された閾値以上である場合に、ビットストリームにLFNSTパラメータがあると決定すること、を含むことができる。
【0409】
ここで、第1の予め設定された閾値は、LFNSTを行うか否かを判断するための予め設定された閾値を表すために用いられることができる。本発明の実施形態において、第1の予め設定された閾値は、8に設定されることができるが、特に限定されない。
【0410】
換言すると、MIPモードを用いて現在のブロックの彩度コンポーネントに対してイントラ予測を行う場合に、現在のブロックのサイズパラメータのうちの最小値を決定することができる。例えば、幅と高さの最小値が8以上である場合に、ビットストリームにLFNSTパラメータがあると決定する。この場合、ビットストリームを解析することによって、LFNSTパラメータ、例として、lfnst_indexの値を取得することができる。
【0411】
選択的に、いくつかの実施形態において、上記ビットストリームにLFNSTパラメータがあるか否かを決定することは、以下を含むことができる。
MIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定する場合に、現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値を決定する。
ブロックサイズインデックス値に基づいて、ビットストリームにLFNSTパラメータがあるか否かを決定する。
【0412】
さらに、上記ブロックサイズインデックス値に基づいて、ビットストリームにLFNSTパラメータがあるか否かを決定することは、
ブロックサイズインデックス値が第2の予め設定された閾値に等しい場合に、ビットストリームにLFNSTパラメータがあると決定すること、を含むことができる。
【0413】
ここで、第2の予め設定された閾値は、LFNSTを行うか否かを判断するための予め設定された閾値を表すために用いられることができる。本発明の実施形態において、第2の予め設定された閾値は、1つの設定された値(例えば、2)、又は複数の設定された値(例えば1、2)のうちの1つに設定されることができるが、特に限定されない。
【0414】
換言すると、MIPモードを用いて現在のブロックの彩度コンポーネントに対してイントラ予測を行う場合に、現在のブロックのサイズパラメータに基づいて、現在のブロックのブロックサイズインデックス値(mipSizeId)を決定することができる。例えば、mipSizeIdの値が2に等しい場合に、ビットストリームにLFNSTパラメータがあると決定する。この場合、ビットストリームを解析することによって、LFNSTパラメータ、例として、lfnst_indexの値を取得することができる。
【0415】
いくつかの実施形態において、上記LFNSTパラメータを取得するようにビットストリームを解析することは、
LFNSTインデックスの値を取得するようにビットストリームを解析すること、を含むことができる。
【0416】
なお、LFNSTインデックスはlfnst_indexで表されることができ、また、LFNSTインデックスの値は、現在のブロックに対してLFNSTを行うか否かを決定するために用いられる。具体的に、いくつかの実施形態において、当該方法は以下をさらに含むことができる。
LFNSTインデックスの値が0より大きい場合に、現在のブロックに対してLFNSTを行うと決定する。
LFNSTインデックスの値が0に等しい場合に、現在のブロックに対してLFNSTを行わないと決定する。
【0417】
即ち、lfnst_indexの値を取得した後、lfnst_indexの値が0より大きい場合に、現在のブロックに対してLFNSTを行うと決定する。lfnst_indexの値が0に等しい場合に、現在のブロックに対してLFNSTを行わないと決定する。
【0418】
また、LFNSTパラメータ、例として、lfnst_indexの値を取得した後、lfnst_indexの値が0より大きい場合に、LFNSTパラメータが現在のブロックに対してLFNSTを行うことを示すことが示される。この場合、いくつかの実施形態において、LFNSTパラメータが現在のブロックに対してLFNSTを行うことを示す場合に、現在のブロックの再構成変換係数ブロックを決定することは、以下を含むことができる。
現在のブロックの量子化係数を取得するようにビットストリームを解析する。
量子化係数を逆量子化することによって、現在のブロックの再構成変換係数ブロックを取得する。
【0419】
具体的に、逆量子化はスケーリングである。1つの具体的な例において、上記量子化係数を逆量子化することによって、現在のブロックの再構成変換係数ブロックを取得することは、
量子化係数をスケーリングすることによって、現在のブロックの再構成変換係数ブロックを取得すること、を含むことができる。
【0420】
このように、LFNSTパラメータが現在のブロックに対してLFNSTを行うことを示す場合に、再構成変換係数ブロックにおける全部又は一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得することができる。
【0421】
また、現在のブロックに対してLFNSTを行うことができると決定される場合に、現在のブロックのために使用されるLFNST変換カーネル(kernelで表す)が決定される必要がある。いくつかの実施形態において、上記再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得することは、
LFNST変換カーネルを利用して、再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得すること、を含むことができる。
【0422】
本発明の実施形態において、LFNSTには4つの変換カーネル候補セットがある。この4つの変換カーネル候補セットは、セット0、セット1、セット2及びセット3を含むことができる。ここで、本発明の実施形態において、MIPパラメータを利用してLFNST変換カーネル候補セットを決定することができ、次に、LFNST変換カーネル候補セットから、現在のブロックのために使用されるLFNST変換カーネルを選択する。従って、いくつかの実施形態において、上記方法は、以下をさらに含むことができる。
【0423】
MIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定する場合に、現在のブロックの予測モードパラメータからMIPパラメータを決定する。
MIPパラメータに基づいて、LFNST変換カーネル候補セットを決定する。
LFNST変換カーネル候補セットにおいて、LFNSTインデックスの値によって示される変換カーネルを、現在のブロックのために使用されるLFNST変換カーネルとして決定する。LFNST変換カーネル候補セットは、2つ又は複数の予めに設定されたLFNST変換カーネルを含む。
【0424】
なお、MIPパラメータは、MIPモードインデックス値(modelIdで表す)及びMIP転置指示パラメータ(isTransposedで表す)のうちの少なくとも1つを含むことができる。現在のブロックのために使用されるLFNST変換カーネルについて、MIP転置指示パラメータの値が、MIPモードに使用されるサンプル入力ベクトルに対して転置を行うことを示す場合に、現在のブロックのために使用されるLFNST変換カーネルを取得するために、選択された変換カーネルに対して行列転置を行う必要がある。
【0425】
さらに、いくつかの実施形態において、上記MIPパラメータに基づいて、LFNST変換カーネル候補セットを決定することは、以下を含むことができる。
MIPモードインデックス値に基づいて、LFNSTイントラ予測モードインデックスの値を決定する。
LFNSTイントラ予測モードインデックスの値に基づいて、第5の予め設定されたルックアップテーブルによって、LFNST変換カーネル候補セットのインデックス値を決定する。
LFNST変換カーネル候補セットのインデックス値に基づいて、複数の候補LFNST変換カーネル候補セットから前記LFNST変換カーネル候補セットを選択する。
【0426】
ここで、LFNSTイントラ予測モードインデックスをpredModeIntraで表すことができ、LFNST変換カーネル候補セットのインデックス値をlfnstTrSetIdxで表すことができる。
【0427】
なお、第5の予め設定されたルックアップテーブルは、上記表10に示した通りである。MIPモードインデックス値(即ち、modelIdの値)に基づいて、predModeIntraの値を決定することができる。次に、predModeIntraの値に基づいて、表10と合わせてlfnstTrSetIdxの値を直接に決定し、即ち、現在のブロックのために選択されたLFNST変換カーネル候補セットを決定することができる。ここで、lfnstTrSetIdxの値は、LFNSTに使用される変換カーネル候補セットを示す。modelIdの値は0、1、2、3、4、5を含むことができるため、predModeIntraの値も0、1、2、3、4、又は5である。predModeIntraとlfnstTrSetIdxとの対応関係は表10に示した通りである。
【0428】
1つの具体的な実施形態において、上記MIPモードインデックス値に基づいて、LFNSTイントラ予測モードインデックスの値を決定することは、
LFNSTイントラ予測モードインデックスの値をMIPモードインデックス値に等しく設定すること、を含むことができる。
【0429】
換言すると、本発明の実施形態において、predModeIntraの値をmodelIdの値に等しく設定することができ、次に、predModeIntraの値に基づいて、表10と合わせてlfnstTrSetIdxの値を直接に決定し、即ち、現在のブロックのために選択されたLFNST変換カーネル候補セットを決定する。また、本発明の別の具体的な実施形態において、MIPモードインデックス値をPLANARモードの値に直接にマッピングし、次に、PLANARモードに対応のpredModeIntraの値を利用して、lfnstTrSetIdxの値を決定し、即ち、現在のブロックのために選択されたLFNST変換カーネル候補セットを決定する。
【0430】
さらに、LFNSTを行うプロセスにおいて、走査順序は水平走査順序及び垂直走査順序を含むことができる。ここで、走査順序の決定は、MIP転置指示パラメータ(isTransposedで表す)に関連する。
【0431】
選択的に、いくつかの実施形態において、上記再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得することは、以下を含むことができる。
【0432】
MIP転置指示パラメータの値が、MIPモードに使用されるサンプル入力ベクトルに対して転置を行うことを示す場合に、垂直走査順序で上記再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得する。
MIP転置指示パラメータの値が、MIPモードに使用されるサンプル入力ベクトルに対して転置を行わないことを示す場合に、水平走査順序で上記再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得する。
【0433】
具体的に、isTransposedの値が0に等しい場合に、MIPモードに使用されるサンプル入力ベクトルに対して転置を行わない。そして、水平走査順序で第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことができる。具体的は上記式(10)に示した通りである。
【0434】
isTransposedの値が1に等しい場合に、MIPモードに使用されるサンプル入力ベクトルに対して転置を行う。そして、垂直走査順序で第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことができる。具体的は上記式(11)に示した通りである。
【0435】
log2LfnstSizeは上記式(9)のように決定される。
【0436】
選択的に、いくつかの実施形態において、上記再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得することは、以下を含むことができる。
【0437】
MIP転置指示パラメータの値が、MIPモードに使用されるサンプル入力ベクトルに対して転置を行うことを示す場合に、水平走査順序で上記再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得する。
MIP転置指示パラメータの値が、MIPモードに使用されるサンプル入力ベクトルに対して転置を行わないことを示す場合に、垂直走査順序で上記再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得する。
【0438】
具体的に、isTransposedの値が1に等しい場合に、MIPモードに使用されるサンプル入力ベクトルに対して転置を行う。そして、水平走査順序で第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことができる。具体的は上記式(10)に示した通りである。
【0439】
isTransposedの値が0に等しい場合に、MIPモードに使用されるサンプル入力ベクトルに対して転置を行わない。そして、垂直走査順序で第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことができる。具体的は上記式(11)に示した通りである。
【0440】
log2LfnstSizeは上記式(9)のように決定される。
【0441】
S906:第2の変換係数ブロックに対して第1の変換を行うことによって、現在のブロックの彩度コンポーネントの再構成残差ブロックを取得する。
【0442】
S907:現在のブロックの彩度コンポーネントのイントラ予測値と再構成残差ブロックとに基づいて、現在のブロックの彩度コンポーネントの再構成ブロックを決定する。
【0443】
なお、復号器では、ビットストリームを解析することによって、LFNST係数の量子化値を取得することができる。逆量子化ユニットが当該量子化値を逆量子化する(「スケーリング」と呼ばれ得る)ことによって、再構成変換係数ブロックを取得する。当該再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対して逆のLFNSTを行うことによって、第2の変換係数ブロックを取得することができる。次に、逆の第1の変換によって、現在のブロックの彩度コンポーネントの再構成残差ブロックを回復することができる。ここで、逆の第1の変換は、符号器における「第1の変換(コア変換)」に対応の逆変換である。なお、規格において、復号器における「逆変換」のみが定義されているため、規格において、「逆のLFNST」は「LFNST」と呼ばれてもよい。
【0444】
また、現在のブロックの彩度コンポーネントの再構成残差ブロックを回復した後、現在のブロックの彩度コンポーネントのイントラ予測値と再構成残差ブロックとを加算することによって、現在のブロックの彩度コンポーネントの再構成ブロックを決定することができる。
【0445】
以下、
図2に示した復号器200を参照しながら、本発明の実施形態の復号化方法を具体的に説明する。
【0446】
復号器200の入力ビットストリームは、符号器100が生成したビットストリームであってもよい。解析ユニット201は入力ビットストリームを解析し、且つ入力ビットストリームからシンタックス要素の値を取得する。解析ユニット201は、1つ又は複数の復号化された画像を取得するために、シンタックス要素の2進表現を数値に変換し、且つ数値を復号器200におけるユニットに送る。解析ユニット201はさらに、復号化された画像をレンダリングするために、入力ビットストリームから1つ又は複数のシンタックス要素を解析することができる。
【0447】
図10を参照すると、
図10は、本発明の実施形態に係るLFNSTパラメータの解析のフローチャートを示している。
図10に示すように、当該フローは以下を含むことができる。
【0448】
S1001:解析ユニット201は、入力ビットストリームにLFNSTパラメータがあるか否かを決定するためにチェックを行う。
【0449】
なお、LFNSTパラメータはlfnst_indexの値を指すことができる。ここで、LFNSTパラメータを表すためのシンタックス構造の例は、上記表8に示したシンタックス構造の例と同じであってもよく、上記表9Aと表9Bに示したシンタックス構造の例と同じであってもよい。
【0450】
具体的に、現在のブロックのイントラ予測モードがMIPモードである場合に、解析ユニット201は、以下の方法を用いて入力ビットストリームからlfnst_indexの符号化ビットを取得する。選択的に、当該現在のブロックにおける変換ブロックの幅と高さの最小値が8以上である(即ち、幅と高さがいずれも8以上である)場合に、表9Aにおけるシンタックス構造を利用することで、解析ユニット201は、MIPモードを用いてlfnst_indexビットを読み出す。別の選択可能な条件は、幅と高さが第1の値(例えば、8)に等しく、且つ幅と高さの合計が第2の値(例えば16)以上であると設定されてもよい。
【0451】
選択的に、当該現在のブロックのmipSizeIdが2に等しい場合に、表9Bにおけるシンタックス構造を利用することで、解析ユニット201は、MIPモードを用いてlfnst_indexビットを読み出す。別の選択可能な条件は、現在のブロックのmipSizeIdが複数の値(例えば、1、2)のうちの1つに等しいと設定されてもよい。
【0452】
S1002:解析ユニット201は、LFNSTパラメータに対して適応バイナリ算術復号化を行うことによって、LFNSTパラメータを取得する。
【0453】
ここで、符号器100側では、エントロピー符号化ユニット115は、表9Aと表9Bに示した記述子が「ae(v)」であるCABACを用いてLFNSTパラメータ(例えば、lfnst_indexの値)を符号化する。復号器200側では、解析ユニット201は、適応バイナリ算術復号化を行うことによって、lfnst_indexビットからlfnst_indexの値を取得する。
【0454】
解析ユニット201は、シンタックス要素の値と、シンタックス要素の値に基づいて設定された又は決定された、1つ又は複数の復号化された画像を取得するための1つ又は複数の変数とを、復号器200におけるユニットに送る。予測ユニット202は、現在のブロック(例えば、CU)のイントラ予測ブロックを決定する。インター復号化モードが現在の復号化ブロックを復号化するために用いられることが示される場合に、予測ユニット202は、インター予測ブロックを取得するために、解析ユニット201からの関連パラメータをMCユニット203に送る。イントラ予測モード(MIPモードインデックス値に基づいて示されるMIPモードを含む)が現在のブロックを復号化するために用いられることが示される場合に、予測ユニット202は、イントラ予測ブロックを取得するために、解析ユニット201からの関連パラメータをイントラ予測ユニット204に送信する。
【0455】
本発明の実施形態における現在のブロック(又は「復号化ブロック」と呼ばれる)が、CU又はCUのパーティション(例えば、変換ブロック)であってもよいと理解されるべきである。具体的に、MIPモードを用いて現在のブロックを復号化することが示される場合に、イントラ予測ユニット204は、現在のブロックのイントラ予測ブロックを取得する。現在のブロックのイントラ予測ブロックは、現在のブロックにおける少なくとも1つのサンプル(samples)のイントラ予測値を含む。
【0456】
具体的に、イントラ予測ユニット204がMIPモードを用いてイントラ予測ブロックを取得するステップは、以下の通りである。
【0457】
まず、イントラ予測ユニット204は、現在のブロックの隣接サンプルから1つ又は複数の参照サンプルを取得する。例えば、隣接サンプルをダウンサンプリングすることによって、又は隣接サンプルから直接に抽出することによって取得する。
【0458】
次に、イントラ予測ユニット204は、取得した参照サンプル、MIP行列及びシフトパラメータを用いて、現在のブロックにおけるサンプル位置に対応の1つ又は複数の部分的な予測サンプルを決定する。ここで、サンプル位置は、現在のブロックにおける予め設定されたサンプル位置であることができ、例として、サンプル位置は均等な水平方向及び垂直方向の座標値を有する。また、シフトパラメータは、シフトナンバーパラメータ及びシフトオフセットパラメータを含み、シフトパラメータは、部分的なサンプルのイントラ予測値を取得するプロセスにおいて、オフセット操作のために用いられることができる。
【0459】
最後に、現在のブロックの部分的なサンプルに対応の予測サンプルを取得した場合に、イントラ予測ユニット204は、現在のブロックにおける部分的なサンプル以外の残りのサンプルに対応の予測サンプルをさらに取得する必要がある。例えば、イントラ予測ユニット204は、補間フィルターを利用して残りのサンプルに対応の予測サンプルを取得することができ、補間フィルターの入力は部分的なサンプルと隣接サンプルであることができる。
【0460】
図6に示したように、
図6は、MIPモードを用いてイントラ予測ブロックを取得することのフローチャートを示している。このフローは復号器200で実現されることができ、ここの「現在のブロック」は「復号化ブロック」を指す。
【0461】
ステップ601、イントラ予測ユニット204は現在のブロックの隣接サンプルを取得し、例として、隣接サンプルは、
図6に示したステップ601における現在のブロックに隣接する灰色の正方形としてマークされる。イントラ予測ユニット204は隣接サンプルから1つ又は複数の参照サンプルを取得する。
図6に示したステップ601の例において、選択的に、イントラ予測ユニット204は、2つの隣接サンプルの平均値を計算し、且つ当該平均値を参照サンプルとして用いることができる。選択的に、イントラ予測ユニット204は1つの隣接サンプルおきに1つの隣接サンプルを参照サンプルを選択する。例えば、
図6に示したステップ601の例において、イントラ予測ユニット204は、現在のブロックの8つの上隣接サンプルから4つの参照サンプルを選択し、且つ現在のブロックの8つの左隣接サンプルから別の4つの参照サンプルを選択する。
【0462】
ステップ601の具体的なプロセスは、以下のように示される。
【0463】
イントラ予測ユニット204は、解析ユニット201から現在のブロックの幅と高さを取得し、幅と高さはそれぞれ、変数cbWidthとcbHeightで表される。解析ユニット201からのパラメータに基づいて、現在のブロックは1つ又は複数の変換ブロックに分割される。変数nTbWとnTbHをそれぞれ、変換ブロックの幅と高さとする。イントラ予測モードとしてMIPモードを用いて現在のブロックの予測を取得する場合に、イントラ予測ユニット204は、MIPのブロックサイズインデックス値、即ち、mipSizeIdで表す変数を決定する。
【0464】
選択的に、イントラ予測ユニット204は、以下のようにmipSizeIdの値を決定する。
-nTbWとnTbHがいずれも4に等しい場合に、mipSizeIdを0に等しく設定する。
-そうでなければ、cbWidth又はcbHeightが4に等しい場合に、mipSizeIdを1に等しく設定する。
-そうでなければ、mipSizeIdを2に等しく設定する。
【0465】
具体的に、現在のブロックのサイズパラメータが8×8である(即ち、cbWidthとcbHeightがいずれも8に等しい)場合に、mipSizeIdを2に等しく設定する。
【0466】
選択的に、イントラ予測ユニット204は、以下のようにmipSizeIdの値を決定する。
-nTbWとnTbHがいずれも4に等しい場合に、mipSizeIdを0に等しく設定する。
-そうでなければ、cbWidth又はcbHeightが4に等しいか、又はcbWidthとcbHeightがいずれも8に等しい場合に、mipSizeIdを1に等しく設定する。
-そうでなければ、mipSizeIdを2に等しく設定する。
【0467】
具体的に、現在のブロックのサイズパラメータが8×8である場合に、mipSizeIdを1に等しく設定する。
【0468】
さらに、イントラ予測ユニット204はmipSizeIdに基づいて、boundarySizeとpredSizeの値を取得する。具体的は以下の通りである。
-mipSizeIdが0に等しい場合に、boundarySizeを2に等しく設定し、predSizeを4に等しく設定する。
-そうでなければ、mipSizeIdが1に等しい場合に、boundarySizeを4に等しく設定し、predSizeを4に等しく設定する。
-そうでなければ(mipSizeIdが2に等しい場合に)、boundarySizeを4に等しく設定し、predSizeを8に等しく設定する。
boundarySizeは、現在のブロックの上隣接参照サンプル及び左隣接参照サンプルの各々から取得される参照サンプル数を表す。
【0469】
イントラ予測ユニット204は、解析ユニット701からの、バッファpTempに記憶された参照サンプルの順序を示すパラメータに基づいて、MIP予測値を計算するための参照サンプルをさらに取得することができる。イントラ予測ユニット204は、変数isTransposedを、解析ユニット701からの、バッファpTempに記憶された参照サンプルの順序を示すパラメータに等しく設定する。例えば、isTransposedが0(又は、FALSE)に等しいことは、イントラ予測ユニット204がまず現在のブロックの上隣接参照サンプルから取得された参照サンプルを呈し、次に、左隣接参照サンプルから取得された参照サンプルを呈することを示す。そうでなければ、isTransposedが1(又は、TRUE)に等しいことは、イントラ予測ユニット204がまず現在のブロックの左隣接参照サンプルから取得された参照サンプルを呈し、次に、上隣接参照サンプルから取得された参照サンプルを呈することを示す。
【0470】
イントラ予測ユニット204は、上記式(1)に示したように、MIPモードに使用される参照サンプル数を示すために、inSizeの値を取得する。
【0471】
イントラ予測ユニット204は、現在のブロックの隣接参照サンプルを用いて参照サンプル群(アレーp[x]として記憶され、xは0、…、inSize-1である)を取得するために、以下のプロセスを呼び出す。
【0472】
イントラ予測ユニット204は、現在のブロックの上隣接参照サンプル(例えば、アレーrefTに記憶されている)からnTbW 参照サンプルを取得し、且つ現在のブロックの左隣接参照サンプル(例えば、アレーrefLに記憶されている)からnTbH参照サンプルを取得する。イントラ予測ユニット204は、boundarySize参照サンプルを取得するためにrefTに対してダウンサンプリングを呼び出し、且つboundarySize参照サンプルをrefTに記憶する。イントラ予測ユニット204は、boundarySize参照サンプルを取得するためにrefLに対してダウンサンプリングを呼び出し、且つboundarySize参照サンプルをrefLに記憶する。
【0473】
イントラ予測ユニット204は、refTとrefLにおける要素をバッファpTempに入れるために、isTransposedによって示される順序をさらに取得することができる。
【0474】
選択的に、イントラ予測ユニット204は以下のようにp[x]を取得し、x=0、…、inSize-1。
-mipSizeIdが2に等しい場合に、p[x]= pTemp[x + 1]- pTemp[0]。
-そうでなければ(mipSizeIdが2より小さい)、p[0]= pTemp[0]- (1 << (BitDepth-1))、p[x]= pTemp[x]- pTemp[0]。
BitDepthは、現在のブロックにおけるサンプルのカラーコンポーネントのビット深度である。ここで、カラーコンポーネントは、RGBコンポーネントのうちの1つ、YUVコンポーネントのうちの1つ、又はYCbCrコンポーネントのうちの1つであることができ、例として、Yコンポーネントなどが挙げられる。
【0475】
選択的に、イントラ予測ユニット204は以下のようにp[x]を取得することができ、x=0、…、inSize-1。
-mipSizeIdが2に等しい場合に、p[x]= pTemp[x + 1]- pTemp[0]。
-そうでなければ(mipSizeIdが2より小さい)、p[0]= (1 << (BitDepth-1)) - pTemp[0]、p[x]= pTemp[x]- pTemp[0]。
【0476】
選択的に、イントラ予測ユニット204は、mipSizeIdの値を決定せず、統一的な計算方法でp[x]の値を取得することが可能である。例えば、(1<<(BitDepth-1))を付加要素としてバッファpTempに追加する。この場合、イントラ予測ユニット204はp[x]をpTemp[x+1]-pTemp[0]として計算する。
【0477】
ステップ602、イントラ予測ユニット204は、参照サンプル群及びMIP重み付け行列を用いて現在のブロックのMIP予測値を取得する。MIP重み付け行列は、MIPモードに対応のMIPモードインデックス値(ModeIdで表す)及びMIPのブロックサイズインデックス値(mipSizeIdで表す)に基づいて、予め定義されMIP重み付け行列群から選択される。イントラ予測ユニット204は、解析ユニット201からModeIdの値を取得する。
【0478】
イントラ予測ユニット204は、現在のブロックにおける1つ又は複数のサンプル位置に対応の部分的な予測サンプルのMIP予測値(predMip[x][y]で表す)を取得する。
図6に示したステップ602の例において、部分的な予測サンプルは、現在のブロックにおいて灰色の正方形としてマークされるサンプルである。
予測モジュール601の入力は、ステップ601において取得された参照サンプルp[x]であり、予測モジュール601は、MIP重み付け行列及びシフトパラメータを用いて部分的な予測サンプルを計算する。シフトパラメータは、シフトナンバーパラメータ及びシフトオフセットパラメータを含む。
【0479】
1つの可能な実施形態において、予測モジュール601は、座標(x,y)でサンプルを表すことができ、予測サンプルがpredMip[x][y]で表されることができる。predMip[x][y]の計算式は、式(5)又は式(6)に示したようである。
【0480】
式(5)又は式(6)において、mWeight[i][j]はMIP重み付け行列であり、行列要素は予め定められた定数であってもよく、又は、トレーニング方法などを用いて適応的に更新してもよい。当該トレーニング方法の入力は1つ又は複数の符号化された画像又はブロックであり、又は、外部装置によって復号器200に提供される他のビットストリームからの画像であり、又は、MIP重み付け行列を含む入力ビットストリームにおいて特殊なデータユニットを解析することによって解析ユニット201から取得される画像である。mWeight[i][j]は、解析ユニット201からの対応の1つ又は複数のパラメータによって示されるMIPモードに基づいて決定される。fOはoWを決定するためのシフトオフセットパラメータであり、sWはシフトナンバーパラメータであり、p[i]は参照サンプルを用いて計算されたものであり、即ち、本発明の実施形態におけるMIP入力サンプル値であり、pTemp[0]は参照サンプルにおける第1のサンプルを表し、即ち、本発明の実施形態の第1の一時的参照値におけるインデックス0に対応の値であり、「>>」はVVCにおいて定義される2進右シフト演算子である。
【0481】
予測モジュール601は、現在のブロックのサイズと現在のブロックのために用いられるMIPモードとに基づいて、sWとfOの値を決定することができる。1つの例において、予測モジュール601は、ルックアップテーブルを用いてsWとfOの値を取得する。
【0482】
選択的に、予測モジュール601は、上記表4を利用することで、現在のブロックのサイズパラメータ及びMIPモードに基づいてsWを決定することができる。
【0483】
選択的に、予測モジュール601は、上記表5を利用することで、現在のブロックのサイズパラメータに基づいてsWを決定することもできる。
【0484】
選択的に、予測モジュール601はさらに、sWを定数値に直接に設定することができる。例えば、様々なサイズパラメータを有するブロック及び異なるMIPモードに対して、予測モジュール601は、sWを5に設定することができる。又は、様々なサイズパラメータを有するブロック及び異なるMIPモードに対して、予測モジュール601は、sWを6に設定することができる。又は、様々なサイズパラメータを有するブロック及び異なるMIPモードに対して、予測モジュール601は、sWを7に設定することができる。
【0485】
選択的に、予測モジュール601は、上記表6を利用することで、現在のブロックのサイズパラメータ及びMIPモードに基づいてfOを決定することができる。
【0486】
選択的に、予測モジュール601は、上記表7を利用することで、現在のブロックのサイズパラメータに基づいてfOを決定することもできる。
【0487】
選択的に、予測モジュール601はさらに、fOを定数値(例えば、0~100)に直接に設定することができる。例えば、様々なサイズパラメータを有するブロック及び異なるMIPモードに対して、予測モジュール601は、fOを32に設定することができる。又は、予測モジュール601はfOを46に設定する。又は、予測モジュール601はfOを56に設定する。又は、予測モジュール601はfOを66に設定する。
【0488】
イントラ予測ユニット204は、predMipにおけるMIP予測値に対してクリッピング操作を行うことができる。isTransposedが1(又は、TRUE)に等しい場合に、predSize×predSizeのアレーpredMip[x][y](x =0、...、predSize-1、y=0、...、predSize-1)はpredTemp[y][x]=predMip[x][y]に変換され、次に、predMip=predTemp。
【0489】
例示として、選択的に、現在のブロックのサイズパラメータが8×8である(即ち、cbWidthとcbHeightがいずれも8に等しい)場合に、イントラ予測ユニット204は、mipSizeIdを2に等しく設定し、且つ8×8のpredMipを取得する。
【0490】
選択的に、現在のブロックのサイズパラメータが8×8である(即ち、cbWidthとcbHeightがいずれも8に等しい)場合に、イントラ予測ユニット204は、mipSizeIdを1に等しく設定し、且つ4×4のpredMipを取得する。
【0491】
ステップ603、イントラ予測ユニット204は、現在のブロックのイントラ予測値(predSamples[x][y]としてアレーに記憶され、x=0、...、nTbW-1、y=0、...、nTbH-1)を以下のように取得する。
【0492】
-イントラ予測ユニット204は、nTbWがpredSizeより大きく、又は、nTbHがpredSizeより大きいと決定すると、predMipを用いてpredSamplesを取得するために、アップサンプリングプロセスを呼び出す。イントラ予測ユニット204は、現在のブロックにおける部分的なサンプル以外の残りのサンプルに対応の予測サンプルを取得する。
図6において、イントラ予測ユニット204は、フィルタリングモジュール602を利用して、現在のブロックにおける部分的なサンプル以外の残りのサンプルに対応の予測サンプルを取得することができる。フィルタリングモジュール602の入力は、ステップ602における灰色の正方形としてマークされるサンプルである。フィルタリングモジュール602は1つ又は複数の補間フィルターを用いて、当該入力を利用して現在のブロックにおける部分的なサンプル以外の残りのサンプルに対応の予測サンプルを取得することができる。例えば、入力は、参照サンプル及び現在のブロックにおける1つ又は複数のサンプル位置の部分的な予測サンプルを含むことができる。又は、入力は、隣接サンプル及び現在のブロックにおける1つ又は複数のサンプル位置の部分的な予測サンプルを含むことができる。又は、入力は参照サンプル、隣接サンプル及び現在のブロックにおける1つ又は複数のサンプル位置の部分的な予測サンプルを含むことができる。例えば、選択的に、現在のブロックのサイズが8×8である(即ち、cbWidthとcbHeightがいずれも8に等しい)場合に、イントラ予測ユニット204は、mipSizeIdが1に等しいと決定し、イントラ予測ユニット204はアップサンプリングプロセスを4×4のpredMipに適用することによって、現在のブロックの8×8のイントラ予測ブロックを取得する。
【0493】
-そうでなければ、イントラ予測ユニット204は、現在のブロックのイントラ予測ブロックを現在のブロックのMIP予測ブロックに等しく設定し、即ち、predSamples[x][y](x=0、...、nTbW-1、y=0、...、nTbH-1)をpredMip[x][y]に等しく設定する。例えば、現在のブロックのサイズパラメータが8×8である(即ち、cbWidthとcbHeightがいずれも8に等しい)場合に、イントラ予測ユニット204は、サイズが8×8である(即ち、cbWidthとcbHeightがいずれも8に等しい)現在のブロックのpredSamplesを取得する。
【0494】
このように、
図6に示したフローのブロック図によれば、ステップ603の後、イントラ予測ユニット204は、現在のブロック(即ち、CU)のイントラ予測ブロックを取得することができ、即ち、現在のブロックの少なくとも1つのサンプルのイントラ予測値を決定することができる。
【0495】
スケーリングユニット205は、符号器100における逆量子化ユニット110の機能と同じ機能を有する。スケーリングユニット205は、再構成係数を取得するために、解析ユニット201からの量子化係数(即ち、レベル)に対してスケーリング操作を行う。
【0496】
変換ユニット206は、符号器100における逆変換ユニット111の機能と同じ機能を有する。変換ユニット206は、再構成残差を取得するために、1つ又は複数の変換操作(即ち、符号器100における逆変換ユニット111による1つ又は複数の変換操作の逆操作)を行う。
【0497】
lfnst_indexが0に等しくない場合に、変換ユニット206は、二次変換係数ブロックを取得するために、再構成係数に対して二次変換を行う。次に、再構成残差ブロックを取得するために、二次変換係数ブロックに対して第1の変換、例として、DCTに基づいて初期に設計された整数変換を行う。LFNSTは二次変換の一例である。
【0498】
図11を参照すると、
図11は、本発明の実施形態に係るLFNSTを行う別のフローの概略図を示している。
図11において、ブロック1101は、再構成変換係数を含む再構成変換係数ブロックである。
【0499】
ステップ1101、変換ユニット206は、ブロック1101における全部又は一部の再構成変換係数に対してLFNSTなどの二次変換を行う。
【0500】
現在のブロックのイントラ予測モードがMIPモードである場合に、変換ユニット206は、MIPパラメータに基づいてLFNST変換カーネル候補セットを選択する。MIPパラメータは、MIPモードインデックス値(即ち、modelId)及びMIP転置指示パラメータ(即ち、isTransposed)のうちの1つを含むことができる。
【0501】
変換ユニット206は、変数predModeIntraの値をmodelIdの値に等しく設定する。変換ユニット206は、サブブロック11001、11002及び11003における係数に対してLFNSTを行うための変換カーネルを決定する。サブブロックのサイズは設定された値、例として、8×8であることができる。変換ユニット206はpredModeIntraの値に基づいて、LFNST変換カーネル候補セットのインデックス値(即ち、lfnstTrSetIdx)を決定する。MIPモードのもとのブロック復号化について、変換ユニット206は、表10に示したようなルックアップテーブルを用いてlfnstTrSetIdxの値を取得する。変換ユニット206は、LFNSTを行うための変換カーネルを、lfnstTrSetIdxによって示されるLFNST変換カーネル候補セット内の、lfnst_indexによって示される変換カーネルとして決定する。
【0502】
lfnst_indexが0に等しくない場合に、変換ユニット206は、サブブロック11001、11002及び11003からの係数を用いて変換ブロックに対してLFNSTを行い、LFNST係数を取得し、且つLFNST係数をブロック1102のサブブロック11001、11002及び11003に入れる。d[x][y]が第1の変換係数のブロックであると仮設し、ここで、x=0、...、nTbW-1、y=0、...、nTbH-1、nTbWとnTbHはそれぞれ、ブロック1102の幅と高さである。v[x]がLFNST係数のブロックであると仮設し、ここで、x=0、...、nLfnstOutSize-1、nLfnstOutSize =(nTbW> = 8 && nTbH> = 8)? 48:16。
【0503】
選択的に、変換ユニット206は、以下の命令を採用して変換係数のブロック1102を取得し、具体的は上記式(8)に示したようである。log2LfnstSizeは上記式(9)のように決定される。
【0504】
選択的に、isTransposedが0に等しい場合に、変換ユニット206は、以下の命令を採用して変換係数のブロック1102を取得し、具体的は上記式(10)に示したようである。
isTransposedが1に等しい場合に、変換ユニット206は、以下の命令を採用して変換係数のブロック1102を取得し、具体的は上記式(11)に示したようである。
【0505】
選択的に、isTransposedが1に等しい場合に、変換ユニット206は、以下の命令を採用して変換係数のブロック1102を取得し、具体的は上記式(10)に示したようである。
isTransposedが0に等しい場合に、変換ユニット206は、以下の命令を採用して変換係数のブロック1102を取得し、具体的は上記式(11)に示したようである。
【0506】
log2LfnstSizeは上記式(9)のように決定される。
【0507】
また、現在のブロックのイントラ予測モードが従来のイントラ予測モード(即ち、角度イントラ予測モード、DCモード及びPLANARモードなど)である場合に、変換ユニット206は、表11に示したルックアップテーブルを用いることで、従来のイントラ予測モードのモードインデックス値(predModeIntraに割り当てられ)に基づいて、lfnstTrSetIdxの値を決定し、即ち、現在のブロックのために選択されたLFNST変換カーネル候補セットを決定する。変換ユニット206は、LFNSTを行うための変換カーネルを、lfnstTrSetIdxによって示されるLFNST変換カーネル候補セット内の、lfnst_indexによって示される変換カーネルとして決定する。
【0508】
lfnst_indexが0に等しくない場合に、変換ユニット206は、サブブロック11001、11002及び11003からの係数を用いて変換ブロックに対してLFNSTを行い、LFNST係数を取得し、且つLFNST係数をブロック1102のサブブロック11001、11002及び11003に入れる。d[x][y]が第1の変換係数のブロックであると仮設し、ここで、x=0、...、nTbW-1、y=0、...、nTbH-1、nTbWとnTbHはそれぞれ、ブロック1102の幅と高さである。v[x]がLFNST係数のブロックであると仮設し、ここで、x=0、...、nLfnstOutSize-1、nLfnstOutSize =(nTbW> = 8 && nTbH> = 8)? 48:16。
【0509】
選択的に、predModeIntraが34以下である場合に、変換ユニット206は、以下の命令を採用して変換係数のブロック1102を取得し、具体的は上記式(10)に示したようである。
選択的に、predModeIntraが34より大きい場合に、変換ユニット206は、以下の命令を採用して変換係数のブロック1102を取得し、具体的は上記式(11)に示したようである。
【0510】
選択的に、predModeIntraが34より大きい場合に、変換ユニット206は、以下の命令を採用して変換係数のブロック1102を取得し、具体的は上記式(10)に示したようである。
選択的に、predModeIntraが34以下である場合に、変換ユニット206は、以下の命令を採用して変換係数のブロック1102を取得し、具体的は上記式(11)に示したようである。
【0511】
log2LfnstSizeは上記式(9)のように決定される。
【0512】
ステップ1102、変換ユニット206は、ブロック1102における変換係数に対して第1の変換(即ち、コア変換)、例として、DCTに基づいて初期に設計された整数変換を行うことによって、現在のブロックの再構成残差ブロック1103を取得する。
【0513】
さらに、加算器207は、現在のブロックの再構成ブロックを取得するために、その入力(予測ユニット202からのイントラ予測ブロック及び変換ユニット206からの再構成残差ブロック)に対して加算操作を行う。再構成ブロックはまた、イントラ予測モードのもとで符号化される他のブロックの参照として用いられるために、予測ユニット202に送られる。
【0514】
画像又はサブ画像におけるすべてのCUが再構成された後、フィルタリングユニット208は再構成された画像又はサブ画像に対してインループフィルタリングを実行する。フィルタリングユニット208は1つ又は複数のフィルタを含み、例えば、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ、適応ループフィルタ(ALF)、クロマスケーリング付きルママッピング(LMCS)フィルタ、及びニューラルネットワークベースフィルタなどが挙げられる。又は、フィルタリングユニット208は、再構成ブロックが他のブロックを復号化するための参照として用いられないと判断した場合に、再構成ブロックにおける1つ又は複数の目標サンプルに対してインループフィルタリングを行う。
【0515】
フィルタリングユニット208の出力は復号化された画像又はサブ画像であり、これらの復号化された画像又はサブ画像はDPBユニット209に送られる。DPBユニット209は、タイミング及び制御情報に基づいて、復号化された画像を出力する。DPBユニット209に記憶された画像はさらに、予測ユニット202によるインター予測又はイントラ予測の参照として用いられることができる。
【0516】
本発明の実施形態において、復号器200は、プロセッサと、復号化プログラムを記録する記憶媒体とを備えた計算デバイスであってもよい。プロセッサが復号化プログラムを読み出して実行すると、復号器200は、入力ビットストリームを読み出し、且つ対応する復号化ビデオを生成する。また、復号器200は、1つ又は複数のチップを備えた計算デバイスであってもよい。チップで集積回路として実装されたユニットは、
図2における対応のユニットと類似の接続及びデータ交換機能を有する。
【0517】
本発明の実施形態において、復号化方法が提供される。現在のブロックの予測パラメータ及びLFNSTパラメータを取得するようにビットストリームを解析する。予測パラメータは予測モードパラメータを含む。予測モードパラメータがMIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定する。MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。MIP予測値をフィルタリングすることによって、現在のブロックの彩度コンポーネントのイントラ予測値を決定する。LFNSTパラメータが現在のブロックに対してLFNSTを行うことを示す場合に、現在のブロックの再構成変換係数ブロックを決定し、再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得する。第2の変換係数ブロックに対して第1の変換を行うことによって、現在のブロックの彩度コンポーネントの再構成残差ブロックを取得する。現在のブロックの彩度コンポーネントのイントラ予測値と再構成残差ブロックとに基づいて、現在のブロックの彩度コンポーネントの再構成ブロックを決定する。このように、MIPモードでは、復号化性能を確保した上で、複雑度を下げ、同時に復号化のプロセスに必要な記憶スペースを減らし、復号化効率を効果的に高めることができる。また、LFNST技術がMIPモード予測に適用される場合に、MIPパラメータの導入により、LFNSTがより柔軟になり、復号化効率がさらに向上することができる。
【0518】
本発明のもう1つの実施形態において、上記実施形態と同じ発明思想に基づいて、
図12を参照すると、
図12は、本発明の実施形態に係る符号器120の構造の概略図を示している。
図12に示すように、符号器120は、第1の決定ユニット1201、第1の予測ユニット1202、第1の変換ユニット1203及び符号化ユニット1204を含むことができる。
【0519】
第1の決定ユニット1201は、現在のブロックの予測パラメータを決定するように構成されており、予測パラメータは予測モードパラメータを含む。
第1の決定ユニット1201は、予測モードパラメータがMIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定するようにさらに構成されている。
第1の予測ユニット1202は、MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定し、且つMIP予測値をフィルタリングすることによって現在のブロックの彩度コンポーネントのイントラ予測値を決定するように構成されており、MIP予測値は現在のブロックの彩度コンポーネントにおける一部のサンプルの予測値である。
第1の変換ユニット1203は、現在のブロックの彩度コンポーネントのイントラ予測値に基づいて、現在のブロックの彩度コンポーネントの予測残差値を決定し、且つ予測残差値に対してLFNSTを行うことによってLFNSTパラメータを決定するように構成されている。
符号化ユニット1204は、LFNSTパラメータを符号化し、且つビットストリームに書き込むように構成されている。
【0520】
いくつかの実施形態において、現在のブロックの隣接サンプル値は、現在のブロックの左隣接サンプル値及び上隣接サンプル値を含む。
【0521】
いくつかの実施形態において、シフトパラメータは、シフトオフセットパラメータ及びシフトナンバーパラメータを含む。
第1の決定ユニット1201は具体的に、固定の定数であるシフトオフセットパラメータの値に基づいて、MIP入力サンプル値の合計とシフトオフセットパラメータとの乗積を決定し、固定の定数であるシフトナンバーパラメータの値に基づいて第1の定数値を決定し、第1のオフセットの値を第1の定数値と上記乗積との差に設定し、予測パラメータに基づいて、現在のブロックのMIP重み付け行列を決定し、且つMIP重み付け行列、MIP入力サンプル値、シフトナンバーパラメータ及び第1のオフセットに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定するように構成されている。
【0522】
いくつかの実施形態において、予測パラメータは、現在のブロックのサイズパラメータをさらに含む。
【0523】
いくつかの実施形態において、第1の決定ユニット1201は、現在のブロックのサイズパラメータに基づいて現在のブロックのブロックサイズインデックス値を決定し、且つ現在のブロックの隣接サンプル値をダウンサンプリングすることによって、第1の一時的参照値を取得しするように構成されている。
また、第1の決定ユニット1201は、現在のブロックのブロックサイズインデックス値が予め設定された範囲内にある場合に、現在のブロックの隣接サンプル値のビット深度に基づいて第2の定数値を決定し、MIP入力サンプル値におけるインデックス0に対応の値を、第2の定数値と第1の一時的参照値におけるインデックス0に対応の値との差に設定し、MIP入力サンプル値におけるインデックスiに対応の値を、第1の一時的参照値におけるインデックスiに対応の値と第1の一時的参照値におけるインデックス0に対応の値との差に設定するように構成されており、iは0より大きい整数である。
また、第1の決定ユニット1201は、現在のブロックのブロックサイズインデックス値が予め設定された範囲外にある場合に、MIP入力サンプル値におけるインデックスjに対応の値を、第1の一時的参照値におけるインデックス(j+1)に対応の値と第1の一時的参照値におけるインデックス0に対応の値との差に設定するようにさらに構成されており、jは0以上の整数である。
【0524】
いくつかの実施形態において、第1の決定ユニット1201は、現在のブロックのブロックサイズインデックス値が予め設定された範囲内にある場合に、現在のブロックの隣接サンプル値のビット深度に基づいて、第2の定数値を決定し、MIP入力サンプル値におけるインデックス0に対応の値を、第1の一時的参照値におけるインデックス0に対応の値と第2の定数値との差に設定し、MIP入力サンプル値におけるインデックスiに対応の値を、第1の一時的参照値におけるインデックスiに対応の値と第1の一時的参照値におけるインデックス0に対応の値との差に設定するようにさらに構成されており、iは0より大きい整数である。
【0525】
いくつかの実施形態において、第1の決定ユニット1201は、現在のブロックの幅と高さがいずれも4に等しい場合に、現在のブロックのブロックサイズインデックス値を0に設定し、現在のブロックの幅と高さがいずれも8に等しいか、又は現在のブロックの幅と高さの一方が4に等しい場合に、現在のブロックのブロックサイズインデックス値を1に設定し、現在のブロックの幅と高さが上記条件を満たさない場合に、現在のブロックのブロックサイズインデックス値を2に設定するようにさらに構成されている。
【0526】
いくつかの実施形態において、第1の決定ユニット1201は、現在のブロックの隣接サンプル値をダウンサンプリングすることによって第1の一時的参照値を取得し、現在のブロックの隣接サンプル値のビット深度に基づいて第2の定数値を決定し、第1の一時的参照値の後の1つのデータユニット内で第2の定数値をバッファリングすることによって第2の一時的参照値を取得し、且つMIP入力サンプル値におけるインデックスjに対応の値を、第2の一時的参照値におけるインデックス(j+1)に対応の値と第2の一時的参照値におけるインデックス0に対応の値との差に設定するようにさらに構成されており、jは0以上の整数である。
【0527】
いくつかの実施形態において、第1の決定ユニット1201は、第2の定数値を2の累乗に設定するようにさらに構成されており、前記累乗の指数は整数であり、現在のブロックの隣接サンプル値のビット深度から1を引いたものに等しい。
【0528】
いくつかの実施形態において、第1の決定ユニット1201は、「1」を2進左シフトすることによって第2の定数値を取得するようにさらに構成されており、左シフトされたビット数は、現在のブロックの隣接サンプル値のビット深度から1を引いたものに等しい。
【0529】
いくつかの実施形態において、シフトナンバーパラメータの値は、ブロックサイズインデックス値及びMIPモードインデックス値に関連しない固定の定数である。
【0530】
いくつかの実施形態において、シフトナンバーパラメータの値が6に設定される。
【0531】
いくつかの実施形態において、シフトオフセットパラメータの値は、ブロックサイズインデックス値及びMIPモードインデックス値に関連しない固定の定数である。
【0532】
いくつかの実施形態において、シフトオフセットパラメータの値が32に設定される。
【0533】
いくつかの実施形態において、第1の決定ユニット1201は、第1の定数値を2の累乗に設定するようにさらに構成されており、前記累乗の指数は整数であり、シフトナンバーパラメータの値から1を引いたものに等しい。
【0534】
いくつかの実施形態において、第1の決定ユニット1201は、「1」を2進左シフトすることによって第1の定数値を取得するようにさらに構成されており、左シフトされたビット数はシフトナンバーパラメータの値から1を引いたものに等しい。
【0535】
いくつかの実施形態において、
図12を参照すると、符号器120は第1の計算ユニット1205をさらに含むことができる。第1の計算ユニット1205は、MIP重み付け行列とMIP入力サンプル値との第1の重み付け和を計算し、第1の重み付け和と第1のオフセットとの第1の合計を計算し、第1の合計を2進右シフトすることによって第1の右シフト値を取得するように構成されており、右シフトされたビット数はシフトナンバーパラメータの値に等しい。
第1の決定ユニット1201は、現在のブロックの彩度コンポーネントのMIP予測値を、第1の右シフト値と第1の一時的参照値におけるインデックス0に対応の値との合計に設定するようにさらに構成されており、第1の一時的参照値は、現在のブロックの隣接サンプル値をダウンサンプリングすることによって取得される。
【0536】
いくつかの実施形態において、第1の変換ユニット1203は、予測残差値に基づいて現在のブロックの残差ブロックを決定し、残差ブロックに対して第1の変換を行うことによって第1の変換係数ブロックを取得するように構成されている。
第1の決定ユニット1201は、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うか否かを決定するようにさらに構成されている。
第1の変換ユニット1203は、決定の結果が少なくとも一部の変換係数に対してLFNSTを行うことである場合に、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことによって、LFNSTパラメータを決定するようにさらに構成されている。
【0537】
いくつかの実施形態において、第1の決定ユニット1201は、MIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定する場合に、現在のブロックのサイズパラメータのうちの最小値を決定し、且つ最小値が第1の予め設定された閾値以上である場合に、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことを決定するようにさらに構成されている。
【0538】
いくつかの実施形態において、LFNSTパラメータはLFNSTインデックスを含む。第1の決定ユニット1201は、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うと決定される場合に、LFNSTインデックスの値を0より大きく設定し、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行わないと決定される場合に、LFNSTインデックスの値を0に設定するようにさらに構成されている。
符号化ユニット1204は、LFNSTインデックスを符号化し、且つビットストリームに書き込むように構成されている。
【0539】
いくつかの実施形態において、LFNSTパラメータはLFNST係数をさらに含む。
図12を参照すると、符号器120は量子化ユニット1206をさらに含むことができる。
第1の変換ユニット1203は、第1の変換係数ブロックにおける少なくとも一部の変換係数に対してLFNSTを行うことによって、LFNST係数を取得するように構成されている。
量子化ユニット1206は、LFNST係数を量子化することによって、量子化係数を取得するように構成されている。
符号化ユニット1204は、量子化係数を符号化し、且つビットストリームに書き込むようにさらに構成されている。
【0540】
本発明の実施形態において、「ユニット」は、回路の一部、プロセッサの一部、プログラムの一部又はソフトウェアの一部などであり得ることが理解され得る。もちろん、「ユニット」は、モジュール又は非モジュールであることもできる。また、本実施形態に係る各構成ユニットは、1つの処理ユニットに集積されてもよいし、各ユニットが単独に物理的に存在してもよいし、2つ以上のユニットは1つのユニットに集積されてもよい。上記集積ユニットは、ハードウェア又はソフトウェア機能モジュールの形式で実現されることができる。
【0541】
集積ユニットは、ソフトウェアの機能モジュールとして実現され、且つ独立の製品として販売されたり使用されたりする場合、コンピュータ可読記録媒体に記憶されてもよい。この理解によれば、本実施形態の技術的解決策について、本質的な部分、又は従来技術に貢献できた部分、又は当該技術的解決策の全部又は一部は、ソフトウェア製品として表現され得る。このコンピュータソフトウェア製品は、記憶媒体に記憶されており、1つのコンピュータデバイス(パソコン、サーバ、又はネットワークデバイスなどであってもよい)又はプロセッサに本実施形態に記載の方法の全部又は一部のステップを実行させるための複数の命令を含む。前記記憶媒体は、ユニバーサルシリアルバス(universal serial bus、USB)フラッシュディスク、モバイルハードディスク、読み取り専用メモリ(Read Only Memory、ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)、磁気ディスク又は光ディスクなどのプログラムコードを記憶可能な各種類の媒体を含む。
【0542】
従って、本発明の実施形態において、符号器120に適用されるコンピュータ記憶媒体が提供される。当該コンピュータ記憶媒体はコンピュータプログラムを記憶しており、当該コンピュータプログラムは、第1のプロセッサによって実行されると、上記実施形態における任意の方法を実行する。
【0543】
上記符号器120の構成及びコンピュータ記憶媒体に基づいて、
図13を参照すると、
図13は、本発明の実施形態に係る符号器120の具体的なハードウェア構造の概略図を示している。
図13に示すように、符号器120は、第1の通信インターフェース1301、第1のメモリ1302及び第1のプロセッサ1303を含むことができる。各コンポーネントは、第1のバスシステム1304を介して結合される。第1のバスシステム1304はこれらのコンポーネントの間の接続と通信を実現するために用いられる。第1のバスシステム1304はデータバス以外に、電力バス、制御バス及びステータス信号バスをさらに含む。ただし、明確に説明するために、
図13において、各種類のバスがいずれも第1のバスシステム1304と表記される。
【0544】
第1の通信インターフェース1301は、他の外部ネットワーク要素との間で情報を受送信するプロセスにおいて、信号を受送信するように構成されている。
【0545】
第1のメモリ1302は、第1のプロセッサ1303で実行可能なコンピュータプログラムを記憶するように構成されている。
【0546】
第1のプロセッサ1303は、コンピュータプログラムを実行する際に、以下を実行するように構成されている。
【0547】
現在のブロックの予測パラメータを決定する。予測パラメータは予測モードパラメータを含む。
予測モードパラメータがMIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定する。
MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。MIP予測値は現在のブロックの彩度コンポーネントにおける一部のサンプルの予測値である。
MIP予測値をフィルタリングすることによって、現在のブロックの彩度コンポーネントのイントラ予測値を決定する。
現在のブロックの彩度コンポーネントのイントラ予測値に基づいて、現在のブロックの彩度コンポーネントの予測残差値を決定する。
予測残差値に対してLFNSTを行うことによって、LFNSTパラメータを決定する。
LFNSTパラメータを符号化し、且つビットストリームに書き込む。
【0548】
本発明の実施形態の第1のメモリ1302は、揮発性メモリ又は不揮発性メモリであることができ、又は揮発性メモリ及び不揮発性メモリの両方を含むことができる。不揮発性メモリは、読み取り専用メモリ(Read-Only Memory、ROM)、プログラム可能な読み取り専用メモリ(Programmable ROM、PROM)、消去可能なプログラム可能な読み取り専用メモリ(Erasable PROM、EPROM)、電気的に消去可能なプログラム可能な読み取り専用メモリ(Electrically EPROM、EEPROM)、又はフラッシュメモリ(Flash Memory)であることができる。揮発性メモリは、外部高速キャッシュとして機能するランダムアクセスメモリ(Random Access Memory、RAM)であることができる。例示的であるが限定的ではない例として、様々なRAMが利用可能であり、例えば、スタティックランダムアクセスメモリ(Static RAM、SRAM)、ダイナミックランダムアクセスメモリ(Dynamic RAM、DRAM)、同期ダイナミックランダムアクセスメモリ(Synchronous DRAM、SDRAM)、ダブルデータレート同期ダイナミックランダムアクセスメモリ(Double Data Rate SDRAM、DDRSDRAM)、強化された同期ダイナミックランダムアクセスメモリ(Enhanced SDRAM、ESDRAM)、同期リンクダイナミックランダムアクセスメモリ(Synch-link DRAM、SLDRAM)、ダイレクトランバスランダムアクセスメモリ(Dierct Rambus RAM、DRRAM)が挙げられる。本明細書に記載されるシステム及び方法の第1のメモリ1302は、これら及び他の任意の適切なタイプのメモリを含むことができるが、これらに限定されない。
【0549】
第1のプロセッサ1303は、信号処理能力を有する集積回路チップであることができる。実施プロセスにおいて、上記方法実施形態の各ステップは、第1のプロセッサ1303のハードウェア形態の集積論理回路(Integrated Logic Circuit)又はソフトウェア形態の命令によって完成されることができる。上記第1のプロセッサ1303は、汎用プロセッサ、デジタル信号プロセッサ(Digital Signal Processor、DSP)、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラム可能なゲートアレイ(Field Programmable Gate Array、FPGA)又は他のプログラム可能なロジックデバイス、ディスクリートゲート又はトランジスタロジックデバイス、ディスクリートハードウェアコンポーネントであることができる。プロセッサは、本発明の実施形態に開示された様々な方法、ステップ及び論理ブロック図を実現又は実行することができる。汎用プロセッサは、マイクロプロセッサ又は任意の通常のプロセッサなどであることができる。本発明の実施形態に開示された方法のステップは、直接にハードウェア復号化プロセッサによって実行及び完成されることができ、又は復号化プロセッサにおけるハードウェア及びソフトウェアモジュールの組み合わせによって実行及び完成されることができる。ソフトウェアモジュールは、ランダムアクセスメモリ、フラッシュメモリ、読み取り専用メモリ、プログラム可能な読み取り専用メモリ、又は電気的に消去可能なプログラム可能なメモリ、レジスタなど本技術分野におけるマチュアな記憶媒体に位置することができる。当該記憶媒体は第1のメモリ1302に位置する。第1のプロセッサ1303は、第1のメモリ1302における情報を読み出し、プロセッサのハードウェアと合わせて上記方法のステップを完成する。
【0550】
本発明に記載されたこれらの実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード又はその組合によって実現されることができることが理解され得る。ハードウェアによって実現される場合、処理ユニットは、1つ又は複数の特定用途向け集積回路(ASIC)、デジタル信号処理(DSP)、DSPデバイス(DSP Device、DSPD)、プログラム可能なロジックデバイス(Programmable Logic Device、PLD)、フィールドプログラム可能なゲートアレイ(FPGA)、汎用プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、本発明に記載される機能を実行するために用いられるその他の電子ユニット又はその組合で実現されることができる。ソフトウェアによって実現される場合、本発明に記載される技術は、本発明に記載される機能を実行するためのモジュール(例えば、手順、関数など)によって実現されることができる。ソフトウェアコードはメモリに記憶され且つプロセッサによって実行される。メモリは、プロセッサ内又はプロセッサの外部で実現することができる。
【0551】
選択的に、別の実施形態として、第1のプロセッサ1303は、コンピュータプログラムを実行する際に、上記実施形態における任意の方法を実行するように構成されている。
【0552】
本発明の実施形態において、符号器が提供される。当該符号器は、第1の決定ユニット、第1の予測ユニット、第1の変換ユニット及び符号化ユニットを含むことができる。このように、MIPモードでは、符号化性能を確保した上で、複雑度を下げ、同時に符号化のプロセスに必要な記憶スペースを減らし、符号化効率を効果的に高めることができる。また、LFNST技術がMIPモード予測に適用される場合に、MIPパラメータの導入により、LFNSTがより柔軟になり、符号化効率がさらに向上することができる。
【0553】
本発明のもう1つの実施形態において、上記実施形態と同じ発明思想に基づいて、
図14を参照すると、
図14は、本発明の実施形態に係る復号器140の構造の概略図を示している。
図14に示すように、復号器140は、解析ユニット1401、第2の決定ユニット1402、第2の予測ユニット1403及び第2の変換ユニット1404を含むことができる。
【0554】
解析ユニット1401は、現在のブロックの予測パラメータ及びLFNSTパラメータを取得するようにビットストリームを解析するように構成されており、予測パラメータは予測モードパラメータを含む。
第2の決定ユニット1402は、予測モードパラメータがMIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定するように構成されている。
第2の予測ユニット1403は、MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定し、且つMIP予測値をフィルタリングすることによって現在のブロックの彩度コンポーネントのイントラ予測値を決定するように構成されており、MIP予測値は現在のブロックの彩度コンポーネントにおける一部のサンプルの予測値である。
第2の変換ユニット1404は、LFNSTパラメータが現在のブロックに対してLFNSTを行うことを示す場合に、現在のブロックの再構成変換係数ブロックを決定し、再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得し、且つ第2の変換係数ブロックに対して第1の変換を行うことによって、現在のブロックの彩度コンポーネントの再構成残差ブロックを取得するように構成されている。
第2の決定ユニット1402は、現在のブロックの彩度コンポーネントのイントラ予測値と再構成残差ブロックとに基づいて、現在のブロックの彩度コンポーネントの再構成ブロックを決定するようにさらに構成されている。
【0555】
いくつかの実施形態において、現在のブロックの隣接サンプル値は、現在のブロックの左隣接サンプル値及び上隣接サンプル値を含む。
【0556】
いくつかの実施形態において、シフトパラメータは、シフトオフセットパラメータ及びシフトナンバーパラメータを含む。
第2の決定ユニット1402は具体的に、固定の定数であるシフトオフセットパラメータの値に基づいて、MIP入力サンプル値の合計とシフトオフセットパラメータとの乗積を決定し、固定の定数であるシフトナンバーパラメータの値に基づいて第1の定数値を決定し、第1のオフセットの値を第1の定数値と上記乗積との差に設定し、予測パラメータに基づいて、現在のブロックのMIP重み付け行列を決定し、且つMIP重み付け行列、MIP入力サンプル値、シフトナンバーパラメータ及び第1のオフセットに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定するように構成されている。
【0557】
いくつかの実施形態において、予測パラメータは、現在のブロックのサイズパラメータをさらに含む。
【0558】
いくつかの実施形態において、第2の決定ユニット1402は、現在のブロックのサイズパラメータに基づいて現在のブロックのブロックサイズインデックス値を決定し、且つ現在のブロックの隣接サンプル値をダウンサンプリングすることによって、第1の一時的参照値を取得しするように構成されている。
また、第2の決定ユニット1402は、現在のブロックのブロックサイズインデックス値が予め設定された範囲内にある場合に、現在のブロックの隣接サンプル値のビット深度に基づいて第2の定数値を決定し、MIP入力サンプル値におけるインデックス0に対応の値を、第2の定数値と第1の一時的参照値におけるインデックス0に対応の値との差に設定し、MIP入力サンプル値におけるインデックスiに対応の値を、第1の一時的参照値におけるインデックスiに対応の値と第1の一時的参照値におけるインデックス0に対応の値との差に設定するように構成されており、iは0より大きい整数である。
また、第2の決定ユニット1402は、現在のブロックのブロックサイズインデックス値が予め設定された範囲外にある場合に、MIP入力サンプル値におけるインデックスjに対応の値を、第1の一時的参照値におけるインデックス(j+1)に対応の値と第1の一時的参照値におけるインデックス0に対応の値との差に設定するようにさらに構成されており、jは0以上の整数である。
【0559】
いくつかの実施形態において、第2の決定ユニット1402は、現在のブロックのブロックサイズインデックス値が予め設定された範囲内にある場合に、現在のブロックの隣接サンプル値のビット深度に基づいて、第2の定数値を決定し、MIP入力サンプル値におけるインデックス0に対応の値を、第1の一時的参照値におけるインデックス0に対応の値と第2の定数値との差に設定し、MIP入力サンプル値におけるインデックスiに対応の値を、第1の一時的参照値におけるインデックスiに対応の値と第1の一時的参照値におけるインデックス0に対応の値との差に設定するようにさらに構成されており、iは0より大きい整数である。
【0560】
いくつかの実施形態において、第2の決定ユニット1402は、現在のブロックの幅と高さがいずれも4に等しい場合に、現在のブロックのブロックサイズインデックス値を0に設定し、現在のブロックの幅と高さがいずれも8に等しいか、又は現在のブロックの幅と高さの一方が4に等しい場合に、現在のブロックのブロックサイズインデックス値を1に設定し、現在のブロックの幅と高さが上記条件を満たさない場合に、現在のブロックのブロックサイズインデックス値を2に設定するようにさらに構成されている。
【0561】
いくつかの実施形態において、第2の決定ユニット1402は、現在のブロックの隣接サンプル値をダウンサンプリングすることによって第1の一時的参照値を取得し、現在のブロックの隣接サンプル値のビット深度に基づいて第2の定数値を決定し、第1の一時的参照値の後の1つのデータユニット内で第2の定数値をバッファリングすることによって第2の一時的参照値を取得し、且つMIP入力サンプル値におけるインデックスjに対応の値を、第2の一時的参照値におけるインデックス(j+1)に対応の値と第2の一時的参照値におけるインデックス0に対応の値との差に設定するようにさらに構成されており、jは0以上の整数である。
【0562】
いくつかの実施形態において、第2の決定ユニット1402は、第2の定数値を2の累乗に設定するようにさらに構成されており、前記累乗の指数は整数であり、現在のブロックの隣接サンプル値のビット深度から1を引いたものに等しい。
【0563】
いくつかの実施形態において、第2の決定ユニット1402は、「1」を2進左シフトすることによって第2の定数値を取得するようにさらに構成されており、左シフトされたビット数は、現在のブロックの隣接サンプル値のビット深度から1を引いたものに等しい。
【0564】
いくつかの実施形態において、シフトナンバーパラメータの値は、ブロックサイズインデックス値及びMIPモードインデックス値に関連しない固定の定数である。
【0565】
いくつかの実施形態において、シフトナンバーパラメータの値が6に設定される
【0566】
いくつかの実施形態において、シフトオフセットパラメータの値は、ブロックサイズインデックス値及びMIPモードインデックス値に関連しない固定の定数である。
【0567】
いくつかの実施形態において、シフトオフセットパラメータの値が32に設定される。
【0568】
いくつかの実施形態において、第2の決定ユニット1402は、第1の定数値を2の累乗に設定するようにさらに構成されており、前記累乗の指数は整数であり、シフトナンバーパラメータの値から1を引いたものに等しい。
【0569】
いくつかの実施形態において、第2の決定ユニット1402は、「1」を2進左シフトすることによって第1の定数値を取得するようにさらに構成されており、左シフトされたビット数はシフトナンバーパラメータの値から1を引いたものに等しい。
【0570】
いくつかの実施形態において、
図14を参照すると、復号器140は第2の計算ユニット1405をさらに含むことができる。第2の計算ユニット1405は、MIP重み付け行列とMIP入力サンプル値との第1の重み付け和を計算し、第1の重み付け和と第1のオフセットとの第1の合計を計算し、第1の合計を2進右シフトすることによって第1の右シフト値を取得するように構成されており、右シフトされたビット数はシフトナンバーパラメータの値に等しい。
第2の決定ユニット1402は、現在のブロックの彩度コンポーネントのMIP予測値を、第1の右シフト値と第1の一時的参照値におけるインデックス0に対応の値との合計に設定するようにさらに構成されており、第1の一時的参照値は、現在のブロックの隣接サンプル値をダウンサンプリングすることによって取得される。
【0571】
いくつかの実施形態において、第2の決定ユニット1402は、ビットストリームにLFNSTパラメータがあるか否かを決定するようにさらに構成されている。
解析ユニット1401は、ビットストリームにLFNSTパラメータがある場合に、LFNSTパラメータを取得するようにビットストリームを解析するようにさらに構成されている。
【0572】
いくつかの実施形態において、第2の決定ユニット1402は、MIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定する場合に、現在のブロックのサイズパラメータのうちの最小値を決定し、最小値が第1の予め設定された閾値以上である場合に、ビットストリームにLFNSTパラメータがあると決定するようにさらに構成されている。
【0573】
いくつかの実施形態において、
図14を参照すると、復号器140は逆量子化ユニット1406をさらに含むことができる。
解析ユニット1401は、LFNSTパラメータが現在のブロックに対してLFNSTを行うことを示す場合に、現在のブロックの量子化係数を取得するようにビットストリームを解析するようにさらに構成されている。
逆量子化ユニット1406は、量子化係数を逆量子化することによって、現在のブロックの再構成変換係数ブロックを取得するように構成されている。
【0574】
いくつかの実施形態において、逆量子化ユニット1406は具体的に、量子化係数をスケーリングすることによって、現在のブロックの再構成変換係数ブロックを取得するように構成されている。
【0575】
いくつかの実施形態において、解析ユニット1401は具体的に、LFNSTインデックスの値を取得するようにビットストリームを解析し、LFNSTインデックスの値が0より大きい場合に、現在のブロックに対してLFNSTを行うと決定し、LFNSTインデックスの値が0に等しい場合に、現在のブロックに対してLFNSTを行わないと決定するように構成されている。
【0576】
本実施形態において、「ユニット」は、回路の一部、プロセッサの一部、プログラムの一部又はソフトウェアの一部などであり得ることが理解され得る。もちろん、「ユニット」は、モジュール又は非モジュールであることもできる。また、本実施形態に係る各構成ユニットは、1つの処理ユニットに集積されてもよいし、各ユニットが単独に物理的に存在してもよいし、2つ以上のユニットは1つのユニットに集積されてもよい。上記集積ユニットは、ハードウェア又はソフトウェア機能モジュールの形式で実現されることができる。
【0577】
集積ユニットは、ソフトウェアの機能モジュールとして実現され、且つ独立の製品として販売されたり使用されたりする場合、コンピュータ可読記録媒体に記憶されてもよい。この理解によれば、本発明の実施形態において、復号器140に適用されるコンピュータ記憶媒体が提供される。当該コンピュータ記憶媒体はコンピュータプログラムを記憶しており、当該コンピュータプログラムは、第2のプロセッサによって実行されると、上記実施形態における任意の方法を実行する。
【0578】
上記復号器140の構成及びコンピュータ記憶媒体に基づいて、
図15を参照すると、
図15は、本発明の実施形態に係る復号器140の具体的なハードウェア構造の概略図を示している。
図15に示すように、復号器140は、第2の通信インターフェース1501、第2のメモリ1502及び第2のプロセッサ1503を含むことができる。各コンポーネントは、第2のバスシステム1504を介して結合される。第2のバスシステム1504はこれらのコンポーネントの間の接続と通信を実現するために用いられる。第2のバスシステム1504はデータバス以外に、電力バス、制御バス及びステータス信号バスをさらに含む。ただし、明確に説明するために、
図15において、各種類のバスがいずれも第2のバスシステム1504と表記される。
【0579】
第2の通信インターフェース1501は、他の外部ネットワーク要素との間で情報を受送信するプロセスにおいて、信号を受送信するように構成されている。
【0580】
第2のメモリ1502は、第2のプロセッサ1503で実行可能なコンピュータプログラムを記憶するように構成されている。
【0581】
第2のプロセッサ1503は、コンピュータプログラムを実行する際に、以下を実行するように構成されている。
【0582】
現在のブロックの予測パラメータ及びLFNSTパラメータを取得するようにビットストリームを解析する。予測パラメータは予測モードパラメータを含む。
予測モードパラメータがMIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定する。
MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。MIP予測値は現在のブロックの彩度コンポーネントにおける一部のサンプルの予測値である。
MIP予測値をフィルタリングすることによって、現在のブロックの彩度コンポーネントのイントラ予測値を決定する。
LFNSTパラメータが現在のブロックに対してLFNSTを行うことを示す場合に、現在のブロックの再構成変換係数ブロックを決定し、再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得する。
第2の変換係数ブロックに対して第1の変換を行うことによって、現在のブロックの彩度コンポーネントの再構成残差ブロックを取得する。
現在のブロックの彩度コンポーネントのイントラ予測値と再構成残差ブロックとに基づいて、現在のブロックの彩度コンポーネントの再構成ブロックを決定する。
【0583】
選択的に、別の実施形態として、第2のプロセッサ1503は、コンピュータプログラムを実行する際に、上記実施形態における任意の方法を実行するように構成されている。
【0584】
第2のメモリ1502のハードウェア機能は、第1のメモリ1302のハードウェア機能と類似であり、第2のプロセッサ1503のハードウェア機能は、第1のプロセッサ1303のハードウェア機能と類似である。
【0585】
本実施形態において、復号器が提供される。当該復号器は、解析ユニット、第2の決定ユニット、第2の予測ユニット及び第2の変換ユニットを含むことができる。このように、MIPモードでは、復号化性能を確保した上で、複雑度を下げ、同時に復号化のプロセスに必要な記憶スペースを減らし、復号化効率を効果的に高めることができる。また、LFNST技術がMIPモード予測に適用される場合に、MIPパラメータの導入により、LFNSTがより柔軟になり、復号化効率がさらに向上することができる。
【0586】
本発明のもう1つの実施形態において、
図16は、本発明の実施形態に係る送信デバイスの構造の概略図を示している。
図16に示すように、例示的な送信デバイス1600が示された。収集ユニット1601は、ビデオ信号を取得し且つビデオ信号を符号器1602に送る。収集ユニット1601は、1つ又は複数のカメラ(深度カメラを含む)を備えたデバイスであってもよい。収集ユニット1601は、ビデオを取得するためにビットストリームを部分的に又は完全に復号化するデバイスであってもよい。収集ユニット1601は、音声信号をキャプチャするために1つ又は複数の素子をさらに含むことができる。符号器1602の1つの具体的な実施形態は、収集ユニット1601からの、その入力ビデオとされるビデオ信号を復号化し且つビデオビットストリームを生成する上記実施形態に記載の符号器100又は符号器120である。符号器1602は、音声信号を符号化することによって音声ビットストリームを生成するために、1つ又は複数の音声符号器をさらに含むことができる。記憶/送信ユニット1603は、符号器1602からビデオビットストリームを受信する。記憶/送信ユニット1603はさらに、符号器1602から音声ビットストリームを受信し、且つビデオビットストリームと音声ビットストリームとを一緒に圧縮することによってメディアファイル(例えば、ISOベースのメディアファイルフォーマット)又は伝送ストリームを形成する。
【0587】
選択的に、記憶/送信ユニット1603は、メディアファイル又は伝送ストリームを記憶ユニットに書き込み、記憶ユニットの例としては、ハードディスク、デジタルビデオディスク(digital versatile disc、DVD)ディスク、クラウドディスク、携帯型記憶装置が挙げられる。
【0588】
選択的に、記憶/送信ユニット1603は、ビットストリームをトランスポートネットワークに送り、伝送ネットワークの例としては、インターネット、有線ネットワーク、セルラーネットワーク、無線ローカルエリアネットワークなどが挙げられる。
【0589】
本発明のもう1つの実施形態において、
図17を参照すると、
図17は、本発明の実施形態に係る目標デバイスの構造の概略図を示している。
図17に示すように、例示的な目標デバイス1700が示された。受信ユニット1701は、ネットワークからメディアファイル又は伝送ストリームを受信し、又は、記憶装置からメディアファイル又は伝送ストリームを読み出す。受信ユニット1701は、メディアファイル又は伝送ストリームからのビデオビットストリーム及び音声ビットストリームを分離する。受信ユニット1701は、ビデオビットストリームを抽出することによって新しいビデオビットストリームを生成することがさらにできる。受信ユニット1701は、音声ビットストリームを抽出することによって新しい音声ビットストリームを生成することがさらにできる。復号器1702は、1つ又は複数のビデオ復号器を含み、ビデオ復号器の1つの具体的な実施形態は、例として、上記実施形態に記載の復号器200又は復号器140である。
【0590】
復号器1702は、1つ又は複数の音声復号器をさらに含むことができる。復号器1702は、復号化ビデオと1つ又は複数のサウンドチャンネルに対応の1つ又は複数の復号化音声とを取得するために、受信ユニット1701からのビデオビットストリーム及び音声ビットストリームを復号化する。レンダリングユニット1703は、再構成されたビデオが表示に適するように、再構成されたビデオに対して操作を実行する。その操作は、ノイズ除去、合成、色空間の変換、アップサンプリング、ダウンサンプリングなどの知覚的品質を向上させる操作のうちの1つ又は複数を含むことができる。レンダリングユニット1703はさらに、表示された音声信号の知覚的品質を向上させるために、復号された音声に対して操作を実行することができる。
【0591】
本発明のもう1つの実施形態において、
図18を参照すると、
図18は、本発明の実施形態に係る通信システムの構造の概略図を示している。
図18に示すように、例示的な通信システム1800が示された。ソースデバイス1801は、
図16に示した送信デバイス1600であってもよい。ビットストリームを記憶/伝送するために、記憶/送信ユニット1603の出力が、記憶媒体/トランスポートネットワーク1802によって処理される。目標デバイス1803は、
図17に示した目標デバイス1700であってもよい。ここで、受信ユニット1701は、記憶媒体/トランスポートネットワーク1802からビットストリームを取得することができる。受信ユニット1701は、メディアファイル又は伝送ストリームから新しいビデオビットストリームを抽出することができる。受信ユニット1701は、メディアファイル又は伝送ストリームから新しい音声ビットストリームを抽出することがさらにできる。
【0592】
なお、本発明において、「含む」、「備える」又は他のバリアントなどの用語は非排他的な含みをカバーすることを意図するため、一連の要素を含むプロセス、方法、物品又は装置は、それらの要素だけではなく、明確にリストされていない他の要素も含み、又はプロセス、方法、物品又は装置の固有の他の要素を含むことができる。制限がない限り、「…を含む」という文によって限定された要素を含むプロセス、方法、物品又は装置に別の同じ要素が存在することを排除しない。
【0593】
上記本発明の実施形態のシーケンス番号は、実施形態の優劣を示すものではなく、ただ説明するために用いられる。
【0594】
本発明に係るいくつかの方法実施形態に開示された方法は、矛盾がない限り、任意に組み合わせて、新しい方法実施形態を得ることができる。
【0595】
本発明に係るいくつかの製品実施形態に開示された特徴は、矛盾がない限り、任意に組み合わせて、新しい製品実施形態を得ることができる。
【0596】
本発明に係るいくつかの方法又は装置の実施形態に開示された特徴は、矛盾がない限り、任意に組み合わせて、新しい方法実施形態又は装置実施形態を得ることができる。
【0597】
上記は、ただ本発明の具体的な実施形態であり、本発明の保護範囲はそれに限定されるものではない。当業者が本発明に開示された技術範囲内で容易に想到し得る変更又は置換は全て本発明の範囲内に含まれるべきである。従って、本発明の保護範囲は特許請求の保護範囲によって決められるべきである。
【産業上の利用可能性】
【0598】
本発明の実施形態において、符号器側では、現在のブロックの予測パラメータを決定した後、予測モードパラメータがMIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定する。MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。MIP予測値をフィルタリングすることによって、現在のブロックの彩度コンポーネントのイントラ予測値を決定する。現在のブロックの彩度コンポーネントのイントラ予測値に基づいて、現在のブロックの彩度コンポーネントの予測残差値を決定する。予測残差値に対してLFNSTを行うことによって、LFNSTパラメータを決定する。LFNSTパラメータを符号化し、且つビットストリームに書き込む。復号器側では、現在のブロックの予測パラメータ及びLFNSTパラメータを取得するようにビットストリームを解析した後、予測モードパラメータがMIPモードを用いて現在のブロックの彩度コンポーネントのイントラ予測値を決定することを示す場合に、現在のブロックの隣接サンプル値を取得し、且つ現在のブロックの隣接サンプル値に基づいて現在のブロックのMIP入力サンプル値を決定する。MIP入力サンプル値、MIP重み付け行列及びシフトパラメータに基づいて、現在のブロックの彩度コンポーネントのMIP予測値を決定する。MIP予測値をフィルタリングすることによって、現在のブロックの彩度コンポーネントのイントラ予測値を決定する。LFNSTパラメータが現在のブロックに対してLFNSTを行うことを示す場合に、現在のブロックの再構成変換係数ブロックを決定し、再構成変換係数ブロックにおける少なくとも一部の再構成変換係数に対してLFNSTを行うことによって、第2の変換係数ブロックを取得する。第2の変換係数ブロックに対して第1の変換を行うことによって、現在のブロックの彩度コンポーネントの再構成残差ブロックを取得する。現在のブロックの彩度コンポーネントのイントラ予測値と再構成残差ブロックとに基づいて、現在のブロックの彩度コンポーネントの再構成ブロックを決定する。このように、MIPモードでは、符号化・復号化の性能を確保した上で、複雑度を下げ、同時に符号化・復号化のプロセスに必要な記憶スペースを減らし、符号化・復号化効率を効果的に高めることができる。また、LFNST技術がMIPモード予測に適用される場合に、MIPパラメータの導入により、LFNSTがより柔軟になり、符号化・復号化効率がさらに向上することができる。