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

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

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

特許7343596合同クロマ符号化を使用するブロックについてクロマ・ブロッキング解除を実行するためのエンコーダ、デコーダおよび対応する方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-04
(45)【発行日】2023-09-12
(54)【発明の名称】合同クロマ符号化を使用するブロックについてクロマ・ブロッキング解除を実行するためのエンコーダ、デコーダおよび対応する方法
(51)【国際特許分類】
   H04N 19/117 20140101AFI20230905BHJP
   H04N 19/154 20140101ALI20230905BHJP
   H04N 19/157 20140101ALI20230905BHJP
   H04N 19/176 20140101ALI20230905BHJP
   H04N 19/186 20140101ALI20230905BHJP
   H04N 19/86 20140101ALI20230905BHJP
【FI】
H04N19/117
H04N19/154
H04N19/157
H04N19/176
H04N19/186
H04N19/86
【請求項の数】 26
(21)【出願番号】P 2021544630
(86)(22)【出願日】2020-08-24
(65)【公表番号】
(43)【公表日】2022-03-24
(86)【国際出願番号】 CN2020110914
(87)【国際公開番号】W WO2021037004
(87)【国際公開日】2021-03-04
【審査請求日】2021-07-30
(31)【優先権主張番号】PCT/EP2019/072643
(32)【優先日】2019-08-23
(33)【優先権主張国・地域又は機関】EP
(31)【優先権主張番号】PCT/RU2019/000639
(32)【優先日】2019-09-16
(33)【優先権主張国・地域又は機関】RU
(31)【優先権主張番号】PCT/EP2019/077057
(32)【優先日】2019-10-07
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】コトラ,アナンド メヘル
(72)【発明者】
【氏名】アルシナ,エレナ・アレクサンドロヴナ
(72)【発明者】
【氏名】エセンリク,セミフ
(72)【発明者】
【氏名】ワン,ビァオ
(72)【発明者】
【氏名】ガオ,ハン
(72)【発明者】
【氏名】チェルニャク,ロマン・イゴレヴィチ
【審査官】坂東 大五郎
(56)【参考文献】
【文献】Wade Wan et al.,Consistent chroma QP derivation in the deblocking and inverse quantization processes,Joint Collaborative Team on Video Coding (JCT-VC),2021年10月09日,[JCTVC-K0145r1] (version 2)
【文献】Benjamin Bross et al.,Versatile Video Coding (Draft 6),Joint Video Experts Team (JVET),2019年07月31日,pp.150,280-282,[JVET-O2001-vE] (version 14)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
画像エンコードまたは画像デコードにおいて、第1の画像ブロックの第1のクロマ・ブロックと第2の画像ブロックの第2のクロマ・ブロックとの間のクロマ・ブロック・エッジをブロッキング解除するためのブロッキング解除方法であって:
前記クロマ・ブロック・エッジについての決定プロセスを実行し;
少なくとも前記決定プロセスにおいて決定された閾値パラメータ(tC)に基づいて、前記クロマ・ブロック・エッジについてのフィルタリング・プロセスを実行することを含み、
・前記決定プロセスは:
・前記第1の画像ブロックの第1のルーマ・ブロックの第1のルーマ量子化パラメータ(QpYP)と前記第1のクロマ・ブロックについてのクロマ量子化パラメータ(QP)マッピング・テーブルとに基づいて、前記第1のクロマ・ブロックについての第1のクロマ量子化パラメータ(QpCp)を決定する段階と;
・前記第2の画像ブロックの第2のルーマ・ブロックの第2のルーマ量子化パラメータ(QpYQ)と前記第2のクロマ・ブロックについてのクロマQPマッピング・テーブルとに基づいて、前記第2のクロマ・ブロックについての第2のクロマ量子化パラメータ(QpCq)を決定する段階と;
・次式:
QpC=(QpQ+QpP+1)>>1
に従って第3のクロマ量子化パラメータ(QpC)を決定する段階であって、
QpPは、前記第1のクロマ・ブロックについての前記第1のクロマ量子化パラメータ(QpCp)からオフセット値(QpBdOffset)を減算することによって得られ;QpQは、前記第2のクロマ・ブロックについての前記第2のクロマ量子化パラメータ(QpCq)から前記オフセット値(QpBdOffset)を減算することによって得られる、段階と;
・前記第3のクロマ量子化パラメータ(QpC)に基づいて前記閾値パラメータ(tC)を決定する段階とを含み、
前記第1のクロマ・ブロックおよび前記第2のクロマ・ブロックの少なくとも1つは、合同Cb-Cr残差(JCCR)符号化ブロックである、
ブロッキング解除方法。
【請求項2】
前記第1のクロマ・ブロックは、前記第1の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックであり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックである;
前記第1のクロマ・ブロックは、前記第1の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックであり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの第1のクロマ成分である;
前記第1のクロマ・ブロックは、前記第1の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックであり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの第2のクロマ成分である;
前記第1のクロマ・ブロックは、前記第1の画像ブロックの第1のクロマ成分であり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックである;または
前記第1のクロマ・ブロックは、前記第1の画像ブロックの第2のクロマ成分であり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックである、
請求項1に記載のブロッキング解除方法。
【請求項3】
前記第1のクロマ・ブロックまたは前記第2のクロマ・ブロックについての前記クロマ量子化パラメータ(QP)マッピング・テーブルは:
合同Cb-Cr符号化ブロックについての第1のクロマQPマッピング・テーブル、
第1のクロマ成分についての第2のクロマQPマッピング・テーブル、または
第2のクロマ成分についての第3のクロマQPマッピング・テーブル、
のうちの少なくとも1つを含む、請求項1ないし2のうちいずれか一項に記載のブロッキング解除方法。
【請求項4】
前記第1のクロマQPマッピング・テーブル、前記第2のクロマQPマッピング・テーブル、および前記第3のクロマQPマッピング・テーブルは、それぞれ、第1のインデックス値、第2のインデックス値、および第3のインデックス値によって、示されるまたはインデックス付けされる、請求項3に記載のブロッキング解除方法。
【請求項5】
前記第1のインデックス値は3であり、前記第2のインデックス値は1であり、前記第3のインデックスは2である;または、
前記第1のインデックス値は2であり、前記第2のインデックス値は0であり、前記第3のインデックスは1である、
請求項4に記載のブロッキング解除方法。
【請求項6】
前記第1のクロマ・ブロックが前記第1の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックである場合、前記第1のクロマ量子化パラメータ(QpCp)は、前記第1のクロマQPマッピング・テーブルにおける前記第1のルーマ量子化パラメータ(QpYP)のクリッピングされた値に対応するクロマQP値に基づいて導出される;
前記第1のクロマ・ブロックが前記第1の画像ブロックの第1のクロマ成分である場合、前記第1のクロマ量子化パラメータ(QpCp)は、前記第2のクロマQPマッピング・テーブルにおける前記第1のルーマ量子化パラメータ(QpYP)のクリッピングされた値に対応するクロマQP値に基づいて導出される;または
前記第1のクロマ・ブロックが前記第1の画像ブロックの第2のクロマ成分である場合、前記第1のクロマ量子化パラメータ(QpCp)は、前記第3のクロマQPマッピング・テーブルにおける前記第1のルーマ量子化パラメータ(QpYP)のクリッピングされた値に対応するクロマQP値に基づいて導出される、
請求項3ないし5のうちいずれか一項に記載のブロッキング解除方法。
【請求項7】
前記第2のクロマ・ブロックが前記第2の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックである場合、前記第2のクロマ量子化パラメータ(QpCq)は、前記第1のクロマQPマッピング・テーブルにおける前記第2のルーマ量子化パラメータ(QpYQ)のクリッピングされた値に対応するクロマQP値に基づいて導出される;
前記第2のクロマ・ブロックが前記第2の画像ブロックの第1のクロマ成分である場合、前記第2のクロマ量子化パラメータ(QpCq)は、前記第2のクロマQPマッピング・テーブルにおける前記第2のルーマ量子化パラメータ(QpYQ)のクリッピングされた値に対応するクロマQP値に基づいて導出される;または
前記第2のクロマ・ブロックが前記第2の画像ブロックの第2のクロマ成分である場合、前記第2のクロマ量子化パラメータ(QpCq)は、前記第3のクロマQPマッピング・テーブルにおける前記第2のルーマ量子化パラメータ(QpYQ)のクリッピングされた値に対応するクロマQP値に基づいて導出される、
請求項3ないし5のうちいずれか一項に記載のブロッキング解除方法。
【請求項8】
前記第1の画像ブロックの第1のルーマ・ブロックの第1のルーマ量子化パラメータ(QpYP)と前記第1のクロマ・ブロックについてのクロマ量子化パラメータ(QP)マッピング・テーブルとに基づいて、前記第1のクロマ・ブロックについての第1のクロマ量子化パラメータ(QpCp)を決定する前記段階は:
前記第1のルーマ・ブロックの前記第1のルーマ量子化パラメータ(QpYP)に基づいて、クリッピングされたQP値(qPiChroma)を得る段階と;
前記第1のクロマ・ブロックについての前記クロマQPマッピング・テーブルを使用して、前記クリッピングされたQP値(qPiChroma)に基づいて、前記第1のクロマ・ブロックについてのクロマQP値(qPiCb、qPiCr、qPiCbCr)を決定する段階と;
前記クロマQP値(qPiCb、qPiCr、qPiCbCr)のクリッピングされた値に基づいて、前記第1のクロマ・ブロックについての前記第1のクロマ量子化パラメータ(QpCp)を決定する段階とを含む、
請求項1ないし5のうちいずれか一項に記載のブロッキング解除方法。
【請求項9】
前記第2の画像ブロックの第2のルーマ・ブロックの第2のルーマ量子化パラメータ(QpYQ)および前記第2のクロマ・ブロックについての前記クロマQPマッピング・テーブルに基づいて、前記第2のクロマ・ブロックについての第2のクロマ量子化パラメータ(QpCq)を決定する前記段階は:
前記第2のルーマ・ブロックの前記第2のルーマ量子化パラメータ(QpYQ)に基づいて、クリッピングされたQP値(qPiChroma)を得る段階と;
前記第2のクロマ・ブロックについての前記クロマQPマッピング・テーブルを使用して、前記クリッピングされたQP値(qPiChroma)に基づいて、前記第2のクロマ・ブロックについてのクロマQP値(qPiCb、qPiCr、qPiCbCr)を決定する段階と;
前記第2のクロマ・ブロックについての前記第2のクロマ量子化パラメータ(QpCq)を、前記クロマQP値(qPiCb、qPiCr、qPiCbCr)のクリッピングされた値に基づいて決定する段階とを含む、
請求項1ないし5のうちいずれか一項に記載のブロッキング解除方法。
【請求項10】
前記合同Cb-Cr符号化ブロックは、JCCRモードを用いて符号化され、該JCCRモードは利用可能なJCCRモードの集合のうちの第2のモードである、請求項1ないし9のうちいずれか一項に記載のブロッキング解除方法。
【請求項11】
前記第1の画像ブロックおよび前記第2の画像ブロックが変換ブロックである;または
前記第1の画像ブロックおよび前記第2の画像ブロックが符号化ブロックである、
請求項1ないし10のうちいずれか一項に記載のブロッキング解除方法。
【請求項12】
第1の画像ブロックの第1のクロマ・ブロックと第2の画像ブロックの第2のクロマ・ブロックとの間のクロマ・ブロック・エッジをブロッキング解除するための、画像エンコーダまたは画像デコーダにおいて使うためのブロッキング解除フィルタ装置であって:
当該ブロッキング解除フィルタ装置は:
前記クロマ・ブロック・エッジについての決定プロセスを実行し、
少なくとも前記決定プロセスにおいて決定された閾値パラメータに基づいて、前記クロマ・ブロック・エッジについてのフィルタリング・プロセスを実行するように構成されており、
前記決定プロセスは:
・前記第1の画像ブロックの第1のルーマ・ブロックの第1のルーマ量子化パラメータ(QpYP)と前記第1のクロマ・ブロックについてのクロマ量子化パラメータ(QP)マッピング・テーブルとに基づいて、前記第1のクロマ・ブロックについての第1のクロマ量子化パラメータ(QpCp)を決定する段階と;
・前記第2の画像ブロックの第2のルーマ・ブロックの第2のルーマ量子化パラメータ(QpYQ)と前記第2のクロマ・ブロックについてのクロマQPマッピング・テーブルとに基づいて、前記第2のクロマ・ブロックについての第2のクロマ量子化パラメータ(QpCq)を決定する段階と;
・次式:
QpC=(QpQ+QpP+1)>>1
に従って第3のクロマ量子化パラメータ(QpC)を決定する段階であって、
QpPは、前記第1のクロマ・ブロックについての前記第1のクロマ量子化パラメータ(QpCp)からオフセット値(QpBdOffset)を減算することによって得られ;QpQは、前記第2のクロマ・ブロックについての前記第2のクロマ量子化パラメータ(QpCq)から前記オフセット値(QpBdOffset)を減算することによって得られる、段階と;
・前記第3のクロマ量子化パラメータ(QpC)に基づいて前記閾値パラメータ(tC)を決定する段階とを含み、
前記第1のクロマ・ブロックおよび前記第2のクロマ・ブロックの少なくとも1つは、合同Cb-Cr残差(JCCR)符号化ブロックである、
装置。
【請求項13】
前記第1のクロマ・ブロックは、前記第1の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックであり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックである;
前記第1のクロマ・ブロックは、前記第1の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックであり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの第1のクロマ成分である;
前記第1のクロマ・ブロックは、前記第1の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックであり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの第2のクロマ成分である;
前記第1のクロマ・ブロックは、前記第1の画像ブロックの第1のクロマ成分であり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックである;または
前記第1のクロマ・ブロックは、前記第1の画像ブロックの第2のクロマ成分であり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックである、
請求項12に記載の装置。
【請求項14】
前記第1のクロマ・ブロックまたは前記第2のクロマ・ブロックについての前記クロマ量子化パラメータ(QP)マッピング・テーブルは:
合同Cb-Cr符号化ブロックについての第1のクロマQPマッピング・テーブル
第1のクロマ成分についての第2のクロマQPマッピング・テーブル、または
第2のクロマ成分についての第3のクロマQPマッピング・テーブル、
のうちの少なくとも1つを含む、請求項12ないし13のうちいずれか一項に記載の装置。
【請求項15】
前記第1のクロマQPマッピング・テーブル、前記第2のクロマQPマッピング・テーブル、および前記第3のクロマQPマッピング・テーブルは、それぞれ、第1のインデックス値、第2のインデックス値、および第3のインデックス値によって、示されるまたはインデックス付けされる、請求項14に記載の装置。
【請求項16】
前記第1のインデックス値は3であり、前記第2のインデックス値は1であり、前記第3のインデックスは2である;または、
前記第1のインデックス値は2であり、前記第2のインデックス値は0であり、前記第3のインデックスは1である、
請求項15に記載の装置。
【請求項17】
前記第1のクロマ・ブロックが前記第1の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックである場合、前記第1のクロマ量子化パラメータ(QpCp)は、前記第1のクロマQPマッピング・テーブルにおける前記第1のルーマ量子化パラメータ(QpYP)のクリッピングされた値に対応するクロマQP値に基づいて導出される;
前記第1のクロマ・ブロックが前記第1の画像ブロックの第1のクロマ成分である場合、前記第1のクロマ量子化パラメータ(QpCp)は、前記第2のクロマQPマッピング・テーブルにおける前記第1のルーマ量子化パラメータ(QpYP)のクリッピングされた値に対応するクロマQP値に基づいて導出される;または
前記第1のクロマ・ブロックが前記第1の画像ブロックの第2のクロマ成分である場合、前記第1のクロマ量子化パラメータ(QpCp)は、前記第3のクロマQPマッピング・テーブルにおける前記第1のルーマ量子化パラメータ(QpYP)のクリッピングされた値に対応するクロマQP値に基づいて導出される、
請求項14ないし16のうちいずれか一項に記載の装置。
【請求項18】
前記第2のクロマ・ブロックが前記第2の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックである場合、前記第2のクロマ量子化パラメータ(QpCq)は、前記第1のクロマQPマッピング・テーブルにおける前記第2のルーマ量子化パラメータ(QpYQ)のクリッピングされた値に対応するクロマQP値に基づいて導出される;
前記第2のクロマ・ブロックが前記第2の画像ブロックの第1のクロマ成分である場合、前記第2のクロマ量子化パラメータ(QpCq)は、前記第2のクロマQPマッピング・テーブルにおける前記第2のルーマ量子化パラメータ(QpYQ)のクリッピングされた値に対応するクロマQP値に基づいて導出される;または
前記第2のクロマ・ブロックが前記第2の画像ブロックの第2のクロマ成分である場合、前記第2のクロマ量子化パラメータ(QpCq)は、前記第3のクロマQPマッピング・テーブルにおける前記第2のルーマ量子化パラメータ(QpYQ)のクリッピングされた値に対応するクロマQP値に基づいて導出される、
請求項14ないし16のうちいずれか一項に記載の装置。
【請求項19】
前記第1の画像ブロックの第1のルーマ・ブロックの第1のルーマ量子化パラメータ(QpYP)と前記第1のクロマ・ブロックについてのクロマ量子化パラメータ(QP)マッピング・テーブルとに基づいて、前記第1のクロマ・ブロックについての第1のクロマ量子化パラメータ(QpCp)を決定する前記段階は:
前記第1のルーマ・ブロックの前記第1のルーマ量子化パラメータ(QpYP)に基づいて、クリッピングされたQP値(qPiChroma)を得る段階と;
前記第1のクロマ・ブロックについての前記クロマQPマッピング・テーブルを使用して、前記クリッピングされたQP値(qPiChroma)に基づいて、前記第1のクロマ・ブロックについてのクロマQP値(qPiCb、qPiCr、qPiCbCr)を決定する段階と;
前記クロマQP値(qPiCb、qPiCr、qPiCbCr)のクリッピングされた値に基づいて、前記第1のクロマ・ブロックについての前記第1のクロマ量子化パラメータ(QpCp)を決定する段階とを含む、
請求項12ないし16のうちいずれか一項に記載の装置。
【請求項20】
前記第2の画像ブロックの第2のルーマ・ブロックの第2のルーマ量子化パラメータ(QpYQ)および前記第2のクロマ・ブロックについての前記クロマQPマッピング・テーブルに基づいて、前記第2のクロマ・ブロックについての第2のクロマ量子化パラメータ(QpCq)を決定する前記段階は:
前記第2のルーマ・ブロックの前記第2のルーマ量子化パラメータ(QpYQ)に基づいて、クリッピングされたQP値(qPiChroma)を得る段階と;
前記第2のクロマ・ブロックについての前記クロマQPマッピング・テーブルを使用して、前記クリッピングされたQP値(qPiChroma)に基づいて、前記第2のクロマ・ブロックについてのクロマQP値(qPiCb、qPiCr、qPiCbCr)を決定する段階と;
前記第2のクロマ・ブロックについての前記第2のクロマ量子化パラメータ(QpCq)を、前記クロマQP値(qPiCb、qPiCr、qPiCbCr)のクリッピングされた値に基づいて決定する段階とを含む、
請求項12ないし16のうちいずれか一項に記載の装置。
【請求項21】
前記合同Cb-Cr符号化ブロックは、JCCRモードを用いて符号化され、該JCCRモードは利用可能なJCCRモードの集合のうちの第2のモードである、請求項12ないし20のうちいずれか一項に記載の装置。
【請求項22】
前記第1の画像ブロックおよび前記第2の画像ブロックが変換ブロックである;または
前記第1の画像ブロックおよび前記第2の画像ブロックが符号化ブロックである、
請求項12ないし21のうちいずれか一項に記載の装置。
【請求項23】
請求項12ないし22のうちいずれかに記載の装置を有するデバイス。
【請求項24】
一つまたは複数のプロセッサと;
前記プロセッサに結合されており、前記プロセッサによる実行のためのプログラミングを記憶している非一時的なコンピュータ読み取り可能な記憶媒体とを有するデバイスであって、前記プログラミングは、前記プロセッサによって実行されると、請求項1ないし11のうちいずれか一項に記載の方法を実行するよう当該デバイスを構成するものである、
デバイス。
【請求項25】
コンピュータに請求項1ないし11のうちいずれかに記載の方法を実行させるためのコンピュータ・プログラム。
【請求項26】
一つまたは複数のプロセッサによって実行されるときに前記一つまたは複数のプロセッサに請求項1ないし11のうちいずれかに記載の方法を実行させるコンピュータ命令を記憶している非一時的なコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への相互参照
本特許出願は、2019年8月23日に出願された国際出願第PCT/EP2019/072643号、2019年9月16日に出願された国際出願第PCT/RU2019/000639号、および2019年10月7日に出願された国際出願第PCT/EP2019/077057号に対する優先権の利益を主張する。前述の特許出願は、その全体が参照により本明細書に組み込まれる。
【0002】
技術分野
本開示の実施形態は、一般に、画像処理の分野、たとえば、静止ピクチャーおよび/またはビデオ・ピクチャー符号化に関する。特に、本発明は、ブロッキング解除(deblocking)フィルタの改良を扱う。
【背景技術】
【0003】
画像符号化(エンコードおよびデコード)は、幅広い範囲のデジタル画像アプリケーション、たとえば放送デジタルTV、インターネットおよびモバイル・ネットワークを通じたビデオ伝送、ビデオチャット、ビデオ会議のようなリアルタイム会話アプリケーション、DVDおよびブルーレイディスク、ビデオコンテンツ収集および編集システムおよびセキュリティ・アプリケーションのビデオカメラにおいて使用される。1990年のH.261規格におけるブロック・ベースのハイブリッド・ビデオ符号化手法の開発以来、新しいビデオ符号化技法およびツールが開発され、新しいビデオ符号化規格の基礎をなしている。大半のビデオ符号化規格の目標の一つは、ピクチャー品質を犠牲にすることなく、先行例に比べたビットレート削減を達成することであった。さらなるビデオ符号化規格は、MPEG-1ビデオ、MPEG-2ビデオ、ITU-T H.262/MPEG-2、ITU-T H.263、ITU-T H.264/MPEG-4 Part 10:先進ビデオ符号化(Advanced Video Coding、AVC)、ITU-T H.265/高効率ビデオ符号化(High Efficiency Video Coding、HEVC)、ITU-T H.266/多用途ビデオ符号化(Versatile video coding、VVC)およびこれらの規格の拡張、たとえばスケーラビリティーおよび/または3次元(3D)拡張を含む。ブロック・ベースの画像符号化方式は、ブロック・エッジに沿ってエッジ・アーチファクトが現われうるという共通点を有する。これらのアーチファクトは諸符号化ブロックの独立した符号化に起因する。これらのエッジ・アーチファクトは、しばしば、ユーザーにとって容易に視認できる。ブロック・ベースの画像符号化における目標は、エッジ・アーチファクトを視認性閾値より下に低減することである。これは、たとえば、ブロッキング解除フィルタリングを実行することによって、ループ・フィルタリングを実行することによって行なわれる。そのようなブロッキング解除フィルタリングは、一方では、可視エッジ・アーチファクトを除去するためにデコード側で実行されるが、他方では、そもそもエッジ・アーチファクトが画像中にエンコードされるのを防ぐために、エンコード側でも実行される。ブロッキング解除フィルタ・プロセスは一般に、ルーマ・ブロック・エッジについての決定プロセスおよびフィルタリング・プロセスと、クロマ・ブロック・エッジについての決定プロセスおよびフィルタリング・プロセスとを含む。
【0004】
しかしながら、2つの隣接するクロマ・ブロックの間のクロマ・ブロック・エッジをブロッキング解除することは、困難であることがある。たとえば、クロマ・ブロック・エッジをブロッキング解除するために使用される情報は、対応するルーマ・ブロックから導出され、導出プロセスの間に失われ、不正確なブロッキング解除プロセスにつながる可能性がある。別の例では、合同Cb-Cr残差(joint Cb-Cr residual、JCCR)符号化ツール(あるいはすなわち、クロミナンス残差の合同符号化(joint coding of chrominance residuals、JCCR)ツール)を用いて符号化されるクロマ・ブロックのような新しいタイプのクロマ・ブロックが、ブロッキング解除フィルタリングに新たな課題を呈する可能性がある。
【発明の概要】
【0005】
上述の課題に鑑み、本発明は、従来のブロッキング解除フィルタリングを改善することを目的とする。本発明は、正確な仕方でブロッキング解除フィルタリングを実行できるブロッキング解除フィルタ装置、エンコーダ、デコーダ、および、対応する方法を提供するという目的をもつ。よって、ブロッキング解除は、より効率的であるべきである。本発明の実施形態は、独立請求項の特徴、および従属請求項の特徴による実施形態のさらなる有利な実装によって定義される。具体的な実施形態は、添付の独立請求項において概説されており、他の実施形態は従属請求項にある。
【0006】
第1の側面によれば、本発明は、画像エンコードおよび/または画像デコードにおいて、第1の画像ブロックの第1のクロマ・ブロックと第2の画像ブロックの第2のクロマ・ブロックとの間のクロマ・ブロック・エッジをブロッキング解除するためのブロッキング解除方法に関する。
前記ブロッキング解除方法は、以下を含む:
・前記クロマ・ブロック・エッジについての決定プロセスを実行することであって、該決定プロセスは、以下を含む:
・前記第1の画像ブロックの第1のルーマ・ブロック(801)の第1のルーマ量子化パラメータ(QpYP)と前記第1のクロマ・ブロックについてのクロマ量子化パラメータ(QP)マッピング・テーブルとに基づいて、前記第1のクロマ・ブロックについての第1のクロマ量子化パラメータ(QpCp)を決定する;
・前記第2の画像ブロックの第2のルーマ・ブロックの第2のルーマ量子化パラメータ(QpYQ)と前記第2のクロマ・ブロックについてのクロマQPマッピング・テーブルとに基づいて、前記第2のクロマ・ブロックについての第2のクロマ量子化パラメータ(QpCq)を決定する;
・前記第1のクロマ・ブロックについての前記第1のクロマ量子化パラメータ(QpCp)および前記第2のクロマ・ブロックについての前記第2のクロマ量子化パラメータ(QpCq)に基づいて、第3のクロマ量子化パラメータ(たとえば、平均され丸められたクロマ量子化パラメータ)(QpC)を決定する;
・前記第3のクロマ量子化パラメータ(たとえば平均され丸められたクロマ量子化パラメータ)(QpC)に基づいて閾値パラメータ(tC)を決定する;
・少なくとも前記閾値パラメータに基づいて、前記クロマ・ブロック・エッジのフィルタリング・プロセスを実行する。
【0007】
第3のクロマQP(QpC)は、クロマ・ブロック・エッジがフィルタリングされるべきかどうか、および/または、強力なブロッキング解除を適用するか通常のブロッキング解除を適用するか(たとえば、長いフィルタリングが実行されるべきか弱いフィルタリングが実行されるべきか)を決定するために、直接的または間接的に使用されうることが理解できる。一例では、閾値パラメータ(tC)は、第3のクロマ量子化パラメータ(たとえば、平均され丸められたクロマ量子化パラメータ)(QpC)に依存してもよく、ルックアップ・テーブルから導出されてもよい。閾値パラメータ(tC)は、クロマ・ブロック・エッジがフィルタリングされるべきかどうか、および/または、強力なブロッキング解除を適用するか通常のブロッキング解除を適用するか(たとえば、長いフィルタリングが実行されるべきか弱いフィルタリングが実行されるべきか)を決定するために使用されてもよい。閾値パラメータ(tC)は、クロマ・ブロック・エッジについてのフィルタリング・プロセス(特に、クロマ・ブロック・エッジに垂直であり隣接する一つまたは複数のクロマ・サンプルについてのフィルタリング・プロセス)の間のクリッピング・パラメータであることが留意される。
【0008】
クロマ・ブロック・エッジについてのフィルタリング・プロセスについては、対応して第2のクロマ・ブロックにおいて、クロマ・ブロック・エッジに垂直であり隣接する入力クロマ・サンプルの各ラインについて、高々MA数のクロマ・サンプルが修正されて、出力フィルタリングされたクロマ・サンプルを生成し;第1のクロマ・ブロックにおいて、クロマ・ブロック・エッジに垂直であり隣接する入力クロマ・サンプルの各ラインについて、高々MB数のクロマ・サンプルが修正されて、出力フィルタリングされたクロマ・サンプルを生成することが理解できる。MAまたはMBの値は、第1および第2のクロマ・ブロックのいずれかのブロック・サイズ(幅および高さ)に依存することが理解できる。
【0009】
クロマ・ブロック・エッジについてのフィルタリング・プロセスのために閾値パラメータ(tC)がどのように使用されるかについての詳細は、VVC仕様のような文書にあることがあり、それはここでは繰り返さないことが留意される。
【0010】
変換単位(TU)、予測単位(PU)、符号化単位(CU)などに適用できる、「ブロック」、「符号化ブロック」または「画像ブロック」という用語が本開示において使用されていることが留意される。VVCでは一般に、変換単位および符号化単位は、TUタイリングまたはサブブロック変換(SBT)が使用される数少ないシナリオを除いて、ほとんど整列されている。「ブロック/画像ブロック/符号化ブロック/変換ブロック」および「ブロック・サイズ/変換ブロック・サイズ」という用語は、本開示において互いに交換されうることが理解できる。用語「サンプル/ピクセル」は本開示では互いに交換されうる。
【0011】
本発明は、垂直および水平のクロマ・ブロック・エッジの両方について機能する。
【0012】
これは、第1の画像ブロックの第1のクロマ・ブロックと、第2の画像ブロックの第2のクロマ・ブロックとの間のクロマ・ブロック・エッジを正しくブロッキング解除することを許容する。本願に提示された技術では、2つの隣接するブロックについてのルーマQPに含まれる情報が保存され、それぞれのクロマQPを決定するために使用される。これは、2つの隣接するルーマ・ブロックのルーマQPの平均値に基づいてクロマQPが決定される既存の手法が被る情報損失を防止する。さらに、本明細書に呈示されるようなそれぞれのクロマQPマッピング・テーブルを使用することにより、クロマQPが、異なるクロマ成分についてより正確に決定することができる。結果として、ブロッキング解除プロセスは、ブロック・アーチファクトの除去においてより効果的であり、それにより、符号化されたビデオの視覚的品質を改善する。
【0013】
ある可能な実装形態では、第1のクロマおよび第2のクロマ・ブロックの少なくとも1つは、合同Cb-Cr残差(JCCR)符号化ブロックである。
【0014】
本明細書に呈示される技術により、合同Cb-Cr符号化ブロックのための最終的なクロマQP値は、その対応するルーマQP値に基づいて正しく導出(またはマッピング)され、正しいブロッキング解除決定を達成し、それにより符号化されたビデオのより良い視覚的品質を達成することができる。よって、ブロッキング解除フィルタリングの結果は、著しく改善される。
【0015】
ある可能な実装形態では、第1のクロマ・ブロックは、第1の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックであり、第2のクロマ・ブロックは、第2の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックである;または
第1のクロマ・ブロックは、第1の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックであり、第2のクロマ・ブロックは、第2の画像ブロックの第1のクロマ成分である;または
第1のクロマ・ブロックは、第1の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックであり、第2のクロマ・ブロックは、第2の画像ブロックの第2のクロマ成分である;または
第1のクロマ・ブロックは、第1の画像ブロックの第1のクロマ成分であり、第2のクロマ・ブロックは、第2の画像ブロック(602、602')の合同Cb-Cr残差(JCCR)符号化ブロックである;または
第1のクロマ・ブロックは、第1の画像ブロックの第2のクロマ成分であり、第2のクロマ・ブロックは、第2の画像ブロックの合同Cb-Cr残差(JCCR)符号化ブロックである;または
第1のクロマ・ブロックは、第1の画像ブロックの第1のクロマ成分であり、第2のクロマ・ブロックは、第2の画像ブロックの第1のクロマ成分である;または
第1のクロマ・ブロックは、第1の画像ブロックの第2のクロマ成分であり、第2のクロマ・ブロックは、第2の画像ブロックの第2のクロマ成分である。
【0016】
本明細書に呈示された技術では、第1のクロマ・ブロックと第2のクロマ・ブロックが異なるタイプである場合、本開示の実施形態による方法のステップの順序は、情報の損失なしに、合理的である。さらに、合同Cb-Cr符号化ブロックを含むクロマ・ブロックについての最終的な導出されるクロマQP値は、より正確であり、よって、より良好なブロッキング解除決定をもたらし、それにより、より良好な視覚的品質をもたらすことができる。
【0017】
ある可能な実装形態では、第1のクロマ・ブロックまたは第2のクロマ・ブロックについてのクロマ量子化パラメータ(QP)マッピング・テーブルは、以下のうちの少なくとも1つを含む:
合同Cb-Cr符号化ブロックについての第1のクロマQPマッピング・テーブル。
第1のクロマ成分(Cb成分など)についての第2のクロマQPマッピング・テーブル、または
第2のクロマ成分(Cr成分など)についての第3のクロマQPマッピング・テーブル。
【0018】
一例では、各クロマQPマッピング・テーブルは、同じ数のエントリーをもつ。本発明の明細書、特許請求の範囲、および添付の図面において、用語「第1」、「第2」、「第3」などは、(もしあれば)類似の対象の間で区別するために意図されており、必ずしも特定の順序または序列を示すものではないことが留意される。
【0019】
本明細書に呈示された技術により、本明細書に呈示されたそれぞれのクロマQPマッピング・テーブルを用いて、異なるクロマ成分についてクロマQPをより正確に決定することができる。結果として、ブロッキング解除プロセスは、ブロック・アーチファクトの除去においてより効果的であり、それにより、符号化されたビデオの視覚的品質を改善する。
【0020】
ある可能な実装形態では、前記第1のクロマQPマッピング・テーブル、前記第2のクロマQPマッピング・テーブル、および前記第3のクロマQPマッピング・テーブルは、それぞれ、第1のインデックス値、第2のインデックス値、および第3のインデックス値によって、示されるまたはインデックス付けされる。一例では、前記第2のインデックス値が0に等しい場合、ChromaQpTable[0]は、第1のクロマ成分についての前記第2のクロマQPマッピング・テーブルである。前記第3のインデックス値が1に等しい場合、ChromaQpTable[1]は、第2のクロマ成分についての前記第3のクロマQPマッピング・テーブルである。前記第1のインデックス値が2に等しい場合、ChromaQpTable[2]は合同Cb-Cr残差(JCCR)符号化されたブロックについての前記第1のクロマQPマッピング・テーブルである。一例では、クロマQPマッピング・テーブルChromaQpTable[i]は、ビットストリームi=0、1または2から得られたパラメータまたは情報に基づいて導出されてもよい。別の例では、ChromaQpTable[i]は、あらかじめ定義されたクロマQPマッピング・テーブルであってもよい。
【0021】
ある可能な実装形態では、前記第1のインデックス値は3であり、前記第2のインデックス値は1であり、前記第3のインデックスは2である;または、前記第1のインデックス値は2であり、前記第2のインデックス値は0であり、前記第3のインデックスは1である。
【0022】
ある可能な実装形態では、第1のクロマ・ブロックが第1の画像ブロック(601、601')の合同残差Cb-Cr(JCCR)符号化ブロックである場合、第1のクロマ量子化パラメータ(QpCp)は、第1のクロマQPマッピング・テーブルにおける第1のルーマ量子化パラメータ(QpYP)のクリッピングされた値に対応するクロマQP値に基づいて導出される;
第1のクロマ・ブロックが第1の画像ブロックの第1のクロマ成分(Cb成分など)である場合、第1のクロマ量子化パラメータ(QpCp)は、第2のクロマQPマッピング・テーブルにおける第1のルーマ量子化パラメータ(QpYP)のクリッピングされた値に対応するクロマQP値に基づいて導出される;または
第1のクロマ・ブロックが第1の画像ブロックの第2のクロマ成分(Cr成分など)である場合、第1のクロマ量子化パラメータ(QpCp)は、第3のクロマQPマッピング・テーブルにおける第1のルーマ量子化パラメータ(QpYP)のクリッピングされた値に対応するクロマQP値に基づいて導出される。
【0023】
第1のルーマ・ブロックの第1ルーマ量子化パラメータ(QpYP)は、第1のクロマ・ブロックについての第1のクロマ量子化パラメータ(QpCp)を導出するために直接は使用されないことが留意される。クリッピングなどの中間ステップが、第1のルーマQPに対して使用されることができる。
【0024】
本明細書に呈示された技術により、本明細書に呈示されたそれぞれのクロマQPマッピング・テーブルを用いて、異なるクロマ成分について、クロマQPをより正確に決定することができる。結果として、ブロッキング解除プロセスは、ブロック・アーチファクトの除去においてより効果的であり、それにより、符号化されたビデオの視覚的品質を改善する。
【0025】
ある可能な実装形態では、第2のクロマ・ブロックが第2の画像ブロック(602、602')の合同Cb-Cr残差(JCCR)符号化ブロックである場合、第2のクロマ量子化パラメータ(QpCq)は、第1のクロマQPマッピング・テーブルにおける第2のルーマ量子化パラメータ(QpYQ)のクリッピングされた値に対応するクロマQP値に基づいて導出される;
第2のクロマ・ブロックが第2の画像ブロックの第1のクロマ成分(Cb成分など)である場合、第2のクロマ量子化パラメータ(QpCq)は、第2のクロマQPマッピング・テーブルにおける第2のルーマ量子化パラメータ(QpYQ)のクリッピングされた値に対応するクロマQP値に基づいて導出される;または
第2のクロマ・ブロックが第2の画像ブロックの第2のクロマ成分(Cr成分など)である場合、第2のクロマ量子化パラメータ(QpCq)は、第3のクロマQPマッピング・テーブルにおける第2のルーマ量子化パラメータ(QpYQ)のクリッピングされた値に対応するクロマQP値に基づいて導出される。
【0026】
第2のルーマ・ブロックの第2のルーマ量子化パラメータ(QpYQ)は、第2のクロマ・ブロックについての第2のクロマ量子化パラメータ(QpCq)を導出するために直接は使用されないことが留意される。クリッピングなどの中間ステップが、第2のルーマQPに対して使用されることができる。
【0027】
本明細書に呈示された技術により、本明細書に呈示されたそれぞれのクロマQPマッピング・テーブルを用いて、異なるクロマ成分について、クロマQPをより正確に決定することができる。結果として、ブロッキング解除プロセスは、ブロック・アーチファクトの除去においてより効果的であり、それにより、符号化されたビデオの視覚的品質を改善する。
【0028】
ある可能な実装形態では、第1の画像ブロックの第1のルーマ・ブロックの第1のルーマ量子化パラメータ(QpYP)と第1のクロマ・ブロックについてのクロマ量子化パラメータ(QP)マッピング・テーブルとに基づいて、第1のクロマ・ブロックについての第1のクロマ量子化パラメータ(QpCp)を決定するステップは、以下を含む:
第1のルーマ・ブロック(801)の第1のルーマ量子化パラメータ(QpYP)に基づいて、クリッピングされたQP値(qPiChroma)を得る;たとえばqPiChroma=Clip3(-QpBdOffset,63,QpYP);
第1のクロマ・ブロックについてのクロマQPマッピング・テーブルを使用して、クリッピングされたQP値(qPiChroma)に基づいて、第1のクロマ・ブロックについてのクロマQP値(qPiCb、qPiCr、qPiCbCr)を決定する;
クロマQP値(qPiCb、qPiCr、qPiCbCr)のクリッピングされた値に基づいて、第1のクロマ・ブロックについての第1のクロマ量子化パラメータ(QpCp)を決定する。
【0029】
一例では、第1のクロマ量子化パラメータ(QpCp)は、クロマQP値(qPiCb、qPiCr、qPiCbCr)のクリッピングされた値にあらかじめ定義された値QpBdOffsetを加えることによって得られ、該あらかじめ定義された値は、符号化された諸シーケンスのビット深さに基づいて得られる。本明細書に呈示された技術では、第1のクロマ量子化パラメータ(QpCp)のゼロでない値が許容される。
【0030】
ある可能な実装形態では、第2の画像ブロックの第2のルーマ・ブロックの第2のルーマ量子化パラメータ(QpYQ)および第2のクロマ・ブロックについてのクロマQPマッピング・テーブルに基づいて、第2のクロマ・ブロックについての第2のクロマ量子化パラメータ(QpCq)を決定するステップは、以下を含む:
第2のルーマ・ブロックの第2のルーマ量子化パラメータ(QpYQ)に基づいてクリッピングされたQP値(qPiChroma)を得る;たとえば、qPiChroma=Clip3(-QpBdOffset,63,QpYQ);
第2のクロマ・ブロックについてのクロマQPマッピング・テーブルを使用して、クリッピングされたQP値(qPiChroma)に基づいて、第2のクロマ・ブロックについてのクロマQP値(qPiCb、qPiCr、qPiCbCr)を決定する;
第2のクロマ・ブロックについての第2のクロマ量子化パラメータ(QpCq)を、クロマQP値(qPiCb、qPiCr、qPiCbCr)のクリッピングされた値に基づいて決定する。
【0031】
一例では、第2のクロマ量子化パラメータ(QpCq)は、クロマQP値(qPiCb、qPiCr、qPiCbCr)のクリッピングされた値にあらかじめ定義された値QpBdOffsetを加えることによって得られ、該あらかじめ定義された値は、符号化された諸シーケンスのビット深さに基づいて得られる。本明細書に呈示された技術では、ゼロでない第2のクロマ量子化パラメータ(QpCq)の値が許容される。
【0032】
ある可能な実装形態では、第1のクロマ・ブロックについての第1のクロマ量子化パラメータ(QpCp)および第2のクロマ・ブロックについての第2のクロマ量子化パラメータ(QpCq)に基づいて第3のクロマ量子化パラメータ(QpC)を決定するステップは、以下を含む:
第3のクロマ量子化パラメータ(たとえば、平均され丸められたクロマ量子化パラメータQpC)(QpC)を次式
QpC=(QpQ+QpP+1)>>1
に従って決定する、
ここで、QpPは第1のクロマ・ブロックについての第1のクロマ量子化パラメータ(QpCp)に基づいており、QpQは第2のクロマ・ブロックについての第2のクロマ量子化パラメータ(QpCq)に基づいている。
【0033】
右シフトを用いて平均する動機は、除算を使うのを避けるためであることが理解できる。ハードウェアでは除算は高価な演算なのである。実際上は、平均は通例、この仕方(a+b+1)>>1で実装される。右シフトの前の1の加算は丸め近似であり、平均結果が丸められていることを保証する。たとえば、(a+b+2bits-1)>>bitsは(a+b+2bits-1)/2bitsと等しい(たとえばbits=1)。
【0034】
ある可能な実装形態では、QpPは、第1のクロマ・ブロックについての第1のクロマ量子化パラメータ(QpCp)からオフセット値(QpBdOffset)を減算することによって得られ、QpQは、第2のクロマ・ブロックについての第2のクロマ量子化パラメータ(QpCq)からオフセット値(QpBdOffset)を減算することによって得られる。
【0035】
ある可能な実装形態では、前記合同Cb-Cr符号化ブロックは、JCCRモードを用いて符号化され、該JCCRモードは利用可能なJCCRモードの集合のうちの第2のモードである。たとえば、変数TuCRESModeは2に設定される。
【0036】
第2の側面によれば、本発明は、第1の画像ブロックの第1のクロマ・ブロックと第2の画像ブロックの第2のクロマ・ブロックとの間のクロマ・ブロック・エッジをブロッキング解除するための、画像エンコーダおよび/または画像デコーダにおいて使うためのブロッキング解除フィルタ装置に関する。
当該ブロッキング解除フィルタ装置は、以下を実行するように構成される:
・前記クロマ・ブロック・エッジについての決定プロセスを実行することであって、該決定プロセスは、以下を含む:
・前記第1の画像ブロックの第1のルーマ・ブロックの第1のルーマ量子化パラメータ(QpYP)と前記第1のクロマ・ブロックについてのクロマ量子化パラメータ(QP)マッピング・テーブルとに基づいて、前記第1のクロマ・ブロックについての第1のクロマ量子化パラメータ(QpCp)を決定する;
・前記第2の画像ブロックの第2のルーマ・ブロックの第2のルーマ量子化パラメータ(QpYQ)と前記第2のクロマ・ブロックについてのクロマQPマッピング・テーブルとに基づいて、前記第2のクロマ・ブロックについての第2のクロマ量子化パラメータ(QpCq)を決定する;
・前記第1のクロマ・ブロックについての前記第1のクロマ量子化パラメータ(QpCp)および前記第2のクロマ・ブロックについての前記第2のクロマ量子化パラメータ(QpCq)に基づいて、第3のクロマ量子化パラメータ(QpC)を決定する;
・前記第3のクロマ量子化パラメータ(QpC)に基づいて閾値パラメータ(tC)を決定する;
・少なくとも前記閾値パラメータに基づいて、前記クロマ・ブロック・エッジ(903、913、923)のフィルタリング・プロセスを実行する。
【0037】
第2の側面による装置は、第1の側面の方法の諸実装形態に対応する実装形態に拡張できる。よって、本装置の実装形態は、第1の側面の方法の対応する実装形態の特徴(単数または複数)を含む。第2の側面による装置の利点は、第1の側面による方法の対応する実装形態についての利点と同じである。本発明の第1の側面による方法は、本発明の第2の側面による装置によって実行されることができる。本発明の第1の側面による方法のさらなる特徴および実装形態は、本発明の第2の側面による装置の特徴および実装形態に対応する。
【0038】
本発明の第3の側面によれば、ビデオ・エンコード装置が提供される。該ビデオ・エンコード装置は、ビデオ・ストリームのピクチャーをエンコードするためであり、該ビデオ・エンコード装置は、任意の先行する側面の任意の先行する実装または任意の先行する側面自身によるブロッキング解除フィルタ装置を備える。これは、画像の非常に効率的で正確なエンコードを許容する。
【0039】
本発明の第4の側面によれば、ビデオ・デコード装置が提供される。該ビデオ・デコード装置は、エンコードされたビデオ・ストリームのピクチャーをデコードするためであり、該ビデオ・デコード装置は、任意の先行する側面の任意の先行する実装または任意の先行する側面自身によるブロッキング解除フィルタ装置を備える。これは、画像の特に正確で効率的なデコードを許容する。
【0040】
本発明の第5の側面によれば、ビデオ・ストリームをデコードするための装置がプロセッサおよびメモリを含む。メモリは、任意の先行する側面の任意の先行する実装または任意の先行する側面自身によるブロッキング解除方法をプロセッサに実行させる命令を記憶している。
【0041】
本発明の第6の側面によれば、ビデオ・ストリームをエンコードするための装置がプロセッサおよびメモリを含む。メモリは、任意の先行する側面の任意の先行する実装または任意の先行する側面自身によるブロッキング解除方法をプロセッサに実行させる命令を記憶している。
【0042】
別の側面によれば、実行されたときに一つまたは複数のプロセッサにビデオ・データを符号化させる命令を記憶しているコンピュータ読み取り可能な記憶媒体が提案される。命令は、任意の先行する側面の任意の先行する実装または任意の先行する側面自身によるブロッキング解除方法を該一つまたは複数のプロセッサに実行させる。
【0043】
別の側面によれば、コンピュータ・プログラムがコンピュータ上で実行されるときに、任意の先行する側面の任意の先行する実装または任意の先行する側面自身によるブロッキング解除方法を実行するためのプログラム・コードを備えたコンピュータ・プログラム製品が提供される。
【0044】
一つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載されている。他の特徴、目的、および利点は、明細書、図面、および特許請求の範囲から明らかであろう。
【図面の簡単な説明】
【0045】
下記では、本発明の実施形態が添付の図面および図を参照して、より詳細に説明される:c
図1A】本発明の実施形態を実装するように構成されたビデオ符号化システムの例を示すブロック図である。
図1B】本発明の実施形態を実装するように構成されたビデオ符号化システムの別の例を示すブロック図である。
図2】本発明の実施形態を実施するように構成されたビデオ・エンコーダの例を示すブロック図である。
図3】本発明の実施形態を実装するように構成されたビデオ・デコーダの例示的な構造を示すブロック図である。
図4】エンコード装置またはデコード装置の一例を示すブロック図である。
図5】エンコード装置またはデコード装置の別の例を示すブロック図である。
図6A】2つの例示的な画像ブロック(変換ブロックまたは符号化ブロックなど)を示す。
図6B】2つの例示的な画像ブロック(変換ブロックまたは符号化ブロックなど)を示す。
図7A】ルーマ・サンプルおよびクロマ・サンプルの公称の垂直および水平方向の相対位置を示す概念図である。
図7B】共位置のルーマ・ブロックとクロマ・ブロックを示す概略図である。
図8】2つの例示的なルーマ・ブロック(変換ブロックまたは符号化ブロックのルーマ成分など)を示す。
図9】9A~9Hは、第1の画像ブロックの第1のクロマ・ブロックと第2の画像ブロックの第2のクロマ・ブロックとの間のクロマ・ブロック・エッジをブロッキング解除する例示的な機構を示す概略図である。
図10】本発明の実施形態によるブロッキング解除フィルタ装置の実施形態を示す。
図11】第1の画像ブロックの第1のクロマ・ブロックと第2の画像ブロックの第2のクロマ・ブロックとの間のクロマ・ブロック・エッジをブロッキング解除するためのブロッキング解除方法を示すフローチャートの実施形態を示す。
図12】12Aおよび12Bは、2つの例示的なクロマQPマッピング・テーブルを示す。
図13】各成分についての例示的な別個のクロマQpマッピング・テーブルを示す。
図14】コンテンツ送達サービスを実現するコンテンツ供給システム3100の例示的な構造を示すブロック図である。
図15】端末装置の一例の構造を示すブロック図である。
図16】本開示のいくつかの側面によるブロッキング解除方法のフローチャートである。
図17】本開示のいくつかの側面による決定プロセスのフローチャートである。
【0046】
以下において、同一の参照符号は、そうでないことが明示的に指定されていない場合は、同一のまたは少なくとも機能的に等価な特徴を指す。
【発明を実施するための形態】
【0047】
以下の定義は、参照のために使用される
符号化ブロック:MとNの何らかの値についてのサンプルのM×Nブロックであって、CTBの符号化ブロックへの分割(division)がパーティション分割(partitioning)であるようなもの。
符号化ツリー・ブロック(CTB):Nの何らかの値についてのサンプルのN×Nブロックであって、ある成分のCTBへの分割がパーティション分割であるようなもの。
符号化ツリー単位(CTU):ルーマ・サンプルのCTB、3つのサンプル・アレイをもつピクチャーのクロマ・サンプルの2つの対応するCTB、またはモノクロ・ピクチャーもしくは3つの別々のカラープレーンおよびサンプルを符号化するために使用されるシンタックス構造を使用して符号化されたピクチャーのサンプルのCTB。
符号化単位(CU):ルーマ・サンプルの符号化ブロック、3つのサンプル・アレイをもつピクチャーのクロマ・サンプルの2つの対応する符号化ブロック、またはモノクロ・ピクチャーもしくは3つの別々のカラープレーンおよびサンプルを符号化するために使用されるシンタックス構造を使用して符号化されたピクチャーのサンプルの符号化ブロック。
成分:4:2:0、4:2:2、または4:4:4のカラーフォーマットでピクチャーを構成する3つのアレイ(ルーマと2つのクロマ)のうちの1つからのアレイもしくは単一のサンプル、またはモノクロ・フォーマットでピクチャーを構成するアレイもしくはアレイの単一のサンプル。
【0048】
以下の説明では、本開示の一部を形成し、本発明の実施形態の具体的な諸側面または本発明の実施形態が使用されうる具体的な諸側面を例示するために、添付の図面を参照する。本発明の実施形態は、他の諸側面で使用されてもよく、図に示されていない構造的または論理的な変化を含むことが理解される。よって、以下の詳細な説明は、限定する意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によって定義される。
【0049】
たとえば、記載される方法に関連する開示は、当該方法を実行するように構成された対応する装置またはシステムについても真であり、その逆もありうることが理解される。たとえば、一つまたは複数の具体的な方法ステップが記載されている場合、対応する装置は、記載された一つまたは複数の方法ステップを実行するための一つまたは複数のユニット、たとえば機能ユニット(たとえば、該一つまたは複数のステップを実行する1つのユニット、または該複数のステップの一つまたは複数をそれぞれ実行する複数のユニット)を含んでいてもよい。たとえそのような一つまたは複数のユニットが明示的に記載されたり、図示されたりしていなくてもそうである。他方、たとえば、ある具体的な装置が一つまたは複数のユニット、たとえば機能ユニットに基づいて記載される場合、対応する方法が、該一つまたは複数のユニットの機能性を実行するための1つのステップ(たとえば、該一つまたは複数のユニットの機能性を実行する1つのステップ、または複数のユニットのうちの一つまたは複数の機能性をそれぞれ実行する複数のステップ)を含んでいてもよい。たとえそのような一つまたは複数のステップが明示的に記載されたり図示されたりしていなくてもそうである。さらに、本明細書に記載されるさまざまな例示的な実施形態および/または側面の特徴は、特に断りのない限り、互いに組み合わされてもよいことができることが理解される。
【0050】
ビデオ符号化は、典型的には、ビデオまたはビデオ・シーケンスを形成するピクチャーのシーケンスの処理をいう。「ピクチャー」という用語の代わりに、「フレーム」または「画像」という用語が、ビデオ符号化の分野では同義語として使用されることがある。ビデオ符号化(または、符号化全般)は、ビデオ・エンコードおよびビデオ・デコードという2つの部分を有する。ビデオ・エンコードは、源側で実行され、典型的には、(より効率的な記憶および/または伝送のために)ビデオ・ピクチャーを表現するのに必要なデータ量を減らすために、もとのビデオ・ピクチャーを(たとえば、圧縮によって)処理することを含む。ビデオ・デコードは、宛先側で実行され、典型的には、ビデオ・ピクチャーを再構成するために、エンコーダと比較して逆の処理を含む。ビデオ・ピクチャー(または、ピクチャー全般)の「符号化」に言及する実施形態は、ビデオ・ピクチャーまたはそれぞれのビデオ・シーケンスの「エンコード」または「デコード」に関連するものと理解される。エンコード部分とデコード部分の組み合わせは、コーデック(コーディングおよびデコーディング)とも呼ばれる。
【0051】
損失のないビデオ符号化の場合、もとのビデオ・ピクチャーが再構成できる。すなわち、再構成されたビデオ・ピクチャーは、もとのビデオ・ピクチャーと同じ品質をもつ(記憶または伝送の間に伝送損失またはその他のデータ損失がないとする)。損失のあるビデオ符号化の場合、ビデオ・ピクチャーを表わすデータの量を減らすために、たとえば量子化によるさらなる圧縮が実行され、これはデコーダにおいて完全に再構成されることができない。すなわち、再構成されたビデオ・ピクチャーの品質は、もとのビデオ・ピクチャーの品質に比べ低いまたは悪い。
【0052】
いくつかのビデオ符号化標準は、「損失のあるハイブリッド・ビデオ・コーデック」のグループに属する(すなわち、サンプル領域における空間的および時間的予測と、変換領域における量子化を適用するための2D変換符号化を組み合わせる)。ビデオ・シーケンスの各ピクチャーは、典型的には、重複しないブロックの集合にパーティション分割され、符号化は典型的にはブロック・レベルで実行される。換言すれば、エンコーダでは、ビデオは、典型的には、ブロック(ビデオ・ブロック)レベルで処理、すなわち、エンコードされる。これはたとえば、空間的(ピクチャー内)予測および/または時間的(ピクチャー間)予測を使用して予測ブロックを生成し、現在のブロック(現在処理されている/処理されるべきブロック)から予測ブロックを減算して残差ブロックを取得し、残差ブロックを変換し、変換領域において残差ブロックを量子化して、送信されるべきデータ量を低減すること(圧縮)による。一方、デコーダでは、エンコーダに比べ逆の処理が、エンコードされたまたは圧縮されたブロックに適用されて、表現のために現在のブロックを再構成する。さらに、エンコーダはデコーダ処理ループを複製し、両者が同一の予測(たとえばイントラ予測およびインター予測)および/または再構成を、その後のブロックの処理、すなわち符号化のために、生成する。
【0053】
ビデオ符号化システム10の以下の実施形態では、図1図3に基づいて、ビデオ・エンコーダ20およびビデオ・デコーダ30が記述される。
【0054】
図1Aは、本願の技術を利用することができる例示的な符号化システム10、たとえばビデオ符号化システム10(または略して符号化システム10)を示す概略ブロック図である。ビデオ符号化システム10のビデオ・エンコーダ20(または略してエンコーダ20)およびビデオ・デコーダ30(または略してデコーダ30)は、本願に記載されるさまざまな例による技術を実行するように構成されうる装置の例を表わす。
【0055】
図1Aに示されるように、符号化システム10は、エンコードされたピクチャー・データ21を、たとえば該エンコードされたピクチャー・データ21をデコードする宛先装置14に提供するように構成された源装置12を有する。
【0056】
源装置12は、エンコーダ20を有し、追加的すなわち任意的に、ピクチャー源16、プリプロセッサ(または前処理ユニット)18、たとえばピクチャー・プリプロセッサ18、および通信インターフェースもしくは通信ユニット22を有していてもよい。
【0057】
ピクチャー源16は、任意の種類のピクチャー捕捉装置、たとえば、実世界ピクチャーを捕捉するためのカメラ、および/または任意の種類のピクチャー生成装置、たとえば、コンピュータ・アニメーション化されたピクチャーを生成するためのコンピュータ・グラフィックス・プロセッサ、または、実世界ピクチャー、コンピュータ生成されたピクチャー(たとえば、スクリーン・コンテンツ、仮想現実(VR)ピクチャー)、および/またはそれらの任意の組み合わせ(たとえば、拡張現実(AR)ピクチャー)を取得および/または提供するための任意の種類の他の装置を有するか、またはそのようなものであってよい。ピクチャー源は、上記のピクチャーのいずれかを記憶する任意の種類のメモリまたは記憶であってもよい。
【0058】
プリプロセッサ18および前処理ユニット18によって実行される処理と区別して、ピクチャーまたはピクチャー・データ17は、生ピクチャーまたは生ピクチャー・データ17と称されてもよい。
【0059】
プリプロセッサ18は、(生)ピクチャー・データ17を受け取り、ピクチャー・データ17に対して前処理を実行し、前処理されたピクチャー19または前処理されたピクチャー・データ19を得るように構成される。プリプロセッサ18によって実行される前処理は、たとえば、トリミング、色フォーマット変換(たとえば、RGBからYCbCrへ)、色補正、またはノイズ除去を含んでいてもよい。前処理ユニット18は、任意的な構成要素であってもよいことが理解できる。
【0060】
ビデオ・エンコーダ20は、前処理されたピクチャー・データ19を受領し、エンコードされたピクチャー・データ21を提供するように構成される(さらなる詳細は、たとえば図2に基づいて後述する)。
【0061】
源装置12の通信インターフェース22は、エンコードされたピクチャー・データ21を受領し、エンコードされたピクチャー・データ21(またはその任意のさらに処理されたバージョン)を、通信チャネル13を通じて、別の装置、たとえば宛先装置14または任意の他の装置に、記憶または直接再構成のために送信するように構成されてもよい。
【0062】
宛先装置14は、デコーダ30(たとえば、ビデオ・デコーダ30)を有しており、追加的すなわち任意的に、通信インターフェースまたは通信ユニット28、ポストプロセッサ32(または後処理ユニット32)、および表示装置34を有していてもよい。
【0063】
宛先装置14の通信インターフェース28は、エンコードされたピクチャー・データ21(またはそのさらに処理されたバージョン)を、たとえば源装置12から直接、または他の任意の源、たとえば記憶装置、たとえばエンコード・ピクチャー・データ記憶装置から受領し、エンコードされたピクチャー・データ21をデコーダ30に提供するように構成される。
【0064】
通信インターフェース22および通信インターフェース28は、源装置12と宛先装置14との間の直接通信リンク、たとえば直接的な有線もしくは無線接続を介して、または任意の種類のネットワーク、たとえば有線もしくは無線ネットワークもしくはそれらの任意の組み合わせ、または任意の種類の私的および公的ネットワーク、またはそれらの任意の種類の組み合わせを介して、エンコードされたピクチャー・データ21またはエンコードされたデータ21を送信または受信するように構成されてもよい。
【0065】
通信インターフェース22は、たとえば、エンコードされたピクチャー・データ21を適切なフォーマット、たとえば、パケットにパッケージ化し、および/またはエンコードされたピクチャー・データを通信リンクもしくは通信ネットワークを通じた伝送のための任意の種類の伝送エンコードもしくは処理を用いて処理するように構成されてもよい。
【0066】
通信インターフェース22の相手をなす通信インターフェース28は、たとえば、送信されたデータを受信し、任意の種類の対応する伝送デコードもしくは処理および/またはパッケージ化解除を用いて伝送データを処理して、エンコードされたピクチャー・データ21を得るように構成されてもよい。
【0067】
通信インターフェース22および通信インターフェース28の両方は、図1Aにおいて源装置12から宛先装置14を指す通信チャネル13についての矢印によって示されるような一方向通信インターフェース、または双方向通信インターフェースとして構成されることができ、たとえば、メッセージを送信および受信するように構成されてもよい。たとえば接続をセットアップするため、通信リンクおよび/またはデータ伝送、たとえばエンコードされたピクチャー・データ伝送に関連する任意の他の情報を受け取り確認および交換するためである。
【0068】
デコーダ30は、エンコードされたピクチャー・データ21を受信し、デコードされたピクチャー・データ31またはデコードされたピクチャー31を提供するように構成される(さらなる詳細は、たとえば図3または図5に基づいて後述する)。
【0069】
宛先装置14のポストプロセッサ32は、デコードされたピクチャー・データ31(再構成されたピクチャー・データとも呼ばれる)、たとえばデコードされたピクチャー31を後処理して、後処理されたピクチャー・データ33、たとえば後処理されたピクチャー33を得るように構成される。後処理ユニット32によって実行される後処理は、たとえば、色フォーマット変換(たとえば、YCbCrからRGBへ)、色補正、トリミング、または再サンプリング、または、たとえばデコードされたピクチャー・データ31を、たとえば表示装置34による、表示のために準備するための任意の他の処理を含むことができる。
【0070】
宛先装置14の表示装置34は、ピクチャーを、たとえばユーザーまたは閲覧者に対して表示するために、後処理されたピクチャー・データ33を受領するように構成される。表示装置34は、再構成されたピクチャーを表現するための任意の種類のディスプレイ、たとえば、統合されたまたは外部のディスプレイまたはモニターであってもよく、またはそれを含んでいてもよい。ディスプレイは、たとえば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクター、マイクロLEDディスプレイ、液晶オン・シリコン(LCoS)、デジタル光プロセッサ(DLP)、または任意の他の種類のディスプレイを含みうる。
【0071】
図1Aは、源装置12および宛先装置14を別個の装置として描いているが、装置の実施形態は、両方もしくは両方の機能、源装置12もしくは対応する機能および宛先装置14もしくは対応する機能を含んでいてもよい。そのような実施形態では、源装置12または対応する機能と宛先装置14または対応する機能は、同じハードウェアおよび/またはソフトウェアを使用して、または別個のハードウェアおよび/またはソフトウェアまたはそれらの任意の組み合わせによって実装されることができる。
【0072】
前記記述に基づいて当業者には明白であろうように、異なるユニットの機能または図1Aに示されるような源装置12および/または宛先装置14内の機能の存在および(厳密な)分割は、実際の装置および用途に依存して変わりうる。
【0073】
エンコーダ20(たとえば、ビデオ・エンコーダ20)、またはデコーダ30(たとえば、ビデオ・デコーダ30)、またはエンコーダ20とデコーダ30の両方は、図1Bに示されるような処理回路、たとえば、一つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディクリート論理、ハードウェア、専用のビデオ符号化、またはそれらの任意の組み合わせを介して実装されうる。エンコーダ20は、図2のエンコーダ20および/または本明細書に記載される任意の他のエンコーダ・システムまたはサブシステムに関して論じられるさまざまなモジュールを具現するために、処理回路46を介して実装されてもよい。デコーダ30は、図3のデコーダ30および/または本明細書に記載される任意の他のデコーダ・システムまたはサブシステムに関して論じられるさまざまなモジュールを具現するために、処理回路46を介して実装されてもよい。処理回路は、後述するように、さまざまな動作を実行するように構成されうる。図5に示されるように。技術が部分的にソフトウェアで実装される場合、装置が、好適な非一時的なコンピュータ読み取り可能な記憶媒体に該ソフトウェアのための命令を記憶してもよく、一つまたは複数のプロセッサを使用してハードウェアにおいて該命令を実行して、本開示の技術を実行してもよい。ビデオ・エンコーダ20とビデオ・デコーダ30のいずれかが、たとえば図1Bに示されるように、組み合わされたエンコーダ/デコーダ(コーデック)の一部として単一の装置内に統合されてもよい。
【0074】
源装置12および宛先装置14は、任意の種類のハンドヘルドもしくは固定装置、たとえばノートブックまたはラップトップコンピュータ、携帯電話、スマートフォン、タブレットまたはタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビ、表示装置、デジタルメディアプレーヤー、ビデオゲーム機、ビデオストリーミング装置(コンテンツサービスサーバーまたはコンテンツ送達サーバーなど)、放送受信機装置、放送送信機装置などを含む、広範囲の装置の任意のものを含むことができ、オペレーティング・システムを使用しなくてもよく、あるいは任意の種類のオペレーティング・システムを使用してもよい。場合によっては、源装置12および宛先装置14は、無線通信用のために装備されてもよい。よって、源装置12および宛先装置14は、無線通信装置であってもよい。
【0075】
場合によっては、図1Aに示されるビデオ符号化システム10は、単に例であり、本願の技術は、必ずしもエンコード装置とデコード装置との間のデータ通信を含まないビデオ符号化場面(たとえば、ビデオ・エンコードまたはビデオ・デコード)に適用されうる。他の例では、データはローカルメモリから取り出される、ネットワークを通じてストリーミングされる、などされる。ビデオ・エンコード装置は、データをエンコードし、メモリに格納することができ、および/またはビデオ・デコード装置は、メモリからデータを取り出し、デコードすることができる。いくつかの例では、エンコードおよびデコードは、互いに通信せず、単にデータをメモリにエンコードする、および/またはデータをメモリから取り出してデコードする装置によって実行される。
【0076】
記述の便宜上、本発明の実施形態は、本明細書では、たとえば、高効率ビデオ符号化(HEVC)または多用途ビデオ符号化(VVC)の参照ソフトウェア、ITU-Tビデオ符号化エキスパートグループ(VCEG)およびISO/IEC動画像エキスパートグループ(MPEG)のビデオ符号化に関する統合協働チーム(Joint Collaboration Team on Video Coding、JCT-VC)によって開発された次世代ビデオ符号化規格を参照して記載される。当業者は、本発明の実施形態がHEVCまたはVVCに限定されないことを理解するであろう。
【0077】
エンコーダおよびエンコード方法
図2は、本願の技術を実装するように構成された例示的なビデオ・エンコーダ20の概略ブロック図を示す。図2の例では、ビデオ・エンコーダ20は、入力201(または入力インターフェース201)、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループ・フィルタ・ユニット220、デコードピクチャーバッファ(decoded picture buffer、DPB)230、モード選択ユニット260、エントロピー・エンコード・ユニット270、および出力272(または出力インターフェース272)を有する。モード選択ユニット260は、インター予測ユニット244と、イントラ予測ユニット254と、パーティション分割ユニット262とを含んでいてもよい。インター予測ユニット244は、動き推定ユニットおよび動き補償ユニット(図示せず)を含んでいてもよい。図2に示されるビデオ・エンコーダ20は、ハイブリッド・ビデオ・エンコーダまたはハイブリッド・ビデオ・コーデックによるビデオ・エンコーダと称されてもよい。
【0078】
残差計算ユニット204、変換処理ユニット206、量子化ユニット208、モード選択ユニット260はエンコーダ20の順方向信号経路を形成すると称されてもよく、一方、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、バッファ216、ループ・フィルタ220、デコードピクチャーバッファ(DPB)230、インター予測ユニット244、およびイントラ予測ユニット254は、ビデオ・エンコーダ20の逆方向信号経路を形成すると称されてもよい。ビデオ・エンコーダ20の逆方向信号経路はデコーダ(図3のビデオ・デコーダ30参照)の信号経路に対応する。逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループ・フィルタ220、デコードピクチャーバッファ(DPB)230、インター予測ユニット244、およびイントラ予測ユニット254は、ビデオ・エンコーダ20の「組み込みデコーダ」をなすとも称される。
【0079】
ピクチャーおよびピクチャー・パーティション分割(ピクチャーとブロック)
エンコーダ20は、たとえば入力201を介してピクチャー17(またはピクチャー・データ17)、たとえばビデオまたはビデオ・シーケンスを形成するピクチャーのシーケンスのピクチャーを受領するように構成されてもよい。受領されたピクチャーまたはピクチャー・データは、前処理されたピクチャー19(または前処理されたピクチャー・データ19)であってもよい。簡単のため、以下の記述は、ピクチャー17を参照する。ピクチャー17はまた、現在ピクチャーまたは符号化されるべきピクチャーと称されてもよい(特に、ビデオ符号化においては、現在ピクチャーを他のピクチャー、たとえば、同じビデオ・シーケンス、すなわち現在ピクチャーをも含むビデオ・シーケンスの、以前にエンコードおよび/またはデコードされたピクチャーから区別するために)。
【0080】
(デジタル)ピクチャーは、強度値をもつサンプルの二次元アレイまたはマトリクスであるか、またはそのようなものとみなされることができる。アレイ中のサンプルは、ピクセル(ピクチャー・エレメントの短縮形)または画素と称されてもよい。アレイまたはピクチャーの水平および垂直方向(または軸)のサンプル数は、ピクチャーのサイズおよび/または解像度を定義する。色の表現のためには、典型的には、3つの色成分が使用される。すなわち、ピクチャーは、3つのサンプル・アレイで表現される、または3つのサンプル・アレイを含むことができる。RGBフォーマットまたは色空間においては、ピクチャーは、対応する赤、緑および青のサンプル・アレイを含む。しかしながら、ビデオ符号化においては、各ピクセルは、典型的には、ルミナンスおよびクロミナンス・フォーマットまたは色空間、たとえば、Yで示されるルミナンス成分(時に代わりにLが使用される)、とCbおよびCrで示される2つのクロミナンス成分を含むYCbCrで表現される。ルミナンス(または略してルーマ)成分Yは輝度またはグレーレベル強度(たとえば、グレースケール・ピクチャーにおけるような)を表わし、一方、2つのクロミナンス(または略してクロマ)成分CbおよびCrは色度または色情報成分を表わす。よって、YCbCrフォーマットのピクチャーは、ルミナンス・サンプル値(Y)のルミナンス・サンプル・アレイと、クロミナンス値(CbおよびCr)の2つのクロミナンス・サンプル・アレイとを含む。RGBフォーマットのピクチャーは、YCbCrフォーマットに変換または転換されることができ、その逆も可能である。このプロセスは色変換または転換としても知られる。ピクチャーがモノクロである場合、ピクチャーはルミナンス・サンプル・アレイのみを含んでいてもよい。したがって、ピクチャーは、たとえば、モノクロ・フォーマットのルーマ・サンプルのアレイまたは4:2:0、4:2:2、および4:4:4色フォーマットにおけるルーマ・サンプルのアレイおよびクロマ・サンプルの2つの対応するアレイでありうる。
【0081】
ビデオ・エンコーダ20の実施形態は、ピクチャー17を複数の(典型的には重複しない)ピクチャー・ブロック203にパーティション分割するように構成されたピクチャー分割ユニット(図2には示されていない)を含んでいてもよい。これらのブロックは、ルートブロック、マクロブロック(H.264/AVC)または符号化ツリー・ブロック(CTB)または符号化ツリー単位(CTU)(H.265/HEVCおよびVVC)と称されることもある。ピクチャー分割ユニットは、ビデオ・シーケンスのすべてのピクチャーについて同じブロック・サイズおよび該ブロック・サイズを定義する対応するグリッドを使用するように、あるいは、ピクチャー間、またはピクチャーのサブセットもしくはグループ間でブロック・サイズを変更し、各ピクチャーを対応するブロックに分割するように構成されてもよい。
【0082】
さらなる実施形態では、ビデオ・エンコーダは、ピクチャー17のブロック203、たとえば、ピクチャー17を形成する1つの、いくつかの、またはすべてのブロックを直接受領するように構成されてもよい。ピクチャー・ブロック203は、現在のピクチャー・ブロックまたは符号化されるべきピクチャー・ブロックと称されることもある。
【0083】
ピクチャー17と同様に、ピクチャー・ブロック203もまた、ピクチャー17よりも小さい寸法ではあるが、強度値(サンプル値)をもつサンプルの二次元アレイまたはマトリクスである、またはそのようなものとしてみなされることができる。言い換えると、ブロック203は、たとえば、1つのサンプル・アレイ(たとえば、モノクロ・ピクチャー17の場合におけるルーマ・アレイまたはカラー・ピクチャーの場合におけるルーマもしくはクロマ・アレイ)、または3つのサンプル・アレイ(たとえば、カラー・ピクチャー17の場合のルーマ・アレイおよび2つのクロマ・アレイ)、または適用される色フォーマットに依存して任意の他の数および/または種類のアレイを含むことができる。ブロック203の水平および垂直方向(または軸)におけるサンプル数は、ブロック203のサイズを定義する。よって、ブロックは、たとえば、サンプルのM×N(M列×N行)アレイ、または変換係数のM×Nアレイであってもよい。
【0084】
図2に示されるようなビデオ・エンコーダ20の実施形態は、ブロック毎にピクチャー17をエンコードするように構成されてもよく、たとえば、エンコードおよび予測はブロック203毎に実行される。
【0085】
図2に示されるようなビデオ・エンコーダ20の実施形態は、スライス(ビデオ・スライスとも称される)を使うことによってピクチャーをパーティション分割および/またはエンコードするようさらに構成されてもよい。ここで、ピクチャーは、一つまたは複数のスライス(典型的には重ならない)に分割されてもよく、かかる一つまたは複数のスライスを使ってエンコードされてもよく、各スライスは一つまたは複数のブロック(たとえばCTU)を含んでいてもよく、ブロックの一つまたは複数のグループ(たとえばタイル(H.265/HEVCおよびVVC)またはブリック(VVC))を含んでいてもよい。
【0086】
図2に示されるようなビデオ・エンコーダ20の実施形態は、スライス/タイル・グループ(ビデオ・タイル・グループとも称される)および/またはタイル(ビデオ・タイルとも称される)を使うことによってピクチャーをパーティション分割および/またはエンコードするようさらに構成されてもよい。ここで、ピクチャーは、一つまたは複数のスライス/タイル・グループ(典型的には重ならない)に分割されてもよく、かかる一つまたは複数のスライス/タイル・グループを使ってエンコードされてもよく、各スライス/タイル・グループは、たとえば一つまたは複数のブロック(たとえばCTU)または一つまたは複数のタイルを含んでいてもよく、各タイルは、たとえば、長方形の形であってもよく、一つまたは複数のブロック(たとえばCTU)、たとえば完全なまたは半端なブロックを含んでいてもよい。
【0087】
残差計算
残差計算ユニット204は、ピクチャー・ブロック203および予測ブロック265に基づいて残差ブロック205(残差205とも称される)を計算するように構成されてもよい(予測ブロック265についてのさらなる詳細は後述する)。これはたとえば、ピクチャー・ブロック203のサンプル値から予測ブロック265のサンプル値をサンプル毎に(ピクセル毎に)減算してサンプル領域における残差ブロック205を得ることによる。
【0088】
変換
変換処理ユニット206は、残差ブロック205のサンプル値に対して変換、たとえば離散コサイン変換(DCT)または離散サイン変換(DST)を適用して、変換領域における変換係数207を得るように構成されてもよい。変換係数207は、変換残差係数と称されてもよく、変換領域における残差ブロック205を表わす。
【0089】
変換処理ユニット206は、H.265/HEVCのために指定された変換など、DCT/DSTの整数近似を適用するように構成されてもよい。直交DCT変換と比較して、そのような整数近似は、典型的には、ある因子によってスケーリングされる。順変換と逆変換によって処理される残差ブロックのノルムを保存するために、変換プロセスの一部として追加的なスケーリング因子が適用される。スケーリング因子は、典型的には、スケーリング因子がシフト演算のために2の冪乗であること、変換係数のビット深さ、精度と実装コストの間のトレードオフなどのような、ある種の制約条件に基づいて選択される。具体的なスケーリング因子は、たとえば逆変換処理ユニット212による逆変換(およびたとえば、ビデオ・デコーダ30における逆変換処理ユニット312による対応する逆変換)のためにたとえば指定され、エンコーダ20におけるたとえば変換処理ユニット206による順変換のための対応するスケーリング因子が、それに応じて指定されてもよい。
【0090】
ビデオ・エンコーダ20(個別的には変換処理ユニット206)の実施形態は、変換パラメータ、たとえば単数または複数の変換のタイプを、たとえば直接、またはエントロピー・エンコード・ユニット270を介してエンコードまたは圧縮されて、出力するように構成されてもよく、それにより、たとえば、ビデオ・デコーダ30は、該変換パラメータを受領し、デコードのために使用してもよい。
【0091】
量子化
量子化ユニット208は、たとえばスカラー量子化またはベクトル量子化を適用することによって、変換係数207を量子化して、量子化された係数209を得るように構成されてもよい。量子化された係数209は、量子化された変換係数209または量子化された残差係数209と称されることもある。
【0092】
量子化プロセスは、変換係数207の一部または全部に関連するビット深さを低減することができる。たとえば、nビット変換係数は、量子化の間に、mビット変換係数に丸められてもよい。ここで、nはmより大きい。量子化の程度は、量子化パラメータ(QP)を調整することによって修正されてもよい。たとえば、スカラー量子化については、より細かいまたはより粗い量子化を達成するために異なるスケーリングが適用されてもよい。より小さな量子化ステップ・サイズはより細かい量子化に対応し、一方、より大きな量子化ステップ・サイズはより粗い量子化に対応する。適用可能な量子化ステップ・サイズは、量子化パラメータ(QP)によって示されてもよい。量子化パラメータは、たとえば、適用可能な量子化ステップ・サイズのあらかじめ定義された集合に対するインデックスであってもよい。たとえば、小さな量子化パラメータは、細かい量子化(小さな量子化ステップ・サイズ)に対応してもよく、大きな量子化パラメータは、粗い量子化(大きな量子化ステップ・サイズ)に対応してもよく、あるいはその逆でもよい。量子化は、量子化ステップ・サイズによる除算を含んでいてもよく、たとえば逆量子化ユニット210による対応する逆量子化は、量子化ステップ・サイズによる乗算を含んでいてもよい。いくつかの標準、たとえばHEVCによる実施形態は、量子化ステップ・サイズを決定するために量子化パラメータを使用するように構成されてもよい。一般に、量子化ステップ・サイズは、除算を含む式の固定小数点近似を使用して、量子化パラメータに基づいて計算されてもよい。量子化パラメータおよび量子化ステップ・サイズについての式の固定小数点近似において使用されるスケーリングのために修正されることがある残差ブロックのノルムを復元するために、量子化および脱量子化のために追加的なスケーリング因子が導入されてもよい。一つの例となる実装では、逆変換および脱量子化のスケーリングが組み合わされてもよい。あるいはまた、カスタマイズされた量子化テーブルが使用されて、たとえばビットストリームにおいて、エンコーダからデコーダへ信号伝達されてもよい。量子化は、損失のある演算であり、損失は量子化ステップ・サイズの増加とともに増加する。
【0093】
ビデオ・エンコーダ20(個別的には量子化ユニット208)の実施形態は、量子化パラメータ(QP)を、たとえば直接、またはエントロピー・エンコード・ユニット270を介してエンコードされて、出力するように構成されてもよく、それにより、たとえばビデオ・デコーダ30は、量子化パラメータを受領し、デコードのために適用することができる。
【0094】
逆量子化
逆量子化ユニット210は、たとえば、量子化ユニット208と同じ量子化ステップ・サイズに基づいて、または量子化ユニット208と同じ量子化ステップ・サイズを使用して、量子化ユニット208によって適用された量子化方式の逆を適用することによって、量子化された係数に対して量子化ユニット208の逆の量子化を適用して、脱量子化された係数211を得るように構成される。脱量子化された係数211は、脱量子化された残差係数211と称されてもよく、典型的には量子化による損失のため変換係数と同一ではないが、変換係数207に対応する。
【0095】
逆変換
逆変換処理ユニット212は、変換処理ユニット206によって適用された変換の逆変換、たとえば逆離散コサイン変換(DCT)または逆離散サイン変換(DST)または他の逆変換を適用して、サンプル領域における再構成された残差ブロック213(または対応する脱量子化された係数213)を得るように構成される。再構成された残差ブロック213は、変換ブロック213と称されることもある。
【0096】
再構成
再構成ユニット214(たとえば、加算器または総和器214)は、変換ブロック213(すなわち、再構成された残差ブロック213)を予測ブロック265に加算して、サンプル領域における再構成されたブロック215を得るように構成される。これはたとえば、再構成された残差ブロック213のサンプル値と、予測ブロック265のサンプル値とをサンプル毎に加算することによる。
【0097】
フィルタリング
ループ・フィルタ・ユニット220(または略して「ループ・フィルタ」220)は、再構成されたブロック215をフィルタリングして、フィルタリングされたブロック221を得るように、または一般には、再構成されたサンプルをフィルタリングして、フィルタリングされたサンプルを得るように構成される。ループ・フィルタ・ユニットは、たとえば、ピクセル遷移をなめらかにする、または、他の仕方でビデオ品質を改善するように構成される。ループ・フィルタ・ユニット220は、一つまたは複数のループ・フィルタ、たとえばブロッキング解除フィルタ、サンプル適応オフセット(SAO)・フィルタ、または一つまたは複数の他のフィルタ、たとえば適応ループ・フィルタ(ALF)、ノイズ抑制フィルタ(NSF)またはそれらの任意の組み合わせを含んでいてもよい。一例では、ループ・フィルタ・ユニット220は、ブロッキング解除フィルタ、SAOフィルタ、およびALFフィルタを含んでいてもよい。フィルタリング・プロセスの順序は、ブロッキング解除フィルタ、SAOおよびALFであってもよい。別の例では、クロマ・スケーリングを伴うルーマ・マッピング(luma mapping with chroma scaling、LMCS)と呼ばれるプロセス(すなわち、適応型ループ内整形器)が追加される。このプロセスは、ブロッキング解除の前に実行される。別の例では、ブロッキング解除フィルタ・プロセスはまた、内部サブブロック・エッジ、たとえば、アフィン・サブブロック・エッジ、ATMVPサブブロック・エッジ、サブブロック変換(SBT)エッジ、およびイントラ・サブパーティション(intra sub-partition、ISP)エッジに適用されてもよい。
【0098】
大きな「ブロック」について発生するブロッキング・アーチファクトを効果的に除去するために、多用途ビデオ符号化(Versatile Video Coding、VVC)は、より長いタップ・ブロッキング解除フィルタを使用する。ここで「ブロック」という用語は、非常に一般的な仕方で使用されており、「変換ブロック(TB)、予測ブロック(PB)または符号化単位(CU)」を指してもよい。ルーマ成分についての、より長いタップ・フィルタは、エッジに垂直であり隣接する各サンプル・ラインについて最大7つのサンプルを修正し、ブロッキング解除の方向においてサイズが32サンプル以上であるブロックについて適用される。すなわち、垂直エッジについては、ブロック幅が32サンプル以上であるべきであり、水平エッジについては、ブロック高さが32サンプル以上であるべきである。
【0099】
クロマ成分についての、より長いタップ・フィルタは、所与のエッジに隣接する両方のクロマ・ブロックが8サンプル以上のサイズをもつ場合に、クロマ・ブロックについて適用され、エッジのそれぞれの側で最大3サンプルを修正する。よって、垂直エッジについては、エッジに隣接する両方のクロマ・ブロックのブロック幅が8サンプル以上であるべきであり、水平エッジについては、エッジに隣接する両方のブロックのブロック高さが8サンプル以上であるべきである。
【0100】
VVC6.0におけるブロッキング解除仕様のテキストが以下に添付される。
【0101】
ブロッキング解除フィルタ・プロセス
8.8.3.1 一般
このプロセスへの入力は、ブロッキング解除の前の再構成されたピクチャー、すなわち、アレイrecPictureLならびにChromaArrayTypeが0に等しくない場合はアレイrecPictureCbおよびrecPictureCrである。
【0102】
このプロセスの出力は、ブロッキング解除後の修正された再構成されたピクチャー、すなわち、アレイrecPictureLおよびChromaArrayTypeが0に等しくない場合はアレイrecPictureCbおよびrecPictureCrである。
【0103】
ピクチャーにおける垂直エッジがまずフィルタリングされる。次いで、ピクチャーにおける水平エッジが、垂直エッジ・フィルタリング・プロセスによって修正されたサンプルを入力として用いてフィルタリングされる。各CTUの諸CTBにおける垂直エッジおよび水平エッジは、符号化単位ごとに別々に処理される。符号化単位内の諸符号化ブロックの垂直エッジは、符号化ブロックの左側のエッジから開始して、幾何学的順序で符号化ブロックの右側のほうのエッジまで、フィルタリングされる。符号化単位内の諸符号化ブロックの水平エッジは、符号化ブロックの上部のエッジから開始して、幾何学的順序で符号化ブロックの下部のほうのエッジまでフィルタリングされる。
注‐フィルタリング・プロセスは、本仕様ではピクチャーごとに指定されているが、フィルタリング・プロセスは、等価な結果をもって、符号化単位ごとに実装されることができる。同じ出力値を生成するようにデコーダが処理依存性の順序を考慮に入れればよい。
【0104】
ブロッキング解除フィルタ・プロセスは、以下のタイプのエッジを除き、ピクチャーのすべての符号化サブブロック・エッジおよび変換ブロック・エッジに適用される:
・ピクチャーの境界にあるエッジ、
・loop_filter_across_subpic_enabled_flag[SubPicIdx]が0に等しいサブピクチャーの境界と一致するエッジ、
・pps_loop_filter_across_virtual_boundaries_disabled_flagが1に等しいときの、ピクチャーの仮想境界と一致するエッジ、
・loop_filter_across_bricks_enabled_flagが0に等しいときの、ブリック境界と一致するエッジ、
・loop_filter_across_slices_enabled_flagが0に等しいときの、スライス境界と一致するエッジ、
・slice_deblocking_filter_disabled_flagが1に等しいスライスの上または左の境界と一致するエッジ、
・slice_deblocking_filter_disabled_flagが1に等しいスライス内のエッジ、
・ルーマ成分の4×4サンプル・グリッド境界に対応しないエッジ、
・クロマ成分の8×8サンプル・グリッド境界に対応しないエッジ、
・エッジの両側が1に等しい、intra_bdpcm_flagをもつルーマ成分内のエッジ、
・関連する変換単位のエッジでないクロマ・サブブロックのエッジ。
【0105】
垂直または水平のエッジ・タイプは、テーブル8-17において指定される変数edgeTypeによって表わされる。
【表1】
【0106】
現在スライスのslice_deblocking_filter_disabled_flagが0に等しい場合、下記が適用される:
・変数treeTypeがDUAL_TREE_LUMAに等しく設定される。
・垂直エッジが、8.8.3.2節で指定されているように、一方向についてブロッキング解除フィルタ・プロセスを呼び出すことによってフィルタリングされる。変数treeTypeと、ブロッキング解除前の再構成されたピクチャー、すなわちアレイrecPictureLと、EDGE_VERに等しく設定された変数edgeTypeとが入力であり、ブロッキング解除後の修正された再構成されたピクチャー、すなわちアレイrecPictureLが出力である。
・水平エッジが、8.8.3.2節で指定されているように、一方向についてブロッキング解除フィルタ・プロセスを呼び出すことによってフィルタリングされる。変数treeTypeと、ブロッキング解除後の修正された再構成されたピクチャー、すなわちアレイrecPictureLと、EDGE_HORに等しく設定された変数edgeTypeとが入力であり、ブロッキング解除後の修正された再構成されたピクチャー、すなわちアレイrecPictureLが出力である。
・ChromaArrayTypeが0に等しくない場合、下記が適用される:
・変数treeTypeがDUAL_TREE_CHROMAに等しく設定される
・垂直エッジが、8.8.3.2節に指定されているように、一方向についてブロッキング解除フィルタ・プロセスを呼び出すことによってフィルタリングされる。変数treeTypeと、ブロッキング解除前の再構成されたピクチャー、すなわちアレイrecPictureCbおよびrecPictureCrと、EDGE_VERに等しく設定された変数edgeTypeとが入力であり、ブロッキング解除後の修正された再構成されたピクチャー、すなわちアレイrecPictureCbおよびrecPictureCrが出力である。
・水平エッジが、8.8.3.2節に指定されているように、一方向についてブロッキング解除フィルタ・プロセスを呼び出すことによってフィルタリングされる。変数treeTypeと、ブロッキング解除前の修正された再構成されたピクチャー、すなわちアレイrecPictureCbおよびrecPictureCrと、EDGE_HORに等しく設定された変数edgeTypeとが入力であり、ブロッキング解除後の修正された再構成されたピクチャー、すなわちアレイrecPictureCbおよびrecPictureCrが出力である。
【0107】
8.8.3.2 一方向についてのブロッキング解除フィルタ・プロセス
このプロセスへの入力は以下の通り:
・ルーマ(DUAL_TREE_LUMA)が現在処理されているかクロマ成分(DUAL_TREE_CHROMA)が現在処理されているかどうかを指定する変数treeType、
・treeTypeがDUAL_TREE_LUMAに等しい場合、ブロッキング解除前の再構成された画像、すなわちアレイrecPictureL
・ChromaArrayTypeが0に等しくなく、treeTypeがDUAL_TREE_CHROMAに等しい場合、アレイrecPictureCbおよびrecPictureCr
・垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType。
【0108】
このプロセスの出力は、ブロッキング解除後の修正された再構成された画像であり、すなわち以下の通り:
・treeTypeがDUAL_TREE_LUMAに等しい場合、アレイrecPictureL
・ChromaArrayTypeが0に等しくなく、treeTypeがDUAL_TREE_CHROMAに等しい場合、アレイrecPictureCbおよびrecPictureCr
【0109】
変数firstCompIdxおよびlastCompIdxは次のように導出される:
firstCompIdx=(treeType==DUAL_TREE_CHROMA) ? 1:0 (8-1022)
lastCompIdx=(treeType==DUAL_TREE_LUMA || ChromaArrayType==0) ? 0:2 (8-1023)
【0110】
各符号化単位およびfirstCompIdxからlastCompIdxまで(両端含む)の範囲の色成分インデックスcIdxによって示される符号化単位の色成分毎の各符号化ブロックについて、符号化ブロック幅nCbW、符号化ブロック高さnCbHおよび符号化ブロックの左上サンプルの位置(xCb,yCb)を用いて、cIdxが0に等しい場合、またはcIdxが0に等しくなく、edgeTypeがEDGE_VERに等しく、xCb%8が0に等しい場合、またはcIdxが0に等しくなく、edgeTypeがEDGE_HORに等しく、yCb%8が0に等しい場合、エッジは以下の順序付けられたステップによってフィルタリングされる。
【0111】
1.変数filterEdgeFlagは次のように導出される:
・edgeTypeがEDGE_VERに等しく、以下の条件のうち一つまたは複数が真である場合、filterEdgeFlagは0に等しく設定される:
・現在の符号化ブロックの左境界がピクチャーの左境界である。
・現在の符号化ブロックの左境界が、サブピクチャーの左または右境界であり、loop_filter_across_subpic_enabled_flag[SubPicIdx]が0に等しい。
・現在の符号化ブロックの左境界がブリックの左境界であり、loop_filter_across_bricks_enabled_flagが0に等しい。
・現在の符号化ブロックの左境界がスライスの左境界であり、loop_filter_across_slices_enabled_flagが0に等しい。
・現在の符号化ブロックの左境界がピクチャーの垂直仮想境界の1つであり、pps_loop_filter_across_virtual_boundaries_disabled_flagが1に等しい。
・そうでない場合、edgeTypeがEDGE_HORに等しく、次の条件のうち一つまたは複数が真である場合、変数filterEdgeFlagは0に等しく設定される:
・現在のルーマ符号化ブロックの上部境界がピクチャーの上部境界である。
・現在の符号化ブロックの上部境界がサブピクチャーの上部または下部境界であり、loop_filter_across_subpic_enabled_flag[SubPicIdx]が0に等しい。
・現在の符号化ブロックの上部境界がブリックの上部境界であり、loop_filter_across_bricks_enabled_flagが0に等しい。
・現在の符号化ブロックの上部境界がスライスの上部境界であり、loop_filter_across_slices_enabled_flagが0に等しい。
・現在の符号化ブロックの上部境界がピクチャーの水平仮想境界の1つであり、pps_loop_filter_across_virtual_boundaries_disabled_flagが1に等しい。
・そうでない場合、filterEdgeFlagは1に等しく設定される。
【0112】
2.二次元(nCbW)×(nCbH)配列edgeFlags、maxFilterLengthQsおよびmaxFilterlengthPsのすべての要素は、ゼロに等しくなるように初期化される。
【0113】
3.8.8.3.3節において指定される変換ブロック境界の導出プロセスが呼び出される。位置(xCb,yCb)、符号化ブロック幅nCbW、符号化ブロック高さnCbH、変数cIdx、変数FilterEdgeFlag、アレイedgeFlags、最大フィルタ長アレイmaxFilterLengthPsおよびmaxFilterLengthQs、ならびに変数edgeTypeが入力で、修正されたアレイedgeFlags、修正された最大フィルタ長アレイmaxFilterLengthPsおよびmaxFilterLengthQsが出力とされる。
【0114】
4.cIdxが0に等しい場合、8.8.3.4節において指定される符号化サブブロック境界の導出プロセスが呼び出される。位置(xCb,yCb)、符号化ブロック幅nCbW、符号化ブロック高さnCbH、アレイedgeFlags、最大フィルタ長アレイmaxFilterLengthPsおよびmaxFilterLengthQs、および変数edgeTypeが入力で、修正されたアレイedgeFlags、修正された最大フィルタ長アレイmaxFilterLengthPsおよびmaxFilterLengthQsが出力とされる。
【0115】
5.ピクチャー・サンプル・アレイrecPictureが以下のように導出される:
・cIdxが0に等しい場合、recPictureは、ブロッキング解除前の再構成されたルーマ・ピクチャー・サンプル・アレイrecPictureLと等しく設定される。
・そうでない場合、cIdxが1に等しい場合、recPictureは、ブロッキング解除の前の再構成されたクロマ・ピクチャー・サンプル・アレイrecPictureCbに等しく設定される。
・そうでない場合(cIdxが2に等しい)、recPictureは、ブロッキング解除の前の再構成されたクロマ・ピクチャー・サンプル・アレイrecPictureCrと等しく設定される。
【0116】
6.8.8.3.5節において指定される境界フィルタリング強度の導出プロセスが呼び出される。ピクチャー・サンプル・アレイrecPicture、ルーマ位置(xCb,yCb)、符号化ブロック幅nCbW、符号化ブロック高さnCbH、変数edgeType、変数cIdx、およびアレイedgeFlagsが入力で、(nCbW)×(nCbH)アレイbSが出力とされる。
【0117】
7.8.8.3.6節において指定されるように、符号化ブロックについて、一方向についてのエッジ・フィルタリング・プロセスが呼び出される。変数edgeType、変数cIdx、ブロッキング解除の前の再構成されたピクチャーrecPicture、位置(xCb,yCb)、符号化ブロック幅nCbW、符号化ブロック高さnCbH、アレイbS、maxFilterLengthPsおよびmaxFilterLengthQsが入力で、修正された再構成されたピクチャーrecPictureが出力とされる。
【0118】
8.8.3.3 変換ブロック境界の導出プロセス
このプロセスへの入力は以下の通り:
・現在ピクチャーの左上のサンプルに対する、現在の符号化ブロックの左上のサンプルを指定する位置(xCb,yCb)
・現在の符号化ブロックの幅を指定する変数nCbW、
・現在の符号化ブロックの高さを指定する変数nCbH、
・現在の符号化ブロックの色成分を指定する変数cIdx、
・変数filterEdgeFlag、
・二次元(nCbW)×(nCbH)アレイedgeFlags、
・二次元(nCbW)×(nCbH)配列maxFilterLengthQsおよびmaxFilterLengthPs、
・垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType。
【0119】
このプロセスの出力は以下の通り:
・修正された二次元(nCbW)×(nCbH)アレイedgeFlags、
・修正された二次元(nCbW)×(nCbH)アレイmaxFilterLengthQsおよびmaxFilterLengthPs。
【0120】
edgeTypeに依存して、アレイedgeFlags、maxFilterLengthPsおよびmaxFilterLengthQsは次のように導出される:
・変数gridSizeが次のように設定される:
gridSize=cIdx==0 ? 4:8 (8-1024)
・edgeTypeがEDGE_VERに等しい場合、以下が適用される:
・変数numEdgesがMax(1,nCbW/gridSize)に等しく設定される。
・xEdge=0…numEdges-1およびy=0…nCbH-1について、以下が適用される:
・現在の符号化ブロック内の水平位置xが、xEdge*gridSizeに等しく設定される。
・edgeFlags[x][y]の値が以下のように導出される:
・pps_loop_filter_across_virtual_boundaries_disabled_flagが1に等しく、(xCb+x)が任意のn=0…pps_num_ver_virtual_boundaries-1についてPpsVirtualBoundariesPox[n]に等しい場合、edgeFlags[x][y]は0に等しく設定される。
・そうでない場合、xが0に等しい場合、edgeFlags[x][y]はfilterEdgeFlagに等しく設定される。
・そうでない場合、位置(xCb+x,yCb+y)が変換ブロック・エッジにある場合、edgeFlags[x][y]は1に等しく設定される。
・edgeFlags[x][y]が1に等しい場合、以下が適用される:
・cIdxが0に等しい場合、以下が適用される:
・maxFilterLengthQs[x][y]の値が次のように導出される:
・ルーマ位置(xCb+x,yCb+y)での変換ブロックのルーマ・サンプル単位での幅が4以下である、またはルーマ位置(xCb+x-1,yCb+y)での変換ブロックのルーマ・サンプル単位での幅が4以下である場合、maxFilterLengthQs[x][y]は1に等しく設定される。
・そうでない場合、ルーマ位置(xCb+x,yCb+y)での変換ブロックのルーマ・サンプルの幅が32以上である場合、maxFilterLengthQs[x][y]は7に等しく設定される。
・そうでない場合、maxFilterLengthQs[x][y]は3に等しく設定される。
・maxFilterLengthPs[x][y]の値が次のように導出される:
・ルーマ位置(xCb+x,yCb+y)での変換ブロックのルーマ・サンプル単位での幅が4以下である、またはルーマ位置(xCb+x-1,yCb+y)での変換ブロックのルーマ・サンプルの幅が4以下である場合、maxFilterLengthPs[x][y]は1に等しく設定される。
・そうでない場合、ルーマ位置(xCb+x-1,yCb+y)での変換ブロックのルーマ・サンプル単位での幅が32以上である場合、maxFilterLengthPs[x][y]は7に等しく設定される。
・そうでない場合、maxFilterLengthPs[x][y]は3に等しく設定される。
・そうでない場合(cIdxが0に等しくない)、maxFilterLengthPs[x][y]およびmaxFilterLengthQs[x][y]の値は次のように導出される:
・クロマ位置(xCb+x,yCb+y)およびクロマ位置(xCb+x-1,yCb+y)での変換ブロックのクロマ・サンプル単位での幅が両方とも8以上である場合、maxFilterLengthPs[x][y]およびmaxFilterLengthQs[x][y]が3に設定される。
・そうでない場合、maxFilterLengthPs[x][y]およびmaxFilterLengthQs[x][y]が1に設定される。
・そうでない場合(edgeTypeがEDGE_HORに等しい)、以下が適用される:
・変数numEdgesがMax(1,nCbH/gridSize)に等しく設定される。
・yEdge=0…numEdges-1およびx=0…nCbW-1については、以下が適用される:
・現在の符号化ブロック内の垂直位置yが、yEdge*gridSizeに等しく設定される。
・edgeFlags[x][y]の値が次のように導出される:
・pps_loop_filter_across_virtual_boundaries_disabled_flagが1に等しく、(yCb+y)が任意のn=0…pps_num_hor_virtual_boundaries-1についてPpsVirtualBoundariesPosY[n]に等しい場合、edgeFlags[x][y]が0に等しく設定される。
・そうでない場合、yが0に等しい場合、edgeFlags[x][y]はfilterEdgeFlagに等しく設定される。
・そうでない場合、位置(xCb+x,yCb+y)が変換ブロック・エッジにある場合、edgeFlags[x][y]は1に等しく設定される。
・edgeFlags[x][y]が1に等しい場合、以下が適用される:
・cIdxが0に等しい場合、以下が適用される:
・maxFilterLengthQs[x][y]の値が次のように導出される:
・ルーマ位置(xCb+x,yCb+y)での変換ブロックのルーマ・サンプル単位での高さが4以下である、またはルーマ位置(xCb+x,yCb+y-1)での変換ブロックのルーマ・サンプル単位での高さが4以下である場合、maxFilterLengthQs[x][y]は1に等しく設定される。
・そうでない場合、ルーマ位置(xCb+x,yCb+y)での変換ブロックのルーマ・サンプルの高さが32以上である場合、maxFilterLengthQs[x][y]は7に等しく設定される。
・そうでない場合、maxFilterLengthQs[x][y]は3に等しく設定される。
・maxFilterLengthPs[x][y]の値が次のように導出される:
・ルーマ位置(xCb+x,yCb+y)での変換ブロックのルーマ・サンプル単位での高さが4以下である、またはルーマ位置(xCb+x,yCb+y-1)での変換ブロックのルーマ・サンプル単位での高さが4以下である場合、maxFilterLengthPs[x][y]は1に等しく設定される。
・そうでない場合、ルーマ位置(xCb+x,yCb+y-1)での変換ブロックのルーマ・サンプル単位での高さが32以上である場合、maxFilterLengthPs[x][y]は7に設定される。
・そうでない場合、maxFilterLengthPs[x][y]は3に等しく設定される。
そうでない場合(cIdxが0に等しくない)、maxFilterLengthPs[x][y]およびmaxFilterLengthQs[x][y]の値は次のように導出される:
・以下の条件がすべて満たされている場合、maxFilterLengthPs[x][y]およびmaxFilterLengthQs[x][y]は3に等しく設定される:
・クロマ位置(xCb+x,yCb+y)およびクロマ位置(xCb+x,yCb+y-1)における変換ブロックのクロマ・サンプル単位での高さは、どちらも8以上である。
・(yCb+y)%CtbHeightCが0より大きく、つまり、水平エッジが上のクロマCTB境界と重ならない。
・そうでない場合、maxFilterLengthPs[x][y]およびmaxFilterLengthQs[x][y]が1に等しく設定される。
【0121】
8.8.3.4 符号化サブブロック境界の導出プロセス
このプロセスへの入力は以下の通り:
・現在ピクチャーの左上のサンプルに対する、現在の符号化ブロックの左上のサンプルを指定する位置(xCb,yCb)、
・現在の符号化ブロックの幅を指定する変数nCbW、
・現在の符号化ブロックの高さを指定する変数nCbH、
・二次元(nCbW)×(nCbH)アレイedgeFlags、
・二次元(nCbW)×(nCbH)アレイmaxFilterLengthQsおよびmaxFilterLengthPs、
・垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType。
【0122】
このプロセスの出力は以下の通り:
・修正された二次元(nCbW)×(nCbH)アレイedgeFlags、
・修正された二次元(nCbW)×(nCbH)アレイmaxFilterLengthQsおよびmaxFilterLengthPs。
【0123】
水平方向numSbXおよび垂直方向numSbYにおける符号化サブブロックの数は、次のように導出される:
・inter_affine_flag[xCb][yCb]が1に等しい、またはmerge_subblock_flag[xCb][yCb]が1に等しい場合、numSbXおよびnumSbYは、それぞれNumSbX[xCb][yCb]およびNumSbY[xCb][yCb]に等しく設定される。
・そうでない場合、numSbXおよびnumSbYは両方とも1に等しく設定される。
edgeTypeの値に依存して、以下が適用される:
・edgeTypeがEDGE_VERに等しい場合、以下が適用される:
・変数sbWがMax(8,nCbW/numSbX)に等しく設定される。
・アレイedgeTbFlagsがedgeFlagsに等しく設定される。
・xEdge=0…min((nCbW/8)-1,numSbX-1)、y=0…nCbH-1について:
・現在の符号化ブロック内の水平位置xがxEdge*sbWに等しく設定される。
・edgeFlags[x][y]の値は次のように導出される:
・pps_loop_filter_across_virtual_boundaries_disabled_flagが1に等しく、xが任意のn=0…pps_num_ver_virtual_boundaries-1についてPpsVirtualBoundariesPoxX[n]に等しい場合、以下が適用される:
edgeFlags[x][y]=0
edgeFlags[x][y]=0 (8-1025)
・そうでない場合、以下が適用される:
edgeFlags[x][y]=1 (8-1026)
・edgeFlags[x][y]が1に等しい場合、maxFilterLengthPs[x][y]およびmaxFilterLengthQs[x][y]の値は次のように修正される:
・xが0に等しい場合、以下が適用される:
・numSbXが1より大きい場合、以下が適用される:
maxFilterLengthQs[x][y]=Min(5,maxFilterLengthQs[x][y]) (8-1027)
・inter_affine_flag[xCb-1][yCb]が1に等しい、またはmerge_subblock_flag[xCb-1][yCb]が1に等しい場合、以下が適用される:
maxFilterLengthPs[x][y]=Min(5,maxFilterLengthPs[x][y]) (8-1028)
・そうでない場合、edgeTbFlags[x][y]が1に等しい場合、以下が適用される:
maxFilterLengthPs[x][y]=Min(5,maxFilterLengthPs[x][y]) (8-1029)
maxFilterLengthQs[x][y]=Min(5,maxFilterLengthQs[x][y]) (8-1030)
・そうでない場合、次の条件:
・(x+4)がnCbW以上である、
・edgeTbFlags[x-4][y]が1に等しい、
・edgeTbFlags[x+4][y]が1に等しい、
のうち一つまたは複数が真である場合、以下が適用される:
maxFilterLengthPs[x][y]=1 (8-1031)
maxFilterLengthQs[x][y]=1 (8-1032)
・そうでない場合、次の条件:
・xEdgeが1に等しい、
・xEdgeが(nCbW/8)-1に等しい、
・edgeTbFlags[x-sbW][y]が1に等しい、
・edgeTbFlags[x+sbW][y]が1に等しい、
のうち一つまたは複数が真である場合、以下が適用される:
maxFilterLengthPs[x][y]=2 (8-1033)
maxFilterLengthQs[x][y]=2 (8-1034)
・そうでない場合、以下が適用される:
maxFilterLengthPs[x][y]=3 (8-1035)
maxFilterLengthQs[x][y]=3 (8-1036)
・そうでなはなく、edgeTypeがEDGE_HORに等しい場合、次が適用される:
・変数sbHがMax(8,nCbH/numSbY)に等しく設定される。
・アレイedgeTbFlagsが、edgeFlagsに等しく設定される。
・yEdge=0…min((nCbH/8)-1,numSbY-1)、x=0…nCbW-1について:
・現在の符号化ブロック内の垂直位置yが、yEdge*sbHに等しく設定される。
・edgeFlags[x][y]の値は次のように導出される:
・pps_loop_filter_across_virtual_boundaries_disabled_flagが1に等しく、yが任意のn=0…pps_num_hor_virtual_boundaries-1についてPpsVirtualBoundariesPosY[n]に等しい場合、以下が適用される:
edgeFlags[x][y]=0 (8-1037)
・それ以外の場合は、以下が適用される:
edgeFlags[x][y]=1 (8-1038)
・edgeFlags[x][y]が1に等しい場合、maxFilterLengthPs[x][y]およびmaxFilterLengthQs[x][y]の値は次のように修正される:
・yが0に等しく、edgeFlags[x][y]が1に等しい場合、以下が適用される:
・numSbYが1より大きい場合、以下が適用される:
maxFilterLengthQs[x][y]=Min(5,maxFilterLengthQs[x][y]) (8-1039)
・inter_affine_flag[xCb][yCb-1]が1に等しい、またはmerge_subblock_flag[xCb][yCb-1]が1に等しい場合、以下が適用される:
maxFilterLengthPs[x][y]=Min(5,maxFilterLengthPs[x][y]) (8-1040)
・そうでない場合、edgeTbFlags[x][y]が1に等しい場合、以下が適用される:
maxFilterLengthPs[x][y]=Min(5,maxFilterLengthPs[x][y]) (8-1041)
maxFilterLengthQs[x][y]=Min(5,maxFilterLengthQs[x][y]) (8-1042)
・そうでない場合、次の条件:
・(y+4)はnCbH以上である、
・edgeTbFlags[x][y-4]は1に等しい、
・edgeTbFlags[x][y+4]が1に等しい、
のうち一つまたは複数が真である場合、以下が適用される:
maxFilterLengthPs[x][y]=1 (8-1045)
maxFilterLengthQs[x][y]=1 (8-1046)
・そうでない場合、次の条件:
・yEdgeが1に等しい、
・yEdgeが(nCbH/8)-1に等しい、
・edgeTbFlags[x][y-sbH]が1に等しい、
・edgeTbFlags[x][y+sbH]が1に等しく、
のうち一つまたは複数が真である場合、以下が適用される:
maxFilterLengthPs[x][y]=2 (8-1043)
maxFilterLengthQs[x][y]=2 (8-1044)
・そうでない場合、以下が適用される:
maxFilterLengthPs[x][y]=3 (8-1047)
maxFilterLengthQs[x][y]=3 (8-1048)
【0124】
8.8.3.5 境界フィルタリング強度の導出プロセス
このプロセスへの入力は以下の通り:
・ピクチャー・サンプル・アレイrecPicture、
・現在ピクチャーの左上のサンプルに対する、現在の符号化ブロックの左上のサンプルを指定する位置(xCb,yCb)
・現在の符号化ブロックの幅を指定する変数nCbW、
・現在の符号化ブロックの高さを指定する変数nCbH、
・垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType、
・現在の符号化ブロックの色成分を指定する変数cIdx、
・二次元(nCbW)×(nCbH)アレイのedgeFlags。
【0125】
このプロセスの出力は、境界フィルタリング強度を指定する二次元(nCbW)×(nCbH)アレイbSである。
【0126】
変数xDi、yDj、xN、yNは次のように導出される:
・変数gridSizeが次のように設定される:
gridSize=cIdx==0 ? 4:8 (8-1049)
・edgeTypeがEDGE_VERに等しい場合、
xDi=(i*gridSize) (8-1050)
yDj=cIdx==0 ? (j<<2):(j<<1) (8-1051)
xNはMax(0,(nCbW/gridSize)-1)と等しく設定される (8-1052)
yN=cIdx==0 ? (nCbH/4)-1:(nCbH/2)-1 (8-1053)
・そうでない場合(edgeTypeがEDGE_HORに等しい)、
xDi=cIdx==0 ? (i<<2):(i<<1) (8-1054)
yDj=(j*gridSize) (8-1055)
xN=cIdx==0 ? (nCbW/4)-1:(nCbW/2)-1 (8-1056)
yN=Max(0,(nCbH/gridSize)-1) (8-1057)
【0127】
i=0…xNのxDiおよびj=0…yNのyDjについて、以下が適用される:
・edgeFlags[xDi][yDj]が0に等しい場合、変数bS[xDi][yDj]は0に等しく設定される。
・そうでない場合、以下が適用される:
・サンプル値p0およびq0は次のように導出される:
・edgeTypeがEDGE_VERに等しい場合、p0はrecPicture[xCb+xDi-1][yCb+yDj]に等しく設定され、q0はrecPicture[xCb+xDi][yCb+yDj]に等しく設定される。
・そうでない場合(edgeTypeがEDGE_HORに等しい)、p0はrecPicture[xCb+xDi][yCb+yDj-1]に等しく設定され、q0はrecPicture[xCb+xDi][yCb+yDj]に等しく設定される。
・変数bS[xDi][yDj]は、次のように導出される:
・cIdxが0に等しく、サンプルp0とq0の両方がintra_bdpcm_flagが1に等しい符号化ブロック内にある場合、bS[xDi][yDj]は0に等しく設定される。
・そうでない場合、サンプルp0またはq0がイントラ予測モードで符号化された符号化単位の符号化ブロック内にある場合、bS[xDi][yDj]は2に設定される。
・そうでない場合、ブロック・エッジが変換ブロック・エッジでもあり、サンプルp0またはq0がciip_flagが1に等しい符号化ブロック内にある場合、bS[xDi][yDj]が2に等しく設定される。
・そうでない場合、ブロック・エッジが変換ブロック・エッジでもあり、サンプルp0またはq0が一つまたは複数のゼロでない変換係数レベルを含む変換ブロック内にある場合、bS[xDi][yDj]は1に等しく設定される。
・そうでない場合、ブロック・エッジが変換ブロック・エッジでもあり、cIdxが0より大きく、サンプルp0またはq0がtu_joint_cbcr_residual_flagが1に等しい変換単位内にある場合、bS[xDi][yDj]は1に等しく設定される。
・そうでない場合、サンプルp0を含む符号化サブブロックの予測モードが、サンプルq0を含む符号化サブブロックの予測モードと異なる場合(すなわち、前記符号化サブブロックの一方がIBC予測モードで符号化され、他方がインター予測モードで符号化される場合)、bS[xDi][yDj]が1に等しく設定される。
・そうでない場合、cIdxが0に等しく、次の条件のうち一つまたは複数が真である場合、bS[xDi][yDj]が1に等しく設定される:
・サンプルp0を含む符号化サブブロックおよびサンプルq0を含む符号化サブブロックが、両方ともIBC予測モードで符号化され、2つの符号化サブブロックの予測において使用されるブロック・ベクトルの水平または垂直成分の間の絶対差が、1/16ルーマ・サンプルの単位で8以上である。
・サンプルp0を含む符号化サブブロックの予測について、サンプルq0を含む符号化サブブロックの予測についてとは異なる参照ピクチャーまたは異なる数の動きベクトルが使用される。
注1-2つの符号化サブロックについて使用される参照ピクチャーが同じであるか異なるかの判定は、予測が、参照ピクチャー・リスト0へのインデックスを使用して形成されるのか、参照ピクチャー・リスト1へのインデックスを使用して形成されるのかに関係なく、また、参照ピクチャー・リスト内のインデックス位置が異なるのかに関係なく、どのピクチャーが参照されるのかにのみ基づく。
注2-左上のサンプルが(xSb,ySb)をカバーする符号化サブブロックの予測に使用される動きベクトルの数は、PredFlagL0[xSb][ySb]+PredFlagL1[xSb][ySb]に等しい。
・1つの動きベクトルがサンプルp0を含む符号化サブブロックを予測するために使われ、1つの動きベクトルがサンプルq0を含む符号化サブブロックを予測するために使われ、使用される動きベクトルの水平成分または垂直成分の間の絶対差が1/16ルーマ・サンプルの単位で8以上である。
・サンプルp0を含む符号化サブブロックを予測するために、2つの動きベクトルと2つの異なる参照ピクチャーが使用され、同じ2つの参照ピクチャーについての2つの動きベクトルが、サンプルq0を含む符号化サブブロックを予測するために使用され、同じ参照ピクチャーについての2つの符号化サブブロックの予測において使用される2つの動きベクトルの水平または垂直成分の間の絶対差は、1/16ルーマ・サンプルの単位で8以上である。
・サンプルp0を含む符号化サブブロックを予測するために同じ参照ピクチャーについての2つの動きベクトルが使用され、サンプルq0を含む符号化サブブロックを予測するために同じ参照ピクチャーについての2つの動きベクトルが使用され、以下の条件の両方が真である:
・2つの符号化サブブロックの予測において使用されるリスト0動きベクトルの水平成分または垂直成分の間の絶対差は、1/16ルーマ・サンプルの単位で8以上である、または2つの符号化サブブロックの予測において使用されるリスト1動きベクトルの水平成分または垂直成分の間の絶対差は、1/16ルーマ・サンプルの単位で8以上である。
・サンプルp0を含む符号化サブブロックの予測において使用されるリスト0動きベクトルと、サンプルq0を含む符号化サブブロックの予測において使用されるリスト1動きベクトルの水平成分または垂直成分の間の絶対差が、1/16ルーマ・サンプルの単位で8以上であるか、またはサンプルp0を含む符号化サブブロックの予測において使用されるリスト1動きベクトルと、サンプルq0を含む符号化サブブロックの予測において使用されるリスト0動きベクトルの水平成分または垂直成分の間の絶対差が、1/16ルーマ・サンプルの単位で8以上である。
・そうでない場合、変数bS[xDi][yDj]は0に設定される。
【0128】
8.8.3.6 一方向についてのエッジ・フィルタリング処理
このプロセスへの入力は以下の通り:
・垂直エッジ(EDGE_VER)が現在処理されているか水平エッジ(EDGE_HOR)が現在処理されているかを指定する変数edgeType、
・現在の色成分を指定する変数cIdx、
・ブロッキング解除の前の再構成されたピクチャーrecPicture、
・現在ピクチャーの左上のサンプルに対する、現在の符号化ブロックの左上のサンプルを指定する位置(xCb,yCb)、
・現在の符号化ブロックの幅を指定する変数nCbW、
・現在の符号化ブロックの高さを指定する変数nCbH、
・境界強度を指定するアレイbS、
・アレイmaxFilterLengthPsおよびmaxFilterLengthQs。
【0129】
このプロセスの出力は、ブロッキング解除後の修正された再構成されたピクチャーrecPictureである。
【0130】
エッジ・フィルタリング・プロセスのために、以下が適用される:
・変数gridSizeが次のように設定される:
gridSize=cIdx==0 ? 4:8 (8-1058)
・変数subW、subH、xN、yNは次のように導出される:
subW=cIdx==0 ? 1:SubWidthC (8-1059)
xN=edgeType==EDGE_VER ? Max(0,(nCbW/gridSize)-1):(nCbW/4/subW)-1
yN=edgeType==EDGE_VER ? (nCbH/4/subH)-1:Max(0,(nCbH/gridSize)-1) (8-1062)
・変数xDk(k=0…xN)および変数yDm(m=0…yN)は、次のように導出される:
xDk=edgeType==EDGE_VER ? (k*gridSize):(k<<(2/subW)) (8-1063)
yDm=edgeType==EDGE_VER ? (m<<(2/subH)):(m*gridSize) (8-1064)
・k=0…xNのxDkおよびm=0…yNのyDmについて、以下が適用される:
・bS[xDk][yDm]が0より大きい場合、以下の順序付けられたステップが適用される:
・cIdxが0に等しい場合、現在の符号化ユニットのルーマ符号化ブロックにおけるエッジについてのフィルタリング・プロセスは、以下の順序付けられたステップからなる:
1.8.8.3.6.1節において指定されているルーマ・ブロック・エッジについての決定プロセスが呼び出される。ルーマ・ピクチャー・サンプル・アレイrecPicture、ルーマ符号化ブロックの位置(xCb,yCb)、(xDk,yDm)に等しく設定されたブロック(xBl,yBl)のルーマ位置、エッジ方向edgeType、境界フィルタリング強度bS[xDk][yDm]、maxFilterLengthPs[xDk][yDm]に等しく設定されたmaxFilterLengthPおよびmaxFilterLengthQs[xDk][yDm]に等しく設定されたmaxFilterLengthQの最大フィルタ長が入力で、決定dE、dEp、dEq、修正された最大フィルタ長maxFilterLengthPおよびmaxFilterLengthQ、および変数tCが出力とされる。
2.8.8.3.6.2節において指定されているブロック・エッジのフィルタリング・プロセスが呼び出される。ルーマ・ピクチャー・サンプル・アレイrecPicture、ルーマ符号化ブロックの位置(xCb,yCb)、(xDk,yDm)に等しく設定されたブロック(xBl,yBl)のルーマ位置、エッジ方向edgeType、決定dE、dEp、dEq、最大フィルタ長maxFilterLengthPおよびmaxFilterLengthQ、および変数tCが入力で、修正されたルーマ・ピクチャー・サンプル・アレイrecPictureが出力とされる。
・そうでない場合(cIdxが0に等しくない)、cIdxによって指定された現在の符号化単位のクロマ符号化ブロックにおけるエッジについてのフィルタリング・プロセスは、以下の順序付けられたステップからなる:
1.変数cQpPicOffsetが次のように導出される:
cQpPicOffset=cIdx==1 ? pps_cb_qp_offset:pps_cr_qp_offset (8-1065)
2.8.8.3.6.3節において指定されるクロマ・ブロック・エッジについての決定プロセスが呼び出される。クロマ・ピクチャー・サンプル・アレイrecPicture、クロマ符号化ブロックの位置(xCb,yCb)、(xDk,yDm)に等しく設定されたクロマ・ブロック(xBl,yBl)の位置、エッジ方向edgeType、変数cIdx、変数cQpPicOffset、境界フィルタリング強度bS[xDk][yDm]、およびmaxFilterLengthPs[xDk][yDm]に等しく設定された変数maxFilterLengthCbCrが入力で、修正された変数maxFilterLengthCbCrおよび変数tCが出力とされる。
3.maxFilterLengthCbCrが0より大きい場合、8.8.3.6.4節において指定されたクロマ・ブロック・エッジについてのフィルタリング・プロセスが呼び出される。クロマ・ピクチャー・サンプル・アレイrecPicture、クロマ符号化ブロックの位置(xCb,yCb)、(xDk,yDm)に等しく設定されたクロマ・ブロック(xBl,yBl)のクロマ位置、エッジ方向edgeType、変数maxFilterLengthCbCr、および変数tCが入力で、修正されたクロマ・ピクチャー・サンプル・アレイrecPictureが出力とされる。
【0131】
8.8.3.6.1 ルーマ・ブロック・エッジについての決定プロセス
このプロセスへの入力は以下の通り:
・ピクチャー・サンプル・アレイrecPicture、
・現在ピクチャーの左上のサンプルに対する、現在の符号化ブロックの左上のサンプルを指定する位置(xCb,yCb)、
・現在の符号化ブロックの左上のサンプルに対する、現在ブロックの左上のサンプルを指定する位置(xBl,yBl)、
・垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType、
・境界フィルタリング強度を指定する変数bS、
・最大フィルタ長を指定する変数maxFilterLengthP、
・最大フィルタ長を指定する変数maxFilterLengthQ。
【0132】
このプロセスの出力は以下の通り:
決定を含む変数dE、dEp、dEq、
修正されたフィルタ長変数maxFilterLengthPおよびmaxFilterLengthQ、
変数tC
【0133】
i=0…maxFilterLengthP、j=0…maxFilterLengthQ、およびk=0および3でのサンプル値pi,kおよびqj,kは次のように導出される:
・edgeTypeがEDGE_VERに等しい場合、以下が適用される:
qj,k=recPictureL[xCb+xBl+j][yCb+yBl+k] (8-1066)
pi,k=recPictureL[xCb+xBl-i-1][yCb+yBl+k] (8-1067)
・そうでない場合(edgeTypeがEDGE_HORに等しい)、以下が適用される:
qj,k=recPicture[xCb+xBl+k][yCb+yBl+j] (8-1068)
pi,k=recPicture[xCb+xBl+k][yCb+yBl-i-1] (8-1069)
【0134】
変数qpOffsetは次のように導出される:
・sps_ladf_enabled_flagが1に等しい場合、以下が適用される:
・再構成されたルーマ・レベルの変数lumaLevelは、次のように導出される:
lumaLevel=((p0,0+p0,3+q0,0+q0,3)>>2) (8-1070)
・変数qpOffsetはsps_ladf_lowest_interval_qp_offsetに等しく設定され、次のように修正される:
for (i=0; i<sps_num_ladf_intervals_minus2+1; i++) {
if (lumaLevel>SpsLadfIntervalLowerBound[i+1])
qpOffset=sps_ladf_qp_offset[i] (8-1071)
else
break
}
・そうでない場合、qpOffsetは0に等しく設定される。
【0135】
変数QpQおよびQpPは、それぞれサンプルq0,0およびp0,0を含む符号化ブロックを含む符号化単位のQpY値に等しく設定される。//ここで、QpQおよびQpPはそれぞれルーマQP値を表わし、2つのルーマQP値を区別するために、請求項部ではそれぞれQpYQおよびQpYPによって表わされる。//
【0136】
変数qPは次のように導出される:
qP=((QpQ+QpP+1)>>1)+qpOffset (8-1072)
【0137】
変数β'の値は、以下のように導出される量子化パラメータQに基づいて、テーブル8-18に指定されるように決定される:
Q=Clip3(0,63,qP+(slice_beta_offset_div2<<1)) (8-1073)
ここで、slice_beta_offset_div2は、サンプルq0,0を含むスライスについてのシンタックス要素slice_beta_offset_div2の値である。
【0138】
変数βは次のように導出される:
β=β'*(1<<(BitDepthY-8)) (8-1074)
【0139】
変数tC'の値は、以下のように導出される量子化パラメータQに基づいて、テーブル8-18に指定されるように決定される:
Q=Clip3(0,65,qP+2*(bS-1)+(slice_tc_offset_div2<<1)) (8-1075)
ここで、slice_tc_offset_div2は、サンプルq0,0を含むスライスについてのシンタックス要素slice_tc_offset_div2の値である。
【0140】
変数tCは次のように導出される:
tC=BitDepthY<10 ? (tC'+2)>>(10-BitDepthY) : tC'*(1<<(BitDepthY-10)) (8-1076)
【0141】
次の順序付けられたステップが適用される:
1.変数dp0、dp3、dq0およびdq3は、次のように導出される:
dp0=Abs(p2,0-2*p1,0+p0,0) (8-1077)
dp3=Abs(p2,3-2*p1,3+p0,3) (8-1078)
dq0=Abs(q2,0-2*q1,0+q0,0) (8-1079)
dq3=Abs(q2,3-2*q1,3+q0,3) (8-1080)
2.maxFilterLengthPおよびmaxFilterLengthQの両方が3以上である場合、変数sp0、sq0、spq0、sp3、sq3、spq3は次のように導出される:
sp0=Abs(p3,0-p0,0) (8-1081)
sq0=Abs(q0,0-q3,0) (8-1082)
spq0=Abs(p0,0-q0,0) (8-1083)
sp3=Abs(p3,3-p0,3) (8-1084)
sq3=Abs(q0,3-q3,3) (8-1085)
spq3=Abs(p0,3-q0,3) (8-1086)
3.変数sidePisLargeBlkおよびsideQisLargeBlkは0に設定される。
4.maxFilterLengthPが3より大きい場合、sidePisLargeBlkは1に設定される:
5.maxFilterLengthQが3より大きい場合、sideQisLargeBlkは1に設定される:
6.edgeTypeがEDGE_HORに等しく、(yCb+yBl)%CtbSizeYが0に等しい場合、sidePisLargeBlkは0に等しく設定される。
7.変数dSam0およびdSam3は0に初期化される。
8.sidePisLargeBlkまたはsideQisLargeBlkが0より大きい場合、次が適用される:
a.以下のようにして、変数dp0L、dp3Lが導出され、maxFilterLengthPが修正される:
・sidePisLargeBlkが1に等しい場合、以下が適用される:
dp0L=(dp0+Abs(p5,0-2*p4,0+p3,0)+1)>>1 (8-1087)
dp3L=(dp3+Abs(p5,3-2*p4,3+p3,3)+1)>>1 (8-1088)
・そうでない場合、以下が適用される:
dp0L=dp0 (8-1089)
dp3L=dp3 (8-1090)
maxFilterLengthP=3 (8-1091)
b.変数dq0Lおよびdq3Lは次のように導出される:
・sideQisLargeBlkが1に等しい場合、以下が適用される:
dq0L=(dq0+Abs(q5,0-2*q4,0+q3,0)+1)>>1 (8-1092)
dq3L=(dq3+Abs(q5,3-2*q4,3+q3,3)+1)>>1 (8-1093)
・そうでない場合、以下が適用される:
dq0L=dq0 (8-1094)
dq3L=dq3 (8-1095)
c.変数dpq0L、dpq3LおよびdLは次のように導出される:
dpq0L=dp0L+dq0L (8-1096)
dpq3L=dp3L+dq3L (8-1097)
dL=dpq0L+dpq3L (8-1098)
d.dLがβより小さい場合、以下の順序付けられたステップが適用される:
i.変数dpqは2*dpq0Lに設定される。
ii.変数spはsp0に等しく設定され、変数sqはsq0に等しく設定され、変数spqはspq0に等しく設定される。
iii.変数p0 p3 qoおよびq3は、まず0に初期化され、次いで、次のようにsidePisLargeBlkおよびsideQisLargeBlkに従って修正される:
・sidePisLargeBlkが1に等しい場合、以下が適用される:
p3=p3,0 (8-1099)
p0=pmaxFilterLengthP,0 (8-1100)
・sideQisLargeBlkが1に等しい場合、以下が適用される:
q3=q3,0 (8-1101)
q0=qmaxFilterLengthQ,0 (8-1102)
iv.サンプル位置(xCb+xBl,yCb+yBl)について、8.8.3.6.5節において指定されたルーマ・サンプルについての決定プロセスが呼び出される。サンプル値p0、p3、q0、q3が呼び出される。変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β、tCを入力で、出力は、決定dSam0に割り当てられる。
v.変数dpqは2*dpq3Lに設定される。
vi.変数spはsp3に等しく設定され、変数sqはsq3に等しく設定され、変数spqはspq3に等しく設定される。
vii.変数p0 p3 q0およびq3は、まず0に初期化され、次いで以下のようにしてsidePisLargeBlkおよびsideQisLargeBlkに従って修正される:
・sidePisLargeBlkが1に等しい場合、以下が適用される:
p3=p3,3 (8-1103)
p0=pmaxFilterLengthP,3 (8-1104)
・sideQisLargeBlkが1に等しい場合、以下が適用される:
q3=q3,3 (8-1105)
q0=qmaxFilterLengthQ,3 (8-1106)
viii.サンプル位置(xCb+xBl,yCb+yBl+3)についてedgeTypeがEDGE_VERに等しい場合、またはサンプル位置(xCb+xBl+3,yCb+yBl)についてedgeTypeがEDGE_HORに等しい場合、8.8.3.6.5節において指定されているルーマ・サンプルについての決定プロセスが呼び出される。サンプル値p0、p3、q0、q3、変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β、tCが入力で、出力は、決定dSa3に割り当てられる。
9.変数dE、dEpおよびdEqは、次のように導出される:
・dSam0およびdSam3が両方とも1に等しい場合、変数dEは3に等しく設定され、dEpは1に等しく設定され、dEqは1に等しく設定される。
・それ以外の場合は、次の順序付けられたステップが適用される:
a.変数dpq0、dpq3、dp、dqおよびdは、次のように導出される:
dpq0=dp0+dq0 (8-1107)
dpq3=dp3+dq3 (8-1108)
dp=dp0+dp3 (8-1109)
dq=dq0+dq3 (8-1110)
d=dpq0+dpq3 (8-1111)
b.変数dE、dEp、dEq、sidePisLargeBlk、sideQisLargeBlkは0に設定される。
c.dがβより小さく、maxFilterLengthPおよびmaxFilterLengthQの両方が2より大きい場合、次の順序付けられたステップが適用される:
i.変数dpqは2*dpq0に等しく設定される。
ii.変数spはsp0に等しく設定され、変数sqはsq0に等しく設定され、変数spqはspq0に等しく設定される。
iii.サンプル位置(xCb+xBl,yCb+yBl)について、8.8.3.6.5節において指定されたルーマ・サンプルについての決定プロセスが呼び出される。すべて0に等しく設定された変数p0、p3、q0、q3、変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β、tCが入力で、出力は、決定dSam0に割り当てられる。
iv.変数dpqは2*dpq3に等しく設定される。
v.変数spはsp3に等しく設定され、変数sqはsq3に等しく設定され、変数spqはspq3に等しく設定される。
vi.サンプル位置(xCb+xBl,yCb+yBl+3)についてedgeTypeがEDGE_VERに等しい場合、またはサンプル位置(xCb+xBl+3,yCb+yBl)についてedgeTypeがEDGE_HORに等しい場合、8.8.3.6.5節において指定されたサンプルについての決定プロセスが呼び出される。すべて0に等しく設定された変数p0、p3、q0、q3、変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β、tCが入力で、出力は、決定dSam3に割り当てられる。
d.dがβより小さい場合、次の順序付けられたステップが適用される:
i.変数dEは1に等しく設定される。
ii.dSam0が1に等しく、dSam3が1に等しい場合、変数dEは2に設定される。
iii.maxFilterLengthPが1より大きく、maxFilterLengthQが1より大きく、dpが(β+(β>>1))>>3より小さい場合、変数dEpは1に等しく設定される。
iv.maxFilterLengthPが1より大きく、maxFilterLengthQが1より大きく、dqが(β+(β>>1))>>3より小さい場合、変数dEqは1に等しく設定される。
【0142】
【表2】
【0143】
8.8.3.6.2 ルーマ・ブロック・エッジのフィルタリング・プロセス
このプロセスへの入力は以下の通り:
・ピクチャー・サンプル・アレイrecPicture,
・現在ピクチャーの左上のサンプルに対する、現在の符号化ブロックの左上のサンプルを指定する位置(xCb,yCb)、
・現在の符号化ブロックの左上のサンプルに対する、現在ブロックの左上のサンプルを指定する位置(xBl,yBl)、
・垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType、
・決定を含む変数dE、dEp、dEq、
・最大フィルタ長を含む変数maxFilterLengthPおよびmaxFilterLengthQ、
・変数tC
【0144】
このプロセスの出力は、修正されたピクチャー・サンプル・アレイrecPictureである。
【0145】
edgeTypeの値に依存して、以下が適用される:
・edgeTypeがEDGE_VERに等しい場合、以下の順序付けられたステップが適用される:
1.i=0…maxFilterLengthP、j=0…maxFilterLengthQおよびk=0…3のサンプル値pi,kおよびq,kj は次のように導出される:
qj,k=recPictureL[xCb+xBl+j][yCb+yBl+k] (8-1112)
pi,k=recPictureL[xCb+xBl-i-1][yCb+yBl+k] (8-1113)
2.dEが0に等しくなく、dEが3に等しくない場合、各サンプル位置(xCb+xBl,yCb+yBl+k)、k=0…3について、以下の順序付けられたステップが適用される:
a.8.8.3.6.6節において指定された短いフィルタを使用するルーマ・サンプルについてのフィルタリング・プロセスは、サンプル値pi,k、q,kj (i=0…maxFilterLengthP)、(xCb+xBl-i-1,yCb+yBl+k)に等しく設定された位置(xPi,yPi)および(xCb+xBl+j,yCb+yBl+k)に等しく設定された(xQi,yQi) (j=0…maxFilterLengthQ)、決定dE、変数dEp、dEq、変数tCが入力で、ブロック境界の各側〔サイド〕からのフィルタリングされたサンプルの数nDp、nDq、およびフィルタリングされたサンプル値pi'およびqj'が出力とされる。
b.nDpが0より大きい場合、フィルタリングされたサンプル値pi'(i=0…nDp-1)が、サンプル・アレイrecPicture内の対応するサンプルを次のように置き換える:
recPicture[xCb+xBl-i-1][yCb+yBl+k]=pi' (8-1114)
c.nDqが0より大きい場合、フィルタリングされたサンプル値qj'(j=0…nDq-1)が、サンプル・アレイrecPicture内の対応するサンプルを次のように置き換える:
recPicture[xCb+xBl+j][yCb+yBl+k]=qj' (8-1115)
3.dEが3に等しい場合、各サンプル位置(xCb+xBl,yCb+yBl+k)、k=0…3について、以下の順序付けられたステップが適用される:
a.節8.8.3.6.7に指定されている長いフィルタを使用するルーマ・サンプルについてのフィルタリング・プロセスが呼び出される。サンプル値pi,k、qj,k(j=0…maxFilterLengthPおよびj=0…maxFilterLengthQ)、(xCb+xBl-i-1,yCb+yBl+k)に等しく設定された位置(xPi,yPi)(i=0…maxFilterLengthP-1)および(xCb+xBl+j,yCb+yBl+k)に等しく設定された(xQj,yQj)(j=0…maxFilterLengthQ-1)、変数maxFilterLengthP、maxFilterLengthQおよびtCが入力で、フィルタリングされたサンプル値pi'およびqj'が出力とされる。
b.i=0…maxFilterLengthP-1のフィルタリングされたサンプル値pi'は、サンプル・アレイrecPicture内の対応するサンプルを以下のように置き換える:
recPicture[xCb+xBl-i-1][yCb+yBl+k]=pi' (8-1116)
c.j=0…maxFilterLengthQ-1のフィルタリングされたサンプル値qj'は、サンプル・アレイrecPicture内の対応するサンプルを以下のように置き換える:
recPicture[xCb+xBl+j][yCb+yBl+k]=qj' (8-1117)
・そうでない場合(edgeTypeがEDGE_HORに等しい)、以下の順序付けられたステップが適用される:
1.i=0…maxFilterLengthP、j=0…maxFilterLengthQ、およびk=0…3のサンプル値pi,kq ,kj は次のように導出される:
qj,k=recPictureL[xCb+xBl+k][yCb+yBl+j] (8-1118)
pi,k=recPictureL[xCb+xBl+k][yCb+yBl-i-1] (8-1119)
2.dEが0に等しくなく、dEが3に等しくない場合、各サンプル位置(xCb+xBl+k,yCb+yBl)、k=0…3について、以下の順序付けられたステップが適用される:
a.8.8.3.6.6節において指定された短いフィルタを使用する、ルーマ・サンプルについてのフィルタリング・プロセスが呼び出される。サンプル値pi,kq ,kj (i=0…maxFilterLengthP)、(xCb+xBl+k,yCb+yBl-i-1)に等しく設定された位置(xPi,yPi)および(xCb+xBl+k,yCb+yBl+j)に等しく設定された(xQ j ,yQ j )(j=0…maxFilterLengthQ)、決定dE、変数dEpおよびdEq、変数tCが入力で、ブロック境界の各側〔サイド〕からのフィルタリングされたサンプルの数nDp、nDq、およびフィルタリングされたサンプル値pi'およびqj'が出力とされる。
b.nDpが0より大きい場合、i=0…nDp-1のフィルタリングされたサンプル値pi'は、サンプル・アレイrecPicture内の対応するサンプルを次のように置き換える:
recPicture[xCb+xBl+k][yCb+yBl-i-1]=pi' (8-1120)
c.nDqが0より大きい場合、j=0…nDq-1のフィルタリングされたサンプル値qj'は、サンプル・アレイrecPicture内の対応するサンプルを次のように置き換える:
recPicture[xCb+xBl+k][yCb+yBl+j]=qj' (8-1121)
3.dEが3に等しい場合、各サンプル位置(xCb+xBl+k,yCb+yBl)、k=0…3について、以下の順序付けられたステップが適用される:
a.8.8.3.6.7節において指定された長いフィルタを使用する、ルーマ・サンプルについてのフィルタリング・プロセスが呼び出される。サンプル値pi,k、qj,k(i=0…maxFilterLengthP、j=0…maxFilterLengthQ)、(xCb+xBl+k,yCb+yBl-i-1)に等しく設定された位置(xPi,yPi)(i=0..maxFilterLengthP-1)および(xCb+xBl+k,yCb+yBl+j)に等しく設定された(xQj,yQj)(j=0..maxFilterLengthQ-1)、変数maxFilterLengthP、maxFilterLengthQおよび変数tCが入力で、フィルタリングされたサンプル値pi'およびqj'が出力とされる。
b.i=0…maxFilterLengthP-1のフィルタリングされたサンプル値pi'は、サンプル・アレイrecPicture内の対応するサンプルを次のように置き換える:
recPicture[xCb+xBl+k][yCb+yBl-i-1]=pi' (8-1122)
c.j=0…maxFilterLengthQ-1のフィルタリングされたサンプル値qj'は、サンプル・アレイrecPicture内の対応するサンプルを次のように置き換える:
recPicture[xCb+xBl+k][yCb+yBl+j]=qj' (8-1123)
【0146】
8.8.3.6.3 クロマ・ブロック・エッジについての決定処理
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
【0147】
このプロセスへの入力は以下の通り:
・クロマ・ピクチャー・サンプル・アレイrecPicture、
・現在ピクチャーの左上のクロマ・サンプルに対する、現在のクロマ符号化ブロックの左上のサンプルを指定するクロマ位置(xCb,yCb)、
・現在のクロマ符号化ブロックの左上のサンプルに対する、現在のクロマ・ブロックの左上のサンプルを指定するクロマ位置(xBl,yBl)、
・垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType、
・色成分インデックスを指定する変数cIdx、
・ピクチャー・レベルのクロマ量子化パラメータ・オフセットを指定する変数cQpPicOffset、
・境界フィルタリング強度を指定する変数bS、
・変数maxFilterLengthCbCr。
【0148】
このプロセスの出力は以下の通り
・修正された変数maxFilterLengthCbCr、
・変数tC
【0149】
変数maxKは次のように導出される:
・edgeTypeがEDGE_VERに等しい場合、以下が適用される:
maxK=(SubHeightC==1) ? 3:1 (8-1124)
・そうでない場合(edgeTypeがEDGE_HORに等しい)、以下が適用される:
maxK=(SubWidthC==1) ? 3:1 (8-1125)
【0150】
i=0…maxFilterLengthCbCrおよびk=0…maxKでの値piおよびqiは、次のように導出される:
・edgeTypeがEDGE_VERに等しい場合、以下が適用される:
qi,k=recPicture[xCb+xBl+i][yCb+yBl+k] (8-1126)
pi,k=recPicture[xCb+xBl-i-1][yCb+yBl+k] (8-1127)
subSampleC=SubHeightC (8-1128)
・そうでない場合(edgeTypeがEDGE_HORに等しい)、以下が適用される:
qi,k=recPicture[xCb+xBl+k][yCb+yBl+i] (8-1129)
pi,k=recPicture[xCb+xBl+k][yCb+yBl-i-1] (8-1130)
subSampleC=SubWidthC (8-1131)
【0151】
変数QpQおよびQpPは、それぞれサンプルq0,0およびp0,0を含む符号化ブロックを含む符号化単位のQpY値に等しく設定される。
【0152】
変数QpCは次のように導出される:
qPi=Clip3(0,63,((QpQ+QpP+1)>>1)+cQpPicOffset) (8-1132)
QpC=ChromaQpTable[cIdx-1][qPi] (8-1133)
注-変数cQpPicOffsetは、フィルタリングされるクロマ成分がCb成分かCr成分かによって、pps_cb_qp_offsetまたはpps_cr_qp_offsetの値についての調整を提供する。しかしながら、ピクチャー内で調整量を変える必要を避けるために、フィルタリング・プロセスは、slice_cb_qp_offsetまたはslice_cr_qp_offsetの値についての調整も、(cu_chroma_qp_offset_enabled_flagが1に等しい場合)CuQpOffsetCb、CuQpOffsetCr、またはCuQpOffsetCbCrの値についての調整も含まない。
【0153】
変数β'の値は、以下のように導出される量子化パラメータQに基づいてテーブル8-18において指定されるように決定される:
Q=Clip3(0,63,QpC+(slice_beta_offset_div2<<1)) (8-1134)
ここで、slice_beta_offset_div2は、サンプルq0,0を含むスライスについてのシンタックス要素slice_beta_offset_div2の値である。
【0154】
変数βは次のように導出される:
β=β'*(1<<(BitDepthC-8)) (8-1135)
【0155】
変数tC'の値は、次のように導出されるクロマ量子化パラメータQに基づいて、テーブル8-18において指定されるように決定される:
Q=Clip3(0,65,QpC+2*(bS-1)+(slice_tc_offset_div2<<1)) (8-1136)
ここで、slice_tc_offset_div2は、サンプルq0,0を含むスライスについてのシンタックス要素slice_tc_offset_div2の値である。
【0156】
変数tCは次のように導出される:
tC=(BitDepthC<10) ? (tC'+2)>>(10-BitDepthC) : tC'*(1<<(BitDepthC-8)) (8-1137)
【0157】
maxFilterLengthCbCrが1に等しく、bSが2に等しくない場合、maxFilterLengthCbCrが0に等しく設定される。
【0158】
maxFilterLengthCbCrが3に等しい場合、次の順序付けられたステップが適用される:
1.変数n1、dpq0、dpq1、dp、dq、ddは次のように導出される:
n1=(subSampleC==2) ? 1:3 (8-1138)
dp0=Abs(p2,0-2*p1,0+p0,0) (8-1139)
dp1=Abs(p2,n1-2*p1,n1+p0,n1) (8-1140)
dq0=Abs(q2,0-2*q1,0+q0,0) (8-1141)
dq1=Abs(q2,n1-2*q1,n1+q0,n1) (8-1142)
dpq0=dp0+dq0 (8-1143)
dpq1=dp1+dq1 (8-1144)
dp=dp0+dp1 (8-1145)
dq=dq0+dq1 (8-1146)
d=dpq0+dpq1 (8-1147)
2.変数dSam0およびdSam1は両方とも0に等しく設定される。
3.dがβより小さい場合、次の順序付けられたステップが適用される:
a.変数dpqは2*dpq0に等しく設定される。
b.変数dSam0は、サンプル位置(xCb+xBl,yCb+yBl)について8.8.3.6.8節において指定されたクロマ・サンプルについての決定プロセスを呼び出すことによって導出される。サンプル値p0,0、p3,0、q0,0、q3,0、変数dpq、β、tCが入力で、出力は決定dSam0に割り当てられる。
c.変数dpqは2*dpq1に等しく設定される。
d.変数dSam1は次のように修正される:
・edgeTypeがEDGE_VERに等しい場合、サンプル位置(xCb+xBl,yCb+yBl+n1)について、8.8.3.6.8節において指定されたクロマ・サンプルについての決定プロセスが呼び出される。サンプル値p0,n1、p3,n1、q0,n1、q3,n1、変数dpq、β、tCが入力で、出力は決定dSam1に割り当てられる。
・そうでない場合(edgeTypeがEDGE_HORに等しい)、サンプル位置(xCb+xBl+n1,yCb+yBl)について、8.8.3.6.8節において指定されたクロマ・サンプルについての決定プロセスが呼び出される。サンプル値p0,n1、p3,n1、q0,n1、q3,n1、変数dpq、β、tCが入力で、出力は決定dSam1に割り当てられる。
4.変数maxFilterLengthCbCrは次のように修正される:
・dSam0が1に等しく、dSam1が1に等しい場合、maxFilterLengthCbCrは3に等しく設定される。
・そうでない場合、maxFilterLengthCbCrは1に等しく設定される。
【0159】
8.8.3.6.3節の8-1132および8-1133に示されているように、従来のアプローチでは、ルーマQP(たとえばqPi)は2つの隣接するブロックのルーマQP(たとえばQpQおよびQpP)の平均に基づいて導出され、その後、クロマQP(たとえばQpC)がルーマQP(たとえばqPi)から導出される(1つのLUTを使用)ことが留意される。本開示の実施形態は、従来のアプローチに対して改善であり、クロマ・ブロック・エッジについての決定プロセスがどのように実行されるかの詳細は、以下に説明される。
【0160】
8.8.3.6.4 クロマ・ブロック・エッジについてのフィルタリング・プロセス
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
【0161】
このプロセスへの入力は以下の通り:
・クロマ・ピクチャー・サンプル・アレイrecPicture、
・現在ピクチャーの左上のクロマ・サンプルに対する、現在のクロマ符号化ブロックの左上のサンプルを指定するクロマ位置(xCb,yCb)、
・現在のクロマ符号化ブロックの左上のサンプルに対する、現在のクロマ・ブロックの左上のサンプルを指定するクロマ位置(xBl,yBl)、
・垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType、
・最大クロマ・フィルタ長を含む変数maxFilterLengthCbCr、
・変数tC
【0162】
このプロセスの出力は、修正されたクロマ・ピクチャー・サンプル・アレイrecPictureである。
【0163】
変数maxKは次のように導出される:
・edgeTypeがEDGE_VERに等しい場合、以下が適用される:
maxK=(SubHeightC==1) ? 3:1 (8-1148)
・そうでない場合(edgeTypeがEDGE_HORに等しい)、以下が適用される:
maxK=(SubWidthC==1) ? 3:1 (8-1149)
【0164】
i=0…maxFilterLengthCbCrおよびk=0…maxKでの値piおよびqiは、次のように導出される:
・edgeTypeがEDGE_VERに等しい場合、以下が適用される:
qi,k=recPicture[xCb+xBl+i][yCb+yBl+k] (8-1150)
pi,k=recPicture[xCb+xBl-i-1][yCb+yBl+k] (8-1151)
・そうでない場合(edgeTypeがEDGE_HORに等しい)、以下が適用される:
qi,k=recPicture[xCb+xBl+k][yCb+yBl+i] (8-1152)
pi,k=recPicture[xCb+xBl+k][yCb+yBl-i-1] (8-1153)
【0165】
edgeTypeの値に依存して、以下が適用される:
・edgeTypeがEDGE_VERに等しい場合、各サンプル位置(xCb+xBl,yCb+yBl+k)、k=0…maxKについて、以下の順序付けられたステップが適用される:
1.8.8.3.6.9節において指定されているクロマ・サンプルについてのフィルタリング・プロセスが呼び出される。変数maxFilterLengthCbCr、サンプル値pi,k、qi,k(i=0…maxFilterLengthCbCr)、位置(xCb+xBl-i-1,yCb+yBl+k)および(xCb+xBl+i,yCb+yBl+k) (i=0…maxFilterLengthCbCr-1)およびtCが入力で、i=0…maxFilterLengthCbCr-1でのフィルタリングされたサンプル値pi'およびqi'とされる。
2.i=0…maxFilterLengthCbCr-1でのフィルタリングされたサンプル値pi'およびqi'は、サンプル・アレイrecPicture内の対応するサンプルを次のように置き換える:
recPicture[xCb+xBl+i][yCb+yBl+k]=qi' (8-1154)
recPicture[xCb+xBl-i-1][yCb+yBl+k]=pi' (8-1155)
・そうでない場合(edgeTypeがEDGE_HORに等しい)、各サンプル位置(xCb+xBl+k,yCb+yBl)、k=0…maxKについて、以下の順序付けられたステップが適用される:
1.8.8.3.6.9節において指定されているクロマ・サンプルについてのフィルタリング・プロセスが呼び出される。変数maxFilterLengthCbCr、サンプル値pi,k、qi,k(i=0…maxFilterLengthCbCr)、位置(xCb+xBl+k,yCb+yBl-i-1)および(xCb+xBl+k,yCb+yBl+i)、変数tCが入力で、フィルタリングされたサンプル値pi'およびqi'が出力とされる。
2.フィルタ処理されたサンプル値pi'およびqi'は、サンプル・アレイrecPicture内の対応するサンプルを次のように置き換える:
recPicture[xCb+xBl+k][yCb+yBl+i]=qi' (8-1156)
recPicture[xCb+xBl+k][yCb+yBl-i-1]=pi' (8-1157)
【0166】
閾値パラメータ(たとえば、変数tC)に基づくクロマ・ブロック・エッジについてのフィルタリング・プロセスは、VVC仕様の上記の8.8.3.6.4節のような文書に見出すことができ、以下では繰り返されないことが留意される。
【0167】
8.8.3.6.5 ルーマ・サンプルについての決定プロセス
このプロセスへの入力は以下の通り:
・サンプル値p0、p3、q0、q3
・変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β、tC
【0168】
このプロセスの出力は、決定を含む変数dSamである。
【0169】
変数spおよびsqは次のように修正される:
・sidePisLargeBlkが1に等しい場合、以下が適用される:
sp=(sp+Abs(p3-p0)+1)>>1 (8-1158)
・sideQisLargeBlkが1に等しい場合、以下が適用される:
sq=(sq+Abs(q3-q0)+1)>>1 (8-1159)
【0170】
変数sThrは次のように導出される:
・sidePisLargeBlkが1に等しい場合、またはsideQisLargeBlkが1に等しい場合、以下が適用される:
sThr=3×β>>5 (8-1160)
・そうでない場合、以下が適用される:
sThr=β>>3 (8-1161)
【0171】
変数dSamは次のように指定される:
・以下の条件がすべて真である場合、dSamは1に設定される:
・dpqが(β>>2)未満であり、
・sp+sqがsThrより小さく、
・spqが(5*tC+1)>>1より小さい。
・そうでない場合、dSamは0に等しく設定される。
【0172】
8.8.3.6.6 短いフィルタを使用したルーマ・サンプルについてのフィルタリング・プロセス
このプロセスへの入力は以下の通り:
・i=0…3でのサンプル値piおよびqi
・i=0…2でのpiおよびqiの位置(xPi,yPi)および(xQi,yQi)、
・変数dE、
・それぞれサンプルp1およびq1をフィルタリングする決定を含む変数dEpおよびdEq、
・変数tC
【0173】
このプロセスの出力は以下の通り:
・フィルタリングされたサンプルの数nDpおよびnDq、
・フィルタリングされたサンプル値pi'およびqj'(i=0…nDp-1、j=0…nDq-1)。
【0174】
dEの値に依存して、以下が適用される:
・変数dEが2に等しい場合、nDpおよびnDqは両方とも3に等しく設定され、次の強いフィルタリングが適用される:
p0'=Clip3(p0-3*tC,p0+3*tC,(p2+2*p1+2*p0+2*q0+q1+4)>>3) (8-1162)
p1'=Clip3(p1-2*tC,p1+2*tC,(p2+p1+p0+q0+2)>>2) (8-1163)
p2'=Clip3(p2-1*tC,p2+1*tC,(2*p3+3*p2+p1+p0+q0+4)>>3) (8-1164)
q0'=Clip3(q0-3*tC,q0+3*tC,(p1+2*p0+2*q0+2*q1+q2+4)>>3) (8-1165)
q1'=Clip3(q1-2*tC,q1+2*tC,(p0+q0+q1+q2+2)>>2) (8-1166)
q2'=Clip3(q2-1*tC,q2+1*tC,(p0+q0+q1+3*q2+2*q3+4)>>3) (8-1167)
・そうでない場合、nDpおよびnDqは両方とも0に設定され、次の弱いフィルタリングが適用される:
・以下が適用される:
Δ=(9*(q0-p0)-3*(q1-p1)+8)>>4 (8-1168)
・Abs(Δ)がtC*10未満である場合、以下の順序付けられたステップが適用される:
・フィルタリングされたサンプル値p0'およびq0'は、次のように指定される:
Δ=Clip3(-tC、tC、Δ) (8-1169)
p0'=Clip1Y(p0+Δ) (8-1170)
q0'=Clip1Y(q0-Δ) (8-1171)
・dEpが1に等しい場合、フィルタリングされたサンプル値p1'は次のように指定される:
Δp=Clip3(-(tC>>1),tC>>1,(((p2+p0+1)>>1)-p1+Δ)>>1) (8-1172)
p1'=Clip1Y(p1+Δp) (8-1173)
・dEqが1に等しい場合、フィルタリングされたサンプル値q1'は次のように指定される:
△q=Clip3(-(tC>>1),tC>>1,(((q2+q0+1)>>1)-q1-Δ)>>1) (8-1174)
q1'=Clip1Y(q1+Δq) (8-1175)
・nDpはdEp+1に等しく設定され、nDqはdEq+1に等しく設定される。
【0175】
nDpが0より大きく、次の条件の一つまたは複数が真である場合、nDpは0に設定される:
・サンプルp0を含む符号化ブロックを含む符号化単位のcu_transquant_bypass_flagが1に等しい。
・サンプルp0を含む符号化ブロックを含む符号化単位のpre_mode_plt_flagが1に等しい。
【0176】
nDqが0より大きく、次の条件の一つまたは複数が真である場合、nDqは0に設定される:
・サンプルq0を含む符号化ブロックを含む符号化単位のcu_transquant_bypass_flagが1に等しい。
・サンプルq0を含む符号化ブロックを含む符号化単位のpre_mode_plt_flagが1に等しい。
【0177】
8.8.3.6.7 長いフィルタを使用したルーマ・サンプルについてのフィルタリング・プロセス
このプロセスへの入力は以下の通り:
・変数maxFilterLengthPおよびmaxFilterLengthQ、
・i=0…maxFilterLengthPおよびj=0…maxFilterLengthQでのサンプル値piおよびqj
・i=0…maxFilterLengthP-1およびj=0…maxFilterLengthQ-1でのpiおよびqjの位置(xPi,yPi)および(xQj,yQj)、
・変数tC
【0178】
このプロセスの出力は以下の通り:
・i=0…maxFilterLengthP-1、j=0…maxFilterLenghtQ-1での、フィルタリングされたサンプル値pi'およびqj'。
【0179】
変数refMiddleが次のように導出される:
・maxFilterLengthPがmaxFilterLengthQに等しく、maxFilterLengthPが5に等しい場合、下記が適用される:
refMiddle=(p4+p3+2*(p2+p1+p0+q0+q1+q2)+q3+q4+8)>>4 (8-1176)
・そうでない場合、maxFilterLengthPがmaxFilterLengthQに等しく、maxFilterLengthPが5に等しくない場合、以下が適用される:
refMiddle=(p6+p5+p4+p3+p2+p1+2*(p0+q0)+q1+q2+q3+q4+q5+q6+8)>>4 (8-1177)
・そうでない場合、次の条件:
・maxFilterLengthQが7に等しく、maxFilterLengthPが5に等しい、
・maxFilterLengthQが5に等しく、maxFilterLengthPが7に等しい、
のいずれかが真である場合、以下が適用される:
refMiddle=(p4+p3+2*(p2+p1+p0+q0+q1+q2)+q3+q4+8)>>4 (8-1178)
・そうでない場合、次の条件:
・maxFilterLengthQが5に等しく、maxFilterLengthPが3に等しい、
・maxFilterLengthQが3に等しく、maxFilterLengthPが5に等しい、
のいずれかが真である場合、以下が適用される:
refMiddle=(p3+p2+p1+p0+q0+q1+q2+q3+4)>>3 (8-1179)
・そうでない場合、maxFilterLengthQが7に等しく、maxFilterLengthPが3に等しい場合、下記が適用される:
refMiddle=(2*(p2+p1+p0+q0)+p0+p1+q1+q2+q3+q4+q5+q6+8)>>4 (8-1180)
・そうでない場合、以下が適用される:
refMiddle=(p6+p5+p4+p3+p2+p1+2*(q2+q1+q0+p0)+q0+q1+8)>>4 (8-1181)
【0180】
変数refPおよびrefQは次のように導出される:
refP=(pmaxFilterLengtP+pmaxFilterLengthP-1+1)>>1 (8-1182)
refQ=(qmaxFilterLengtQ+qmaxFilterLengthQ-1+1)>>1 (8-1183)
【0181】
変数fiおよびtCPDiは次のように定義される:
・maxFilterLengthPが7に等しい場合、以下が適用される:
f0..6={59,50,41,32,23,14,5} (8-1184)
tCPD0..6={6,5,4,3,2,1,1} (8-1185)
・そうでない場合、maxFilterLengthPが5に等しい場合、以下が適用される:
f0..4={58,45,32,19,6} (8-1186)
tCPD0..4={6,5,4,3,2} (8-1187)
・そうでない場合、以下が適用される:
f0..2={53,32,11} (8-1188)
tCPD0..2={6,4,2} (8-1189)
【0182】
変数gjおよびtCQDjは次のように定義される:
・maxFilterLengthQが7に等しい場合、以下が適用される:
g0..6={59,50,41,32,23,14,5} (8-1190)
tCQD0..6={6,5,4,3,2,1,1} (8-1191)
・そうでない場合、maxFilterLengthQが5に等しい場合、以下が適用される:
g0..4={58,45,32,19,6} (8-1192)
tCQD0..4={6,5,4,3,2} (8-1193)
・そうでない場合、以下が適用される:
g0..2={53,32,11} (8-1194)
tCQD0..2={6,4,2} (8-1195)
【0183】
フィルタリングされたサンプル値pi'およびqj'(i=0…maxFilterLengthP-1およびj=0…maxFilterLengthQ-1)は、次のように導出される:
pi'=Clip3(pi-(tC*tCPDi)>>1,pi+(tC*tCPDi)>>1,(refMiddle*fi+refP*(64-fi)+32)>>6) (8-1196)
qj'=Clip3(qj-(tC*tCQDj)>>1,qj+(tC*tCQDj)>>1,(refMiddle*gj+refQ*(64-gj)+32)>>6) (8-1197)
【0184】
以下の条件のうち一つまたは複数が真である場合、i=0…maxFilterLengthP-1で、フィルタリングされたサンプル値pi'は、対応する入力サンプル値piによって置き換えられる:
・サンプルpiを含む符号化ブロックを含む符号化単位のcu_transquant_bypass_flagが1に等しい。
・サンプルpiを含む符号化ブロックを含む符号化単位のpred_mode_plt_flagが1に等しい。
【0185】
以下の条件のうち一つまたは複数が真である場合、j=0…maxFilterLengthQ-1で、フィルタリングされたサンプル値qi'は、対応する入力サンプル値qjによって置き換えられる:
・サンプルq j を含む符号化ブロックを含む符号化単位のcu_transquant_bypass_flagが1に等しい。
・サンプルq j を含む符号化ブロックを含む符号化単位のpre_mode_plt_flagが1に等しい。
【0186】
8.8.3.6.8 クロマ・サンプルについての決定プロセス
このプロセスへの入力は以下の通り:
・サンプル値p0、p3、q0、q3
・変数dpq、β、tC
【0187】
このプロセスの出力は、決定を含む変数dSamである。
【0188】
変数dSamは次のように指定される:
・以下の条件がすべて真である場合、dSamは1に等しく設定される:
・dpqが(β>>2)未満であり、
・Abs(p3-p0)+Abs(q0-q3)は(β>>3)より小さく、
・Abs(p0-q0)は(5*tC+1)>>1より小さい。
・そうでない場合、dSamは0に等しく設定される。
【0189】
//図11に示されるように、変数dSamが決定(decision)1107を含むことは、dSamが1に等しく設定される場合、決定1107の結果がYESであることを意味し、次いで、一例では、ステップ1109が実行されてもよく;dSamが0に等しく設定される場合、決定1107の結果がNOであることを意味し、次いで、一例では、ステップ1105が実行されてもよいことが留意される。//
【0190】
8.8.3.6.9 クロマ・サンプルについてのフィルタリング・プロセス
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
【0191】
このプロセスへの入力は以下の通り:
・変数maxFilterLength、
・クロマ・サンプル値piおよびqi(i=0…maxFilterLengthCbCr)、
・piおよびqiのクロマ位置(xPi,yPi)および(xQi,yQi)のクロマ位置(i=0…maxFilterLengthCbCr-1)、
・変数tC
【0192】
このプロセスの出力は、フィルタリングされたサンプル値pi'およびqi'(i=0…maxFilterLengthCbCr-1)である。
【0193】
i=0…maxFilterLengthCbCr-1でのフィルタリングされたサンプル値pi'およびqi'は以下のように導出される:
・maxFilterLengthCbCrが3に等しい場合、以下の強いフィルタリングが適用される:
p0'=Clip3(p0-tC,p0+tC,(p3+p2+p1+2*p0+q0+q1+q2+4)>>3) (8-1198)
p1'=Clip3(p1-tC,p1+tC,(2*p3+p2+2*p1+p0+q0+q1+4)>>3) (8-1199)
p2'=Clip3(p2-tC,p2+tC,(3*p3+2*p2+p1+p0+q0+4)>>3) (8-1200)
q0'=Clip3(q0-tC,q0+tC,(p2+p1+p0+2*q0+q1+q2+q3+4)>>3) (8-1201)
q1'=Clip3(q1-tC,q1+tC,(p1+p0+q0+2*q1+q2+2*q3+4)>>3) (8-1202)
q2'=Clip3(q2-tC,q2+tC,(p0+q0+q1+2*q2+3*q3+4)>>3) (8-1203)
・そうでない場合は、次の弱いフィルタリングが適用される:
Δ=Clip3(-tC,tC,((((q0-p0)<<2)+p1-q1+4)>>3)) (8-1204)
p0'=Clip1C(p0+Δ) (8-1205)
q0'=Clip1C(q0-Δ) (8-1206)
【0194】
以下の条件のうち一つまたは複数が真である場合、i=0…maxFilterLengthCbCr-1で、フィルタリングされたサンプル値pi'は、対応する入力サンプル値piによって置き換えられる:
・サンプルpiを含む符号化ブロックを含む符号化単位のcu_transquant_bypass_flagが1に等しい。
・サンプルpiを含む符号化ブロックを含む符号化単位のpred_mode_plt_flagが1に等しい。
【0195】
以下の条件のうち一つまたは複数が真である場合、i=0…maxFilterLengthCbCr-1で、フィルタリングされたサンプル値qi'は、対応する入力サンプル値qiによって置き換えられる:
・サンプルqiを含む符号化ブロックを含む符号化単位のcu_transquant_bypass_flagが1に等しい。
・サンプルqiを含む符号化ブロックを含む符号化単位のpre_mode_plt_flagが1に等しい。
【0196】
ループ・フィルタ・ユニット220は、図2ではループ内フィルタとして示されているが、他の構成では、ループ・フィルタ・ユニット220は、ループ後フィルタとして実装されてもよい。フィルタリングされたブロック221は、フィルタリングされた再構成されたブロック221と称されてもよい。
【0197】
VVC(Versatile Video Coding[多用途ビデオ符号化])は、JCCR(Joint Chroma Residual Coding[合同クロマ残差符号化])と呼ばれるツールを使用する。そのことは、フラグ「tu_joint_cbcr_residual_flag」を用いてビットストリームにおいて信号伝達される。このツールは、CbとCrの両方のクロマ成分についての残差サンプルが単一の変換ブロックとして符号化されるかどうかを指定する。フラグ「tu_joint_cbcr_residual_flag」が1に等しいことは、変換単位シンタックスが、CbとCr両方についての残差サンプルがそこから導出される単一の変換ブロックについての変換係数レベルを含むことを指定する。JCCRツールは、Cb残差とCr残差の両方が大部分、互いに逆に相関しているように見えるという事実を利用する。
【0198】
tu_joint_cbcr_residual_flag、tu_cbf_cb、tu_cbf_crに依存して、変数TuCResModeは次のように導出される。ここで、tu_cbf_cbはCb成分の符号化ブロック・フラグ(coded block flag)を指定し、tu_cbf_crはCr成分の符号化ブロック・フラグである。そして、TuCResModeはJCCRモードを示す。
・tu_joint_cbcr_residual_flagが0に等しい場合、変数TuCResModeは0に等しく設定される;
・そうでない場合、tu_cbf_cbが1に等しく、tu_cbf_crが0に等しい場合、変数TuCResModeは1に等しく設定される;
・そうでない場合、tu_cbf_cbが1に等しい場合、変数TuCResModeは2に等しく設定される;
・そうでない場合、変数TuCResModeは3に等しく設定される。
【0199】
変数tu_cbf_cbおよびtu_cbf_crに基づく「CbおよびCr残差の再構成」と変数tuCResModeとの間の関係は下の表の通りである。
【表3】
変数CSginは符号値(+1または-1)であり、これはスライスヘッダーにおいて信号伝達される。
resJointC[x][y]は、ビットストリーム中の実際の伝送される残差である。
resCb[x][y]は、クロマ成分Cbについての導出された残差サンプルを示す;
resCr[x][y]は、クロマ成分Crについての導出された残差サンプルを示す。
【0200】
本開示は、クロマ成分CbおよびCrならびに合同Cb-Cr残差のそれぞれについてのそれぞれのクロマQPマッピング・テーブルを使用することができる。シンタックス要素「same_qp_table_for_chroma」が1に等しい場合、そのことは、同じクロマQPテーブルが使用され、これら同じテーブルがCb、Cr、および合同Cb-Crの残差に適用されることを指定する。「same_qp_table_for_chroma」が0に等しい場合は、そのことは、Cb、Cr、または合同Cb-Cr残差について異なるクロマQPマッピング・テーブルが使用されることを表わす。3つのクロマ・マッピング・テーブルは、異なる形式で表わされてもよい。
【0201】
図12Aおよび12Bに示されるように、3つのサブテーブル(すなわち、インデックス値が0、1、および2に等しい行)がある。行2の内容が行0および/または行1と異なるので、シンタックス要素same_qp_table_for_chromaは0に等しいべきである。そうではなく、シンタックス要素same_qp_table_for_chromaが1に等しい場合は、行1および行2の内容は行0の内容と同じでなければならない。
【0202】
図13に示されるように、それぞれCb、Cr、および合同Cb-Cr残差のために設計された3つの別個のテーブルがある。Cb、Cr、および合同Cb-Cr残差についてのテーブルの内容が互いに異なるので、シンタックス要素same_qp_table_for_chromaは0に等しいべきである。そうではなく、シンタックス要素same_qp_table_for_chromaが1に等しい場合は、Cb、Cr、および合同Cb-Cr残差についてのテーブルの内容は同一であるべきである。
【0203】
シンタックス要素num_points_in_qp_table_minus1[i]、delta_qp_in_val_minus1[i][j]、delta_qp_out_val[i][j]が、クロマQPマッピング・テーブルを導出するためにさらに使用される。これらのシンタックス要素の意味内容およびクロマQPマッピング・テーブルを導出する手順は、以下に示される通りである:
num_points_in_qp_table_minus1[i]に1を加えたものは、i番目のクロマQPマッピング・テーブルを記述するために使用される点の数を指定する。num_points_in_qp_table_minus1[i]の値は、0~63+QpBdOffsetC(両端含む)の範囲内とする。num_points_in_qp_table_minus1[0]がビットストリームに存在しない場合、num_points_in_qp_table_minus1[0]の値は0に等しいと推定される。
delta_qp_in_val_minus1[i][j]は、i番目のクロマQPマッピング・テーブルのj番目のピボット点の入力座標を導出するために使用されるデルタ値を指定する。delta_qp_in_val_minus1[0][j]がビットストリームに存在しない場合、delta_qp_in_val_minus1[0][j]の値は0に等しいと推定される。
delta_qp_out_val[i][j]は、i番目のクロマQPマッピング・テーブルのj番目のピボット点の出力座標を導出するために使用されるデルタ値を指定する。delta_qp_out_val[0][j]がビットストリームに存在しない場合、delta_qp_out_val[0][j]の値は0に等しいと推定される。
【0204】
本開示において、第1のクロマQPマッピング・テーブル、第2のクロマQPマッピング・テーブル、および第3のクロマQPマッピング・テーブルの導出をどうするかに関する例についての詳細は、以下に記載されることが留意される。
【0205】
i=0…same_qp_table_for_chroma ? 0:2について、i番目のクロマQPマッピング・テーブルChromaQpTable[i]は次のように導出される:
【表4】
【0206】
same_qp_table_for_chromaが1に等しい場合、ChromaQpTable[1][k]とChromaQpTable[2][k]は、k=-QpBdOffsetC…63について、ChromaQpTable[0][k]に等しく設定される。
【0207】
qpInVal[i][j]およびqpOutVal[i][j]の値が、i=0…same_qp_table_for_chroma ? 0:2およびj=0…num_points_in_qp_table_minus1[i]について-QpBdOffsetCから63(両端含む)の範囲であることは、ビットストリーム適合性の要件である。
【0208】
クロマQPマッピング・テーブルは、ルーマQP値(QPi)と色成分値(cIdx)を入力に取り、対応するクロマQp値(QPc)を出力に取る簡単な公式を使用することによっても表現できることに留意されたい。その公式は、ルーマQPとクロマQPの間の線形関係を描いてもよい。たとえば、その公式は次のようなものであってもよい:
QPc=QPi-x
ここで、xは色成分値(cIdx)に依存する定数であり、xは合同Cb-Cr成分を含む異なる色成分インデックスについて異なる値を取ることができる。
【0209】
ビデオ・エンコーダ20(個別的にはループ・フィルタ・ユニット220)の実施形態は、ループ・フィルタ・パラメータ(SAOフィルタ・パラメータまたはALFフィルタ・パラメータまたはLMCSパラメータなど)をたとえば直接、またはエントロピー・エンコード・ユニット270を介してエンコードされて、出力するように構成されてもよく、それにより、たとえば、デコーダ30は、同じループ・フィルタ・パラメータまたはそれぞれのループ・フィルタを受領し、デコードのために適用することができる。
【0210】
デコードピクチャーバッファ
デコードピクチャーバッファ(DPB)230は、ビデオ・エンコーダ20によってビデオ・データをエンコードするために、参照ピクチャーまたは一般には参照ピクチャー・データを記憶するメモリであってもよい。DPB 230は、同期DRAM(SDRAM)を含む動的ランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリ・デバイスといった多様なメモリ・デバイスのいずれかによって形成されうる。デコードピクチャーバッファ(DPB)230は、一つまたは複数のフィルタリングされたブロック221を格納するように構成されてもよい。デコードピクチャーバッファ230は、さらに、同じ現在ピクチャーのまたは異なるピクチャー、たとえば以前に再構成されたピクチャーの、他の以前にフィルタリングされたブロック、たとえば、以前に再構成され、フィルタリングされたブロック221を記憶するように構成されてもよく、完全な以前に再構成された、すなわちデコードされたピクチャー(および対応する参照ブロックおよびサンプル)および/または部分的に再構成された現在ピクチャー(および対応する参照ブロックおよびサンプル)を、たとえばインター予測のために提供してもよい。デコードピクチャーバッファ(DPB)230は、たとえば再構成されたブロック215がループ・フィルタ・ユニット220によってフィルタリングされない場合には一つまたは複数のフィルタリングされていない再構成されたブロック215、または一般にはフィルタリングされていない再構成されたサンプルを、あるいは再構成されたブロックまたはサンプルの任意の他のさらに処理されたバージョンを、記憶するように構成されてもよい。
【0211】
モード選択(分割および予測)
モード選択ユニット260は、分割ユニット262と、インター予測ユニット244と、イントラ予測ユニット254とを有し、もとのピクチャー・データ、たとえばもとのブロック203(現在ピクチャー17の現在ブロック203)と、たとえばデコードピクチャーバッファ230または他のバッファ(たとえば、ラインバッファ、図示せず)からの、同じ(現在)ピクチャーのおよび/または、一つもしくは複数の以前にデコードされたピクチャーからの再構成されたピクチャー・データ、たとえばフィルタリングされたおよび/またはフィルタリングされていない再構成されたサンプルまたはブロックとを受領または取得するよう構成される。再構成されたピクチャー・データは、予測ブロック265または予測子265を得るために、予測、たとえばインター予測またはイントラ予測のための参照ピクチャー・データとして使用される。
【0212】
モード選択ユニット260は、現在のブロック予測モードについての分割(分割なしを含む)および予測モード(たとえば、イントラまたはインター予測モード)を決定または選択し、残差ブロック205の計算および再構成ブロック215の再構成ために使用される対応する予測ブロック265を生成するように構成されてもよい。
【0213】
モード選択ユニット260の実施形態は、分割および予測モードを(たとえば、モード選択ユニット260にサポートされる、またはモード選択ユニット260に利用可能なものから)選択するように構成されてもよく、選択されるのは、最良のマッチ、すなわち、最小の残差(最小の残差は、伝送または記憶のためのよりよい圧縮を意味する)または最小の信号伝達オーバーヘッド(最小の信号伝達オーバーヘッドは、伝送または記憶のためのよりよい圧縮を意味する)を提供する、または両方を考慮またはバランスさせるものである。モード選択ユニット260は、レート歪み最適化(RDO)に基づいて分割および予測モードを決定する、つまり、最小レート歪みを提供する予測モードを選択するように構成されてもよい。この文脈における「最良」、「最小」、「最適」などのような用語は、必ずしも全体的な「最良」、「最小」、「最適」などを指すのではなく、終了、または値が閾値を超えるまたは下回るのような選択基準、または潜在的には「最適ではない選択」につながるが複雑さと処理時間を低減する他の制約条件の達成を指すこともある。
【0214】
換言すれば、分割ユニット262は、ビデオ・シーケンスからのピクチャーを符号化ツリー単位(CTU)のシーケンスにパーティション分割してもよく、該CTU 203はさらに、たとえば四分木分割(QT)、二分分割(BT)もしくは三分木分割(TT)またはそれらの任意の組み合わせを逐次反復的に使用して、より小さなブロック・パーティションまたはサブブロック(これもやはりブロックをなす)にパーティション分割されてもよい。たとえば、ブロック・パーティションまたはサブブロックのそれぞれについて予測を実行するように構成されてもよい。ここで、モード選択は、分割されたブロック203の木構造の選択を含み、予測モードは、ブロック・パーティションまたはサブブロックのそれぞれに適用される。
【0215】
以下では、例示的なビデオ・エンコーダ20によって実行される分割(たとえば分割ユニット260による)および予測処理(インター予測ユニット244およびイントラ予測ユニット254による)について、より詳細に説明する。
【0216】
パーティション分割
分割ユニット262は、ビデオ・シーケンスからのピクチャーを符号化ツリー単位(CTU)のシーケンスにパーティション分割するように構成されてもよく、分割ユニット262は符号化ツリー単位(CTU)203を、より小さなパーティション、たとえば正方形または長方形のサイズのより小さなブロックにパーティション分割(または分割)してもよい。3つのサンプル・アレイをもつピクチャーについては、CTUはルーマ・サンプルのN×Nブロックと、クロマ・サンプルの2つの対応するブロックとからなる。CTUにおけるルーマ・ブロックの最大許容サイズは開発中の多用途ビデオ符号化(VVC)においては128×128であると指定されているが、将来は128×128以外の値、たとえば256×256に指定されることがありうる。ピクチャーのCTUは、スライス/タイル・グループ、タイルまたはブリックとしてクラスタリング/グループ化されてもよい。タイルは、ピクチャーの長方形領域をカバーし、タイルは一つまたは複数のブリックに分割できる。ブリックはタイル内のいくつかのCTU行からなる。複数のブリックに分割されないタイルはブリックと称されることができる。しかしながら、ブリックはタイルの真部分集合であり、タイルとは称されない。VVCでサポートされるタイル・グループの2つのモードがある、つまり、ラスタ走査スライス/タイル・グループ・モードおよび長方形スライス・モードである。ラスタ走査タイル・グループ・モードでは、スライス/タイル・グループは、ピクチャーのタイル・ラスタ走査におけるタイルのシーケンスを含む。長方形スライス・モードでは、スライスは、まとまってピクチャーの長方形領域を形成するピクチャーのいくつかのブリックを含む。長方形スライス内のブリックは、そのスライスのブリック・ラスタ走査の順である。これらのより小さなブロック(サブブロックとも呼ばれうる)は、さらに、より一層小さなパーティションに分割されてもよい。これは、ツリー分割または階層ツリー分割とも呼ばれ、たとえばルートツリーレベル0(階層レベル0、深さ0)におけるルートブロックが再帰的に分割されてもよく、たとえば次の、より低いツリーレベルの2つ以上のブロック、たとえばツリーレベル1(階層レベル1、深さ1)におけるノードに分割されてもよく、これらのブロックは再び次の、より低いレベル、たとえばツリーレベル2(階層レベル2、深さ2)の2つ以上のブロックに分割されてもよい、などと、たとえば最大ツリー深さまたは最小ブロック・サイズに達するなど終了基準が満たされために分割が打ち切られるまで続く。それ以上分割されないブロックは、ツリーのリーフブロックまたはリーフ・ノードとも呼ばれる。2つのパーティションへの分割を使用するツリーは二分木(BT)と呼ばれ、3つのパーティションへの分割を使用するツリーは三分木(TT)と呼ばれ、4つのパーティションへの分割を使用するツリーは四分木(QT)と呼ばれる。
【0217】
たとえば、符号化ツリー単位(CTU)は、3つのサンプル・アレイを有するピクチャーのルーマ・サンプルのCTB、クロマ・サンプルの2つの対応するCTB、または、モノクロ・ピクチャーまたはサンプルを符号化するために使用される3つの別個の色平面およびシンタックス構造を使用して符号化されるピクチャーのサンプルのCTBであってもよく、または、これらを含んでいてもよい。対応して、符号化ツリー・ブロック(CTB)は、ある成分のCTBへの分割がパーティション分割であるように、Nの何らかの値についてのサンプルのN×Nブロックであってもよい。符号化単位(CU)は、3つのサンプル・アレイを有するピクチャーのルーマ・サンプルの符号化ブロック、クロマ・サンプルの2つの対応する符号化ブロック、または、モノクロ・ピクチャーまたはサンプルを符号化するために使用される3つの別個の色平面およびシンタックス構造を使用して符号化されるピクチャーのサンプルの符号化ブロックであってもよく、または、これらを含んでいてもよい。対応して、符号化ブロック(CB)は、CTBの符号化ブロックへの分割がパーティション分割であるように、MおよびNの何らかの値についてのサンプルのM×Nブロックであってもよい。
【0218】
実施形態において、たとえばHEVCによれば、符号化ツリー単位(CTU)は、符号化ツリーと記される四分木構造を使用することによって、CUに分割されてもよい。ピクチャー間(時間的)またはピクチャー内(空間的)予測を使用してピクチャー領域を符号化するかどうかの決定は、リーフCUレベルで行なわれる。各リーフCUはさらに、PU分割タイプに応じて、1つ、2つ、または4つのPUに分割できる。1つのPU内では、同じ予測プロセスが適用され、関連情報はPUごとにデコーダに伝送される。PU分割タイプに基づく予測プロセスを適用することによって残差ブロックを得た後、リーフCUは、該CUについての符号化ツリーと同様の別の四分木構造に従って変換単位(TU)に分割できる。
【0219】
実施形態において、たとえば多用途ビデオ符号化(VVC)と称される現在開発中の最新のビデオ符号化標準によれば、二分および三分セグメンテーション構造を使用する複合四分木ネスト式マルチタイプ・ツリーが、たとえば符号化ツリー単位をパーティション分割するために使用される。符号化ツリー単位内の符号化ツリー構造において、CUは正方形または長方形のいずれかの形をとることができる。たとえば、符号化ツリー単位(CTU)は、まず四分木によって分割される。次いで、四分木ツリー・リーフ・ノードは、マルチタイプ・ツリー構造によってさらに分割できる。マルチタイプ・ツリー構造には、垂直二分法(SPLIT_BT_VER)、水平二分法(SPLIT_BT_HOR)、垂直三分法(SPLIT_TT_VER)、および水平三分法(SPLIT_TT_HOR)の4つの分割タイプがある。マルチタイプ・ツリー・リーフ・ノードは、符号化単位(CU)と呼ばれ、該CUが最大変換長に対して大きすぎない限り、さらなる分割なしでこのセグメンテーションが予測および変換処理のために使用される。これは、ほとんどの場合、CU、PU、およびTUは、ネストされたマルチタイプ・ツリー符号化ブロック構造をもつ四分木における同じブロック・サイズをもつことを意味する。例外は、最大のサポートされる変換長がCUの色成分の幅または高さよりも小さい場合に生じる。VVCは、ネストされたマルチタイプ・ツリー符号化ツリー構造をもつ四分木におけるパーティション分割情報の独特な信号伝達機構を開発する。信号伝達機構では、符号化ツリー単位(CTU)は四分木のルートとして扱われ、まず四次木構造によってパーティション分割される。各四分木リーフ・ノードは(それを許容するのに十分に大きい場合)、次いで、マルチタイプ・ツリー構造によってさらにパーティション分割される。マルチタイプ・ツリー構造では、第1のフラグ(mtt_split_cu_flag)が、ノードがさらにパーティション分割されるかどうかを示すために信号伝達され、ノードがさらにパーティション分割される場合、第2のフラグ(mtt_split_cu_vertical_flag)が、分割方向を示すために信号伝達され、第3のフラグ(mtt_split_cu_binary_flag)は、分割が二分割であるか、三分割であるかを示すために信号伝達される。mtt_split_cu_vertical_flagおよびmtt_split_cu_binary_flagの値に基づいて、CUのマルチタイプ・ツリー分割モード(MttSplitMode)は、あらかじめ定義された規則またはテーブルに基づいて、デコーダによって導出されることができる。ある種の設計、たとえば、VVCハードウェア・デコーダにおける64×64ルーマ・ブロックおよび32×32クロマ・パイプライン設計については、図6に示されるように、ルーマ符号化ブロックの幅または高さのいずれかが64を超える場合はTT分割が禁止される。クロマ符号化ブロックの幅または高さのいずれかが32より大きい場合にもTT分割は禁止される。パイプライン設計は、ピクチャーを、ピクチャー内の重複しない単位として定義される仮想パイプライン・データ単位(Virtual pipeline data unit、VPDU)に分割する。ハードウェア・デコーダでは、一連のVPDUが、複数のパイプライン段によって同時に処理される。VPDUサイズはほとんどのパイプライン段においてバッファ・サイズにほぼ比例するため、VPDUサイズを小さく保つことが重要である。ほとんどのハードウェア・デコーダでは、VPDUサイズは最大変換ブロック(TB)サイズに設定できる。しかしながら、VVCでは、三分木(TT)と二分木(BT)パーティションはVPDUのサイズの増加をもたらす可能性がある。
【0220】
さらに、ツリー・ノード・ブロックの一部が下または右のピクチャー境界を超える場合、ツリー・ノード・ブロックは、すべての符号化されたCUのすべてのサンプルがピクチャー境界内に位置するまで、強制的に分割されることに留意しておくべきである。
【0221】
一例として、イントラ・サブパーティション(ISP)ツールは、ブロック・サイズに依存して、ルーマ・イントラ予測ブロックを、垂直方向または水平方向に2つまたは4つのサブパーティションに分割することができる。
【0222】
一例では、ビデオ・エンコーダ20のモード選択ユニット260は、本明細書に記載される分割技法の任意の組み合わせを実行するように構成されうる。
【0223】
上述のように、ビデオ・エンコーダ20は、(たとえばあらかじめ決定された)予測モードの集合から最良または最適な予測モードを決定または選択するように構成される。予測モードの集合は、たとえば、イントラ予測モードおよび/またはインター予測モードを含んでいてもよい。
【0224】
イントラ予測
イントラ予測モードの集合は、たとえばHEVCで定義されているように、35の異なるイントラ予測モード、たとえばDC(または平均)モードおよび平面モードのような非方向性モードまたは方向性モードを含んでいてもよく、または、たとえばVVCで定義されているように、67の異なるイントラ予測モード、たとえばDC(または平均)モードおよび平面モードのような非方向性モード、または、方向性モードを含んでいてもよい。一例として、いくつかの従来の角度イントラ予測モードは、たとえばVVCにおいて定義されるように、非正方形ブロックについて、広角イントラ予測モードで適応的に置き換えられる。もう一つの例として、DC予測のための除算演算を避けるために、非正方形ブロックについての平均を計算するために、長いほうの辺のみが使用される。平面モードのイントラ予測の結果は、位置依存イントラ予測組み合わせ(position dependent intra prediction combination、PDPC)法によってさらに修正されてもよい。
【0225】
イントラ予測ユニット254は、イントラ予測モードの集合のうちのあるイントラ予測モードに従ってイントラ予測ブロック265を生成するために、同じ現在のピクチャーの近傍ブロックの再構成されたサンプルを使用するように構成される。
【0226】
イントラ予測ユニット254(または、一般に、モード選択ユニット260)は、イントラ予測パラメータ(または、一般に、そのブロックについての選択されたイントラ予測モードを示す情報)を、エンコードされたピクチャー・データ21に含めるために、シンタックス要素266の形でエントロピー・エンコード・ユニット270に対して出力するようにさらに構成される。それにより、たとえば、ビデオ・デコーダ30は、予測パラメータを受領し、デコードのために使用することができる。
【0227】
インター予測
インター予測モードの集合(または可能なインター予測モード)は、利用可能な参照ピクチャー(すなわち、たとえばDPB 230に記憶されている、以前の少なくとも部分的にデコードされたピクチャー)および他のインター予測パラメータに依存する。該他のインター予測パラメータは、たとえば、最良マッチの参照ブロックを探すために参照ピクチャーの全体が使用されるか、または参照ピクチャーの一部のみ、たとえば、現在ブロックの当該領域のまわりの探索窓領域が、使用されるか、および/または、たとえば、ピクセル補間、たとえば、半分/セミ画素および/または1/4および/または1/16画素補間が適用される否かである。
【0228】
上記の予測モードに加えて、スキップモードおよび/またはインター予測モードが適用されてもよい。
【0229】
たとえば、拡張マージ予測。そのようなモードのマージ候補リストは、次の5タイプの候補を順に含めていくことによって構築される:空間的近傍CUからの空間的MVP、共位置のCUからの時間的MVP、FIFOテーブルからの履歴ベースMVP、対平均MVPおよびゼロMV。また、マージモードのMVの精度を高めるために、バイラテラルマッチング・ベースのデコーダ側動きベクトル洗練(decoder side motion vector refinement、DMVR)が適用されてもよい。MVDを用いたマージモード(Merge mode with MVD、MMVD)。これは、動きベクトルの差分(motion vector differences)を用いたマージモードに由来する。スキップ・フラグおよびマージ・フラグを送信した直後にMMVDフラグが信号伝達され、CUのためにMMVDモードが使用されるかどうかを指定する。そして、CUレベルの適応動きベクトル分解(adaptive motion vector resolution、AMVR)方式が適用されてもよい。AMVRは、CUのMVDが、異なる精度で符号化することを許容する。現在のCUについての予測モードに依存して、現在のCUのMVDが適応的に選択されることができる。CUがマージモードで符号化されるとき、組み合わされたインター/イントラ予測(combined inter/intra prediction、CIIP)モードが現在のCUに適用されてもよい。CIIP予測を得るためには、インター予測信号およびイントラ予測信号の加重平均が実行される。アフィン動き補償された予測。ブロックのアフィン動きフィールドは、2つの制御点(4パラメータ)または3つの制御点の動きベクトル(6パラメータ)の動き情報によって記述される。サブブロック・ベースの時間的動きベクトル予測(subblock-based temporal motion vector prediction、SbTMVP)。これは、HEVCにおける時間的動きベクトル予測(temporal motion vector prediction、TMVP)に類似しているが、現在のCU内のサブCUの動きベクトルを予測する。以前はBIOと呼ばれていた双方向オプティカルフロー(Bi-directional optical flow、BDOF)は、特に乗算回数および乗算器のサイズの点ではるかに少ない計算を要求する、より単純なバージョンである。三角分割モードでは、対角分割または反対角分割のいずれかを使用して、CUが二つの三角形パーティションに均等に分割される。加えて、双予測(bi-prediction)モードは、2つの予測信号の重み付け平均を許容するために、単純平均を越えて拡張された。
【0230】
インター予測ユニット244は、動き推定(ME)ユニットおよび動き補償(MC)ユニットを含んでいてもよい(いずれも図2には示されていない)。動き推定ユニットは、ピクチャー・ブロック203(現在ピクチャー17の現在ピクチャー・ブロック203)およびデコードされたピクチャー231、または少なくとも一つまたは複数の以前に再構成されたブロック、たとえば、一つまたは複数の他の/異なる以前にデコードされたピクチャー231の再構成されたブロックを動き推定のために受領または取得するように構成されてもよい。たとえば、ビデオ・シーケンスは、現在ピクチャーと以前にデコードされたピクチャー231とを含んでいてもよく、あるいは、換言すれば、現在ピクチャーと以前にデコードされたピクチャー231は、ビデオ・シーケンスを形成するピクチャーのシーケンスの一部であってもよく、または該シーケンスを形成してもよい。
【0231】
エンコーダ20は、たとえば、複数の他のピクチャーのうちの同じまたは異なるピクチャーの複数の参照ブロックから参照ブロックを選択し、参照ピクチャー(または参照ピクチャー・インデックス)および/または参照ブロックの位置(x、y座標)と現在のブロックの位置との間のオフセット(空間オフセット)を、動き推定ユニットへのインター予測パラメータとして提供するように構成されてもよい。このオフセットは動きベクトル(MV)とも呼ばれる。
【0232】
動き補償ユニットは、たとえば、インター予測パラメータを取得、たとえば受領して、該インター予測パラメータに基づいて、または、該インター予測パラメータを用いて、インター予測を実行して、インター予測ブロック265を得るように構成される。動き補償ユニットによって実行される動き補償は、動き推定によって決定された動き/ブロック・ベクトルに基づいて、可能性としてはサブピクセル精度への補間を実行して、予測ブロックを取ってくるまたは生成することを含んでもよい。補間フィルタリングが、既知のピクセル・サンプルから追加的なピクセル・サンプルを生成してもよく、よって、潜在的には、ピクチャー・ブロックを符号化するために使用されうる候補予測ブロックの数を増加させる。現在ピクチャー・ブロックのPUについての動きベクトルを受領すると、動き補償ユニットは、参照ピクチャー・リストのうちの1つのリストにおいて動きベクトルがポイントする予測ブロックを位置特定することができる。
【0233】
動き補償ユニットはまた、ビデオ・スライスのピクチャー・ブロックをデコードする際にビデオ・デコーダ30が使用するために、ブロックおよびビデオ・スライスに関連するシンタックス要素を生成してもよい。スライスおよびそれぞれのシンタックス要素に加えて、またはその代わりとして、タイル・グループおよび/またはタイルおよびそれぞれのシンタックス要素が生成または使用されてもよい。
【0234】
エントロピー符号化
エントロピー・エンコード・ユニット270は、たとえば、エントロピー・エンコード・アルゴリズムまたは方式(たとえば、可変長符号化(VLC)方式、コンテキスト適応VLC方式(CAVLC)、算術符号化方式、バイナリー化、コンテキスト適応バイナリー算術符号化(CABAC)、シンタックスベースのコンテキスト適応バイナリー算術符号化(SBAC)、確率区間分割エントロピー(PIPE)符号化、または他のエントロピー・エンコード方法または技術)またはバイパス(非圧縮)を、量子化された係数209、インター予測パラメータ、イントラ予測パラメータ、ループ・フィルタ・パラメータおよび/または他のシンタックス要素に対して適用して、エンコードされたピクチャー・データ21を得るように構成される。エンコードされたピクチャー・データ21はたとえばエンコードされたビットストリーム21の形で、出力272を介して出力でき、それにより、たとえば、ビデオ・デコーダ30はそれらのパラメータを受領し、デコードのために使用することができる。エンコードされたビットストリーム21は、ビデオ・デコーダ30に送信されてもよいし、または後の送信またはビデオ・デコーダ30による取得のためにメモリに記憶されてもよい。
【0235】
ビデオ・ストリームをエンコードするために、ビデオ・エンコーダ20の他の構造的変形が使用できる。たとえば、非変換ベースのエンコーダ20は、ある種のブロックまたはフレームについて、変換処理ユニット206なしで直接、残差信号を量子化することができる。別の実装では、エンコーダ20は、量子化ユニット208と逆量子化ユニット210とを単一のユニットに組み合わせたものを有することができる。
【0236】
デコーダおよびデコード方法
図3は、本願の技術を実装するように構成されたビデオ・デコーダ30の例を示す。ビデオ・デコーダ30は、デコードされたピクチャー331を得るために、たとえばエンコーダ20によってエンコードされた、エンコードされたピクチャー・データ21(たとえばエンコードされたビットストリーム21)を受領するように構成される。エンコードされたピクチャー・データまたはビットストリームは、エンコードされたピクチャー・データをデコードするための情報、たとえば、エンコードされたビデオ・スライスのピクチャー・ブロック(および/またはタイル・グループまたはタイル)および関連するシンタックス要素を表わすデータを含む。
【0237】
図3の例では、デコーダ30は、エントロピー・デコード・ユニット304と、逆量子化ユニット310と、逆変換処理ユニット312と、再構成ユニット314(たとえば、加算器314)と、ループ・フィルタ・ユニット320と、デコードピクチャーバッファ(DPB)330と、モード適用ユニット360と、インター予測ユニット344と、イントラ予測ユニット354とを含む。インター予測ユニット344は、動き補償ユニットであってもよいし、またはこれを含んでいてもよい。ビデオ・デコーダ30は、いくつかの例では、図2からのビデオ・エンコーダ100に関して記述されたエンコード・パスと概して逆のデコード・パスを実行することができる。
【0238】
エンコーダ20に関して説明したように、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループ・フィルタ・ユニット220、デコードピクチャーバッファ(DPB)230、インター予測ユニット344、およびイントラ予測ユニット354は、ビデオ・エンコーダ20の「組み込みデコーダ」を形成するとも称される。よって、逆量子化ユニット310は、逆量子化ユニット110と機能的に同一であってもよく、逆変換処理ユニット312は、逆変換処理ユニット212と機能的に同一であってもよく、再構成ユニット314は、再構成ユニット214と機能的に同一であってもよく、ループ・フィルタ・ユニット320は、ループ・フィルタ220と機能的に同一であってもよく、デコードピクチャーバッファ330は、デコードピクチャーバッファ230と機能的に同一であってもよい。したがって、ビデオ20エンコーダのそれぞれのユニットおよび機能について与えた説明は、ビデオ・デコーダ30のそれぞれのユニットおよび機能に、対応して当てはまる。
【0239】
エントロピー・デコード
エントロピー・デコード・ユニット304は、ビットストリーム21(または一般に、エンコードされたピクチャー・データ21)をパースし、たとえば、エンコードされたピクチャー・データ21に対してエントロピー・デコードを実行し、たとえば、量子化された係数309および/またはデコードされた符号化パラメータ(図3には示されていない)、たとえば、インター予測パラメータ(たとえば、参照ピクチャー・インデックスおよび動きベクトル)、イントラ予測パラメータ(たとえば、イントラ予測モードまたはインデックス)、変換パラメータ、量子化パラメータ、ループ・フィルタ・パラメータ、および/または他のシンタックス要素のいずれかまたは全部を得るように構成される。エントロピー・デコード・ユニット304は、エンコーダ20のエントロピー・エンコード・ユニット270に関して述べたエンコード方式に対応するデコード・アルゴリズムまたは方式を適用するように構成されてもよい。エントロピー・デコード・ユニット304は、インター予測パラメータ、イントラ予測パラメータおよび/または他のシンタックス要素をモード適用ユニット360に、他のパラメータをデコーダ30の他のユニットに提供するようにさらに構成されてもよい。ビデオ・デコーダ30は、ビデオ・スライス・レベルおよび/またはビデオ・ブロック・レベルでシンタックス要素を受領してもよい。スライスおよびそれぞれのシンタックス要素に加えて、またはその代わりとして、タイル・グループおよび/またはタイルおよびそれぞれのシンタックス要素が受領または使用されてもよい。
【0240】
逆量子化
逆量子化ユニット310は、エンコードされたピクチャー・データ21から量子化パラメータ(QP)(または一般に、逆量子化に関する情報)および量子化された係数を受領し(たとえばエントロピー・デコード・ユニット304によるたとえばパースおよび/またはデコードによって)、デコードされた量子化された係数309に対して該量子化パラメータに基づいて逆量子化を適用して、脱量子化された係数311を得るように構成されてもよい。脱量子化された係数311は変換係数311と称されることもある。逆量子化プロセスは、ビデオ・スライス(またはタイルまたはタイル・グループ)内の各ビデオ・ブロックについてビデオ・エンコーダ20によって決定された量子化パラメータを使用して、量子化の程度、および、同様に、適用されるべき逆量子化の程度を決定してもよい。
【0241】
逆変換
逆変換処理ユニット312は、変換係数311とも呼ばれる脱量子化された係数311を受領し、サンプル領域における再構成された残差ブロック213を得るために、脱量子化された係数311に変換を適用するように構成されてもよい。再構成された残差ブロック213は、変換ブロック313と称されることもある。変換は、逆変換、たとえば、逆DCT、逆DST、逆整数変換、または概念的に同様の逆変換プロセスであってもよい。逆変換処理ユニット312は、さらに、変換パラメータまたは対応する情報をエンコードされたピクチャー・データ21から受領して(たとえばエントロピー・デコード・ユニット304によるたとえばパースおよび/またはデコードによって)、脱量子化された係数311に適用される変換を決定するように構成されてもよい。
【0242】
再構成
再構成ユニット314(たとえば、加算器または総和器314)は、再構成された残差ブロック313を予測ブロック365に加算して、サンプル領域における再構成されたブロック315を得るように構成されてもよい。これはたとえば、再構成された残差ブロック313のサンプル値および予測ブロック365のサンプル値を加算することによる。
【0243】
フィルタリング
ループ・フィルタ・ユニット320(符号化ループ内または符号化ループ後のいずれか)は、たとえばピクセル遷移をなめらかにする、または、他の仕方でビデオ品質を改善するために、再構成されたブロック315をフィルタリングして、フィルタリングされたブロック321を得るように構成される。ループ・フィルタ・ユニット320は、ブロッキング解除フィルタ、サンプル適応オフセット(SAO)・フィルタ、または一つまたは複数の他のフィルタ、たとえば適応ループ・フィルタ(ALF)、ノイズ抑制フィルタ(NSF)、またはそれらの任意の組み合わせなどの一つまたは複数のループ・フィルタを含んでいてもよい。一例では、ループ・フィルタ・ユニット220は、ブロッキング解除フィルタ、SAOフィルタ、およびALFフィルタを含んでいてもよい。フィルタリング・プロセスの順序は、ブロッキング解除フィルタ、SAOおよびALFであってもよい。別の例では、クロマ・スケーリングを伴うルーマ・マッピング(luma mapping with chroma scaling、LMCS)と呼ばれるプロセス(すなわち、適応型ループ内整形器)が追加される。このプロセスは、ブロッキング解除の前に実行される。別の例では、ブロッキング解除フィルタ・プロセスはまた、内部サブブロック・エッジ、たとえば、アフィン・サブブロック・エッジ、ATMVPサブブロック・エッジ、サブブロック変換(SBT)エッジ、およびイントラ・サブパーティション(intra sub-partition、ISP)エッジに適用されてもよい。ループ・フィルタ・ユニット320は、図3ではループ内フィルタとして示されているが、他の構成では、ループ・フィルタ・ユニット320は、ループ後フィルタとして実装されてもよい。
【0244】
デコードピクチャーバッファ
次いで、ピクチャーのデコードされたビデオ・ブロック321は、デコードピクチャーバッファ330に記憶される。デコードピクチャーバッファ330は、デコードされたピクチャー331を、他のピクチャーについてのその後の動き補償のための参照ピクチャーとして、および/または出力もしくは表示のために記憶する。
【0245】
デコーダ30は、デコードされたピクチャー311を、ユーザーへの提示または閲覧のために、たとえば出力312を介して出力するように構成される。
【0246】
予測
インター予測ユニット344は、インター予測ユニット244(特に、動き補償ユニット)と同一であってもよく、イントラ予測ユニット354は、機能において、イントラ予測ユニット254と同一であってもよく、エンコードされたピクチャー・データ21から(たとえばエントロピー・デコード・ユニット304による、たとえばパースおよび/またはデコードによって)受領される分割および/または予測パラメータまたはそれぞれの情報に基づいて、分割もしくはパーティション分割決定および予測を実行する。モード適用ユニット360は、再構成されたピクチャー、ブロック、またはそれぞれのサンプル(フィルタリングされた、またはフィルタリングされていない)に基づいて、ブロックごとの予測(イントラ予測またはインター予測)を実行して、予測ブロック365を得るように構成されてもよい。
【0247】
ビデオ・スライスがイントラ符号化される(I)スライスとして符号化されるとき、モード適用ユニット360のイントラ予測ユニット354は、信号伝達されたイントラ予測モードと、現在ピクチャーの以前にデコードされたブロックからのデータとに基づいて、現在ビデオ・スライスのピクチャー・ブロックについての予測ブロック365を生成するように構成される。ビデオ・ピクチャーがインター符号化される(すなわちBまたはP)スライスとして符号化されるとき、モード適用ユニット360のインター予測ユニット344(たとえば、動き補償ユニット)は、エントロピー・デコード・ユニット304から受領される動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオ・スライスのビデオ・ブロックについての予測ブロック365を生成するように構成される。インター予測のために、予測ブロックは、参照ピクチャー・リストのうちの1つのリスト内の参照ピクチャーの1つから生成されてもよい。ビデオ・デコーダ30は、DPB 330に記憶された参照ピクチャーに基づくデフォルト構築技術を使用して、参照フレームリスト、リスト0およびリスト1を構築することができる。同じまたは同様のことは、スライス(たとえばビデオ・スライス)に加えて、またはその代わりとして、タイル・グループ(たとえばビデオ・タイル・グループ)および/またはタイル(たとえばビデオ・タイル)を使う他の実施形態のために、またはかかる実施形態によって使用されてもよい。たとえば、ビデオは、I、P、またはBタイル・グループおよび/またはタイルを使って符号化されてもよい。
【0248】
モード適用ユニット360は、動きベクトルもしくは関連する情報および他のシンタックス要素をパースすることによって、現在のビデオ・スライスのビデオ・ブロックについての予測情報を決定するように構成され、該予測情報を使用して、デコードされる現在のビデオ・ブロックについての予測ブロックを生成する。たとえば、モード適用ユニット360は、受領されたシンタックス要素のいくつかを用いて、ビデオ・スライスのビデオ・ブロックを符号化するために使用される予測モード(たとえば、イントラ予測またはインター予測)、インター予測スライス・タイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)、スライスについての参照ピクチャー・リストのうちの一つまたは複数のリストについての構築情報、スライスのそれぞれのインター・エンコードされたビデオ・ブロックについての動きベクトル、スライスのそれぞれのインター符号化されたビデオ・ブロックについてのインター予測ステータス、および現在のビデオ・スライス内のビデオ・ブロックをデコードするための他の情報を決定する。同じまたは同様のことは、スライス(たとえばビデオ・スライス)に加えて、またはその代わりとして、タイル・グループ(たとえばビデオ・タイル・グループ)および/またはタイル(たとえばビデオ・タイル)を使う他の実施形態のために、またはかかる実施形態によって使用されてもよい。たとえば、ビデオは、I、P、またはBタイル・グループおよび/またはタイルを使って符号化されてもよい。
【0249】
図3に示されるビデオ・デコーダ30の実施形態は、スライス(ビデオ・スライスとも呼ばれる)を使用することによってピクチャーをパーティション分割および/またはデコードするように構成されてもよく、ピクチャーは、一つまたは複数のスライス(典型的には、重複しない)に分割される、または一つまたは複数のスライスを使ってデコードされることができ、各スライスは、一つまたは複数のブロック(たとえば、CTU)またはブロックの一つまたは複数のグループ(たとえば、タイル(H.265/HEVCおよびVVC)またはブリック(VC))を含んでいてもよい。
【0250】
図3に示されるビデオ・デコーダ30の実施形態は、スライス/タイル・グループ(ビデオ・タイル・グループとも呼ばれる)および/またはタイル(ビデオ・タイルとも呼ばれる)を使用して、ピクチャーを分割および/またはデコードするように構成されてもよく、ピクチャーは、一つまたは複数のスライス/タイル・グループ(典型的には、重複しない)に分割されてもよく、一つまたは複数のスライス/タイル・グループを使ってデコードされてもよく、各スライス/タイル・グループは、たとえば、一つまたは複数のブロック(たとえば、CTU)または一つまたは複数のタイルを含んでいてもよく、各タイルは、たとえば、長方形の形であってもよく、一つまたは複数のブロック(たとえば、CTU)、たとえば完全なブロックまたは半端なブロックを含んでいてもよい。
【0251】
エンコードされたピクチャー・データ21をデコードするために、ビデオ・デコーダ30の他の変形が使用できる。たとえば、デコーダ30は、ループ・フィルタ・ユニット320なしで出力ビデオ・ストリームを生成することができる。たとえば、非変換ベースのデコーダ30は、ある種のブロックまたはフレームについて、逆変換処理ユニット312なしに直接、残差信号を逆量子化することができる。別の実装では、ビデオ・デコーダ30は、逆量子化ユニット310および逆変換処理ユニット312を単一のユニットに組み合わせたものを有することができる。
【0252】
エンコーダ20およびデコーダ30では、現在のステップの処理結果がさらに処理されて、次いで次のステップに出力されてもよいことを理解しておくべきである。たとえば、補間フィルタリング、動きベクトル導出、またはループ・フィルタリングの後に、クリップまたはシフトなどのさらなる操作が、補間フィルタリング、動きベクトル導出、またはループ・フィルタリングの処理結果に対して実行されてもよい。
【0253】
現在ブロックの導出された動きベクトル(アフィンモードの制御点動きベクトル、アフィン、平面、ATMVPモードにおけるサブブロック動きベクトル、時間的動きベクトルなどを含むが、これらに限定されない)に対して、さらなる操作が適用されてもよいに留意しておくべきである。たとえば、動きベクトルの値は、その表現ビットに従ってあらかじめ定義された範囲に制約される。動きベクトルの表現ビットがbitDepthである場合、範囲は-2^(bitDepth-1)~2^(bitDepth-1)-1となる。ここで「^」は冪乗を意味する。たとえば、bitDepthが16に設定されている場合、範囲は-32768~32767であり、bitDepthが18に設定されている場合、-131072~131071である。たとえば、導出された動きベクトル(たとえば、1つの8×8ブロック内の4つの4×4サブブロックのMV)の値は、4つの4×4サブブロックのMVの整数部の間の最大差が、Nピクセル以下、たとえば1ピクセル以下になるように制約される。ここでは、bitDepthに従って動きベクトルを制約するための2つの方法を提供する。
【0254】
図4は、本開示のある実施形態によるビデオ符号化装置400の概略図である。ビデオ符号化装置400は、本明細書に記載される開示される実施形態を実装するのに好適である。ある実施形態では、ビデオ符号化装置400は、図1Aのビデオ・デコーダ30のようなデコーダ、または図1Aのビデオ・エンコーダ20のようなエンコーダであってもよい。
【0255】
ビデオ符号化装置400は、データを受領するための入口ポート410(または入力ポート410)および受領器ユニット(Rx)420;データを処理するためのプロセッサ、論理ユニット、または中央処理ユニット(CPU)430;データを送信するための送信器ユニット(Tx)440および出口ポート450(または出力ポート450);およびデータを記憶するためのメモリ460を含む。ビデオ符号化装置400は、光信号または電気信号の出入りのために、入口ポート410、受領器ユニット420、送信器ユニット440、および出口ポート450に結合された光対電気(OE)コンポーネントおよび電気対光(EO)コンポーネントをも有していてもよい。
【0256】
プロセッサ430は、ハードウェアおよびソフトウェアによって実装される。プロセッサ430は、一つまたは複数のCPUチップ、コア(たとえば、マルチコアプロセッサとして)、FPGA、ASIC、およびDSPとして実装されてもよい。プロセッサ430は、入口ポート410、受領器ユニット420、送信器ユニット440、出口ポート450、およびメモリ460と通信する。プロセッサ430は、符号化モジュール470を有する。符号化モジュール470は、上記の開示された諸実施形態を実装する。たとえば、符号化モジュール470は、さまざまな符号化動作を実装、処理、準備、または提供する。よって、符号化モジュール470を含めることにより、ビデオ符号化装置400の機能が実質的に改善され、ビデオ符号化装置400の異なる状態への変換が実現される。あるいはまた、符号化モジュール470は、メモリ460に記憶された命令として実装され、プロセッサ430によって実行される。
【0257】
メモリ460は、一つまたは複数のディスク、テープドライブ、およびソリッドステートドライブを含んでいてもよく、オーバーフロー・データ記憶装置として使用され、プログラムを、該プログラムが実行のために選択されるときに記憶し、そしてプログラム実行中に読み出される命令およびデータを記憶してもよい。メモリ460は、たとえば、揮発性および/または不揮発性であってもよく、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想記憶メモリ(TCAM)、および/またはスタティックランダムアクセスメモリ(SRAM)であってもよい。
【0258】
図5は、ある例示的実施形態による、図1Aからの源装置12および宛先装置14のいずれかまたは両方として使用されうる装置500の簡略化されたブロック図である。
【0259】
装置500内のプロセッサ502は、中央処理ユニットであってもよい。あるいはまた、プロセッサ502は、現在存在する、または今後開発される情報を操作または処理することができる、任意の他のタイプの装置または複数の装置であってもよい。開示された実装は、図示のような単一のプロセッサ、たとえばプロセッサ502を用いて実施できるが、複数のプロセッサを用いて、速度および効率における利点が達成できる。
【0260】
装置500内のメモリ504は、ある実装では、リードオンリーメモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスであることができる。メモリ504として、任意の他の好適なタイプの記憶デバイスが使用できる。メモリ504は、バス512を使用してプロセッサ502によってアクセスされるコードおよびデータ506を含むことができる。メモリ504は、さらに、オペレーティング・システム508およびアプリケーション・プログラム510を含むことができ、該アプリケーション・プログラム510は、プロセッサ502がここに記載される方法を実行することを許容する少なくとも1つのプログラムを含む。たとえば、アプリケーション・プログラム510は、アプリケーション1~Nを含むことができ、これは、ここに記載される方法を実行するビデオ符号化アプリケーションをさらに含む。
【0261】
装置500は、ディスプレイ518などの一つまたは複数の出力装置をも含むことができる。ディスプレイ518は、一例では、ディスプレイを、タッチ入力を感知するように動作可能なタッチ感応性要素と組み合わせるタッチ感応性ディスプレイであってもよい。ディスプレイ518は、バス512を介してプロセッサ502に結合されることができる。
【0262】
ここでは単一のバスとして示されているが、装置500のバス512は、複数のバスから構成されることができる。さらに、二次記憶514は、装置500の他のコンポーネントに直接結合されることができるか、またはネットワークを介してアクセスされることができ、メモリカードのような単一の集積ユニットまたは複数のメモリカードのような複数のユニットを含むことができる。よって、装置500は、幅広い多様な構成で実装されることができる。
【0263】
以下は、本発明の実施形態を、明細書の添付図面を参照して説明する。本明細書に記載される実施形態は、単に本発明を記述し、説明するために使用されるのであり、本発明を限定することは意図されていないことが理解されるべきである。
【0264】
ブロッキング解除フィルタを適用するための例示的なシナリオが、図6Aおよび6Bに示されている。図6Aに示されるように、ブロック601、602(P、Qとも呼ばれる)は、2つの符号化ブロックまたは変換ブロックであり、CUのサイズは16×4サンプルである。図6Aおよび6Bに示されるように、本明細書に呈示される技術は、垂直および水平エッジの両方に適用される。
【0265】
ビデオ符号化は、色空間および色フォーマットに基づいて実行されてもよい。たとえば、カラービデオは、マルチメディア・システムにおいて重要な役割を果たす。ここで、色を効率的に表現するためにさまざまな色空間が使用される。色空間は、複数の成分を使用して数値で色を指定する。一般的な色空間はRGB色空間であり、色は3つの原色成分値(すなわち、赤、緑、および青)の組み合わせとして表現される。カラービデオ圧縮については、A. Ford and A. Roberts、"Colour space conversions"、University of Westminster, London, Tech. Rep.、August 1998に記載されるように、YCbCr色空間が広く使用されてきた。
【0266】
YCbCrは線形変換を介してRGB色空間から容易に変換でき、YCbCr色空間では、異なる成分間の冗長性、すなわち成分間冗長性が大幅に低減される。YCbCrの1つの利点は、Y信号がルミナンス情報を伝達するため、白黒テレビとの後方互換性があることである。さらに、4:2:0クロマ・サンプリング・フォーマットにおいてCbおよびCr成分をサブサンプリングすることによって、RGB色空間におけるサブサンプリングよりも有意に少ない主観的影響で、クロマ帯域幅を低減できる。これらの利点のため、YCbCrはビデオ圧縮における主要な色空間であり続けている。ビデオ圧縮において使用されるYCoCgのような他の色空間もある。本開示においては、使用される実際の色空間にかかわらず、ビデオ圧縮方式における3つの色成分を表現するために、ルーマ(またはLまたはY)および2つのクロマ(CbおよびCr)が使用される。たとえば、クロマ・フォーマットのサンプリング構造が4:2:0サンプリングである場合、2つのクロマ・アレイのそれぞれは、ルーマ・アレイの半分の高さおよび半分の幅をもつ。ピクチャーにおけるルーマ・サンプルおよびクロマ・サンプルの公称垂直および水平相対位置の例が図7Aに示されている。図7Bは、4:2:0サンプリングの例を示す。図7Bは、共位置のルーマ・ブロックおよびクロマ・ブロックの一例を示す。ビデオ・フォーマットがYUV4:2:0である場合、1つの16×16のルーマ・ブロックと2つの8×8のクロマ・ブロックがある。
【0267】
具体的には、符号化ブロックまたは変換ブロックは、ルーマ・ブロックおよび2つのクロマ・ブロックを含む。図示されるように、ルーマ・ブロックは、クロマ・ブロックの4倍のサンプルを含む。具体的には、クロマ・ブロックはサンプル数N×サンプル数Nを含み、ルーマ・ブロックはサンプル数2N×サンプル数2Nを含む。よって、ルーマ・ブロックはクロマ・ブロックの解像度の4倍である。たとえば、YUV4:2:0フォーマットが使用される場合、ルーマ・サンプルは4倍(たとえば、幅が2倍、高さが2倍)でダウンサンプリングされうる。YUVは、ルーマ成分Yと2つのクロマ成分U、Vに関する色空間を用いる色エンコード・システムである。
【0268】
2つのルーマ・ブロックにブロッキング解除フィルタを適用するためのシナリオの例が図8に示されている。第1の画像ブロック(601、601')の第1のルーマ・ブロック801と第2の画像ブロック(602、602')の第2のルーマ・ブロック802との間にルーマ・ブロック・エッジ803がある。
【0269】
2つのクロマ・ブロックについてブロッキング解除フィルタが適用されるシナリオが図9A~9Hに示される。図9Aは、第1の画像ブロック(601、601')のクロマ・ブロックP 901、第2の画像ブロック(602、602')のクロマ・ブロックQ 902、およびブロッキング解除フィルタが適用されるクロマ・ブロック・エッジ903を示す。図9Aに示されるように、クロマ・ブロック901、902の間の垂直なクロマ・ブロック・エッジ903は、本発明の実施形態に従ってフィルタリングされる。図9B~9Hのそれぞれは、クロマ・ブロックPおよびクロマ・ブロックQについてのクロマ・ブロックの一例を示す。たとえば、図9Bでは、Cb成分911、912の間の垂直Cb成分エッジ913が、本発明の実施形態に従ってフィルタリングされる。図9Cでは、Cr成分921、922の間の垂直Cr成分エッジ923が、本発明の実施形態に従ってフィルタリングされる。
【0270】
以前のVVCブロッキング解除設計では、所与のクロマ・ブロック(CbまたはCr)が合同Cb-Cr残差(JCCR)符号化ツールを使用するときはいつでも、クロマ・ブロッキング解除において使用される対応するQPは、個々のCbおよびCr成分のために設計されたクロマQPマッピング・テーブルから導出される。合同Cb-Cr符号化ブロックまたは合同Cb-Cr成分については、CbおよびCr成分のために設計されたChromaQPTableを使用すると、誤ったクロマQP導出につながる可能性があり、よって、(クロマQP値に依存する)ブロッキング解除決定および/またはブロッキング解除プロセスが影響される。その結果、不正確なブロッキング解除決定および/またはブロッキング解除プロセスとなり、よって、画像でブロッキング・アーチファクトが残ることにつながりうる。このことは、符号化された画像の全体的な視覚的品質に影響する。
【0271】
以前の多用途ビデオ符号化(VVC)ブロッキング解除設計では、クロマQPは以下のように導出される:
変数QpQおよびQpPは、サンプルq0,0およびp0,0をそれぞれ含む符号化ブロックを含む符号化単位のQpY値に等しく設定される。変数QpQは対応するルーマ・ブロックQのQpY値を表わし、変数QpPは対応するルーマ・ブロックPのQpY値を表わすことが理解できる。
【0272】
変数QpCは次のように導出される:
qPi=Clip3(0,63,((QpQ+QpP+1)>>1)+cQpPicOffset) (8-1132)
QpC=ChromaQpTable[cIdx-1][qPi] (8-1133)
よって、クロマ・ブロッキング解除において使用されるクロマQP値は、基本的には、ルーマQP値を平均することによって導出され、次いで、平均化されたルーマQPをクロマQPにマッピングするために、ChromaQPtableが使用される。
【0273】
以前のブロッキング解除方式の問題は、合同残差Cb-Cr(JCCR)符号化されたブロックまたは合同Cb-Cr成分については、クロマQPマッピングが、CbおよびCr成分のために特別に設計されたChromaQPtableを用いても行なわれることである。
【0274】
本発明の実施形態は、従来のブロッキング解除フィルタリングを改善することを目的とする。
【0275】
本明細書に呈示される開示は、第1の画像ブロック(601、601')の第1のクロマ・ブロック(901、911、921、931、941、951、961、971)と第2の画像ブロック(602、602')の第2のクロマ・ブロック(902、912、922、932、942、952、962、972)との間のクロマ・ブロック・エッジ(903、913、923、933、943、953、963、973)を正確な仕方でブロッキング解除することを実行できるブロッキング解除フィルタ装置、エンコーダ、デコーダ、および対応する方法に関わる。さらに、ブロッキング解除は効率的かつ正確であるべきである。
【0276】
本願の技術的実装の実施形態
本発明の実施形態によれば、所与のクロマ・ブロック(CbまたはCr)が合同クロマ符号化(JCCR)ツールを使用する場合はいつでも、クロマ量子化パラメータQpcは、CbおよびCr色成分と比較して異なる変換規則を使用することによって、平均されたルーマ量子化パラメータに基づいて決定される。
【0277】
本発明のある実施形態によれば、所与のクロマ・ブロック(CbまたはCr)が合同クロマ符号化(JCCR)ツールを使用する場合はいつでも、クロマ・ブロッキング解除において使用される対応するQPは、合同Cb-Cr符号化ブロックまたは合同Cb-Cr成分(JCCRブロックの略)のために設計されたChromaQPTableを使用して導出されるべきである。
【0278】
前記クロマQPマッピング・テーブルは、インデックスが整数値で表わされるJCCRブロックのために特に設計されたものである。前記インデックス値は、CbおよびCrインデックス値と同じではなく、値3、4、5…であることができる。
【0279】
一例では、図13に示されるように、すべてのクロマ成分(Cb、Crまたは合同Cb-Cr)は、その独自のクロマQPマッピング・テーブルをもつ。別の例では、図12Aおよび12Bに示されるように、Cb、Crおよび合同Cb-Crについて3つの異なるエントリーをもつ単一のテーブル。
【0280】
ある側面では、本発明は、互いに隣接するクロマ・ブロックのうちの少なくとも1つが合同残差Cb-Cr(JCCR)符号化されたブロックである場合、またはクロマ・ブロックのうちの前記少なくとも1つが合同残差Cb-Cr(JCCR)モードを使用して符号化される場合に使用されるクロマQPを正しく導出することである。
【0281】
別の側面では、本発明は、正しく導出されたクロマQP値に間接的に依存するブロッキング解除決定および/またはブロッキング解除フィルタリング・プロセスを実行することであり、よって、ブロッキング・アーチファクトが低減されることができ、ひいては全体的な主観的品質を改善することができる。
【実施例1】
【0282】
本願の第1の実施形態
第1の側面によれば、本発明は、画像エンコードおよび/または画像デコードにおいて、第1の画像ブロックの第1のクロマ・ブロックと第2の画像ブロックの第2のクロマ・ブロックとの間のクロマ・ブロック・エッジをブロッキング解除するためのブロッキング解除方法に関する。
当該ブロッキング解除方法は、以下を含む:
・前記クロマ・ブロック・エッジについての決定プロセスを実行することであって、前記決定プロセスは、以下を含む:
前記第1のクロマ・ブロックおよび前記第2のクロマ・ブロックのうち少なくとも一方が合同Cb-Cr(JCCR)符号化されたブロックである(または、前記第1のクロマ・ブロックおよび前記第2のクロマ・ブロックのうち少なくとも一方が合同Cb-Cr残差(JCCR)ツールを使用する、または、前記第1のクロマ・ブロックおよび前記第2のクロマ・ブロックのうち少なくとも一方が合同Cb-Cr残差(JCCR)モードを使用して符号化される)場合、
前記第1の画像ブロックの第1のルーマ・ブロックの第1のルーマQP(QpYPなど)および前記第2の画像ブロックの第2のルーマ・ブロックの第2のルーマQP(QpYQなど)に基づいて、平均されたルーマ量子化パラメータqPiを決定し;
前記平均化されたルーマ量子化パラメータqPiに基づいて、そのインデックスが第1のインデックス値であるクロマQpマッピング・テーブル(たとえば、ChromaQPTable)を使用することによって、またはそのインデックスが第1のインデックス値である情報エントリーを含むクロマQpマッピング・テーブルを使用することによって、クロマ量子化パラメータQpcを決定する。ここで、前記第1のインデックス値は、前記第1のクロマ・ブロックおよび前記第2のクロマ・ブロックのうちの前記少なくとも一方が、JCCR(合同残差Cb-Cr)符号化されるブロックであることを示す、または前記第1のインデックス値は前記第1のクロマ・ブロックおよび前記第2のクロマ・ブロックのうちの前記少なくとも一方がJCCRツールを使用する場合に対応する;
・前記決定プロセスの決定結果に基づいて、前記クロマ・ブロック・エッジについてのフィルタリング・プロセスを実行する。
前記決定結果は、前記ブロック・エッジ(403、504、903)がフィルタリングされるかどうか、および/または長いフィルタリングが実行されるかどうかを決定することを示す。
【0283】
第1の側面自身による方法のある可能な実装形態では、
前記第1のインデックス値はクロマQpマッピング・テーブルに対応する、または
前記第1のインデックス値は、クロマQpマッピング・テーブルの情報エントリーに対応する。
【0284】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、前記第1のインデックス値は、成分(Cb、Cr)インデックス(cIdx)の前記値と異なるか、または前記第1のインデックス値は、成分(Cb、Cr)インデックス(cIdx)の前記値から1を引いたものと異なる。
【0285】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、前記第1のインデックス値は2である、または前記第1のインデックス値は3である成分(合同Cb-Cr成分)インデックス(cIdx)値である。
【0286】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、前記クロマ量子化パラメータQpcが前記クロマ・ブロック・エッジについての前記決定プロセスのために使用される、または前記クロマ量子化パラメータQpcが、前記クロマ・ブロック・エッジがフィルタリングされるかどうか、および/または長いフィルタリングが実行されるかどうかを決定するために直接的または間接的に使用される。
【0287】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、
第1閾値変数(たとえばβ')の値が、前記クロマ量子化パラメータQpcまたは第1のクリッピングされたQpcに基づいて、マッピング・テーブルを使用して決定され;
第1の変数(たとえばβ)の値が前記第1の閾値変数(たとえばβ')の値に基づいて導出され;
ここで、前記第1の変数(たとえばβ)の値は、前記クロマ・ブロック・エッジについての前記決定プロセスのために使用される、または、前記第1の変数(たとえばβ)の値は、前記クロマ・ブロック・エッジがフィルタリングされるかどうか、および/または長いフィルタリングが実行されるかどうかを決定するために使用される。
【0288】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、
第2の閾値変数(たとえばtC')の値が、前記クロマ量子化パラメータQpcまたは第2のクリッピングされたQpcに基づいて、マッピング・テーブルを使用して決定され;
第2の変数(たとえばtC)の値が、前記第2の閾値変数(たとえばtC')の値に基づいて導出され;
ここで、前記第2の変数(たとえばtC)の値は、前記クロマ・ブロック・エッジについての前記決定プロセスのために使用され(または、前記第2の変数(たとえばtC)の値は、前記クロマ・ブロック・エッジがフィルタリングされるかどうか、および/または、長いフィルタリングが実行されるかどうかを決定するために使用され)、前記クロマ・ブロック・エッジについての前記フィルタリング・プロセスのために使用される。
【0289】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、
前記マッピング・テーブルは、複数の前記第1の閾値変数と、複数の前記第2の閾値変数と、複数の量子化パラメータとの間のマッピングを含む。
【0290】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックは、前記第1の画像ブロックの第1のクロマ成分(たとえばCb成分)であり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの第1のクロマ成分(たとえばCb成分)である、および/または
前記第1のクロマ・ブロックは、前記第1の画像ブロックの第2のクロマ成分(たとえばCr成分)であり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの第2のクロマ成分(たとえばCr成分)である。
【0291】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、前記第1の画像ブロックの前記第1のクロマ成分(たとえばCb成分)および前記第2の画像ブロックの前記第1のクロマ成分(たとえばCb成分)の少なくとも一方は、前記合同Cb-Cr成分である、または合同Cb-Cr残差(JCCR)モードを用いて符号化される、および/または
前記第1の画像ブロックの第2のクロマ成分(たとえばCr成分)および前記第2の画像ブロックの第2のクロマ成分(たとえばCr成分)の少なくとも一方は、前記合同Cb-Cr成分である、または合同Cb-Cr残差(JCCR)モードを用いて符号化される、または
前記第1および第2のクロマ・ブロックの少なくとも一方は、合同Cb-Cr残差(JCCR)符号化されるブロックである。
【0292】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、前記第1の画像ブロックおよび前記第2の画像ブロックは変換ブロックである;
または
前記第1の画像ブロックおよび前記第2の画像ブロックは符号化ブロックである。
【0293】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、
前記第1のクロマ・ブロックおよび前記第2のクロマ・ブロックのうちの前記少なくとも一方が、クロミナンス残差の合同符号化(JCCR)ツールを使用するかどうが、変換単位TUレベルのフラグ(たとえばtu_joint_cbcr_residual_flag)に基づいて判定される。
【0294】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、前記第1の画像ブロックについての前記TUレベルのフラグ(たとえばtu_joint_cbcr_residual_flag)が真である場合、前記第1のクロマ・ブロックは、クロミナンス残差の合同符号化(JCCR)ツールを使用する(または、前記第1のクロマ・ブロックは合同Cb-Cr残差(JCCR)モードを使用して符号化される、または前記第1のクロマ・ブロックが合同Cb-Cr残差(JCCR)符号化されるブロックまたは合同Cb-Cr成分である);または
前記第2の画像ブロックの前記TUレベルのフラグ(たとえばtu_joint_cbcr_residual_flag)が真である場合、前記第2のクロマ・ブロックはクロミナンス残差の合同符号化(JCCR)ツールを使用する(または、前記第2のクロマ・ブロックは合同Cb-Cr残差(JCCR)モードを使用して符号化される、または、前記第2のクロマ・ブロックは合同Cb-Cr残差(JCCR)符号化ブロックまたは合同Cb-Cr成分である)。
【0295】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、前記クロマQpマッピング・テーブルが、合同Cb-Cr残差(JCCR)符号化されるブロックのために特別に設計される、または前記クロマQpマッピング・テーブルが、前記第1のクロマ成分(たとえばCb成分)、前記第2のクロマ成分(たとえばCr成分)および前記合同Cb-Cr成分のために設計される。
【0296】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、
前記クロマQpマッピング・テーブル(たとえばChromaQPTable)は、複数の前記クロマ量子化パラメータQpcと複数の前記ルーマ量子化パラメータqPiとの間の対応を含み、前記複数の前記クロマ量子化パラメータQpcは、前記第1のインデックス値に関連付けられる;または
前記クロマQpマッピング・テーブル(たとえばChromaQPTable)は、下記を含む:
前記クロマ量子化パラメータの第1のセットQpJCCR、前記クロマ量子化パラメータの第2のセットQpcb、および前記クロマ量子化パラメータの第3のセットQpcrであって、前記第1のセット、前記第2のセット、および前記第3のセットのそれぞれは、複数の前記ルーマ量子化パラメータqPiに対応し、前記クロマ量子化パラメータの前記第1のセットQpJCCRは、前記第1のインデックス値に関連付けられ、前記クロマ量子化パラメータの前記第2のセットQpcbは、第2のインデックス値に関連付けられ、前記クロマ量子化パラメータの前記第3のセットQpcrは、第3のインデックス値に関連付けられる。
【0297】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、
前記第1のインデックス値(たとえば3)は、前記第1のクロマ・ブロックおよび前記第2のクロマ・ブロック(402、502)のうちの前記少なくとも一方が、合同Cb-Cr残差(JCCR)符号化されるブロックであることを示す。
【0298】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、前記第1のインデックス値または前記合同Cb-Cr成分インデックス(cIdx)は、3,4,5,…のような整数値である。
【0299】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、
前記第1のクロマ・ブロックが前記第1の画像ブロックの第1のクロマ成分(たとえばCb成分)であり、前記第2のクロマ・ブロックが前記第2の画像ブロックの第1のクロマ成分(たとえばCb成分)である場合、前記色成分インデックス(cIdx)は1である第2の値をもつ;または
前記第1のクロマ・ブロックが前記第1の画像ブロックの第2のクロマ成分(たとえばCr成分)であり、前記第2のクロマ・ブロックが前記第2の画像ブロックの第2のクロマ成分(たとえばCr成分)である場合、前記色成分インデックス(cIdx)は、2である第3の値をもつ;または
前記第1のクロマ・ブロックが前記第1の画像ブロックの第1のクロマ成分(たとえばCb成分)であり、前記第2のクロマ・ブロックが前記第2の画像ブロックの第1のクロマ成分(たとえばCb成分)であり、それらの第1のクロマ成分のうち少なくとも一方が合同Cb-Cr残差(JCCR)成分である場合、前記色成分インデックス(cIdx)は、3である前記第1の値をもつ;または
前記第1のクロマ・ブロックが前記第1の画像ブロックの第2のクロマ成分(たとえばCr成分)であり、前記第2のクロマ・ブロックが前記第2の画像ブロックの第2のクロマ成分(たとえばCr成分)であり、それらの第2のクロマ成分のうち少なくとも一方が合同Cb-Cr残差(JCCR)成分である場合、前記色成分インデックス(cIdx)は、3である前記第1の値をもつ;または
前記第1および第2のクロマ・ブロックのうち少なくとも一方が合同Cb-Cr残差(JCCR)符号化されるブロックである場合、前記色成分インデックス(cIdx)は、3である前記第1の値をもつ。
【0300】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、前記クロマQpマッピング・テーブル(たとえばChromaQPTable)は、下記を含む:
前記クロマ量子化パラメータの第1のセットQpJCCR、前記クロマ量子化パラメータの第2のセットQpcb、および前記クロマ量子化パラメータの第3のセットQpcrであって、前記第1のセット、前記第2のセット、および前記第3のセットのそれぞれは、前記ルーマ量子化パラメータqPiの第4のセットに対応し、前記クロマ量子化パラメータの前記第1のセットQpJCCRは、前記第1の値を有する前記色成分インデックス(cIdx)に関連付けられ、前記クロマ量子化パラメータの前記第2のセットQpcbは、前記第2の値を有する前記色成分インデックス(cIdx)に関連付けられ、前記クロマ量子化パラメータの前記第3のセットQpcrは、前記第3の値を有する前記色成分インデックス(cIdx)に関連付けられる。
【0301】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、
前記クロマQpマッピング・テーブル(たとえばChromaQPTable)が、複数の前記クロマ量子化パラメータQpcと複数の前記ルーマ量子化パラメータqPiとの間の対応を含み、前記複数の前記クロマ量子化パラメータQpcは、前記成分(合同Cb-Cr成分)インデックス(cIdx)の前記第1の値に関連付けられる。
【0302】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロック(401、501)は、M*NまたはN*Mであるブロック・サイズを有し、MおよびNは、それぞれ前記第1のクロマ・ブロックの幅および高さを表わす、またはNおよびMは、それぞれ前記第1のクロマ・ブロックの幅および高さを表わし;
前記第2のクロマ・ブロック(402、502)は、L*TまたはT*Lであるブロック・サイズを有し、LおよびTは、それぞれ前記第2のクロマ・ブロックの幅および高さを表わす、またはTおよびLは、それぞれ前記第2のクロマ・ブロックの幅および高さを表わし、
ここで、NまたはTは閾値以上の偶数の整数2n(たとえば4、8、16、32…)であり、nは正の整数である。
【0303】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、
・前記クロマ・ブロック・エッジ(903)が水平クロマ・ブロック・エッジ(903)であり、前記第1のクロマ・ブロックの高さNに沿った方向が前記クロマ・ブロック・エッジ(903)に垂直であり、前記第2のクロマ・ブロックの高さTに沿った方向が前記クロマ・ブロック・エッジ(903)に垂直である場合、前記第1および第2のクロマ・ブロックの高さのいずれかまたは両方は4より大きい(または8以上の)偶数の整数2nである;または
・前記クロマ・ブロック・エッジ(903)が垂直クロマ・ブロック・エッジ(403、504)であり、前記第1のクロマ・ブロックの幅Nに沿った方向は前記ブロック・エッジ(903)に垂直であり、前記第2のクロマ・ブロックの幅Tに沿った方向は前記ブロック・エッジ(903)に垂直である場合、前記第1および第2のクロマ・ブロックの幅のいずれかまたは両方は4より大きい(または8以上の)偶数の整数2nである。
【0304】
第1の側面のいずれかの上記の実装または第1の側面自身による方法のある可能な実装形態では、前記第2の画像ブロックは現在ブロックであり、前記第1の画像ブロックは現在ブロックの隣接するブロックである。
【0305】
解決策1:ブロックPもしくはブロックQのいずれか、またはブロックPとブロックQの両方が合同Cb-Cr残差(JCCR)ツールを使用するかどうかのチェックが実行される。ブロックPおよびQのいずれもJCCRを使用しない場合、クロマQPマッピングは、CbおよびCrブロックについて現在行なわれているのと同じ仕方で実行される(式8-1132および8-1133を参照)。だが、それらのブロックの1つがJCCRツールを使用する場合、2つのブロックPおよびQの平均ルーマQP値が、VVC 6.0において現在設計されているのと同じ仕方で導出される(式8-1132を参照)。さらに、ルーマQpをクロマQPにマッピングする場合、ある例示的な仕方では、合同Cb-Cr残差(JCCR)符号化されるブロックまたは合同Cb-Cr成分のために設計されたクロマQPマッピング・テーブルが使用され、代替的な仕方では、合同Cb-Cr成分およびクロマ成分(Cb、Cr)のために設計されたクロマQPマッピング・テーブルが使用されてもよい。これは式8-1133'に示される。
【0306】
したがって、式8-1132は同じままであるが、式8-1133と異なる式8-1133'が下記のように示される:
qPi=Clip3(0,63,((QpQ+QpP+1)>>1)+cQpPicOffset) (8-1132)
Qp C =ChromaQpTable[2][qPi] (8-1133')
【0307】
解決策1のための仕様テキストの変更は、文書JVET-O2001(version-vE)のセクション8.8.3.6.3に関して以下のように与えられる。
【0308】
8.8.3.6.3 クロマ・ブロック・エッジについての決定プロセス
変数QpQおよびQpPは、それぞれサンプルq0,0およびp0,0を含む符号化ブロックを含む符号化単位のQpY値に等しく設定される。
変数QpCは次のように導出される:
qPi=Clip3(0,63,((QpQ+QpP+1)>>1)+cQpPicOffset) (8-1132)
・サンプルp0,0またはq0,0が、tu_joint_cbcr_residual_flagが1に等しい変換単位内にある場合、
・QpC=ChromaQpTable[2][qPi] (8-1133
・そうでない場合
・QpC=ChromaQpTable[cIdx-1][qPi] (8-1133)
……
【0309】
サンプルq0,0およびp0,0を含む諸ブロックがルーマ・ブロックまたはルーマ成分である場合、cIdx=0であり、
サンプルq0,0およびp0,0を含む諸ブロックが第1のクロマ成分(Cb)である場合、cIdx=1であり、
サンプルq0,0およびp0,0を含む諸ブロックが第2のクロマ成分(Cr)である場合、cIdx=2であり、
サンプルq0,0およびp0,0を含む諸ブロックのいずれかまたは両方が、合同Cb-Cr残差(JCCR)符号化されるブロックまたは合同Cb-Cr成分である場合、cIdx=3であることに注目できる。
【0310】
ブロックPもしくはブロックQのいずれか、またはブロックPとQの両方が合同Cb-Cr残差(JCCR)ツールを使用するかどうかを判定するステップは、以下を含んでいてもよい:
サンプルp0,0がtu_joint_cbcr_residual_flagが1に等しい変換単位内にある場合、ブロックPは合同Cb-Cr残差(JCCR)ツールを使用すると判定される;および/または
サンプルq0,0がtu_joint_cbcr_residual_flagが1に等しい変換単位内にある場合、ブロックQは合同Cb-Cr残差(JCCR)ツールを使用すると判定される。
【0311】
本発明のある実施形態による解決策1の有益な効果および利点は、ChromaQPTableマッピング・テーブルのインデックス付けが、現在のブロックがJCCRを使用するか否かのチェックに基づいて、変換マッピングへの大きな変更なしに修正されることを含む。
【実施例2】
【0312】
本願の第2の実施形態
第2の側面によれば、本発明は、画像エンコードおよび/または画像デコードにおいて、第1の画像ブロック601、601'の第1のクロマ・ブロック901、911、921と第2の画像ブロック602、602'の第2のクロマ・ブロック902、912、922との間のクロマ・ブロック・エッジ903、913、923をブロッキング解除するためのブロッキング解除方法に関する。当該ブロッキング解除方法は、以下を含む:
・前記クロマ・ブロック・エッジについての決定プロセスを実行することであって、前記決定プロセスは、以下を含む:
・クロマQpマッピング・テーブル(たとえばテーブル1200、1200'、1301、1302、1303のChromaQpTable[0]、ChromaQpTable[1]、ChromaQpTable[2])またはインデックス(たとえば成分インデックスcIdxまたは行インデックス)によって示されるクロマQpマッピング・テーブルの情報エントリーを使用することによって、前記第1のクロマ・ブロック901、911、921についてのクロマ量子化パラメータQpCpを、前記第1の画像ブロック901、911、921の第1のルーマ・ブロック801、802の第1のルーマQP(たとえばQpYP)に基づいて決定する。前記インデックスは、前記第1のクロマ・ブロックが合同Cb-Cr残差(JCCR)符号化されるブロックである場合は第1のインデックス値(たとえば3)をもつ、または前記インデックス(cIdx)は、前記第1のクロマ・ブロックが前記第1の画像ブロックの前記クロマ成分である場合は第2のインデックス値(たとえば1または2)をもつ;
・クロマQpマッピング・テーブル(たとえばChromaQpTable)またはインデックス(たとえば成分インデックスcIdx)によって示されるクロマQpマッピング・テーブルの情報エントリーを使用することによって、前記第2のクロマ・ブロック902、912、922についてのクロマ量子化パラメータQpCqを、前記第2の画像ブロックの第2のルーマ・ブロック(401、501)の第2のルーマQP(たとえばQpYQ)に基づいて決定する。前記インデックス(cIdx)は、前記第2のクロマ・ブロックが合同Cb-Cr残差(JCCR)符号化されるブロックである場合は第1の値(たとえば3)をもつ、または前記インデックス(cIdx)は、前記第2のクロマ・ブロックが前記第2の画像ブロックの前記クロマ成分である場合は第2の値(たとえば1または2)をもつ;
・前記第1のクロマ・ブロックについての前記クロマ量子化パラメータQpCpおよび前記第2のクロマ・ブロックについての前記クロマ量子化パラメータQpCqに基づいて、平均され丸められたクロマ量子化パラメータQpCを決定する;
・前記決定プロセスの決定結果に基づいて、前記クロマ・ブロック・エッジについてのフィルタリング・プロセスを実行する。
【0313】
前記決定結果は、前記ブロック・エッジがフィルタリングされるか否か、および/または長いフィルタリングが実行されるか否かを示すことが理解できる。
【0314】
第2の側面自身による方法のある可能な実装形態では、
異なるインデックス値は、クロマQPマッピング・テーブルの異なる情報エントリーに対応する、または異なるインデックス値は、異なるクロマQPマッピング・テーブルに対応する。
【0315】
第2の側面のいずれかの上記の実装または第2の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックについての前記クロマ量子化パラメータQpCpおよび前記第2のクロマ・ブロックについての前記クロマ量子化パラメータQpCqに基づいて、平均され丸められたクロマ量子化パラメータQpCを決定する前記ステップは:
平均された第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbを、
・前記第1の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての前記第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbp、および
・前記第2の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての前記第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbqに基づいて
決定することを含む。
【0316】
第2の側面のいずれかの上記の実装または第2の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックについての前記クロマ量子化パラメータQpCpおよび前記第2のクロマ・ブロックについての前記クロマ量子化パラメータQpCqに基づいて、平均され丸められたクロマ量子化パラメータQpCを決定する前記ステップは:
平均された第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrを、
・前記第1の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての前記第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrp、および
・前記第2の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての前記第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrqに基づいて
決定することを含む。
【0317】
第2の側面のいずれかの上記の実装または第2の側面自身による方法のある可能な実装形態では、前記平均され丸められたクロマ量子化パラメータQpcは、前記クロマ・ブロック・エッジについての前記決定プロセスのために使用されるか、または前記平均され丸められたクロマ量子化パラメータQpcは、前記クロマ・ブロック・エッジがフィルタリングされるかどうか、および/または長いフィルタリングが実行されるかどうかを決定するために直接的または間接的に使用される。
【0318】
第2の側面のいずれかの上記の実装または第2の側面自身による方法のある可能な実装形態では、
第1の閾値変数(たとえばβ')の値が、前記平均され丸められたクロマ量子化パラメータQpcまたは第1のクリッピングされたQpcに基づいて、マッピング・テーブルを使用して決定され;
第1の変数(たとえばβ)の値が前記第1の閾値変数(たとえばβ')の値に基づいて導出され;
前記第1の変数(たとえばβ)の値は、前記クロマ・ブロック・エッジについての前記決定プロセスのために使用される、または前記ブロック・エッジがフィルタリングされるかどうか、および/または長いフィルタリングが実行されるかどうかを決定するために使用される。
【0319】
第2の側面のいずれかの上記の実装または第2の側面自身による方法のある可能な実装形態では、
第2の閾値変数(たとえばtC')の値が、前記平均され丸められたクロマ量子化パラメータQpcまたは第2のクリッピングされたQpcに基づいて、マッピング・テーブルを使用して決定され;
第2の変数(たとえばtC)の値が、前記第2の閾値変数(たとえばtC')の値に基づいて導出され;
前記第2変数の値(たとえばtC)の値は、前記クロマ・ブロック・エッジについての前記決定プロセス(または、前記ブロック・エッジがフィルタリングされるかどうか、および/または、長いフィルタリングが実行されるかどうかの決定)および前記クロマ・ブロック・エッジについての前記フィルタリング・プロセスのために使用される。
【0320】
第2の側面のいずれかの上記の実装または第2の側面自身による方法のある可能な実装形態では、前記マッピング・テーブルは、複数の前記第1の閾値変数と、複数の前記第2の閾値変数と、複数の量子化パラメータとの間のマッピングを含む。
【0321】
第2の側面のいずれかの上記の実装または第2の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックは前記第1の画像ブロックの第1のクロマ成分(たとえばCb成分)であり、前記第2のクロマ・ブロックは前記第2の画像ブロックの第1のクロマ成分(たとえばCb成分)である、または
前記第1のクロマ・ブロックは、前記第1の画像ブロックの第2のクロマ成分(たとえばCr成分)であり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの第2のクロマ成分(たとえばCr成分)である。
【0322】
第2の側面のいずれかの上記の実装または第2の側面自身による方法のある可能な実装形態では、前記第1の画像ブロックおよび前記第2の画像ブロックは、変換単位または変換ブロックである。
【0323】
第2の側面のいずれかの上記の実装または第2の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックおよび前記第2のクロマ・ブロック(402、502)のうちの前記少なくとも一方が、合同Cb-Cr残差(JCCR)モードを使用して符号化されるかどうか、または前記第1のクロマ・ブロックおよび前記第2のクロマ・ブロック(402、502)のうちの前記少なくとも一方が合同Cb-Cr残差(JCCR)符号化されるブロックであるかどうかが、変換単位TUレベルのフラグ(たとえば、tu_joint_cbcr_residual_flag)に基づいて判定される。
【0324】
第2の側面のいずれかの上記の実装または第2の側面自身による方法のある可能な実装形態では、前記第1の画像ブロックについての前記TUレベルのフラグ(たとえばtu_joint_cbcr_residual_flag)が真である場合、前記第1のクロマ・ブロックは、クロミナンス残差の合同符号化(JCCR)ツールを使用する、または前記第1のクロマ・ブロックは、合同Cb-Cr残差(JCCR)モードを使用して符号化される;または
前記第2の画像ブロックについての前記TUレベルのフラグ(たとえばtu_joint_cbcr_residual_flag)が真である場合、前記第2のクロマ・ブロックは、クロミナンス残差の合同符号化(JCCR)ツールを使用する、または前記第2のクロマ・ブロックは、合同Cb-Cr残差(JCCR)モードを使用して符号化される。
【0325】
第2の側面のいずれかの上記の実装または第2の側面自身による方法のある可能な実装形態では、前記クロマQpマッピング・テーブル(たとえばChromaQPTable)は、複数の前記クロマ量子化パラメータQpcと複数の前記ルーマ量子化パラメータQplumaとの間の対応を含み、前記複数の前記クロマ量子化パラメータQpcは、前記第1のインデックス値または前記第2のインデックス値に関連付けられる。
【0326】
第2の側面のいずれかの上記の実装または第2の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックは、M*NまたはN*Mであるブロック・サイズを有し、MおよびNは、それぞれ前記第1のクロマ・ブロックの幅および高さを表わす、またはNおよびMは、それぞれ前記第1のクロマ・ブロックの幅および高さを表わし;
前記第2のクロマ・ブロックは、L*TまたはT*Lであるブロック・サイズを有し、LおよびTは、それぞれ前記第2のクロマ・ブロックの幅および高さを表わす、またはTおよびLは、それぞれ前記第2のクロマ・ブロックの幅および高さを表わし、
ここで、NまたはTは閾値以上の偶数の整数2n(たとえば4、8、16、32…)であり、nは正の整数である。
【0327】
第2の側面のいずれかの上記の実装または第2の側面自身による方法のある可能な実装形態では、
・前記クロマ・ブロック・エッジが水平クロマ・ブロック・エッジであり、前記第1のクロマ・ブロックの高さNに沿った方向が前記クロマ・ブロック・エッジに垂直であり、前記第2のクロマ・ブロックの高さTに沿った方向が前記クロマ・ブロック・エッジに垂直である場合、前記第1および第2のクロマ・ブロックの高さのいずれかまたは両方は4より大きい(または8以上の)偶数の整数2nである;または
・前記クロマ・ブロック・エッジが垂直クロマ・ブロック・エッジであり、前記第1のクロマ・ブロックの幅Nに沿った方向は前記ブロック・エッジに垂直であり、前記第2のクロマ・ブロックの幅Tに沿った方向は前記ブロック・エッジに垂直であり、前記第1および第2のクロマ・ブロックの幅のいずれかまたは両方は4より大きい(または8以上の)偶数の整数2nである。
【0328】
第2の側面のいずれかの上記の実装または第2の側面自身による方法のある可能な実装形態では、前記第2の画像ブロックは現在ブロックであり、前記第1の画像ブロックは現在ブロックの隣接するブロックである。
【0329】
解決策2
JCCRフラグに基づいて、ルーマQPは、それぞれのクロマQPマッピング・テーブルを使用することにより、ブロックPおよびQのそれぞれについて別個にクロマQPにマッピングされ、次いで、それらのクロマQP値の平均が、ブロッキング解除のために使用される最終的なQP値として設定される。
【0330】
ブロックQが合同Cb-Cr残差(JCCR)ツールを使用する場合、QpcQ=ChromaQpTable[2][QpQ+cQpPicOffset]であり、そうでない場合はQpcQ=ChromaQpTable[cIdx-1][QpQ+cQpPicOffset]である。
【0331】
ブロックPがJCCRを使用する場合、Qpcp=ChromaQpTable[2][Qpp+cQpPicOffset]であり、そうでない場合はQpcp=ChromaQpTable[cIdx-1][Qpp+cQpPicOffset]である。
【0332】
Qp C =Clip3(0,63,((QpcQ+QpcP+1)>>1)) (8-1132')
ChromaQpTable[2]は、合同Cb-Cr残差(JCCR)符号化されるブロックについてのクロマQPマッピング・テーブルを表わすことが理解できる。
【0333】
ブロックPもしくはブロックQのいずれか、またはブロックPとQの両方がJCCRツールを使用するかどうかを判定する前記ステップは、以下を含んでいてもよい:
サンプルp0,0がtu_joint_cbcr_residual_flagが1に等しい変換単位内にある場合、ブロックPはJCCRツールを使用すると判定される;および/または
サンプルq0,0がtu_joint_cbcr_residual_flagが1に等しい変換単位内にある場合、ブロックQはJCCRツールを使用すると判定される。
【0334】
解決策2のための仕様テキストの変更は、文書JVET-O2001(version-vE)のセクション8.8.3.6.3に関して以下のように与えられる。
【0335】
8.8.3.6.3 クロマ・ブロック・エッジについての決定プロセス
変数QpQおよびQpPは、それぞれ、サンプルq0,0およびp0,0を含む符号化ブロックを含む符号化単位のQpY値に等しく設定される。
変数QpCは次のように導出される:
・サンプルp0,0またはq0,0が、tu_joint_cbcr_residual_flagが1に等しい変換単位内にある場合、
○サンプルp0,0がtu_joint_cbcr_residual_flagが1に等しい変換単位内にある場合、
・QpCp=ChromaQpTable[2][QpP+cQpPicOffset]
○そうでない場合
・QpCp=ChromaQpTable[cIdx-1][QpP+cQpPicOffset]
○サンプルq0,0がtu_joint_cbcr_residual_flagが1に等しい変換単位内にある場合、
・QpCq=ChromaQpTable[2][Qpq+cQpPicOffset]
○そうでない場合
・QpCq=ChromaQpTable[cIdx-1][Qpq+cQpPicOffset]
QpC=Clip3(0,63,((QpCp+QpCq+1)>>1)) (8-1132)
・そうでない場合
qPi=Clip3(0,63,((QpQ+QpP+1)>>1)+cQpPicOffset) (8-1132)
QpC=ChromaQpTable[cIdx-1][qPi] (8-1133)
【0336】
変数QpQは対応するルーマ・ブロックQについてのQpY値を表わし、変数QpPは対応するルーマ・ブロックPについてのQpY値を表わすことが理解できる。
【0337】
本発明のある実施形態による解決策2の有益な効果および利点は、JCCRブロックについての最終的な導出されるQPが解決策1と比較してより正確であり、よって、より良好な主観的品質をもたらすことにより、そこでのより良好なブロッキング解除決定をもたらすことができることである。
【実施例3】
【0338】
本願の第3の実施形態
第3の側面によれば、本発明は、画像エンコードおよび/または画像デコードにおいて、第1の画像ブロックの第1のクロマ・ブロックと第2の画像ブロックの第2のクロマ・ブロックとの間のクロマ・ブロック・エッジをブロッキング解除するためのブロッキング解除方法に関する。
当該ブロッキング解除方法は、以下を含む:
・前記クロマ・ブロック・エッジについての決定プロセスを実行することであって、前記決定プロセスは、以下を含む:
・クロマQpマッピング・テーブル(たとえばChromaQPTable)またはインデックス(たとえば成分インデックスcIdxまたは行インデックス)によって示されるクロマQpマッピング・テーブルの情報エントリーを使用することによって、前記第1のクロマ・ブロックについてのクロマ量子化パラメータQpCpを、前記第1の画像ブロックの第1のルーマ・ブロック(801、802)の第1のルーマQP(たとえばQpYP)に基づいて決定する。前記インデックス(cIdx)は、前記第1のクロマ・ブロックが合同Cb-Cr残差(JCCR)符号化されるブロックである場合は第1のインデックス値(たとえば3)をもつ、または前記インデックス(cIdx)は、前記第1のクロマ・ブロックが前記第1の画像ブロックの前記クロマ成分である場合は第2のインデックス値(たとえば1または2)をもつ;
・クロマQpマッピング・テーブル(たとえばChromaQPTable)またはインデックス(たとえば成分インデックスcIdx)によって示されるクロマQpマッピング・テーブルの情報エントリーを使用することによって、前記第2のクロマ・ブロックについてのクロマ量子化パラメータQpCqを、前記第2の画像ブロックの第2のルーマ・ブロック(802、801)の第2のルーマQP(たとえばQpYP)に基づいて決定する。前記インデックス(cIdx)は、前記第2のクロマ・ブロックが合同Cb-Cr残差(JCCR)符号化されるブロックである場合は第1の値(たとえば3)をもつ、または前記インデックス(cIdx)は、前記第2のクロマ・ブロックが前記第2の画像ブロックの前記クロマ成分である場合は第2の値(たとえば1または2)をもつ;
・前記第1のクロマ・ブロックについての前記クロマ量子化パラメータQpCpおよび前記第2のクロマ・ブロックについての前記クロマ量子化パラメータQpCqに基づいて、平均され丸められたクロマ量子化パラメータQpCを決定する;
・前記決定プロセスの決定結果に基づいて、前記クロマ・ブロック・エッジについてのフィルタリング・プロセスを実行する。
【0339】
前記決定結果は、前記ブロック・エッジがフィルタリングされるか否か、および/または
長いフィルタリングが実行されるか否かを示すことが理解できる。
【0340】
第3の側面自身による方法のある可能な実装形態では、
異なるインデックス値は、クロマQPマッピング・テーブルの異なる情報エントリーに対応する、または異なるインデックス値は、異なるクロマQPマッピング・テーブルに対応する。
【0341】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックがJCCRモードを用いて符号化され、かつ、前記JCCRモードが第1のJCCRモード(たとえば1)である場合、
そのインデックス(たとえば成分インデックスcIdx)が前記第1のインデックス値であるクロマQpマッピング・テーブルを使用することによって、またはそのインデックス(たとえば成分インデックスcIdx)が前記第1のインデックス値である情報エントリーを含むクロマQpマッピング・テーブルを使用することによって、前記第1の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbpを、前記第1の画像ブロックの第1のルーマ・ブロックの第1のルーマQP(たとえばQpYP)に基づいて、決定し;
前記第1の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrpを、前記第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbpに基づいて、決定する。
【0342】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記第2のクロマ・ブロックがJCCRモードを用いて符号化され、かつ、前記JCCRモードが第1のJCCRモード(たとえば1)である場合、
そのインデックス(たとえば成分インデックスcIdx)が前記第1のインデックス値であるクロマQpマッピング・テーブルを使用することによって、またはそのインデックス(たとえば成分インデックスcIdx)が前記第1のインデックス値である情報エントリーを含むクロマQpマッピング・テーブルを使用することによって、前記第2の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbqを、前記第2の画像ブロックの第2のルーマ・ブロックの第2のルーマQP(たとえばQpYQ)に基づいて、決定し;
前記第2の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrqを、前記第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbqに基づいて、決定する。
【0343】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックがJCCRモードを用いて符号化され、かつ、前記JCCRモードが第2のJCCRモード(たとえば2)である場合、
そのインデックス(たとえば成分インデックスcIdx)が前記第1のインデックス値であるクロマQpマッピング・テーブルを使用することによって、またはそのインデックス(たとえば成分インデックスcIdx)が前記第1のインデックス値である情報エントリーを含むクロマQpマッピング・テーブルを使用することによって、前記第1の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbpを、前記第1の画像ブロックの第1のルーマ・ブロックの第1のルーマQP(たとえばQpYP)に基づいて、決定し;
前記第1の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrpを、前記第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbpとして設定する。
【0344】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記第2のクロマ・ブロックがJCCRモードを用いて符号化され、かつ、前記JCCRモードが第2のJCCRモード(たとえば2)である場合、
そのインデックス(たとえば成分インデックスcIdx)が前記第1のインデックス値であるクロマQpマッピング・テーブルを使用することによって、またはそのインデックス(たとえば成分インデックスcIdx)が前記第1のインデックス値である情報エントリーを含むクロマQpマッピング・テーブルを使用することによって、前記第2の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbqを、前記第2の画像ブロックの第2のルーマ・ブロックの第2のルーマQP(たとえばQpYQ)に基づいて、決定し;
前記第2の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrqを、前記第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbqとして設定する。
【0345】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックがJCCRモードを用いて符号化され、かつ、前記JCCRモードが第3のJCCRモード(たとえば3)である場合、
そのインデックス(たとえば成分インデックスcIdx)が前記第1のインデックス値であるクロマQpマッピング・テーブルを使用することによって、またはそのインデックス(たとえば成分インデックスcIdx)が前記第1のインデックス値である情報エントリーを含むクロマQpマッピング・テーブルを使用することによって、前記第1の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrpを、前記第1の画像ブロックの第1のルーマ・ブロックの第1のルーマQP(たとえばQpYP)に基づいて、決定し;
前記第1の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbpを、前記第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrpに基づいて、決定する。
【0346】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記第2のクロマ・ブロックがJCCRモードを用いて符号化され、かつ、前記JCCRモードが第3のJCCRモード(たとえば3)である場合、
そのインデックス(たとえば成分インデックスcIdx)が前記第1のインデックス値であるクロマQpマッピング・テーブルを使用することによって、またはそのインデックス(たとえば成分インデックスcIdx)が前記第1のインデックス値である情報エントリーを含むクロマQpマッピング・テーブルを使用することによって、前記第2の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrqを、前記第2の画像ブロックの第2のルーマ・ブロックの第2のルーマQP(たとえばQpYQ)に基づいて、決定し;
前記第2の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbqを、前記第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrqに基づいて、決定する。
【0347】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックについての前記クロマ量子化パラメータQpCpおよび前記第2のクロマ・ブロックについての前記クロマ量子化パラメータQpCqに基づいて、平均され丸められたクロマ量子化パラメータQpCを決定する前記ステップは:
平均された第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbを、
・前記第1の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての前記第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbp、および
・前記第2の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての前記第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbqに基づいて
決定することを含む。
【0348】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックについての前記クロマ量子化パラメータQpCpおよび前記第2のクロマ・ブロックについての前記クロマ量子化パラメータQpCqに基づいて、平均され丸められたクロマ量子化パラメータQpCを決定する前記ステップは:
平均された第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrを、
・前記第1の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての前記第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrp、および
・前記第2の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての前記第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrqに基づいて
決定することを含む。
【0349】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記平均され丸められたクロマ量子化パラメータQpcは、前記クロマ・ブロック・エッジについての前記決定プロセスのために使用されるか、または前記平均され丸められたクロマ量子化パラメータQpcは、前記クロマ・ブロック・エッジがフィルタリングされるかどうか、および/または長いフィルタリングが実行されるかどうかを決定するために直接的または間接的に使用される。
【0350】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、
第1の閾値変数(たとえばβ')の値が、前記平均され丸められたクロマ量子化パラメータQpcまたは第1のクリッピングされたQpcに基づいて、マッピング・テーブルを使用して決定され;
第1の変数(たとえばβ)の値が前記第1の閾値変数(たとえばβ')の値に基づいて導出され;
前記第1の変数(たとえばβ)の値は、前記クロマ・ブロック・エッジについての前記決定プロセスのために使用される、または前記ブロック・エッジがフィルタリングされるかどうか、および/または長いフィルタリングが実行されるかどうかを決定するために使用される。
【0351】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、
第2の閾値変数(たとえばtC')の値が、前記平均され丸められたクロマ量子化パラメータQpcまたは第2のクリッピングされたQpcに基づいて、マッピング・テーブルを使用して決定され;
第2の変数(たとえばtC')の値が、前記第2の閾値変数(たとえばtC')の値に基づいて導出され;
前記第2変数の値(たとえばtC)の値は、前記クロマ・ブロック・エッジについての前記決定プロセス(または、前記ブロック・エッジがフィルタリングされるかどうか、および/または、長いフィルタリングが実行されるかどうかの決定)および前記クロマ・ブロック・エッジについての前記フィルタリング・プロセスのために使用される。
【0352】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記マッピング・テーブルは、複数の前記第1の閾値変数と、複数の前記第2の閾値変数と、複数の量子化パラメータとの間のマッピングを含む。
【0353】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックは前記第1の画像ブロックの第1のクロマ成分(たとえばCb成分)であり、前記第2のクロマ・ブロックは前記第2の画像ブロックの第1のクロマ成分(たとえばCb成分)である、または
前記第1のクロマ・ブロックは、前記第1の画像ブロックの第2のクロマ成分(たとえばCr成分)であり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの第2のクロマ成分(たとえばCr成分)である。
【0354】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記第1の画像ブロックおよび前記第2の画像ブロックは、変換単位または変換ブロックである。
【0355】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックおよび前記第2のクロマ・ブロック(402、502)のうちの前記少なくとも一方が、合同Cb-Cr残差(JCCR)モードを使用して符号化されるかどうか、または前記第1のクロマ・ブロックおよび前記第2のクロマ・ブロック(402、502)のうちの前記少なくとも一方が合同Cb-Cr残差(JCCR)符号化されるブロックであるかどうかが、変換単位TUレベルのフラグ(たとえば、tu_joint_cbcr_residual_flag)に基づいて判定される。
【0356】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記第1の画像ブロックについての前記TUレベルのフラグ(たとえばtu_joint_cbcr_residual_flag)が真である場合、前記第1のクロマ・ブロックは、クロミナンス残差の合同符号化(JCCR)ツールを使用する、または前記第1のクロマ・ブロックは、合同Cb-Cr残差(JCCR)モードを使用して符号化される;または
前記第2の画像ブロックについての前記TUレベルのフラグ(たとえばtu_joint_cbcr_residual_flag)が真である場合、前記第2のクロマ・ブロックは、クロミナンス残差の合同符号化(JCCR)ツールを使用する、または前記第2のクロマ・ブロックは、合同Cb-Cr残差(JCCR)モードを使用して符号化される。
【0357】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記クロマQpマッピング・テーブル(たとえばChromaQPTable)は、複数の前記クロマ量子化パラメータQpcと複数の前記ルーマ量子化パラメータQplumaとの間の対応を含み、前記複数の前記クロマ量子化パラメータQpcは、前記第1のインデックス値または前記第2のインデックス値に関連付けられる。
【0358】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックは、M*NまたはN*Mであるブロック・サイズを有し、MおよびNは、それぞれ前記第1のクロマ・ブロックの幅および高さを表わす、またはNおよびMは、それぞれ前記第1のクロマ・ブロックの幅および高さを表わし;
前記第2のクロマ・ブロックは、L*TまたはT*Lであるブロック・サイズを有し、LおよびTは、それぞれ前記第2のクロマ・ブロックの幅および高さを表わす、またはTおよびLは、それぞれ前記第2のクロマ・ブロックの幅および高さを表わし、
ここで、NまたはTは閾値以上の偶数の整数2n(たとえば4、8、16、32…)であり、nは正の整数である。
【0359】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、
・前記クロマ・ブロック・エッジが水平クロマ・ブロック・エッジであり、前記第1のクロマ・ブロックの高さNに沿った方向が前記クロマ・ブロック・エッジに垂直であり、前記第2のクロマ・ブロックの高さTに沿った方向が前記クロマ・ブロック・エッジに垂直である場合、前記第1および第2のクロマ・ブロックの高さのいずれかまたは両方は4より大きい(または8以上の)偶数の整数2nである;または
・前記クロマ・ブロック・エッジが垂直クロマ・ブロック・エッジであり、前記第1のクロマ・ブロックの幅Nに沿った方向は前記ブロック・エッジに垂直であり、前記第2のクロマ・ブロックの幅Tに沿った方向は前記ブロック・エッジに垂直であり、前記第1および第2のクロマ・ブロックの幅のいずれかまたは両方は4より大きい(または8以上の)偶数の整数2nである。
【0360】
第3の側面のいずれかの上記の実装または第3の側面自身による方法のある可能な実装形態では、前記第2の画像ブロックは現在ブロックであり、前記第1の画像ブロックは現在ブロックの隣接するブロックである。
【0361】
解決策3
入力クロマQP値はJCCRモードに依存する。
JCCRのモードに基づいて、入力クロマQP値が決定される。
⇒JCCRモード==1であれば、QpCb=ChromaQpTable[2][Qpx]
そしてQpCr=(QpCb+1)>>1
⇒JCCRモード==2であれば、QpCb=ChromaQpTable[2][Qpx]
そしてQpCr=QpCb
⇒JCCRモード==3であれば、QpCr=ChromaQpTable[2][Qpx]
そしてQpCb=(QpCr+1)>>1
*Qpxにおけるxは、PブロックまたはQブロックのいずれかのQP値であることができる。
Qp Cr =Clip3(0,63,((QpcrQ+QpcrP+1)>>1)) (8-1132a)
Qp Cb =Clip3(0,63,((QpcbQ+QpcbP+1)>>1) (8-1132b)
【0362】
TuCResModeに基づいて、ブロックPおよびQのそれぞれについての入力クロマQP値の導出が決定される。
TuCResMode==1であれば、変数QPcbはQPcb=ChromaQpTable[2][QPx]として導出され、値QPCrはQPCr=(QpCb+1)>>1として導出される。
そうでない場合、TuCResMode==2であれば、変数QPcbはQPcb=ChromaQpTable[2][QPx]として導出され、値QPCrはQPCr=QpCbとして導出される。
そうでない場合、TuCResMode==3であれば、変数QPcrはQPcr=ChromaQpTable[2][QPx]として導出され、値QPCrはQPCb=(QpCr+1)>>1として導出される。
QPxにおけるxは、それぞれのブロックについてPまたはQで置き換えることができることに留意されたい。
次いで、QPcrおよびQPcbの値は、さらに次のように導出される:
QpCr=Clip3(0,63,((QpcrQ+QpcrP+1)>>1)) (8-1132a)
QpCb=Clip3(0,63,((QpcbQ+QpcbP+1)>>1)) (8-1132b)
【0363】
本発明のある実施形態による解決策3の有益な効果および利点は、クロマ・ブロック(CbまたはCr)によって使用されるQP値が、JCCRモード(TuCResMode)にも基づいて調整され、そのため、Cb-Cr成分を合同的に信号伝達するためにJCCRが使用される場合に、Cb成分およびCr成分のそれぞれについて、より正確なQPが導出できることである。
【実施例4】
【0364】
本願の第4の実施形態
4の側面によれば、本発明は、画像エンコードおよび/または画像デコードにおいて、第1の画像ブロック(601、601')の第1のクロマ・ブロック(901、911、921、931、941、951、961、971)と第2の画像ブロック(602、602')の第2のクロマ・ブロック(902、912、922、932、942、952、962、972)との間のクロマ・ブロック・エッジ(903、913、923)をブロッキング解除するためのブロッキング解除方法に関する。
当該ブロッキング解除方法は、以下を含む:
・前記クロマ・ブロック・エッジについての決定プロセスを実行することであって、前記決定プロセスは以下を含む:
・前記第1の画像ブロック(601、601')の第1のルーマ・ブロック(801)についての第1のルーマQP(たとえばQpYP)と変換規則とに基づいて、前記第1のクロマ・ブロック(901、911、921、931、941、951、961、971)についてのクロマ量子化パラメータQpCpを決定する。ここで、前記変換規則は、前記第1のクロマ・ブロック(901、911、921、931、941、951、961、971)が合同Cb-Cr残差(JCCR)符号化ブロックである場合は第1の変換規則であり、または前記変換規則は、前記第1のクロマ・ブロック(901、911、921、931、941、951、961、971)が前記第1の画像ブロック(601、601')の前記クロマ成分である場合は第2の変換規則である;
・前記第2の画像ブロック(602、602')の第2のルーマ・ブロック(802)の第2のルーマQP(たとえばQpYQ)と変換規則とに基づいて、前記第2のクロマ・ブロック(902、912、922、932、942、952、962、972)についてのクロマ量子化パラメータQpCqを決定する。ここで、前記変換規則は、前記第2のクロマ・ブロックが合同Cb-Cr残差(JCCR)符号化ブロックである場合は第1の変換規則であり、または前記変換規則は、前記第2のクロマ・ブロックが前記第2の画像ブロック(602、602')の前記クロマ成分である場合は第2の変換規則である;
・前記第1のクロマ・ブロック(901、911、921、931、941、951、961、971)についてのクロマ量子化パラメータQpCpおよび第2のクロマ・ブロック(902、912、922、932、942、952、962、972)についてのクロマ量子化パラメータQpCqに基づいて、平均され丸められたクロマ量子化パラメータQpCを決定する;
・前記決定プロセスの決定結果に基づいて、前記クロマ・ブロック・エッジ(903、913、923)についてのフィルタリング・プロセスを実行する。
【0365】
第4の側面自身による方法のある可能な実装形態では、前記第1の変換規則は、合同Cb-Cr残差(JCCR)符号化ブロックのために設計されている。
【0366】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第2の変換規則は、第2の変換規則R21および/または第2の変換規則R22を含み、
前記第2の変換規則R21および前記第2の変換規則R22は、それぞれ、第1のクロマ成分(たとえばCb成分)および第2のクロマ成分(たとえばCr成分)のために設計されている。
ある可能な実装形態では、前記第1の変換規則は、第2の変換規則R21および第2の変換規則R22とは異なる。
【0367】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記変換規則は、前記第1のクロマ・ブロックが前記第1の画像ブロック(601、601')の第1のクロマ成分(911)である場合には第2の変換規則R21であり、および/または、前記変換規則は、前記第1のクロマ・ブロックが前記第1の画像ブロック(601、601')の第2のクロマ成分(921)である場合には第2の変換規則R22である;
または
前記変換規則は、前記第2のクロマ・ブロックが前記第2の画像ブロック(602、602')の第1のクロマ成分(912)である場合には、第2の変換規則R21であり、および/または、前記変換規則は、前記第2のクロマ・ブロックが前記第2の画像ブロック(602、602')の第2のクロマ成分(922)である場合には、第2の変換規則R22である。
【0368】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1の変換規則、前記第2の変換規則R21および前記第2の変換規則R22は、クロマQpマッピング・テーブル(たとえばChromaQPTable)のそれぞれの情報エントリーに対応する(またはそれによって表わされる)、または
前記第1の変換規則、前記第2の変換規則R21、および前記第2の変換規則R22は、それぞれ、第1のクロマQpマッピング・テーブル(たとえばChromaQPTable)、第2のクロマQpマッピング・テーブル、および第3のクロマQpマッピング・テーブルに対応する(または、それらによって表わされる)。
【0369】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1の変換規則、前記第2の変換規則R21および前記第2の変換規則R22は、それぞれ、第1の公式、第2の公式および第3の公式に対応する;
または
前記第1の変換規則、前記第2の変換規則R21および前記第2の変換規則R22は、それぞれ第1の公式、第2の公式、および第3の公式である。
【0370】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1の変換規則は、クロマQpマッピング・テーブル(たとえばChromaQPTable)および第1の公式を用いて表わされ;
前記第2の変換規則R21は、クロマQpマッピング・テーブル(たとえばChromaQPTable)および第2の公式を用いて表わされ;
前記第2の変換規則R22は、クロマQpマッピング・テーブル(たとえばChromaQPTable)および第3の公式を用いて表わされる。
【0371】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1の変換規則は、クロマQpマッピング・テーブル(たとえばChromaQPTable)および第1の組の公式を用いて表わされ;
前記第2の変換規則R21は、クロマQpマッピング・テーブル(たとえばChromaQPTable)および第2の組の公式を用いて表わされ;
前記第2の変換規則R22は、クロマQpマッピング・テーブル(たとえばChromaQPTable)および第3の組の公式を用いて表わされる。
【0372】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1の変換規則、前記第2の変換規則R21および前記第2の変換規則R22は、それぞれ、第1のインデックス値、第2のインデックス値、および第3のインデックス値によって示される、または
前記第1の変換規則、前記第2の変換規則R21、および前記第2の変換規則R22は、それぞれ、第1のインデックス値、第2のインデックス値、および第3のインデックス値に対応する。
【0373】
ある可能な実装形態では、前記第1のインデックス値、前記第2のインデックス値、前記第3のインデックス値は互いに異なる。
【0374】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1のインデックス値、前記第2のインデックス値、および前記第3のインデックス値は、異なる整数値である。
【0375】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1のインデックス値、前記第2のインデックス値、および前記第3のインデックス値は、それぞれ、合同Cb-Cr符号化ブロック、Cb成分、およびCr成分を指定する異なる値を有する成分インデックス(たとえばcIdx)である。
【0376】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1のインデックス値は3または4または5であり、前記第2のインデックス値は1であり、前記第3のインデックスは2である。
【0377】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記平均化され丸められたクロマ量子化パラメータQpcは、前記クロマ・ブロック・エッジについての前記決定プロセスのために使用される、または
前記平均され丸められたクロマ量子化パラメータQpcは、前記クロマ・ブロック・エッジ(903、913、923)がフィルタリングされるかどうか、および/または長いフィルタリングが実行されるかどうかを決定するために直接的または間接的に使用される。
【0378】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、
第1の閾値変数(たとえばβ')の値が、前記平均され丸められたクロマ量子化パラメータQpcまたは第1のクリッピングされたQpcに基づいて、ルックアップ・テーブルを使用して決定され;
第1の変数(たとえばβ)の値が前記第1の閾値変数(たとえばβ')の値に基づいて導出され;
前記第1の変数(たとえばβ)の値は、前記クロマ・ブロック・エッジについての前記決定プロセスのために使用される、または前記第1の変数(たとえばβ)の値は、前記クロマ・ブロック・エッジ(903、913、923)がフィルタリングされるかどうか、および/または長いフィルタリングが実行されるかどうかを決定するために使用される。
【0379】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、
第2の閾値変数(たとえばtC')の値が、前記平均され丸められたクロマ量子化パラメータQpcまたは第2のクリッピングされたQpcに基づいて、ルックアップ・テーブルを使用して決定され;
第2の変数(たとえばtC')の値が、前記第2の閾値変数(たとえばtC')の値に基づいて導出され;
前記第2変数の値(たとえばtC)の値は、前記クロマ・ブロック・エッジについての前記決定プロセス(または、前記第2変数の値(たとえばtC)の値は、前記クロマ・ブロック・エッジ(903、913、923)がフィルタリングされるかどうか、および/または、長いフィルタリングが実行されるかどうかの決定のために使用される)および前記クロマ・ブロック・エッジについての前記フィルタリング・プロセスのために使用される。
【0380】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記ルックアップ・テーブルは、複数の前記第1の閾値変数と、複数の前記第2の閾値変数と、複数の量子化パラメータとの間のマッピングを含む。
【0381】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックは前記第1の画像ブロックの第1のクロマ成分(たとえばCb成分)であり、前記第2のクロマ・ブロックは前記第2の画像ブロックの第1のクロマ成分(たとえばCb成分)である、および/または
前記第1のクロマ・ブロックは、前記第1の画像ブロックの第2のクロマ成分(たとえばCr成分)であり、前記第2のクロマ・ブロックは、前記第2の画像ブロックの第2のクロマ成分(たとえばCr成分)である。
【0382】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1の画像ブロックの第1のクロマ成分(たとえばCb成分)および前記第2の画像ブロックの第1のクロマ成分(たとえばCb成分)の少なくとも一方は合同Cb-Cr残差(JCCR)モードを使って符号化される、または
前記第1の画像ブロックの第2のクロマ成分(たとえばCr成分)および前記第2の画像ブロックの第2のクロマ成分(たとえばCr成分)の少なくとも一方は合同Cb-Cr残差(JCCR)モードを使って符号化される。
【0383】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1の画像ブロックおよび前記第2の画像ブロックは変換ブロックである;または、前記第1の画像ブロックおよび前記第2の画像ブロックは符号化ブロックである。
【0384】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロック(901、911、921、931、941、951、961、971)および前記第2のクロマ・ブロック(902、912、922、932、942、952、962、972)のうちの前記少なくとも一方が、合同Cb-Cr残差(JCCR)モードを使用して符号化されるかどうか、または前記第1のクロマ・ブロック(901、911、921、931、941、951、961、971)および前記第2のクロマ・ブロック(902、912、922、932、942、952、962、972)のうちの前記少なくとも一方が合同Cb-Cr残差(JCCR)符号化されるブロックであるかどうかが、変換単位TUレベルのフラグ(たとえば、tu_joint_cbcr_residual_flag)に基づいて判定される。
【0385】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1の画像ブロックについての前記TUレベルのフラグ(たとえばtu_joint_cbcr_residual_flag)が真である場合、前記第1のクロマ・ブロックは合同Cb-Cr残差(JCCR)符号化ブロックである、または前記第1のクロマ・ブロックは合同Cb-Cr残差(JCCR)モードを使用して符号化される;または
前記第2の画像ブロックについての前記TUレベルのフラグ(たとえばtu_joint_cbcr_residual_flag)が真である場合、前記第2のクロマ・ブロックは合同Cb-Cr残差(JCCR)符号化ブロックである、または前記第2のクロマ・ブロックは合同Cb-Cr残差(JCCR)モードを使用して符号化される。
【0386】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、
前記第1のクロマ・ブロック(901、911、921、931、941、951、961、971)は、M*NまたはN*Mであるブロック・サイズを有し、MおよびNは、それぞれ前記第1のクロマ・ブロックの幅および高さを表わす、またはNおよびMは、それぞれ前記第1のクロマ・ブロックの幅および高さを表わし;
前記第2のクロマ・ブロック(902、912、922、932、942、952、962、972)は、L*TまたはT*Lであるブロック・サイズを有し、LおよびTは、それぞれ前記第2のクロマ・ブロックの幅および高さを表わす、またはTおよびLは、それぞれ前記第2のクロマ・ブロックの幅および高さを表わし、
ここで、NまたはTは偶数の整数2n(たとえば4または8または16または32)であり、nは正の整数である。
【0387】
ある可能な実装形態では、
・前記クロマ・ブロック・エッジ(903、913、923)が水平クロマ・ブロック・エッジである場合、前記第1のクロマ・ブロックの高さNに沿った方向が前記クロマ・ブロック・エッジに垂直であり、前記第2のクロマ・ブロックの高さTに沿った方向が前記クロマ・ブロック・エッジに垂直である;または
・前記クロマ・ブロック・エッジ(903、913、923)が垂直クロマ・ブロック・エッジである場合、前記第1のクロマ・ブロックの幅Nに沿った方向は前記ブロック・エッジ(903、913、923)に垂直であり、前記第2のクロマ・ブロックの幅Tに沿った方向は前記ブロック・エッジ(903、913、923)に垂直である。
【0388】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第2の画像ブロックは現在ブロックであり、前記第1の画像ブロックは現在ブロックの隣接するブロックである。
【0389】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックがJCCRモードを用いて符号化され、かつ、前記JCCRモードが第1のJCCRモード(たとえば1)である場合、
前記第1の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbpを、前記第1の画像ブロックの第1のルーマ・ブロック(801)の第1のルーマQP(たとえばQpYP)と、前記第1の変換規則とに基づいて、決定し;
前記第1の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrpを、前記第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbpに基づいて、決定する。
【0390】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第2のクロマ・ブロックがJCCRモードを用いて符号化され、かつ、前記JCCRモードが第1のJCCRモード(たとえば1)である場合、
前記第2の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbqを、前記第2の画像ブロックの第2のルーマ・ブロック(802)の第2のルーマQP(たとえばQpYQ)と前記第1の変換規則とに基づいて、決定し;
前記第2の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrqを、前記第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbqに基づいて、決定する。
【0391】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、JCCRモード==1であれば、QpCb=ChromaQpTable[2][Qpx]である、またはJCCRモード==1であれば、QpCb=ChromaQpTable[cIdx-1][Qpx]、cIdx=3であり;
QpCr=(QpCb+1)>>1であり、
ここで、Qpxは、前記第1の画像ブロックの前記第1のルーマ・ブロックの第1のルーマQP(たとえばQpYP)または前記第2の画像ブロックの前記第2のルーマ・ブロックの第2のルーマQP(たとえばQpYQ)を表わし;
ChromaQpTableは、インデックスが2であるクロマQPマッピング・テーブル、またはインデックスが2である情報エントリーを含むクロマQPマッピング・テーブルを表わす;または、ChromaQpTableは、インデックスが3であるクロマQPマッピング・テーブル、またはインデックスが3である情報エントリーを含むクロマQPマッピング・テーブルを表わす。
【0392】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックがJCCRモードを用いて符号化され、かつ、前記JCCRモードが第2のJCCRモード(たとえば2)である場合、
前記第1の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbpを、前記第1の画像ブロックの第1のルーマ・ブロック(801)の第1のルーマQP(たとえばQpYP)と前記第1の変換規則とに基づいて、決定し;
前記第1の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrpを、前記第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbpとして設定する。
【0393】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第2のクロマ・ブロックがJCCRモードを用いて符号化され、かつ、前記JCCRモードが第2のJCCRモード(たとえば2)である場合、
前記第2の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbqを、前記第2の画像の第2のルーマ・ブロック(802)の第2のルーマQPと前記第1の変換規則とに基づいて、決定し;
前記第2の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrqを、前記第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbqとして設定する。
【0394】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、JCCRモード==2であれば、QpCb=ChromaQpTable[2][Qpx]である、またはJCCRモード==2であれば、QpCb=ChromaQpTable[cIdx-1][Qpx]、cIdx=3であり;
QpCr=QpCbであり、
ここで、Qpxは、前記第1の画像ブロックの前記第1のルーマ・ブロックの第1のルーマQPまたは前記第2の画像ブロックの前記第2のルーマ・ブロックの第2のルーマQPを表わし;
ChromaQpTableは、インデックスが2であるクロマQPマッピング・テーブル、またはインデックスが2である情報エントリーを含むクロマQPマッピング・テーブルを表わす;または、ChromaQpTableは、インデックスが3であるクロマQPマッピング・テーブル、またはインデックスが3である情報エントリーを含むクロマQPマッピング・テーブルを表わす。
【0395】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックがJCCRモードを用いて符号化され、かつ、前記JCCRモードが第3のJCCRモード(たとえば3)である場合、
前記第1の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrpを、前記第1の画像ブロックの第1のルーマ・ブロック(801)の第1のルーマQPと前記第1の変換規則とに基づいて、決定し;
前記第1の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbpを、前記第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrpに基づいて、決定する。
【0396】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第2のクロマ・ブロックがJCCRモードを用いて符号化され、かつ、前記JCCRモードが第3のJCCRモード(たとえば3)である場合、
前記第2の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrqを、前記第2の画像ブロックの第2のルーマ・ブロック(802)の第2のルーマQPと前記第1の変換規則とに基づいて、決定し;
前記第2の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbqを、前記第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrqに基づいて、決定する。
【0397】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、JCCRモード==3であれば、QpCr=ChromaQpTable[2][Qpx]である、またはJCCRモード==3であれば、QpCr=ChromaQpTable[cIdx-1][Qpx]、cIdx=3であり;
QpCb=QpCrであり、
ここで、Qpxは、前記第1の画像ブロックの前記第1のルーマ・ブロックの第1のルーマQPまたは前記第2の画像ブロックの前記第2のルーマ・ブロックの第2のルーマQPを表わし;
ChromaQpTableは、インデックスが2であるクロマQPマッピング・テーブル、またはインデックスが2である情報エントリーを含むクロマQPマッピング・テーブルを表わす;または、ChromaQpTableは、インデックスが3であるクロマQPマッピング・テーブル、またはインデックスが3である情報エントリーを含むクロマQPマッピング・テーブルを表わす。
【0398】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックについての前記クロマ量子化パラメータQpCpおよび前記第2のクロマ・ブロックについての前記クロマ量子化パラメータQpCqに基づいて、平均され丸められたクロマ量子化パラメータQpCを決定する前記ステップは:
平均され丸められた第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbを、
・前記第1の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての前記第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbp、および
・前記第2の画像ブロックの前記第1のクロマ成分(たとえばCb成分)についての前記第1のクロマ成分(たとえばCb成分)量子化パラメータQpCbqに基づいて
決定することを含む。
【0399】
第4の側面のいずれかの上記の実装または第4の側面自身による方法のある可能な実装形態では、前記第1のクロマ・ブロックについての前記クロマ量子化パラメータQpCpおよび前記第2のクロマ・ブロックについての前記クロマ量子化パラメータQpCqに基づいて、平均され丸められたクロマ量子化パラメータQpCを決定する前記ステップは:
平均され丸められた第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrを、
・前記第1の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての前記第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrp、および
・前記第2の画像ブロックの前記第2のクロマ成分(たとえばCr成分)についての前記第2のクロマ成分(たとえばCr成分)量子化パラメータQpCrqに基づいて
決定することを含む。
【0400】
解決策4
クロマ・ブロック・タイプ、すなわちCb、CrまたはCb-Cr(Cb成分、Cr成分または合同Cb-Cr符号化ブロック)に基づき、Cb-Crブロック・タイプについての合同Cb-Crモードが2に等しい、すなわち、所与のブロックのTuCResMode[xCb][yCb]が2に等しい場合、下記の式8-952に示されるように、ルーマQPは、それぞれの変換規則(たとえば、クロマQPマッピング・テーブルとそれぞれの公式の組み合わせ)を使用して、ブロックPおよびQのそれぞれについてのクロマQPに別々にマッピングされ、次いで、ブロックPおよびQのクロマQP値の平均が最終的なQP値として設定され、それがその後、ブロッキング解除のさらなる演算のために使用される。
【0401】
変換規則の一例は下記の通り:
Cb成分についての変換規則は、セクション8.7.1において公式8-935、8-936、および8-939を用いて下記で与えられる。すなわち、式8-935、8-936、および8-939は、第1のクロマ成分(たとえばCb成分)のために設計された第2の変換規則R21の例である。式8-936は、クロマQPマッピング・テーブルを用いて表わされる。
【0402】
Cr成分についての変換規則は、セクション8.7.1において公式8-935、8-937、および8-940を用いて下記で与えられる。すなわち、式8-935、8-937、および8-940は、第2のクロマ成分(たとえばCr成分)のために設計された第2の変換規則R22の例である。式8-937は、クロマQPマッピング・テーブルを用いて表わされる。
【0403】
CbCr成分(すなわち、合同Cb-Cr成分)についての変換規則は、セクション8.7.1において式8-935、8-938、および8-941を用いて下記で与えられる。すなわち、式8-935、8-938、および8-941は、合同Cb-Cr成分のために設計された第1の変換規則の例である。式8-938は、クロマQPマッピング・テーブルを用いて表わされる。
【0404】
本開示は、異なるクロマ成分について異なる変換規則を使用することを提案するが、セクション8.7.1で述べた特定の規則または特定の公式に限定されないことに留意されたい。
【0405】
解決策4についての厳密な仕様テキストの変更が以下に与えられる。
【0406】
8.8.3.6.3 クロマ・ブロック・エッジについての決定処理
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
【0407】
このプロセスへの入力は以下の通り:
・クロマ・ピクチャー・サンプル・アレイrecPicture、
・現在ピクチャーの左上のクロマ・サンプルに対する、現在のクロマ符号化ブロックの左上のサンプルを指定するクロマ位置(xCb、yCb)、
・現在のクロマ符号化ブロックの左上のサンプルに対する、現在のクロマ・ブロックの左上のサンプルを指定するクロマ位置(xBl,yBl)、
・垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType、
・色成分インデックスを指定する変数cIdx、
・ピクチャー・レベルのクロマ量子化パラメータ・オフセットを指定する変数cQpPicOffset、
・境界フィルタリング強度を指定する変数bS、
・変数maxFilterLengthCbCr。
【0408】
このプロセスの出力は以下の通り
・修正された変数maxFilterLengthCbCr、
・変数tC
【0409】
変数maxKは次のように導出される:
・edgeTypeがEDGE_VERに等しい場合、以下が適用される:
maxK=(SubHeightC==1) ? 3:1 (8-1124)
・そうでない場合(edgeTypeがEDGE_HORに等しい)、以下が適用される:
maxK=(SubWidthC==1) ? 3:1 (8-1125)
【0410】
i=0…maxFilterLengthCbCrおよびk=0…maxKでの値piおよびqiは、次のように導出される:
・edgeTypeがEDGE_VERに等しい場合、以下が適用される:
qi,k=recPicture[xCb+xBl+i][yCb+yBl+k] (8-1126)
pi,k=recPicture[xCb+xBl-i-1][yCb+yBl+k] (8-1127)
subSampleC=SubHeightC (8-1128)
変数QpQは、クロマ位置(xCb+xB1+i,yCb+yB1+k)およびcIdxを入力として、8.8.3.6.10節において指定されているクロマQP導出プロセスを呼び出すことによって導出される。//ここで、QpQはクロマQP値である。ルーマQP値とクロマQP値を区別するため、請求項部ではQpCQによって表わされる。//
変数QpPは、クロマ位置(xCb+xB1-i-1,yCb+yB1+k])およびcIdxを入力として、8.8.3.6.10節において指定されているクロマQP導出プロセスを呼び出すことによって導出される。//ここで、QpPはクロマQP値である。ルーマQP値とクロマQP値を区別するため、請求項部ではQpCPによって表わされる。//
【0411】
・そうでない場合(edgeTypeがEDGE_HORに等しい)、以下が適用される:
qi,k=recPicture[xCb+xBl+k][yCb+yBl+i] (8-1129)
pi,k=recPicture[xCb+xBl+k][yCb+yBl-i-1] (8-1130)
subSampleC=SubWidthC (8-1131)
変数QpQは、クロマ位置(xCb+xB1+k,yCb+yB1+i)およびcIdxを入力として、8.8.3.6.10節において指定されているクロマQP導出プロセスを呼び出すことによって導出される。//QpQはクロマQP値である。請求項部ではQpCqによって表わされる。//
変数QpPは、クロマ位置(xCb+xB1+k,yCb+yB1-i-1)およびcIdxを入力として、8.8.3.6.10節において指定されているクロマQP導出プロセスを呼び出すことによって導出される。//QpPはクロマQP値である。請求項部ではQpCpによって表わされる。//
[外1]
【0412】
[外2]
【0413】
変数β'の値は、以下のように導出される量子化パラメータQに基づいてテーブル8-18において指定されるように決定される:
Q=Clip3(0,63,QpC+(slice_beta_offset_div2<<1)) (8-1134)
ここで、slice_beta_offset_div2は、サンプルq0,0を含むスライスについてのシンタックス要素slice_beta_offset_div2の値である。
【0414】
変数βは次のように導出される:
β=β'*(1<<(BitDepthC-8)) (8-1135)
【0415】
変数tC'の値は、次のように導出されるクロマ量子化パラメータQに基づいて、テーブル8-18において指定されるように決定される:
Q=Clip3(0,65,QpC+2*(bS-1)+(slice_tc_offset_div2<<1)) (8-1136)
ここで、slice_tc_offset_div2は、サンプルq0,0を含むスライスについてのシンタックス要素slice_tc_offset_div2の値である。
【0416】
変数tCは次のように導出される:
tC=(BitDepthC<10) ? (tC'+2)>>(10-BitDepthC) : tC'*(1<<(BitDepthC-8)) (8-1137)
……
【0417】
8.8.3.6.10 クロマ符号化ブロックについての量子化パラメータ導出プロセス
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
【0418】
このプロセスへの入力は以下の通り:
・所与のクロマ・サンプル位置(xCb,yCb)を含むクロマ符号化ブロック、
・前記所与のクロマ符号化ブロックの色成分インデックスを指定する変数cIdx。
【0419】
このプロセスの出力は、サンプル(xCb,yCb)を含む符号化ブロックの量子化パラメータqPである。
・TuCResMode[xCb][yCb]が2に等しい場合、以下が適用される:
qP=Qp'CbCr-QpBdOffsetC (8-952)
・そうでない場合、cIdxが1に等しい場合、以下が適用される:
qP=Qp'Cb-QpBdOffsetC (8-953)
・そうでない場合(cIdxが2に等しい)、以下が適用される:
qP=Qp'Cr-QpBdOffsetC (8-954)
変数Qp'CbCr、Qp'Cb、Qp'Crは「8.7.1 量子化パラメータの導出プロセス」の節で導出されていることに注意されたい。
【0420】
ある例示的実装では、QPBdoffsetはクロマQP値から減算され(8-952、8-953、8-954に示されるように)、平均化が適用される(下記に呈示される改訂セクション8.8.3.6.3に示されるように)。代替的な設計では、QPBdoffsetは、平均化ステップの間にクロマQP値から減算されてもよい。これら2つの代替的設計の効果は同一である。
【0421】
本開示のいくつかの実施形態による量子化パラメータについての導出プロセスの詳細(図17のS1611またはS1621に示される)は、以下のセクション8.7.1に記載される。
【0422】
8.7.1 量子化パラメータについての導出プロセス
このプロセスへの入力は以下の通り:
・現在ピクチャーの左上のルーマ・サンプルに対する、現在の符号化ブロックの左上のルーマ・サンプルを指定するルーマ位置(xCb,yCb)、
・ルーマ・サンプル単位で現在の符号化ブロックの幅を指定する変数cbWidth、
・ルーマ・サンプル単位で現在の符号化ブロックの高さを指定する変数cbHeight、
・CTUをパーティション分割するために単一ツリー(SINGLE_TREE)が使用されるかデュアルツリーが使用されるか、およびデュアルツリーが使用される場合は、ルーマ(DUAL_TREE_LUMA)が現在処理されているかクロマ成分(DUAL_TREE_CHROMA)が現在処理されているかを指定する変数treeType。
【0423】
このプロセスでは、ルーマ量子化パラメータQp'Yおよびクロマ量子化パラメータQp'CbおよびQp'Crが導出される。
【0424】
ルーマ位置(xQg,yQg)は、現在ピクチャーの左上のルーマ・サンプルに対して、現在の量子化グループの左上のルーマ・サンプルを指定する。水平位置xQgおよび垂直位置yQgは、それぞれCuQgTopLeftXおよびCuQgTopLeftYに等しく設定される。
【0425】
注-:現在の量子化グループは、同じqPY_PREDを共有する符号化ツリー・ブロック内の長方形領域である。その幅および高さは、その左上のルーマ・サンプル位置が変数CuQgTopLeftXおよびCuQgTopLeftYに割り当てられている符号化ツリー・ノードの幅および高さに等しい。
【0426】
treeTypeがSINGLE_TREEまたはDUAL_TREE_LUMAに等しい場合、予測されるルーマ量子化パラメータqPY_PREDは、次の順序付けられたステップによって導出される。
1.変数qPY_PREVが次のように導出される:
・次の条件のうち一つまたは複数が真である場合、qPY_PREVはSliceQpYに等しく設定される:
・現在の量子化グループは、スライス内の最初の量子化グループである。
・現在の量子化グループは、ブリック内の最初の量子化グループである。
・現在の量子化グループは、ブリックのCTB行内の最初の量子化グループであり、entropy_coding_sync_enabled_flagが1に等しい。
・そうでない場合、qPY_PREVは、デコード順で前の量子化グループにおける最後のルーマ符号化単位のルーマ量子化パラメータQpYに等しく設定される。
2.6.4.4節において指定された近隣ブロック利用可能性についての導出プロセスが呼び出される。(xCb,yCb)に等しく設定された位置(xCurr,yCurr)、(xQg-1,yQg)に等しく設定された近傍位置(xNbY,yNbY)、FALSEに等しく設定されたcheckPredModeY、および0に等しく設定されたcIdxが入力で、出力はavailableAに割り当てられる。変数qPY_Aは次のように導出される:
・次の条件のうち一つまたは複数が真である場合、qPY_AはqPY_PREVに等しく設定される:
・availableAがFALSEに等しい。
・ルーマ位置(xQg-1,yQg)をカバーするルーマ符号化ブロックを含むCTBが、(xCb,yCb)にある現在のルーマ符号化ブロックを含むCTBと等しくない、すなわち、以下のすべての条件が真である:
・(xQg-1)>>CtbLog2SizeYが(xCb)>>CtbLog2SizeYと等しくない
・(yQg)>>CtbLog2SizeYが(yCb)>>CtbLog2SizeYと等しくない
・そうでない場合、qPY_Aは、(xQg-1,yQg)をカバーするルーマ符号化ブロックを含む符号化単位のルーマ量子化パラメータQpYに等しく設定される。
3.6.4.4節において指定された近傍ブロック利用可能性についての導出プロセスが呼び出される。(xCb,yCb)に等しく設定された位置(xCurr,yCurr)、(xQg,yQg-1)に等しく設定された近傍位置(xNbY,yNbY)、FALSEに等しく設定されたcheckPredModeY、および0に等しく設定されたcIdxが入力で、出力はavailableBに割り当てられる。変数qPY_Bは次のように導出される:
・次の条件のうち一つまたは複数が真である場合、qPY_BはqPY_PREVに等しく設定される:
・availableBがFALSEに等しい。
・ルーマ位置(xQg,yQg-1)をカバーするルーマ符号化ブロックを含むCTBが、(xCb,yCb)にある現在のルーマ符号化ブロックを含むCTBと等しくない、すなわち、以下のすべての条件が真である:
・(xQg)>>CtbLog2SizeYが(xCb)>>CtbLog2SizeYと等しくない
・(yQg-1)>>CtbLog2SizeYが(yCb)>>CtbLog2SizeYと等しくない
・そうでない場合、qPY_Bは、(xQg,yQg-1)をカバーするルーマ符号化ブロックを含む符号化単位のルーマ量子化パラメータQpYに等しく設定される。
4.予測されるルーマ量子化パラメータqPY_PREDは次のように導出される:
・以下の条件がすべて真である場合、qPY_PREDは、(xQg,yQg-1)をカバーするルーマ符号化ブロックを含む符号化単位のルーマ量子化パラメータQpYに等しく設定される:
・availableBがTRUEに等しい。
・現在の量子化グループはブリック内のCTB行における最初の量子化グループである
・そうでない場合、qPY_PREDは次のように導出される:
qPY_PRED=(qPY_A+qPY_B+1)>>1 (8-932)
【0427】
変数QpYは次のように導出される:
QpY=((qPY_PRED+CuQpDeltaVal+64+2*QpBdOffsetY)%(64+QpBdOffsetY))-QpBdOffsetY (8-933)
【0428】
ルーマ量子化パラメータQp'Yは次のように導出される:
Qp'Y=QpY+QpBdOffsetY (8-934)
【0429】
ChromaArrayTypeが0に等しくなく、treeTypeがSINGLE_TREEまたはDUAL_TREE_CHROMAに等しい場合、以下が適用される:
・treeTypeがDUAL_TREE_CHROMAに等しい場合、変数QpYはルーマ位置(xCb+cbWidth/2,yCb+cbHeight/2)をカバーするルーマ符号化単位のルーマ量子化パラメータQpYに等しく設定される。
・変数qPCb、qPCrおよびqPCbCrは、次のように導出される:
qPiChroma=Clip3(-QpBdOffsetC,63,QpY) (8-935)
qPiCb=ChromaQpTable[0][qPiChroma] (8-936)
qPiCr=ChromaQpTable[1][qPiChroma] (8-937)
qPiCbCr=ChromaQpTable[2][qPiChroma] (8-938)
・CbおよびCr成分についてのクロマ量子化パラメータQp'CbおよびQp'Crならびに合同Cb-Cr符号化Qp'CbCrは、以下のように導出される:
Qp'Cb=Clip3(-QpBdOffsetC,63,qPCb+pps_cb_qp_offset+slice_cb_qp_offset+CuQpOffsetCb)+QpBdOffsetC (8-939)
Qp'Cr=Clip3(-QpBdOffsetC,63,qPCr+pps_cr_qp_offset+slice_cr_qp_offset+CuQpOffsetCr)+QpBdOffsetC (8-940)
Qp'CbCr=Clip3(-QpBdOffsetC,63,qPCbCr+pps_cbcr_qp_offset+slice_cbcr_qp_offset+CuQpOffsetCbCr)+QpBdOffsetC (8-941)
【0430】
8-935において説明したように、ルーマQP(たとえばQpY)は、クロマQP(たとえばqPiCb、qPiCrまたはqPiCbCr)を導出するために直接的には使用されないことが留意される。一例では、クリッピングのようなさらなるステップがルーマQP(QPY)に適用されることができる。
【0431】
本開示の解決策4によるクロマ・ブロック・エッジについての決定プロセス(図16のS1601に示される)は、改訂セクション8.8.3.6.3において次のように記載される:
【0432】
8.8.3.6.3 クロマ・ブロック・エッジについての決定プロセス

それぞれサンプルq0,0およびp0,0を含む符号化ブロックを含む符号化単位について、変数QpQおよびQpPは、TuCResMode[xCb][yCb]が2に等しい場合はQp'CbCr-QpBdOffsetCに等しく、cIdxが1に等しい場合はQp'Cb-QpBdOffsetCに等しく、cIdxが2に等しい場合はQp'Cr-QpBdOffsetCに等しく設定される。
変数QpCは次のように導出される:
QpC=(QpQ+QpP+1)>>1
【0433】
セクション8.8.3.6.3を参照されたい。ある例示的実装では、QPBdoffsetはクロマQP値から減算され(8-952、8-953、8-954に示されるように)、次いで、平均化が直接適用される(セクション8.8.3.6.3に示される)。これが、平均化ステップの間にQPBdoffsetが減算される仕方と実質的に同じであることが理解できる。ステップ1631(図17に示される)の例示的な詳細は、VVC仕様の上記セクション8.8.3.6.3に記載されており、以下では繰り返さない。
【0434】
解決策5
解決策5は、変換規則がわずかに異なる点を除き、基本的に解決策4と同様である。
【0435】
仕様書テキストを下記に添付する。
【0436】
8.8.3.6.3 クロマ・ブロック・エッジについての決定処理
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
【0437】
このプロセスへの入力は以下の通り:
・クロマ・ピクチャー・サンプル・アレイrecPicture、
・現在ピクチャーの左上のクロマ・サンプルに対する、現在のクロマ符号化ブロックの左上のサンプルを指定するクロマ位置(xCb,yCb)、
・現在のクロマ符号化ブロックの左上のサンプルに対する、現在のクロマ・ブロックの左上のサンプルを指定するクロマ位置(xBl,yBl)、
・垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType、
・色成分インデックスを指定する変数cIdx、
・ピクチャー・レベルのクロマ量子化パラメータ・オフセットを指定する変数cQpPicOffset、
・境界フィルタリング強度を指定する変数bS、
・変数maxFilterLengthCbCr。
【0438】
このプロセスの出力は以下の通り
・修正された変数maxFilterLengthCbCr、
・変数tC
【0439】
変数maxKは次のように導出される:
・edgeTypeがEDGE_VERに等しい場合、以下が適用される:
maxK=(SubHeightC==1) ? 3:1 (8-1124)
・そうでない場合(edgeTypeがEDGE_HORに等しい)、以下が適用される:
maxK=(SubWidthC==1) ? 3:1 (8-1125)
【0440】
i=0…maxFilterLengthCbCrおよびk=0…maxKでの値piおよびqiは、次のように導出される:
・edgeTypeがEDGE_VERに等しい場合、以下が適用される:
qi,k=recPicture[xCb+xBl+i][yCb+yBl+k] (8-1126)
pi,k=recPicture[xCb+xBl-i-1][yCb+yBl+k] (8-1127)
subSampleC=SubHeightC (8-1128)
変数QpQは、クロマ位置(xCb+xB1+i,yCb+yB1+k)およびcIdxを入力として、8.8.3.6.10節において指定されているクロマQP導出プロセスを呼び出すことによって導出される。
変数QpPは、クロマ位置(xCb+xB1-i-1,yCb+yB1+k)およびcIdxを入力として、8.8.3.6.10節において指定されているクロマQP導出プロセスを呼び出すことによって導出される。
・そうでない場合(edgeTypeがEDGE_HORに等しい)、以下が適用される:
qi,k=recPicture[xCb+xBl+k][yCb+yBl+i] (8-1129)
pi,k=recPicture[xCb+xBl+k][yCb+yBl-i-1] (8-1130)
subSampleC=SubWidthC (8-1131)
【0441】
変数QpQは、クロマ位置(xCb+xB1+k,yCb+yB1+i)およびcIdxを入力として、8.8.3.6.10節において指定されているクロマQP導出プロセスを呼び出すことによって導出される。
変数QpPは、クロマ位置(xCb+xB1+k,yCb+yB1-i-1)およびcIdxを入力として、8.8.3.6.10節において指定されているクロマQP導出プロセスを呼び出すことによって導出される。
[外3]
[外4]
【0442】
8.8.3.6.10 クロマ符号化ブロックについての量子化パラメータ導出プロセス
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
【0443】
このプロセスへの入力は以下の通り:
・所与のクロマ・サンプル位置(xCb,yCb)を含むクロマ符号化ブロック、
・前記所与のクロマ符号化ブロックの色成分インデックスを指定する変数cIdx。
【0444】
このプロセスの出力は、サンプル(xCb,yCb)を含む符号化ブロックの量子化パラメータqPである。
・TuCResMode[xCb][yCb]が2に等しい場合、以下が適用される:
qP=QpCbCr (8-952)
cQpPicOffsetはpps_joint_cbcr_qp_offsetに等しく設定される。
・そうでない場合、cIdxが1に等しい場合、以下が適用される:
qP=QpCb (8-953)
・そうでない場合(cIdxが2に等しい)、以下が適用される:
qP=QpCr (8-954)
qP=Clip3(0,63,qP+cQpPicOffset)
【0445】
注-変数cQpPicOffsetは、フィルタ処理されるクロマ成分がCb成分かCr成分かによって、pps_cb_qp_offsetまたはpps_cr_qp_offsetの値についての調整を提供する。しかしながら、ピクチャー内で調整量を変える必要を避けるために、フィルタリング・プロセスは、slice_cb_qp_offsetまたはslice_cr_qp_offsetの値についての調整も、(cu_chroma_qp_offset_enabled_flagが1に等しい場合)CuQpOffsetCb、CuQpOffsetCr、またはCuQpOffsetCbCrの値についての調整も含まない。
【0446】
注-変数QpCbCr、QpCb、QpCrは、セクション8.7.1(量子化パラメータについての導出プロセス)におけるように導出される。
【0447】
式8-935において、QpYは、第1の画像ブロック(601、601')の第1のルーマ・ブロック(801)の第1のルーマQP(たとえばQpYP)または第2の画像ブロック(602、602')の第2のルーマ・ブロック(802)の第2のルーマQP(たとえばQpYQ)を表わす。
【0448】
式8-936、8-937、8-938において、ChromaQpTableはクロマQpマッピング・テーブル(たとえばChromaQPTable)を表わす。
【0449】
QpBdOffsetCは、クロマ量子化パラメータ範囲オフセットの値を表わす。QpBdOffsetCの値は次のように導出される:QpBdOffsetC=6*bit_depth_chroma_minus8、ここで、「bit_depth_chroma_minus8」は、シーケンスパラメータセット(SPS)において信号伝達されるパラメータである。
【0450】
pps_cb_qp_offsetおよびpps_cr_qp_offsetは、それぞれQp'CbおよびQp'Crを導出するために使用されるルーマ量子化パラメータQp'Yへのオフセットを指定する。pps_cb_qp_offsetおよびpps_cr_qp_offsetの値は、-12から+12まで(両端含む)の範囲とする。ChromaArrayTypeが0に等しい場合、pps_cb_qp_offsetおよびpps_cr_qp_offsetはデコード・プロセスにおいて使用されず、デコーダはそれらの値を無視する。
【0451】
pps_joint_cbcr_qp_offsetは、Qp'CbCrを導出するために使用されるルーマ量子化パラメータQp'Yへのオフセットを指定する。pps_joint_cbcr_qp_offsetの値は、-12から+12まで(両端含む)の範囲とする。ChromaArrayTypeが0に等しい、またはsps_joint_cbcr_enabled_flagが0に等しい場合、pps_joint_cbcr_qp_offsetはデコード・プロセスにおいて使用されず、デコーダはその値を無視する。
【0452】
slice_cb_qp_offsetは、Qp'Cb量子化パラメータの値を決定するときにpps_cb_qp_offsetの値に加えられる差分を指定する。slice_cb_qp_offsetの値は、-12から+12まで(両端含む)の範囲とする。slice_cb_qp_offsetが存在しない場合は、0に等しいと推定される。pps_cb_qp_offset+slice_cb_qp_offsetの値は、-12から+12まで(両端含む)の範囲とする。
【0453】
slice_cr_qp_offsetは、Qp'Cr量子化パラメータの値を決定するときにpps_cr_qp_offsetの値に加えられる差分を指定する。slice_cr_qp_offsetの値は、-12から+12まで(両端含む)の範囲とする。slice_cr_qp_offsetが存在しない場合は、0に等しいと推定される。pps_cr_qp_offset+slice_cr_qp_offsetの値は、-12から+12まで(両端含む)の範囲とする。
【0454】
slice_joint_cbcr_qp_offsetは、Qp'CbCrの値を決定するときにpps_joint_cbcr_qp_offsetの値に加えられる差分を指定する。slice_joint_cbcr_qp_offsetの値は、-12から+12まで(両端含む)の範囲とする。slice_joint_cbcr_qp_offsetが存在しない場合は、0に等しいと推定される。pps_joint_cbcr_qp_offset+slice_joint_cbcr_qp_offsetの値は、-12から+12まで(両端含む)の範囲とする。
【0455】
cu_chroma_qp_offset_flagが存在し、かつ1に等しい場合、それはcb_qp_offset_list[]内のエントリーがCuQpOffsetCbの値を決定するために使用され、cr_qp_offset_list[]内の対応するエントリーがCuQpOffsetCrの値を決定するために使用され、joint_cbcr_qp_offfset_list[]内の対応するエントリーがCuQpOffsetCbCrの値を決定するために使用されることを指定する。cu_chroma_qp_offset_flagが0に等しいことは、CuQpOffsetCb、CuQpOffsetCr、およびCuQpOffsetCbCrの値を決定するためにこれらのリストが使用されないことを指定する。
【0456】
cu_chroma_qp_offset_idxが存在する場合、それは、CuQpOffsetCb、CuQpOffsetCr、CuQpOfsetCbCrの値を決定するために使用される、cb_qp_offset_list[]、cr_qp_offset_list[]、およびjoint_cbcr_qp_offset_list[]へのインデックスを指定する。存在する場合、cu_chroma_qp_offset_idxの値は、0からchroma_qp_offset_list_len_minus1まで(両端含む)の範囲とする。存在しない場合、cu_chroma_qp_offset_idxの値は0に等しいと推定される。
【0457】
cu_chroma_qp_offset_flagが存在する場合、以下が適用される:
・変数IsCuChromaQpOffsetCodedが1に設定される。
・変数CuQpOffsetCb、CuQpOffsetCr、およびCuQpOffsetCbCrは以下のように導出される:
・cu_chroma_qp_offset_flagが1に等しい場合、以下が適用される:
CuQpOffsetCb=cb_qp_offset_list[cu_chroma_qp_offset_idx] (7-166)
CuQpOffsetCr=cr_qp_offset_list[cu_chroma_qp_offset_idx] (7-167)
CuQpOffsetCbCr=joint_cbcr_qp_offset_list[cu_chroma_qp_offset_idx] (7-168)
・そうでない場合(cu_chroma_qp_offset_flagが0に等しい)、CuQpOffsetCb、CuQpOffsetCr、およびCuQpOffsetCbCrはすべて0に等しく設定される。
【0458】
cb_qp_offset_list[i]、cr_qp_offset_list[i]、joint_cbcr_qp_offset_list[i]は、それぞれQp'Cb、Qp'Cr、およびQp'CbCrの導出において使用されるオフセットを指定する。cb_qp_offset_list[i]、cr_qp_offset_list[i]、およびjoint_cbcr_qp_offset_list[i]の値は、-12から+12まで(両端含む)の範囲とする。
【0459】
特に、装置実施形態は、基本的には、方法実施形態に類似しており、よって手短かに記載される。各ユニットの特定の機能の実行プロセスについては、方法実施形態における部分的記述が参照されてもよい。
【0460】
図10は、本開示に記載される技法(たとえば、図9A~9Hまたは図11~13または図16~17に基づいて、さらなる詳細が以下に説明される)による例示的なブロッキング解除フィルタ装置1000を示すブロック図である。ブロッキング解除フィルタ装置1000は、本開示に記載されるさまざまな例に従ってブロッキング解除技法を実行するように構成されてもよい。一般に、図2のループ・フィルタ・ユニット220および図3のループ・フィルタ・ユニット320のいずれかまたは両方は、ブロッキング解除フィルタ装置1000のコンポーネントと実質的に同様のコンポーネントを含んでいてもよい。ビデオ・エンコーダ、ビデオ・デコーダ、ビデオ・エンコーダ/デコーダ(コーデック)等のような他のビデオ符号化装置も、ブロッキング解除フィルタ1000と実質的に同様のコンポーネントを含んでいてもよい。ブロッキング解除フィルタ装置1000は、ハードウェア、ソフトウェア、もしくはファームウェア、またはそれらの任意の組み合わせで実装されうる。ソフトウェアまたはファームウェアに実装される場合、対応するハードウェア(たとえば一つまたは複数のプロセッサもしくは処理ユニットおよび該ソフトウェアまたはファームウェアの命令を記憶するためのメモリなど)も提供されうる。
【0461】
10の例では、ブロッキング解除フィルタ装置1000は、ブロッキング解除決定ユニット1004、メモリに記憶されたサポート定義1002、ブロッキング解除フィルタリング・ユニット1006、メモリに記憶されたブロッキング解除フィルタ・パラメータ1008、エッジ位置特定ユニット1003、およびエッジ位置データ構造1005を含む。ブロッキング解除フィルタ1000の構成要素の任意のものまたは全部が機能的に統合されてもよい。ブロッキング解除フィルタ1000の構成要素は、説明の目的のためにのみ、別個に示されている。一般に、ブロッキング解除フィルタ1000は、たとえば、ブロックについて予測データを残差データと組み合わせる加算コンポーネント114、214から、デコードされたブロックについてのデータを受領する。該データは、ブロックがどのように予測されたかの指標をさらに含んでいてもよい。以下に記載される例では、ブロッキング解除フィルタ装置1000は、CTB(またはCTU)に関連付けられたデコードされたビデオ・ブロックおよび該CTBのためのCU四分木を含むデータを受領するように構成され、ここで、CU四分木は、CTBがどのようにCUまたはCBおよびTUまたはTBに分割されるかを記述する。
【0462】
ブロッキング解除フィルタ装置1000は、ブロッキング解除フィルタ装置1000のメモリまたは対応するビデオ符号化装置によって提供される外部メモリにおいてエッジ位置データ構造1005を維持しうる。いくつかの例では、エッジ位置特定ユニット1003は、CTBがどのようにCUまたはCBおよびTUまたはTBに分割されるかを示す、CTBに対応する四分木を受領してもよい。次いで、エッジ位置特定ユニット1003は、CU四分木を解析して、ブロッキング解除のための候補である、CTB内のTUまたはCUに関連付けられたデコードされたビデオ・ブロック間のエッジを決定することができる。
【0463】
エッジ位置データ構造1005は、水平寸法、垂直寸法、および水平エッジおよび垂直エッジを表わす寸法を有するアレイを含んでいてもよい。一般に、ビデオ・ブロック間のエッジは、CTBの最小サイズのCU、またはTUもしくはCUに関連する2つのビデオ・ブロック間に生じうる。CTBがN×Nのサイズをもつと仮定し、CTBの最小サイズのCUがM×Mのサイズであると仮定すると、アレイは[N/M]×[N/M]×2のサイズをもちうる。ここで、"2"は、CU間のエッジの2つの可能な方向(水平および垂直)を表わす。たとえば、CTBが64×64ピクセルをもつとし、8×8の最小サイズのCUまたはTUを仮定すると、アレイは[8]×[8]×[2]のエントリーを含むことができる。
【0464】
各エントリーは、一般に、2つのビデオ・ブロック間の可能なエッジに対応しうる。エッジ位置データ構造1005の各エントリーに対応するLCU内の位置のそれぞれに、エッジが実際には存在しないことがある。よって、データ構造の値は、偽に初期化されてもよい。一般に、エッジ位置特定ユニット1003は、CU四分木を分析して、CTBのTUまたはCUに関連する2つのビデオ・ブロック間のエッジの位置を決定し、エッジ位置データ構造1005内の対応する値を真に設定しうる。
【0465】
一般に、前記アレイのエントリーは、対応するエッジがブロッキング解除のための候補としてCTB内に存在するかどうかを記述することができる。すなわち、エッジ位置特定ユニット1003が、CTBのTUまたはCUに関連付けられた2つの隣接するビデオ・ブロック間のエッジが存在すると判断した場合、エッジ位置特定ユニット1003は、そのエッジが存在することを示すために、エッジ位置データ構造1005内の対応するエントリーの値を(たとえば、「真」の値に)設定することができる。
【0466】
ブロッキング解除決定ユニット1004は、一般に、2つの隣接するブロックについて、2つのブロック間のエッジがブロッキング解除されるべきかどうかを決定する。ブロッキング解除決定ユニット1004は、エッジ位置データ構造1005を使用してエッジの位置を決定することができる。エッジ位置データ構造体1005の値がブール値を有する場合、ブロッキング解除決定ユニット1004は、いくつかの例では、「真」値がエッジの存在を示し、「偽」値がエッジが存在しないことを示すと判断してもよい。
【0467】
一般に、ブロッキング解除決定ユニット1004は、一つまたは複数のブロッキング解除決定関数を有するように構成される。それらの関数は、ブロック間のエッジを横切るピクセルのラインに適用される複数の係数を含んでいてもよい。たとえば、それらの関数は、エッジに対して垂直なピクセルのラインに適用されてもよく、ここで、いくつかのピクセルは2つのブロックの一方にあり、いくつかのピクセルは2つのブロックの他方にある。サポート定義1002は、それらの関数についてのサポートを定義する。一般に、「サポート」は、関数が適用されるピクセルに対応する。
【0468】
ブロッキング解除決定ユニット1004は、ビデオ・データの2つのブロック間の特定のエッジがブロッキング解除されるべきかどうかを決定するために、一つまたは複数のブロッキング解除決定関数を、サポート定義1002によって定義されるようなサポートの一つまたは複数のセットに適用するように構成されてもよい。ブロッキング解除決定ユニット1004から出る破線は、フィルタリングされることなく出力されるブロックのデータを表わす。ブロッキング解除決定ユニット1004が、2つのブロックの間のエッジがフィルタリングされるべきでないと判断する場合、ブロッキング解除フィルタ1000は、データを変更することなく、ブロックのデータを出力してもよい。すなわち、データは、ブロッキング解除フィルタリング・ユニット1006をバイパスしてもよい。他方、ブロッキング解除決定ユニット1004がエッジがブロッキング解除されるべきであると判断する場合は、ブロッキング解除決定ユニット1004は、エッジをブロッキング解除するために、ブロッキング解除フィルタリング・ユニット1006に、エッジ近傍のピクセルについての値をフィルタリングさせてもよい。
【0469】
ブロッキング解除フィルタリング・ユニット1006は、ブロッキング解除決定ユニット1004によって示される、ブロッキング解除されるべきエッジについて、ブロッキング解除フィルタ・パラメータ1008から、ブロッキング解除フィルタの定義を取得する。一般に、エッジのフィルタリングは、ブロッキング解除されるべき現在のエッジの近傍からのピクセル値を使用する。よって、ブロッキング解除決定関数およびブロッキング解除フィルタの両方は、エッジの両側に、あるサポート領域を有することができる。エッジの近傍のピクセルにブロッキング解除フィルタを適用することによって、ブロッキング解除フィルタリング・ユニット1006は、エッジの近くの高周波の遷移が減衰されるように、ピクセルの値を平滑化することができる。このようにして、エッジの近くのピクセルにブロッキング解除フィルタを適用することにより、エッジの近くのブロック状アーチファクトを低減することができる。
【0470】
図16は、本開示に記載される技法(たとえば、図9A~9H、図10図12図13、および図17に基づいて、さらなる詳細が下記で説明される)に従った別の例示的なブロッキング解除方法を示すブロック図である。ブロッキング解除方法1600は、画像エンコードおよび/または画像デコードにおいて、第1の画像ブロック(601、601')の第1のクロマ・ブロック(901、911、921、931、941、951、961、971)と第2の画像ブロック(602、602')の第2のクロマ・ブロック(902、912、922、932、942、952、962、972)との間のクロマ・ブロック・エッジ(903、913、923、933、943、953、963、973)をブロッキング解除するためのものであり、ブロッキング解除方法1600は、以下を含む:
・クロマ・ブロック・エッジについての決定プロセスを実行1601する。図17に示されるように、決定プロセスは、以下を含む:
・第1の画像ブロック(601、601')の第1のルーマ・ブロック(801)についての第1のルーマQP(たとえばQpYP)および一つまたは複数のクロマ量子化パラメータ(QP)マッピング・テーブルに基づいて、第1のクロマ・ブロック(901、911、921、931、941、951、961、971)についてのクロマ量子化パラメータQpCpを決定1611する;
・第2の画像ブロック(602、602')の第2のルーマ・ブロック(802)についての第2のルーマQP(たとえばQpYQ)および前記一つまたは複数のクロマQPマッピング・テーブルに基づいて、第2のクロマ・ブロック(902、912、922、932、942、952、962、972)についてのクロマ量子化パラメータQpCqを決定1621する;
・第1のクロマ・ブロック(901、911、921、931、941、951、961、971)についてのクロマ量子化パラメータQpCpおよび第2のクロマ・ブロック(902、912、922、932、942、952、962、972)についてのクロマ量子化パラメータQpCqに基づいて、平均され丸められたクロマ量子化パラメータQpCを決定1631する;
・平均され丸められたクロマ量子化パラメータ(QpC)に基づいて閾値パラメータ(tC)を決定1641する;
・少なくとも前記閾値パラメータ(tC)に基づいて、クロマ・ブロック・エッジ(903、913、923)についてフィルタリング・プロセスを実行1603する。
【0471】
図11は、本開示に記載される技法(たとえば、図9、10、12、および13に基づいて、さらなる詳細が下記で説明される)に従った別の例示的なブロッキング解除方法を示すブロック図である。
【0472】
図11に示されるように、ステップ1101では、ブロッキング解除の方向における所与のエッジに垂直でありかつ隣接する両方のブロックのサイズが、8サンプル以上であるかどうかが判定される。はいの場合、クロマ・ブロック・エッジについての決定プロセスが実行される。決定プロセスは、ステップ1103およびステップ1107を含んでいてもよい。ステップ1103の詳細は、後に与えられる。ステップ1107では、長いフィルタ(たとえば、より長いタップ・フィルタ)が適用されるべきか否かが決定され、クロマのより長いタップ・フィルタは、さらなるクロマのより長いタップ・フィルタ決定に基づいて適用されてもよい。ブロックのうちの少なくとも1つについて、ブロック・サイズが8サンプル以下である場合、最大で(1+1)個のサンプルを修正する通常の弱いフィルタが、それぞれのエッジの境界強度値に基づいて呼び出される(ステップ1105)。すなわち、エッジの境界強度(bS)が、1以上であれば、(1+1)弱フィルタが適用される。bS値が0の場合、ブロッキング解除フィルタは所与のエッジについて全く適用されない。
【0473】
ブロックPおよびQの両方についてブロック・サイズが8サンプル以上である場合、tCおよびベータ値を決定または導出するために使用される平均QPが計算される。tCおよびベータは、それぞれのテーブルから導出され、ブロックPおよびQの両方の平均QP値によってインデックス付けされる2つの閾値である。
【0474】
tCおよびベータ値は、上記でJVET-O2001のセクション8.8.3.6.3において、またセクション8.8.3.6.9においても記載されているブロッキング解除決定においてさらに使用される。すべての決定が真であると評価された場合、クロマのより長いタップ・フィルタ(3+3)が呼び出される。tCはさらに、上記でJVET-O2001のセクション8.8.3.6.9において記載されているクロマ・サンプルについてのフィルタリング・プロセスにおいて使用される。
【0475】
ブロッキング解除決定は閾値tCおよびベータ値に依存し、クロマ・サンプルについてのフィルタリング・プロセスは閾値tCに依存するので、この方法を用いることにより、合同Cb-Cr残差(JCCR)モードを用いて符号化されるブロックのために使用されるクロマQP値が、その対応するルーマQP値から正しくマッピングされることができ、正しいブロッキング解除決定が達成され、それにより、より良い視覚的品質が達成される。
【0476】
当業者は、さまざまな図面(方法および装置)の「ブロック」(「ユニット」)が、本発明の実施形態の機能(必ずしもハードウェアまたはソフトウェアにおける個々の「ユニット」ではなく)を表現または記述しており、よって、方法実施形態(単位=ステップ)のみならず装置実施形態の機能または特徴をも等しく記述していることを理解するであろう。
【0477】
下記は、上記の実施形態に示されるエンコード方法およびデコード方法の適用およびそれを用いたシステムの説明である。
【0478】
図14は、コンテンツ配送サービスを実現するためのコンテンツ供給システム3100を示すブロック図である。このコンテンツ供給システム3100は、捕捉装置3102、端末装置3106を含み、任意的にディスプレイ3126を含む。捕捉装置3102は、通信リンク3104を通じて端末装置3106と通信する。通信リンクは、上述の通信チャネル13を含んでいてもよい。通信リンク3104は、WIFI、イーサネット、ケーブル、無線(3G/4G/5G)、USB、またはそれらの任意の種類の組み合わせなどを含むが、これらに限定されない。
【0479】
捕捉装置3102は、データを生成し、上記の諸実施形態に示されるようなエンコード方法によって該データをエンコードしてもよい。あるいはまた、捕捉装置3102は、ストリーミングサーバー(図には示されていない)にデータを配送することができ、サーバーは、データをエンコードし、エンコードされたデータを端末装置3106に送信する。捕捉装置3102は、カメラ、スマートフォンもしくはパッド、コンピュータもしくはラップトップ、ビデオ会議システム、PDA、車載装置、またはそれらの任意のものの組み合わせなどを含むが、これらに限定されない。たとえば、捕捉装置3102は、上述のように源装置12を含んでいてもよい。データがビデオを含む場合、捕捉装置3102に含まれるビデオ・エンコーダ20が、実際にビデオ・エンコード処理を実行してもよい。データがオーディオ(すなわち、音声)を含む場合、捕捉装置3102に含まれるオーディオ・エンコーダが、実際にオーディオ・エンコード処理を実行してもよい。いくつかの実際的なシナリオについては、捕捉装置3102は、エンコードされたビデオおよびオーディオ・データを、それらを一緒に多重化することによって配送する。たとえばビデオ会議システムにおける、他の実際的なシナリオについては、エンコードされたオーディオ・データおよびエンコードされたビデオ・データは多重化されない。捕捉装置3102は、エンコードされたオーディオ・データおよびエンコードされたビデオ・データを、端末装置3106に別個に配送する。
【0480】
コンテンツ供給システム3100では、端末装置310は、エンコードされたデータを受信および再生する。端末装置3106は、スマートフォンもしくはパッド3108、コンピュータもしくはラップトップ3110、ネットワークビデオレコーダー(NVR)/デジタルビデオレコーダー(DVR)3112、TV 3114、セットトップボックス(STB)3116、ビデオ会議システム3118、ビデオ監視システム3120、パーソナルデジタルアシスタント(PDA)3122、車両搭載装置3124、またはこれらの任意のものの組み合わせなどであって上述したエンコードされたデータをデコードすることができるものといった、データ受信および復元能力を有する装置であってもよい。たとえば、端末装置3106は、上記のような宛先装置14を含んでいてもよい。エンコードされたデータがビデオを含む場合、端末装置に含まれるビデオ・デコーダ30は、ビデオ・デコードを実行するために優先される。エンコードされたデータがオーディオを含む場合、端末装置に含まれるオーディオ・デコーダは、オーディオ・デコード処理を実行するために優先される。
【0481】
ディスプレイを有する端末装置、たとえばスマートフォンもしくはパッド3108、コンピュータもしくはラップトップ3110、ネットワークビデオレコーダー(NVR)/デジタルビデオレコーダー(DVR)3112、TV 3114、パーソナルデジタルアシスタント(PDA)3122、または車両搭載装置3124の場合、端末装置は、デコードされたデータをそのディスプレイに与えることができる。ディスプレイを備えていない端末装置、たとえばSTB 3116、ビデオ会議システム3118、またはビデオ監視システム3120については、デコードされたデータを受信し、表示するために外部ディスプレイ3126がそこに接触される。
【0482】
このシステムにおける各装置がエンコードまたはデコードを実行するとき、上述した実施形態に示されるようなピクチャー・エンコード装置またはピクチャー・デコード装置が使用できる。
【0483】
図15は、端末装置3106の一例の構造を示す図である。端末装置3106が捕捉装置3102からストリームを受信した後、プロトコル進行ユニット3202が、ストリームの送信プロトコルを解析する。このプロトコルは、リアルタイムストリーミングプロトコル(RTSP)、ハイパーテキスト転送プロトコル(HTTP)、HTTPライブストリーミングプロトコル(HLS)、MPEG-DASH、リアルタイムトランスポートプロトコル(RTP)、リアルタイムメッセージングプロトコル(RTMP)、またはそれらの任意の種類の組み合わせなどを含むが、これらに限定されない。
【0484】
プロトコル進行ユニット3202がストリームを処理した後、ストリームファイルが生成される。ファイルは、多重分離ユニット3204に出力される。多重分離ユニット3204は、多重化されたデータをエンコードされたオーディオ・データとエンコードされたビデオ・データとに分離することができる。上述したように、たとえばビデオ会議システムにおけるいくつかの実際的なシナリオについては、エンコードされたオーディオ・データおよびエンコードされたビデオ・データは多重化されない。この状況では、エンコードされたデータは、多重分離ユニット3204を介することなく、ビデオ・デコーダ3206およびオーディオ・デコーダ3208に送信される。
【0485】
多重分離処理を介して、ビデオ・エレメンタリーストリーム(ES)、オーディオES、および任意的に字幕が生成される。上述した諸実施形態で説明されたようなビデオ・デコーダ30を含むビデオ・デコーダ3206は、上述した諸実施形態に示されるようなデコード方法によってビデオESをデコードして、ビデオ・フレームを生成し、このデータを同期ユニット3212に与える。オーディオ・デコーダ3208は、オーディオESをデコードしてオーディオ・フレームを生成し、このデータを同期ユニット3212に与える。あるいはまた、ビデオ・フレームは、同期ユニット3212に与える前に、バッファ(図Yには示さず)に格納されてもよい。同様に、オーディオ・フレームは、同期ユニット3212に与える前に、バッファ(図Yには示さず)に格納されてもよい。
【0486】
同期ユニット3212は、ビデオ・フレームとオーディオ・フレームを同期させ、ビデオ/オーディオをビデオ/オーディオ・ディスプレイ3214に供給する。たとえば、同期ユニット3212は、ビデオおよびオーディオ情報の提示を同期させる。符号化されたオーディオおよびビジュアルデータの提示に関するタイムスタンプおよびデータストリーム自体の送達に関するタイムスタンプを使用して、情報がシンタックスにおいて符号化されてもよい。
【0487】
字幕がストリームに含まれる場合、字幕デコーダ3210は、字幕をデコードし、それをビデオ・フレームおよびオーディオ・フレームと同期させ、ビデオ/オーディオ/字幕をビデオ/オーディオ/字幕ディスプレイ3216に供給する。
【0488】
本発明は、上述のシステムに限定されるものではなく、上述の諸実施形態におけるピクチャー・エンコード装置またはピクチャー・デコード装置のいずれかが、他のシステム、たとえば車両システムに組み込まれてもよい。
【0489】
数学演算子
本願で使用される数学演算子は、Cプログラミング言語で使用されるものに似ている。しかしながら、整数除算演算および算術シフト演算の結果は、より精密に定義され、累乗および実数値除算などの追加的な演算が定義される。番号付けおよび計数の慣例は一般に0から始まる。たとえば、"1番目の"は0番目と等価であり、"第2の"は1番目と等価、などとなる。
【0490】
算術演算子
次の演算子は、次のように定義される:
+ 加算
- 減算(2引数演算子として)または符号を変えること(単項プレフィックス演算子として)
* 行列乗算を含む乗算
xy 累乗。xのy乗を指定する。他の文脈では、そのような表記は、累乗としての解釈が意図されない上付きのために使用される。
/ 整数除算。結果は結果がゼロに向かって切り捨てられる。たとえば、7/4および-7/-4は切り捨てられて1となり、-7/4および7/-4は切り捨てられて-1となる。
÷ 切り捨てや丸めが意図されていない数式における除算を示すために使用される。
【数1】
切り捨てや丸めが意図されていない数式における除算を示すために使用される。
【数2】
iがxからyまで(yも含む)のすべての整数値をとるときのf(i)の総和
x%y モジュラス。xの残りをyで割った余り。x≧0かつy>0である整数xおよびyについてのみ定義される。
【0491】
論理演算子
次の論理演算子は次のように定義される:
x && y xとyのブール論理「and」
x||y xとyのブール論理「or」
! ブール論理「not」
x?y:z xが真であるまたは0に等しくない場合、yの値に評価され、そうでない場合はzの値に評価される。
【0492】
関係演算子
次の関係演算子は、次のように定義される:
> より大きい
>= より大きいまたは等しい
< より小さい
<= より小さいまたは等しい
== 等しい
!= 等しくない
値"na"(該当せず)が割り当てられたシンタックス要素または変数に関係演算子が適用される場合、値"na"はそのシンタックス要素または変数についての独特の値として扱われる。値"na"は他のどの値とも等しくないとみなされる。
【0493】
ビット単位の演算子
次のビット単位の演算子は次のように定義される:
& ビット単位の「かつ」。整数引数に対して作用する場合、整数値の2の補数表現に対して作用する。他の引数よりも少ないビットを含むバイナリー引数に対して作用するとき、短いほうの引数は、さらなる、0に等しい有効ビットを加えることによって延長される。
| ビット単位の「または」。整数引数に対して作用する場合、整数値の2の補数表現に対して作用する。他の引数よりも少ないビットを含むバイナリー引数に対して作用するとき、短いほうの引数は、さらなる、0に等しい有効ビットを加えることによって延長される。
^ ビット単位の「排他的なまたは」。整数引数に対して作用する場合、整数値の2の補数表現に対して作用する。他の引数よりも少ないビットを含むバイナリー引数に対して作用するとき、短いほうの引数は、さらなる、0に等しい有効ビットを加えることによって延長される。
x>>y xの2の補数整数表現の、y個の2進数字ぶんの算術右シフト。この関数は、yの負でない整数値についてのみ定義される。右シフトの結果として諸最上位ビット(MSB)にシフトされた諸ビットは、シフト演算の前のxのMSBに等しい値をもつ。
x<<y xの2の補数整数表現の、y個の2進数字ぶんの算術左シフト。この関数は、yの負でない整数値についてのみ定義される。左シフトの結果として諸最下位ビット(LSB)にシフトされた諸ビットは、0に等しい値をもつ。
【0494】
代入演算子
以下の算術演算子は、下記のように定義される:
= 代入演算子
++ インクリメント、すなわちx++はx=x+1と等価;配列〔アレイ〕インデックスにおいて使用される場合は、インクリメント演算の前の変数の値に評価される。
-- デクリメント、すなわちx--はx=x-1と等価;配列インデックスにおいて使用される場合は、デクリメント演算の前の変数の値に評価される。
+= 指定された量だけインクリメント。すなわちx+=3はx=x+3と等価であり、x+=(-3)はx=x+(-3)と等価である。
-= 指定された量だけデクリメント。すなわちx-=3はx=x-3と等価であり、x-=(-3)はx=x-(-3)と等価である。
【0495】
範囲記法
次の記法が、値の範囲を指定するために使用される:
x=y…z xは、yから始まってzまで(両端含む)の整数値をとる。ここで、x、y、zは整数であり、zはyより大きい。
【0496】
数学的関数
次の数学的関数が定義される:
【数3】
Asin(x) 三角法の逆正弦関数。-1.0から1.0の範囲(両端含む)にある引数xに対して作用する。出力値はラジアン単位で-π÷2からπ÷2の範囲(両端含む)。
Atan(x) 三角法の逆正接関数。引数xに対して作用する。出力値はラジアン単位で-π÷2からπ÷2の範囲(両端含む)。
【数4】
Ceil(x) x以上の最小の整数。
Clip1Y(x)=Clip3(0,(1 << BitDepthY)-1,x)
Clip1C(x)=Clip3(0,(1 << BitDepthC)-1,x)
【数5】
Cos(x) ラジアン単位の引数xに対して作用する三角法の余弦関数。
Floor(x) x以下の最大の整数。
【数6】
Ln(x) xの自然対数(eを底とする対数。ここで、eは自然対数の底の定数2.718281828…)。
Log2(x) 2を底とするxの対数。
Log10(x) 10を底とするxの対数。
【数7】
Sin(x) ラジアン単位の引数xに作用する三角法の正弦関数
Sqrt(x)=√x
Swap(x,y)=(y,x)
Tan(x) ラジアン単位の引数xに作用する三角法の正接関数
演算優先順
式における優先順が括弧を使用して明示的に示されない場合、次の規則が適用される:
-より高い優先順位の演算が、より低い優先順位の演算の前に評価される。
-同じ優先順位の演算は、左から右へ逐次的に評価される。
【0497】
下記の表は、最高から最低までの演算の優先順位を指定する;表中の、より高い位置は、より高い優先順位を示す。
【0498】
Cプログラミング言語でも使用される演算子については、本明細書で使用される優先順は、Cプログラミング言語で使用されるものと同じである。
【0499】
表:最高(表のいちばん上)から最低(表のいちばん下)への演算優先順位
【表5】
論理演算のテキスト記述
テキストでは、数学的に次の形:
if(条件0)
陳述0
else if(条件1)
陳述1

else /* 残りの条件に関する参考用のコメント */
陳述n
で記述される論理演算の陳述は、次のように記述されてもよい:
…次のとおりである/…下記が適用される:
-もし条件0であれば、陳述0
-そうでない場合、条件1であれば、陳述1
-…
-そうでない場合(残りの条件に関する参考用のコメント)陳述n。
【0500】
テキストにおける「もし…であれば…、そうでない場合、…であれば…、そうでない場合…」という各陳述は、「…次のとおりである」または「…下記が適用される」によって導入されてそのすぐ後に「もし…」が続く。「もし…であれば…、そうでない場合、…であれば…、そうでない場合…」の最後の条件は、常に「そうでない場合…」であってもよい。間にはさまれる「もし…であれば…、そうでない場合、…であれば…、そうでない場合…」という陳述は、「…次のとおりである」または「…下記が適用される」を最後の「そうでない場合…」と対応させることによって識別できる。
【0501】
テキストでは、数学的に次の形:
if(条件0a & 条件0b)
陳述0
else if(条件1a || 条件1b)
陳述1

else
陳述n
で記述される論理演算の陳述は、次のように記述されてもよい:
…次のとおりである/…下記が適用される:
-もし次の条件のすべてが真であれば、陳述0:
-条件0a
-条件0b
-そうでない場合、次の条件のうち一つまたは複数が真であれば、陳述1
-条件1a
-条件1b
-…
-そうでない場合、陳述n。
【0502】
テキストでは、数学的に次の形:
if(条件0)
陳述0
if(条件1)
陳述1
で記述される論理演算の陳述は、次のように記述されてもよい:
条件0の場合、陳述0
条件1の場合、陳述1。
【0503】
本開示の実施形態は、主にビデオ符号化に基づいて説明されてきたが、符号化システム10、エンコーダ20およびデコーダ30(および対応してシステム10)の実施形態、ならびに本明細書に記載される他の実施形態は、静止ピクチャーの処理または符号化、すなわち、ビデオ符号化におけるような何らかの先行または連続するピクチャーから独立した個々のピクチャーの処理または符号化のために構成されてもよいことに注意しておくべきである。一般に、ピクチャー処理符号化が単一のピクチャー17に限定される場合、インター予測ユニット244(エンコーダ)および344(デコーダ)だけは利用可能でないことがある。ビデオ・エンコーダ20およびビデオ・デコーダ30の他のすべての機能(ツールまたは技術とも称される)は、静止ピクチャー処理についても等しく使用されうる。他の機能とは、たとえば、残差計算204/304、変換206、量子化208、逆量子化210/310、(逆)変換212/312、分割262/362、イントラ予測254/354、および/またはループ・フィルタリング220、320、およびエントロピー符号化270、およびエントロピー復号304である。
【0504】
たとえばエンコーダ20およびデコーダ30の実施形態、ならびに、たとえばエンコーダ20およびデコーダ30を参照して本明細書に記載される機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実装されうる。ソフトウェアで実装される場合、機能は、一つまたは複数の命令またはコードとして、コンピュータ読み取り可能媒体に記憶されるかまたは通信媒体を通じて伝送され、ハードウェア・ベースの処理ユニットによって実行されてもよい。コンピュータ読み取り可能媒体は、データ記憶媒体のような有形の媒体に対応するコンピュータ読み取り可能記憶媒体、または、たとえば通信プロトコルに従って、ある場所から他の場所へのコンピュータ・プログラムの転送を容易にする任意の媒体を含む通信媒体を含んでいてもよい。このようにして、コンピュータ読み取り可能媒体は、一般に、(1)非一時的である有形のコンピュータ読み取り可能記憶媒体、または(2)信号または搬送波のような通信媒体に対応しうる。データ記憶媒体は、本開示に記載される技術の実装のための命令、コードおよび/またはデータ構造を取り出すために、一つまたは複数のコンピュータまたは一つまたは複数のプロセッサによってアクセスできる任意の利用可能な媒体でありうる。コンピュータ・プログラム製品は、コンピュータ読み取り可能媒体を含みうる。
【0505】
例として、そして限定するものではないが、そのようなコンピュータ読み取り可能記憶媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスク記憶、磁気ディスク記憶、または他の磁気記憶デバイス、フラッシュメモリ、または命令またはデータ構造の形で所望のプログラム・コードを記憶するために使用でき、コンピュータによってアクセスされることができる他の任意の媒体を含むことができる。また、任意の接続は、適切にコンピュータ読み取り可能媒体と称される。たとえば、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、電波、およびマイクロ波のような無線技術を用いて、ウェブサイト、サーバー、または他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、電波、およびマイクロ波のような無線技術は、媒体の定義に含まれる。しかしながら、コンピュータ読み取り可能記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まず、代わりに非一時的で有形の記憶媒体に向けられることが理解されるべきである。本明細書で使用されるところのディスク(diskおよびdisc)は、コンパクトディスク(CD)、レーザーディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスクおよびブルーレイディスクを含み、ディスク(disk)は通例、磁気的にデータを再生し、一方、ディスク(disc)はレーザーを用いて光学的にデータを再生する。上記の組み合わせも、コンピュータ読み取り可能媒体の範囲内に含まれるべきである。
【0506】
命令は、一つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の同等の集積されたもしくは離散的な論理回路などの一つまたは複数のプロセッサによって実行されうる。よって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または本明細書に記載される技術の実装のために好適な任意の他の構造のいずれかを指しうる。さらに、いくつかの側面では、本明細書に記載される機能は、エンコードおよびデコードのために構成される専用ハードウェアおよび/またはソフトウェア・モジュール内で提供されてもよく、または組み合わされたコーデックに組み込まれてもよい。また、これらの技術は、一つまたは複数の回路または論理素子で完全に実装されることができる。
【0507】
本開示の技術は、ワイヤレスハンドセット、集積回路(IC)、または一組のIC(たとえば、チップセット)を含む、幅広い多様なデバイスまたは装置で実装されうる。本開示では、開示された技術を実行するように構成された装置の機能的側面を強調するために、さまざまなコンポーネント、モジュール、またはユニットが記載されるが、これらは必ずしも異なるハードウェア・ユニットによる実現を要求するものではない。むしろ、上述のように、さまざまなユニットは、コーデック・ハードウェア・ユニット内で組み合わされてもよく、または、上述のような一つまたは複数のプロセッサを好適なソフトウェアおよび/またはファームウェアとの関連で含む、相互運用されるハードウェア・ユニットの集まりによって提供されてもよい。

図1A
図1B
図2
図3
図4
図5
図6A
図6B
図7A
図7B
図8
図9A
図9B
図9C
図9D
図9E
図9F
図9G
図9H
図10
図11
図12A
図12B
図13
図14
図15
図16
図17