【文献】
I. S. Chong et al.,CE8 Subtest 2: Adaptation between Block-based and Region-based Filter Selection,Joint Collaborative Team on Video Coding (JCT-VC)of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 ,5th Meeting: Geneva, CH,2011年 3月,JCTVC-E505,pp.1-4
【文献】
Madhukar Budagavi,Simplification of ALF filter coefficients coding,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,9th Meeting: Geneva, CH,2012年 4月,JCTVC-I0346-r1,pp.1-8
【文献】
I. S. Chong et al.,AHG6: Comparison of block adatpive (BA) and region adaptive (RA) ALF,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,9th Meeting: Geneva, CH,2012年 4月,JCTVC-I0363_r4,pp.1-10
(58)【調査した分野】(Int.Cl.,DB名)
命令を含む少なくとも1つのコンピュータプログラムであって、前記命令は、コンピューティングデバイスによって実行された場合に、前記コンピューティングデバイスに対して、
再構築されたフレームのビデオデータを取得させ、
再構築されたフレームを複数の領域に分割するステップと、
領域フィルタを各領域に関係付けるステップであって、前記領域フィルタは、前記の対応する領域内の画素値に関係する一組のフィルタ係数を有する、ステップと、
前記再構築されたフレームを形成するブロックをブロック内の画素値の異なる勾配に関係する分類に分類するステップと、
個々の分類のためのブロックフィルタと前記分類に割り当てられたブロックの画素値に関係するフィルタ係数の組とを関係付けるステップとを含んで、前記ビデオデータの再構築されたフレームについて、複数のブロック領域適応組み合わせを生成させ、かつ、
前記再構築されたフレーム上の領域フィルタおよびブロックフィルタの両方を用いて、前記再構築されたフレームの前記画素値を変更させ、
前記命令は、前記コンピューティングデバイスに対して、
領域フィルタ計算から除外され、かつ前記組み合わせの一部であるように選択された1つまたは複数のブロック分類に属する前記再構築されたフレーム上のブロックに形成された開口部を除いて、前記再構築されたフレーム上の前記領域フィルタを使用させ、前記ブロックフィルタは、前記開口部においてブロックデータと共に使用され、
反復を形成することにより、前記組み合わせにおける前記ブロックの領域配置を変更させ、組み合わせの各反復は、異なる数の
(1)フィルタを共有するブロック分類、または
(2)フィルタを共有する領域、または
(1)および(2)の任意の組み合わせを有し、
複数の前記組み合わせのうちのどの反復が、前記再構築されたフレームの前記画素値を変更するために用いる最も低いレート歪を生じさせるかを判断させ、前記組み合わせの初期配置は、前記組み合わせの反復を形成することができる領域およびブロック分類の数に関して最大限度を確立し、
前記組み合わせは、
ブロックベースのフィルタ処理なしに実行される領域ベースのフィルタ処理と、
領域ベースのフィルタ処理なしに実行されるブロックベースのフィルタ処理と、のうちの少なくとも一方、または両方の代替的な組み合わせを含み、
レート歪みは、誤差値、一定ラムダ値、およびフィルタ係数ビットのカウントに関係するラグランジアン値を含み、
前記組み合わせのうちの少なくとも1つは、前記の利用可能なブロック分類のすべてよりも少なくなるように制限され、
前記領域またはブロックの反復は、前記フレーム全体の異なる数のフィルタに関係し、最大数のフィルタと1つのフィルタとの間で1ずつ増加し、
前記代替的な組み合わせは、前記ブロックベースのフィルタ処理のために異なるブロックサイズを用いる代替物を含み、少なくとも1つの代替的な組み合わせは、4×4ブロック解析に基づき、少なくとも1つの他の代替的な組み合わせは、8×8ブロック解析に基づき、
前記フレームは、任意選択で最高16個のフィルタに関係する16個の領域に最初に分割され、16個までのブロック分類が前記ブロックを分類するために利用可能であり、
各代替的な組み合わせは、所定の総数に等しい、いくつかの異なる領域フィルタといくつかの含まれる異なるブロック分類フィルタとを有し、前記総数は16であり、
16個の利用可能な領域フィルタおよび16個の利用可能な0から15まで番号付けされたブロック分類は、前記分類の番号が高いほどブロック内の画素値の前記勾配が高くなり、前記複数の組み合わせは、
12個の領域フィルタおよびブロック分類12〜15と、
8個の領域フィルタおよびブロック分類8〜15と、
4個の領域フィルタおよびブロック分類4〜15と、のうちの少なくとも1つの組み合わせを少なくとも最初に含み、
前記再構築されたフレームは、4×4に配列された16個の領域で定義され、前記領域フィルタは、各番号が同じフィルタを参照するように番号付けされ、前記再構築されたフレームの列の左から右に、および上から下に参照し、前記複数の組み合わせは、
前記16個の領域における合計12個の領域フィルタについて、0,1,4,5,11,2,3,5,10,9,8,6,10,7,7,6と、
前記16個の領域における合計8個の領域フィルタについて、0,0,2,2,7,1,1,3,7,5,5,3,6,6,4,4と、
前記16個の領域における合計4個の領域フィルタについて、0,0,0,1,3,0,1,1,3,3,2,1,3,2,2,2と、のうちの少なくとも1つを少なくとも最初に含み、
対称係数、非対称係数、および係数を有していないホールを含み、かつ前記ホールの位置の上、下、右、および左の隣接する係数である係数のパターンによりフィルタを使用させ、前記フィルタは、10個の固有の係数を含む19個の係数位置を有し、前記フィルタは、9×9のクロス、3×3の長方形、ならびに前記フィルタの斜めのエッジを形成し、前記斜めのエッジと前記クロスおよび長方形との間に前記ホールを配置する3つの係数位置を有する菱形形状であり、
フィルタ係数値を符号化または復号する代わりに、予め記憶されたフィルタ係数値を有する予め記憶されたフィルタに対応するコードブック値を符号化または復号させ、
値がフィルタ係数により頻繁に用いられるほどより短くなるコードを有する複数の可変長符号化(VLC)テーブルのうちの少なくとも1つを適応可能に選択することを含んで、前記フィルタ係数を符号化させ、同じ係数値の前記コードは、同じフィルタのどのフィルタ係数位置が符号化されているかに応じて変化し、フィルタ係数値がフィルタ係数位置に対する値のカバー範囲内にある場合には、単一コードを符号化し、かつ、前記フィルタ係数値が前記フィルタ係数位置に対する値のカバー範囲の外側にある場合には、エスケープコードおよび切り詰めたゴロムコードを符号化することを含むカバー符号化を用いることを含み、
他のテーブルからの結果と比較して最小のビット数が得られる前記VLCテーブルを選択させる、コンピュータプログラム。
【図面の簡単な説明】
【0004】
【
図1】ビデオ符号化システムのためのエンコーダの例示的な図である。
【
図2】ビデオ符号化システムのためのデコーダの例示的な図である。
【
図3】ビデオ符号化用の適応型品質回復フィルタ処理を示すフローチャートである。
【
図4】適応型品質回復フィルタ処理の例示的な一般的な処理を示すフローチャートである。
【
図5A】エンコーダにおけるビデオ符号化用の、かつコードブックなしに用いるための、適応型品質回復フィルタ処理の流れを示すフローチャートである。
【
図5B】エンコーダにおけるビデオ符号化用の、かつコードブックなしに用いるための、適応型品質回復フィルタ処理の流れを示すフローチャートである。
【
図5C】エンコーダにおけるビデオ符号化用の、かつコードブックなしに用いるための、適応型品質回復フィルタ処理の流れを示すフローチャートである。
【
図5D】エンコーダにおけるビデオ符号化用の、かつコードブックなしに用いるための、適応型品質回復フィルタ処理の流れを示すフローチャートである。
【
図5E】エンコーダにおけるビデオ符号化用の、かつコードブックなしに用いるための、適応型品質回復フィルタ処理の流れを示すフローチャートである。
【
図5F】エンコーダにおけるビデオ符号化用の、かつコードブックなしに用いるための、適応型品質回復フィルタ処理の流れを示すフローチャートである。
【
図5G】エンコーダにおけるビデオ符号化用の、かつコードブックなしに用いるための、適応型品質回復フィルタ処理の流れを示すフローチャートである。
【
図5H】エンコーダにおけるビデオ符号化用の、かつコードブックなしに用いるための、適応型品質回復フィルタ処理の流れを示すフローチャートである。
【
図6】フィルタ係数の配置を有する適応型品質回復フィルタの形状を示す図である。
【
図7】複数の領域に分割された例示的なフレームを示す図である。
【
図8】適応型品質フィルタ処理のための領域をマージすることによる、領域ベースおよびブロックベースの反復を説明するテーブルである。
【
図9】適応型品質回復フィルタ処理のための第1のブロック領域の代替的な組み合わせの領域に分割されたフレームを示す図である。
【
図10】適応型品質回復フィルタ処理のための第2のブロック領域の代替的な組み合わせの領域に分割された別のフレームを示す図である。
【
図11】第2のブロック領域の代替的な組み合わせで使用されるブロックの分類のテーブルである。
【
図12】適応型品質回復フィルタ処理のための第3のブロック領域の代替的な組み合わせの領域に分割された別のフレームを示す図である。
【
図13】第3のブロック領域の代替的な組み合わせで使用されるブロックの分類のテーブルである。
【
図14】適応型品質回復フィルタ処理のための第5のブロック領域の代替的な組み合わせの領域に分割された別のフレームを示す図である。
【
図15】第5のブロック領域の代替的な組み合わせで使用されるブロックの分類のテーブルである。
【
図16】第7のブロック領域の代替的な組み合わせで使用されるブロックの分類のテーブルである。
【
図17A】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17B-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17B-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17C-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17C-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17D-1-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17D-1-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17D-2-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17D-2-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17D-2-3】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17E-1-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17E-1-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17E-1-3】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17E-2-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17E-2-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17E-2-3】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17F-1-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17F-1-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17F-1-3】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17F-2-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17F-2-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17G-1-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17G-1-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17G-2-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17G-2-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17H-1-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17H-1-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17H-1-3】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17H-2-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17H-2-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17H-2-3】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17I-1-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17I-1-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17I-1-3】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17I-2-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17I-2-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17I-2-3】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17J-1-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17J-1-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17J-1-3】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17J-2-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17J-2-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17J-2-3】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17K-1】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17K-2】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図17L】本明細書の適応型品質回復フィルタ処理を用いたフィルタ係数の符号化を説明するための可変長符号化テーブルである。
【
図18A】デコーダのための、コードブックを用いない適応型品質回復フィルタ処理を示すフローチャートである。
【
図18B】デコーダのための、コードブックを用いない適応型品質回復フィルタ処理を示すフローチャートである。
【
図19A】エンコーダで使用するための、コードブックを用いた適応型品質回復フィルタ処理を示す詳細なフローチャートである。
【
図19B】エンコーダで使用するための、コードブックを用いた適応型品質回復フィルタ処理を示す詳細なフローチャートである。
【
図19C】エンコーダで使用するための、コードブックを用いた適応型品質回復フィルタ処理を示す詳細なフローチャートである。
【
図19D】エンコーダで使用するための、コードブックを用いた適応型品質回復フィルタ処理を示す詳細なフローチャートである。
【
図19E】エンコーダで使用するための、コードブックを用いた適応型品質回復フィルタ処理を示す詳細なフローチャートである。
【
図19F】エンコーダで使用するための、コードブックを用いた適応型品質回復フィルタ処理を示す詳細なフローチャートである。
【
図19G】エンコーダで使用するための、コードブックを用いた適応型品質回復フィルタ処理を示す詳細なフローチャートである。
【
図19H】エンコーダで使用するための、コードブックを用いた適応型品質回復フィルタ処理を示す詳細なフローチャートである。
【
図20A】デコーダで使用するための、コードブックを用いた適応型品質回復フィルタ処理を示す詳細なフローチャートである。
【
図20B】デコーダで使用するための、コードブックを用いた適応型品質回復フィルタ処理を示す詳細なフローチャートである。
【
図21】コンテンツ適応型品質回復フィルタ処理を提供するための動作の例示的なシステムを示す図である。
【
図24】別の例示的なデバイスを示す図であり、すべては本開示の少なくともいくつかの実施形態により構成されている。
【発明を実施するための形態】
【0005】
ここで1つまたは複数の実施形態について、添付した図面を参照して説明する。特定の構成および配置が説明されているが、これは例示のためだけであることを理解されたい。当業者であれば、本明細書の趣旨および範囲から逸脱することなく、他の構成および配置を使用することができることを認識するであろう。本明細書で説明される技術および/または配置が本明細書に記載されたもの以外の他の様々なシステムおよび用途でも利用され得ることは、当業者には明らかであろう。
【0006】
下記の説明では、たとえば、システムオンチップ(SoC)アーキテクチャなどのアーキテクチャにおいて実現することができる様々な実施形態を記載しているが、本明細書で説明する技術および/または配置の実施形態は、特定のアーキテクチャおよび/またはコンピューティングシステムに限定されるものではなく、同様の目的のための任意のアーキテクチャおよび/またはコンピューティングシステムにより実施されることができる。例として、たとえば複数の集積回路(IC)チップおよび/もしくはパッケージ、ならびに/または様々なコンピューティングデバイスおよび/もしくはセットトップボックス、スマートフォンなどの家電(CE)デバイスを用いた様々なアーキテクチャは、本明細書で説明される技術および/または配置を実装することができる。さらに、下記の説明では、ロジックの実施形態、システム構成要素のタイプおよび相関関係、ロジック分割/統合選択などの多くの具体的な詳細を記載している場合があるが、特許請求される主題はそのような特定の詳細なしに実施されることができる。他の例では、制御構造や完全ソフトウェア命令シーケンスなどのいくつかの題材は、本明細書に開示される題材を不明瞭にしないために、詳細に示していない場合がある。
【0007】
本明細書に開示される題材は、ハードウェア、ファームウェア、ソフトウェア、またはこれらの任意の組み合わせで実施されることができる。本明細書に開示される題材はまた、機械可読媒体に格納された命令として実施されることができ、それは1つまたは複数のプロセッサによって読み出されて実行され得る。機械可読媒体は、機械(たとえば、コンピューティングデバイス)によって読み取り可能な形式で情報を格納または伝送するための任意の媒体および/または機構を含むことができる。たとえば、機械可読媒体は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、電気的、光学的、音響的もしくは他の形態の伝搬信号(たとえば、搬送波、赤外線信号、デジタル信号など)、およびその他を含むことができる。別の形態では、非一時的なコンピュータ可読媒体などの物品は、一時的な信号自体を含まない点を除き、上記の例または他の例のいずれかと共に使用されることができる。それは、RAMなどのような「一時的な」方式で一時的にデータを保持することができる、信号自体以外の要素を含んでいる。
【0008】
本明細書における「一実施形態」、「実施形態」、「例示的な実施形態」などへの言及は、説明される実施形態が特定の特徴、構造、または特性を含むことができることを示すが、必ずしもすべての実施形態が特定の特徴、構造、または特性を含まなくてもよい。さらに、そのような語句は、必ずしも同じ実施形態を指しているわけではない。さらに、特定の特徴、構造、または特性が実施形態と組み合わせて記載されている場合には、本明細書で明示的に述べているか否かに関わらず、他の実施形態と組み合わせてそのような特徴、構造、または特性を実現することは、当業者の知識の範囲内であると考えられる。
【0009】
ビデオ符号化用の高コンテンツ適応型品質回復フィルタ処理に関するシステム、物品、および方法を下記に説明する。
【0010】
上述したように、ビデオ符号化を向上させる1つの方法は、HEVCおよび同様のビデオ符号化規格を拡張することにより、予測信号の品質を向上させるのに同様に役立つことができる再構築された信号の品質を向上させて、全体的なより高い圧縮効率を達成することである。具体的には、復号されたビデオ品質を符号化ループ内で整合フィルタ処理によってさらに向上させることができれば、再構築された画像品質を向上させるだけでなく、予測エラービットコストを低減する予測信号の品質の向上におけるフィードバック効果も有することになるので、ビデオ圧縮効率/品質をさらに向上させる。換言すれば、フレーム間ビデオ符号化における全体的なビデオ圧縮効率および圧縮利得は、符号化されなければならない残留データの量を低減するために、再構築されたビデオの画素データを入力ビデオとより良好に一致させるように、再構築されたビデオをフィルタ処理することによって向上させることができる。
【0011】
本明細書に記載する適応型品質回復(AQR)フィルタ処理手法は、HEVC HM7.1手法よりも良好な結果を提供することができるが、それは大きなフィルタ形状の使用に通常関係する複雑さを著しく増加させずに、より大きなフィルタ処理領域をカバーする、より効果的なフィルタ形状を使用しているからである。ここでは、文脈に応じて、フィルタまたはフィルタ形状は、画素位置(たとえばフィルタ形状の中心)上に配置されてその位置における画素値を変更するフィルタ係数(
図6)のパターンを指すことができる。一形態では、フィルタ(固定係数値を有する)をフレームの領域または一部にのみ使用することができるので、フレームは、すべてが同一のパターンを有するが、特定の領域では異なる係数値を有するいくつかのフィルタを有することができる。一例によれば、フィルタ形状内の画素位置が係数値を有しないように、フィルタ形状はホールを用いてより大きく形成されるので、パターンの外形寸法は比較的大きいままとなる。このようなフィルタは、同様にフィルタに必要な異なる係数の数を低減するために、下記に述べるように対称係数および非対称係数の両方を有することができる。
【0012】
AQRフィルタの効率を向上させる別の方法は、フレームのコンテンツに応じて調整可能な適応型フィルタを提供することである。したがって、一形態では、フィルタ係数は、1つまたは複数のフレーム全体に対して固定されたフィルタ係数を有するのではなく、フレームごとに、および、局所的適応と呼ばれる同一のフレームの異なる領域ごとに、独立に算出される。局所的適応に基づいてフィルタ係数を決定する2つの方法は、下記でより詳細に説明する領域に基づく方法およびブロックに基づく方法による。一般的には、領域に基づく方法では、フレームを形成するいくつかの物理的にマッピングされた領域の各々について、異なるフィルタが提供される。領域は、いくつかのLCUを含むのに十分な大きさとすることができる。領域が組み合わされ、またはより正確にフィルタを共有する最小レート歪みについて、異なる反復をテストすることができる。領域に基づく方法は、帯域幅については非常に効率的であるが、比較的大きな予測誤差が依然として生じ得るようにあまりに不正確な場合もある。
【0013】
別の形態では、ブロックに基づく方法は、各クラスは、ブロック内の画素値の階調の量を示す、いくつかのブロックの分類を提供する。ブロックは、4×4または8×8画素のように小さくてもよい。領域に基づく方法の場合のように、異なるクラスのブロックが同じフィルタを共有する反復は、どの反復を用いるのが最良であるかを決定するためにテストされる。ブロックに基づく方法は、領域に基づく方法よりもはるかに正確であり得るが、より多くのビットを使う場合がある。さらに、これまでのところ、これら2つの方法をバランスさせる解決策は決定されていない。本明細書では、本開示は、両方の方法の最も良い利点を保持するために、領域およびブロックに基づく方法の組み合わせを提供する。したがって、下記に詳細に説明するように、使用する最良のブロック領域の組み合わせを決定するために、1つまたは複数のフレームについて、代替的なブロック領域(BR)の組み合わせまたは配置をテストする。一形態によれば、AQRフィルタ手法は、領域およびブロックフィルタ処理手法の最良のものを、完全なブロック適応型から完全な領域適応型までの範囲にスケーリングできる単一アルゴリズムに結合し、さらにいくつかのタイプのコンテンツの符号化に必要となるであろうブロックと領域との組み合わせも提供する。このように、領域方法とブロック方法とのこの組み合わせにより、AQRフィルタは、高コンテンツ適応型の解決策を提供するものとして説明される。
【0014】
本明細書のAQRフィルタ処理手法はまた、フィルタ形状からの利得がフィルタ形状を符号化する任意の追加コストを上回ることを保証しようとして、わずかに大きいフィルタ形状に関係するフィルタ係数の効率的な符号化を導入する。ビデオシーケンスの各フレームは、16個までの異なるフィルタを有することができると仮定すると(それははるかに低くすることができるが)、各々は符号化する10個のフィルタ係数を有し、これらのフィルタ係数のすべてを符号化することはビットを多く使うことになるので、効率的な符号化が必要になる。これらの場合に圧縮利得を向上させる1つの方法として、1つの手法によって、AQRフィルタはまた、フレームごとに複数の異なるフィルタ係数を符号化することによって生じる損失を容易に相殺する高い圧縮利得を維持する効率的な符号化処理を用いる。これは、値がフィルタ係数値としてより頻繁に用いられるほど符号がより短くなる、任意選択の複数の可変長符号化(VLC)テーブルを提供することによって達成される。
【0015】
次により詳細に、
図1を参照すると、適応型品質回復フィルタ処理を行うための例示的なビデオ符号化システム100が、本開示の少なくともいくつかの実施形態により構成されている。種々の実施形態では、ビデオ符号化システム100は、上述した1つまたは複数の規格に従って、ビデオ符号化を行い、および/またはビデオコーデックを実装するように構成されることができる。さらに、様々な形態で、ビデオ符号化システム100は、画像プロセッサは、ビデオプロセッサ、および/または媒体プロセッサの一部として実装されることができ、インター予測、イントラ予測、予測符号化、および/または残留予測を行うことができる。種々の実施形態では、システム100は、1つまたは複数の規格または仕様、たとえば、高効率ビデオ符号化(HEVC)規格(ISO/IEC JTC/SC29/WG11およびITU−T SG16 WP3、「高効率ビデオ符号化(HEVC)テキスト仕様原稿8」(JCTVC−J1003_d7)、2012年7月を参照)、およびHEVC HM7.1などに従って、ビデオ圧縮および展開を実行し、および/またはビデオコーデックを実装することができる。システム100および/または他のシステム、方式、もしくは処理は、HEVC規格の文脈で本明細書において説明されることができるが、本開示は、任意の特定のビデオ符号化規格もしくは仕様、またはその拡張に必ずしも限定されるものではない。
【0016】
本明細書中で使用される「符号器」という用語は、エンコーダおよび/またはデコーダを指すことができる。同様に、本明細書で使用される「符号化」という用語は、エンコーダによる符号化および/またはデコーダによる復号を指すことができる。符号器、エンコーダ、またはデコーダは、エンコーダおよびデコーダの両方の構成要素を有することができる。
【0017】
いくつかの例では、ビデオ符号化システム100は、明瞭にするために
図1には示されていない追加の項目を含むことができる。たとえば、ビデオ符号化システム100は、プロセッサ、無線周波数型(RF)送受信機、ディスプレイ、および/またはアンテナを含むことができる。さらに、ビデオ符号化システム100は、明瞭にするために
図1には示されていない、スピーカ、マイク、加速度計、メモリと、ルータ、およびネットワーク・インターフェース・ロジックなどの追加の項目を含んでもよい。
【0018】
たとえばビデオ符号化システム100では、システムは、ビデオフレームのシーケンスに関するデータの形式で現在のビデオ情報を圧縮のために受け取ることができるエンコーダであってもよい。システム100は、各フレームをより小さいより管理しやすいユニットに分割して、フレームを予測と比較することができる。差または残差が元のフレームと予測との間で判定された場合には、結果として得られる残差は変換され、量子化されて、それからエントロピー符号化され、デコーダへビットストリームで送信される。これらの動作を実行するために、システム100は、画像再配列部102、予測ユニット分割器104、差分器106、残差分割器108、変換部110、量子化器112、エントロピーエンコーダ114、ならびに種々のユニットと通信し、および/またはそれらを管理するレート歪み最適化器(RDO)および/またはレート制御器116を含むことができる。制御器116は、正しい運動分割サイズ、正しい符号化分割サイズ、予測参照タイプの最良選択、およびモードの最良選択、ならびにCBR(固定ビットレート)符号化が有効になっている場合に全体的なビットレートを管理することの、レート歪みまたはシーン特性に基づく局所的適応選択を含む符号化の多くの態様を管理する。
【0019】
量子化器112の出力はまた、デコーダで生成される同じ予測を生成するためにエンコーダに設けられた復号ループ150に提供されることができる。このように、復号ループ150は、逆量子化部118および逆変換部120を用いてフレームを再構築し、残差アセンブラ122、加算器124、および予測ユニットアセンブラ126を用いて、各フレーム内で使用されるユニットを再構築する。次に復号ループ150は、対応する元のフレームと一致するように、再構築された画像の品質を向上させるためのフィルタを提供する。これは、デブロッキングフィルタ128、サンプル適応型オフセット(SAO)フィルタ130、適応型品質回復(AQR)フィルタ132(下記に示す詳細の主題である)、復号画像バッファ134、動き推定モジュール136、動き補償モジュール138、およびフレーム内予測モジュール140を含むことができる。動き補償モジュール138およびフレーム内予測モジュール140の両方は、特定のフレームの最良予測モードを選択するセレクタ142に予測を提供する。
図1に示すように、予測フレームまたはフレームの一部の形式のセレクタ142の予測出力は、次に、残差を生成する減算器106、およびフレームを再構築するために逆量子化からの残差に予測を加算する復号ループ内の加算器124の両方に提供される。
【0020】
より具体的には、フレームの形式のビデオデータを画像再配列部102に提供することができる。再配列部102は、符号化するのに必要とする順序で入力ビデオシーケンス内にフレームを配置する。たとえば、基準フレームは、それらが基準となるフレームより前に符号化される。画像再配列部はまた、Iフレーム(フレーム内符号化)、Pフレーム(以前の基準フレームからのフレーム間符号化)、およびBフレーム(以前のフレーム、後続のフレーム、またはその両方から符号化することができる双方向フレーム)などの分類にフレームを割り当てることができる。いずれの場合にも、フレーム全体が同じ分類であってもよいし、異なって分類されるスライスを有してもよく(したがって、IフレームはIスライスを含むことができる)、下記同様である。Iスライスでは、空間予測が用いられ、1つの形態では、フレーム自体のデータからのみ用いられる。Pスライスでは、時間(空間ではなく)予測は、フレーム間の動きを推定することによって行われることができる。Bスライスでは、2つの動きベクトルは、分割ユニット(PU)当たり2つの動き推定値を表し(下記に説明する)、時間予測または動き推定のために使用されることができる。換言すれば、たとえば、Bスライスは、Bスライスに対して過去、未来、または両方からのフレーム上のスライスから予測することができる。さらに、動きは、表示順序に関して過去または将来のいずれかで発生する複数の画像から推定されることができる。様々な実施形態では、動きは、上述したサイズに対応する様々な符号化ユニット(CU)またはPUレベルで推定されることができる。
【0021】
具体的には、HEVC規格が使用されている場合には、予測ユニット分割器104は、フレームを予測ユニットに分割することができる。これは、符号化ユニット(CU)(大符号化ユニット(LCU)とも呼ばれる)を用いることを含むことができる。この規格では、現在のフレームは、符号化分割器107によって符号化ツリーブロックの1つまたは複数のスライスに分割することにより、圧縮のために分割されることができる(たとえば、対応する彩度サンプルを有する64×64輝度サンプル)。各符号化ツリーブロックはまた、クワッドツリー分割方式で符号化ユニット(CU)に分割されることができる。さらに、クワッドツリーの各リーフCUは、動き補償予測のための分割ユニット(PU)に分割されることができる。本開示による様々な実施形態では、CUは、これに限らないが、64×64、32×32、16×16、および8×8などの様々なサイズを有することができ、一方、2N×2N CUでは、対応するPUはまた、これに限らないが、2N×2N、2N×N、N×2N、N×N、2N×0.5N、2N×1.5N、0.5N×2N、および1.5N×2Nを含む様々なサイズを有することができる。しかし、上記は単なる例示的なCU分割ならびにPU分割形状およびサイズにすぎず、本開示は任意の特定のCU分割ならびにPU分割形状および/またはサイズに限定されないことに留意されたい。
【0022】
本明細書で使用する「ブロック」という用語は、HEVCなどのビデオデータのCUまたはPU、あるいは4×4または8×8または他の形状のブロックを指すことができる。いくつかの代替例では、これは、別に定義されない限り、H.264/AVCなどのビデオまたは画素データのマクロブロックの分割としてブロックを考慮することを含んでもよい。
【0023】
またビデオ符号化システム100では、LCU、CU、および/またはPUユニットに分割された現在のビデオフレームを、動き推定モジュールおよび推定器136に提供することができる。システム100は、ラスタースキャン順に、画像の指定された単位において現在のフレームを処理することができる。ビデオ符号化システム100がインター予測モードで動かされる場合には、動き推定モジュール136は、現在のビデオフレームおよび基準ビデオフレームに応答して動きベクトルを生成することができる。次に動き補償モジュール138は、基準ビデオフレームおよび動き推定モジュール136から提供された動きベクトルを用いて、予測フレームを生成することができる。
【0024】
次に予測されたフレームを減算器106で現在のフレームから減算することができ、得られた残差は残差符号化分割器108に提供される。符号化分割器108は、残差を1つまたは複数の幾何学的スライスおよび/またはブロックに分割することができ、1つの形態によればCUを圧縮のためにさらに変換ユニット(TU)に分割することもでき、結果を変換モジュール110に提供されることができる。関連するブロックまたはユニットは、いくつかの例を挙げれば、可変ブロックサイズ離散コサイン変換(VBS DCT)および/または4×4離散サイン変換(DST)を用いて係数に変換される。制御器116によって設定された量子化パラメータ(Qp)を用いて、量子化器112は、次に、係数に対して非可逆圧縮を用いる。生成された一組の量子化された変換係数は、再配列され、エントロピー符号化モジュール114によりエントロピー符号化されて、ビデオ符号化システム100によって提供される圧縮されたビットストリーム(たとえば、ネットワーク・アブストラクション・レイヤ(NAL)ビットストリーム)の一部を生成することができる。種々の実施形態では、ビデオ符号化システム100によって提供されるビットストリームは、各ブロックを復号するために使用されるサイド情報(たとえば、予測モード、量子化パラメータ、動きベクトル情報、分割情報、ループ内フィルタ処理情報(デブロッキング情報(dbi)、SAOフィルタ情報(sfi)、およびAQRフィルタ情報(qri))など)に加えてエントロピー符号化された係数を含むことができ、送信または格納のために本明細書で説明する他のシステムおよび/またはデバイスに提供されることができる。
【0025】
量子化モジュール112の出力はまた、逆量子化部118および逆変換モジュール120に提供されることができる。逆量子化部118および逆変換モジュール120は、変換部110および量子化モジュール112によって行われる動作の逆を実施することができる。次に残差アセンブラ部122は、TUから残差CUを再構築することができる。次に残差アセンブラ部122の出力は、加算器124で予測されたフレームと結合され、粗い再構築されたフレームを生成することができる。次に予測ユニットアセンブラ126は、PUからフレームCUを再構築し、CUからLCUを再構築して、フレーム再構築を完了する。
【0026】
再構築されたフレームの品質は、次にデブロッキングフィルタ128、サンプル適応型オフセット(SAO)フィルタ130、ならびに品質解析器およびコンテンツ適応型品質回復(AQR)フィルタ132(ここではAQRフィルタと呼ぶ)によりフレームを実行することにより、より正確にされる。デブロッキングフィルタ128は、ブロックエッジを平滑化し、符号化の間に導入され得る可視ブロックノイズを除去する。SAOフィルタ130は、誤った強度シフトを調整するために、画素値に加算するオフセットを提供する。AQRフィルタ132は、フィルタ係数の1つまたは複数のセットまたはパターンを用いるが、それはフレーム、スライス、および/またはブロックの復号された画素に適用された場合に、復号された画素を元のフレーム、スライス、および/またはブロックデータの対応する画素により近くなるように変更でき、より正確でより高品質な復号されたフレームを提供する。このフレームは、次回の予測のための符号化ループで使用される場合に、次のフレームの符号化のためのより低い予測誤差を生成し、その符号化効率をさらに向上させ、この処理をフレームごとに繰り返す。一形態によれば、品質解析器およびAQRフィルタ132は、復号されたフレームおよび元のフレームを解析して、最良の結果を生成するAQRフィルタの係数を算出し、符号化された係数はqri(AQR情報)としてビットストリーム内に配置される。qriはまた、AQRフィルタを再生して使用するデコーダに必要とされ得るフィルタブロックおよび/または領域ON/OFFマップ、ブロックおよび/または領域マージマップなどを含むことができる。AQRフィルタ132は、任意選択的にコードブック131を用いて、個々の係数値ではなくビットストリーム中により短いコードブックインデックスを配置してもよい。デコーダは、インデックスを復号して係数値を得るために同じコードブックを有してもよい。AQRフィルタについては、下記でより詳細に説明する。
【0027】
フィルタ処理されたフレームは、次に復号画像バッファ134に提供され、上で説明したように、フレームは、動き補償のための対応する予測フレームを構築するための基準フレームとして使用されることができる。ビデオ符号化システム100がイントラ予測モードで動かされる場合には、フレーム内予測モジュール140は、本明細書でより詳細には説明されないイントラ予測方式を行うために、再構築されたフレームを用いることができる。
【0028】
図2を参照すると、システム200は、デコーダを有してもよいし、またはデコーダであってもよく、ビットストリームの形式で符号化されたビデオデータを受け取ることができる。システム200は、エントロピー復号モジュール202でビットストリームを処理して、画素データおよび量子化された残差係数、ならびに動きベクトル、予測モード、分割、量子化パラメータ、およびフィルタ情報(dbi、sfi、qri)などを抽出することができる。システム200は、次に逆量子化モジュール204および逆変換モジュール206を用いて、残差画素データを再構築することができる。システム200は、次いで、残差符号化アセンブラ208、予測されたフレームに残差を加算する加算器210、および予測ユニットアセンブラ212を用いることができる。システム200はまた、ビットストリームのシンタックスで示され、かつ予測モードセレクタ(シンタックス制御モジュールとも呼ばれる)226により実施される符号化モードに応じて、イントラ予測モジュール224を含む第1の経路、あるいはデブロッキングフィルタ処理モジュール214、サンプル適応型オフセットフィルタ処理モジュール216、およびコンテンツ適応型品質回復(AQR)モジュール218を含む第2の経路のいずれかを用いる復号ループを使用して、得られたデータを復号することができる。AQRフィルタ218は、エンコーダからの係数を用いてフィルタのパターンまたは形状を再構築し、それからフィルタを用いて画素値を変更する。任意選択的に、ビットストリームは、コードブック219にアクセスするために用いられるインデックスを運んで、AQRフィルタ係数値に対応するコードブックから選択されたフィルタ(係数の組)を取得することができる。この第2の経路は、基準フレームとして使用するための、再構築されるとともにフィルタ処理されたフレームを格納し、ならびに、表示するため、または後で見るために格納するために、再構築されたフレームを送信する復号画像バッファを含むことができる。動き補償予測器222は、復号画像バッファ220から再構築されたフレームを読み出し、さらにビットストリームから動きベクトルを読み出して、予測されたフレームを再構築する。予測モードセレクタは、フレームごとに正しいモードを設定する。システム100および200に関して本明細書で説明したモジュールの機能性は、下記で詳細に説明されるAQRフィルタ132および218を除いて、当技術分野で良く認識されており、本明細書では詳細には説明しない。
【0029】
例示的な一実施形態では、代替的なブロック領域の組み合わせが、使用するのに最良の組み合わせを決定するために生成され、下記のようにフレームに用いるのに最良の(または最少の)数のフィルタを同様に決定する。
【0030】
図3を参照すると、フローチャートは、本開示の少なくともいくつかの実施形態により構成された例示的な処理300を示す。一般的に、処理300は、上述したビデオ符号化用の高コンテンツ適応型品質回復のためのコンピュータにより実施される方法を提供することができる。図示された実施形態では、処理300は、偶数に番号付けされた動作302〜310のうちの1つまたは複数によって示される、1つもしくは複数の動作、機能、または操作を含むことができる。非限定的な例として、処理300は、
図1、
図2に関して説明された動作を参照してここで説明されることになるとともに、例示的なシステム100、200、または後述される2200に関して説明されることができる。
【0031】
処理300は、「再構築されたフレームのビデオデータを取得する」こと(302)を含むことができ、それは特に、一例として逆量子化を有する復号ループおよびAQRフィルタを有するインループフィルタ処理による。
【0032】
処理300はまた、「ビデオデータの再構築されたフレームについて複数の代替的なブロック領域適応組み合わせを生成する」こと(304)を含むことができる、換言すれば、結果として生じる圧縮利得の低下を最小にしつつ(すなわち、結果として得られるレート歪みを最小にする)、予測残差の大幅な低減を提供するブロック領域(BR)ベースの組み合わせを生成するために、下記に説明するように特定のブロック分類のブロックを特定の領域配置と結合することが最良の結果を生成する、ということが見いだされた。一例によれば、領域は、ある領域から隣接する領域への画素値のジャンプをほぼ最小限に抑えるために、フレームの順にフィルタ番号が数値的に付される。領域はまた、後述されるようにフィルタを共有するように配置される。
図10は、フレーム1000上で0〜11の番号を付した領域フィルタを有する16個の領域のこのような例示的な配置を示す。また、例示的なブロック領域の組み合わせ1000により、ブロック・アクティビティ・クラス4、5(16の分類のうちの分類12〜15)のみが
図10のこの領域配置と結合されて、結果として生じるレート歪みを最小にしつつ、元のフレームと再構築されたフレームとの間の残差を低減するために、より正確な再構築されたフレームを最終的に形成する有利な組み合わせを形成することができる。これについては、下記でより詳細に説明する。
【0033】
このように、ブロック領域(BR)組み合わせ生成動作は、「再構築されたフレームを複数の領域に分割する」こと(306)を含むことができ、一例として16の領域を含むことができるが、他の量も用いられる。この動作はまた、「領域フィルタを各領域に関係付け、領域フィルタは、対応する領域内の画素値に関係する一組のフィルタ係数を有する」こと(308)を含むことができる。このように、一形態では、各フィルタは、フィルタが割り当てられた領域内の画素値に関係する係数値を有する。また、下記に説明するように、領域にフィルタが割り当てられている限り、これは、単一のフィルタを複数の領域に関係付けることができる状況を含んでいる。これは、領域が依然として別々に参照され、または別々に番号付けされていても、領域をマージすると呼ばれる(単一のフィルタがマージされた領域間で共有される)。
【0034】
処理300はまた、「再構築されたフレームを形成するブロックをブロック内の画素値の異なる勾配に関係する分類に分類する」こと(310)を含むことができる。これは、フレーム内の個々のブロックについて、ブロック内の画素値の勾配量を示す複数の分類の中でブロックの分類を決定することを含む。一形態では、16の分類があり、上述した例示的なフレーム1000では、分類のうちの4つのみがこのフレームのために使用される。
【0035】
処理300はまた、「個々の分類のためのブロックフィルタと分類に割り当てられたブロックの画素値に関係するフィルタ係数の組とを関係付ける」こと(312)を含むことができる。領域フィルタおよび領域と同様に、各ブロック分類に関係するブロックフィルタがあってもよく、下記に説明するように、単一のフィルタが、共有されることができるか、または複数の分類と関係付けられることができる。
【0036】
処理300はまた、「再構築されたフレーム上の領域フィルタおよびブロックフィルタの両方を用いて、再構築されたフレームの画素データを変更する」こと(314)を含むことができ、特に、最低レート歪みが生じる代替的なBR組み合わせ(あるいは領域およびブロック分類をマージする異なる方法を考慮するそれらの反復)を選択する。選択されたBR組み合わせ(あるいはBR組み合わせの繰り返し)のブロックフィルタおよび/または領域フィルタは、たとえばエンコーダによる予測もしくは他の解析目的であるか、または、デコーダによるフレームもしくは画像の表示のためであるかに関わらず、再構築されたフレームの画素値を変更するために使用されることができる。
【0037】
ここで
図4を参照すると、フローチャートは、本開示の少なくともいくつかの実施形態により構成された例示的な符号化処理400を示す。一般的に、処理400は、ビデオ符号化用の高コンテンツ適応型品質回復フィルタ処理のためのコンピュータにより実施される別の方法を提供することができる。図示された実施形態では、処理400は、偶数に番号付けされた動作402〜428のうちの1つまたは複数によって示される、1つもしくは複数の動作、機能、または操作を含むことができる。非限定的な例として、処理400は、
図1〜
図3および
図5〜
図17に関して説明された動作を参照してここで説明されることになるとともに、例示的なシステム100、200、および/または後述される2200を参照して説明されることができる。
【0038】
処理400は、元のビデオ(またはその結果データ)、および一形態では復号ループ内の再構築されたフレームを受け取ることを最初に含み、次に、輝度またはY画素データを用いて「一組のBR分割候補を選択する」(402)。候補の導出/選択は、最低歪み、最小ビット数、最良レート歪みのトレードオフ、現在のフレーム画像(アクティビティまたはオブジェクト)に対する最良一致などに基づくことができる。
図4に示す処理では、最良のBR分割候補が確立されると、BRの各領域またはブロックに対応する最適な(複数の)フィルタが、現在の復号されたYフレームを現在の元のYフレームと比較することによって算出される。このフィルタ算出は、たとえば、ウィーナーフィルタであってもなくてもよいが、特定のフィルタ形状、このフィルタ形状の対称または非対称係数の特定の配置、この形状の各フィルタ係数の特定の精度などを用いることができる。このフィルタの選択はまた、最良のコンテンツ適応、最良のレート歪みのトレードオフなどに依存する場合がある。下記に説明する代替的な処理500(
図5)では、所与の候補からの最良のBR組み合わせの最初の選択がなく、BR組み合わせのすべてが、最良のBR分割配置を決定するためにレート歪みのトレードオフについてテストされる。
【0039】
その後、Yフレームは、領域およびブロッククラスの一定量に分割され、一例では、16個のセグメント(各セグメントは、領域、またはブロッククラスであってもよい)404とすることができるが、他の量を用いてもよい。次にBRセグメント(領域、またはブロッククラス)は、N個のフィルタにマージされ(406)、より具体的には、どの領域またはブロッククラスがフィルタを共有すべきかが判断され、これはフレーム上で何個のフィルタNが用いられるかを同様に示す。これは、1〜16個のフィルタであってもよい。1つの手法では、16の異なる反復がテストされ、1〜16個のフィルタを有する各反復がテストされるまで、各反復は1つの付加的な結合を有する。
【0040】
最大相関を保ちつつ、ペアノもしくはヒルベルト走査、または2D空間を1D空間に変換する他の空間充填曲線走査(space filling curve scan)に沿って、領域は隣接する領域とマージすることができる。同様に、ブロッククラスは、アクティビティクラス(ここでは6つのレベルが定義される)の組み合わせに基づいて、そしてアクティブクラスについては、下記に説明するように方向(水平方向、垂直方向、または無方向)にさらに基づいて、隣接するブロッククラスとマージすることができる。マージの各反復または反復において、新しい一組のウィーナーフィルタが結果として得られた減少した数の領域および/またはブロッククラスについて算出され、レート/歪みトレードオフ(RD)値が反復ごとに、ある場合には、最後に残った領域およびブロッククラスのマージを含むすべてマージ可能性がなくなるまで、算出される。16回の反復から最小のRD値を提供するマージ解は、フィルタ処理される輝度(Y)フレームの成功したBR分割解であると考えられるが、この処理は符号化されたフレームのすべてについて繰り返される。レートR(ビット)の算出は、マージの反復に応じて、フィルタの係数の符号化のビットコスト×フィルタ数を加算することを含む。歪みDは、復号されたフレームとフィルタ処理された復号されたフレームとの差信号の絶対値として算出することができ、代替的な公式はこの差信号の誤差の2乗を用いてもよい。
【0041】
U、Vについては、UおよびV値は、通常、フレーム全体の色成分ごとに1つのフィルタのみで処理される。Nは1に設定される(408)。
【0042】
処理400は次に、下記に詳細に説明するが、N個のウィーナーフィルタを計算すること(410)を含み、それは使用されるフィルタの各々についてフィルタ係数を導出する計算である。処理400は、次に任意選択的に、コードブック414(または前述した符号131)からN個のコードブックフィルタを検索して選択すること(412)を含むことができる。コードブックは、種々の特性(シャープネス、コントラスト、動きなど)を有するテストビデオシーケンスを用いるテストケースで取得され、かつ本明細書で用いられた同じフィルタの形状およびサイズを有するフィルタ(たとえばフィルタ係数の組)を含むが、コードブックは選択するための複数のフィルタ形状およびサイズを有してもよい。1つの手法によれば、各フィルタは、単一8ビットの2進コードに対応することができ、本明細書の例示的なフィルタのパターン600の16個の係数を送信する必要がなくなる。格納されたコードブックフィルタは、たとえば差分絶対値の和(SAD)および/または平均二乗誤差(MSE)方法を用いて、コードブックフィルタ係数を、フィルタが使用されることになるフレーム画素データ(例えば対応する領域)と比較することにより、可能性のある使用のために選択されることができる。選択された各フィルタについて、算出されたフィルタおよびコードブックからのフィルタの両方が、レート歪み最適化(RDO)解析を用いて共に解析され、より低いレート歪みを有するフィルタが使用のために選択される(416)。しかし、各フィルタは、LCU単位(または他のブロック単位)によりLCU上で比較され、AQRフィルタを全く用いない場合よりもレート歪みが良好かどうかを判断する。ON/OFFフラグが、AQRフィルタを使用するか否かの選択に応じて算出される(418)。コードブックのオプションが利用可能である場合には、適応型品質回復(AQR)フラグ(aqr_cbook_flag)が設定され、コードブックがオプションではない場合には、AQRフラグは設定されない(この場合には、AQRフィルタBRフレームは、使用されるか、または使用されない)。
【0043】
処理400は、次にAQRフラグ(ならびにaqr_cbook_aqrフラグ)を符号化する動作(420)を含むことができ、輝度Y成分について、フィルタの個数ならびにマージ情報が符号化される(422)。可変長符号化(VLC)方法が過去のフィルタ428に基づいて選択され(424)、すべての3成分(Y、U、V)についてフィルタを符号化する。VLC方法は、単一フレームについて複数のAQRフィルタを符号化するにもかかわらず圧縮利得を維持または低減するために、最も頻度の高い係数値に対して最短のコードを用いることによって、フィルタ係数を符号化するためのバイナリVLCの代替的なテーブルを用いる。
【0044】
図5A〜
図5Hを参照すると、ここでより詳細に、フローチャートは、本開示の少なくともいくつかの実施形態により構成された例示的な処理500を示す。一般的に、処理500は、上述したビデオ符号化用の高コンテンツ適応型品質回復のためのコンピュータにより実施される方法を提供することができる。図示された実施形態では、処理500は、
図5A〜
図5Hに示すように番号付けされた動作501〜592のうちの1つまたは複数によって示される、1つもしくは複数の動作、機能、または操作を含むことができる。非限定的な例として、処理500は、
図1、
図2および
図6〜
図17に関して説明された動作を参照してここで説明されることになるとともに、例示的なシステム100、200、または後述される2200に関して説明されることができる。
【0045】
処理500は、コードブックなしのエンコーダ用AQRフィルタ処理を対象とする。1つの手法では、第1の画像(フレームまたは画像)P[cIdx]が入力され(501)、成分インデックスcIdxは0=輝度Y、1=彩度U、および2=彩度Vとして指定されている。動作503〜558のうちの様々なものが各成分について繰り返される。各成分について解析および符号化が完了されると、処理は収集されたデータを符号化し、シーケンスの最後のフレームに到達するまで、次のフレームまたは画像に移動する(動作590および592)。
【0046】
処理500は、成分インデックスcIdxが0かどうかをチェックすること(503)を含むことができる。そうである場合には、輝度Y値が解析される。そうでなければ、処理は動作533における彩度UまたはVの解析に進む。Y値を続けると、ブロック領域(BR)組み合わせカウンタインデックスbrIdxが0に設定され(504)、レート歪み値Dvalは無限大に設定される。Y値P[cIdx]の現在のフレームのすべてのLCUのAQRフラグが1に設定される(505)。各フラグは、AQRフィルタを用いる場合と用いない場合でどちらがレート歪みがより良好かを示す。チェックすること(506)は、BR組み合わせの最大数に到達したか否か、ここではBrIdxが8未満であるか否か(8個の利用可能な代替的なBR組み合わせを参照する)を判断するために行われる。そうである場合には、Yフレームが16個の領域およびブロック分類に分割され(507)、解析されている現在のBR組み合わせに応じて、フィルタ番号が個別に割り当てられるか、または共有するように割り当てられる。選択されたBR組み合わせは、Yフレームについての最初のブロック分類および領域配置であり、続いて下記に説明するようにレート歪みを最適化(あるいは、一例ではより正確に、最小化)するように変更される。
【0047】
具体的には、BR組み合わせを理解するために、フィルタ形状、ブロックに基づく適応および領域に基づく適応が最初に理解されるべきである。
図6を参照すると、フィルタ600は、ここでは特定のパターンに配置された1組のフィルタ係数を参照し、それはフレーム内の各領域およびブロックを解析するために使用されることができる。より進歩したフィルタ600が用いられ、それはフィルタ処理された画素(中心画素C13)の周囲のより広いエリアをカバーすることができ、一般的に誤差(予測残差)をさらに低減することができる。図示された例では、フィルタ600は、ここでは菱形形状に形成された33タップ(係数またはサンプル)を有するフレームの9×9エリアの部分集合である。フィルタ600は、9×9のクロス、3×3の矩形(矩形のコーナーがクロスに加えられる)、および菱形のコーナーを結び、菱形の外縁を形成する対角線で形成され得る。番号が付された各正方形602は、タップまたは係数位置604であり、フィルタが画素データのフレームにわたって覆われ横断されるときの画素位置に対応する。述べたように、33個のタップがある。タップは、部分的に対称であり、説明する一形態では中心点に関して点対称である。換言すれば、係数(またはタップ)C0、C2、C4、およびC7は中心点C13について上下対称であり、係数C9〜C12は点C13について左右対称であり、
斜めのエッジ係数C1、C3、およびC5は点13について対角対称であり、これら3つの係数の各々は、図示されたように4回使用される。対称位置は同じ係数値を有する(たとえば、C5は共に同じ値を有する)ので、対称値のうちの1つだけを符号化すればよい。フィルタ600はまた、少なくとも矩形のコーナーC6、C8、C14、およびC15、ならびに中心C13では部分的に非対称であってもよい。したがって、この例では、フィルタは、33個のタップで符号化される16個の固有の係数だけを有する。
【0048】
フィルタ形状はまた、パターン内にホールを配置することによって拡大される。ホールは、ここでは一般的に、係数を有しないが、空間のすべての4辺(上、下、右、および左)に隣接する係数を有する正方形または画素位置または空間608と呼ぶ。たとえば9×9個の係数の完全な正方形または菱形を用いることは、はるかに正確であり得るが、ビットロードコストが過大である。単にクロスおよび小さい矩形を使用する他の公知のパターンは、小さすぎて、しばしば不正確である。ホールならびに対称および非対称係数による拡大は、C13位置の中心画素値の正確な画素値を得るために、比較的大きな数の係数に考慮する妥協点を提供する。
【0049】
一形態では、中心C13は、0〜511の正の値(輝度または彩度値)を有するが、0〜1023などの他の実施例が存在してもよい。非中心係数は、−256〜255の正および負の値を有することができる。これについては、フィルタ係数の符号化に関して下記でより詳細に説明する。
【0050】
図10を参照すると、上述したように、領域に基づく適応(RA)は局所的適応の一形態である。領域に基づく適応により、フレームは複数の重複しない領域に分割され、少なくとも最初は、1つの局所的フィルタが各領域に適用された。ここでは、もしあれば、どの領域が同じフィルタを共有できるかを判断するために、領域が結合される。RAは、隣接する画素間の高い相関を利用して、隣接する領域では、隣接する画素のフィルタ係数は類似しており、フィルタ係数レートを節約するために共有され得ると仮定する。この適応は、1つの局所領域の明確な構造および繰り返しパターンを有する1つの映像に適している。たとえば、1つの画像は、上方部分のブルーの空、中間部分のグレーの建物、そして下方部分のグリーンの草で構成されている。領域は、画像の内容を概ね追跡することができるが、優先度は同じサイズである領域を形成することにある。したがって、一例では、フレーム1000は領域に分割され、ここでは、たとえばサイズがほぼ同じである16個の領域に分割される。領域は、LCUの正確な倍数にサイズ設定することができるので、LCUの境界も領域の境界を形成する。一形態では、すべての領域を同じサイズにできない場合には、領域の端の行または列が他の領域よりもわずかに小さいまたは大きいエリアを有することができる。あるいは、領域は、たとえば画像の内容によってサイズがわずかに異なってもよい。多くの代替例が存在する。
【0051】
例示的なフレーム1000では、物理的に隣接する数値的に番号付けされた領域に対して1つの領域が、1つのフレーム行の終わりから次の行の始まりまでラスター順に領域に番号付けすることにより発生し得るような画素値の大きすぎるジャンプを有しないように、領域が順序付けされる。したがって、この場合では、フレーム1000は2Dの画像において、最初の16領域の順序付けの一例を示す。これは、この例では、フレームを介して数値的に続く16点の1Dデータに4x4の2Dのデータをマッピングする特定の空間充填曲線と見なすことができる。フレームは多くの異なる数の領域に分割できることを理解されたい。
【0052】
またフレーム1000では、文脈に応じて、領域内の数字をフィルタ番号とすることができ、フレーム(図示されたように2つのフィルタ5など)内の番号の重複は、2つの領域がフィルタ(フィルタ5)を共有することを示し、これらの領域は結合またはマージされていると考えられる。具体的には、RAでは各領域が1つのフィルタを有することができるが、ビット予算に応じて、個々のフィルタが著しく異ならない場合には、隣接する領域は時には効率のためにフィルタを共有するべきである。エンコーダ側では、領域マージアルゴリズムは、後述されるRDO処理に基づいて隣接領域をマージする種々のバージョンを試行することによって領域の最良のグループ分けを見つけることができる。1つの極端な場合では、すべての領域が1つのフィルタを共有し、他の極端な場合では、各領域がそれ自体のフィルタを有する。デコーダに送信するためのフィルタのマッピングについても下記で説明する。
【0053】
図16を参照すると、ブロックに基づく適応では、ブロック適応型モードは、局所的配向ならびにラプラシアン・ブロック・アクティビティおよび方向情報を用いた反復により、4×4ブロックを16の分類に分類する。言い換えれば、ラプラシアン方程式は、ブロック内の画素値勾配(cIdx成分(ここでは輝度Y))および階調の方向を決定するために使用される。テーブル1600に示すように、16の分類内の階調量は6アクティビティクラス(0〜5)にグループ分けされ、方向=0は水平であり、方向=1は垂直であり、方向=2は優位な方向がないことを意味する。
【0054】
ラプラシアンアクティビティおよび方向情報は、各4x4ブロック内の画素を用いて下記のように算出される。
【0056】
ここで(i,j)は、ブロック内の画素である。次に、2Dラプラシアンアクティビティは、V
4×4およびH
4×4を加算し、その出力を6つのアクティビティクラス(すなわち、0〜5)に量子化することによって算出される。上述したように、方向は、下記のように、無方向(0)、水平方向(1)、および垂直方向(2)の3つのカテゴリのうちの1つに分類される。
【0057】
H
4×4≧2V
4×4であれば、方向は1である。
V
4×4≧2H
4×4であれば、方向は2である。
そうでなければ、方向は0である。
【0058】
2Dラプラシアン・アクティビティ・クラスおよび方向に基づいて、ブロックに基づくクラスがテーブル1600を用いて導出され、BAの16のクラスが得られる(なお、方向に関係なく0アクティビティクラスについては、分類は0である)。これらの式は、ブロックが一形態により領域よりも小さいものであれば、一例として8×8ブロックまたは他のブロックなどのいくつかの異なるブロックサイズにも適用することができる。
【0059】
図7、
図8を参照すると、領域およびブロック分類が理解され、ブロック領域に基づく代替的な組み合わせが説明されることができる。輝度については、ブロック領域(BR)方法の1つの目標は、画像を重なり合わない複数のセグメント(領域またはブロック分類とすることができる)に分割し、セグメントごとに、レート歪み(RD)が最小になるように1つのフィルタが適用されることである。16セグメント(たとえば、16領域について16フィルタ)から開始して、グリーディ(貪欲)アルゴリズムがセグメント(およびフィルタ)の数を1に減らし、それによって画像のセグメント(すなわちフィルタ)の最適下限数を求めることができる。換言すれば、いくつかの領域変動(または反復)が、第1の領域の反復がすべての16個のフィルタを有するように各反復によりフィルタを共有する領域のうちの2つを組み合わせることにより形成され、次の反復は15個のフィルタを形成するマージを有し、そして次の反復は前のマージを維持し、合計14個のフィルタに対して別の1つを加え、下記同様である。最良領域反復は、最低レート歪みを有するものである。
図7、
図8は、領域反復処理の一例を提供し、処理500の説明と共に下記でより詳細に説明される。
【0060】
この同じ手順はまた、ブロック反復16〜1をテストする場合のブロック分類にも適用することができ、この場合には、各反復が分類の異なるマージを有しており、ここで、単一のフィルタが分類のすべてによって共有されるまで、2つ以上の分類は同じフィルタを共有することができ、最小レート歪みを有するブロック反復が、使用のために選択されることができる。異なる領域反復は、特定のブロック分類と組み合わせて、符号化に使用されることができる最終BR組み合わせ配置を形成するために使用される。
【0061】
図9〜
図16を参照すると、図示された例は、領域の異なる配置を各々提供する8つの異なる代替的なBR組み合わせを提供する。これらのBR組み合わせは、領域およびブロック分類についての初期配置を提供し、それは、すべてのBR組み合わせおよび反復の中から、使用するための最小レート歪みを有するブロックの領域配置を決定するために、フィルタを共有する領域およびブロック分類をマージすることによって変更される。下記は、初期BR組み合わせである。
【0062】
第1のBR組み合わせ(BR1)を有するビデオフレーム900(
図9)は、各領域に1つの異なるフィルタを有する0〜15の番号が付けられた16領域を使用し、領域は番号付けされている。領域、そして言い換えると領域フィルタは、上述したように隣接領域間の画素値の差分が最小となるような順序で番号が付けられている。このBR組み合わせでは、フレーム900は、領域のみに分割される(ブロッククラスは使用されない)。さらに、BR組み合わせでは、フレームに使用される領域の最終番号は必ずしも16にはならないが(番号16は可能な領域の最大数を表すにすぎない)、実際にはマージにより、1〜16の任意の数であってもよいし、フレームごとに、ビットレートごとに、およびコンテンツごとに異なっていてもよい。
【0063】
第2の組み合わせ(BR2)(
図10)は、上述した領域配置を使用しているが、16領域を有するフレーム1000では、5、6、7、10の領域がマージされており、12個の領域フィルタのみが使用され、0〜11の番号が付けられている点が異なっている。
図11を参照すると、テーブル1100に示すように、4つのブロック分類(12〜15)がフレーム1000に使用されている。ブロックデータは、フレーム1000を形成する領域データに形成された開口部を埋めるために使用される。言い換えれば、ブロックデータの位置における領域データをブロックデータに置き換える。一実施例によれば、ブロックは、4×4であって、たとえば、例示的な目的のためにランダムな位置に示すブロック分類14などのブロック分類のうちの1つを有するブロック1002などである。完全な隣接する連続した領域はフレームを形成することができるが、フレーム1000は、領域が4x4の開口部などのホールまたは開口部を有する場合を示しており、選択されたクラスのブロックがこれらの領域から除去され(あるいは、より正確には、領域計算から除去され)、これらの開口部を埋めるブロック1002がフィルタ計算のために別個に検討される。また、一形態では、BR組み合わせは、領域の数とブロック分類の数との総数を16などの固定数に等しくすることができ、これは、この例ではBR組み合わせのそれぞれについて同じである。総数16(12領域および4ブロッククラス)は、フレームの分割の所望の柔軟性と、マージの反復数が大きくなるにつれて生じる複雑さと、追加ビットコスト対品質利得利益と、の間の妥当なトレードオフを提供する。さらに、このBR組み合わせでは、フレームに使用される領域およびブロッククラスの最終番号は必ずしもそれぞれ12および4でなくてもよく、これらの番号はそれぞれ可能な領域またはブロッククラスの最大数を表すにすぎない。
【0064】
図12、
図13を参照すると、第3のBR組み合わせ(BR3)は16の領域を有するフレーム1200を有し、領域の各々が1つの他の領域にマージされ、8個の異なる領域フィルタ(0〜7)だけが用いられる。この場合には、テーブル1300に示すように、8つのブロック分類だけが、フレーム1200に、ここでは3つの最もアクティブなアクティビティクラス3〜5において用いられる。ここでは、分類のうちの1つが、テーブル1300に示すようにアクティビティクラス3および4が方向=0のフィルタ/分類8を共有するようにマージされている。したがって、ブロックフィルタ(または、使用される分類)は9分類のための8〜15である(7〜15ではなく)。上述したように、領域はべたの領域ではなく、開口部のある領域であって、開口部は特定のクラスのブロックの切り抜き部を表す。また、8領域(フィルタ)と8ブロッククラス(フィルタ)との総数は、BR3について16である。前に示したように、領域およびブロッククラスの最終番号は8および8でなくてもよく、領域またはブロッククラスごとに、1〜8の異なる番号であってもよい。
【0065】
第4のBR組み合わせ(BR4)は、4×4ブロックの代わりに8×8ブロックが用いられていることを除けば、BR3と同じである。効率的であることが分かるよう用いることができるブロックのサイズについては、他の選択肢が存在することを理解されたい。そうでなければ、べたではなく切り抜き部または開口部のある領域に関する初期の特徴、ならびに最大許容値である領域およびブロッククラスの数が依然として適用される。
【0066】
図14、
図15を参照すると、第5のBR組み合わせ(BR5)が、4つの異なる領域フィルタ(0〜3)だけが用いられる16の領域を有するフレーム1400と共に示される。各領域フィルタは、4つの領域で共有されており、領域/フィルタは、上述したように領域から領域へ大きな画素値のジャンプを回避する数値的順序を維持するように番号付けされている。このBR組み合わせにおいても、テーブル1500に示すように、アクティビティクラス2〜5(より低いアクティビティクラス0〜1を省略)の12のブロック分類(4〜15)が使用される。さらに述べるように、領域は、べたでなくてもよく、考慮するブロックのクラスに対応するブロックのサイズで切り出されたホールまたは開口部を有してもよい。また上述したように、領域およびブロッククラスの最終番号は4および12でなくてもよく、これらの数は可能な最大の領域またはブロッククラスを示しており、実際の領域の数は1〜4であってもよく、ブロッククラスの実際の数は1〜12であってもよい。
【0067】
第6のBR組み合わせ(BR6)は、4×4ブロックの代わりに8×8ブロックが用いられていることを除けば、BR5と同じである。他のブロックサイズが同様に本明細書の実施例のいずれかに用いられることができることが理解されるであろう。先に述べたように、領域はべたではなくて開口部またはホールを形成する切り抜き部を有していてもよく、領域およびブロッククラスの数は最大許容値である。
【0068】
図16を参照すると、第7のBR組み合わせ(BR7)では、領域は使用されず、ブロック分類だけが使用され、一形態では、アクティビティクラス0〜5に分類された分類0〜15が用いられ、テーブル1600に示す通りである。前に示したように、ブロッククラスの最終番号はマージにより16未満であってもよい。上述したように、アクティビティクラス0はすべての方向0〜2について同じであり、残りの分類はテーブル1600に示すように横切るように番号付けされている。
【0069】
第8のBR組み合わせ(BR8)では、BR組み合わせは、4×4ブロックの代わりに8×8ブロックが用いられていることを除けば、BR7と同じである。前のように、ここでブロッククラスは、このBR組み合わせについて許可されたブロッククラスの最大数であればよい。
【0070】
これらの代替的なBR組み合わせが最も効率的であることが分かるが、本明細書で説明するように8つの組み合わせよりも多いまたは少ない多くの他の組み合わせ、ならびに異なる領域およびブロック配置を有する組み合わせを使用できることが理解されよう。たとえば、コンテンツがあまり複雑ではない場合には(たとえば、頭および肩のビデオ会議タイプのコンテンツ)、計算の複雑さを低減し、オーバーヘッドを低減するために、8より少ない組み合わせを使用してもよい。さらに、コンテンツが大量の詳細で平坦な領域の組み合わせを含み、かつ、より高いビットレートを許容することができれば、8より大きい組み合わせが望ましい場合がある。
【0071】
処理500に戻って、「brIdxによってYフレームを16クラスの領域/ブロックに分割する」こと(507)は、フレームを16の領域に分割することにより解析されるBR組み合わせを確立し、解析されるBR組み合わせ配置に従って領域フィルタを確立し、初期BR組み合わせパラメータに従ってBR組み合わせに使用されるブロック分類を確立することを意味する。図示された例では、これらは、フレーム/テーブル900〜1600(
図9〜
図16)により提供されるBR組み合わせ配置である。
【0072】
2パスカウンタrを0に設定して(508)、すべてのLCUがフィルタ係数値を確立するための計算に含まれている初期パスを提供し、後述のパスは、フィルタなしでレート歪みがより少ないLCUをより正確に省略することにより、補正されたフィルタ係数値を算出する(したがって、フィルタ処理なしでうまくいく)。処理500は、フラグが1に設定されたLCUだけが使用されるように、16クラス(フレーム分割または領域)に従って16のウィーナー自己相関行列R
xx[0…15]および相互相関ベクトルR
xy[0…15]を収集すること(509)を含む。最初のパスでは、Y(またはUまたはV)フレームのすべてのLCUが1に設定される(505)。
【0073】
ウィーナーフィルタの確立されている行列については、適応型フィルタ処理の基本理論により、相互相関および自己相関行列が蓄積され、それから次のようにウィナーホップ方程式を解くことにより最適なウィーナーフィルタを算出することができる。
【0074】
x(n)は入力信号(フィルタ処理前の再構築されたフレームの画素データ)、y(n)は出力(フィルタ処理後の再構築されたフレームの画素データ)、d(n)は元のフレームのデータとすると、h(n)はフィルタ係数を表し、nは1次元空間におけるサンプルの位置である(この定式化は本来1次元信号を意図したものであり、画像は2次元なので式は一般化されているが、概念は依然として適用する)。フィルタ出力は下記のようになる。
【0082】
である。ここで、P
dはスカラーであり、相互相関行ベクトルは下記のようになる。
【0086】
であり、各行列は、サンプルの収集から導出される(繰り返すが、1次元信号を意図しているが、2D画像について一般化した場合には、サンプルの収集は、スライス、フレーム、領域、またはブロッククラスを意味することができる)。最小誤差を見つけるために、下記のように導関数を求めて、0に設定する。
【0088】
hについて解くと、ウィーナーホップ方程式は次のようになる。
【0090】
ウィーナーホップ方程式は、平均二乗誤差における最適なフィルタ係数を決定し、得られたフィルタを「ウィナー」フィルタと呼ぶことができる。上式において、hはフィルタ係数のベクトルであり、R
xxは自己相関行列(または基準フレームのブロックデータ)であり、R
dxは相互相関行列/行ベクトル(ソースフレームと基準フレームのブロックデータとの間)である。
【0091】
ここで、ウィーナー行列を形成し収集する操作は、フィルタF[i]について16の可能性のある領域(あるいはセグメントまたはビン)ごとに1組の行列(R
xxおよびR
dx)を有することを指す。
【0092】
その後に、16のセグメント(または領域)またはビンをカウントダウンするためにnSegが16に設定され(510)、レート歪み最小値(RDmin)が無限大に設定される。セグメントカウンタiが0に設定され(511)、総推定コストCが0に設定され、総推定誤差Eが0に設定される。次に、処理500は、ウィーナーホップ方程式を用いて(上述したように)Rxx[i]およびRxy[i]からウィーナーフィルタF[i]を計算すること(512)を含む。これは、解析されている特定のnSegについてフィルタF[i]のフィルタ係数を設定することになる。
【0093】
フィルタ係数が設定されると、処理500は、F[i]を符号化することの推定コストをCに加算すること(513)に進む。このように、全ビットとフィルタ係数を符号化するのに必要とされるビットをカウントして合計し、Cに加算する。同様に、F[i]を適用することの推定誤差が誤差Eに加算される(514)。誤差Eは、フィルタ処理後の再構築された画素データと元のデータとの差である。次にiカウンタを1だけ進めて(515)、iがnSegよりも大きいか否かを判断するようにチェックして(516)、Yフレームについて最後の領域またはセグメントに到達したか否かをテストする。Yフレーム(YフレームのすべてのフィルタF[i]を含む)の総レート歪み(RD)が次式により算出される(517)。
RD=E+Lambda×C (18)
ここで、Lambda=1.5×λ
mode、λ
mode=α×W
k×2
((QP−12)/3.0)であり、符号化構成および画像タイプに依存する重み係数W
k(たとえばIフレームでは0.57、階層0のBフレームでは0.442など)、量子化パラメータQp、ならびにαパラメータに依存し、ここで、
【0095】
であり、ここで、1.0の値は非基準フレームに用いられ、1.0−Clip3(..)の値は基準フレームに用いられる。処理500は次に、RDがこれまで算出された最小のRDであるか否かを見るために、RD<RDminであるか否かを判断すること(518)を含む。そうである場合には、RDがRDminとして設定され(519)、nFilt[cIdx]がnSeg(Yフレームについての最小値フィルタ)として設定され、ここでnFilt[cIdx]は(Y,U,またはV)フレームのフィルタの総数である。
【0096】
フレームのRDは、実際には、領域フィルタおよびブロックフィルタからのRDを互いに加算することを含むことを理解されたい。これについては、下記でより詳細に説明する。
【0097】
図7を参照すると、フレーム700が16の領域(4×4)に分割された例示的なフレームとして示されており、開始領域もしくはLCUフィルタ番号および終了領域もしくはLCUフィルタ番号を示している。このように、1つの領域は0 0を有し、別の領域は1 1を有し、開始時および終了時で同じ番号であって、その領域はマージされていないことを示している。領域5、6、7および8についても同様である(マージされていない)が、たとえば境界領域であることによりサイズが小さいので、見やすさのために、開始および終了の領域もしくはLCUフィルタ番号の両方を示していない。
図7では、yCorrは相互相関ベクトルを表し、ECorrは自己相関行列を表し、pixAccは画素の累積値(平均値算出用)を表す。本明細書で他のフレームについて説明したように、領域は、領域から領域への画素値変化が最小となるように順序付けられる。
【0098】
図8を参照すると、処理500は、最小推定誤差をもたらす1対の隣接するクラスをマージするためにグリーディ(貪欲)アルゴリズムを実行すること(520)を含むことができる。例示的なマージ変動(または反復)テーブル800は、その行およびその行(16〜1)で使用されるフィルタの数に対応する反復数(nSegに対応)、ならびにフィルタF[i]に対応する列ごとのビン(フィルタラベル番号に対応)を含む。テーブル内の各正方形は、同じフィルタを共有し、したがってマージされた開始領域および終了領域(または共に列挙された2つの領域のLCUであり、
図5のクラスとも呼ばれる)を示している。たとえば、行16は、領域ごとに1つ、16個のフィルタが使用されることを示すにすぎない。16個の領域フィルタが使用される場合のビン(またはフィルタラベル番号)15については、この領域フィルタ15は、領域/LCU15で開始および終了に用いられる。反復1では、1つのフィルタ(フィルタ0)が領域0〜15のすべてに使用される。反復5は、ビン(またはフィルタ)3で1つのマージを有しており、ビンまたはフィルタ3は、領域3で開始、および領域4で終了に用いられ、合計15個のフィルタが使用される。反復14は、ビン3および7で2つのマージを有し、下記同様である。誤差およびビットコスト(係数ビットまたはcoeffbits)が算出されると、テーブル800に示すようにレート歪み(またはラグランジアン(Lagrangian、ラグランジュ))が反復(または行)ごとに算出される。テーブルが算出され、またはより正確には、同様のテーブルが2回、すなわち領域に基づくフィルタについて1回、およびブロックに基づくフィルタについて1回算出される。これはより高い計算をもたらすであろうと考えられるが、すべての領域およびブロッククラスの組み合わせの合計が16(純粋な領域に基づくフィルタ計算で用いられた同じ数)に維持されるので、実際にはそうではない。同じフレームについて得られたRD(ブロック領域)は、反復ごとに足し合わされる。16のすベての反復が完了した後に、最小レート歪み領域ならびに対応する領域およびブロック配置が、領域およびブロックフィルタに使用するための最良の候補として選択され得る。あるいは、領域およびブロック分類のマージ反復ならびにRDを別々に算出してもよく、2つの最良の候補反復(一方は領域に基づき、他方はブロックに基づく)を加算して、フレームごとの最終RDを形成する。
【0099】
特定の代替的なBR組み合わせについて、一形態では、16〜1個のフィルタによる反復についてレート歪みの合計を常に計算する代わりに、図示されたBR組み合わせBR1〜BR8などの各予め設定されたBR組み合わせが、しきい値または初期配置として機能し、BR組み合わせが共有される領域およびブロックフィルタの最大数および配置を設定する。この場合には、システムは、BR組み合わせにより提供される最大数で開始し、その時点から領域およびブロックフィルタについてフレーム全体で共有される1つのフィルタまで動作するマージにより反復をテストする。たとえば、BR2(
図12、
図13)は、8個の領域フィルタ(フィルタごとに1つのマージを有する0〜7)を用いる。反復処理は、8個のフィルタで開始し、それから1つのフィルタまで下方にインクリメントして、フレーム全体で共有される1つのフィルタまで下がる途中で反復ごとにレート歪みを算出する。この処理は、BR2の初期の8つのブロック分類と同様である。レート歪みは、8つのブロック分類から1つのブロック分類まで反復ごとに決定される。
【0100】
処理500に戻ると、一対のクラスまたは領域がマージされると、次の反復を解析するためにnSegがnSeg−1に設定され(521)、nSeg<=0であるか否かが判断される(522)。そうでない場合には、処理は動作511に戻り、次のセグメントまたは反復を解析し、動作511〜521を繰り返して、テーブル800と同様の反復ごとにレート歪みを決定する。そうである場合には、とにかくフィルタが使用されるべきか否かが判断される。このように、色成分YのLCUごとに、フィルタ処理した歪み(DF)およびフィルタ処理しない歪み(DWF)を算出し(523)、DF>DWFであれば、LCU AQRフラグを0にリセットする(そのLCUについてはフィルタ処理を省略すべきであることを示す)。
【0101】
処理500は、次に、2パスカウンタrを1だけ進めて(524)、r>1か否かを判断する(525)。そうでなければ、動作509〜522が繰り返され、フィルタ係数は、フィルタ処理により改善されたLCUのみを用いて算出される(動作509を参照)。rが1よりも大きい場合には、処理500は次に、現在のレートひずみ値RDval<RDminか否かを判断する(526)。そうであれば、RDvalはRDminに設定され(527)、brIdxMinはbrIdxに設定され、現在のBR組み合わせ(またはその反復)が最小レート歪みを有することを示す。そうでなければ、この動作はスキップされる。いずれにしても、処理500は、次の代替的なBR組み合わせを解析するために、brIdxをbrIdx+1に設定すること(528)に進む。最後のBR組み合わせ(BR8または他の最大BR数)に達したかどうかが判断される(529)。そうであれば、Yフレームは、brIdxMinによって16のブロッククラスに分割される(530)。BrIdxが最大数であるか否かに関わらず、処理500は、BrIdxが最大数(ここでは8)より大きいかどうかを見るためにチェックに進む。そうでなければ、処理は、次のBR組み合わせにより動作505〜520を繰り返す。そうであれば、処理は、色成分が完了したか否かをチェックする。
【0102】
具体的には、そうであれば、処理は、cIdx>0であるか否か(Y、U、またはVデータが解析されているか否か)をチェックする(532)。UまたはVが解析されている場合には、P[cIdx]のすべてのLCUのAQRフラグが1に設定され(533)、rカウンタが0に設定され(534)、nFilt[cIdx]が1に設定される。ウィーナー行列は、フラグが1に設定されているLCUだけが使用されるように、P[cIdx]について収集され(535)、ウィーナーフィルタFは、ウィーナーホップ方程式を用いて算出される(536)。解析されている成分がY、UまたはVであるかに関わらず、処理は再び合流して、フィルタ処理を省略するためにLCU AQRフラグを0に設定するべきかどうかを判断するために、DFとDWFとが比較される(537)。カウンタrがr+1に設定され(538)、r>1であるか否かがチェックされる(539)。そうでなければ、処理は、1に設定されたLCUのみで再びウィーナー方程式を実行する(0に設定されたものを省略する)。r>1が真である場合には、P[cIdx]色成分のすべてのLCUのAQRフラグが再び1にリセットされ(540)、歪みDFとDWFとが比較されて、DF>DWFである任意のLCUは、フラグが0に設定される(541)。
【0103】
その後、カウンタiが0に設定され(542)、フレームの総ビットコストcostAqrが同様に0に設定される。総ビットコストcostAqrは、costAqrにEstCost(F[cIdx][i])を加算することにより算出され(543)、それは成分cIdx(成分は、輝度Y、またはUもしくはVなどの彩度とすることができる)のi番目のフィルタのビットコストである。カウンタiがi+1に設定され(544)、次にnFilt[cIdx]がiより大きいかどうかを見るためにチェックされる(545)。そうでなければ、処理は、動作543に戻って、次のフィルタの歪みでcostAqrに加算する。そうであれば、costAqrは、costAqrとセグメントの数およびマージ間隔を指定するために用いられるオーバーヘッドとの和に設定される(546)。全色成分P[cIdx]の歪みdistAqrの推定値がAQRフィルタを使用して算出され(547)、AQRフィルタ処理なしの全色成分P[cIdx]の歪みdistOffの推定値が算出される(548)。レート歪みRDAqrが、Lamda×costAqrにdistAqrを加えることによって算出される(549)。RDAqrは、次にDistOffに対してチェックされる(550)。RDAqr(ビットコストを考慮した総歪み)がdistOffより小さければ、その(Y,U,またはV)フレームのフィルタを使用するために、フレームおよび成分[cIdx]のaqr_flag[cIdx]が1に設定される(552)。そうでなければ、aqr_flag[cIdx]は0に設定される(554)(フィルタは、色成分を有するそのフレームに使用されない)。いずれにしても、処理500は、cIdxをcIdx+1に設定すること(556)に進み、それからcIdxが3より大きいか否かをチェックする(558)。そうでなければ、処理500は、動作503に戻って、次の色成分(たとえばUまたはV)について解析を行う。そうであれば、cIdxが0に設定され(560)、解析されているフレームの各色成分のデータの符号化を開始する。
【0104】
フレームのaqr_flag[cIdx]が符号化され(562)、次に1に等しいかどうかを見るためにチェックされて、フィルタ処理が有効にされる(564)。そうでなければ、処理500は、この色成分の符号化をスキップし、動作586に進んで、符号化のための次の色成分に移動する。そうであれば(かつ、このフレーム上のこの成分についてフィルタ処理が有効にされた場合には)、現在の成分がYであるかどうか(cIdx=0?)が判断される(566)。成分が彩度UまたはVである場合(cIdx=1または2)には、ゴロム符号器がUまたはVフレームのフィルタ係数符号化(CC)方法として選択され(574)、一形態では、HM7.1 HEVCと同様に選択される。
【0105】
Yフレームが現在のフレームである場合には、フレームのセグメント(またはフィルタ)の数およびマージ情報が符号化される(568)。複数のフィルタと領域との関係を導出するために、領域とフィルタとの間のマッピング情報がデコーダに送出されるべきである。フィルタの数に関するシンタックス要素が、最初に送出される。このシンタックス要素は、3つの場合、すなわち使用される1つのフィルタ、2つのフィルタ、または2つより多いフィルタのうちの1つを示す。一例では、フレームは、0〜4に番号付けされた(ラベルされた)5つのフィルタ(またはマージした領域)を使用する領域0〜15を有してもよい。したがって、領域0〜15の1つの可能な実施例によれば、領域0〜3はフィルタ0を使用し、領域4〜5はフィルタ1を使用し、領域6〜10はフィルタ2を使用し、領域11〜12はフィルタ3を使用し、領域13〜15はフィルタ4を使用する。この実施例では、16のクラス/領域および5つの異なるフィルタがあり、これらの間のマッピングは、[0,0,0,0,1,1,2,2,2,2,2,3,3,4,4,4]のように記述することができ、差分パルス符号変調(DPCM)符号化を用いて、[0,0,0,0,1,0,1,0,0,0,0,1,0,1,0,0]のように符号化することができる。1つのフィルタまたは2つのフィルタがフレーム全体に使用される場合には、このマッピング情報は必要とされないことに留意されたい。1つのフィルタを用いる場合には、すべての領域をマージしなければならないので、マージ情報を符号化する必要はない。2つのフィルタを用いる場合には、第2のフィルタが適用を開始するインデックスが送信される。そして、3ビットのBR組み合わせ選択(brIdxMin)が符号化され(570)、ここでは8つのうちの、または他の組の予め設定されたBR組み合わせのうちの、どの代替的なBR組み合わせを、フレームの反復を決定するための基礎として使用すべきであるかを示す。
【0106】
図17A〜
図17Lを参照すると、次に過去のフレームフィルタを使用して最良の係数符号化(CC)方法が算出される(572)。より具体的には、輝度に対するフィルタ係数の符号化のために、いくつかの代替的な符号化方法のうちの1つを選択することができる。本実施例では、8つの異なるカバーに基づく方法と同様に、ゴロム指数に基づく方法が利用可能である。シーケンスの最初のフレームまたはシーンチェンジフレームなどの、符号化履歴が利用できない場合には、単純なk次ExpGolomb符号器が使用される(method=0)。単純なk次ExpGolomb符号器(
図17Aに示すように係数位置ごとにkが異なる)が、輝度フィルタのフィルタ係数を符号化するために使用される。図示された例では、k次ゴロムVLCテーブル1(
図17A)は、0〜4の範囲のk値を有する16個の係数(C0〜C15)を示している。提案された適応型符号化に使用されるk次ExpGolombは、提案されたフィルタ形状の16個のフィルタ位置のk値を使用する。k次ゴロムVLCテーブル2は、係数値に対応し、k値に依存するバイナリコードを示している。−33〜33の最も頻繁に使用される範囲のテーブルの一部のみが示されているが、残りのテーブルは、すべての係数値をカバーするように推定されることができる。バイナリコードは、次に、デコーダによる復号のためにビットストリームに書き込まれる。
【0107】
フィルタ履歴が利用可能である場合には、適応型符号化機構は、各フレームにおいてAQR符号化方法を選択するために、前に処理されたフレームからのフィルタを用いることによって、輝度フィルタに提供されることができる。一実施例によれば、履歴が存在しない場合のk次ExpGolomb方法の他に、可変長符号化を使用する8つのカバー方法であってもよく、それぞれテーブル4〜11(
図17D−1〜
図17K)に対応する。テーブル3(
図17C)は、カバー方法のいずれかに利用可能な切り詰めたゴロム(TG)符号化のための符号を提供し、テーブル12(
図17L)は、非0中心係数(本明細書で提供されるフィルタのパターン600の係数C13)のための符号を提供する。主カバーテーブル4〜11はそれぞれ分割され、たとえば、
図17D−1は係数C0〜C7の符号値を示し、
図17D−2は係数C8〜C15の符号値を示す。
【0108】
フィルタ係数の符号化のためのカバー方法は、ゴロム符号器とは異なり、別々に各係数位置で最も頻繁に発生する係数に特定のVLCを割り当てることを可能にする。この機構は、すべての係数位置について使用される。しかし、各フィルタ係数位置は、それ自体のカバーが割り当てられている。Golomb符号と共に合計8組のカバーVLCが、フレームごとに適応可能に切り換えられる。これは、適切なテーブルが選択された場合には、顕著なビット節約になる。各係数位置において、カバー方法は、「カバー」外の値を指示するエスケープコード(ESC)を用いつつ、特定のVLCを有する値の範囲を「カバーする」。したがって、値がカバーの内側であれば、単一のVLC符号がその値を符号化するために使用される。しかし、フィルタ係数値がカバーの外側にある場合には、エスケープコードが最初に符号化され、続いて、切り捨てられたゴロム(TG)符号器を用いて最近接範囲限界値を有する値の微分を符号化する。たとえば、所与の係数値のカバーを[−7,..,15]と仮定する。値3は、カバーの内側にあるので、値3に対応するVLC符号により単純に符号化される。たとえば、その値が−10であって、カバーの外側にある場合には、エスケープコードワードESCが最初に符号化され(符号化された値は、カバーの外にあることを示す)、次に最近接範囲限界値(ここでは−7)を有する微分が計算され、−10−(−7)=−3が得られる。次に、−3が切り捨てられたゴロム(TG)符号により符号化され、それは0が有効な値ではない単純なゴロム符号器であり、これにより各非0ゴロム符号の1ビットのプレフィックスが削除される(なお、微分は理論的には(−∞..−1]U[1..∞)の範囲である)。
【0109】
たとえばテーブル4(
図17D−1)を見ると、エスケープコード(ESC)がフィルタ係数ごとに最上行に沿って列挙され、フィルタ係数値がテーブルの側部に沿って列挙されている。テーブル4では、列挙された係数値は−30〜66であり(ただし、他のテーブルは異なる範囲を列挙してもよい)、ここで−6〜6は係数C0に対するカバー範囲と考えられる。−30より小さい、または66より大きい任意の値は、それらの限界値として同じ符号を受け取る。カバー範囲(−6〜6)の係数値については、その値は単に列挙されたバイナリ符号化で符号化されるにすぎない。範囲外の任意の値、たとえば−9については、その値はESC+TG[−3]により符号化され、これは−9から最近接カバー範囲限界(−6)を引くと−3なので、エスケープコードと切り捨てられたゴロム符号化TG[−3]との和を意味している。この微分が決定されると、TG[−3]のバイナリコードをテーブル3(
図17C)で調べることができる。他のテーブル5〜11も同様に動作する。
【0110】
非対称係数位置C14およびC15については、予測値微分が実際の値の代わりに符号化される。符号化される予測値微分を算出するために、係数C8が係数C14の予測として使用され、係数C6が係数C15の予測として使用される。
【0111】
8つのカバー符号化方法(テーブル4〜11に対応)の各々は、異なるカバー範囲を有することができる。カバー符号化テーブルはまた、テーブル間で同じ係数番号(または位置)を有する同じ係数値に対して異なるバイナリコードを有する。1つの手法よれば、最良のテーブルは、いわば「しらみつぶし」により見いだされ、各VLCテーブルがテストされ、そして、最小のビット数を生成するテーブル、言い換えると圧縮を最大にするテーブルが最良のテーブルであると考えられる。このテーブル(またはテーブルのインデックス)は、次にビットストリームで送出され、デコーダがフィルタ係数を復号するために同じテーブルを使用することができる。代替例では、いくつかのコンテンツ解析ノウハウが利用できる場合には、すべてより少ない数のVLCテーブルをテストすることができる。テーブルなどを選択するためには、いくらかの考慮すべきオーバーヘッドがあるが、これは、通常、些細なものである。
【0112】
VLCテーブルの生成は、下記の説明に基づいている。開始するための、ビデオ符号化における適応型アルゴリズム(ここでは、QRフィルタ係数の適応型エントロピー符号化)についての3つの理由は、(1)符号化されているビデオコンテンツ自体の画像特性(詳細/詳細でない、低速/高速動き、…)、(2)ビットレートなどの記憶/伝送帯域幅の制約、および(3)(高い)ビデオ品質(または同等であるが、高圧縮)の期待値である。この3つは共に、挑戦的ではない(容易な)ものから、低、中間、高、そして非常に挑戦的なものにまで及ぶ動作点を表している。一般に、挑戦するレベルが高いほど、より多くの適応性が必要とされる傾向がある。複雑さなどの他の実際的な問題が存在するが、これはここでは無視する。
【0113】
本明細書で提供される適応型システムは、いくつかの実施例による複数のVLCテーブルを必要する高圧縮の必要性を高めるが、相対的に低い復号複雑性を依然として維持しており、それはここでは算術符号化のタイプの方式を使用せずに回避された。したがって、VLCテーブルの中から選択するための機構は、VLCから十分に高い圧縮利得を提供しなければならず、そうでなければ、適応型QRフィルタの利得はより小さく見えるであろう。システムはまた、複雑になるすぎると機能しなくなる(またはビットを使いすぎる)ので、単純なままであるべきである。本システムは、8つのVLCテーブルの組に基づくシステムを用いて、これらのトレードオフを行う(さらに各係数はそれ自体のVLCテーブルを用いてもよい)。テーブル選択のオーバーヘッドと符号化係数の可能性のある利益との間で効率良くバランスをとることを可能にするので、8つのテーブルが用いられる。8つテーブルは、ヒューリスティックおよび実験(コンテンツおよびビットレート/量子化器に基づく)に基づいてトレードオフとして構築され選択された。このように、他の数のテーブルも適切に動作することができる。
【0114】
テーブル4〜11の具体的な係数カバーは、多数のビデオシーケンスのQRフィルタ係数を収集し、異なるビットレートおよび量子化値の下で統計的に処理し(平均、分散、ヒストグラムなど)、望むならコレクションまたは組を作成し、発生確率に基づいて各イベントにコードワードを割り当てることにより、導出することができる。通常、グループおよび/または組は十分に異なって作成されるので、隣接する範囲の間でいくらかのオーバーラップがあるが、新たな組を追加する圧縮利得の利益があるべきである。テーブル4〜11は、一般的には、テーブル4からテーブル9までの範囲で広く増加していく係数のいくつかのサブセットを表すが、傾向は必ずしもテーブル10〜11に連続していない。実際には、テーブルのいくつかは追加のコンテンツを用いた実験において作成され、カバー範囲のサイズは他のテーブルと適合しないように後で追加されたにすぎない。エンコーダの観点、VLCテーブル選択の観点、圧縮の観点、または復号の観点から、テーブルの順序は重要ではない。
【0115】
このように、データのいくつかはいくつかの単調な傾向に追従するが、すべてがそうなるわけではない。実際に、全体およびカバー範囲の問題は、異なる長さのVLCコードほど重要ではないが、(実際に各係数は全領域を可能にし、指定された範囲は、符号化が最も効率的であるが、より長いが使用可能なビットであるエスケープコードを用いて全範囲を扱う)異なるテーブルの同じ係数に割り当てられることができる。上述したように、VLCコード長は、係数値の出現頻度に依存する。フィルタ係数値が多く発生するほど、より短い符号がテーブルによってフィルタ係数値に割り当てられる。
【0116】
図17Lを参照すると、中心係数C13は、他のすべての係数の和から予測される。中心微分は0である可能性が最も高い。それが0であれば、中心係数は符号化されない。しかし、中心値が0でない場合には、テーブル12(
図17L)に列挙されているエスケープコードワード(Esc VLCコード)が、0でない中心を示すためにC12係数で使用される。次に、中心の実際の値は切り捨てられたゴロム符号器で符号化され、最後に符号化される(すべての非中心係数の和はデコーダで算出することができる)。具体的には、テーブル12は、中心係数(C13)と非中心係数の和との差分が0でないことを示すエスケープコードを列挙している。さらに、この場合に、0でない差分は最後の非中心係数と共に符号化され、エスケープコードの後に中心係数(C13)の差分が続き、その後に最後の非中心係数が続く。
【0117】
下記の付録Aは、テーブル4〜11の一部の例示的な実施形態を示す「C」プログラムコードのサンプル部分を示す。
【0118】
再び処理500に戻り、係数符号化方法が計算され選択されると、フレーム内のすべてのフィルタを符号化するためのカウンタiが0に設定され(576)、F[cIdx][i]のフィルタ係数が選択された係数符号化(CC)方法により符号化される(578)。処理500は次に、iに1を加算し(580)、i>nFilt[cIdx]であるかどうかをチェックする(582)。そうでなければ、処理は、符号化動作578に戻って次のフィルタを符号化する。そうであれば、LCUごとに、処理500は、成分P[cIdx]についてコンテンツ適応型バイナリ算術符号化(CABAC)によりLCU ON/OFFフラグを符号化し(584)、成分により、LCUをフィルタ処理すべきか否かを示す。
【0119】
処理500は次に、1を加算することによって成分値cIdxを変更すること(586)、およびcIdxが3より大きいか否かを判断すること(588)を含むことができる。そうでなければ、処理500は、動作562に戻って、フラグをセットし、次の色成分のデータを符号化する。そうであれば、最後のフレーム(または画像(pic))に到達したか否かを判断する(590)。そうであれば、処理は、このビデオシーケンスについて終了する。そうでなければ、画像順序カウント(POC)においてPが次の画像またはフレームに設定され(592)、処理は動作502に戻って、次のフレームまたは画像で処理を再開する。
【0120】
図18A、
図18Bを参照すると、フローチャートは、デコーダにおける、コードブックを使用しない、本開示の少なくともいくつかの実施形態により構成された例示的なAQRフィルタ処理1800を示す。一般的に、処理1800は、ビデオ符号化用の高コンテンツ適応型品質回復のためのコンピュータにより実施される別の方法を提供することができる。図示された実施形態では、処理1800は、偶数に番号付けされた動作1802〜1836のうちの1つまたは複数によって示される、1つもしくは複数の動作、機能、または操作を含むことができる。非限定的な例として、処理1800は、
図1、
図2および
図6〜
図17に関して説明された動作を参照してここで説明されることになるとともに、例示的なシステム100、200、または後述される2200に関して説明されることができる。
【0121】
処理1800は、P[0]=Y、P[1]=U、およびP[2]=Vである画像データPを有するビットストリームを入力すること(1802)を含むことができる。色成分インデックスカウンタcIdxが0に設定され(1804)、aqr_flg[cIdx]フラグが、復号され(1806)、フラグが1に等しい(フィルタ処理が成分(Y、UまたはVフレーム)について有効であることを示す)かどうかを調べるためにチェックされる(1808)。そうでなければ、処理は動作1830へ移って、同一のフレームの次の色成分を解析する。そうであれば、処理1800は、cIdx=Y(輝度)かどうかをチェックする(1810)。そうでなければ、ゴロムデコーダが係数符号化(CC)方法として選択される。しかし、そうであれば、フィルタの個数nFilt(またはセグメント)およびマージ情報が復号され(1812)、3ビットの選択された代替的なBR組み合わせインデックス(brIdxMin)が復号される(1814)。
【0122】
1つの手法によれば、デコーダは、過去のフレームフィルタから最良の係数符号化方法CC(0〜8)を計算するために、エンコーダにおいて解析を繰り返すことができる。たとえば、デコーダは、エンコーダにおいて計算される最後の5フレーム分のフィルタテーブルの選択の同じ頻度を計算することにより、エンコーダで使用される係数の復号のために暗黙的に同じテーブルを選択し、この情報を明示的に送る必要がなくなる。上で説明した方法0〜8の中から最良の係数符号化(CC)方法が、デコーダにより計算される(1816)。上述したように、過去のフレームフィルタ履歴が存在しない場合には、k次ExpGolomb符号器が選択され、そうでなければカバー方法のうちの1つが選択される。あるいは、VLCテーブル自体の識別がビットストリームに明示的に含まれてもよく、フィルタ係数を復号するために使用されることができる。この手法は、しかし、最良のVLCテーブルの識別をデコーダに明示的に送信するために必要とされる追加のビットコストにより、さらなるオーバーヘッドを発生させる。デコーダで使用する最良のテーブルを暗黙的に推定することにより、あるいは、エンコーダにより使用される最良のテーブルの識別子を必要な回数だけビットストリームから復号することにより、F[cIdx][i]のフィルタ係数を選択された係数符号化(CC)方式により復号する(1822)ことができる。また、フィルタカウンタiが0に設定される(1820)。
【0123】
フィルタ係数を復号した後、1をiに加算し(1824)、i>nFilt[cIdx]であるか否か(フレームの最小フィルタを解析したか否か)を判断するためにチェックする(1826)。そうでなければ、処理は、係数復号動作1822に戻って、次のフィルタの係数を復号する。そうであれば、LCUごとに、処理1800は、成分P[cIdx]についてコンテンツ適応型バイナリ算術符号化(CABAC)によりLCU ON/OFFフラグを復号する(1828)。次に、1をcIdxに加算して(1830)、cIdxが3より大きいか否かを判断するためにチェックする(1832)。そうでなければ、処理1800は動作1806に戻って、次の色成分(UまたはV)フレームを解析する。そうであれば、最後の画像(またはフレーム)が復号されたか否かをチェックする(1834)。そうであれば、処理は終了する。そうでなければ、PがPOCの順で次の画像に設定され、処理は動作1804に戻り、次の画像を復号する。フィルタ係数が復号されると、それらは、フィルタ処理された再構築されたフレームを導出するために、適切なフィルタ、LCU、および成分(Y,U,またはV)フレームで使用されることができる。
【0124】
下記は、コードブックのないAQRフィルタ処理を組み込むHEVCビットストリームシンタックスのサンプル擬似コードである。
【0125】
頭字語は下記の通りである。
uvlc(v)−値vの符号なしのVLC符号化
svlc(v)−値vの符号付きのVLC符号化
glmb(v)−値vのゴロム符号化
covr(v)−値vのカバーVLC符号化
tgc(v)−値vの切り捨てられたゴロム符号化(0でない場合)
cbac(v)−値vのCABAC符号化
【0129】
図19A〜
図19Hを参照すると、処理1900は、コードブックを用いたAQRフィルタ処理の例示的な方法であり、フィルタ処理のための圧縮利得を増加させるために、フィルタシステムは、フィルタ構造およびより長いフィルタ係数の符号化ではなく、デコーダにより短い符号を送信する選択肢を提供する。処理1900は、本開示の少なくともいくつかの実施形態により構成されている。一般的に、処理1900は、ビデオ符号化用の高コンテンツ適応型品質回復のためのコンピュータにより実施される別の方法を提供することができる。図示された実施形態では、処理1900は、
図19A〜
図19Hに示すように番号付けされた動作1902〜1988のうちの1つまたは複数によって示される、1つもしくは複数の動作、機能、または操作を含むことができる。非限定的な例として、処理1900は、
図1、
図2および
図6〜
図17に関して説明された動作を参照してここで説明されることになるとともに、例示的なシステム100、200、または後述される2200に関して説明されることができる。
【0130】
処理1900は、本明細書で説明したコードブックを対象とする動作を除いて、処理500に類似している。したがって、最初に、AQRフィルタを有効にするAQRフラグに加えて、コードブックフラグ(aqr_cbook_flag)を付加する。類似性の観点から、類似する動作については再度説明をすることはせず、処理500を参照されたい。異なる動作は次の通りである。
【0131】
フィルタのフィルタ係数を計算することを含む処理500の動作に加えて、処理1900は、予め設定されたフィルタ係数を有する予め設定されたまたは所定のフィルタのコードブックを使用する動作を含むことができるので、完全なフィルタ係数値の代わりに、より短い符号をエンコーダからデコーダに送信することができる。この場合には、他の計算された処理(BR組み合わせおよびマージテスト)に加えてコードブック値が使用され、最低レート歪みが得られる方法(コードブックに対して計算された)が使用するために選択される。このように、一形態では、下記に説明する異なる動作が、処理500の動作のいずれかを直接に置き換えるのではなく、処理500に追加される。他の代替例では、コードブックは、上述した3つの処理(BR組み合わせ、マージ反復、およびコードブック)のうちの利用可能な唯一の処理であってもよい。
【0132】
具体的には、動作1942までは、処理1900は、処理500と同じか類似していてもよく、それはカウンタiを0に設定し、costAqrが0に設定される同様の動作542を有する。動作1942では、costAqrが同様に0に設定される。しかし、処理1900では、次の動作は、フィルタnFilt[cIdx]を最も近いコードブックフィルタに適合させること(1944)とすることができる。これは、最良のコードブックフィルタの代表を見いだすためのコードブック検索を含むことができる。したがって、この場合には、コードブックは、各フィルタが本明細書で説明した単一菱形形状のフィルタに対応する16個の係数の係数セットを含む、複数の代替的なフィルタを含むことができる。一形態では、コードブックは、本明細書で説明した単一菱形形状に対応するフィルタだけでなく、他の形状も同様に含むことができ、それらのいくつかは菱形形状ほど複雑ではないが、他はより複雑であってもよく、これらのフィルタは、単一コードブックとしてまたはサブコードブックの形式で構成されることができる。一形態では、コードブックは、1つのサブコードブックが輝度(Y)フィルタを含むことができ、他のサブコードブックが彩度Uフィルタおよび彩度Vフィルタなどを含むことができるような、輝度/彩度サブコードブックから構成されることができる。別の形態では、コードブックはまた、異なるタイプのフィルタを含むことができ、いくつかは低細部の領域に適用することができ、他は模様のある領域に適用することができ、さらに他は端部に適用することができる。これらのフィルタは、異なるタイプのコンテンツに適していてもよいし、単一のコードブックとして暗示的に、または別個のサブコードブックとして明示的に構成されてもよい。使用されるコードブック戦略に応じて、最良のフィルタ(係数セット)を見つけるための探索は、容易でも難しくてもよいし、コンテンツに大きく依存してもしなくてもよいし、ビットレートの効率が良くても悪くてもよいし、メモリ集中であってもなくてもよいし、あるいは柔軟であってもなくてもよい。さらに任意のコードブックまたはサブコードブックは、ROM、またはRAMなどのダイナミックメモリに、あるいは他の手段によって、ルックアップテーブルとして実装されることができる。
【0133】
処理1900は、次に、対応するcIdx要素(またはセグメント)内の有効なLCUに、対応するAQRフィルタを適用することによって、歪みdistAqrを推定すること(1946)を含むことができる。処理1900は、対応するcIdx要素内の有効なLCUに、対応するAQRフィルタを適用することによって、歪みdistCbAqr(コードブックを有する歪み)を推定すること(1948)に進む。AQRフィルタおよびコードブックフィルタの両方のビットコストが推定される(1950)。costAqrは、処理500の動作543と同様にEstCost(F[cIdx][i])にcostAqrを加算することにより算出され、ここでEstCost(F[cIdx][i])は解析されているフィルタの推定されたコストである。同様に、コードブックコストの合計costCbAqrは、EstCost(FCb[cIdx][i])にcostCbAqrを加えることによって算出される。costCbAqrおよびcostAqrの両方は、最初に0に設定される。
【0134】
処理1900は、E+Lambda×Cなどの前述したRD計算と同様に、レート歪みRDAqrおよびRDCbAqrを計算すること(1952)を含む。RDCbAqr<RDAqrであるか否かを判断するためにチェックが実行され(1954)、そうであれば、コードブックフラグaqr_cbook_flagが1(有効)に設定され(1955)、そうでなければ0に設定される(1956)。これは、フィルタ[i]について、コードブック方法が、計算された方法よりも、そして言い換えるとそのフィルタに対応するセグメント(または領域またはブロック分類)よりも良好であるか否かを判断する。
【0135】
このコードブックフラグが設定された後に、処理500と同様の動作に戻る。したがって、フィルタカウンタiがi+1に設定され(1958)、i>nFilt[cIdx]であるか否かが判断される(1960)。そうでなければ、次のフィルタが解析され、処理は動作1944に戻って、次のコードブックフィルタを検索する。フレームのフィルタのすべてが解析された場合には、処理1900は次に、動作546と同様の動作1963に進み、最終的なブロックの領域配置を決定するための2つの動作がその点から先に同様に継続し、処理500で説明したようにその配置を符号化する。1つの違いは、処理1900がここで、フィルタの数およびマージ情報を符号化することに加えて、コードブックインデックス、ある場合には8ビットのコードブックインデックスを符号化することを含んでいるということである(動作1976)。実際的な理由から、サイズ256〜512フィルタ(各フィルタは16個の係数からなる)のコードブックは、フィルタの選択量、コードブックの記憶量、コードブックの検索の複雑さ、およびコードブックにインデックスを付けるためのビットオーバーヘッドを可能にする合理的な妥協を提供する。たとえば、コードブックサイズが256である場合には、0〜255の範囲の値を有する8ビットコードは、256個の格納されたフィルタのうちの任意の1つにインデックスを付けることができる。
【0136】
図20A、
図20Bを参照すると、処理2000は、コードブックを用いたAQRフィルタ処理のためのデコーダの動作を提供する。処理2000は、偶数に番号付けされた動作もしくは機能2002〜2040を含み、システム100、200および2200を含む、本明細書に記載した実施形態の多くに適用する。この処理2000は、処理1800と同様であり、同様の動作は繰り返されない。異なる動作は次の通りである。
【0137】
フラグaqr_flag[cIdx]が復号されるが(動作2006)、このフラグもフィルタ処理が有効であるかどうかを調べるために同様にチェックされる。そうでなければ、復号はコードブックを用いない場合と同じまたは同様に動作2022まで継続して、そこで復号されたコードブックフラグaqr_cbook_flagが1(有効)に設定されているか否かをチェックする。そうであれば、コードブックインデックスが復号されて(2024)、フィルタ係数を検索する。この動作の後に、コードブックフラグが1または0に設定されているか否かに関わらず、処理2000は、処理1800と同様に、選択された係数符号化(CC)方法によりF[cIdx][i]の係数を復号すること(2026)に進む。次に、復号処理2000は、そこから処理1800と同様に継続する。フィルタ係数が復号されると、それらはフィルタ処理された再構築されたフレームを導出するために、適切なフィルタ、LCU、および成分(Y,U,またはV)フレームで使用されることができる。
【0138】
ここで
図21を参照すると、システム2200は、動作で示した例示的なAQRフィルタ処理2100に用いられることができ、本開示の少なくともいくつかの実施形態により構成されることができる。図示された実施形態では、処理2100は、偶数に番号付けされた操作2102〜2126のうちの1つまたは複数によって示され、かつ代替的にもしくは任意に組み合わせて使用される、1つもしくは複数の動作、機能、または操作を含むことができる。非限定的な例として、処理2100は、本明細書に記載した実施形態のいずれかに関して説明された動作を参照してここで説明されることになる。
【0139】
図示された実施形態では、システム2200は、論理部もしくは論理回路もしくはモジュール2250などを有する処理部2220、および/またはそれらの組み合わせを含むことができる。一例として、論理回路またはモジュール2250は、ビデオエンコーダ100および/またはビデオデコーダ200を含むことができる。いずれかの符号器または両方は、それぞれAQRフィルタ部2252もしくは2254、および任意選択的にコードブック2256および2258をそれぞれ含むことができる(破線で示す)。
図22に示すように、システム2200は特定のモジュールに関係する動作または操作のうちの1つの特定のセットを含むことができるが、これらの動作または操作は、ここに示す特定のモジュールとは異なるモジュールに関係付けてもよい。
【0140】
処理2100は、「元のフレームおよび再構築されたフレームのビデオデータを取得する」こと(2102)を含むことができ、システム、または具体的にはAQRフィルタ部は、再構築されたフレームの画素データへのアクセスを取得することができる。これらのフレームは、すでにデブロッキングおよび/またはSAOフィルタによりフィルタ処理されていてもよいし、されていなくてもよい。データは、システム2200または2300で説明したように、RAMもしくはROMから、または他の永続的もしくは一時的なメモリ、メモリドライブ、またはライブラリから取得されるか、または読み出されることができる。アクセスは、たとえば、進行中のビデオストリームの解析のために連続的なアクセスであってもよい。
【0141】
処理2100は、「少なくとも1つの再構築されたフレームと共に使用するための複数の代替的なブロック領域適応組み合わせを生成する」こと(2104)を含むことができる。上記で説明したように、これは、BR1〜BR8(
図9〜
図16のフレーム/テーブル900〜1600)などの一組の代替的なブロック領域組み合わせを展開するための発見的方法を使用することを含むことができる。再構築されたフレームは複数の領域に分割され、各領域には領域フィルタが割り当てられ、領域フィルタは複数の領域で共有されてもよいし、されなくてもよい。特定のブロック分類のブロックに1つまたは複数のブロックフィルタが割り当てられたフレームに、1つまたは複数の開口部が形成される。同じBR組み合わせが、複数の再構築されたフレームのために使用されることができる。
【0142】
処理2100は、処理500または1900で説明したように、特に解析中のBR組み合わせのフィルタ値を形成するために、「ブロック領域組み合わせのフィルタ係数値を計算する」こと(2106)を含むことができる。一例によれば、ウィーナーホップ方程式を使用することができ、フィルタのパターンは、ホールがある菱形形状のフィルタ600(
図6)であってもよいし、そうでなくてもよい。
【0143】
処理2100は、「領域および/またはブロック分類をマージすることによりブロック領域組み合わせの反復を形成し、最小レート歪みを有する反復を決定する」こと(2108)を含むことができる。上述したように、各BR組み合わせは、初期配置として用いられることができ、それから最低レート歪みの配置を決定するために変更される。単一の領域フィルタおよび単一のブロックフィルタがフレーム全体に使用されるまで、各反復によりフィルタを共有する領域および/またはブロック分類のうちの2つをマージすることによって、配置を変更することができる。反復ごとにレート歪みを決定するために、ラグランジュ方程式を用いることができる。
【0144】
処理2100は、任意選択的に「コードブックからのフィルタ係数、およびこれまでの最小レート歪みを有する反復を決定する」こと(2110)(破線で示す)を含むことができる。これは、与えられたBR組み合わせにおいて、BR組み合わせの反復を解析しながら、コードブックフィルタを、保存されたフィルタ係数と共に、使用することを含むことができる。最良のコードブックの反復を最良の計算された反復と比較して、これらの中から最低レート歪みを有する反復を決定することができる。
【0145】
処理2100は、次に、「フレームおよび/またはLCU(または他のブロックユニット)に基づいて、AQRフィルタ処理をしない場合よりもAQRフィルタ処理をした方がフレームおよび/またはLCUがより低いレート歪みを有するか否かを判断する」こと(2112)を含むことができる。このように、このシステムは、すべてのLCU(または他のフレームサブユニット)および/またはフレームをチェックして、AQRフィルタ処理がフィルタなしの符号化よりも良好であるか否かを判断することができる。
【0146】
処理2100は、AQRフィルタ処理のために承認されたLCUおよびフレームにおいて最良の反復の符号化に進むことができる。一例では、これは、「係数値の頻度に依存する符号長を有する可変長符号化により最小レート歪みを有する反復のフィルタ係数を符号化する」こと(2114)を含むことができる。これは、特定のフレームもしくは反復の特定の場所でコードブックのどのフィルタを使用するべきかを示すコードブックのコードを符号化することに加えられることができる。
【0147】
処理2100はまた、「AQRフィルタ処理をしない場合よりもAQRフィルタ処理をした場合の方がより低いレート歪みを有するフレームおよび/またはLCUについてのみ、AQRフィルタ処理データを符号化する」こと(2116)に進むことができる。このように、AQRフィルタ処理なしでより低い歪みを有するフレームまたはLCU(または、他のサイズであってもよい)については、AQRフィルタ処理データは符号化されて送信されないので、それによりビットレートの負荷をさらに低減する。
【0148】
処理2100は、次に、「符号化されたデータを有するビットストリームを送信する」こと(2118)を含むことができ、それからデコーダ200が「フィルタ処理フラグ、BR組み合わせの識別、マージ情報、およびフィルタ係数を復号する」こと(2120)を含むことができる。次に処理2100は、コードブックフィルタを備えている場合に、「フィルタ処理されるフレームおよびLCUのフラグをチェックする」こと(2122)、「計算されたフィルタ係数を復号する」こと(2124)、ならびに「コードブックからフィルタを取得する」こと(2126)に進むことができる。これは、コードブックの特定のフィルタに対応する8ビットコードなどの符号を最初に復号し、次にそのフィルタに含まれているフィルタ係数およびフィルタのパターン情報のすべてを復号することを含むことができる。
【0149】
処理2100は、「再構築されたフレームの画素データを、フィルタを使用して変更する」こと(2128)、それから「シーケンスが終了するまで複数のフレームについて繰り返す」こと(2130)を含むことができる。再構築されたフレームは、次に表示および予測のために提供されることができる(2132)。
【0150】
一般に、処理2100は、必要に応じて、順次にまたは並行して任意の回数だけ繰り返されることができる。さらに、一般に、エンコーダ100およびデコーダ200によって使用されるような論理部または論理モジュールは、少なくとも部分的に、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合わせで実施されることができる。図示されたように、いくつかの実施形態では、エンコーダおよびデコーダ100/200は、プロセッサ2203により実施されることができる。他の実施形態では、符号器100/200、は、1つまたは複数の他の中央処理装置により実装されるハードウェアまたはソフトウェアによって実施されることができる。一般に、符号器100/200および/または本明細書で説明した動作は、システムレベルで可能にされることができる。しかし、AQRフィルタ、復号ループの他のフィルタ、および/または用いられる圧縮方式または圧縮比のタイプを制御することを可能にするためのいくつかの部分は、たとえば、ユーザレベルで提供され、または調整され得る。
【0151】
例示的な処理300、400、500、1800、1900、2000、または2100は、例示した順序で示された動作のすべての作業を含むことができるが、本開示はこれに限定されず、様々な実施例では、本明細書の処理のいずれかの実施形態は、図示した、および/または図示とは異なる順序における動作のサブセットのみの作業を含むことができる。
【0152】
実施形態では、本明細書に記載した特徴は、1つまたは複数のコンピュータプログラム製品によって提供される命令に応答して実行されてもよい。このようなプログラム製品は、たとえば、プロセッサによって実行された場合に、本明細書に記載した機能を提供することができる命令を提供する信号担持媒体を含むことができる。コンピュータプログラム製品は、1つまたは複数の機械可読媒体の任意の形態で提供されることができる。したがって、たとえば、1つまたは複数のプロセッサコアを含むプロセッサは、1つまたは複数の機械可読媒体によりプロセッサに搬送されたプログラムコードおよび/または命令もしくは命令セットに応答して、本明細書に記載された1つまたは複数の特徴を実行することができる。一般に、機械可読媒体は、本明細書に記載した装置および/またはシステムのいずれかに対して、本明細書に記載した特徴の少なくとも一部を実施させることができるプログラムコードおよび/または命令もしくは命令セットの形式でソフトウェアを運搬することができる。前述したように、別の形態では、非一時的なコンピュータ可読媒体などの非一時的な物品は、一時的な信号自体を含まない点を除き、上記の例または他の例のいずれかと共に使用されることができる。それは、RAMなどのような「一時的な」方式で一時的にデータを保持することができる、信号自体以外の要素を含んでいる。
【0153】
本明細書に記載した任意の実施形態で用いられるように、「モジュール」という用語は、本明細書に記載した機能を提供するように構成されたソフトウェア論理、ファームウェア論理、および/またはハードウェア論理の任意の組み合わせを指す。ソフトウェアは、ソフトウェアパッケージ、コードおよび/または命令セットもしくは命令として具体化することができ、「ハードウェア」は、本明細書に記載した任意の実施形態で使用されるように、たとえば、単独であるいは任意の組み合わせで、配線接続回路、プログラム可能な回路、ステートマシン回路、および/またはプログラム可能な回路により実行される命令を記憶するファームウェアを含むことができる。モジュールは、一括してまたは個別に、より大きなシステム、たとえば、集積回路(IC)、システムオンチップ(SoC)などの一部を形成する回路として実現されることができる。たとえば、モジュールは、本明細書に記載した符号化システムのソフトウェア、ファームウェア、またはハードウェアを介して実施するための論理回路において実現されることができる。
【0154】
本明細書に記載した任意の実施形態で用いられるように、「論理部」という用語は、本明細書に記載した機能を提供するように構成されたファームウェア論理、および/またはハードウェア論理の任意の組み合わせを指す。「ハードウェア」は、本明細書に記載した任意の実施形態で使用されるように、たとえば、単独であるいは任意の組み合わせで、配線接続回路、プログラム可能な回路、ステートマシン回路、および/またはプログラム可能な回路により実行される命令を記憶するファームウェアを含むことができる。論理部は、一括してまたは個別に、より大きなシステム、たとえば、集積回路(IC)、システムオンチップ(SoC)などの一部を形成する回路として実現されることができる。たとえば、論理部は、本明細書で説明した符号化システムの実施形態のファームウェアまたはハードウェアのための論理回路において実現されることができる。当業者であれば、ハードウェアおよび/またはファームウェアによって実行される動作は、ソフトウェアにより代替的に実施されることができ、ソフトウェアはソフトウェアパッケージ、コードおよび/または命令セットもしくは命令として実現されることができることを認識し、またその論理部がその機能を実現するためにソフトウェアの一部を利用することができることを認識するであろう。
【0155】
図22を参照すると、ビデオシーケンスの再構築されたフレームの適応型品質回復(AQR)フィルタ処理を提供するための例示的なビデオ符号化システム2200は、本開示の少なくともいくつかの実施形態により構成されることができる。図示した実施形態では、システム2200は、1つまたは複数の中央処理装置またはプロセッサ2203、表示装置2205、ならびに1つまたは複数のメモリストア2204を含むことができる。中央処理装置2203、メモリストア2204、および/または表示装置2205は、たとえば、バス、配線、または他のアクセスを介して互いに通信可能とすることができる。種々の実施形態では、表示装置2205は、システム2200に統合されるか、またはシステム2200とは別個に実施されることができる。
【0156】
図22に示すように、かつ上述したように、処理部2220は、エンコーダ100および/またはデコーダ200を有する論理回路2250を有することができる。いずれかまたは両方の符号器は、本明細書に記載し、かつ本明細書に記載した処理により説明された機能の多くを提供するために、AQRフィルタ2252または2254を有することができ、任意選択的にAQRフィルタコードブック2256を有することもできる。
【0157】
理解されるように、
図22に示すモジュールは、ソフトウェアおよび/もしくはハードウェアモジュール、ならびに/または、ソフトウェアもしくはハードウェアもしくはこれらの組み合わせによって実現されることができるモジュールを含むことができる。たとえば、モジュールは処理部2220を介してソフトウェアとして実現されることができ、あるいはモジュールは専用のハードウェア部分により実現されることもできる。さらに、図示したメモリストア2204は、たとえば、処理部2220用のメモリと共有されてもよい。AQRフィルタデータは、上述した選択肢のいずれかに記憶されることができ、あるいはこれらの選択肢の組み合わせに記憶されることもでき、あるいは他の場所に記憶されることもできる。また、システム2200は、様々な方法で実現されることができる。たとえば、システム2200(表示装置2205を除く)は、グラフィックスプロセッサ、クァッドコア中央処理装置、および/またはメモリコントローラ入力/出力(I/O)モジュールを有する単一のチップまたはデバイスとして実現されることができる。他の例では、システム2200(この場合も表示装置2205を除く)は、チップセットとして実現されることができる。
【0158】
プロセッサ2203は、たとえば、マイクロプロセッサ、マルチコアプロセッサ、特定用途向け集積回路、チップ、チップセット、プログラマブル論理デバイス、グラフィックスカード、集積グラフィックス、または汎用グラフィックス処理装置などを含む任意の適切な実施を含むことができる。さらに、メモリストア2204は、揮発性メモリ(たとえば、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)など)または不揮発性メモリ(たとえば、フラッシュメモリなど)などの任意のタイプのメモリとすることができる。非限定的な例では、メモリストア2204はまた、キャッシュメモリにより実現されてもよい。様々な実施例では、システム2200は、チップセットまたはシステムオンチップとして実現されてもよい。
【0159】
図23を参照すると、本開示および種々の実施形態による例示的なシステム2300は、メディアシステムとすることができるが、システム2300はこの文脈に限定されない。たとえば、システム2300は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビ、スマートデバイス(たとえば、スマートフォン、スマートタブレットまたはスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、およびデータ通信デバイスなどに組み込まれることができる。
【0160】
種々の実施形態では、システム2300は、ディスプレイ2320に通信可能に結合されたプラットフォーム2302を含む。プラットフォーム2302は、コンテンツサービスデバイス2330またはコンテンツ配信デバイス2340、または他の類似のコンテンツソースなどのコンテンツデバイスからコンテンツを受け取ることができる。1つまたは複数のナビゲーション機能を含むナビゲーションコントローラ2350は、たとえば、プラットフォーム2302および/またはディスプレイ2320と対話するために使用されることができる。これらの構成要素の各々については、下記でより詳細に説明する。
【0161】
種々の実施形態では、プラットフォーム2302は、チップセット2305、プロセッサ2310、メモリ2312、記憶装置2314、グラフィックスサブシステム2315、アプリケーション2316、および/または無線部2318の任意の組み合わせを含むことができる。チップセット2305は、プロセッサ2310、メモリ2312、記憶装置2314、グラフィックスサブシステム2315、アプリケーション2316、および/または無線部2318の間の相互通信を提供することができる。たとえば、チップセット2305は、記憶装置2314との相互通信を提供することができるストレージアダプタ(図示せず)を含むことができる。
【0162】
プロセッサ2310は、複合命令セットコンピュータ(CISC)または縮小命令セットコンピュータ(RISC)プロセッサ、x86命令セット互換プロセッサ、マルチコア、あるいは他の任意のマイクロプロセッサまたは中央処理装置(CPU)として実現されることができる。種々の実施形態では、プロセッサ2310は、デュアルコアプロセッサ、およびデュアルコア・モバイルプロセッサなどであってもよい。
【0163】
メモリ2312は、限定しないが、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、またはスタティックRAM(SRAM)などの揮発性メモリデバイスとして実現されることができる。
【0164】
記憶装置2314は、限定しないが、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部記憶装置、付加記憶装置、フラッシュメモリ、バッテリバックアップされたSDRAM(シンクロナスDRAM)、および/またはネットワークアクセス可能な記憶装置などの不揮発性記憶装置として実現されることができる。種々の実施形態では、記憶装置2314は、たとえば、複数のハードドライブが含まれる場合に、貴重なデジタル媒体のための記憶性能拡張保護を高める技術を含むことができる。
【0165】
グラフィックスサブシステム2315は、表示用の静止画像またはビデオなどの画像処理を行うことができる。グラフィックスサブシステム2315は、たとえば、グラフィックス処理装置(GPU)または視覚処理装置(VPU)であってもよい。アナログまたはデジタルインターフェースは、グラフィックスサブシステム2315とディスプレイ2320とを通信可能に接続するために使用されることができる。たとえば、インターフェースは、高精細マルチメディアインターフェース、表示ポート、無線HDMI(登録商標)、および/または無線HD対応技術のいずれであってもよい。グラフィックスサブシステム2315は、プロセッサ2310またはチップセット2305に統合されることができる。いくつかの実施形態では、グラフィックスサブシステム2315は、チップセット2305に通信可能に接続されたスタンドアロンカードであってもよい。
【0166】
本明細書に記載したグラフィックスおよび/またはビデオ処理技術は、様々なハードウェアアーキテクチャにおいて実現されることができる。たとえば、グラフィックスおよび/またはビデオ機能は、チップセット内に統合されることができる。あるいは、別個のグラフィックスおよび/またはビデオプロセッサを用いてもよい。さらに別の実施形態として、グラフィックスおよび/またはビデオ機能は、マルチコアプロセッサを含む汎用プロセッサにより提供されることができる。他の実施形態では、機能は、家庭用電子デバイスで実現されてもよい。
【0167】
無線部2318は、種々の好適な無線通信技術を使用して信号を送信および受信することができる1つまたは複数の無線部を含むことができる。このような技術は、1つまたは複数の無線ネットワークを介した通信を含むことができる。例示的な無線ネットワークは、(これらに限定されないが)無線ローカルエリアネットワーク(WLAN)、無線パーソナルエリアネットワーク(WPAN)、無線メトロポリタンエリアネットワーク(WMAN)、セルラーネットワーク、および衛星ネットワークを含む。このようなネットワークを介した通信では、無線部2318は、任意のバージョンの1つまたは複数の適用可能な規格に従って動作することができる。
【0168】
種々の実施形態では、ディスプレイ2320は、任意のテレビタイプのモニタまたはディスプレイを含むことができる。ディスプレイ2320は、たとえば、コンピュータディスプレイ画面、タッチスクリーンディスプレイ、ビデオモニタ、テレビジョン類似装置、および/またはテレビを含むことができる。ディスプレイ2320は、デジタルおよび/またはアナログであってもよい。種々の実施形態では、ディスプレイ2320は、ホログラフィックディスプレイであってもよい。また、ディスプレイ2320は、視覚的な投影を受け取ることができる透明な表面であってもよい。このように投影は、情報、画像、および/またはオブジェクトの種々の形態を伝えることができる。たとえば、このような投影は、モバイル拡張現実(MAR)アプリケーションの視覚的オーバーレイであってもよい。1つまたは複数のソフトウェアアプリケーション2316の制御下で、プラットフォーム2302は、ディスプレイ2320上にユーザインターフェース2322を表示することができる。
【0169】
様々な実施形態では、コンテンツサービスデバイス2330は、任意の国内の、国際的な、および/または独立したサービスによってホストされ、たとえばインターネットを介してプラットフォーム2302にアクセス可能であってもよい。コンテンツサービスデバイス2330は、プラットフォーム2302および/またはディスプレイ2320に接続されることができる。プラットフォーム2302および/またはコンテンツサービスデバイス2330は、ネットワーク2360との間でメディア情報を通信(たとえば、送信および/または受信)するために、ネットワーク2360に接続されることができる。コンテンツ配信デバイス2340もまた、プラットフォーム2302および/またはディスプレイ2320に接続されることができる。
【0170】
様々な実施形態では、コンテンツサービスデバイス2330は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、デジタル情報および/またはコンテンツの配信が可能なインターネット使用可能デバイスまたは機器、ならびにコンテンツプロバイダとプラットフォーム2302および/またはディスプレイ2320との間で、ネットワーク2360を介してまたは直接に、コンテンツを一方向または双方向に通信可能な他の任意の同様のデバイスを含んでもよい。コンテンツは、ネットワーク2360を介してシステム2300の構成要素のいずれか1つとコンテンツプロバイダとの間で一方向および/または双方向に通信できることを理解されたい。コンテンツの例としては、たとえばビデオ、音楽、医療およびゲーム情報などを含む任意のメディア情報を挙げることができる。
【0171】
コンテンツサービスデバイス2330は、メディア情報、デジタル情報、および/または他のコンテンツを含むケーブルテレビ番組などのコンテンツを受信することができる。コンテンツプロバイダの例としては、任意のケーブルまたは衛星テレビまたはラジオまたはインターネットコンテンツプロバイダを挙げることができる。提供した実施例は、いかなる形であれ、本開示による実施を限定するものではない。
【0172】
種々の実施形態では、プラットフォーム2302は、1つまたは複数のナビゲーション機能を有するナビゲーションコントローラ2350からの制御信号を受け取ることができる。コントローラ2350のナビゲーション機能は、たとえばユーザインターフェース2322と対話するために用いられることができる。実施形態では、ナビゲーションコントローラ2350は、ユーザがコンピュータに空間的(たとえば、連続的な多次元)データを入力することを可能にするコンピュータハードウェア構成要素(具体的には、ヒューマン・インターフェース・デバイス)とすることができるポインティングデバイスであってもよい。グラフィカルユーザインターフェース(GUI)などの多くのシステム、ならびにテレビおよびモニタは、ユーザが物理的なジェスチャを用いてコンピュータまたはテレビへのデータを制御し、提供することを可能にする。
【0173】
コントローラ2350のナビゲーション機能の動きは、ディスプレイ上に表示されるポインタ、カーソル、フォーカスリング、または他の視覚表示の動きによりディスプレイ(たとえば、ディスプレイ2320)上に複製されることができる。たとえば、ソフトウェアアプリケーション2316の制御の下に、ナビゲーションコントローラ2350に配置されたナビゲーション機能は、たとえば、ユーザインターフェース2322上に表示された仮想的なナビゲーション機能にマッピングされてもよい。実施形態では、コントローラ2350は、別個の構成要素でなくてもよく、プラットフォーム2302および/またはディスプレイ2320に統合されてもよい。しかし、本発明は、本明細書に図示および記載した要素または文脈に限定されない。
【0174】
種々の実施形態では、ドライバ(図示せず)は、たとえば、使用可能であれば、ユーザが初期起動後にボタンにタッチしてテレビのようにプラットフォーム2302を直ちにオン・オフすることを可能にする技術を含むことができる。プログラム論理は、プラットフォームが「オフ」である場合であっても、プラットフォーム2302が、メディアアダプタまたは他のコンテンツサービスデバイス2330またはコンテンツ配信デバイス2340にコンテンツをストリーミングすることを可能にすることができる。さらに、チップセット2305は、たとえば、7.1サラウンドサウンドオーディオおよび/または高精細(7.1)サラウンドサウンドオーディオのためのハードウェアおよび/またはソフトウェアサポートを含むことができる。ドライバは、統合されたグラフィックスプラットフォームのためのグラフィックスドライバを含むことができる。実施形態では、グラフィックスドライバは、周辺装置相互接続(PCI)エクスプレス・グラフィックス・カードを含むことができる。
【0175】
種々の実施態様では、システム2300に示された構成要素のいずれか1つまたは複数は統合されることができる。たとえば、プラットフォーム2302およびコンテンツサービスデバイス2330は統合されることができ、あるいはプラットフォーム2302およびコンテンツ配信デバイス2340は統合されることができ、あるいはプラットフォーム2302、コンテンツサービスデバイス2330、およびコンテンツ配信デバイス2340は統合されることができる。種々の実施形態では、プラットフォーム2302およびディスプレイ2320を一体化したユニットとすることができる。たとえば、ディスプレイ2320およびコンテンツサービスデバイス2330は統合されてもよく、あるいはディスプレイ2320およびコンテンツ配信デバイス2340は統合されてもよい。これらの実施例は、本開示を限定するものではない。
【0176】
種々の実施形態では、システム2300は、無線システム、有線システム、またはその両方の組み合わせとして実施されてもよい。無線システムとして実施される場合には、システム2300は、1つもしくは複数のアンテナ、送信機、受信機、送受信機、増幅器、フィルタ、および制御論理などの、無線共有媒体を介して通信するのに適した構成要素およびインターフェースを含むことができる。無線共有媒体の一例としては、RFスペクトルなどの無線スペクトルの一部を挙げることができる。有線システムとして実施される場合には、システム2300は、入力/出力(I/O)アダプタ、I/Oアダプタを対応する有線通信媒体と接続する物理的なコネクタ、ネットワーク・インターフェース・カード(NIC)、ディスクコントローラ、ビデオコントローラ、オーディオコントローラなどの、有線通信媒体を介して通信するのに適した構成要素およびインターフェースを含むことができる。有線通信媒体の例としては、配線、ケーブル、金属リード、プリント回路基板(PCB)、バックプレーン、スイッチファブリック、半導体材料、ツイストペア配線、同軸ケーブル、および光ファイバなどを挙げることができる。
【0177】
プラットフォーム2302は、情報を通信するために1つまたは複数の論理的もしくは物理的なチャネルを確立することができる。情報は、メディア情報および制御情報を含むことができる。メディア情報とは、ユーザ向けのコンテンツを表す任意のデータを指すことができる。コンテンツの例としては、たとえば、音声通話、ビデオ会議、ストリーミングビデオ、電子メール(「Eメール」)メッセージ、ボイスメールメッセージは、英数字記号、グラフィックス、画像、ビデオ、およびテキストなどからのデータを挙げることができる。音声通話からのデータは、たとえば、音声情報、沈黙時間、背景雑音、コンフォートノイズ、および音などであってもよい。制御情報は、自動化されたシステムのためのコマンド、命令、または制御ワードを表す任意のデータを指すことができる。たとえば、制御情報は、システムを介してメディア情報をルーティングするために、あるいは所定の方法でメディア情報を処理するノードに指示するために使用されることができる。しかし、実施形態は、
図23に図示および記載した要素または文脈に限定されない。
【0178】
上述したように、システム2200または2300は、様々な物理的なスタイルまたはフォームファクタにおいて実現されることができる。
図24は、システム2200または2300を実現することができる小さなフォームファクタのデバイス2400の実施形態を示す。実施形態では、たとえば、デバイス2400は、無線機能を有するモバイル・コンピューティング・デバイスとして実現されることができる。モバイル・コンピューティング・デバイスは、処理システムおよび1つもしくは複数の電池などのモバイル電力源もしくは電源を有する任意のデバイスを指すことができる。
【0179】
上述したように、モバイル・コンピューティング・デバイスの例としては、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビ、スマートデバイス(たとえば、スマートフォン、スマートタブレットまたはスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、およびデータ通信デバイスなどを挙げることができる。
【0180】
モバイル・コンピューティング・デバイスの例としてはまた、手首コンピュータ、指コンピュータ、リングコンピュータ、眼鏡コンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、靴コンピュータ、衣服コンピュータ、および他のウェアラブルコンピュータなどの、人が装着するように構成されたコンピュータを挙げることができる。様々な実施形態では、たとえば、モバイル・コンピューティング・デバイスは、音声通信および/またはデータ通信だけでなく、コンピュータアプリケーションも実行することができるスマートフォンとして実現されてもよい。いくつかの実施形態は、例としてスマートフォンとして実現されるモバイル・コンピューティング・デバイスによって説明されることができるが、他の実施形態は他の無線モバイル・コンピューティング・デバイスを用いて実現されてもよいことを理解されたい。実施形態は、この文脈に限定されない。
【0181】
図24に示すように、デバイス2400は、筐体2402、ディスプレイ2404、入力/出力(I/O)デバイス2406、およびアンテナ2408を含むことができる。デバイス2400はまた、ナビゲーション機能2412を含むことができる。ディスプレイ2404は、モバイル・コンピューティング・デバイスに適切な情報を表示するための任意の適切なディスプレイユニットを含んでもよい。I/Oデバイス2406は、モバイル・コンピューティング・デバイスに情報を入力するための任意の適切なI/Oデバイスを含むことができる。I/Oデバイス2406の例としては、英数字キーボード、数字キーパッド、タッチパッド、入力キー、ボタン、スイッチ、ロッカースイッチ、マイクロフォン、スピーカ、音声認識デバイス、およびソフトウェアなどを挙げることができる。情報はまた、マイクロフォン(図示せず)によってデバイス2400に入力されることができる。このような情報は、音声認識デバイス(図示せず)によってデジタル化することができる。実施形態は、この文脈に限定されない。
【0182】
種々の実施形態は、ハードウェア要素、ソフトウェア要素、または両者の組み合わせを用いて実施されることができる。ハードウェア要素の例としては、プロセッサ、マイクロプロセッサ、回路、回路素子(たとえばトランジスタ、抵抗器、キャパシタ、インダクタなど)、集積回路、特定用途向け集積回路(ASIC)、プログラマブル・ロジック・デバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールド・プログラマブル・ゲートアレイ(FPGA)、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、およびチップセットなどを挙げることができる。ソフトウェアの例としては、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティング・システム・ソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、方法、手順、ソフトウェアインターフェース、アプリケーション・プログラム・インターフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータ・コード・セグメント、ワード、値、シンボル、またはこれらの任意の組み合わせを挙げることができる。実施形態がハードウェア要素および/またはソフトウェア要素を用いて実現されるかどうかを判断することは、所望の計算レート、電力レベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度、および他の設計または性能の制約などの、任意の数の要因によって変化してもよい。
【0183】
上述した1つまたは複数の態様は、プロセッサ内の様々な論理を表す機械可読媒体上に格納された代表的な命令によって実施されることができ、この命令は機械によって読み出されると、機械に対して本明細書に記載した技術を実行するためのロジックを作製させる。このような表現は、「IPコア」として知られ、有形の機械可読媒体に格納され、論理またはプロセッサを実際に作製する製造装置にロードするために様々なカスタマまたはメーカーに供給されてもよい。
【0184】
本明細書に記載した特定の特徴について、様々な実施形態を参照して説明してきたが、この説明は限定的な意味で解釈されることを意図するものではない。したがって、本明細書に記載した実施形態、ならびに他の実施態様の、本開示が関係する当業者にとって明らかな様々な変更は、本開示の趣旨および範囲内にあると見なされる。
【0185】
下記の実施例は、付加的な実施形態に関するものである。
【0186】
適応型品質回復フィルタ処理のコンピュータにより実施される方法は、再構築されたフレームのビデオデータを取得するステップと、ビデオデータの再構築されたフレームについて、複数の代替的なブロック領域適応組み合わせを生成するステップと、を含む。この生成するステップは、再構築されたフレームを複数の領域に分割するステップと、領域フィルタを各領域に関係付けるステップであって、領域フィルタは、対応する領域内の画素値に関係する一組のフィルタ係数を有する、ステップと、再構築されたフレームを形成するブロックをブロック内の画素値の異なる勾配に関係する分類に分類するステップと、個々の分類のためのブロックフィルタと分類に割り当てられたブロックの画素値に関係するフィルタ係数の組とを関係付けるステップと、を含む。本方法はまた、再構築されたフレーム上の領域フィルタおよびブロックフィルタの両方を用いて、再構築されたフレームの画素値を変更するステップを含む。
【0187】
他の手法によれば、本方法は、領域フィルタ計算から除外され、かつ組み合わせの一部であるように選択された1つまたは複数のブロック分類に属する再構築されたフレーム上のブロックに形成された開口部を除いて、再構築されたフレーム上の領域フィルタを用いるステップを含み、ブロックフィルタは、開口部においてブロックデータと共に使用され、本方法は、反復を形成することにより、組み合わせにおけるブロックの領域配置を変更するステップを含み、組み合わせの各反復は、異なる数の(1)フィルタを共有するブロック分類、または(2)フィルタを共有する領域、または(1)および(2)の任意の組み合わせを有する。本方法はまた、複数の組み合わせのうちのどの反復が、再構成フレームの画素値を変更するために用いる最も低いレート歪を生じさせるかを判断するステップを含み、組み合わせの初期配置は、組み合わせの反復を形成することができる領域およびブロック分類の数に関して最大限度を確立する。
【0188】
本方法はまた、ブロックベースのフィルタ処理なしに実行される領域ベースのフィルタ処理と、領域ベースのフィルタ処理なしに実行されるブロックベースのフィルタ処理と、のうちの少なくとも一方、または両方の代替的な組み合わせを含む。この方法では、レート歪みは、誤差値、一定ラムダ値、およびフィルタ係数ビットのカウントに関係するラグランジアン値を含み、組み合わせのうちの少なくとも1つは、利用可能なブロック分類のすべてよりも少なくなるように制限され、領域またはブロックの反復は、フレーム全体の異なる数のフィルタに関係し、最大数のフィルタと1つのフィルタとの間で1ずつ増加し、代替的な組み合わせは、ブロックベースのフィルタ処理のために異なるブロックサイズを用いる代替物を含み、少なくとも1つの代替的な組み合わせは、4×4ブロック解析に基づき、少なくとも1つの他の代替的な組み合わせは、8×8ブロック解析に基づき、フレームは、任意選択で最高16個のフィルタに関係する16個の領域に最初に分割され、16個までのブロック分類がブロックを分類するために利用可能であり、各代替的な組み合わせは、所定の総数に等しい、いくつかの異なる領域フィルタといくつかの含まれる異なるブロック分類フィルタとを有し、総数は16であり、16個の利用可能な領域フィルタおよび16個の利用可能な0から15まで番号付けされたブロック分類は、分類の番号が高いほどブロック内の画素値の勾配が高くなり、複数の組み合わせは、(1)12個の領域フィルタおよびブロック分類12〜15と、(2)8個の領域フィルタおよびブロック分類8〜15と、(3)4個の領域フィルタおよびブロック分類4〜15と、のうちの少なくとも1つの組み合わせを少なくとも最初に含み、再構築されたフレームは、4×4に配列された16個の領域で定義され、領域フィルタは、各番号が同じフィルタを参照するように番号付けされ、再構築されたフレームの列の左から右に、および上から下に参照し、複数の組み合わせは、
16個の領域における合計12個の領域フィルタについて、0,1,4,5,11,2,3,5,10,9,8,6,10,7,7,6と、
16個の領域における合計8個の領域フィルタについて、0,0,2,2,7,1,1,3,7,5,5,3,6,6,4,4と、
16個の領域における合計4個の領域フィルタについて、0,0,0,1,3,0,1,1,3,3,2,1,3,2,2,2と、のうちの少なくとも1つを少なくとも最初に含む。
【0189】
本方法はまた、対称係数、非対称係数、および係数を有していないホールを含み、かつホールの位置の上、下、右、および左の隣接する係数である係数のパターンを有するフィルタを用いるステップであって、フィルタは、10個の固有の係数を含む19個の係数位置を有し、フィルタは、9×9のクロス、3×3の長方形、ならびにフィルタの
斜めのエッジを形成し、
斜めのエッジとクロスおよび長方形との間にホールを配置する3つの係数位置を有する菱形形状である、ステップと、フィルタ係数値を符号化または復号する代わりに、予め記憶されたフィルタ係数値を有する予め記憶されたフィルタに対応するコードブック値を符号化または復号するステップと、値がフィルタ係数により頻繁に用いられるほどより短くなるコードを有する複数の可変長符号化(VLC)テーブルのうちの少なくとも1つを適応可能に選択することを含む、フィルタ係数を符号化するステップであって、同じ係数値のコードは、同じフィルタのどのフィルタ係数位置が符号化されているかに応じて変化し、フィルタ係数値がフィルタ係数位置に対する値のカバー範囲内にある場合には、単一コードを符号化し、かつ、フィルタ係数値がフィルタ係数位置に対する値のカバー範囲の外側にある場合には、エスケープコードおよび切り詰めたゴロムコードを符号化することを含むカバー符号化を用いることを含む、ステップと、他のテーブルからの結果と比較して最小のビット数が得られるVLCテーブルを選択するステップと、を含む。
【0190】
システムは、ディスプレイと、メモリと、メモリおよびディスプレイに通信可能に結合された少なくとも1つのプロセッサと、を含み、少なくとも1つのプロセッサは、再構築されたフレームのビデオデータを取得するステップと、ビデオデータの再構築されたフレームについて、複数の代替的なブロック領域適応組み合わせを生成するステップであって、再構築されたフレームを複数の領域に分割するステップと、領域フィルタを各領域に関係付けるステップであって、領域フィルタは、対応する領域内の画素値に関係する一組のフィルタ係数を有する、ステップと、再構築されたフレームを形成するブロックをブロック内の画素値の異なる勾配に関係する分類に分類するステップと、個々の分類のためのブロックフィルタと分類に割り当てられたブロックの画素値に関係するフィルタ係数の組とを関係付けるステップと、を含む生成するステップと、再構築されたフレーム上の領域フィルタおよびブロックフィルタの両方を用いて、再構築されたフレームの画素値を変更するステップとを実行するように構成される。
【0191】
このシステムの他の手法によれば、プロセッサは、同様に、領域フィルタ計算から除外され、かつ組み合わせの一部であるように選択された1つまたは複数のブロック分類に属する再構築されたフレーム上のブロックに形成された開口部を除いて、再構築されたフレーム上の領域フィルタを用いるステップであって、ブロックフィルタは、開口部においてブロックデータと共に使用される、ステップを実行するとともに、反復を形成することにより、組み合わせにおけるブロックの領域配置を変更するステップであって、組み合わせの各反復は、異なる数の(1)フィルタを共有するブロック分類、または(2)フィルタを共有する領域、または(1)および(2)の任意の組み合わせを有する、ステップを実行するように構成される。システムは、複数の組み合わせのうちのどの反復が、再構築されたフレームの画素値を変更するために用いる最も低いレート歪を生じさせるかを判断するステップであって、組み合わせの初期配置は、組み合わせの反復を形成することができる領域およびブロック分類の数に関して最大限度を確立する、ステップを実行する。
【0192】
システムはまた、ブロックベースのフィルタ処理なしに実行される領域ベースのフィルタ処理と、領域ベースのフィルタ処理なしに実行されるブロックベースのフィルタ処理と、のうちの少なくとも一方、または両方の代替的な組み合わせを含む。このシステムでは、レート歪みは、誤差値、一定ラムダ値、およびフィルタ係数ビットのカウントに関係するラグランジアン値を含み、組み合わせのうちの少なくとも1つは、利用可能なブロック分類のすべてよりも少なくなるように制限され、領域またはブロックの反復は、フレーム全体の異なる数のフィルタに関係し、最大数のフィルタと1つのフィルタとの間で1ずつ増加し、代替的な組み合わせは、ブロックベースのフィルタ処理のために異なるブロックサイズを用いる代替物を含み、少なくとも1つの代替的な組み合わせは、4×4ブロック解析に基づき、少なくとも1つの他の代替的な組み合わせは、8×8ブロック解析に基づき、フレームは、任意選択で最高16個のフィルタに関係する16個の領域に最初に分割され、16個までのブロック分類がブロックを分類するために利用可能であり、各代替的な組み合わせは、所定の総数に等しい、いくつかの異なる領域フィルタといくつかの含まれる異なるブロック分類フィルタとを有し、総数は16であり、16個の利用可能な領域フィルタおよび16個の利用可能な0から15まで番号付けされたブロック分類は、分類の番号が高いほどブロック内の画素値の勾配が高くなり、複数の組み合わせは、(1)12個の領域フィルタおよびブロック分類12〜15と、(2)8個の領域フィルタおよびブロック分類8〜15と、(3)4個の領域フィルタおよびブロック分類4〜15と、のうちの少なくとも1つの組み合わせを少なくとも最初に含み、再構築されたフレームは、4×4に配列された16個の領域で定義され、領域フィルタは、各番号が同じフィルタを参照するように番号付けされ、再構築されたフレームの列の左から右に、および上から下に参照し、複数の組み合わせは、
16個の領域における合計12個の領域フィルタについて、0,1,4,5,11,2,3,5,10,9,8,6,10,7,7,6と、
16個の領域における合計8個の領域フィルタについて、0,0,2,2,7,1,1,3,7,5,5,3,6,6,4,4と、
16個の領域における合計4個の領域フィルタについて、0,0,0,1,3,0,1,1,3,3,2,1,3,2,2,2と、のうちの少なくとも1つを少なくとも最初に含む。
【0193】
システムはまた、対称係数、非対称係数、および係数を有していないホールを含み、かつホールの位置の上、下、右、および左の隣接する係数である係数のパターンを有するフィルタを用いるステップであって、フィルタは、10個の固有の係数を含む19個の係数位置を有し、フィルタは、9×9のクロス、3×3の長方形、ならびにフィルタの
斜めのエッジを形成し、
斜めのエッジとクロスおよび長方形との間にホールを配置する3つの係数位置を有する菱形形状である、ステップと、フィルタ係数値を符号化または復号する代わりに、予め記憶されたフィルタ係数値を有する予め記憶されたフィルタに対応するコードブック値を符号化または復号するステップと、値がフィルタ係数により頻繁に用いられるほどより短くなるコードを有する複数の可変長符号化(VLC)テーブルのうちの少なくとも1つを適応可能に選択することを含む、フィルタ係数を符号化するステップであって、同じ係数値のコードは、同じフィルタのどのフィルタ係数位置が符号化されているかに応じて変化し、フィルタ係数値がフィルタ係数位置に対する値のカバー範囲内にある場合には、単一コードを符号化し、かつ、フィルタ係数値がフィルタ係数位置に対する値のカバー範囲の外側にある場合には、エスケープコードおよび切り詰めたゴロムコードを符号化することを含むカバー符号化を用いることを含む、ステップと、他のテーブルからの結果と比較して最小のビット数が得られるVLCテーブルを選択するステップと、を実行するように構成されるプロセッサを有する。
【0194】
命令を含むコンピュータ可読メモリであって、命令は、コンピューティングデバイスによって実行された場合に、コンピューティングデバイスに対して、再構築されたフレームのビデオデータを取得させ、再構築されたフレームを複数の領域に分割するステップと、領域フィルタを各領域に関係付けるステップであって、領域フィルタは、対応する領域内の画素値に関係する一組のフィルタ係数を有する、ステップと、再構築されたフレームを形成するブロックをブロック内の画素値の異なる勾配に関係する分類に分類するステップと、個々の分類のためのブロックフィルタと分類に割り当てられたブロックの画素値に関係するフィルタ係数の組とを関係付けるステップとを含んで、ビデオデータの再構築されたフレームについて、複数の代替的なブロック領域適応組み合わせを生成させ、かつ、再構築されたフレーム上の領域フィルタおよびブロックフィルタの両方を用いて、再構築されたフレームの画素値を変更させる。
【0195】
製品はまた、コンピューティングデバイスに対して、領域フィルタ計算から除外され、かつ組み合わせの一部であるように選択された1つまたは複数のブロック分類に属する再構築されたフレーム上のブロックに形成された開口部を除いて、再構築されたフレーム上の領域フィルタを使用させ、ブロックフィルタは、開口部においてブロックデータと共に使用され、反復を形成することにより、組み合わせにおけるブロックの領域配置を変更させ、組み合わせの各反復は、異なる数の(1)フィルタを共有するブロック分類、または(2)フィルタを共有する領域、または(1)および(2)の任意の組み合わせを有する、命令を有する。
【0196】
命令は、コンピューティングデバイスに対して、複数の組み合わせのうちのどの反復が、再構成フレームの画素値を変更するために用いる最も低いレート歪を生じさせるかを判断させ、組み合わせの初期配置は、組み合わせの反復を形成することができる領域およびブロック分類の数に関して最大限度を確立し、組み合わせは、ブロックベースのフィルタ処理なしに実行される領域ベースのフィルタ処理と、領域ベースのフィルタ処理なしに実行されるブロックベースのフィルタ処理と、のうちの少なくとも一方、または両方の代替物を含み、レート歪みは、誤差値、一定ラムダ値、およびフィルタ係数ビットのカウントに関係するラグランジアン値を含み、組み合わせのうちの少なくとも1つは、利用可能なブロック分類のすべてよりも少なくなるように制限され、領域またはブロックの反復は、フレーム全体の異なる数のフィルタに関係し、最大数のフィルタと1つのフィルタとの間で1ずつ増加し、代替的な組み合わせは、ブロックベースのフィルタ処理のために異なるブロックサイズを用いる代替物を含み、少なくとも1つの代替的な組み合わせは、4×4ブロック解析に基づき、少なくとも1つの他の代替的な組み合わせは、8×8ブロック解析に基づき、フレームは、任意選択で最高16個のフィルタに関係する16個の領域に最初に分割され、16個までのブロック分類がブロックを分類するために利用可能であり、各代替的な組み合わせは、所定の総数に等しい、いくつかの異なる領域フィルタといくつかの含まれる異なるブロック分類フィルタとを有し、総数は16であり、16個の利用可能な領域フィルタおよび16個の利用可能な0から15まで番号付けされたブロック分類は、分類の番号が高いほどブロック内の画素値の勾配が高くなり、複数の組み合わせは、(1)12個の領域フィルタおよびブロック分類12〜15と、(2)8個の領域フィルタおよびブロック分類8〜15と、(3)4個の領域フィルタおよびブロック分類4〜15と、のうちの少なくとも1つの組み合わせを少なくとも最初に含む。
【0197】
命令について、再構築されたフレームは、4×4に配列された16個の領域で定義され、領域フィルタは、各番号が同じフィルタを参照するように番号付けされ、再構築されたフレームの列の左から右に、および上から下に参照し、複数の組み合わせは、
16個の領域における合計12個の領域フィルタについて、0,1,4,5,11,2,3,5,10,9,8,6,10,7,7,6と、
16個の領域における合計8個の領域フィルタについて、0,0,2,2,7,1,1,3,7,5,5,3,6,6,4,4と、
16個の領域における合計4個の領域フィルタについて、0,0,0,1,3,0,1,1,3,3,2,1,3,2,2,2と、のうちの少なくとも1つを少なくとも最初に含む。
【0198】
命令は、コンピューティングデバイスに対して、対称係数、非対称係数、および係数を有していないホールを含み、かつホールの位置の上、下、右、および左の隣接する係数である係数のパターンによりフィルタを使用させ、フィルタは、10個の固有の係数を含む19個の係数位置を有し、フィルタは、9×9のクロス、3×3の長方形、ならびにフィルタの
斜めのエッジを形成し、
斜めのエッジとクロスおよび長方形との間にホールを配置する3つの係数位置を有する菱形形状であり、フィルタ係数値を符号化または復号する代わりに、予め記憶されたフィルタ係数値を有する予め記憶されたフィルタに対応するコードブック値を符号化または復号させ、値がフィルタ係数により頻繁に用いられるほどより短くなるコードを有する複数の可変長符号化(VLC)テーブルのうちの少なくとも1つを適応可能に選択することを含んで、フィルタ係数を符号化させ、同じ係数値のコードは、同じフィルタのどのフィルタ係数位置が符号化されているかに応じて変化し、フィルタ係数値がフィルタ係数位置に対する値のカバー範囲内にある場合には、単一コードを符号化し、かつ、フィルタ係数値がフィルタ係数位置に対する値のカバー範囲の外側にある場合には、エスケープコードおよび切り詰めたゴロムコードを符号化することを含むカバー符号化を用いることを含み、他のテーブルからの結果と比較して最小のビット数が得られるVLCテーブルを選択させる。
【0199】
符号器は、フレームを再構築し、各々がフレームの領域と関係する係数のパターンを有する複数のフィルタを含む適応型品質回復フィルタを含む復号ループを含み、フィルタのパターンのうちの少なくとも1つは、菱形形状と、対称係数と、非対称係数と、係数を有していないとともに、上、下、左、および右の係数に隣接する少なくとも1つのホールと、菱形形状のコーナーを形成する端部を有する係数のクロス形状と、クロス形状をオーバーラップする係数の長方形と、係数によって形成され、菱形形状のエッジを形成する
斜めのエッジと、を含む。
【0200】
符号器において、長方形のコーナーを形成する係数は、非対称係数であり、フィルタは、10個の固有の係数を含む19個の係数位置を有し、フィルタは、9×9のクロス、3×3の長方形、ならびにフィルタの
斜めのエッジを形成し、
斜めのエッジとクロスおよび長方形との間にホールを配置する3つの係数位置を有する菱形形状である。
【0201】
符号器は、適応型品質回復フィルタを含み、適応型品質回復フィルタは、領域フィルタ計算から除外され、かつ組み合わせの一部であるように選択された1つまたは複数のブロック分類に属する再構築されたフレーム上のブロックに形成された開口部を除いて、再構築されたフレーム上の領域フィルタを使用し、ブロックフィルタは、開口部においてブロックデータと共に使用され、反復を形成することにより、組み合わせにおけるブロックの領域配置を変更し、組み合わせの各反復は、異なる数の(1)フィルタを共有するブロック分類、または(2)フィルタを共有する領域、または(1)および(2)の任意の組み合わせを有する、ように構成される。
【0202】
フィルタはまた、複数の組み合わせのうちのどの反復が、再構築されたフレームの画素値を変更するために用いる最も低いレート歪を生じさせるかを判断し、組み合わせの初期配置は、組み合わせの反復を形成することができる領域およびブロック分類の数に関して最大限度を確立し、組み合わせは、ブロックベースのフィルタ処理なしに実行される領域ベースのフィルタ処理と、領域ベースのフィルタ処理なしに実行されるブロックベースのフィルタ処理と、のうちの少なくとも一方、または両方の代替物を含み、レート歪みは、誤差値、一定ラムダ値、およびフィルタ係数ビットのカウントに関係するラグランジアン値を含み、組み合わせのうちの少なくとも1つは、利用可能なブロック分類のすべてよりも少なくなるように制限され、領域またはブロックの反復は、フレーム全体の異なる数のフィルタに関係し、最大数のフィルタと1つのフィルタとの間で1ずつ増加し、代替的な組み合わせは、ブロックベースのフィルタ処理のために異なるブロックサイズを用いる代替物を含み、少なくとも1つの代替的な組み合わせは、4×4ブロック解析に基づき、少なくとも1つの他の代替的な組み合わせは、8×8ブロック解析に基づき、フレームは、任意選択で最高16個のフィルタに関係する16個の領域に最初に分割され、16個までのブロック分類がブロックを分類するために利用可能であり、各代替的な組み合わせは、所定の総数に等しい、いくつかの異なる領域フィルタといくつかの含まれる異なるブロック分類フィルタとを有し、総数は16であり、16個の利用可能な領域フィルタおよび16個の利用可能な0から15まで番号付けされたブロック分類は、分類の番号が高いほどブロック内の画素値の勾配が高くなり、複数の組み合わせは、(1)12個の領域フィルタおよびブロック分類12〜15と、(2)8個の領域フィルタおよびブロック分類8〜15と、(3)4個の領域フィルタおよびブロック分類4〜15と、のうちの少なくとも1つの組み合わせを少なくとも最初に含む、ように構成される。
【0203】
またフィルタについて、再構築されたフレームは、4×4に配列された16個の領域で定義され、領域フィルタは、各番号が同じフィルタを参照するように番号付けされ、再構築されたフレームの列の左から右に、および上から下に参照し、複数の組み合わせは、
16個の領域における合計12個の領域フィルタについて、0,1,4,5,11,2,3,5,10,9,8,6,10,7,7,6と、
16個の領域における合計8個の領域フィルタについて、0,0,2,2,7,1,1,3,7,5,5,3,6,6,4,4と、
16個の領域における合計4個の領域フィルタについて、0,0,0,1,3,0,1,1,3,3,2,1,3,2,2,2と、のうちの少なくとも1つを少なくとも最初に含む。
【0204】
符号器はまた、フィルタ係数値を符号化または復号する代わりに、予め記憶されたフィルタ係数値を有する予め記憶されたフィルタに対応するコードブック値を符号化または復号し、値がフィルタ係数により頻繁に用いられるほどより短くなるコードを有する複数の可変長符号化(VLC)テーブルのうちの少なくとも1つを適応可能に選択することを含んで、フィルタ係数を符号化し、同じ係数値のコードは、同じフィルタのどのフィルタ係数位置が符号化されているかに応じて変化し、フィルタ係数値がフィルタ係数位置に対する値のカバー範囲内にある場合には、単一コードを符号化し、かつ、フィルタ係数値がフィルタ係数位置に対する値のカバー範囲の外側にある場合には、エスケープコードおよび切り詰めたゴロムコードを符号化することを含むカバー符号化を用いることを含み、他のテーブルからの結果と比較して最小のビット数が得られるVLCテーブルを選択するように構成される。
【0205】
別の実施例では、少なくとも1つの機械可読媒体は、コンピューティングデバイス上で実行されることに応答して、コンピューティングデバイスに対して、上記の実施例のいずれか1つによる方法を実行させる複数の命令を含むことができる。
【0206】
さらに別の実施例では、装置は、上記の実施例のいずれか1つによる方法を実行するための手段を含むことができる。
【0207】
上記の実施例は、特徴の特定の組み合わせを含むことができる。しかし、上記の実施例はこれに限定されるものではなく、様々な実施形態では、上記の実施例は、明示的に列挙されたそれらの特徴と比較して、そのような特徴のサブセットのみを行うこと、そのような特徴の異なる順序を行うこと、そのような特徴の異なる組み合わせを行うこと、および/または付加的な特徴を行うことを含むことができる。たとえば、例示的な方法に関して記載したすべての特徴は、例示的な装置、例示的なシステム、および/または例示的な物品に関して実施されることができ、逆もまた同様である。
【0208】
【表4-1】
【表4-2】
【表4-3】
【表4-4】