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

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

▶ テレフオンアクチーボラゲット エル エム エリクソン(パブル)の特許一覧

特表2022-531523適応ループフィルタ処理のための仮想境界処理
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-07-07
(54)【発明の名称】適応ループフィルタ処理のための仮想境界処理
(51)【国際特許分類】
   H04N 19/117 20140101AFI20220630BHJP
   H04N 19/167 20140101ALI20220630BHJP
   H04N 19/176 20140101ALI20220630BHJP
   H04N 19/82 20140101ALI20220630BHJP
【FI】
H04N19/117
H04N19/167
H04N19/176
H04N19/82
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021539897
(86)(22)【出願日】2020-11-26
(85)【翻訳文提出日】2021-09-06
(86)【国際出願番号】 SE2020051131
(87)【国際公開番号】W WO2021133236
(87)【国際公開日】2021-07-01
(31)【優先権主張番号】62/953,310
(32)【優先日】2019-12-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】598036300
【氏名又は名称】テレフオンアクチーボラゲット エルエム エリクソン(パブル)
(74)【代理人】
【識別番号】100109726
【弁理士】
【氏名又は名称】園田 吉隆
(74)【代理人】
【識別番号】100161470
【弁理士】
【氏名又は名称】冨樫 義孝
(74)【代理人】
【識別番号】100194294
【弁理士】
【氏名又は名称】石岡 利康
(74)【代理人】
【識別番号】100194320
【弁理士】
【氏名又は名称】藤井 亮
(74)【代理人】
【識別番号】100150670
【弁理士】
【氏名又は名称】小梶 晴美
(72)【発明者】
【氏名】アンデション, ケネト
(72)【発明者】
【氏名】ストレム, ヤコブ
(72)【発明者】
【氏名】チャン, ヂィー
(72)【発明者】
【氏名】エンホーン, ジャック
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA00
5C159MC11
5C159ME01
5C159PP04
5C159SS26
5C159TA69
5C159TB08
5C159TC33
5C159TC35
5C159UA02
5C159UA05
5C159UA16
(57)【要約】
ビデオシーケンスの画像を符号化または復号するための方法が提供される。本方法は、画像に関連するサンプル値のセットを取得することを含む。本方法は、仮想境界に対する現在サンプル値の相対ロケーションを決定することを含む。仮想境界は、サンプル値の第1のブロックとサンプル値の第2のブロックとの間のブロック境界に対して規定される。仮想境界は、ブロック境界と平行であり、サンプル値の第1のブロック中に含まれるサンプル値の少なくとも1つの行または列だけブロック境界から分離される。本方法は、仮想境界に対する現在サンプル値の決定された相対ロケーションに基づくフィルタ強度値を含む。本方法は、選択されたフィルタ強度値に基づいて現在サンプル値をフィルタ処理することを含む。
【選択図】図19
【特許請求の範囲】
【請求項1】
ビデオシーケンスの画像を符号化または復号するための方法(1900)であって、前記方法は、
前記画像に関連するサンプル値のセットを取得することであって、サンプル値の前記セットが、現在サンプル値と前記現在サンプル値に近隣するサンプル値とを含み、前記取得されたサンプル値のセットが、サンプル値の第1の矩形ブロック内に含まれる、サンプル値のセットを取得することと、
仮想境界に対する前記現在サンプル値の相対ロケーションを決定することであって、前記仮想境界が、サンプル値の前記第1のブロックとサンプル値の第2のブロックとの間のブロック境界に対して規定され、前記仮想境界が、前記ブロック境界と平行であり、サンプル値の前記第1のブロック中に含まれるサンプル値の少なくとも1つの行または列だけ前記ブロック境界から分離される、相対ロケーションを決定することと、
前記仮想境界に対する前記現在サンプルの前記決定された相対ロケーションに基づいてフィルタ強度値を選択することと、
前記選択されたフィルタ強度値に基づいて前記現在サンプルをフィルタ処理することと
を含む、方法(1900)。
【請求項2】
前記仮想境界に対する前記現在サンプルの前記決定された相対ロケーションに基づいてフィルタ強度値を選択することが、前記仮想境界に対する前記現在サンプルの前記決定された相対ロケーションに基づいて右シフト値または除数を選択することを含み、
前記選択されたフィルタ量に基づいて前記現在サンプルをフィルタ処理することが、前記選択された右シフト値または除数を使用して前記現在サンプル値をフィルタ処理することを含む、
請求項1に記載の方法。
【請求項3】
前記仮想境界に対する前記現在サンプルの前記決定された相対ロケーションに基づいてフィルタ強度値を選択することは、
前記現在サンプル値が前記仮想境界に隣接すると決定された場合、第1のフィルタ強度値を選択すること、あるいは
前記現在サンプル値が前記仮想境界から前記1つの行または列よりも多く離れていると決定された場合、第2のフィルタ強度値を選択すること
を含む、請求項1または2に記載の方法。
【請求項4】
前記第1のフィルタ強度値が7よりも大きく、前記第2のフィルタ強度値が7よりも小さいかまたは7に等しい、あるいは
前記第1のフィルタ強度値が1よりも大きいかまたは1に等しく、前記第2のフィルタ強度値が0である、
請求項3に記載の方法。
【請求項5】
前記仮想境界に対する前記現在サンプルの前記決定された相対ロケーションに基づいてフィルタ強度値を選択することは、
前記現在サンプル値が前記仮想境界から前記1つの行または列よりも多く離れていないと決定された場合、第1のフィルタ強度値を選択すること、あるいは
前記現在サンプル値が前記仮想境界から前記1つの行または列よりも多く離れていると決定された場合、フィルタ強度値のセットからフィルタ強度値を選択することであって、フィルタ強度値の前記セットが、第2のフィルタ強度値と第3のフィルタ強度値と第4のフィルタ強度値とを含む、フィルタ強度値のセットからフィルタ強度値を選択すること
を含む、請求項1または2に記載の方法。
【請求項6】
前記現在サンプル値が前記仮想境界から前記1つの行または列よりも多く離れていると決定された場合、フィルタ強度値の前記セットからフィルタ強度値を選択することは、
前記現在サンプル値が前記仮想境界から2つの行または列離れていると決定された場合、前記第2のフィルタ強度値を選択すること、
前記現在サンプル値が前記仮想境界から3つの行または列離れていると決定された場合、前記第3のフィルタ強度値を選択すること、あるいは
前記現在サンプル値が前記仮想境界から少なくとも4つの行または列離れていると決定された場合、前記第4のフィルタ強度値を選択すること
を含む、請求項5に記載の方法。
【請求項7】
前記仮想境界に対する前記現在サンプルの前記決定された相対ロケーションに基づいてフィルタ強度値を選択することが、前記仮想境界に対する前記現在サンプルの前記決定された相対ロケーションにだけでなく、前記現在サンプル値を含むサンプル値のブロックの特性にも基づいて、前記フィルタ強度値を選択することを含む、請求項1から6のいずれか一項に記載の方法。
【請求項8】
ビデオシーケンスの画像を符号化または復号するための方法(1800)であって、前記方法は、
画像に関連するサンプル値のセットを取得することであって、サンプル値の前記セットが、現在サンプル値と前記現在サンプル値に近隣する近隣のサンプル値のセットとを含み、前記取得されたサンプル値のセットが、サンプル値の第1の矩形ブロック内に含まれる、サンプル値のセットを取得することと、
仮想境界に対する前記現在サンプル値の相対ロケーションを決定することであって、前記仮想境界が、サンプル値の前記第1のブロックとサンプル値の第2のブロックとの間のブロック境界に対して規定され、前記仮想境界が、前記ブロック境界と平行であり、サンプル値の前記第1のブロック中に含まれるサンプル値の少なくとも1つの行または列だけ前記ブロック境界から分離される、相対ロケーションを決定することと、
前記仮想境界に対する前記現在サンプルの前記決定された相対ロケーションに基づいて、前記現在サンプル値をフィルタ処理すべきか否かに関する判定を行うことと
を含む、方法(1800)。
【請求項9】
前記現在サンプルの前記決定された相対ロケーションに基づいて、前記現在サンプル値をフィルタ処理すべきか否かに関する判定を行うことは、
前記現在サンプル値が前記仮想境界に隣接するかどうかを決定することと、
前記現在サンプル値が前記仮想境界に隣接すると決定したことの結果として、前記現在サンプル値をフィルタ処理するのを控えるという判定を行うことと
を含む、請求項8に記載の方法。
【請求項10】
前記仮想境界に対する前記現在サンプルの前記決定された相対ロケーションに基づいて、前記現在サンプル値をフィルタ処理すべきか否かに関する判定を行うことが、前記仮想境界に対する前記現在サンプルの前記決定された相対ロケーションにだけでなく、前記現在サンプル値を含むサンプル値のブロックの特性にも基づいて、前記判定を行うことを含む、請求項8または9に記載の方法。
【請求項11】
前記現在サンプル値が前記仮想境界に隣接するときに前記現在サンプル値をフィルタ処理しないという前記判定が、交差成分適応ループフィルタ(CC-ALF)に適用される、請求項8から10のいずれか一項に記載の方法。
【請求項12】
処理回路(2102)によって実行されたとき、前記処理回路(2102)に、請求項1から11のいずれか一項に記載の方法を実施させる命令(2144)を備える、コンピュータプログラム(2143)。
【請求項13】
請求項12に記載のコンピュータプログラムを含んでいるキャリアであって、前記キャリアが、電子信号、光信号、無線信号、およびコンピュータ可読記憶媒体(2142)のうちの1つである、キャリア。
【請求項14】
請求項1から11のいずれか一項に記載の方法を実施するように適応された、装置(2101)。
【請求項15】
装置(2101)であって、前記装置が、
処理回路(2102)と、
メモリ(2142)と
を備え、前記メモリが、前記処理回路によって実行可能な命令(2144)を含んでおり、それにより、前記装置が、請求項1から11のいずれか一項に記載の方法を実施するように動作可能である、装置(2101)。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ビデオシーケンスの画像のエンコーディングおよび復号に関する。
【背景技術】
【0002】
序論
ビデオシーケンスは、(本明細書では「ピクチャ」とも呼ばれる)いくつかの画像からなる。スクリーン上で閲覧されるとき、画像はピクセルからなり、各ピクセルは、赤、緑および青の値(RGB)を有する。しかしながら、ビデオシーケンスを符号化および復号するとき、画像は、しばしば、RGBを使用して表されないが、一般に、限定はしないが、YCbCrと、ICと、非定輝度YCbCrと、定輝度YCbCrとを含む、別の色空間を使用して表される。YCbCrの例をとる場合、YCbCrは、3つの成分、Y、CbおよびCrから構成される。ルーマと呼ばれ、ルミナンスをほぼ表すYは、フル解像度のものであるが、2つの他の成分、すなわち、クロマと呼ばれるCbおよびCrは、より小さい解像度のものであることがしばしばある。一般的な例は、1920×1080RGBピクセルを含んでいる高精細度(HD)ビデオシーケンスであり、これは、しばしば、1920×1080解像度Y成分と、960×540Cb成分と、960×540Cr成分とで表される。成分のエレメントは、サンプルと呼ばれる。上記の例では、したがって、Y成分の1920x1080サンプルがあり、したがって、サンプルとピクセルとの間に直接の関係がある。したがって、本明細書では、時々、ピクセルおよびサンプルという用語を互換的に使用する。Cb成分およびCr成分の場合、サンプルとピクセルとの間に直接の関係はなく、単一のCbサンプルが、一般に、いくつかのピクセルに影響を及ぼす。
【0003】
ジョイントビデオエキスパートチーム(JVET)によって開発された、最新のビデオコーディング規格、多用途ビデオコーディング規格(VVC)では、画像の復号は、2つの段階、予測コーディングおよびループフィルタ処理において行われる。予測復号段階では、成分(Y、CbおよびCr)のサンプルは、矩形ブロックに区分される。一例として、あるブロックはサイズ4×8サンプルのものであり得るが、別のブロックはサイズ64×64サンプルのものであり得る。デコーダは、各ブロックについて予測をどのように行うべきかについての命令を取得して、たとえば、前に復号された画像からサンプルをコピーするか(時間予測の一例)、または現在画像のすでに復号された部分からサンプルをコピーするか(イントラ予測の一例)、あるいはそれらの組合せを行う。この予測を改善するために、デコーダは、離散サイン変換DSTまたは離散コサイン変換DCTなど、変換コーディングを使用してしばしば符号化される、残差を取得し得る。この残差は予測に加算され、デコーダは、後にくるブロックを続いて復号することができる。
【0004】
予測復号段階からの出力は、3つの成分Y、CbおよびCrである。しかしながら、これらの成分の忠実度をさらに改善することが可能であり、これは、ループフィルタ処理段階において行われる。VVCにおけるループフィルタ処理段階は、3つのサブ段階、すなわち、デブロッキングフィルタ段階と、サンプル適応オフセットフィルタ(SAO)サブ段階と、適応ループフィルタ(ALF)サブ段階とからなる。デブロッキングフィルタサブ段階では、デコーダは、いくつかの条件が満たされたとき、ブロック境界の近くのエッジを平滑化することによって、Y、CbおよびCrを変更する。これは、人間の視覚系がブロック境界に沿ったブロックアーティファクトなどの規則的なエッジを検出するのが極めて得意であるので、知覚品質(主観的品質)を高める。SAOサブ段階では、デコーダは、ある値範囲中にあること(帯域オフセットSAO)または特定の近傍を有すること(エッジオフセットSAO)など、いくつかの条件を満たすサンプルに対して、シグナリングされた値を加算または減算する。これはリンギングノイズを低減することができ、なぜなら、そのようなノイズが、しばしば、ある値範囲中にまたは特定の近傍中に(たとえば、局所最大値に)凝集するからである。本明細書では、この段階の結果である再構築された画像成分を、YSAO、CbSAO、CrSAOと示す。ループフィルタ段階は、3つの成分のすべてのブロックが再構築されるまで待つ必要がないが、所望される場合、ブロックごとに進めることができる。
【0005】
本発明は、第3のサブ段階、ALFに関し、したがって、それについてもう少し詳細に説明する。適応ループフィルタ処理の背後の基本概念は、画像成分YSAO、CbSAOおよびCrSAOの忠実度が、しばしば、エンコーダからデコーダにシグナリングされる線形フィルタを使用して画像をフィルタ処理することによって改善され得ることである。一例として、最小2乗問題を解くことによって、エンコーダは、これまでの再構築された画像成分、YSAO、CbSAO、CrSAOと、元の画像成分Yorg、CborgおよびCrorgとの間の誤差を最も効率的に下げるために、線形フィルタがどんな係数を有するべきであるかを決定することができる。これらの係数は、次いで、エンコーダからデコーダにシグナリングされ得る。デコーダは、上記で説明されたように画像を再構築して、YSAO、CbSAO、およびCrSAOを得、ビットストリームからフィルタ係数を取得し、次いで、フィルタを適用して、YALF、CbALF、CrALFと示す最終出力を得る。
【0006】
VVCでは、ALFルーマフィルタは、これよりも高度である。まず第一に、係数のあるセットでいくつかのサンプルをフィルタ処理するが、他のサンプルをフィルタ処理することを回避するか、または場合によっては係数の別のセットでそれらの他のサンプルをフィルタ処理することがしばしば有利であることが観測される。そのために、VVCは、あらゆるYサンプル(すなわち、あらゆるルーマサンプル)を25個のクラスのうちの1つに分類する。サンプルがどのクラスに属するかは、そのサンプルの局所近傍(8×8近傍)に基づいて、詳細には周囲サンプルの勾配および周囲サンプルのアクティビティに基づいて、各4×4ブロックについて判定される。VVC仕様からわかるように、現在サンプルの局所近傍の特性を決定するために4つの変数が算出され、ここで、filtHは水平方向に勾配を測定し、filtVは垂直方向に勾配を測定し、filtD0は左上から右下に対角線方向に勾配を測定し、filtD1は右上から左下に対角線方向に勾配を測定する。
【0007】
次いで、これらの変数は、以下のように、近傍の方向性のより信頼できる推定値を得るために現在サンプルの周りの局所近傍において合計され、ここで、以下のVVCドラフトから、sumHはfiltHの和を示し、sumVはfiltVの和を示し、sumD0はfiltD0の和を示し、sumD1はfiltD1の和を示し、sumOfHVはsumVとsumVとの和を示す。
【0008】
以下のVVCドラフトから、最終的にこれらのメトリックに基づいて分類が行われて、現在サンプルについてフィルタのどのセットfiltIdxを使用すべきかを決定し、また、いくつかの方向性が同じフィルタ係数を共有することができるようにtransposeIdxを決定する。
【0009】
上記のことから、0~4に等しいfiltIdxは、特定の方向性特性を有しないことがわかり得る。4よりも大きいfilterIdxの値は、これはdirSが0よりも大きいことを意味するので、サンプルの方向性に対応する。filtIdxへの加算
filtIdx[x][y]+=(((dir1[x][y]&0x1)<<1)+dirS[x][y])*5、
を検討すると、対角方向性を有する場合、すなわち、dir1が0または2のいずれかである場合、第1の項は0になり、1*5(dirS=1である場合)または2*5(dirS=2である場合)を加算することができることがわかる。(dirS=0である場合、加算を行わない。)したがって、5から14までのfilterIdxのすべての値が、サンプルの対角方向性に対応する。同様に、水平方向性または垂直方向性を有する場合、すなわち、dir1が1または3のいずれかである場合、第1の項(dir1&1)<<1は2になる。したがって、この場合、(2+1)*5を加算するか(dirS=1である場合)、または(2+2)*5を加算するか(dirS=2である場合)のいずれかであり、これは15から24の間の値を生じる。したがって、表1で説明されるように、filtIdxが以下のようにして周囲サンプルの方向性を示すと結論付けた。
【0010】
ここで、0に等しいtransposeIdxは、フィルタ係数の転置がないことに対応し、1に等しいtransposeIdxは、右上から左下への対角線に沿ってフィルタ係数をミラーリングすることに対応し、2に等しいtransposeIdxは、垂直軸に沿ってフィルタ係数をミラーリングすることに対応し、3に等しいtransposeIdxは、フィルタ係数を90度回転することに対応する。
【0011】
これは、filterIdxが15から24の間にあり、transposeIdxが3に等しいとき、現在サンプルの周りの局所構造は垂直方向性を有し、transposeIdxが0に等しいとき、現在サンプルの周りの局所構造は水平方向性を有することを意味する。
【0012】
エンコーダは、25個のクラスの各々について係数の1つのセットをシグナリングすることが可能である。VVCでは、ALF係数などは、適応パラメータセット(APS)中でシグナリングされ、APSは、次いで、ピクチャを復号するとき、規定されたセットのうちのどれを使用すべきかを決定するapsインデックスによって、参照され得る。デコーダは、次いで、最初に、サンプルがどのクラスに属するかを判定し、次いで、サンプルをフィルタ処理するための係数の適切なセットを選択する。しかしながら、係数の25個のセットをシグナリングすることは、コストがかかり得る。したがって、VVC規格はまた、25個のクラスのうちの数個のみが係数の一意のセットを使用してフィルタ処理されることを可能にする。残りのクラスは別のクラスにおいて使用される係数のセットを再使用し得るか、または残りのクラスはまったくフィルタ処理されるべきでないと決定され得る。コストを低減するための別のやり方は、いわゆる固定係数セットを使用することである。これは、デコーダに知られている64個のハードコーディングされたフィルタのセット(すなわち、係数値の64個のグループ)である。エンコーダがこれらの固定(すなわち、ハードコーディングされた)フィルタのうちの1つの使用を極めて安価にデコーダにシグナリングすることが可能であり、なぜなら、それらのフィルタがデコーダにすでに知られているのからである。たとえば、デコーダは、N個のインデックス値(たとえば、N=25)の16個の異なるグループのセットを記憶し、エンコーダは、N個のインデックス値の16個のグループのうちの1つを指す初期インデックス値を送信し、ここで、N個のインデックス値のグループ中に含まれるインデックス値の各々はクラスに関連し、インデックス値の各々は、64個のハードコーディングされたフィルタのうちの1つを指す。たとえば、インデックス値のグループ中のN個の値の第1のものは、第1のクラスのために使用されるべきである固定フィルタを指し、第2の値は、第2のクラスのために使用されるべきである固定フィルタを指す、などである。したがって、デコーダは、初期インデックス値およびクラスに基づいて、特定のフィルタのためのインデックス値を取得する。これらのフィルタは安価であるが、これらのフィルタは、所望のフィルタに完全には一致しないことがあり、したがって、わずかにより悪い品質を生じることがある。CbまたはCrに属するサンプルの場合、すなわち、クロマサンプルの場合、分類は使用されず、係数の同じセットがすべてのサンプルのために使用される。
【0013】
フィルタ係数を送信することはコストがかかり、したがって、同じ係数値が2つのフィルタ位置のために使用される。ルーマ(Y成分のサンプル)の場合、係数は、図1に示されているやり方で再使用される。図1に示されているように、各係数はフィルタにおいて2回使用され、図1は、ルーマフィルタがカバーする空間近傍(すなわち、図1は、現在サンプルの値(すなわち、近傍の中心にあるサンプル値)をフィルタ処理するために使用される他のサンプル値を示す)と、ルーマのためのフィルタ係数に関するその設定とを示す。フィルタカバレッジは対称的であり、水平方向と垂直方向の両方に中心から3つ離れたサンプルまでカバーすることがわかり得る。
【0014】
R(x,y)が、図1の中央に位置する、フィルタ処理されるべきサンプルであると仮定する。その場合、サンプルR(x,y-1)(真上のサンプル)とサンプルR(x,y+1)(真下のサンプル)とは、同じ係数C6で扱われる。
【0015】
(x,y)と示す、位置(x,y)にある再構築されたサンプルのフィルタ処理されたバージョンが、VVC仕様の式1411~1426および表43から、以下のようにして計算され、ここで、(x,y)=(h,v)ならびにC0=f[idx[0]]、C1=f[idx[1]]、C2=f[idx[2]]、C3=f[idx[3]]、C4=f[idx[4]]、C5=f[idx[5]]、C6=f[idx[6]]、C7=f[idx[7]]、C8=f[idx[8]]、C9=f[idx[9]]、C10=f[idx[10]]およびC11=f[idx[11]]である。
【0016】
CtbSizeYはCTUの垂直サイズである。VVCにおけるCTUは、一般に、128×128である。ここで、Clip3(x,y,z)演算は、単に、値zの大きさが決して、yを超えることやxを下回ることがないことを確認する。
【0017】
クリッピングパラメータ「c[x]」も、エンコーダからデコーダにシグナリングされるべきである。
【0018】
画像を復号することは、連続したCTU順序で行われる。一例として、ビデオフレームが512×256サンプルを有する場合、ビデオフレームは128×128CTUの2つの行からなることができ、ここで、各行は4つのCTUを有する。CTUの第2の行を復号するとき、デコーダが、先行する(第1の)CTU行からのサンプルにアクセスすることが、時々必要とされる。実際のハードウェアデコーダでは、これは、ほとんどの場合、いわゆるラインバッファ中にサンプルの最下部のラインを保存することによって解決され、ラインバッファからそれは容易にアクセスされ得る。本例で続けると、現在サンプルより上の2つのサンプルにアクセスする必要がある場合、本ラインバッファ中に、サンプルの2つのライン、この場合は512×2サンプルを記憶しなければならない。しかしながら、ラインバッファは、シリコン表面積の点で費用がかかる。したがって、VVC規格の多くの部分では、費用がかかるラインバッファがそれほど必要ではないように、CTU外の読取りは禁止または制限される。
【0019】
「仮想水平CTU境界」の概念が導入されるまで、ALFのためのラインバッファ要件は、図13に見られるように6つの追加のライン(行)であり、ここで、上のCTUのALFフィルタ処理は、位置106に示されているように、上のCTUの下部から行4つより上のサンプルのみをカバーするフィルタでのみ実施され得る。デブロッキングおよびSAOが実施されたとき、位置105および下の行におけるALFが実施され得る。
【0020】
ALFのための水平CTUラインバッファ要件の必要を低減するための1つの試みが、VVCにおいて使用される「仮想水平CTU境界」の概念である。仮想水平境界の位置は、図2に見られるように、現在CTUと現在CTUの直上のCTU(すなわち、「上」のCTU)との間の境界より4つのサンプル上であり、図2は、仮想境界の位置および2つの可能なALFフィルタ処理を示す。仮想境界は、デブロッキングがどのように働くか、すなわち、CTU境界にあるサンプルをデブロックするとき、デブロッキングプロセスがCTU境界より4つのサンプル上まで読み取ることができることにより、ここに位置する。これは、現在CTUが復号されるまで、仮想境界より下のサンプルが上のCTUにおいてデブロックされ得ず、最後の4つのラインが現在CTU中のサンプル値に依存することを意味する。
【0021】
上のCTU中の仮想境界より下のサンプルがデブロックされた後に、それらのサンプルはSAOおよびALFによって処理されなければならない。簡単のために、SAOが無効にされ、ALF処理のみが行われる必要があると仮定する。ALFフィルタ処理を行うときに仮想境界への考慮がなされなかった場合、仮想境界より上のいくつかのサンプルがアクセスされるであろう。これは、フィルタが位置101にあるときの図2に見られ、仮想境界より上の3つの行のサンプルがアクセスされる。これは、ラインバッファの3つの余分のラインが必要であろうことを意味し、これはコストがかかる。これを回避するために、ALFフィルタ処理が仮想水平CTU境界においてまたは仮想水平CTU境界より下で行われるとき、仮想境界サンプルより上のサンプルが使用されない(たとえば、フィルタの空間カバレッジが低減される)ことが指定される。同様に、仮想水平CTU境界より上でフィルタ処理するとき、仮想水平CTU境界にあるサンプルまたはそれより下のサンプルは使用されない。これは、いわゆる対称パディングを使用することによって達成される。対称パディングは、以下のように説明され得る。フィルタの中心が仮想水平CTU境界にあるかまたは仮想CTU境界の上の行にあるとき、近隣の行は、フィルタを中心とする行によってパディングされ、これは、VVC仕様中の表43において規定されているパディングパラメータy1=y2=y3=0に対応する。図3では、仮想境界が中心サンプルのまさに上にある一例を示した。この場合、対称パディングは、左側に示されているサンプルが、そのサンプル値が右側に示されているようであるかのようにフィルタ処理されることを意味する。
【0022】
中心行が仮想境界より2つの行だけ上にあるとき、仮想境界にある行または仮想境界より下の行は、中心行の下側に隣接する行によってパディングされ、中心行の上側に隣接する行より上の行は、中心行より上の行によってパディングされ、これは、VVC仕様中の表43において規定されているパディングパラメータy1=y2=y3=1に対応する。図4は、仮想境界がフィルタ中心から1つのステップ移動された一例を示し、左側のサンプルは、その場合、それらのサンプルが右側に示されている値であるかのようにフィルタ処理される。これは、事実上、フィルタの空間カバレッジが低減されて、水平フィルタのみになることを意味する。
【0023】
中心行が仮想境界より3つの行だけ上にあるとき、仮想にある行または仮想境界より下の行は、中心行より2つの行だけ下にある行によってパディングされる。中心行より2つよりも多い行だけ上にある行は、中心行より2つの行だけ上にある行によってパディングされ、これは、VVC仕様中の表43中のパディングパラメータy1=1かつy2=2かつy3=2に対応する。図5は、フィルタサポートが仮想境界をちょうど横切るときのフィルタ処理の一例を示し、ここで、左側のサンプルは、それらのサンプルが右側の値であるかのようにフィルタ処理される。
【0024】
対称パディング手法は、仮想境界より下の行のフィルタ処理のためにも使用される。分類の決定のために、分類のために使用される領域は、仮想境界の反対側のサンプルを含むことを回避するために制限され、それに加えて、仮想境界の反対側に隣接する行は、現在の側の行上の行に基づいてパディングされる。
【0025】
対称パディングは、クロマのためのラインバッファの数を増加させることを回避するために、クロマ成分のALFフィルタ処理のためにも適用される。クロマの場合、仮想境界の位置は、上のCTUの下部から2つ離れた行上にあり、なぜなら、その行が水平クロマCTU境界のクロマデブロッキングのために使用される最後の行であるからである。
【0026】
上記で示された仮想水平CTU境界の概念のほかに、VVCにおける仮想境界はまた、8の倍数である水平位置および8の倍数である垂直位置において規定され得る。そのような境界の場合、パディングは、現在サンプルと同じ側の境界に隣接するサンプルが、仮想境界の反対側のサンプルの代わりに使用されるように、フィルタの中心サンプル、たとえば現在サンプルの位置以外の、仮想境界の別の側のフィルタ係数を有するフィルタの側にのみ使用される。仮想水平CTU境界のために説明される対称性パディングは、両側パディングされたものとして見られ、ここで、規定された仮想境界は片側パディングを使用する。
【0027】
1に等しいsps_virtual_boundaries_present_flagは、仮想境界の情報がSPS中でシグナリングされることを指定する。0に等しいsps_virtual_boundaries_present_flagは、仮想境界の情報がSPS中でシグナリングされないことを指定する。SPS中でシグナリングされる1つまたは2つ以上の仮想境界があるとき、ループ内フィルタ処理演算は、SPSを参照するピクチャ中の仮想境界にわたって無効にされる。ループ内フィルタ処理演算は、デブロッキングフィルタ演算と、サンプル適応オフセットフィルタ演算と、適応ループフィルタ演算とを含む。
【0028】
1に等しいph_virtual_boundaries_present_flagは、仮想境界の情報がPH中でシグナリングされることを指定する。0に等しいph_virtual_boundaries_present_flagは、仮想境界の情報がPH中でシグナリングされないことを指定する。PH中でシグナリングされる1つまたは2つ以上の仮想境界があるとき、ループ内フィルタ処理演算は、ピクチャ中の仮想境界にわたって無効にされる。ループ内フィルタ処理演算は、デブロッキングフィルタ演算と、サンプル適応オフセットフィルタ演算と、適応ループフィルタ演算とを含む。存在しないとき、ph_virtual_boundaries_present_flagの値は0に等しいと推論される。
【0029】
JVET-O0636[1]では、交差成分適応ループフィルタ(CC-ALF:Cross-Component Adaptive Loop Filter)と呼ばれるツールが、適応ループフィルタプロセスの一部として最初に提案された。CC-ALFは、JVET-P会議とJVET-Q会議とにおけるコア実験において研究された。CC-ALFは、各クロマ成分を改良するためにルーマサンプル値を利用する。ルーマサンプル値は、SAO演算の後のおよびルーマALF演算の前の再構築されたルーマサンプルであった。線形のダイヤモンド形フィルタが、各クロマ成分iのためのルーマサンプルに適用されて、残差補正ΔI(x,y)を導出する。残差補正は、ALFクロマの後の再構築されたクロマサンプルに適用されて、再構築されたクロマサンプル値を導出する。図6は、他のループフィルタに対するCC-ALFの配置を示す。
【0030】
JVET-P2025[2]、description of Core experiment 5 (CE5):Cross component Adaptive Loop filteringでは、CC-ALFは、コア実験テストのためのアンカーCC-ALF(本発明の以下では「CEアンカー(CE anchor)」と称する)を指定し、これは、以下のプロパティ、すなわち、1)フィルタ形状は、8つの一意の係数をもつ3×4ダイヤモンドである、2)両端値を含む[-32,31]の間のフィルタ係数ダイナミックレンジ、3)最大4つのフィルタのサポートを伴うCTUレベルにおいて実施されるフィルタ選択、4)対称ライン選択が仮想境界において使用される、5)時間レイヤ係数バッファは使用されない、および6)残差補正は、両端値を含む、-2BitDepthC-1~2BitDepthC-1-1にクリッピングされる、を含む。
【0031】
CEアンカーは、改良されるべきクロマサンプルを中心とする、コロケートされたルーマサンプルに、8タップダイヤモンドCC-ALFフィルタを適用する。図7は、CEアンカーCC-ALFフィルタ形状を示す。
【0032】
(x,y)が、CC-ALFによって改良されるべき、ALFクロマ再構築されたクロマサンプルであると仮定し、ここで、(x,y)は、現在ピクチャ中のクロマサンプルの位置を指定する。R(x,y)に対するコロケートされたルーマサンプルがR(x,y)であり、ここで、(x,y)は、現在ピクチャ中のコロケートされたルーマサンプルの位置を指定する。CC-ALFによってフィルタ処理されるべき8つのルーマサンプルは、R(x-1,y)、R(x,y-1)、R(x,y)、R(x-1,y+1)、R(x+1,y-1)、R(x+1,y)、R(x+1,y+1)、R(x+2,y)である。図8は、ルーマサンプルロケーションに対する8タップ3×4ダイヤモンドCC-ALFフィルタ係数を示す。
【0033】
残差補正ΔI(x,y)は、以下のようにして計算される。
ΔI(x,y)=(C0*R(x-1,y)+C1*R(x,y-1)+C2*R(x,y)+C3*R(x,y+1)+C4*R(x+1,y-1)+C5*R(x+1,y)+C6*R(x+1,y+1)+C7*R(x+2,y)+2shiftFactor-1)>>shiftFactor (Eqn4)
ここで、CiはCC-ALFフィルタ係数を指定し、iは0から7までの範囲にわたり、C2以外の各係数は、エンコーダ側においてトレーニングされる。
【0034】
CC-ALFフィルタ係数Ciは、両端値を含む[-32,31]の間の値範囲を有する。この値範囲は、ダイナミックレンジとしても知られる。
2=(-1)*(C0+C1+C3+C4+C5+C6+C7)、両端値を含む[-32,31]の間の値範囲へのクリップを伴う。
shiftFactor=係数ビットスケール+(BitDepth-BitDepth)、ここで、CEアンカーでは、係数ビットスケールは7に等しい。
【0035】
残差補正ΔI(x,y)は、両端値を含む[-2BitDepthC-1,2BitDepthC-1-1]の間の値範囲にクリッピングされる。CC-ALF改良されたクロマサンプルR(x,y)が、次いで、R(x,y)=ΔI(x,y)+R(x,y)、両端値を含む[0,2BitDepthC-1]の間の値範囲へのクリップを伴う、として導出される。
【0036】
CC-ALFフィルタ係数は、0から63までの値範囲を表すことができる6ビット固定長コードでコーディングされる。符号化/復号されたCC-ALF係数はD(i)と称し、iは、0、1、2から7までの範囲にわたる。CC-ALF係数C(i)は、D(i)-32に等しい。
【0037】
ALFと同様に、CC-ALFも、ルーマのためのラインバッファ要件を増加させることを回避するために、ルーマサンプルのフィルタ処理のために対称パディングによる仮想境界処理を使用する。
【発明の概要】
【0038】
現在、いくつかの課題が存在する。ALF仮想境界処理が視覚的アーティファクトを生成し得ることが観測された。アーティファクトは、仮想水平CTU境界と仮想水平CTU境界の上の行とにおいて最も顕著である。アーティファクトについての理由はパディングによるものであり、パディングは、事実上、フィルタの空間カバレッジを低減し、すなわち、フィルタ処理のために使用されるサンプルの数は、図3図5に示されているように、フィルタ係数の決定中に使用されたサンプルと比較して低減される。パディングは、(たとえば、図3中などの)仮想境界に近いサンプルをフィルタ処理するときに、(たとえば、図5中などの)境界からさらに離れたサンプルと比較して、サンプルに最も作用するので、アーティファクトはそこで最も大きくなる。
【0039】
水平仮想境界を考慮する場合、パディングによるALFフィルタサポートは、水平方向のみになる。これは図9に見られる。左上図では、図3中のすべての値から中央サンプル(120)を減算した。これらの値は、次いで、図9の右上図に示されている係数を乗算される。しかしながら、これは、図9の最右図に示されているように、中央行を除きどこでも0を使用することと同じ事である。したがって、図9は、パディングされたサンプル差(左上)を使用するとき、フィルタ(右上)がただの水平フィルタ(下)になることを示す。
【0040】
中心サンプルに水平方向に隣接するサンプルからのフィルタ処理への寄与は、(図1中のC12の位置にある)中心と(図1中のC11の位置にある)最も近い隣接するサンプルとの間で、意図された差の5倍になり、(図1中のC12の位置にある)中心サンプルと(図1中のC10の位置にある)中心サンプルから2の距離のところの隣接するサンプルとの間で、意図された差の3倍になる。さらに、それぞれの隣接するサンプルのためのフィルタ係数は、隣接するサンプルと垂直方向に整合された係数の和に等しくなり、たとえば、C11の位置において、係数はC11+C1+C3+C5+C7になる、などである。
【0041】
本開示は、仮想境界におけるフィルタ処理から視覚的アーティファクトを除去するための代替形態を提示する。1つの代替形態は、たとえば、仮想境界の一方の側でフィルタ処理するときに仮想境界の反対側のサンプルを使用することを回避するために、フィルタの空間カバレッジが、意図された空間カバレッジと比較して著しく低減され、事実上、水平空間カバレッジをもつフィルタを有するにすぎないとき、仮想境界と仮想境界の上の行とにおけるフィルタ処理を省略することである。
【0042】
別の代替形態は、たとえば、仮想境界の一方の側でフィルタ処理するときに仮想境界の反対側のサンプルを使用することを回避するために、フィルタの空間カバレッジが、意図された空間カバレッジと比較して著しく低減され、事実上、水平空間カバレッジをもつフィルタを有するにすぎないとき、仮想境界の近くのパディングによるフィルタの修正を反映するためのフィルタ処理による現在サンプルの変化の量を低減することである。
【0043】
別の代替形態は、フィルタの空間カバレッジが、垂直方向におよび水平方向に中心サンプルから1の距離のところの近隣のサンプルを少なくとも含むように、フィルタの空間カバレッジの低減の量を制限することである。
【0044】
各代替形態は、VVCにおけるALFのための仮想境界処理がもたらし得るアーティファクトを除去する利点を提供する。第2の代替形態はまた、フィルタ処理強度、たとえば、仮想境界におけるフィルタ処理による現在サンプル値の変化の量を低減することによって、仮想境界のためにもフィルタ処理のある利益を維持する。
【0045】
したがって、本開示の第1の態様によれば、ビデオシーケンスの画像を符号化または復号するための方法が提供される。本方法は、画像に関連するサンプル値のセットを取得することを含み、サンプル値のセットは、現在サンプル値と現在サンプル値に近隣するサンプル値とを含み、サンプル値の取得されたセットは、サンプル値の第1の矩形ブロック内に含まれ、サンプル値のセットは、現在サンプル値と現在サンプル値に近隣するサンプル値とを含む。本方法は、仮想境界に対する現在サンプル値の相対ロケーションを決定することをさらに含む。仮想境界は、サンプル値の第1のブロックとサンプル値の第2のブロックとの間のブロック境界に対して規定される。仮想境界は、ブロック境界と平行であり、サンプル値の第1のブロック中に含まれるサンプル値の少なくとも1つの行または列だけブロック境界から分離される。本方法は、仮想境界に対する現在サンプル値の決定された相対ロケーションに基づくフィルタ強度値を選択することをさらに含む。本方法は、選択されたフィルタ強度値に基づいて現在サンプル値をフィルタ処理することをさらに含む。
【0046】
本開示の第2の態様によれば、ビデオシーケンスの画像を符号化または復号するための方法が提供される。本方法は、画像に関連するサンプル値のセットを取得することを含む。サンプル値のセットは、現在サンプル値と現在サンプル値に近隣するサンプル値とを含み、サンプル値の取得されたセットは、サンプル値の第1の矩形ブロック内に含まれる。本方法は、仮想境界に対する現在サンプル値の相対ロケーションを決定することをさらに含む。仮想境界は、サンプル値の第1のブロックとサンプル値の第2のブロックとの間のブロック境界に対して規定される。仮想境界は、ブロック境界と平行であり、サンプル値の第1のブロック中に含まれるサンプル値の少なくとも1つの行または列だけブロック境界から分離される。本方法は、仮想境界に対する現在サンプル値の決定された相対ロケーションに基づいて、現在サンプル値をフィルタ処理すべきか否かに関する判定を行うことをさらに含む。
【0047】
本開示の第3の態様によれば、処理回路によって実行されたとき、処理回路に、第1の態様または第2の態様のうちのいずれか1つの方法を実施させる命令を備えるコンピュータプログラムが提供される。
【0048】
本開示の第4の態様によれば、第3の態様によるコンピュータプログラムを備えるキャリアが提供され、キャリアは、電子信号、光信号、無線信号、およびコンピュータ可読記憶媒体のうちの1つである。
【0049】
本開示の第5の態様によれば、装置が提供され、装置は、第1の態様または第2の態様の方法を実施するように適応される。
【図面の簡単な説明】
【0050】
【発明を実施するための形態】
【0051】
図10は、例示的な一実施形態によるシステム1000を示す。システム1000は、エンコーダ1002とデコーダ1004とを含む。図示の例では、デコーダ1004は、エンコーダ1002によって作り出された符号化画像を、ネットワーク110(たとえば、インターネットまたは他のネットワーク)を介して受信することができる。
【0052】
図11は、エンコーダ1002の概略ブロック図である。図11に示されているように、エンコーダ1002は、元の画像を取り込み、前に復号されたサンプル(「イントラ予測」49)、または動き補償50と呼ばれる方法を通したフレームバッファ48に記憶された前に復号されたフレームからのサンプルのいずれかから選択51された予測41を減算する。最良の動き補償サンプルを見つけるタスクは、一般に、動き推定50と呼ばれ、元のサンプルに対して比較することを伴う。予測41を減算した後に、得られた差は、変換42され、その後、量子化43される。量子化された結果は、エントロピー符号化44され、記憶されるか、送信されるか、またはさらに処理され得るビットを生じる。量子化43からの出力はまた、逆量子化45され、その後に、逆方向変換46が続く。次いで、51からの予測が加算47され、その結果は、イントラ予測ユニット49とループフィルタユニット100の両方にフォワーディングされる。ループフィルタユニット100は、デブロッキング、SAOおよび/または(CC-ALFフィルタ処理を含む)ALFフィルタ処理を行い得る。その結果は、フレームバッファ48に記憶され、これは、将来の予測のために使用される。図11に示されていないのは、42、43、49、50、51および100など、他のブロックのためのコーディングパラメータも、同じくエントロピーコーディングされ得ることである。
【0053】
図12は、いくつかの実施形態による、デコーダ1004の対応する概略ブロック図である。デコーダ1004は、エントロピーコード化変換係数を取り込み、エントロピーコード化変換係数は、次いで、デコーダ61によって復号される。次いで、デコーダ61の出力は、逆量子化62を受け、その後に、逆方向変換63が続いて、復号された残差を形成する。この復号された残差に、予測が加算64される。予測は、動き補償ユニット67またはイントラ予測ユニット66のいずれかから選択68される。復号された残差64に予測を加算した後に、サンプルは、後続のブロックのイントラ予測のためにフォワーディングされ得る。サンプルは、ループフィルタユニット100にもフォワーディングされ、ループフィルタユニット100は、デブロッキング、SAO処理、および/または(CC-ALFフィルタ処理を含む)ALF処理を行い得る。ループフィルタユニット100の出力は、フレームバッファ65にフォワーディングされ、フレームバッファ65は、その後復号される画像の動き補償予測67のために使用され得る。ループフィルタユニット100の出力はまた、閲覧またはデコーダの外部での後続の処理のための、出力された復号された画像であり得る。図12に示されていないのは、63、67、66および100など、他のブロックのためのパラメータも、エントロピー復号され得ることである。一例として、ブロック100におけるALFフィルタのための係数が、エントロピー復号され得る。
【0054】
本明細書で開示される実施形態は、静止画像またはビデオの画像における仮想境界のフィルタ処理からのアーティファクトを生成することを回避するために使用され得る。これは、エンコーダ1002および/またはデコーダ1004において適用され得る。本手法は、主に、仮想水平CTU境界について説明されるが、行の代わりに列を参照する仮想垂直境界についてなど、一般の仮想境界についても適用可能であり得る。本手法はまた、主に、ALFについておよびルーマについて説明されるが、また、クロマのためのALFのために、およびCC-ALFのために使用され得る。
【0055】
実施形態1
フィルタ処理されるべきサンプル(「現在サンプル」)が仮想水平CTU境界「上(on)」にあるとき(すなわち、現在サンプルが仮想境界のすぐ上の(immediately above)行にあるとき)、または現在サンプルが仮想水平CTU境界上にある行のすぐ上の行にあるとき(たとえば、フィルタ空間カバレッジが、意図された空間カバレッジから著しく低減されるとき。これは、仮想境界の反対側のサンプルを使用するフィルタを有することを回避するために行われる)、フィルタ処理は、現在サンプルを修正しない。他の場合、フィルタ処理は、現在サンプルを修正し得る。
【0056】
これは、フィルタ処理の前に垂直位置を決定することによって実装され得、決定された位置が仮想水平CTU境界にあるかまたは仮想水平CTU境界の上の行にある場合、フィルタ処理を省略する。仮想水平CTU境界が、CTUのサンプルにおいて与えられたy=CtbSizeY-4にあり、ここで、CTUの最上行が行0である場合、yがCtbSizeY-4に等しいかまたはyがCtbSizeY-5(たとえば、仮想境界の上の行)に等しいとき、フィルタ処理は適用されず、他の場合、フィルタ処理は適用される。
【0057】
まったく同じ事を行うための別の手法は、フィルタサポートのすべての近隣のサンプルは、決定された位置が仮想水平CTU境界にあるかまたは仮想水平CTU境界の上の行にあるとき、現在サンプルを指しており、他の場合、フィルタ処理が現在サンプルを修正し得るようにパディングパラメータに従うように、水平パディングを導入することである。以下で示されている、式1424におけるおよび表43におけるVCCに対する変更。
sum=f[idx[0]]*(Clip3(-c[idx[0]],c[idx[0]],recPicture[h,vy+y3]-curr)+
Clip3(-c[idx[0]],c[idx[0]],recPicture[h,vy-y3]-curr))+
f[idx[1]]*(Clip3(-c[idx[1]],c[idx[1]],recPicture[hx+1-x1,vy+y2]-curr)+
Clip3(-c[idx[1]],c[idx[1]],recPicture[hx-1+x1,vy-y2]-curr))+
f[idx[2]]*(Clip3(-c[idx[2]],c[idx[2]],recPicture[h,vy+y2]-curr)+
Clip3(-c[idx[2]],c[idx[2]],recPicture[h,vy-y2]-curr))+
f[idx[3]]*(Clip3(-c[idx[3]],c[idx[3]],recPicture[hx-1+x1,vy+y2]-curr)+
Clip3(-c[idx[3]],c[idx[3]],recPicture[hx+1-x1,vy-y2]-curr))+
f[idx[4]]*(Clip3(-c[idx[4]],c[idx[4]],recPicture[hx+2-x2,vy+y1]-curr)+
Clip3(-c[idx[4]],c[idx[4]],recPicture[hx-2+x2,vy-y1]-curr))+
f[idx[5]]*(Clip3(-c[idx[5]],c[idx[5]],recPicture[hx+1-x1,vy+y1]-curr)+
Clip3(-c[idx[5]],c[idx[5]],recPicture[hx-1+x1,vy-y1]-curr))+
f[idx[6]]*(Clip3(-c[idx[6]],c[idx[6]],recPicture[h,vy+y1]-curr)+
Clip3(-c[idx[6]],c[idx[6]],recPicture[h,vy-y1]-curr))+
f[idx[7]]*(Clip3(-c[idx[7]],c[idx[7]],recPicture[hx-1+x1,vy+y1]-curr)+
Clip3(-c[idx[7]],c[idx[7]],recPicture[hx+1-x1,vy-y1]-curr))+
f[idx[8]]*(Clip3(-c[idx[8]],c[idx[8]],recPicture[hx-2+x2,vy+y1]-curr)+
Clip3(-c[idx[8]],c[idx[8]],recPicture[hx+2-x2,vy-y1]-curr))+
f[idx[9]]*(Clip3(-c[idx[9]],c[idx[9]],recPicture[hx+3-x3,v]-curr)+
Clip3(-c[idx[9]],c[idx[9]],recPicture[hx-3+x3,v]-curr))+
f[idx[10]]*(Clip3(-c[idx[10]],c[idx[10]],recPicture[hx+2-x2,v]-curr)+
Clip3(-c[idx[10]],c[idx[10]],recPicture[hx-2+x2,v]-curr))+
f[idx[11]]*(Clip3(-c[idx[11]],c[idx[11]],recPicture[hx+1-x1,v]-curr)+
Clip3(-c[idx[11]],c[idx[11]],recPicture[hx-1+x1,v]-curr))。 (1424)
【0058】
実施形態2
この実施形態では、フィルタ処理の量の特定の低減が、仮想水平境界にすぐ隣接する(すなわち、仮想境界のすぐ上のまたはすぐ下の)現在サンプルのフィルタ処理と、仮想水平境界にすぐ隣接する行のすぐ上の/下の行のフィルタ処理とについて適用される。その場合、フィルタの空間カバレッジは、低減されて、水平方向においてのみサンプルをカバーする。
【0059】
これは、フィルタ処理の前に垂直位置を決定することによって実装され得、詳細には、決定された位置が仮想水平CTU境界にあるかまたは仮想水平CTU境界の上の行にある場合、フィルタ処理の量を低減する。仮想水平CTU境界が、CTUのサンプルにおいて与えられたy=CtbSizeY-4にあり、ここで、CTUの最上行が行0である場合、詳細には、yがCtbSizeY-4に等しいかまたはyがCtbSizeY-5(たとえば、仮想境界の上の行)に等しいとき、フィルタ処理の量を低減し、他の場合、特には、フィルタ処理の量の低減は、適用されない。
【0060】
より詳細には、フィルタ処理の量は、フィルタ処理の強度を指す。一例として、3つのサンプルILEFT、ICENTER、IRIGHTを有すると仮定する。中心サンプルのフィルタ処理されたバージョンは、
FILTERED=ICENTER+[5*(ILEFT-ICENTER)+5*(IRIGHT-ICENTER)]/16
として、差を使用して表現され得る。
上記のことは、
FILTERED=[5*ILEFT+6*ICENTER+5*IRIGHT]/16
と等価であり、これは、極めて強いフィルタ処理である。しかしながら、16による除算を32による除算に変更すること(すなわち、除数を16の値から32の値に変更すること)によって、
FILTERED=ICENTER+[5*(ILEFT-ICENTER)+5*(IRIGHT-ICENTER)]/32
を得る。
これは、
FILTERED=[5*ILEFT+22*ICENTER+5*IRIGHT]/32
と等価であり、これは、はるかにより弱いフィルタ処理を生じ、なぜなら、ICENTER値のフィルタ処理されたバージョンは、平均して元のICENTER値からあまり逸脱しないからである。フィルタが差を使用して表現されるとき、除数を16から32にただ変更することによってフィルタの強度を変更することが容易であることも明らかである。一般に、除数は、x*2^(-N)として規定され得、ここで、Nは0よりも大きい。これは、好ましくは、右シフト、x*2^(-N)=x>>N、たとえばxの右シフトによって実装され得る。
【0061】
VVCにおけるこれを実装するための1つの手法は、決定された垂直位置が仮想水平CTU境界にあるかまたはそのような境界の上の行にあるとき、他の場合の右シフトファクタの値よりも高い値を有する右シフトファクタを決定することである。右シフトファクタの妥当な増加は、少なくとも2だけであり、たとえば、基本的にフィルタ処理の寄与を現在値の1/4に低減することであり、なぜなら、ルーマのためのパディングは、現在サンプルに水平方向に隣接する2つのサンプルについて5だけの寄与の増加に対応し、クロマのためのパディングは、現在クロマサンプルに水平方向に隣接する2つのサンプルについて3だけの寄与の増加に対応するからである。これは、VVC仕様に加えて、以下で黄色でマークされた適応シフトファクタalfShiftを導入することによって、達成され得る。したがって、現在サンプルcurrの修正の量は、垂直水平CTU境界上のサンプルとその行の上の行とについて低減され得る。ルーマのための以下の例では、右シフトファクタはalfShiftYに対応し、この例では、右シフトは3だけ増加され、フィルタ処理の寄与を現在値の1/8に低減することに対応する。
sum=curr+((sum+64)>>alfShiftY) (1425)
【0062】
クロマのための以下の例では、右シフトファクタはalfShiftCに対応し、この例では、右シフトは3だけ増加され、フィルタ処理の寄与を現在値の1/8に低減することに対応する。
sum=curr+((sum+64)>>alfShiftC) (1466)
【0063】
代替形態は、同じ手法がクロマのためにも使用され得るが以下のルーマのための例のように、通常右シフトファクタの後の追加のシフトファクタを代わりに規定することであり、以下の通りである。
sum=curr+(((sum+64)>>7)>>alfShiftY) (1425)
【0064】
これは、1つの追加のシフトを必要とするであろう。
【0065】
実施形態3
フィルタ処理の低減が、いくつのサンプルがパディングされるかに依存する、実施形態2と同様に、それにより、フィルタ処理からの寄与の大部分の低減は、仮想水平境界にすぐ隣接するサンプル(すなわち、仮想境界のすぐ上のサンプルおよび仮想境界のすぐ下のサンプル)のフィルタ処理と仮想水平境界にすぐ隣接する行のすぐ上の/下の行のフィルタ処理とについて起こる。
【0066】
実施形態2に加えてこれを行うための1つの手法は、以下のようにalfShiftYファクタを変動させることである。
sum=curr+((sum+64)>>alfShiftY) (1425)
【0067】
したがって、より多くのサンプルがパディングされるとき、現在サンプルcurrの変化の量はより低減される。
【0068】
実施形態4
この実施形態では、フィルタ処理が適用されるべきであるのかフィルタ処理が適用されるべきでないのかを決定するために、追加の条件が検査される。
【0069】
現在サンプルのための近傍の特性に関する1つの条件は、近傍が垂直方向性(勾配が水平方向において支配的である)または対角方向性(勾配が垂直軸から対角方向+45/-45度において支配的である)をもつ構造を有するかどうかを検査し、そうである場合、サンプルのフィルタ処理が実施されず、そうでない場合、フィルタ処理が実施され得ると決定することである。近傍が垂直方向性または対角方向性をもつ構造を有するときにフィルタを回避する理由、それは、パディングされたフィルタが、仮想水平CTU境界上と仮想水平CTU境界の上の行上とでフィルタ処理するときに水平方向においてのみサンプルを利用し、これは、そのような近傍についてフィルタの意図と適合せず、したがって、画像を改善する代わりに、視覚的アーティファクトを作成し得ることである。
【0070】
VVCの場合、一例として、これは、以下のように実装され得る。最初に、現在サンプルが仮想水平CTU境界上または仮想水平CTU境界の上の行上にあるかどうかを決定し、その場合、また、垂直方向性(勾配が水平方向において支配的である)または対角方向性(勾配が垂直軸から対角方向+45/-45度において支配的である)をもつ構造を有する現在サンプルの近傍に対応するフィルタのカテゴリーについて、フィルタ係数を0にセットする。水平方向性(勾配が垂直方向において支配的である)または方向性なし(支配的な勾配方向がない)の構造に対応する現在サンプルの近傍は、フィルタ処理されることを可能にされ得る。これは、たとえば、垂直方向、水平方向および対角線方向の勾配の算出から決定された分類の一部として決定される、filterIdxおよびtransposeIdxを検査することによって決定され得る。filterIdxが0から4の間または15から24の間にあり、かつtransposeIdxが0に等しい場合、フィルタ処理は実施され得、そうでない場合、フィルタ処理は実施されない。
【0071】
より保守的である変形態は、現在サンプルが水平方向性をもつ構造を有する近傍を有するときのみ、現在サンプルのためのフィルタ処理を可能にすることである。これは、フィルタ処理が、垂直方向性と水平方向性の両方を有する構造を劣化させないことを保証することができる。これは、filterIdxが15から24の間にあり、かつtransposeIdxが0に等しいかどうかを検査することによって決定され得、そうでない場合、フィルタ処理は実施されない。一方、それは、コーディングアーティファクトを除去する可能性を低減する。
【0072】
別の変形態は、フィルタ係数が、コーディングされているコンテンツについて具体的に決定された、たとえば、ビットストリーム中で提供されたときのみ、上記の変形態の場合のようにフィルタ処理を可能にすることである。VVCでは、それは、AlfCtbFiltSetIdxYが16よりも大きいかまたはそれに等しいかどうかを検査することによって発見され得、これは、フィルタ係数が、ビットストリーム中で提供されており、規格において指定された固定フィルタ係数の所定のセットからのものではないことを意味する。
【0073】
実施形態5
ルーマの場合、それは、最初に、ALFによってフィルタ処理されるべき現在サンプルが、仮想水平CTU境界にすぐ隣接するかどうか、または仮想水平CTU境界にすぐ隣接する行のすぐ上の/下の行にあるかどうかを決定する。そうである場合、それは、filterIdxが5よりも小さいかどうか、またはfilterIdxが15よりも大きいかどうかを決定する。
【0074】
この実施形態は、基本的に、実施形態2および実施形態4からの変形態の組合せである。
【0075】
ルーマの場合、それは、最初に、ALFによってフィルタ処理されるべき現在行が仮想水平CTU境界にあるかどうか、または仮想水平CTU境界の上の行にあるかどうかを検査する、第1の条件を決定する。条件が満たされない場合、ALFフィルタ処理は適用される。条件が満たされた場合、それは、ALFによってフィルタ処理されるべき現在サンプルを含む4×4ブロックのためのfilterIdxを検査する第2の条件を検査する。第2の条件は、filterIdxが5よりも小さい(等方性近傍)場合、あるいは、filterIdxが15よりも大きいかまたはそれに等しいが、25よりも小さく、かつtransposeIdxが0に等しい(水平方向性をもつ近傍)場合、真である。第2の条件が真である場合、フィルタ処理の量は、フィルタ処理からの寄与が通常フィルタ処理の4分の1に低減されるように、式1425中の右シフトファクタを2だけ増加させることによって、低減される。そうではなく、第2の条件が真でない場合、フィルタ処理は、現在サンプルについて適用されず、これは、式1424の修正バージョンにおいて、x1=1、x2=2およびx3=3をセットすることによって説明され得る(黄色でハイライトされている)。ソフトウェア実装では、これは、この場合、フィルタ処理をただ省略することと同等である。
sum=f[idx[0]]*(Clip3(-c[idx[0]],c[idx[0]],recPicture[h,vy+y3]-curr)+
Clip3(-c[idx[0]],c[idx[0]],recPicture[h,vy-y3]-curr))+
f[idx[1]]*(Clip3(-c[idx[1]],c[idx[1]],recPicture[hx+1-x1,vy+y2]-curr)+
Clip3(-c[idx[1]],c[idx[1]],recPicture[hx-1+x1,vy-y2]-curr))+
f[idx[2]]*(Clip3(-c[idx[2]],c[idx[2]],recPicture[h,vy+y2]-curr)+
Clip3(-c[idx[2]],c[idx[2]],recPicture[h,vy-y2]-curr))+
f[idx[3]]*(Clip3(-c[idx[3]],c[idx[3]],recPicture[hx-1+x1,vy+y2]-curr)+
Clip3(-c[idx[3]],c[idx[3]],recPicture[hx+1-x1,vy-y2]-curr))+
f[idx[4]]*(Clip3(-c[idx[4]],c[idx[4]],recPicture[hx+2-x2,vy+y1]-curr)+
Clip3(-c[idx[4]],c[idx[4]],recPicture[hx-2+x2,vy-y1]-curr))+
f[idx[5]]*(Clip3(-c[idx[5]],c[idx[5]],recPicture[hx+1-x1,vy+y1]-curr)+
Clip3(-c[idx[5]],c[idx[5]],recPicture[hx-1+x1,vy-y1]-curr))+
f[idx[6]]*(Clip3(-c[idx[6]],c[idx[6]],recPicture[h,vy+y1]-curr)+
Clip3(-c[idx[6]],c[idx[6]],recPicture[h,vy-y1]-curr))+
f[idx[7]]*(Clip3(-c[idx[7]],c[idx[7]],recPicture[hx-1+x1,vy+y1]-curr)+
Clip3(-c[idx[7]],c[idx[7]],recPicture[hx+1-x1,vy-y1]-curr))+
f[idx[8]]*(Clip3(-c[idx[8]],c[idx[8]],recPicture[hx-2+x2,vy+y1]-curr)+
Clip3(-c[idx[8]],c[idx[8]],recPicture[hx+2-x2,vy-y1]-curr))+
f[idx[9]]*(Clip3(-c[idx[9]],c[idx[9]],recPicture[hx+3-x3,v]-curr)+
Clip3(-c[idx[9]],c[idx[9]],recPicture[hx-3+x3,v]-curr))+
f[idx[10]]*(Clip3(-c[idx[10]],c[idx[10]],recPicture[hx+2-x2,v]-curr)+
Clip3(-c[idx[10]],c[idx[10]],recPicture[hx-2+x2,v]-curr))+
f[idx[11]]*(Clip3(-c[idx[11]],c[idx[11]],recPicture[hx+1-x1,v]-curr)+
Clip3(-c[idx[11]],c[idx[11]],recPicture[hx-1+x1,v]-curr)) (1424)
sum=curr+((sum+64)>>alfShiftY) (1425)
【0076】
クロマの場合、それは、最初に、ALFによってフィルタ処理されるべき現在行が仮想水平CTU境界にあるかどうか、または仮想水平CTU境界の上の行にあるかどうかを決定する。そうである場合、それは、フィルタ処理からの寄与が通常フィルタ処理の4分の1に低減されるように、式1466中の右シフトファクタを2だけ増加させることによって、フィルタ処理の量を低減する。そうでない場合、通常フィルタ処理が、現在サンプルについて適用される。
sum=curr+((sum+64)>>alfShiftC) (1466)
【0077】
実施形態6
前の実施形態の場合と同様に、パラメータが、符号化/復号されたビットストリーム中でコーディング/復号される。パラメータが、手法が使用されるのか使用されないのかを示すとき。
【0078】
パラメータは、ビットストリームの以下のレベル、適応パラメータセット(APS)、ピクチャ、スライスまたはブロックなどのうちの1つにおいて、符号化/復号され得る。
【0079】
実施形態7
この実施形態では、式1425中の右シフトパラメータ(7)に対するオフセット(alfShiftOffset)が、ビデオビットストリーム中でコーディング/復号される。追加のパラメータは、黄色でハイライトされている。
sum=curr+((sum+64)>>(7+alfShiftOffset)) (1425)
【0080】
オフセットは、ビットストリームの以下のレベル、適応パラメータセット(APS)、ピクチャ、スライスまたはブロックなどのうちの1つにおいて、符号化/復号され得る。パラメータの範囲は、たとえば0~3であり得、これは、フィルタ処理の量を1/2、1/4または1/8に低減する能力に対応する。
【0081】
実施形態8
他の実施形態と同様であるが、仮想境界が仮想垂直境界であり、行は、代わりに、仮想垂直境界の左側の列である。この場合、構造が水平方向性を有するときのみにフィルタ処理を可能にする変形態は、代わりに、構造が垂直方向性を有するときのみ、フィルタ処理を可能にしている。
【0082】
実施形態9
他の実施形態と同様であるが、本手法は、ルーマ成分およびクロマ成分に適用される。
【0083】
実施形態10
他の実施形態と同様であるが、本手法は、ルーマにのみ適用される。
【0084】
実施形態11
この実施形態では、フィルタの空間カバレッジの低減の量は、フィルタの空間カバレッジが、垂直方向におよび水平方向に中心サンプルから1の距離のところの近隣のサンプルを少なくとも含むように、制限される。
【0085】
仮想水平CTU境界のコンテキストでは、これは、1つの行だけ上方への仮想水平CTU境界の位置の修正(現在CTUのデブロッキングが使用することができる行より1つの行だけ上)によって達成され、同時に、ALFフィルタ処理がALF仮想境界の反対側から1つの行を読み取ることを可能にすることができる。これは、フィルタが、垂直方向に中心サンプルから1の距離のところの近隣のサンプル値を少なくとも含むことを可能にする。これは、すべての近隣の行をパディングする極端な場合を回避し、たとえば、ALF仮想境界においてまたはALF仮想境界の上の行においてフィルタ処理するときにフィルタの空間カバレッジを水平方向のみであるように低減した。
【0086】
この場合の仮想水平境界の位置は、図14に見られるように、上のCTU内で現在CTUの最上行より5つのサンプル上である。
【0087】
図14において、フィルタが仮想境界のすぐ下を中心とするときの、すなわち、現在サンプルの位置が仮想境界のすぐ下にあるときのフィルタの位置は、103の場合のように見られ、104の場合のように仮想境界のすぐ上にあり、すなわち、現在サンプルは仮想境界のすぐ上にある。フィルタは、フィルタの中心が104の場合のように仮想境界の上の行にあるときに仮想境界より1つの行だけ下からサンプルを読み取ることを可能にされるか、またはフィルタの中心が103の場合のように仮想境界のすぐ下の行にあるときに仮想境界の上のサンプルを読み取ることを可能にされるので、この場合のパディングの量は、パディングの4つのラインに低減され、これは、フィルタが仮想境界の反対側の1つの行からサンプルを読み取ることを可能にされるときに起こるパディングの最も多い量である。フィルタが仮想境界のすぐ上の行にある場合のパディング、仮想境界のすぐ上の行上の現在サンプルが、図15に見られる。フィルタが仮想境界のすぐ下の行にある場合のパディング、仮想境界のすぐ下の行上の現在サンプルが、図24に見られる。図16では、フィルタは、仮想境界より上に2番目の行上にあり、すなわち、現在サンプルは、仮想境界のすぐ上にある行のすぐ上にある行にあり、この場合、2つの行のみがパディングされる必要がある。図25では、フィルタは、仮想境界より下に2番目の行上にあり、すなわち、現在サンプルは、仮想境界のすぐ下にある行のすぐ下にある行にあり、この場合、2つの行のみがパディングされる必要がある。
【0088】
仮想水平境界を考慮する場合、パディングによるALFフィルタサポートは、3つの行、現在行より1つの行だけ上および現在行より1つの行だけ下となる。これは図17に見られる。左上図では、図3中のすべての値から中央サンプル(120)を減算した。これらの値は、次いで、図17の右上図に示されている係数を乗算される。しかしながら、これは、図17の最右図に示されているように、3つの中央行を除きどこでも0を使用することと同じ事である。中心サンプルと同じ行上のサンプルからのフィルタ処理への寄与は、(図I中のC9、C10およびC11の位置において)意図されたものとなる。中心サンプルの上の行上のサンプルと中心サンプルの下の行上のサンプルとからの寄与は、それらのサンプルが中心により近いときに増幅され、中心の上の行にあるそれぞれのサンプルのためのフィルタ係数は、垂直方向に整合されたおよび上方の係数の和に等しくなり、下の行にあるそれぞれのサンプルのためのフィルタ係数は、垂直方向および下方の係数の和に等しくなる(2*(C5+C1)、3*(C6+C2+C0)、2*(C7+C3)および図17において)。
【0089】
図5に示されているようにサンプルの中心行のみからの増幅された寄与が使用される、現在のVVCドラフトの場合のような、仮想水平CTU境界のALFフィルタ処理の極端なパディングと比較して、この実施形態は、増幅を約1/2に低減し、増幅は、現在サンプルの上と現在サンプルの下の両方のサンプルについて拡散され、これは、フィルタ処理を、よりロバストで、極端なパディング手法のアーティファクトのないものにする。
【0090】
このフィルタ処理手法は、現在のVVCドラフトの表43を以下の表と交換することによって、ルーマについて達成され得る。
【0091】
クロマの場合、これは、現在のVVCドラフトの表44を以下の表と交換することによって、達成され得る。
【0092】
この実施形態は、図14中の位置103からわかるように、ラインバッファ要件を2つのライン(行)だけ増加させる。この実施形態はまた、それが4×4ブロック内に仮想水平境界を有するので、あらゆる4×4ブロックについて8×8の近傍(たとえば、すべての方向におけるブロックの外側の2つのサンプル)に基づいて実施されるALF分類に関して、ルーマに作用する。それに対する1つのソリューションは、仮想境界より下のフィルタ処理について、分類を、行の下半分(行0および行1でなく、行2および行3)と4×4ブロックより下の行からのサンプル(近傍4×8)とに基づかせ、仮想境界より上のフィルタ処理について、分類を、行の上半分(行0および行1)と4×4ブロックより上の行からのサンプル(近傍4×8)とに基づかせることである。より簡単な、および場合によってはまた、よりロバストなソリューションは、仮想境界より上と仮想境界より下の両方で同じ分類を使用することである。そのようなソリューションでは、分類は、4×4ブロック全体(行0~3)と4×4ブロックより上の行からのサンプル(近傍6×8)とについて行われ得、次いで、この分類は、サンプルが仮想境界より下にあるのか上にあるのかに関係なく、4×4ブロック内のすべてのサンプルのフィルタ処理のために使用される。それは、分類インデックス(0~24)および転置インデックス(0~3)を記憶するための追加のラインバッファを必要とし、これは、4Kビデオについて、7ビット×3840/4ビット(たとえば、約800バイト)に対応する。これは、依然として、仮想境界をまったく使用しない場合のラインバッファの数の1/2よりも少なく、なぜなら、その場合、ルーマのための6つの追加のライン(行)を記憶する必要があり、ここで、10のビット深度における4Kビデオのためのルーマサンプルの1つのラインは、10*3840ビット(たとえば、約4800バイト)に対応するからである。
【0093】
VVCにおける分類に対する最も簡単な修正は、仮想境界行より上の行をフィルタ処理するときに仮想境界行も利用可能であることを考慮して、仮想境界より上と仮想境界より下とで同じ分類を使用することであり、これは、以下の表に示されている、y4がCtbSizeY-4に等しいときに開始する、CTU中の最後の4×4ブロックのためのminYおよびmaxYのための調節をただ削除することによって実施され得、以下の表は現在のVVCドラフトに対する変更を示す。依然として、CTU中の4×4ブロックの最後から2番目の行のための調節をしておく必要があり、なぜなら、その4×4ブロックの最後の行より下のサンプルを読み取ることができないからである。
【0094】
分類に対する別のソリューションは、境界より上のフィルタ処理について、仮想境界を含む4×4ブロックの上半分中の2つの行を使用し、境界におけるフィルタ処理または境界より下のフィルタ処理について、4×4ブロックの下半分中の2つの行を使用することである。したがって、仮想境界を含む4×4ブロックのそれぞれの半分について特定の分類を実施することが必要とされる。規格が書かれるやり方、これは、そのような4×4ブロックのための分類の2つのバージョンの記憶を必要とする。分類の修正は、以下の表に示されているようにVVCにおいて指定され得る。
【0095】
次いで、行CtbSize-6およびCtbSize-5について正しいクラスが使用されるように、フィルタ処理を修正することも必要とされ、これは、VVCでは以下のように説明され得る。
【0096】
実施形態12
1つまたは複数の実施形態間の組合せ。
【0097】
図18は、画像を処理する(たとえば、符号化または復号する)ためのプロセス1800を示すフローチャートである。プロセス1800は、ステップs1802において始まり得る。
【0098】
ステップs1802は、画像に関連するサンプル値のセットを取得することを含む。サンプル値のセットは、現在サンプル値と現在サンプル値に近隣するサンプル値とを含み、サンプル値の取得されたセットは、サンプル値の第1の矩形ブロック内に含まれる。
【0099】
ステップs1804は、仮想境界に対する現在サンプル値の相対ロケーションを決定することを含む。仮想境界は、サンプル値の第1のブロックとサンプル値の第2のブロックとの間のブロック境界に対して規定される。仮想境界は、ブロック境界と平行であり、サンプル値の第1のブロック中に含まれるサンプル値の少なくとも1つの行または列だけブロック境界から分離される。
【0100】
ステップs1806は、仮想境界に対する現在サンプル値の決定された相対ロケーションに基づいて、現在サンプル値をフィルタ処理すべきか否かに関する判定を行うことを含む。
【0101】
いくつかの実施形態では、現在サンプルの決定された相対ロケーションに基づいて、現在サンプル値をフィルタ処理すべきか否かに関する判定を行うことは、現在サンプル値が仮想境界に隣接するかどうか(たとえば、仮想境界から1つの行または列以内のところにあるかどうか)を決定することと、現在サンプル値が仮想境界に隣接すると決定したことの結果として、現在サンプル値をフィルタ処理するのを控えるという判定を行うこととを含む。
【0102】
いくつかの実施形態では、仮想境界に対する現在サンプルの決定された相対ロケーションに基づいて、現在サンプル値をフィルタ処理すべきか否かに関する判定を行うことは、仮想境界に対する現在サンプルの決定された相対ロケーションにだけでなく、現在サンプル値を含むサンプル値のブロックの特性にも基づいて、判定を行うことを含む。
【0103】
図19は、画像を処理するためのプロセス1900を示すフローチャートである。プロセス1900は、ステップs1902において始まり得る。
【0104】
ステップs1902は、画像に関連するサンプル値のセットを取得することを含む。サンプル値のセットは、現在サンプル値と現在サンプル値に近隣するサンプル値とを含む。サンプル値の取得されたセットは、サンプル値の第1の矩形ブロック内に含まれる。
【0105】
ステップs1904は、仮想境界に対する現在サンプル値の相対ロケーションを決定することを含む。仮想境界は、サンプル値の第1のブロックとサンプル値の第2のブロックとの間のブロック境界に対して規定される。仮想境界は、ブロック境界と平行であり、サンプル値の第1のブロック中に含まれるサンプル値の少なくとも1つの行または列だけブロック境界から分離される。
【0106】
ステップs1906は、仮想境界に対する現在サンプル値の決定された相対ロケーションに基づくフィルタ強度値を選択することを含む。
【0107】
ステップs1908は、選択されたフィルタ強度値に基づいて現在サンプル値をフィルタ処理することを含む。
【0108】
いくつかの実施形態では、仮想境界に対する現在サンプルの決定された相対ロケーションに基づいてフィルタ強度値を選択することは、仮想境界に対する現在サンプルの決定された相対ロケーションに基づいて右シフト値(たとえば、N、ここでNは整数>0である)または除数(たとえば、2-Nに等しい値)を選択することを含み、選択されたフィルタ量に基づいて現在サンプルをフィルタ処理することは、選択された右シフト値または除数を使用して現在サンプル値をフィルタ処理することを含む。
【0109】
いくつかの実施形態では、仮想境界に対する現在サンプルの決定された相対ロケーションに基づいてフィルタ強度値を選択することは、現在サンプル値が仮想境界に隣接すると決定された場合、第1のフィルタ強度値を選択すること、あるいは現在サンプル値が仮想境界から1つの行または列よりも多く離れていると決定された場合、第2のフィルタ強度値を選択することを含む。
【0110】
いくつかの実施形態では、第1のフィルタ強度値は7よりも大きく、第2のフィルタ強度値は7よりも小さいかまたは7に等しい、あるいは第1のフィルタ強度値は1よりも大きいかまたは1に等しく(たとえば、3)、第2のフィルタ強度値は0である(この実施形態では、選択されたフィルタ強度値は、フィルタ強度調節として機能する)。
【0111】
いくつかの実施形態では、仮想境界に対する現在サンプルの決定された相対ロケーションに基づいてフィルタ強度値を選択することは、現在サンプル値が仮想境界から1つの行または列よりも多く離れていないと決定された場合、第1のフィルタ強度値を選択すること、あるいは現在サンプル値が仮想境界から1つの行または列よりも多く離れていると決定された場合、フィルタ強度値のセットからフィルタ強度値を選択することであって、フィルタ強度値のセットが、第2のフィルタ強度値(たとえば、9)と第3のフィルタ強度値(たとえば、8)と第4のフィルタ強度値(たとえば、7)とを含む、フィルタ強度値のセットからフィルタ強度値を選択することを含む。
【0112】
いくつかの実施形態では、現在サンプル値が仮想境界から1つの行または列よりも多く離れていると決定された場合、フィルタ強度値のセットからフィルタ強度値を選択することは、現在サンプル値が仮想境界から2つの行または列離れていると決定された場合、第2のフィルタ強度値を選択すること、現在サンプル値が仮想境界から3つの行または列離れていると決定された場合、第3のフィルタ強度値を選択すること、あるいは現在サンプル値が仮想境界から少なくとも4つの行または列離れていると決定された場合、第4のフィルタ強度値を選択することを含む。
【0113】
いくつかの実施形態では、仮想境界に対する現在サンプルの決定された相対ロケーションに基づいてフィルタ強度値を選択することは、仮想境界に対する現在サンプルの決定された相対ロケーションにだけでなく、現在サンプル値を含むサンプル値のブロックの特性にも基づいて、フィルタ強度値を選択することを含む。
【0114】
図20は、画像を処理するためのプロセス2000を示すフローチャートである。プロセス2000は、ステップs2002において始まり得る。
【0115】
ステップs2002は、画像に関連するサンプル値のセットを取得することを含み、サンプル値のセットは、現在サンプル値と現在サンプル値に近隣する近隣のサンプル値のセットとを含み、サンプル値の取得されたセットは、サンプル値の第1の矩形ブロック内に含まれ、サンプル値の取得されたセットは、サンプル値の複数の行中に論理的に配置され、前記複数の行は、中央行と、中央行より上の行と、中央行より下の行とからなり、現在サンプル値は前記中央行にある。
【0116】
ステップs2004は、仮想水平境界に対する中央行の相対ロケーションを決定することを含み、仮想水平境界は、サンプル値の第1のブロックとサンプル値の第2のブロックとの間の水平ブロック境界に対して規定され、仮想水平境界は、ブロック境界と平行であり、サンプル値の第1のブロック中に含まれるサンプル値の少なくとも1つの行だけブロック境界から分離される。
【0117】
ステップs2006は、i)中央行が仮想水平境界のすぐ上にあること(図15)、ii)中央行が仮想水平境界のすぐ下にあること(図24)、iii)中央行が仮想水平境界のすぐ上にある行のすぐ上にあること(図16)、またはiv)中央行が仮想水平境界のすぐ下にある行のすぐ下にあること(図25)を決定することを含む。
【0118】
ステップs2008は、中央行が仮想水平境界のすぐ上にまたはすぐ下にあると決定された場合、i)中央行と、ii)中央行のすぐ下の行と、iii)中央行のすぐ上の行とからのサンプルのみに基づいて、現在サンプル値のALFフィルタ処理を適用することを含む(図15および図24)。
【0119】
ステップs2010は、中央行が、仮想水平境界のすぐ上にある行のすぐ上にあると決定されたか、または仮想水平境界のすぐ下にある行のすぐ下にあると決定された場合、i)中央行と、ii)中央行のすぐ上の2つの行と、iii)下の行のすぐ下の2つの行とからのサンプルのみに基づいて、現在サンプル値のALFフィルタ処理を適用することを含む(図16および図25)。
【0120】
いくつかの実施形態では、ルーマのための仮想水平境界は、水平ブロック境界より5つのサンプル上である。
【0121】
いくつかの実施形態では、クロマのための仮想水平境界は、水平ブロック境界より3つのサンプル上である。
【0122】
図21は、いくつかの実施形態による、エンコーダ502またはデコーダ504を実装するための装置2101のブロック図である。すなわち、装置2101は、本明細書で開示される方法を実施するように適応され得る。装置2101がエンコーダ502を実装する実施形態では、装置2101は「エンコーディング装置2101」と呼ばれることがあり、装置2101がデコーダ504を実装する実施形態では、装置2101は「復号装置2101」と呼ばれることがある。図21に示されているように、装置2101は、1つまたは複数のプロセッサ(P)2155(たとえば、1つまたは複数の汎用マイクロプロセッサ、および/または、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、1つまたは複数の他のプロセッサなど)を含み得る処理回路(PC)2102であって、そのプロセッサが、単一のハウジング中または単一のデータセンタ中にコロケートされ得るかあるいは地理的に分散され得る、処理回路(PC)2102と、(コロケートされるかまたは地理的に分散され得る)1つまたは複数のネットワークインターフェース2148であって、ここで、各ネットワークインターフェースは、装置2102が、ネットワークインターフェース2148が接続されるネットワーク110(たとえば、インターネットプロトコル(IP)ネットワーク)に接続された他のノードにデータを送信し、他のノードからデータを受信することを可能にするための送信機(Tx)2145および受信機(Rx)2147を含む、1つまたは複数のネットワークインターフェース2148と、コロケートされるかまたは地理的に分散され得、1つまたは複数の不揮発性記憶デバイスおよび/または1つまたは複数の揮発性記憶デバイスを含み得る、1つまたは複数の記憶ユニット(別名「データ記憶システム」)2108とを備え得る。PC2102がプログラマブルプロセッサを含む実施形態では、コンピュータプログラム製品(CPP)2141が提供され得る。CPP2141はコンピュータ可読媒体(CRM)2142を含み、CRM2142は、コンピュータ可読命令(CRI)2144を備えるコンピュータプログラム(CP)2143を記憶する。CRM2142は、磁気媒体(たとえば、ハードディスク)、光媒体、メモリデバイス(たとえば、ランダムアクセスメモリ、フラッシュメモリ)など、非一時的コンピュータ可読媒体であり得る。いくつかの実施形態では、コンピュータプログラム2143のCRI2144は、PC2102によって実行されたとき、CRIが、装置2101に、本明細書で説明されるステップ(たとえば、フローチャートを参照しながら本明細書で説明されるステップ)を実施させるように適応される。他の実施形態では、装置2101は、コードの必要なしに本明細書で説明されるステップを実施するように適応され得る。すなわち、たとえば、PC2102は、単に1つまたは複数のASICからなり得る。したがって、本明細書で説明される実施形態の特徴は、ハードウェアおよび/またはソフトウェアで実装され得る。
【0123】
本明細書で開示される実施形態は、仮想CTU境界と仮想CTU境界に隣接する境界とにおいて、ALFのためのフィルタ処理の量を低減することによって、フィルタ処理によるアーティファクトをもたらすことを回避する。以下は、実現された改善を示す客観的結果である。
【0124】
結果
VTM-7.0(VVC参照ソフトウェア)と比較した実施形態1についての客観的結果(負数が改善であるBDR)は、以下の通りである。
【0125】
VTM-7.0(本発明の時のVVC参照ソフトウェア)と比較した実施形態2についての客観的結果は、以下の通りである。
【0126】
図22は、従来のやり方で処理された第1の画像(左画像)と、実施形態1に従って処理された第2の画像(下部画像)とを示す。第1の画像は、ALFによる仮想境界におけるアーティファクト(ラインのぼけ)を有する。第2の画像は、アーティファクトを含まない。したがって、第2の画像は、第1の画像よりも、元の画像のより高品質のバージョンである。
図23は、従来のやり方で処理された第1の画像(左画像)と、実施形態2に従って処理された第2の画像(下部画像)とを示す。第1の画像は、ALFによる仮想境界におけるアーティファクト(ラインのぼけ)を有する。第2の画像は、アーティファクトを含まない。したがって、第2の画像は、第1の画像よりも、元の画像のより高品質のバージョンである。
【0127】
様々な実施形態が本明細書で説明されたが、それらの実施形態は、限定ではなく、例として提示されたにすぎないことを理解されたい。したがって、本開示の広さおよび範囲は、上記で説明された例示的な実施形態のいずれによっても限定されるべきでない。その上、本明細書で別段に指示されていない限り、またはコンテキストによって明確に否定されていない限り、上記で説明されたエレメントのそれらのすべての考えられる変形形態における任意の組合せが、本開示によって包含される。
【0128】
さらに、上記で説明され、図面に示されたプロセスは、ステップのシーケンスとして示されたが、これは、説明のためにのみ行われた。したがって、いくつかのステップが追加され得、いくつかのステップが省略され得、ステップの順序が並べ替えられ得、いくつかのステップが並行して実施され得ることが企図される。
【0129】
参照
[1]Misraら、「Cross-Component Adaptive Loop Filter for chroma」、JVET-O0636_r1、2019年7月(http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/15_Gothenburg/wg11/JVET-O0636-v2.zipにおいて入手可能)
[2]Chen、「Description of Core Experiment 5(CE5):Cross-component adaptive loop filtering」、JVET-P2025-v4、2019年10月(http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/16_Geneva/wg11/JVET-P2025-v4.zipにおいて入手可能)
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
【国際調査報告】