(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-10
(45)【発行日】2023-11-20
(54)【発明の名称】ビデオコーディングにおけるフィルタリング装置および方法
(51)【国際特許分類】
H04N 19/82 20140101AFI20231113BHJP
H04N 19/48 20140101ALI20231113BHJP
【FI】
H04N19/82
H04N19/48
(21)【出願番号】P 2021575457
(86)(22)【出願日】2020-06-18
(86)【国際出願番号】 RU2020050127
(87)【国際公開番号】W WO2020256596
(87)【国際公開日】2020-12-24
【審査請求日】2022-01-27
(31)【優先権主張番号】PCT/RU2019/050090
(32)【優先日】2019-06-18
(33)【優先権主張国・地域又は機関】RU
(31)【優先権主張番号】PCT/RU2019/050091
(32)【優先日】2019-06-18
(33)【優先権主張国・地域又は機関】RU
(73)【特許権者】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133569
【氏名又は名称】野村 進
(72)【発明者】
【氏名】セルゲイ・ユリエヴィッチ・イコニン
(72)【発明者】
【氏名】ヴィクトール・アレクセーヴィッチ・ステッピン
(72)【発明者】
【氏名】アレクサンダー・アレクサンドロヴィッチ・カラブトフ
【審査官】鉢呂 健
(56)【参考文献】
【文献】米国特許出願公開第2013/0343447(US,A1)
【文献】国際公開第2010/061607(WO,A1)
【文献】IKONIN, Sergey et al.,CE1: Hadamard transform domain filter (CE1-2),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 14th Meeting: Geneva, CH, 19-27 March 2019, [JVET-N0478-v3],JVET-N0478 (version 3),ITU-T,2019年03月19日,<URL:https://jvet-experts.org/doc_end_user/documents/14_Geneva/wg11/JVET-N0478-v3.zip>: JVET-N0478-v3-clean.docx: pp.1-16, JVET-M1001-v5_DraftText.docx: pp.231-233
【文献】STEPIN, Victor et al.,CE2 related: Hadamard Transform Domain Filter,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 11th Meeting: Ljubljana, SI, 10-18 July 2018, [JVET-K0068-v3],JVET-K0068 (version 4),ITU-T,2018年08月01日,<URL:https://jvet-experts.org/doc_end_user/documents/11_Ljubljana/wg11/JVET-K0068-v4.zip>: JVET-K0068-v3.docx: pp.1-5
【文献】IKONIN, Sergey et al.,CE1-related: Hadamard transform domain in-loop filter also using bottom/right reconstructed samples [online],Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 14th Meeting: Geneva, CH, 19-27 March 2019, [JVET-N0479-v3],JVET-N0479 (version 4),ITU-T,2019年03月21日,<URL:https://jvet-experts.org/doc_end_user/documents/14_Geneva/wg11/JVET-N0479-v4.zip>: JVET-N0479-v4-clean.docx: pp.1-4
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
現在の再構築ブロックを処理するためにビデオ符号化装置またはビデオ復号装置に使用するフィルタ(120,220,1018,1118,960)であって、前記現在の再構築ブロックは複数のピクセルを含み、前記フィルタ(120,220,1018,1118,960)は、
前記現在の再構築ブロックからの少なくとも1つのサンプルに基づいて取得した1つ以上のパディングサンプルを含むように前記現在の再構築ブロックを
左側、上側、右側及び下側に拡張して、拡張された再構築ブロックを取得し、
予め定義されたスキャンテンプレートに従って、前記拡張された再構築ブロックの現在のピクセルと、前記現在のピクセルに隣接するピクセルとを線形バッファにロードし、
前記線形バッファ内のピクセルに1D変換を実行して、スペクトル成分を取得し、
ルックアップテーブルを使用して、前記取得したスペクトル成分に基づいて、フィルタリング済のスペクトル成分を取得し、
前記フィルタリング済のスペクトル成分に対して逆1D変換を実行して、フィルタリングされたピクセルを取得し、
前記フィルタリングされたピクセルに基づいて、フィルタリング済の再構築ブロックを生成する
ように構成される、フィルタ(120,220,1018,1118,960)。
【請求項2】
前記現在の再構築ブロックが、前記現在の再構築ブロックに近接した、隣接する再構築ブロックからの少なくとも1つのサンプルに基づいて取得した1つ以上のパディングサンプルをさらに含むように拡張される、請求項1に記載のフィルタ(120,220,1018,1118,960)。
【請求項3】
前記隣接する再構築ブロックが使用可能なときは、前記現在の再構築ブロックが、前記隣接する再構築ブロックからの前記少なくとも1つのサンプルに基づいて取得した前記1つ以上のパディングサンプルを含むように拡張され、かつ/または
前記隣接する再構築ブロックが使用不可能なときは、前記現在の再構築ブロックが、前記現在の再構築ブロックからのサンプルを含むように拡張される、請求項2に記載のフィルタ(120,220,1018,1118,960)。
【請求項4】
前記フィルタ(120,220,1018,1118,960)が、以下の条件、すなわち、
- 前記隣接する再構築ブロックが、前記現在の再構築ブロックとは異なるタイルに含まれていること、
- 前記隣接する再構築ブロックの位置がピクチャ境界を越えていること、
- 前記隣接する再構築ブロックが再構築されたかどうかを示す変数が偽であること、
のうちの1つ以上が真であれば、前記隣接する再構築ブロックの可用性が偽と判定され、
そうでない場合は、前記隣接する再構築ブロックの前記可用性が真と判定される
ように、前記隣接する再構築ブロックの前記可用性を導出する
ようにさらに構成される、請求項3に記載のフィルタ(120,220,1018,1118,960)。
【請求項5】
前記1つ以上のパディングサンプルが、前記隣接する再構築ブロックからのフィルタリング済のサンプルであり、前記隣接する再構築ブロックは、前記現在の再構築ブロックに近接する、以前に再構築されたブロックである、請求項2から4のいずれか一項に記載のフィルタ(120,220,1018,1118,960)。
【請求項6】
前記現在の再構築ブロックが、左側および上側にある隣接する再構築ブロックからのサンプルに基づいて取得した1つ以上のパディングサンプルを含むように、前記左側および前記上側に拡張される、請求項1から5のいずれか一項に記載のフィルタ(120,220,1018,1118,960)。
【請求項7】
前記フィルタ(120,220,1018,1118,960)が、前記現在の再構築ブロックのそれぞれの側に、
- 前記隣接する再構築ブロックが使用可能であれば、前記それぞれの側で前記現在の再構築ブロックに近接した、隣接する再構築ブロックからの隣接する再構築サンプルを含むように、または
- そうでない場合は、前記現在の再構築ブロックからの最も近いサンプルを含むように、
前記現在の再構築ブロックを拡張して、前記拡張された再構築ブロックを取得する
ように構成される、請求項1から6のいずれか一項に記載のフィルタ(120,220,1018,1118,960)。
【請求項8】
前記ルックアップテーブルが、前記現在の再構築ブロックの量子化パラメータ(Qp)に基づいて取得される、請求項1から7のいずれか一項に記載のフィルタ(120,220,1018,1118,960)。
【請求項9】
現在の再構築ブロックを処理する方法(300,300’,500)であって、前記現在の再構築ブロックは複数のピクセルを含み、
前記現在の再構築ブロックからの少なくとも1つのサンプルに基づいて取得した1つ以上のパディングサンプルを含むように前記現在の再構築ブロックを
左側、上側、右側及び下側に拡張して、拡張された再構築ブロックを取得するステップと、
予め定義されたスキャンテンプレートに従って、前記拡張された再構築ブロックの現在のピクセル、および前記現在のピクセルに隣接するピクセルを線形バッファにロードするステップと、
前記線形バッファ内のピクセルに1D変換を実行して、スペクトル成分を取得するステップと、
各スペクトル成分に利得係数を掛けて、またはルックアップテーブルを使用して、フィルタリングされたスペクトル成分を取得するステップであって、前記利得係数は、対応するスペクトル成分、およびフィルタリングパラメータに依存する、ステップと、
フィルタリングされたスペクトル成分に逆1D変換を実行して、フィルタリングされたピクセルを取得するステップと、
前記フィルタリングされたピクセルに基づいて、フィルタリング済の再構築ブロックを生成するステップと
を含む、方法(300,300’,500)。
【請求項10】
前記現在の再構築ブロックが、前記現在の再構築ブロックに近接した、隣接する再構築ブロックからの少なくとも1つのサンプルに基づいて取得した1つ以上のパディングサンプルをさらに含むように拡張される、請求項9に記載の方法(300,300’,500)。
【請求項11】
前記隣接する再構築ブロックが使用可能なときは、前記現在の再構築ブロックが、前記隣接する再構築ブロックからの前記少なくとも1つのサンプルに基づいて取得した前記1つ以上のパディングサンプルを含むように拡張され、かつ/または
前記隣接する再構築ブロックが使用不可能なときは、前記現在の再構築ブロックが、前記現在の再構築ブロックからのサンプルを含むように拡張される、請求項10に記載の方法(300,300’,500)。
【請求項12】
前記方法が、
以下の条件、すなわち、
- 前記隣接する再構築ブロックが、前記現在の再構築ブロックとは異なるタイルに含まれていること、
- 前記隣接する再構築ブロックの位置がピクチャ境界を越えていること、
- 前記隣接する再構築ブロックが再構築されたかどうかを示す変数が偽であること、
のうちの1つ以上が真であれば、前記隣接する再構築ブロックの可用性が偽と判定され、
そうでない場合は、前記隣接する再構築ブロックの前記可用性が真と判定される
ように、前記隣接する再構築ブロックの前記可用性を導出するステップをさらに含む、請求項11に記載の方法(300,300’,500)。
【請求項13】
前記1つ以上のパディングサンプルが、前記隣接する再構築ブロックからのフィルタリング済のサンプルであり、前記隣接する再構築ブロックは、前記現在の再構築ブロックに近接する、以前に再構築されたブロックである、請求項10から12のいずれか一項に記載の方法(300,300’,500)。
【請求項14】
前記現在の再構築ブロックが、左側および上側にある、以前に再構築された近接ブロックからのサンプルに基づいて取得したサンプルを含むように、前記左側および前記上側に拡張される、請求項9から13のいずれか一項に記載の方法(300,300’,500)。
【請求項15】
拡張された再構築ブロックを取得する前記ステップが、前記現在の再構築ブロックのそれぞれの側に、
- 前記隣接する再構築ブロックが使用可能であれば、前記それぞれの側で前記現在の再構築ブロックに近接した、隣接する再構築ブロックからの隣接する再構築サンプルを含むように、
- そうでない場合は、前記現在の再構築ブロックからの最も近いサンプルを含むように、
前記現在の再構築ブロックを拡張するステップを含む、請求項11から14のいずれか一項に記載の方法(300,300’,500)。
【請求項16】
前記ルックアップテーブルが、前記現在の再構築ブロックの量子化パラメータ(Qp)に基づいて取得される、請求項9から15のいずれか一項に記載の方法(300,300’,500)。
【請求項17】
入力ビデオストリームから現在ブロックを符号化する符号化方法であって、請求項9から16のいずれか一項に記載の方法を含む、符号化方法。
【請求項18】
受信したビットストリームから現在の再構築ブロックを復号する復号方法であって、請求項9から16のいずれか一項に記載の方法を含む、復号方法。
【請求項19】
入力ビデオストリームから現在ブロックを符号化する符号化装置(100)であって、請求項1から8のいずれか一項に記載のフィルタ(120)を備える、符号化装置(100)。
【請求項20】
受信したビットストリームから現在の再構築ブロックを復号する復号装置(200)であって、請求項1から8のいずれか一項に記載のフィルタ(220)を備える、復号装置(200)。
【請求項21】
コンピュータまたはプロセッサで実行されると、請求項9から18のいずれか一項に記載の方法を実行するプログラムコードを含む、コンピュータプログラム。
【請求項22】
デコーダであって、
1つまたは複数のプロセッサと、
前記プロセッサに接続され、前記プロセッサにより実行するためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、前記プログラミングは、前記プロセッサにより実行されると、請求項9から16および18のいずれか一項に記載の方法を実行するように前記デコーダを構成する、非一時的コンピュータ可読記憶媒体と
を含む、デコーダ。
【請求項23】
エンコーダであって、
1つまたは複数のプロセッサと、
前記プロセッサに接続され、前記プロセッサにより実行するためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、前記プログラミングは、前記プロセッサにより実行されると、請求項9から17のいずれか一項に記載の方法を実行するように前記エンコーダを構成する、非一時的コンピュータ可読記憶媒体と
を含む、エンコーダ。
【請求項24】
コンピュータデバイスにより実行されると、前記コンピュータデバイスに請求項9から18のいずれか一項に記載の方法を実行させるプログラムコードを記憶した、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
一般に、本発明はビデオコーディングの分野に関する。より具体的には、本発明は、ビデオコーディング用のフィルタに関し、かつ再構築されたビデオフレームをフィルタリングする方法、このような方法を実施するプログラム、ならびに前記のビデオコーディング用のフィルタを備える符号化装置および復号装置に関する。
【背景技術】
【0002】
デジタルビデオはDVDディスクの導入以来、広く使用されている。伝送する前にビデオは符号化され、伝送媒体を使用して伝送される。視聴者はビデオを受信し、ビデオを復号して表示するために視聴用デバイスを使用する。解像度、色深度、およびフレームレートが高くなったことなどにより、ビデオの品質は年々向上している。これにより今日では、より大きいデータストリームがインターネットやモバイル通信ネットワークを通じて日常的に伝送されるようになっている。
【0003】
しかしながら高解像度のビデオは、搬送する情報量が多いために通常はより広い帯域幅を必要とする。帯域幅要件を削減するために、ビデオの圧縮を含むビデオコーディング規格が導入されている。ビデオが符号化されると、帯域幅要件(またはストレージの場合は対応するメモリ要件)は削減される。しばしば、この削減により品質が犠牲になる。したがって、ビデオコーディング規格では、帯域幅要件と品質とのつり合いを見つけようとしている。
【0004】
品質を向上させ、かつ帯域幅要件を削減する継続的なニーズがあるため、帯域幅要件を削減しながら品質を維持する、あるいは帯域幅要件を維持しながら品質を向上させる解決策が引き続き模索されている。さらに、妥協も許される場合がある。例えば、品質の向上が顕著であれば帯域幅要件の増加は許容可能であろう。
【0005】
高効率ビデオコーディング(HEVC)は、当業者に一般的に知られているビデオコーディング規格の一例である。HEVCでは、コーディングユニット(CU)を予測ユニット(PU)または変換ユニット(TU)に分割する。Versatile Video Coding(VVC)次世代規格は、Joint Video Exploration Team(JVET)として知られるパートナーシップで協力するITU-T Video Coding Experts Group(VCEG)とISO/IEC Moving Picture Experts Group(MPEG)の標準化団体の最新の共同ビデオプロジェクトである。VVCは、ITU-T H.266/次世代ビデオコーディング(NGVC)規格とも称される。VVCでは、マルチ分割タイプの概念を排除する、すなわち最大変換長に対してサイズが大きすぎるCUに必要な場合を除いてCU、PU、およびTUの分離の概念を排除し、CU分割形状に対するより高い柔軟性をサポートする。
【0006】
画像のフィルタリングは、画像の幾つかの特徴を強調するため、あるいはフィルタリングされた画像の客観品質や知覚品質を高めるために頻繁に使用される。画像のフィルタリングは、様々なノイズ源を解決しなければならない。したがって品質を高めるための様々な手法が提案されており、現在使用されている。例えば、適応型ループフィルタ(ALF)方式では、再構築された各フレームが小さいマクロブロックのセット(スーパーピクセル)に分割され、各マクロブロックが適応型ループフィルタによってフィルタリングされ、そこではフィルタリング済の再構築フレームの各ピクセルは、生成中のフィルタリング済ピクセルの位置の周囲にある、再構築フレームからのピクセルの結合領域において、幾つかのピクセルの加重和になる。重み付け係数(フィルタ係数とも称される)は中心対称の特性を有し、エンコーダ側からデコーダ側へ伝送される。エッジはサイズが大きいことが多く、したがって伝送される重み付け係数の数が、効率的に処理するには大きくなりすぎる可能性がある。重み付け係数の数が大きいと、伝送する重み付け係数の数を削減するために、エンコーダ側で複雑なレート歪み最適化(RDO)を必要とする。デコーダ側において、ALFは汎用の乗算器の実装を必要とし、このような乗算器は、各2x2ピクセルブロックに対してリロードされなければならない。
【0007】
したがって、予測品質を低複雑性で向上させて、ビデオコーディングの効率を向上させることが可能なように、改善されたフィルタおよび方法が必要とされている。
【発明の概要】
【課題を解決するための手段】
【0008】
複雑性を制限しながらフィルタリング効率を向上させ、したがってビデオコーディングの効率を上げることを可能にする、改善されたフィルタおよび方法を提供することが本発明の目的である。
【0009】
上記その他の目的は、独立請求項の主題によって達成される。さらなる実施形態は、従属請求項、説明および図から明らかである。
【0010】
幾つかの実施形態によれば、現在の再構築ブロックは、周波数ドメインで拡張された再構築ブロックがフィルタリングされる前に、現在の再構築ブロックから取得されたパディングサンプルを含むように拡張される。
【0011】
このような拡張により、使用可能な隣接サンプルを持たないピクセルであっても、効率的で統一されたフィルタリングを容易にする。
【0012】
一態様によれば、現在の再構築ブロックを処理するためにビデオ符号化装置またはビデオ復号装置に使用するフィルタであって、現在の再構築ブロックは複数のピクセルを含み、現在の再構築ブロックからの少なくとも1つのサンプルに基づいて取得した1つ以上のパディングサンプルを含むように現在の再構築ブロックを拡張して、拡張された再構築ブロックを取得し、予め定義されたスキャンテンプレートに従って、拡張された再構築ブロックの現在のピクセルと、現在のピクセルのそれに隣接するピクセルとを線形バッファにロードし、線形バッファ内のピクセルに対して1D変換を実行してスペクトル成分を取得し、ルックアップテーブルを使用して取得したスペクトル成分に基づいて、フィルタリング済のスペクトル成分を取得し、フィルタリング済のスペクトル成分に対して逆1D変換を実行してフィルタリングされたピクセルを取得し、フィルタリングされたピクセルに基づいてフィルタリング済の再構築ブロックを生成する、ように構成される、フィルタが提供される。
【0013】
周波数ドメインにおけるフィルタは低複雑性での実施を容易にし、その一方で、現在の再構築ブロックの拡張によってフィルタリングの品質を向上させ、かつブロックの全ピクセルに対して同じフィルタリング動作の適用(例えば、フィルタのサイズ/形状が同じ)が可能になり得る。しかしながら本開示は、このような均一なフィルタ動作を実際に適用することに限定されないことに留意されたい。
【0014】
現在の再構築ブロックは、現在ブロックの再構築によって取得される。現在の再構築ブロックとは、現在ブロックの再構築されたサンプルのことをいう。再構築は、ビデオエンコーダおよび/またはデコーダ、具体的にはビデオエンコーダの再構築ユニット、および/またはビデオデコーダの再構築ユニットによってそれぞれ実行される、ビデオ符号化および/またはビデオ復号の一部であり得る。
【0015】
一実施形態では、現在の再構築ブロックは、現在の再構築ブロックに近接した、隣接する再構築ブロックからの少なくとも1つのサンプルに基づいて取得した1つ以上のパディングサンプルをさらに含むように拡張される。
【0016】
隣接サンプルに基づいて、かつ現在の再構築ブロックサンプルに基づいて両方のパディングタイプを提供することにより、ブロック境界でより滑らかなフィルタリング結果を得ることを容易にする。
【0017】
例えば、隣接する再構築ブロックが使用可能なときは、現在の再構築ブロックは、隣接する再構築ブロックからの少なくとも1つのサンプルに基づいて取得した1つ以上のパディングサンプルを含むように拡張され、かつ/または隣接する再構築ブロックが使用不可能なときは、現在の再構築ブロックは現在の再構築ブロックからのサンプルを含むように拡張される。
【0018】
したがって、より多くの情報を含んでいる場合がある隣接ピクセルが可能な限り使用され得る。使用可能でない隣接サンプルについては、現在の再構築ブロックに基づくパディングによって、フィルタ(現在の再構築ブロックのピクセルに対して同じ)の統一、およびフィルタリング結果の向上がまだ可能な場合がある。
【0019】
この例では、パディングサンプルは現在の再構築ブロックから取って、パディングサンプルとして使用することができる。しかしながら、本開示はこれに限定されず、パディングサンプルは現在の再構築ブロックのサンプルから導出することができる。例えば、パディングサンプルは、(1つまたは複数の)現在の再構築ブロックの1つ以上のサンプルに基づいて導出され得る。導出は、フィルタリングによる、特定のサンプルを選択することによる、あるいはサンプルの組み合わせによるものなどであってよい。
【0020】
例示的な実施形態によれば、フィルタは、ブロックコーディング順序、同じピクチャグループに属する現在の再構築ブロックおよび隣接する再構築ブロックであって、同じピクチャグループは、同じスライス、同じタイル、または同じタイルグループを含む、現在の再構築ブロックおよび隣接する再構築ブロック、またはピクチャ境界を越える隣接する再構築ブロックの位置、のうちの1つ以上に基づいて、隣接する再構築ブロックが、現在の再構築ブロックに使用可能かどうかを判定する、ようにさらに構成される。
【0021】
このような可用性の判定はピクチャ境界の制限を考慮しており、かつタイルやスライスなどの独立したピクチャ部分をサポートすることで並列処理の提供を容易にし得る。
【0022】
例えば、フィルタは、(i)隣接する再構築ブロックが、現在ブロックとは異なるタイルに含まれている、(ii)隣接する再構築ブロックの位置がピクチャ境界を越えている、(iii)隣接する再構築ブロックが再構築されたかどうかを示す変数が偽である、という条件のうちの1つ以上が真であれば、隣接する再構築ブロックの可用性が偽と判定され、そうでない場合は、隣接する再構築ブロックの可用性が真と判定されるように、隣接する再構築ブロックの可用性を導出するように構成される。例えば、隣接する再構築ブロックが再構築されたかどうかを示す変数は、真または偽の値をとり得る。変数の値は、ブロックコーディング順序(ブロック再構築順序)に基づいて決定されてよい。具体的には、ブロックコーディング順序は、ブロックがどの順序でコーディングされるかを特定し、また、現在ブロックの前にどのブロックがコーディングされているかを特定する。
【0023】
例示的な実施によれば、1つ以上のパディングサンプルは、現在の再構築ブロックに近接する、以前に再構築されたブロックである隣接する再構築ブロックからのフィルタリング済のサンプルである。
【0024】
パディングサンプルの事前フィルタリングは、フィルタリング品質をさらに向上させ得る。
【0025】
例えば、現在の再構築ブロックは、左側および上側にある隣接する再構築ブロックからのサンプルに基づいて取得した1つ以上のパディングサンプルを含むように、左側および上側に拡張される。隣接する再構築ブロックは、例えば、左側および上側が現在の再構築ブロックと近接する、以前に再構築されたブロックである。
【0026】
これに加えて、またはこれに代えて、現在の再構築ブロックは、現在の再構築ブロックからの少なくとも1つのサンプルに基づいた1つ以上のパディングサンプルを含むように、右側および下側に拡張される。
【0027】
このような拡張は、左から右、および上から下のブロックスキャン順序を有するシステムでは直ちに使用される場合があり、それはこのようなシステムでは、通常は左および右の隣接ブロックが使用可能な一方で、下および右のブロックは使用不可能な場合があるためである。
【0028】
一実施形態では、拡張された再構築ブロックを取得するステップは、現在の再構築ブロックのそれぞれの側(例えば、上、下、右、左)において、前記の隣接する再構築ブロックが使用可能な場合は、前記のそれぞれの側で現在の再構築ブロックに近接した、隣接する再構築ブロックからの隣接する再構築サンプルを含むように、あるいはそうでない場合は、現在の再構築ブロックからの最も近いサンプルを含むように、現在の再構築ブロックを拡張することを含む。
【0029】
言い換えると、フィルタは、現在の再構築ブロックのそれぞれの側において、隣接する再構築ブロックが使用可能であれば、前記の側で前記現在の再構築ブロックに近接した、隣接する再構築ブロックからの隣接する再構築サンプルを含み、使用可能でなければ、現在の再構築ブロックからの最も近いサンプルを含むように現在の再構築ブロックを拡張して、拡張された再構築ブロックを取得するように構成される。
【0030】
このような手法により、適切なパディングサンプルによって、そのすべての境界で、現在の再構築ブロックを拡張することが容易になり、その結果フィルタリング品質が向上し得る。具体的には、近隣の近接ブロックからのサンプルをフィルタリング処理に含めることによって、隣接ブロック間のより滑らかな移行を得ることが可能になり得る。別の利点は、現在ブロックの境界および内部サンプルに対するフィルタリング処理の統一化であり、フィルタリング中の状況確認および条件付き処理を回避することが可能になる。
【0031】
例えば、サンプルx=-1..nCbW、y=-1..nCbHの拡張された再構築ブロックrecSamplesPad[x][y]を取得することは、現在の再構築ブロックrecSamples[x][y]に対して、(xCb,yCb)が再構築ブロックの左上サンプルを示し、nCbW,nCbHが現在の再構築ブロックの幅および高さを示し、0≦x≦nCbW-1かつ0≦y≦nCbH-1のとき、recSamplesPad[x][y]=recSamples[x][y]となり、あるいは(xCb+x,yCb+y)については、変数dxは0に設定され、変数dyは0に設定され、x==-1でサンプル(xCb+x,yCb+y)が使用不可能なときはdx=1であり、x==nCbWでサンプル(xCb+x,yCb+y)が使用不可能なときはdx=-1であり、y==-1でサンプル(xCb+x,yCb+y)が使用不可能なときはdy=1であり、y==nCbHでサンプル(xCb+x,yCb+y)が使用不可能なときはdy=-1であり、recSamplesPad[x][y]=recSamples[x+dx][y+dy]となる。
【0032】
recSamplesPadは拡張された再構築ブロックサンプルに対応し、その一方でrecSampleは現在の再構築ブロックサンプルに対応することに留意されたい。
【0033】
幾つかの実施形態では、フィルタは、隣接する再構築ブロックが、現在の再構築ブロックに使用可能かどうかを判定するようにさらに構成され、インター予測ブロックである現在の再構築ブロックに対して、隣接する再構築ブロックがインター予測ブロックでなければ、隣接する再構築ブロックの可用性が偽と判定される。
【0034】
インター予測モードなどの予測モードを考慮することによって、インターコード化サンプル用およびイントラコード化サンプル用の個別の処理パイプの提供など、並列処理の提供を容易にする。
【0035】
例示的な実施では、ルックアップテーブルが、現在の再構築ブロックの量子化パラメータ(Qp)に基づいて取得される。これにより、複雑な計算をする必要なく効率的に実施することを容易にする。
【0036】
一実施形態では、隣接ブロックからの少なくとも1つのサンプルに基づいて取得した1つ以上のパディングサンプルが、現在の再構築ブロックの現在の画像ブロックのイントラ予測に使用される参照サンプルであり、現在の画像ブロックの再構築ブロックが、現在の再構築ブロックである。1つ以上のパディングサンプルは、現在の画像ブロックのイントラ予測に使用される参照サンプルであり、現在の画像ブロックの現在の再構築ブロックは、イントラ予測(および残差ブロック)から生成または取得された予測ブロックに基づいて生成または取得される。
【0037】
イントラ予測参照サンプルを再使用することにより、実装効率を高め、メモリの利用をより良好にし、遅延を少なくするのに役立ち得る。
【0038】
例えば、フィルタは、イントラ参照サンプル導出の結果に基づいて、1つ以上のパディングサンプルを取得するようにさらに構成される具体的には、イントラ参照サンプル導出は、隣接する再構築サンプルの可用性の導出と、隣接する再構築サンプルが使用可能であれば隣接する再構築サンプルを取り出すことと、隣接する再構築サンプルが使用不可能であれば、隣接する再構築サンプルを他の使用可能な隣接する再構築サンプルに置き換えることとを含む。
【0039】
このような特定のイントラ参照サンプル可用性判定は、パディングサンプルの可用性の判定にも再使用され得る。
【0040】
以下、対応する方法実施形態が例示される。これは、上述したこれらに対応するフィルタの実施形態と同様の利点を達成する。
【0041】
一態様によれば、現在の再構築ブロックを処理する方法が提供され、現在の再構築ブロックは複数のピクセルを含み、フィルタリング方法は、現在の再構築ブロックからの少なくとも1つのサンプルに基づいて取得した1つ以上のパディングサンプルを含むように現在の再構築ブロックを拡張して、拡張された再構築ブロックを取得する、ステップと、予め定義されたスキャンテンプレートに従って、拡張された再構築ブロックの現在のピクセル、および現在のピクセルのそれに隣接するピクセルを線形バッファにロードする、ステップと、線形バッファ内のピクセルに1D変換を実行して、スペクトル成分を取得する、ステップと、各スペクトル成分に利得係数を掛けて、またはルックアップテーブルを使用して、フィルタリングされたスペクトル成分を取得するステップであって、利得係数は、対応するスペクトル成分、およびフィルタリングパラメータに依存する、ステップと、フィルタリングされたスペクトル成分に逆1D変換を実行して、フィルタリングされたピクセルを取得する、ステップと、フィルタリングされたピクセルに基づいて、フィルタリング済の再構築ブロックを生成する、ステップと、を含む。
【0042】
例えば、現在の再構築ブロックは、現在の再構築ブロックに近接した、隣接する再構築ブロックからの少なくとも1つのサンプルに基づいて取得した1つ以上のパディングサンプルをさらに含むように拡張される。
【0043】
一実施形態によれば、隣接する再構築ブロックが使用可能なときは、現在の再構築ブロックは、隣接する再構築ブロックからの少なくとも1つのサンプルに基づいて取得した1つ以上のパディングサンプルを含むように拡張され、かつ/または隣接する再構築ブロックが使用不可能なときは、現在の再構築ブロックは現在の再構築ブロックからのサンプルを含むように拡張される。
【0044】
これに加えて、またはこれに代えて、本方法は、ブロックコーディング順序、同じピクチャグループに属する現在の再構築ブロックおよび隣接する再構築ブロックであって、同じピクチャグループは、同じスライス、同じタイル、または同じタイルグループを含む、現在の再構築ブロックおよび隣接する再構築ブロック、またはピクチャ境界を越える隣接する再構築ブロックの位置、のうちの1つ以上に基づいて、隣接する再構築ブロックが、現在の再構築ブロックに使用可能かどうかを判定する、ステップをさらに含む。
【0045】
例示的な実施によれば、本方法は、隣接する再構築ブロックが、現在ブロックとは異なるタイルに含まれている、隣接する再構築ブロックの位置がピクチャ境界を越えている、隣接する再構築ブロックが再構築されたかどうかを示す変数が偽である、という条件のうちの1つ以上が真であれば、隣接する再構築ブロックの可用性が偽と判定され、そうでない場合は、隣接する再構築ブロックの可用性が真と判定されるように、隣接する再構築ブロックの可用性を導出するステップをさらに含む。
【0046】
例えば、1つ以上のパディングサンプルは、現在の再構築ブロックに近接する、以前に再構築されたブロックである隣接する再構築ブロックからのフィルタリング済のサンプルである。
【0047】
現在の再構築ブロックは、左側および上側にある以前に再構築された近接ブロックからのサンプルに基づいて取得したサンプルを含むように、左側および上側に拡張され得る。
【0048】
これに代えて、またはこれに加えて、現在の再構築ブロックは、現在の再構築ブロックからの少なくとも1つのサンプルに基づいた1つ以上のパディングサンプルを含むように、右側および下側に拡張され得る。
【0049】
一実施形態によれば、拡張された再構築ブロックを取得するステップは、現在の再構築ブロックの各側において、前記隣接する再構築ブロックが使用可能な場合は、前記のそれぞれの側で現在の再構築ブロックに近接した、隣接する再構築ブロックからの隣接する再構築サンプルを含むように、あるいはそうでない場合は、現在の再構築ブロックからの最も近いサンプルを含むように、現在の再構築ブロックを拡張することを含む。
【0050】
具体的には、サンプルx=-1..nCbW、y=-1..nCbHの拡張された再構築ブロックrecSamplesPad[x][y]を取得することは、現在の再構築ブロックrecSamples[x][y]に対して、(xCb,yCb)が再構築ブロックの左上サンプルを示し、nCbW,nCbHが現在の再構築ブロックの幅および高さを示し、0≦x≦nCbW-1かつ0≦y≦nCbH-1のとき、recSamplesPad[x][y]=recSamples[x][y]となり、あるいは(xCb+x,yCb+y)については、変数dxは0に設定され、変数dyは0に設定され、x==-1でサンプル(xCb+x,yCb+y)が使用不可能なときはdx=1であり、x==nCbWでサンプル(xCb+x,yCb+y)が使用不可能なときはdx=-1であり、y==-1でサンプル(xCb+x,yCb+y)が使用不可能なときはdy=1であり、y==nCbHでサンプル(xCb+x,yCb+y)が使用不可能なときはdy=-1であり、recSamplesPad[x][y]=recSamples[x+dx][y+dy]となることを含む。
【0051】
幾つかの実施形態では、本方法は、隣接する再構築ブロックが、現在の再構築ブロックに使用可能かどうかを判定するステップをさらに含み、インター予測ブロックである現在の再構築ブロックに対して、隣接する再構築ブロックがインター予測ブロックでなければ、隣接する再構築ブロックの可用性が偽と判定される。
【0052】
例示的な実施では、ルックアップテーブルが、現在の再構築ブロックの量子化パラメータ(Qp)に基づいて取得される。
【0053】
一実施形態では、隣接ブロックからの少なくとも1つのサンプルに基づいて取得した1つ以上のパディングサンプルは、現在の再構築ブロックの現在の画像ブロックのイントラ予測に使用することを意図したサンプルである。
【0054】
具体的には、1つ以上のパディングサンプルを取得するステップは、イントラ参照サンプル導出の結果に基づく。
【0055】
例示的な実施において、イントラ参照サンプル導出は、隣接する再構築サンプルの可用性の導出と、隣接する再構築サンプルが使用可能であれば隣接する再構築サンプルを取り出すことと、隣接する再構築サンプルが使用不可能であれば、隣接する再構築サンプルを他の使用可能な隣接する再構築サンプルに置き換えることとを含む。
【0056】
一態様によれば、入力ビデオストリームから現在ブロックを符号化する符号化方法が提供され、符号化方法は、上述した態様、実施形態、および例のいずれか1つに係る、現在ブロックの現在の再構築ブロックをフィルタリングするステップを含む。
【0057】
一態様によれば、受信したビットストリームから現在の再構築ブロックを復号する復号方法が提供され、復号方法は、上述した態様、実施形態、および例のいずれか1つに係る、フィルタリングする方法を含む。
【0058】
一態様によれば、本発明は、入力ビデオストリームから現在のフレームを符号化する符号化装置に関し、符号化装置は、上述した態様、実施形態、および例のいずれかに係るフィルタを備える。
【0059】
一態様によれば、本発明は、受信したビットストリームから現在の再構築フレームを復号する復号装置に関し、復号装置は、上述した態様、実施形態、および例のいずれかに係るフィルタを備える。
【0060】
一態様によれば、本発明は、コンピュータで実行されると、上述した態様、実施形態、および例に係るいずれかの方法を実行するプログラムコードを含む、コンピュータプログラム製品に関する。
【0061】
一態様によれば、デコーダが提供され、1つまたは複数のプロセッサと、プロセッサに接続され、プロセッサによって実行するためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、プログラミングが、プロセッサによって実行されると、前述の請求項のいずれか一項による方法を実行するようにデコーダを構成する、非一時的コンピュータ可読記憶媒体とを備える。
【0062】
別の態様によれば、エンコーダが提供され、1つまたは複数のプロセッサと、プロセッサに接続され、プロセッサによって実行するためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、プログラミングが、プロセッサによって実行されると、前述の請求項のいずれか一項による方法を実行するようにエンコーダを構成する、非一時的コンピュータ可読記憶媒体とを備える。
【0063】
一態様によれば、コンピュータデバイスにより実行されると、コンピュータデバイスに前述の請求項のいずれか一項に記載の方法を実行させるプログラムコードを保持する、非一時的コンピュータ可読媒体が提供される。
【0064】
したがって、このフィルタが提供されることによって、ビデオコーディングの効率を向上させることが可能になる。より具体的には、本発明の実施形態に係る改善されたフィルタは、フィルタパラメータをシグナリングすることなく、再構築されたフレーム自体からフィルタパラメータを推定し、したがって必要なシグナリングが従来のフィルタより大幅に少なくなり、画像ドメインでフィルタリングのための重み付け係数をシグナリングする。
【0065】
本発明のさらなる実施例が、以下の図面に関連して説明される。
【図面の簡単な説明】
【0066】
【
図1】一実施形態に係るフィルタを備える、一実施形態に係る符号化装置を例示する概略図を示す。
【
図2】一実施形態に係るフィルタを備える、一実施形態に係る復号装置を例示する概略図を示す。
【
図3A】一実施形態に係るフィルタで実施されるフィルタリング処理の態様を例示する概略図を示す。
【
図3B】一実施形態に係るフィルタで実施される別のフィルタリング処理の態様を例示する概略図を示す。
【
図4A】正方形の再構築ブロック内の、様々なピクセル位置に対するテンプレートを示す。
【
図4B】1つのピクセルに対する同等のフィルタ形状を示す。
【
図5】一実施形態に係るフィルタリング方法のステップを例示する流れ図を示す。
【
図6】一実施形態に係る装置の例示的な構造を示す概略図である。
【
図8】左側、上側、右側、および下側のパディングを示す。
【
図9】別の実施形態に係る装置の例示的な構造を示す。
【
図10】別の実施形態に係るフィルタを備える、別の実施形態に係る符号化装置を例示する概略図を示す。
【
図11】別の実施形態に係るフィルタを備える、別の実施形態に係る復号装置を例示する概略図を示す。
【
図12】左側、上側、右側、および下側のパディング、ならびにパディングされたサンプルを使用したフィルタリングを例示する概略図を示す。
【
図13】一実施形態に係る方法を示す流れ図である。
【
図14】コンテンツ配信サービスを実現するコンテンツ供給システム3100の構成例を示すブロック図である。
【
図15】端末デバイスの例の構造を示すブロック図である。
【発明を実施するための形態】
【0067】
様々な図において、同一の参照符号は、同一のまたは機能的に同等の特徴に対して使用される。
【0068】
以下の説明では、本開示の一部を形成し、本発明が配置されることができる特定の態様が例示として示される添付図面が参照される。本発明の範囲から逸脱することなく、他の態様が利用されることができ、構造的または論理的な変更が行われることができることを理解されたい。したがって、以下の詳細な説明は、本発明の範囲が添付の特許請求の範囲によって定義されるため、限定的な意味で解釈されるべきではない。
【0069】
例えば、記載の方法に関連する開示は、その方法を実行するように構成された対応するデバイスまたはシステムにも当てはまり、その逆も同様であることが理解される。例えば、特定の方法ステップが説明される場合、対応するデバイスは、明確に記載または図示されていない場合であっても記載の方法ステップを実行するためのユニットを含むことができる。さらに、特に断りのない限り、本明細書に記載の様々な例示的な態様の特徴を互いに組み合わされてもよいことが理解される。
【0070】
図1は、一実施形態に係るフィルタ120を備える、一実施形態に係る符号化装置100を示す。符号化装置100は、複数のフレーム(本明細書ではピクチャまたは画像とも称される)を含むビデオ信号のフレームのブロックを符号化するように構成され、各フレームは複数のブロックに分割可能であり、各ブロックは複数のピクセルを含む。一実施形態では、ブロックはマクロブロック、コーディングツリーユニット、コーディングユニット、予測ユニット、および/または予測ブロックであり得る。
【0071】
本開示における「ブロック」という用語は、任意の種類のブロックに対して、または任意の深度ブロックに対して用いられ、例えば、「ブロック」という用語は、ルートブロック、ブロック、サブブロック、葉ノードなどに含まれるがこれに限定されない。符号化されるブロックは、必ずしも同じサイズを有さない。1つのピクチャは、異なるサイズのブロックを含む場合があり、ビデオシーケンスの異なるピクチャのブロックラスタも異なる場合がある。本開示の「ブロック」という用語は、サンプルのMxN(M列×N行)配列、または変換係数のMxN配列を指す場合がある。
【0072】
ビデオのフレームは、強度値を有するサンプルの2次元配列または行列とみなせる、(デジタル)ピクチャとみなされてよい。配列内のサンプルは、ピクセル(ピクチャ要素の短い形)またはペルとも呼ばれ得る。配列またはピクチャの水平および垂直方向(または軸)のサンプルの数は、ピクチャのサイズおよび/または解像度を定義する。色の表現のために、通常は3つの色成分が用いられる、すなわち、ピクチャは、3つのサンプル配列で表され得る、または3つのサンプル配列を含み得る。RBG形式または色空間では、ピクチャは、対応する赤、緑、および青のサンプルの配列を備える。しかしながら、ビデオコーディングでは、各ピクセルは、通常、輝度およびクロミナンス形式または色空間、例えば、YCbCrで表され、YCbCrは、Yによって示される輝度成分(場合によっては、Lが代わりに使用されることもある)と、CbおよびCrによって示される2つのクロミナンス成分と、を含む。輝度(または略してルマ)成分Yは、明るさまたはグレーレベルの強度(例えば、グレースケールピクチャの場合)を表し、2つのクロミナンス(または略してクロマ)成分CbおよびCrは、色度または色情報成分を表す。したがって、YCbCr形式のピクチャは、輝度サンプル値(Y)の輝度サンプル配列ならびにクロミナンス値(CbおよびCr)の2つのクロミナンスサンプル配列を含む。RGB形式のピクチャは、YCbCr形式に転換または変換され得、その逆も同様であり、このプロセスはまた、色変換または色転換として知られている。ピクチャがモノクロの場合、ピクチャは輝度サンプル配列のみを含むことができる。本開示は、任意の1つ以上の(またはすべての)色成分のサンプル(ピクセル)に適用可能であることが理解されよう。
【0073】
ビデオコーディングという用語は、通常はビデオ符号化および/またはビデオ復号に適用されることに留意されたい。
【0074】
図1に示す例示的な実施形態では、符号化装置100は、ハイブリッドビデオコーディングエンコーダの形態で実施されている。通常、ビデオ信号の最初のフレームはイントラフレームであり、イントラ予測のみを使用して符号化される。このため、
図1に示す符号化装置100の実施形態は、イントラ予測用のイントラ予測ユニット154を備える。イントラフレームは、他のフレームからの情報なしで復号され得る。イントラ予測ユニット154は、イントラ推定ユニット152によって提供された情報に基づいてブロックのイントラ予測を実行することができる。別の例では、イントラ推定ユニット152およびイントラ予測ユニット154は、符号化装置100内で個別に存在しない場合があり、例えば、イントラ推定ユニット152とイントラ予測ユニット154とは一体化されてよいことに留意されたい。
【0075】
一例では、イントラ予測ユニット154は、隣接する再構築サンプルの可用性を確認し、使用可能であれば隣接する再構築サンプルを取り出し(例えば、幾つかの具体的な実施では線形バッファ116を形成し)、使用不可能であればそれらを他の使用可能な(隣接する)サンプルと置き換えるロジックを含む、参照サンプル導出を担う場合がある。これらの参照サンプルは、イントラ予測用の入力として使用される。
【0076】
最初のイントラフレームの後に続くフレームのブロックは、モード選択ユニット160によって選択される通りに、インター予測またはイントラ予測でコーディングすることができる。このため、
図1に示す符号化装置100は、イントラ予測用のインター予測ユニット144をさらに備える。通常、インター予測ユニット144は、インター推定ユニット142によって提供される動き推定に基づいて、ブロックの動き補償を実行するように構成することができる。別の例では、インター推定ユニット142およびインター予測ユニット144は、符号化装置100内で個別に存在しない場合があり、例えば、インター推定ユニット142とインター予測ユニット144とは一体化されてよいことに留意されたい。
【0077】
さらに、
図1に示すハイブリッドエンコーダの実施形態では、残差計算ユニット104が、原ブロックとその予測との間の差、すなわちイントラ/インターピクチャ予測の予測誤差を定義する残差ブロックを決定する。残差ブロックは、変換ユニット106によって(例えば、DCTを使用して)変換され、変換係数は量子化ユニット108によって量子化される。例えば、イントラ予測ユニット154、インター予測ユニット144、およびフィルタ120によって提供される量子化ユニット108の出力、ならびにコーディング情報または側路情報は、エントロピー符号化ユニット170によってさらに符号化される。
【0078】
ハイブリッドビデオエンコーダは、通常はデコーダ処理を複製して、両方が同一の予測を生成するようにする。したがって、
図1に示す実施形態では、逆量子化ユニット110および逆変換ユニットは、変換ユニット106および量子化ユニット108の逆の動作を行い、残差ブロックの復号された近似値を複製する。復号された残差ブロックデータは、その後、再構築ユニット114によって、予測結果すなわち予測ブロックに追加される。次に、再構築ユニット114の出力はイントラ予測に使用される線形バッファ116に供給でき、フィルタ120によってさらに処理されるが、これについては以下でより詳細に説明される。最後のピクチャが復号ピクチャバッファ130に格納され、後続のフレームのインター予測に使用することができる。
【0079】
図2は、一実施形態に係るフィルタ220を備える、一実施形態に係る復号装置200を示す。復号装置200は、符号化されたビデオ信号のフレームのブロックを復号するように構成される。
図2に示す実施形態では、復号装置200はハイブリッドデコーダとして実施されている。エントロピー復号ユニット204は、符号化されたピクチャデータのエントロピー復号を実行し、通常は予測誤差(すなわち残差ブロック)、動きデータその他の側路情報を含むことができ、これは特に、イントラ予測ユニット254およびインター予測ユニット244、ならびにフィルタ220などの復号装置200の他の構成要素に必要とされる。通常は、
図2に示す復号装置200のイントラ予測ユニット254およびインター予測ユニット244はモード選択ユニット260によって選択され、
図1に示す符号化装置100のイントラ予測ユニット154およびインター予測ユニット144と同様に機能するので、符号化装置100と復号装置200とで同一の予測を生成することができる。イントラ予測ユニット154、254は、隣接する再構築サンプルの可用性を確認し、使用可能であれば隣接する再構築サンプルを取り出し(例えば、幾つかの具体的な実施では線形バッファ216、116を形成し)、使用不可能であればそれらを他の使用可能な隣接サンプルと置き換えるロジックを含む、参照サンプル導出を担う場合がある。これらの参照サンプルは、イントラ予測用の入力として使用される。復号装置200の再構築ユニット214は、フィルタリングされた予測ブロックと、逆量子化ユニット210および逆変換ユニット212によって提供された残差ブロックとに基づいて、ブロックを再構築するように構成される。符号化装置100の事例におけるように、再構築ブロックは、イントラ予測に使用される線形バッファ216に供給でき、フィルタリングされたブロック/フレームはインター予測用に、フィルタ220によって復号ピクチャバッファ230に供給することができる。
【0080】
すでに上述したように、フィルタ120、220はフレームレベルで使用されてよく、例えば、フィルタ120、220は、フィルタリングされた再構築フレームを生成するために、復号済の再構築ビデオストリームからの再構築フレームを処理するように構成されてよく、再構築フレームは複数のブロックを含む。フィルタ120、220は、フレーム全体を待つことなく、ブロック再構築後(または再構築後フィルタ)にブロックレベルで使用されてもよく、例えば、
図10に例示的に示されているように、フィルタ120、220は、フィルタリング済の再構築ブロックを生成し、フィルタリングされた再構築サンプルを線形バッファ1016、1116にさらに供給するために、あるいは
図11に例示的に示されているように、フィルタリング済の再構築サンプルを線形バッファ1116にさらに供給するために、再構築ブロックを処理するように構成されてよく、再構築ブロックは複数のピクセルを含む。
【0081】
図10は、別の実施形態に係る符号化装置1000の例を示し、フィルタはブロック再構築後、例えばブロック再構築の直後の、再構築後フィルタ1018として適用される。再構築ユニット1014の結果は、再構築後フィルタ1018に提供することができる。次に、再構築後フィルタ1018の結果は、線形バッファ1016に提供でき、ループフィルタ1020によってさらに処理される、または復号ピクチャバッファ1030に直接提供される。
【0082】
図11は、別の実施形態による復号装置1100の例を示し、フィルタはブロック再構築後、例えばブロック再構築の直後の、再構築後フィルタ1118として適用される。再構築ユニット1114の結果は、再構築後フィルタ1118に提供することができる。次に、再構築後フィルタ1118の結果は、線形バッファ1116に提供でき、ループフィルタ1120によってさらに処理される、または復号ピクチャバッファ1130に直接提供される。
【0083】
フィルタ120、220、1018、1118は、一実施形態において、1つ以上のプロセッサ(あるいは1つ以上の処理ユニットまたは処理回路)を備える。以下でより詳細に説明されるように、1つ以上のプロセッサ(あるいは1つ以上の処理ユニットまたは処理回路)は、予め定義されたスキャンテンプレート(言い換えると、スキャン順序またはスキャンパターン)に従って現在のピクセルおよびそれに隣接するピクセルを線形バッファにロードし、線形バッファ内の各ピクセルに1D変換を実行してスペクトル成分を取得し、各スペクトル成分に利得係数を掛けてフィルタリングされたスペクトルを取得し、ここで利得係数は対応するスペクトル成分およびフィルタリングパラメータに依存し、フィルタリングされたスペクトルに逆1D変換を実行してフィルタリング済のピクセルを取得し、かつ以前の処理ステップで推定されたフィルタリング済のピクセルに基づいて、フィルタリング済の再構築ブロックを生成する、ように構成される。一例では、利得係数は対応するスペクトル成分およびフィルタリングパラメータに依存する。別の例では、利得係数は、1つ以上のフィルタリングパラメータ、および1つ以上の対応するスペクトル成分に依存する。他の例では、各利得係数は、1つ以上のフィルタリングパラメータ、および対応するスペクトル成分、ならびにスペクトル成分の左側および右側の隣接するスペクトル成分に依存し得る。
【0084】
別の実施形態では、フィルタ120、220、1018、1118は、一実施形態において、1つ以上のプロセッサ(あるいは1つ以上の処理ユニットまたは処理回路)を備える。以下でより詳細に説明されるように、1つ以上のプロセッサ(あるいは1つ以上の処理ユニットまたは処理回路)は、現在の再構築ブロックからの少なくとも1つのサンプルに基づいて取得した1つ以上のパディングサンプルを含むように現在の再構築ブロックを拡張して、拡張された再構築ブロックを取得し、予め定義されたスキャンテンプレートに従って、拡張された再構築ブロックの現在のピクセル、および現在のピクセルのそれに隣接するピクセルを線形バッファにロードし、線形バッファ内のピクセルに1D変換を実行してスペクトル成分を取得し、ルックアップテーブルを使用して、取得したスペクトル成分に基づいて、フィルタリング済のスペクトル成分を取得し、フィルタリング済のスペクトル成分に逆1D変換を実行してフィルタリングされたピクセルを取得し、フィルタリングされたピクセルに基づいて、フィルタリング済の再構築ブロックを生成する、ように構成される。本開示は、再構築フレームからの再構築ブロックのローカルおよび/または非ローカルフィルタリングを実行する、非可逆ビデオコーデック用のループ内フィルタについて述べる。一例によれば、再構築されたフレームは、小さくてオーバーラップしない長方形マクロブロック(CUブロック)のセットに分割される。次のステップで、再構築されたマクロブロック(再構築されたCUブロック)のそれぞれが、他の再構築マクロブロックからは独立して、特に、他の再構築マクロブロックのフィルタリングからは独立して、周波数ドメインでフィルタリングされる。フィルタは、変換後および再構築後にも適用でき、フィルタリング結果は出力用、ならびに空間予測および時間予測用の両方に使用される。
【0085】
処理の第1のステップでは、再構築ブロック内の全ピクセルを互いに独立して処理することができる。ピクセルr(0)の処理については、隣接するピクセルが使用される。例えば、
図3Aに示すように、ピクセルr(1)~r(7)が使用され、ピクセルr(0)~r(7)は1つの処理グループを形成する。
【0086】
図3Aまたは
図3Bは、一実施形態に係るフィルタで実施されるフィルタリング処理の態様を例示する概略
図300(または300’)を示す。ステップ302(または302’)において、再構築ブロックからの現在のピクセルおよびそれに隣接ピクセルが、予め定義されたスキャンテンプレートに従って、線形バッファ116、216、1016、1116などの線形バッファにロードされる。
【0087】
ステップ304(または304’)において、線形バッファ内のピクセルr(0)、およびそれに隣接するピクセルr(1)~r(7)に対して1D変換が行われ、スペクトル成分Rが得られる。
【0088】
【0089】
一例として、1D変換はアダマール変換であってよい。
【0090】
ステップ306(または306’)において、各スペクトル成分R(i)に、対応する利得係数G(i,σ)を掛ける乗算(本明細書では「*」で表す)に基づいて、周波数ドメイン内でフィルタリングが行われ、フィルタリングされたスペクトル成分F(i):F(i)=R(i)*G(i,σ)が得られる。
【0091】
全スペクトル成分に対する利得係数のセットは、フィルタの周波数インパルス応答である。
【0092】
上述したように、一例では、利得係数G(i,σ)は対応するスペクトル成分R(i)、およびσなどのフィルタリングパラメータに依存する。
【0093】
別の例では、利得係数G(i,σ)は、1つ以上のフィルタリングパラメータ、および対応するスペクトル成分の1つ以上に依存する。他の例では、各利得係数は、1つ以上のフィルタリングパラメータ、および対応するスペクトル成分、ならびにスペクトル成分の左側および右側の隣接するスペクトル成分に依存し得る。各利得係数G(i,σ)を再構築ブロックのスペクトル成分およびフィルタリングパラメータの関数とすると、利得係数G(i,σ)は、一例として以下の式で表すことができる。
【0094】
【0095】
ここで(i)はスペクトル成分のインデックスであり、R(i)は(i)インデックスに対応するスペクトル成分であり、G(i,σ)はR(i)に対応する利得係数であり、σはフィルタリングパラメータであり、mはスペクトル成分の数と等しい正規化定数である。例えば、mは、1D変換の長さに対応する。mの例示的な値かつ限界値は4である。しかしながら、本開示は任意のサイズの1D変換に適用可能である。異なるスペクトル成分は、同じ利得係数を有し得る、あるいは異なる利得係数を有し得る。
【0096】
フィルタリングパラメータとしてのパラメータσは、例えば、以下の式を用いて、エンコーダ側およびデコーダ側でコーデック量子化パラメータ(QP)から導出され得る。
【0097】
【0098】
ここでk、n、およびsは、例えば、値がk=2.64、n=0.1296、s=11の定数である。これらの値は単なる例であり、一部の実施では異なっている場合がある。
【0099】
異なるスペクトル成分は、同じフィルタリングパラメータを有し得る、あるいは異なるフィルタリングパラメータを有し得る。
【0100】
図3Aに示されるような方法300(または
図3Bの方法300’)によれば、各周波数に対する利得係数は、再構築ピクセルのスペクトル成分から導出される。したがって、方法300(または300’)は、フィルタリングパラメータの伝送を必要とせず、追加のシグナリングなしで任意の再構築ブロックに適用することができる。
【0101】
スペクトル利得係数は1未満であるため、以下の式に従って、短いルックアップテーブル(LUT)の読みに基づいてフィルタリングを実施することができる。
【0102】
【0103】
ここで、
【数5】
であり、(i)はスペクトル成分のインデックスであり、R(i)はインデックス(i)に対応するスペクトル成分であり、σはフィルタリングパラメータであり、THRは閾値であり、mはスペクトル成分の数と等しい正規化定数である。F(i,σ)は、(i)番目のフィルタリング済スペクトル成分であり、パラメータσでパラメータ化されたフィルタでフィルタリングされたことを表す。
【0104】
一例として、THRは、以下の式から計算され得、ここでCは0.9など1に近い値である。
【0105】
【0106】
周波数ドメインでのフィルタリング後に、ステップ308で、フィルタリング済のスペクトル成分Fに対して逆1D変換が実行され、フィルタリングされたピクセルfが得られる。
【0107】
【0108】
ステップ310において、逆1D変換の結果が、フィルタリング済再構築ピクセルの線形バッファに配置される。
【0109】
ステップ312において(
図3Aまたは
図3Bには図示されていない)、以前の処理ステップで推定されたフィルタリング済のピクセルに基づいて、フィルタリング済の再構築ブロックが生成される。
【0110】
図3Aに実施形態として示されるように、フィルタリングするステップ306の後で、フィルタリングされたピクセルf(0)が、予め定義されたスキャンテンプレートに従って、その元の位置に配置される。他のフィルタリング済のサンプルf(1)~f(7)は使用されない。別の実施形態において、
図3Aまたは
図3Bのステップ302(または302’)で使用される予め定義されたスキャンテンプレートに従って、フィルタリング済サンプルの線形バッファから、1つ以上のフィルタリング済ピクセル、例えばすべてのフィルタリング済ピクセルが蓄積バッファに追加される。蓄積バッファは、フィルタリングするステップの前にゼロに初期化される必要がある。最後の正規化ステップにおいて、蓄積バッファ内に蓄積された値として最後のフィルタリング済ピクセルが得られ、これは蓄積バッファの現在の位置に追加されたピクセル数、言い換えると、以前の処理ステップで蓄積バッファの現在の位置に追加されたピクセル値の数で割って得られたものである。次に、最後のフィルタリング済ピクセルに基づいて、フィルタリング済の再構築ブロックが生成される。
【0111】
1Dアダマール変換が使用され、予め定義されたスキャンテンプレートに従って、フィルタリング済のピクセルがその元の位置に配置される場合、以下の疑似コードが方法300のフィルタリング処理を示す。
//再構築ピクセルのスキャン
const int x0=pIn[p0];
const int x1=pIn[p1];
const int x2=pIn[p2];
const int x3=pIn[p3]; //p0-p3スキャンパターンを定義
//1D順方向アダマール変換
const int y0=x0+x2;
const int y1=x1+x3;
const int y2=x0-x2;
const int y3=x1-x3;
const int t0=y0+y1;
const int t1=y0-y1;
const int t2=y2+y3;
const int t3=y2-y3;
//周波数ドメインフィルタリング
const int z0=pTbl[t0];
const int z1=pTbl[t1];
const int z2=pTbl[t2];
const int z3=pTbl[t3];
//逆方向アダマール変換
const int iy0=z0+z2;
const int iy1=z1+z3;
const int iy2=z0-z2;
const int iy3=z1-z3;
//フィルタ済ピクセルの出力
pOut[p0_out]=iy0+iy1;
【0112】
1Dアダマール変換が使用され、フィルタリング済サンプルの線形バッファから2つ以上のフィルタリング済ピクセルが蓄積バッファに追加される場合、以下の疑似コードがこのシナリオのフィルタリング処理を示す。
//再構築ピクセルのスキャン
const int x0=pIn[p0];
const int x1=pIn[p1];
const int x2=pIn[p2];
const int x3=pIn[p3]; //p0-p3スキャンパターンを定義
//1D順方向アダマール変換
const int y0=x0+x2;
const int y1=x1+x3;
const int y2=x0-x2;
const int y3=x1-x3;
const int t0=y0+y1;
const int t1=y0-y1;
const int t2=y2+y3;
const int t3=y2-y3;
//周波数ドメインフィルタリング
const int z0=pTbl[t0];
const int z1=pTbl[t1];
const int z2=pTbl[t2];
const int z3=pTbl[t3];
//逆方向アダマール変換
const int iy0=z0+z2;
const int iy1=z1+z3;
const int iy2=z0-z2;
const int iy3=z1-z3;
//フィルタリング済ピクセルの蓄積
pOut[p0]+=iy0+iy1 //p0-p3スキャンパターンを定義
pOut[p1]+=iy0-iy1
pOut[p2]+=iy2+iy3
pOut[p3]+=iy2-iy3
【0113】
代替実施形態として、蓄積バッファは、ブロックに追加されるべきピクセル値の最大数を掛けた、フィルタリングされていないピクセル値で初期化される必要がある。ブロックに追加されるべきピクセル値の最大数は、スキャンテンプレートに基づいて定義される。実際のスキャンテンプレートは、各位置に追加されたピクセル値の数を定義する。これに基づき、蓄積バッファ初期化中に、ブロック内の全位置から最大数を選択して使用することができる。次に、各蓄積ステップ中に、フィルタリングされていないピクセル値が、対応するフィルタリング済の値から引かれて蓄積バッファに追加される。
//フィルタリング済ピクセルの蓄積
pOut[p0]+=iy0+iy1-x0
pOut[p1]+=iy0-iy1-x1
pOut[p2]+=iy2+iy3-x2
pOut[p3]+=iy2-iy3-x3
【0114】
この実施形態は、現在の位置に追加されたピクセル数を記憶することを回避し、かつ追加されたピクセル値の最大数が2、4、8などの2の累乗であれば、最後の正規化手順および蓄積バッファ初期化手順で掛け算および割り算をシフト演算に置き換えることができる。
【0115】
再構築ブロック内部の各ピクセルに対し、ステップ302および310における再構築ブロック内部のフィルタリングピクセルの位置に基づいて、スキャンテンプレートが選択される。スキャンテンプレートは、全ピクセルが再構築されたCU内にあり、処理しているピクセルの近くに置かれる(配置される)ことを保証するように選択される。テンプレート内では任意のスキャン順序を使用することができる。例えば、予め定義されたスキャンテンプレートは、再構築ブロック内にある現在のピクセルの位置に対する、空間オフセットまたはラスタオフセットのセットとして定義され、隣接ピクセルを指すオフセットは再構築ブロック内にある。
【0116】
図3Bに示す方法300’の関連する部分については、
図3Aに示されている方法300を参照してよいことに留意されたい。
【0117】
図4は、正方形の再構築ブロック(正方形のCU再構築ブロック)内の、様々なピクセル位置に対するテンプレートを示す。この図によれば、境界ピクセルは、4点変換に基づいてフィルタリングでき、中央のピクセルは8点変換に基づいてフィルタリングすることができる。
【0118】
1辺のサイズが他辺のサイズより大きい長方形の再構築ブロックの場合、スキャンは長辺に沿って行われねばならない。例えば、横長の長方形ブロックの場合、
(0,-3),(0,-2),(0,-1),(0,0),(0,1),(0,2),(0,3),(0,4)
というスキャン順序が使用でき、ここでフィルタリング再構築ブロック内のフィルタリングピクセルの位置に対して、それぞれの対(y,x)におけるxは水平オフセット、yは垂直オフセットである。
【0119】
説明したフィルタは、
・非ゼロの残差信号を伴う再構築ブロックに対して
・小さい再構築ブロック(最小サイズが閾値未満)など、ブロックサイズに応じて
・再構築ブロックのアスペクト比に応じて
・再構築ブロックの予測モード(イントラまたはインター)に応じて、または
・説明した上記の条件の任意の組み合わせに対して
という条件に応じて、選択的に適用することができる。
【0120】
フィルタパラメータシグマおよびスキャンパターンは、上に挙げた条件によって異なる場合がある。
【0121】
図4Bは、例示的なスキャンテンプレート(0,0),(0,1),(1,0),(1,1)に対する、現在ブロック内部の1つのピクセルを考慮した、同等のフィルタ形状を示す。現在のピクセルをフィルタリングするために、3x3ピクセルの方形領域が使用される(現在のピクセルは、3x3の正方形の中央に濃い灰色で示されている)。フィルタリングされたピクセルは、4つの2x2の処理グループから、変換ドメインのフィルタリング済サンプルを組み合わせることによって得られ、言い換えると、フィルタリングされたピクセルは、4つの処理グループから変換ドメインのフィルタリング済サンプルを組み合わせることによって得られ、各処理グループは形状/サイズが2x2になっている。現在のピクセルがブロック境界(例えば、上境界)に配置された場合は、左上および右上の2x2の処理グループは使用不可能になり、2つの2x2の処理グループ(左下および右下)のみが、フィルタリングに使用できることが理解できよう。さらに、現在のピクセルがブロックの角(例えば、左上の角)に配置された場合は、フィルタリングに使用できるのは1つの2x2の処理グループ(右下)のみである。
【0122】
ブロックのエッジ付近のフィルタリングの品質を向上させ、同じ2x2のグループを境界ピクセルとコーナーピクセルとに使用することによって処理を統一するために、現在ブロックを追加のサンプルでパディングすることができる。
図7は、左側および上側のパディングの例を示す。具体的には、
図7は、現在ブロックの左上のコーナーピクセルを強調表示した、4x8ピクセル(サンプル)を含む現在ブロックを示す。ここでは、参照は通常は現在ブロックに対してなされることに留意されたい。しかしながら、フィルタをビデオの符号化および/または復号に適用した場合は、現在ブロックは、特に現在の再構築ブロックとして参照される。これは、前述の
図1および
図2を参照してすでに簡単に説明したように、フィルタリングは通常、符号化中および/または再構築後の復号中に適用されるためである。
図7は、現在ブロックの上側、および現在ブロックの左側がパディングされた、パディング済のサンプルをさらに示す。パディング済のサンプルにより、現在ブロックの境界に配置されたピクセル(現在ブロックのサンプル)にフィルタ(
図7に破線で示されている)を適用することを容易にする。現在ブロックの境界に配置されたピクセルは、現在ブロックの外部ピクセル、あるいは同じ(現在)ブロックに属さない1つ以上の隣接ピクセルを有するピクセル、または(例えば、ピクセル境界に配置されているために)隣接ピクセルをまったく有さないピクセルとみなすことができる。
【0123】
パディングサンプルは、現在ブロックに近接するブロック(例えば、隣接ブロック)などのすでに再構築されたブロックから取ることができる。処理グループの形状(例えば、2x2または3x3)に応じて、1つ以上のパディングラインを使用できることに留意されたい。例えば、2x2の処理グループの場合、各辺に1行のパディングが使用される。3x3の処理グループの場合、各辺に2行のパディングが使用される。
【0124】
パディングサンプルは、パディングに使用されたものであることが理解されよう。パディングされた後は、これらはパディング済サンプルになる。
【0125】
ブロック内の全ピクセルに対するフィルタリング処理をさらに統一するために(例えば、4つの2x2の処理グループが現在ブロックの全ピクセルのフィルタリングに使用される)、
図8に示されるように、左上パディングに加えて、現在ブロックは右下パディングによってさらに拡張することができる。フィルタリングの統一は、コーナーピクセルおよび/または境界ピクセルに対する特殊な処理事例を排除することによって実施が簡単になるため有益である。
【0126】
図8は、
図7の現在ブロックと同様の4x8ピクセルの現在ブロックを示す。
図7に加えて
図8は、右下のコーナーピクセルを含む、現在ブロックの下側にあり、かつ現在ブロックの右側にある、パディングされたサンプルを示す。
図12は
図8に基づき、さらに明確化されている。右下のコーナーピクセルを中心とした破線の正方形1260は、左上の角のピクセルに適用されたフィルタと同様に、3x3のフィルタによるフィルタリングを示す。図示のように、パディングされたサンプルはフィルタリングに使用され、例えば、フィルタリングされた右下サンプルおよび/または左上サンプル1250の導出に使用される。ここでは現在ブロック1200はパディングされたサンプル1210および1220によって、その4辺のすべてが拡張される。パディングされたサンプル1210および1220は、現在ブロック1200の外側境界にあるサンプルであり、特に、現在ブロックの外側境界にある1行のサンプルである。上述したように、パディングされたサンプルは、2行以上のサンプルで、現在ブロックの4辺のそれぞれ(上、下、右、左)を拡張し得る。
【0127】
パディングサンプルは、近くにあるすでに再構築されたブロックの隣接サンプルから取られることが好ましい。最先端のビデオコーデックでは、このようなすでに再構築されたブロックは、ブロック再構築順序に応じて、現在ブロックの左側または上側、あるいは右側または下側のいずれかに配置することができる。近接サンプルから得たより多くの情報を用いて、フィルタリング品質を向上させ、ブロック間の移行をより滑らかにする。本開示は、いかなる特定のブロックスキャン順序にも限定されないことに留意されたい。一般に、任意の使用可能な隣接ブロックからの隣接サンプルが使用されてよい。可用性はブロックスキャン順序によって与えられ得る。具体的には、ブロックスキャン順序は、ブロックの処理(例えば、再構築)順序に対応し得る。言い換えると、ブロックスキャン順序は、現在ブロックがフィルタリングされる時点で、どのブロックが以前に再構築されていたか(使用可能か)を定義し得る。
【0128】
近接ブロックまたは以前に再構築されたブロックから再構築サンプルを取り出すには、ハードウェアまたはソフトウェアを実施するための追加のメモリロードを必要とする場合がある。追加のメモリを最小化または排除するには、現在ブロックのイントラ予測を意図したサンプルを使用すると有益であり、これは一般には、現在ブロックの境界近くにある隣接ブロックからの、1つ、2つ、またはそれ以上の行および列から取られる。このようなサンプルは、イントラ予測用に簡単にアクセスできるように通常は高速メモリ(「線形」バッファとしても知られる)に格納され、イントラ予測の参照サンプルと称される。
【0129】
幾つかの実施では、イントラ予測を実行する前に参照サンプル(イントラ参照サンプル)が、平滑化、鮮鋭化、デリンギング、または双方向フィルタリングなどの予測前の前処理(例えば、フィルタリング)をされることにさらに留意されたい。この場合は、現在ブロックのパディングに前処理されたサンプルを使用すれば有益であろう。
【0130】
近接ブロック再構築の順序、あるいはピクチャ境界/スライス境界/タイル境界またはタイルグループ境界に対する現在ブロックの位置が原因で、パディングされた領域内の幾つかのサンプルが使用不可能になる場合は、現在ブロックの拡張境界ピクセルから
図8および
図12に示すパディングされた領域まで必要なサンプルをパディングすることができる。具体的には、
図12において、下境界ピクセルおよび右境界ピクセルをパディングされた領域まで拡張することによって、パディングされたサンプル1220が得られる。これは例えば、下隣接ブロックおよび右隣接ブロックが現在ブロック1200に使用できない状況において(例えば、まだ再構築されていない、現在ブロックとは別のタイルに属している、あるいはピクチャ境界に配置されている)有益な場合がある。パディングされたサンプル1210は、隣接ブロックから取得され得る。
【0131】
言い換えると、パディング処理は隣接サンプルの可用性を確認することを含む。隣接サンプルが使用可能であれば、サンプル(使用可能な隣接サンプル)がパディングに使用される。そうでない場合は、現在ブロックのサンプルがパディングに使用される。例えば、領域内の所与のピクセル位置がパディングされる場合、そのピクセル位置は、現在ブロックからのサンプルでパディングされてよく、サンプルは(現在ブロックのサンプルの中で)、所与のピクセル位置の最も近くに配置される。
【0132】
隣接サンプル可用性確認のロジックは、イントラ参照サンプル導出処理と同じであるといえる。項6.4.1(隣接ブロック可用性確認のための導出処理)を含む、イントラ参照サンプル(p[x][y])導出処理の例は以下の通りである。
sps_suco_flagが1のときは、以下が適用される。
再構築後フィルタリング処理の後、および/またはループ内フィルタ処理の前に構築されたサンプルであるnCbW*3+nCbH*4+2隣接サンプルp[x][y]は、x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH-1,y=-1、x=nCbW,y=-1..nCbH+nCbW-1およびx=-nCbH..-1,y=-1であり、以下の通りに導出される。
- 隣接する位置(xNbCmp,yNbCmp)は、以下の通りに指定される。
(xNbCmp,yNbCmp)=(xCbCmp+x,yCbCmp+y) (8-1)
- 現在のルマ位置(xCbY,yCbY)および隣接するルマ位置(xNbY,yNbY)は、以下の通りに導出される。
(xCbY,yCbY)=(cIdx==0)?(xCbCmp,yCbCmp):(xCbCmp*SubWidthC,yCbCmp*SubHeightC) (8-2)
(xNbY,yNbY)=(cIdx==0)?(xNbCmp,yNbCmp):(xNbCmp*SubWidthC,yNbCmp*SubHeightC) (8-3)
- 項6.4.1で示す、z-スキャン順序のブロックに対する可用性導出処理が呼び出され、入力として現在のルマ位置(xCurr,yCurr)が、(xCbY,yCbY)および隣接するルマ位置(xNbY,yNbY)と等しくなるように設定され、出力はavailableNに割り当てられる。
- 各サンプルp[x][y]は以下の通りに導出される。
- 変数availableNが偽であれば、サンプルp[x][y]は「イントラ予測に使用不可能」とマークされ、以下が適用される。
- そうでない場合は(変数availableNが真であれば)、サンプルp[x][y]は「イントラ予測に使用可能」とマークされ、位置(xNbCmp,yNbCmp)にあるサンプルがp[x][y]に割り当てられる。
- x=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1、y=-1およびx=nCbW、y=-1..nCbH+nCbW-1およびx=-nCbH..-1、y=-1の少なくとも1つのサンプルp[x][y]が「イントラ予測に使用不可能」とマークされたときは、項8.4.4.2のイントラサンプル予測のための参照サンプル置換処理が呼び出され、x=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1,y=-1およびx=nCbW,y=-1..nCbH+nCbW-1およびx=-nCbH..-1、y=-1、nCbW、nCbHのサンプルp[x][y]と、cIdxとを入力とし、かつx=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1,y=-1およびx=nCbW,y=-1..nCbH+nCbW-1およびx=-nCbH..-1、y=-1の修正されたサンプルp[x][y]を出力とする。
【0133】
あるいは、sps_suco_flagが0のときは、以下が適用される。
ループ内フィルタリング処理前の構築サンプルであるnCbW*2+nCbH*2+1の隣接サンプルp[x][y]は、x=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1、y=-1であり、以下の通りに導出される。
- 隣接する位置(xNbCmp,yNbCmp)は、以下の通りに指定される。
(xNbCmp,yNbCmp)=(xCbCmp+x,yCbCmp+y) (8-4)
- 現在のルマ位置(xCbY,yCbY)および隣接するルマ位置(xNbY,yNbY)は、以下の通りに導出される。
(xCbY,yCbY)=(cIdx==0)?(xCbCmp,yCbCmp):(xCbCmp*SubWidthC,yCbCmp*SubHeightC) (8-5)
(xNbY,yNbY)=(cIdx==0)?(xNbCmp,yNbCmp):(xNbCmp*SubWidthC,yNbCmp*SubHeightC) (8-6)
- 項6.4.1で示す、z-スキャン順序のブロックに対する可用性導出処理が呼び出され、入力として現在のルマ位置(xCurr,yCurr)が、(xCbY,yCbY)および隣接するルマ位置(xNbY,yNbY)と等しくなるように設定され、出力はavailableNに割り当てられる。
- 各サンプルp[x][y]は以下の通りに導出される。
- 変数availableNが偽であれば、サンプルp[x][y]は「イントラ予測に使用不可能」とマークされ、以下が適用される。
- そうでない場合は(変数availableNが真であれば)、サンプルp[x][y]は「イントラ予測に使用可能」とマークされ、位置(xNbCmp,yNbCmp)にあるサンプルがp[x][y]に割り当てられる。
- x=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1、y=-1の少なくとも1つのサンプルp[x][y]が「イントラ予測に使用不可能」とマークされると、項8.4.4.2のイントラサンプル予測のための参照サンプル置換処理が呼び出され、x=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1、y=-1、nCbW、nCbHのサンプルp[x][y]と、cIdxとを入力とし、x=-1、y=-1..nCbH+nCbw-1およびx=0..nCbW+nCbH-1、y=-1の修正されたサンプルp[x][y]を出力とする。
【0134】
項6.4.1 隣接ブロック可用性の導出処理
この処理に対する入力は、
- 現在ピクチャの左上ルマサンプルに対する、現在ブロックの左上サンプルのルマ位置(xCurr,yCurr)
- 現在ピクチャの左上ルマサンプルに対する、隣接ブロックにカバーされたルマ位置(xNbY,yNbY)
である。
【0135】
このプロセスの出力は位置(xNbY,yNbY)をカバーする隣接ブロックの可用性であり、availableNで表される。
隣接ブロック可用性availableNは、以下の通りに導出される。
- 隣接ブロックが現在ブロックとは異なるタイルに含まれている場合、availableNは偽に設定される。
- 隣接ブロックがコーディング順で現在ブロックより前にある場合、availableNは偽に設定される。
【0136】
上記の例に見られるように、項6.4.1「隣接ブロック可用性の導出処理」は、イントラ参照サンプル導出に使用され得る。パディング処理中は、同じまたは類似のプロセスを可用性確認とすることができる。これは、2つのモジュール間でロジックを再使用することによって実装コストを有利に節約する。以下はパディング処理の例示的なロジックであり、次のように指定される。
【0137】
この処理に対する入力は、
- 現在ピクチャの左上サンプルに対する、現在のルマブロックの左上サンプルを指定する位置(xCb,yCb)
- 現在のルマコーディングブロックの幅および高さを指定する、2つの変数nCbWおよびnCbH
- 現在ブロックの再構築されたルマサンプルを指定する、配列recSamples
である。
【0138】
x=-1..nCbW、y=-1..nCbHの、現在ブロックのパディングされた再構築ルマサンプルrecSamplesPad[x][y]の出力配列は以下の通りに導出され、
0≦x≦nCbW-1および0≦y≦nCbH-1のとき、recSamplesPad[x][y]=recSamples[x][y]が適用される。
【0139】
あるいは、
- 項6.4.1に示す、z-スキャン順序のブロックに対する可用性導出処理が呼び出され、入力として現在のルマ位置(xCurr,yCurr)を(xCb,yCb)に設定し、隣接するルマ位置(xNbY,yNbY)を(xCb+x,yCb+y)に設定し、出力はavailableNに割り当てられる。
- 変数dxは0に設定され、変数dyは0に設定され、
- x==-1でavailableNが偽のときはdx=1であり、
- x==nCbWでavailableNが偽のときはdx=-1であり、
- y==-1でavailableNが偽のときはdy=1であり、
- y==nCbHでavailableNが偽のときはdy=-1であり、
recSamplesPad[x][y]=recSamples[x+dx][y+dy]となる。
【0140】
x<0またはx>=nCbWまたはy<0またはy>=nCbHの位置にあるサンプルが、隣接ブロックに属し、可用性導出処理が、ブロックコーディング順序などに基づいて現在ブロックに隣接ブロックが使用可能かどうかを定義する場合、現在ブロックおよび隣接ブロックは同じスライス、タイル、タイルグループに属し、隣接ブロックの位置はピクチャ境界を越えている。「availableN」は、対応する隣接ブロックの可用性を示す。変数dxおよびdyは、パディング領域内の隣接サンプルが使用不可能(availableN=偽)なときに、パディング領域内のピクセル位置のパディングに使用される、現在ブロックからのサンプルを指定するために使用される。
【0141】
例えば、x==-1のときは現在ブロックの左側がパディングされる。左側に対するavailableNが偽であれば、dxは1(dx=1)に設定される。次に、xの値が-1のrecSamplesPad[-1][y]、すなわち現在ブロックの左側のパディング領域が現在ブロックからのサンプル、つまりrecSamples[0][y+dy]を割り当てられ、これはすなわち1行目の垂線にある現在ブロックからのサンプルであり、すなわち現在ブロックの左境界上にある。
【0142】
同様にx==nCbWでdx=-1のときは、現在ブロックはその右側が拡張される。具体的には、nCbW行目(現在ブロックの右側に隣接する)が、(nCbW-1)行目からのサンプルでパディングされ、これは現在ブロックの最終行であり、現在ブロックの右境界からのサンプルを含む。
【0143】
y==-1でdy=1のときは、現在ブロックはその上側が拡張される。具体的には、(-1)行目(現在ブロックの上側に隣接する)が、0行目からのサンプルでパディングされ、これは現在ブロックの1行目であり、現在ブロックの上境界からのサンプルを含む。
【0144】
y==nCbHでdy=-1のときは、現在ブロックはその下側が拡張される。具体的には、(nCbH)行目(現在ブロックの下側に隣接する)が、(nCbH-1)行目からのサンプルでパディングされ、これは現在ブロックの最終行であり、現在ブロックの下境界からのサンプルを含む。
【0145】
近接ブロックからの特定のサンプルが使用可能なとき(availableN=真)は、変数dxおよびdxは初期化された通りに0のままとなる。また、式recSamplesPad[x][y]=recSamples[x+dx][y+dy]を使用することによって、x<0およびx>=nCbWおよびy<0およびy>=nCbHの場合、近接ブロックのサンプルが取得される。
【0146】
言い換えると、拡張された(再構築された)ブロックを取得することは、隣接する再構築ブロックが使用可能であれば、現在の再構築ブロックのそれぞれの側(左、右、上、下)に、前記の側(左、右、上、下)側にある現在の再構築ブロックに近接した、隣接する再構築ブロックからの隣接する再構築サンプルを含むように、あるいはそうでない場合は、現在の再構築ブロックから最も近いサンプルを含むように、現在の(再構築された)ブロックを拡張することを含む。
【0147】
本開示は、上述した詳細な例示的な実施に限定されないことに留意されたい。具体的には、例示的な変数および条件は、詳細な一例としてのみ役目を果たす。例えば、確認は、他の付加的な、または代替的な条件に基づいてよい。例えば、確認は、他の付加的な、または代替的な変数およびパラメータに基づいてよい。さらに、本開示は、コーデックの一部の特定のパラメータに適用され得る任意の方法で、可用性の導出を実施し得る。
【0148】
例えば、ブロックコーディング順序に基づいて、対応する隣接ブロックが現在ブロックに使用可能かどうかが判定される。別の例では、現在ブロックおよび隣接ブロックが同じスライス、タイル、タイルグループに属している場合は、対応する隣接ブロックは現在ブロックに使用可能である。別の例では、隣接ブロックの位置がピクチャ境界を越えている場合は、対応する隣接ブロックは現在ブロックに使用できない。
【0149】
ブロックコーディング順序は、ブロック符号化順序および/またはブロック復号順序とみなしてよく、符号化および復号がいずれもブロックの再構築に適合するため、これはブロック再構築順序とみなしてよい。上述したように、ブロック再構築順序は、ブロックスキャン順序、すなわちピクチャのブロックが処理(符号化、復号、再構築)のためにスキャンされる順序に対応する。
【0150】
本開示の幾つかの実施では、パディング処理のための隣接サンプルの可用性確認は、インターブロックおよびイントラブロックのフィルタリングによって異なる場合がある。インターブロックの場合、使用可能なサンプルがイントラ予測ブロックに属するかインター予測ブロックに属するかをさらに確認する場合がある。サンプルがインター予測ブロックに属する場合はパディングに使用でき、そうでない場合はパディングに使用することができない。イントラブロックとインターブロックとが別の動作メモリを使用して別のパイプラインで再構築されれば、一部のハードウェア実装にとって有益であろう。インターブロック再構築後フィルタリング中にインターブロックから来た隣接サンプルのみを使用することによって、異なるパイプライン間の依存関係を回避でき、処理パイプライン全体のロジックおよび高速化を簡単にする。
【0151】
イントラ予測を実行するために、最新のデコーダは通常、イントラ予測のソースとして使用されるイントラ参照サンプル導出ユニット(または処理)を備える。イントラ参照サンプル導出ユニット(または処理)は、(現在ブロックに近接した、または、例えば複数の参照ライン予測技術におけるようにさらに遠くにある)隣接サンプルの可用性の確認を実行するロジックを含み得る。サンプルが使用可能であれば、その後、参照サンプルの中に含められる。そうでない場合は、隣接する使用可能なサンプルに置き換えられる。幾つかの好適な実施では、フィルタリングのためのパディング処理は、
図9に図示されているように、イントラ参照サンプル導出ユニット(処理)の結果を再使用し得る。これにより、イントラ予測およびフィルタパディングの両方に同じ導出ロジックを使用でき、実装コストを削減することができる。
【0152】
図9は、本開示の一実施形態を示すブロック図である。特に、
図9はイントラ予測ユニット(モジュール)930を示す。イントラ予測ユニット930は、例えば、
図1の154、
図2の254、
図10の1054、および/または
図11の1154のように実施され得る。イントラ予測ユニット930は、参照サンプル導出ユニット(モジュール)910と、予測導出ユニット920とを備える。特に、以前に再構築されたブロック901は、参照サンプル導出ユニット910に入れられる。このユニットは、参照サンプル935を導出/決定するように構成される。参照サンプル935は、予測導出ユニット920によって、現在ブロックの予測を導出するのに使用され得るサンプルである。予測導出ユニット920は、次に予測ブロック925を出力する。「以前に再構築されたブロック」901という用語は、ここでは現在ブロックの予測に使用され、かつ使用可能なブロック(通常は現在ブロックの隣接ブロック)を指すことに留意されたい。より詳細には、以前に再構築されたブロックは、現在ブロックの再構築の前(かつ予測の前)に再構築されている。
【0153】
この例示的な実施形態では、予測導出ユニット920用に導出された参照サンプル935は再使用される、すなわちパディングユニット940に渡される。パディングユニット940に対する別の入力は、(現在の)再構築ブロック903である。現在の再構築ブロックは、例えば、イントラ予測920によって再構築された現在ブロックのサンプルを含む。パディングユニットは、参照サンプル935を含むように現在の再構築ブロック903を拡張する。拡張された再構築ブロック945は、次に、フィルタ処理ユニット/モジュール950によってフィルタリングされる。フィルタリング処理950の出力は、フィルタリング済の再構築ブロック955である。
【0154】
フィルタリング処理モジュール950およびパディングユニット940は、両方ともフィルタユニット/モジュール960の一部とみなしてよい。本開示では、フィルタユニット/モジュール960はフィルタ120、220、1018、1118に対応し得、かつフィルタ120、220、1018、1118の構造は上述した例示的な実施を含み、かつこれに限定されない。
【0155】
以下は、項6.4.1(「隣接ブロック可用性の導出処理」の可用性確認)および項8.4.4.2(使用不可能なサンプルに対する「参照サンプル置換処理」)を含む、イントラ参照サンプル(p[x][y])導出処理の一例であり、下記の通りである。
【0156】
項8.4.4.2 イントラサンプル予測のための参照サンプル置換処理
……
sps_suco_flagが1のときは、以下が適用される。
再構築後フィルタリング処理の後、および/またはループ内フィルタ処理の前に構築されたサンプルであるnCbW*3+nCbH*4+2隣接サンプルp[x][y]は、x=-1,y=-1..nCbH+nCbW-1、x=0..nCbW+nCbH-1,y=-1、x=nCbW,y=-1..nCbH+nCbW-1およびx=-nCbH..-1,y=-1であり、以下の通りに導出される。
- 隣接する位置(xNbCmp,yNbCmp)は、以下の通りに指定される。
(xNbCmp,yNbCmp)=(xCbCmp+x,yCbCmp+y) (8-7)
- 現在のルマ位置(xCbY,yCbY)および隣接するルマ位置(xNbY,yNbY)は、以下の通りに導出される。
(xCbY,yCbY)=(cIdx==0)?(xCbCmp,yCbCmp):(xCbCmp*SubWidthC,yCbCmp*SubHeightC) (8-8)
(xNbY,yNbY)=(cIdx==0)?(xNbCmp,yNbCmp):(xNbCmp*SubWidthC,yNbCmp*SubHeightC) (8-9)
- 項6.4.1で示す、z-スキャン順序のブロックに対する可用性導出処理が呼び出され、入力として現在のルマ位置(xCurr,yCurr)が、(xCbY,yCbY)および隣接するルマ位置(xNbY,yNbY)と等しくなるように設定され、出力はavailableNに割り当てられる。
- 各サンプルp[x][y]は以下の通りに導出される。
- 変数availableNが偽であれば、サンプルp[x][y]は「イントラ予測に使用不可能」とマークされ、以下が適用される。
- そうでない場合は(変数availableNが真であれば)、サンプルp[x][y]は「イントラ予測に使用可能」とマークされ、位置(xNbCmp,yNbCmp)にあるサンプルがp[x][y]に割り当てられる。
- x=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1、y=-1およびx=nCbW、y=-1..nCbH+nCbW-1およびx=-nCbH..-1、y=-1の少なくとも1つのサンプルp[x][y]が「イントラ予測に使用不可能」とマークされたときは、項8.4.4.2のイントラサンプル予測のための参照サンプル置換処理が呼び出され、x=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1,y=-1およびx=nCbW,y=-1..nCbH+nCbW-1およびx=-nCbH..-1、y=-1、nCbW、nCbHのサンプルp[x][y]と、cIdxとを入力とし、かつx=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1,y=-1およびx=nCbW,y=-1..nCbH+nCbW-1およびx=-nCbH..-1、y=-1の修正されたサンプルp[x][y]を出力とする。
【0157】
あるいは、sps_suco_flagが0のときは、以下が適用される。
ループ内フィルタリング処理前の構築サンプルであるnCbW*2+nCbH*2+1の隣接サンプルp[x][y]は、x=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1、y=-1であり、以下の通りに導出される。
- 隣接する位置(xNbCmp,yNbCmp)は、以下の通りに指定される。
(xNbCmp,yNbCmp)=(xCbCmp+x,yCbCmp+y) (8-10)
- 現在のルマ位置(xCbY,yCbY)および隣接するルマ位置(xNbY,yNbY)は、以下の通りに導出される。
(xCbY,yCbY)=(cIdx==0)?(xCbCmp,yCbCmp):(xCbCmp*SubWidthC,yCbCmp*SubHeightC) (8-11)
(xNbY,yNbY)=(cIdx==0)?(xNbCmp,yNbCmp):(xNbCmp*SubWidthC,yNbCmp*SubHeightC) (8-12)
- 項6.4.1で示す、z-スキャン順序のブロックに対する可用性導出処理が呼び出され、入力として現在のルマ位置(xCurr,yCurr)が、(xCbY,yCbY)および隣接するルマ位置(xNbY,yNbY)と等しくなるように設定され、出力はavailableNに割り当てられる。
- 各サンプルp[x][y]は以下の通りに導出される。
- 変数availableNが偽であれば、サンプルp[x][y]は「イントラ予測に使用不可能」とマークされ、以下が適用される。
- そうでない場合は(変数availableNが真であれば)、サンプルp[x][y]は「イントラ予測に使用可能」とマークされ、位置(xNbCmp,yNbCmp)にあるサンプルがp[x][y]に割り当てられる。
- x=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1、y=-1の少なくとも1つのサンプルp[x][y]が「イントラ予測に使用不可能」とマークされると、項8.4.4.2のイントラサンプル予測のための参照サンプル置換処理が呼び出され、x=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1、y=-1、nCbW、nCbHのサンプルp[x][y]と、cIdxとを入力とし、x=-1、y=-1..nCbH+nCbw-1およびx=0..nCbW+nCbH-1、y=-1の修正されたサンプルp[x][y]を出力とする。
【0158】
項6.4.1 隣接ブロック可用性の導出処理
この処理に対する入力は、
- 現在ピクチャの左上ルマサンプルに対する、現在ブロックの左上サンプルのルマ位置(xCurr,yCurr)
- 現在ピクチャの左上ルマサンプルに対する、隣接ブロックにカバーされたルマ位置(xNbY,yNbY)
である。
【0159】
このプロセスの出力は位置(xNbY,yNbY)をカバーする隣接ブロックの可用性であり、availableNで表される。
隣接ブロック可用性availableNは、以下の通りに導出される。
- 隣接ブロックが現在ブロックとは異なるタイルに含まれている場合、availableNは偽に設定される。
- 隣接ブロックがコーディング順で現在ブロックより前にある場合、availableNは偽に設定される。
【0160】
項8.4.4.2 イントラサンプル予測のための参照サンプル置換処理
この処理に対する入力は、
- イントラサンプル予測のためにx=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1、y=-1となり、かつsps_suco_flagが1であればx=nCbW、y=-1..nCbH+nCbW-1およびx=-nCbH..-1、y=-1となる参照サンプルp[x][y]、
- 現在のコード化ブロックの幅および高さを指定する変数nCbWおよびnCbH、
- 現在のコード化ブロックの色成分を指定する変数cIdx、である。
【0161】
この処理の出力は、イントラサンプル予測のためにx=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1、y=-1となり、かつsps_suco_flagが1の場合はx=nCbW、y=-1..nCbH+nCbW-1およびx=-nCbH..-1、y=-1となる、修正された参照サンプルp[x][y]である。
【0162】
変数bitDepthは以下の通りに導出される。
- cIdxが0であれば、bitDepthはBitDepthYに設定される。
- そうでない場合は、bitDepthはBitDepthCに設定される。
【0163】
sps_suco_flagが1のときは、以下が適用される。
x=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1、y=-1およびx=nCbW、y=-1..nCbH+nCbW-1およびx=-nCbH..-1、y=-1のサンプルp[x][y]の値は、以下の通りに修正される。
- x=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1、y=-1およびx=nCbW、y=-1..nCbH+nCbW-1およびx=-nCbH..-1、y=-1のすべてのサンプルp[x][y]が「イントラ予測に使用不可能」とマークされた場合は、値1<<(bitDepth-1)が、すべてのサンプルp[x][y]の値と置き換わる。
- そうでない場合(サンプルp[x][y]のすべてではなく少なくとも1つが「イントラ予測に使用不可能」とマークされた場合)は、以下の順序のステップが適用される。
1.p[0][-1]が「イントラ予測に使用不可能」とマークされた場合、値1<<(bitDepth-1)が、x=-nCbH..nCbW+nCbH-1、y=-1のサンプルの値p[x][y]と置き換わる。
2.そうでない場合(p[0][-1]が「イントラ予測に使用可能」とマークされた場合)は、以下が適用される。
- 探索はx=nCbW、y=-1から開始してx=nCbW+nCbH-1、y=-1まで順に行われる。サンプルp[x][y]が「イントラ予測に使用不可能」とマークされると、探索は終了され、p[x][y]からp[nCbW+nCbH-1][y]までp[x-1][y]の値が割り当てられる。
- p[-1][-1]が「イントラ予測に使用不可能」とマークされた場合は、値p[0][-1]が、x=-nCbH..-1、y=-1のサンプルp[x][y]の値と置き換わる。
- そうでない場合(p[-1][-1]が「イントラ予測に使用可能」とマークされた場合)は、探索がx=-1、y=-1から開始してx=-nCbH、y=-1まで順に行われる。サンプルp[x][y]が「イントラ予測に使用不可能」とマークされると、探索は終了され、[x][y]からp[-nCbH][y]までp[x+1][y]の値が割り当てられる。
3.p[-1][0]が「イントラ予測に使用不可能」とマークされた場合は、以下が適用される。
- p[-1][-1]が「イントラ予測に使用不可能」とマークされた場合、値1<<(bitDepth-1)が、x=-1、y=-1..nCbH+nCbW-1のサンプルの値p[x][y]と置き換えられる。
- そうでない場合は、p[-1][-1]が、x=-1、y=-1..nCbH+nCbW-1のサンプルの値p[x][y]と置き換えられる。
4.そうでない場合(p[-1][0]が「イントラ予測に使用可能」とマークされた場合)は、探索がx=-1、y=0から開始してx=-1、y=nCbH+nCbW-1まで順に行われる。サンプルp[x][y]が「イントラ予測に使用不可能」とマークされると、探索は終了され、p[x][y]からp[x][nCbH+nCbW-1]までp[x][y-1]の値が割り当てられる。
5.p[nCbW][0]が「イントラ予測に使用不可能」とマークされた場合は、以下が適用される。
- p[nCbW][-1]が「イントラ予測に使用不可能」とマークされた場合、値1<<(bitDepth-1)が、x=nCbW、y=-1..nCbH+nCbW-1のサンプルの値p[x][y]と置き換えられる。
- そうでない場合は、p[nCbW][-1]が、x=nCbW、y=-1..nCbH+nCbW-1のサンプルの値p[x][y]と置き換えられる。
6.そうでない場合(p[nCbW][0]が「イントラ予測に使用可能」とマークされた場合)は、探索がx=nCbW、y=0から開始してx=nCbW、y=nCbH+nCbW-1まで順に行われる。サンプルp[x][y]が「イントラ予測に使用不可能」とマークされると、探索は終了され、p[x][y] からp[x][nCbH+nCbW-1]までp[x][y-1]の値が割り当てられる。
【0164】
あるいは、sps_suco_flagが0のときは、以下が適用される。
x=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1、y=-1のサンプルp[x][y]の値は、以下の通りに修正される。
- x=-1、y=-1..nCbH+nCbW-1およびx=0..nCbW+nCbH-1、y=-1のすべてのサンプルp[x][y]が「イントラ予測に使用不可能」とマークされた場合は、値1<<(bitDepth-1)が、すべてのサンプルp[x][y]の値と置き換えられる。
- そうでない場合(サンプルp[x][y]のすべてではなく少なくとも1つが「イントラ予測に使用不可能」とマークされた場合)は、以下の順序のステップが適用される。
1.p[0][-1]が「イントラ予測に使用不可能」とマークされた場合、値1<<(bitDepth-1)が、x=0..nCbW+nCbH-1、y=-1のサンプルの値p[x][y]と置き換えられる。
2.そうでない場合(p[0][-1]が「イントラ予測に使用可能」とマークされた場合)は、探索がx=nCbW、y=-1から開始してx=nCbW+nCbH-1、y=-1まで順に行われる。サンプルp[x][y]が「イントラ予測に使用不可能」とマークされると、探索は終了され、p[x][y]からp[nCbW+nCbH-1][y]までp[x-1][y]の値が割り当てられる。
3.p[-1][0]が「イントラ予測に使用不可能」とマークされると、以下が適用される。
- p[-1][-1]が「イントラ予測に使用不可能」とマークされた場合、値1<<(bitDepth-1)が、x=-1、y=-1..nCbH+nCbW-1のサンプルの値p[x][y]と置き換えられる。
- そうでない場合は、p[-1][-1]が、x=-1、y=-1..nCbH+nCbW-1のサンプルの値p[x][y]と置き換えられる。
4.そうでない場合は、探索がx=-1、y=0から開始してx=-1、y=nCbH+nCbW-1まで順に行われる。サンプルp[x][y]が「イントラ予測に使用不可能」とマークされると、探索は終了され、p[x][y]からp[x][nCbH+nCbW-1]までp[x][y-1]の値が割り当てられる。
【0165】
上記の例からわかるように、イントラ参照サンプル(p[x][y])導出処理は、かなり複雑な場合がある。したがって、現在のパディングを満たすためにこの処理の出力(p[x][y])を使用することで、2つのモジュール間でロジックを再使用することによって実装コストを有利に節約する。
【0166】
本開示では、以前に再構築された近接ブロックとは最も近くにあるブロックを意味し、例えば、現在ブロックと境界を共有していることに留意されたい。以前に再構築されたとは、現在ブロックを再構築する前に再構築されたことを意味する。
【0167】
図5は、一実施形態に係る、対応するループ内フィルタリング方法500のステップを例示する流れ図を示す。再構築されたブロックは複数のピクセルを含む。方法500は、予め定義されたスキャンテンプレートに従って、現在のピクセルおよびそれに隣接するピクセルを線形バッファにロードするステップ502と、線形バッファ内のピクセルに1D変換を実行してスペクトル成分を取得するステップ504と、各スペクトル成分に利得係数を掛けて、フィルタリングされたスペクトル成分を取得するステップ506であって、利得係数は対応するスペクトル成分およびフィルタリングパラメータに依存する、ステップと、フィルタリングされたスペクトル成分に逆1D変換を実行してフィルタリングされたピクセルを取得するステップ508と、以前の処理ステップで推定されたフィルタリングされたピクセルに基づいて、フィルタリング済の再構築ブロックを生成するステップ510とを含む。方法500は、
図1に示す符号化装置、および
図2に示す復号装置によって実行することができる。
図3Aまたは
図3Bの詳しい情報300、300’もまた、
図5に示す方法500に適用される。
【0168】
図13は、一実施形態に係る、対応する(ループ内または後)フィルタリング方法1300のステップを例示する流れ図を示す。再構築されたブロックは複数のピクセル(サンプル)を含む。方法1300は、現在の再構築ブロックからの少なくとも1つのサンプルに基づいて取得した1つ以上のパディングサンプルを含むように現在の再構築ブロックを拡張して、拡張された再構築ブロックを取得するステップ1310と、予め定義されたスキャンテンプレートに従って、拡張された再構築ブロックの現在のピクセル、および現在のピクセルのそれに隣接するピクセルを線形バッファにロードするステップ1320と、線形バッファ内のピクセルに1D変換を実行してスペクトル成分を取得するステップ1330と、ルックアップテーブルを使用してフィルタリングされたスペクトル成分を取得するステップ1340と、フィルタリングされたスペクトル成分に逆1D変換を実行してフィルタリングされたピクセルを取得するステップ1350と、フィルタリングされたピクセルに基づいて、フィルタリング済の再構築ブロックを生成するステップ1360とを含む。方法1300は、
図1または
図10に示す符号化装置、および
図2または
図11に示す復号装置によって実行することができる。
図3Aまたは
図3Bの詳しい情報300、300’もまた、
図13に示す方法1300に適用され得る。
【0169】
図6は、様々な実施形態を実施するために使用できる装置600のブロック図である。装置600は、
図1または
図10に示す符号化装置、および
図2または
図11に示す復号装置であってよい。加えて、装置600は、説明した要素の1つ以上をホストすることができる。幾つかの実施形態では、装置600は、スピーカ、マイクロフォン、マウス、タッチスクリーン、キーパッド、キーボード、プリンタ、ディスプレイなどといった1台以上の入力/出力装置を装備する。装置600は、バスに接続された、1つ以上の中央処理ユニット(CPU)610、メモリ620、大容量記憶装置630、ビデオアダプタ640、および入出力インターフェース660を備え得る。バスは、メモリバスまたはメモリコントローラ、周辺バス、ビデオバスなどを含む任意のタイプの幾つかのバスアーキテクチャのうちの1つ以上である。
【0170】
CPU610は、任意のタイプの電子データプロセッサを有し得る。メモリ620は、静的ランダムアクセスメモリ(static random access memory:SRAM)、動的ランダムアクセスメモリ(dynamic random access memory:DRAM)、シンクロナスDRAM(synchronous DRAM:SDRAM)、読み出し専用メモリ(read-only memory:ROM)、またはこれらの組み合わせなどの任意のタイプのシステムメモリを備えてよい、あるいは任意のタイプのシステムメモリであってよい。一実施形態では、メモリ620は、起動時に使用するためのROM、ならびにプログラムの実行中に使用するためのプログラムおよびデータ記憶用のDRAMを含み得る。諸実施形態において、メモリ620は非一時的である。大容量記憶装置630は、データ、プログラム、およびその他の情報を格納し、ならびに、バスを介してデータ、プログラム、およびその他の情報にアクセスできるようにする、任意のタイプの記憶装置を含む。大容量記憶装置630は、例えば、ソリッドステートドライブ、ハードディスクドライブ、磁気ディスクドライブ、光ディスクドライブなどの1つ以上を含む。
【0171】
ビデオアダプタ640および入出力インターフェース660は、外部入力および出力デバイスを装置600に接続するためのインターフェースを提供する。例えば、装置600は、クライアントにSQLコマンドインターフェースを提供し得る。図示のように、入出力装置の例には、ビデオアダプタ640に接続されたディスプレイ690、および入出力インターフェース660に接続されたマウス/キーボード/プリンタ670の任意の組み合わせが含まれる。装置600には他のデバイスが接続されていてもよく、追加のインターフェースカードまたはより少ないインターフェースカードが利用されてもよい。例えば、プリンタのシリアルインターフェースを提供するためにシリアルインターフェースカード(不図示)が使用されることもできる。
【0172】
装置600は1つ以上のネットワークインターフェース650をさらに含み、このネットワークインターフェース650は、ノードまたは1つ以上のネットワーク680にアクセスするための、イーサネットケーブルなどの有線リンク、および/または無線リンクを含む。ネットワークインターフェース650により、ネットワーク680を介して、装置600と遠隔装置とが通信できるようになっている。例えば、ネットワークインターフェース650は、データベースとの通信を提供し得る。一実施形態では、装置600は、データ処理、および他の処理ユニット、インターネット、またはリモートストレージ設備などの遠隔装置との通信を行うために、ローカルエリアネットワークまたはワイドエリアネットワークに接続されている。
【0173】
提案されているループ内フィルタの設計は、従来のALF方式に対して以下の利点を有する。
提案されている周波数ドメインフィルタは、デコーダ側で、再構築済のフレームからフィルタリングパラメータ(周波数ドメイン利得係数)を導出するので、フィルタリングパラメータがエンコーダ側からデコーダ側へ伝送される必要はない。
ALFは、送信する重み付け係数の数を削減するために、エンコーダ側で複雑なレート歪み最適化(RDO)を必要とする。提案されている方法は、エンコーダ側で複雑なRDOを必要とせず(パラメータを伝送しない)、かつ予め定義された条件を満たすすべてのブロックに適用される。
ALFは、ピクセルドメイン内にある線形フィルタである。提案されているフィルタは、各1Dスペクトル成分の利得係数が、このスペクトル成分の値に依存するため非線形である。これにより、非線形処理からさらなるコーディング利得を達成することができる。
ALFは、デコーダ側で汎用の乗算器を必要とする。提案されている方法では、フィルタリングをルックアップテーブルとして実施でき、その理由は、各スペクトル係数の利得が1未満であることによる。したがって、提案されている方法は乗数なしで実施することができる。
【0174】
したがって、このフィルタが提供されることによって、低複雑性でビデオコーディングの効率を向上させることが可能になる。
【0175】
本開示の特定の特徴または態様は、幾つかの実装態様または実施形態のただ1つのみに関して開示したであろうが、そのような特徴または態様は、任意の所与の、または特定の用途に対して所望され、有利である可能性があるような他の実装態様または実施形態の1つまたは複数の他の特徴または態様と組み合わせられることができる。さらに、「含む」、「有する」、「伴う」という用語、またはそれらの他の変化形が、詳細な説明または特許請求の範囲のいずれかで使用される限り、そのような用語は、「備える」という用語と同様に包括的であることが意図される。また、用語「exemplary」、「for example」および「e.g.」は、最良または最適というよりもむしろ、単なる一例にすぎない。用語「coupled」および「connected」は、その派生語と共に使用されてもよい。これらの用語は、2つの要素が直接物理的または電気的に接触しているか、または互いに直接接触していないかに関わらず、これら2つの要素が互いに協働するかまたは相互作用していることを示すために使用されてもよいことが理解されるべきである。
【0176】
本明細書では特定の態様が図示および説明されたが、本開示の範囲から逸脱することなく、図示および説明した特定の態様の代わりに様々な代替および/または同等の実装が代用されることができることが当業者に理解されよう。本出願は、本明細書に記載の特定の態様の任意の適応または変形を網羅することが意図されている。
【0177】
以下の特許請求の範囲における要素は、対応する標示と共に特定の順序で列挙されているが、特許請求の範囲の列挙が、別にこれらの要素の幾つかまたはすべてを実施する特定の順序を示唆していない限り、これらの要素は、必ずしもその特定の順序での実施に限定されるものではない。
【0178】
多くの代替、修正および変形は、上述の教示を考慮すると当業者にとって明らかであろう。当然、当業者は、本明細書で説明したものを超えて、本発明の用途が多数あることを容易に認識するであろう。本発明は、1つまたは複数の特定の実施形態を参照して説明されてきたが、当業者は、本発明の範囲から逸脱すること無しに、多くの変形が行われることができることを認識するであろう。したがって、添付の特許請求の範囲およびその均等物の範囲内で、本発明は本明細書に具体的に記載されているのとは別の方法で実施され得ることを理解されたい。
【0179】
以下、幾つかの例示的な実施形態および実装が要約される。第1の例示的な実施形態において、ビデオ符号化装置または復号装置に使用するフィルタが提供され、フィルタは現在の再構築ブロックを処理するように構成され、現在の再構築ブロックは複数のピクセルを含み、かつフィルタは、予め定義されたスキャンテンプレートに従って現在の再構築ブロックの現在のピクセルおよび現在のピクセルのそれに隣接するピクセルを線形バッファにロードし、線形バッファ内のピクセルに1D変換を実行してスペクトル成分を取得し、各スペクトル成分に利得係数を掛けて、またはルックアップテーブルを使用して、フィルタリングされたスペクトル成分を取得し、ここで利得係数は、対応するスペクトル成分およびフィルタリングパラメータに依存し、フィルタリングされたスペクトル成分に逆1D変換を実行してフィルタリングされたピクセルを取得し、フィルタリングされたピクセルに基づいて、フィルタリング済の再構築ブロックを生成する、ように構成される。
【0180】
第2の例において、現在の再構築ブロックは、以前に再構築された近接ブロックからの少なくとも1つのサンプルに基づいて取得した少なくとも1つのサンプルを含む、1つ以上のサンプルによってパディングされる。
【0181】
第3の例において、パディングサンプルは、以前に再構築された近接ブロックからのサンプルである。
【0182】
第4の例において、パディングサンプルは、以前に再構築された近接ブロックからのフィルタリング済のサンプルである。
【0183】
第5の例において、パディングサンプルは、現在の画像ブロックのイントラ予測を意図したサンプルである。
【0184】
第6の例において、フィルタは、パディングサンプル(
図9に示す参照サンプルなど)を取得するようにさらに構成され、パディングサンプルは、イントラ参照サンプル導出の結果に基づく。
【0185】
第7の例において、イントラ参照サンプル導出は、
隣接する再構築サンプルの可用性を確認し、隣接する再構築サンプルが使用可能であれば隣接する再構築サンプルを取り出すことと、隣接する再構築サンプルが使用不可能であれば、隣接する再構築サンプルを他の使用可能な隣接サンプルに置き換えることとを含む。
【0186】
第8の例において、現在の再構築ブロックは、イントラ予測ブロックである。
【0187】
第9の例において、現在の再構築ブロックは、インター予測ブロックである。
【0188】
第10の例において、再構築ブロックは、現在の再構築ブロックからのサンプルを少なくとも1つのサンプルを含むサンプルによってパディングされる。
【0189】
第11の例において、現在の再構築ブロックは、イントラ予測ブロックである。
【0190】
第12の例において、現在の再構築ブロックは、インター予測ブロックである。
【0191】
第13の例において、再構築ブロックは、以前に再構築された近接ブロックからのサンプル(隣接サンプルまたは参照サンプルなど)に基づいて取得したサンプルによってパディングされ、かつ現在の再構築ブロックからのサンプルによってパディングされる。
【0192】
第14の例において、再構築ブロックは、以前に再構築された近接ブロックからのサンプルに基づいて取得したサンプルによって、左側および上側がパディングされる。
【0193】
第15の例において、再構築ブロックは、現在の再構築ブロックからのサンプルによって、右側および下側がパディングされる。
【0194】
第16の例において、再構築ブロックは、以前に再構築された近接ブロックが使用可能なときは、少なくとも1つの以前に再構築された近接ブロックからのサンプルに基づいて取得した少なくとも1つのサンプルによってパディングされ、かつ/または以前に再構築された近接ブロックが使用不可能なときは、現在の再構築ブロックは、現在の再構築ブロックからのサンプルによってパディングされる。
【0195】
第17の例において、少なくとも隣接ブロックに属する隣接サンプル(x<0またはx>=nCbWまたはy<0またはy>=nCbHの位置にあるサンプルなど)について、ブロックコーディング順序、同じピクチャグループに属する現在ブロックおよび隣接ブロック(同じピクチャグループは同じスライス、同じタイル、または同じタイルグループを含む
)、あるいはピクチャ境界を越える隣接ブロックの位置、の1つ以上に基づいて、現在ブロックに隣接ブロックが使用可能かどうかが判定される。
【0196】
第18の例において、現在の再構築ブロックはインター予測ブロックであり、再構築ブロックは、以前に再構築された近接ブロックがインター予測ブロックの場合のみ、以前に再構築された近接ブロックからのサンプルに基づいて取得したサンプルによってパディングされる。
【0197】
第19の例において、すべてのフィルタリングされたピクセルと、すべての対応するフィルタリングされていないピクセルとの間の差異が、予め定義されたスキャンテンプレートに従って蓄積バッファに追加され、蓄積バッファは、フィルタリングされていないピクセルに、ブロックに追加されるピクセル値の最大数を掛けたものによって初期化される。
【0198】
第20の例において、最後のフィルタリング済ピクセルが、蓄積バッファ内の蓄積値を、ブロックに追加されるピクセル値の最大数で割ったものとして取得される。
【0199】
第21の例において、フィルタは条件に応じて適用され、条件は、(i)非ゼロの残差信号を有する再構築ブロック、(ii)再構築ブロックのサイズ、(iii)再構築ブロックのアスペクト比、または(iv)再構築ブロックの予測モード、のうちの少なくとも1つを含む。
【0200】
第22の例において、フィルタパラメータシグマ、および予め定義されたスキャンテンプレートは、条件に依存している。
【0201】
第23の例において、1D変換はアダマール変換である。
【0202】
別の例において、ルックアップテーブルは、現在ブロック量子化パラメータ(Qp)に基づいて取得される。
【0203】
さらに別の例では、利得係数は対応するスペクトル成分、および現在ブロック量子化パラメータ(Qp)に基づいて取得したフィルタリングパラメータに依存し、あるいは利得係数は、対応するスペクトル成分、および現在ブロック量子化パラメータ(Qp)に依存する。
【0204】
第24の例示的な実施形態において、現在の再構築ブロックを処理する方法が提供され、現在の再構築ブロックは複数のピクセルを含み、フィルタリング方法は、予め定義されたスキャンテンプレートに従って現在の再構築ブロックの現在のピクセルおよび現在のピクセルのそれに隣接するピクセルを線形バッファにロードするステップと、線形バッファ内のピクセルに1D変換を実行してスペクトル成分を取得するステップと、各スペクトル成分に利得係数を掛けて、またはルックアップテーブルを使用して、フィルタリングされたスペクトル成分を取得するステップであって、利得係数は、対応するスペクトル成分およびフィルタリングパラメータに依存する、ステップと、フィルタリングされたスペクトル成分に逆1D変換を実行してフィルタリングされたピクセルを取得するステップと、フィルタリングされたピクセルに基づいて、フィルタリング済の再構築ブロックを生成するステップとを含む。
【0205】
第25の例において、現在の再構築ブロックは、以前に再構築された近接ブロックからの少なくとも1つのサンプルに基づいて取得した少なくとも1つのサンプルを含む、1つ以上のサンプルによってパディングされる。
【0206】
第26の例において、パディングサンプルは、以前に再構築された近接ブロックからのサンプルである。
【0207】
第27の例において、パディングサンプルは、以前に再構築された近接ブロックからのフィルタリング済のサンプルである。
【0208】
第28の例において、パディングサンプルは、現在の画像ブロックのイントラ予測を意図したサンプルである。
【0209】
第29の例において、フィルタは、パディングサンプル(
図9に示す参照サンプルなど)を取得するようにさらに構成され、パディングサンプルは、イントラ参照サンプル導出の結果に基づく。
【0210】
第30の例において、イントラ参照サンプル導出は、隣接する再構築サンプルの可用性を確認し、隣接する再構築サンプルが使用可能であれば隣接する再構築サンプルを取り出すこと、隣接する再構築サンプルが使用不可能であれば、隣接する再構築サンプルを他の使用可能な隣接サンプルに置き換えることを含む。
【0211】
第31の例において、現在の再構築ブロックは、イントラ予測ブロックである。
【0212】
第32の例において、現在の再構築ブロックは、インター予測ブロックである。
【0213】
第33の例において、再構築ブロックは、現在の再構築ブロックからの少なくとも1つのサンプルを含むサンプルによってパディングされる。
【0214】
第34の例において、現在の再構築ブロックは、イントラ予測ブロックである。
【0215】
第35の例において、現在の再構築ブロックは、インター予測ブロックである。
【0216】
第36の例において、再構築ブロックは、以前に再構築された近接ブロックからのサンプル(隣接サンプルまたは参照サンプルなど)に基づいて取得したサンプルによってパディングされ、かつ現在の再構築ブロックからのサンプルによってパディングされる。
【0217】
第37の例において、現在の再構築ブロックは、以前に再構築された近接ブロックからのサンプルに基づいて取得したサンプルによって、左側および上側がパディングされる。
【0218】
第38の例において、現在の再構築ブロックは、現在の再構築ブロックからのサンプルによって、右側および下側がパディングされる。
【0219】
第39の例において、現在の再構築ブロックは、以前に再構築された近接ブロックが使用可能なときは、少なくとも1つの以前に再構築された近接ブロックからのサンプルに基づいて取得した少なくとも1つのサンプルによってパディングされ、かつ/または現在の再構築ブロックは、以前に再構築された近接ブロックが使用不可能なときは、現在の再構築ブロックからのサンプルによってパディングされる。
【0220】
第40の例において、少なくとも隣接ブロックに属する隣接サンプル(x<0またはx>=nCbWまたはy<0またはy>=nCbHの位置にあるサンプルなど)について、ブロックコーディング順序、同じピクチャグループに属する現在ブロックおよび隣接ブロック(同じピクチャグループは同じスライス、同じタイル、または同じタイルグループを含む)、ピクチャ境界を越える隣接ブロックの位置の1つ以上に基づいて、現在ブロックに隣接ブロックが使用可能かどうかが判定される。
【0221】
第41の例において、現在の再構築ブロックはインター予測ブロックであり、現在の再構築ブロックは、以前に再構築された近接ブロックがインター予測ブロックの場合のみ、以前に再構築された近接ブロックからのサンプルに基づいて取得したサンプルによってパディングされる。
【0222】
第42の例において、すべてのフィルタリングされたピクセルと、すべての対応するフィルタリングされていないピクセルとの間の差異が、予め定義されたスキャンテンプレートに従って蓄積バッファに追加され、蓄積バッファは、フィルタリングされたスペクトル成分を取得する前にフィルタリングされていないピクセルに、ブロックに追加されるピクセル値の最大数を掛けたものによって初期化される。
【0223】
第43の例において、最後のフィルタリング済ピクセルが、蓄積バッファ内の蓄積値を、ブロックに追加されるピクセル値の最大数で割ったものとして取得され、1つ以上のプロセッサは、最後のフィルタリング済ピクセルに基づいて、フィルタリング済の再構築ブロックを生成するように構成される。
【0224】
第44の例において、1D変換はアダマール変換である。
【0225】
別の例において、ルックアップテーブルは、現在ブロック量子化パラメータ(Qp)に基づいて取得される。
【0226】
別の例において、利得係数は対応するスペクトル成分、および現在ブロック量子化パラメータ(Qp)に基づいて取得したフィルタリングパラメータに依存し、あるいは利得係数は、対応するスペクトル成分、および現在ブロック量子化パラメータ(Qp)に依存する。
【0227】
第45の例示的な実施形態において、符号化装置または復号装置に使用するフィルタが提供され、フィルタは現在の再構築ブロックを処理するように構成され、現在の再構築ブロックは複数のサンプルを含み、かつフィルタは、予め定義されたスキャンテンプレートに従って現在のサンプルおよびそれに隣接するサンプルを線形バッファにロードし、ここで隣接サンプルは、現在のサンプルに隣接する、現在の再構築ブロックからのM個のサンプルと、現在のサンプルに隣接する、以前に再構築された近接ブロックからのN個のサンプルとを含み、N>=0であり、線形バッファ内のサンプルに1D変換を実行してスペクトル成分を取得し、各スペクトル成分に利得係数を掛けて、またはルックアップテーブルを使用して、フィルタリングされたスペクトル成分を取得し、ここで利得係数は、対応するスペクトル成分およびフィルタリングパラメータに依存し、フィルタリングされたスペクトル成分に逆1D変換を実行してフィルタリングされたサンプルを取得し、フィルタリングされたサンプルに基づいて、フィルタリング済の再構築ブロックを生成する、ように構成された1つ以上のプロセッサまたは1つ以上の処理回路を含む。
【0228】
第46の例において、M+N=3、またはM+N=8である。
【0229】
第47の例において、N個のサンプルは、現在の再構築ブロックの上側と隣接するサンプル、および/または現在の再構築ブロックの左側と隣接するサンプルを含む。
【0230】
第48の例において、N個のサンプルは、現在の再構築ブロックの下側と隣接するN1個のサンプル、および/または現在の再構築ブロックの右側と隣接するN2個のサンプルを含み、N1個のサンプルは、対応する下側の位置にある、現在の再構築ブロックからの使用可能なサンプルによってパディングされ、N2個のサンプルは、対応する右側の位置にある、現在の再構築ブロックからの使用可能なサンプルによってパディングされる。
【0231】
第49の例において、現在の再構築ブロックは、以前に再構築された近接ブロックからの少なくとも1つのサンプルに基づいて取得した少なくとも1つのサンプルを含む、1つ以上のサンプルによってパディングされる。
【0232】
第50の例において、パディングサンプルは、以前に再構築された近接ブロックからのサンプルである。
【0233】
第51の例において、パディングサンプルは、以前に再構築された近接ブロックからのフィルタリング済のサンプルである。
【0234】
第52の例において、パディングサンプルは、現在の画像ブロックのイントラ予測を意図したサンプルである。
【0235】
第53の例において、フィルタは、パディングサンプル(
図9に示す参照サンプルなど)を取得するようにさらに構成され、パディングサンプルは、イントラ参照サンプル導出の結果に基づく。
【0236】
第54の例において、イントラ参照サンプル導出は、隣接する再構築サンプルの可用性を確認し、隣接する再構築サンプルが使用可能であれば隣接する再構築サンプルを取り出すこと、隣接する再構築サンプルが使用不可能であれば、隣接する再構築サンプルを他の使用可能な隣接サンプルに置き換えることを含む。
【0237】
第55の例において、現在の再構築ブロックは、イントラ予測ブロックである、または現在の再構築ブロックはインター予測ブロックである。
【0238】
第57の例において、現在の再構築ブロックは、現在の再構築ブロックからの少なくとも1つのサンプルを含むサンプルによってパディングされる。
【0239】
第58の例において、現在の再構築ブロックは、イントラ予測ブロックである、または現在の再構築ブロックはインター予測ブロックである。
【0240】
第60の例において、現在の再構築ブロックは、以前に再構築された近接ブロックからのサンプル(隣接サンプルまたは参照サンプルなど)に基づいて取得したサンプルによってパディングされ、かつ現在の再構築ブロックからのサンプルによってパディングされる。
【0241】
第61の例において、現在の再構築ブロックは、以前に再構築された近接ブロックからのサンプルに基づいて取得したサンプルによって、左側および上側がパディングされる。
【0242】
第62の例において、現在の再構築ブロックは、現在の再構築ブロックからのサンプルによって、右側および下側がパディングされる。
【0243】
第63の例において、現在の再構築ブロックは、以前に再構築された近接ブロックが使用可能なときは、少なくとも1つの以前に再構築された近接ブロックからのサンプルに基づいて取得した少なくとも1つのサンプルによってパディングされ、かつ/または現在の再構築ブロックは、以前に再構築された近接ブロックが使用不可能なときは、現在の再構築ブロックからのサンプルによってパディングされる。
【0244】
第64の例において、少なくとも隣接ブロックに属する隣接サンプル(x<0またはx>=nCbWまたはy<0またはy>=nCbHの位置にあるサンプルなど)について、ブロックコーディング順序、同じピクチャグループに属する現在ブロックおよび隣接ブロック(同じピクチャグループは同じスライス、同じタイル、または同じタイルグループを含む)、ピクチャ境界を越える隣接ブロックの位置の1つ以上に基づいて、現在ブロックに隣接ブロックが使用可能かどうかが判定される。
【0245】
第65の例において、現在の再構築ブロックはインター予測ブロックであり、現在の再構築ブロックは、以前に再構築された近接ブロックがインター予測ブロックの場合のみ、以前に再構築された近接ブロックからのサンプルに基づいて取得したサンプルによってパディングされる。
【0246】
別の例において、ルックアップテーブルは、現在ブロック量子化パラメータ(Qp)に基づいて取得される。
【0247】
別の例において、利得係数は対応するスペクトル成分、および現在ブロック量子化パラメータ(Qp)に基づいて取得したフィルタリングパラメータに依存し、あるいは利得係数は、対応するスペクトル成分、および現在ブロック量子化パラメータ(Qp)に依存する。
【0248】
第66の例示的な実施形態において、入力ビデオストリームから現在ブロックを符号化する符号化装置が提供され、符号化装置は、上記の実施形態および例のいずれかによるフィルタを備える。
【0249】
第67の例示的な実施形態において、受信したビットストリームから現在の再構築ブロックを復号する復号装置が提供され、復号装置は、上記の実施形態および例のいずれかによるフィルタを備える。
【0250】
第68の例示的な実施形態によれば、コンピュータまたはプロセッサで実行されると、上述した実施形態および例のいずれかの方法を実行するプログラムコードを含む、コンピュータプログラム製品が提供される。
【0251】
本開示は、フィルタ、フィルタを使用するエンコーダおよびデコーダ、フィルタリング方法および対応するプログラム、ならびにフィルタリング方法またはフィルタを使用する符号化および復号に関する。フィルタリングは、現在の再構築ブロックから少なくともパディングサンプルを含むように現在の再構築ブロックを拡張して、拡張された再構築ブロックを取得することを含む。パディング後に、拡張された再構築ブロックの現在のピクセルおよびそれに隣接するピクセルが、線形バッファにロードされ、1D変換で変換される。フィルタリングは、ルックアップテーブルを使用して周波数ドメインで実行され、フィルタリングされたピクセルは変換されて元に戻される。
【0252】
次に、上述した実施形態で示した符号化方法および復号方法の適用例と、それらを用いたシステムについて説明する。
【0253】
図14は、コンテンツ配信サービスを実現するためのコンテンツ供給システム3100を示すブロック図である。このコンテンツ供給システム3100は、キャプチャデバイス3102、端末デバイス3106、および任意選択でディスプレイ3126を含む。キャプチャデバイス3102は、通信リンク3104を介して端末デバイス3106と通信する。通信リンクは、上述した通信チャネル13を含んでもよい。通信リンク3104は、WIFI、イーサネット、ケーブル、ワイヤレス(3G/4G/5G)、USB、またはそれらの任意の種類の組み合わせなどを含むが、これらに限定されない。
【0254】
キャプチャデバイス3102は、データを生成し、上記の実施形態に示すような符号化方法によってデータを符号化することができる。あるいは、キャプチャデバイス3102は、データをストリーミングサーバ(図には示されていない)に配信してもよく、サーバは、データを符号化し、符号化済データを端末デバイス3106に送信する。キャプチャデバイス3102は、カメラ、スマートフォンもしくはタブレット(Pad)、コンピュータもしくはラップトップ、テレビ会議システム、PDA、車両搭載デバイス、またはそれらのいずれかの組み合わせなどを含むが、これらに限定されない。例えば、キャプチャデバイス3102は、上述したように送信元デバイス12を含むことができる。データがビデオを含む場合、キャプチャデバイス3102に含まれるビデオエンコーダ20は、実際にビデオ符号化処理を行うことができる。データがオーディオ(すなわち、音声)を含む場合、実際には、キャプチャデバイス3102に含まれるオーディオエンコーダがオーディオ符号化処理を行ってもよい。幾つかの実際的なシナリオでは、キャプチャデバイス3102は、符号化されたビデオおよびオーディオデータを共に多重化することによって配信する。例えばテレビ会議システムにおける他の実際的なシナリオでは、符号化されたオーディオデータおよび符号化されたビデオデータは多重化されない。キャプチャデバイス3102は、符号化済オーディオデータと符号化済ビデオデータを別々に端末デバイス3106に配信する。
【0255】
コンテンツ供給システム3100では、端末デバイス310は、符号化データを受信および再生する。端末デバイス3106は、スマートフォンまたはタブレット3108、コンピュータまたはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV 3114、セットトップボックス(STB)3116、テレビ会議システム3118、ビデオ監視システム3120、携帯情報端末(PDA)3122、車両搭載デバイス3124、またはそれらのいずれかの組み合わせなど、上述の符号化済データを復号することができるデータ受信および復元機能を有するデバイスとすることができる。例えば、端末デバイス3106は、上述したように宛先デバイス14を含むことができる。符号化済データがビデオを含む場合、端末デバイスに含まれるビデオデコーダ30が優先されてビデオ復号を行う。符号化済データがオーディオを含む場合、端末デバイスに含まれるオーディオデコーダが優先されてオーディオ復号処理を行う。
【0256】
そのディスプレイを有する端末デバイス、例えば、スマートフォンまたはタブレット3108、コンピュータまたはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV 3114、携帯情報端末(PDA)3122、または車両搭載デバイス3124の場合、端末デバイスは、復号されたデータをそのディスプレイに供給することができる。ディスプレイを装備していない端末デバイス、例えば、STB 3116、テレビ会議システム3118、またはビデオ監視システム3120の場合、復号されたデータを受信して表示するために外部ディスプレイ3126がそこに接触される。
【0257】
本システムにおける各デバイスが符号化や復号を行う際には、上述した実施形態で示したような画像符号化デバイスや画像復号デバイスを用いることができる。
【0258】
図15は、端末デバイス3106の一例の構造を示す図である。プロトコル進行ユニット3202は、端末デバイス3106がキャプチャデバイス3102からストリームを受信した後に、そのストリームの伝送プロトコルを解析する。プロトコルには、リアルタイムストリーミングプロトコル(RTSP)、ハイパーテキスト転送プロトコル(HTTP)、HTTPライブストリーミングプロトコル(HLS)、MPEG-DASH、リアルタイムトランスポートプロトコル(RTP)、リアルタイムメッセージングプロトコル(RTMP)、またはそれらの任意の種類の組み合わせなどが含まれるが、これらに限定されない。
【0259】
プロトコル進行ユニット3202がストリームを処理した後に、ストリームファイルが生成される。ファイルは、逆多重化ユニット3204に出力される。逆多重化ユニット3204は、多重化データを符号化済オーディオデータと符号化済ビデオデータとに分離することができる。上述したように、幾つかの実際的なシナリオでは、例えばテレビ会議システムでは、符号化済オーディオデータおよび符号化済ビデオデータは多重化されない。このとき、符号化済データは、逆多重化ユニット3204を介さずに、ビデオデコーダ3206およびオーディオデコーダ3208に送られる。
【0260】
この逆多重化処理により、ビデオのエレメンタリストリーム(ES)と、オーディオのESと、任意選択でサブタイトルが生成される。ビデオデコーダ3206は、上述した実施形態で説明したようなビデオデコーダ30を有しており、上述した実施形態で示したような復号方式でビデオESを復号してビデオフレームを生成し、そのデータを同期ユニット3212に供給する。オーディオデコーダ3208は、オーディオESを復号してオーディオフレームを生成し、このデータを同期ユニット3212に供給する。あるいは、ビデオフレームは、同期ユニット3212に供給する前にバッファ(
図15には図示せず)に格納されてもよい。同様に、オーディオフレームは、同期ユニット3212に供給する前にバッファ(
図15には図示せず)に格納することができる。
【0261】
同期ユニット3212は、ビデオフレームとオーディオフレームを同期させ、ビデオオーディオをビデオ/オーディオディスプレイ3214に供給する。例えば、同期ユニット3212は、ビデオおよびオーディオの情報の提示を同期させる。情報は、コーディングされたオーディオおよびビジュアルデータの提示に関するタイムスタンプ、およびデータストリーム自体の配信に関するタイムスタンプを使用してシンタックスでコーディングすることができる。
【0262】
サブタイトルデコーダ3210は、ストリームにサブタイトルが含まれている場合、サブタイトルを復号してビデオフレームおよびオーディオフレームに同期させ、ビデオ/オーディオ/サブタイトルをビデオ/オーディオ/サブタイトルディスプレイ3216に供給する。
【0263】
なお、本発明は、上述した方式に限定されるものではなく、上述した実施形態における画像符号化デバイスおよび画像復号デバイスのいずれかを、他の方式、例えば、カーシステムに組み込むことも可能である。
【0264】
本発明の実施形態は主にビデオコーディングに基づいて説明されているが、コーディングシステム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にも等しく使用され得る。
【0265】
例えばエンコーダ20およびデコーダ30、ならびに例えばエンコーダ20およびデコーダ30を参照して本明細書で説明される機能の実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実施されることができる。ソフトウェアで実装される場合、機能は、コンピュータ可読媒体に記憶されるか、または1つまたは複数の命令またはコードとして通信媒体を介して送信され、ハードウェアベースの処理ユニットによって実行されてもよい。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、ある場所から別の場所への(例えば、通信プロトコルに従った)コンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含んでもよい。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応することができる。データ記憶媒体は、本開示に記載される技術を実装するための命令、コード、および/または、データ構造を取り込むために1つ以上のコンピュータまたは1つ以上のプロセッサによってアクセスされ得る任意の使用可能な媒体であってもよい。コンピュータプログラム製品がコンピュータ可読媒体を含んでもよい。
【0266】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶、磁気ディスク記憶、または他の磁気記憶装置、フラッシュメモリ、または命令もしくはデータ構造の形態で所望のプログラムコードを格納するために使用することができ、コンピュータによってアクセスすることができる任意の他の媒体を含むことができる。また、任意の接続が、厳密には、コンピュータ可読媒体と称される。例えば、ウェブサイト、サーバ、または、他の遠隔ソースから、同軸ケーブル、ファイバ光ケーブル、ツイストペア、デジタル加入者回線(DSL)、または、赤外線、電波およびマイクロ波などの無線技術を用いて、命令が送信される場合、同軸ケーブル、ファイバ光ケーブル、ツイストペア、DSL、または、赤外線、電波およびマイクロ波などの無線技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザを用いて光学的にデータを再生する。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【0267】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の同等の集積または個別論理回路などの1つまたは複数のプロセッサによって実行されてもよい。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造のいずれか、または本明細書に記載の技術の実装に適した任意の他の構造を指すことができる。さらに、幾つかの態様では、本明細書に記載された機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内で提供され得るか、または、結合されたコーデックに組み込まれ得る。また、これらの技術は、1つまたは複数の回路または論理素子に完全に実装することができる。
【0268】
本開示の技術は、無線ハンドセット、集積回路(IC)、または一組のIC(例えば、チップセット)を含む、多種多様なデバイスまたは装置において実施され得る。本開示では、開示された技術を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが記載されているが、必ずしも異なるハードウェアユニットによる実現を必要としない。むしろ、上述したように、様々なユニットは、適切なソフトウェアおよび/またはファームウェアと共に、コーデックハードウェアユニットに組み合わされてもよく、または上述したような1つまたは複数のプロセッサを含む相互運用可能なハードウェアユニットの集合によって提供されてもよい。
【符号の説明】
【0269】
10 コーディングシステム
12 送信元デバイス
13 通信チャネル
14 宛先デバイス
17 単一の画像
20 ビデオエンコーダ
30 ビデオデコーダ
100 符号化装置
104 残差計算ユニット
106 変換ユニット
108 量子化ユニット
110 逆量子化ユニット
112 逆変換ユニット
114 再構築ユニット
116 線形バッファ
120 フィルタ
130 復号ピクチャバッファ
142 インター推定ユニット
144 インター予測ユニット
152 イントラ推定ユニット
154 イントラ予測ユニット
160 モード選択ユニット
170 エントロピー符号化ユニット
200 復号装置
204 エントロピー復号ユニット
206 変換
208 量子化
210 逆量子化ユニット
212 逆変換ユニット
214 再構築ユニット
216 線形バッファ
220 フィルタ
230 復号ピクチャバッファ
244 インター予測ユニット
254 イントラ予測ユニット
260 モード選択ユニット
262,362 分割
270 エントロピーコーディング
300,300’ フィルタリング方法
304 残差計算、エントロピー復号
310 逆量子化
312 (逆)変換
320 ループフィルタリング
354 イントラ予測
500 ループ内フィルタリング方法
600 装置
610 CPU
620 メモリ
630 大容量記憶装置
640 ビデオアダプタ
650 ネットワークインターフェース
660 入出力インターフェース
670 マウス/キーボード/プリンタ
680 ネットワーク
690 ディスプレイ
901 以前に再構築されたブロック
903 再構築ブロック
910 参照サンプル導出ユニット
920 予測導出ユニット
925 予測ブロック
930 イントラ予測ユニット
935 参照サンプル
940 パディングユニット
945 拡張された再構築ブロック
950 フィルタリング処理モジュール
955 フィルタリング済の再構築ブロック
960 フィルタ
1000 符号化装置
1001 ピクチャブロック
1002 入力
1004 残差計算
1005 残差ブロック
1006 変換ユニット
1007 変換された係数
1008 量子化ユニット
1009 量子化された係数
1010 逆量子化ユニット
1011 逆量子化された係数
1012 逆変換ユニット
1013 逆変換されたブロック
1014 再構築ユニット
1015 再構築ブロック
1016 線形バッファ
1017 参照サンプル
1018 再構築後フィルタ
1020 ループフィルタ
1021 フィルタリングされたブロック
1030 復号ピクチャバッファ
1042 インター推定ユニット
1044 インター予測ユニット
1052 イントラ推定ユニット
1054 イントラ予測ユニット
1060 モード選択ユニット
1070 エントロピー符号化ユニット
1071 符号化されたピクチャデータ
1072 出力
1100 復号装置
1102 入力
1104 エントロピー復号ユニット
1109 量子化係数
1110 逆量子化ユニット
1111 逆量子化された係数
1112 逆変換ユニット
1113 逆変換されたブロック
1114 再構築ユニット
1115 再構築ブロック
1116 線形バッファ
1117 参照サンプル
1118 再構築後フィルタ
1120 ループフィルタ
1121 フィルタリングされたブロック
1130 復号ピクチャバッファ
1131 復号されたピクチャ
1132 出力
1144 インター予測ユニット
1154 イントラ予測ユニット
1160 モード選択ユニット
1165 予測ブロック
1200 現在ブロック
1210 パディングされたサンプル
1220 パディングされたサンプル
1250 左上サンプル
1260 フィルタリング
1300 フィルタリング方法
3100 コンテンツ供給システム
3102 キャプチャデバイス
3104 通信リンク
3106 端末デバイス
3108 スマートフォンまたはタブレット
3110 コンピュータまたはラップトップ
3112 ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)
3114 TV
3116 セットトップボックス(STB)
3118 テレビ会議システム
3120 ビデオ監視システム
3122 携帯情報端末(PDA)
3124 車両搭載デバイス
3126 ディスプレイ
3202 プロトコル進行ユニット
3204 逆多重化ユニット
3206 ビデオデコーダ
3208 オーディオデコーダ
3210 サブタイトルデコーダ
3212 同期ユニット
3214 ビデオ/オーディオディスプレイ
3216 ビデオ/オーディオ/サブタイトルディスプレイ