(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023129533
(43)【公開日】2023-09-14
(54)【発明の名称】ビデオ符号化方法、電子装置、記憶媒体及びプログラム
(51)【国際特許分類】
H04N 19/12 20140101AFI20230907BHJP
H04N 19/136 20140101ALI20230907BHJP
H04N 19/176 20140101ALI20230907BHJP
【FI】
H04N19/12
H04N19/136
H04N19/176
【審査請求】有
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023118337
(22)【出願日】2023-07-20
(62)【分割の表示】P 2022529703の分割
【原出願日】2020-11-23
(31)【優先権主張番号】62/959,325
(32)【優先日】2020-01-10
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/938,890
(32)【優先日】2019-11-21
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】521248394
【氏名又は名称】ベイジン、ターチア、インターネット、インフォメーション、テクノロジー、カンパニー、リミテッド
【氏名又は名称原語表記】BEIJING DAJIA INTERNET INFORMATION TECHNOLOGY CO.,LTD.
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】シウ、シアオユイ
(72)【発明者】
【氏名】マー、ツォン-チョアン
(72)【発明者】
【氏名】チェン、イー-ウェン
(72)【発明者】
【氏名】ワン、シアンリン
(72)【発明者】
【氏名】チュー、ホン-ジェン
(72)【発明者】
【氏名】ユイ、ピン
(57)【要約】
【課題】ビデオ符号化方法を提供する。
【解決手段】
ゼロアウト領域内に位置する変換ブロックの符号化グループの何れかが非ゼロ係数を有するか否か決定し、前記変換ブロックは非ゼロ領域と前記ゼロアウト領域とを含み、非ゼロ係数を有する前記ゼロアウト領域内に位置する前記変換ブロックの符号化グループがないという決定に応じて、前記変換ブロックの係数を変換するために、水平方向および垂直方向の両方で各々の逆変換を適用する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
ゼロアウト領域内に位置する変換ブロックの符号化グループの何れかが非ゼロ係数を有するか否か決定し、
前記変換ブロックは非ゼロ領域と前記ゼロアウト領域とを含み、
非ゼロ係数を有する前記ゼロアウト領域内に位置する前記変換ブロックの符号化グループがないという決定に応じて、
前記変換ブロックの係数を変換するために、水平方向および垂直方向の両方で各々の逆変換を適用する、
ビデオ符号化方法。
【請求項2】
前記ゼロアウト領域内に位置する前記変換ブロックの符号化グループが非ゼロ係数を有するという決定に従って、
所定のデフォルト逆変換を適用して、前記変換ブロックの係数を、前記水平方向および垂直方向の両方で変換する、
ことをさらに含む、請求項1に記載のビデオ符号化方法。
【請求項3】
前記所定のデフォルト逆変換は逆DCT-2変換であり、前記逆変換の各々は逆DST-7変換および逆DCT-8変換を含む、
請求項2に記載のビデオ符号化方法。
【請求項4】
前記変換ブロックの彩度残差は彩度残差ジョイント符号化(JCCR)モードで符号化され、
変換スキップモードが対応する彩度変換ブロックに対してイネーブルされる、
請求項1に記載のビデオ符号化方法。
【請求項5】
前記非ゼロ領域は、前記変換ブロックの左上の16×16領域である、請求項1に記載のビデオ符号化方法。
【請求項6】
前記変換ブロックの係数の走査順序は、対角走査順序である、請求項1に記載のビデオ符号化方法。
【請求項7】
電子装置であって、
1以上の処理ユニットと、
1以上の前記処理ユニットに結合されたメモリと、
1以上の前記処理ユニットによって実行されると、前記電子装置に請求項1~請求項6の何れか1項に記載のビデオ符号化方法を実行させる、前記メモリに記憶された複数のプログラムと、
を含む、
電子装置。
【請求項8】
1以上の処理ユニットを有する電子装置によって実行される複数のプログラムを記憶する非一時的コンピュータ可読記憶媒体であって、複数の前記プログラムは、1以上の前記処理ユニットによって実行されると、前記電子装置に請求項1~請求項6の何れか1項に記載のビデオ符号化方法を実行させる、非一時的コンピュータ可読記憶媒体。
【請求項9】
請求項1~請求項6の何れか1項に記載のビデオ符号化方法によって生成されたビットストリームを記憶した非一時的コンピュータ可読記憶媒体。
【請求項10】
1以上の処理ユニットを有する電子装置によって実行されるプログラムであって、1以上の前記処理ユニットによって実行されると、前記電子装置に請求項1~請求項6の何れか1項に記載のビデオ符号化方法を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、一般に、ビデオ符号化及び圧縮に関し、より具体的には、VVC(versatile video coding)規格における変換符号化方法及び係数符号化方法の既存の設計を改善し簡素化する方法及び装置に関する。
【背景技術】
【0002】
デジタルビデオは、デジタルテレビ、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、デジタルカメラ、デジタル記録装置、デジタルメディアプレーヤ、ビデオゲームコンソール、スマートフォン、ビデオテレビ会議装置、ビデオストリーミング装置等の様々な電子装置によってサポートされる。電子装置は、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、パート10、AVC(Advanced Video Coding)、HEVC(High Efficiency Video Coding)、およびVVC(Versatile Video
Coding)規格によって定義されるビデオ圧縮/解凍規格を実装することによって、デジタルビデオデータを送信、受信、符号化、復号化、および/または格納する。ビデオ圧縮は通常、ビデオデータに固有の冗長性を低減または除去するために、空間(イントラフレーム)予測および/または時間(インターフレーム)予測を実行することを含む。ブロックベースのビデオ符号化の場合、ビデオフレームは1以上のスライスに分割され、各スライスは符号化ツリーユニット(CTU)とも呼ばれ得る複数のビデオブロックを有する。各CTUは、1つの符号化ユニット(CU)を含むか、または、所定の最小CUサイズに達するまで、より小さなCUに再帰的に分割することができる。各CU(リーフCUとも呼ばれる)は1以上の変換ユニット(TU)を含み、各CUは、1以上の予測ユニット(PU)も含む。各CUは、イントラモード、インターモード、またはIBCモードのいずれかで符号化することができる。ビデオフレームのイントラ符号化(I)スライス内のビデオブロックは、同じビデオフレーム内の隣接ブロック内の参照サンプルに関する空間予測を使用して符号化される。ビデオフレームのインター符号化(PまたはB)スライス内のビデオブロックは、同じビデオフレーム内の隣接ブロック内の参照サンプルに関する空間予測、または他の以前および/または将来の参照ビデオフレーム内の参照サンプルに関する時間予測を使用することができる。
【0003】
以前に符号化された参照ブロック、例えば、隣接ブロックに基づく空間的または時間的予測は、符号化されるべき現在のビデオブロックのための予測ブロックをもたらす。参照ブロックを見つけるプロセスは、ブロックマッチングアルゴリズムによって達成することができる。符号化される現在のブロックと予測ブロックとの間の画素差を表す残差データは、残差ブロックまたは予測誤差と呼ばれる。インター符号化されたブロックは、予測ブロックを形成する参照フレーム内の参照ブロック、および残差ブロックを指し示す動きベクトルに従って符号化される。動きベクトルを決定するプロセスは、典型的には動き推定と呼ばれる。イントラ符号化ブロックは、イントラ予測モード及び残差ブロックに従って符号化される。さらなる圧縮のために、残差ブロックは、画素領域から変換領域、例えば周波数領域に変換され、結果として残差変換係数が得られ、次いで、量子化され得る。量子化された変換係数は、まず、2次元アレイに配置され、変換係数の1次元ベクトルを生成するために走査され、次いで、ビデオビットストリームにエントロピー符号化されて、さらに多くの圧縮を達成することができる。
【0004】
次いで、符号化されたビデオビットストリームはデジタルビデオ機能を有する別の電子装置によってアクセスされるか、もしくは、有線または無線で電子装置に直接送信されるように、コンピュータ可読記憶媒体(例えば、フラッシュメモリ)に保存される。次いで
、電子装置はビットストリームから構文要素を得るために符号化ビデオビットストリームを構文解析し、ビットストリームから得られた構文要素に少なくとも部分的に基づいて符号化ビデオビットストリームから元のフォーマットにデジタルビデオデータを再構成することによって、ビデオ解凍(上述のビデオ圧縮とは反対の処理である)を実行し、再構成されたデジタルビデオデータを電子装置のディスプレイ上にレンダリングする。
【0005】
高精細度から4K×2Kまたは8K×4Kに至るデジタルビデオ品質では、符号化/復号化されるビデオデータの量は指数関数的に増大する。これは、復号化されたビデオデータの画質を維持しつつ、ビデオデータをより効率的に符号化/復号化する方法が課題となっている。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本出願はビデオデータの符号化および復号化に関連する実装を説明し、より具体的には、変換および係数符号化方法の既存の設計を改善し、単純化する方法および装置を説明する。
【課題を解決するための手段】
【0007】
本出願の第1態様によれば、ビデオデータ復号化方法は、変換ブロックを符号化するビットストリームを受信し、前記変換ブロックは、非ゼロ領域とゼロアウト領域とを含み、前記ゼロアウト領域内に非ゼロ係数があるかどうかチェックし、前記変換ブロックの前記ゼロアウト領域に非ゼロ係数がないという決定に従って、走査方向に沿った前記変換ブロックの最後の非ゼロ係数の走査順序インデックスを決定し、前記最後の非ゼロ係数の前記走査順序インデックスが所定のしきい値よりも大きいという決定に従って、前記ビットストリームから、多重変換選択(MTS)インデックスの値を受信し、前記多重変換選択(MTS)インデックスの値に基づいて、前記変換ブロックの係数を変換するために、水平方向および垂直方向の両方で各々の変換を適用する。
【0008】
本出願の第2態様によれば、電子装置は、1以上の処理ユニットと、メモリと、メモリに格納された複数のプログラムとを含む。プログラムは1以上の処理ユニットによって実行されると、電子装置に、上述したようなビデオデータ復号化方法を実行させる。
【0009】
本出願の第3の態様によれば、非一時的コンピュータ可読記憶媒体は、1以上の処理ユニットを有する電子装置によって実行される複数のプログラムを記憶する。プログラムは1以上の処理ユニットによって実行されると、電子装置に、上述したようなビデオデータ復号化方法を実行させる。
【図面の簡単な説明】
【0010】
【
図1】本開示のいくつかの実装による例示的なビデオ符号化および復号化システムを示すブロック図である。
【
図2】本開示のいくつかの実装による例示的なビデオエンコーダを示すブロック図である。
【
図3】本開示のいくつかの実装による例示的なビデオデコーダを示すブロック図である。
【
図4A】本開示のいくつかの実装による、フレームが異なるサイズおよび形状の複数のビデオブロックに再帰的にどのように分割されるかを示すブロック図である。
【
図4B】本開示のいくつかの実装による、フレームが異なるサイズおよび形状の複数のビデオブロックに再帰的にどのように分割されるかを示すブロック図である。
【
図4C】本開示のいくつかの実装による、フレームが異なるサイズおよび形状の複数のビデオブロックに再帰的にどのように分割されるかを示すブロック図である。
【
図4D】本開示のいくつかの実装による、フレームが異なるサイズおよび形状の複数のビデオブロックに再帰的にどのように分割されるかを示すブロック図である。
【
図4E】本開示のいくつかの実装による、フレームが異なるサイズおよび形状の複数のビデオブロックに再帰的にどのように分割されるかを示すブロック図である。
【
図5】本開示のいくつかの実装による、インター符号化ブロックおよびイントラ符号化ブロックの残差を変換するための例示的な多重変換選択(MTS)スキームを示す表である。
【
図6】本開示のいくつかの実装による、非ゼロ変換係数を有する例示的な変換ブロックを示すブロック図である。
【
図7】ビデオコーダが本開示のいくつかの実装による、多重変換選択(MTS)スキームを使用してブロック残差を符号化する技法を実装する例示的なプロセスを示すフローチャートである。
【
図8】本開示のいくつかの実装による、例示的なコンテキスト適応バイナリ算術符号化(CABAC)エンジンを示すブロック図である。
【発明を実施するための形態】
【0011】
添付の図面は実施形態のさらなる理解を提供するために含まれ、本明細書に組み込まれ、本明細書の一部を構成し、説明された実施形態を示し、説明とともに、基礎となる原理を説明するのに役立つ。同様の参照番号は、対応する部分を指す。
【0012】
ここで、特定の実施例を詳細に参照し、その例を添付の図面に示す。以下の詳細な説明では、本明細書で提示される主題の理解を助けるために、多数の非限定的な特定の詳細が記載される。しかし、当業者には特許請求の範囲から逸脱することなく、様々な代替形態を使用することができ、主題はこれらの特定の詳細なしに実施することができることが明らかであろう。例えば、本明細書で提示される主題はデジタルビデオ機能を有する多くのタイプの電子装置上で実施され得ることが、当業者には明らかであろう。
【0013】
図1は、本開示のいくつかの実装による、ビデオブロックを並列に符号化および復号化するための例示的なシステム10を示すブロック図である。
図1に示すように、システム10はソース装置12を含み、ソース装置12はデスティネーション装置14によって後で復号化されるビデオデータを生成し、符号化する。ソース装置12およびデスティネーション装置14は、デスクトップまたはラップトップコンピュータ、タブレットコンピュータ、スマートフォン、セットトップボックス、デジタルテレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、多種多様な電子装置のいずれかを備えることができる。一部の実装では、ソース装置12及びデスティネーション装置14は無線通信機能を備える。
【0014】
ある実装では、デスティネーション装置14がリンク16を介して復号化されるべき符号化ビデオデータを受信することができる。リンク16は、符号化されたビデオデータをソース装置12からデスティネーション装置14に移動させることができる任意のタイプの通信媒体または装置を含むことができる。一例では、リンク16が、ソース装置12が符号化されたビデオデータをデスティネーション装置14に直接リアルタイムで送信できるようにするための通信媒体を備えてもよい。符号化されたビデオデータは、無線通信プロトコルなどの通信規格に従って変調され、デスティネーション装置14に送信されてもよい。通信媒体は、無線周波数(RF)スペクトルもしくは1以上の物理的伝送線など、任意の無線または有線通信媒体を備えることができる。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークのようなパケットベースのネットワークの一部を形成することができる。通信媒体は、ルータ、スイッチ、基地局、またはソース装置12からデスティネーション装置14への通信を容易にするために有用であり得る任意の他の機器を含み得る。
【0015】
他のいくつかの実装では、符号化されたビデオデータが出力インターフェイス22から記憶装置32に送信されてもよい。続いて、記憶装置32内の符号化されたビデオデータは、入力インターフェイス28を介してデスティネーション装置14によってアクセスされることができる。記憶装置32は、ハードドライブ、ブルレイディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、または符号化されたビデオデータを記憶する他の任意の適切なデジタル記憶媒体などの、様々な分散またはローカルにアクセスされるデータ記憶媒体のいずれかを含むことができる。さらなる例では、記憶装置32がソース装置12によって生成された符号化ビデオデータを保持することができるファイルサーバまたは別の中間記憶装置に対応することができる。デスティネーション装置14は、ストリーミングまたはダウンロードを介して記憶装置32から、記憶されたビデオデータにアクセスすることができる。ファイルサーバは符号化されたビデオデータを記憶し、符号化されたビデオデータをデスティネーション装置14に送信することができる任意のタイプのコンピュータであってもよい。例示的なファイルサーバは、ウェブサーバ、FTPサーバ、ネットワークアタッチドストレージ装置、またはローカルディスクドライブを含む。デスティネーション装置14は無線チャネル(例えば、Wi-Fi接続)、有線接続(例えば、DSL、ケーブルモデム等)、またはファイルサーバに記憶された符号化ビデオデータにアクセスするのに適した両方の組み合わせを含む、任意の標準データ接続を介して符号化ビデオデータにアクセスすることができる。記憶装置32からの符号化されたビデオデータの伝送は、ストリーミング伝送、ダウンロード伝送、またはその両方の組み合わせであってもよい。
【0016】
図1に示すように、ソース装置12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェイス22とを含む。ビデオソース18はビデオキャプチャ装置、例えば、ビデオカメラ、以前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェイス、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステム、あるいはそのようなソースの組み合わせなどのソースを含むことができる。一例として、ビデオソース18がセキュリティ監視システムのビデオカメラである場合、ソース装置12およびデスティネーション装置14は、カメラ付き電話またはビデオ電話を形成することができる。しかしながら、本願に記載されている実装は一般にビデオ符号化に適用可能であり、無線および/または有線アプリケーションに適用可能である。
【0017】
キャプチャされた、事前キャプチャされた、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオデータは、ソース装置12の出力インターフェイス22を介してデスティネーション装置14に直接送信されてもよい。符号化されたビデオデータは復号化および/または再生のために、デスティネーション装置14または他の装置による以後のアクセスのために記憶装置32に記憶することもできる。出力インターフェイス22は、モデムおよび/または送信機をさらに含むことができる。
【0018】
デスティネーション装置14は、入力インターフェイス28と、ビデオデコーダ30と、表示装置34とを含む。入力インターフェイス28は受信機および/またはモデムを含み、リンク16を介して符号化ビデオデータを受信することができる。リンク16を介して通信されるか、または記憶装置32上に提供される符号化されたビデオデータは、ビデオデータを復号化する際にビデオデコーダ30によって使用するためにビデオエンコーダ20によって生成される様々な構文要素を含むことができる。このような構文要素は、通信媒体上で送信されてもよいし、記憶媒体上に記憶されてもよいし、またはファイルサーバに記憶されてもよいし、符号化されたビデオデータ内に含まれてもよい。
【0019】
一部の実装では、デスティネーション装置14は、統合表示装置であり得る表示装置34と、デスティネーション装置14と通信するように構成された外部表示装置とを含むことができる。表示装置34は復号化されたビデオデータをユーザに表示し、液晶ディスプレイ(LED)、プラズマディスプレイ、有機発光ダイオード(OLED)、または別のタイプの表示装置のような様々な表示装置のいずれかを備えることができる。
【0020】
ビデオエンコーダ20およびビデオデコーダ30は、VVC、HEVC、MPEG-4、Part 10、AVC(Advanced video Coding)、またはそのような規格の拡張など、独自仕様または業界規格に従って動作することができる。本出願は、特定のビデオ符号化/復号化規格に限定されず、他のビデオ符号化/復号化規格に適用可能であることを理解されたい。一般に、ソース装置12のビデオエンコーダ20は、これらの現在または将来の規格のいずれかに従ってビデオデータを符号化するように構成され得ることが企図される。同様に、一般に、デスティネーション装置14のビデオデコーダ30は、これらの現在または将来の規格のいずれかに従ってビデオデータを復号化するように構成され得ることも企図される。
【0021】
ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなど、様々な適切なエンコーダ回路のいずれかとして実装することができる。部分的にソフトウェアで実装される場合、電子装置は適切な非一時的コンピュータ可読媒体にソフトウェアの命令を格納し、本開示で開示されるビデオ符号化/復号化動作を実行するために1以上のプロセッサを使用してハードウェアで命令を実行することができる。ビデオエンコーダ20およびビデオデコーダ30のそれぞれは、1以上のエンコーダまたはデコーダに含まれてもよく、そのいずれも、それぞれの装置内の複合エンコーダ/デコーダ(CODEC)の一部として統合されてもよい。
【0022】
図2は、本出願で説明されるいくつかの実装形態による例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオフレーム内のビデオブロックのイントラ予測符号化およびインター予測符号化を実行し得る。イントラ予測符号化は所与のビデオフレームまたはピクチャ内のビデオデータにおける空間冗長性を低減または除去するために、空間予測に依存する。インター予測符号化はビデオシーケンスの隣接するビデオフレームまたはピクチャ内のビデオデータにおける時間的冗長性を低減または除去するために、時間的予測に依存する。
【0023】
図2に示すように、ビデオエンコーダ20は、ビデオデータメモリ40と、予測処理ユニット41と、復号ピクチャバッファ(DPB)64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。予測処理ユニット41はさらに、動き推定ユニット42、動き補償ユニット44、分割ユニット45、イントラ予測処理ユニット46、イントラブロックコピー(BC)ユニット48を有する。いくつかの実装では、ビデオエンコーダ20はまた、逆量子化ユニット58、逆変換処理ユニット60、及びビデオブロック再構成のための加算器62を含む。デブロッキングフィルタ(図示せず)を加算器62とDPB64との間に配置して、ブロック境界をフィルタリングして、再構成されたビデオからブロックノイズアーチファクトを除去することができる。インループフィルタ(図示せず)は、デブロッキングフィルタに加えて、加算器62の出力をフィルタリングするために使用されてもよい。ビデオエンコーダ20は固定またはプログラマブルハードウェアユニットの形態をとることができ、または図示された固定またはプログラマブルハードウェアユニットのうちの1以上の間で分割するこ
とができる。
【0024】
ビデオデータメモリ40は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶することができる。ビデオデータメモリ40内のビデオデータは例えば、ビデオソース18から取得することができる。DPB64はビデオエンコーダ20によるビデオデータの符号化に(例えば、イントラ予測符号化モードまたはインター予測符号化モードで)使用するための参照ビデオデータを格納するバッファである。ビデオデータメモリ40およびDPB64は、様々なメモリ装置のいずれかによって形成することができる。様々な例では、ビデオデータメモリ40がビデオエンコーダ20の他の構成要素とオンチップであってもよく、または、これらの構成要素とオフチップであってもよい。
【0025】
図2に示すように、ビデオデータを受信した後、予測処理ユニット41内の分割ユニット45は、ビデオデータをビデオブロックに分割する。この分割はまた、ビデオフレームを、ビデオデータに関連付けられた4分木構造などの事前定義された分割構造に従って、スライス、タイル、または他のより大きな符号化ユニット(CU)に分割することを含むことができる。ビデオフレームは、複数のビデオブロック(またはタイルと呼ばれるビデオブロックのセット)に分割することができる。予測処理ユニット41は誤差結果(例えば、符号化率及び歪みのレベル)に基づいて、現在のビデオブロックに対して、複数のイントラ予測符号化モードの1以上のインター予測符号化モードの1つなどの、複数の可能な予測符号化モードの1つを選択することができる。予測処理ユニット41は結果として生じるイントラまたはインター予測符号化ブロックを加算器50に提供して、残差ブロックを生成し、続いて参照フレームの一部として使用するために符号化ブロックを再構成する加算器62に提供することができる。予測処理ユニット41はまた、動きベクトル、イントラモード指標、分割情報、および他のそのような構文情報などの構文要素をエントロピー符号化ユニット56に提供する。
【0026】
現在のビデオブロックのための適切なイントラ予測符号化モードを選択するために、予測処理ユニット41内のイントラ予測処理ユニット46は空間予測を提供するために、符号化されるべき現在のブロックと同じフレーム内の1以上の隣接ブロックに対して、現在のビデオブロックのイントラ予測符号化を実行し得る。予測処理ユニット41内の動き推定ユニット42および動き補償ユニット44は時間予測を提供するために、1以上の参照フレーム内の1以上の予測ブロックに対する現在のビデオブロックのインター予測符号化を実行する。ビデオエンコーダ20は、例えば、ビデオデータの各ブロックについて適切な符号化モードを選択するために、複数の符号化パスを実行することができる。
【0027】
いくつかの実装形態では、動き推定ユニット42がビデオフレームのシーケンス内の所定のパターンに従って、参照ビデオフレーム内の予測ブロックに対する現在のビデオフレーム内のビデオブロックの予測ユニット(PU)の変位を示す動きベクトルを生成することによって、現在のビデオフレームのインター予測モードを決定する。動き推定ユニット42によって実行される動き推定は動きベクトルを生成するプロセスであり、動きベクトルは、ビデオブロックの動きを推定する。動きベクトルは例えば、現在のフレーム(または他の符号化ユニット)内で符号化されている現在のブロックに対する、参照フレーム(または他の符号化ユニット)内の予測ブロックに対する、現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。所定のパターンは、シーケンス内のビデオフレームをPフレームまたはBフレームとして指定することができる。イントラBCユニット48は相互予測のための動き推定ユニット42による動きベクトルの決定に類似した方法で、イントラBC符号化のためのベクトル、例えばブロックベクトルを決定することができ、または、ブロックベクトルを決定するために動き推定ユニット42を利用することができる。
【0028】
予測ブロックは、絶対差分和(SAD)、二乗差分和(SSD)、または他の差分メトリックによって決定され得る、画素差分に関して符号化されるべきビデオブロックのPUに近く一致すると見なされる参照フレームのブロックである。いくつかの実装では、ビデオエンコーダ20がDPB64に格納された参照フレームのサブ整数画素位置の値を計算することができる。例えば、ビデオエンコーダ20は、参照フレームの1/4画素位置、1/8画素位置、または他の分数画素位置の値を補間することができる。従って、動き推定部42は全画素位置及び分数画素位置に対して動き探索を行い、分数画素精度で動きベクトルを出力することができる。
【0029】
動き推定ユニット42は、PUの位置を、それぞれがDPB64に格納された1以上の参照フレームを識別する第1参照フレームリスト(List0)または第2参照フレームリスト(List1)から選択された参照フレームの予測ブロックの位置と比較することによって、インター予測符号化フレーム内のビデオブロックのPUの動きベクトルを計算する。動き推定ユニット42は計算された動きベクトルを動き補償ユニット44に送り、次いでエントロピー符号化ユニット56に送る。
【0030】
動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを含むことができる。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照フレームリストのうちの1つを示す、予測ブロックを探し出し、DPB64から予測ブロックを取り出し、予測ブロックを加算器50に転送することができる。次いで、加算器50は、動き補償ユニット44によって提供される予測ブロックの画素値を、符号化されている現在のビデオブロックの画素値から差し引くことによって、画素差分値の残差ビデオブロックを形成する。残差ビデオブロックを形成する画素差分値は、輝度または彩度成分の差分またはその両方を含むことができる。動き補償ユニット44はまた、ビデオフレームのビデオブロックを復号化する際にビデオデコーダ30によって使用されるために、ビデオフレームのビデオブロックに関連する構文要素を生成し得る。構文要素は例えば、予測ブロックを識別するために使用される動きベクトルを定義する構文要素、予測モードを示す任意のフラグ、または本明細書に記載する他の任意の構文情報を含むことができる。動き推定ユニット42および動き補償ユニット44は高度に統合されてもよいが、概念的な目的のために別々に図示されていることに留意されたい。
【0031】
いくつかの実装ではイントラBCユニット48が動き推定ユニット42および動き補償ユニット44に関連して上述したのと同様の方法でベクトルを生成し、予測ブロックをフェッチすることができるが、予測ブロックは符号化されている現在のブロックと同じフレーム内にあり、ベクトルは動きベクトルとは対照的にブロックベクトルと呼ばれる。特に、イントラBCユニット48は、現在のブロックを符号化するために使用するイントラ予測モードを決定することができる。いくつかの例では、イントラBCユニット48が例えば別個の符号化パスの間に、様々なイントラ予測モードを用いて現在のブロックを符号化し、レート歪解析を通してそれらの性能をテストすることができる。次に、イントラBCユニット48は種々の試されたイントラ予測モードの中で、適切なイントラ予測モードを使用し、それに応じてイントラモード指標を生成することができる。例えば、イントラBCユニット48は種々の試されたイントラ予測モードに対してレート歪み解析を用いてレート歪み値を計算し、使用する適切なイントラ予測モードとして、試されたモードの中で最良のレート歪み特性を有するイントラ予測モードを選択することができる。レート歪み分析は一般に、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(または誤差)の量、ならびに符号化されたブロックを生成するために使用されるビットレート(すなわち、ビット数)を決
定する。イントラBCユニット48はどのイントラ予測モードがブロックのための最良のレート歪み値を示すかを決定するために、様々な符号化されたブロックのための歪みおよびレートから比率を計算することができる。
【0032】
他の例では、イントラBCユニット48が本明細書で説明される実装によるイントラBC予測のためのそのような機能を実行するために、全体的にまたは部分的に、動き推定ユニット42および動き補償ユニット44を使用することができる。いずれの場合も、イントラブロックコピーの場合、予測ブロックは絶対差分和(SAD)、二乗差分和(SSD)、または他の差分メトリックによって決定され得る、画素差に関して、符号化されるブロックに近く一致すると見なされるブロックであり得、予測ブロックの識別はサブ整数画素位置の値の計算を含み得る。
【0033】
予測ブロックがイントラ予測による同じフレームからであるか、あるいはインター予測による異なるフレームからであるかにかかわらず、ビデオエンコーダ20は、予測ブロックの画素値を、符号化されている現在のビデオブロックの画素値から差し引いて、画素差分値を形成することによって、残差ビデオブロックを形成することができる。残差ビデオブロックを形成する画素差分値は、輝度成分差分及び彩度成分差分の両方を含むことができる。
【0034】
イントラ予測処理ユニット46は上述したように、動き推定ユニット42及び動き補償ユニット44によって実行されるインター予測、またはイントラBCユニット48によって実行されるイントラブロックコピー予測に代わるものとして、現在のビデオブロックをイントラ予測することができる。特に、イントラ予測処理ユニット46は、現在のブロックを符号化するために使用するイントラ予測モードを決定することができる。そうするために、イントラ予測処理ユニット46は例えば、別々の符号化パスに、様々なイントラ予測モードを使用して現在のブロックを符号化することができ、イントラ予測処理ユニット46(または、いくつかの例ではモード選択ユニット)がテストされたイントラ予測モードから使用するための適切なイントラ予測モードを選択することができる。イントラ予測処理ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供することができる。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報をビットストリームに符号化することができる。
【0035】
予測処理ユニット41がインター予測またはイントラ予測のいずれかを介して現在のビデオブロックの予測ブロックを決定した後、加算器50は、現在のビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロック内の残差ビデオデータは1以上の変換ユニット(TU)に含めることができ、変換処理ユニット52に供給される。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。
【0036】
変換処理ユニット52は、得られた変換係数を量子化ユニット54に送ることができる。量子化ユニット54は、変換係数を量子化してビットレートをさらに低減する。また、量子化プロセスは、係数の一部または全てに関連するビット深度を低減することができる。量子化の度合いは、量子化パラメータを調整することによって修正されてもよい。いくつかの例では、量子化ユニット54が次に、量子化変換係数を含む行列の走査を実行することができる。あるいは、エントロピー符号化ユニット56が走査を実行してもよい。
【0037】
量子化に続いて、エントロピー符号化ユニット56は例えば、コンテキスト適応可変長符号化(CAVLC)、コンテキスト適応バイナリ算術符号化(CABAC)、構文ベースのコンテキスト適応バイナリ算術符号化(SBAC)、確率間隔分割エントロピー(P
IPE)符号化、または別のエントロピー符号化方法または技法を使用して、量子化された変換係数をビデオビットストリームにエントロピー符号化する。符号化されたビットストリームは次に、ビデオデコーダ30に送信されるかもしれないし、または、以降のビデオデコーダ30への送信または検索のために記憶装置32にアーカイブされるかもしれない。エントロピー符号化ユニット56はまた、符号化されている現在のビデオフレームのための動きベクトルおよび他の構文要素をエントロピー符号化することができる。
【0038】
逆量子化ユニット58および逆変換処理ユニット60は、それぞれ逆量子化および逆変換を適用して、他のビデオブロックの予測のための参照ブロックを生成するための画素ドメイン内の残差ビデオブロックを再構成する。上述のように、動き補償ユニット44は、DPB64に記憶されたフレームの1以上の参照ブロックから動き補償予測ブロックを生成することができる。動き補償ユニット44はまた、動き推定で使用するためのサブ整数画素値を計算するために、予測ブロックに1以上の補間フィルタを適用することができる。
【0039】
加算器62は、動き補償ユニット44によって生成された動き補償予測ブロックに再構成された残差ブロックを追加して、DPB64に記憶するための参照ブロックを生成する。次いで、参照ブロックは、後続のビデオフレーム内の別のビデオブロックを予測するための予測ブロックとして、イントラBCユニット48、動き推定ユニット42および動き補償ユニット44によって使用され得る。
【0040】
図3は、本出願のいくつかの実装による例示的なビデオデコーダ30を示すブロック図である。ビデオデコーダ30は、ビデオデータメモリ79、エントロピー復号化ユニット80、予測処理ユニット81、逆量子化ユニット86、逆変換処理ユニット88、加算器90、およびDPB92を含む。予測処理ユニット81はさらに、動き補償ユニット82、イントラ予測処理ユニット84、イントラBCユニット85を有している。ビデオデコーダ30は、
図2に関連してビデオエンコーダ20に関して上述した符号化プロセスとほぼ逆の復号化プロセスを実行することができる。例えば、動き補償ユニット82はエントロピー復号化ユニット80から受け取った動きベクトルに基づいて予測データを生成することができ、一方、イントラ予測ユニット84は、エントロピー復号化ユニット80から受け取ったイントラ予測モード指標に基づいて予測データを生成することができる。
【0041】
いくつかの例では、ビデオデコーダ30のユニットが本願の実装を実行するようにタスクされてもよい。また、いくつかの例では、本開示の実装がビデオデコーダ30のユニットのうちの1以上の間で分割され得る。例えば、イントラBCユニット85は、単独で、または動き補償ユニット82、イントラ予測処理ユニット84、およびエントロピー復号化ユニット80などのビデオデコーダ30の他のユニットと組み合わせて、本願の実装を実行することができる。いくつかの例ではビデオデコーダ30がイントラBCユニット85を含んでいなくてもよく、イントラBCユニット85の機能は動き補償ユニット82のような予測処理ユニット81の他の構成要素によって実行されてもよい。
【0042】
ビデオデータメモリ79はビデオデコーダ30の他の構成要素によって復号化されるために、符号化されたビデオビットストリームなどのビデオデータを記憶することができる。ビデオデータメモリ79に記憶されたビデオデータは例えば、記憶装置32から、カメラなどのローカルビデオソースから、ビデオデータの有線または無線ネットワーク通信を介して、または物理データ記憶媒体(例えば、フラッシュドライブまたはハードディスク)にアクセスすることによって、取得することができる。ビデオデータメモリ79は、符号化ビデオビットストリームからの符号化ビデオデータを記憶する符号化ピクチャバッファ(CPB)を含むことができる。ビデオデコーダ30の復号化されたピクチャバッファ(DPB)92はビデオデコーダ30によってビデオデータを復号化する際に使用するた
めの参照ビデオデータを記憶する(例えば、イントラまたはインター予測符号化モードで)ビデオデータメモリ79およびDPB92は、SDRAM(synchronous DRAM)、MRAM(magneto-resistive RAM)、RRAM(登録商標)(resistive RAM)、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)などの様々なメモリデバイスのいずれかによって形成され得る。説明のために、ビデオデータメモリ79およびDPB92は、
図3のビデオデコーダ30の2つの別個の構成要素として示されている。しかしながら、当業者には、ビデオデータメモリ79およびDPB92が同じメモリ装置または別個のメモリ装置によって提供されてもよいことは明らかであろう。いくつかの例では、ビデオデータメモリ79がビデオデコーダ30の他の構成要素とオンチップであってもよく、またはそれらの構成要素に対してオフチップであってもよい。
【0043】
復号化プロセスの間に、ビデオデコーダ30は、符号化されたビデオフレームのビデオブロックおよび関連する構文要素を表す符号化されたビデオビットストリームを受信する。ビデオデコーダ30は、ビデオフレームレベルおよび/またはビデオブロックレベルで構文要素を受信することができる。ビデオデコーダ30のエントロピー復号化ユニット80は、ビットストリームをエントロピー復号化して、量子化された係数、動きベクトルまたはイントラ予測モード指標、および他の構文要素を生成する。次に、エントロピー復号化ユニット80は、動きベクトルおよび他の構文要素を予測処理ユニット81に転送する。
【0044】
ビデオフレームがイントラ予測符号化(I)フレームとして、または他のタイプのフレームのイントラ符号化予測ブロックのために符号化される場合、予測処理ユニット81のイントラ予測処理ユニット84は、シグナリングされたイントラ予測モードと、現在のフレームの以前に復号化されたブロックからの参照データとに基づいて、現在のビデオフレームのビデオブロックのための予測データを生成し得る。
【0045】
ビデオフレームがインター予測符号化(すなわち、BまたはP)フレームとして符号化されるとき、予測処理ユニット81の動き補償ユニット82は、エントロピー復号化ユニット80から受信された動きベクトルおよび他の構文要素に基づいて、現在のビデオフレームのビデオブロックのための1以上の予測ブロックを生成する。予測ブロックの各々は、参照フレームリストのうちの1つの参照フレームから生成され得る。ビデオデコーダ30は、DPB92に記憶された参照フレームに基づくデフォルト構成技術を使用して、参照フレームリスト、List0およびList1を構成することができる。
【0046】
いくつかの例ではビデオブロックが本明細書で説明されるイントラBCモードに従って符号化される場合、予測処理ユニット81のイントラBCユニット85はエントロピー復号化ユニット80から受信されるブロックベクトルおよび他の構文要素に基づいて、現在のビデオブロックのための予測ブロックを生成する。予測ブロックは、ビデオエンコーダ20によって定義された現在のビデオブロックと同じピクチャの再構成された領域内にあってもよい。
【0047】
動き補償ユニット82および/またはイントラBCユニット85は動きベクトルおよび他の構文要素を構文解析することによって、現在のビデオフレームのビデオブロックの予測情報を決定し、次いで、その予測情報を使用して、復号化されている現在のビデオブロックの予測ブロックを生成する。例えば、動き補償ユニット82は受信した構文要素のうちのいくつかを使用して、ビデオフレームのビデオブロックを符号化するために使用される予測モード(例えば、イントラ予測またはインター予測)、インター予測フレームタイプ(例えば、BまたはP)、フレームのための参照フレームリストのうちの1以上のための構成情報、フレームの各インター予測符号化ビデオブロックのための動きベクトル、フ
レームの各インター予測符号化ビデオブロックのためのインター予測ステータス、および現在のビデオフレームのビデオブロックを復号化するための他の情報を決定する。
【0048】
同様に、イントラBCユニット85は受信した構文要素のいくつか、例えばフラグを使用して、現在のビデオブロックがイントラBCモードを使用して予測されたこと、フレームのどのビデオブロックが再構成領域内にあり、DPB92に格納されるべきかの構成情報、フレームの各イントラBC予測ビデオブロックのブロックベクトル、フレームの各イントラBC予測ビデオブロックのイントラBC予測ステータス、および現在のビデオフレームのビデオブロックを復号化するための他の情報を決定することができる。
【0049】
また、動き補償ユニット82はビデオブロックの符号化中にビデオエンコーダ20によって使用されるような補間フィルタを使用して補間を実行し、参照ブロックのサブ整数画素に対する補間値を計算してもよい。この場合、動き補償ユニット82は受信した構文要素からビデオエンコーダ20によって使用される補間フィルタを決定し、補間フィルタを使用して予測ブロックを生成することができる。
【0050】
逆量子化処理ユニット86は、ビデオフレームのビデオブロックごとにビデオエンコーダ20によって計算された同じ量子化パラメータを用いて、ビットストリームに提供されエントロピー復号化部80によってエントロピー復号化された量子化変換係数を逆量子化して量子化の度合いを決定する。逆変換処理ユニット88は、画素領域で残差ブロックを再構成するために、逆変換、例えば、逆DCT、逆整数変換、または概念的に類似する逆変換処理を変換係数に適用する。
【0051】
動き補償ユニット82またはイントラBCユニット85がベクトルおよび他の構文要素に基づいて現在のビデオブロックのための予測ブロックを生成した後、加算器90は、逆変換処理ユニット88からの残差ブロックと、動き補償ユニット82およびイントラBCユニット85によって生成された対応する予測ブロックとを加算することによって、現在のビデオブロックのための復号化されたビデオブロックを再構成する。インループフィルタ(図示せず)を加算器90とDPB92との間に配置して、復号化されたビデオブロックをさらに処理することができる。所定のフレーム内の復号化されたビデオブロックは、次のビデオブロックの後続の動き補償のために使用される参照フレームを格納するDPB92に格納される。DPB92、またはDPB92とは別個のメモリ装置は
図1の表示装置34のような表示装置上に後で提示するために、復号化されたビデオを記憶することもできる。
【0052】
典型的なビデオ符号化プロセスでは、ビデオシーケンスが典型的にはフレームまたはピクチャの順序付けられたセットを含む。各フレームは、SL、SCb、およびSCrで示される3つのサンプルアレイを含むことができる。SLは、輝度サンプルの2次元アレイである。SCbは、Cb彩度サンプルの2次元アレイである。SCrは、Cr彩度サンプルの2次元アレイである。他の例では、フレームは単色であってもよく、したがって、輝度サンプルの1つの2次元アレイのみを含む。
【0053】
図4Aに示すように、ビデオエンコーダ20(またはより具体的には分割ユニット45)は、まず、フレームを1セットの符号化ツリーユニット(CTU)に分割することによって、フレームの符号化表現を生成する。ビデオフレームは、左から右へ、および上から下へのラスタ走査順序で連続的に順序付けられた整数個のCTUを含むことができる。各CTUは最大の論理符号化単位であり、CTUの幅および高さは、ビデオシーケンスの全てのCTUが128×128、64×64、32×32、および16×16のうちの1つである同じサイズを有するように、シーケンスパラメータセットでビデオエンコーダ20によってシグナリングされる。しかし、本願は、必ずしも特定のサイズに限定されないこ
とに留意されたい。
図4Bに示すように、各CTUは、輝度サンプルの1つの符号化ツリーブロック(CTB)、彩度サンプルの2つの対応する符号化ツリーブロック、および符号化ツリーブロックのサンプルを符号化するために使用される構文要素を備えることができる。構文要素は、インターまたはイントラ予測、イントラ予測モード、動きベクトル、および他のパラメータを含む、画素の符号化ブロックの異なるタイプのユニットのプロパティ、およびビデオシーケンスがビデオデコーダ30においてどのように再構成され得るかを記述する。モノクロピクチャまたは3つの別々のカラープレーンを有するピクチャでは、CTUが単一の符号化ツリーブロックと、符号化ツリーブロックのサンプルを符号化するために使用される構文要素とを備えることができる。符号化ツリーブロックは、サンプルのN×Nブロックであってもよい。
【0054】
より良好な性能を達成するために、ビデオエンコーダ20はCTUの符号化ツリーブロック上で、2分木分割、3分木分割、4分木分割、または両方の組合せなどのツリー分割を再帰的に実行し、CTUをより小さい符号化単位(CU)に分割することができる。
図4Cに示すように、64×64CTU400は、まず、各々が32×32のブロックサイズを有する4つのより小さなCUに分割される。4つのより小さいCUの中で、CU410およびCU420は、それぞれ、ブロックサイズによって16×16の4つのCUに分割される。2つの16×16CU430および440はそれぞれ、ブロックサイズによって8×8の4つのCUにさらに分割される。
図4Dは
図4Cに示されるようなCTU400の分割プロセスの最終結果を示す4分木データ構造を示し、4分木の各リーフノードは、32×32から8×8の範囲のそれぞれのサイズの1つのCUに対応する。
図4Bに示すCTUと同様に、各CUは、輝度サンプルの符号化ブロック(CB)と、同じサイズのフレームの彩度サンプルの2つの対応する符号化ブロックと、符号化ブロックのサンプルを符号化するために使用される構文要素とを備えることができる。モノクロピクチャまたは3つの別々のカラープレーンを有するピクチャでは、CUが単一の符号化ブロックと、符号化ブロックのサンプルを符号化するために使用される構文構造とを備えることができる。
図4Cおよび
図4Dに示された4分木分割は例示の目的のためだけのものであり、1つのCTUをCUに分割して、4分木/3分木/2分木分割に基づいて様々なローカル特性に適応させることができることに留意されたい。マルチタイプツリー構造では1つのCTUが4分木構造によって区分され、各4分木リーフCUは2分木構造および3分木構造によってさらに区分することができる。
図4Eに示すように、5つの分割タイプ、すなわち、4分割、水平2分割、垂直分割、水平3分割、および垂直3分割がある。
【0055】
いくつかの実装では、ビデオエンコーダ20がCUの符号化ブロックを1以上のM×N予測ブロック(PB)にさらに分割することができる。予測ブロックは、同じ予測、インターまたはイントラが適用されるサンプルの矩形(正方形または非正方形)ブロックである。CUの予測ユニット(PU)は、輝度サンプルの予測ブロックと、彩度サンプルの2つの対応する予測ブロックと、予測ブロックを予測するために使用される構文要素とを備え得る。モノクロピクチャまたは3つの別個のカラープレーンを有するピクチャでは、PUが単一の予測ブロックと、予測ブロックを予測するために使用される構文構造とを備えることができる。ビデオエンコーダ20は、CUの各PUの輝度、Cb、およびCr予測ブロックについて、予測輝度、Cb、およびCrブロックを生成することができる。
【0056】
ビデオエンコーダ20はPUに対する予測ブロックを生成するために、イントラ予測またはインター予測を使用してもよい。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUに関連するフレームの復号化されたサンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUに関連するフレーム以外の1以上のフレームの復号化サンプルに基づいて、PUの予測ブロックを生成し得る。
【0057】
ビデオエンコーダ20がCUの1以上のPUのための予測輝度、Cb、およびCrブロックを生成した後、ビデオエンコーダ20は、CUの輝度残差ブロック内の各サンプルがCUの予測輝度ブロックのうちの1つの輝度サンプルと、CUの元の輝度符号化ブロックの対応するサンプルとの間の差を示すように、元の輝度符号化ブロックからCUの予測輝度ブロックを減算することによって、CUのための輝度残差ブロックを生成し得る。同様に、ビデオエンコーダ20は、CUのCb残差ブロック内の各サンプルがCUの予測Cbブロックのうちの1つのCbサンプルと、CUの元のCb符号化ブロック内の対応するサンプルとの間の差を示し、CUのCr残差ブロック内の各サンプルがCUの予測Crブロックのうちの1つ内のCrサンプルと、CUの元のCr符号化ブロック内の対応するサンプルとの間の差を示し得るように、CUのためのCb残差ブロックおよびCr残差ブロックをそれぞれ生成し得る。
【0058】
さらに、
図4Cに示すように、ビデオエンコーダ20はCUの輝度、Cb、およびCr残差ブロックを1以上の輝度、Cb、およびCr変換ブロックに分解するために、4分木分割を使用してもよい。変換ブロックは、同じ変換が適用されるサンプルの矩形(正方形または非正方形)ブロックである。CUの変換ユニット(TU)は、輝度サンプルの変換ブロックと、彩度サンプルの2つの対応する変換ブロックと、変換ブロックサンプルを変換するために使用される構文要素とを備え得る。したがって、CUの各TUは、輝度変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連付けられ得る。いくつかの例では、TUに関連する輝度変換ブロックがCUの輝度残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであってもよい。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであってもよい。モノクロピクチャまたは3つの別々のカラープレーンを有するピクチャでは、TUが単一の変換ブロックと、変換ブロックのサンプルを変換するために使用される構文構造とを備えることができる。
【0059】
ビデオエンコーダ20は、TUの輝度変換ブロックに1以上の変換を適用して、TUの輝度係数ブロックを生成することができる。係数ブロックは、変換係数の2次元配列であってもよい。変換係数は、スカラー量であってもよい。ビデオエンコーダ20は、TUのCb変換ブロックに1以上の変換を適用して、TUのCb係数ブロックを生成することができる。ビデオエンコーダ20は、TUのCr変換ブロックに1以上の変換を適用して、TU用のCr係数ブロックを生成することができる。
【0060】
係数ブロック(例えば、輝度係数ブロック、Cb係数ブロックまたはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化することができる。量子化とは、一般に、変換係数が量子化されて、変換係数を表現するために使用されるデータの量がおそらく減少し、さらなる圧縮が提供されるプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化された変換係数を示す構文要素をエントロピー符号化することができる。例えば、ビデオエンコーダ20は、量子化された変換係数を示す構文要素に対して、コンテキスト適応バイナリ算術符号化(CABAC)を実行することができる。最後に、ビデオエンコーダ20は符号化されたフレームと関連データの表現を形成するビット列を含むビットストリームを出力することができ、これは、記憶装置32に保存されるか、またはデスティネーション装置14に送信されるかのいずれかである。
【0061】
ビデオエンコーダ20によって生成されたビットストリームを受信した後、ビデオデコーダ30は、ビットストリームを構文解析して、ビットストリームから構文要素を得ることができる。ビデオデコーダ30は、ビットストリームから得られた構文要素に少なくとも部分的に基づいて、ビデオデータのフレームを再構成してもよい。ビデオデータを再構
成するプロセスは一般に、ビデオエンコーダ20によって実行される符号化プロセスと逆である。例えば、ビデオデコーダ30は、現在のCUのTUに関連付けられた係数ブロックに対して逆変換を実行して、現在のCUのTUに関連付けられた残差ブロックを再構成することができる。ビデオデコーダ30はまた、現在のCUのPUのための予測ブロックのサンプルを、現在のCUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUの符号化ブロックを再構成する。フレームの各CUについて符号化ブロックを再構成した後、ビデオデコーダ30は、フレームを再構成することができる。
【0062】
上述のように、ビデオ符号化は主に2つのモード、すなわち、イントラフレーム予測(またはイントラ予測)およびインターフレーム予測(またはインター予測)を使用してビデオ圧縮を達成する。パレットベースの符号化は、多くのビデオ符号化規格によって採用されている別の符号化方式である。画面生成コンテンツ符号化に特に適し得るパレットベースの符号化ではビデオコーダ(例えば、ビデオエンコーダ20またはビデオデコーダ30)は所与のブロックのビデオデータを表す色のパレットテーブルを形成する。パレットテーブルは所与のブロックの最も優勢な(例えば、頻繁に使用される)画素値を含む。指定されたブロックのビデオデータで頻繁に表現されない画素値は、パレットテーブルに含まれないか、エスケープカラーとしてパレットテーブルに含まれる。
【0063】
パレットテーブルの各エントリには、パレットテーブルの対応する画素値のインデックスが含まれる。ブロックのサンプルに対するパレットインデックスは、パレットテーブルからのどのエントリがどのサンプルを予測または再構成するために使用されるかを示すために符号化されてもよい。このパレットモードは、ピクチャ、スライス、タイル、またはその他のビデオブロックのグループ化の最初のブロックのパレット予測子を生成するプロセスから始まる。以下に説明するように、後続のビデオブロックのパレット予測子は、典型的には以前に使用されたパレット予測子を更新することによって生成される。説明のために、パレット予測子は画像レベルで定義されると仮定される。言い換えると、ピクチャはそれぞれが独自のパレットテーブルを有する複数の符号化ブロックを含むことができるが、ピクチャ全体に対する1つのパレット予測子が存在する。
【0064】
ビデオビットストリームのパレットエントリのシグナリングに必要なビットを減らすために、ビデオデコーダは、ビデオブロックの再構成に使用されるパレットテーブルの新しいパレットエントリを決定するためのパレット予測子を利用することができる。例えば、パレット予測子は以前に使用されたパレットテーブルからのパレットエントリを含むことができ、あるいは最後に使用されたパレットテーブルの全てのエントリを含むことによって、最後に使用されたパレットテーブルで初期化されることさえできる。一部の実装では、パレット予測子が最後に使用されたパレットテーブルからの全てのエントリより少ないエントリを含み、その後、他の以前に使用されたパレットテーブルからのいくつかのエントリを組み込むことができる。パレット予測子は、異なるブロックを符号化するために使用されるパレットテーブルと同じサイズを有してもよく、あるいは異なるブロックを符号化するために使用されるパレットテーブルよりも大きくても小さくてもよい。1つの例では、パレット予測子が64のパレットエントリを含む先入れ先出し(FIFO)テーブルとして実装されている。
【0065】
パレット予測子からビデオデータのブロックのパレットテーブルを生成するために、ビデオデコーダは符号化されたビデオビットストリームから、パレット予測子の各エントリに対して1ビットのフラグを受信することができる。1ビットフラグはパレット予測子の関連するエントリがパレットテーブルに含まれることを示す第1値(例えば、バイナリ1)、またはパレット予測子の関連するエントリがパレットテーブルに含まれないことを示す第2値(例えば、バイナリ0)を有することができる。パレット予測子のサイズがビデオデータのブロックに使用されるパレットテーブルより大きい場合、ビデオデコーダは、
パレットテーブルの最大サイズに達すると、より多くのフラグの受信を停止することがある。
【0066】
一部の実装では、パレットテーブルの一部のエントリがパレット予測子を使用して決定される代わりに、符号化されたビデオビットストリームで直接シグナリングされてもよい。そのようなエントリについて、ビデオデコーダは符号化されたビデオビットストリームから、輝度の画素値を示す3つの別個のmビット値と、エントリに関連付けられた2つの彩度成分とを受信することができ、ここで、mは、ビデオデータのビット深度を表す。直接シグナリングされたパレットエントリに必要な複数のmビット値と比較して、パレット予測子から派生したそれらのパレットエントリは、1ビットフラグのみを必要とする。したがって、パレット予測子を使用していくつかのまたは全てのパレットエントリをシグナリングすることは、新しいパレットテーブルのエントリをシグナリングするために必要とされるビット数を大幅に低減することができ、それによってパレットモード符号化の全体的な符号化効率を改善する。
【0067】
多くの場合、1つのブロックのパレット予測子は、以前に符号化された1以上のブロックを符号化するために使用されるパレットテーブルに基づいて決定される。しかし、ピクチャ、スライス、またはタイル内の最初の符号化ツリーユニットを符号化するとき、以前に符号化されたブロックのパレットテーブルは利用できないことがある。したがって、以前に使用したパレットテーブルのエントリを使用してパレット予測子を生成することはできない。このような場合、パレット予測子イニシャライザのシーケンスはシーケンスパラメータセット(SPS)および/またはピクチャパラメータセット(PPS)でシグナリングされることがあり、これは、以前に使用されたパレットテーブルが利用できないときにパレット予測子を生成するために使用される値である。SPSは一般に、各スライスセグメントヘッダに見られる構文要素によって参照されるPPSに見られる構文要素の内容によって決定される、符号化ビデオシーケンス(CVS)と呼ばれる一連の連続符号化ビデオ画像に適用される構文要素の構文構造を指す。PPSは一般に、各スライスセグメントヘッダに見られる構文要素によって決定されるように、CVS内の1以上の個々のピクチャに適用される構文要素の構文構造を指す。それゆえ、SPSは一般に、PPSより高いレベルの構文構造と見なされ、SPSに含まれる構文要素は一般に、PPSに含まれる構文要素と比較して、あまり頻繁に変更されず、ビデオデータのより大きな部分に適用されることを意味する。
【0068】
図5は、本開示のいくつかの実装による、インター符号化ブロックおよびイントラ符号化ブロックの残差を変換するための例示的な多重変換選択(MTS)スキームを示す表500である。例えば、符号化の間、ビデオエンコーダ20は、
図2の変換処理ユニット52を用いてMTSを実行する。復号化の間、ビデオデコーダ30は、
図3の逆変換処理ユニット88を用いて、対応する逆変換方法を使用して逆変換を実行する。
【0069】
現在のVVC仕様は、インター符号化ブロックおよびイントラ符号化ブロックの両方において残差を変換するためのMTS方式を採用している。MTSが使用される場合、符号化の間に、ビデオエンコーダが符号化されたブロックの残差に適用するために、多くの変換方法のうちの1つを選択する。例えば、ビデオエンコーダはDCT2変換(例えば、MTSがディスエーブルされる)、DCT8変換、またはDST7変換を、符号化ブロックの残差に適用することができる。構文要素のグループ(例えば、MTS_CU_flag、MTS_Hor_flag、MTS_Ver_flag)(フラグとも呼ばれる)は、符号化されたブロックに使用される特定の変換方法を通知するために使用される。
【0070】
いくつかの実施形態では、イントラモードとインターモードのためのMTSを別々に可能にするために、2つの構文要素がシーケンスレベルで指定される(例えば、シーケンス
パラメータセット(SPS)に含まれる)。MTSがシーケンスレベルで有効にされると、別のCUレベル構文要素(例えば、表500のMTS_CU_flag)が、MTSが特定のCUに適用されるかどうかを示すためにさらにシグナリングされる。
【0071】
いくつかの実施形態ではMTSが符号化ブロックの特性に関連する複数の基準が満たされる場合にのみ使用され、この基準には、1)符号化ブロックの幅および高さの両方が所定の値(例えば、32)以下であること、2)符号化ブロックが輝度符号化ブロックであること(例えば、MTSが輝度残差符号化においてのみ使用されるので、輝度CBFフラグ==1であること)、および3)最後の非ゼロ係数の水平座標および垂直座標の両方が所定の値(例えば、16)よりも小さいこと(例えば、最後の非ゼロ係数が変換ブロックの所定の左上領域に限定されること)が含まれる。上記の基準のいずれかが満たされない場合、ビデオエンコーダはMTSを適用せず、むしろブロック残差を変換するためのDCT2変換のようなデフォルト変換方法を適用し、対応する構文要素は、デフォルト変換が使用されることを示すように設定される(例えば、MTS_CU_flag==0およびMTS_Hor_flagおよびMTS_Ver_flagはシグナリングされない)。
【0072】
表500は、構文要素値と、MTSで使用されている対応する変換方法とを示す。DCT2変換を使用してブロック残差を変換する場合、MTS_CU_flagは0に設定され、MTS_Hor_flagおよびMTS_Ver_flagはシグナリングされない。MTS_CU_flagが1にセットされている場合(例えば、DCT8および/またはDST7が使用されていることを示す)、水平方向および垂直方向の変換タイプを示すために、2つの他の構文要素(例えば、MTS_Hor_flag、MTS_Ver_flag)が追加でシグナリングされる。MTS_Hor_flag==1またはMTS_Ver_flag==1の場合、それぞれの水平または垂直成分はDST7方式を使用して変換される。MTS_Hor_flag==0またはMTS_Ver_flag==0の場合、DCT8方式で水平/垂直成分を変換する。
【0073】
いくつかの実施形態では、全てのMTS変換係数がDCT2コア変換と同じ6ビット精度で符号化される。VVCがHEVCで使用される全ての変換サイズをサポートすると仮定すると、HEVCで使用される全ての変換コアは、4ポイント、8ポイント、16ポイント、および32ポイントDCT2変換、ならびに4ポイントDST7変換を含めて、VVCと同じに保たれる。一方、64ポイントDCT2、4ポイントDCT8、8ポイント、16ポイント、32ポイントDST7およびDCT8を含む他の変換コアは、VVC変換設計において追加的にサポートされる。
【0074】
さらに、大きなサイズのDST7またはDCT8変換の計算量を削減するために、ブロックの幅または高さのいずれかが32に等しい場合に、変換係数(例えば、変換ブロックの左上16×16領域)が低周波数領域の外側に位置する変換係数(例えば、高周波数変換係数)はDST7およびDCT8変換ブロックに対してゼロに設定される(例えば、ゼロアウト動作)。
【0075】
いくつかの実施形態では、変換ブロックの変換係数が非重複係数グループ(CG)を使用して符号化される。CGサイズは、変換ブロックのサイズに基づいて決定される。変換ブロック内のCGおよび各CG内の変換係数は1つの事前定義された走査順序(例えば、対角走査順序)に基づいて符号化される。
【0076】
図6は、本開示のいくつかの実装による、非ゼロ変換係数を有する例示的な変換ブロック600を示すブロック図である。変換ブロック600は、変換ブロック600の左上のメッシュ部分に対応する第1領域602と、変換ブロック600の破線部分によって表される第2領域604とを含む。第1領域602は変換ブロック600の所定のサイズ(例
えば、左上16×16領域)を有し、1以上の非ゼロ変換係数(例えば、第1、第2、および第3の非ゼロ係数606、608、および610)を含む。第2領域604は1以上の非ゼロ変換係数を含んでも含まなくてもよい、第1領域602の外側の領域である。
【0077】
図5で説明したように、ビデオエンコーダ/デコーダはMTSを使用して、イントラモードおよびインターモードの両方(例えば、DCT8またはDST7変換)における残差(例えば、輝度残差)を変換してもよい。さらに、ビデオエンコーダ/デコーダは(1)符号化ブロックの幅および高さの両方が所定の値(たとえば、32)以下である場合にのみMTSを使用し、(2)符号化ブロックは輝度符号化ブロックであり(たとえば、MTSが輝度残差符号化にのみ適用されるので、輝度CBFフラグ==1)、(3)最後の非ゼロ係数(たとえば、第3非ゼロ係数610)の水平座標および垂直座標の両方が所定の値(たとえば、16)よりも小さく、すなわち、第1領域602内である。
【0078】
いくつかの実施形態では、上に列挙した3つの基準が満たされる場合、変換ブロックの所定の左上領域(例えば、第1領域602)に1つの非ゼロ変換係数しかない場合であっても、MTSをイネーブルにすることができる。他の実施形態ではMTS符号化利得がDCT2変換よりも良好なエネルギーコンパクションにつながる1つの非DCT2変換の適切な選択から来るので、MTSツールは変換ブロックに十分な数の非ゼロ変換係数が存在する場合にのみ有効である。この場合、MTS構文要素をシグナリングするために、追加の基準が使用される。
【0079】
いくつかの実施形態では、追加の基準が変換ブロック内に少なくとも最小数の非ゼロ変換係数があることを含む(例えば、MTS_CU_flagは上記の3つの基準が満たされるとき、および変換ブロック全体に少なくとも最小数の非ゼロ変換係数があるときにのみシグナリングされる)。復号化の間、ビデオデコーダは非ゼロ変換係数の数が事前に定義されたしきい値を超えた場合に、MTS構文要素(例えば、MTS_CU_flag)を受信し、解析するだけである。非ゼロ変換係数の最小数が存在しない場合、ビデオデコーダはMTS_CU_flagを0に設定し、逆DCT2変換を変換ブロックに適用する。例えば、変換ブロック600において、MTSをイネーブルするための非ゼロ変換係数の最小数が2であると仮定すると、3つの非ゼロ係数があるので、MTSは変換ブロック600に対してイネーブルされ得る。
【0080】
いくつかの実施形態では、MTS構文要素が変換ブロック内の最後の非ゼロ変換係数の走査順序インデックスに基づいて条件付きでシグナリングされる。例えば、
図6では最後の非ゼロ変換係数(第3非ゼロ係数610)の走査順序インデックスはNであり、その結果、ビデオエンコーダまたはデコーダは変換ブロック内の非ゼロ係数の数が所定の閾値を超えるかどうかを判定するために、全ての非ゼロ変換係数をカウントする必要はない(これは輝度残差を解析するときに、無視できない計算の複雑さの増加を引き起こす可能性がある)。具体的には、MTSが最後の非ゼロ係数の走査順序インデックス(すなわち、N)が所定の閾値(例えば、3)を超える場合にのみ、変換ブロックに使用される。最後の非ゼロ変換係数の走査順序インデックスが所定のしきい値よりも大きい場合、MTS_CU_flagは(例えば、
図5のテーブル500に従って)使用される特定の変換を示すようにシグナリングされる。一方、最後の非ゼロ変換係数のインデックス位置が所定のしきい値よりも大きくない場合、MTS_CU_flagはシグナリングされず、ゼロであると推論される(例えば、DCT2が使用される)。このアプローチでは、MTS構文要素を解析する前に、変換ブロックごとに1つのチェックのみが実行される。以下の表1は、この方法が関連する変更に下線を引いた条件MTSシグナリングに適用される場合に、符号化ユニットおよび変換ユニットに使用される構文テーブルを示す。表1では、ブール変数MtsLastSigCoeffPosMetThresholdFlagを使用して、最後の非ゼロ係数のインデックス位置が事前定義されたしきい値より大きいかどうか
を表すため、MTS_CU_flagが所定の変換ブロックに対してシグナリングされることが許可される。
【表1】
【表2】
表1:MTSシグナリングのための符号化ユニットおよび変換ユニットの修正構文テーブル
【0081】
図5に関連する説明で言及したように、MTSの下で、変換ブロックにおける所定の左上領域(例えば、非ゼロ領域としても知られる左上16×16領域)の外側の変換係数(例えば、高周波変換係数)は変換ブロックの幅または高さのいずれかが所定値(例えば、16)よりも大きい場合に、ゼロに強制される(例えば、この領域は、ゼロアウト領域としても知られる)。例えば、
図6において、第2領域604はゼロアウト領域であってもよく、第1領域602は非ゼロ領域であってもよい。MTS_CU_flagは最後の非ゼロ係数(例えば、第3非ゼロ係数610)の水平座標および垂直座標の両方が所定の値(例えば、16)よりも小さく、最後の非ゼロ係数が非ゼロ領域内にあることを示す場合にのみシグナリングされる。しかしながら、変換係数が対角走査順序に基づいて走査されるという事実のために、そのようなMTSシグナリング条件は全ての非ゼロ変換係数が常に所定の最上位左側領域の内側に位置することを保証することができない(例えば、
図6には示されていないが、最後の非ゼロ係数の前の1以上の非ゼロ係数が第2領域604に存在することがある)。したがって、全ての非ゼロ係数が非ゼロ領域(例えば、第1領域602)の内側にあることを保証するために、追加のチェックが必要である。
【0082】
いくつかの実施形態では、追加のチェックの例がMTSゼロアウト領域(例えば、第2領域604)内に非ゼロ係数が存在する場合に、MTSインデックスの値、すなわち、MTS_idxがゼロでなければならない(すなわち、DCT2がデフォルトで使用される)ように、ビットストリーム適合制約を含む。
【0083】
いくつかの実施形態では、左上領域の外側に位置する非ゼロ係数があるかどうかに応じて(例えば、min(TUWidth,16)×min(TUHeight,16))、
MTSインデックスがシグナリングされる。肯定された場合、MTSインデックスはシグナリングされず、常に0として推論される。そうでない場合、MTSインデックスはビットストリームにシグナリングされ、使用されている変換を示す。
【0084】
各走査位置をチェックする代わりに、符号化グループ(CG)レベルでCBFをチェックすることによって、ゼロアウト領域に非ゼロ係数があるかどうかの判定を行うことができる。具体的には、ゼロアウト領域内に位置する現在のTBのいずれかのCGが1に等しいCBF値を有する(すなわち、CG内に非ゼロ係数がある)場合、MTSインデックスのシグナリングは省略される。以下の表2は(現在のVVC仕様と比較して)上述のMTSシグナリング制約が適用される場合の変換ユニットの修正構文テーブルを示し、提案された制約付きMTSシグナリングに関連する変更に下線が引かれている。
【表3】
【表4】
【表5】
表2:MTSシグナリングのための提案された変換ユニット構文テーブル
【0085】
いくつかの実施形態では、変換スキップモードがビットストリーム内の3つの変換スキップフラッグを、各成分に1つずつシグナリングすることによって、輝度成分および彩度成分に独立して適用することができる。しかしながら、現在の設計では、現在のTUの彩度残差がJCCRモードで符号化されるとき、変換スキップモードを彩度成分に適用することは禁止される。変換スキップおよびJCCRは、彩度残差を再構成する際に異なる段階で適用されるので、2つの符号化ツールを同時に使用可能にすることができる。したがって、本開示の別の実施形態では、1つのTU内の彩度残差がJCCRモードで符号化される場合に、彩度変換スキップモードを可能にすることが提案される
【0086】
図7は、本開示のいくつかの実装による、ビデオコーダが多重変換選択(MTS)スキームを使用してブロック残差を符号化する技法を実装する例示的なプロセス700を示すフローチャートである。説明の便宜上、プロセス700はビデオデコーダ、例えば、
図3のビデオデコーダ30によって実行されるものとして説明される。プロセス700の間、MTSのシグナリングは、最後の非ゼロ係数の位置、および変換ブロックの異なる領域における非ゼロ係数の存在に条件付けされる。
【0087】
最初のステップとして、ビデオデコーダ30は変換ブロックを符号化するビットストリームを受信し、変換ブロックは非ゼロ領域(例えば、左上16×16領域)およびゼロアウト領域(例えば、左上16×16領域の外側の領域)を含む(710)。
【0088】
次に、ビデオデコーダ30は、ゼロアウト領域内に非ゼロ係数があるかどうかをチェックする(720)。
【0089】
変換ブロックのゼロアウト領域内に非ゼロ係数が存在しないとの判断に従い、ビデオデコーダ30は走査方向(例えば、対角走査方向)(730)に沿った変換ブロックの最後の非ゼロ係数の走査順序インデックスを決定する。例えば、
図6において、変換ブロックの最後の非ゼロ係数(第3非ゼロ係数610)は、3の走査次数インデックスを有する。
【0090】
最後の非ゼロ係数の走査順序インデックスが事前定義されたしきい値(例えば、ブール変数MtsLastSigCoeffPosMetThresholdFlag==1より大きいという決定に従って)(740)、ビデオデコーダ30はビットストリームから、多重変換選択(MTS)インデックスの値を受信する(750)。例えば、
図6の変換ブロック600について、所定のしきい値が2である場合、最後の非ゼロ係数3が所定のしきい値2より大きいので、ビデオデコーダ30はMTSインデックスの値を受信する。
【0091】
最後に、ビデオデコーダ30は、それぞれの変換を、MTSインデックス(760)の値に基づいて、水平方向および垂直方向の両方における変換ブロックの変換係数に適用する。例えば、
図5および関連する記載で説明したように、MTS_CU_flagの値が0である場合、ビデオデコーダは逆DCT2変換を変換ブロックに適用する。MTS_CU_flagの値が1の場合、ビデオデコーダはさらに追加の構文要素(MTS_Hor_flagやMTS_Ver_flagなど)を受信し、逆DST7またはDCT8を変換ブロックに選択的に適用する。
【0092】
いくつかの実施形態では、最後の非ゼロ係数の走査順序インデックスが所定の閾値以下であるという決定に従って、ビデオデコーダ30は変換ブロック(例えば、DCT-2)にデフォルト変換を適用する。
【0093】
ある実施形態では、ビデオデコーダ30が、MTSインデックスがビットストリームから受信する第1値(例えば、1)を有するという決定に従って、MTSインデックスの値に基づいて、変換ブロックに変換の各々を適用する。MTS水平フラグ(MTS_Hor_flagなど)の値とMTS垂直フラグ(MTS_Ver_flagなど)の値に基づいて水平方向の変換ブロックの係数を適用し(MTS_Hor_flag==0の場合はDST-7、MTS_Ver_flag==1の場合はDCT-8など)、MTSインデックスが2番目の値を持つとの判断に従って(例えば、0)、水平方向と垂直方向の両方でデフォルトの変換(例えばDCT-2)を使用して変換ブロックを変換する。
【0094】
いくつかの実施形態では、ビデオデコーダ30がゼロアウト領域内の輝度係数群の符号化ブロックフラグ(CBF)をチェックし、ゼロアウト領域内の全ての輝度係数群のCBFがゼロである場合にのみ、ゼロアウト領域内に非ゼロ係数がないと判定することによって、ゼロアウト領域内に非ゼロ係数があるかどうかをチェックする。例えば、ゼロアウト領域内の1つの輝度係数群のCBFが1である場合、ゼロアウト領域内に少なくとも1つの非ゼロ係数があり、MTSインデックスはシグナリングされない。
【0095】
いくつかの実施形態では、ビデオデコーダ30が最後の非ゼロ係数の水平座標および垂直座標をチェックし、最後の非ゼロ係数の水平座標または垂直座標のいずれかがゼロアウト領域内にあるときに、ゼロアウト領域内に少なくとも1つの非ゼロ係数があると判定することによって、ゼロアウト領域内に非ゼロ係数があるかどうかをチェックする。例えば、最後の非ゼロ係数の水平座標または垂直座標がゼロアウト領域内にある場合、ゼロアウト領域内に少なくとも1つの非ゼロ係数がある。
【0096】
いくつかの実施形態では変換ブロックの彩度残差が彩度残差ジョイント符号化(JCCR)モードにおいて符号化され、彩度変換スキップモードは変換ブロックに対してイネーブルされる。
【0097】
いくつかの実施形態では、非ゼロ領域が変換ブロックの左上16×16領域である。
【0098】
いくつかの実施形態では、走査順序は対角走査順序である。
【0099】
上述のように、MTSを使用する動機は、DCT/DST変換における他のコア変換を使用して、残差サンプルのより良好なエネルギー圧縮を達成することである。異なる予測モードから生じる残差は、異なる特性を提示することができる。いくつかの実施形態では、全ての予測モードにMTSを使用することは有益ではない場合がある。例えば、通常、空間領域におけるよりも時間領域におけるサンプル間に多くの相関があり、したがって、インター予測サンプルはしばしば、イントラ予測サンプルよりも良好な予測効率を有する。換言すれば、インター予測ブロックの残差の大きさは、イントラ予測ブロックの残差の大きさよりも小さいことが多い。この場合、MTSモードは、ブロックをインター符号化するためにディスエーブルされてもよい。具体的には、現在の符号化ブロックがイントラ符号化されるとき、構文mts_idxは非DCT2変換が現在の符号化ブロックに適用されるか否かを決定するために解析される。さもなければ、現在の符号化ブロックがインター符号化されるとき、構文mts_idxは解析されず、常に0であると推論される、すなわち、DCT2変換のみが適用可能である。提案された方法を有する対応する構文テーブルは、以下のように指定される。
【表6】
表3:MTSシグナリングのための追加の提案された変換ユニット構文テーブル
【0100】
図8は、本開示のいくつかの実装による、例示的なコンテキスト適応バイナリ算術符号化(CABAC)エンジンを示すブロック図である。
【0101】
コンテキスト適応バイナリ算術符号化(CABAC)は多くのビデオ符号化規格、例えば、H.264/MPEG-4 AVC、HEVC(High Efficiency Video Coding)およびVVCで使用されるエントロピー符号化の形態である。CABACは算術符号化に基づいており、ビデオ符号化規格のニーズに適応させるために、いくつかの革新および変更がなされている。例えば、CABACはバイナリシンボルを符号化し、これは、複雑さを低く保ち、任意のシンボルのより頻繁に使用されるビットに対する確率モデリングを可能にする。確率モデルは、局所コンテキストに基づいて適応的に選択され、符号化モードが通常局所的に良好に相関されるので、確率のより良好なモデリングを可能にする。最後に、CABACは量子化された確率範囲および確率状態を用いることで、乗算不要の範囲分割を実現している。
【0102】
CABACは、異なるコンテキストに対して複数の確率モードを有する。まず、全ての非バイナリシンボルをバイナリに変換する。次いで、各ビン(またはビットと呼ばれる)について、コーダはどの確率モデルを使用するかを選択し、次いで、近くの要素からの情報を使用して、確率推定値を最適化する。最後に算術符号化を適用してデータを圧縮する。
【0103】
コンテキストモデリングは、符号化シンボルの条件付き確率の推定値を提供する。適切なコンテキストモデルを利用して、符号化する現在のシンボルの近傍における既に符号化されたシンボルに従って異なる確率モデル間で切り替えることによって、所与のシンボル間冗長性を利用することができる。データシンボルの符号化には、以下の段階が含まれる。
【0104】
2値化:CABACは、バイナリ決定(1または0)のみが符号化されることを意味するバイナリ算術符号化を使用する。非2値化シンボル(例えば、変換係数または動きベクトル)は、算術符号化の前に「2値化」されるか、またはバイナリコードに変換される。このプロセスはデータシンボルを可変長コードに変換するプロセスに似ているが、バイナリコードは送信前にさらに(算術コーダによって)符号化される。ステージは、2値化されたシンボルの各ビン(または「ビット」)に対して繰り返される。
【0105】
コンテキストモデル選択:「コンテキストモデル」は、2値化シンボルの1以上のビンの確率モデルである。このモデルは、最近符号化されたデータシンボルの統計に応じて、利用可能なモデルの選択から選択されてもよい。コンテキストモデルは、各ビンが「1」または「0」である確率を格納する。
【0106】
算術符号化:算術コーダは、選択された確率モデルに従って各ビンを符号化する。各ビンには2つのサブレンジ(「0」および「1」に対応する)しかないことに留意されたい。
【0107】
確率更新:選択されたコンテキストモデルは実際の符号化値に基づいて更新される(例えば、ビン値が「1」であった場合、「1」の頻度カウントが増加される)。
【0108】
各非バイナリ構文要素値をビンのシーケンスに分解することによって、CABACにおける各ビン値のさらなる処理は関連する符号化モード決定に依存し、これは、通常モードまたはバイパスモードのいずれかとして選択することができる。後者は、一様に分布していると仮定され、その結果、正規のバイナリ算術符号化(および復号化)プロセス全体が単にバイパスされるビンに対して選択される。正規符号化モードでは、各ビン値が正規バイナリ算術符号化エンジンを使用することによって符号化され、関連する確率モデルは構文要素のタイプと、構文要素の2値化表現におけるビン位置またはビンインデックス(binIdx)とに基づいて、固定選択によって決定されるか、または関連するサイド情報(例えば、CU/PU/TUの空間近傍、成分、深さ、またはサイズ、あるいはTU内の位置)に応じて2つ以上の確率モデルから適応的に選択される。確率モデルの選択は、コンテキストモデリングと呼ばれる。重要な設計決定として、後者の場合は一般に、最も頻繁に観測されるビンのみに適用され、他の、通常は頻繁に観測されないビンは、ジョイント、典型的にはゼロ次確率モデルを使用して処理される。このようにして、CABACはサブシンボルレベルでの選択的適応確率モデリングを可能にし、従って、著しく低減した全体モデリングまたは学習コストでシンボル間冗長性を活用するための効率的な手段を提供する。固定の場合と適応の場合の両方について、原則として、1つの確率モデルから別の確率モデルへの切り替えが、任意の2つの連続する正規符号化ビンの間で起こり得ることに留意されたい。一般に、CABACにおけるコンテキストモデルの設計は不必要なモ
デリングコストオーバーヘッドを回避し、統計的依存性を大幅に活用するという相反する目的の間の良好な妥協ポイントを見出す目的を反映する。
【0109】
CABACにおける確率モデルのパラメータは適応的であり、これはビンソースの統計的変動に対するモデル確率の適応がエンコーダ及びデコーダの両方において、後方適応及び同期方式でビン毎に実行されることを意味し、この処理は確率推定と呼ばれる。そのために、CABACの各確率モデルは、区間[0:01875;0:98125]の範囲にある関連付けられたモデル確率値pを持つ126の異なる状態の中から1つを取り出すことができる。各確率モデルの2つのパラメータは、コンテキストメモリ内に7ビットエントリとして記憶される:最低確率シンボル(LPS)のモデル確率pLPSを表す63の確率状態の各々について6ビット、および最高確率シンボル(MPS)の値であるnMPSについて1ビット。
【0110】
1以上の例では、説明された機能がハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実施される場合、機能は、1以上の命令またはコードとして、コンピュータ可読媒体上に記憶され、またはそれを介して送信され、ハードウェアベースの処理ユニットによって実行されてもよい。コンピュータ可読媒体はデータ記憶媒体のような有形媒体に対応するコンピュータ可読記憶媒体、または例えば通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は一般に、(1)非一時的有形コンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応することができる。データ記憶媒体は本願に記載の実施のための命令、コードおよび/またはデータ構造を取り出すために、1以上のコンピュータまたは1以上のプロセッサによってアクセス可能な任意の利用可能な媒体であってもよい。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0111】
本明細書の実装の説明で使用される用語は特定の実装を説明するためだけのものであり、特許請求の範囲を限定することを意図するものではない。実施形態の説明および添付の特許請求の範囲で使用されるように、「1つの」などの単数形は文脈が別段の明確な指示をしない限り、複数形も同様に含むことが意図される。また、本明細書で使用される用語「および/または」は関連する列挙された項目のうちの1以上の任意の、および全ての可能な組合せを指し、包含することが理解されるのであろう。用語「含む」などは本明細書で使用される場合、述べられた特徴、要素、および/または構成要素の存在を指定するが、1以上の他の特徴、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことがさらに理解されるであろう。
【0112】
また、第1、第2などの用語は様々な要素を説明するために本明細書で使用され得るが、これらの要素はこれらの用語によって限定されるべきではないことも理解される。これらの用語は、1つの要素を別の要素から区別するためにのみ使用される。例えば、実施の範囲から逸脱することなく、第1電極を第2電極と呼ぶことができ、同様に、第2電極を第1電極と呼ぶことができる。第1電極と第2電極は両方とも電極であるが、それらは同じ電極ではない。
【0113】
本出願の説明は例示および説明の目的で提示されており、網羅的であることも、開示された形態の発明に限定されることも意図されていない。前述の説明および関連する図面に提示された教示の恩恵を受ける当業者には、多くの修正形態、変形形態、および代替実施形態が明らかになる。本実施形態は本発明の原理、実際の応用を最もよく説明するために、また、他の当業者が様々な実施のために本発明を理解し、考えられる特定の用途に適した様々な修正を伴う基礎となる原理および様々な実施を最もよく利用することができるように、選択され、説明された。したがって、特許請求の範囲は開示された実施態様の特定
の例に限定されるべきではなく、変更および他の実施態様は添付の特許請求の範囲内に含まれることが意図されることを理解されたい。
【0114】
〔関連出願〕
本出願は2019年11月21日に出願された「変換および係数シグナリングに関する方法および装置」という名称の米国仮特許出願第62/938,890号、および2020年1月10日に出願された「変換および係数シグナリングに関する方法および装置」という名称の米国仮特許出願第62/959,325号の優先権を主張し、これらの両方は、その全体が参照により組み込まれる。