(57)【特許請求の範囲】
【請求項１】
再構成されたビデオの画素適応オフセット（ＳＡＯ）処理によってビデオ復号化を実行する方法であって：
映像ビット列から再構成されたビデオのデータを復元するステップ；
前記映像ビット列の個別の符号化ブロックデータからＳＡＯパラメータと関連した情報を受信するステップ；および、
前記再構成されたビデオの符号化ブロックに対して前記ＳＡＯ処理を適用するステップ、
を含み、
前記ＳＡＯパラメータと関連した情報は、少なくとも２つの異なる色成分の間で共有され、前記映像ビット列内の個別の符号化ブロックによってインタリーブされることを特徴とする、方法。
【請求項２】
前記符号化ブロックは、符号化ユニット（ＣＵ）、複数のＣＵ、最大の符号化ユニット（ＬＣＵ）または複数のＬＣＵに対応する、請求項１記載の方法。
【請求項３】
再構成されたビデオの画素適応オフセット（ＳＡＯ）処理によってビデオ符号化を実行する方法であって：
再構成されたビデオ・データを受信するステップ；
ＳＡＯ処理と関連したＳＡＯパラメータを決定するステップであって、前記ＳＡＯ処理は、前記再構成されたビデオの符号化ブロックに対して適用される、ステップ；および、
映像ビット列内の個別の符号化ブロックによってインタリーブすることによって、前記ＳＡＯパラメータと関連した情報を組み込むステップ；
を含み、前記ＳＡＯパラメータと関連した情報は、少なくとも２つの異なる色成分の間で共有される、方法。
【請求項４】
前記符号化ブロックは、符号化ユニット（ＣＵ）、複数のＣＵ、最大の符号化ユニット（ＬＣＵ）または複数のＬＣＵに対応する、請求項３記載の方法。
【請求項５】
再構成されたビデオの画素適応オフセット（ＳＡＯ）処理によってビデオ復号化を実行する方法であって：
映像ビット列から再構成されたビデオのデータを復元するステップ；
前記映像ビット列内の個別の符号化ブロック・データからＳＡＯパラメータと関連した情報を受信するステップ；および、
前記再構成されたビデオ・データの符号化ブロックに対して前記ＳＡＯ処理を適用するステップ；
を含み、前記ＳＡＯパラメータと関連した前記情報は、少なくとも２つの異なる色成分の間で共有されることを特徴とする、方法。
【請求項６】
前記ＳＡＯパラメータは、マージ・フラグ、左方マージ・フラグ、上方マージ・フラグ、ＳＡＯタイプ、ＳＡＯオフセットまたはこれらの組み合わせを具備する、請求項５記載の方法。
【請求項７】
前記ＳＡＯタイプは、ＳＡＯ処理の有効化、ＳＡＯ処理の無効化、バンド・オフセットおよびエッジ・オフセットの中のいずれか一つ又はこれらの組み合わせを具備する、請求項６記載の方法。
【請求項８】
前記色成分は、輝度(luma)の色成分、彩度Ｃｂの色成分、および彩度Ｃｒの色成分を具備する、請求項５記載の方法。
【請求項９】
前記ＳＡＯ処理のために、他の色成分のＳＡＯパラメータから所望の色成分のＳＡＯパラメータを導出するステップをさらに備える、請求項５記載の方法。
【請求項１０】
再構成されたビデオの画素適応オフセット（ＳＡＯ）処理によってビデオ符号化を実行する方法であって：
再構成されたビデオのデータを受信するステップ；
ＳＡＯ処理と関連したＳＡＯパラメータを決定するステップであって、前記ＳＡＯ処理は、前記再構成されたビデオの符号化ブロックに対して適用される、ステップ；および、
前記ＳＡＯパラメータと関連した情報を映像ビット列の中に組み込むステップ；
を含み、前記ＳＡＯパラメータと関連した前記情報は、少なくとも２つの異なる色成分の間で共有されることを特徴とする、方法。
【請求項１１】
前記ＳＡＯパラメータは、マージ・フラグ、左方マージ・フラグ、上方マージ・フラグ、ＳＡＯタイプ、ＳＡＯオフセットまたはこれらの組み合わせを具備する、請求項１０記載の方法。
【請求項１２】
前記ＳＡＯタイプは、ＳＡＯ処理の有効化、ＳＡＯ処理の無効化、バンド・オフセットおよびエッジ・オフセットの中のいずれか一つ又はこれらの組み合わせを具備する、請求項１１記載の方法。
【請求項１３】
前記色成分は、輝度(luma)の色成分、彩度Ｃｂの色成分、および彩度Ｃｒの色成分を具備する、請求項１０記載の方法。
【請求項１４】
前記ＳＡＯパラメータを決定するステップは、他の色成分のＳＡＯパラメータから所望の色成分のＳＡＯパラメータを導出するステップをさらに備える、請求項１０記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、「Improved  Sample  Adaptive  Offset」と題され、２０１１年４月２１日付けで出願された米国仮特許出願第６１／４７７，６８９号、「Low  Latency  Loop  Filtering」と題され、２０１１年１０月１４日付けで出願された米国仮特許出願第６１／５４７，２８１号、「Improved  Sample  Adaptive  Offset」と題され、２０１２年２月１７日付けで出願された米国仮特許出願第６１／５９５，９００号、「Improved  LCU-based  Encoding  Algorithm  of  ALF」と題され、２０１２年２月７日付けで出願された米国仮特許出願第６１／５９５，９１４号、「Improved  ALF  and  SAO」と題され、２０１２年２月１３日付けで出願された米国仮特許出願第６１／５９７，９９５号、および、「LCU-based  Syntax  for  SAO  and  ALF」と題され、２０１２年２月１７日付けで出願された米国仮特許出願第６１／６００，０２８号に基づく優先権を主張する。上述した米国仮特許出願は、その開示内容の全体が参照により本願明細書中に組み込まれる。
【０００２】
本発明は映像符号化システムに関する。より具体的には、本発明は、改良されたループ内処理（例えばＳＡＯおよびＡＬＦ）のための方法と装置に関する。
【背景技術】
【０００３】
動き推定は、映像シーケンスの時間的冗長性を利用するのに有効なフレーム間符号化技法である。動き補償されたフレーム間符号化は、様々な国際的なビデオ符号化標準において広く使用されている。様々な符号化標準において採用される動き推定は、符号化モードおよび動きベクトルのような動き情報は、マクロ・ブロック毎または同様のブロック構成毎に決定されることを特徴とする「ブロックに基づく技術」であることが多い。加えて、一枚のピクチャが他のピクチャを一切参照することなく処理されることを特徴とする「内部符号化」がさらに適応的に適用される。フレーム間で予測された又はフレーム内部で予測された残差は、通常、圧縮された映像ビット列を生成するために、変換処理、量子化処理およびエントロピー符号化処理によって更に処理される。符号化処理の実行過程の間、特に量子化プロセスにおいて、符号化により生じるアーチファクトが加わってしまう。符号化により生じるアーチファクトを軽減するために、より新しい符号化システムにおいて画質を強化するために、付加的な処理が再構成されたビデオに適用される。多くの場合、改良されたシステム性能を達成するために、符号化器および復号化器が同じ参照用ピクチャを導出ことができるような態様で、付加的な処理がループ内動作において構成される。
【０００４】
図１Ａは、ループ内処理を組み込んでいる典型的な適応型のフレーム間／フレーム内ビデオ符号化システムを例示する。フレーム間予測に関しては、他の１枚以上のピクチャからのビデオ・データに基づいて予測データを提供するために、動き推定（ME:  Motion  Estimation）／動き補償（MC:  Motion  Compensation）１１２が使用される。スイッチ１１４はフレーム内予測１１０またはフレーム間予測データのいずれか一方を選択し、当該選択された予測データは、残差とも呼ばれる予測誤差を形成するために加算器１１６に供給される。その後、予測誤差は、変換処理（Ｔ）１１８およびそれに続く量子化処理（Ｑ）によって処理される。変換され、さらに量子化された残差は、続いて、圧縮されたビデオ・データに対応する映像ビット列を形成するために、エントロピー符号化器１２２によって符号化される。変換係数と関係付けられたビット列は、続いて、補助情報と共にパッキングされ、補助情報とは、例えば画像領域と関連した動き、モードおよびその他の情報等である。補助情報は、必要とされる帯域幅を減らすために、さらにエントロピー符号化処理されても良い。従って、補助情報と関係付けられた当該データは、図１Ａに示すようにエントロピー符号化器１２２に提供される。フレーム間予測モードが用いられる場合、１枚以上の基準ピクチャもまた符号化器の側で再構成されなければならない。従って、変換され量子化された残差は、元の残差を復元するために、逆量子化（ＩＱ）１２４および逆変換（ＩＴ）１２６によって処理される。続いて、当該残差は、ビデオ・データを再構成するために、再構成部（ＲＥＣ）１２８において、予測データ１３６に加算される。当該再構成されたビデオ・データは、基準ピクチャ・バッファ１３４内に格納されることが可能であり、他のフレームを予測するために使用されることが可能である。
【０００５】
図１Ａに示すように、入って来るビデオ・データは、符号化システム内における一連の処理によって処理される。ＲＥＣ１２８からの再構成されたビデオ・データは、一連の処理を受けることに起因して様々な損傷を受ける可能性がある。従って、ビデオ品質を改善するために、再構成されたビデオ・データが基準ピクチャ・バッファ１３４内に格納される前に、様々なループ内処理が再構成されたビデオ・データに対して適用される。研究開発中のＨＥＶＣ（High  Efficiency  Video  Coding）標準において、逆ブロック化フィルタ（ＤＦ）１３０、画素適応オフセット処理（ＳＡＯ）１３１および適応型ループ・フィルター（ＡＬＦ）１３２は、画質を強化するために開発されてきた。復号化器が必要とされる情報を適切に復元することができるように、ループ内フィルタの情報はビット列中に組み込まれなければならない可能性がある。従って、ＳＡＯおよびＡＬＦからのループ内フィルタの情報は、ビット列中に組み込みために、エントロピー符号化器１２２に提供される。図１Ａにおいて、まず最初に、ＤＦ１３０は、再構成されたビデオに適用され；続いて、ＤＦ処理されたビデオに対してＳＡＯ  １３１が適用され；そして、ＳＡＯ処理されたビデオに対してＡＬＦ１３２が適用される。しかしながら、ＤＦ、ＳＡＯおよびＡＬＦの３者の間の処理順序は並べ替えられることが可能である。
【０００６】
図１Ａに示す符号化器に対応する復号化器は、図１Ｂに示される。映像ビット列は、変換され量子化された残差、ＳＡＯ／ＡＬＦ情報および他のシステム情報を復元するために、ビデオ復号化器１４２によって復号化される。復号化器の側では、ＭＥ／ＭＣ（動き推定／動き補償）の代わりに動き補償だけが実行される。復号化の処理過程は、符号化器の側における再構成処理ループの類似している。変換され量子化された残差から復元された残差、ＳＡＯ／ＡＬＦ情報および他のシステム情報は、ビデオ・データを再構成するために使用される。再構成されたビデオは、最終的な強化された復号化ビデオを生成するために、ＤＦ１３０、ＳＡＯ１３１およびＡＬＦ１３２によって更に処理される。
【０００７】
ＨＥＶＣは、符号化性能を強化する非逆ブロック化のループ内フィルタとしてＡＬＦを採用した。ＨＥＶＣテスト・モデル・バージョン５．０においては、ピクチャに基づくＡＬＦ符号化アルゴリズムが説明されている。しかしながら、通常は、より効率的なメモリー使用状況、より少ないメモリ帯域幅または低いハードウェア・コストのために、ＬＣＵに基づく符号化方式またはＬＣＵに基づくパイプライン処理が、ビデオ符号化器およびビデオ復号化器を実装するために使われる。従って、ＬＣＵに基づくＡＬＦは、好適な方法である。しかしながら、ＡＬＦ処理の性能をより一層高めることが望ましい。
【０００８】
ＳＡＯは、画質を強化するためにＨＥＶＣによって採用されるさらに別のループ内処理である。ＳＡＯは、２つの方法から成る。１つはバンド・オフセット（ＢＯ）である、そして、その他はエッジ・オフセット（ＥＯ）である。ＢＯは画素の輝度に従って複数の画素を複数のバンドに分類するために使用され、各バンド内の画素にオフセットが適用される。ＥＯは近隣の画素との関係に従って複数の画素を複数のカテゴリに分類するために使用され、各カテゴリ内の画素にオフセットが適用される。ＨＭ−５．０において、一つの領域は、以下の７種類の異なるＳＡＯタイプを選択することができる。これらは、２つのＢＯグループ（外側のグループおよび内側グループ）、４種類のＥＯ指向性パターン（０°、９０°、１３５°および４５°）および処理無し（ＯＦＦ）である。さらに、画像は、４分木分割法を用いて複数の領域に更に分割されることが可能であり、または、最大の符号化ユニット（ＬＣＵ）領域に分割されることが可能であり、各領域はそれ自身のＳＡＯタイプおよびオフセット値を有する。ＳＡＯパラメータのシグナリングを改善することによって、ＳＡＯ処理の性能をより一層高めることが望ましい。
【発明の概要】
【０００９】
再構成されたビデオのループ内処理を使用したビデオ復号化処理のための方法および装置が開示される。本発明に係る一実施例に従うならば、本実施例に係る方法は、映像ビット列から再構成されたビデオ・データを復元する工程；前記映像ビット列からフラグを受信する工程；前記フラグの値に応じて、２つ以上の符号化ブロックにより共有される前記映像ビット列内のデータ・ペイロード又は前記映像ビット列内の個々の符号化ブロックのデータからループ内フィルタについてのパラメータに関連した情報を受信する工程；および、ループ内処理を再構成されたビデオの符号化ブロックに適用する工程を具備する。前記ループ内処理は、適応型ループ・フィルター（ＡＬＦ）または画素適応オフセット（ＳＡＯ）に対応しても良い。前記符号化ブロックは、符号化ユニット（ＣＵ）、複数のＣＵ、最大の符号化ユニット（ＬＣＵ）または複数のＬＣＵに対応しても良い。前記映像ビット列のデータ・ペイロードは、ピクチャ層、適応パラメータ群（ＡＰＳ）またはスライス・ヘッダの中に含まれている。本発明に係る一実施例においては、前記フラグは、ループ内フィルタについてのパラメータと関連した情報が映像ビット列内のデータ・ペイロード中に組み込まれるのか、それとも映像ビット列内の個々の符号化ブロック・データによってインタリーブされるのかを選択するために使用されるインタリーブ処理フラグである。
【００１０】
本発明の他の実施例においては、前記フラグはシーケンス層の中にあり、ループ内フィルタについてのパラメータと関連した情報は、前記フラグの値に応じて、適応パラメータ群（ＡＰＳ）またはスライス・ヘッダの中に組み込まれる。
【００１１】
再構成されたビデオのループ内処理を使用したビデオ符号化処理のための方法および装置が開示される。本発明に係る一実施例に従うならば、本実施例に係る方法は、再構成されたビデオ・データを受信する工程；ループ内処理と関連したループ内フィルタについてのパラメータを決定する工程であって、前記ループ内処理は、前記再構成されたビデオの複数の符号化ブロックに対して適用される、工程；フラグの値に応じて、２つ以上の符号化ブロックにより共有される前記映像ビット列内のデータ・ペイロード中にループ内フィルタについてのパラメータと関連した情報を組み込む、又は前記映像ビット列内の個々の符号化ブロックのデータによってループ内フィルタについてのパラメータと関連した情報をインタリーブ処理する工程；を具備する。前記ループ内処理は、適応型ループ・フィルター（ＡＬＦ）または画素適応オフセット（ＳＡＯ）に対応することが可能である。前記符号化ブロックは、符号化ユニット（ＣＵ）、複数のＣＵ、最大の符号化ユニット（ＬＣＵ）または複数のＬＣＵに対応しても良い。前記映像ビット列のデータ・ペイロードは、ピクチャ層、適応パラメータ群（ＡＰＳ）またはスライス・ヘッダの中に含まれている。本発明に係る一実施例においては、前記フラグは、ループ内フィルタについてのパラメータと関連した情報が映像ビット列内のデータ・ペイロード中に組み込まれるのか、それとも映像ビット列内の個々の符号化ブロック・データによってインタリーブされるのかを選択するために使用されるインタリーブ処理フラグである。本発明の他の実施例においては、前記フラグはシーケンス層の中にあり、ループ内フィルタについてのパラメータと関連した情報は、前記フラグの値に応じて、適応パラメータ群（ＡＰＳ）またはスライス・ヘッダの中に組み込まれる。
【図面の簡単な説明】
【００１２】
【図１Ａ】ＤＦ、ＳＡＯおよびＡＬＦによるループ内処理を備える例示的な適応型フレーム間／フレーム内ビデオ符号化システムを示す図。
【図１Ｂ】ＤＦ、ＳＡＯおよびＡＬＦによるループ内処理を備える例示的な適応型フレーム間／フレーム内ビデオ復号化システムを示す図。
【図２】現在のブロックと隣接するブロックとの間でループ内フィルタについてのパラメータを共有することの一例を示す図。
【図３】現在の画素とその周辺から構成される３ｘ３のウィンドウ内における８つの隣接した画素に基づいて改良されたエッジ・オフセット分類の一例を示す図。
【図４】スライス境界を跨いだＳＡＯ処理の適応制御を有効にするためのseq_parameter_set_rbsp()に関する例示的なシンタックス設計を例示する図。
【図５】適応ＳＡＯパラメータのシグナリングが、スライス内のブロック・データによってインタリーブ処理することを可能にするための、またはＳＡＯパラメータをＡＰＳ内に組み込むことを可能にするためのaps_rbsp()に関する例示的なシンタックス設計を例示する図。
【図６】ＡＰＳを参照しており、aps_idを有するスライス内の符号化ブロックが、当該ＡＰＳ内のＳＡＯパラメータを共有することを可能にするaps_sao_param()に関する例示的なシンタックス設計を例示する図。
【図７】符号化ブロックに関するＳＡＯ情報を組み込むためのsao_unit_vlc()に関する例示的なシンタックス設計を例示する図。
【図８】符号化ブロックに関するＳＡＯオフセット値を組み込むためのsao_offset_vlc()に関する例示的なシンタックス設計を例示する図。
【図９】適応ＳＡＯパラメータに対するブロック・データによるインタリーブ処理を有効にするためのslice_header()に関する例示的なシンタックス設計を例示する図。
【図１０】適応ＳＡＯパラメータに対するブロック・データによるインタリーブ処理を有効にするためのslice_data()に関する例示的なシンタックス設計を例示する図。
【図１１】適応ＳＡＯパラメータに対するブロック・データによるインタリーブ処理を有効にするためのsao_unit_cabac()に関する例示的なシンタックス設計を例示する図。
【図１２】適応ＳＡＯパラメータに対するブロック・データによるインタリーブ処理を有効にするためのsao_offset_cabac()に関する例示的なシンタックス設計を例示する図。
【図１３】適応ＡＬＦパラメータのシグナリングを有効にするためのseq_parameter_set_rbsp()に関する例示的なシンタックス設計を例示する図。
【図１４】適応ＡＬＦパラメータのシグナリングを有効にするためのslice_header()に関する例示的なシンタックス設計を例示する図。
【図１５】適応ＡＬＦパラメータのシグナリングを有効にするためのalf_param()に関する例示的なシンタックス設計を例示する図。
【図１６】適応ＡＬＦパラメータのシグナリングを有効にするためのalf_unit()に関する例示的なシンタックス設計を例示する図。
【図１７】適応ＡＬＦパラメータのシグナリングを有効にするためのalf_info()に関する例示的なシンタックス設計を例示する図。
【発明を実施するための形態】
【００１３】
ブロックに基づくループ内フィルタリング処理において、各ブロック毎のループ内フィルタについてのパラメータは、復号化器側での適切なループ内フィルタリング演算のために、復号化器側に伝達されなければならない。ループ内フィルタの具体例は、画素適応オフセット（ＳＡＯ）または適応型ループ・フィルター（ＡＬＦ）を含むことができる。本開示において、ループ内フィルタを指す用語として、ループ内フィルタ処理またはループ内処理などの用語を使用することも可能である。本開示において、ループ内パラメータを指す用語として、ループ内情報などの用語を使用することも可能である。例えば、符号化ユニット（ＣＵ）または最大のＣＵ（ＬＣＵ）のようにブロックのサイズが小さい場合、ループ内フィルタについてのパラメータに対応するビットレートは、比較的大きくなる。従って、ループ内フィルタについてのパラメータと関連したビットレートを低減させることが望ましい。本発明に係る一実施例は、現在のブロックが一つ以上の隣接ブロックとの間でループ内フィルタについてのパラメータを共有する場合を示すマージ・フラグを使用する。さらにまた、当該ブロックは、ループ内フィルタについてのパラメータに対応するビットレートを低下させるために、複数のＬＣＵを含むことが可能である。マージ・フラグは、暗黙的に決定されることも可能である。例えば、左および上にあるブロックが、ループ内フィルタについての同じパラメータを有する場合、現在のブロックは、明示的にマージ・フラグを送信する必要なしに、自身の左および上にある隣接ブロックとの間でループ内フィルタについてのパラメータを共有する。ループ内フィルタについての情報は、圧縮された映像ビット列に組み込まれることが可能である。
【００１４】
現在のブロックに関するループ内フィルタのパラメータの共有動作は、隣接するブロックのうちの１つを選択することが可能であり、隣接するブロックとは、例えば、現在のブロックから見て左、上、右、左上、下、左下にあるブロックやその他のブロックなどである。２つのブロックが共に合併され、ループ内フィルタについての同じパラメータを共有することを示すためにマージ・シンタックスが使用される。図２は、ループ内フィルタについてのパラメータを、隣接するブロックとの間で共有することの一例を示す。現在のブロックＣが、ループ内フィルタについてのパラメータを隣接ブロックと共有しなければならないかどうかを判断するための例示的な方法を以下の通りに説明する。ブロックＡのＳＡＯ情報がブロックＢのＳＡＯ情報と等しくない場合、Ｘ１の値は１に設定される。さもなければ、Ｘ１の値は、ゼロに設定される。ブロックＤのＳＡＯ情報がブロックＢのＳＡＯ情報と等しくない場合、Ｘ２の値は１に設定される。さもなければ、Ｘ２の値は、ゼロに設定される。ブロックＤのＳＡＯ情報がブロックＡのＳＡＯ情報と等しくない場合、Ｘ３の値は１に設定される。さもなければ、Ｘ３の値は、ゼロに設定される。変数Ｘは、式「Ｘ＝Ｘ３*４＋Ｘ２*２＋Ｘ１*１」に従って計算することができる。変数Ｘは、現在のブロックと合併するための隣接ブロックを選択するために使用することができる。
【００１５】
例示的なマージ処理過程において、Ｘの値が７に等しい場合、マージ・フラグはブロックＣがループ内フィルタについての新しいパラメータを使用するかどうかを示すために組み込まれる。マージ・フラグが１の値を有する場合、ブロックＣは、ループ内フィルタについての新しいパラメータを使用し、さもなければ、ブロックＣは、ループ内フィルタについてのパラメータをブロックＡまたはブロックＢとの間で共有する。Ｘの値が５に等しい場合、マージ・フラグは、ブロックＣがループ内フィルタについての新しいパラメータを使用するかどうかを示すために組み込まれる。マージ・フラグが１の値を有する場合、ブロックＣは、ループ内フィルタについての新しいパラメータを使用し、さもなければ、ブロックＣは、ループ内フィルタについてのパラメータをブロックＡとの間で共有する。Ｘの値が３に等しい場合、マージ・フラグは、ブロックＣがループ内フィルタについての新しいパラメータを使用するかどうかを示すために組み込まれる。マージ・フラグが１の値を有する場合、ブロックＣは新しいループのフィルタパラメータを使用する、そして、さもなければ、ブロックＣはループのフィルタパラメータをブロックＢとの間で共有する。各ブロックは、ＣＵ、複数のＣＵ、ＬＣＵ、複数のＬＣＵまたは他のブロック構造であっても良い。当該ブロックは、異なるサイズに対応することも可能である。本開示において、当該ブロックは、符号化ブロックとも呼ばれる。
【００１６】
従来のアプローチにおいて、ＳＡＯ処理は、輝度成分に適用されるだけである。本発明に係る実施例は、ＳＡＯ処理が輝度成分に適用されるならば、ＳＡＯ処理をさらに彩度成分に対して選択的に適用する。ＳＡＯ処理が輝度成分に適用される場合、ＳＡＯ処理が彩度成分に適用されるかどうかを示すために、ＳＡＯ彩度フラグを使用することが可能である。彩度成分に関するＳＡＯ情報は、輝度成分または他の彩度成分に関するＳＡＯ情報から導出することが可能である。彩度成分が輝度成分または他の彩度成分との間でＳＡＯ情報を共有する場合、ＳＡＯ情報についての共有フラグはその旨を示すために使用することが可能である。ＳＡＯ情報は、オフセット値、ＳＡＯタイプ（本開示においては、「カテゴリ」または「クラス」とも呼ばれる）およびＯＮ／ＯＦＦ決定を含むことが可能である。一実施例においては、オフセット値のうちの１つを選択するために１つのインデックスが使用されることを可能とするような態様で、オフセット値は予め定義される。ＳＡＯ情報は、複数のブロックがこれを共有するために、例えばＰＰＳまたはＡＰＳのようなビット列内、またはスライス・ヘッダ内のデータ・ペイロードの中に組み込まれることが可能である。
【００１７】
ＳＡＯパラメータと関連した情報は、予測的な方法を使用することにより以前に処理されたブロックのＳＡＯパラメータに基づいて符号化されることが可能である。オフセット値による符号化は内部ビット深さの増加量、フレーム間モード情報／フレーム内モード情報、動き情報、変換サイズ、量子化ステップ幅、残差の逆ブロック化情報、画像サイズおよび領域サイズに依存する可能性がある。例えば、内部ビット深さの増加量が１より大きい場合、オフセット値による符号化は１ビット分だけ増加する可能性がある。ＳＡＯ情報の他の例示的な符号化において、ＳＡＯパラメータは、量子化パラメータに従ってその符号化精度を変えることが可能である。ＳＡＯパラメータと関連したビットレートを減らすために、オフセット値に関する情報は、時間遅延的な態様に従って符号化されることが可能である。さらにまた、現在のスライスのＳＡＯ情報は、他のスライスまたは領域との間で共有されることが可能である。したがって、オフセット情報は、ピクチャ・パラメータ群（ＰＰＳ）の中に組み込まれることが可能である。現在のスライスまたは領域の符号化ブロックは、同じＳＡＯ情報を共有することが可能である。
【００１８】
従来のアプローチにおいて、多くの場合、ＳＡＯ処理は、ＤＦ処理の後に適用される。本発明に係る実施例は、１つのブロックに対してＤＦ処理とＳＡＯ処理のいずれか一方を選択的に適用することが可能である。代替的に、ＤＦ処理およびＳＡＯ処理は、再構成された同一のビデオ・データに適用されることが可能であり、両方の処理からの出力は線形結合される。
【００１９】
本発明に係る一実施例に従うならば、ＳＡＯに関する画素分類方法は、以下のような他の画素分類方法と組み合わされることが可能である。上述した他の画素分類方法とは、例えば、エッジ方向、画素輝度、画素変化、画素分散、画素のラプラシアン合計、高域フィルタリング結果、低域フィルタリング結果、高域フィルタリング結果の絶対値および隣接した複数の画素の平均値などである。例えば、バンド・オフセット（ＢＯ）またはエッジ・オフセット（ＥＯ）の１つのカテゴリは、ＥＯによって更に分割されることが可能である。他の具体例においては、ＥＯの１つのカテゴリは、ＢＯまたはラプラシアン合計によって更に分割されることが可能である。
【００２０】
従来のＥＯ分類において、３ｘ３ウィンドウ内における２つの隣接した画素は、現在の画素を異なるカテゴリまたはクラスに分類するために使用される。本発明に係る実施例は、３ｘ３ウィンドウ内における全ての隣接した画素に基づく改良された分類方法を使用することが可能である。現在の画素Ｃの周囲にある隣接した画素（Ｐ１〜Ｐ８）が図３において示される。一つの実施例として、クラス・インデックス「ClassIdx」は、以下の数式により定義されることが可能である：
ClassIdx  =  Index2ClassTable(  f(C,  P1)  +  f(C,  P2)  +  …  +  f(C,  P8))
上記の数式において、f(C,  Pn)は比較関数であり、Index2ClassTableは比較結果をクラス・インデックスに写像する写像関数である。上述した比較関数f(x,  y)は、以下のように定義されている。
【００２１】
【数１】
0005763210.tif 000002
上記の関数定義において、ｔｈは閾値である。
【００２２】
別の代替的な比較関数f(x,  y)として、比較関数f(x,  y)を以下のように定義することも可能である。
【００２３】
【数２】
0005763210.tif 000003
上記の関数定義において、ｔｈは閾値であり、ｓはスケーリング係数である。
【００２４】
改良されたＥＯ分類方法は、ＳＡＯおよび他の画素分類方法を組み合わせた複合的な画素分類方法に適用されることが可能である。例えば、上述した改良されたＥＯ分類方法によるエッジ・オフセット（ＥＯ）のカテゴリは、ＥＯまたはＢＯによって更に分割されることが可能である。
【００２５】
従来のアプローチにおいて、ＬＣＵに基づくＡＬＦ符号化のために使用される処理単位は、常に１つのＬＣＵである。ＡＬＦによる歪みの改良は、ＬＣＵのサイズと関係している。通常、より小さいＬＣＵは、ＡＬＦ設計がローカル特性により適合するように調整されることを可能にする。しかしながら、ＡＬＦパラメータに関連した情報の量は比較的一定であり、ＬＣＵのサイズから独立している。従って、より少ないＬＣＵサイズは、ＡＬＦパラメータに対応する情報と関連したより高いビットレートを結果として生じる。従って、符号化ビデオ・データが利用できる正味のビットレートは実質的に減少する可能性があり、システム性能は低下する可能性がある。この課題を解決するために、本発明に係る実施例は、複数のＬＣＵを、本開示においてフィルタ・ユニットまたは符号化ブロックとも呼ばれる１つのユニットにグループ化する。従って、同じＡＬＦはフィルタ・ユニットの全てのＬＣＵに適用され、ＡＬＦパラメータを組み込むのに必要とされるビットレートを減らすために、ＡＬＦパラメータは１つのフィルタ・ユニット内の全てのＬＣＵの間で共有される。ＡＬＦパラメータの組は、フィルタ係数、フィルタ特性、フィルタ・サイズ、ＯＮ／ＯＦＦ制御および領域情報から成る一群の中から選択される一つ以上の要素を含むことが可能である。ＡＬＦ／ＳＡＯパラメータの組を格納するためにバッファが使用され、その結果、当該情報が他のフィルタ・ユニット、スライスまたはピクチャによって共有されることが可能となる。フィルタ・ユニットは、１つのピクチャまたは複数のＬＣＵと同じ大きさとすることが可能である。例えば、１つのフィルタ・ユニットは、ＭｘＮの複数のＬＣＵから成ることが可能であり、ここで、ＭおよびＮは、ゼロより大きい整数である。１つのフィルタ・ユニットの境界は、ＬＣＵ境界にアラインメントされることが可能であっても可能でなくても良い。フィルタ・ユニットが用いられる場合、ＡＬＦパラメータはフィルタ・ユニットと関連した統計に基づいて設計されることが可能である。設計されるＡＬＦパラメータは、フィルタ・ユニット内にある全ての画素に適用されることが可能である。符号化器は、ＭおよびＮの値を決定することが可能であり、フィルタ・サイズ情報をシーケンス層のＲＢＳＰ（Raw  Byte  Sequence  Payload）またはピクチャ層ＲＢＳＰの中に組み込むことが可能である。従って、複数のＬＣＵの間でループ内パラメータを共有することによって、ＡＬＦに対応する補助情報は減らされることが可能である。
【００２６】
１つのフィルタ・ユニットに関する複数のフィルタ候補は、下に位置する複数のフィルタ・ユニットに基づいて導出されることが可能である、または、複数のフィルタ候補は、現在のスライス内において以前に処理されたフィルタ・ユニットによって使用されるフィルタ候補の少なくとも一部を共有することが可能である。しかしながら、スライス内の第１のフィルタ・ユニットに関しては、現在のフィルタ・ユニットが共有すべき「以前に処理されたフィルタ・ユニット」はスライス内には存在しない。従って、第１のフィルタ・ユニットを処理するために、既定のフィルタ候補または他の手段を使用しなければならず、性能は低下する可能性がある。従来のアプローチにおいて、ＡＬＦパラメータは、他のフィルタ・ユニットからの情報を一切使用せずに１つのフィルタ・ユニット（一つのＬＣＵまたは一つのピクチャ）から導出される。本発明に係る一実施例は、現在のフィルタ・ユニットに関して幾つかのフィルタ候補を導出するための先行フレームまたは以前に処理されたフィルタ・ユニットからの情報を使用することを可能にする。例えば、先行フレーム内におけるＡＬＦ−Ｏｆｆモードを有するフィルタ・ユニットの統計は、１つのフィルタに関するパラメータを導出するために使用することが可能であり、当該１つのフィルタは、現在のフィルタ・ユニットに関する１つのフィルタ候補として使用することが可能である。先行フレーム内においてＡＬＦ−Ｏｎフィルタ・ユニットから導出されたフィルタは、その他のフィルタ候補として使用することが可能である。さらに、１枚のピクチャは、複数の区画に分割されることが可能であり、各区画内において、ＡＬＦ−ＯＮフィルタ・ユニットおよびＡＬＦ−ＯＦＦフィルタ・ユニットのそれぞれに関するフィルタが導出されることが可能である。これらのフィルタの中の１つが、現在のフィルタ・ユニットに関する一つのフィルタ候補として使用されることが可能である。現在のスライス内において以前に処理されたユニットの統計は、蓄積されることが可能であり、その結果、当該累積された統計に基づいてフィルタ候補を導出することが可能となる。
【００２７】
従来のＡＬＦ処理によれば、彩度成分の処理は、輝度成分の処理から独立しているか、または常に輝度成分の処理の後で実行される。本発明に係る実施例は、上記２つの方法を最適な形で合成する。１つのシンタックスは、彩度成分がフィルタリング処理されるかどうか示すために使用され、もう一つのシンタックスは、彩度成分が輝度成分との間でフィルタを共有するか、さもなければ、ビット列内に組み込まれたそれ自身のフィルタを使用するかを示すために使用される。従って、彩度成分のためのフィルタ係数は、輝度フィルタから導出されることが可能であるか、またはビット列から復号化されることが可能である。さらに、ＡＬＦパラメータと関連した補助情報を減らすために、彩度成分に関するフィルタのフットプリントは、輝度成分に関するフィルタのサブセットとすることが可能である。
【００２８】
以前のＡＬＦパラメータが共有される場合、現在のスライスにおける先行するフィルタ・ユニットのパラメータは、後続するフィルタ・ユニットによって再利用されることが可能である。ＳＡＯ処理に関して、先行する領域のパラメータまたは現在のスライスのＬＣＵは、以下の領域またはＬＣＵによって再利用されることが可能である。便宜上、用語「フィルタ・ユニット」は、「領域」または「ＬＣＵ」を指して言うことも可能である。以前のＡＬＦパラメータをどこまで遡って再利用することが可能であるかは、ユーザによって定義されても良いし、ピクチャのサイズに依存しても良い。ＡＬＦ／ＳＡＯ情報が共有される場合、ＡＬＦ／ＳＡＯ情報を導出することが可能であり、さもなければ、ＡＬＦ／ＳＡＯ情報は、以前に符号化された領域、以前に符号化されたピクチャ、又は以前に定義されたＡＬＦ／ＳＡＯ情報から複製することが可能である。ＡＬＦ情報は、フィルタ係数、フィルタ特性、フィルタ・サイズ、ＯＮ／ＯＦＦ制御および領域情報から成る一群の中から、一つ以上の要素を含むことが可能である。
【００２９】
各フィルタ・ユニットは、バッファ中に格納されている以前のＡＬＦ／ＳＡＯパラメータを選択するために、インデックスを使用することが可能である。当該インデックスは、ビットレートを減らすために、適応的にエントロピー符号化されることが可能である。例えば、より高頻度で選択される一組のＡＬＦ／ＳＡＯパラメータは、より短い符号ワードを割り当てられることが可能である。他の具体例においては、一つ以上の最も尤度が高いモードが決定される予測符号化技法を使用することが可能である。現在のインデックスが最も尤度が高いモードの中の１つに等しい場合、インデックスを符号化するために非常に短い符号ワードを使用することが可能である。さもなければ、それは、残りのインデックスの中のどれが現在のインデックスと同一であるかを識別するために、より多くのビットを必要とするだろう。当該技法は、フレーム内符号化モードにおいて使用する最も尤度が高いモードの符号化技法と類似している。当該インデックスに対応するシンタックスは、適応パラメータ群（ＡＰＳ）、ピクチャ・パラメータ群（ＰＰＳ）、スライス・ヘッダまたはスライス・データの中に組み込まれることが可能である。本発明に係る一実施例に従うならば、ＡＬＦに関連した情報は、適応パラメータ群（ＡＰＳ）、スライス・ヘッダ又はスライス・データ内に組み込まれることが可能であり、または、当該情報は、シーケンス・パラメータ群（ＳＰＳ）、ピクチャ・パラメータ群（ＰＰＳ）、適応パラメータ群（ＡＰＳ）またはスライス・ヘッダの中に組み込まれたフラグに基づいて、適応的に変更される。
【００３０】
適応ＡＬＦパラメータのシグナリングを可能にするための他の実施例において、ＡＬＦパラメータのインタリーブ処理フラグまたはＳＡＯパラメータのインタリーブ処理フラグは、各フィルタ・ユニット毎のＡＬＦパラメータが、スライス内のフィルタ・ユニット・データによってインタリーブされるか否かを指示するために使用することが可能である（前記したように、用語「フィルタ・ユニット」は、一つのＬＣＵまたは一つの領域にを指して言うことが可能である）。ＡＬＦパラメータのインタリーブ処理フラグまたはＳＡＯパラメータのインタリーブ処理フラグは、ピクチャ・パラメータ群（ＰＰＳ）、適応パラメータ群（ＡＰＳ）またはスライス・ヘッダの中に組み込まれることが可能である。さらにまた、インタリーブ処理を指示するための当該フラグは、ＡＰＳおよびスライス・ヘッダのような複数のＲＢＳＰの中に同時に組み込まれることが可能である。インタリーブ処理を指示するための当該フラグが複数のＲＢＳＰの中に存在する場合、当該フラグは複数のＲＢＳＰの中において同一の値を有しなければならない。したがって、本発明に係る実施例は、インタリーブ処理フラグを保護する冗長性の機能をさらに提供する。
【００３１】
ＳＡＯに関して、１つのＳＡＯ処理領域内におけるＬＣＵの最大数を示すために、フラグ「sao_max_region_size_minus_one」を使用することが可能である。１つのＳＡＯ処理領域内におけるＬＣＵの最大数は、「sao_max_region_size_minus_one」＋１に等しい。フラグ「sao_max_region_size_minus_one」は、ピクチャ・パラメータ群（ＰＰＳ）、シーケンス・パラメータ群（ＳＰＳ）、適応パラメータ群（ＡＰＳ）、スライス・ヘッダまたは上述したものの中の１つ以上の中に組み込まれることが可能である。同じＳＡＯ処理領域内における複数のＬＣＵは、同一のＳＡＯパラメータを共有することができる。例えば、「sao_max_region_size_minus_one」の値がゼロに等しい場合、１つのＳＡＯ処理領域内におけるＬＣＵの最大数は１に設定される。ＬＣＵに基づくシンタックス設計および「ｒｕｎ」符号化が使用される場合、「ｒｕｎ」値は、同じＳＡＯパラメータを共有しているＬＣＵの個数を示す。アプリケーションによっては、小さいＬＣＵサイズ（例えば１６ｘ１６）を使用することが可能である。この場合、ＳＡＯパラメータを共有している領域内における連続的なＬＣＵのランレングス符号化と関連したビットレートは、比較的高くなる可能性がある。従って、「ｒｕｎ」値は、同じＳＡＯパラメータを共有している領域の個数を示すために使用される。
【００３２】
ランレングス符号化は、ＡＬＦパラメータにも同様に適用されることが可能である。フィルタ・ユニットは１つのＬＣＵから成ることができ、この場合、フィルタ・ユニットに基づく処理はＬＣＵに基づく処理と同一になる。連続的なフィルタ・ユニットは、同じＡＬＦパラメータを共有することができる。ランレングス符号化は、現在のフィルタ・ユニットとの間でＡＬＦパラメータを共有している連続的なフィルタ・ユニットの個数を示すために使用され、その結果、ＡＬＦパラメータが共有されていることを示すためのビットレートを減らすことができる。
【００３３】
細かい粒度のスライスの場合、粒度ブロックは、１つのＬＣＵより小さくても良い。この場合、１つのＬＣＵは複数のスライス・データを含むことができる、すなわち、１つのＬＣＵはＡＬＦ／ＳＡＯパラメータの複数の群を含むことができる。本発明に係る一実施例は、１つのＬＣＵ内における全てのループ内フィルタのパラメータが同じ値となるように強制するだろう。
【００３４】
完全なピクチャが利用可能となるまで、ピクチャに基づくループ内設計は待機していなければならない。それは、処理遅延の原因となることがある。しかしながら、それは、基準ピクチャ以外のピクチャに関しては問題とはならない可能性がある。フィルタ・パラメータが導出された後に、本発明に係る実施例は、実際のフィルタリング処理ステップをスキップすることが可能である。そのかわりに、ピクチャに基づく方法においては、ループ内処理は、余分な符号化待ち時間や追加的な画像メモリ・アクセスを一切引き起こすこと無く、基準ピクチャ以外のピクチャに適用されることが可能である。
【００３５】
符号化器の側におけるループ内フィルタ処理は、２つの別々の処理ステップを必要とする。第１ステップにおいては、下に位置するＬＣＵまたはピクチャから統計が収集される。続いて、収集された統計に基づいて、ループ内フィルタについてのパラメータが導出される。第２ステップにおいては、ループ内フィルタについての当該導出されたパラメータに基づいて、ＬＣＵまたはピクチャ内の画素に対してループ内フィルタ処理が適用される。例えばＡＬＦ処理などのようなループ内処理の各々は、別々のステップで実行されるので、それは大量のデータ・アクセスを引き起こす可能性がある。本発明に係る一実施例は、関連するデータ・アクセスの量を減らすために、ループ内フィルタ処理ステップのうちの１つを他のループ内フィルタ処理と組み合わせる。例えば、ＡＬＦ／ＳＡＯ処理の第１ステップは統計を収集することであるが、それは例えば逆ブロック化プロセスのような他のＬＣＵに基づく符号化ツールと並行して実行されることが可能である。したがって、逆ブロック化プロセスの間、ＡＬＦ／ＳＡＯ処理に関する統計を収集することが可能である。従って、ＡＬＦ／ＳＡＯパラメータは、追加的な画像メモリ・アクセスを一切行うこと無しに、導出されることが可能である。ＡＬＦ／ＳＡＯ処理の第２ステップは画素データに対してフィルタリング処理を適用することを含み、それは後の動き推定プロセスの実行期間中に実行されることが可能である。従って、別個のメモリ・アクセスを一切実行すること無く、符号化器の側におけるＡＬＦ／ＳＡＯ処理プロセスを実行することが可能であり、それは本開示において、「ゼロ−パス符号化」と呼ばれる。復号化器の側においては、ＡＬＦ／ＳＡＯフィルタ設計のために統計を収集する必要は無い。にもかかわらず、復号化器は、動き補償の実行の間、ＡＬＦ／ＳＡＯフィルタリング処理を実行することによって、ゼロ−パス復号化の利点を得ることができる。
【００３６】
一部の低レイテンシ・アプリケーションに関しては、フィルタ・ユニットに基づく処理が好適である。フィルタ・ユニットに基づく符号化に関しては、フィルタ・ユニットの符号化結果が一旦利用可能となった後は、１つのフィルタ・ユニットのＯＮ／ＯＦＦ制御の決定は完了していると予測される。さらにまた、フィルタ・ユニットと関連した圧縮データは、１つのスライス内におけるループ内フィルタのパラメータによってインタリーブされるようにすることが好適である。一部の低レイテンシ・アプリケーションに関しては、スライス層におけるＯＮ／ＯＦＦ制御は、符号化待ち時間が長くなる原因となることがある。したがって、ループ内フィルタについてのパラメータが、１つのスライス内において符号化され、フィルタ・ユニット・データ（本開示においては、ブロック・データとも呼ばれる）によってインタリーブされる場合、本発明に係る一実施例は、スライス層におけるＯＮ／ＯＦＦ制御のフラグを常に明示的にＯＮを示すように設定する。代替的に、本発明に係る一実施例は、スライス層におけるＯＮ／ＯＦＦ制御のフラグを条件に応じて無効化することができる。ループ内フィルタについてのパラメータが１つのスライスにおいて符号化され、インタリーブされる場合、スライス層におけるＯＮ／ＯＦＦ制御のフラグは送信されない。さもなければ、スライス層におけるＯＮ／ＯＦＦ制御のフラグは、送信される。
【００３７】
従来の手法において、ＢＯおよびＥＯに関する各領域内のオフセットの個数は異なっている。本発明に係る一実施例は、ＢＯおよびＥＯに関する各領域内のオフセットの個数を画一化する。したがって、ＢＯグループの個数は８に変更され、各ＢＯグループは各領域について４個のオフセットを有する。グループ毎のオフセットの個数を減らすことにより、関連するビットレートを減らすことが可能となる。当該オフセットと関連したビットレートは、本発明に係る別の一実施例によっても減らすことが可能である。例えば、オフセットの範囲は、より狭い範囲に制約されることが可能である。これは、オフセットがより小さいことが予想される小さい領域に関して有益である。本発明に係る一実施例によれば、隣接ブロックに基づくオフセットの予測のために必要とされるバッファを減らすことができる。例えば、オフセットの予測は、現在のＬＣＵより上に位置するＬＣＵに関するオフセットを使用するのを回避することが可能である。ループ内フィルタリング演算は、非ブロック化フィルタ、ＳＡＯおよびＡＬＦを含む。本発明に係る一実施例によれば、輝度ＳＡＯ処理が有効化されているか否かに依存している彩度ＳＡＯ処理を条件付きで有効化することによって、彩度ＳＡＯ処理を改善することが可能である。本発明に係るもう一つの実施例では、ＥＯが選択される場合に、彩度成分および輝度成分に関するオフセットは共有されることが可能である。
【００３８】
様々なシンタックス設計は、本発明に係る例示的な実施形態として、本願明細書において図示される。図４は、本発明に従い、loop_filter_across_slice_flagが組み込まれた例示的なシーケンス・パラメータ群のシンタックス構造を図示する。loop_filter_across_slice_flagの値が１に等しい場合、ループ内フィルタリング演算はスライスの境界に跨って実行されることが可能である。loop_filter_across_slice_flagの値がゼロに等しい場合、ループ内フィルタリング演算はスライスから独立しており、演算はスライスの境界を跨いで実行されない。したがって、本発明に係る一実施例によれば、隣接ブロックに基づいてループ内フィルタに関するパラメータを予測する処理のために必要とされるバッファは、減らされることができる。
【００３９】
図５は、ＳＡＯパラメータのインタリーブ処理フラグをＡＰＳ内に組み込むことの一例を図示する。図５において、aps_idは、スライス・ヘッダ中において対応するaps_idを有するスライス内の符号化ブロックによって参照される適応パラメータ群（ＡＰＳ）を識別する。ＳＡＯパラメータのインタリーブ処理フラグ（すなわち、「aps_sao_interleaving_flag」）の値が１に等しい場合、aps_idによって示されるように、ＳＡＯパラメータは当該ＡＰＳを参照しているスライスに関するフィルタ・ユニット・データによってインタリーブされる。「aps_sao_interleaving_flag」の値がゼロに等しい場合、ＳＡＯパラメータは当該ＡＰＳを参照しているスライスに関するＡＰＳの中に組み込まれる。他のフラグ（すなわち、「aps_sample_adaptive_offset_flag」）は、フィルタのＯＮ／ＯＦＦを制御するために、当該ＡＰＳの中に組み込まれる。「aps_sample_adaptive_offset_flag」の値が１に等しい場合、ＳＡＯ処理はaps_idによって示されるＡＰＳを参照しているスライスについてＯＮされる。一方では、「aps_sample_adaptive_offset_flag」の値がゼロに等しい場合、ＳＡＯ処理はaps_idによって示されるＡＰＳを参照しているスライスについてＯＦＦされる。
【００４０】
図６は、本発明に係る一実施例に従い、ＡＰＳ内におけるＳＡＯパラメータに関する例示的なシンタックス設計（aps_sao_param(  )）を例示する。当該シンタックス構造は、ＳＡＯ処理のために必要とされるＳＡＯ情報を含む。例えば、当該シンタックス構造は、図６に示すsao_cb_enable_flagおよびsao_cr_enable_flagなどのフラグ類を含むことができ、これらのフラグは、ＳＡＯ処理が現在のピクチャのそれぞれの彩度成分に適用されるか否かを決定するためのものである。当該シンタックス構造は、ＬＣＵのサイズという意味でのピクチャのサイズに関する情報（例えば図６の「sao_num_lcu_in_width_minus1」および「sao_num_lcu_in_height_minus1」）をさらに含むことも可能である。当該シンタックス構造は、最大の符号化ユニット又はフィルタ・ユニットの各々毎に同じＳＡＯパラメータ又は個別のＳＡＯパラメータを使用して１つのスライス内の全ての符号化ユニットが処理されるか否かについての情報を含むことも可能であり、これらの情報は、図６中においてそれぞれ「sao_one_luma_unit_flag」、「sao_one_cb_unit_flag」、および「sao_one_cr_unit_flag」として示される。上述したフラグの中のいずれかが１の値を有する場合、組み込まれるであろうＳＡＯオフセット値は、共有すべきスライス内の符号化ブロックのそれぞれについてのsao_offset_vlc(  )である。当該シンタックス構造は、例えばsao_repeat_row_flag[cIdx]などの表示をさらに含むことが可能であり、当該表示は、符号化ブロックの現在の行（例えばＬＣＵの一つの行）内における符号化ブロックに関するＳＡＯパラメータが、それぞれの色成分インデックス（cIdx）について、上に位置する符号化ブロックと同一かどうかに関する表示である。
【００４１】
上記の例示的なシンタックス構造「aps_sao_param(  )」においては、ＳＡＯブロック構造「sao_unit_vlc(  )」もまた、それぞれのrepeat-rowフラグと共に組み込まれる。図７は例示的なシンタックス構造「sao_unit_vlc()」を例示し、当該シンタックス構造は符号化ブロック間でのＳＡＯパラメータの共有情報と関連した情報を含み、これらの情報は、例えば「sao_run_diff」および「sao_merge_up_flag」などである。符号化ブロックに対応するＳＡＯパラメータが、同じ行内において後続する複数の符号化ブロックにわたって反復される回数は、配列“saoRun[cIdx][rx][ry]”によって表される。上述した配列のインデックスcIdxは、色成分を特定する；cIdxは、それぞれ輝度luma、彩度Ｃｂまたは彩度Ｃｒに対応する０、１または２の値を有する。配列のインデックスｒｘおよびｒｙは、ピクチャの左上にある符号化ブロックから相対的に見て下に位置する符号化ブロックの位置を特定する。構文要素「sao_run_diff」は、現在行が第１の行である場合、現在の符号化ブロックの“saoRun[  ][  ][  ]”を特定し、さもなければ、現在の符号化ブロックの走査と上に位置する符号化ブロックの走査との間の差分を特定する。“saoRun[  ][  ][  ]”がゼロ以上の場合、sao_offset_vlc(  )内に含まれる複数の構文要素は左の符号化ブロックの対応する構文要素から導出される。構文要素「sao_run_diff」の長さは、Ceil（Log2（sao_num_lcu_in_width_  minus1−rx＋2））の値に等しいビット数である。フラグ「sao_merge_up_flag」の値が１に等しい場合、「sao_offset_vlc(  )」内に含まれる構文要素は、上に位置する符号化ブロックの対応する構文要素から導出される。フラグ「sao_merge_up_flag」がゼロに等しい場合、「sao_offset_vlc(  )」内に含まれる構文要素は、上に位置する符号化ブロックの対応する構文要素から導出されない。「sao_merge_up_flag」が存在しないときに、その値はゼロであると推定される。
【００４２】
図８は、本発明に係る一実施例に従って、「sao_offset_vlc()」に関する例示的なシンタックス構造を図示する。構文要素“sao_type_idx[cIdx][rx][ry]”は、BO（Band  Offset）またはEO（Edge  Offset）であっても良いＳＡＯタイプを示す。“sao_type_idx[cIdx][rx][ry]”が０の値を有する場合、それはＳＡＯ処理がＯＦＦであることを示し；“sao_type_idx[cIdx][rx][ry]”が１〜４の値を有する場合、それは、０°、９０°、１３５°および４５°に対応する４つのＥＯカテゴリの中の一つが使用されることを示し；そして、“sao_type_idx[cIdx][rx][ry]”が５の値を有する場合、それは、ＢＯが使用されることを示す。上記の実施例において、ＢＯタイプおよびＥＯタイプの両者は、４個のＳＡＯオフセット値を有する。
【００４３】
図９は、本発明に係る一実施例に従い、ＳＡＯパラメータが一つのスライス・ヘッダ内に適応的に組み込まれることを可能とするためのスライス・ヘッダに関する例示的なシンタックス構造を図示する。ＳＡＯ処理が有効化にされる場合、フラグ「sample_adaptive_offset_enabled_flag」によって示されるような他の条件に加えて、２つの追加的なフラグ、すなわち、「slice_sao_interleaving_flag」および「slice_sample_adaptive_offset_flag」がスライス・ヘッダ内に組み込まれる。「slice_sao_interleaving_flag」の値が１に等しい場合、ＳＡＯパラメータはスライス・データ内におけるフィルタ・ユニット・データによってインタリーブされる。「slice_sao_interleaving_flag」の値がゼロに等しい場合、ＳＡＯパラメータは、aps_idによって参照されるＡＰＳ内に組み込まれている情報を使用する。インタリーブ処理を示すためのフラグは、例えばＡＰＳおよびスライス・ヘッダ等のような複数のＲＢＳＰ内に同時に組み込まれることが可能である。インタリーブ処理を示すためのフラグが複数のＲＢＳＰの中に存在する場合、当該フラグは複数のＲＢＳＰ内において同一の値を有しなければならない。したがって、アクティブなＡＰＳが存在する場合、スライス・ヘッダ内における「slice_  sao_interleaving  _flag」の値はＡＰＳ内における「aps_sao_interleaving_flag」の値と同一となるだろう。「slice_sample_adaptive_offset_flag」の値が１に等しい場合、現在のスライスに関してＳＡＯ処理はＯＮ状態である。「slice_sample_adaptive_offset_flag」の値がゼロに等しい場合、現在のスライスに関してＳＡＯ処理はＯＦＦ状態である。同様に、アクティブなＡＰＳが存在する場合、「slice_sample_adaptive_  offset_flag」の値は「aps_sample_adaptive_offset_flag」の値と同一となるだろう。したがって、本発明に係る実施例は、インタリーブ処理フラグを保護するための冗長性の機能をさらに提供する。
【００４４】
図１０は、本発明に係る一実施例に従って、スライス・データが適応的なＳＡＯパラメータのシグナリングをサポートするための例示的なシンタックス構造「slice_data(  )」を図示する。図１０に示すように、「slice_  sao_interleaving  _flag」が１の値を有する場合、それぞれのＳＡＯ有効化フラグがＯＮであるならば、個々のＳＡＯユニット・データ（すなわち、sao_unit_cabac(  )）が組み込まれる。
【００４５】
図１１は、本発明に係る一実施例に従って、ＳＡＯユニット・データに関する例示的なシンタックス構造「sao_unit_cabac(  )」を図示する。マージ・フラグ「sao_merge_left_flag」および「sao_merge_up_flag」は、現在の符号化ブロックが左に位置する符号化ユニットおよび上に位置する符号化ユニットのそれぞれとの間でＳＡＯオフセットを共有するか否かを示すために用いる。現在の符号化ユニットがＳＡＯパラメータを左に位置する隣接ブロックまたは上に位置する隣接ブロックとの間で共有しない場合、ＳＡＯオフセット「sao_offset_cabac()」が現在の符号化ブロックに関して組み込まれる。
【００４６】
図１２は、本発明に係る一実施例に従って、sao_offset_cabac(  )に関する例示的なシンタックス構造を図示する。構文要素“sao_type_idx[cIdx][rx][ry]”は、「BO（Band  Offset）」または「EO（Edge  Offset）」であっても良いＳＡＯタイプを示す。“sao_type_idx[cIdx][rx][ry]”が０の値を有する場合、それはＳＡＯ処理がＯＦＦ状態であることを示し；“sao_type_idx[cIdx][rx][ry]”が１〜４の値を有する場合、それは、０°、９０°、１３５°および４５°に対応する４つのＥＯカテゴリの中の１つが使用されることを示し；そして、“sao_type_idx[cIdx][rx][ry]”が５の値を有する場合、それは、ＢＯが使用されることを示す。上記の実施例において、ＢＯタイプおよびＥＯタイプの両者は、４個のＳＡＯオフセット値を有する。“sao_type_idx[cIdx][rx][ry]”が存在しない場合、“sao_type_  idx[cIdx][rx][ry]”は推定されることが可能である。例えば、「sao_merge_up_flag」の値が１に等しい場合、“sao_type_idx[cIdx][rx][ry]”は“sao_type_idx[cIdx][rx][ry−1]”に等しく設定される。さもなければ、“sao_type_idx[cIdx][rx][ry]”は、“sao_type_  idx[cIdx][rx  -  1][ry]”と等しくなるように設定される。
【００４７】
図１３は、ＡＬＦ情報を適応的に組み込むためのフラグをＳＰＳがサポートするためのシンタックス設計「seq_parameter_set_rbsp(  )」の実施例を図示する。図１３に示すように、フラグ「adaptive_loop_filter_enabled_flag」は、適応的なＡＬＦパラメータの組み込み操作が許可されるか否かを示すために使用される。「adaptive_loop_filter_enabled_flag」によって示されるように適応的なＡＬＦパラメータの組み込み操作が有効化される場合、別のもう一つのフラグ「alf_coef_in_slice_flag」はＡＬＦパラメータがどこに組み込まれるかについて示すために使用される。「alf_coef_in_slice_flag」の値が１に等しい場合、ＡＬＦパラメータに関するシンタックス「alf_param()」がスライス・ヘッダ内に組み込まれる。「alf_coef_in_slice_flag」の値がゼロに等しい場合、ＡＬＦパラメータに関するシンタックスalf_param()は、ＡＰＳ内に組み込まれる。スライス層のシンタックスにおいて、「alf_coef_in_slice_flag」の値が１に等しい場合、ＡＬＦパラメータはスライス・ヘッダ内に組み込まれることが可能である。さらにまた、ＡＬＦのＣＵに関するＯＮ／ＯＦＦ制御パラメータは、スライス層内に組み込まれない。
【００４８】
図１４は、図１３に関して上述した「adaptive_loop_filter_enabled_flag」および「alf_coef_in_slice_flag」の値に従って、ＡＬＦパラメータがスライス・ヘッダ内に適応的に組み込まれることを可能にする例示的なスライス・ヘッダ設計を図示する。「adaptive_loop_filter_enabled_flag」によって示されるとおりにＡＬＦが有効化される場合、スライス層においてＡＬＦが適用されるか否かを示すために、他のフラグ「slice_adaptive_loop_filter_flag」が使用される。スライス層においてＡＬＦが適用され、ＡＬＦパラメータがスライス・ヘッダ内に組み込まれていることを「alf_coef_in_slice_flag」が示す場合、シンタックス「alf_param(  )」はスライス・ヘッダ内に組み込まれる。一方では、スライス層においてＡＬＦが適用され、ＡＬＦパラメータがスライス・ヘッダ内に組み込まれないことを「alf_coef_in_slice_flag」が示す場合、シンタックス「alf_cu_control_param(  )」はスライス・ヘッダ内に組み込まれる。
【００４９】
図１５は、本発明に係る一実施例に従って、ＡＬＦパラメータに関する例示的なシンタックス設計を図示する。当該シンタックス構造は、ＡＬＦ処理のために必要とされるＡＬＦ情報を含んでいる。例えば、当該シンタックス構造は、例えばalf_cb_enable_flag等のようなフラグ、および、ＡＬＦ処理が現在のピクチャのそれぞれの彩度成分に対して適用されるか否かを決定する図１５記載の「alf_cr_enable_flag」を含むことができる。当該シンタックス構造は、ＬＣＵサイズを意味するピクチャ・サイズに関する情報（例えば、図１５記載の「alf_num_lcu_in_width_minus1」および「alf_num_lcu_in_height_minus1」）を含むこともできる。図１５において、「alf_one_luma_unit_flag」、「alf_one_cb_unit_flag」および「alf_one_cr_unit_flag」によってそれぞれ示されるように、当該シンタックス構造は１つのスライス内における全ての符号化ユニットが同一のＡＬＦパラメータを使用して処理されるのか、それとも最大の符号化ユニット毎に個別のＡＬＦパラメータ、又はフィルタ・ユニット毎に個別のＡＬＦパラメータを使用して処理されるのかに関する情報を含むこともできる。当該シンタックス構造は、例えば"alf_repeat_row_flag[cIdx]"等のように、符号化ブロックの現在の行内における符号化ブロックのＡＬＦパラメータが、それぞれの色成分インデックスcIdxに関して上に位置する符号化ブロックのＡＬＦパラメータと同一かどうかに関する表示をさらに含むこともできる。
【００５０】
図１６は、本発明に係る一実施例に従って、ＡＬＦ符号化ブロックに関する例示的なシンタックス構造「alf_unit(  )」を図示する。シンタックス「alf_unit(  )」は、複数の符号化ブロックの間におけるＡＬＦパラメータの共有情報と関連した情報を含み、これらは例えば、「alf_run_diff」および「alf_merge_up_flag」等である。符号化ブロックに対応するＡＬＦパラメータが、同じ行内において後続する複数の符号化ブロックにわたって反復される回数は、配列”alfRun[cIdx][rx][ry]”によって表される。当該配列のインデックスcIdxは色成分を特定し、cIdxは、それぞれ輝度luma、彩度Ｃｂまたは彩度Ｃｒに対応する０、１または２の値を有する。当該配列のインデックスｒｘおよびｒｙは、ピクチャ内の左上に位置する符号化ブロックから相対的に見て下に位置する符号化ブロックの位置を特定する。構文要素「alf_run_diff」は、現在の行が最初の行である場合、現在の符号化ブロックの"alfRun[  ][  ][  ]"を特定し、さもなければ、現在の符号化ブロックの走査と上に位置する符号化ブロックの走査との間の差分を特定する。alfRun[  ][  ][  ]がゼロ以上の場合、「alf_info(  )」内に含まれる構文要素は左に位置する符号化ブロックの対応する構文要素から導出される。構文要素「alf_run_diff」の長さは、Ceil(Log2(alf_num_lcu_in_width_  minus1  −  rx  ＋  2))の値に等しいビット数である。フラグ「alf_merge_up_flag」の値が１に等しい場合、「alf_info(  )」内に含まれる構文要素は、上に位置する符号化ブロックの対応する構文要素から導出される。フラグ「alf_merge_up_flag」の値がゼロに等しい場合、alf_info(  )内に含まれる構文要素は、上に位置する符号化ブロックの対応する構文要素から導出されない。「alf_merge_up_flag」が存在しない場合、その値はゼロであると推定される。
【００５１】
図１７は、本発明に係る一実施例に従って、ＡＬＦ情報「alf_info(  )」に関する例示的なシンタックス構造を図示する。シンタックス「alf_info(  )」は、ＡＬＦフィルタと関連した情報を含んでいる。例示的なシンタックス設計は、ＡＬＦバッファ内に格納されている複数のＡＬＦフィルタの中の１つを選択するためにインデックスを使用することができるような態様で、ＡＬＦバッファの使用をサポートする。例えば、「alf_new_filter_set_flag」の値が１に等しい場合、それは現在の符号化ブロックが新規なフィルタ群を使用することを示す。さもなければ、現在の符号化ブロックは、”alf_stored_filter_set_idx[cIdx]”の値に等しいバッファ・インデックスを有する格納されたフィルタ群を使用する。「alf_new_filter_set_flag」が存在しない場合、その値は１であると推定される。「alf_new_filter_set_flag」の値が１に等しい場合、"NumALFFiltersInStoredBuffer[cIdx]"の値はは１つだけインクリメントされ、ここで、NumALFFiltersInStoredBuffer[cIdx]は、フィルタ群内におけるフィルタの個数である。シンタックス"alf_stored_filter_set_idx[cIdx]"は、「cIdx」によって表される色成分に関する格納されたフィルタのバッファ・インデックスを特定する。構文要素"alf_stored_filter_set_idx[cIdx]"の長さは、Floor(Log2(Min(1,  NumALFFiltersInStoredBuffer[cIdx]  −  1    )    ＋  1の値に等しいビット数である  。構文要素「alf_no_filters_minus1」は、現在の符号化ブロックに関するフィルタ群の個数を導出するために使用され、ここで、「alf_no_filters_minus1」は、０から２までの値を有する。構文要素「alf_start_second_filter」は、第２のフィルタが適用される輝度サンプルに関するブロック適応（ＢＡ）モードのインデックスを特定する。構文要素”alf_filter_pattern_flag[cIdx][ry][rx][i]”の値が１に等しい場合、ｉ番目のＢＡモード・インデックスに関するフィルタ・インデックスは１だけインクリメントされる。構文要素”alf_filter_pattern_flag[cIdx][ry][rx][i]”の値がゼロに等しい場合、ｉ番目のＢＡモード・インデックスに関するフィルタ・インデックスは（ｉ−１）番目のＢＡモード・インデックスと同一である。構文要素"alf_pred_flag[  ][  ][  ][  ]"の値が１に等しい場合、現在の符号化ブロックに関するフィルタ係数は予測的な方法で符号化され、さもなければ、フィルタ係数は、直接符号化される。構文要素「alf_min_kstart_minus1」＋1は、適応型ループ・フィルタに関する輝度フィルタ係数についてのｋ次指数Golomb符号の最小次数ｋを指定する。構文要素"alf_golomb_index_flag[i]"は、輝度フィルタ係数のｉ番目のグループと（ｉ＋１）番目のグループとの間におけるｋ次指数Golomb符号の次数の差を指定する。各グループが異なる次数ｋを有することが可能な輝度フィルタ係数の複数のグループが存在する。構文要素"alf_nb_pred_luma_flag[cIdx][ry][rx][i]"の値が１に等しい場合、現在の符号化ブロックに関するｉ番目のフィルタのフィルタ係数は、空間的に隣接したフィルタ係数に基づいて予測的な方法で符号化され、さもなければ、フィルタ係数は、空間的に隣接したフィルタ係数を使用して符号化されない。構文要素”alf_filt_coeff[cIdx][ry][rx][i”]は、現在の符号化ブロックに関する適応型ループのフィルタリング処理において使用するｉ番目のフィルタのｊ番目のフィルタ係数を指定する。
【００５２】
上記の通りに本発明による改良されたＳＡＯおよび／またはＡＬＦ処理を組み込んでいるビデオ符号化システムの実施例は、様々なハードウェア、ソフトウェア・コードまたは両方の組合せによって実装ことができる。例えば、本発明の実施例は、ビデオ圧縮チップに集積される回路または本願明細書において記載されている処理を実行するためにビデオ圧縮ソフトウェアに組み込まれるプログラムコードであり得る。本発明の実施例は、本願明細書において記載されている処理を実行するためにデジタル信号プロセッサ（ＤＳＰ）によって実行されるプログラムコードであってもよい。本発明は、コンピュータのプロセッサ、デジタル信号処理装置、マイクロプロセッサまたはフィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）等によって実行される多くの関数をさらに含むこともできる。本発明によって実施される特定の方法を定義し、かつ機械で読み取ることができるソフトウェア・コードまたはファームウェア・コードを実行することによって、これらのプロセッサは、本発明の教示に従う特定のタスクを遂行するように構成されることができる。ソフトウェア・コードまたはファームウェア・コードは、異なるプログラミング言語および異なるフォーマットまたはスタイルで開発されることが可能である。ソフトウェア・コードは、異なるターゲット・プラットホームのためにコンパイルされることも可能である。しかしながら、本発明に従うタスクを遂行するようにコードを構成するソフトウェア・コードおよび他の手段の異なるコード・フォーマット、スタイルおよび言語は、本発明の精神と範囲から逸脱しない。
【００５３】
本発明は、その精神または主要な特徴を逸脱しない範囲で他の多種多様な形態で実施されることが可能である。本明細書中で説明されている実施例はあらゆる点で、単に例示的なものであって限定的なものではないと看做されるべきである。従って本発明の範囲は、上述した実施例の説明によってではなく、むしろ特許請求の範囲によって示される。請求項の記載の発明の技術的解釈と均等論の範囲内に属する全ての変形実施例は、本発明の技術的範囲内であるとされる。
【図１Ａ】
0005763210.tif 000004
【図１Ｂ】
0005763210.tif 000005
【図２】
0005763210.tif 000006
【図３】
0005763210.tif 000007
【図４】
0005763210.tif 000008
【図５】
0005763210.tif 000009
【図６】
0005763210.tif 000010
【図７】
0005763210.tif 000011
【図８】
0005763210.tif 000012
【図９】
0005763210.tif 000013
【図１０】
0005763210.tif 000014
【図１１】
0005763210.tif 000015
【図１２】
0005763210.tif 000016
【図１３】
0005763210.tif 000017
【図１４】
0005763210.tif 000018
【図１５】
0005763210.tif 000019
【図１６】
0005763210.tif 000020
【図１７】
0005763210.tif 000021