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

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

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

特許7387878ビデオまたは画像コーディングにおけるデブロッキングフィルタ選択
<>
  • 特許-ビデオまたは画像コーディングにおけるデブロッキングフィルタ選択 図1
  • 特許-ビデオまたは画像コーディングにおけるデブロッキングフィルタ選択 図2
  • 特許-ビデオまたは画像コーディングにおけるデブロッキングフィルタ選択 図3
  • 特許-ビデオまたは画像コーディングにおけるデブロッキングフィルタ選択 図4
  • 特許-ビデオまたは画像コーディングにおけるデブロッキングフィルタ選択 図5
  • 特許-ビデオまたは画像コーディングにおけるデブロッキングフィルタ選択 図6
  • 特許-ビデオまたは画像コーディングにおけるデブロッキングフィルタ選択 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-17
(45)【発行日】2023-11-28
(54)【発明の名称】ビデオまたは画像コーディングにおけるデブロッキングフィルタ選択
(51)【国際特許分類】
   H04N 19/117 20140101AFI20231120BHJP
   H04N 19/14 20140101ALI20231120BHJP
   H04N 19/176 20140101ALI20231120BHJP
   H04N 19/82 20140101ALI20231120BHJP
   H04N 19/86 20140101ALI20231120BHJP
【FI】
H04N19/117
H04N19/14
H04N19/176
H04N19/82
H04N19/86
【請求項の数】 13
(21)【出願番号】P 2022514183
(86)(22)【出願日】2020-09-04
(65)【公表番号】
(43)【公表日】2022-11-14
(86)【国際出願番号】 SE2020050835
(87)【国際公開番号】W WO2021045671
(87)【国際公開日】2021-03-11
【審査請求日】2022-05-18
(31)【優先権主張番号】62/897,004
(32)【優先日】2019-09-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】598036300
【氏名又は名称】テレフオンアクチーボラゲット エルエム エリクソン(パブル)
(74)【代理人】
【識別番号】100109726
【弁理士】
【氏名又は名称】園田 吉隆
(74)【代理人】
【識別番号】100161470
【弁理士】
【氏名又は名称】冨樫 義孝
(74)【代理人】
【識別番号】100194294
【弁理士】
【氏名又は名称】石岡 利康
(74)【代理人】
【識別番号】100194320
【弁理士】
【氏名又は名称】藤井 亮
(74)【代理人】
【識別番号】100150670
【弁理士】
【氏名又は名称】小梶 晴美
(72)【発明者】
【氏名】アンデション, ケネト
(72)【発明者】
【氏名】エンホーン, ジャック
【審査官】岩井 健二
(56)【参考文献】
【文献】国際公開第2015/138714(WO,A1)
【文献】M. Ikeda, et al.,CE11.1.6, CE11.1.7 and CE11.1.8: Joint proposals for long deblocking from Sony, Qualcomm, Sharp, Ericsson,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-M0471,13th Meeting: Marrakesh, MA,2019年01月,pp.1-11
【文献】K. Andersson, and J. Enhorn,Non-CE5: Fixes for long luma deblocking filter decision,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-P0411,16th Meeting: Geneva, CH,2019年09月,pp.1-7
【文献】K. Andersson, and J. Enhorn,CE1-1.1 to CE1-1.3: Fixes for long luma deblocking filter decision,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-Q0054,17th Meeting: Brussels, BE,2020年01月,pp.1-11
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
垂直および/または水平ブロック境界のデブロッキングフィルタ処理のための方法(400)であって、画像もしくはビデオエンコーダまたは画像もしくはビデオデコーダによって実施され、
サンプル値の第1のブロックとサンプル値の第2のブロックとを備えるサンプル値の第1のセットを取得する(s402)ことであって、サンプル値の前記第1のブロックが、i=0~7およびk=0~3のサンプル値B1_i,kのセットを備え、サンプル値の前記第2のブロックが、j=0~7およびk=0~3のサンプル値B2_j,kのセットを備える、ことと、
サンプル値の前記第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定する(s404)ことであって、サンプル値の前記第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定することが、
サンプル値B1_6,0を使用して第1の勾配値(すなわちmaxGradB1_6,0)を計算する(s502)こと、
maxGradB1_6,0を使用して第1のpq値(すなわちpq1_0)を計算する(s504)ことであって、pq1_0を計算することが、値spを計算すること、値sqを計算すること、およびsp+sqを計算することを備え、pq1_0=(sp+sq)であり、spを計算することが、sp=(Abs(B1_0,0-B1_3,0)+Abs(B1_3,0-B1_7,0)+maxGradB1_6,0+1)>>1を計算することを備え、maxGradB1_6,0が、Abs(B1_7,0-B1_6,0-B1_5,0+B1_4,0)に等しい、第1のpq値(pq1_0)を計算する(s504)こと、
pq1_0をしきい値と比較する(s508)こと、
サンプル値B1_6,3を使用して第2の勾配値(maxGradB1_6,3)を計算すること、
maxGradB1_6,3を使用して第2のpq値(pq1_3)を計算すること、ならびに
pq1_3を前記しきい値と比較する(s508)こと
を備える、ことと
を含む、方法(400)。
【請求項2】
前記第2のブロックが、最大のフィルタ長(maxFilterLengthQ)を有し、
maxFilterLengthQが、7に等しい場合、sq=(Abs(B2_0,0-B2_3,0)+Abs(B2_3,0-B2_7,0)+maxGradB2_6,0+1)>>1であり、ここで、maxGradB2_6,0が、第3の勾配値であり、
maxFilterLengthQが、5に等しい場合、sq=(Abs(B2_0,0-B2_3,0)+Abs(B2_3,0-B2_5,0)+1)>>1であり、
maxFilterLengthQが、7に等しくない、および5に等しくない場合、sq=Abs(B2_0,0-B2_3,0)である、
請求項1に記載の方法。
【請求項3】
maxGradB2_6,0が、Abs(B2_7,0-B2_6,0-B2_5,0+B2_4,0)に等しい、請求項2に記載の方法。
【請求項4】
pq1_3を計算することが、値sp3を計算することと、値sq3を計算することと、sp3+sq3を計算することとを備え、pq1_3=(sp3+sq3)であり、sp3を計算することが、sp3=(Abs(B1_0,3-B1_3,3)+Abs(B1_3,3-B1_7,3)+maxGradB1_6,3+1)>>1を計算することを含む、請求項1から3のいずれか一項に記載の方法。
【請求項5】
maxGradB1_6,3が、Abs(B1_7,3-B1_6,3-B1_5,3+B1_4,3)に等しい、請求項4に記載の方法。
【請求項6】
maxGradB1_6,0を使用してpq1_0を計算することは、前記第1のブロックのための最大のフィルタ長(maxFilterLengthP)が、7に等しいと決めることの結果として実施される、請求項1から5のいずれか一項に記載の方法。
【請求項7】
maxGradB1_6,3を使用してpq1_3を計算することは、前記第1のブロックのための最大フィルタ長(maxFilterLengthP)が、7に等しいと決めることの結果として実施される、請求項1から6のいずれか一項に記載の方法。
【請求項8】
垂直境界をデブロックするとき、前記i値が、ブロックの列を識別し、前記k値が、前記ブロックの行を識別し、
水平境界をデブロックするとき、前記k値が、前記ブロックの列を識別し、前記i値が、前記ブロックの行を識別する、
請求項1から7のいずれか一項に記載の方法。
【請求項9】
maxFilterLengthPが7に等しいときに前記長いフィルタによってフィルタ処理すべき前記サンプルが、B1_0,0~B1_6,0、B1_0,1~B1_6,1、B1_0,2~B1_6,2およびB1_0,3~B1_6,3である、請求項1から8のいずれか一項に記載の方法。
【請求項10】
maxFilterLengthQが7に等しいときに前記長いフィルタによってフィルタ処理すべき前記サンプルが、B2_0,0~B2_6,0、B2_0,1~B2_6,1、B2_0,2~B2_6,2およびB2_0,3~B2_6,3である、請求項1から9のいずれか一項に記載の方法。
【請求項11】
処理回路(602)によって実行されたとき、前記処理回路(602)に、請求項1から10のいずれか一項に記載の方法を実施させる命令(644)を含む、コンピュータプログラム(643)。
【請求項12】
請求項11に記載のコンピュータプログラムを含んでいるコンピュータ可読記憶媒体
【請求項13】
垂直および/または水平ブロック境界のデブロッキングフィルタ処理のための装置(600)であって、請求項1から10のいずれか一項に記載の方法を実施するように適応された、装置(600)。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ビデオおよび/または画像コーディングおよびデコーディングに関する。
【背景技術】
【0002】
ビデオシーケンスは、一連の画像からなり、ここで、各画像は、1つまたは複数の成分からなる。各成分は、サンプル値の2次元矩形アレイとして説明され得る。ビデオシーケンス中の画像は、3つの成分、すなわち、サンプル値がルーマ値である1つのルーマ成分Yと、サンプル値がクロマ値である2つのクロマ成分CbおよびCrとからなることが一般的である。他の例は、Y’ Cb Cr、YuvおよびICTCPを含む。ICTCPにおいて、Iは、「強度ルーマ」成分である。本明細書の残りの部分では、任意のルーマ成分Y’、Y、またはIを、Yまたは単にルーマと呼ぶことにする。クロマ成分の大きさは、各大きさにおいて1/2だけルーマ成分よりも小さいことが一般的である。たとえば、HD画像のルーマ成分のサイズは、1920×1080であり、クロマ成分は、各々、960×540の大きさを有する。成分は、色成分と呼ばれることがある。
【0003】
「ブロック」は、サンプルの2次元アレイである。ビデオコーディングでは、各成分は、1つまたは複数のブロックに分割され、コーディングされたビデオビットストリームは、一連のブロックである。ビデオコーディングでは、画像は、画像の特定の領域をカバーするユニットに分割されることが一般的である。各ユニットは、その特定の領域を構成するすべての成分からのすべてのブロックからなり、各ブロックは、1つのユニットに完全に属する。H.264におけるマクロブロックおよびHEVCにおけるコーディングユニット(CU)が、ユニットの例である。
【0004】
HEVCでは、各画像は、コーディングツリーユニット(CTU)に区画される。CTUは、ルーマサンプルのN×Nブロックと、2つのM×M対応クロマブロックとからなる。HEVCにおけるCTUは、H.264および以前の規格におけるマクロブロックに似ているが、マクロブロックとは対照的に、CTUサイズが、設定可能である。しかしながら、ほとんどの場合、HEVCにおけるCTUサイズは、64×64個のルーマサンプルに設定される。各CTUは、再帰的に4分木分割され得る。次いで、4分木のルートは、CTUに関連付けられる。4分木は、コーディングユニット(CU)と呼ばれるリーフに達するまで、分割される。HEVCにおけるCUは、常に、等しい高さおよび幅をもつルーマブロックからなる。各CTUがどのように分割されたかが、ビットストリーム中で伝達される。CUは、さらに、2つの他のツリー、すなわち、ノードとして予測ユニット(PU)を有する予測ツリー、およびノードとして変換ユニット(TU)を有する変換ツリーのルートノードである。HEVCにおけるいくつかのデコーディングプロセスは、CUレベルで行われ、いくつかは、PUレベルで行われ、いくつかは、TUレベルで行われる。PUの間の境界およびTUの間の境界が、TUおよびPUの間の不連続性を低減するために、デブロッキングフィルタによってフィルタ処理される。HEVCでは、PUのための2種類の予測タイプ、すなわち、予測のために現在の画像の、前にデコードされたサンプルからの予測のみを使用するイントラ予測と、少なくとも1つの前にデコードされた画像からの予測を使用するインター予測とが存在する。
【0005】
HEVCでは、デブロッキングは、まず垂直境界に対して適用され、次いで水平境界に対して適用される。境界は、TU境界またはPU境界のいずれかである。並列フレンドリーなデブロッキングを可能にするために、デブロッキングは、8×8サンプルグリッドに対して実施される。
【0006】
デブロッキングフィルタ強度パラメータ(bs)は、各境界について設定される。bsの値が0を超える場合、デブロッキングは適用され得る。境界強度が大きくなればなるほど、より強いフィルタ処理が適用される。まず、ブロックの間のPU境界におけるブロックのうちのいずれかが、イントラ予測ブロックであるかどうかが検査され、その場合、(bs=2に設定され)、あるいは両方のブロックが、インター予測を使用するが、両方のブロックは、異なる参照フレームを使用するかまたは著しく異なる動きベクトルを有するかどうかが検査され、その場合、(bs=1に設定される)。ブロックの間のTU境界が、ブロックのうちの少なくとも1つ中に非ゼロ変換係数を有するかどうか(コードブロックフラグCBFが、1に等しいかどうか)も検査され、その場合、(bs=1に設定される)。この最初の検査は、デブロッキングが適用されるべきであることを指し示すために、0を超える境界強度(bs)を設定する。境界強度が大きくなればなるほど、より強いフィルタ処理が適用される。デブロックするときに自然構造を削除することを低減/回避するために、境界のそれぞれの側に自然構造がないことの検査が、次いで、ルーマに適用される。HEVCにおいて、勾配計算が、以下の不等式、すなわち、abs(p0-2*p1+p2)+abs(q0-2*q1+q2)<ベータを使用して、境界のそれぞれの側で使用され、ここで、(「β」とも表わされる)ベータは、ブロックのための量子化パラメータに基づくパラメータであり、p0、p1~p2は、ブロック境界の一方の側のサンプルであり、q0、q1~q2は、ブロック境界の反対側のサンプルである。条件が、境界に沿った2つの位置において検査され、両方の条件が満たされた場合、ルーマサンプルは、境界のその4サンプル部分についてデブロックされる。クロマ境界は、隣接ブロックのうちのいずれか1つがイントラコーディングされる場合、常にフィルタ処理され得る。
【0007】
VVCの仕様の現在のドラフト(VVCドラフト6 JVET-O2001-v14)において、コーディングツリーユニット(CTU)は、HEVCにおけるCTUに類似するが、H.266におけるCTUは、128×128個のルーマサンプルのサイズを有することが異なる。VVCにおいて、CTUは、得られたCUが矩形ルーマブロックからなり得るように、よりフレキシブルに分割され得る。VVCには、HEVCの場合のような予測ツリーまたは変換ツリーがない。しかしながら、VVCにおけるCUは、複数のTUに、または複数の予測サブブロックに分割され得る。
【0008】
VVCの仕様の現在のドラフト(VVCドラフト6 JVET-O2001-v14)において、デブロッキングは、CUについて4×4グリッドに対して適用され、まず垂直境界(CU/暗黙的TU/予測サブブロック境界)に対して、次いで、水平境界(CU/暗黙的TU/予測サブブロック)に対して適用される。CU内の予測サブブロック境界は、8×8グリッド上でフィルタ処理される。デブロッキングは、HEVCデブロッキングに基づくが、より長いデブロッキングフィルタをも有し、ブロック境界に直交するサイズが、ルーマについて少なくとも一方の側で32に等しいかまたは32を超え、反対側が、4を超える場合、最大7つのサンプルを修正し(最大8つのサンプルを読み)、ブロック境界に直交するサイズが、ルーマについて一方の側について32よりも小さい場合、デブロッキングは、最大3つのサンプルを修正し、その側で最大4つのサンプルを読み、ブロック境界に直交するサイズが、クロマについてクロマサンプル中の境界の両方の側で8に等しいかまたは8を超える場合、最大3つのクロマサンプルを修正し、最大4つのクロマサンプルを読み、さもなければ、デブロッキングは、最大1つのサンプルを修正し、境界のそれぞれの側で最大2つのサンプルを読む。
【0009】
VVC仕様(JVET-O2001-v14)は、セクション8.8.3 デブロッキングフィルタプロセスにおいて規定されている長いフィルタおよび決定を有する。
【0010】
デブロッキング決定は、ラインのセグメントについて、ライン0およびライン4について算出される。
【0011】
図3は、各ラインおよびブロックについて、4つのライン、すなわち、ライン0~ライン3についてのおよび8つのサンプル、すなわち、サンプル0~7についての(「Pブロック」と表わされる)第1のブロック302と(「Qブロック」と表わされる)第2のブロック304との間の境界を示す。
【0012】
以下は、VVC仕様(JVET-O2001-v14)からの抜粋である。この抜粋は、長いフィルタ決定に関する。
【0013】
--抜粋開始--
8.8.3.6.1 ルーマブロックエッジのための決定プロセス
...
以下の順序付きステップが適用される。
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に等しいかまたは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*pq0Lに等しく設定される。
ii.変数spはsp0に等しく設定され、変数sqはsq0に等しく設定され、変数spqはspq0に等しく設定される。
iii.変数p、p、qおよびqは、まず、0に初期化され、次いで、以下のようにsidePisLargeBlkおよびsideQisLargeBlkに従って修正される。
- sidePisLargeBlkが、1に等しいとき、以下が適用される。
=p3,0 (8-1099)
=pmaxFilterLengthP,0 (8-1100)
- sideQisLargeBlkが、1に等しいとき、以下が適用される。
=q3,0 (8-1101)
=qmaxFilterLengthQ,0 (8-1102)
iv.サンプルロケーション(xCb+xBl,yCb+yBl)について、節8.8.3.6.5において規定されているルーマサンプルのための決定プロセスが、サンプル値p、p、q、q、変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、βおよびtを入力として、呼び出され、出力は、決定dSam0に割り振られる。
v.変数dpqは、2*dpq3Lに等しく設定される。
vi.変数spはsp3に等しく設定され、変数sqはsq3に等しく設定され、変数spqはspq3に等しく設定される。
vii.変数p、p、qおよびqは、まず、0に初期化され、次いで、以下のようにsidePisLargeBlkおよびsideQisLargeBlkに従って修正される。
- sidePisLargeBlkが、1に等しいとき、以下が適用される。
=p3,3 (8-1103)
=pmaxFilterLengthP,3 (8-1104)
- sideQisLargeBlkが、1に等しいとき、以下が適用される。
=q3,3 (8-1105)
=qmaxFilterLengthQ,3 (8-1106)
viii.edgeTypeが、サンプルロケーション(xCb+xBl,yCb+yBl+3)についてEDGE_VERに等しいとき、またはedgeTypeが、サンプルロケーション(xCb+xBl+3,yCb+yBl)についてEDGE_HORに等しいとき、節8.8.3.6.5において規定されているルーマサンプルのための決定プロセスが、サンプル値p、p、q、q、変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、βおよびtを入力として、呼び出され、出力は、決定dSam3に割り振られる。
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に等しく設定された変数p、p、q、q、変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、βおよびtを入力として、呼び出され、出力は、決定dSam0に割り振られる。
iv.変数dpqは、2*dpq3に等しく設定される。
v.変数spはsp3に等しく設定され、変数sqはsq3に等しく設定され、変数spqはspq3に等しく設定される。
vi.edgeTypeが、サンプルロケーション(xCb+xBl,yCb+yBl+3)についてEDGE_VERに等しいとき、またはedgeTypeが、サンプルロケーション(xCb+xBl+3,yCb+yBl)についてEDGE_HORに等しいとき、節8.8.3.6.5において規定されているサンプルのための決定プロセスが、すべて0に等しく設定された変数p、p、q、q、変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、βおよびtを入力として、呼び出され、出力は、決定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に等しく設定される。
8.8.3.6.2 ルーマブロックエッジのためのフィルタ処理プロセス
...
edgeTypeの値に応じて、以下が適用される。
- edgeTypeが、EDGE_VERに等しい場合、以下の順序付きステップが適用される。
...
3.dEが、k=0..3である各サンプルロケーション(xCb+xBl,yCb+yBl+k)について3に等しいとき、以下の順序付きステップが適用される。
a.節8.8.3.6.7において規定されている長いフィルタを使用するルーマサンプルのためのフィルタ処理プロセスが、i=0..maxFilterLengthPおよびj=0..maxFilterLengthQのサンプル値pi,k、qj,kと、i=0..maxFilterLengthP-1の(xCb+xBl-i-1,yCb+yBl+k)に等しく設定されたロケーション(xP,yP)およびj=0..maxFilterLengthQ-1の(xCb+xBl+j,yCb+yBl+k)に等しく設定されたロケーション(xQ,yQ)と、変数maxFilterLengthP、maxFilterLengthQおよびtとを入力として、ならびにフィルタ処理されたサンプル値p’およびq’を出力として、呼び出される。
b.i=0..maxFilterLengthP-1のフィルタ処理されたサンプル値p’は、以下のように、サンプルアレイrecPicture内の対応するサンプルを置き換える。
recPicture[xCb+xBl-i-1][yCb+yBl+k]=p’ (8-1116)
c.j=0..maxFilterLengthQ-1のフィルタ処理されたサンプル値q’は、以下のように、サンプルアレイrecPicture内の対応するサンプルを置き換える。
recPicture[xCb+xBl+j][yCb+yBl+k]=q’ (8-1117)
...
- さもなければ(edgeTypeがEDGE_HORに等しい)、以下の順序付きステップが適用される。
...
3.dEが、k=0..3である各サンプルロケーション(xCb+xBl+k,yCb+yBl)について3に等しいとき、以下の順序付きステップが適用される。
a.節8.8.3.6.7において規定されている長いフィルタを使用するルーマサンプルのためのフィルタ処理プロセスが、i=0..maxFilterLengthPおよびj=0..maxFilterLengthQのサンプル値pi,k、qj,kと、i=0..maxFilterLengthP-1の(xCb+xBl+k,yCb+yBl-i-1)に等しく設定されたロケーション(xP,yP)およびj=0..maxFilterLengthQ-1の(xCb+xBl+k,yCb+yBl+j)に等しく設定されたロケーション(xQ,yQ)と、変数maxFilterLengthP、maxFilterLengthQ、および変数tとを入力として、ならびにフィルタ処理されたサンプル値p’およびq’を出力として、呼び出される。
b.i=0..maxFilterLengthP-1のフィルタ処理されたサンプル値p’は、以下のように、サンプルアレイrecPicture内の対応するサンプルを置き換える。
recPicture[xCb+xBl+k][yCb+yBl-i-1]=p’ (8-1122)
c.j=0..maxFilterLengthQ-1のフィルタ処理されたサンプル値q’は、以下のように、サンプルアレイrecPicture内の対応するサンプルを置き換える。
recPicture[xCb+xBl+k][yCb+yBl+j]=q’ (8-1123)
...
8.8.3.6.5 ルーマサンプルのための決定プロセス
このプロセスへの入力は、
- サンプル値p、p、qおよびq
- 変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、βおよびt
である。
このプロセスの出力は、決定を含んでいる変数dSamである。
変数spおよびsqは、以下のように修正される。
- sidePisLargeBlkが、1に等しいとき、以下が適用される。
sp=(sp+Abs(p-p)+1)>>1 (8-1158)
- sideQisLargeBlkが、1に等しいとき、以下が適用される。
sq=(sq+Abs(q-q)+1)>>1 (8-1159)
変数sThrは、以下のように導出される。
- sidePisLargeBlkが1に等しいか、またはsideQisLargeBlkが1に等しい場合、以下が適用される。
sThr=3*β>>5 (8-1160)
- さもなければ、以下が適用される。
sThr=β>>3 (8-1161)
変数dSamは、以下のように規定される。
- 以下の条件、すなわち、
- dpqは、(β>>2)よりも小さい、
- sp+sqは、sThrよりも小さい、
- spqは、(5*t+1)>>1よりも小さい、
のうちのすべてが真である場合、dSamは、1に等しく設定される。
- さもなければ、dSamは、0に等しく設定される。
...
8.8.3.6.6 短いフィルタを使用するルーマサンプルのためのフィルタ処理プロセス
このプロセスへの入力は、
- i=0..3のサンプル値pおよびq
- i=0..2のpおよびqのロケーション、すなわち、(xP,yP)および(xQ,yQ)、
- 変数dE、
- それぞれサンプルp1およびq1をフィルタ処理するという決定を含んでいる変数dEpおよびdEq、
- 変数t
である。
このプロセスの出力は、
- フィルタ処理されたサンプルnDpおよびnDqの数、
- i=0..nDp-1、j=0..nDq-1のフィルタ処理されたサンプル値p’およびq’、
である。
dEの値に応じて、以下が適用される。
- 変数dEが、2に等しい場合、nDpおよびnDqは、両方とも3に等しく設定され、以下の強いフィルタ処理が適用される。
’=Clip3(p-3*t,p+3*t,(p+2*p+2*p+2*q+q+4)>>3) (8-1162)
’=Clip3(p-2*t,p+2*t,(p+p+p+q+2)>>2) (8-1163)
’=Clip3(p-1*t,p+1*t,(2*p+3*p+p+p+q+4)>>3) (8-1164)
’=Clip3(q-3*t,q+3*t,(p+2*p+2*q+2*q+q+4)>>3) (8-1165)
’=Clip3(q-2*t,q+2*t,(p+q+q+q+2)>>2) (8-1166)
’=Clip3(q-1*t,q+1*t,(p+q+q+3*q+2*q+4)>>3) (8-1167)
- さもなければ、nDpおよびnDqは、両方とも0に等しく設定され、以下の弱いフィルタ処理が適用される。
- 以下が適用される。
Δ=(9*(q-p)-3*(q-p)+8)>>4 (8-1168)
- Abs(Δ)が、t*10よりも小さいとき、以下の順序付きステップが適用される。
- フィルタ処理されたサンプル値p’およびq’は、以下のように規定される。
Δ=Clip3(-t,t,Δ) (8-1169)
’=Clip1(p+Δ) (8-1170)
’=Clip1(q-Δ) (8-1171)
- dEpが、1に等しいとき、フィルタ処理されたサンプル値p’は、以下のように規定される。
Δp=Clip3(-(t>>1),t>>1,(((p+p+1)>>1)-p+Δ)>>1) (8-1172)
’=Clip1(p+Δp) (8-1173)
- dEqが、1に等しいとき、フィルタ処理されたサンプル値q’は、以下のように規定される。
Δq=Clip3(-(t>>1),t>>1,(((q+q+1)>>1)-q-Δ)>>1) (8-1174)
’=Clip1(q+Δq) (8-1175)
- nDpは、dEp+1に等しく設定され、nDqは、dEq+1に等しく設定される。
nDpが0よりも大きく、以下の条件のうちの1つまたは複数が真であるとき、nDpは、0に等しく設定される
- サンプルpを含んでいるコーディングブロックを含むコーディングユニットのcu_transquant_bypass_flagは、1に等しい。
- サンプルpを含んでいるコーディングブロックを含むコーディングユニットのpred_mode_plt_flagは、1に等しい。
nDqが0よりも大きく、以下の条件のうちの1つまたは複数が真であるとき、nDqは、0に等しく設定される。
- サンプルqを含んでいるコーディングブロックを含むコーディングユニットのcu_transquant_bypass_flagは、1に等しい。
- サンプルqを含んでいるコーディングブロックを含むコーディングユニットのpred_mode_plt_flagは、1に等しい。
8.8.3.6.7 長いフィルタを使用するルーマサンプルのためのフィルタ処理プロセス
このプロセスへの入力は、
- 変数maxFilterLengthPおよびmaxFilterLengthQ、
- i=0..maxFilterLengthPおよびj=0..maxFilterLengthQのサンプル値pおよびq
- i=0..maxFilterLengthP-1およびj=0..maxFilterLengthQ-1のpおよびqのロケーション、すなわち、(xP,yP)および(xQ,yQ)、
- 変数t
である。
このプロセスの出力は、
- i=0..maxFilterLengthP-1、j=0..maxFilterLenghtQ-1のフィルタ処理されたサンプル値p’およびq
である。
変数refMiddleは、以下のように導出される。
- maxFilterLengthPがmaxFilterLengthQに等しく、maxFilterLengthPが5に等しい場合、以下が適用される。
refMiddle=(p+p+2*(p+p+p+q+q+q)+q+q+8)>>4 (8-1176)
- さもなければ、maxFilterLengthPがmaxFilterLengthQに等しく、maxFilterLengthPが5に等しくない場合、以下が適用される。
refMiddle=(p+p+p+p+p+p+2*(p+q)+q+q+q+q+q+q+8)>>4 (8-1177)
- さもなければ、以下の条件、すなわち、
- maxFilterLengthQが7に等しく、maxFilterLengthPが5に等しい、
- maxFilterLengthQが5に等しく、maxFilterLengthPが7に等しい、
のうちの1つが真である場合、
以下が適用される。
refMiddle=(p+p+2*(p+p+p+q+q+q)+q+q+8)>>4 (8-1178)
- さもなければ、以下の条件、すなわち、
- maxFilterLengthQが5に等しく、maxFilterLengthPが3に等しい、
- maxFilterLengthQが3に等しく、maxFilterLengthPが5に等しい、
のうちの1つが真である場合、
以下が適用される。
refMiddle=(p+p+p+p+q+q+q+q+4)>>3 (8-1179)
- さもなければ、maxFilterLengthQが7に等しく、maxFilterLengthPが3に等しい場合、以下が適用される。
refMiddle=(2*(p+p+p+q)+p+p+q+q+q+q+q+q+8)>>4 (8-1180)
- さもなければ、以下が適用される。
refMiddle=(p+p+p+p+p+p+2*(q+q+q+p)+q+q+8)>>4 (8-1181)
変数refPおよびrefQは、以下のように導出される。
refP=(pmaxFilterLengtP+pmaxFilterLengthP-1+1)>>1 (8-1182)
refQ=(qmaxFilterLengtQ+qmaxFilterLengthQ-1+1)>>1 (8-1183)
変数fおよびtPDは、以下のように規定される。
- maxFilterLengthPが、7に等しい場合、以下が適用される。
0..6={59,50,41,32,23,14,5} (8-1184)
PD0..6={6,5,4,3,2,1,1} (8-1185)
- さもなければ、maxFilterLengthPが、5に等しい場合、以下が適用される。
0..4={58,45,32,19,6} (8-1186)
PD0..4={6,5,4,3,2} (8-1187)
- さもなければ、以下が適用される。
0..2={53,32,11} (8-1188)
PD0..2={6,4,2} (8-1189)
変数gおよびtQDは、以下のように規定される。
- maxFilterLengthQが、7に等しい場合、以下が適用される。
0..6={59,50,41,32,23,14,5} (8-1190)
QD0..6={6,5,4,3,2,1,1} (8-1191)
- さもなければ、maxFilterLengthQが、5に等しい場合、以下が適用される。
0..4={58,45,32,19,6} (8-1192)
QD0..4={6,5,4,3,2} (8-1193)
- さもなければ、以下が適用される。
0..2={53,32,11} (8-1194)
QD0..2={6,4,2} (8-1195)
i=0..maxFilterLengthP-1およびj=0..maxFilterLengthQ-1のフィルタ処理されたサンプル値p’およびq’は、以下のように導出される。
’=Clip3(p-(t*tPD)>>1,p+(t*tPD)>>1,(refMiddle*f+refP*(64-f)+32)>>6) (8-1196)
’=Clip3(q-(t*tQD)>>1,q+(t*tQD)>>1,(refMiddle*g+refQ*(64-g)+32)>>6) (8-1197)
以下の条件、すなわち、
- サンプルpを含んでいるコーディングブロックを含むコーディングユニットのcu_transquant_bypass_flagは、1に等しい、
- サンプルpを含んでいるコーディングブロックを含むコーディングユニットのpred_mode_plt_flagは、1に等しい、
のうちの1つまたは複数が真であるとき、フィルタ処理されたサンプル値(p’)は、i=0..maxFilterLengthP-1の、対応する入力サンプル値pによって置換される。
以下の条件、すなわち、
- サンプルqを含んでいるコーディングブロックを含むコーディングユニットのcu_transquant_bypass_flagは、1に等しい、
- サンプルqを含んでいるコーディングブロックを含むコーディングユニットのpred_mode_plt_flagは、1に等しい、
のうちの1つまたは複数が真であるとき、フィルタ処理されたサンプル値(q’)は、j=0..maxFilterLengthQ-1の、対応する入力サンプル値qによって置換される。
...
【0014】
--抜粋終了--
【発明の概要】
【0015】
いくらかの課題が存在する。たとえば、1つまたは2つの側での7サンプルフィルタ処理のための長いフィルタ決定は、ブロックPのサンプルp6またはブロックQのq6のいずれも考慮に入れず、これは、長いフィルタ処理を、そのような長いフィルタ処理が、p6および/またはq6を修正することによって画像品質を低減する(たとえば、自然テクスチャーを破壊する)という事実にかかわらず可能にすることがある。
【0016】
ここで、以下は、現在の長いフィルタ決定が、まったく無視し、これにより、自然テクスチャーを削除するデブロッキングを適用し得る、ブロックP(p0~p7)とブロックQ(q0~q7)との間の境界にわたるサンプル値の例であり、ここで、p0およびq0は境界に隣接する。
【0017】
サンプル:p7 p6 p5 p4 p3 p2 p1 p0|q0 q1 q2 q3 q4 q5 q6 q7
【0018】
サンプルp6およびq6が、例1中に示されているように隣接サンプルよりも大きいまたは小さい場合のp6またはq6におけるピークは、検出されないことがある。
【0019】
例1 10 0 10 10 10 10 10 10|10 10 10 10 10 10 0 10
【0020】
p4、p5、p6、q4、q5およびq6が、例2中に示されているように隣接サンプルよりも大きいまたは小さい場合のサンプルp5またはq5におけるピークは、検出されないことがある。
【0021】
例2 10 20 30 20 10 10 10 10|10 10 10 10 20 30 20 10
【0022】
この問題を克服するために、本開示は、VVCにおける長いフィルタ決定が、サンプルp6またはq6を少なくとも含む少なくとも1つの勾配検査を加えることによって修正された、実施形態を提案する。これは、サンプルp6またはq6において何らかの自然構造があるとき、長いフィルタを使用することを回避することを可能にする。1つの特定の実施形態では、q6およびp6の両方を含む少なくとも2つの勾配検査が、加えられる。別の実施形態では、dpqしきい値は、ベータ>>2からベータ>>4に修正される。このしきい値変更実施形態は、p6および/またはq6を含む勾配検査が、長いフィルタ決定に加えられる実施形態と併せてまたはその実施形態の代わりに使用され得る。提案される実施形態の利点は、提案される実施形態が、ユーザに表示される画像の品質を増加させる(たとえば、提案される実施形態が、細いラインを削除するかまたは細いラインを不鮮明にすることを回避する)ことである。
【0023】
それゆえに、一態様では、画像に関連するサンプル値をフィルタ処理するための方法(400)が提供される。方法は、サンプル値の第1のブロックとサンプル値の第2のブロックとを備えるサンプル値の第1のセットを取得する(s402)ことであって、サンプル値の第1のブロックが、i=0~7およびk=0~3のサンプル値B1_i,kのセットを備え、サンプル値の第2のブロックが、i=0~7およびk=0~3のサンプル値B2_i,kのセットを備える、サンプル値の第1のセットを取得する(s402)ことを含む。方法は、サンプル値の第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定する(s404)ことをも含む。サンプル値の第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定することが、サンプル値B1_6,0を使用して第1の勾配値(maxGradB1_6,0)を計算する(s502)ことと、maxGradB1_6,0を使用して第1のpq値(pq1_0)を計算する(s504)ことと、pq1_0をしきい値と比較する(s508)こととを備える。別の態様では、この方法を実施するように設定された装置が提供される。
【0024】
別の態様では、画像に関連するサンプル値をフィルタ処理するための方法(400)が提供される。方法は、サンプル値の第1のブロックとサンプル値の第2のブロックとを備えるサンプル値の第1のセットを取得する(s402)ことであって、サンプル値の第1のブロックが、i=0~7およびk=0~3のサンプル値B1_i,kのセットを備え、サンプル値の第2のブロックが、i=0~7およびk=0~3のサンプル値B2_i,kのセットを備える、サンプル値の第1のセットを取得する(s402)ことを含む。方法は、フィルタを選択する(s404)ことをも含む。フィルタを選択することは、Abs(B1_2,0-2*B1_1,0+B1_0,0)に等しい第1の値と、Abs(B2_2,0-2*B2_1,0+B2_0,0)に等しい第2の値とを少なくとも使用して、第1のpq値(pq2_0)を計算する(s504)ことと、pq2_0をしきい値と比較する(s508)ことであって、しきい値が、β>>4に等しく、βが、量子化パラメータ値(Q)に基づいて、あらかじめ決められたベータ値のセットから選択された、pq2_0をしきい値と比較する(s508)こととを備える。別の態様では、この方法を実施するように設定された装置が提供される。
【0025】
別の態様では、画像に関連するサンプル値をフィルタ処理するための方法が提供される。方法は、サンプル値の第1のブロックとサンプル値の第2のブロックとを備えるサンプル値の第1のセットを取得する(s402)ことであって、サンプル値の第1のブロックが、i=0~7およびk=0~3のサンプル値B1_i,kのセットを備え、サンプル値の第2のブロックが、i=0~7およびk=0~3のサンプル値B2_i,kのセットを備える、サンプル値の第1のセットを取得する(s402)ことを含む。方法は、フィルタを選択する(s404)ことをも含む。フィルタを選択することは、i)第1のpq値(pq1_0)を計算することであって、pq1_0を計算することが、値spを計算すること、値sqを計算すること、およびsp+sqを計算することを備え、pq1_0=(sp+sq)である、第1のpq値(pq1_0)を計算することと、ii)pq1_0を第1のしきい値と比較することと、iii)Abs(B1_2,0-2*B1_1,0+B1_0,0)に等しい第1の値と、Abs(B2_2,0-2*B2_1,0+B2_0,0)に等しい第2の値とを少なくとも使用して、第2のpq値(pq2_0)を計算する(s504)ことと、iv)pq2_0を第2のしきい値と比較する(s508)ことであって、第2のしきい値が、β>>4に等しく、βが、量子化パラメータ値(Q)に基づいて、あらかじめ決められたベータ値のセットから選択された、pq2_0を第2のしきい値と比較する(s508)こととを備える。別の態様では、この方法を実施するように設定された装置が提供される。
【図面の簡単な説明】
【0026】
図1】実施形態による、ビデオエンコーダの概略ブロック図である。
図2】実施形態による、ビデオデコーダの概略ブロック図である。
図3】(Pブロックと表わされる)第1のブロックと(Qブロックと表わされる)第2のブロックとの間の境界を図示する図である。
図4】実施形態による、プロセスを図示するフローチャートである。
図5】実施形態による、プロセスを図示するフローチャートである。
図6】実施形態による、装置のブロック図である。
図7】実施形態による、装置の機能ブロック図である。
【発明を実施するための形態】
【0027】
本明細書で説明される実施形態は、垂直および/または水平ブロック境界をデブロックするために、ビデオエンコーダまたはビデオデコーダにおいて使用され得る。実施形態は、垂直および/または水平ブロック境界をデブロックするために、画像エンコーダまたは画像デコーダにも適用される。
【0028】
図1は、いくつかの実施形態による、ビデオシーケンスの(フレームとも呼ばれる)ビデオ画像中のピクセルのブロックを符号化するためのビデオエンコーダ140の概略ブロック図である。
【0029】
ピクセルの現在のブロックが、同じフレーム中のまたは前のフレーム中のピクセルのすでに提供されたブロックから、動き推定器150を使用して動き推定を実施することによって予測される。動き推定の結果は、インター予測の場合、参照ブロックに関連する動きまたは変位ベクトルである。動きベクトルは、ピクセルのブロックのインター予測を出力するために動き補償器150によって使用され得る。
【0030】
イントラ予測器149は、ピクセルの現在のブロックのイントラ予測を算出する。動き推定器/補償器150およびイントラ予測器149からの出力は、ピクセルの現在のブロックについてイントラ予測またはインター予測のいずれかを選択するセレクタ151中に入力される。セレクタ151からの出力は、ピクセルの現在のブロックのピクセル値をも受信する、加算器141の形態の誤差計算器に入力される。加算器141は、ピクセルのブロックと、ピクセルのブロックの予測との間のピクセル値の差として、残余誤差を計算および出力する。
【0031】
誤差は、離散コサイン変換などによって、変換器142において変換され、量子化器143によって量子化され、その後に、エントロピーエンコーダなどによる、エンコーダ144におけるコーディングが続く。インターコーディングでは、推定された動きベクトルも、ピクセルの現在のブロックのコーディングされた表現を生成するために、エンコーダ144にもたらされる。
【0032】
また、ピクセルの現在のブロックのための変換および量子化された残余誤差が、元の残余誤差を取り出すために、逆量子化器145および逆方向変換器146に提供される。この誤差は、ピクセルの次のブロックの予測およびコーディングにおいて使用され得るピクセルの参照ブロックを作成するために、動き補償器150またはイントラ予測器149から出力されたブロック予測に加算器147によって加算される。この新しい参照ブロックは、まず、ブロッキングアーティファクトを低減/除去するためにデブロッキングフィルタ処理を実施するために、以下で考察される例/実施形態に従ってデブロッキングフィルタ100によって処理される。次いで、処理された新しい参照ブロックは、フレームバッファ148に一時的に記憶され、フレームバッファ148において、処理された新しい参照ブロックは、イントラ予測器149および動き推定器/補償器150にとって利用可能である。
【0033】
図2は、いくつかの実施形態による、デブロッキングフィルタ100を含むビデオデコーダ260の対応する概略ブロック図である。デコーダ260は、量子化および変換された残余誤差のセットを得るためにピクセルのブロックの符号化された表現をデコードするために、エントロピーデコーダなど、デコーダ261を含む。これらの残余誤差は、残余誤差のセットを提供するために、逆量子化器262によって逆量子化され、逆方向変換器263によって逆方向変換される。
【0034】
これらの残余誤差は、ピクセルの参照ブロックのピクセル値に加算器264によって加算される。参照ブロックは、インター予測が実施されるのか、イントラ予測が実施されるのかに応じて、動き推定器/補償器267またはイントラ予測器266によって決められる。それにより、セレクタ268が、加算器264および動き推定器/補償器267およびイントラ予測器266に相互接続される。加算器264から出力されたピクセルの得られたデコードされたブロックは、ブロッキングアーティファクトのデブロッキングフィルタ処理を提供するために、発明的概念のいくつかの実施形態による、デブロッキングフィルタ100に入力される。ピクセルのフィルタ処理されたブロックは、デコーダ260から出力され、さらに、デコードされるべきピクセルの後続のブロックのためのピクセルの参照ブロックとして使用されるようにフレームバッファ265に一時的に提供され得る。フレームバッファ265は、それにより、動き推定器/補償器267に接続され、ピクセルの記憶されたブロックを動き推定器/補償器267にとって利用可能にする。
【0035】
加算器264からの出力はまた、イントラ予測器266に入力され、ピクセルのフィルタ処理されていない参照ブロックとして使用され得る。
【0036】
図1および図2の実施形態では、デブロッキングフィルタ100は、いわゆるループ内フィルタ処理としてデブロッキングフィルタ処理を実施し得る。デコーダ260における代替実施形態では、デブロッキングフィルタ100は、いわゆる後処理フィルタ処理を実施するように配列され得る。そのような場合では、デブロッキングフィルタ100は、加算器264、フレームバッファ265、イントラ予測器266、動き推定器/補償器267、およびセレクタ268によって形成されたループの外部で出力フレームに対して動作する。そのような実施形態では、デブロッキングフィルタ処理は、一般に、エンコーダにおいて行われない。デブロッキングフィルタ100の動作は、以下でさらに詳細に考察される。
【0037】
ブロック境界の少なくとも1つの側で修正され得るサンプルの最大数が、7つのサンプルであると決められ、境界強度が、サンプルの1つのラインについて0を超えると決められたとき、長いフィルタ決定は、maxFilterLengthPが7に等しい場合、ブロックP中のサンプル値p6を使用して(「magGradp6」と表わされる)勾配値(たとえば、勾配の大きさ)を決めることに基づき、maxFilterLengthQが7に等しい場合、ブロックQ中のサンプル値q6を使用して(「magGradq6」と表わされる)勾配値を決めることに基づく。
【0038】
一実施形態では、magGradp6を計算することは、p6を使用して、ならびにp3、p4、p5、およびp7のうちの少なくとも1つを使用してmagGradp6を計算することを備え、magGradq6を計算することは、q6を使用して、ならびにq3、q4、q5、およびq7のうちの少なくとも1つを使用してmagGradq6を計算することを備える。
【0039】
代替形態1
【0040】
magGradp6値は、サンプルp0、p3およびp7を少なくとも含む他の勾配算出に加えられる。たとえば、値spは、次のように計算される。
sp=(Abs(p0-p3)+Abs(p3-p7)+magGradp6+1)>>1
【0041】
magGradq6値は、サンプルq0、q3およびq7を少なくとも含む他の勾配算出に加えられる。たとえば、値sqは、次のように計算される。
sq=(Abs(q0-q3)+Abs(q3-q7)+magGradq6+1)>>1
【0042】
次いで、値spqが算出され得、ここで、spq=sp+sqである。
【0043】
dp=(Abs(p0-2*p1+p2)+Abs(p3-2*p4+p5)+1)>>1
【0044】
dq=(Abs(q0-2*q1+q2)+Abs(q3-2*q4+q5)+1)>>1
【0045】
代替形態2
【0046】
magGradp6値は、以下のように、5に等しいmaxFilterLengthPの場合に算出された大きさを置き換える。
【0047】
maxFilterLengthP==7である場合、
dp=(Abs(p0-2*p1+p2)+magGradp6+1)>>1であり、さもなければ、
dp=(Abs(p0-2*p1+p2)+Abs(p3-2*p4+p5)+1)>>1である。
【0048】
magGradq6値は、以下のように、5に等しいmaxFilterLengthQの場合に算出された大きさを置き換える。
【0049】
maxFilterLengthQ==7である場合、
dq=(Abs(q0-2*q1+q2)+magGradq6+1)>>1であり、さもなければ、
dq=(Abs(q0-2*q1+q2)+Abs(q3-2*q4+q5)+1)>>1である。
【0050】
次いで、値(dpq)が、dpq=dq+dpとして算出される。
【0051】
上記の代替形態1または代替形態2のいずれかの場合、一実施形態では、以下の3つの条件、すなわち、
(1)spq<threshold1、
(2)2*dpq<threshold2、および
(Abs(p0-q0)<threshold3、
のうちのすべてが真である場合、長いフィルタを使用することが決定される。
【0052】
上記の条件のうちの1つまたは複数が真でない場合、長いフィルタは適用されず、maxFilterLengthPおよびmaxFilterLengthQは、3以下である。
【0053】
一実施形態では、threshold1=sThrである(たとえば、(3*ベータ)>>5である)。
【0054】
一実施形態では、threshold2=ベータ>>2であり、ここで、ベータは、テーブル8~18中に上記で示されたように、量子化パラメータ値(Q)に依存する。
【0055】
一実施形態では、threshold3=(5*tC+1)>>1であり、ここで、tCは、テーブル8~18中に上記で示されたように、量子化パラメータ値(Q)に依存する。
【0056】
上記の代替形態1または代替形態2のいずれかの場合、一実施形態では、magGradp6は、Abs(p6-p7)のように決められ、magGradq6は、Abs(q7-q6)のように決められる。
【0057】
別の実施形態では、magGradp6は、Abs(p4-p5-p6+p7)に等しく、magGradq6は、Abs(q7-q5-q6+q4)に等しい。2つのサンプルの間の差から決められた勾配を用いる実施形態と比較して、この実施形態の1つの利点は、勾配の大きさを決めるためのこの手法が、p0からp7までのまたはq0からq7までの増加または減少する値をもつ、ランプ、スロープに対して敏感に増加しないことである。
【0058】
別の実施形態では、magGradp6は、Abs(p4-2*p5+p6)に等しく、magGradq6は、Abs(q6-2*q5+q4)に等しい。2つのサンプルの間の差から決められた勾配を用いる実施形態と比較して、この実施形態の1つの利点は、勾配の大きさを決めるためのこの手法が、p0からp7までのまたはq0からq7までの増加または減少する値をもつ、ランプ、スロープに対して敏感に増加しないことである。
【0059】
代替形態1の場合、仕様セクション8.8.3.6.1 式8-1081、8-1082、8-1084、および8-1085は、以下、すなわち、
sp0=maxFilterLengthP==7?Abs(p3,0-p0,0)+magGradp6_0:Abs(p3,0-p0,0) (8-1081)、
sq0=maxFilterLengthQ==7?Abs(q0,0-q3,0)+magGradq6_0:Abs(q0,0-q3,0) (8-1082)、
sp3=maxFilterLengthP==7?Abs(p3,3-p0,3)+magGradp6_3:Abs(p3,3-p0,3) (8-1084)、
sq3=maxFilterLengthQ==7?Abs(q0,3-q3,3)+magGradq6_3:Abs(q0,3-q3,3) (8-1085)、ここで、
magGradp6_0=Abs(p7,0-p6,0)または
Abs(p7,0-p6,0-p5,0+p4,0)または
Abs(p6,0-2*p5,0+p4,0)、
magGradp6_3=Abs(p7,3-p6,3)または
Abs(p7,3-p6,3-p5,3+p4,3)または
Abs(p6,3-2*p5,3+p4,3)、
magGradq6_0=Abs(q6,0-q7,0)または
Abs(q4,0-q6,0-q5,0+q7,0)または
Abs(q4,0-2*q5,0+q6,0)、および
magGradq6_3=Abs(q6,3-q7,3)または
Abs(q4,3-q6,3-q5,3+q7,3)または
Abs(q4,3-2*q5,3+q6,3)、
のように修正され得る。
【0060】
代替形態2の場合、仕様セクション8.8.3.6.1 式8-1087、8-1088、8-1092、および8-1093は、以下、すなわち、
dp0L=(dp0+(maxFilterLengthP==7?magGradp6_0:Abs(p5,0-2*p4,0+p3,0))+1)>>1 (8-1087)、
dp3L=(dp3+(maxFilterLEngthP==7?magGradp6_3:Abs(p5,3-2*p4,3+p3,3))+1)>>1 (8-1088)、
dq0L=(dq0+(maxFilterLEngthQ==7?magGradq6_0:Abs(q5,0-2*q4,0+q3,0))+1)>>1 (8-1092)、
dq3L=(dq3+(maxFilterLengthQ==7?magGradq6_3:Abs(q5,3-2*q4,3+q3,3))+1)>>1 (8-1093)、ここで、
magGradp6_0=Abs(p7,0-p6,0-p5,0+p4,0)または
Abs(p6,0-2*p5,0+p4,0)、
magGradp6_3=Abs(p7,3-p6,3-p5,3+p4,3)または
Abs(p6,3-2*p5,3+p4,3)、
magGradq6_0=Abs(q4,0-q6,0-q5,0+q7,0)または
Abs(q4,0-2*q5,0+q6,0)、および
magGradq6_3=Abs(q4,3-q6,3-q5,3+q7,3)または
Abs(q4,3-2*q5,3+q6,3)、
のように修正され得る。
【0061】
別の実施形態では、dpqしきい値(別名「threshold2」)は、threshold2が、ベータ>>2に等しい代わりに、ベータ>>4に等しいように修正される。この実施形態では、セクション8.8.3.6.5は、以下のように修正される。
【0062】
別の実施形態では、また、dqpしきい値修正が、強い/弱いフィルタ決定に適用される。この実施形態では、セクション8.8.3.6.5は、以下のように修正される。
【0063】
図4は、いくつかの実施形態による、プロセス400を図示するフローチャートである。プロセス400は、ステップs402において開始し得る。
【0064】
ステップs402は、サンプル値の第1のセットを取得することを備える。一実施形態では、サンプル値の第1のセットは、サンプル値の第1のブロック(たとえば、ブロック302)(以下、Pブロックと呼ばれる)と、サンプル値の第2のブロック(たとえば、ブロック304)(以下、Qブロックと呼ばれる)とを備える。一実施形態では、図3中に示されているように、Pブロックは、i=0~7およびk=0~3のサンプル値pi,kのセットを備え、qブロックは、i=0~7およびk=0~3のサンプル値qi,kのセットを備える。
【0065】
ステップs404は、サンプル値の第1のセットの少なくともサブセット(たとえば、i=0~7およびk=0~3のサンプル値pi,k、ならびに/またはi=0~7およびk=0~3のサンプル値qi,k)をフィルタ処理するために使用すべきフィルタを選択することを備える。たとえば、ステップs404は、サンプル値の第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定すること、または強いフィルタ処理を使用すべきか否かを決定することを備え得る(たとえば、VVC仕様の8.8.3.6.6を参照)。
【0066】
ステップs406は、選択されたフィルタを適用することを備える。
【0067】
図5は、ステップs404を実施するための、一実施形態による、プロセス500を図示するフローチャートである。プロセス500は、ステップs501において開始し得る。ステップs501は、3つの変数、すなわち、k、dSam_0、およびdSam_3を初期化することを備え、ここで、これらの変数のうちのすべては、0に初期化される。
【0068】
ステップs501の後に、プロセス500は、ステップs502およびs504を実施すること、または代わりにステップs506を実施することを含み得る。ステップs502およびs504は、maxFilterLengthP=7という仮定をもって実施される。
【0069】
ステップs502は、サンプル値p6,kを使用して第1の勾配値(maxGradp6_k)を計算することを備える。たとえば、maxGradp6_kを計算することは、Abs(p7,k-p6,k)を計算すること、またはAbs(p7,k-p6,k-p5,k+p4,k)を計算すること、またはAbs(p6,k-2*p5,k+p4,k)を計算することを含む。
【0070】
ステップs504は、3つのpq値(pq1、pq2、およびpq3)を計算することを備え、少なくともpq1は、maxGradp6_kを使用して計算される。
【0071】
たとえば、一実施形態では、pq1を計算することは、値sp+sqを計算することを備え、spを計算することは、sp=(Abs(p0,k-p3,k)+Abs(p3,k-p7,k)+magGradp6_k+1)>>1を計算することを備える。sqを計算することは、(Abs(q0,k-q3,k)+Abs(q3,k-q7,k)+magGradq6_k+1)>>1を計算することを備え得、ここで、magGradq6_kは、Abs(q7,k-q6,k)またはAbs(q7,k-q6,k-q5,k+q4,k)またはAbs(q6,k-2*q5,k+q4,k)に等しい。
【0072】
別の実施形態では、pq1を計算することは、2*(dp+dq)を計算することを備え、dpを計算することは、dp=(Abs(p0,k-2*p1,k+p2,k)+magGradp6_k+1)>>1を計算することを備える。dqを計算することは、(Abs(q0,k-2*q1,k+q2,k)+magGradq6_k+1)>>1を計算することを備え得る。
【0073】
ステップs506は、maxGradp6_kを使用せずに(換言すれば、サンプル値p6,kを使用せずに)3つのpq値(pq1、pq2、およびpq3)を計算することを備える。一実施形態では、pq1=sp+sq、pq2=dpq、およびpq3=Abs(p0,k-q0,k)である。
【0074】
ステップs508は、i)pq1を第1のしきい値(t1)と比較することと、ii)pq2を第2のしきい値(t2)と比較することと、iii)pq3を第3のしきい値(t3)と比較することとを備える。
【0075】
pq1がt1よりも小さく、pq2がt2よりも小さく、pq3がt3よりも小さい場合、プロセス500はステップs510に進み、さもなければ、プロセス500はステップs509に進む(換言すれば、第1のフィルタが選択される(たとえば、短いフィルタ処理が適用される))。
【0076】
ステップs510は、kが3に等しいかどうかを検査することを備える。kが3に等しくない場合、プロセス500はステップs512に進み、さもなければ、プロセス500はステップs516に進む。ステップs512において、kは3に等しく設定され、dSam_0は1に設定される。ステップs512の後に、プロセスは、ステップs502またはs506のいずれかに戻る。ステップs516は、dSam_0が1に等しいかどうかを検査することを備える。dSam_0が1に等しくない場合、プロセス500はステップs509に進み、さもなければ、プロセス500はステップs518に進む(換言すれば、第2のフィルタが選択される(たとえば、長いフィルタ処理が適用される))。
【0077】
ステップs506が、ステップs502およびs504の代わりに実施される実施形態では、pq1は2*(dp+dq)に等しく、ここで、
dp=(Abs(p0-2*p1+p2)+Abs(p5-2*p4+p3)+1)>>1、および
dq=(Abs(q0-2*q1+q2)+Abs(q5-2*q4+q3)+1)>>1、
である。そのような実施形態では、第1のしきい値(t1)は、ベータ>>4に等しいことがある。
【0078】
図6は、ビデオエンコーダ140またはビデオデコーダ260を実装するための、いくつかの実施形態による、装置600のブロック図である。図6中に示されているように、装置600は、1つまたは複数のプロセッサ(P)655(たとえば、汎用マイクロプロセッサ、ならびに/または特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、および同様のものなど、1つまたは複数の他のプロセッサ)を含み得る処理回路(PC)602であって、そのプロセッサが、単一のハウジング中に、または単一のデータセンター中にコロケートされ得るか、あるいは地理的に分散され得る(換言すれば、装置600が分散コンピューティング装置であり得る)、処理回路(PC)602と、ネットワークインターフェース648であって、装置600が、ネットワークインターフェース648が(直接または間接的に)接続されるネットワーク110(たとえば、インターネットプロトコル(IP)ネットワーク)に接続された他のノードにデータを送信し、他のノードからデータを受信することを可能にするための送信機(Tx)645および受信機(Rx)647を備える(たとえば、ネットワークインターフェース648はネットワーク110に無線で接続され得、その場合、ネットワークインターフェース648はアンテナ構成に接続される)、ネットワークインターフェース648と、1つもしくは複数の不揮発性記憶デバイスおよび/または1つもしくは複数の揮発性記憶デバイスを含み得るローカル記憶ユニット(別名「データ記憶システム」)608とを備え得る。PC602がプログラマブルプロセッサを含む実施形態では、コンピュータプログラム製品(CPP)641が提供され得る。CPP641は、コンピュータ可読命令(CRI)644を備えるコンピュータプログラム(CP)643を記憶するコンピュータ可読媒体(CRM)642を含む。CRM642は、磁気媒体(たとえば、ハードディスク)、光媒体、メモリデバイス(たとえば、ランダムアクセスメモリ、フラッシュメモリ)、および同様のものなど、非一時的コンピュータ可読媒体であり得る。いくつかの実施形態では、コンピュータプログラム643のCRI644は、PC602によって実行されたとき、CRIが、装置600に、本明細書で説明されるステップ(たとえば、フローチャートを参照しながら本明細書で説明されるステップ)を実施させるように設定される。他の実施形態では、装置600は、コードの必要なしに本明細書で説明されるステップを実施するように設定され得る。すなわち、たとえば、PC602は、単に1つまたは複数のASICからなり得る。よって、本明細書で説明される実施形態の特徴は、ハードウェアおよび/またはソフトウェアで実装され得る。
【0079】
図7は、いくつかの他の実施形態による、装置600の機能ブロック図である。装置600は、取得モジュール702およびフィルタ選択モジュール704を含む。取得モジュール702は、サンプル値の第1のブロック(以下、Pブロックと呼ばれる)と、サンプル値の第2のブロック(以下、Qブロックと呼ばれる)とを備えるサンプル値の第1のセットを取得するように適応され、Pブロックは、i=0~7およびk=0~3のサンプル値pi,kのセットを備え、Qブロックは、i=0~7およびk=0~3のサンプル値qi,kのセットを備える。
【0080】
一実施形態では、フィルタ選択モジュールは、サンプル値の第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定するように適応され、フィルタ選択モジュールは、サンプル値p6,0を使用して第1の勾配値(maxGradp6_0)を計算することと、maxGradp6_0を使用して第1のpq値(pq1_0)を計算することと、pq1_0をしきい値と比較することとを含むプロセスを実施することによって、サンプル値の第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定することを行うように設定される。
【0081】
別の実施形態では、フィルタ選択モジュールは、フィルタを選択するように適応され、フィルタ選択モジュール704は、Abs(p2,0-2*p1,0+p0,0)に等しい第1の値と、Abs(q2,0-2*q1,0+q0,0)に等しい第2の値とを少なくとも使用して、第1のpq値(pq1)を計算することと、pq1をしきい値と比較することであって、しきい値が、β>>4に等しく、βが、量子化パラメータ値(Q)に基づいて、あらかじめ決められたベータ値のセットから選択された、pq1をしきい値と比較することとを含むプロセスを実施することによってフィルタを選択するように設定される。
【0082】
いくつかの実施形態の簡潔な説明
【0083】
A1.画像に関連するサンプル値をフィルタ処理するための方法(400)であって、サンプル値の第1のブロック(以下、Pブロックと呼ばれる)と、サンプル値の第2のブロック(以下、Qブロックと呼ばれる)とを備えるサンプル値の第1のセットを取得する(s402)ことであって、Pブロックが、i=0~7およびk=0~3のサンプル値pi,kのセットを備え、Qブロックが、i=0~7およびk=0~3のサンプル値qi,kのセットを備える、サンプル値の第1のセットを取得する(s402)ことと、サンプル値の第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定する(s404)ことであって、サンプル値の第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定することが、サンプル値p6,0を使用して第1の勾配値(maxGradp6_0)を計算する(s502)こと、maxGradp6_0を使用して第1のpq値(pq1_0)を計算する(s504)こと、およびpq1_0をしきい値と比較する(s508)ことを備える、長いフィルタを使用すべきか否かを決定する(s404)こととを備える、方法(400)。
【0084】
A2.サンプル値の第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定することが、サンプル値p6,3を使用して第2の勾配値(maxGradp6_3)を計算することと、maxGradp6_3を使用して第2のpq値(pq1_3)を計算することと、pq1_3をしきい値と比較する(s508)こととをさらに備える、実施形態A1に記載の方法。
【0085】
A3.pq1_0を計算することが、値sp+sqを計算することを備え、spを計算することが、sp=(Abs(p0,0-p3,0)+Abs(p3,0-p7,0)+magGradp6_0+1)>>1を計算することを備える、実施形態A1またはA2に記載の方法。
【0086】
A4.magGradp6_0が、Abs(p7,0-p6,0)に等しいか、magGradp6_0が、Abs(p7,0-p6,0-p5,0+p4,0)に等しいか、またはmagGradp6_0が、Abs(p6,0-2*p5,0+p4,0)に等しい、実施形態A3に記載の方法。
【0087】
A5.pq1_0を計算することが、2*(dp+dq)を計算することを備え、dpが、(Abs(p0,0-2*p1,0+p2,0)+magGradp6_0+1)>>1に等しい、実施形態A1またはA2に記載の方法。
【0088】
A6.magGradp6_0が、Abs(p7,0-p6,0-p5,0+p4,0)に等しいか、またはmagGradp6_0が、Abs(p6,0-2*p5,0+p4,0)に等しい、実施形態A5に記載の方法。
【0089】
A7.maxGradp6_0を使用してpq1_0を計算するステップは、Pブロックのための最大フィルタ長(maxFilterLengthP)が7に等しいと決めることの結果として実施される、実施形態A1からA6のいずれか1つに記載の方法。
【0090】
B1.画像に関連するサンプル値をフィルタ処理するための方法(400)であって、サンプル値の第1のブロック(以下、Pブロックと呼ばれる)と、サンプル値の第2のブロック(以下、Qブロックと呼ばれる)とを備えるサンプル値の第1のセットを取得する(s402)ことであって、Pブロックが、i=0~7およびk=0~3のサンプル値pi,kのセットを備え、Qブロックが、i=0~7およびk=0~3のサンプル値qi,kのセットを備える、サンプル値の第1のセットを取得する(s402)ことと、フィルタを選択する(s404)ことであって、フィルタを選択することは、Abs(p2,0-2*p1,0+p0,0)に等しい第1の値と、Abs(q2,0-2*q1,0+q0,0)に等しい第2の値とを少なくとも使用して、第1のpq値(pq1)を計算する(s504)こと、およびpq1をしきい値と比較する(s508)ことであって、しきい値が、β>>4に等しく、βが、量子化パラメータ値(Q)に基づいて、あらかじめ決められたベータ値のセットから選択された、pq1をしきい値と比較する(s508)ことを備える、フィルタを選択する(s404)こととを備える、方法(400)。
【0091】
C1.画像に関連するサンプル値をフィルタ処理するための方法であって、1)サンプル値の第1のブロックとサンプル値の第2のブロックとを備えるサンプル値の第1のセットを取得する(s402)ことであって、サンプル値の第1のブロックが、i=0~7およびk=0~3のサンプル値B1_i,kのセットを備え、サンプル値の第2のブロックが、i=0~7およびk=0~3のサンプル値B2_i,kのセットを備える、サンプル値の第1のセットを取得する(s402)ことと、2)フィルタを選択する(s404)ことであって、フィルタを選択することは、i)第1のpq値(pq1_0)を計算することであって、pq1_0を計算することが、値spを計算すること、値sqを計算すること、およびsp+sqを計算することを備え、pq1_0=(sp+sq)である、第1のpq値(pq1_0)を計算することと、ii)pq1_0を第1のしきい値と比較することと、iii)Abs(B1_2,0-2*B1_1,0+B1_0,0)に等しい第1の値と、Abs(B2_2,0-2*B2_1,0+B2_0,0)に等しい第2の値とを少なくとも使用して、第2のpq値(pq2_0)を計算する(s505)ことと、iv)pq2_0を第2のしきい値と比較する(s508)ことであって、第2のしきい値が、β>>4に等しく、βが、量子化パラメータ値(Q)に基づいて、あらかじめ決められたベータ値のセットから選択された、pq2_0を第2のしきい値と比較する(s508)こととを備える、フィルタを選択する(s404)こととを備える、方法。
【0092】
C2.フィルタを選択することは、第3のpq値(pq3_0)を計算することであって、pq3_0=Abs(B1_0,0-B2_0,0)である、第3のpq値(pq3_0)を計算することと、pq3_0を第3のしきい値と比較することであって、第3のしきい値が、(5*tC+1)>>1に等しく、tCが、量子化パラメータ値(Q)に基づいて、あらかじめ決められた値のセットから選択された、pq3_0を第3のしきい値と比較することとをさらに備える、請求項C1に記載の方法。
【0093】
C3.フィルタを選択することは、第4のpq値(pq2_3)を計算することと、pq2_3を第2のしきい値と比較することと、第5のpq値(pq1_3)を計算することと、pq1_3を第1のしきい値と比較することとをさらに備え、pq2_3を計算するステップは、Abs(B1_2,3-2*B1_1,3+B1_0,3)に等しい第1の値と、Abs(B2_2,3-2*B2_1,3+B2_0,3)に等しい第2の値とを少なくとも使用して、およびmaxFilterLengthPが、3よりも大きいとき、第3の値Abs(B1_5,3-2*B1_4,3+B1_3,3)をも使用して、およびmaxFilterLengthQが、3よりも大きいとき、第4の値Abs(B2_5,3-2*B2_4,3+B2_3,3)をも使用して、pq2_3を計算することを備え、pq1_3を計算するステップが、値sp3を計算することと、値sq3を計算することと、sp3+sq3を計算することとを備え、ここで、pq1_3=(sp3+sq3)である、請求項C1または請求項C2に記載の方法。
【0094】
C4.フィルタを選択することは、第6のpq値(pq3_3)を計算することであって、pq3_3=Abs(B1_0,3-B2_0,3)である、第6のpq値(pq3_3)を計算することと、pq3_3を第3のしきい値と比較することとをさらに備える、請求項C3に記載の方法。
【0095】
C5.フィルタは、ブロックB1中のライン0~ライン3の各々上の7つのサンプルを、ライン0およびライン3についての状態が、それぞれのしきい値よりも小さい(たとえば、ライン0について、pq1_0<thr1およびpq2_0<thr2およびpq3_0<thr3であり、ライン3について、pq1_3<thr1およびpq2_3<thr2およびpq3_3<thr3である)とき、修正するために使用される、請求項C1からC4のいずれか1つに記載の方法。
【0096】
C6.thr1が、3*β>>5に等しく、thr2が、β>>4に等しく、thr3が、(5*tC+1)>>1に等しい、請求項C5に記載の方法。
【0097】
C7.第1のブロックが、最大のフィルタ長(maxFilterLengthP)を有し、maxFilterLengthPが、7に等しい場合、spを計算することが、sp=(Abs(B1_0,0-B1_3,0)+Abs(B1_3,0-B1_7,0)+maxGradB1_6,0+1)>>1を計算することを備え、ここで、maxGradB1_6,0が、勾配値であり、maxFilterLengthPが、5である場合、spを計算することが、sp=(Abs(B1_0,0-B1_3,0)+Abs(B1_3,0-B1_5,0)+1)>>1を計算することを備え、maxFilterLengthPが、3に等しい場合、spを計算することが、sp=Abs(B1_0,0-B1_3,0)を計算することを備える、請求項C1からC6のいずれか1つに記載の方法。
【0098】
C8.maxGradB1_6,0が、Abs(B1_7,0-B1_6,0-B1_5,0+B1_4,0)に等しい、請求項C7に記載の方法。
【0099】
C9.第2のブロックが、最大のフィルタ長(maxFilterLengthQ)を有し、maxFilterLengthQが、7に等しい場合、sqを計算することが、sq=(Abs(B2_0,0-B2_3,0)+Abs(B2_3,0-B2_7,0)+maxGradB2_6,0+1)>>1を計算することを備え、ここで、maxGradB2_6,0が、勾配値であり、maxFilterLengthQが、5に等しい場合、sqを計算することが、sq=(Abs(B2_0,0-B2_3,0)+Abs(B2_3,0-B2_5,0)+1)>>1を計算することを備え、maxFilterLengthQが、3に等しい場合、sqを計算することが、sq=Abs(B1_0,0-B1_3,0)を計算することを備える、請求項C1からC9のいずれか1つに記載の方法。
【0100】
C10.maxGradB2_6,0が、Abs(B2_7,0-B2_6,0-B2_5,0+B2_4,0)に等しい、請求項C9に記載の方法。
【0101】
C11.およびmaxFilterLengthPが、3よりも大きいとき、第3の値Abs(B1_5,0-2*B1_4,0+B1_3,0)をも使用して、および第2のブロックが、最大のフィルタ長(maxFilterLengthQ)を有し、およびmaxFilterLengthQが、3よりも大きいとき、第4の値Abs(B2_5,0-2*B2_4,0+B2_3,0)をも使用して、請求項C1からC10のいずれか1つに記載の方法。
【0102】
C12.maxFilterLengthPが、7に等しい場合、sp3を計算することが、sp3=(Abs(B1_0,3-B1_3,3)+Abs(B1_3,3-B1_7,3)+maxGradB1_6,3+1)>>1を計算することを備え、ここで、maxGradB1_6,3が、勾配値であり、maxFilterLengthPが、5に等しい場合、sp3を計算することが、sp3=(Abs(B1_0,3-B1_3,3)+Abs(B1_3,3-B1_5,3)+1)>>1を計算することを備え、maxFilterLengthPが、5に等しい場合、sp3を計算することが、sp3=Abs(B1_0,3-B1_3,3)を計算することを備え、maxFilterLengthQが、7に等しい場合、sq3を計算することが、sq3=(Abs(B2_0,3-B2_3,3)+Abs(B2_3,3-B2_7,3)+maxGradB2_6,3+1)>>1を計算することを備え、ここで、maxGradB2_6,3が、勾配値であり、maxFilterLengthQが、5に等しい場合、sq3を計算することが、sq3=(Abs(B2_0,3-B2_3,3)+Abs(B2_3,3-B2_5,3)+1)>>1を計算することを備え、maxFilterLengthQが、3に等しい場合、sq3を計算することが、sq3=Abs(B2_0,3-B2_3,3)を計算することを備える、請求項C3またはC4に記載の方法。
【0103】
D1.画像に関連するサンプル値をフィルタ処理するための方法(400)であって、サンプル値の第1のブロックとサンプル値の第2のブロックとを備えるサンプル値の第1のセットを取得する(s402)ことであって、サンプル値の第1のブロックが、i=0~7およびk=0~3のサンプル値B1_i,kのセットを備え、サンプル値の第2のブロックが、i=0~7およびk=0~3のサンプル値B2_i,kのセットを備える、サンプル値の第1のセットを取得する(s402)ことと、サンプル値の第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定する(s404)ことであって、サンプル値の第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定することが、サンプル値B1_6,0を使用して第1の勾配値(maxGradB1_6,0)を計算する(s502)こと、maxGradB1_6,0を使用して第1のpq値(pq1_0)を計算する(s504)こと、およびpq1_0をしきい値と比較する(s508)ことを備える、長いフィルタを使用すべきか否かを決定する(s404)こととを備える、方法(400)。
【0104】
D2.サンプル値の第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定することが、サンプル値B1_6,3を使用して第2の勾配値(maxGradB1_6,3)を計算することと、maxGradB1_6,3を使用して第2のpq値(pq1_3)を計算することと、pq1_3をしきい値と比較する(s508)こととをさらに備える、請求項D1に記載の方法。
【0105】
D3.pq1_0を計算することが、値spを計算することと、値sqを計算することと、sp+sqを計算することとを備え、pq1_0=(sp+sq)であり、spを計算することが、sp=(Abs(B1_0,0-B1_3,0)+Abs(B1_3,0-B1_7,0)+maxGradB1_6,0+1)>>1を計算することを備える、請求項D1またはD2に記載の方法。
【0106】
D4.maxGradB1_6,0が、Abs(B1_7,0-B1_6,0-B1_5,0+B1_4,0)に等しい、請求項D3に記載の方法。
【0107】
D5.第2のブロックが、最大のフィルタ長(maxFilterLengthQ)を有し、maxFilterLengthQが、7に等しい場合、sq=(Abs(B2_0,0-B2_3,0)+Abs(B2_3,0-B2_7,0)+maxGradB2_6,0+1)>>1であり、ここで、maxGradB2_6,0が、第3の勾配値であり、maxFilterLengthQが、5に等しい場合、sq=(Abs(B2_0,0-B2_3,0)+Abs(B2_3,0-B2_5,0)+1)>>1であり、maxFilterLengthQが、7に等しくない、および5に等しくない場合、sq=Abs(B2_0,0-B2_3,0)である、請求項D3またはD4に記載の方法。
【0108】
D6.maxGradB2_6,0が、Abs(B2_7,0-B2_6,0-B2_5,0+B2_4,0)に等しい、請求項D5に記載の方法。
【0109】
D7.pq1_3を計算することが、値sp3を計算することと、値sq3を計算することと、sp3+sq3を計算することとを備え、pq1_3=(sp3+sq3)であり、sp3を計算することが、sp3=(Abs(B1_0,3-B1_3,3)+Abs(B1_3,3-B1_7,3)+maxGradB1_6,3+1)>>1を計算することを備える、請求項D2からD6のいずれか1つに記載の方法。
【0110】
D8.maxGradB1_6,3が、Abs(B1_7,3-B1_6,3-B1_5,3+B1_4,3)に等しい、請求項D7に記載の方法。
【0111】
D9.maxGradB1_6,0を使用してpq1_0を計算するステップは、第1のブロックのための最大のフィルタ長(maxFilterLengthP)が、7に等しいと決めることの結果として実施される、請求項D1からD8のいずれか1つに記載の方法。
【0112】
D10.maxGradB1_6,3を使用してpq1_3を計算するステップは、第1のブロックのための最大フィルタ長(maxFilterLengthP)が、7に等しいと決めることの結果として実施される、請求項D2からD9のいずれか1つに記載の方法。
【0113】
D11.第2のブロックが、最大のフィルタ長(maxFilterLengthQ)を有し、maxFilterLengthQが、7に等しい場合、sq3=(Abs(B2_0,3-B2_3,3)+Abs(B2_3,3-B2_7,3)+maxGradB2_6,3+1)>>1であり、ここで、maxGradB2_6,3が、第4の勾配値であり、maxFilterLengthQが、5に等しい場合、sq3=(Abs(B2_0,3-B2_3,3)+Abs(B2_3,3-B2_5,3)+1)>>1であり、maxFilterLengthQが、5に等しくない、および7に等しくない場合、sq3=Abs(B2_0,3-B2_3,3)である、請求項D7に記載の方法。
【0114】
D12.maxGradB2_6,3は、Abs(B2_7,3-B2_6,3-B2_5,3+B2_4,3)に等しい、請求項D11に記載の方法。
【0115】
D13.垂直境界をデブロックするとき、i値が、ブロックの列を識別し、k値が、ブロックの行を識別し、水平境界をデブロックするとき、k値が、ブロックの列を識別し、i値が、ブロックの行を識別する、請求項D1からD12のいずれか1つに記載の方法。
【0116】
D14.B1_0,0が、第2のブロック中のサンプルB2_0,0に最も近い第1のブロック中のサンプルを指し、B1_1,0が、B1_0,0に最も近く、B1_2,0が、B1_1,0に最も近く、B1_3,0が、B1_2,0に最も近く、B1_4,0が、B1_3,0に最も近く、B1_5,0が、B1_4,0に最も近く、B1_6,0が、B1_5,0に最も近く、B1_7,0が、B1_6,0に最も近く、B2_1,0が、B2_0,0に最も近く、B2_2,0が、B2_1,0に最も近く、B2_3,0が、B2_2,0に最も近く、B2_4,0が、B2_3,0に最も近く、B2_5,0が、B2_4,0に最も近く、B2_6,0が、B2_5,0に最も近く、B2_7,0が、B2_6,0に最も近く、B1_0,3が、第2のブロック中のサンプルB2_0,3に最も近い第1のブロック中のサンプルを指し、B1_1,3が、B1_0,3に最も近く、B1_2,3が、B1_1,3に最も近く、B1_3,3が、B1_2,3に最も近く、B1_4,3が、B1_3,3に最も近く、B1_5,3が、B1_4,3に最も近く、B1_6,3が、B1_5,3に最も近く、B1_7,3が、B1_6,3に最も近く、B2_1,3が、B2_0,3に最も近く、B2_2,3が、B2_1,3に最も近く、B2_3,3が、B2_2,3に最も近く、B2_4,3が、B2_3,3に最も近く、B2_5,3が、B2_4,3に最も近く、B2_6,3が、B2_5,3に最も近く、B2_7,3が、B2_6,3に最も近い、請求項D1からD13のいずれか1つに記載の方法。
【0117】
D15.maxFilterLengthPが7に等しいときに長いフィルタによってフィルタ処理すべきサンプルが、B1_0,0~B1_6,0、B1_0,1~B1_6,1、B1_0,2~B1_6,2およびB1_0,3~B1_6,3である、請求項D1からD14のいずれか1つに記載の方法。
【0118】
D16.maxFilterLengthQが7に等しいときに長いフィルタによってフィルタ処理すべきサンプルが、B2_0,0~B2_6,0、B2_0,1~B2_6,1、B2_0,2~B2_6,2およびB2_0,3~B2_6,3である、請求項D1からD15のいずれか1つに記載の方法。
【0119】
E1.画像に関連するサンプル値をフィルタ処理するための方法(400)であって、サンプル値の第1のブロックとサンプル値の第2のブロックとを備えるサンプル値の第1のセットを取得する(s402)ことであって、サンプル値の第1のブロックが、i=0~7およびk=0~3のサンプル値B1_i,kのセットを備え、サンプル値の第2のブロックが、i=0~7およびk=0~3のサンプル値B2_i,kのセットを備える、サンプル値の第1のセットを取得する(s402)ことと、フィルタを選択する(s404)ことであって、フィルタを選択することは、Abs(B1_2,0-2*B1_1,0+B1_0,0)に等しい第1の値と、Abs(B2_2,0-2*B2_1,0+B2_0,0)に等しい第2の値とを少なくとも使用して、第1のpq値(pq2_0)を計算する(s505)ことと、pq2_0をしきい値と比較する(s508)ことであって、しきい値が、β>>4に等しく、βが、量子化パラメータ値(Q)に基づいて、あらかじめ決められたベータ値のセットから選択された、pq2_0をしきい値と比較する(s508)こととを備える、フィルタを選択する(s404)こととを備える、方法(400)。
【0120】
E2.フィルタを選択することが、Abs(B1_2,3-2*B1_1,3+B1_0,3)に等しい第1の値と、Abs(B2_2,3-2*B2_1,3+B2_0,3)に等しい第2の値とを少なくとも使用して、第2のpq値(pq2_3)を計算することと、pq2_3をしきい値と比較することとをさらに備える、E1に記載の方法。
【0121】
F1.上記の実施形態のいずれか1つに記載の方法を実施するように適応されたエンコーダ(140)またはデコーダ(260)。
【0122】
F2.実施形態F1のエンコーダ(140)またはデコーダ(260)を実装する、装置(500)。
【0123】
G1.処理回路(602)によって実行されたとき、処理回路(602)に、上記の実施形態のいずれか1つに記載の方法を実施させる命令(644)を備える、コンピュータプログラム(643)。
【0124】
G2.実施形態G1に記載のコンピュータプログラムを含んでいるキャリアであって、電子信号、光信号、無線信号、およびコンピュータ可読記憶媒体(642)のうちの1つである、キャリア。
【0125】
H1.画像に関連するサンプル値をフィルタ処理するための装置(600)であって、サンプル値の第1のブロック(以下、Pブロックと呼ばれる)と、サンプル値の第2のブロック(以下、Qブロックと呼ばれる)とを備えるサンプル値の第1のセットを取得するように適応された取得モジュール(702(図7を参照))であって、Pブロックが、i=0~7およびk=0~3のサンプル値pi,kのセットを備え、Qブロックが、i=0~7およびk=0~3のサンプル値qi,kのセットを備える、取得モジュール(702)と、サンプル値の第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定するように適応されたフィルタ選択モジュール(704(図7を参照))であって、フィルタ選択モジュール(704)が、サンプル値p6,0を使用して第1の勾配値(maxGradp6_0)を計算する(s502)ことと、maxGradp6_0を使用して第1のpq値(pq1_0)を計算する(s504)ことと、pq1_0をしきい値と比較する(s508)こととを含むプロセスを実施することによって、サンプル値の第1のセットの少なくともサブセットをフィルタ処理するために長いフィルタを使用すべきか否かを決定することを行うように設定された、フィルタ選択モジュール(704)とを備える、装置(600)。
【0126】
I1.画像に関連するサンプル値をフィルタ処理するための装置(600)であって、サンプル値の第1のブロック(以下、Pブロックと呼ばれる)と、サンプル値の第2のブロック(以下、Qブロックと呼ばれる)とを備えるサンプル値の第1のセットを取得するように適応された取得モジュール(702(図7を参照))であって、Pブロックが、i=0~7およびk=0~3のサンプル値pi,kのセットを備え、Qブロックが、i=0~7およびk=0~3のサンプル値qi,kのセットを備える、取得モジュール(702)と、フィルタを選択するように適応されたフィルタ選択モジュール(704(図7を参照))であって、フィルタ選択モジュール(704)は、Abs(p2,0-2*p1,0+p0,0)に等しい第1の値と、Abs(q2,0-2*q1,0+q0,0)に等しい第2の値とを少なくとも使用して、第1のpq値(pq1)を計算する(s504)ことと、pq1をしきい値と比較する(s508)ことであって、しきい値が、β>>4に等しく、βが、量子化パラメータ値(Q)に基づいて、あらかじめ決められたベータ値のセットから選択された、pq1をしきい値と比較する(s508)こととを含むプロセスを実施することによってフィルタを選択するように設定された、フィルタ選択モジュール(704)とを備える、装置(600)。
【0127】
様々な実施形態が本明細書で説明されたが、実施形態は、限定ではなく、例としてのみ提示されたことを理解されたい。これにより、本開示の広さおよび範囲は、上記で説明された例示的な実施形態のうちのいずれによっても限定されるべきではない。その上、上記で説明された要素の、それらのすべての可能な変形形態における組合せは、本明細書で別段に指し示されない限り、またはさもなければコンテキストによって明らかに否定されない限り、本開示によって包含される。
【0128】
加えて、上記で説明され、図面中に図示されているプロセスは、ステップのシーケンスとして示されているが、これは、例示のためにのみ行われた。それゆえに、いくつかのステップが追加され得ること、いくつかのステップが省略され得ること、ステップの順序が並べ替えられ得ること、およびいくつかのステップが並列に実施され得ることが企図される。
図1
図2
図3
図4
図5
図6
図7