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

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

▶ キヤノン株式会社の特許一覧

特開2022-188276符号化ブロックを復号する方法、符号化ブロックを符号化する方法、復号装置、符号化装置、コンピュータプログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022188276
(43)【公開日】2022-12-20
(54)【発明の名称】符号化ブロックを復号する方法、符号化ブロックを符号化する方法、復号装置、符号化装置、コンピュータプログラム
(51)【国際特許分類】
   H04N 19/107 20140101AFI20221213BHJP
   H04N 19/136 20140101ALI20221213BHJP
   H04N 19/176 20140101ALI20221213BHJP
   H04N 19/186 20140101ALI20221213BHJP
【FI】
H04N19/107
H04N19/136
H04N19/176
H04N19/186
【審査請求】有
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2022165715
(22)【出願日】2022-10-14
(62)【分割の表示】P 2021531287の分割
【原出願日】2020-01-20
(31)【優先権主張番号】2019201649
(32)【優先日】2019-03-11
(33)【優先権主張国・地域又は機関】AU
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】ロゼワーン, クリストファー ジェームズ
(57)【要約】      (修正有)
【課題】ビデオサンプルのツリー若しくはブロックを符号化及び復号するための方法及び装置を提供する。
【解決手段】ビデオビットストリームから画像フレームの符号化ツリーを復号する方法は、画像フレームのクロマフォーマットを判定することと、判定されたクロマフォーマットに基づいて、符号化ツリーユニットのクロマチャネルのうちの、複数の対応するルマブロックと一緒に配置される1つのクロマ符号化ブロックのサイズを決定することと、クロマブロックの決定されたサイズが所定の最小クロマブロックサイズである場合、クロマ符号化ブロックがイントラ予測を使用して符号化されていると決定することと、クロマ符号化ブロックのためのイントラ予測と、複数の対応するルマ符号化ブロックのうちの少なくとも1つのためのインター予測と、を使用して、符号化ツリーの符号化ブロックを復号することと、を含む。
【選択図】図14
【特許請求の範囲】
【請求項1】
ビットストリームから画像フレームの符号化ツリーユニットの符号化ブロックを復号する方法であって、
前記画像フレームのクロマフォーマットを決定することと、前記クロマフォーマットは、前記画像フレームのルマチャネルに対してサブサンプリングされたクロマチャンネルを有し、
前記符号化ツリーユニットを、各々がルマ符号化ブロックとクロマ符号化ブロックを有する一又は複数の符号化ユニットに分割することと、
クロマ符号化ブロックに対する更なる分割を許可するかを決定することと、
現在の符号化ユニットのクロマ符号化ブロックのブロックサイズが所定のクロマブロックサイズである場合、前記現在の符号化ユニットのルマ符号化ブロックが分割された場合であっても、前記現在の符号化ユニットの前記クロマ符号化ブロックに対する更なる分割は許可されず、
前記現在の符号化ユニットのルマ符号化ブロックが分割された場合、前記現在の符号化ユニットの前記クロマ符号化ブロックは、複数の対応するルマ符号化ブロックと対応する位置に配置され、
前記現在の符号化ユニットの前記クロマ符号化ブロックの前記ブロックサイズが前記所定のクロマブロックサイズである場合、前記現在の符号化ユニットの前記クロマ符号化ブロックがイントラ予測を使用して復号されることを決定することと、
前記現在の符号化ユニットの前記クロマ符号化ブロックがイントラ予測を使用して復号されることが決定された場合、イントラ予測を使用して、前記現在の符号化ユニットの前記クロマ符号化ブロックを復号することと、
を有することを特徴とする方法。
【請求項2】
イントラ予測を用いて前記複数の対応するルマ符号化ブロックのうちの少なくとも1つを復号することを更に有することを特徴とする請求項1に記載の方法。
【請求項3】
前記クロマフォーマットは4:2:0であることを特徴とする請求項1に記載の方法。
【請求項4】
前記クロマフォーマットは4:2:2であることを特徴とする請求項1に記載の方法。
【請求項5】
前記複数の対応するルマ符号化ブロックが、128個のルマサンプルのルマ領域の三項分割の結果である場合、前記所定のクロマブロックサイズは32サンプルに対応することを特徴とする請求項1に記載の方法。
【請求項6】
前記複数の対応するルマ符号化ブロックが64個のルマサンプルのルマ領域の四分木分割、二分割、または三項分割の結果である場合、前記所定のクロマブロックサイズは16サンプルに対応することを特徴とする請求項1に記載の方法。
【請求項7】
前記現在の符号化ユニットの前記クロマ符号化ブロックがイントラ予測を使用して復号されることが決定された場合、前記現在の符号化ユニットの前記クロマ符号化ブロックは、DCイントラ予測を使用して復号されることを特徴とする請求項1に記載の方法。
【請求項8】
前記複数の対応するルマ符号化ブロックの各々は、クロマ符号化ブロックと少なくとも一部でオーバーラップすることを特徴とする請求項1に記載の方法。
【請求項9】
禁止されたクロマ分割のリストに基づいて、クロマブロックのサイズが所定の最小サイズであることを決定することをさらに含むことを特徴とする請求項1に記載の方法。
【請求項10】
ビットストリームは、intra_chroma_pred_modeシンタックス要素を含むことによって、いくつかの可能なイントラ予測モードのうち1つのイントラ予測モードをシグナリングすることを特徴とする請求項1に記載の方法。
【請求項11】
画像フレームの符号化ツリーユニットの符号化ブロックを符号化する方法であって、
前記画像フレームのクロマフォーマットを決定することと、前記クロマフォーマットは、前記画像フレームのルマチャネルに対してサブサンプリングされたクロマチャンネルを有し、
前記符号化ツリーユニットを、各々がルマ符号化ブロックとクロマ符号化ブロックを有する一又は複数の符号化ユニットに分割することと、
クロマ符号化ブロックに対する更なる分割を許可するかを決定することと、
現在の符号化ユニットのクロマ符号化ブロックのブロックサイズが所定のクロマブロックサイズである場合、前記現在の符号化ユニットのルマ符号化ブロックが分割された場合であっても、前記現在の符号化ユニットの前記クロマ符号化ブロックに対する更なる分割は許可されず、
前記現在の符号化ユニットのルマ符号化ブロックが分割された場合、前記現在の符号化ユニットの前記クロマ符号化ブロックは、複数の対応するルマ符号化ブロックと対応する位置に配置され、
前記現在の符号化ユニットの前記クロマ符号化ブロックの前記ブロックサイズが前記所定のクロマブロックサイズである場合、前記現在の符号化ユニットの前記クロマ符号化ブロックがイントラ予測を使用して符号化されることを決定することと、
前記現在の符号化ユニットの前記クロマ符号化ブロックがイントラ予測を使用して符号化されることが決定された場合、イントラ予測を使用して、前記現在の符号化ユニットの前記クロマ符号化ブロックを符号化することと、
を有することを特徴とする方法。
【請求項12】
ビットストリームから画像フレームの符号化ツリーユニットの符号化ブロックを復号する復号装置であって、
前記画像フレームのクロマフォーマットを決定する手段と、前記クロマフォーマットは、前記画像フレームのルマチャネルに対してサブサンプリングされたクロマチャンネルを有し、
前記符号化ツリーユニットを、各々がルマ符号化ブロックとクロマ符号化ブロックを有する一又は複数の符号化ユニットに分割する手段と、
クロマ符号化ブロックに対する更なる分割を許可するかを決定する手段と、
現在の符号化ユニットのクロマ符号化ブロックのブロックサイズが所定のクロマブロックサイズである場合、前記現在の符号化ユニットのルマ符号化ブロックが分割された場合であっても、前記現在の符号化ユニットの前記クロマ符号化ブロックに対する更なる分割は許可されず、
前記現在の符号化ユニットのルマ符号化ブロックが分割された場合、前記現在の符号化ユニットの前記クロマ符号化ブロックは、複数の対応するルマ符号化ブロックと対応する位置に配置され、
前記現在の符号化ユニットの前記クロマ符号化ブロックの前記ブロックサイズが前記所定のクロマブロックサイズである場合、前記現在の符号化ユニットの前記クロマ符号化ブロックがイントラ予測を使用して復号されることを決定する手段と、
前記現在の符号化ユニットの前記クロマ符号化ブロックがイントラ予測を使用して復号されることが決定された場合、イントラ予測を使用して、前記現在の符号化ユニットの前記クロマ符号化ブロックを復号する手段と、
を有することを特徴とする復号装置。
【請求項13】
画像フレームの符号化ツリーユニットの符号化ブロックを符号化する符号化装置であって、
前記画像フレームのクロマフォーマットを決定する手段と、前記クロマフォーマットは、前記画像フレームのルマチャネルに対してサブサンプリングされたクロマチャンネルを有しており、
前記符号化ツリーユニットを、各々がルマ符号化ブロックとクロマ符号化ブロックを有する一又は複数の符号化ユニットに分割する手段と、
クロマ符号化ブロックに対する更なる分割を許可するかを決定する手段と、
現在の符号化ユニットのクロマ符号化ブロックのブロックサイズが所定のクロマブロックサイズである場合、前記現在の符号化ユニットのルマ符号化ブロックが分割された場合であっても、前記現在の符号化ユニットの前記クロマ符号化ブロックに対する更なる分割は許可されず、
前記現在の符号化ユニットのルマ符号化ブロックが分割された場合、前記現在の符号化ユニットの前記クロマ符号化ブロックは、複数の対応するルマ符号化ブロックと対応する位置に配置され、
前記現在の符号化ユニットの前記クロマ符号化ブロックの前記ブロックサイズが前記所定のクロマブロックサイズである場合、前記現在の符号化ユニットの前記クロマ符号化ブロックがイントラ予測を使用して符号化されることを決定する手段と、
前記現在の符号化ユニットの前記クロマ符号化ブロックがイントラ予測を使用して符号化されることが決定された場合、イントラ予測を使用して、前記現在の符号化ユニットの前記クロマ符号化ブロックを符号化する手段と、
を有することを特徴とする符号化装置。
【請求項14】
コンピュータに、請求項1乃至11のいずれか1項に記載の方法を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への参照
本出願は2019年3月11日に出願されたオーストラリア特許出願第2019201649号の出願日の35U.S.C§119に基づく利益を主張し、その全体が本明細書に完全に記載されているかのように参照により本明細書に組み込まれる。
【0002】
本発明は一般に、デジタルビデオ信号処理に関し、特に、ビデオサンプルのツリー若しくはブロックを符号化及び復号するための方法、装置及びシステムに関する。本発明はまた、ビデオサンプルのツリー若しくはブロックを符号化および復号するためのコンピュータプログラムが記録されたコンピュータ可読媒体を含むコンピュータプログラム製品に関する。
【背景技術】
【0003】
ビデオデータの送信及び記憶のためのアプリケーションを含む、ビデオ符号化のための多くのアプリケーションが現在存在する。多くのビデオ符号化規格も開発されており、他の規格も現在開発中である。ビデオ符号化標準化における最近の開発は、「Joint Video Experts Team」(JVET)と呼ばれるグループの形成をもたらした。Joint Video Experts Team(JVET)は、「Video Coding Experts Group」(VCEG)としても知られる国際電気通信連合(ITU)の電気通信標準化セクタ(ITU-T)のStudy Group 16、Question6(SG16/Q6)のメンバー、および「Moving Picture Experts group」(MPEG)としても知られる国際標準化機構/国際電気技術委員会合同技術委員会1/小委員会29/作業グループ11(ISO/IEC JTC1/SC29/WG11)のメンバーを含む。
【0004】
Joint Video Experts Team(JVET)は、米国サンディエゴで開催された10回目の会議でレスポンスを分析し、Call for Proposals(CfP)を発行した。提出されたレスポンスは、現在の最新技術のビデオ圧縮規格、すなわち「高効率ビデオ符号化」(HEVC)のものを著しく上回るビデオ圧縮能力を実証した。このアウトパフォーマンスに基づいて、「versatile video coding」(VVC)と命名される新しいビデオ圧縮規格を開発するプロジェクトを開始することが決定された。VVCは特に、ビデオフォーマットが(例えば、より高い解像度およびより高いフレームレートで)能力を増加させ、帯域幅コストが比較的高いWAN上のサービス配信に対する市場需要の増加に対処することにつれて、絶えずより高い圧縮性能に対する継続的な需要に対処することが予想される。同時に、VVCは、現代のシリコンプロセスで実施可能でなければならず、達成された性能対実施コスト(例えば、シリコン面積、CPUプロセッサ負荷、メモリ使用量、および帯域幅に関して)の間の許容可能なトレードオフを提供しなければならない。
【0005】
ビデオデータは、画像データのフレームのシーケンスを含み、各フレームは、1つまたは複数のカラーチャネルを含む。一般に、1つの一次色チャネル(primary colour channel)と2つの二次色チャネル(secondary colour channel)が必要である。一次色チャネルは一般に「ルマ(luma)」チャネルと呼ばれ、二次色チャネルは一般に「クロマ(chroma)」チャネルと呼ばれる。ビデオデータは典型的にはRGB(赤-緑-青)色空間で表示されるが、この色空間は3つのそれぞれの要素間に高度の相関を有する。エンコーダまたはデコーダによって見られるビデオデータ表現はしばしば、YCbCrなどの色空間を使用する。YCbCrは、伝達関数に従って「ルマ」にマッピングされた輝度をY(一次)チャネルに集中させ、CbおよびCr(二次)チャネルにクロマを集中させる。さらに、CbおよびCrチャネルは、「4:2:0クロマフォーマット」として知られる、ルマチャネルと比較してより低いレート、例えば、水平方向に半分および垂直方向に半分で空間的にサンプリング(サブサンプリング)されてもよい。4:2:0クロマフォーマットは、インターネットビデオストリーミング、ブロードキャストテレビジョン、Blu-RayTMディスクへの保存など、「コンシューマ」アプリケーションで一般的に使用される。水平方向に半分のレートでCbおよびCrチャネルをサブサンプリングし、垂直方向にサブサンプリングしないことは、「4:2:2クロマフォーマット」として知られている。4:2:2クロマフォーマットは、典型的には映画制作などのための映像のキャプチャを含むプロフェッショナルアプリケーションにおいて使用される。4:2:2クロマフォーマットのより高いサンプリングレートは、結果として得られるビデオを、カラーグレーディングのような編集動作に対してより弾力的にする。コンシューマに配布する前に、4:2:2クロマフォーマットマテリアルはしばしば、4:2:0クロマフォーマットに変換され、次いで、コンシューマに配布するために符号化される。クロマフォーマットに加えて、ビデオは、解像度およびフレームレートによっても特徴付けられる。例の解像度は3840x2160の解像度の超高精細度(UHD)、または7680x4320の解像度の「8K」で、例のフレームレートは60または120Hzである。ルマサンプルレートは、約500メガサンプル/秒から数ギガサンプル/秒の範囲であってもよい。4:2:0クロマフォーマットの場合、各クロマチャネルのサンプルレートは、ルマサンプルレートの4分の1であり、4:2:2クロマフォーマットの場合、各クロマチャネルのサンプルレートは、ルマサンプルレートの半分である。
【0006】
VVC規格は、「ブロックベース」コーデックであり、フレームは最初に、「符号化ツリーユニット」(CTU)として知られる領域の正方形アレイに分割される。CTUは一般に、128×128ルマサンプルなどの比較的大きな面積を占有する。しかしながら、各フレームの右端および下端のCTUは、面積がより小さくてもよい。各CTUには、ルマチャネルのための「符号化ツリー」と、クロマチャネルのための追加の符号化ツリーとが関連付けられている。符号化ツリーは、CTUの領域を「符号化ブロック」(CB)とも呼ばれる一連のブロックに分解することを定義する。単一の符号化ツリーがルマチャネルおよびクロマチャネルの両方のためのブロックを指定することも可能であり、その場合、並置された符号化ブロックの集合は「符号化ユニット」(CU)と呼ばれ、すなわち、各CUは、各色チャネルについて符号化ブロックを有する。CBは、特定の順序で符号化または復号するために処理される。4:2:0クロマフォーマットの使用の結果として、128×128ルマサンプル領域のためのルマ符号化ツリーを有するCTUは、128×128ルマサンプル領域と一緒に配置された64×64クロマサンプル領域のための対応するクロマ符号化ツリーを有する。単一の符号化ツリーがルマチャネルおよびクロマチャネルのために使用されているとき、所与のエリアのためのコロケートされたブロックの集合は一般に、「ユニット」、例えば、上述のCU、ならびに「予測ユニット」(PU)、および「変換ユニット」(TU)と呼ばれる。所与のエリアに対して別個の符号化ツリーが使用される場合、上述のCB、ならびに「予測ブロック」(PB)、および「変換ブロック」(TB)が使用される。
【0007】
「ユニット」と「ブロック」との間の上記の区別にもかかわらず、用語「ブロック」は、すべてのカラーチャネルに動作が適用されるフレームのエリアまたは領域に対する一般的な用語として使用されてもよい。
【0008】
各CUに対して、フレームデータの対応する領域のコンテンツ(サンプル値)の予測ユニット(PU)が生成される(「予測ユニット」)。さらに、予測とエンコーダへの入力で見られる領域のコンテンツとの間の差(または空間領域における「残差」)の表現が形成される。各色チャネルの差は、残差係数のシーケンスとして変換および符号化され、所与のCUのための1つまたは複数のTUを形成することができる。適用される変換は、残差値の各ブロックに適用される離散コサイン変換(DCT)または他の変換とすることができる。この変換は分離可能に適用され、すなわち、2次元変換は、2つのパスで実行される。ブロックは最初に、ブロック内のサンプルの各行に1次元変換を適用することによって変換される。次に、部分結果は、部分結果の各列に1次元変換を適用することによって変換され、残差サンプルを実質的に非相関化する変換係数の最終ブロックを生成する。さまざまなサイズの変換は、長方形形状のブロックの変換を含めて、VVC規格によってサポートされ、各側面寸法は2のべき乗である。変換係数は、ビットストリームへのエントロピー符号化のために量子化される。
【0009】
空間予測(「イントラ予測」)がPBを生成するために使用される場合、参照サンプルのセットが、現在のPBのための予測サンプルを生成するために使用される。参照サンプルは、既に「再構成」されているPBに隣接するサンプルを含む(イントラ予測サンプルへの残差サンプルの追加)。これらの隣接するサンプルは、PBの上に行を形成し、PBの左に列を形成する。行および列はまた、PB境界を越えて延在し、追加の近傍サンプルを含む。Z順走査におけるブロックの走査により、参照サンプルの幾つかは直前のブロックにおいて再構成されている。直前のブロックからのサンプルの使用は、ビデオエンコーダまたはデコーダを通るブロックのスループットを制限するフィードバック依存性をもたらす。さらに、比較的小さいブロックが他のフレームから予測される場合(「インター予測」)、特にサブピクセル補間フィルタリングに適応するために必要とされる追加のサンプルを考慮すると、基準サンプルをフェッチするためのメモリ帯域幅が過剰になる可能性がある。
【発明の概要】
【0010】
本発明の目的は、既存の構成の1つまたは複数の欠点を実質的に克服するか、または少なくとも改善することである。
【0011】
本開示の一態様は、ビットストリームから、画像フレームの符号化ツリーユニットの符号化ブロックを復号する方法であって、画像フレームのクロマフォーマットを判定することと、画像フレームのクロマチャネルを有するクロマフォーマットは画像フレームのルマチャネルに対してサブサンプリングされており、判定されたクロマフォーマットに基づいて、符号化ツリーユニットのクロマチャネルのうちの1つのクロマ符号化ブロックのサイズを決定することと、ここで、クロマ符号化ブロックは複数の対応するルマブロックと並置され、クロマブロックの決定されたサイズが所定の最小クロマブロックサイズである場合に、イントラ予測を使用して、クロマ符号化ブロックが符号化されることを決定することと、複数の対応するルマ符号化ブロックのうちの少なくとも1つに対するインター予測と、クロマ符号化ブロックに対するイントラ予測と、を使用して、符号化ツリーの符号化ブロックを復号することと、を備えることを特徴とする方法を提供する。
【0012】
別の態様によれば、クロマフォーマットは4:2:0である。
【0013】
別の態様によれば、クロマフォーマットは4:2:2である。
【0014】
別の態様によれば、複数のルマブロックが128個のルマサンプルのルマ領域の三項分割の結果である場合、所定の最小クロマブロックサイズは32である。
【0015】
別の態様によれば、複数のルマブロックが64個のルマサンプルのルマ領域の四分木分割、二分割、または三項分割の結果である場合、所定の最小クロマブロックサイズは16である。
【0016】
別の態様によれば、クロマブロックは、DCイントラ予測を使用して復号される。
【0017】
別の態様によれば、(i)符号化ツリーユニットのルマ符号化ユニットは、ビットストリームから復号された分割モードを使用して、複数のルマ符号化ブロックに分割され、(ii)所定の最小サイズのクロマ符号化ブロックがクロマチャネルのそれぞれについて生成される。
【0018】
別の態様によれば、複数のルマ符号化ブロックの各々は、生成されたクロマ符号化ブロックと少なくとも部分的にオーバーラップする。
【0019】
別の態様によれば、方法は、禁止されたクロマ分割のリストに基づいて、クロマブロックのサイズが所定の最小サイズであることを決定することをさらに含む。
【0020】
別の態様によれば、ビットストリームは、intra_chroma_pred_modeシンタックス要素を含むことによって、いくつかの可能なイントラ予測モードのうち1つのイントラ予測モードをシグナリングする。
【0021】
本開示の別の態様は、ビットストリームから、画像フレームのための符号化ツリーユニットの符号化ブロックを復号する方法を実装するためのコンピュータプログラムが格納された非一時的コンピュータ可読媒体であって、プログラムが、画像フレームのクロマフォーマットを判定するコードと、画像フレームのクロマチャネルを有するクロマフォーマットは画像フレームのルマチャネルに対してサブサンプリングされており、判定されたクロマフォーマットに基づいて、符号化ツリーユニットのクロマチャネルのうちの1つのクロマ符号化ブロックのサイズを決定するコードと、ここで、クロマ符号化ブロックは複数の対応するルマブロックと並置され、クロマブロックの決定されたサイズが所定の最小クロマブロックサイズである場合に、イントラ予測を使用して、クロマ符号化ブロックが符号化されることを決定するコードと、複数の対応するルマ符号化ブロックのうちの少なくとも1つに対するインター予測と、クロマ符号化ブロックに対するイントラ予測と、を使用して、符号化ツリーの符号化ブロックを復号するコードと、を備えることを特徴とする、非一時的コンピュータ可読媒体を提供する。
【0022】
本開示の別の態様は、ビットストリームから画像フレームのための符号化ツリーユニットを受信し、画像フレームのクロマフォーマットを判定し、画像フレームのクロマチャネルを有するクロマフォーマットは画像フレームのルマチャネルに対してサブサンプリングされ、判定されたクロマフォーマットに基づいて、符号化ツリーユニットのクロマチャネルのうちの1つのクロマ符号化ブロックのサイズを決定し、ここで、クロマ符号化ブロックは複数の対応するルマブロックと並置され、クロマブロックの決定されたサイズが所定の最小クロマブロックサイズである場合、イントラ予測を使用してクロマ符号化ブロックが符号化されることを決定し、複数の対応するルマ符号化ブロックのうちの少なくとも1つに対するインター予測と、クロマ符号化ブロックに対するイントラ予測と、を使用して、符号化ツリーの符号化ブロックを復号する、ように構成されることを特徴とするビデオデコーダを提供する。
【0023】
本開示の別の態様は、メモリと、プロセッサと、ここで、プロセッサは、ビットストリームから、画像フレームのための符号化ツリーユニットの符号化ブロックを復号する方法を実施するための、メモリに格納されたコードを実行するように構成されており、を有し、方法は、画像フレームのクロマフォーマットを判定することと、画像フレームのクロマチャネルを有するクロマフォーマットは画像フレームのルマチャネルに対してサブサンプリングされ、判定されたクロマフォーマットに基づいて、符号化ツリーユニットのクロマチャネルのうちの1つのクロマ符号化ブロックのサイズを決定することと、ここで、クロマ符号化ブロックは複数の対応するルマブロックと並置され、クロマブロックの決定されたサイズが所定の最小クロマブロックサイズである場合に、イントラ予測を使用して、クロマ符号化ブロックが符号化されることを決定することと、複数の対応するルマ符号化ブロックのうちの少なくとも1つに対するインター予測と、クロマ符号化ブロックに対するイントラ予測と、を使用して、符号化ツリーの符号化ブロックを復号することとを備えることを特徴とするシステムを提供する。
【0024】
本開示の別の態様は、一次変換および二次変換を使用してビデオビットストリームからブロックを復号する方法であって、ブロックのイントラ予測モードとは独立に第1のコンテキストを選択することと、選択された第1のコンテキストを使用して第1のビンを復号することと、第2のコンテキストを選択することと、選択された第1のビンが第2のビンの存在を示す場合に、選択された第2のコンテキストを使用して第2のビンを復号することと、一次変換が後続する二次変換を使用してブロックを復号することと、を有し、二次変換は、復号された第1のビンおよび復号された第2のビンから導出された二次変換インデックスに基づいている、方法を提供する。
【0025】
本開示の別の態様は、一次変換および二次変換を使用してビデオビットストリームからブロックを復号する方法を実装するための、格納されたコンピュータプログラムを有する非一時的コンピュータ可読媒体を提供し、このプログラムは、ブロックのイントラ予測モードとは無関係に第1のコンテキストを選択するコードと、選択された第1のコンテキストを使用して第1のビンを復号するコードと、第2のコンテキストを選択するコードと、選択された第1のビンが第2のビンの存在を示す場合に、選択された第2のコンテキストを使用して第2のビンを復号するコードと、一次変換が後続する二次変換を使用してブロックを復号するコードとを含み、二次変換は、復号された第1のビンおよび復号された第2のビンから導出された二次変換インデックスに基づく、非一時的コンピュータ可読媒体を提供する。
【0026】
本開示の別の態様は、ビデオビットストリームからブロックを受信し、ブロックのイントラ予測モードとは独立に第1のコンテキストを選択し、選択された第1のコンテキストを使用して第1のビンを復号し、第2のコンテキストを選択し、選択された第1のビンが第2のビンの存在を示す場合に、選択された第2のコンテキストを使用して第2のビンを復号し、一次変換が後続する二次変換を使用してブロックを復号するように構成され、二次変換は、復号された第1のビンおよび復号された第2のビンから導出された二次変換インデックスに基づいている、ビデオデコーダを提供する。
【0027】
他の態様も開示される。
【図面の簡単な説明】
【0028】
本発明の少なくとも1つの実施形態を、以下の図面および付録を参照して説明する。
図1図1は、ビデオ符号化及び復号システムを示す概略ブロック図である。
図2A図2Aは、図1のビデオ符号化および復号システムの一方または両方を実施することができる汎用コンピュータシステムの概略ブロック図を形成する。
図2B図2Bは、図1のビデオ符号化および復号システムの一方または両方を実施することができる汎用コンピュータシステムの概略ブロック図を形成する。
図3図3は、ビデオエンコーダの機能モジュールを示す概略ブロック図である。
図4図4は、ビデオデコーダの機能モジュールを示す概略ブロック図である。
図5図5は、汎用ビデオ符号化のツリー構造における1つ以上のブロックへのブロックの利用可能な分割を示す概略ブロック図である。
図6図6は、汎用ビデオ符号化のツリー構造における1つ以上のブロックへのブロックの許可された分割を達成するためのデータフローの概略図である。
図7A図7Aは、符号化ツリーユニット(CTU)をいくつかの符号化ユニット(CU)に分割する例を示す。
図7B図7Bは、符号化ツリーユニット(CTU)をいくつかの符号化ユニット(CU)に分割する例を示す。
図8A図8Aは、符号化ツリーユニット(CTU)を、ルマチャネルおよびクロマチャネルにおけるいくつかの符号化ブロック(CB)に分割する例を示す。
図8B図8Bは、符号化ツリーユニット(CTU)を、ルマチャネルおよびクロマチャネルにおけるいくつかの符号化ブロック(CB)に分割する例を示す。
図8C図8Cは、符号化ツリーユニット(CTU)を、ルマチャネルおよびクロマチャネルにおけるいくつかの符号化ブロック(CB)に分割する例を示す。
図9図9は、変換ブロックサイズおよび関連するスキャンパターンの集合を示す。
図10図10は、ルマ符号化ツリーおよびクロマ符号化ツリーにおいて許可された分割のリストを生成するための規則のセットを示す。
図11図11は、画像フレームの符号化ツリーをビデオビットストリームに符号化するための方法を示す。
図12図12は、ビデオビットストリームから画像フレームの符号化ツリーを復号する方法を示す。
図13図13は、画像フレームの符号化ツリーをビデオビットストリームに符号化する方法を示す。
図14図14は、ビデオビットストリームから画像フレームの符号化ツリーを復号する方法を示す。
図15A図15Aは、分離不可能な二次変換が適用される例示的な変換ブロックを示す。
図15B図15Bは、分離不可能な二次変換が適用される例示的な変換ブロックを示す。
図15C図15Cは、分離不可能な二次変換が適用される例示的な変換ブロックを示す。
図15D図15Dは、分離不可能な二次変換が適用される例示的な変換ブロックを示す。
図15E図15Eは、分離不可能な二次変換が適用される例示的な変換ブロックを示す。
図16図16は、ビデオビットストリームから復号された残差係数のブロックに対して分離不可能な二次変換を実行する方法を示す。
【発明を実施するための形態】
【0029】
添付の図面のいずれか1以上において、同一の参照符号を有するステップ及び/又は特徴を参照する場合、それらのステップ及び/又は特徴は本明細書の目的のために、反対の意図が現れない限り、同一の機能又は動作を有する。
【0030】
上述のように、直前のブロックからのサンプルの使用は、ビデオエンコーダまたはデコーダにおけるブロックのスループットを制限し得るフィードバック依存性をもたらす。典型的なリアルタイム符号化および復号アプリケーションに必要とされるように、高レートの処理ブロックを維持できることを保証するために、結果として生じるフィードバック依存性ループの重大性を軽減する方法が望ましい。フィードバック依存ループは例えば、毎秒500-4000サンプルからの現代のビデオフォーマットの高いサンプルレートに対して特に問題であるが、ASIC(特定用途向け集積回路)クロック周波数は典型的には数百MHzである。
【0031】
図1は、ビデオ符号化及び復号システム100の機能モジュールを示す概略ブロック図である。システム100は、遭遇する最悪の場合のブロック処理レートを低減するために、ルマ符号化ツリーおよびクロマ符号化ツリーにおける領域の許容される再分割のための異なる規則を利用することができる。例えば、システム100は、ブロックのアスペクト比にかかわらず、ブロックが常に16(16)サンプルの倍数としてサイズ設定されるように動作することができる。さらに、符号化ツリーが小さなルマ符号化ブロックの存在を示す分割を含む場合、分割は、クロマチャネルにおいて禁止されてもよく、その結果、単一のクロマCBが複数のルマCBと並置される。クロマCBは、(1つまたは複数のルマCBがインター予測を使用する場合を含む)各コロケートされたルマCBの予測モードとは独立して、1つのイントラ予測モードなどの単一の予測モードを使用することができる。残留係数符号化は、2つのサンプルの幅または高さを有するブロックの場合を含めて、16ブロックサイズの倍数を利用することもできる。
【0032】
システム100は、ソース装置110と宛先装置130とを含む。通信チャネル120は、符号化されたビデオ情報をソース装置110から宛先装置130に通信するために使用される。いくつかの構成では、ソース装置110および宛先装置130がそれぞれの携帯電話ハンドセットまたは「スマートフォン」のいずれかまたは両方を備えることができ、その場合、通信チャネル120はワイヤレスチャネルである。他の構成では、ソース装置110および宛先装置130がビデオ会議機器を備えることができ、その場合、通信チャネル120は通常、インターネット接続などの有線チャネルである。さらに、ソース装置110および宛先装置130は、無線テレビ放送、ケーブルテレビアプリケーション、インターネットビデオアプリケーション(ストリーミングを含む)、およびファイルサーバ内のハードディスクドライブなどの何らかのコンピュータ可読記憶媒体上に符号化ビデオデータが取り込まれるアプリケーションをサポートする装置を含む、広範囲の装置のうちの任意のものを備えることができる。
【0033】
図1に示すように、ソース装置110は、ビデオソース112と、ビデオエンコーダ114と、送信機116と、を含む。ビデオソース112は、典型的には撮像センサ等の、撮像されたビデオフレームデータ(113として示されている)のソース、非一時的記録媒体上に格納された前に撮像されたビデオシーケンス、又はリモート撮像センサからのビデオ、を有する。ビデオソース112はまた、コンピュータグラフィックスカードの出力であってもよく、例えば、タブレットコンピュータなどのコンピューティングデバイスで実行されているオペレーティングシステムとさまざまなアプリケーションのビデオ出力を表示する。ビデオソース112として撮像センサを含み得るソース装置110の例は、スマートフォン、ビデオカメラ、業務用ビデオカメラ、およびネットワークビデオカメラを含む。
【0034】
ビデオエンコーダ114は、図3を参照してさらに説明されるように、ビデオソース112からの撮像されたフレームデータ(矢印113によって示される)をビットストリーム(矢印115によって示される)に変換(または「符号化」)する。ビットストリーム115は、符号化されたビデオデータ(または「符号化されたビデオ情報」)として通信チャネル120を介して送信機116によって送信される。ビットストリーム115は後に通信チャネル120を介して送信されるまで、または通信チャネル120を介した送信の代わりに、「フラッシュ」メモリまたはハードディスクドライブなどの非一時的記憶装置122に記憶されることも可能である。
【0035】
宛先装置130は、受信機132と、ビデオデコーダ134と、表示装置136と、を含む。受信機132は、通信チャネル120から符号化されたビデオデータを受信し、受信されたビデオデータをビットストリームとしてビデオデコーダ134に渡す(矢印133によって示される)。そして、ビデオデコーダ134は、(矢印135で示す)復号フレームデータを表示装置136に出力する。復号フレームデータ135は、フレームデータ113と同じクロマフォーマットを有する。表示装置136の例には、陰極線管、スマートフォン、タブレットコンピュータ、コンピュータモニタ、またはスタンドアロンテレビセットなどの液晶ディスプレイが含まれる。また、ソース装置110および宛先装置130の各々の機能性が単一の装置で実現されることも可能であり、その例は、携帯電話ハンドセットおよびタブレットコンピュータを含む。
【0036】
上記の例示的なデバイスにもかかわらず、ソース装置110および宛先装置130のそれぞれは、一般にハードウェアおよびソフトウェア構成要素の組合せを介して、汎用コンピューティングシステム内で構成され得る。図2Aは、コンピュータモジュール201と、キーボード202、マウスポインタデバイス203、スキャナ226、ビデオソース112として構成することができるカメラ227、およびマイクロフォン280などの入力デバイスと、プリンタ215、表示装置136として構成することができるディスプレイデバイス214、およびスピーカ217を含む出力デバイスと、を含む、そのようなコンピュータシステム200を示す。外部変復調器(モデム)トランシーバ装置216は、接続221を介して通信ネットワーク220との間で通信するためにコンピュータモジュール201によって使用され得る。通信チャネル120を表すことができる通信ネットワーク220は、インターネット、セルラ電気通信ネットワーク、またはプライベートWANなどの広域ネットワーク(WAN)であってもよい。接続221が電話回線である場合、モデム216は従来の「ダイヤルアップ」モデムであってもよい。あるいは接続221が大容量(例えば、ケーブルまたは光)接続である場合、モデム216はブロードバンドモデムであってもよい。無線モデムはまた、通信ネットワーク220への無線接続のために使用されてもよい。トランシーバ装置216は、送信機116及び受信機132の機能性を提供することができ、通信チャネル120は、接続221内に具現化することができる。
【0037】
コンピュータモジュール201は、典型的には少なくとも1つのプロセッサユニット205と、メモリユニット206とを含む。例えば、メモリユニット206は、半導体ランダムアクセスメモリ(RAM)及び半導体リードオンリーメモリ(ROM)を有することができる。コンピュータモジュール201はまた、ビデオディスプレイ214、スピーカ217、およびマイクロフォン280に結合するオーディオビデオインターフェース207、キーボード202、マウス203、スキャナ226、カメラ227、およびオプションとしてジョイスティックまたは他のヒューマンインターフェースデバイス(図示せず)に結合するI/Oインターフェース213、ならびに外部モデム216およびプリンタ215のためのインターフェース208を含む、いくつかの入出力(I/O)インターフェースを含む。オーディオビデオインターフェース207からコンピュータモニタ214への信号は一般に、コンピュータグラフィックスカードの出力である。いくつかの実装では、モデム216が、例えばインターフェース208内のコンピュータモジュール201内に組み込まれてもよい。コンピュータモジュール201はまた、ローカルネットワークインターフェース211を有し、これは、接続223を介して、ローカルエリアネットワーク(LAN)として知られるローカルエリア通信ネットワーク222への、コンピュータシステム200の結合を可能にする。図2Aに示すように、ローカル通信ネットワーク222は、通常、いわゆる「ファイアウォール」デバイスまたは同様の機能のデバイスを含む接続224を介してワイドネットワーク220に結合することもできる。ローカルネットワークインターフェース211は、イーサネットTM回路カード、ブルートゥースTMワイヤレス構成又はIEEE802.11ワイヤレス構成を含むことができるが、インターフェース211のために多くの他のタイプのインターフェースが実施されてもよい。ローカルネットワークインターフェース211は、また、送信機116の機能を提供することができ、受信機132および通信チャネル120はまた、ローカル通信ネットワーク222において具現化することができる。
【0038】
I/Oインターフェース208および213は、シリアルコネクティビティおよびパラレルコネクティビティのいずれかまたは両方を提供することができ、前者は、典型的にはユニバーサルシリアルバス(USB)規格に従って実施され、対応するUSBコネクタ(図示せず)を有する。記憶装置209が提供され、典型的にはハードディスクドライブ(HDD)210を含む。フロッピーディスクドライブおよび磁気テープドライブ(図示せず)などの他の記憶装置も使用することができる。光ディスクドライブ212は、典型的にはデータの不揮発性ソースとして機能するために設けられる。例えば、光ディスク(例えば、CD-ROM、DVD、Blu ray DiscTM)、USB-RAM、ポータブル、外部ハードドライブ、およびフロッピーディスクなどのポータブルメモリデバイスは、コンピュータシステム200に対するデータの適切なソースとして使用することができる。典型的にはHDD210、光ドライブ212、ネットワーク220及び222のいずれかはビデオソース112として、又はディスプレイ214を介して再生するために記憶されるべき復号されたビデオデータのための宛先として動作するように構成されてもよい。システム100のソース装置110および宛先装置130は、コンピュータシステム200において具現化されてもよい。
【0039】
コンピュータモジュール201の構成要素205~213は、典型的には相互接続バス204を介して、当業者に知られているコンピュータシステム200の従来の動作モードをもたらす方法で通信する。例えば、プロセッサ205は、接続218を用いてシステムバス204に結合される。同様に、メモリ206および光ディスクドライブ212は、接続219によってシステムバス204に結合される。上記の構成が実行可能なコンピュータの例には、IBM-PCおよび互換機、Sun SPARCステーション、Apple MacTMまたは同様のコンピュータシステムが含まれる。
【0040】
適切または必要な場合、ビデオエンコーダ114およびビデオデコーダ134、ならびに以下で説明する方法は、コンピュータシステム200を使用して実施することができる。具体的には、ビデオエンコーダ114、ビデオデコーダ134、および説明される方法は、コンピュータシステム200内で実行可能な1つまたは複数のソフトウェアアプリケーションプログラム233として実施することができる。具体的には、ビデオエンコーダ114、ビデオデコーダ134、および説明する方法のステップは、コンピュータシステム200内で実行されるソフトウェア233内の命令231(図2B参照)によって実行される。ソフトウェア命令231は、それぞれが1つ以上の特定のタスクを実行するための1つ以上のコードモジュールとして形成されてもよい。ソフトウェアはまた、2つの別個の部分に分割されてもよく、その場合、第1の部分と対応するコードモジュールは説明される方法を実行し、第2の部分と対応するコードモジュールは、第1の部分とユーザとの間のユーザインターフェースを管理する。
【0041】
ソフトウェアは例えば、以下に説明する記憶装置を含むコンピュータ可読媒体に記憶することができる。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム200にロードされ、その後、コンピュータシステム200によって実行される。このようなソフトウェア又はコンピュータ可読媒体に記録されたコンピュータプログラムを有するコンピュータ可読媒体は、コンピュータプログラム製品である。コンピュータシステム200におけるコンピュータプログラム製品の使用は、ビデオエンコーダ114、ビデオデコーダ134、および説明される方法を実施するための有利な装置をもたらすことが好ましい。
【0042】
ソフトウェア233は、典型的にはHDD210またはメモリ206に記憶される。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム200にロードされ、コンピュータシステム200によって実行される。したがって、例えば、ソフトウェア233は、光ディスクドライブ212によって読み取られる光学的に読み取り可能なディスク記憶媒体(例えば、CD-ROM)225に記憶することができる。
【0043】
場合によっては、アプリケーションプログラム233が1つ以上のCD-ROM225上で符号化されてユーザに供給され、対応するドライブ212を介して読み出されてもよく、あるいはネットワーク220または222からユーザによって読み出されてもよい。さらに、ソフトウェアは、他のコンピュータ可読媒体からコンピュータシステム200にロードすることもできる。コンピュータ可読記憶媒体は、実行および/または処理のために記録された命令および/またはデータをコンピュータシステム200に提供する任意の非一時的な有形の記憶媒体を指す。このような記憶媒体の例としては、フロッピーディスク、磁気テープ、CD-ROM、DVD、Blu-ray DiscTM、ハードディスクドライブ、ROMまたは集積回路、USBメモリ、光磁気ディスク、またはPCMCIAカードなどのコンピュータ可読カードを含み、そのような装置がコンピュータモジュール201の内部または外部であるか否かは問わない。コンピュータモジュール401へのソフトウェア、アプリケーションプログラム、命令および/またはビデオデータまたは符号化されたビデオデータの提供にも参加し得る一時的なまたは非有形のコンピュータ可読伝送媒体の例には、無線または赤外線伝送チャネル、ならびに別のコンピュータまたはネットワーク接続された装置へのネットワーク接続、ならびにウェブサイトなどに記録された電子メール伝送および情報を含むインターネットまたはイントラネットが含まれる。
【0044】
アプリケーションプログラム233の第2の部分および上記の対応するコードモジュールは、ディスプレイ214上でレンダリングされるかまたは他の方法で表される1つ以上のグラフィカルユーザインタフェース(GUI)を実装するために実行されてもよい。典型的にはキーボード202およびマウス203の操作を通して、アプリケーションおよびコンピュータシステム200のユーザは機能的に適応可能な方法でインターフェースを操作し、GUIに関連するアプリケーションに制御コマンドおよび/または入力を提供することができる。スピーカ217を介して出力されるスピーチプロンプトおよびマイクロフォン280を介して入力されるユーザ音声コマンドを利用するオーディオインターフェースなど、他の形態の機能的に適応可能なユーザインターフェースを実装することもできる。
【0045】
図2Bは、プロセッサ205および「メモリ」234の詳細な概略ブロック図である。メモリ234は、図2Aのコンピュータモジュール201がアクセス可能な全てのメモリモジュール(HDD209及び半導体メモリ206を含む)の論理集合体を表す。
【0046】
最初にコンピュータモジュール201の電源が入ると、パワーオン自己テスト(POST)プログラム250が実行される。POSTプログラム250は、典型的には図2Aの半導体メモリ206のROM249に記憶される。ソフトウェアを記憶するROM249などのハードウェアデバイスは、ファームウェアと呼ばれることもある。POSTプログラム250は、コンピュータモジュール201内のハードウェアを検査して、適切に機能することを確認し、通常、正しい動作のために、プロセッサ205、メモリ234(209、206)、および基本入出力システムソフトウェア(BIOS)モジュール251(通常はROM249にも格納される)をチェックする。POSTプログラム250が正常に実行されると、BIOS251は、図2Aのハードディスクドライブ210を起動する。ハードディスクドライブ210を起動すると、ハードディスクドライブ210上に常駐するブートストラップローダプログラム252がプロセッサ205を介して実行される。これにより、オペレーティングシステム253がRAMメモリ206にロードされ、その上でオペレーティングシステム253が動作を開始する。オペレーティングシステム253は、プロセッサ205によって実行可能なシステムレベルアプリケーションであり、プロセッサ管理、メモリ管理、デバイス管理、ストレージ管理、ソフトウェアアプリケーションインタフェース、および汎用ユーザインタフェースを含む様々な高レベルの機能を満たす。
【0047】
オペレーティングシステム253は、メモリ234(209、206)を管理して、コンピュータモジュール201上で実行される各プロセスまたはアプリケーションが別のプロセスに割り当てられたメモリと衝突することなく実行するのに十分なメモリを有することを保証する。さらに、図2Aのコンピュータシステム200で利用可能な異なるタイプのメモリは、各プロセスが効果的に実行できるように、適切に使用されなければならない。したがって、集約メモリ234は、メモリの特定のセグメントが(特に明記されていない限り)どのように割り当てられるかを示すことを意図するものではなく、むしろ、コンピュータシステム200によってアクセス可能なメモリの一般的なビューと、そのようなセグメントがどのように使用されるかを提供することを意図するものである。
【0048】
図2Bに示すように、プロセッサ205は、制御部239、演算論理ユニット(ALU)240、時にはキャッシュメモリと呼ばれるローカルまたは内部メモリ248、を含む多数の機能モジュールを含む。キャッシュメモリ248は、典型的にはレジスタセクション内に多数の記憶レジスタ244~246を含む。1つ以上の内部バス241は、これらの機能モジュールを機能的に相互接続する。プロセッサ205はまた、典型的には、接続218を使用して、システムバス204を介して外部装置と通信するための1つ以上のインターフェース242を有する。メモリ234は、接続219を使用してバス204に結合される。
【0049】
アプリケーションプログラム233は、条件分岐およびループ命令を含み得る命令のシーケンス231を含む。プログラム233はまた、プログラム233の実行に使用されるデータ232を含んでもよい。命令231およびデータ232は、それぞれメモリ位置228、229、230および235、236、237に格納される。命令231とメモリ位置228~230の相対的なサイズに応じて、メモリ位置230に示される命令によって示されるように、特定の命令を単一のメモリ位置に記憶することができる。あるいは、命令がメモリ位置228および229に示される命令セグメントによって示されるように、各々が別個のメモリ位置に記憶されるいくつかの部分にセグメント化されてもよい。
【0050】
一般に、プロセッサ205には、その中で実行される命令のセットが与えられる。プロセッサ205は後続の入力を待ち、この入力に対してプロセッサ205は、別の命令セットを実行することによって反応する。各入力は入力装置202、203のうちの1つまたは複数によって生成されたデータ、ネットワーク220、202のうちの1つを介して外部ソースから受信されたデータ、記憶装置206、209のうちの1つから取り出されたデータ、または対応するリーダ212に挿入された記憶媒体225から取り出されたデータを含む、いくつかのソースのうちの1つまたは複数から提供することができ、すべて図2Aに示されている。命令のセットを実行すると、データが出力される場合がある。実行には、データまたは変数をメモリ234に記憶することも含まれ得る。
【0051】
ビデオエンコーダ114、ビデオデコーダ134、および説明される方法は、メモリ234内の対応するメモリ位置255、256、257に格納されている入力変数254を使用することができる。ビデオエンコーダ114、ビデオデコーダ134、および説明される方法は、出力変数261を生成し、これらは、メモリ234内の対応するメモリ位置262、263、264に格納される。中間変数258は、メモリ位置259、260、266および267に格納され得る。
【0052】
図2Bのプロセッサ205を参照すると、レジスタ244、245、246、演算論理ユニット(ALU)240、および制御部239は、プログラム233を構成する命令セット内のすべての命令に対して「フェッチ、デコード、および実行」サイクルを実行するのに必要なマイクロオペレーションのシーケンスを実行するために協働する。各フェッチ、デコード、および実行サイクルは
メモリ位置228、229、230から命令231をフェッチまたは読出すフェッチ動作
制御部239が、どの命令がフェッチされたかを判定するデコード動作
制御部239及び/又はALU240が命令を実行する動作を実行する
を有する。
【0053】
その後、次の命令のフェッチ、デコード、および実行サイクルをさらに実行することができる。同様に、制御部239がメモリ位置232に値を格納または書き込む格納サイクルを実行することができる。
【0054】
後述する図10および図11の方法における各ステップまたはサブプロセスは、プログラム233の1つまたは複数のセグメントに関連付けられ、典型的にはプロセッサ205内のレジスタセクション244、245、247、ALU240、および制御部239が協働して、プログラム233の注記されたセグメントに対する命令セット内のすべての命令に対してフェッチ、デコード、および実行サイクルを実行することによって実行される。
【0055】
図3は、ビデオエンコーダ114の機能モジュールを示す概略ブロック図である。図4は、ビデオデコーダ134の機能モジュールを示す概略ブロック図である。一般に、データは、固定サイズのサブブロックへのブロックの分割などのサンプルまたは係数のグループで、または配列として、ビデオデコーダ134とビデオエンコーダ114の機能モジュールの間を通過する。ビデオエンコーダ114およびビデオデコーダ134は、図2Aおよび図2Bに示すように、汎用コンピュータシステム200を使用して実施することができ、様々な機能モジュールは、ハードディスクドライブ205上に常駐し、プロセッサ205によってその実行中に制御されるソフトウェアアプリケーションプログラム233の1つ以上のソフトウェアコードモジュールなど、コンピュータシステム200内で実行可能なソフトウェアによって、コンピュータシステム200内の専用ハードウェアによって実現することができる。あるいは、ビデオエンコーダ114およびビデオデコーダ134は、コンピュータシステム200内で実行可能なソフトウェアおよび専用ハードウェアの組合せによって実装されてもよい。ビデオエンコーダ114、ビデオデコーダ134、および説明される方法は、代替として、説明される方法の機能またはサブ機能を実行する1つまたは複数の集積回路などの専用ハードウェアで実装され得る。そのような専用ハードウェアは、グラフィック処理ユニット(GPU)、デジタルシグナルプロセッサ(DSP)、特定用途向け標準製品(ASSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または1つまたは複数のマイクロプロセッサおよび関連するメモリを含むことができる。特に、ビデオエンコーダ114は、モジュール310~386を含み、ビデオデコーダ134は、ソフトウェアアプリケーションプログラム233の1つ以上のソフトウェアコードモジュールとしてそれぞれ実装され得るモジュール420~496を含む。
【0056】
図3のビデオエンコーダ114は、汎用ビデオ符号化(VVC)ビデオ符号化パイプラインの一例であるが、本明細書で説明する処理ステージを実行するために他のビデオコーデックを使用することもできる。ビデオエンコーダ114は、一連のフレームのような撮像されたフレームデータ113を受信し、各フレームは1つ以上のカラーチャネルを含む。フレームデータ113は、4:2:0クロマフォーマットまたは4:2:2クロマフォーマットであってもよい。ブロックパーティショナ310は最初に、フレームデータ113をCTUに分割し、CTUのための特定のサイズが使用されるように構成される、一般に正方形の形状である。CTUのサイズは例えば、64×64、128×128、または256×256ルマサンプルとすることができる。ブロックパーティショナ310は、ルマ符号化ツリー及びクロマ符号化ツリーに従って、各CTUを1つ以上のCBにさらに分割する。CBは様々なサイズを有し、正方形および非正方形のアスペクト比の両方を含んでもよい。図10を参照して、ブロックパーティショナ310の動作をさらに説明する。しかし、VVC規格ではCB、CU、PU、およびTUは常に2の累乗である辺長を有する。したがって、312として表される現在のCBは、ブロックパーティショナ310から出力され、CTUのクロマ符号化ツリーおよびルマ符号化ツリーに従って、CTUの1つまたは複数のブロックにわたる反復に従って進行する。CTUをCBに分割するためのオプションは、図5および図6を参照して以下でさらに説明される。
【0057】
フレームデータ113の第1の分割から得られるCTUは、ラスタスキャン順序でスキャンされ、1つまたは複数の「スライス」にグループ化され得る。スライスは「イントラ」(または「I」)スライスであってもよく、イントラスライス(Iスライス)はスライス内のすべてのCUがイントラ予測されることを示す。代替的に、スライスは、単一または双予測(それぞれ、「P」または「B」スライス)であってもよく、それぞれ、スライスにおける単一および双予測のさらなる利用可能性を示す。
【0058】
各CTUに対して、ビデオエンコーダ114は2段階で動作する。第1段階(「サーチ」ステージと呼ばれる)では、ブロックパーティショナ310が符号化ツリーの様々な潜在的構成をテストする。符号化ツリーの各潜在的構成は、関連する「候補」CBを有する。第1段階は、低歪で高い圧縮効率を提供するCBを選択するために様々な候補CBをテストすることを含む。このテストは一般にラグランジュ最適化を含み、それによって候補CBがレート(符号化コスト)と歪(入力フレームデータ113に関する誤差)の重み付けされた組合せに基づいて評価される。「最良の」候補CB(評価されたレート/歪みが最も低いCB)は、ビットストリーム115への後続の符号化のために選択される。候補CBの評価には、所与のエリアに対してCBを使用するか、または様々な分割オプションに従ってエリアをさらに分割し、結果として生じるより小さいエリアのそれぞれをさらなるCBで符号化するか、またはエリアをさらにさらに分割するオプションが含まれる。その結果、CBと符号化ツリー自体の両方がサーチステージで選択される。
【0059】
ビデオエンコーダ114は、各CB、例えばCB312に対して、矢印320によって示される予測ブロック(PB)を生成する。PB320は、関連するCB312のコンテンツの予測である。減算器モジュール322は、PB320とCB312との間に、324(または「残差」、空間領域内にある差分を参照する)として示される差分を生成する。差分324は、PB320およびCB312における対応するサンプル間のブロックサイズの差分である。差分324は、変換され、量子化され、矢印336によって示される変換ブロック(TB)として表される。PB320および関連するTB336は典型的には例えば、評価されたコストまたは歪みに基づいて、多くの可能な候補CBのうちの1つから選択される。
【0060】
候補符号化ブロック(CB)は、関連するPBおよび結果として生じる残差についてビデオエンコーダ114に利用可能な予測モードの1つから生じるCBである。各候補CBは図8を参照して後述するように、1つまたは複数の対応するTBをもたらす。TB336は、差分324の定量化され変換された表現である。ビデオデコーダ114において予測されたPBと組み合わされると、TB336は、ビットストリームにおける追加の信号を犠牲にして、復号されたCBとオリジナルのCB312との間の差分を低減する。
【0061】
したがって、各候補符号化ブロック(CB)、すなわち、変換ブロック(TB)と組み合わせた予測ブロック(PB)は、関連する符号化コスト(または「レート」)および関連する差分(または「歪み」)を有する。レートは、典型的にはビット単位で測定される。CBの歪みは、典型的には絶対差の和(SAD)または二乗差の和(SSD)などのサンプル値の差分として推定される。各候補PBから得られる推定は、差分324を使用してモード選択器386によって決定され、イントラ予測モード(矢印388によって表される)を決定する。各候補予測モードと対応する残差符号化に関連する符号化コストの推定は、残差のエントロピー符号化よりもかなり低いコストで実行できる。従って、レート歪み検知における最適モードを決定するために、多数の候補モードを評価することができる。
【0062】
レート歪みの観点から最適モードの決定は、典型的にはラグランジュ最適化の変形を用いて達成される。イントラ予測モード388の選択は、典型的には特定のイントラ予測モードの適用から生じる残差データのための符号化コストを決定することを含む。符号化コストは「絶対変換差の和」(SATD)を使用することによって近似することができ、それによって、アダマール変換などの比較的単純な変換を使用して、推定された変換残差コストを得る。比較的単純な変換を使用するいくつかの実施形態では、単純化された推定方法から得られるコストがさもなければ完全な評価から決定されるのであろう実際のコストに単調に関係する。単調に関連する推定コストを有する実施形態では、単純化された推定方法を使用して、ビデオエンコーダ114の複雑さを低減しながら、同じ決定(すなわち、イントラ予測モード)を行うことができる。推定されたコストと実際のコストとの間の関係における可能な非単調性を可能にするために、簡略化された推定方法を使用して、最良の候補のリストを生成することができる。非単調性は例えば、残差データの符号化に利用可能なさらなるモード決定から生じ得る。最良の候補のリストは、任意の数であってもよい。最良の候補を使用して、より完全な探索を実行して、候補のそれぞれについて残差データを符号化するための最適モード選択を確立することができ、他のモード決定と共にイントラ予測モードの最終選択を可能にする。
【0063】
他のモード決定は、「変換スキップ」として知られる順方向変換をスキップする能力を含む。変換をスキップすることは、変換基底関数としての表現を介して符号化コストを低減するための適切な相関を欠く残差データに適している。比較的単純なコンピュータ生成グラフィックスのような特定のタイプのコンテンツは、同様の挙動を示すことがある。「スキップされた変換」の場合、変換自体が実行されなくても、残差係数は依然として符号化される。
【0064】
ラグランジュ処理または類似の最適化処理を採用して、CTUのCBへの最適分割(ブロックパーティショナ310による)と、複数の可能性からの最良の予測モードの選択の両方を選択することができる。モード選択モジュール386における候補モードのラグランジュ最適化プロセスの適用を通して、最低コスト測定を有するイントラ予測モードが「最良」のモードとして選択される。最低コストのモードは、選択されたイントラ予測モード388であり、エントロピーエンコーダ338によってビットストリーム115に符号化される。モード選択モジュール386の動作によるイントラ予測モード388の選択は、ブロックパーティショナ310の動作に拡張する。例えば、イントラ予測モード388の選択のための候補は、所与のブロックに適用可能なモードと、さらに、所与のブロックと一緒に集合的に配置される複数のより小さいブロックに適用可能なモードとを含むことができる。所与のブロックおよびより小さいコロケートされたブロックに適用可能なモードを含む場合、候補を暗黙的に選択するプロセスは、CTUのCBへの最良の階層分解を決定するプロセスでもある。
【0065】
ビデオエンコーダ114の動作の第2段階(「符号化」ステージと呼ばれる)では、選択されたルマ符号化ツリーおよび選択されたクロマ符号化ツリー、したがって選択された各CBに対する反復がビデオエンコーダ114内で実行される。反復では、CBが本明細書でさらに説明するように、ビットストリーム115に符号化される。
【0066】
エントロピーエンコーダ338は、構文要素の可変長符号化と構文要素の算術符号化の両方をサポートする。算術符号化は、コンテキスト適応2進算術符号化処理を使用してサポートされる。算術的に符号化された構文要素は1つ以上の’bins’のシーケンスからなる。ビンはビットと同様に、「0」または「1」の値を持つ。しかし、ビンはビットストリーム115内で離散ビットとして符号化されていない。ビンは、「コンテキスト」として知られる、関連する予測(または「可能性」または「最も可能性のある」)値および関連する確率を有する。符号化される実際のビンが予測値と一致するとき、「最確シンボル」(MPS)が符号化される。最も確率の高いシンボルを符号化することは、消費されるビットに関して比較的安価である。符号化されるべき実際のビンがありそうな値と一致しない場合、「最低確率シンボル」(LPS)が符号化される。最低確率シンボルを符号化することは、消費されるビットに関して比較的高いコストを有する。ビン符号化技術は、「0」対「1」の確率がスキューされるビンの効率的な符号化を可能にする。2つの可能な値(すなわちflag)を持つ構文要素に対しては、単一のビンで十分である。可能な値が多い構文要素の場合は、一連のビンが必要である。
【0067】
シーケンス中の後のビンの存在は、シーケンス中の前のビンの値に基づいて決定されてもよい。さらに、各ビンは、2つ以上のコンテキストに関連付けることができる。特定のコンテキストの選択は構文要素の以前のビン、隣接する構文要素のビン値(すなわち、隣接するブロックからのもの)などに依存することができる。コンテキスト符号化ビンが符号化されるたびに、そのビンに対して選択されたコンテキスト(もしあれば)は、新しいビン値を反映する方法で更新される。このように、2進算術符号化方式は適応型であると言われている。
【0068】
また、ビデオエンコーダ114によってサポートされるのは、コンテキストを欠くビン(「バイパスビン」)である。バイパスビンは、「0」と「1」との間の等確率分布を仮定して符号化される。したがって、各ビンは、ビットストリーム115内の1ビットを占有する。コンテキストがないと、メモリが節約され、複雑さが軽減される。したがって、特定のビンの値の分布が偏っていない場合は、バイパスビンが使用される。コンテキストおよび適応を使用するエントロピーコーダの一例はCABAC(コンテキスト適応バイナリ算術コーダ)として当技術分野で知られており、このコーダの多くの変形がビデオ符号化に使用されている。
【0069】
エントロピーエンコーダ338は、コンテキスト符号化ビンとバイパス符号化ビンとの組合せを使用してイントラ予測モード388を符号化する。典型的には、「最確モード」のリストがビデオエンコーダ114において生成される。最も確率の高いモードのリストは典型的には3つまたは6つのモードのような固定長であり、以前のブロックで遭遇したモードを含むことができる。コンテキスト符号化ビンは、イントラ予測モードが最も確率の高いモードの1つかどうかを示すフラグを符号化する。イントラ予測モード388が最も確率の高いモードのうちの1つである場合、バイパス符号化されたビンを使用するさらなるシグナリングが符号化される。符号化されたさらなるシグナリングは例えば、切り捨てられた単項ビンストリングを使用して、どの最も確率の高いモードがイントラ予測モード388に対応するかを示す。そうでない場合、イントラ予測モード388は、「残りのモード」として符号化される。残りのモードとしての符号化は、バイパス符号化されたビンを使用しても符号化される固定長符号などの代替構文を使用して、最も確率の高いモードリストに存在するもの以外のイントラ予測モードを表現する。
【0070】
マルチプレクサモジュール384は、決定された最良のイントラ予測モード388に従ってPB320を出力し、各候補CBのテストされた予測モードから選択する。候補予測モードは、ビデオエンコーダ114によってサポートされるすべての考えられる予測モードを含む必要はない。
【0071】
予測モードは大きく二つのカテゴリーに分類される。第1のカテゴリは、「イントラフレーム予測」(「イントラ予測」とも呼ばれる)である。イントラフレーム予測では、ブロックに対する予測が生成され、生成方法は現在のフレームから得られた他のサンプルを使用してもよい。イントラ予測されたPBの場合、異なるイントラ予測モードがルマおよびクロマのために使用されることが可能であり、したがって、イントラ予測は主に、PB上での動作に関して説明される。
【0072】
予測モードの第2のカテゴリは、「インターフレーム予測」(「インター予測」とも呼ばれる)である。インターフレーム予測では、ブロックの予測がビットストリーム内のフレームを符号化する順序で現在のフレームに先行する1つまたは2つのフレームからのサンプルを使用して生成される。さらに、インターフレーム予測のために、単一の符号化ツリーが典型的には、ルマチャネルおよびクロマチャネルの両方について使用される。ビットストリーム内のフレームの符号化順は、キャプチャまたは表示時のフレームの順序とは異なる場合がある。1つのフレームが予測に使用される場合、ブロックは「単一予測」であると言われ、1つの関連する動きベクトルを有する。2つのフレームが予測に使用される場合、ブロックは「双予測」されると言われ、2つの関連する動きベクトルを有する。Pスライスの場合、各CUは、イントラ予測または単一予測され得る。Bスライスの場合、各CUは、イントラ予測、単一予測、または双予測され得る。フレームは、典型的にはフレームの時間的階層を可能にする「ピクチャのグループ」構造を使用して符号化される。フレームの時間的階層は、フレームがフレームを表示する順序で、先行するピクチャおよび後続するピクチャを参照することを可能にする。画像は、各フレームを復号するための依存関係が満たされていることを確認するために必要な順序で符号化される。
【0073】
インター予測のサブカテゴリは、「スキップモード」と呼ばれる。インター予測およびスキップモードは、2つの別個のモードとして説明される。しかしながら、インター予測モード及びスキップモードの両方は、先行するフレームからのサンプルのブロックを参照する動きベクトルを含む。インター予測は符号化された動きベクトルデルタを含み、動きベクトル予測子に対する動きベクトルを指定する。動きベクトル予測子は、「マージインデックス」で選択された1つ以上の候補動きベクトルのリストから得られる。符号化された動きベクトルデルタは、選択された動きベクトル予測に空間オフセットを提供する。また、インター予測は、ビットストリーム133内の符号化された残差を使用する。スキップモードは、インデックス(「マージインデックス」とも呼ばれる)のみを使用して、いくつかの動きベクトル候補のうちの1つを選択する。選択された候補は、さらなるシグナリングなしに使用される。また、スキップモードは、残差係数の符号化をサポートしない。スキップモードが使用されるとき、符号化された残差係数がないことは、スキップモードのための変換を実行する必要がないことを意味する。したがって、スキップモードは、典型的にはパイプライン処理問題を生じない。パイプライン処理問題は、イントラ予測CUおよびインター予測CUの場合であり得る。スキップモードの限定されたシグナリングのために、スキップモードは比較的高品質の参照フレームが利用可能であるときに、非常に高い圧縮性能を達成するために有用である。ランダムアクセスピクチャグループ構造のより高い時間レイヤにおける双予測CUは、典型的には基礎となる動きを正確に反映する高品質の参照ピクチャおよび動きベクトル候補を有する。
【0074】
サンプルは、動きベクトルおよび参照ピクチャインデックスに従って選択される。動きベクトルおよび参照ピクチャインデックスは、すべてのカラーチャネルに適用され、したがって、インター予測は主に、PBではなくPU上での動作に関して説明される。各カテゴリー内(すなわち、イントラおよびインターフレーム予測)では、PUを生成するために異なる技法を適用することができる。例えば、イントラ予測は、所定のフィルタリング及び生成処理に従ってPUを生成する方向と組み合わせて、以前に再構成されたサンプルの隣接する行及び列からの値を使用することができる。あるいは、PUが少数のパラメータを使用して記述されてもよい。インター予測法は、動きパラメータの数とその精度で変わる可能性がある。動きパラメータは通常、参照フレームのリストからのどの参照フレームが使用されるべきかを示す参照フレームインデックスと、参照フレームの各々のための空間変換とを含むが、より多くのフレーム、特別なフレーム、またはスケーリングおよび回転などの複雑なアフィンパラメータを含むことができる。さらに、参照サンプルブロックに基づいて高密度動き推定を生成するために、所定の動き精緻化処理を適用することができる。
【0075】
PB320を決定し、選択し、減算器322で元のサンプルブロックからPB320を減算すると、符号化コストが最も低い、324で表される残差が得られ、非可逆圧縮を受ける。非可逆圧縮プロセスは、変換、量子化、およびエントロピー符号化のステップを含む。順方向一次変換モジュール326は、差分324に順方向変換を適用し、差分324を空間領域から周波数領域に変換し、矢印328によって表される一次変換係数を生成する。一次変換係数328は、順方向二次変換モジュール330に渡され、非分離二次変換(NSST)動作を実行することによって、矢印332によって表される変換係数を生成する。順方向一次変換は典型的には分離可能であり、典型的にはDCT-2を使用して、行のセット、次いで各ブロックの列のセットを変換するが、DST-7およびDCT-8も、例えば、16サンプルを超えないブロック幅については水平方向に、16サンプルを超えないブロック高さについては垂直方向に利用可能であり得る。行および列の各セットの変換は、最初にブロックの各行に1次元変換を適用して部分結果を生成し、次に部分結果の各列に1次元変換を適用して最終結果を生成することによって実行される。順方向二次変換は一般に、分離不可能な変換であり、これは、イントラ予測されたCUの残差に対してのみ適用され、それにもかかわらず、バイパスされてもよい。順方向二次変換は、16個のサンプル(1次変換係数328の左上4×4サブブロックとして配置される)または64個のサンプル(1次変換係数328の4つの4×4サブブロックとして配置される、左上8×8係数として配置される)のいずれかで動作する。更に、順方向二次変換の行列係数は、使用のために2組の係数が利用できるように、CUのイントラ予測モードに従って複数のセットから選択される。行列係数のセットの1つ、または順方向二次変換のバイパスを使用することは、「nsst_index」のシンタックス要素でシグナリングされ、切り捨てられた単項二値化(a truncated unary binarisation)を使って、値ゼロ(二次変換は適用されない)、1つ(選択された行列係数の第1セット)、または2つ(選択された行列係数の第2セット)を表すように符号化されている。
【0076】
変換係数332は、量子化器モジュール334に渡される。モジュール334では、「量子化パラメータ」による量子化が実行され、矢印336によって表される残差係数が生成される。量子化パラメータは所与のTBについて一定であり、したがって、TBについての残差係数の生成のための均一なスケーリングをもたらす。「量子化行列」を適用することによって、不均一なスケーリングも可能であり、それによって、各残差係数に適用されるスケーリング係数は、量子化パラメータと、典型的にはTBのサイズに等しいサイズを有するスケーリング行列内の対応するエントリとの組合せから導出される。残差係数336は、ビットストリーム115における符号化のためにエントロピーエンコーダ338に供給される。典型的には、TUの少なくとも1つの有意な残差係数を有する各TBの残差係数がスキャンパターンに従って、値の順序付けられたリストを生成するためにスキャンされる。スキャンパターンは一般に、4×4「サブブロック」のシーケンスとしてTBをスキャンし、残差係数の4×4セットの粒度で規則的なスキャン動作を提供し、サブブロックの配置は、TBのサイズに依存する。さらに、予測モード388および対応するブロック分割もビットストリーム115に符号化される。
【0077】
上述したように、ビデオエンコーダ114は、ビデオデコーダ134に見られるフレーム表現に対応するフレーム表現にアクセスする必要がある。従って、残差係数336も逆量子化器モジュール340によって逆量子化され、矢印342によって表される逆変換係数を生成する。逆変換係数342は、逆二次変換モジュール344を通過して、矢印346で表される中間逆変換係数を生成する。中間逆変換係数346は、TUの矢印350によって表される残差サンプルを生成するために、逆一次変換モジュール348に渡される。逆二次変換モジュール344によって実行される逆変換のタイプは、順方向二次変換モジュール330によって実行される順変換のタイプに対応する。逆一次変換モジュール348によって実行される逆変換のタイプは、一次変換モジュール326によって実行される一次変換のタイプに対応する。加算モジュール352は、残差サンプル350とPU320とを加算して、CUの再構成サンプル(矢印354によって示される)を生成する。
【0078】
再構成されたサンプル354は、参照サンプルキャッシュ356およびループ内フィルタモジュール368に渡される。参照サンプルキャッシュ356は、通常ASIC上のスタティックRAMを使用して実現され(したがって、コストのかかるオフチップメモリアクセスを回避する)、フレーム内の後続のCUのためのフレーム内PBを生成するための依存関係を満たすために必要な最小限のサンプル記憶装置を提供する。最小依存関係は、典型的にはCTUの行の最下部に沿ったサンプルの「ラインバッファ」を含み、CTUの次の行および列バッファリングによって使用され、その範囲はCTUの高さによって設定される。参照サンプルキャッシュ356は、参照サンプルフィルタ360に参照サンプル(矢印358で示す)を供給する。サンプルフィルタ360は、平滑化演算を適用して、フィルタリングされた参照サンプル(矢印362によって示される)を生成する。フィルタリングされた参照サンプル362は、イントラフレーム予測モジュール364によって使用され、矢印366によって表されるサンプルのイントラ予測ブロックを生成する。各候補イントラ予測モードについて、イントラフレーム予測モジュール364は、サンプルのブロック、すなわち366を生成する。
【0079】
ループ内フィルタモジュール368は、再構成されたサンプル354にいくつかのフィルタリング段階を適用する。フィルタリング段階は、不連続性から生じるアーチファクトを低減するために、CU境界に整列された平滑化を適用する「デブロッキングフィルタ」(DBF)を含む。インループフィルタモジュール368に存在する別のフィルタリング段階は、「適応ループフィルタ」(ALF)であり、これは、歪みをさらに低減するためにウィナーベースの適応フィルタを適用する。ループ内フィルタモジュール368における更なる利用可能なフィルタリング段階は、「サンプル適応オフセット」(SAO)フィルタである。SAOフィルタは最初に、再構成されたサンプルを1つまたは複数のカテゴリに分類し、割り当てられたカテゴリに従って、サンプルレベルでオフセットを適用することによって動作する。
【0080】
矢印370で表されるフィルタリングされたサンプルは、ループ内フィルタモジュール368から出力される。フィルタリングされたサンプル370は、フレームバッファ372に記憶される。フレームバッファ372は、典型的には、いくつかの(例えば、16までの)ピクチャを格納するための容量を有し、従って、メモリ206に格納される。フレームバッファ372は、大きなメモリ消費が要求されるため、通常、オンチップメモリを使用して記憶されない。したがって、フレームバッファ372へのアクセスは、メモリ帯域幅に関してコストがかかる。フレームバッファ372は、参照フレーム(矢印374によって表される)を動き推定モジュール376および動き補償モジュール380に提供する。
【0081】
動き推定モジュール376は、いくつかの「動きベクトル」(378として示される)を推定し、各々は現在のCBの位置からのデカルト空間オフセットであり、フレームバッファ372内の参照フレームのうちの1つ内のブロックを参照する。参照サンプルのフィルタリングされたブロック(382として表される)は、各動きベクトルに対して生成される。フィルタリングされた参照サンプル382は、モードセレクタ386による潜在的な選択に利用可能なさらなる候補モードを形成する。さらに、所与のCUについて、PU320は、1つの参照ブロック(「単一予測」)を使用して形成されてもよく、または2つの参照ブロック(「双予測」)を使用して形成されてもよい。選択された動きベクトルに対して、動き補償モジュール380は、動きベクトル内のサブピクセル精度をサポートするフィルタリング処理に従って、PB320を生成する。したがって、動き推定モジュール376(多くの候補動きベクトルに対して動作する)は、計算の複雑さを低減するために、動き補償モジュール380(選択された候補のみに対して動作する)のそれと比較して、単純化されたフィルタリング処理を実行することができる。
【0082】
図3のビデオエンコーダ114は汎用ビデオ符号化(VVC)を参照して説明されるが、他のビデオ符号化規格または実装はモジュール310~386の処理段階を使用することもできる。フレームデータ113(およびビットストリーム115)は、メモリ206、ハードディスクドライブ210、CD-ROM、Blu-rayディスクTM、または他のコンピュータ可読記憶媒体から読み取る(または書き込む)こともできる。さらに、フレームデータ113(およびビットストリーム115)は、通信ネットワーク220または無線周波数受信機に接続されたサーバなどの外部ソースから受信(または送信)されてもよい。
【0083】
ビデオデコーダ134を図4に示す。図4のビデオデコーダ134は、汎用ビデオコーディング(VVC)ビデオデコーディングパイプラインの一例であるが、他のビデオコーデックを使用して、本明細書で説明する処理段階を実行することもできる。図4に示すように、ビットストリーム133はビデオデコーダ134に入力される。ビットストリーム133は、メモリ206、ハードディスクドライブ210、CD-ROM、Blu-rayディスクTM、または他の一時的でないコンピュータ可読記憶媒体から読み取ることができる。あるいは、ビットストリーム133が通信ネットワーク220または無線周波数受信機に接続されたサーバなどの外部ソースから受信されてもよい。ビットストリーム133は、復号される撮像フレームデータを表す符号化されたシンタックス要素を含む。
【0084】
ビットストリーム133は、エントロピーデコーダモジュール420に入力される。エントロピーデコーダモジュール420は、「bins」のシーケンスを復号することによってビットストリーム133からシンタックス要素を抽出し、そのシンタックス要素の値をビデオデコーダ134内の他のモジュールに渡す。エントロピーデコーダモジュール420は、演算デコーディングエンジンを使用して、各シンタックス要素を1つ以上のビンのシーケンスとして復号する。各ビンは、ビンの「1」と「0」の値を符号化するために使用される確率レベルを記述するコンテキストと共に、一つ以上の「コンテキスト」を使用することができる。所与のビンに対して複数のコンテキストが利用可能な場合、「コンテキストモデリング」または「コンテキスト選択」ステップが、ビンを復号するために利用可能なコンテキストの1つを選択するために実行される。ビンを復号するプロセスは、順次フィードバックループを形成する。フィードバックループにおける動作の数は、エントロピーデコーダ420がビン/秒で高いスループットを達成することを可能にするために最小化されることが好ましい。コンテキストモデリングはコンテキスト、すなわち、現在のビンの前のプロパティを選択するときに、ビデオデコーダ134に知られているビットストリームの他のプロパティに依存する。例えば、コンテキストは、符号化ツリー内の現在のCUの四分木深さに基づいて選択され得る。依存性は、ビンを復号する前によく知られている特性に基づくか、または長い順次処理を必要とせずに決定されることが好ましい。
【0085】
符号化ツリーの四分木深さは、容易に知られているコンテキストモデリングに対する依存性の一例である。イントラ予測モードは、決定するのが比較的困難または計算集約的であるコンテキストモデリングのための依存性の一例である。イントラ予測モードは、「最も確率の高いモード(most probable modes)」(MPM)のリストへのインデックスまたは「残りのモード」のリストへのインデックスのいずれかとして符号化され、MPMと残りのモードの間の選択は復号された「intra_luma_mpm_flag」に従っている。MPMが使用されている場合、「intra_luma_mpm_idx」シンタックス要素が復号され、最も確率の高いモードのうちどれを使用するのかを選択する。一般に、6つのMPMがある。残りのモードが使用されている場合、「intra_luma_remainder」シンタックス要素が復号され、残りの(非MPM)モードのどれを使用するかを選択する。最も確率の高いモードと残りのモードの両方を決定することは、かなりの数の動作を必要とし、隣接ブロックのイントラ予測モードへの依存性を含む。例えば、隣接ブロックは、現在のブロックの左上のブロックであってもよい。望ましくは、各CUのビンのコンテキストが、シグナリングされているイントラ予測モードを知ることなく、算術符号化エンジンによる構文解析を可能にして、決定することができる。したがって、逐次ビン復号のための算術符号化エンジンに存在するフィードバックループは、イントラ予測モードへの依存性を回避する。イントラ予測モード決定は、隣接ブロックのイントラ予測モードに対するMPMリスト構成の依存性のために、別個のフィードバックループを用いて、後続の処理ステージに延期され得る。したがって、エントロピーデコーダモジュール420の演算デコードエンジンは、以前の(例えば、隣接する)ブロックのイントラ予測モードを知る必要なく、intra_luma_mpm_flag、intra_luma_mpm_idx、intra_luma_remainderを構文解析することができる。エントロピーデコーダモジュール420は、ビットストリーム133からシンタックス要素を復号するために、算術符号化アルゴリズム、例えば「コンテキスト適応2進算術符号化」(CABAC)を適用する。復号されたシンタックス要素は、ビデオデコーダ134内のパラメータを再構成するために使用される。パラメータは、残差係数(矢印424によって表される)と、イントラ予測モード(矢印458によって表される)などのモード選択情報とを含む。モード選択情報は、動きベクトル、および各CTUの1つまたは複数のCBへの分割などの情報も含む。パラメータは、典型的には以前に復号されたCBからのサンプルデータと組み合わせて、PBを生成するために使用される。
【0086】
残差係数424は、逆量子化モジュール428に入力される。逆量子化モジュール428は、残差係数424に対して逆量子化(または「スケーリング」)を実行して、量子化パラメータに従って、矢印432によって表される再構成された中間変換係数を生成する。再構成された中間変換係数432は、復号された「nsst_index」シンタックス要素に従って、二次変換が適用されるか、または演算(バイパス)されない逆二次変換モジュール436に渡される。「nsst_index」は、プロセッサ205の実行の下で、エントロピーデコーダ420によってビットストリーム133から復号される。図3を参照して説明されるように、「nsst_index」は、ビットストリーム133から、ゼロから2の値を有する切り捨てられた単項シンタックス要素として復号される。図15を参照してさらに説明されるように、「nsst_index」シンタックス要素は、対応するCBのイントラ予測モードを知る必要なしに復号され、エントロピーデコーダ420の算術復号器におけるフィードバック依存性ループを緩和する。逆二次変換モジュール436は、再構成された変換係数440を生成する。不均一な逆量子化行列の使用がビットストリーム133に示される場合、ビデオデコーダ134は、スケーリングファクタのシーケンスとしてビットストリーム133から量子化行列を読み出し、スケーリングファクタを行列に配置する。逆スケーリングは、量子化パラメータと組み合わせて量子化行列を使用して、再構成された中間変換係数432を生成する。
【0087】
再構成された変換係数440は、逆一次変換モジュール444に渡される。モジュール444は、係数を周波数領域から空間領域に戻すように変換する。TBは、有効残差係数値および非有効残差係数値に事実上基づいている。モジュール444の動作の結果は、矢印448によって表される残差サンプルのブロックである。残差サンプル448は、対応するCUとサイズが等しい。残差サンプル448は、加算モジュール450に供給される。加算モジュール450において、残差サンプル448は、復号されたPB(452として表される)に加算されて、矢印456によって表される再構成されたサンプルのブロックを生成する。再構成サンプル456は、再構成サンプルキャッシュ460およびループ内フィルタリングモジュール488に供給される。ループ内フィルタリングモジュール488は、492として表されるフレームサンプルの再構成されたブロックを生成する。フレームサンプル492は、フレームバッファ496に書き込まれる。
【0088】
再構成サンプルキャッシュ460は、ビデオエンコーダ114の再構成サンプルキャッシュ356と同様に動作する。再構成されたサンプルキャッシュ460は(例えば、典型的には、オンチップメモリであるデータ232を代わりに使用することによって)メモリ206を介さずに後続のCBをイントラ予測するために必要とされる再構成されたサンプルのための記憶装置を提供する。矢印464によって表される参照サンプルは、再構成サンプルキャッシュ460から得られ、参照サンプルフィルタ468に供給されて、矢印472によって示されるフィルタリングされた参照サンプルを生成する。フィルタリングされた参照サンプル472は、イントラフレーム予測モジュール476に供給される。モジュール476は、ビットストリーム133でシグナリングされ、エントロピーデコーダ420によって復号されたイントラ予測モードパラメータ458に従って、矢印480によって表されるイントラ予測サンプルのブロックを生成する。
【0089】
CBの予測モードがビットストリーム133におけるイントラ予測であることが示されていると、イントラ予測サンプル480は、マルチプレクサモジュール484を介して復号PB452を形成する。イントラ予測は、サンプルの予測ブロック(PB)、すなわち、同じ色成分内の「隣接サンプル」を使用して導出された1つの色成分内のブロックを生成する。隣接するサンプルは、現在のブロックに隣接するサンプルであり、ブロック復号順序において先行することにより、既に再構成されている。ルマおよびクロマブロックが並置される場合、ルマおよびクロマブロックは、異なるイントラ予測モードを使用することができる。しかしながら、2つのクロマチャネルはそれぞれ、同じイントラ予測モードを共有する。イントラ予測は、3つのタイプに分類される。「DCイントラ予測」は、隣接するサンプルの平均を表す単一の値でPBをポピュレートすることを含む。「プレーンイントラ予測(Planar intra prediction)」は、隣接するサンプルから導出されるDCオフセットおよび垂直および水平勾配で、プレーンに従うサンプルでPBをポピュレートすることを含む。「角度イントラ予測(Angular intra prediction)」は、フィルタリングされ、PBを横切って特定の方向(または「角度」)に伝播される隣接するサンプルでPBをポピュレートすることを含む。VVC65では、正方形ブロックでは使用できない追加の角度を使用できる矩形ブロックで角度がサポートされ、合計87の角度が生成される。第4のタイプのイントラ予測は、クロマPBに利用可能であり、それによって、PBは、「クロス構成要素線形モデル」(CCLM)モードに従って、並置されたルマ再構成サンプルから生成される。3つの異なるCCLMモードが利用可能であり、その各々は、隣接するルマ及びクロマサンプルから導出された異なるモデルを使用する。次いで、導出されたモデルを使用して、コロケートされたルマサンプルからクロマPBのサンプルのブロックを生成する。
【0090】
CBの予測モードがビットストリーム133におけるインター予測であることが示されていると、動き補償モジュール434は、フレームバッファ496からサンプルのブロックを選択し、フィルタリングするために、動きベクトルおよび参照フレームインデックスを使用して、438として表されるインター予測サンプルのブロックを生成する。サンプル498のブロックは、フレームバッファ496に記憶された以前に復号されたフレームから得られる。双方向予測の場合、2つのサンプルのブロックが生成され、一緒にブレンドされて、復号されたPB452のためのサンプルが生成される。フレームバッファ496には、ループ内フィルタリングモジュール488からのフィルタリングされたブロックデータ492でポピュレートされる。ビデオエンコーダ114のループ内フィルタリングモジュール368と同様に、ループ内フィルタリングモジュール488は、DBF、ALF、およびSAOフィルタリング動作のいずれか、少なくとも、またはすべてを適用する。一般に、動きベクトルは、ルマチャネルとクロマチャネルの両方に適用されるが、サブサンプル補間ルマチャネルおよびクロマチャネルのフィルタリング処理は異なる。符号化ツリーにおける分割が比較的小さなルマブロックの集合をもたらし、対応するクロマ領域が対応する小さなクロマブロックに分割されない場合、ブロックは図13および図14をそれぞれ参照して説明されるように、符号化され、復号される。特に、いずれかの小さなルマブロックがインター予測を使用して予測される場合、インター予測動作は、ルマCBに対してのみ実行され、対応するクロマCBのいずれの部分に対しても実行されない。ループ内フィルタリングモジュール368は、再構成されたサンプル456からフィルタリングされたブロックデータ492を生成する。
【0091】
図5は、汎用ビデオ符号化のツリー構造内の1つまたは複数のサブ領域への領域の利用可能な分割(divisions)または分割(splits)の集合500を示す概略ブロック図である。集合500に示される分割(divisions)は、図3を参照して説明されるように、ラグランジュ最適化によって決定されるように、符号化ツリーに従って各CTUを1つまたは複数のCUまたはCBに分割するために、エンコーダ114のブロックパーティショナ310に利用可能である。
【0092】
集合500は、正方形領域のみが他の、おそらくは正方形でないサブ領域に分割されていることを示すが、図500は潜在的な分割を示しているが、包含領域が正方形であることを必要としないことを理解されたい。含有領域が非正方形の場合、分割から生じるブロックの寸法は含有ブロックの縦横比に従ってスケールされる。領域がそれ以上分割されなくなると、すなわち、符号化ツリーのリーフノードにおいて、CUがその領域を占有する。ブロックパーティショナ310によるCTUの1つまたは複数のCUへの特定のサブ分割は、CTUの「符号化ツリー」と呼ばれる。
【0093】
領域をサブ領域にサブ分割するプロセスは、結果として生じるサブ領域が最小CUサイズに達したときに終了しなければならない。所定の最小サイズ、例えば、16サンプルより小さいブロック領域を禁止するようにCUを制約することに加えて、CUは、4の最小幅または高さを有するように制約される。幅および高さの両方に関して、または幅または高さに関して、他の最小値も可能である。サブ分割のプロセスは、最も深いレベルの分解の前に終了することもでき、その結果、CUが最小CUサイズよりも大きくなる。分割が起こらず、その結果、単一のCUがCTUの全体を占有することが可能である。CTUの全体を占有する単一のCUは、最大の利用可能な符号化ユニットサイズである。また、分割が発生しないCUは、処理領域サイズよりも大きい。符号化ツリーの最高レベルでの2分割または3分割の結果として、64×128、128×64、32×128、および128×32などのCUサイズが可能であり、それぞれも処理領域サイズより大きい。図10A~10Fを参照してさらに説明される処理領域サイズよりも大きいCUSの例。4:2:0などのサブサンプリングされたクロマフォーマットの使用により、ビデオエンコーダ114およびビデオデコーダ134の構成は、ルマチャネルにおけるよりも早くクロマチャネルにおける領域の分割を終了させることができる。
【0094】
符号化ツリーのリーフノードには、それ以上のサブ分割のないCUが存在する。例えば、リーフノード510は、1つのCUを含む。符号化ツリーの非リーフノードには、2つ以上のさらなるノードへの分割が存在し、各ノードはリーフノード従って1つのCUを含むか、またはより小さな領域へのさらなる分割を含むことができる。符号化ツリーの各リーフノードにおいて、各カラーチャネルに対して1つの符号化ブロックが存在する。ルマおよびクロマの両方について同じ深さで終端する分割は、3つの並置されたCBをもたらす。クロマよりも深いルマの深さで終端する分割は、複数のルマCBがクロマチャネルのCBと並置されることになる。
【0095】
四分木分割512は図5に示すように、包含領域を4つの等しいサイズの領域に分割する。HEVCと比較して、汎用ビデオ符号化(VVC)は、水平2分割514および垂直2分割516を追加することにより、さらなる柔軟性を達成する。分割514および516の各々は、包含領域を2つの等しいサイズの領域に分割する。分割は、含有ブロック内の水平境界(514)または垂直境界(516)に沿っている。
【0096】
水平3分割518および垂直3分割520を追加することにより、汎用ビデオ符号化においてさらなる柔軟性が達成される。3分割518および520は、ブロックを、包含領域の幅または高さの1/4および3/4に沿って水平方向(518)または垂直方向(520)のいずれかで境界をつけられた3つの領域に分割する。4分木、2分木、および3分木の組合せは、「QTBTTT」と呼ばれる。ツリーのルートには、ゼロ個以上の四分木分割(ツリーの「QT」セクション)が含まれる。QTセクションが終了すると、ゼロまたはそれ以上の2分割または3分割(ツリーの「マルチツリー」または「MT」セクション)が発生し、最終的にツリーのリーフノードのCBまたはCUで終了する。ツリーがすべてのカラーチャネルを記述する場合、ツリーリーフノードはCUである。ツリーがルマチャネルまたはクロマチャネルを記述する場合、ツリーリーフノードはCBである。
【0097】
4分木のみをサポートし、したがって正方形ブロックのみをサポートするHEVCと比較して、QTBTTTは、特に2分木および/または3分木分割の可能な再帰的適用を考慮すると、より多くの可能なCUサイズをもたらす。異常な(正方形でない)ブロックサイズの可能性は、ブロック幅または高さが4サンプル未満であるか、または4サンプルの倍数ではないかのいずれかになる分割を排除するように分割オプションを制約することによって低減することができる。一般に、この制約は、ルマサンプルを考慮する際に適用される。しかしながら、説明した構成では、制約がクロマチャネル用のブロックに別々に適用することができる。クロマチャネルに対する分割オプションへの制約の適用は、フレームデータが4:2:0クロマフォーマットまたは4:2:2クロマフォーマットの場合など、ルマとクロマで最小ブロックサイズが異なり得る。各分割では、この包含領域に関して辺寸法が変わらない、半分になっている、または1/4になっているサブ領域が生成される。そして、CTUサイズは2のべき乗であるため、全てのCUの辺寸法も2のべき乗である。
【0098】
図6は、汎用ビデオ符号化で使用されるQTBTTT(または「符号化ツリー」)構造のデータフロー600を示す概略フロー図である。QTBTTT構造は、CTUを1つまたは複数のCUに分割することを定義するために、各CTUに対して使用される。各CTUのQTBTTT構造は、ビデオエンコーダ114内のブロックパーティショナ310によって決定され、ビットストリーム115に符号化されるか、またはビデオデコーダ134内のエントロピーデコーダ420によってビットストリーム133から復号される。データフロー600はさらに、図5に示される分割に従って、CTUを1つまたは複数のCUに分割するためにブロックパーティショナ310に利用可能な許容可能な組合せを特徴付ける。
【0099】
階層の最上位レベル、すなわちCTUから始めて、ゼロまたはそれ以上の四分木分割が最初に実行される。具体的には、四分木(QT)分割決定610がブロックパーティショナ310によって行われる。「1」シンボルを返す610での決定は、四分木分割512に従って現在のノードを4つのサブノードに分割する決定を示す。その結果、620などの、4つの新しいノードが生成され、各新しいノードについて、QT分割決定610に戻る。各新しいノードは、ラスタ(またはZスキャン)順序で考慮される。あるいは、QT分割決定610がさらなる分割が実行されるべきでないことを示す(「0」シンボルを返す)場合、四分木分割は停止し、マルチツリー(MT)分割がその後考慮される。
【0100】
まず、MT分割決定612がブロックパーティショナ310によって行われる。612において、MT分割を実行する決定が示される。決定612で「0」のシンボルを返すことは、ノードのサブノードへのそれ以上の分割が実行されないことを示す。ノードのそれ以上の分割が実行されない場合、ノードは符号化ツリーのリーフノードであり、CUに対応する。リーフノードは622で出力される。あるいは、MT分割612がMT分割を実行する決定を示す(「1」シンボルを返す)場合、ブロックパーティショナ310は方向決定614に進む。
【0101】
方向決定614は、水平(「H」または「0」)または垂直(「V」または「1」)のいずれかとしてMT分割の方向を示す。ブロックパーティショナ310は、決定614が水平方向を示す「0」を返す場合、決定616に進む。ブロックパーティショナ310は、決定614が垂直方向を示す「1」を返す場合、決定618に進む。
【0102】
決定616および618のそれぞれにおいて、MT分割のパーティション数は、BT/TT分割で2つ(2分割または「BT」ノード)または3つ(3分割または「TT」)のいずれかとして示される。すなわち、BT/TT分割決定616は、614からの指示された方向が水平であるときにブロックパーティショナ310によって行われ、BT/TT分割決定618は、614からの指示された方向が垂直であるときにブロックパーティショナ310によって行われる。
【0103】
BT/TT分割決定616は、水平分割が「0」を返すことによって示される2分割514であるか、「1」を返すことによって示される3分割518であるかを示す。BT/TT分割決定616が2分割を示す場合、HBT CTUノード生成ステップ625において、水平2分割514に従って、2つのノードがブロックパーティショナ310によって生成される。BT/TT分割616が3分割を示す場合、HTT CTUノード生成ステップ626において、水平3分割518に従って、ブロックパーティショナ310によって3つのノードが生成される。
【0104】
BT/TT分割決定618は、垂直分割が「0」を返すことによって示される2分割516であるか、「1」を返すことによって示される3分割520であるかを示す。BT/TT分割618が2分割を示す場合、VBT CTUノード生成ステップ627では、垂直2分割516に従って、ブロックパーティショナ310によって2つのノードが生成される。BT/TT分割618が3分割を示す場合、VTT CTUノード生成ステップ628において、垂直3分割520に従って、ブロックパーティショナ310によって3つのノードが生成される。ステップ625~628から生じる各ノードについて、MT分割決定612に戻るデータフロー600の再帰が、方向614に応じて、左から右へ、または上から下への順序で適用される。その結果、2分木および3分木分割を適用して、様々なサイズを有するCUを生成することができる。
【0105】
符号化ツリーの各ノードにおける許可された分割および許可されない分割のセットは、図9を参照してさらに説明される。
【0106】
図7Aおよび7Bは、CTU710のいくつかのCUまたはCBへの分割例700を提供する。CU712の一例を図7Aに示す。図7Aは、CTU710におけるCUの空間配置を示す。分割例700は、図7Bに符号化ツリー720としても示されている。
【0107】
図7AのCTU710内の各非リーフノード、例えばノード714、716および718において、収容されたノード(さらに分割されていてもよいし、CUであってもよい)は、ノードのリストを作成するために「Zオーダー」でスキャンまたはトラバースされ、符号化ツリー720内のカラムとして表される。4分木分割の場合、Zオーダースキャンは、左上から右に続いて左下から右の順序になる。水平分割および垂直分割の場合、Zオーダースキャン(トラバーサル)は、それぞれ、上から下へ、および左から右へのスキャンに単純化する。図7Bの符号化ツリー720は、適用されたスキャンオーダーに従って、すべてのノードおよびCUをリストする。各分割は、リーフノード(CU)に到達するまで、ツリーの次のレベルで2、3、または4個の新しいノードのリストを生成する。
【0108】
ブロックパーティショナ310によって画像をCTUに分解し、さらにCUに分解し、図3を参照して説明されるように、各残差ブロック(324)を生成するためにCUを用いて、残差ブロックは、ビデオエンコーダ114によって順変換および量子化される。結果として得られるTB336は、その後、エントロピー符号化モジュール338の動作の一部として、残差係数の順次リストを形成するためにスキャンされる。同等のプロセスがビットストリーム133からTBを得るために、ビデオデコーダ134内で実行される。
【0109】
図7Aおよび7Bの例は、ルマチャネルおよびクロマチャネルの両方に適用可能な符号化ツリーを説明する。しかしながら、図7Aおよび図7Bの例は、ルマチャネルのみに適用可能な符号化ツリーまたはクロマチャネルのみに適用可能な符号化ツリーのトラバースに関する挙動も示す。多くのネストされた分割を持つ符号化ツリーの場合、より深いレベルで利用可能な分割オプションは、対応する小さな領域の利用可能なブロックサイズの制限によって制約される。小さな領域のための利用可能なブロックサイズに対する制限は、実装に不合理な負担を課すほど高いブロック処理レートの最悪の場合を防止するために課される。特に、ブロックサイズがクロマにおける16(16)個のサンプルの倍数であるという制約は、実装が16(16)個のサンプルの粒度でサンプルを処理することを可能にする。ブロックサイズを16サンプルの倍数に制限することは、「イントラ再構成」フィードバックループ、すなわち、モジュール450、460、468、476、および484を含む図4のビデオデコーダ134内の経路、ならびにビデオエンコーダ114内の同等の経路に特に関連する。特に、ブロックサイズを16(16)サンプルの倍数に制限することは、イントラ予測モードにおけるスループットを維持するのに役立つ。例えば、「同時データ複数命令」(SIMD)マイクロプロセッサアーキテクチャは一般に、16個のサンプルを含むことができるワイドワード上で動作する。また、ハードウェアアーキテクチャは、イントラ再構成フィードバックループに沿ってサンプルを転送するために、16サンプルの幅を有するバスのような広いバスを使用することができる。より小さなブロックサイズ、例えば4つのサンプルが使用されるならば、バスは、例えばサンプルデータを含むバス幅の4分の1だけ、十分に利用されないであろう。利用不足のバスはより小さなブロック(すなわち、16サンプル未満)を処理することができるが、比較的小さなサイズの多くのブロック又は全てのブロックのような最悪の場合のシナリオでは、利用不足がエンコーダ(114)又はデコーダ(134)のリアルタイム動作を妨げる結果となり得る。インター予測の場合、各ブロックは、フレームバッファ(バッファ372または496など)から取得された参照サンプルに依存する。フレームバッファは、先行するフレームを処理するときに参照サンプルで占められるので、インター予測ブロックを生成するためのブロックバイブロック動作に影響を及ぼすフィードバック依存ループはない。イントラフレーム再構成に関連するフィードバック依存ループに加えて、イントラ予測モード458の決定に関連する追加の同時フィードバックループが存在する。イントラ予測モード458は、最も確率の高いモードリストからモードを選択することによって、または残りのモードリストからモードを選択することによって決定される。最も確率の高いモードリストおよび残りのモードリストの決定は、隣接ブロックのイントラ予測モードを必要とする。比較的小さいブロックサイズが使用される場合、最も確率の高いモードリストおよび残りのモードリストはより頻繁に、すなわち、サンプルのブロックサイズおよびチャネルのサンプリングレートによって支配される周波数で決定される必要がある。
【0110】
図8A、8B、および8Cは、ルマ分割の前に終端され、4:2:0クロマフォーマットを使用するクロマ分割を有する符号化ツリー820(図8B)によるCTU800(8A)の例示的な分割を提供する。クロマ分割が終了する場合、各クロマチャネルに1つずつ、1対のCBが使用される。説明の便宜上、サイズ64×64ルマサンプルのCTU800。CTU800は、128×128のCTUサイズと、1つの追加の四分木分割を含む符号化ツリーとに等しい。四分木分割が8×8ルマ領域814に適用される。8×8ルマ領域814は、4つの4×4ルマCBに分割されるが、クロマチャネルでは分割は起こらない。その代わりに、所定の最小サイズ(記載された例では16)のクロマCBのペアが使用され、1つは各クロマチャネルに対応する。クロマCBのペアは、典型的には同時に処理されることが望ましいサンプルの数に対する最小粒度に対応する最小サイズである。例えば、ビデオエンコーダ114およびビデオエンコーダ134の多くの実装は例えば、ハードウェア実装における対応する幅の広い内部バスの使用により、16サンプルのセットに対して動作する。さらに、分割から生じる各ルマCBは、少なくとも部分的に、クロマCBのペアと重なり、集合ルマCBは、クロマCBのペアと完全に重なる。領域814の例では、4×4のクロマCBのペアが生成される。図8Cは、結果として得られるルマCBとクロマCBとがどのように関連するかの例を示す。
【0111】
再び8Aを参照すると、垂直2分割が16×4ルマ領域810に適用される。16×4ルマ領域810は、2つの8×4ルマCBに分割されるが、クロマチャネルには分割は起こらず、8×2クロマCBのペアをもたらす。16×4ルマ領域812には、垂直3分割が適用される。16×4ルマ領域812は、4×4、4×8、および4×4ルマCBに分割されるが、クロマチャネルには分割は起こらず、8×2クロマCBのペアをもたらす。水平2分割は、8×16ルマ領域816に適用される。8×16ルマ領域816は、8×4、8×8、および8×4ルマCBに分割されるが、クロマチャネルでは分割は起こらず、4×8クロマCBのペアをもたらす。したがって、クロマCBは、面積が少なくとも16サンプルである。
【0112】
図8Cは、異なる平面内の異なるブロック構造を例示するために、「爆発的(exploded)」(または分離)方式で示される3つの色平面を有するCTU800の一部を示す。ルマサンプル平面850、第1のクロマサンプル平面852、および第2のクロマサンプル平面854が示されている。「YCbCr」色空間が使用中であるとき、ルマサンプル平面850は画像フレームのYサンプルを含み、第1のクロマサンプル平面852は画像フレームのCbサンプルを含み、第2のクロマサンプル平面854は画像フレームのCrサンプルを含む。4:2:0クロマフォーマットを使用すると、第1のクロマサンプル平面852および第2のクロマサンプル平面854は、ルマサンプル平面850に対して水平および垂直にサンプル密度の半分を有することになる。結果として、サンプル中のクロマブロックのCB寸法は、典型的には対応するルマCBの寸法の半分である。すなわち、4:2:0クロマフォーマットの場合、クロマCBの幅および高さは、それぞれ、コロケートされたルマCBの幅および高さの半分である。4:2:2クロマフォーマットの場合、クロマCBの高さはコロケートされたルマCBの高さの半分であり、幅はコロケートされたルマCBの幅と同じである。明確にするために、8×16ルマ領域816の符号化ツリーにおける親分割のみが示され、分割はルマサンプル平面850においてのみ示される。クロマ分割が終了すると、複数のルマCBがクロマCBのペアと並置される。例えば、CTU800の符号化ツリーは、8×16ルマ領域816に適用される水平3分割を含む。水平3分割は、ルマサンプル平面850に存在する、8×4ルマCB860、8×8ルマCB862、および8×4ルマCB864をもたらす。8×16ルマ領域816は、クロマサンプル平面(852および854)内の4×8クロマサンプルのエリアに対応するので、符号化ツリーの3分割はクロマサンプル平面(852および854)には適用されない。したがって、4×8クロマサンプルの領域は、クロマについてのリーフノードを形成し、その結果、クロマCBのペア、すなわち、第1のクロマサンプル平面852についてのクロマCB866と、第2のクロマサンプル平面854についてのクロマCB868とが得られる。ルマ平面のみに適用される水平3分割の例では、32サンプルの最小クロマCBサイズが達成される。他の例示的なルマ領域(810、812、および814)は、最小ルマブロックサイズおよびサンプル処理の所望の粒度に対応する、16の最小クロマCBサイズをもたらす。
【0113】
図9は、4:2:0クロマフォーマットの使用から生じるクロマチャネルのための変換ブロックサイズおよび関連するスキャンパターンの集合900を示す。集合900は、4:2:2クロマフォーマットにも使用することができる。記載された構成は、特に4:2:0及び4:2:2フォーマットに対して、画像フレームのクロマチャネルが画像フレームのルマチャネルに対してサブサンプリングされるクロマフォーマットを有する画像フレームと共に使用するのに適している。集合900は、全ての可能なクロマ変換ブロックサイズを含まない。図9には、16以下の幅または8以下の高さを有するクロマ変換ブロックのみが示されている。より大きな幅および高さを有するクロマブロックが生じ得るが、参照を容易にするために図9には示されていない。
【0114】
禁止された変換サイズ910のセットは、変換ブロックサイズ2×2、2×4、および4×2を含み、これらはすべて、16サンプル未満の領域を有する。言い換えれば、図9の例では、特にイントラ予測CBについて、16(16)個のクロマサンプルの最小変換サイズが説明された構成の動作から生じる。禁止された変換サイズ910のインスタンスは、図10を参照して説明したように、分割オプションを決定することによって回避される。変換における残差係数は、変換が「サブブロック」(または「係数グループ」)に分割される2層アプローチでスキャンされる。スキャンは、最後の有効(非ゼロ)係数からDC(左上)係数に向かってスキャン経路に沿って行われる。スキャン経路は、各サブブロック(「下位層」)内の進行、および1つのサブブロックから次(「上位層」)への進行として定義される。集合900では、8×2TB920が8×2サブブロック、すなわち、16個の残差係数を含むサブブロックを使用する。2×8TB922は、2×8サブブロックを使用し、すなわち、16個の残差係数も含む。
【0115】
幅または高さが2であり、他の寸法が8の倍数であるTBは、複数の2×8または8×2サブブロックを使用する。したがって、いくつかの例では2つのサンプルの幅を有するクロマブロックが、ブロックをサブブロックに分割することを使用して符号化され、サイズ2×8サンプルのそれぞれと、2つのサンプルの高さを有するクロマブロックとはいくつかの例ではブロックをサブブロックに分割することを使用して符号化され、サイズ8×2サンプルのそれぞれである。例えば、16×2TB916は、2つの8×2サブブロックを有し、各サブブロックは、TB920に対して示されるようにスキャンされる。サブブロック進行917に示すように、1つのサブブロックから次へのスキャンの進行。
【0116】
2×32TB(図9には図示せず)は、1×4アレイとして配置された4つの2×8サブブロックを使用する。各サブブロック内の残差係数は、2×8TB922について示されるようにスキャンされ、サブブロックは1×4アレイの最下位サブブロックから最上位サブブロックまで進む。
【0117】
TBが大きければ大きいほど、同様のスキャンの進行に続く。幅および高さがそれぞれ4以上であるすべてのTBについて、4×4サブブロックスキャンが使用される。例えば、4×8TB923は、下位サブブロックから上部サブブロックへの進行と共に、4×4サブブロックスキャン924を使用する。4×4TB925は、同様の方法でスキャンすることができる。8×8TB929は、4つの4×4サブブロックに対して進行930を使用する。すべての場合において、サブブロック内のスキャンおよびサブブロックからサブブロックへの進行は、後方対角スキャン(a backward diagonal scan)に続き、すなわち、スキャンは、「最後の」有意残差係数からTBの左上残差係数に向かって後方に進行する。図9はまた、例えば、8×4TB932、16×4TB934、および16×8TB936にわたるスキャン順序を示す。さらに、スキャン経路に沿った最後の有意係数の位置に応じて、サブブロックの最後の有意係数位置から左上の残差係数に戻るまでの最後の有意残差係数を含むサブブロックの部分のみをスキャンする必要がある。順方向(すなわち、ブロックの右下により近い)にスキャン経路に沿ったさらなるサブブロックは、スキャンされる必要はない。集合900、特に禁止された変換サイズ910は、図10を参照して説明されるように、クロマにおける符号化ツリーの領域(またはノード)をサブ領域(またはサブノード)に分割する能力に制限を課す。
【0118】
2×2、2×4、および4×2のTB(TB910のセット)を使用するVVCシステムでは、2×2のサブブロックが2つのサンプルの幅および/または高さのTBのために使用され得る。上述したように、TB910の使用は、イントラ再構成フィードバック依存性ループにおけるスループット制約を増加させる。さらに、4つの係数のみを有するサブブロックの使用は、より高いスループットで残差係数を構文解析することの困難性を増加させる。特に、各サブブロックについて、「有意性マップ」は、その中に含まれる各残差係数の有意性を示す。1値の有意性フラグの符号化は、残差係数の大きさを少なくとも1であるとして確立し、ゼロ値フラグの符号化は、残差係数の大きさをゼロとして確立する。(1つ前方からの)残差係数の大きさおよび符号は、「有意である」残差係数についてのみ符号化される。有意ビットは符号化されず、大きさ(ゼロから)がDC係数に対して常に符号化される。高スループットエンコーダおよびデコーダは、リアルタイム動作を維持するために、クロックサイクル当たり複数の有意性マップビンを符号化または復号する必要があり得る。サイクル当たりのマルチビン符号化および復号の難しさは、ビン間依存性がより多いとき、例えば、より小さいサブブロックサイズが使用されるとき、増加する。システム100において、サブブロックサイズは、ブロックサイズにかかわらず、(最後の有意係数を含むサブブロックの例外にもかかわらず)16である。
【0119】
図10は、クロマ符号化ツリーにおいて許可された分割のリストを生成するための規則1000のセットを示す。他のフレームは、インター予測されたブロックとイントラ予測されたブロックとの混合を可能にすることができる。符号化ツリーの利用可能な分割の全セットを図6を参照して説明したが、利用可能な変換サイズに対する制限は所与の領域サイズに対する特定の分割オプションに制約を課す。以下に説明するように、各クロマチャネルに対する分割オプションは、対応する符号化ツリーユニットの領域の寸法に従って決定される。
【0120】
クロマ領域のための規則1020は、異なる領域の許可された分割を示す。規則1020の許可された分割は、異なるクロマフォーマットが使用されている場合があるので、クロマチャネルが考慮中であっても、ルマサンプルの単位で表現される。
【0121】
符号化ツリーのノードを横断する際に、符号化ツリーの領域サイズをもつ分割オプションのセットの利用可能性をチェックすることにより、クロマに対する許可された分割のリストを得る。CBを使用して符号化される可能性のある領域をもたらす分割オプションは、許可される分割のリストに追加される。CBを使用して符号化される領域のためには、領域サイズが集合900からの特定のサイズの整数個の変換で符号化を可能にしなければならない。特定のサイズは、(幅および高さの両方を考慮して)領域サイズを超えない最大サイズであるように選択される。したがって、より小さい領域に対しては、単一の変換が使用される。領域サイズが最大の利用可能な変換のサイズを超える場合、最大の利用可能な変換は、領域の全体を占有するようにタイル化される。
【0122】
所与の領域(ルマサンプルで表される)を有する符号化ツリー内のノードを考慮する場合、所与のタイプの分割を実行する能力は、分割タイプおよびクロマ領域エリアに従って決定される。図10に示すように、分割オプションは分割オプションが禁止サイズのサブ領域をもたらすかどうかを決定するために、領域サイズに対してテストされる。許可されたサイズのサブ領域をもたらす分割オプションは、許可されたクロマ分割1070と見なされる。
【0123】
例えば、QTモードである場合(図6の決定610に対応する)、クロマ領域のための規則1021aとして示されるように、領域が4:2:0フォーマットのサイズ8×8または4:2:2フォーマットの8×8である場合、分割がクロマチャネルに対してそれぞれ2×2または2×4の変換サイズをもたらすので、四分木分割は許可されない。許容可能な領域サイズを矢印1021で示す。同様に、クロマ規則セット1020に対する他の許容可能な分割は、矢印1022、1023、1024、1025、および1026によって示され、図13および図14に関連して以下に説明される。矢印1021、1022、1023、1024、1025および1026は、それぞれ許可されたクロマ分割リスト1070を参照する。
【0124】
クロマチャネルの領域サイズは、ルマサンプルグリッドに関して記述される。たとえば、8x4領域は、4:2:0クロマフォーマットが使用されている場合、クロマチャネルの4x2変換に対応する。4:2:2クロマフォーマットが使用されている場合、8x4領域はクロマの4x4変換に対応する。4:4:4クロマフォーマットが使用されているとき、クロマはルマに関してサブサンプリングされず、したがって、クロマにおける変換サイズは領域サイズに対応する。
【0125】
許容可能な分割オプションは、以下の図13および図14に関連してさらに説明される。
【0126】
図11は、画像フレームの符号化ツリーをビデオビットストリームに符号化する方法1100を示す。方法1100は、構成されたFPGA、ASIC、またはASSPなどの装置によって実施され得る。さらに、方法1100は、プロセッサ205の実行下でビデオデコーダ114によって実行されてもよい。したがって、方法1100は、コンピュータ可読記憶媒体および/またはメモリ206に記憶されてもよい。方法1100は、クロマフォーマットを判定するステップ1105で開始する。
【0127】
クロマフォーマットを判定するステップ1105において、プロセッサ205は、フレームデータ113のクロマフォーマットを、4:2:0クロマフォーマットまたは4:2:2クロマフォーマットのうちの1つとして判定する。クロマフォーマットはフレームデータのプロパティであり、方法1100の動作中に変化しない。方法1100は、プロセッサ205の制御下で、ステップ1105からフレームをCTUに分割するステップ1110に続く。
【0128】
フレームをCTUに分割するステップ1110において、ブロックパーティショナ310は、プロセッサ205の実行下で、フレームデータ113の現在のフレームをCTUのアレイに分割する。分割から生じるCTUにわたる符号化の進行が開始する。プロセッサ内の制御は、ステップ1110から符号化ツリーを決定するステップ1120に進む。
【0129】
符号化ツリーを決定するステップ1120において、ビデオエンコーダ114は、プロセッサ205の実行下で、様々な予測モードおよび分割オプションを組み合わせてテストして、CTUの符号化ツリーに到達する。また、CTUに対する符号化ツリーの各CUに対する予測モードと残差係数を導出する。一般に、ラグランジュ最適化は、CTUのための最適な符号化ツリーおよびCUを選択するために実行される。インター予測の使用を評価する場合、候補動きベクトルのセットから動きベクトルが選択される。候補動きベクトルは、サーチパターンに従って生成される。候補動きベクトルに対するフェッチされた参照ブロックの歪みのテストを評価する場合、符号化ツリーにおける禁止されたクロマ分割の適用が考慮される。分割がクロマにおいて禁止され、ルマにおいて許可される場合、結果として生じるルマCBは、インター予測を使用することができる。動き補償はルマチャンネルのみに適用されるため、歪み演算ではルマ歪みが考慮され、クロマ歪みは考慮されない。クロマ分割が禁止されていた場合、クロマチャンネルで動き補償が行われないため、クロマ歪みは考慮されない。クロマについては、考慮されるイントラ予測モードおよび符号化されたクロマTB(もしあれば)から生じる歪みが考慮される。ルマとクロマの両方を考慮する場合、インター予測検索では、まずルマ歪みに基づいて動きベクトルを選択し、次にクロマ歪みも考慮して動きベクトルを「リファイン」することがある。リファインメントは一般に、サブピクセル変位量のような動きベクトル値上の小さな変動を考慮する。クロマ分割が禁止され、小さいルマブロックに対するインター予測の評価が実行される場合、クロマリファインメントは必要とされない。プロセッサ205内の制御は、ステップ1120から符号化ツリーを符号化するステップ1130に進む。
【0130】
符号化ツリーを符号化するステップ1130において、ビデオエンコーダ114は、プロセッサ205の実行下で、図13に関連して説明する方法1300を実行して、現在のCTUの符号化ツリーをビットストリーム115に符号化する。ステップ1130は、現在のCTUをビットストリームに符号化するために実行される。プロセッサ205における制御は、ステップ1130から最後のCTUテストステップ1140に進む。
【0131】
最後のCTUテストステップ1140において、プロセッサ205は、現在のCTUがスライス又はフレーム内の最後のCTUであるかどうかをテストする。そわない場合(ステップ1140で「NO」)、ビデオエンコーダ114は、フレーム内の次のCTUに進み、プロセッサ205内の制御はステップ1140からステップ1120に戻り、フレーム内の残りのCTUの処理を継続する。CTUがフレームまたはスライス内の最後のCTUである場合、ステップ1140は「YES」に戻り、方法1100は終了する。方法1100の結果として、画像フレーム全体がCTUのシーケンスとしてビットストリームに符号化される。
【0132】
図12は、ビデオビットストリームから画像フレームの符号化ツリーを復号する方法1200を示す。方法1200は、構成されたFPGA、ASIC、またはASSPなどの装置によって実施され得る。さらに、方法1200は、プロセッサ205の実行下でビデオデコーダ134によって実行されてもよい。したがって、方法1200は、コンピュータ可読記憶媒体および/またはメモリ206に記憶されてもよい。方法1200は、クロマフォーマットを判定するステップ1205で開始する。
【0133】
クロマフォーマットを判定するステップ1205において、プロセッサ205は、フレームデータ113のクロマフォーマットを、4:2:0クロマフォーマットまたは4:2:2クロマフォーマットのうちの1つとして判定する。クロマフォーマットはフレームデータのプロパティであり、方法1200の動作中に変化しない。ビデオデコーダ134は、ビットストリーム133のプロファイルによってクロマフォーマットを判定してもよい。プロファイルは特定のビットストリーム133によって使用され得る符号化ツールのセットを定義し、クロマフォーマットを4:2:0のような特定の値に制約し得る。プロファイルは例えば、ビットストリーム133からの「profile_idc」シンタックス要素を復号することによって、またはビットストリーム133からの1つ以上の制約フラグを復号することによって判定され、各制約フラグはビットストリーム133における特定のツールの使用を制約する。クロマフォーマットがプロファイルによって完全に特定されていない場合、「chroma_format_idc」のようなさらなるシンタックスを復号して、クロマフォーマットを判定してもよい。方法1200は、ステップ1205からフレームをCTUに分割するステップ1210まで、プロセッサ205の実行下で継続する。
【0134】
フレームをCTUに分割するステップ1210において、ビデオデコーダ134は、プロセッサ205の実行下で、CTUのアレイに復号されるフレームデータ133の現在のフレームの分割を決定する。決定された分割から生じるCTUにわたる復号の進行が開始する。プロセッサ内の制御は、ステップ1210から符号化ツリーを復号するステップ1220に進む。
【0135】
符号化ツリーを復号するステップ1220において、ビデオデコーダ134はプロセッサ205の実行下で、ビットストリーム133から現在のCTUの符号化ツリーを復号するために、現在のCTUに対して方法1400を実行する。現在のCTUは、ステップ1210の実行から生じるCTUのうちの選択された1つである。プロセッサ205における制御は、ステップ1220から最後のCTUテストステップ1240に進む。
【0136】
最後のCTUテストステップ1240において、プロセッサ205は、現在のCTUがスライス又はフレーム内の最後のCTUであるかどうかをテストする。そわない場合(ステップ1240で「NO」)、ビデオデコーダ134はフレーム内の次のCTUに進み、プロセッサ205内の制御はステップ1240からステップ1220に戻り、ビットストリームからCTUを復号し続ける。CTUがフレームまたはスライス内の最後のCTUである場合、ステップ1240は「YES」に戻り、方法1300は終了する。
【0137】
図13は、画像フレームの符号化ツリーをビデオビットストリームに符号化する方法1300を示す。方法1300は、構成されたFPGA、ASIC、またはASSPなどの装置によって実施され得る。さらに、方法1300は、プロセッサ205の実行下でビデオエンコーダ114によって実行され得る。したがって、方法1300は、コンピュータ可読記憶媒体および/またはメモリ206に記憶されてもよい。方法1300は各ブロックが最小領域にあるように、ブロックをビットストリーム115に符号化する。記載された構成は、所定の最小サイズのサンプルを使用する。説明される例で使用される最小サイズは16サンプルであり、これは、いくつかのハードウェアおよびソフトウェア実装の観点から好ましい。しかしながら、それにもかかわらず、異なる最小サイズを使用することができる。例えば、32または64の処理粒度と、それぞれ32または64サンプルの対応する最小ブロック領域とが可能である。最小面積を有する符号化ブロックは、ハードウェアおよびソフトウェア実装の両方において、実装の実現可能性にとって有利である。ソフトウェア実装の場合、16サンプルの最小領域は、AVX-2およびSSE4などの典型的な単一命令多重データ(SIMD)命令セットと整列する。現在のCTUの符号化ツリーのルートノードで最初に呼び出される方法1300は、分割モードを符号化するステップ1310で開始する。
【0138】
分割モードを符号化するステップ1310において、エントロピーエンコーダ338は、プロセッサ205の実行下で、符号化ツリーの現在のノードにおける分割モードをビットストリーム115に符号化する。分割モードは図5を参照して説明したように分割の1つであり、分割モードを符号化するステップは、可能な分割の符号化のみを可能にする。例えば、四分木分割512は、符号化ツリーのルートノードにおいて、または符号化ツリー内の他の四分木分割の下においてのみ可能である。セット910に関連して示されるように、4サンプル未満の幅または高さを有するルマCBをもたらす分割は禁止される。例えば、規則セット1010に基づいて、2分割および/または3分割の最大深さに関する他の制約も有効であり得る。プロセッサ205における制御は、ステップ1310から分割無しテストステップ1320に進む。
【0139】
分割無しテストステップ1320で、プロセッサ205は、現在の分割が「分割無し」(すなわち、510)であるかどうかをテストする。現在の分割が分割無し510である場合(ステップ1320で「YES」)、プロセッサ205の制御はステップ1320からCUを符号化するステップ1330に進む。そうでなく、現在の分割が510でない場合(ステップ1320で「NO」)、プロセッサ205の制御はクロマ分割禁止テストステップ1340に進む。
【0140】
CUを符号化するステップ1330において、エントロピーエンコーダ338は、プロセッサ205の実行下で、CUの予測モードおよびCUの残差をビットストリーム115に符号化する。ステップ1330が符号化ツリーの各リーフノードで到達すると、方法1300は完了ステップ1330で終了し、符号化ツリートラバースにおける親呼び出しに戻る。符号化ツリーのすべてのノードがトラバースされると、CTU全体がビットストリーム115に符号化され、制御は方法1100に戻り、画像フレーム内の次のCTUに進む。
【0141】
クロマ分割禁止テストステップ1340において、プロセッサ205は図10のクロマ領域1020分割規則セットに従って、ステップ1310のように、符号化ツリー内の現在のノードに対する分割がクロマチャネルに適用されることを許可されているかどうかを判定する。符号化ツリー内の現在のノードが128個のルマサンプル(32×4または4×32または16×8または8×16)のルマ領域をカバーする場合、対応するクロマ領域(それぞれ16×2、2×16、8×4、4×8のクロマサンプル)内の3分割は、規則セット1020に示されるように禁止される。3分割が許可された場合、結果として得られるブロックサイズは禁止されたブロックサイズ(例えば、2×4または4×2)を含むことになる。符号化ツリー内の現在のノードが64個のルマサンプルのルマ領域をカバーする場合、規則セット1020に示されるように、2分割、3分割、四分木分割は禁止される。64個のルマサンプルのルマ領域に対して2分割、3分割、四分木分割を実施すると、禁止されたクロマブロックサイズ(2×2、2×4、4×2)になる。分割が禁止されていない場合(すなわち、分割がリスト1070の許可されたクロマ分割である場合)、ステップ1340は「NO」を返し、プロセッサ205の制御はステップ1340からルマおよびクロマ分割を実行するステップ1350に進み、そわない場合、分割が禁止されている場合(1340で「YES」)、プロセッサ205の制御はルマ分割を実行するステップ13100に進む。
【0142】
ルマおよびクロマ分割を実行するステップ1350において、プロセッサ205は、分割を適用して、符号化ツリーの現在のノードに関連する現在の領域を、符号化ツリーのサブノードに関連するサブ領域に分割する。分割は、図5および図6の説明に従って適用される。プロセッサ205内の制御は、ステップ1350から領域を選択するステップ1360に進む。
【0143】
領域を選択するステップ1360において、プロセッサは、ステップ1350から生じるサブ領域のうちの1つを選択する。サブ領域は、領域のZ順スキャンに従って選択される。選択は、ステップ1360の後続の反復でサブ領域を通って進行する。プロセッサ205内の制御は、ステップ1360から符号化ツリーを符号化するステップ1370に進む。
【0144】
符号化ツリーを符号化するステップ1370において、プロセッサ205は、ステップ1360の結果として生じる選択された領域に対して、方法1300を再帰的に起動する。ステップ1370はさらに、ビットストリームの各領域について、ルマおよびクロマブロック、ならびに関連する予測モードおよび残差係数を符号化するように動作する。プロセッサ205における制御は、ステップ1370から最後の領域テストステップ1380に進む。
【0145】
最後の領域テストステップ1380において、プロセッサ205は、ステップ1360で選択された選択領域がステップ1350で実行されるように、分割モード分割から得られた領域の最後の1つかどうかをテストする。領域が最後の領域でない場合(ステップ1380で「NO」)、プロセッサ205における制御はステップ1380からステップ1360に進み、分割の領域を進み続け、そわない場合、ステップ1380は「YES」を返し、方法1300は終了し、プロセッサ205における制御は、方法1300の親呼び出しに進む。
【0146】
ルマ分割を実行するステップ13100では、ステップ1310で符号化されたような分割モードがプロセッサ205のみによってルマチャネルで実行される。その結果、符号化ツリーの現在のノードは、分割モードに従って複数のルマCBに分割される。クロマCBのペア、すなわち、クロマチャネル当たり1つのクロマCBのみが生成される。結果として得られる各ルマCBは、クロマCBのペアと部分的に重なり(並置され)、集合的に、結果として得られるルマCBは、クロマCBのペアの領域と完全に重なる。集合ルマCBは、クロマCBのペアの領域を正確にカバーする。また、各ルマCB及びクロマCBの最小面積は、最小サイズ、例えば16サンプルである。
【0147】
ステップ13100および1350はそれぞれ、クロマチャネルCbおよびCrのためのクロマ符号化ブロックのサイズを決定するように動作する。ステップ1350では、ステップ1310で決定された分割モードに基づいて、クロマチャネルのクロマ符号化ブロックサイズが決定される。ステップ13100において、クロマチャネルのクロマ符号化ブロックサイズは、所定の最小クロマブロックサイズに基づいて決定される。上述したように、ステップ1350は、符号化ツリーユニットに対して禁止されているクロマ分割に基づいて実施される。図10の規則セット1020に示されるように、許容可能な分割、したがってクロマ符号化ブロックのサイズは、ステップ1105で判定されたクロマフォーマットに基づいて決定される。
【0148】
プロセッサ205内の制御は、ステップ13100からルマCBを選択するステップ13110に進む。
【0149】
ルマCBを選択するステップ13110において、プロセッサ205は、ステップ13100から得られたCBの次のルマCBを選択する。方法13100は最初に、第1のCB、すなわち、ルマ分割から生じるCBの左上ルマCBを選択する。ステップ13110の後続の起動時に、各「次の」ルマCBは、ステップ13100から得られるルマCBに渡るZオーダスキャンに従って選択される。プロセッサ205における制御は、ステップ13110からルマCBを符号化するステップ13120に進む。
【0150】
ルマCBを符号化するステップ13120において、エントロピーエンコーダ338は、プロセッサ205の実行下で、選択されたルマCBをビットストリーム115に符号化する。一般的に、予測モードと残差係数は、選択されたルマCBに対して符号化される。ルマCBのために符号化された予測モードは、インター予測またはイントラ予測を使用することができる。例えば、「cu_skip_flag」は残差なしでのインター予測の使用を示すために符号化され、さもなければ、「pred_mode_flag」および任意選択で「pred_mode_ibc_flag」は、それぞれ任意選択の残差係数をもつイントラ予測、インター予測、またはブロック内コピーの使用を示すために符号化される。残差が存在してもよい場合、「cu_cbf」フラグはCBの任意のTBにおける少なくとも1つの有意な(非ゼロの)残差係数の存在を示す。CBがインター予測を使用するように指示される場合、関連する動きベクトルは、ルマCBのみに適用可能である。すなわち、動きベクトルは、部分的に並置されたクロマCBに関連するPBを生成するためにも適用されない。CBがブロック内コピーを使用するように指示されると、関連するブロックベクトルは、ルマCBのみに関連付けられ、部分的に並置されたクロマCBには関連付けられない。プロセッサ205における制御は、ステップ13120から最後のルマCBテストステップ13130に進む。
【0151】
最後のルマCBテストステップ13130で、プロセッサ205は、ステップ13110で選択されたルマCBがステップ13100で実行された分割のルマCBのZ順反復に従って最後のルマCBであるかどうかをテストする。選択されたルマCBが最後のものでない場合(ステップ13130で「NO」)、プロセッサ205の制御はステップ13130からステップ13120に進む。そわない場合、ステップ13130は「YES」に戻り、プロセッサ205の制御は、クロマイントラ予測モードを決定するステップ13140に進む。
【0152】
クロマイントラ予測モードを決定する13140では、ビデオエンコーダ114がプロセッサ205の実行下で、ステップ13100のルマCBと一緒に配置されたクロマCBのペアに対するイントラ予測モードを決定する。ステップ13140は、イントラ予測を使用してクロマブロックが符号化されることを効果的に決定する。クロマCBによって占有される領域が、ルマチャネルにおいて複数のルマCBにさらに分割されるかどうかの判定が行われる。チャネルに対するクロマブロックのサイズは、ステップ1350の動作によって決定される所定の最小値(例えば16サンプル)である。ステップ13120において、対応するルマCBがインター予測を使用して符号化された場合であっても、クロマCBのペアに対するイントラ予測モードが決定される。1つの構成では、DCイントラ予測のような単一の予測モードが各クロマCBに適用される。単一予測モードの使用は、クロマ分割の禁止によってモードが決定されることを可能にし(ステップ1340における「YES」の結果)、複数の可能なモードのうちのどの1つのモードが使用されるべきかを決定するための追加の探索を必要としない。さらに、ビットストリーム115はこの場合、追加のシグナリングを必要としない、すなわち、追加の「intra_chroma_pred_mode」シンタックス要素を符号化する必要がない。しかし、構成はクロマ分割が禁止されているとき(ステップ1340で「YES」)、ビットストリーム115に「intra_chroma_pred_mode」シンタックス要素を含めることによって、いくつかの可能なイントラ予測モードのうちの1つのイントラ予測モードをシグナリングすることによって、より高い圧縮性能を達成することができる。ビデオエンコーダ114は、どのイントラ予測モードを使用するかを決定する。イントラ予測モードは、一般に歪みと比較して符号化コストの考慮に従って決定される。しかしながら、一般に、このようなクロマCBに対して単一のイントラ予測モードを使用する場合と比較して、より高い圧縮性能が得られる。プロセッサ205における制御は、ステップ13140からクロマCBを符号化するステップ13150に進む。
【0153】
クロマCBを符号化するステップ13150において、エントロピーエンコーダ338はプロセッサ205の実行下で、複数のイントラ予測モードが使用可能であるときに、「intra_chroma_pred_mode」シンタックス要素を使用して、クロマCBのイントラ予測モードをビットストリーム115に符号化する。1つのイントラ予測モード、例えばDCイントラ予測が可能であるとき、「intra_chroma_pred_mode」は、ビットストリーム115に符号化されない。クロマイントラ予測のための利用可能なイントラ予測モードがDC、平面、および以下の角度予測モードを含むことができる:水平、垂直、上右対角。利用可能なイントラ予測モードは「ダイレクトモード」(DM_CHROMA)も含むことができ、それによって、クロマイントラ予測モードは、共配置されたルマCBから、一般的にステップ13100から結果として生じるルマCBの最下位および最右から、取得される。「クロス構成要素線形モデル」イントラ予測が利用可能である場合、クロマCBは、ルマCBからのサンプルから予測され得る。図14のステップ14150を参照して説明したように、クロマCBに関連付けられたクロマTBの残差係数も、ビットストリーム115に符号化され得る。ステップ13150がプロセッサ205によって実行されると、方法1300が終了し、プロセッサ205内の制御が方法1300の親呼び出しに戻る。
【0154】
図14は、方法1200のステップ1220で実施される、ビデオビットストリームから画像フレームの符号化ツリーを復号する方法1400を示す。方法1400は、構成されたFPGA、ASIC、またはASSPなどの装置によって実施され得る。さらに、方法1400は、プロセッサ205の実行下でビデオデコーダ134によって実行されてもよい。そのようなものとして、方法1400は、コンピュータ可読記憶媒体および/またはメモリ206に記憶することができる。方法1400は、各ブロックがハードウェアの場合とソフトウェアの場合の両方で、実装の実現可能性にとって有利である16サンプルなどの最小面積よりも小さくないように、ビットストリーム133からブロックを復号することになる。ソフトウェアの場合、16サンプルの最小領域は、AVX-2及びSSE4のような典型的な単一命令多重データ(SIMD)命令セットと整列する。現在のCTUの符号化ツリーのルートノードで最初に起動される方法1400は、分割モードを復号するステップ1410で開始する。
【0155】
分割モードを復号するステップ1410において、エントロピーデコーダ420は、プロセッサ205の実行下で、符号化ツリーの現在のノードにおける分割モードをビットストリーム133に復号する。分割モードは、図5を参照して説明したように分割のうちの1つであり、分割モードを符号化する方法は、クロマチャネルにおいて分割が禁止されている場合であっても許可される、すなわち、ルマチャネルにおいて許可される分割の符号化のみを許可する。例えば、四分木分割512は、符号化ツリーのルートノードにおいて、または符号化ツリー内の他の四分木分割の下においてのみ可能である。4サンプル未満の幅または高さを有するルマCBをもたらす分割は禁止される。したがって、最小ルマCBサイズは16サンプルである。2分割および/または3分割の最大深さに関する他の制約もまた、有効であり得る。プロセッサ205における制御は、ステップ1410から分割無しテストステップ1420に進む。
【0156】
分割無しテストステップ1420において、プロセッサ205は現在の分割が「分割無し」(すなわち、510)であるかどうかをテストする。現在の分割が分割無し510である場合(1420で「YES」)、プロセッサ205の制御はステップ1420からCUを復号するステップ1430に進む。そわない場合、ステップ1420は「NO」を返し、プロセッサ205の制御はクロマ分割禁止テストステップ1440に進む。
【0157】
CUを復号するステップ1430において、エントロピーデコーダ420は、プロセッサ205の実行下で、CUの予測モード及びビットストリーム115のCUの残差係数を復号する。ステップ1430は、エントロピーデコーダ420によってビットストリームから決定された残差係数および予測モードを使用して、符号化ユニットを復号するように動作する。ステップ1430が符号化ツリーの各リーフノードで到達すると、方法1400はステップ1430が完了すると終了し、符号化ツリー探索における親呼び出しに戻る。符号化ツリーのすべてのノードがトラバースされると、CTU全体がビットストリーム133から復号され、制御は方法1200に戻り、画像フレーム内の次のCTUに進む。
【0158】
クロマ分割禁止テストステップ1440において、プロセッサ205は図10のクロマ領域1020分割規則セットに従って、ステップ1410のように、符号化ツリー内の現在のノードに対する分割がクロマチャネルに適用されることを許可されているかどうかを判定する。ステップ1440は、方法1300のステップ1340と同様に、分割テストが禁止されているかどうかを判定する。ステップ1440の動作は、禁止ブロックサイズの発生を防止する。クロマ領域が既に最小サイズ、例えば16のクロマサンプルにある場合、結果として得られる領域が許容最小値よりも小さいので、任意のタイプのさらなる分割は許容されない。クロマ領域サイズが32サンプルであり、対応する分割が(水平または垂直3分割であるかにかかわらず)3分割である場合、領域8クロマサンプルのクロマブロックを回避するために、さらなる分割も許可されない。分割が禁止されていない場合(すなわち、分割が許可されている場合)、ステップ1450は「NO」を返し、プロセッサ205の制御はステップ1440からルマおよびクロマ分割を実行するステップ1450に進む。そわない場合、分割が禁止されている場合(ステップ1450で「YES」)、プロセッサ205の制御はクロマイントラ予測モードを決定するステップ14100に進む。
【0159】
ルマおよびクロマ分割を実行するステップ1450において、プロセッサ205は、分割を適用して、符号化ツリーの現在のノードに関連する現在の領域を、符号化ツリーのサブノードに関連するサブ領域に分割する。分割は、図5および図6に関連して説明したように適用される。
【0160】
ステップ14100および1450はそれぞれ、クロマチャネルCbおよびCrのためのクロマ符号化ブロックのサイズを決定するように動作する。ステップ1450では、ステップ1410で復号された分割モードに基づいて、クロマチャネルのクロマ符号化ブロックサイズが決定される。ステップ14100において、クロマチャネルのクロマ符号化ブロックサイズは、所定の最小クロマブロックサイズに基づいて決定される。上述のように、ステップ1450は、16の最小クロマCBサイズ(およびルマ領域128サンプルの3分割の場合には32)に対応する、符号化ツリーユニットに対して禁止されているクロマ分割に基づいて実施される。図10の規則セット1020に示されるように、許容可能な分割、したがってクロマ符号化ブロックのサイズは、ステップ1205で判定されたクロマフォーマットに基づいて決定される。
【0161】
プロセッサ205内の制御は、ステップ1450から領域選択ステップ1460に進む。
【0162】
領域選択ステップ1460において、プロセッサ205は、領域のZオーダスキャンに従って、ステップ1450から生じるサブ領域の1つを選択する。ステップ1460は、後続の反復でサブ領域を通る進行選択を操作する。プロセッサ205内の制御は、ステップ1460から符号化ツリーを復号するステップ1470に進む。
【0163】
符号化ツリーを復号するステップ1470において、プロセッサ205は、ステップ1460の動作の結果として生じる選択された領域に対して、方法1400を再帰的に起動する。ステップ1470はさらに、ビットストリームから決定された残差係数および予測モードを使用して、符号化ツリーの各領域を復号するように動作する。プロセッサ205における制御は、ステップ1470から最後の領域テストステップ1480に進む。
【0164】
最後の領域テストステップ1480で、プロセッサ205は、ステップ1460の最後の反復で事前選択されたように、選択された領域が、ステップ1450で実施された分割モード分割から生じる領域の最後の1つかどうかをテストする。領域が最後の領域でない場合(ステップ1480で「NO」)、プロセッサ205の制御は、ステップ1480からステップ1460に進み、分割の領域を進み続ける。そわない場合、ステップ1480は「YES」を返し、方法1400は終了し、プロセッサ205の制御は方法1400の親呼出しに進む。
【0165】
ルマ分割を実行するステップ14100では、ステップ1410で符号化されたような分割モードがプロセッサ205のみによってルマチャネルで実行される。その結果、符号化ツリーの現在のノードは、分割モードに従って複数のルマCBに分割される。ステップ14100は、クロマCBのペア、すなわち、クロマチャネル当たり1つのクロマCBのみを生成するように動作する。結果として得られる各ルマCBは、クロマCBのペアと部分的に重なり(少なくとも部分的に一緒に配置され)、集合的に、ルマCBは、クロマCBのペアと完全に重なる。また、各ルマCBおよびクロマCBの最小面積は16サンプルである。プロセッサ205内の制御は、ステップ14100からルマCBを選択するステップ14110に進む。
【0166】
ルマCBを選択するステップ14110において、プロセッサ205は、ステップ14100から得られたCBの次のルマCBを選択する。次のルマCBの選択は、第1のCB、すなわちルマ分割から生じるCBの左上のルマCBから開始する。ステップ14110の後続の呼び出し時に、各「次の」ルマCBが、ステップ14100から得られるルマCBにわたるZオーダースキャンに従って選択される。プロセッサ205内の制御は、ステップ14110からルマCBを復号するステップ14120に進む。
【0167】
ルマCBを復号するステップ14120において、エントロピーデコーダ420は、プロセッサ205の実行下で、選択されたルマCBをビットストリーム115に復号する。一般に、予測モードおよび残差は、選択されたルマCBについて復号される。例えば、「cu_skip_flag」は残差なしでのインター予測の使用を示すために復号され、さもなければ「pred_mode_flag」および任意選択で「pred_mode_ibc_flag」はそれぞれ任意選択の残差係数をもつイントラ予測、インター予測、またはブロック内コピーの使用を示すために復号される。残差が存在する可能性がある場合、「cu_cbf」フラグはCBの任意のTBにおける少なくとも1つの有意な(非ゼロの)残差係数の存在を示す。CBがインター予測を使用するように指示される場合、関連する動きベクトルはルマCBのみに適用可能であり、すなわち、動きベクトルは、部分的に並置されたクロマCBに関連するPBを生成するためにも適用されない。CBがブロック内コピーを使用するように指示されると、関連するブロックベクトルは、ルマCBのみに関連付けられ、部分的に並置されたクロマCBには関連付けられない。プロセッサ205における制御は、ステップ14120から最後のルマCBをテストするステップ14130に進む。
【0168】
最後のルマCBをテストするステップ14130で、プロセッサ205は、ステップ14110で選択されたルマCBがステップ14100で実行された分割のルマCBのZオーダー反復に従って最後のルマCBであるかどうかをテストする。選択されたルマCBが最後のものでない場合、プロセッサ205内の制御は、ステップ14130からステップ14110に進む。そわない場合には、プロセッサ205における制御は、クロマイントラ予測モードを決定するステップ14140に進む。
【0169】
クロマイントラ予測モードを決定する14140では、ビデオデコーダ134が、プロセッサ205の実行下で、ステップ14100のルマCBと一緒に配置されたクロマCBのペアに対するイントラ予測モードを決定する。ステップ14140は、ステップ1440の動作によって決定されるように、クロマブロックがルマのための符号化ツリーを分割することが行われている間にクロマのための符号化ツリーを分割することの停止の結果である場合、イントラ予測を使用してクロマブロックが符号化されており、したがって、イントラ予測を使用して復号されるべきであることを効果的に決定する。ステップ14120において、対応するルマCBがインター予測を使用して復号された場合であっても、クロマCBのペアに対するイントラ予測モードが決定される。1つの構成では、DCイントラ予測のような単一の予測モードが各クロマCBに適用される。単一予測モードの使用は、クロマ分割の禁止によってモードが決定されることを可能にし(ステップ1440における「YES」の結果)、複数の可能なモードのうちのどの1つのモードが使用されるべきかを決定するための追加の探索を必要としない。さらに、ビットストリーム134はこの場合、追加のシグナリングを必要とせず、すなわち、追加の「intra_chroma_pred_mode」シンタックス要素を符号化する必要がない。しかし、構成は、クロマ分割が禁止されているとき(ステップ1440で「YES」)、「intra_chroma_pred_mode」シンタックス要素をビットストリーム134に含めることによって、いくつかの可能なイントラ予測モードのうち1つのイントラ予測モードをシグナリングすることによって、より高い圧縮性能を達成することができる。ビデオデコーダ134は、エントロピーデコーダ420を使用して、ビットストリーム134から「intra_chroma_pred_mode」シンタックス要素を復号するために、使用されるイントラ予測モードを決定する必要がある。プロセッサ205における制御は、ステップ14140からクロマCBを復号するステップ14150に進む。
【0170】
クロマCBを復号するステップ14150において、エントロピーデコーダ420は、プロセッサ205の実行下で、一般に、復号された「intra_chroma_pred_mode」シンタックス要素に従って、ビットストリーム420からのクロマCBのイントラ予測モードを決定する。「intra_chroma_pred_mode」の復号は、複数のイントラ予測モードが利用可能な場合に実行される。1つのイントラ予測モード、例えばDCイントラ予測のみが利用可能である場合、モードは、ビットストリーム133から追加のシンタックス要素を復号することなく推論される。
【0171】
クロマイントラ予測のために利用可能なイントラ予測モードは、DC、平面、以下の角度予測モードを含み得る:水平、垂直、上右対角。利用可能なイントラ予測モードはまた、「直接モード」(DM_CHROMA)を含むことができ、それによって、クロマイントラ予測モードは、ステップ14100から結果として生じるルマCBの一般的に最下位および最右位で並置されたルマCBから取得される。「クロス構成要素線形モデル」イントラ予測が利用可能である場合、クロマCBは、ルマCBからのサンプルから予測され得る。クロマCBのペアについて、「cu_cbf」フラグは、クロマCBのペアのいずれか1つにおける少なくとも1つの有意な残差係数の存在をシグナリングする。少なくとも1つの有意な残差係数がクロマCBのペアのいずれか1つに存在する場合、「tu_cbf_cb」および「tu_cbf_cr」はそれぞれ、CbおよびCrチャネルのクロマCBにおける少なくとも1つの有意な係数の存在をシグナリングする。少なくとも1つの有意な残差係数を有するクロマCBについて、シンタックス要素の「residual_coding」シーケンスがそれぞれのクロマCBの残差係数を決定するために復号される。残差符号化シンタックスは、後方対角スキャンに従って、最後の有意な係数位置から左上(「DC」)係数位置に変換ブロックをポピュレートする値のシーケンスとして残差係数を符号化する。後方対角スキャンは、一般にサイズ4×4であるが、サイズ2×2、2×4、2×8、8×2、4×2も可能な「サブブロック」(または「係数グループ」)のシーケンスとして変換ブロックのスキャンを実行する。各係数グループ内のスキャンは、後方対角方向にあり、1つのサブブロックから次のサブブロックへのスキャンも後方対角方向にある。ステップ14150がプロセッサ205によって実行されると、方法1400が終了し、プロセッサ205内の制御が方法1400の親呼び出しに戻る。
【0172】
方法1300および1400の符号化ツリーアプローチは、16サンプルの最小ブロック領域が4:2:0クロマフォーマットビデオデータに対して維持され、ソフトウェアおよびハードウェアの両方における高スループット実装を容易にする。さらに、小さいCBサイズに対するルマCBに対するインター予測の制限は、動き補償されたクロマCBを生成するためにサンプルをフェッチをもする必要性を回避することによって、動き補償メモリ帯域幅に対するこの最悪の場合のメモリ帯域幅を低減する。特に、最小クロマCBサイズが2×2であり、クロマCBのサブサンプル補間のためのフィルタサポートを提供するために追加のサンプルが必要とされる場合、小さいブロックサイズのためにルマチャネルにおいてインター予測を実行するだけと比較して、メモリ帯域幅の実質的な増加が見られる。動き補償の符号化利得は、実質的にルマチャネル内に現れ、したがって、小さなブロックも動き補償されることから省略することは比較的わずかな符号化性能の影響のためにメモリ帯域幅の低減を達成する。さらに、メモリ帯域幅の低減は、4×4ルマCBに対して動き補償を実行し、結果として得られる符号化利得を達成する実現可能性に寄与する。
【0173】
ビデオエンコーダ114およびビデオデコーダ134の1つの構成では、2つ以上のルマ分割が、符号化ツリーのクロマ分割が終了する点から符号化ツリー内で発生することができる。例えば、8×16ルマ領域は、クロマチャネルにおいて分割されず、4×8クロマCBのペアをもたらす。ルマチャネルにおいて、8×16ルマ領域は最初に、水平3分割で分割され、次に、結果として生じるルマCBのうちの1つがさらに分割される。例えば、結果として得られる8×4ルマCBは、2つの4×4ルマCBに垂直に2分割される。符号化ツリーのクロマ分割が終了する点から符号化ツリーにおいて2つ以上のルマ分割を有する構成は、クロマ分割禁止領域内のビデオエンコーダ114およびビデオデコーダ134のそれぞれにおける方法1300および1400を再起動し、後続の呼出しではそれ以上のクロマCBは必要とされないという修正を伴う。クロマCBのペアが作成される方法1300および1400の呼び出しでは、クロマ領域全体が作成されたクロマCBによってカバーされるので、方法1300および1400の再帰的呼び出しは追加のクロマCBを作成する必要がない。
【0174】
図15A~15Eは、様々なサイズのブロックを変換するためのNSSTの適用を示し、変換ブロックの領域は、適用される特定の二次変換カーネルに起因するいくつかの変換ブロックサイズについてゼロ化された係数を含む。ゼロ化された係数は、サブブロック全体のサブブロックの一部であってもよい。NSSTの適用は、図15A~15Eにおいて順方向に示されており、すなわち、一次順方向変換が最初に適用され、続いて二次順方向変換が適用される。NSSTの適用は、変換ブロックの左上の8×8領域であり、変換ブロックの寸法が8×8より小さい場合には、さらに制限される。さらに、4×4NSSTカーネルは、4×8および8×4変換ブロック内でタイル状に適用される。一次および二次順方向変換の適用は、それぞれモジュール326および330の動作と一致する。逆順序は逆変換、すなわち、ビデオエンコーダ114内のモジュール34および348、ならびにビデオデコーダ134内のモジュール436および444に使用される。
【0175】
図15Aは、変換ブロックサイズの集合1510を示す。集合1510は、4×4ブロック残差係数15100を含み、そこから4×4一次変換を実行することによって、4×4一次係数15110が得られる。4×4変換ブロックの場合、16個の係数は、8×16カーネルを用いた二次変換によって変換され、8個の二次係数15120が得られる。8つの二次係数は、対角スキャンオーダーを使用して4x4変換ブロックにパックされ、対角スキャンオーダーの変換ブロック内の残りの8つの位置は0に初期化される。集合1510は、残差係数15200の8×4ブロックを含む。8×4残差15200は、8×4一次係数15210を生成するために一次変換される。16×16カーネルが二次変換に使用され、8×4個の一次係数内の4×4個のサブブロックとして配置された2セットの16個の係数に適用され、8×4個の二次変換係数15220が得られる。係数15220は、2つの4x4サブブロック、15230(二次係数)および15240(一次係数)を含む。集合1510は、残差係数15300の4×8ブロックを含む。4×8残差15300は、4×8一次係数15310を生成するために一次変換される。16×16カーネルが二次変換のために使用され、4×8個の一次係数内の4×4個のサブブロックとして配置された2セットの16個の係数に適用され、4×8個の二次変換係数15320が得られる。2次変換係数15320は、2つの4x4サブブロック、すなわち、15330および15340を含む。
【0176】
図15Bは、サイズ16×4および4×16を有する変換ブロックサイズの集合1520を示す。集合1520は、残差係数15400の16x4ブロックを含み、そこから16x4の一次係数15410が、一次変換を実行することによって生成される。最終係数15420の16×4ブロック(またはセット)は、4×4二次変換係数15430および15440の2つのサブブロックを含み、それらの各々は、一次係数15410の左端の2つの4×4サブブロック上で16点NSSTを実行することによって生成される。係数15420の最終ブロックは、8×4の一次係数15450を含み、これは、一次係数15410の右半分の直接コピーである。また、集合1520は、残差係数15500の4x16ブロックを含み、そこから、一次変換を実行することによって、4x16の一次係数15510が生成される。4×16の最終残差係数15520のブロックは、4×4の二次変換係数15530および15540の2つのサブブロックを含み、それらの各々は、一次係数15510の最上位の2つの4×4サブブロック上で16点NSSTを実行することによって生成される。残差係数15420の最終ブロックは、一次係数15510の下半分の直接コピーである4x8一次係数15550を含む。
【0177】
図15Cは、8×8である1つの変換ブロックサイズの集合1530を示す。集合1530は、残差係数15600の8x8ブロックを含み、そこから8x8一次係数15610が一次変換を実行することによって生成される。2次変換係数15620は、8×64カーネルの適用によって生成され、その結果、8個の係数15630が得られる。8つの二次係数15630は、対角スキャンオーダーに従って、二次変換係数15620の左上4x4サブブロックに写像される。二次変換係数15620の3つの他のサブブロックは、二次変換が実行されるときにゼロ化される。
【0178】
図15Dは、サイズ8×16および16×8の変換ブロックの集合1540を示す。集合1540は、残差係数15700の8x16ブロックを含み、そこから、8x16の一次係数15710が、一次変換を実行することによって生成される。最終係数15720の8x16ブロックは、一次係数15710の最上位8x8領域に対して64点NSSTを実行することによって生成される二次変換係数15730を含む。二次変換係数15730は、二次係数15720の8x8サブブロックの上左端4x4ブロックを形成する。8×8サブブロックの残りの3つの4×4サブブロックはゼロにされる。ブロック最終係数15720は、一次係数15710の下半分の直接コピーである8x8一次係数15740を含む。
【0179】
集合1540は、残差係数15800の16x8ブロックを含み、そこから16x8一次係数15810が、一次変換を実行することによって生成される。最終係数15820の16x8ブロックは、一次係数15810の左端半分で64点NSSTを実行することによって生成される、8x8二次変換係数15830のサブブロックを含む。二次変換係数15830は、二次係数15820の8x8サブブロックの上左端4x4ブロックを形成する。8×8サブブロックの他の3つの4×4サブブロックは、ゼロにされる。最終係数15820のブロックは、8×8個の一次係数15840を含み、これらは、一次係数15810の最右半分の直接コピーである。例示的な集合1540は、サイズ8×16および16×8のブロックを含むが、8×16および16×8に関して説明された挙動は、幅または高さのいずれかが8でより大きいサイズを有するTBに適用される。
【0180】
図15Eは、16×16である1つの変換サイズの集合1550を示す。集合1550の例は、VVCに利用可能なより大きな変換サイズ、例えばサイズ16x32、16x64、32x16、32x32、32x64、64x16、64x32、および64x64に適用可能である。集合1550は、残差係数15900の16x16ブロックを含み、そこから、16x16の一次係数15910が、順方向一次変換を実行することによって生成される。二次変換係数15930は、一次係数15910の左上8x8係数に64点NSSTを実行することによって生成される。最終的な係数15920のブロックは、結果として得られる16個の二次係数15930を含み、15920の左上の4×4サブブロックを占有する。15920の左上の8×8係数の他の3つのサブブロックは、ゼロにされる。残りの192個の係数(15920の左上象限以外の3つの8×8象限)は、サブブロック15940、15950、および15960として示される。サブブロック15940、15950および15960は、15910の対応する係数からコピーされる。
【0181】
図15A-15Eに示すように、特定の変換ブロックサイズに対して、変換ブロックの部分は二次変換が適用されるときに、ゼロ出力係数を含んでいる。二次変換の適用によって典型的にゼロ化される領域に非ゼロ係数が存在することは、二次変換が適用されず、代わりに一次変換のみが実行されるようにバイパスされたという指示をビデオデコーダ134に形成する。どの(もしあれば)二次変換が適用されるべきかのシグナリングは、図16を参照して説明される。
【0182】
図16は例えば、ステップ1430で復号されたような、ビデオビットストリーム133から復号された残差係数のブロックに対して分離不可能な二次変換(NSST)を実行する方法1600を示す。方法1600は例えば、ステップ1430、1470、または14120のいくつかの実装で実行することができる。方法1600は、構成されたFPGA、ASIC、またはASSPなどの装置によって実施され得る。さらに、方法1600は、プロセッサ205の実行下でビデオデコーダ134によって実行されてもよい。そのようなものとして、方法1600は、コンピュータ可読記憶媒体および/またはメモリ206に記憶することができる。方法1600は、復号されたシンタックス要素(「nsst_index」)の構文解析においてイントラ予測モードへの依存性を導入することなく、(適用可能であれば)TBのためのNSSTモードを決定することになる。イントラ予測モードの決定は、好ましくはエントロピーデコーダ420の算術デコーダが特に比較的小さいブロックサイズについて、関連するシンタックス要素を復号した後に実行される。方法1600は、ビデオデコーダ134に関して動作を説明するが、ビデオエンコーダ114は対応するステップを実行して、方法1600を実行するビデオデコーダ134による復号に適したビットストリーム115を生成する。方法1600は、CU内のルマTBに対して呼び出され、残差を復号するステップ1610で開始する。
【0183】
残差を復号するステップ1610において、エントロピーデコーダ420は、プロセッサ205の実行下で、ビデオビットストリーム133から変換ブロックの残差係数を復号する。残差係数は、4×4サブブロックに配置された、後方対角スキャンに従って変換ブロックの2次元アレイに割り当てられる値のシーケンスとして復号される。4×4サブブロックは、後方斜め方向にスキャンされる。シーケンス内で遭遇する最初の値は、「最後の有意係数」、すなわち、変換ブロックに対して定義されたスキャン経路に沿って非ゼロ値(「有意」)を有するほぼ最後の係数である。シーケンス内の後続の復号された残差係数の各々は、最後の有意係数位置から「DC」係数(TB内の左上の係数)に戻るスキャンに従って、TB内の位置に割り当てられる。「符号化サブブロックフラグ」(または「係数グループ」フラグ)は、変換ブロック内の残差係数の4×4サブブロックグループごとにシグナリングされる。サブブロック内のすべての残差係数がゼロである場合、符号化サブブロックフラグは、サブブロック内のスキャンがスキップされ、関連する係数がゼロに設定されることをシグナリングする。プロセッサ205における制御は、ステップ1610からNSST利用可能性テストステップ1620に進む。
【0184】
NSST利用可能性テストステップ1620において、プロセッサ205は、逆量子化係数342に適用するために二次変換(NSST)が利用可能であるかどうかをテストする。NSSTはルマCBの予測モードがイントラ予測であり、TBがルマチャネルに適用される場合にのみ利用可能である。したがって、予測モードがイントラ予測でないか、またはCBがクロマチャネル用である場合、ステップ1620は「NO」を返し、方法1600は終了し、プロセッサ205は図4を参照して説明したように一次逆変換を実行することによって再開する。NSSTが利用可能である場合(ステップ1620で「YES」)、プロセッサ205の制御は、ステップ1620から残差係数カウントテストステップ1630に進む。
【0185】
図15A-15Eを参照して説明したように、特定のTBサイズの場合、二次変換を適用すると、変換ブロック係数の一部がゼロ化される。これは、順方向二次変換が入力係数よりも少ない出力係数を生成するためである。逆二次変換は、順方向のこのような演算の損失性が与えられたとき、可能な範囲で、二次順方向変換によって実行されるコンパクションを逆にする。復号されたTBにおける「ゼロ化された」領域の存在は、「nsst_index」が復号されることを引き起こし、二次変換が使用されたか否かをシグナリングする。領域内に有意な係数が存在することは、二次変換が適用されないことを示す。
【0186】
残差係数カウントテストステップ1630において、プロセッサ205は、ステップ1610からの復号された残差係数がNSSTの適用と互換性があるかどうかを判定する。すなわち、ステップ1630は、特定のサブブロックが有意でない残差係数のみを含むかどうかをテストする。図15C~15Eにおいて、「0」とマークされたサブブロックは、二次変換の適用から生じるゼロ化された領域を示す。図15Cにおいて、左上のサブブロックは8つの二次係数(DC位置から以降)のみを含み、サブブロックの最終的な8つの係数はゼロ出力される。左上のサブブロックが8個または16個の二次係数を含むかどうかにかかわらず、二次変換の潜在的な適用を決定するためのゼロ化チェックは、サブブロック全体に対して実行される。ゼロ化されたチェックは、サブブロック全体に対して、すなわち、4×4サブブロックの粒度に対して実行される。図15Cの例では、ゼロ化されたチェックが15720の上半分に「0」とマークされたサブブロック(NSSTの適用によってゼロ化されると予想されるブロック)の各々に対してサブブロックレベル全体に対して実行されるが、上左端のサブブロック15730(NSSTの適用後に二次係数を含むと予想されるブロック)に対しては実行されない。サブブロック全体に対してチェックを実行することにより、サブブロック内の個々の係数をテストする代わりに、係数グループフラグをテストすることが可能になる。テストされたサブブロック内に有意な係数が見つかった(すなわち、サブブロックの対応する係数グループフラグが1である)場合、NSSTはビデオエンコーダ114で実行されておらず、したがってビデオデコーダ134では実行されない。ステップ1630は「NO」を返し、方法1600は終了し、プロセッサ205は図4を参照して説明したように、一次変換を実行する。テストされたサブブロック内に有意な係数が見つからず、サブブロックの対応する係数グループフラグがゼロである場合、ステップ1630は「YES」を返し、プロセッサ205内の制御は、第1のコンテキストを選択するステップ1640に進む。
【0187】
第1のコンテキストを選択するステップ1640において、エントロピーデコーダ420は、プロセッサ205の実行下で、nsst_indexシンタックス要素を表現するために使用される切り捨てられた単項コードワードの第1番目のビンのコンテキストを選択する。この選択は、CBのイントラ予測モードを使用しない。したがって、intra_luma_mpm_flag、intra_luma_mpm_idx、またはintra_luma_remainderシンタックス要素のMPMリスト構築と解釈を実行する必要はない。第1番目のビンは、2つのコンテキストのいずれか1つを使用する。ブロックの一次変換タイプがDCT-2の場合、または変換がスキップされる場合は、第1番目のコンテキストが使用される。第2のコンテキストは、一次変換タイプがDCT-2ではなく、変換がスキップされない場合、すなわち、一次変換が水平方向および垂直方向にDST-7およびDCT-8の1D変換の組合せである場合に使用される。一次変換タイプは、方法1600の第1番目または第2番目のビンを復号する前に、「tu_mts_idx」シンタックス要素を復号することによって決定される。一次変換タイプは、それ以上の依存性を持たないtu_mts_idxから決定されるので、計算上比較的判別が困難ではない。プロセッサ205における制御は、ステップ1640から第1番目のビンを復号するステップ1650に進む。
【0188】
第1番目のビンを復号するステップ1650で、エントロピーデコーダ420は、プロセッサ205の実行下で、ステップ1640で選択されたコンテキストを使用して、ビットストリーム133からビンを復号する。復号されたビンは、「nsst_index」シンタックス要素を符号化した切り捨てられたunaryコードワードの第1番目のビンを形成する。プロセッサ205における制御は、ステップ1650からNSST適用テストステップ1660に進む。
【0189】
NSST適用テストステップ1660において、プロセッサは、ステップ1650において復号されたビンをテストする。ゼロの値は二次変換がバイパスされる(NSSTが適用されない)ことを示し、ステップ1660で「NO」が返されることになる。次に、方法1600は図4を参照して説明したように、一次変換を実行することによってプロセッサ205が再開し、終了する。1の値は二次変換が適用されることを示し、プロセッサ205における制御は、ステップ1660から第2番目のビンを復号するステップ1680に進む(ステップ1660で「YES」)。
【0190】
第2番目のビンを復号するステップ1680において、エントロピーデコーダ420は、プロセッサ205の実行下で、ビットストリーム133(「第2番目のビン」)からバイパス符号化されたビンを復号する。バイパス符号化されたビンは、2つの可能なNSSTカーネルのうちのどの1つが変換ブロックに適用されるべきかをシグナリングし、切り捨てられた単項nsst_indexシンタックス要素の第2番目のビンを形成する。コンテキスト符号化ビンの代わりにバイパス符号化ビンを第2番目のビンに使用すると、符号化パフォーマンスに影響がなくなり、コンテキストの格納に関連したメモリが節約されることが判明した。コンテキスト符号化ビンの代わりにバイパス符号化ビンを第2番目のビンに使用すると、使用可能な複数のコンテキストのうちどの1つを使用するのかを選択することに関連するロジックも回避される。本発明者らによる実験は、コンテキスト符号化ビンの代わりに第2番目のビンにバイパス符号化ビンを使用することに起因する符号化性能ペナルティを示さなかった。プロセッサ205における制御は、ステップ1680から逆二次変換を実行するステップ1690に進む。
【0191】
逆二次変換を実行するステップ1690において、逆二次変換モジュール436は、プロセッサ205の実行下で、エントロピーデコーダ420からの復号された残差係数に対して、選択されたNSSTカーネルを使用して逆二次変換を実行する。復号された残差係数に対する選択されたNSSTカーネルの適用は、係数440を生成するように動作する。ステップ1690が完了すると、方法1600は終了し、プロセッサ205は図4を参照して説明したように、逆一次変換444の適用を継続する。二次変換を実行する際、図15A~Eを参照して説明したように、変換されるTBの部分。
【0192】
方法1600は、エントロピーデコーダ420内のビン構文解析に間に合うように導出することが困難であり、コンテキストの過剰な使用を回避し、メモリを節約し、コンテキストモデリング計算を単純化する、イントラ予測モードへの依存性を回避するnsst_indexシグナリングを提供する。イントラ予測モードが第1番目のビンおよび算術的に符号化された第2番目のビンのコンテキストを決定するために使用される場合、図16を参照して説明したように、2つのコンテキストの代わりに、8つのコンテキストが使用される。
【0193】
方法1600の一構成では、第1番目のビンはバイパス符号化される。関連するコンテキストの欠如の結果として、ステップ1640は省略され、ステップ1650はバイパス符号化ビンを復号し、結果として、コンテキスト符号化ビンが少なくなり、関連するメモリ消費の節約のためにより高いスループットをもたらす。NSSTモードのための従来のバイナリゼーションに対する方法1600の利点を特徴付けるために、従来のバイナリゼーションがさらに説明される。従来のバイナリゼーションでは、第1番目のビンはまた、ブロックのイントラ予測モードがDCモードまたは平面モード対角度モードのいずれかであるかに依存するのであろう。ステップ1640を参照して説明したように、一次変換タイプへの依存性と組み合わせると、合計4つのコンテキストが必要になる。第1番目のビンに使用されるのと同じ方式を使用して第2番目のビンを算術コードするには、追加の4つのコンテキストが必要になり、その結果、合計8つのコンテキストが生成される。したがって、方法1600は、NSSTインデックスの従来のバイナリゼーションと比較して6つのコンテキストを節約し、算術符号化の代わりに第2番目のビンのためのバイパス符号化を使用することによってスループットを増加させる。
【0194】
産業上の利用可能性
記載される構成は、コンピュータ及びデータ処理産業に、特にビデオ及び画像信号のような信号の符号化、復号のためのディジタル信号処理に適用可能であり、高い圧縮効率を達成する。
【0195】
HEVCとは対照的に、VVCシステムは柔軟性を高めるために、ルマチャネルおよびクロマチャネルのための別個の符号化ツリーの使用を可能にする。しかしながら、上述したように、結果として生じる問題は、スループットに影響を及ぼすより小さなクロマブロックの使用により生じる可能性がある。本明細書で説明される構成は、各符号化ツリーユニットが処理されてスループット発行を回避するのを助けるときに、適切な規則を決定する。さらに、上述のように、上述の構成は、スループット発行を回避するための規則が与えられると、各符号化ツリーを記述するために使用されるコンテキスト符号化ビンの算術符号化の改善された効率および精度を提供することを支援することができる。
【0196】
上記は本発明のいくつかの実施形態のみを記載し、本発明の範囲および精神から逸脱することなく、本発明に修正および/または変更を加えることができ、実施形態は例示的であり、限定的ではない。
図1
図2A
図2B
図3
図4
図5
図6
図7A
図7B
図8A
図8B
図8C
図9
図10
図11
図12
図13
図14
図15A
図15B
図15C
図15D
図15E
図16