JP2022548990A - ベクトルクリッピングを用いるアフィンコーディング - Google Patents

ベクトルクリッピングを用いるアフィンコーディング Download PDF

Info

Publication number
JP2022548990A
JP2022548990A JP2022518301A JP2022518301A JP2022548990A JP 2022548990 A JP2022548990 A JP 2022548990A JP 2022518301 A JP2022518301 A JP 2022518301A JP 2022518301 A JP2022518301 A JP 2022518301A JP 2022548990 A JP2022548990 A JP 2022548990A
Authority
JP
Japan
Prior art keywords
motion vector
block
value
affine
current coding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022518301A
Other languages
English (en)
Other versions
JPWO2021062401A5 (ja
Inventor
ルサノフスキー、ドミトロ
カルチェビチ、マルタ
ジャン、ヤン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2022548990A publication Critical patent/JP2022548990A/ja
Publication of JPWO2021062401A5 publication Critical patent/JPWO2021062401A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/527Global motion vector estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/563Motion estimation with padding, i.e. with filling of non-object values in an arbitrarily shaped picture block or region for estimation purposes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

ビデオコーディングおよび圧縮のためのシステム、方法、およびコンピュータ可読記憶媒体について説明する。いくつかの例は、ビデオコーディングおよび圧縮のためのアフィンコーディングモードを含む。一例は、ビデオデータをコーディングするための装置であり、本装置は、メモリとメモリに結合された1つまたは複数のプロセッサとを備える。1つまたは複数のプロセッサは、ビデオデータから現在のコーディングブロックを取得することと、現在のコーディングブロックのための制御データを決定することと、制御データから1つまたは複数のアフィン動きベクトルクリッピングパラメータを決定することとを行うように構成される。1つまたは複数のプロセッサは、現在のコーディングブロックのサンプルを選択することと、現在のコーディングブロックのサンプルのためのアフィン動きベクトルを決定することと、クリッピングされたアフィン動きベクトルを生成するために1つまたは複数のアフィン動きベクトルクリッピングパラメータを使用してアフィン動きベクトルをクリッピングすることとをさらに行う。【選択図】図18B

Description

[0001]本出願は、ビデオコーディングおよび圧縮に関する。より詳細には、本出願は、ビデオコーディングおよび圧縮のためのアフィンコーディングモードに関する。
[0002]多くのデバイスおよびシステムは、ビデオデータが消費のために処理および出力されることを可能にする。デジタルビデオデータは、一般に、ビデオ消費者およびプロバイダの需要を満たすための大量のデータを含む。たとえば、ビデオデータの消費者は、高い品質、忠実度、解像度、フレームレートなどのビデオを望む。その結果、これらの需要を満たすために必要とされる大量のビデオデータは、ビデオデータを処理および記憶する通信ネットワークおよびデバイスに負担をかける。
[0003]様々なビデオコーディング技法が、ビデオデータを圧縮するために使用され得る。ビデオコーディング技法は、1つまたは複数のビデオコーディング規格に従って実施され得る。たとえば、ビデオコーディング規格は、高効率ビデオコーディング(HEVC)、アドバンストビデオコーディング(AVC)、ムービングピクチャエクスパーツグループ(MPEG)2パート2コーディング、VP9、Alliance of Open Media(AOMedia) Video 1(AV1)、エッセンシャルビデオコーディング(EVC)などを含む。ビデオコーディングは、概してビデオ画像またはシーケンス中に存在する冗長を利用する予測方法(たとえば、インター予測、イントラ予測など)を利用する。ビデオコーディング技法の重要な目標は、ビデオ品質に対する劣化を回避するかまたは最小限に抑えながら、より低いビットレートを使用する形式にビデオデータを圧縮することである。常に発展しつつあるビデオサービスが利用可能になるとともに、改善されたコーディング精度または効率をもつ符号化技法が必要とされる。
[0004]本明細書では、改善されたビデオ処理のためのシステムおよび方法について説明する。いくつかの例では、ビデオデータを効率的に符号化および復号するためにアフィンコーディングモードを使用するビデオコーディング技法について説明する。
[0005]1つの例示的な例では、ビデオデータをコーディングする方法について説明する。本方法は、ビデオデータから現在のコーディングブロックを取得することと、現在のコーディングブロックのための制御データを決定することと、制御データから1つまたは複数のアフィン動きベクトルクリッピングパラメータを決定することと、現在のコーディングブロックのサンプルを選択することと、現在のコーディングブロックのサンプルのためのアフィン動きベクトルを決定することと、クリッピングされたアフィン動きベクトルを生成するために1つまたは複数のアフィン動きベクトルクリッピングパラメータを使用してアフィン動きベクトルをクリッピングすることと、を備える。
[0006]別の例示的な例では、非一時的コンピュータ可読記憶媒体について説明する。非一時的コンピュータ可読記憶媒体は、1つまたは複数のプロセッサによって実行されたとき、1つまたは複数のプロセッサに、ビデオデータから現在のコーディングブロックを取得することと、現在のコーディングブロックのための制御データを決定することと、制御データから1つまたは複数のアフィン動きベクトルクリッピングパラメータを決定することと、現在のコーディングブロックのサンプルを選択することと、現在のコーディングブロックのサンプルのためのアフィン動きベクトルを決定することと、クリッピングされたアフィン動きベクトルを生成するために1つまたは複数のアフィン動きベクトルクリッピングパラメータを使用してアフィン動きベクトルをクリッピングすることと、を行わせる命令を備える。
[0007]別の例示的な例では、ビデオデータをコーディングするための別の装置について説明する。本装置は、ビデオデータから現在のコーディングブロックを取得するための手段と、現在のコーディングブロックのための制御データを決定するための手段と、制御データから1つまたは複数のアフィン動きベクトルクリッピングパラメータを決定するための手段と、現在のコーディングブロックのサンプルを選択するための手段と、現在のコーディングブロックのサンプルのためのアフィン動きベクトルを決定するための手段と、クリッピングされたアフィン動きベクトルを生成するために1つまたは複数のアフィン動きベクトルクリッピングパラメータを使用してアフィン動きベクトルをクリッピングするための手段と、を備える。
[0008]さらなる例示的な例では、ビデオデータをコーディングするための装置について説明する。本装置は、メモリと、メモリに結合された1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサは、ビデオデータから現在のコーディングブロックを取得することと、現在のコーディングブロックのための制御データを決定することと、制御データから1つまたは複数のアフィン動きベクトルクリッピングパラメータを決定することと、現在のコーディングブロックのサンプルを選択することと、現在のコーディングブロックのサンプルのためのアフィン動きベクトルを決定することと、クリッピングされたアフィン動きベクトルを生成するために1つまたは複数のアフィン動きベクトルクリッピングパラメータを使用してアフィン動きベクトルをクリッピングすることと、を行うように構成される。
[0009]いくつかの態様では、制御データは、フルサンプルユニット中での関連する水平座標と関連する垂直座標とを用いたロケーションと、現在のコーディングブロックの幅を指定する幅変数と、現在のコーディングブロックの高さを指定する高さ変数と、動きベクトルの水平変化と、動きベクトルの垂直変化と、ベーススケーリングされた動きベクトルとを備える。いくつかの例では、制御データは、サンプル中の現在のコーディングブロックに関連するピクチャの高さと、サンプル中のピクチャの幅とをさらに含むことができる。
[0010]いくつかの態様では、1つまたは複数のアフィン動きベクトルクリッピングパラメータは、水平最大変数と、水平最小変数と、垂直最大変数と、垂直最小変数とを備える。いくつかの態様では、水平最小変数は、水平最小ピクチャ値と水平最小動きベクトル値とから選択される最大値によって定義される。
[0011]いくつかの態様では、水平最小ピクチャ値は、関連する水平座標から決定される。いくつかの態様では、水平最小動きベクトル値は、中心動きベクトル値と、ビデオデータに関連する解像度値またはブロックエリアサイズに基づく値のアレイ(たとえば、現在のコーディングブロックの幅×高さ)と、現在のコーディングブロックの幅を指定する幅変数とから決定される。いくつかの態様では、中心動きベクトル値は、ベーススケーリングされた動きベクトルと、動きベクトルの水平変化と、幅変数と、高さ変数とから決定される。いくつかの態様では、ベーススケーリングされた動きベクトルは、現在のコーディングブロックの左上隅に対応し、制御点動きベクトル値から決定される。いくつかの態様では、垂直最大変数は、垂直最大ピクチャ値と垂直最大動きベクトル値とから選択される最小値によって定義される。
[0012]いくつかの態様では、垂直最大ピクチャ値は、ピクチャの高さと、関連する垂直座標と、高さ変数とから決定される。いくつかの態様では、垂直最大動きベクトル値は、中心動きベクトル値と、ビデオデータに関連する解像度値またはブロックエリアサイズに基づく値のアレイ(たとえば、現在のコーディングブロックの幅×高さ)と、現在のコーディングブロックの幅を指定する高さ変数とから決定される。
[0013]いくつかの態様では、例は、ビデオデータから複数の現在のコーディングブロックを連続的に取得することと、複数の現在のコーディングブロックのブロックのためにコーディングブロックごとにアフィン動きベクトルクリッピングパラメータのセットを決定することと、複数の現在のコーディングブロックのためのブロックごとのアフィン動きベクトルクリッピングパラメータのセットを使用して対応する参照ピクチャの部分をフェッチすることとを行う。
[0014]いくつかの態様では、例は、現在のコーディングブロックに関連する参照ピクチャを識別することと、1つまたは複数のアフィン動きベクトルクリッピングパラメータによって定義された参照ピクチャの部分を記憶することとを行う。いくつかの態様では、例は、クリッピングされたアフィン動きベクトルによって示される参照ピクチャからの参照ピクチャデータを使用して現在のコーディングブロックを処理することを行う。
[0015]いくつかの態様では、現在のコーディングブロックのサンプルのためのアフィン動きベクトルは、第1のベーススケーリングされた動きベクトル値と、動きベクトル値の第1の水平変化と、動きベクトル値の第1の垂直変化と、第2のベーススケーリングされた動きベクトル値と、動きベクトル値の第2の水平変化と、動きベクトル値の第2の垂直変化と、サンプルの水平座標と、サンプルの垂直座標とに従って決定される。いくつかのそのような態様では、制御データは、導出表からの値を備える。
[0016]いくつかの態様では、上記で説明された装置は、1つまたは複数のピクチャをキャプチャするためのカメラをもつモバイルデバイスを含むことができる。いくつかの態様では、上記で説明された装置は、1つまたは複数のピクチャを表示するためのディスプレイを含むことができる。本発明の概要は、請求される主題の主要なまたは本質的な特徴を識別するものではなく、請求される主題の範囲を決定するために独立して使用されるものでもない。本主題は、本特許の明細書全体、いずれかまたはすべての図面、および各請求項の適切な部分を参照することによって理解されたい。
[0017]上記のことは、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲、および添付の図面を参照すると、より明らかになろう。
[0018]様々な実装形態の例は、以下の図面を参照しながら以下で詳細に説明される。
[0019]いくつかの例による、符号化デバイスおよび復号デバイスを示すブロック図。 [0020]いくつかの例による、マージモードのための空間隣接動きベクトル候補を示す概念図。 [0021]いくつかの例による、高度動きベクトル予測(AMVP)モードのための空間隣接動きベクトル候補を示す概念図。 [0022]いくつかの例による、時間的動きベクトル予測子(TMVP)候補を示す概念図。 [0023]いくつかの例による、動きベクトルスケーリングを示す概念図。 [0024]いくつかの例による、履歴ベースの動きベクトル予測子(HMVP)表を示す図。 [0025]いくつかの例による、隣接しない空間マージ候補をフェッチすることを示す図。 [0026]いくつかの例による、MVP予測において利用される空間的および時間的ロケーションを示す概念図。 [0027]いくつかの例による、MVP予測において利用される空間的および時間的ロケーションの態様を示す概念図。 [0028]いくつかの例による、空間MVP(S-MVP)のための訪問順序を示す図。 [0029]いくつかの例による、空間的に反転されたパターン代替を示す図。 [0030]いくつかの例による、現在のブロックのための簡略化されたアフィン動きモデルを示す図。 [0031]いくつかの例による、ブロックのサブブロックの動きベクトルフィールドを示す図。 [0032]いくつかの例による、アフィンインター(AF_INTER)モードでの動きベクトル予測を示す図。 [0033]いくつかの例による、アフィンマージ(AF_MERGE)モードでの動きベクトル予測を示す図。 いくつかの例による、アフィンマージ(AF_MERGE)モードでの動きベクトル予測を示す図。 [0034]いくつかの例による、現在のブロックのためのアフィン動きモデルを示す図。 [0035]いくつかの例による、現在のブロックのための別のアフィン動きモデルを示す図。 [0036]いくつかの例による、現在のブロックと候補ブロックとを示す図。 [0037]いくつかの例による、現在のブロック、現在のブロックの制御点、および候補ブロックを示す図。 [0038]いくつかの例による、MPEG5 EVCにおけるアフィンモデルと空間近傍とを示す図。 [0039]いくつかの例による、アフィンモデルと空間近傍との態様を示す図。 [0040]いくつかの例による、アフィンモデルと空間近傍との態様を示す図。 [0041]いくつかの例による、しきい値を使用してクリッピングすることの態様を示す図。 [0042]いくつかの例による、しきい値を使用してクリッピングすることの態様を示す図。 [0043]いくつかの例による、しきい値を使用してクリッピングすることの態様を示す図。 [0044]本明細書で説明される例による、アフィンモデルを用いてコーディングすることのプロセスを示すフローチャート。 [0045]いくつかの例による、ビデオ符号化デバイスを示すブロック図。 [0046]いくつかの例による、ビデオ復号デバイスを示すブロック図。
[0047]本開示のいくつかの態様および実施形態が以下で提供される。当業者に明らかであるように、これらの態様および実施形態のうちのいくつかは独立して適用され得、それらのうちのいくつかは組み合わせて適用され得る。以下の説明では、説明の目的で、本出願の実施形態の完全な理解を与えるために具体的な詳細が記載される。ただし、様々な実施形態は、これらの具体的な詳細なしに実施され得ることが明らかであろう。図および説明は限定するものではない。
[0048]以下の説明は、例示的な実施形態のみを与えるものであり、本開示の範囲、適用性、または構成を限定するものではない。そうではなく、例示的な実施形態の以下の説明は、例示的な実施形態を実装することを可能にする説明を当業者に与える。添付の特許請求の範囲に記載されるように、本出願の趣旨および範囲から逸脱することなく、要素の機能および構成において様々な変更が行われ得ることを理解されたい。
[0049]上述のように、本明細書では、改善されたビデオ処理のための例について説明する。いくつかの例では、ビデオデータを効率的に符号化および復号するためにアフィンコーディングモードを使用するビデオコーディング技法について説明する。アフィンモデルは、ビデオ中のいくつかのタイプの画像動きに関連するフローパターン、詳細には、カメラの動き(たとえば、視点のまたはビデオストリームのための位置をキャプチャする動き)に関連するフローパターンを近似するために使用され得るモデルである。ビデオ処理システムは、アフィン動きモデルを使用してビデオをコーディングするように構成されるアフィンコーディングモードを含むことができる。ビデオコーディングのためのアフィンモードのさらなる詳細について以下で説明する。本明細書で説明される例は、アフィンコーディングモードにおけるメモリ帯域幅の使用を改善することによってビデオコーディングデバイスの動作を改善する動作および構造を含む。いくつかの例では、メモリ帯域幅の改善は、アフィンコーディングモードによって使用される動きベクトルをクリッピングすることによって生成され、これは、アフィンコーディングのために使用される可能な参照エリア(および、たとえば、関連データ)を制限することによってローカルバッファにおいて使用されるデータを低減することができる。
[0050]いくつかのシステムは、アフィンコーディングのためのフィルタサンプルをフェッチするために使用されるメモリアクセス動作の数を大幅に増加させることができるサンプルごとの動きベクトル生成を使用する。多数のフェッチ動作は、ローカルバッファが参照データに適応することが可能な場合にシステムによって扱われ得るが、各フェッチのための参照データが大きい(たとえば、復号ピクチャバッファのためのサイズなどのローカルバッファサイズを超える)場合、メモリ帯域幅の使用は、システムパフォーマンスを劣化させる可能性がある。参照ピクチャのアクセスに関連するメモリ帯域幅の使用を制限することによって、多数のフェッチ動作が、劣化したメモリ帯域幅のパフォーマンスなしに使用され、それによって、デバイス動作を改善し得る。本明細書で説明される例は、より大きいビデオコーディングシステムのコンテキスト内で、ビデオコーディングデバイスの部分としてそのような利益を与えることができる。
[0051]ビデオコーディングデバイスは、ビデオデータを効率的に符号化および復号するためのビデオ圧縮技法を実装する。ビデオ圧縮技法は、ビデオシーケンスに固有の冗長を低減または除去するために、空間予測(たとえば、イントラフレーム予測またはイントラ予測)、時間予測(たとえば、インターフレーム予測またはインター予測)、(ビデオデータの異なるレイヤにわたる)レイヤ間予測、および/または他の予測技法を含む、異なる予測モードを適用することを含み得る。ビデオエンコーダは、元のビデオシーケンスの各ピクチャを(以下でより詳細に説明される)ビデオブロックまたはコーディングユニットと呼ばれる矩形領域に区分することができる。これらのビデオブロックは、特定の予測モードを使用して符号化され得る。
[0052]ビデオブロックは、1つまたは複数のやり方で、より小さいブロックの1つまたは複数のグループに分割され得る。ブロックは、コーディングツリーブロック、予測ブロック、変換ブロック、および/または他の好適なブロックを含むことができる。概して「ブロック」への言及は、別段に規定されていない限り、そのようなビデオブロック(たとえば、当業者によって理解されるように、コーディングツリーブロック、コーディングブロック、予測ブロック、変換ブロック、または他の適切なブロックもしくはサブブロック)を指すことがある。さらに、これらのブロックの各々はまた、本明細書では、互換的に「ユニット」(たとえば、コーディングツリーユニット(CTU)、コーディングユニット、予測ユニット(PU)、変換ユニット(TU)など)と呼ばれることがある。いくつかの場合には、ユニットは、ビットストリーム中で符号化されるコーディング論理ユニットを示し得、ブロックは、プロセスがターゲットとするビデオフレームバッファの一部分を示し得る。
[0053]インター予測モードの場合、ビデオエンコーダは、参照フレームまたは参照ピクチャと呼ばれる、別の時間ロケーション中にあるフレーム(またはピクチャ)中で符号化されているブロックと同様のブロックを探索することができる。ビデオエンコーダは、その探索を、符号化されるべきブロックからのある空間変位に制限し得る。最良マッチが、水平変位成分と垂直変位成分とを含む2次元(2D)動きベクトルを使用して特定され得る。イントラ予測モードの場合、ビデオエンコーダは、同じピクチャ内の前に符号化された隣接ブロックからのデータに基づいて、空間予測技法を使用して、予測されたブロックを形成し得る。
[0054]ビデオエンコーダは予測誤差を決定し得る。たとえば、予測は、符号化されているブロック中のピクセル値と予測されたブロック中のピクセル値との間の差分として決定され得る。予測誤差は残差と呼ばれることもある。ビデオエンコーダはまた、変換係数を生成するために変換符号化を使用して(たとえば、離散コサイン変換(DCT)の形態、離散サイン変換(DST)の形態、または他の好適な変換を使用して)予測誤差に変換を適用し得る。変換の後に、ビデオエンコーダは変換係数を量子化し得る。量子化変換係数と動きベクトルとは、シンタックス要素を使用して表され、制御情報とともに、ビデオシーケンスのコード化表現を形成し得る。いくつかの事例では、ビデオエンコーダはシンタックス要素をエントロピーコーディングし、それにより、さらに、それらの表現のために必要とされるビット数を低減し得る。
[0055]ビデオデコーダは、上記で説明されたシンタックス要素および制御情報を使用して、現在のフレームを復号するための予測データ(たとえば、予測ブロック)を構築し得る。たとえば、ビデオデコーダは、予測されたブロックと圧縮された予測誤差とを加え得る。ビデオデコーダは、量子化係数を使用して変換基底関数を重み付けすることによって、圧縮された予測誤差を決定し得る。再構築されたフレームと元のフレームとの間の差分は、再構築誤差と呼ばれる。
[0056]以下でより詳細に説明されるように、本明細書では、履歴ベースの動きベクトル予測に改善を与えるための(「システムおよび技法」と総称される)システム、装置、方法(プロセスとも呼ばれる)、およびコンピュータ可読媒体について説明する。本明細書で説明されるシステムおよび技法は、ビデオがブロックごとに再構築される様々なブロックベースのビデオコーディング技法のうちの1つまたは複数に適用され得る。たとえば、本明細書で説明されるシステムおよび技法は、既存のビデオコーデック(たとえば、高効率ビデオコーディング(HEVC)、アドバンストビデオコーディング(AVC)、または他の好適な既存のビデオコーデック)のいずれかに適用され得るか、ならびに/あるいは、たとえば、汎用ビデオコーディング(VVC)、共同探査モデル(JEM)、VP9、AV1、エッセンシャルビデオコーディング(EVC)、および/または開発中のもしくは開発されることになる他のビデオコーディング規格など、任意の開発されているビデオコーディング規格および/または将来のビデオコーディング規格のための効率的なコーディングツールであり得る。
[0057]本明細書では説明されるシステムおよび技法の様々な態様について、図に関して本明細書で説明する。図1は、本明細書で説明される例による、アフィンコーディングモードで動作することができる符号化デバイス104と復号デバイス112とを含むシステム100の一例を示すブロック図である。符号化デバイス104はソースデバイスの一部であり得、復号デバイス112は(クライアントデバイスとも呼ばれる)受信デバイスの一部であり得る。ソースデバイスおよび/または受信デバイスは、モバイルもしくは固定電話ハンドセットなどの電子デバイス(たとえば、スマートフォン、セルラー電話など)、デスクトップコンピュータ、ラップトップもしくはノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、インターネットプロトコル(IP)カメラ、1つもしくは複数のサーバデバイスを含むサーバシステム中のサーバデバイス(たとえば、ビデオストリーミングサーバシステムもしくは他の好適なサーバシステム)、ヘッドマウントディスプレイ(HMD)、ヘッドアップディスプレイ(HUD)、スマートグラス(たとえば、仮想現実(VR)グラス、拡張現実(AR)グラス、もしくは他のスマートグラス)、または任意の他の好適な電子デバイスを含み得る。
[0058]システム100の構成要素は、電子回路もしくは他の電子ハードウェアを含むことができ、および/またはこれらを使用して実装されることが可能であり、これは、1つもしくは複数のプログラム可能な電子回路(たとえば、マイクロプロセッサ、グラフィック処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、中央処理装置(CPU)、および/または他の適切な電子回路)を含むことができ、ならびに/または、本明細書において説明される様々な動作を実施するためのコンピュータソフトウェア、ファームウェア、もしくはこれらの任意の組合せを含むことができ、および/もしくは、これらを使用して実装され得る。
[0059]システム100がいくつかの構成要素を含むように示されているが、システム100が図1に示されている構成要素よりも多いまたは少ない構成要素を含むことができることを、当業者は諒解されよう。たとえば、システム100はまた、いくつかの例では、記憶装置108および記憶装置118以外の1つもしくは複数のメモリデバイス(たとえば、1つもしくは複数のランダムアクセスメモリ(RAM)構成要素、読取り専用メモリ(ROM)構成要素、キャッシュメモリ構成要素、バッファ構成要素、データベース構成要素、および/もしくは他のメモリデバイス)、1つもしくは複数のメモリデバイスと通信しているおよび/またはそれに電気的に接続された1つもしくは複数の処理デバイス(たとえば、1つもしくは複数のCPU、GPU、および/もしくは他の処理デバイス)、ワイヤレス通信を実施するための(たとえば、各ワイヤレスインターフェースのための1つもしくは複数のトランシーバとベースバンドプロセッサとを含む)1つもしくは複数のワイヤレスインターフェース、1つもしくは複数の有線接続を介した通信を実施するための1つもしくは複数のワイヤードインターフェース(たとえば、ユニバーサルシリアルバス(USB)入力などのシリアルインターフェース、ライトニングコネクタ、および/もしくは他のワイヤードインターフェース)、ならびに/または図1に示されていない他の構成要素を含むことができる。
[0060]本明細書で説明されるコーディング技法は、(たとえば、インターネットを介した)ストリーミングビデオ送信、テレビジョン放送もしくは送信、データ記憶媒体上に記憶するためのデジタルビデオの符号化、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例を含む、様々なマルチメディア適用例におけるビデオコーディングに適用可能である。いくつかの例では、システム100は、ビデオ会議、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、ゲーム、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートすることができる。
[0061]符号化デバイス104(またはエンコーダ)は、符号化ビデオビットストリームを生成するためにビデオコーディング規格またはプロトコルを使用してビデオデータを符号化するために使用され得る。ビデオコーディング規格の例は、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、そのスケーラブルビデオコーディング(SVC)拡張とマルチビュービデオコーディング(MVC)拡張とを含む(ISO/IEC MPEG-4 AVCとしても知られる)ITU-T H.264、および高効率ビデオコーディング(HEVC)またはITU-T H.265を含む。範囲およびスクリーンコンテンツコーディング拡張、3Dビデオコーディング(3D-HEVC)ならびにマルチビュー拡張(MV-HEVC)ならびにスケーラブル拡張(SHVC)を含む、マルチレイヤビデオコーディングに対処するHEVCへの様々な拡張が存在する。HEVCおよびそれの拡張は、ITU-Tビデオコーディングエキスパートグループ(VCEG)およびISO/IECモーションピクチャエキスパートグループ(MPEG)の共同コラボレーションチームオンビデオコーディング(JCT-VC)ならびに共同コラボレーションチームオン3Dビデオコーディング拡張開発(JCT-3V)によって開発された。
[0062]MPEGとITU-T VCEGとはまた、汎用ビデオコーディング(VVC)という名前の次世代のビデオコーディング規格のための新しいビデオコーディングツールを調査および開発するために共同調査ビデオチーム(JVET)を編成した。参照ソフトウェアは、VVCテストモデル(VTM)と呼ばれる。VVCの目的は、(たとえば、特に、360°全方向没入型マルチメディア、高ダイナミックレンジ(HDR)ビデオなど)より高品質のビデオサービスおよび新生のアプリケーションの展開を助ける、既存のHEVC規格を超える圧縮性能における顕著な改善を提供することである。VP9、Alliance of Open Media(AOMedia) Video 1(AV1)およびエッセンシャルビデオコーディング(EVC)は、本明細書で説明される技法が適用され得る他のビデオコーディング規格である。
[0063]本明細書で説明される多くの実施形態は、VTM、VVC、HEVC、AVC、および/またはそれらの拡張などのビデオコーデックを使用して実施され得る。しかしながら、本明細書で説明される技法およびシステムは、MPEG、JPEG(または静止画像のための他のコーディング規格)、VP9、AV1、それらの拡張、あるいはすでに利用可能であるか、またはまだ利用可能ではないか、もしくは開発されていない他の好適なコーディング規格など、他のコーディング規格にも適用可能であり得る。したがって、本明細書で説明される技法およびシステムは、特定のビデオコーディング規格を参照しながら説明され得るが、当業者は、説明がその特定の規格にのみ適用されると解釈されるべきではないことを諒解されよう。
[0064]図1を参照すると、ビデオソース102は、符号化デバイス104にビデオデータを与え得る。ビデオソース102は、ソースデバイスの一部であり得るか、またはソースデバイス以外のデバイスの一部であり得る。ビデオソース102は、ビデオキャプチャデバイス(たとえば、ビデオカメラ、カメラフォン、ビデオフォンなど)、記憶されたビデオを含んでいるビデオアーカイブ、ビデオデータを与えるビデオサーバもしくはコンテンツプロバイダ、ビデオサーバもしくはコンテンツプロバイダからビデオを受信するビデオフィードインターフェース、コンピュータグラフィックスビデオデータを生成するためのコンピュータグラフィックスシステム、そのようなソースの組合せ、または任意の他の好適なビデオソースを含み得る。
[0065]ビデオソース102からのビデオデータは、1つまたは複数の入力ピクチャを含み得る。ピクチャは、「フレーム」と呼ばれることもある。ピクチャまたはフレームは、いくつかの場合には、ビデオの一部である静止画像である。いくつかの例では、ビデオソース102からのデータは、ビデオの一部でない静止画像であり得る。HEVC、VVC、および他のビデオコーディング仕様では、ビデオシーケンスは、一連のピクチャを含むことができる。ピクチャは、SL、SCbおよびSCrと示される、3つのサンプルアレイを含み得る。SLはルーマサンプルの2次元アレイであり、SCbはCbクロミナンスサンプルの2次元アレイであり、SCrはCrクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャは、モノクロームであり得、ルーマサンプルのアレイのみを含み得る。
[0066]符号化デバイス104のエンコーダエンジン106(またはエンコーダ)は、符号化されたビデオビットストリームを生成するためにビデオデータを符号化する。いくつかの例では、符号化ビデオビットストリーム(または「ビデオビットストリーム」または「ビットストリーム」)は、一連の1つまたは複数のコード化ビデオシーケンスである。コード化ビデオシーケンス(CVS)は、ベースレイヤ中の、いくつかのプロパティをもつランダムアクセスポイントピクチャを有するアクセスユニット(AU)で始まり、ベースレイヤ中の、いくつかのプロパティをもつランダムアクセスポイントピクチャを有する次のAUまでの、次のAUを含まない一連のAUを含む。たとえば、CVSを開始するランダムアクセスポイントピクチャのいくつかのプロパティは、1に等しいRASLフラグ(たとえば、NoRaslOutputFlag)を含み得る。他の場合、(0に等しいRASLフラグをもつ)ランダムアクセスポイントピクチャはCVSを開始しない。アクセスユニット(AU)は、1つまたは複数のコード化ピクチャと、同じ出力時間を共有するコード化ピクチャに対応する制御情報とを含む。ピクチャのコード化スライスは、ビットストリームレベルにおいて、ネットワークアブストラクションレイヤ(NAL)ユニットと呼ばれるデータユニット中にカプセル化される。たとえば、HEVCビデオビットストリームは、NALユニットを含む1つまたは複数のCVSを含み得る。NALユニットの各々はNALユニットヘッダを有する。一例では、ヘッダは、(マルチレイヤ拡張を除いて)H.264/AVCでは1バイトであり、HEVCでは2バイトである。NALユニットヘッダ中のシンタックス要素は、指定されたビットをとり、したがって、特にトランスポートストリーム、リアルタイムトランスポート(RTP)プロトコル、ファイルフォーマットなど、すべての種類のシステムおよびトランスポートレイヤに可視である。
[0067]ビデオコーディングレイヤ(VCL)NALユニットと非VCL NALユニットとを含む、NALユニットの2つのクラスがHEVC規格に存在する。VCL NALユニットは、コード化ビデオビットストリームを形成するコード化ピクチャデータを含む。たとえば、コード化ビデオビットストリームを形成するビットのシーケンスは、VCL NALユニット中に存在する。VCL NALユニットは、コード化ピクチャデータの(以下で説明される)1つのスライスまたはスライスセグメントを含むことができ、非VCL NALユニットは、1つまたは複数のコード化ピクチャに関係する制御情報を含む。いくつかの場合には、NALユニットはパケットと呼ばれることがある。HEVC AUは、コード化ピクチャデータを含んでいるVCL NALユニットと、(もしあれば)コード化ピクチャデータに対応する非VCL NALユニットとを含む。非VCL NALユニットは、他の情報に加えて、符号化ビデオビットストリームに関係する高レベル情報をもつパラメータセットを含んでいることがある。たとえば、パラメータセットは、ビデオパラメータセット(VPS)と、シーケンスパラメータセット(SPS)と、ピクチャパラメータセット(PPS)とを含み得る。場合によっては、ビットストリームの各スライスまたは他の部分は、復号デバイス112がビットストリームのスライスまたは他の部分を復号するために使用され得る情報にアクセスすることを可能にするために単一のアクティブなPPS、SPS、および/またはVPSを参照することができる。
[0068]NALユニットは、ビデオ中のピクチャのコード化表現など、ビデオデータのコード化表現を形成するビットのシーケンス(たとえば、符号化ビデオビットストリーム、ビットストリームのCVSなど)を含んでいることがある。エンコーダエンジン106は、各ピクチャを複数のスライスに区分することによってピクチャのコード化表現を生成する。スライスは、スライス中の情報が、同じピクチャ内の他のスライスからのデータへの依存性なしにコーディングされるように、他のスライスから独立している。スライスは、独立しているスライスセグメントを含む1つまたは複数のスライスセグメントと、存在する場合、前のスライスセグメントに依存する1つまたは複数の依存するスライスセグメントとを含む。
[0069]HEVCでは、スライスは、ルーマサンプルおよびクロマサンプルのコーディングツリーブロック(CTB)に区分される。ルーマサンプルのCTBおよびクロマサンプルの1つまたは複数のCTBは、サンプルのためのシンタックスとともに、コーディングツリーユニット(CTU)と呼ばれる。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU)とも呼ばれることもある。CTUは、HEVC符号化のための基本処理ユニットである。CTUは、様々なサイズの複数のコーディングユニット(CU)にスプリットされ得る。CUは、コーディングブロック(CB)と呼ばれるルーマおよびクロマサンプルアレイを含んでいる。
[0070]ルーマおよびクロマCBは、予測ブロック(PB)にさらにスプリットされ得る。PBは、(利用可能なとき、または使用のために有効にされたとき)インター予測またはイントラブロックコピー(IBC)予測のために同じ動きパラメータを使用するルーマ成分またはクロマ成分のサンプルのブロックである。ルーマPBおよび1つまたは複数のクロマPBは、関連するシンタックスとともに、予測ユニット(PU)を形成する。インター予測の場合、動きパラメータのセット(たとえば、1つまたは複数の動きベクトル、参照インデックスなど)は、PUごとにビットストリーム中でシグナリングされ、ルーマPBおよび1つまたは複数のクロマPBのインター予測のために使用される。動きパラメータは動き情報と呼ばれることもある。CBはまた、1つまたは複数の変換ブロック(TB)に区分され得る。TBは、予測残差信号をコーディングするために残差変換(たとえば、場合によっては、同じ2次元変換)が適用される色成分のサンプルの正方形ブロックを表現する。変換ユニット(TU)は、ルーマおよびクロマサンプルのTBと、対応するシンタックス要素とを表現する。変換コーディングについては、以下でより詳細に説明する。
[0071]CUのサイズは、コーディングモードのサイズに対応し、形状が正方形であり得る。たとえば、CUのサイズは、8×8サンプル、16×16サンプル、32×32サンプル、64×64サンプル、または対応するCTUのサイズまでの任意の他の適切なサイズであり得る。「N×N」という句は、本明細書では、垂直寸法および水平寸法に関するビデオブロックのピクセル寸法(たとえば、8ピクセル×8ピクセル)を指すために使用される。ブロック中のピクセルは行および列に配置され得る。いくつかの実施形態では、ブロックは、水平方向において垂直方向と同じ数のピクセルを有するとは限らない。CUに関連するシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を記述し得る。区分モードは、CUがイントラ予測モード符号化されるか、それともインター予測モード符号化されるかの間で異なる場合がある。PUは、形状が非正方形に区分され得る。CUに関連付けられるシンタックスデータは、たとえば、CTUに従う1つまたは複数のTUへのCUの区分をも記述し得る。TUは、形状が正方形または非正方形であり得る。
[0072]HEVC規格によれば、変換は、変換ユニット(TU)を使用して実施され得る。TUは、異なるCUでは異なり得る。TUは、所与のCU内のPUのサイズに基づいてサイズ決定され得る。TUは、PUと同じサイズであるか、またはPUよりも小さいことがある。いくつかの例では、CUに対応する残差サンプルは、残差4分木(RQT)として知られる4分木構造を使用して、より小さいユニットに再分割され得る。RQTのリーフノードはTUに対応し得る。TUに関連するピクセル差分値は、変換係数を作り出すために変換され得る。変換係数は、エンコーダエンジン106によって量子化され得る。
[0073]ビデオデータのピクチャがCUに区分されると、エンコーダエンジン106は、予測モードを使用して各PUを予測する。予測ユニットまたは予測ブロックは、(以下で説明される)残差を得るために元のビデオデータから減算される。CUごとに、シンタックスデータを使用してビットストリーム内で予測モードがシグナリングされ得る。予測モードは、イントラ予測(もしくはピクチャ内予測)またはインター予測(もしくはピクチャ間予測)を含み得る。イントラ予測は、ピクチャ内の空間的に隣接するサンプル間の相関を利用する。たとえば、イントラ予測を使用して、各PUは、たとえば、PUに関する平均値を見つけるためのDC予測、平坦面をPUに適合させるための平面予測、隣接データから外挿するための方向予測、または任意の他の好適なタイプの予測を使用して、同じピクチャ中の隣接画像データから予測される。インター予測は、画像サンプルのブロックについての動き補償予測を導出するためにピクチャ間の時間相関を使用する。たとえば、インター予測を使用して、各PUは、(出力順序において現在ピクチャの前または後の)1つまたは複数の参照ピクチャ中の画像データからの動き補償予測を使用して予測される。ピクチャ間予測を使用してピクチャエリアをコーディングすべきなのか、ピクチャ内予測を使用してピクチャエリアをコーディングすべきなのかの決定は、たとえば、CUレベルにおいて行われ得る。
[0074]エンコーダエンジン106および(以下でより詳細に説明される)デコーダエンジン116は、VVCに従って動作するように構成され得る。VVCによれば、(エンコーダエンジン106および/またはデコーダエンジン116などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する(ここで、ルーマサンプルのCTBとクロマサンプルの1つまたは複数のCTBとが、サンプルのためのシンタックスとともに、CTUと呼ばれる)。ビデオコーダは、4分木2分木(QTBT)構造またはマルチタイプツリー(MTT)構造など、ツリー構造に従ってCTUを区分することができる。QTBT構造は、HEVCのCUとPUとTUとの間の分離など、複数の区分タイプの概念を除去する。QTBT構造は、4分木区分に従って区分される第1のレベルと、2分木区分に従って区分される第2のレベルとを含む、2つのレベルを含む。QTBT構造のルートノードは、CTUに対応する。2分木のリーフノードは、コーディングユニット(CU)に対応する。
[0075]MTT区分構造では、ブロックは、4分木区分と、2分木区分と、1つまたは複数のタイプのトリプルツリー区分とを使用して区分され得る。トリプルツリー区分は、ブロックが3つのサブブロックにスプリットされる区分である。いくつかの例では、トリプルツリー区分は、中心を通って元のブロックを分割することなしに、ブロックを3つのサブブロックに分割する。MTTにおける区分タイプ(たとえば、4分木、2分木、およびトリプルツリー)は、対称的または非対称的であり得る。
[0076]いくつかの例では、ビデオコーダは、ルミナンス成分とクロミナンス成分との各々を表現するために単一のQTBTまたはMTT構造を使用することができ、他の例では、ビデオコーダは、ルミナンス成分のための1つのQTBTまたはMTT構造、および両方のクロミナンス成分のための別のQTBTまたはMTT構造(またはそれぞれのクロミナンス成分のための2つのQTBTおよび/またはMTT構造)など、2つ以上のQTBTまたはMTT構造を使用することができる。
[0077]ビデオコーダは、HEVCによる4分木区分、QTBT区分、MTT区分、または他の区分構造を使用するように構成され得る。説明の目的で、本明細書の説明は、QTBT区分を指すことがある。しかしながら、本開示の技法は、4分木区分、または同様に他のタイプの区分を使用するように構成されたビデオコーダにも適用され得ることを理解されたい。
[0078]いくつかの例では、ピクチャの1つまたは複数のスライスは、スライスタイプを割り当てられる。スライスタイプは、イントラコード化スライス(Iスライス)と、インターコード化Pスライスと、インターコード化Bスライスとを含む。Iスライス(イントラコード化フレーム、独立して復号可能)は、イントラ予測によってのみコーディングされるピクチャのスライスであり、したがって、Iスライスは、スライスの任意の予測ユニットまたは予測ブロックを予測するためにフレーム内のデータのみを必要とするので、独立して復号可能である。Pスライス(単方向予測されるフレーム)は、イントラ予測を用いて、および単方向インター予測を用いてコーディングされ得るピクチャのスライスである。Pスライス内の各予測ユニットまたは予測ブロックは、イントラ予測またはインター予測のいずれかを用いてコーディングされる。インター予測が適用されるとき、予測ユニットまたは予測ブロックは、1つの参照ピクチャによってのみ予測され、したがって、参照サンプルは、1つのフレームの1つの参照領域からのみのものである。Bスライス(双方向予測フレーム)は、イントラ予測を用いて、およびインター予測(たとえば、双予測または単予測のいずれか)を用いてコーディングされ得るピクチャのスライスである。Bスライスの予測ユニットまたは予測ブロックは、2つの参照ピクチャから双方向予測され得、ここで、各ピクチャが1つの参照領域を導き、双方向予測されたブロックの予測信号を作り出すために、2つの参照領域のサンプルセットが(たとえば、等しい重みを用いて、または異なる重みを用いて)重み付けされる。上記で説明されたように、1つのピクチャのスライスが独立してコーディングされる。いくつかの場合には、ピクチャは、ただ1つのスライスとしてコーディングされ得る。
[0079]上記のように、ピクチャ内予測は、ピクチャ内の空間的に隣接するサンプル間の相関を利用する。(「イントラモード」とも呼ばれる)複数のイントラ予測モードがある。いくつかの例では、ルーマブロックのイントラ予測は、平面モードと、DCモードと、33個の角モード(たとえば、対角イントラ予測モードおよび対角イントラ予測モードに隣接する角モード)とを含む35個のモードを含む。イントラ予測の35個のモードは、以下で表1に示されているようにインデックス付けされる。他の例では、33個の角モードによってまだ表されていない予測角度を含むより多くのイントラモードが定義され得る。他の例では、角モードに関連する予測角度は、HEVCにおいて使用されるものとは異なり得る。
Figure 2022548990000002
[0080]ピクチャ間予測は、画像サンプルのブロックについての動き補償予測を導出するためにピクチャ間の時間相関を使用する。並進運動モデルを使用して、前に復号されたピクチャ(参照ピクチャ)中のブロックの位置は、動きベクトル(Δx,Δy)によって示され、Δxは、現在ブロックの位置に対する参照ブロックの水平変位を指定し、Δyはその垂直変位を指定する。いくつかの場合には、動きベクトル(Δx,Δy)は、(整数精度とも呼ばれる)整数サンプル精度であり得、その場合、動きベクトルは、参照フレームの整数ペルグリッド(または整数ピクセルサンプリンググリッド)を指す。いくつかの場合には、動きベクトル(Δx,Δy)は、参照フレームの整数ペルグリッドに制限されることなしに、基礎をなすオブジェクトの移動をより正確にキャプチャするために、(分数ペル精度または非整数精度とも呼ばれる)分数サンプル精度のものであり得る。動きベクトルの精度は、動きベクトルの量子化レベルによって表され得る。たとえば、量子化レベルは、整数精度(たとえば、1ピクセル)または分数ペル精度(たとえば、1/4ピクセル、1/2ピクセル、または他のサブピクセル値)であり得る。対応する動きベクトルが分数サンプル精度を有するとき、予測信号を導出するために、参照ピクチャに補間が適用される。たとえば、整数位置において利用可能なサンプルは、分数位置における値を推定するために、(たとえば、1つまたは複数の補間フィルタを使用して)フィルタ処理され得る。前に復号された参照ピクチャは、参照ピクチャリストへの参照インデックス(refIdx)によって示される。動きベクトルおよび参照インデックスは、動きパラメータと呼ばれることがある。単予測と双予測とを含む、2つの種類のピクチャ間予測が実施され得る。
[0081]双予測を使用するインター予測の場合、動きパラメータの2つのセット(Δx0、Δy0、refIdx0、および、Δx1、Δy1、refIdx1)が、(同じ参照ピクチャから、または場合によっては異なる参照ピクチャから)2つの動き補償予測を生成するために使用される。たとえば、双予測の場合、各予測ブロックは、2つの動き補償予測信号を使用し、B予測ユニットを生成する。2つの動き補償予測は、最終の動き補償予測を得るために組み合わせられる。たとえば、2つの動き補償予測は、平均化によって組み合わせられ得る。別の例では、重み付け予測が使用され得、その場合、異なる重みが、各動き補償予測に適用され得る。双予測において使用され得る参照ピクチャは、リスト0およびリスト1として示される、2つの別個のリストに記憶される。動きパラメータは、動き推定プロセスを使用してエンコーダにおいて導出され得る。
[0082]単予測を使用するインター予測の場合、動きパラメータ(Δx0,Δy0,refIdx0)の1つのセットが、参照ピクチャから動き補償予測を生成するために使用される。たとえば、単予測の場合、各予測ブロックは、高々1つの動き補償予測信号を使用し、P予測ユニットを生成する。
[0083]PUは、予測プロセスに関係するデータ(たとえば、動きパラメータまたは他の好適なデータ)を含み得る。たとえば、PUがイントラ予測を使用して符号化されるとき、PUは、PUのためのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインター予測を使用して符号化されるとき、PUは、PUのための動きベクトルを定義するデータを含み得る。PUのための動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分(Δx)、動きベクトルの垂直成分(Δy)、動きベクトルの解像度(たとえば、整数精度、1/4ピクセル精度、または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、参照インデックス、動きベクトルのための参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)、またはそれらの任意の組合せを記述し得る。
[0084]イントラ予測および/またはインター予測を使用して予測を実行した後に、符号化デバイス104は、変換および量子化を実施することができる。たとえば、予測の後に、エンコーダエンジン106は、PUに対応する残差値を計算し得る。残差値は、コーディングされているピクセルの現在ブロック(PU)と、現在ブロックを予測するために使用される予測ブロック(たとえば、現在ブロックの予測されたバージョン)との間のピクセル差分値を備え得る。たとえば、(たとえば、インター予測またはイントラ予測を使用して)予測ブロックを生成した後に、エンコーダエンジン106は、現在ブロックから、予測ユニットによって作り出された予測ブロックを減算することによって、残差ブロックを生成することができる。残差ブロックは、現在ブロックのピクセル値と予測ブロックのピクセル値との間の差分を定量化するピクセル差分値のセットを含む。いくつかの例では、残差ブロックは、2次元ブロックフォーマット(たとえば、ピクセル値の2次元行列またはアレイ)で表され得る。そのような例では、残差ブロックはピクセル値の2次元表現である。
[0085]予測が実施された後に残存し得るいずれの残差データも、離散コサイン変換(DCT)、離散サイン変換(DST)、整数変換、ウェーブレット変換、他の好適な変換関数、またはそれらの任意の組合せに基づき得るブロック変換を使用して変換される。いくつかの場合には、1つまたは複数のブロック変換(たとえば、サイズ32×32、16×16、8×8、4×4、または他の好適なサイズのカーネル)が各CUにおける残差データに適用され得る。いくつかの例では、エンコーダエンジン106によって実装される変換および量子化プロセスのためにTUが使用され得る。1つまたは複数のPUを有する所与のCUは、1つまたは複数のTUをも含み得る。以下でさらに詳細に説明されるように、残差値は、ブロック変換を使用して変換係数に変換され得、エントロピーコーディングのためのシリアル化変換係数を作り出すために、TUを使用して量子化および走査され得る。
[0086]いくつかの実施形態では、CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングの後に、エンコーダエンジン106は、CUのTUのための残差データを計算し得る。PUは、空間領域(またはピクセル領域)においてピクセルデータを備え得る。前記のように、残差データは、符号化されていないピクチャのピクセルとPUに対応する予測値との間のピクセル差分値に対応し得る。エンコーダエンジン106は、(PUを含む)CUのための残差データを含む1つまたは複数のTUを形成し得、CUのための変換係数を生成するためにTUを変換し得る。TUは、ブロック変換の適用の後に変換領域において係数を備え得る。
[0087]エンコーダエンジン106は、変換係数の量子化を実施し得る。量子化は、係数を表すために使用されるデータの量を低減するために変換係数を量子化することによって、さらなる圧縮を与える。たとえば、量子化は、係数の一部または全部に関連するビット深度を低減し得る。一例では、nビット値をもつ係数は、量子化中にmビット値に切り捨てられ得、nはmよりも大きい。
[0088]量子化が実施されると、コード化ビデオビットストリームは、量子化変換係数と、予測情報(たとえば、予測モード、動きベクトル、ブロックベクトルなど)と、区分情報と、他のシンタックスデータなどの任意の他の好適なデータとを含む。コード化ビデオビットストリームの異なる要素は、エンコーダエンジン106によってエントロピー符号化され得る。いくつかの例では、エンコーダエンジン106は、エントロピー符号化され得るシリアル化ベクトルを作り出すために、量子化変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。いくつかの例では、エンコーダエンジン106は適応型走査を実施し得る。ベクトル(たとえば、1次元ベクトル)を形成するために量子化変換係数を走査した後に、エンコーダエンジン106は、ベクトルをエントロピー符号化し得る。たとえば、エンコーダエンジン106は、コンテキスト適応型可変長コーディング、コンテキスト適応型バイナリ算術コーディング、シンタックスベースコンテキスト適応型バイナリ算術コーディング、確率間隔区分エントロピーコーディング、または別の好適なエントロピー符号化技法を使用し得る。
[0089]符号化デバイス104の出力部110は、通信リンク120を介して受信デバイスの復号デバイス112に、符号化ビデオビットストリームデータを構成するNALユニットを送り得る。復号デバイス112の入力部114はNALユニットを受信し得る。通信リンク120は、ワイヤレスネットワーク、ワイヤードネットワーク、またはワイヤードネットワークとワイヤレスネットワークとの組合せによって与えられるチャネルを含み得る。ワイヤレスネットワークは、任意のワイヤレスインターフェースまたはワイヤレスインターフェースの組合せを含み得、任意の好適なワイヤレスネットワーク(たとえば、インターネットまたは他のワイドエリアネットワーク、パケットベースネットワーク、WiFi(登録商標)、無線周波数(RF)、UWB、WiFi-Direct、セルラー、ロングタームエボリューション(LTE(登録商標))、WiMax(登録商標)など)を含み得る。ワイヤードネットワークは、任意のワイヤードインターフェース(たとえば、ファイバー、イーサネット(登録商標)、電力線イーサネット、同軸ケーブルを介したイーサネット、デジタル信号線(DSL)など)を含み得る。ワイヤードおよび/またはワイヤレスネットワークは、基地局、ルータ、アクセスポイント、ブリッジ、ゲートウェイ、スイッチなど、様々な機器を使用して実装され得る。符号化ビデオビットストリームデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、受信デバイスに送信され得る。
[0090]いくつかの例では、符号化デバイス104は、符号化ビデオビットストリームデータを記憶装置108に記憶し得る。出力部110は、エンコーダエンジン106から、または記憶装置108から符号化ビデオビットストリームデータを取り出し得る。記憶装置108は、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。たとえば、記憶装置108は、ハードドライブ、記憶ディスク、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体を含み得る。記憶装置108は、インター予測において使用するための参照ピクチャを記憶するための復号ピクチャバッファ(DPB)をも含むことができる。さらなる例では、記憶装置108は、ソースデバイスによって生成された符号化ビデオを記憶することができるファイルサーバまたは別の中間ストレージデバイスに対応し得る。そのような場合、復号デバイス112を含む受信デバイスは、ストリーミングまたはダウンロードを介してストレージデバイスから記憶されたビデオデータにアクセスすることができる。ファイルサーバは、符号化ビデオデータを記憶することと、その符号化ビデオデータを受信デバイスに送信することとが可能な任意のタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続記憶(NAS)デバイス、またはローカルディスクドライブがある。受信デバイスは、インターネット接続を含む、任意の標準のデータ接続を通して符号化ビデオデータにアクセスし得る。アクセスは、ワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに適した、両方の組合せを含み得る。記憶装置108からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
[0091]復号デバイス112の入力部114は、符号化ビデオビットストリームデータを受信し、ビデオビットストリームデータをデコーダエンジン116に、またはデコーダエンジン116による後の使用のために記憶装置118に与え得る。たとえば、記憶装置118は、インター予測において使用するための参照ピクチャを記憶するためのDPBを含むことができる。復号デバイス112を含む受信デバイスは、記憶装置108を介して復号されるべき符号化ビデオデータを受信することができる。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、受信デバイスに送信され得る。送信された符号化ビデオデータのための通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの、任意のワイヤレスまたは有線の通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイスから受信デバイスへの通信を可能にするために有用であり得る任意の他の機器を含み得る。
[0092]デコーダエンジン116は、(たとえば、エントロピーデコーダを使用して)エントロピー復号し、符号化ビデオデータを構成する1つまたは複数のコード化ビデオシーケンスの要素を抽出することによって、符号化ビデオビットストリームデータを復号し得る。デコーダエンジン116は、符号化ビデオビットストリームデータを再スケーリングし、符号化ビデオビットストリームデータに対して逆変換を実施し得る。残差データが、デコーダエンジン116の予測段階にパスされる。デコーダエンジン116は、ピクセルのブロック(たとえば、PU)を予測する。いくつかの例では、逆変換の出力(残差データ)に予測が加算される。
[0093]ビデオ復号デバイス112は、復号ビデオをビデオ宛先デバイス122に出力し得、ビデオ宛先デバイス122は、復号ビデオデータをコンテンツの消費者に表示するためのディスプレイまたは他の出力デバイスを含み得る。いくつかの態様では、ビデオ宛先デバイス122は、復号デバイス112を含む受信デバイスの一部であり得る。いくつかの態様では、ビデオ宛先デバイス122は、受信デバイス以外の別個のデバイスの一部であり得る。
[0094]いくつかの実施形態では、ビデオ符号化デバイス104および/またはビデオ復号デバイス112は、それぞれオーディオ符号化デバイスおよびオーディオ復号デバイスと統合され得る。ビデオ符号化デバイス104および/またはビデオ復号デバイス112はまた、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなど、上記で説明されたコーディング技法を実装するために必要である他のハードウェアまたはソフトウェアを含み得る。ビデオ符号化デバイス104およびビデオ復号デバイス112は、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
[0095]図1に示されている例示的なシステムは、本明細書で使用され得る1つの例示的な例である。本明細書で説明される技法を使用してビデオデータを処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実施され得る。概して、本開示の技法はビデオ符号化デバイスまたはビデオ復号デバイスによって実施されるが、本技法は、一般に「コーデック」と呼ばれる複合ビデオエンコーダ/デコーダによっても実施され得る。さらに、本開示の技法はまた、ビデオプリプロセッサによって実施され得る。ソースデバイスおよび受信デバイスは、ソースデバイスが受信デバイスに送信するためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、ソースデバイスおよび受信デバイスは、デバイスの各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、例示的なシステムは、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ビデオデバイス間の一方向または双方向のビデオ送信をサポートし得る。
[0096]HEVC規格に対する拡張は、MV-HEVCと呼ばれるマルチビュービデオコーディング拡張と、SHVCと呼ばれるスケーラブルビデオコーディング拡張とを含む。MV-HEVC拡張およびSHVC拡張は、階層化コーディングの概念を共有し、異なるレイヤが符号化ビデオビットストリーム中に含まれる。コード化ビデオシーケンス中の各レイヤは、一意のレイヤ識別子(ID)によってアドレス指定される。レイヤIDは、NALユニットがそれに関連するレイヤを識別するために、NALユニットのヘッダ中に存在し得る。MV-HEVCでは、異なるレイヤは、たいてい、ビデオビットストリーム中の同じシーンの異なるビューを表す。SHVCでは、異なる空間解像度(またはピクチャ解像度)で、または異なる再構築忠実度でビデオビットストリームを表す異なるスケーラブルレイヤが与えられる。スケーラブルレイヤは、(レイヤID=0である)ベースレイヤと(レイヤID=1、2、...nである)1つまたは複数のエンハンスメントレイヤとを含み得る。ベースレイヤは、HEVCの第1のバージョンのプロファイルに適合し得、ビットストリーム中の利用可能な最下位レイヤを表す。エンハンスメントレイヤは、ベースレイヤと比較して、増加された空間解像度、時間解像度もしくはフレームレート、および/または再構築忠実度(もしくは品質)を有する。エンハンスメントレイヤは、階層的に編成されており、下位レイヤに依存すること(または依存しないこと)がある。いくつかの例では、単一規格コーデックを使用して、異なるレイヤがコーディングされ得る(たとえば、HEVC、SHVC、または他のコーディング規格を使用して、すべてのレイヤが符号化される)。いくつかの例では、多規格コーデックを使用して、異なるレイヤがコーディングされ得る。たとえば、ベースレイヤは、AVCを使用してコーディングされ得るが、1つまたは複数のエンハンスメントレイヤは、HEVC規格に対するSHVC拡張および/またはMV-HEVC拡張を使用してコーディングされ得る。
[0097]上記で説明したように、各ブロックについて、(本明細書では動きパラメータとも呼ばれる)動き情報のセットが利用可能であり得る。動き情報のセットは、前方予測方向および後方予測方向のための動き情報を含むことができる。ここで、前方予測方向および後方予測方向は、双方向予測モードの2つの予測方向であり、「前方」および「後方」という用語は、必ずしも幾何学の意味を有するとは限らない。代わりに、前方および後方は、現在ピクチャ、スライス、またはブロックの参照ピクチャリスト0(RefPicList0)および参照ピクチャリスト1(RefPicList1)に対応することができる。いくつかの例では、ピクチャ、スライス、またはブロックについて1つの参照ピクチャリストのみが利用可能であるとき、RefPicList0のみが利用可能であり、スライスの各ブロックの動き情報は常に前方である。いくつかの例では、RefPicList0は、現在のピクチャに時間的に先行する参照ピクチャを含み、RefPicList1は、現在のピクチャの時間的に後にくる参照ピクチャを含む。場合によっては、復号プロセスでは、動きベクトルが関連する参照インデックスとともに使用され得る。関連する参照インデックスをもつそのような動きベクトルは、動き情報の単予測セットとして示される。
[0098]各予測方向について、動き情報は、参照インデックスと動きベクトルとを含んでいることがある。場合によっては、簡単のために、動きベクトルは、動きベクトルが関連する参照インデックスを有する方法と仮定され得る関連する情報を有することができる。参照インデックスは、現在参照ピクチャリスト(RefPicList0またはRefPicList1)中の参照ピクチャを識別するために使用され得る。動きベクトルは、現在ピクチャにおける座標位置から、参照インデックスによって識別される参照ピクチャにおける座標へのオフセットを与える水平成分と垂直成分とを有することができる。たとえば、参照インデックスは、現在ピクチャ中のブロックのために使用されるべきである特定の参照ピクチャを示すことができ、動きベクトルは、参照ピクチャ中で、最も良く一致したブロック(現在ブロックに最も良く一致するブロック)が参照ピクチャ中のどこにあるかを示すことができる。
[0099]ビデオコーディング規格において、ピクチャの表示順序を識別するためにピクチャ順序カウント(POC)が使用され得る。1つのコード化ビデオシーケンス内の2つのピクチャが同じPOC値を有し得る事例があるが、1つのコード化ビデオシーケンス内で、同じPOC値をもつ2つのピクチャはあまり発生しない。複数のコード化ビデオシーケンスがビットストリーム中に存在するとき、同じPOC値をもつピクチャは、復号順序に関して互いに近いことがある。ピクチャのPOC値は、特に、参照ピクチャリスト構築、HEVCの場合のような参照ピクチャセットの導出、および/または動きベクトルスケーリングのために使用され得る。
[0100]H.264/AVCでは、各インターマクロブロック(MB)は、特に、1つの16×16マクロブロック区分と、2つの16×8マクロブロック区分と、2つの8×16マクロブロック区分と、4つの8×8マクロブロック区分とを含む、4つの異なる方法に区分され得る。1つのマクロブロック中の異なるマクロブロック区分は、予測方向ごとに異なる参照インデックス値(たとえば、RefPicList0およびRefPicList1のための異なる参照インデックス値)を有し得る。
[0101]場合によっては、マクロブロックが4つの8×8のマクロブロック区分に区分されないとき、マクロブロックは、各マクロブロック区分について各予測方向に1つの動きベクトルしか有することができない。場合によっては、マクロブロックが4つの8×8のマクロブロック区分に区分されるとき、各8×8のマクロブロック区分は、その各々が各予測方向に異なる動きベクトルを有することができるサブブロックにさらに区分され得る。8×8のマクロブロック区分は、特に、1つの8×8のサブブロックと、2つの8×4のサブブロックと、2つの4×8のサブブロックと、4つの4×4のサブブロックとを含むサブブロックに異なる方法で分割され得る。各サブブロックは、予測方向ごとに異なる動きベクトルを有することができる。したがって、動きベクトルは、サブブロックに等しいかまたはそれよりも高いレベルにおいて存在することができる。
[0102]HEVCでは、スライス中の最大のコーディングユニットは、コーディングツリーブロック(CTB)またはコーディングツリーユニット(CTU)と呼ばれる。CTBは4分木を含んでおり、そのノードはコーディングユニットである。CTBのサイズは、HEVCメインプロファイルにおいて16×16ピクセルから64×64ピクセルにわたることができる。場合によっては、8×8ピクセルのCTBサイズがサポートされ得る。CTBは、4分木方式でコーディングユニット(CU)に再帰的に分割され得る。CUは、CTBと同じサイズであり、8×8ピクセル程度に小さくなり得る。場合によっては、各コーディングユニットは、イントラ予測モードまたはインター予測モードのいずれかなどの1つのモードを用いてコーディングされる。CUがインター予測モードを使用してインターコーディングされるとき、CUは、2つもしくは4つの予測ユニット(PU)にさらに区分され得るか、または、さらなる区分が適用されないとき、1つのPUとして扱われ得る。1つのCU中に2つのPUが存在するとき、2つのPUは、1/2サイズの長方形、あるいはCUの1/4または3/4サイズである2つの長方形であり得る。
[0103]CUがインターコーディングされるとき、PUごとに動き情報の1つのセットが存在し得、これは、一意のインター予測モードで導出され得る。たとえば、各PUは、動き情報のセットを導出するために1つのインター予測モードを用いてコーディングされ得る。場合によっては、CUがイントラ予測モードを使用してイントラコーディングされるとき、PU形状は、2N×2NおよびN×Nであり得る。各PU内で、単一のイントラ予測モードがコーディングされる(一方、クロマ予測モードがCUレベルでシグナリングされる)。場合によっては、現在のCUサイズがSPSにおいて定義されている最も小さいCUサイズに等しくなるとき、N×NのイントラPUの形状が可能になる。
[0104]HEVCにおける動き予測の場合、マージモードと高度動きベクトル予測(AMVP)モードとを含む、予測ユニット(PU)のための2つのインター予測モードがある。スキップは、マージの特殊な場合と見なされる。AMVPモードまたはマージモードのいずれかでは、動きベクトル(MV)候補リストが、複数の動きベクトル予測子について維持される。現在のPUの、動きベクトル、ならびにマージモードにおける参照インデックスは、MV候補リストから1つの候補をとることによって生成される。
[0105]いくつかの例では、MV候補リストは、マージモードのための最高5つの候補とAMVPモードのための2つの候補とを含んでいる。他の例では、異なる数の候補が、マージモードおよび/またはAMVPモードのためのMV候補リスト中に含まれ得る。マージ候補は、動き情報のセットを含んでいることがある。たとえば、動き情報のセットは、両方の参照ピクチャリスト(リスト0およびリスト1)に対応する動きベクトルと、参照インデックスとを含むことができる。マージ候補がマージインデックスによって識別される場合、現在ブロックの予測のために参照ピクチャが使用され、ならびに関連する動きベクトルが決定される。しかしながら、リスト0またはリスト1のいずれかからの各々の潜在的な予測方向に対するAMVPモードのもとでは、AMVP候補が動きベクトルのみを含んでいるので、MV予測子(MVP)インデックスとともに参照インデックスがMV候補リストに明示的にシグナリングされる必要がある。AMVPモードでは、予測される動きベクトルはさらに改良され得る。
[0106]マージ候補は、動き情報の完全セットに対応し得るが、AMVP候補は、特定の予測方向についての1つの動きベクトルと参照インデックスとを含んでいることがある。両方のモードのための候補は、同じ空間および時間隣接ブロックから同様に導出される。
[0107]いくつかの例では、マージモードは、インター予測PUが、空間的に隣接する動きデータ位置と2つの時間的にコロケートされた動きデータ位置のうちの1つとのグループから選択される動きデータ位置を含むインター予測PUから、1つまたは複数の同じ動きベクトルと、予測方向と、1つまたは複数の参照ピクチャインデックスとを継承することを可能にする。AMVPモードの場合、PUの1つまたは複数の動きベクトルは、エンコーダによって構築されたAMVP候補リストからの1つまたは複数の動きベクトル予測子(MVP)に対して予測的にコーディングされ得る。いくつかの事例では、PUの単一方向インター予測の場合、エンコーダは、単一のAMVP候補リストを生成することができる。いくつかの事例では、PUの双方向予測の場合、エンコーダは、1つが前方予測方向からの空間および時間隣接PUの動きデータを使用し、1つが後方予測方向からの空間および時間隣接PUの動きデータを使用する、2つのAMVP候補リストを生成することができる。
[0108]両方のモードのための候補は、空間および/または時間隣接ブロックから導出され得る。たとえば、図2Aおよび図2Bは、HEVC中の空間隣接候補を示す概念図を含む。図2Aは、マージモードのための空間隣接動きベクトル(MV)候補を示す。図2Bは、AMVPモードのための空間隣接動きベクトル(MV)候補を示す。空間MV候補は、特定のPU(PU0)について、隣接ブロックから導出されるが、ブロックから候補を生成する方法は、マージモードおよびAMVPモードについて異なる。
[0109]マージモードでは、エンコーダは、様々な動きデータ位置からマージング候補を考慮することによって、マージング候補リストを形成することができる。たとえば、図2Aに示されているように、最高4つの空間MV候補が、図2Aにおいて番号0~4で示されている空間的に隣接する動きデータ位置に関して導出され得る。MV候補は、番号0~4によって示されている順序で、マージング候補リスト中で順序付けられ得る。たとえば、位置および順序は、左位置(0)と、上位置(1)と、右上位置(2)と、左下位置(3)と、左上位置(4)とを含むことができる。
[0110]図2Bに示されているAMVPモードでは、隣接ブロックは、2つのグループ、すなわち、ブロック0および1を含む左グループと、ブロック2、3、および4を含む上グループとに分割される。各グループについて、シグナリングされた参照インデックスによって示された参照ピクチャと同じ参照ピクチャを参照する隣接ブロック中の潜在的候補は、グループの最終候補を形成するために選定されるべき最高優先度を有する。すべての隣接ブロックが、同じ参照ピクチャを指す動きベクトルを含んでいるとは限らない可能性がある。したがって、そのような候補が見つけられ得ない場合、第1の利用可能な候補は、最終候補を形成するためにスケーリングされることになり、したがって、時間距離差分が補償され得る。
[0111]図3Aおよび図3Bは、HEVCにおける時間的動きベクトル予測を示す概念図を含む。時間的動きベクトル予測子(TMVP)候補が、使用可能および利用可能な場合、空間動きベクトル候補の後にMV候補リストに追加される。TMVP候補のための動きベクトル導出のプロセスは、マージモードとAMVPモードの両方について同じである。しかしながら、いくつかの事例では、マージモードでのTMVP候補のためのターゲット参照インデックスは、常に0に設定される。
[0112]TMVP候補導出のための1次ブロックロケーションは、空間隣接候補を生成するために使用される上および左ブロックへのバイアスを補償するための、ブロック「T」として図3Aに示されているような、コロケートされたPUの外側の右下ブロックである。しかしながら、そのブロックが現在CTB(またはLCU)行の外側に位置するか、または動き情報が利用可能でない場合、ブロックはPUの中心ブロックと置換される。TMVP候補のための動きベクトルは、スライスレベルで示されている、コロケートされたピクチャのコロケートされたPUから導出される。AVCにおける時間直接モードと同様に、TMVP候補の動きベクトルは、動きベクトルスケーリングを受けることがあり、動きベクトルスケーリングは距離差分を補償するために実施される。
[0113]動き予測の他の態様はまた、HEVC、VVC、および他のビデオコーディング仕様においてカバーされている。たとえば、一態様は動きベクトルスケーリングを含む。動きベクトルスケーリングでは、動きベクトルの値は、プレゼンテーション時間におけるピクチャ間の距離に比例すると見なされる。いくつかの例では、第1の動きベクトルは、第1の参照ピクチャと第1の動きベクトルを含む第1の包含ピクチャとを含む2つのピクチャに関連付けられ得る。第1の動きベクトルは、第2の動きベクトルを予測するために利用され得る。第2の動きベクトルを予測するために、第1の包含ピクチャと第1の動きの第1の参照ピクチャとの間の第1の距離が、第1の参照ピクチャと第1の包含ピクチャとに関連するピクチャ順序カウント(POC)値に基づいて計算され得る。
[0114]第2の参照ピクチャと第2の包含ピクチャとは、予測されることになる第2の動きベクトルに関連付けられ得、ここで、第2の参照ピクチャは、第1の参照ピクチャとは異なり得、第2の包含ピクチャは、第1の包含ピクチャとは異なり得る。第2の参照ピクチャと第2の包含ピクチャとの間の第2の距離は、第2の参照ピクチャと第2の包含ピクチャとに関連するPOC値に基づき計算され得、ここで、第2の距離は、第1の距離とは異なり得る。第2の動きベクトルを予測するために、第1の動きベクトルは、第1の距離と第2の距離とに基づいてスケーリングされ得る。空間的に隣接する候補の場合、それぞれ、第1の動きベクトルおよび第2の動きベクトルの第1の包含ピクチャおよび第2の包含ピクチャは同じであり得るが、第1の参照ピクチャおよび第2の参照ピクチャは異なり得る。いくつかの例では、動きベクトルスケーリングは、空間的におよび時間的に隣接する候補について、TMVPおよびAMVPモードに適用され得る。
[0115]動き予測の別の態様は擬似動きベクトル候補生成を含む。たとえば、動きベクトル候補リストが完全でない場合、擬似動きベクトル候補が生成され、すべての候補が取得されるまで動きベクトル候補リストの最後に挿入される。マージモードでは、2つのタイプの擬似MV候補、すなわち、Bスライスについてのみ導出された複合候補を含む第1のタイプと、第1のタイプが十分な擬似候補を与えない場合にAMVPのためにのみ使用されるゼロ候補を含む第2のタイプとがある。すでに動きベクトル候補リスト中にあり、関係する動き情報を有する候補の各ペアについて、双方向複合動きベクトル候補が、リスト0中のピクチャを参照する第1の候補の動きベクトルと、リスト1中のピクチャを参照する第2の候補の動きベクトルとの組合せによって導出され得る。
[0116]マージモードおよびAMVPモードの別の態様は、候補挿入のためのプルーニングプロセスを含む。たとえば、異なるブロックからの候補は偶然同じであり得、これはマージおよび/またはAMVP候補リストの効率を減少させる。問題を解決するために、プルーニングプロセスが適用され得る。プルーニングプロセスは、同一または複製の候補を挿入するのを回避するために候補を現在の候補リスト中にすでに存在する候補と比較することを含む。比較の複雑性を低減するために、プルーニングプロセスは、候補リスト中に挿入されることになるすべての潜在的な候補よりも少ない候補に実施され得る。
[0117]いくつかの例では、拡張動きベクトル予測が実装され得る。たとえば、いくつかのインターコーディングツールは、現在のブロックのための動きベクトル予測またはマージ予測の候補リストが導出または改良され得ることに従ってVVCなどのビデオコーディング規格において指定されている。そのような手法の例について以下で説明する。
[0118]履歴ベース動きベクトル予測(HMVP)は、各ブロックが、すぐ隣り合う因果的隣接動きフィールドの中のMVに加えて、過去から復号されたMVのリストからそのMV予測子を見つけることを可能にする動きベクトル予測方法である。たとえば、HMVPを使用して、現在のブロックのための1つまたは複数のMV予測子は、すぐ隣り合う因果的隣接動きフィールドの中のMVに加えて、前に復号されたMVのリストから取得または予測され得る。前に復号されたMVのリスト中のMV予測子は、HMVP候補と呼ばれる。HMVP候補は、インターコード化ブロックに関連する動き情報を含むことができる。複数のHMVP候補をもつHMVP表は、スライスのための符号化および/または復号プロセス中に維持され得る。いくつかの例では、HMVP表は、動的に更新され得る。たとえば、インターコード化ブロックを復号した後に、新しいHMVP候補としてHMVP表に復号されたインターコード化ブロックの関連する動き情報を追加することによって、HMVP表は更新され得る。いくつかの例では、新しいスライスが遭遇されるときにHMVP表は空にされ得る。
[0119]場合によっては、インターコード化ブロックがあるときはいつでも、関連する動き情報は、新たなHMVP候補として先入れ先出し(FIFO)方式でテーブルに挿入され得る。制約FIFO規則が適用され得る。テーブルにHMVPを挿入するとき、テーブルの中に同一のHMVPがあるかどうかを見つけるために、第一に冗長性チェックが適用され得る。見つかった場合、その特定のHMVPがテーブルから除去され、以後のすべてのHMVP候補は移動され得る。
[0120]いくつかの例では、HMVP候補は、マージ候補リスト構築プロセスにおいて使用され得る。場合によっては、テーブルの中の最後のエントリから最初のエントリまでのすべてのHMVP候補が、TMVP候補の後に挿入される。HMVP候補に対してプルーニングが適用され得る。利用可能なマージ候補の総数が、シグナリングされた最大許容マージ候補に到達すると、マージ候補リスト構築プロセスは終了され得る。
[0121]いくつかの例では、HMVP候補は、AMVP候補リスト構築プロセスにおいて使用され得る。場合によっては、テーブルの中の最後のK個のHMVP候補の動きベクトルは、TMVP候補の後に挿入される。いくつかの実装形態では、AMVPターゲット参照ピクチャと同じ参照ピクチャを伴うHMVP候補だけが、AMVP候補リストを構築するために使用される。HMVP候補に対してプルーニングが適用され得る。
[0122]図4は、HMVP表400の一例を示すブロック図である。HMVP表400は、先入れ先出し(FIFO)ルールを使用して管理されるストレージデバイスとして実装され得る。たとえば、MV予測子を含むHMVP候補は、HMVP表400中に記憶され得る。HMVP候補は、それらが符号化または復号される順序で記憶され得る。一例では、HMVP候補がHMVP表400中に記憶される順序は、HMVP候補が構築された時間に対応することができる。たとえば、復号デバイス112などのデコーダ中に実装されるとき、HMVP候補は、復号されたインターコード化ブロックの動き情報を含むように構築され得る。いくつかの例では、HMVP表400からの1つまたは複数のHMVP候補は、復号されることになる現在のブロックの動きベクトル予測のために使用され得る動きベクトル予測子を含むことができる。いくつかの例では、1つまたは複数のHMVP候補は、1つまたは複数のそのような前に復号されたブロックを含むことができ、これは、それらがFIFO方式でHMVP表400の1つまたは複数のエントリ中に復号された時間順序で記憶され得る。
[0123]HMVP候補インデックス402は、HMVP表400に関連付けられるように示されている。HMVP候補インデックス402は、HMVP表400の1つまたは複数のエントリを識別することができる。HMVP候補インデックス402は、例示的な例に従ってインデックス値0から4を含むことが示されており、ここで、HMVP候補インデックス402のインデックス値の各々は、対応するエントリに関連付けられる。HMVP表400は、他の例では、図4に関して図示および説明されるものよりも多いまたは少ないエントリを含むことができる。HMVP候補は、構築されるときに、FIFO方式でHMVP表400にポピュレートされる。たとえば、HMVP候補は、復号されるときに、一端においてHMVP表400に挿入され、それらが別の端からHMVP表400を出るまでHMVP表400のエントリを通して連続的に移動される。したがって、シフトレジスタなどのメモリ構造は、いくつかの例では、HMVP表400を実装するために使用され得る。一例では、インデックス値0は、HMVP表400の第1のエントリをポイントすることができ、ここで、第1のエントリは、HMVP候補が挿入されるHMVP表400の第1の端に対応することができる。相応して、インデックス値4は、HMVP表400の第2のエントリをポイントすることができ、ここで、第2のエントリは、HMVP候補がHMVP表400から出るかそれから空にされるHMVP表400の第2の端に対応することができる。したがって、インデックス値0で第1のエントリに挿入されるHMVP候補は、HMVP候補がインデックス値4で第2のエントリに達するまでより新しいまたはより最近復号されたHMVP候補に場所を空けるためにHMVP表400を横断することができる。したがって、所与の時間にHMVP表400中に存在するHMVP候補のうち、インデックス値4で第2のエントリ中のHMVP候補は、最も古いまたは最も過去の候補であり得るが、インデックス値0で第1のエントリ中のHMVP候補は、最も若いまたは最も最近の候補であり得る。概して、第2のエントリ中でHMVP候補は、第1のエントリ中のHMVP候補よりも古いまたはそれより以前に構築されたHMVP候補であり得る。
[0124]図4では、HMVP表400の異なる状態が、参照番号400A、400B、および400Cで識別される。参照番号400Aのための状態を参照すると、HMVP候補HMVP0からHMVP4は、それぞれのインデックス値4から0でHMVP表400のエントリ中に存在することが示されている。たとえば、HMVP0は、インデックス値0でHMVP表400の第1のエントリに挿入された最も古いまたは最も過去のHMVP候補であり得る。HMVP0は、HMVP0が参照番号400Aのための状態に示されているインデックス値4の第2のエントリに達するまでより以前に挿入されたより新しいHMVP候補HMVP1からHMVP4に場所を空けるために連続的にシフトされ得る。相応して、HMVP4は、インデックス値0で第1のエントリに挿入されることになる最も最近のHMVP候補であり得る。したがって、HMVP0は、HMVP4に対してHMVP表400中でより古いまたはより以前のHMVP候補である。
[0125]いくつかの例では、HMVP候補HMVP0からHMVP4のうちの1つまたは複数は、冗長であり得る動きベクトル情報を含むことができる。たとえば、冗長HMVP候補は、HMVP表400中に記憶された1つまたは複数の他のHMVP候補中の動きベクトル情報と同一である動きベクトル情報を含むことができる。冗長HMVP候補の動きベクトル情報が1つまたは複数の他のHMVP候補から取得され得るので、HMVP表400中に冗長HMVP候補を記憶することが回避され得る。冗長HMVP候補がHMVP表400中に記憶されることを回避することによって、HMVP表400のリソースがより効率的に利用され得る。いくつかの例では、HMVP表400中にHMVP候補を記憶する前に、HMVP候補が冗長であるのかどうかを決定するために冗長検査が実施され得る(たとえば、一致があるのかどうかを決定するためにHMVP候補の動きベクトル情報が、すでに記憶されている他のHMVP候補の動きベクトル情報と比較され得る)。
[0126]いくつかの例では、HMVP表400の参照番号400Bのための状態は、上記で説明された冗長検査の概念図である。いくつかの例では、HMVP候補は、それらが復号されるときにHMVP表400中にポピュレートされ得、冗長検査は、HMVP候補が記憶される前にしきい値テストとして実施されるのではなく、周期的に実施され得る。たとえば、参照番号400Bのための状態に示されているように、HMVP候補HMVP1およびHMVP3は、冗長候補として識別され得る(すなわち、それらの動き情報は、HMVP表400中の他のHMVP候補のうちの1つの動き情報と同一である)。冗長HMVP候補HMVP1およびHMVP3は、除去され得、残りのHMVP候補は、相応してシフトされ得る。
[0127]たとえば、参照番号400Cのための状態に示されているように、HMVP候補HMVP2およびHMVP4は、より古いエントリに対応するより高いインデックス値にシフトされ、一方、HMVP表400の最後の第2のエントリ中にすでにあるHMVP0は、さらにシフトされることが示されていない。いくつかの例では、HMVP候補HMVP2およびHMVP4をシフトすることは、より新しいHMVP候補のためにHMVP表400中のスペースを解放することができる。したがって、新しいHMVP候補HMVP5およびHMVP6が、HMVP表400にシフトされることが示されており、HMVP6は、最も新しいか、または最も最近復号された動きベクトル情報を含んでおり、インデックス値0で第1のエントリに記憶される。
[0128]いくつかの例では、HMVP表400からのHMVP候補のうちの1つまたは複数は、現在のブロックの動き予測のために使用され得る他の候補リストを構築するために使用され得る。たとえば、HMVP表400からの1つまたは複数のHMVP候補は、たとえば、追加のマージ候補としてマージ候補リストに追加され得る。いくつかの例では、同じHMVP表400または別のそのようなHMVP表からの1つまたは複数のHMVP候補は、たとえば、追加のAMVP予測子として、高度動きベクトル予測(AMVP)候補リストに追加され得る。
[0129]たとえば、マージ候補リスト構築プロセスでは、HMVP表400のエントリ中に記憶されたHMVP候補の一部または全部がマージ候補リスト中に挿入され得る。いくつかの例では、マージ候補リスト中にHMVP候補を挿入することは、マージ候補リスト中で時間的動きベクトル予測子(TMVP)候補の後にHMVP候補を挿入することを含むことができる。図3Aおよび図3Bに関して前に説明したように、TMVP候補は、使用可能および利用可能な場合、空間動きベクトル候補の後にMV候補リストに追加され得る。
[0130]いくつかの例では、上記で説明されたプルーニングプロセスは、マージ候補リストを構築する際にHMVP候補に対して適用され得る。たとえば、マージ候補リスト中のマージ候補の総数が許容可能なマージ候補の最大数に到達すると、マージ候補リスト構築プロセスは、終了され得、それ以上HMVP候補がマージ候補リストに挿入されないことがある。マージ候補リスト中の許容可能なマージ候補の最大数は、あらかじめ決定された数であるか、または、たとえば、エンコーダからマージ候補リストが構築され得るデコーダにシグナリングされ得る数であり得る。
[0131]マージ候補リストを構築することのいくつかの例では、1つまたは複数の他の候補がマージ候補リスト中に挿入され得る。いくつかの例では、現在のブロックに隣接しないことがある前にコーディングされたブロックの動き情報は、より効率的な動きベクトル予測のために利用され得る。たとえば、隣接しない空間マージ候補がマージ候補リストを構築する際に使用され得る。場合によっては、(たとえば、すべての目的のためにその全体が参照により本明細書に組み込まれるJVET-K0228に記載されている)隣接しない空間マージ候補の構築は、2つの隣接しない近傍位置からの(たとえば、図5に示されているように以下で説明されるように左/上に最も近接した隣接しないブロックからの)新しい空間候補の導出を伴う。ブロックは、現在のブロックに対して1つのCTUの最大距離内に制限され得る。隣接しない候補のフェッチプロセスは、前に復号されたブロックを垂直方向に追跡することで開始する。垂直逆追跡は、インターブロックに遭遇するかまたは追跡して戻った距離が1つのCTUサイズに到達したときに停止する。フェッチプロセスは、前に復号されたブロックを水平方向に追跡する。水平フェッチプロセスを停止するための基準は、正常にフェッチされた垂直に隣接しない候補があるのかどうかに依存する。垂直に隣接しない候補がフェッチされない場合、水平フェッチプロセスは、インターブロックに遭遇するかまたは追跡して戻った距離が1つのCTUサイズしきい値を上回ったときに停止する。フェッチされた垂直に隣接しない候補がある場合、水平フェッチプロセスは、垂直の隣接しない候補とは異なるMVを含んでいるインターブロックに遭遇するかまたは追跡して戻った距離がCTUサイズしきい値を超えたときに停止する。いくつかの例では、隣接しない空間マージ候補は、マージ候補リスト中のTMVP候補の前に挿入され得る。いくつかの例では、隣接しない空間マージ候補は、TMVP候補の後に挿入されるHMVP候補のうちの1つまたは複数を含むことができる同じマージ候補リスト中のTMVP候補の前に挿入され得る。以下で図5を参照しながら、マージ候補リストに挿入され得る1つまたは複数の隣接しない空間マージ候補を識別し、フェッチすることについて説明する。
[0132]図5は、コーディングされるべき現在のブロック502を含むピクチャまたはスライス500を示すブロック図である。いくつかの例では、マージ候補リストは、現在のブロック502をコーディングするために構築され得る。たとえば、現在のブロックのための動きベクトルは、マージ候補リスト中の1つまたは複数のマージ候補から取得され得る。マージ候補リストは、隣接しない空間マージ候補を決定することを含むことができる。たとえば、隣接しない空間マージ候補は、現在のブロック502に対して2つの隣接しない近傍位置から導出された新しい空間候補を含むことができる。
[0133](現在のブロック502の左上の)左上のブロックB2510と、(現在のブロック502の上の)上のブロックB1512と、(現在のブロック502の右上の)右上のブロックB0514と、(現在のブロック502の左の)左のブロックA1516と、(現在のブロック502の左下の)左下のブロックA0518とを含む現在のブロック502のいくつかの隣接または近傍ブロックを示す。いくつかの例では、隣接しない空間マージ候補は、現在のブロックの上のおよび/または左の最も近くの隣接しないブロックから取得され得る。
[0134]いくつかの例では、現在のブロック502のための隣接しない空間マージ候補は、前に復号されたブロックを垂直方向(現在のブロック502の上)におよび/または水平方向(現在のブロック502の左)に追跡することを含むことができる。垂直に追跡して戻った距離504は、現在のブロック502(たとえば、現在のブロック502の上部境界)と垂直に隣接しないブロックVN520とに対する垂直距離を示す。水平に追跡して戻った距離506は、現在のブロック502(たとえば、現在のブロック502の左境界)と水平に隣接しないブロックHN522とに対する水平距離を示す。垂直に追跡して戻った距離504と水平に追跡して戻った距離506とは、1つのコーディングツリーユニット(CTU)のサイズに等しい最大距離に抑制される。
[0135]垂直に隣接しないブロックVN520および水平に隣接しないブロックHN522などの隣接しない空間マージ候補は、それぞれ、垂直方向および水平方向に前の復号されたブロックを追跡することによって識別され得る。たとえば、垂直に隣接しないブロックVN520をフェッチすることは、インターコード化ブロックが(1つのCTUの最大サイズに制約された)垂直に追跡して戻った距離504内に存在するのかどうかを決定するために垂直逆追跡プロセスを含むことができる。そのようなブロックは、存在する場合、垂直に隣接しないブロックVN520として識別される。いくつかの例では、水平逆追跡プロセスは、垂直逆追跡プロセスの後に実施され得る。水平逆追跡プロセスは、インターコード化ブロックが(1つのCTUの最大サイズに制約される)水平に追跡して戻った距離506内に存在するのかどうかを決定することを含むことができ、そのようなブロックは、発見される場合、水平に隣接しないブロックHN522として識別される。
[0136]いくつかの例では、垂直に隣接しないブロックVN520および水平に隣接しないブロックHN522のうちの1つまたは複数は、隣接しない空間マージ候補として使用するためにフェッチされ得る。垂直に隣接しないブロックVN520が垂直逆追跡プロセス中に識別される場合、フェッチプロセスは、垂直に隣接しないブロックVN520をフェッチすることを含むことができる。フェッチプロセスは、水平逆追跡プロセスに進む。垂直に隣接しないブロックVN520が垂直逆追跡プロセスにおいて識別されない場合、インターコード化ブロックに遭遇するかまたは水平に追跡して戻った506距離が最大距離を超えるとき、水平逆追跡プロセスが終了され得る。垂直に隣接しないブロックVN520が識別され、フェッチされる場合、垂直に隣接しないブロックVN520中に含まれているMVとは異なるMVを含んでいるインターコード化ブロックに遭遇するとき、または水平に追跡して戻った506距離が最大距離を超える場合、水平逆追跡プロセスが終了される。前述のように、垂直に隣接しないブロックVN520および水平に隣接しないブロックHN522などのフェッチされた隣接しない空間マージ候補のうちの1つまたは複数は、マージ候補リスト中でTMVP候補の前に追加される。
[0137]再び図4を参照すると、場合によっては、HMVP候補はまた、AMVP候補リストを構築する際に使用され得る。AMVP候補リスト構築プロセスでは、同じHMVP表400(またはマージ候補リスト構築のために使用されるHMVP表とは異なるHMVP表)のエントリ中に記憶されたHMVP候補の一部または全部がAMVP候補リスト中で挿入され得る。いくつかの例では、AMVP候補リスト中にHMVP候補を挿入することは、AMVP候補リスト中でTMVP候補の後にHMVP候補のエントリのセット(たとえば、k個の最も最近のまたは最も過去のエントリ)を挿入することを含むことができる。いくつかの例では、上記で説明されたプルーニングプロセスは、AMVP候補リストを構築する際にHMVP候補に対して適用され得る。いくつかの例では、AMVPターゲット参照ピクチャと同じである参照ピクチャをもつHMVP候補だけが、AMVP候補リストを構築するために使用され得る。
[0138]したがって、履歴ベースの動きベクトル予測子(HMVP)予測モードは、1つまたは複数のHMVP候補を含むHMVP表400などの履歴ベースのルックアップテーブルの使用を伴うことができる。HMVP候補は、マージモードおよびAMVPモードなどのインター予測モードにおいて使用され得る。いくつかの例では、異なるインター予測モードは、HMVP表400からHMVP候補を選択するために異なる方法を使用することができる。
[0139]場合によっては、代替動きベクトル予測設計が使用され得る。たとえば、空間MVP(S-MVP)予測および時間MVP(T-MVP)予測のための代替設計が利用され得る。たとえば、マージモード(場合によっては、マージモードはスキップモードまたはダイレクトモードと呼ばれることがある)のいくつかの実装形態では、図6A、図6B、および図6Cに示されている空間的および時間的MVP候補は、MVPリストを充填するために図に示されている所与の順序で訪問され得る(または探索もしくは選択され得る)。
[0140]図6Aは、現在のブロック600のためのMVP候補A、B、(C,A1|B1)、A0、B2のロケーションを示す。図6Bは、現在のブロック600のためのフォールバック候補Hとともに中心位置610における時間的にコロケートされたネイバーを示す。MVP予測において利用される空間的および時間的ロケーションは、図6Aに示されている通りである。S-MVPのための訪問順序(たとえば、探索順序もしくは選択順序)の一例を探索順序付きブロック0、1、2、3、4、および5とともに図6Cに示す。探索順序付きブロック0~5のためのものである(図6Cの順序と比較して)空間的に反転されたパターン代替を図6Dに示す。
[0141]MVP候補として利用される空間ネイバーは、図6Cにマークされた訪問順序をもつ2段プロセスを用いて実装されるA、B、(C,A1|B1)、A0、B2である。
1.グループ1
a.(HEVC表記法でB0とコロケートされた)A、B、C
b.CロケーションにおけるMVPの利用可能性とブロック区分のタイプとに応じてA1またはB1。
2.グループ2
a.A0およびB2
[0142]MVP候補として利用される時間的にコロケートされたネイバーは、現在のブロックの中心位置610にコロケートされたブロックおよび現在のブロックの外の最も右下のロケーションのブロックである。
1.グループ3
a.C、H
b.Hロケーションがコロケートされたピクチャの外部にあるとわかる場合、フォールバックH位置が代わりに使用され得る。
[0143]いくつかの実装形態では、使用されるブロック区分およびコーディング順序に応じて、図6Dに示されているように、逆S-MVP候補順序が使用され得る。
[0144]HEVCおよび以前のビデオコーディング規格では、並進運動モデルのみが、動き補償予測(MCP)に適用される。たとえば、並進運動ベクトルは、ピクチャの各ブロック(たとえば、各CUまたは各PU)のために決定され得る。しかしながら、現実世界では、不規則な動きの中でも、ズーム(たとえば、ズームインおよび/またはアウト)、回転、遠近動きを含む並進運動以外のより多くの種類の動きがある。ITU-T VCEGおよびMPEGによる共同探査モデル(JEM)において、アフィン変換動き補償予測は、アフィンコーディングモードを使用してコーディング効率を改善するために適用され得る。
[0145]図7は、2つの対応する制御点510および512のベクトル720
Figure 2022548990000003
およびベクトル722
Figure 2022548990000004
として示される2つの動きベクトルによって記述される現在のブロック702のアフィン動きフィールドを示す図である。制御点710の動きベクトル720
Figure 2022548990000005
と制御点712の動きベクトル722
Figure 2022548990000006
とを使用して、現在のブロック702の動きベクトルフィールド(MVF)は、以下の式によって記述され得る。
Figure 2022548990000007
[0146]式(1)において、vxおよびvyは、現在のブロック702内の各ピクセルのための動きベクトルを形成し、xおよびyは、現在のブロック702内の各ピクセルの位置を与え(たとえば、ブロック中の左上のピクセルは、座標またはインデックス(x,y)=(0,0)を有することができ)、(v0x,v0y)は、左上隅の制御点710の動きベクトルであり、wは、現在のブロック702の幅であり、(v1x,v1y)は、右上隅の制御点712の動きベクトル722である。v0xおよびv1xの値は、それぞれの動きベクトルのための水平の値であり、v0yおよびv1yの値は、それぞれの動きベクトルのための垂直の値である。追加の制御点(たとえば、4つの制御点、6つの制御点、8つの制御点、または何らかの他の数の制御点)は、たとえば、現在のブロック702の下隅、現在のブロック702の中心、または現在のブロック702中の他の位置に追加の制御点ベクトルを追加することによって定義され得る。
[0147]上記の式(1)は、4パラメータの動きモデルを示し、ここで、4つのアフィンパラメータa、b、c、およびdは、
Figure 2022548990000008
Figure 2022548990000009
、c=v0x、d=v0yとして定義される。式(1)を使用して、左上隅の制御点710の動きベクトル(v0x,v0y)と右上隅の制御点712の動きベクトル(v1x,v1y)とを仮定すれば、現在のブロックの各ピクセルのための動きベクトルは、各ピクセルロケーションの座標(x,y)を使用して計算され得る。たとえば、現在のブロック702の左上のピクセル位置について、(x,y)の値は、(0,0)に等しくなり得、その場合、左上のピクセルのための動きベクトルは、Vx=v0xおよびVy=v0yになる。MCPをさらに簡略化するために、ブロックベースのアフィン変換予測が適用され得る。
[0148]図8は、図示されたサブブロック804、806、および808を含むサブブロックに分割された(たとえば、現在のブロック600または現在のブロック702と同様であり得る)現在のブロック802のブロックベースのアフィン変換予測を示す図である。図8に示されている例は、計16個のサブブロックをもつ4×4の区分を含む。任意の好適な区分と対応する数のサブブロックとが他の例では使用され得る。動きベクトルは、式(1)を使用して各サブブロックのために導出され得る。4×4のそれぞれのサブブロックの動きベクトルを導出するいくつかの例では、(図8に示されているように)各サブブロックの中心のサンプルの動きベクトルは、それぞれ対応するサブブロックの中心のサンプルから、サブブロック804のために導出された動きベクトル805、サブブロック806のために導出された動きベクトル807、およびサブブロック808のために導出された動きベクトル809によって示されているように式(1)に従って計算される。他の例では、他のサンプルが使用され得る。いくつかの例では、得られたそれぞれの動きベクトルは、たとえば、1/16の分数精度または他の好適な精度(たとえば、1/4、1/8など)に丸められ得る。動き補償は、各サブブロックの予測を生成するためにサブブロックの導出された動きベクトルを使用して適用され得る。たとえば、復号デバイスは、制御点820の動きベクトル
Figure 2022548990000010
および制御点812の動きベクトル
Figure 2022548990000011
822を記述する4つのアフィンパラメータ(a、b、c、d)を受信することができ、各サブブロックの中心サンプルのロケーションを記述するピクセル座標インデックスに従ってサブブロックごとの動きベクトルを計算することができる。MCPの後に、各サブブロックの高精度の動きベクトルは、上記のように、丸められ得、並進運動ベクトルと同じ精度として保存され得る。さらに、いくつかの例では、アフィンモードでの動きベクトルは、アフィンコーディングモードでアフィン動きベクトルとして動きベクトルを使用するアフィンコーディング動作中に使用されることになる参照データを制限するために制限され得る。いくつかのそのような例では、クリッピングは、以下で、特に、図18A、図18B、および図18Cに関してより詳細に説明されるように、そのようなベクトルに適用され得る。
[0149]図9は、アフィンインター(AF_INTER)モードでの動きベクトル予測の一例を示す図である。JEMでは、2つのアフィン動きモード、すなわち、アフィンインター(AF_INTER)モードおよびアフィンマージ(AF_MERGE)モードがある。いくつかの例では、CUが8つのピクセルよりも長い幅と高さとを有するとき、AF_INTERモードが適用され得る。AF_INTERモードがブロックに適用されたのかどうかを示すためにアフィンフラグが、ブロックに関して(たとえば、CUレベルで)ビットストリーム中に配置され得る(またはシグナリングされ得る)。図9の例において、AF_INTERモードでは、動きベクトルペアの候補リストは、隣接ブロックを使用して構築され得る。たとえば、現在のブロック902の左上隅に位置するサブブロック910について、動きベクトルv0は、サブブロック910の左上の隣接ブロック920と、サブブロック910の上の隣接ブロックB922と、サブブロック910の左の隣接ブロックC924とから選択され得る。さらなる例として、現在のブロック902の右上隅に位置するサブブロック912について、動きベクトルv1は、それぞれ、上および右上の方向の隣接ブロックD926および隣接ブロックE928から選択され得る。動きベクトルペアの候補リストは、隣接ブロックを使用して構築され得る。たとえば、ブロックA920、B922、C924、D926、およびE928にそれぞれ対応する動きベクトルvA、vB、vC、vD、およびvEを仮定すれば、動きベクトルペアの候補リストは、{(v0,v1)|v0={vA,vB,vC},v1={vD,vE}}として表され得る。
[0150]上記のように、図9に示されているように、AF_INTERモードでは、動きベクトルv0は、ブロックA920、B922、またはC924の動きベクトルから選択され得る。隣接ブロック(たとえば、ブロックA、B、またはC)からの動きベクトルは、参照リストと隣接ブロックのための参照のPOCと、現在のCU(たとえば、現在のブロック902)のための参照のPOCと、現在のCUのPOCとの間の関係とに従ってスケーリングされ得る。これらの例では、POCの一部または全部は、参照リストから決定され得る。隣接ブロックD926またはE928からのv1の選択は、v0の選択と同様である。
[0151]場合によっては、候補リストの数が2よりも少ない場合、候補リストは、AMVP候補の各々を複製することによって動きベクトルペアでパディングされ得る。候補リストが2つよりも多いとき、いくつかの例では、候補リスト中の候補は、最初に、隣接動きベクトルの整合性に従って分類され得る(たとえば、整合性は、動きベクトルペア候補中の2つの動きベクトル間の類似性に基づき得る)。そのような例では、最初の2つの候補が保たれ、残りが、破棄され得る。
[0152]いくつかの例では、レートひずみ(RD)コスト検査は、現在のCU(たとえば、現在のブロック902)の制御点動きベクトル予測(CPMVP)としてどの動きベクトルペア候補が選択されるのかを決定するために使用され得る。場合によっては、候補リスト中のCPMVPの位置を示すインデックスは、ビットストリーム中でシグナリングされ得る(あるいは示され得る)。現在のアフィンCUのCPMVPが(動きベクトルペア候補に基づいて)決定されると、アフィン動き推定が適用され得、制御点動きベクトル(CPMV)が決定され得る。場合によっては、CPMVとCPMVPとの差がビットストリーム中でシグナリングされ得る。CPMVとCPMVPとの両方は、並進運動ベクトルの2つのセットを含み、その場合、アフィン動き情報のシグナリングコストは、並進運動のシグナリングコストより高くなる。
[0153]図10Aおよび図10Bは、AF_MERGEモードでの動きベクトル予測の一例を示す。現在のブロック802(たとえば、CU)がAF_MERGEモードを使用してコーディングされるとき、動きベクトルは、有効な隣接する再構築されたブロックから取得され得る。たとえば、アフィンモードを用いてコーディングされた有効な隣接する再構築されたブロックからの第1のブロックは、候補ブロックとして選択され得る。図10Aに示されているように、隣接ブロックは、隣接ブロックA1020、B1022、C1024、D1026、およびE1028のセットの中から選択され得る。隣接ブロックは、候補ブロックとして選択されるための特定の選択順序で検討され得る。選択順序の一例は、左のネイバー(たとえば、ブロックA1020)、それに続く上のネイバー(ブロックB1022)、右上のネイバー(ブロックC1024)、左下のネイバー(ブロックD1026)、左上のネイバー(ブロックE1028)である。
[0154]上記のように、選択された隣接ブロックは、アフィンモードを用いてコーディングされている(たとえば、選択順序の)第1のブロックであり得る。たとえば、ブロックA820は、アフィンモードでコーディングされていることがある。図10Bに示されているように、ブロックA1020は、隣接CU1004中に含まれ得る。隣接CU1004について、隣接CU1004の左上隅(v21030)、右上隅(v31032)、および左下隅(v41034)のための動きベクトルが導出されていることがある。上記の例では、現在のブロック1002の左上隅のための制御点動きベクトルv01040は、v21030、v31032、およびv41034に従って計算される。現在のブロック1002の右上隅のための制御点動きベクトルv11042が決定され得る。
[0155]現在のブロック1002の制御点動きベクトル(CPMV)v01040およびv11042が導出されると、現在のブロック1002のための動きベクトルフィールドを決定するために式(1)が適用され得る。現在のブロック1002がAF_MERGEモードを用いてコーディングされるのかどうかを識別するために、アフィンモードでコーディングされた少なくとも1つの隣接ブロックがあるとき、アフィンフラグがビットストリーム中に含まれ得る。
[0156]多くの場合、アフィン動き推定のプロセスは、元のブロックとアフィン動き予測ブロックとの間のひずみを最小化することによってエンコーダ側でブロックのためのアフィン動きを決定することを含む。アフィン動きが並進運動よりも多くのパラメータを有するので、アフィン動き推定は、並進運動推定よりも複雑になり得る。場合によっては、信号のテイラー展開に基づく高速アフィン動き推定方法が、アフィン動きパラメータ(たとえば、4パラメータモデルにおけるアフィン動きパラメータa、b、c、d)を決定するために実施され得る。
[0157]高速アフィン動き推定は、勾配ベースのアフィン動き探索を含むことができる。たとえば、時間t(ただし、t0は、参照ピクチャの時間である)におけるピクセル値Itを仮定すれば、ピクセル値Itのための1次テイラー展開は次のように決定され得る。
Figure 2022548990000012
[0158]ここで、
Figure 2022548990000013
および
Figure 2022548990000014
は、それぞれ、xおよびy方向のピクセル勾配G0x、G0yであり、一方、
Figure 2022548990000015
および
Figure 2022548990000016
は、ピクセル値Itのための動きベクトル成分VxおよびVyを示す。現在のブロック中のピクセルItのための動きベクトルは、参照ピクチャ中のピクセルItoをポイントする。
[0159]したがって、式(2)は以下のように式(3)として書き直され得る。
Figure 2022548990000017
[0160]ピクセル値Itoのためのアフィン動きVxおよびVyは、予測(Ito+Gx0・Vx+Gy0・Vy)と元の信号との間のひずみを最小化することによって解かれ得る。4パラメータのアフィンモデルを一例として取る。
Figure 2022548990000018
[0161]ここで、xおよびyは、ピクセルまたはサブブロックの位置を示す。式(4)および(5)を式(3)に取り込み、式(3)を使用して元の信号と予測との間のひずみを最小化すると、アフィンパラメータのa、b、c、dの解が決定され得る。
Figure 2022548990000019
[0162]制御点のためのアフィン動きベクトルを定義するアフィン動きパラメータが決定されると、ピクセルごとのまたはサブブロックごとの動きベクトルが、アフィン動きパラメータを使用して(たとえば、式(1)でも表される式(4)および(5)を使用して)決定され得る。式(3)は、現在のブロック(たとえば、CU)のピクセルごとに実行され得る。たとえば、現在のブロックが16ピクセル×16ピクセルである場合、256ピクセルにわたる全体的な値を最小化することによって現在のブロックのためのアフィン動きパラメータ(a,b,c,d)を導出するために、式(6)の最小2乗解が、使用され得る。
[0163]ビデオデータのためのアフィン動きモデルにおいて任意の数のパラメータが使用され得る。たとえば、6パラメータのアフィン動きまたは他のアフィン動きが、4パラメータのアフィン動きモデルについて上記で説明されたアフィン動きと同じ方法で解かれ得る。たとえば、6パラメータのアフィン動きモデルは、次のように記述され得る。
Figure 2022548990000020
[0164]式(7)では、(vx,vy)は、座標(x,y)の動きベクトルであり、a、b、c、d、e、およびfは、6つのアフィンパラメータである。ブロックのためのアフィン動きモデルはまた、ブロックの3つの隅の3つの動きベクトル(MV)
Figure 2022548990000021
Figure 2022548990000022
、および
Figure 2022548990000023
によって記述され得る。
[0165]図11は、3つの対応する制御点1110、1112、および1114の3つの動きベクトル1120、1122、および1124によって記述される現在のブロック1102のアフィン動きフィールドを示す図である。動きベクトル1120(たとえば、
Figure 2022548990000024
)は、現在のブロック1102の左上隅に位置する制御点1110にあり、動きベクトル1122(たとえば、
Figure 2022548990000025
)は、現在のブロック1102の右上隅に位置する制御点1112にあり、動きベクトル1124(たとえば、
Figure 2022548990000026
)は、現在のブロック1102の左下隅に位置する制御点1114にある。現在のブロック1102の動きベクトルフィールド(MVF)は、以下の式によって記述され得る。
Figure 2022548990000027
[0166]式(8)は、6パラメータのアフィン動きモデルを表し、ここで、wおよびhは、現在のブロック1102の幅および高さである。
[0167]4パラメータの動きモデルについて、上記の式(1)を参照しながら説明したが、現在のブロックの幅および高さを使用する簡略化された4パラメータのアフィンモデルが以下の式によって記述され得る。
Figure 2022548990000028
[0168]式(9)に基づくブロックのための簡略化された4パラメータのアフィンモデルは、ブロックの4隅のうちの2つにある2つの動きベクトル
Figure 2022548990000029
および
Figure 2022548990000030
によって記述され得る。動きフィールドは、次のように記述され得る。
Figure 2022548990000031
[0169]前述のように、動きベクトル
Figure 2022548990000032
を、本明細書では制御点動きベクトル(CPMV)と呼ぶ。4パラメータのアフィン動きモデルのためのCPMVは、6パラメータのアフィン動きモデルのためのCPMVと必ずしも同じであるとは限らない。いくつかの例では、異なるCPMVが、アフィン動きモデルのために選択され得る。
[0170]図12は、現在のブロック1202のアフィン動きモデルのための制御点ベクトルの選択を示す図である。現在のブロック1202のための4つの制御点1210、1212、1214、および1216が示されている。動きベクトル1220(たとえば、
Figure 2022548990000033
)は、現在のブロック1202の左上隅に位置する制御点1210にあり、動きベクトル1222(たとえば、
Figure 2022548990000034
)は、現在のブロック1202の右上隅に位置する制御点1212にあり、動きベクトル1224(たとえば、
Figure 2022548990000035
)は、現在のブロック1202の左下隅に位置する制御点1214にあり、動きベクトル1226(たとえば、
Figure 2022548990000036
)は、現在のブロック1202の右下隅に位置する制御点1216にある。
[0171]一例では、(式(1)または式(10)のいずれかによる)4パラメータのアフィン動きモデルについて、制御点ペアは、4つの動きベクトル
Figure 2022548990000037
の任意の2つから選択され得る。別の例では、6パラメータのアフィン動きモデルについて、制御点ペアは、4つの動きベクトル
Figure 2022548990000038
の任意の3つから選択され得る。選択された制御点動きベクトルに基づいて、現在のブロック1002のための他の動きベクトルは、たとえば、導出されたアフィン動きモデルを使用して計算され得る。
[0172]いくつかの例では、代替アフィン動きモデル表現がまた、使用され得る。たとえば、デルタ動きベクトルに基づくアフィン動きモデルは、座標(x0,y0)のアンカー動きベクトル
Figure 2022548990000039
と、水平デルタ動きベクトル
Figure 2022548990000040
と、垂直デルタ動きベクトル
Figure 2022548990000041
とによって表され得る。概して、座標(x,y)の動きベクトル
Figure 2022548990000042
は、
Figure 2022548990000043
として計算され得る。
[0173]いくつかの例では、CPMVに基づくアフィン動きモデル表現は、デルタ動きベクトルを用いた代替アフィン動きモデル表現に変換され得る。たとえば、デルタ動きベクトルアフィン動きモデル表現中の
Figure 2022548990000044
は、左上のCPMV
Figure 2022548990000045
Figure 2022548990000046
と同じである。これらのベクトル演算では、加算、除算、および乗算が要素ごとに適用されることに留意されたい。
[0174]いくつかの例では、アフィン動きベクトル予測は、アフィン動き予測子を使用して実施され得る。いくつかの例では、現在のブロックのためのアフィン動き予測子は、隣接するコード化ブロックのアフィン動きベクトルまたは法線動きベクトルから導出され得る。上記で説明されたように、アフィン動き予測子は、(たとえば、アフィンマージ(AF_MERGE)モードを使用して継承される)継承されたアフィン動きベクトル予測子と(たとえば、アフィンインター(AF_INTER)モードを使用して構築される)構築されたアフィン動きベクトル予測子とを含むことができる。
[0175]継承されたアフィン動きベクトル予測子(MVP)は、現在のブロックの予測されたCPMVを導出するために隣接コード化ブロックの1つまたは複数のアフィン動きベクトルを使用する。継承されたアフィンMVPは、現在のブロックが隣接コード化ブロックと同じアフィン動きモデルを共有するという仮定に基づく。隣接コード化ブロックは、隣接ブロックまたは候補ブロックと呼ばれる。隣接ブロックは、異なる空間的にまたは時間的に隣接するロケーションから選択され得る。
[0176]図13は、隣接ブロック1302(ブロックA)からの現在のブロック1302の継承されたアフィンMVPを示す図である。隣接ブロック1302のアフィン動きベクトルは、制御点1320、1322、および1324におけるそれぞれの動きベクトル1330、1332、および1334
Figure 2022548990000047
に関して
Figure 2022548990000048
Figure 2022548990000049
Figure 2022548990000050
のように表される。一例では、隣接ブロック1304のサイズは、パラメータ(w,h)によって表され得、ここで、wは、隣接ブロック1304の幅であり、hは高さである。隣接ブロック1304の制御点の座標は、(x0,y0)、(x1,y1)、および(x2,y2)として表される。
Figure 2022548990000051
Figure 2022548990000052
Figure 2022548990000053
として表されるアフィン動きベクトル1340、1342、および1344は、それぞれの制御点1310、1312、および1314において現在のブロック1302のために予測され得る。現在のブロック1302のための予測されたアフィン動きベクトル
Figure 2022548990000054
Figure 2022548990000055
Figure 2022548990000056
は、以下の式に記述されているように式(8)中の(x,y)を現在のブロック1302の制御点と隣接ブロック1304の左上の制御点との間の座標差で置き換えることによって導出され得る。
Figure 2022548990000057
[0177]式(11)~(13)において、(x0’,y0’)、(x1’,y1’)、および(x2’,y2’)は、現在のブロック1102の制御点の座標である。デルタMVとして表される場合、
Figure 2022548990000058
であり、
Figure 2022548990000059
であり、
Figure 2022548990000060
である。
[0178]同様に、隣接コード化ブロック(たとえば、隣接ブロック1304)のアフィン動きモデルが4パラメータのアフィン動きモデルである場合、現在のブロック1102のための制御点においてアフィン動きベクトルを導出する際に式(10)が適用され得る。いくつかの例では、4パラメータのアフィン動きモデルを取得するために式(10)を使用することは、上記の式(13)を回避することを含むことができる。
[0179]図14は、現在のブロック1402のための継承されたアフィンMVPモデルにおいて使用するための隣接候補ブロックのための可能なロケーションを示す図である。たとえば、現在のブロックの制御点1410、1412、および1414におけるアフィン動きベクトル1440、1442、および1444または
Figure 2022548990000061
は、隣接ブロック1430(ブロックA0)、1426(ブロックB0)、1428(ブロックB1)、1432(ブロックA1)および/または1420(ブロックB2)のうちの1つから導出され得る。場合によっては、隣接ブロック1424(ブロックA2)および/または1422(ブロックB3)がまた、使用され得る。より詳細には、現在のブロック1402の左上隅に位置する制御点1410における動きベクトル1440(たとえば、
Figure 2022548990000062
)は、制御点1410の左上に位置する隣接ブロック1420(ブロックB2)、制御点1410の上に位置する隣接ブロック1422(ブロックB3)、または制御点1410の左に位置する隣接ブロック1424(ブロックA2)から継承され得、現在のブロック1402の右上隅に位置する制御点1412における動きベクトル1442または
Figure 2022548990000063
は、制御点1410の上に位置する隣接ブロック1426(ブロックB0)または制御点1410の右上に位置する隣接ブロック1428(ブロックB1)から継承され得、現在のブロック1402の左下隅に位置する制御点1414における動きベクトル1444または
Figure 2022548990000064
は、制御点1410の左に位置する隣接ブロック1430(ブロックA0)または制御点1410の左下に位置する隣接ブロック1432(ブロックA1)から継承され得る。
[0180]現在、いくつかの設計では(たとえば、MPEG5エッセンシャルビデオコーディング(EVC)では)、アフィン継承が、上記のCTU行中のアフィンコード化隣接ブロックからのものであるとき、左下のおよび右下のサブブロックMVがCPMVとして採用され、4パラメータのアフィンモデルが、常に、現在のCUのCPMVを導出するために使用される。
[0181]図15は、MPEG5 EVCにおけるアフィンモデルと空間近傍とを示す図である。図15は、サブブロック1542および1544を有する隣接候補ブロック1540をもつ現在のCTU1500ならびに左ネイバーサブブロック1552および左下のネイバーサブブロック1554を示す。図15が、CTUを使用する例示的な例を与えるが、他の例では、現在のCTUは、CU、PU、TUなどの別のブロックであり得る。現在のCTU1500は、制御点1510、1512、および1514と関連するCPMV1520、1522、および1524とをもつ現在のブロック1502を含む。左上のCPMV1520は、
Figure 2022548990000065
と呼ばれ、右上のCPMV1522は、
Figure 2022548990000066
として示される。図示の例では、CPMV1520および1522は、現在のCTU1500の上に位置する候補ブロック1540を含む隣接アフィンコード化CUの関連するMV
Figure 2022548990000067
(図示せず)を有する左下のサブブロック1542と動きベクトル
Figure 2022548990000068
(図示せず)を有する右下のサブブロック1544とのための動きベクトルによって導出されることになる現在のCU(たとえば、現在のブロック1502)のCPMVとして指定される。
CPMV1520および1522は、図15において
Figure 2022548990000069
および
Figure 2022548990000070
として示されており、以下の式によって導出され得、
Figure 2022548990000071
ここで、neiWは、隣接ブロックの幅であり、curWは、現在のブロックの幅であり、posNeiXは、隣接ブロックの左上のピクセル(または、いくつかの例では、サンプル)のx座標であり、posCurXは、現在のブロックの左上のピクセル(または、いくつかの例では、サンプル)のx座標である。
[0182]場合によっては、AF_4_INTERモード、AF_6_INTER、およびAF_MERGEモードの3つのアフィン予測動きモードがある。マージ/スキップフラグが真であり(たとえば、1の値に等しく)、CUのための幅と高さとの両方が、8つのサンプル(または他の数のサンプル)であるとき、アフィンマージモードが使用されるのかどうかを示すために、CUレベル(または他のブロックレベル)でのアフィンフラグがビットストリーム中でシグナリングされる。また、CUが、AF_MERGEとしてコーディングされるとき、最大値4(または、場合によっては、他の値)をもつマージ候補インデックスが、アフィンマージ候補リスト中のどの動き情報候補がCUのために使用されるのかを指定するためにシグナリングされる。
[0183]アフィンマージ候補リストは、以下のステップとして構築され得る。1)モデルベースのアフィン候補を挿入し、ここで、モデルベースの候補は、それの有効な空間隣接アフィンコード化ブロックのアフィン動きモデルから導出される。候補位置のための走査順序は、図6A、図6B、および/または図6Cのマージリスト順序と同じであり得、0から5までの位置を含む。2)制御点ベースのアフィン候補を挿入する。アフィンマージリストサイズに対する制限が満たされない場合、制御点ベースのアフィン候補が挿入される。制御点ベースのアフィン候補は、アフィンマージ候補を形成するために各制御点の隣接動き情報を組み合わせることによって候補が構築されることを意味する。
[0184](CP1~CP4として示される)4つの制御点またはCPの総数は、それぞれ、座標(0,0)、(W,0)、(H,0)および(W,H)で使用され、ここで、WおよびHは、現在のブロックの幅および高さである。
[0185]アフィンマージリストの構築プロセスの複雑性を簡略化するために、制御点ベースのアフィンマージ候補を導出するときにスケーリングは実行されない。制御点動きベクトルが異なる参照インデックスをポイントしているか、または参照インデックスが無効である場合、候補は、利用不可能であると見なされることになる。
[0186]マージ/スキップフラグが偽であり(たとえば、0の値に等しく)、CUのための幅と高さとの両方が、16個のサンプル(または、場合によっては、他の数のサンプル)であるとき、アフィンインターモード(たとえば、AF_4_INTERモードまたはAF_6_INTERモード)が使用されるのかどうかを示すために、CUレベルでのアフィンフラグがビットストリーム中でシグナリングされる。CUがアフィンインターモードとしてコーディングされるとき、CUのために4パラメータのアフィンモデルが使用されるのかまたは6パラメータのアフィンモデルが使用されるのかを指定するためにモデルフラグがシグナリングされる。モデルフラグが真である(たとえば、1の値に等しい)場合、AF_6_INTERモード(6パラメータのアフィンモデル)が適用され、3つのMVDがパースされることになり、そうでない場合、モデルフラグが偽である(たとえば、0の値に等しい)場合、AF_4_INTERモード(4パラメータのアフィンモデル)が適用され、2つのMVDがパースされることになる。
[0187]アフィンAMVP候補リストは、以下のステップとして構築され得る。1)モデルベースのアフィン候補を挿入する。2)制御点ベースのアフィン候補を挿入する。3)並進ベースのアフィンAMVP候補を挿入する。4)0動きベクトルでパディングする。
[0188]アフィンマージ候補リスト中の候補の数が2(または、場合によっては、他の値)よりも小さい場合、リストが満ちるまで、0の参照インデックスをもつ0動きベクトルが挿入される。リスト構築の複雑性を低減するために、プルーニングは適用されない。
[0189]小さいブロックサイズ(たとえば、4×8および8×4サイズ)のためのサンプル導出アフィンモードが実行され得る。MPEG5 EVCでは、アフィンコーディングのための最小ブロックサイズは、8×8に等しくなるように設定される。しかしながら、エンコーダは、4×8でまたは8×4のサブブロックサイズでアフィン予測を実装するように選択することができる。MPEG5 EVCは、拡張補間フィルタ(EIF:enhanced interpolation filter)を通してそのようなサブブロックサイズのためのアフィン予測を指定する。EIFは、サンプルごとに独立して動きベクトルを計算するサンプルごとの予測を用いるアフィン予測を可能にする。MVが参照ピクチャの外をポイントするのを防ぐために、サンプルごとの得られたMVは、ピクチャサイズにクリッピングされる。下記のMPEG EVCの抜粋は、「<highlight>」シンボルと「<highlightend>」シンボルとの間の下線付きの(以下、下線は省略する)テキスト(たとえば、「<highlight>強調テキスト<highlightend>」)でマークされるEIFを用いたアフィン予測の実装を示す。
affine_flagが1に等しく、変数sbWidth、sbHeightのうちの1つが8より小さい場合、以下が適用される。
-動きベクトルの水平変化dXと、動きベクトルの垂直変化dYと、ベース動きベクトルmvBaseScaledとは、入力としてルーマコーディングブロック幅nCbWと、ルーマコーディングブロック高さnCbHと、制御点動きベクトルの数numCpMvと、制御点動きベクトルcpMvLX[cpIdx]、ただし、cpIdx=0..numCpMv-1とを用いて節8.5.3.9に指定されているプロセスを呼び出すことによって導出される。
-アレイpredSamplesLXLは、入力としてルーマロケーション(xSb,ySb)と、ルーマコーディングブロック幅nCbWと、ルーマコーディングブロック高さnCbHと、動きベクトルの水平変化dXと、動きベクトルの垂直変化dYと、ベース動きベクトルmvBaseScaledと、参照アレイrefPicLXLと、サンプルbitDepth bitDepthYと、ピクチャ幅pic_width_in_luma_samplesと、高さpic_height_in_luma_samplesとを用いて節8.5.4.3に指定されている拡張補間フィルタのための補間プロセスを呼び出すことによって導出される。
[0190]1.1.1.1 制御点動きベクトルからのアフィン動きモデルパラメータのための導出プロセス
プロセスの入力は、以下の通りである。
-ルーマコーディングブロックの幅および高さを指定する2つの変数cbWidthおよびcbHeight、
-制御点動きベクトルの数numCpMv、
-制御点動きベクトルcpMvLX[cpIdx]、ただし、cpIdx=0..numCpMv-1であり、Xは0または1である。
[0191]プロセスの出力は、以下の通りである。
-動きベクトルの水平変化dX、
-動きベクトルの垂直変化dY、
-ルーマコーディングブロックの左上隅に対応する動きベクトルmvBaseScaled。
[0192]変数log2CbWおよびlog2CbHは、次のように導出される。
Figure 2022548990000072
[0193]動きベクトルの水平変化dXは、次のように導出される。
Figure 2022548990000073
[0194]動きベクトルの垂直変化dYは、次のように導出される。
-numCpMvが3に等しくなる場合、dYは、次のように導出される。
Figure 2022548990000074
-そうでない場合(numCpMvが2に等しくなる)、dYは、次のように導出される。
Figure 2022548990000075
[0195]ルーマコーディングブロックの左上隅に対応する動きベクトルmvBaseScaledは、次のように導出される。
Figure 2022548990000076
[0196]1.1.1.2 拡張補間フィルタのための補間プロセス
プロセスの入力は、以下の通りである。
-フルサンプルユニット中でのロケーション(xCb,yCb)、
-現在のコーディングブロックの幅および高さを指定する2つの変数cbWidthおよびcbHeight、
-動きベクトルの水平変化dX、
-動きベクトルの垂直変化dY、
-動きベクトルmvBaseScaled、
-選択された参照ピクチャサンプルアレイrefPicLX、
-サンプルビット深度bitDepth、
-サンプル中のピクチャの幅pic_width、
-サンプル中のピクチャの高さpic_height。
[0197]プロセスの出力は、以下の通りである。
-予測サンプル値の(cbWidth)×(cbHeight)のアレイpredSamplesLX。
[0198]変数shift1、shift2、shift3、offset1、offset2、およびoffset3は、次のように導出される。
shift0は、bitDepth-6に等しく設定され、offset0は、2shift1-1に等しくなり、
shift1は、11に等しく設定され、offset1は、1024に等しくなる。
<highlight>x=-1..cbWidthおよびy=-1..cbHeightの場合、以下が適用される。
-動きベクトルmvXは、次のように導出される。
Figure 2022548990000077
-変数xInt、yInt、xFracおよびyFracは次のように導出される。
Figure 2022548990000078
[0199]所与のアレイrefPicLX内のロケーション(xInt,yInt)は、次のように導出される。
Figure 2022548990000079
[0200]変数ax,y、ax+1,y、ax,y+1、ax+1,y+1は、次のように導出される。
Figure 2022548990000080
[0201]ロケーション(x,y)に対応するサンプル値bx,yは、次のように導出される。
Figure 2022548990000081
[0202]拡張補間フィルタ係数eF[]は、{-1,10,-1}として指定される。
[0203]変数shift2、shift3、offset2、およびoffset3は、次のように導出される。
shift2は、4に等しく設定され、offset2は、8に等しくなり、
shift3は、15-bitDepthに等しく設定され、offset3は、2shift3-1に等しくなる。
[0204]x=0..cbWidthー1およびy=-1..cbHeightの場合、以下が適用される。
Figure 2022548990000082
[0205]x=0..cbWidthー1およびy=0..cbHeight-1の場合、以下が適用される。
Figure 2022548990000083
[0206]拡張補間フィルタ(EIF)に導入されたサンプルごとのMV生成は、フィルタサンプルをフェッチするために必要とされるメモリアクセスの数を潜在的に増加させ、したがって、メモリ帯域幅を増加することができる。メモリアクセスの数の増加は、単予測におけるブロックサイズ4×8もしくは8×4(もしくは他のブロックサイズ)のための一般に使用される1メモリフェッチまたは双予測ブロックのための2メモリフェッチよりもはるかに高くなり得る。
[0207]上記で説明されたように、多数のフェッチ動作は、必要とされる参照エリアがローカルバッファ中で利用可能である場合などに問題にならないことがある。現在のEIF設計は、ピクチャ境界にMVクリッピングを導入し、これは、ピクチャ全体がローカルバッファにおいて利用可能であることを必要とする。上記のように、本明細書では、アフィンモードコーディングを改善する技法およびシステムについて説明する。本明細書で説明される技法の各々は、個々にまたは任意の組合せで実施され得る。いくつかの例では、本明細書で説明されるシステムおよび技法は、場合によっては,ブロックサイズに応じて設定され得るある限界に(たとえば、EIFによって)アフィンサンプル生成からアクセスされ得る参照ピクチャエリアを(制限(restriction)または制約(constrain)を使用して)抑制する。いくつかの例では、システムおよび技法は、たとえば、8×8未満もしくは4×8未満もしくは8×4未満のいくつかのブロックサイズまたは他のブロックサイズへの制限または制約を適用する。場合によっては、制限または制約は、ブロックの寸法に応じて指定され得る。
[0208]制限または制約は、異なる手法を通して課され得る。そのような制約の1つの例示的で非限定的な例は、次のように実装され、アフィン動き制約についてのMPEG EVCの記述に対する修正として説明され得る。たとえば、符号化デバイスおよび/または復号デバイスは、1つまたは複数のアフィン動きベクトルまたはそれらの出力(たとえば、アフィン動きベクトルによってポイントされた参照サンプルの座標)を制約および/またはクリッピングすることができ、したがって、制約/クリッピングすることは、より高い粒度(たとえば、サブブロックまたはサンプル)のアフィンベクトルが許可されたエリアを超えないことになることを保証する。そのような制約が導入され得る形態の2つの例は、ビットストリーム要件(準拠)と規範的な復号プロセスとを含む。1つまたは複数のアフィン動きベクトル(MV)のクリッピングを通して実装され得る規範的な復号プロセスの1つの例示的な例は、以下の通りである(「<insert>」シンボルと「<insertend>」シンボルとの間の下線付きの(以下、下線は省略)テキスト(たとえば、「<insert>追加されたテキスト<insertend>)でマークされるテキストを追加することによって上記の強調された部分を修正する。
動きベクトルmvXは、次のように導出される。
Figure 2022548990000084
ここで、クリッピングパラメータは、ブロックサイズと、現在のブロック/サンプル座標と、MVとの関数として導出される。
[0209]上記の場合、空間座標のクリッピングは、必要とされず、1つまたは複数の実装から除去され得、これは、上記の対応するセクション8-734および8-735に関して<delete>シンボルと<deleteend>シンボルとの間の取り消し線(以下、取り消し線は省略)テキスト(<delete>削除されたテキスト<deleteend>)として以下に示す。
<delete>xInt=Clip3(MinX,MaxX-1,xInt) (8-734)
yInt=Clip3(MinY,MaxY-1,yInt) (8-735)<deleteend>
iii.次のようにデータフェッチのための実際の座標のクリッピングを通して実装され得る規範的な復号プロセス
Figure 2022548990000085
ここで、クリッピングパラメータは、ブロックサイズと、現在のブロック/サンプル座標と、MVとの関数として導出される。
[0210]いくつかの例では、クリッピングパラメータは、たとえば、MV v0(左上のCP)によってまたはアフィンモデルによって与えられる他のMV(たとえば、v1またはv2)によってポイントされるX/Y座標からのアフィンブロックの異なる空間位置のために導出される1つまたは複数のMVを考慮に入れることによって導出され得る。そのような実装形態の一例は、しきい値を使用して以下の通りである。
Figure 2022548990000086
[0211]図16は、いくつかの例による、アフィンモデルと空間近傍との態様を示す図である。図16は、現在のCTU1500ならびに隣接するブロックおよびサブブロックと図15からの上記の関連する制御点および動きベクトルとを示す。図16が、CTUを使用する例示的な例を与えるが、他の例では、現在のCTUは、CU、PU、TUなどの別のブロックであり得る。
[0212]上記で詳述したように、現在のブロック1502のアフィンコーディングは、参照データを使用することができる。そのような参照データは、図16に示される参照1670からのものであり得る。場合によっては、参照1670は、現在のブロック1502のための参照ピクチャとして識別されるピクチャの部分であり得る。いくつかの状況下では、アフィン動きベクトルは、参照ピクチャの大きく異なる部分への指示と矛盾し得る(たとえば、現在のブロックとの大きな変化を有することができる)。たとえば、上記で説明されたように、アフィン動きは、変化する視点(たとえば、カメラ位置の移動)による動きに関連付けられ得るので、アフィン動きベクトルは、ブロックにわたってかなり一致することが予想され得る。いくつかの状況では、しかしながら、ブロックの1つのサンプルのためのアフィン動きベクトルは、ブロックの別のサンプルのためのアフィン動きベクトルとは大きく異なる(たとえば、大規模な大きさで異なる方向にポイントしている)。そのような状況が発生するとき、アフィン動きベクトルによって示される参照データ(たとえば、参照1670)にアクセスするために使用されるメモリ帯域幅は、パフォーマンスを劣化させる可能性がある。
[0213]本明細書で説明される例は、アフィン動きベクトルによって場合によっては示され得る参照1670中のデータを(たとえば、境界エリア1660に)制限するためにアフィン動きベクトルのクリッピングを実施するデバイス(たとえば、符号化デバイス104または復号デバイス112)を含むことができる。いくつかの例では、そのようなクリッピングは、しきい値(たとえば、上記の「しきい値」)を用いて行われ得る。いくつかの例では、しきい値は、図16に示されているように、(たとえば、現在のブロック1502をコーディングする際に使用するためにメモリまたはDCB中に記憶される参照1670のエリアであるメモリアクセス領域と見なされ得る)境界エリア1660を定義するために基準として利用されるブロックサイズのユーザおよび/またはシステムに指定された比率であり得る。参照1670(たとえば、参照ピクチャまたは参照ブロックなどの参照ピクチャの部分)は、アフィン動きベクトル(たとえば、クリッピングパラメータ)に適用される制限に基づいて1つまたは複数のアフィン動きベクトルによってポイントされ得る境界エリア1660(たとえば、参照1670の部分)を含む。矢印1690は、現在のブロック1502と境界エリア1660との中のサンプルまたはポイントの間の関係を示し、したがって、アフィン動きベクトルは、境界エリア1660に(たとえば、クリッピングパラメータによって)制限される。異なるアフィン動きパラメータに応じて、現在のブロック1502のサンプルとアフィンベクトルによって示される境界エリア1660の中のデータとの間の関係は、アフィンコーディングモードでコーディングされた特定のアフィン動きに一致するように変化させることができる。現在のブロック(たとえば、現在のブロック1502)のサンプルと参照ピクチャから参照されるデータ(たとえば、参照1670中の境界エリア1660からのデータ)との間の関係に関係するさらなる詳細について、図18A、図18B、および図18Cに関して以下で詳細に説明する。多くの状況では、アフィン動きベクトルは、現在のブロック(たとえば、現在のブロック1502)にわたって(たとえば、上記で説明されたように視点の移動などのアフィン動きの性質により)一致する値を有することになり、その場合、アフィン動きベクトルを制限することからのパフォーマンスの劣化は、一般に、制限されることになる。
[0214]境界エリア1660への可能な参照データの制限は、メモリ帯域幅に関連するパフォーマンス劣化を防ぐことができ、メモリ中にバッファリングされ、現在のブロック1502のアフィンコーディングのために使用され得る管理しやすいサイズに参照されることになる可能なデータを制限することができる。本明細書で説明されるクリッピングパラメータ(たとえば、(cbWidth)×(cbHeight)アレイ、水平最大変数、水平最小変数、垂直最大変数、および垂直最小変数などの変数、または現在のブロック1502などの現在のブロックのためのアフィン動きベクトルによって示された参照ピクチャデータを制限するために使用される任意の他のそのようなパラメータ)は、現在のブロック1502および参照1670のコンテキストで境界エリア1660を定義するために様々な例で使用され得、現在のブロック1502をコーディングする際に使用するために境界エリア1660に関連する参照データを記憶するためにさらに使用され得る。
[0215]図17は、いくつかの例による、アフィンモデルと空間近傍との態様を示す図である。図16と同様に、図17は、現在のCTU1500ならびに隣接するブロックおよびサブブロックと図15からの関連する制御点および動きベクトルとを示す。図17が、CTUを使用する例示的な例を与えるが、他の例では、現在のCTUは、CU、PU、TUなどの別のブロックであり得る。いくつかの例では、図17によって示され、上記で説明されたように、クリッピングパラメータは、アフィンブロックの異なる空間位置のために導出された1つまたは複数の動きベクトル(たとえば、アフィンサブブロックのために生成された実際のアフィンMV)または現在のブロック内のアフィンサンプルを考慮に入れることによって導出され得る。例示的な実装形態は、次のクリッピングパラメータ
Figure 2022548990000087
[0216]と、次のようなクリッピングされた動きベクトル
Figure 2022548990000088
とを含むことができる。
[0217]他の例は、そのような動きベクトルとクリッピングパラメータとの他の実装形態を含むことができる。
[0218]上記のように、しきい値(たとえば、アフィン動きベクトルによって示され得る参照データを制限するために使用される境界エリア1660を示すしきい値)は、図17に示されているように、メモリアクセス領域(たとえば、境界エリア1760)を定義するための基準として利用されるブロックサイズのユーザおよび/またはシステムに指定された比率であり得る。図17では、(たとえば、図16の境界エリア1660と同様の)参照境界エリア1760は、現在のブロック1502のサンプルからのアフィン動きベクトル(たとえば、境界エリア1760の外の参照ピクチャからのデータが示されることを防ぐ所与のクリッピング制限)によってポイントされ得る参照ピクチャのデータのための境界エリアを指定する。現在のブロックの参照エリア1750は、(たとえば、矢印1790に関連する並進運動が使用されるという仮定の下で)中央ロケーションのための動きベクトルによってポイントされる現在のブロック1502のブロックサイズの代表例を示す。現在のブロック1502を処理するためにアクセス可能な参照ピクチャのエリア(たとえば、境界エリア1760)は、以下でより詳細に説明されるように、アフィンベクトルの許容できる変動により現在のブロックの参照エリア1750よりも大きい。現在のブロック1502のサンプルロケーションのために生成されるまたはサブブロック1542、1544、1552、もしくは1554などの関係するサブブロックからのベクトルのために生成されるアフィン動きベクトルは、アフィンコーディングの部分として実装される制約またはクリッピングパラメータに従って境界エリア1660内のロケーションにポイントする。クリッピングまたはしきい値制限を受けるアフィン動きベクトルと関連する参照データとのさらなる詳細について、図18A、図18B、および図18Cに関して以下で説明する。
[0219]いくつかの例では、CUのためのCP動きベクトルをスケーリングおよび/もしくはクリッピングすることが実施され得るか、または得られた動きベクトル変化パラメータ(dXmv,dYmv)は、より高い粒度(たとえば、サブブロックまたはサンプル)のアフィンベクトルが(たとえば、境界エリア1660もしくは1760などの)許可されたエリアを超えるであろうことを検証するために使用され得る。そのような制約が導入され得る形態の2つの例は、(たとえば、準拠のための)ビットストリーム要件と規範的な復号プロセスとを含む。規範的な復号プロセスは、アフィン動きベクトルに課せられた制約を保証するためにCP MVのクリッピングを通して、またはCP MVもしくは変化パラメータを再調整/スケーリングすることを通して実装され得る。
[0220]いくつかの例では、CPロケーションのMV{v0,v1,v2}は、アフィンMV導出でのそれらの利用の前にクリッピングされ得る。たとえば、CP MVのうちの1つ(たとえば、v0)は、ベースと見なされ得、他のCP MV(たとえば、v1およびv2)は、他のCP MVが境界エリアの外をポイントしているのかどうかを決定するためにチェックされ得る(これは、境界ブロック違反が識別されるのかどうかをチェックすることと呼ばれることがある)。そのような境界ブロック違反が識別される場合、識別されたベクトルは、比例的にスケーリングされ、境界エリア内でポイントされ得、それの片側(隅)は、ベースMV(たとえば、v0)によって指定される。同様の技法が、3つのCP動きベクトルよりも少数(たとえば、v0、v1、v2よりも少数)を有するアフィン動きモデルおよび/または3つのCP動きベクトルよりも多数(たとえば、v0、v1、v2よりも多数)を有するアフィン動きモデルに適用され得る。
[0221]別の例では、v0、v1およびv2の動き情報は、変更されないままであり得るが、しかしながら、アフィンパラメータdXおよびdYは、アフィンMVが境界ブロックの外をポイントするのを防ぐために相応にスケーリングされることになる。そのような実装形態の一例を、「<insert2>」シンボルと「<insertend2>」シンボルとの間の下線付き(以下、下線は省略)のテキストでマークされるテキスト(たとえば、「<insert2>追加されたテキスト<insertend2>)を用いて以下で示す。同様の技法が、3つのCP動きベクトルよりも少数(たとえば、v0、v1、v2よりも少数)を有するアフィン動きモデルおよび/または3つのCP動きベクトルよりも多数(たとえば、v0、v1、v2よりも多数)を有するアフィン動きモデルに適用され得る。
1.1.1.3 制御点動きベクトルからのアフィン動きモデルパラメータのための導出プロセス
プロセスの入力は、以下の通りである。
-ルーマコーディングブロックの幅および高さを指定する2つの変数cbWidthおよびcbHeight、
-制御点動きベクトルの数numCpMv、
-制御点動きベクトルcpMvLX[cpIdx]、ただし、cpIdx=0..numCpMv-1であり、Xは0または1である。
プロセスの出力は、以下の通りである。
-動きベクトルの水平変化dX、
-動きベクトルの垂直変化dY、
-ルーマコーディングブロックの左上隅に対応する動きベクトルmvBaseScaled。
変数log2CbWおよびlog2CbHは、次のように導出される。
Figure 2022548990000089
<insert1>クリップcpMvLX動きベクトルを(wBB,hBB,cbWidth,cbHeight,xCb,yCb,ratio)の境界ブロックサイズへ呼び出す<insertend1>
動きベクトルの水平変化dXは、次のように導出される。
Figure 2022548990000090
動きベクトルの垂直変化dYは、次のように導出される。
-numCpMvが3に等しくなる場合、dYは、次のように導出される。
Figure 2022548990000091
-そうでない場合(numCpMvが2に等しくなる)、dYは、次のように導出される。
Figure 2022548990000092
<insert2>cpMvLX動きベクトルと、境界エリアパラメータと、現在のブロックパラメータcbWidth、cbHeightと、局所座標とからスケーリングパラメータscDXおよびscDYを導出する。得られたMVが境界ブロックの外をポイントするのを防ぐために比例的にdXおよびdYパラメータをスケーリングする。<insertend2>
Figure 2022548990000093
ルーマコーディングブロックの左上隅に対応する動きベクトルmvBaseScaledは、次のように導出される。
Figure 2022548990000094
[0222]いくつかの例では、動き補償のためにアクセス可能な動きベクトルおよび/または空間座標は、ピクチャ境界の代わりにしきい値に対してクリッピングされる。しきい値を使用して動きベクトルまたは空間座標をクリッピングすることは、(たとえば、EVC規格において提示されるクリッピングプロセスなどの)既存のクリッピングプロセスから利益を得るために実施され得る。たとえば、クリッピングのパラメータは、次のように作表されたパラメータからブロックごとに1回計算され得る(強調テキストは、「<highlight>」シンボルと「<highlightend>」シンボルとの間の下線で(以下、下線は省略)マークされる(たとえば、「<highlight>強調テキスト<highlightend>)。
Figure 2022548990000095
[0223]本明細書で説明されるように、アフィンサンプル生成は、EVC、VVC、および/または他の既存のもしくは開発されることになっているコーディング規格などの規格ベースのコーディングを含むビデオコーディング(たとえば、ビデオ符号化および/または復号)のために使用され得る。ビデオコーディングにおけるアフィンコーディングモードは、予測処理動作を用いてコーディングされている現在のブロック(たとえば、現在のブロック1502)のためのノンリレーショナル動きベクトルを可能にする。いくつかのそのようなものシステムでは、上記で説明されたように、現在のブロック(たとえば、CU、CTU、PU、TU、または他のブロック)全体のための単一の動きベクトルはない。代わりに、ブロック内のいくつかのサンプルが独立したアフィン動きベクトルを有する。そのようなブロック中の各サンプルは、ブロックのために識別された参照ピクチャの周りを遠く離れてポイントすることができる独立した動きベクトルを有し得る。限界なしに動作するアフィンモードコーダは、(たとえば、DPBの容量を超える参照ピクチャデータを使用して)コーディングする際に予測動作のために有意なメモリリソースを使用して広いエリアの参照ピクチャからのエリアを呼び出すかまたはフェッチすることができる。いくつかのそのようなシステムでは、拡張補間フィルタ(EIF)が、サンプルごとに独立した動きベクトルを生成し、そのようなベクトルのためのデータを別々にフェッチすることは、帯域幅集約的であり、有意な計算リソースを使用する可能性がある。フェッチされた参照データは、動きベクトルによって示される参照ピクチャのエリアからサンプルを記憶するメモリ中に記憶(たとえば、バッファ)される。許容できるパフォーマンスを与えるために、メモリにフェッチされ得る参照可能なデータは、本明細書で説明される例に従ってパラメータをクリッピングすることによって制限され得る。
[0224]制限は、座標を制限すること、アフィンモード予測によって使用される動きベクトルを制限すること、クリッピングのためのアフィンパラメータを修正すること、定義されたエリアの外にあるベクトルをクリッピングするために使用される区分表を用いて水平および垂直動きベクトルに対する制約をクリッピングすること、他のそのような制限を使用することを含む様々な方法で行われ得る。いくつかの例は、動きベクトルの大きさを中央ロケーションの周りのある境界(たとえば、以下で説明される図16の境界エリア1660または図17の境界エリア1760または図18の中心位置1854の周りの境界エリア1810)によって制限するように制限するデバイスおよびプロセスを含む。いくつかのそのような例は、現在のブロックを得ること、アフィン予測のための制御点を得ること、合成動きベクトルを生成すること、ブロックの中央に位置するサンプルのための動きベクトルを近似することによって動作することができる。いくつかのそのような例では、中心ロケーションは、参照からデータを(たとえば、参照ピクチャからの境界エリア1660または1760からデータを)記憶するためにDPBとともに使用され得る。いくつかの例では、ブロックのために許可されるアフィン動きベクトルの最小値-最大値(min-max)偏差が、ベクトルのための制限領域の外をポイントするあらゆるベクトルが制限領域にクリッピングされた状態で定義され得る。
[0225]いくつかの例では、異なるブロックサイズに対して、異なる参照エリアのサイズをフェッチするようにコーディングデバイスによってアフィンコーディングモードの動作が構成される。いくつかの例では、サイズ比は、特定のデバイスまたはシステムのために(たとえば、パフォーマンスの劣化なしに)計算量的に実現可能であるものにデバイス構成によって関連付けられる。いくつかの例では、サンプルごとに、コーディングデバイスは、一定数の参照サンプルをフェッチするようにアフィンコーディングモードによって構成される。本明細書で説明されるいくつかのそのような例では、いくつかのブロックサイズのためのしきい値は、アフィンコーディングモードの部分として示される。他の例では、他のしきい値が使用され得る。いくつかの例では、アフィン動きベクトルクリッピングパラメータは、参照ピクチャ中の中央ベクトルと他の入力値とからアフィンコーディングモード動作の部分として導出され得る。動きベクトルをもつ中央サンプルをもついくつかのそのような例では、動きベクトルは、参照ピクチャ中の位置をポイントする。そのような例における参照ピクチャ中の位置は、参照エリアの中央ロケーションを与える。参照エリアのサイズは、いくつかの例では、中央の動きベクトルによって識別される中央ロケーションによって固定される偏差値によって定義される。
[0226]いくつかの例では、クリッピングパラメータは、ブロックサイズに依存する偏差である。たとえば、偏差Aおよび偏差Bは、Deviation_A[5]={16,80,224,512,1088 }、Deviation_B[5]={16,96,240,528,1104}として上記で説明された指定された値を有する。そのような値は、画像解像度などのいくつかのサイズ値に基づいて指定され、異なるサイズ値(たとえば、異なる画像解像度)をもつ画像によって異なることになる。
[0227]上記で説明されたように、いくつかの例では、アフィンコーディングを受ける現在のブロック中のサンプルは、参照ピクチャをポイントするアフィン動きベクトルを有する。動きベクトルは、参照可能なエリア(たとえば、境界エリア1660または1760などのエリア)が定義される中心位置を設定する。アフィン動きベクトルは、アフィンコーディング動作の部分として標準アフィン動きベクトル生成プロセスから定義される。制御点動きベクトルが決定され、サブブロックまたはサンプルの動きベクトルは、アフィン動きモデルに基づいてアフィンコーディング動作の部分として導出される。
[0228]図18Aは、いくつかの例による、しきい値を使用してクリッピングすることの態様を示す図である。図18Aの例に示されているように、ブロック1860は、本明細書で説明される例によるEIFアフィンコーディングの実装形態をもつ現在のCUである。ブロック1860のサンプル1852から中央動きベクトル1850によってポイントされる参照ピクチャのブロックサイズエリア1862は、ブロック1860(CU)と同じサイズの参照ブロックサイズエリア1862を定義する。境界エリア1810および参照ブロックサイズエリア1862の中心位置1854。エリア1864、1866、および1868は、サンプル1852、1842、および1832に対応する動きベクトル1850、1840、および1830のための許容偏差を示す。いくつかの例では、エリア1864、1866、および1868のためのエリアサイズは、(たとえば、8のサイズについて)((MV(center)-1)/(MV(center)+1))個の整数ピクセルによって与えられる偏差によって定義される。
[0229]上記で説明されたように定義された制限または偏差を用いて、いくつかの例では、サンプル1832に関連する左上の位置1834は、エリア1864のための中央のMV(center)-1/MV(center)+1(たとえば、中央動きベクトル1830)によって依然として制限される偏差幅/2(w/2)および高さ/2(h/2)によって動きベクトルに関連するシフトを可能にすることができる。(たとえば、中央動きベクトル1830およびサンプル1832に関連する)エリア1864および位置1834のために示された偏差および境界は、現在のブロック1860のためのすべてのサンプルに適用されるとき、現在のブロック1860のサンプルのためのメモリアクセスの有効な境界ブロック1810を導入する。図18Aの例では、境界ブロック1810は、位置1834および1844の周りのエリア1864および1868などのエリア1862の端にある極端な位置の周りの境界エリアによって生じるdeviation_on_mvがプラスされた(たとえば、現在のブロック1860と同じサイズである)参照ブロックサイズエリア1862と見なされ得る。エリア1864、1866、および1868のサイズに関連する偏差に動きベクトルを制限するために現在のブロック1860のあらゆるサンプルに対して(たとえば、これらのエリアが、同じサイズになり、現在のブロック1860からのサンプルのためのすべての他のアフィン動きベクトルのための偏差は同じサイズになることになるように)クリッピング制限を配置することによって、本明細書で説明されるようにアフィンモードは、クラントブロック1860内のあらゆる動きベクトルに対して制限を導入する。いくつかの例では、動きベクトルが境界ブロック内にある場合でも、そのような制限が動きベクトルに適用される。そのような解決策は、アフィン動きに対する「並進化(translationalization)」を効果的に与え、これについて、図18Bおよび図18Cに関して以下でさらに説明する。
[0230]図18Bは、いくつかの例による、しきい値を使用してクリッピングすることの態様を示す図である。図18Bは、対応するサンプル1832、1842、および1872のためのアフィン動きベクトル1836、1847、および1877の特定のセットをもつ現在のブロック1860の一例を示す。上記で説明されたように、各サンプルは、特定のサンプルに関連するアフィンベクトルのための最大偏差を定義するエリアに関連付けられる。サンプル1832は、エリア1864に関連付けられ、サンプル1842は、エリア1868に関連付けられ、サンプル1872は、エリア1876に関連付けられる。上記で説明されたように、アフィン動きベクトルが、(たとえば、サンプルのための中心ベクトルによって示される)そのベクトルのための定義された限界エリアの外にある場合、アフィン動きベクトルは、サンプルのための関連するエリアから逸脱せず、したがって、境界ブロック1810からも逸脱しないことになるクリッピングされたアフィン動きベクトルを生成するようにクリッピング動作で調整される。境界ブロック1810のためのデータが、上記で説明されたように、ローカルバッファ中に記憶され得るので、コーディングデバイスは、追加の参照データをフェッチし、過大なメモリ帯域幅の使用でデバイスパフォーマンスを劣化させることなしに現在のブロック1860のすべてのサンプルのために動作を実施することができる。
[0231]図18Bの例では、サンプル1832のためのアフィン動きベクトル1836は、(たとえば、サンプル1832に関連する中心位置1834をもつ)エリア1864の外にある。アフィン動きベクトル1836は、エリア1864および境界ブロック1810の境界内をポイントするクリッピングされたアフィン動きベクトル1838を作成するためにアフィンモード動作によってクリッピングされる。対照的に、中心位置1874およびエリア1876に関連するサンプル1872のための動きベクトル1877は、位置1875をポイントする。アフィン動きベクトル1877によって示される位置1875がエリア1876内にあるので、アフィン動きベクトル1877はクリッピングされない。同様に、中心位置1844およびエリア1868に関連するサンプル1842のための動きベクトル1847は、位置1845をポイントし、これは、エリア1868と境界ブロック1810との両方の内にあり、したがって、アフィン動きベクトル1847は、クリッピングされない。
[0232]図18Aについて上記で説明されたように、サンプル1852のための中心位置1854は、中心動きベクトル1850を定義するために使用される。中心動きベクトル1850が大きい動きを示すのかまたは小さい動きを示すのかにかかわらず、サンプル1832、1842、1872、および他のサンプルを含むその現在のブロック1860のためのすべての他のサンプルのための境界エリアは、並進であり得る中央ベクトル(たとえば、現在のブロックと同じ大きさだが異なる位置または交点をもつ平行ベクトル)に基づく関連するクリッピングエリアを有する。様々な例では、関連するエリアの位置の変化(たとえば、サンプル1872および1832の位置の間の差)が一致することになる異なるサンプル位置の間の位置の変化は、位置1874および1834の間の差と同じになり、エリア1876および1864の間の差と同じになることになる。制限エリアとそれらの対応するサンプルとの間の関係は、上記で言及したアフィン動きに対する「並進化」である。
[0233]図18Cは、いくつかの例による、しきい値を使用してクリッピングすることの態様を示す図である。図18Cは、図18Bと同様だが、異なるアフィン動きベクトルをもつ一例を示す。図18Cの例では、サンプル1832のためのアフィンベクトル1836は、図18Bの場合と同じであるが、しかしながら、それぞれのサンプル1872および1842のための動きベクトル1886および1896が異なる。動きベクトル1836と同様に、動きベクトル1896は、許容可能な動きベクトル偏差を超え、したがって、動きベクトル1896は、境界ブロック1810およびエリア1868内にある位置1897をポイントするクリッピングされた動きベクトル1898を生成するために処理される。図18Cの例では、アフィン動きベクトル1886は、境界ブロック1810内をポイントするが、クリッピングされる。アフィン動きベクトル1886が、エリア1876によって示される許容可能な変動を超えるので、それは、サンプル1872のための中心位置1874に関連するエリア1876内にある位置1887をポイントするクリッピングされた動きベクトル1888を生成するプロセスである。上記の例では、動きベクトル1886が境界ブロック1810内の位置をポイントするが、動きベクトル1886は、クリッピングパラメータによりクリッピングされる。境界エリア1810内でそのようなクリッピングパラメータを適用することは、クリッピング動作を簡略化し、システムリソースの効率的な使用を与えることができる。
[0234]別の例では、(たとえば、上記で説明されたエリア1876に関連する動きベクトル1886に対する制限などの境界ブロック内の動きに対する制限なしに)メモリエリアのみが境界ブロックによって定義され得る。そのような例では、メモリ境界ブロック(たとえば、境界エリア1660、1760、または1810)は、たとえば、整数精度をもつ最終的なx/y座標上に実装され得る。そのような一例は、境界ブロック内での無制限なアフィン動きベクトルを可能にすることになる。そのような例では、動きベクトル1836および1896は、クリッピングされることになるが、動きベクトル1886によって示される参照データが境界ブロック1810内にあるので、動きベクトル1886は、クリッピングされないことになり、メモリ中に記憶され、エリア1876に関連する追加の制限なしにアフィンコーディングのために利用可能になることになる。そのような例では、追加のコンピューティングリソースは、(たとえば、参照データに対する同じ境界エリア1660、1760、または1810の制限ありだが、エリア1864、1876、および1868などの境界ブロック内の動きベクトルごとの個々のエリア制限なしに)他の例のメモリ帯域幅パフォーマンスを維持しながら、より複雑なクリッピング動作を構造化するためのリソースを犠牲にしてクリッピングを構造化し、改善されたパフォーマンスを可能にするために使用され得る。
[0235]偏差制限の一例は、以下の通りである(強調テキストは、「<highlight>」シンボルと「<highlightend>」シンボルとの間の下線で(以下、下線は省略)マークされる(たとえば、「<highlight>強調テキスト<highlightend>)。
Figure 2022548990000096
[0236]そのような解決策のための実装の一例を与える仕様テキストの一例は、「<insert1>」シンボルと「<insertend1>」シンボルとの間の下線付きの(以下、下線は省略)テキストでマークされるテキスト(たとえば、「<insert1>追加されたテキスト<insertend1>)を用いて以下で示す。
[0237]1.1.1.4 拡張補間フィルタのための補間プロセス
プロセスの入力は、以下の通りである。
-フルサンプルユニット中でのロケーション(xCb,yCb)、
-現在のコーディングブロックの幅および高さを指定する2つの変数cbWidthおよびcbHeight、
-動きベクトルの水平変化dX、
-動きベクトルの垂直変化dY、
-動きベクトルmvBaseScaled、
-選択された参照ピクチャサンプルアレイrefPicLX、
-サンプルビット深度bitDepth、
-サンプル中のピクチャの幅pic_width、
-サンプル中のピクチャの高さpic_height。
プロセスの出力は、以下の通りである。
-予測サンプル値の(cbWidth)×(cbHeight)のアレイpredSamplesLX。
[0238]変数shift1、shift2、shift3、offset1、offset2、およびoffset3は、次のように導出される。
shift0は、bitDepth-6に等しく設定され、offset0は、2shift1-1に等しくなり、
shift1は、11に等しく設定され、offset1は、1024に等しくなる。
<insert>変数hor_max、ver_max、hor_minおよびver_minは、フルサンプルユニット中のロケーション(xCb,yCb)と、現在のコーディングブロックの幅と高さとを指定する2つの変数cbWidthおよびcbHeightと、動きベクトルの水平変化dXと、動きベクトルの垂直変化dYと、動きベクトルmvBaseScaledと、サンプル中のピクチャの幅pic_widthと、サンプル中のピクチャの高さpic_heightと、出力としてhor_max、ver_max、hor_minおよびver_minとを用いて0に指定されているプロセスを呼び出すことによって導出される。<insert>
[0239]x=-1..cbWidthー1およびy=-1..cbHeightの場合、以下が適用される。
-動きベクトルmvXは、次のように導出される。
Figure 2022548990000097
<insert>1.1.1.5 アフィン動きベクトルのためのクリッピングパラメータの導出
プロセスの入力は、以下の通りである。
-フルサンプルユニット中でのロケーション(xCb,yCb)、
-現在のコーディングブロックの幅および高さを指定する2つの変数cbWidthおよびcbHeight、
-動きベクトルの水平変化dX、
-動きベクトルの垂直変化dY、
-動きベクトルmvBaseScaled、
-サンプル中のピクチャの幅pic_width、
-サンプル中のピクチャの高さpic_height。
プロセスの出力は、以下の通りである。
-最大および最小許容動きベクトルの水平および垂直成分を示すhor_max、ver_max、hor_minおよびver_min。
中心動きベクトルmv_centerは、次のように導出される。
Figure 2022548990000098
節8.5.3.10において指定されている動きベクトルのための丸めプロセスは、入力としてmv_centerと、5に等しく設定されたrightShiftと、0に等しく設定されたleftShiftとを用いて呼び出され、丸められた動きベクトルが、mv_centerとして戻される。
動きベクトルmv_centerは、次のようにクリッピングされる。
Figure 2022548990000099
変数smv_hor_min、mv_ver_min、mv_hor_maxおよびmv_ver_maxは、次のように導出される。
Figure 2022548990000100
ただし、deviationAおよびdeviationBは、次のようにk=0..4について指定される。
deviationA[k]={16,80,224,512,1088}、
deviationB[k] {16,96,240,528,1104}。
変数hor_max_pic、ver_max_pic、hor_min_picおよびver_min_picは、次のように導出される。
Figure 2022548990000101
最大および最小許容動きベクトルの水平および垂直成分を示す出力hor_max、ver_max、hor_minおよびver_minは、次のように導出される。
Figure 2022548990000102
[0240]図19は、本明細書で説明される例による、クリッピングパラメータを用いたアフィンコーディングのプロセス1900を示すフローチャートである。いくつかの例では、プロセス1900は、符号化デバイス104または復号デバイス112によって実施される。いくつかの例では、プロセス1900は、デバイスの処理回路によって実行されたとき、デバイスにプロセス1900の動作を実施させるコンピュータ可読記憶媒体中の命令として実施され得る。
[0241]ブロック1902において、プロセス1900は、ビデオデータから現在のコーディングブロックを取得する動作を含む。そのような動作は、複数のコーディングブロックを処理する連続動作の部分であり得、クリッピングパラメータが、ブロックごとに決定され、現在のブロックの各サンプルのために使用される。1つのブロックがコーディングされ、動作が次のブロックに移動すると、クリッピングパラメータの新しいセットが、新しいブロックのために決定され、新しいブロックの各サンプルのために使用され得る。プロセス1900のいくつかの例では、制御データは、導出表からの値を備える。
[0242]ブロック1904において、プロセス1900は、現在のコーディングブロックのための制御データを決定する動作を含む。いくつかの例では、制御データは、フルサンプルユニット中のロケーション(xCb,yCb)と、現在のコーディングブロックの幅および高さを指定する2つの変数cbWidthおよびcbHeightと、動きベクトルの水平変化dXと、動きベクトルの垂直変化dYと、動きベクトルmvBaseScaledと、サンプル中のピクチャの幅pic_widthと、サンプル中のピクチャの高さpic_heightとからなる上記の説明された入力を含むことができる。他の例では、他の組合せまたはグループのデータが使用され得る。別の例では、制御データは、フルサンプルユニット中での関連する水平座標と関連する垂直座標とを用いたロケーションと、現在のコーディングブロックの幅を指定する幅変数と、現在のコーディングブロックの高さを指定する高さ変数と、動きベクトルの水平変化と、動きベクトルの垂直変化と、ベーススケーリングされた動きベクトルと、サンプル中の現在のコーディングブロックに関連するピクチャの高さと、サンプル中のピクチャの幅とを備える。
[0243]ブロック1906において、プロセス1900は、制御データから1つまたは複数のアフィン動きベクトルクリッピングパラメータを決定する動作を含む。いくつかの例では、アフィン動きベクトルクリッピングパラメータは、水平最大変数と、水平最小変数と、垂直最大変数と、垂直最小変数とを備える。
[0244]いくつかの例では、水平最小変数は、水平最小ピクチャ値と水平最小動きベクトル値とから選択される最大値によって定義される。いくつかのそのような例では、水平最小変数(hor_min)は、水平最小ピクチャ値(hor_min_pic)と水平最小動きベクトル値(mv_hor_min)とから選択される最大値によってhor_min=max(hor_min_pic,mv_hor_min)として定義される。
[0245]いくつかのそのような例では、水平最小ピクチャ値(hor_min_pic)は、関連する水平座標から決定される。いくつかのそのような例では、ここにおいて、hor_min_picは、hor_min_pic=(-128-xCb)として定義される。
[0246]いくつかの例では、水平最小動きベクトル値は、中心動きベクトル値と、ビデオデータに関連する解像度値またはブロックエリアサイズに基づく値のアレイ(たとえば、現在のコーディングブロックの幅×高さ)と、現在のコーディングブロックの幅を指定する幅変数とから決定される。いくつかのそのような例では、mv_hor_minは、mv_hor_min=mv_center[0]-deviationA[log2CbWidth-3]として定義され、ここで、mv_center[0]は、中心動きベクトル値であり、deviationAは、ビデオデータに関連する解像度値またはブロックエリアサイズに基づく値のアレイ(たとえば、現在のコーディングブロックの幅×高さ)であり、cbWidthは、現在のコーディングブロックの幅を指定する幅変数である。
[0247]いくつかの例では、中心動きベクトル値は、ベーススケーリングされた動きベクトルと、動きベクトルの水平変化と、幅変数と、高さ変数とから決定される。いくつかのそのような例では、中心動きベクトル値は、次のように定義される。
Figure 2022548990000103
[0248]いくつかの例では、ベーススケーリングされた動きベクトルは、現在のコーディングブロックの左上隅に対応し、制御点動きベクトル値から決定される。いくつかの例では、mvBaseScaledは、ルーマコーディングブロックの左上隅に対応し、mvBaseScaled[0]=cpMvLX[0][0]<<7、mvBaseScaled[1]=cpMvLX[0][1]<<7のように定義され、ここで、cpMvLXは、制御点動きベクトルである。
[0249]ブロック1906の上記の態様は、水平最小変数(hor_min)に関連するパラメータを決定するための動作について主に説明する。ベクトルクリッピングのための水平、垂直、最大、および最小パラメータの他の組合せの各々は、水平最大変数と、垂直最大変数と、垂直最小変数とのための要素を含む本明細書で説明される同様の例を有することができる。
[0250]いくつかの例では、水平最大変数は、水平最大ピクチャ値と水平最大動きベクトル値とから選択される最小値によって定義される。いくつかの例では、水平最大ピクチャ値は、ピクチャの幅と、関連する水平座標と、幅変数とから決定される。いくつかの例では、水平最大動きベクトル値は、中心動きベクトル値と、ビデオデータに関連する解像度値またはブロックエリアサイズに基づく値のアレイ(たとえば、現在のコーディングブロックの幅×高さ)と、現在のコーディングブロックの幅を指定する幅変数とから決定される。いくつかの例では、中心動きベクトル値は、ベーススケーリングされた動きベクトルと、動きベクトルの水平変化と、幅変数と、高さ変数とから決定される。いくつかの例では、ベーススケーリングされた動きベクトルは、現在のコーディングブロックの隅に対応し、制御点動きベクトル値から決定される。
[0251]いくつかの例では、垂直最大変数は、垂直最大ピクチャ値と垂直最大動きベクトル値とから選択される最小値によって定義される。いくつかの例では、垂直最大ピクチャ値は、ピクチャの高さと、関連する垂直座標と、高さ変数とから決定される。いくつかの例では、垂直最大動きベクトル値は、中心動きベクトル値と、ビデオデータに関連する解像度値またはブロックエリアサイズに基づく値のアレイ(たとえば、現在のコーディングブロックの幅×高さ)と、現在のコーディングブロックの幅を指定する高さ変数とから決定される。
[0252]いくつかの例では、垂直最小変数は、垂直最小ピクチャ値と垂直最小動きベクトル値とから選択される最大値によって定義される。いくつかの例では、垂直最小ピクチャ値は、関連する垂直座標から決定される。いくつかの例では、垂直最小動きベクトル値は、中心動きベクトル値と、ビデオデータに関連する解像度値またはブロックエリアサイズに基づく値のアレイ(たとえば、現在のコーディングブロックの幅×高さ)と、現在のコーディングブロックの高さを指定する高さ変数とから決定される。
[0253]ブロック1906の部分として、水平最大変数と、垂直最大変数と、垂直最小変数とのための要素を含む導出を含むパラメータの追加の特定の導出が実施され得る。いくつかの例では、以下を含むこれらの変数が本明細書で説明される詳細および本明細書で説明される他のそのような詳細に従って決定され得る。
Figure 2022548990000104
ただし、deviationAおよびdeviationBは、deviationA[k]={16,80,224,512,1088}およびdeviationB[k] {16,96,240,528,1104}としてk=0..4について指定される。
Figure 2022548990000105
他の例では、クリッピングのためのパラメータを決定するための他の同様のプロセスが使用され得る。
[0254]ブロック1908において、プロセス1900は、現在のコーディングブロックのサンプルを選択する動作を含む。上記で説明されたように、現在のブロックのためのサンプルの選択された数が使用され得るか、または現在のブロック各サンプルが使用され得る。EVCベースの例示的なアフィン予測が異なる手法を用いて実装され得る。1つの例示的なEVC手法は、サブブロックのための並進運動予測を利用する。EVCアフィン予測の別の例は、より精細な粒度y(たとえば、ピクセルワイズ)の動き予測を使用する。異なる手法は、サンプルを選択するために関連する動作を有することができる。
[0255]ブロック1910において、プロセス1900は、現在のコーディングブロックのサンプルのためのアフィン動きベクトルを決定する動作を含む。いくつかの例では、現在のブロックのサンプルのためのアフィン動きベクトルは、第1のベーススケーリングされた動きベクトル値と、動きベクトル値の第1の水平変化と、動きベクトル値の第1の垂直変化と、第2のベーススケーリングされた動きベクトル値と、動きベクトル値の第2の水平変化と、動きベクトル値の第2の垂直変化と、サンプルの水平座標と、サンプルの垂直座標とに従って決定される。いくつかの例では、mvXとして指定される動きベクトルは、mvX[0]=(mvBaseScaled[0]+dX[0]*x+dY[0]*y)、mvX[1]=(mvBaseScaled[1]+dX[1]*x+dY[1]*yを使用して導出され得る。
[0256]ブロック1912において、プロセス1900は、クリッピングされたアフィン動きベクトルを生成するために1つまたは複数のアフィン動きベクトルクリッピングパラメータを使用してアフィン動きベクトルをクリッピングする動作を含む。いくつかの例では、アフィン動きベクトルは、mvX[0]=Clip3(hor_min,hor_max,mvX[0])、およびmvX[1]=Clip3(ver_min,ver_max,mvX[1])に従ってクリッピングされる。
[0257]上記のブロックに加えて、プロセス1900のいくつかの要素は、追加の動作、介在する動作、またはいくつかのブロックの動作の繰返しを含むことができる。いくつかの例では、そのような追加の動作は、現在のコーディングブロックに関連する参照ピクチャを識別することと、アフィン動きベクトルクリッピングパラメータによって定義された参照ピクチャの部分を記憶することとを行う動作を含むことができる。いくつかのそのような動作は、参照ピクチャの部分が、現在のコーディングブロックを使用したアフィン動き処理動作のためにメモリバッファ中に記憶されるところで機能することができる。
[0258]同様に、いくつかの繰返し動作は、ビデオデータから複数の現在のコーディングブロックを連続的に取得することと、複数の現在のコーディングブロックのブロックのためにコーディングブロックごとにアフィン動きベクトルクリッピングパラメータのセットを決定することと、複数の現在のコーディングブロックのためのブロックごとのアフィン動きベクトルクリッピングパラメータのセットを使用して対応する参照ピクチャの部分をフェッチすることとを行う動作を含むことができる。任意のそのような例では、動作は、クリッピングされたアフィン動きベクトルによって示される参照ピクチャからの参照ピクチャデータを使用して現在のブロックを処理することをさらに含むことができる。そのようなブロックは、ルーマコーディングブロックであるか、またはアフィンコーディングモードでコーディングされているビデオデータのための任意の他のそのようなブロックであり得る。そのようなプロセス1900は、メモリと1つまたは複数のプロセッサとをもつデバイスを含む本明細書における任意のデバイスによって実行され得る。そのようなデバイスは、ディスプレイデバイスをもつデバイスと、ディスプレイデバイスは、1つまたは複数のプロセッサに結合され、ビデオデータから画像を表示するように構成される、1つまたは複数のプロセッサに結合された1つまたは複数のワイヤレスインターフェースと、1つまたは複数のワイヤレスインターフェースは、1つまたは複数のベースバンドプロセッサと1つまたは複数のトランシーバとを備える、を含むことができる。他のそのようなデバイスは、本明細書で説明される他の構成要素を含むことができる。
[0259]いくつかの例では、本明細書で説明されるプロセスは、符号化デバイス104、復号デバイス112、および/または任意の他のコンピューティングデバイスなどのコンピューティングデバイスまたは装置によって実施され得る。いくつかの場合には、コンピューティングデバイスまたは装置は、本明細書で説明されるプロセスのステップを行うように構成されたデバイスのプロセッサ、マイクロプロセッサ、マイクロコンピュータ、または他の構成要素を含み得る。いくつかの例では、コンピューティングデバイスまたは装置は、ビデオフレームを含むビデオデータ(たとえば、ビデオシーケンス)をキャプチャするように構成されたカメラを含み得る。たとえば、コンピューティングデバイスは、ビデオコーデックを含むことも含まないこともあるカメラデバイスを含み得る。別の例として、コンピューティングデバイスは、カメラをもつモバイルデバイス(たとえば、デジタルカメラ、IPカメラなどのカメラデバイス、カメラを含むモバイルフォンもしくはタブレット、またはカメラをもつ他のタイプのデバイス)を含み得る。場合によっては、コンピューティングデバイスは、画像を表示するためのディスプレイを含み得る。いくつかの例では、ビデオデータをキャプチャするカメラまたは他のキャプチャデバイスは、コンピューティングデバイスとは別個であり、その場合、コンピューティングデバイスは、キャプチャされたビデオデータを受信する。コンピューティングデバイスは、ビデオデータを通信するように構成されたネットワークインターフェース、トランシーバ、および/または送信機をさらに含み得る。ネットワークインターフェース、トランシーバ、および/または送信機は、インターネットプロトコル(IP)ベースのデータまたは他のネットワークデータを通信するように構成され得る。
[0260]本明細書で説明されるプロセスは、ハードウェア、コンピュータ命令、またはそれらの組合せで実装され得る。コンピュータ命令のコンテキストでは、動作は、1つまたは複数のプロセッサによって実行されたとき、具陳された動作を実施する1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。概して、コンピュータ実行可能命令は、特定の機能を実施するか、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。動作が説明される順序は、限定として解釈されるものではなく、任意の数の説明される動作は、プロセスを実装するために任意の順序でおよび/または並行して組み合わせられ得る。
[0261]さらに、本明細書で説明されるプロセスは、実行可能命令で構成された1つもしくは複数のコンピュータシステムの制御下で実施され得、まとめて1つもしくは複数のプロセッサ上で、ハードウェアによって、またはそれらの組合せで実行するコード(たとえば、実行可能命令、1つもしくは複数のコンピュータプログラム、または1つもしくは複数のアプリケーション)として実装され得る。上述のように、コードは、たとえば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形態で、コンピュータ可読または機械可読記憶媒体に記憶され得る。コンピュータ可読または機械可読記憶媒体は非一時的であり得る。
[0262]本明細書で説明されたコーディング技法は、例示的なビデオ符号化および復号システム(たとえば、システム100)において実装され得る。いくつかの例では、システムは、宛先デバイスによって後で復号されるべき符号化ビデオデータを与えるソースデバイスを含む。特に、ソースデバイスは、コンピュータ可読媒体を介してビデオデータを宛先デバイスに与える。ソースデバイスおよび宛先デバイスは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイスおよび宛先デバイスはワイヤレス通信のために装備され得る。
[0263]宛先デバイスは、コンピュータ可読媒体を介して復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体は、ソースデバイスから宛先デバイスに符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体は、ソースデバイスが符号化ビデオデータを宛先デバイスにリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイスに送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイスから宛先デバイスへの通信を促進するために有用であり得る、ルータ、スイッチ、基地局、または任意の他の機器を含み得る。
[0264]いくつかの例では、符号化データは、出力インターフェースから記憶デバイスに出力され得る。同様に、符号化データは、入力インターフェースによって記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、記憶デバイスは、ソースデバイスによって生成された符号化ビデオを記憶し得るファイルサーバまたは別の中間記憶デバイスに対応し得る。宛先デバイスは、ストリーミングまたはダウンロードを介して記憶デバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶することと、その符号化ビデオデータを宛先デバイスに送信することとが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイスは、インターネット接続を含む、任意の標準のデータ接続を通して符号化ビデオデータにアクセスし得る。接続は、ワイヤレスチャネル(たとえば、Wi-Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに適した、両方の組合せを含み得る。ストレージデバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
[0265]本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システムは、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
[0266]一例では、ソースデバイスは、ビデオソースと、ビデオエンコーダと、出力インターフェースとを含む。宛先デバイスは、入力インターフェースと、ビデオデコーダと、ディスプレイデバイスとを含み得る。ソースデバイスのビデオエンコーダは、本明細書で開示される技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または構成を含み得る。たとえば、ソースデバイスは、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイスは、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0267]上記の例示的なシステムは一例にすぎない。ビデオデータを並行して処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実施され得る。概して、本開示の技法はビデオ符号化デバイスによって実施されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実施され得る。その上、本開示の技法はビデオプリプロセッサによっても実施され得る。ソースデバイスおよび宛先デバイスは、ソースデバイスが宛先デバイスに送信するためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、ソースデバイスおよび宛先デバイスは、デバイスの各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、例示的なシステムは、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ビデオデバイス間の一方向または双方向のビデオ送信をサポートし得る。
[0268]ビデオソースは、ビデオカメラなどのビデオキャプチャデバイス、前にキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソースは、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。いくつかの場合には、ビデオソースがビデオカメラである場合、ソースデバイスおよび宛先デバイスは、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、上述のように、本開示で説明される技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。各場合において、キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダによって符号化され得る。符号化ビデオ情報は、出力インターフェースによってコンピュータ可読媒体上に出力され得る。
[0269]述べられたように、コンピュータ可読媒体は、ワイヤレスブロードキャストもしくはワイヤードネットワーク送信などの一時媒体、またはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu-rayディスク、もしくは他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイスから符号化ビデオデータを受信し、その符号化ビデオデータを宛先デバイスに与え得る。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイスから符号化ビデオデータを受信し、その符号化ビデオデータを含んでいるディスクを作り出し得る。したがって、コンピュータ可読媒体は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むことが理解され得る。
[0270]宛先デバイスの入力インターフェースはコンピュータ可読媒体から情報を受信する。コンピュータ可読媒体の情報は、ビデオエンコーダによって定義され、またビデオデコーダによって使用される、ブロックおよび他のコード化ユニット、たとえば、ピクチャグループ(GOP)の特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイスは、復号ビデオデータをユーザに対して表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。本出願の様々な実施形態が説明された。
[0271]符号化デバイス104および復号デバイス112の具体的な詳細が、それぞれ図20および図21に示されている。図20は、本開示で説明される技法のうちの1つまたは複数を実装し得る例示的な符号化デバイス104を示すブロック図である。符号化デバイス104は、たとえば、本明細書で説明されるシンタックス構造(たとえば、VPS、SPS、PPS、または他のシンタックス要素のシンタックス構造)を生成し得る。符号化デバイス104は、ビデオスライス内のビデオブロックのイントラ予測コーディングおよびインター予測コーディングを実施し得る。前に説明されたように、イントラコーディングは、所与のビデオフレームまたはピクチャ内の空間冗長性を低減または除去するために、空間予測に少なくとも部分的に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたは周囲のフレーム内の時間冗長性を低減または除去するために、時間予測に少なくとも部分的に依拠する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのいずれかを指すことがある。単方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指すことがある。
[0272]符号化デバイス104は、区分ユニット35と、予測処理ユニット41と、フィルタユニット63と、ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。予測処理ユニット41は、動き推定ユニット42と、動き補償ユニット44と、イントラ予測処理ユニット46とを含む。ビデオブロック再構築のために、符号化デバイス104はまた、逆量子化ユニット58と、逆変換処理ユニット60と、加算器62とを含む。フィルタユニット63は、デブロッキングフィルタ、適応ループフィルタ(ALF)、およびサンプル適応オフセット(SAO)フィルタなど、1つまたは複数のループフィルタを表現するものとする。フィルタユニット63は、図20では、ループ内フィルタであるとして示されているが、他の構成では、フィルタユニット63はループ後フィルタとして実装され得る。後処理デバイス57は、符号化デバイス104によって生成された符号化ビデオデータに対して追加の処理を実施し得る。本開示の技法は、いくつかの事例では、符号化デバイス104によって実装され得る。しかしながら、他の事例では、本開示の技法のうちの1つまたは複数は、後処理デバイス57によって実装され得る。
[0273]図20に示されているように、符号化デバイス104はビデオデータを受信し、区分ユニット35はデータをビデオブロックに区分する。区分はまた、たとえば、LCUおよびCUの4分木構造に従って、スライス、スライスセグメント、タイル、または他のより大きいユニットへの区分、ならびにビデオブロック区分を含み得る。符号化デバイス104は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示す。スライスは、複数のビデオブロックに(および場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測処理ユニット41は、誤差結果(たとえば、コーディングレートおよびひずみレベルなど)に基づいて現在のビデオブロックについて、複数のイントラ予測コーディングモードのうちの1つ、または複数のインター予測コーディングモードのうちの1つなど、複数の可能なコーディングモードのうちの1つを選択し得る。予測処理ユニット41は、得られたイントラコード化ブロックまたはインターコード化ブロックを、残差ブロックデータを生成するために加算器50に与え、参照ピクチャとして使用するための符号化ブロックを再構築するために加算器62に与え得る。
[0274]予測処理ユニット41内のイントラ予測処理ユニット46は、空間圧縮を行うために、コーディングされるべき現在のブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して現在のビデオブロックのイントラ予測コーディングを実施し得る。予測処理ユニット41内の動き推定ユニット42および動き補償ユニット44は、時間圧縮を行うために、1つまたは複数の参照ピクチャ中の1つまたは複数の予測ブロックに対して現在のビデオブロックのインター予測コーディングを実施する。
[0275]動き推定ユニット42は、ビデオシーケンスに対する所定のパターンに従って、ビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、シーケンス中のビデオスライスを、Pスライス、Bスライス、またはGPBスライスに指定し得る。動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別個に示されている。動き推定ユニット42によって実施される動き推定は、ビデオブロックについての動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する、現在のビデオフレームまたはピクチャ内のビデオブロックの予測ユニット(PU)の変位を示し得る。
[0276]予測ブロックは、絶対差分和(SAD)、2乗差分和(SSD)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきビデオブロックのPUにぴったり一致することがわかるブロックである。いくつかの例では、符号化デバイス104は、ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置についての値を計算し得る。たとえば、符号化デバイス104は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置および分数ピクセル位置に対して動き探索を実施し、分数ピクセル精度で動きベクトルを出力し得る。
[0277]動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUについての動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの各々は、ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
[0278]動き補償ユニット44によって実施される動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によっては、サブピクセル精度への補間を実施することを伴い得る。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストにおいて指す予測ブロックの位置を特定し得る。符号化デバイス104は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。ピクセル差分値は、ブロックのための残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器50は、減算演算を実施する1つまたは複数の構成要素を表現する。動き補償ユニット44はまた、ビデオスライスのビデオブロックを復号する際に復号デバイス112が使用するための、ビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[0279]イントラ予測処理ユニット46は、上記で説明されたように、動き推定ユニット42と動き補償ユニット44とによって実施されるインター予測の代替として、現在ブロックをイントラ予測し得る。特に、イントラ予測処理ユニット46は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測処理ユニット46は、たとえば、別個の符号化パス中に様々なイントラ予測モードを使用して現在ブロックを符号化し得、イントラ予測処理ユニット46は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。たとえば、イントラ予測処理ユニット46は、様々なテストされたイントラ予測モードのためにレートひずみ分析を使用してレートひずみ値を計算し得、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを作り出すために符号化されたブロックと元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを作り出すために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測処理ユニット46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化ブロックのためのひずみおよびレートから比を計算し得る。
[0280]いずれの場合も、ブロックのためのイントラ予測モードを選択した後に、イントラ予測処理ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に与え得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。符号化デバイス104は、様々なブロックのための符号化コンテキストの構成データ定義、ならびにコンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示を送信ビットストリーム中に含め得る。ビットストリーム構成データは、複数のイントラ予測モードインデックステーブルと、(コードワードマッピングテーブルとも呼ばれる)複数の修正されたイントラ予測モードインデックステーブルとを含み得る。
[0281]予測処理ユニット41が、インター予測またはイントラ予測のいずれかを介して、現在のビデオブロックのための予測ブロックを生成した後、符号化デバイス104は、現在のビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロック中の残差ビデオデータは、1つまたは複数のTU中に含まれ、変換処理ユニット52に適用され得る。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット52は、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換し得る。
[0282]変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減するために、変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット54は、量子化変換係数を含む行列の走査を実施し得る。代替的に、エントロピー符号化ユニット56が走査を実施し得る。
[0283]量子化の後に、エントロピー符号化ユニット56は、量子化変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピー符号化技法を実施し得る。エントロピー符号化ユニット56によるエントロピー符号化の後に、符号化ビットストリームは復号デバイス112に送信されるか、または復号デバイス112が後で送信するかもしくは取り出すためにアーカイブされ得る。エントロピー符号化ユニット56はまた、コーディングされている現在のビデオスライスのための動きベクトルと他のシンタックス要素とをエントロピー符号化し得る。
[0284]逆量子化ユニット58および逆変換処理ユニット60は、参照ピクチャの参照ブロックとして後で使用するためにピクセル領域において残差ブロックを再構築するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット44は、残差ブロックを参照ピクチャリスト内の参照ピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構築された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、ピクチャメモリ64に記憶するための参照ブロックを作り出すために、再構築された残差ブロックを動き補償ユニット44によって作り出された動き補償予測ブロックに加算する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
[0285]符号化デバイス104は、本明細書で説明される技法のいずれかを実施し得る。本開示のいくつかの技法は、概して符号化デバイス104に関して説明されたが、上述のように、本開示の技法のうちのいくつかは後処理デバイス57によっても実装され得る。
[0286]図20の符号化デバイス104は、本明細書で説明される変換コーディング技法のうちの1つまたは複数を実施するように構成されたビデオエンコーダの一例を表す。符号化デバイス104は、図21に関して上記で説明されたプロセスを含む、本明細書で説明される技法のいずれかを実施し得る。
[0287]図21は、例示的な復号デバイス112を示すブロック図である。復号デバイス112は、エントロピー復号ユニット80と、予測処理ユニット81と、逆量子化ユニット86と、逆変換処理ユニット88と、加算器90と、フィルタユニット91と、ピクチャメモリ92とを含む。予測処理ユニット81は、動き補償ユニット82と、イントラ予測処理ユニット84とを含む。復号デバイス112は、いくつかの例では、図20からの符号化デバイス104に関して説明された符号化パスとは概して逆の復号パスを実施し得る。
[0288]復号プロセス中に、復号デバイス112は、符号化デバイス104によって送られた、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビデオビットストリームを受信する。いくつかの実施形態では、復号デバイス112は、符号化デバイス104から符号化ビデオビットストリームを受信し得る。いくつかの実施形態では、復号デバイス112は、サーバ、メディアアウェアネットワーク要素(MANE)、ビデオエディタ/スプライサ、または上記で説明された技法のうちの1つまたは複数を実装するように構成された他のそのようなデバイスなど、ネットワークエンティティ79から符号化ビデオビットストリームを受信し得る。ネットワークエンティティ79は、符号化デバイス104を含むことも、含まないこともある。本開示で説明される技法のうちのいくつかは、ネットワークエンティティ79が符号化ビデオビットストリームを復号デバイス112に送信するより前に、ネットワークエンティティ79によって実装され得る。いくつかのビデオ復号システムでは、ネットワークエンティティ79および復号デバイス112は別個のデバイスの部分であり得るが、他の事例では、ネットワークエンティティ79に関して説明される機能は、復号デバイス112を備える同じデバイスによって実施され得る。
[0289]復号デバイス112のエントロピー復号ユニット80は、量子化係数と、動きベクトルと、他のシンタックス要素とを生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット80は、動きベクトルと他のシンタックス要素とを予測処理ユニット81に転送する。復号デバイス112は、ビデオスライスレベルおよび/またはビデオブロックレベルのシンタックス要素を受信し得る。エントロピー復号ユニット80は、VPS、SPS、およびPPSなど、1つまたは複数のパラメータセット中の固定長シンタックス要素と可変長シンタックス要素の両方を処理し、パースし得る。
[0290]ビデオスライスがイントラコード化(I)スライスとしてコーディングされたとき、予測処理ユニット81のイントラ予測処理ユニット84は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化(すなわち、B、PまたはGPB)スライスとしてコーディングされたとき、予測処理ユニット81の動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを作り出す。予測ブロックは、参照ピクチャリスト内の参照ピクチャのうちの1つから作り出され得る。復号デバイス112は、ピクチャメモリ92に記憶された参照ピクチャに基づいて、デフォルトの構築技法を使用して、参照フレームリスト、すなわち、リスト0とリスト1とを構築し得る。
[0291]動き補償ユニット82は、動きベクトルと他のシンタックス要素とをパースすることによって現在のビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在のビデオブロックのための予測ブロックを作り出すために、その予測情報を使用する。たとえば、動き補償ユニット82は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスのための1つまたは複数の参照ピクチャリストのための構築情報と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、パラメータセット中の1つまたは複数のシンタックス要素を使用し得る。
[0292]動き補償ユニット82はまた、補間フィルタに基づいて補間を実施し得る。動き補償ユニット82は、参照ブロックのサブ整数ピクセルのための補間値を計算するために、ビデオブロックの符号化中に符号化デバイス104によって使用された補間フィルタを使用し得る。上記の場合、動き補償ユニット82は、受信されたシンタックス要素から符号化デバイス104によって使用された補間フィルタを決定し得、予測ブロックを作り出すためにその補間フィルタを使用し得る。
[0293]逆量子化ユニット86は、ビットストリーム中で与えられ、エントロピー復号ユニット80によって復号された量子化変換係数を逆量子化、すなわち、量子化解除する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべきである逆量子化の程度を決定するための、ビデオスライス中のビデオブロックごとに符号化デバイス104によって計算される量子化パラメータの使用を含み得る。逆変換処理ユニット88は、ピクセル領域における残差ブロックを作り出すために、逆変換(たとえば、逆DCTまたは他の好適な逆変換)、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
[0294]動き補償ユニット82が、動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックのための予測ブロックを生成した後に、復号デバイス112は、逆変換処理ユニット88からの残差ブロックを動き補償ユニット82によって生成された対応する予測ブロックと加算することによって、復号ビデオブロックを形成する。加算器90は、加算演算を実施する1つまたは複数の構成要素を表現する。所望される場合、(コーディングループ内またはコーディングループ後のいずれかの)ループフィルタも、ピクセル遷移を平滑化するために、またはさもなければビデオ品質を改善するために使用され得る。フィルタユニット91は、デブロッキングフィルタ、適応ループフィルタ(ALF)、およびサンプル適応オフセット(SAO)フィルタなど、1つまたは複数のループフィルタを表現するものとする。図21では、フィルタユニット91はループ内フィルタであるとして示されているが、他の構成では、フィルタユニット91はループ後フィルタとして実装され得る。所与のフレームまたはピクチャ中の復号ビデオブロックは、後続の動き補償のために使用される参照ピクチャを記憶するピクチャメモリ92に記憶される。ピクチャメモリ92はまた、図1に示されているビデオ宛先デバイス122など、ディスプレイデバイス上で後で提示するために復号ビデオを記憶する。
[0295]図21の復号デバイス112は、本明細書で説明される変換コーディング技法のうちの1つまたは複数を実施するように構成されたビデオデコーダの一例を表す。復号デバイス112は、図21に関して上記で説明されたプロセス1900を含む、本明細書で説明される技法のいずれかを実施し得る。
[0296]上記の説明では、本出願の態様がそれの特定の実施形態を参照しながら説明されたが、本出願の主題はそれに限定されないことを、当業者は認識されよう。したがって、本出願の例示的な実施形態が本明細書で詳細に説明されているが、従来技術によって限定される場合を除いて、発明的概念が、場合によっては様々に具体化および採用され得、添付の特許請求の範囲が、そのような変形形態を含むように解釈されるものであることを理解されたい。上記で説明された主題の様々な特徴および態様は、個々にまたは一緒に使用され得る。さらに、実施形態は、本明細書のより広い趣旨および範囲から逸脱せずに、本明細書において説明される環境およびアプリケーションを超える、任意の数の環境およびアプリケーションにおいて利用され得る。したがって、本明細書および図面は、制限的なものというよりもむしろ例示的なものとして考慮されるべきである。例示の目的のために、方法は、特定の順序で説明された。代替実施形態では、方法は、説明された順序とは異なる順序で実施され得ることを諒解されたい。
[0297]本明細書で使用される、よりも小さい(「<」)、および、よりも大きい(「>」)のシンボルまたは専門用語は、本明細書の範囲から逸脱することなく、それぞれ、よりも小さいかまたはそれに等しい(「≦」)、および、よりも大きいかまたはそれに等しい(「≧」)のシンボルと置き換えられ得ることを、当業者は諒解されよう。
[0298]構成要素が、ある動作を実施する「ように構成されて」いるものとして説明される場合、そのような構成は、たとえば、動作を実施するように電子回路または他のハードウェアを設計することによって、動作を実施するようにプログラマブル電子回路(たとえば、マイクロプロセッサ、または他の好適な電子回路)をプログラムすることによって、またはそれらの任意の組合せによって、達成され得る。
[0299]セット「のうちの少なくとも1つ」、および/またはセットのうちの「1つもしくは複数」を具陳するクレームの文言または他の文言は、セットのうちの1つのメンバーまたは(任意の組合せにおける)セットのうちの複数のメンバーがクレームを満たすことを示す。たとえば、「AおよびBのうちの少なくとも1つ」を具陳する特許請求の範囲の文言は、A、B、またはAおよびBを意味する。別の例では、「A、B、およびCのうちの少なくとも1つ」を具陳する特許請求の範囲の文言は、A、B、C、またはAおよびB、またはAおよびC、またはBおよびC、またはAおよびBおよびCを意味する。文言セットの「うちの少なくとも1つ」および/またはセットのうちの「1つもしくは複数」は、セットにリストされている項目にセットを限定しない。たとえば、「AおよびBのうちの少なくとも1つ」を具陳するクレームの文言は、A、B、またはAおよびBを意味することができ、さらに、AおよびBのセットにリストされていない項目を含むことができる。
[0300]本明細書において開示される実施形態に関連して説明される、様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、または、これらの組合せとして実装され得る。ハードウェアとソフトウェアとの互換性を明確に例示するために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップは、一般に、それらの機能性の観点から上述されている。そのような機能性がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、特定の適用例およびシステム全体に課される設計制約条件に依存する。熟練した技術者は、説明された機能性を特定の適用例ごとに様々な手法で実装し得るが、そのような実装上の決定は、本出願の範囲からの逸脱を引き起こすものとして解釈されるべきではない。
[0301]本明細書において説明される技法は、電子ハードウェア、コンピュータソフトウェア、ファームウェア、または、これらの任意の組合せにおいても実装され得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用を含む複数の用途を有する集積回路デバイスなど、様々なデバイスのいずれかにおいて実装され得る。モジュールまたは構成要素として説明された特徴は、集積論理デバイスに一緒に、または個別であるが相互運用可能な論理デバイスとして別個に実装され得る。ソフトウェアで実装された場合、本技法は、実行されたとき、上記で説明された方法のうちの1つまたは複数を実施する命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって、少なくとも部分的に実現され得る。コンピュータ可読データ記憶媒体は、パッケージングマテリアルを含み得る、コンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、同期型ダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM(登録商標))、フラッシュメモリ、磁気または光学データ記憶媒体など、メモリまたはデータ記憶媒体を備え得る。本技法は、追加または代替として、伝搬信号または電波など、命令またはデータ構造の形態でプログラムコードを搬送または伝達し、コンピュータによってアクセスされ、読み取られ、および/または実行され得るコンピュータ可読通信媒体によって、少なくとも部分的に実現され得る。
[0302]プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の集積回路もしくはディスクリート論理回路など、1つまたは複数のプロセッサを含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示で説明された技法のいずれかを実施するように構成され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアを併用する1つもしくは複数のマイクロプロセッサ、または、任意の他のそのような構成としても実装され得る。したがって、本明細書において使用されるような「プロセッサ」という用語は、前述の構造のいずれか、前述の構造の任意の組合せ、または、本明細書において説明される技法の実装に適した任意の他の構造もしくは装置を指し得る。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用のソフトウェアモジュールまたはハードウェアモジュール内に提供され得、あるいは複合ビデオエンコーダ/デコーダ(コーデック)に組み込まれ得る。
[0303]本開示の例示的な例は、以下を含む。
[0304]例1。 ビデオデータを処理する方法であって、ビデオデータの1つまたは複数のブロックを取得することと、ビデオデータのブロックを予測するために使用するためのアフィン動きベクトルを決定することと、ここにおいて、アフィン動きベクトルを使用してアクセス可能な少なくとも参照ピクチャのエリアは、制約に基づいて制限される、を備える方法。
[0305]例2。 制約は、ブロックのサイズに基づく、例1に記載の方法。
[0306]例3。 制約に従ってアフィン動きベクトルをクリッピングすることをさらに備える、例1から2のいずれか1つに記載の方法。
[0307]例4。 制約に従って、少なくとも1つの参照ピクチャから少なくとも1つのサンプルの参照サンプル座標をクリッピングすること、参照サンプル座標は、アフィン動きベクトルを使用して決定される、をさらに備える、例1から2のいずれか1つに記載の方法。
[0308]例5。 ブロックのサイズに応じてクリッピングパラメータを導出することをさらに備える、例1から4のいずれか1つに記載の方法。
[0309]例6。 1つまたは複数の作表されたパラメータからブロックごとに1回、アフィン動きベクトルと参照サンプル座標のうちの少なくとも1つをクリッピングするためのパラメータを計算することをさらに備える、例1から5のいずれか1つに記載の方法。
[0310]例7。 ビデオデータを記憶するように構成されたメモリと、例1から6のいずれかに従ってビデオデータを処理するように構成されたプロセッサとを備える装置。
[0311]例8。 装置がデコーダを含む、例7に記載の装置。
[0312]例9。 装置がエンコーダを含む、例7に記載の装置。
[0313]例10。 装置がモバイルデバイスである、例7から9のいずれか1つに記載の装置。
[0314]例11。 ビデオデータを表示するように構成されたディスプレイをさらに備える、例7から10のいずれか1つに記載の装置。
[0315]例12。 1つまたは複数のピクチャをキャプチャするように構成されたカメラをさらに備える、例7から11のいずれか1つに記載の装置。
[0316]例13。 プロセッサによって実行されたとき、例1から6のいずれかに記載の方法を実施する命令を記憶したコンピュータ可読媒体。
[0317]例14。 ビデオデータをコーディングするための装置であって、メモリと、メモリに結合された1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサは、ビデオデータから現在のコーディングブロックを取得することと、現在のコーディングブロックのための制御データを決定することと、制御データから1つまたは複数のアフィン動きベクトルクリッピングパラメータを決定することと、現在のコーディングブロックのサンプルを選択することと、現在のコーディングブロックのサンプルのためのアフィン動きベクトルを決定することと、クリッピングされたアフィン動きベクトルを生成するために1つまたは複数のアフィン動きベクトルクリッピングパラメータを使用してアフィン動きベクトルをクリッピングすることと、を行うように構成された、装置。
[0318]例15。 制御データは、フルサンプルユニット中での関連する水平座標と関連する垂直座標とを用いたロケーションと、現在のコーディングブロックの幅を指定する幅変数と、現在のコーディングブロックの高さを指定する高さ変数と、動きベクトルの水平変化と、動きベクトルの垂直変化と、ベーススケーリングされた動きベクトルと、サンプル中の現在のコーディングブロックに関連するピクチャの高さと、サンプル中のピクチャの幅とを備える、例14に記載の装置。
[0319]例16。 1つまたは複数のアフィン動きベクトルクリッピングパラメータは、水平最大変数と、水平最小変数と、垂直最大変数と、垂直最小変数とを備える、例15に記載の装置。
[0320]例17。 水平最小変数は、水平最小ピクチャ値と水平最小動きベクトル値とから選択される最大値によって定義される、例16に記載の装置。
[0321]例18。 水平最小ピクチャ値は、関連する水平座標から決定される、例17に記載の装置。
[0322]例19。 水平最小動きベクトル値は、中心動きベクトル値と、ビデオデータに関連する解像度値またはブロックエリアサイズに基づく値のアレイ(たとえば、現在のコーディングブロックの幅×高さ)と、現在のコーディングブロックの幅を指定する幅変数とから決定される、例18に記載の装置。
[0323]例20。 中心動きベクトル値は、ベーススケーリングされた動きベクトルと、動きベクトルの水平変化と、幅変数と、高さ変数とから決定される、例19に記載の装置。
[0324]例21。 ベーススケーリングされた動きベクトルは、現在のコーディングブロックの左上隅に対応し、制御点動きベクトル値から決定される、例20に記載の装置。
[0325]例22。 水平最大変数は、水平最大ピクチャ値と水平最大動きベクトル値とから選択される最小値によって定義される、上記の例16~21に記載の装置。
[0326]例23。 水平最大ピクチャ値は、ピクチャの幅と、関連する水平座標と、幅変数とから決定される、例22に記載の装置。
[0327]例24。 水平最大動きベクトル値は、中心動きベクトル値と、ビデオデータに関連する解像度値またはブロックエリアサイズに基づく値のアレイ(たとえば、現在のコーディングブロックの幅×高さ)と、現在のコーディングブロックの幅を指定する幅変数とから決定される、例23に記載の装置。
[0328]例25。 中心動きベクトル値は、ベーススケーリングされた動きベクトルと、動きベクトルの水平変化と、幅変数と、高さ変数とから決定される、例24に記載の装置。
[0329]例26。 ベーススケーリングされた動きベクトルは、現在のコーディングブロックの隅に対応し、制御点動きベクトル値から決定される、例25に記載の装置。
[0330]例27。 垂直最大変数は、垂直最大ピクチャ値と垂直最大動きベクトル値とから選択される最小値によって定義される、上記の例16~26に記載の装置。
[0331]例28。 垂直最大ピクチャ値は、ピクチャの高さと、関連する垂直座標と、高さ変数とから決定される、例27に記載の装置。
[0332]例29。 垂直最大動きベクトル値は、中心動きベクトル値と、ビデオデータに関連する解像度値またはブロックエリアサイズに基づく値のアレイ(たとえば、現在のコーディングブロックの幅×高さ)と、現在のコーディングブロックの幅を指定する高さ変数とから決定される、例28に記載の装置。
[0333]例30。 垂直最小変数は、垂直最小ピクチャ値と垂直最小動きベクトル値とから選択される最大値によって定義される、上記の例16~30に記載の装置。
[0334]例31。 垂直最小ピクチャ値は、関連する垂直座標から決定される、例30に記載の装置。
[0335]例32。 垂直最小動きベクトル値は、中心動きベクトル値と、ビデオデータに関連する解像度値またはブロックエリアサイズに基づく値のアレイ(たとえば、現在のコーディングブロックの幅×高さ)と、現在のコーディングブロックの高さを指定する高さ変数とから決定される、例31に記載の装置。
[0336]例33。 1つまたは複数のプロセッサは、ビデオデータから複数の現在のコーディングブロックを連続的に取得することと、複数の現在のコーディングブロックのブロックのためにコーディングブロックごとにアフィン動きベクトルクリッピングパラメータのセットを決定することと、複数の現在のコーディングブロックのためのブロックごとのアフィン動きベクトルクリッピングパラメータのセットを使用して対応する参照ピクチャの部分をフェッチすることとを行うように構成された、例14~32に記載の装置。
[0337]例34。 1つまたは複数のプロセッサは、現在のコーディングブロックに関連する参照ピクチャを識別することと、1つまたは複数のアフィン動きベクトルクリッピングパラメータによって定義された参照ピクチャの部分を記憶することとを行うように構成された、例14~33に記載の装置。
[0338]例35。 1つまたは複数のプロセッサに結合されたメモリバッファ、ここにおいて、参照ピクチャの部分は、現在のコーディングブロックを使用したアフィン動き処理動作のためにメモリバッファ中に記憶される、をさらに備える、例34に記載の装置。
[0339]例36。 1つまたは複数のプロセッサは、クリッピングされたアフィン動きベクトルによって示される参照ピクチャからの参照ピクチャデータを使用して現在のコーディングブロックを処理することを行うように構成された、例14~35に記載の装置。
[0340]例37。 現在のコーディングブロックのサンプルのためのアフィン動きベクトルは、第1のベーススケーリングされた動きベクトル値と、動きベクトル値の第1の水平変化と、動きベクトル値の第1の垂直変化と、第2のベーススケーリングされた動きベクトル値と、動きベクトル値の第2の水平変化と、動きベクトル値の第2の垂直変化と、サンプルの水平座標と、サンプルの垂直座標とに従って決定される、例14-36に記載の装置。
[0341]例38。 制御データは、導出表からの値を備える、例14~37に記載の装置。
[0342]例39。 現在のコーディングブロックは、ルーマコーディングブロックである、例14~38に記載の装置。
[0343]例40。 1つまたは複数のプロセッサに結合された、ビデオデータからの画像を表示するように構成されたディスプレイデバイスと、1つまたは複数のプロセッサに結合された1つまたは複数のワイヤレスインターフェースと、1つまたは複数のワイヤレスインターフェースは、1つまたは複数のベースバンドプロセッサと1つまたは複数のトランシーバとを備える、をさらに備える、例14~39に記載の装置。
[0344]例41。 ビデオデータをコーディングする方法であって、ビデオデータから現在のコーディングブロックを取得することと、現在のコーディングブロックのための制御データを決定することと、制御データから1つまたは複数のアフィン動きベクトルクリッピングパラメータを決定することと、現在のコーディングブロックのサンプルを選択することと、現在のコーディングブロックのサンプルのためのアフィン動きベクトルを決定することと、クリッピングされたアフィン動きベクトルを生成するために1つまたは複数のアフィン動きベクトルクリッピングパラメータを使用してアフィン動きベクトルをクリッピングすることとを備える方法。
[0345]例42。 例14~40のいずれかによる例41に記載の方法。
[0346]例43。 コーディングデバイスの1つまたは複数のプロセッサによって実行されたとき、デバイスに、上記の例14~40のいずれかに従ってビデオデータに対してビデオコーディング動作を実施させる命令を備える非一時的コンピュータ可読記憶媒体。
[0347]例44。 ビデオデータをコーディングするための装置であって、ビデオデータから現在のコーディングブロックを取得するための手段と、現在のコーディングブロックのための制御データを決定するための手段と、制御データから1つまたは複数のアフィン動きベクトルクリッピングパラメータを決定するための手段と、現在のコーディングブロックのサンプルを選択するための手段と、現在のコーディングブロックのサンプルのためのアフィン動きベクトルを決定するための手段と、クリッピングされたアフィン動きベクトルを生成するために1つまたは複数のアフィン動きベクトルクリッピングパラメータを使用してアフィン動きベクトルをクリッピングするための手段とを備える装置。
[0348]例45。 ビデオデータをコーディングするための装置であって、上記の例14~40のいずれかによる、例44に記載の装置。
[0349]例46。 1つまたは複数のプロセッサによって実行されたとき、1つまたは複数のプロセッサに、ビデオデータから現在のコーディングブロックを取得することと、現在のコーディングブロックのための制御データを決定することと、制御データから1つまたは複数のアフィン動きベクトルクリッピングパラメータを決定することと、現在のコーディングブロックのサンプルを選択することと、現在のコーディングブロックのサンプルのためのアフィン動きベクトルを決定することと、クリッピングされたアフィン動きベクトルを生成するために1つまたは複数のアフィン動きベクトルクリッピングパラメータを使用してアフィン動きベクトルをクリッピングすることとを行わせる命令を記憶する、非一時的コンピュータ可読記憶媒体。
[0350]例47。 1つまたは複数のプロセッサに、上記の例14~40のいずれかに従って動作させる命令を含む、例46に記載の非一時的コンピュータ可読媒体。

Claims (54)

  1. ビデオデータをコーディングするための装置であって、
    メモリと、
    前記メモリに結合された1つまたは複数のプロセッサと、を備え、前記1つまたは複数のプロセッサは、
    前記ビデオデータから現在のコーディングブロックを取得することと、
    前記現在のコーディングブロックのための制御データを決定することと、
    前記制御データから1つまたは複数のアフィン動きベクトルクリッピングパラメータを決定することと、
    前記現在のコーディングブロックのサンプルを選択することと、
    前記現在のコーディングブロックの前記サンプルのためのアフィン動きベクトルを決定することと、
    クリッピングされたアフィン動きベクトルを生成するために、前記1つまたは複数のアフィン動きベクトルクリッピングパラメータを使用して、前記アフィン動きベクトルをクリッピングすることと、
    を行うように構成された、装置。
  2. 前記制御データは、
    フルサンプルユニット中での関連する水平座標と関連する垂直座標とを用いたロケーションと、
    前記現在のコーディングブロックの幅を指定する幅変数と、
    前記現在のコーディングブロックの高さを指定する高さ変数と、
    動きベクトルの水平変化と、
    動きベクトルの垂直変化と、
    ベーススケーリングされた動きベクトルと、
    サンプル中の前記現在のコーディングブロックに関連するピクチャの高さと、
    サンプル中の前記ピクチャの幅と、
    を備える、請求項1に記載の装置。
  3. 前記1つまたは複数のアフィン動きベクトルクリッピングパラメータは、
    水平最大変数と、
    水平最小変数と、
    垂直最大変数と、
    垂直最小変数と、
    を備える、請求項2に記載の装置。
  4. 前記水平最小変数は、水平最小ピクチャ値と水平最小動きベクトル値とから選択される最大値によって定義される、請求項3に記載の装置。
  5. 前記水平最小ピクチャ値は、前記関連する水平座標から決定される、請求項4に記載の装置。
  6. 前記水平最小動きベクトル値は、中心動きベクトル値と、前記ビデオデータに関連する解像度値に基づく値のアレイと、前記現在のコーディングブロックの前記幅を指定する前記幅変数とから決定される、請求項5に記載の装置。
  7. 前記中心動きベクトル値は、前記ベーススケーリングされた動きベクトルと、動きベクトルの前記水平変化と、前記幅変数と、前記高さ変数とから決定される、請求項6に記載の装置。
  8. 前記ベーススケーリングされた動きベクトルは、前記現在のコーディングブロックの左上隅に対応し、制御点動きベクトル値から決定される、請求項7に記載の装置。
  9. 前記水平最大変数は、水平最大ピクチャ値と水平最大動きベクトル値とから選択される最小値によって定義される、請求項3に記載の装置。
  10. 前記水平最大ピクチャ値は、前記ピクチャの前記幅と、前記関連する水平座標と、前記幅変数とから決定される、請求項9に記載の装置。
  11. 前記水平最大動きベクトル値は、中心動きベクトル値と、前記ビデオデータに関連する解像度値に基づく値のアレイと、前記現在のコーディングブロックの前記幅を指定する前記幅変数とから決定される、請求項10に記載の装置。
  12. 前記中心動きベクトル値は、前記ベーススケーリングされた動きベクトルと、動きベクトルの前記水平変化と、前記幅変数と、前記高さ変数とから決定される、請求項11に記載の装置。
  13. 前記ベーススケーリングされた動きベクトルは、前記現在のコーディングブロックの隅に対応し、制御点動きベクトル値から決定される、請求項12に記載の装置。
  14. 前記垂直最大変数は、垂直最大ピクチャ値と垂直最大動きベクトル値とから選択される最小値によって定義される、請求項3に記載の装置。
  15. 前記垂直最大ピクチャ値は、前記ピクチャの前記高さと、前記関連する垂直座標と、前記高さ変数とから決定される、請求項14に記載の装置。
  16. 前記垂直最大動きベクトル値は、中心動きベクトル値と、前記ビデオデータに関連するブロックエリアサイズに基づく値のアレイと、前記現在のコーディングブロックの前記幅を指定する前記高さ変数とから決定される、請求項15に記載の装置。
  17. 前記垂直最小変数は、垂直最小ピクチャ値と垂直最小動きベクトル値とから選択される最大値によって定義される、請求項3に記載の装置。
  18. 前記垂直最小ピクチャ値は、前記関連する垂直座標から決定される、請求項17に記載の装置。
  19. 前記垂直最小動きベクトル値は、中心動きベクトル値と、前記ビデオデータに関連するデータブロックエリアサイズと、前記現在のコーディングブロックの前記高さを指定する前記高さ変数とから決定される、請求項18に記載の装置。
  20. 前記1つまたは複数のプロセッサは、
    前記ビデオデータから複数の現在のコーディングブロックを連続的に取得することと、
    前記複数の現在のコーディングブロックのブロックのためにコーディングブロックごとにアフィン動きベクトルクリッピングパラメータのセットを決定することと、
    前記複数の現在のコーディングブロックのための前記ブロックごとのアフィン動きベクトルクリッピングパラメータの前記セットを使用して、対応する参照ピクチャの部分をフェッチすることと、
    を行うように構成された、請求項1に記載の装置。
  21. 前記1つまたは複数のプロセッサは、
    前記現在のコーディングブロックに関連する参照ピクチャを識別することと、
    前記1つまたは複数のアフィン動きベクトルクリッピングパラメータによって定義された前記参照ピクチャの部分を記憶することと、
    を行うように構成された、請求項1に記載の装置。
  22. 前記1つまたは複数のプロセッサに結合されたメモリバッファをさらに備え、
    前記参照ピクチャの前記部分は、前記現在のコーディングブロックを使用したアフィン動き処理動作のために前記メモリバッファ中に記憶される、
    請求項21に記載の装置。
  23. 前記1つまたは複数のプロセッサは、
    前記クリッピングされたアフィン動きベクトルによって示される参照ピクチャからの参照ピクチャデータを使用して、前記現在のコーディングブロックを処理すること、
    を行うように構成された、請求項1に記載の装置。
  24. 前記現在のコーディングブロックの前記サンプルのための前記アフィン動きベクトルは、第1のベーススケーリングされた動きベクトル値と、動きベクトル値の第1の水平変化と、動きベクトル値の第1の垂直変化と、第2のベーススケーリングされた動きベクトル値と、動きベクトル値の第2の水平変化と、動きベクトル値の第2の垂直変化と、前記サンプルの水平座標と、前記サンプルの垂直座標とに従って決定される、請求項1に記載の装置。
  25. 前記制御データは、導出表からの値を備える、請求項1に記載の装置。
  26. 前記現在のコーディングブロックは、ルーマコーディングブロックである、請求項1に記載の装置。
  27. 前記1つまたは複数のプロセッサに結合された、前記ビデオデータからの画像を表示するように構成されたディスプレイデバイスと、
    前記1つまたは複数のプロセッサに結合された1つまたは複数のワイヤレスインターフェースと、前記1つまたは複数のワイヤレスインターフェースは、1つまたは複数のベースバンドプロセッサと1つまたは複数のトランシーバとを備える、
    をさらに備える、請求項1に記載の装置。
  28. ビデオデータをコーディングする方法であって、
    前記ビデオデータから現在のコーディングブロックを取得することと、
    前記現在のコーディングブロックのための制御データを決定することと、
    前記制御データから1つまたは複数のアフィン動きベクトルクリッピングパラメータを決定することと、
    前記現在のコーディングブロックのサンプルを選択することと、
    前記現在のコーディングブロックの前記サンプルのためのアフィン動きベクトルを決定することと、
    クリッピングされたアフィン動きベクトルを生成するために、前記1つまたは複数のアフィン動きベクトルクリッピングパラメータを使用して、前記アフィン動きベクトルをクリッピングすることと、
    を備える方法。
  29. 前記制御データは、
    フルサンプルユニット中での関連する水平座標と関連する垂直座標とを用いたロケーションと、
    前記現在のコーディングブロックの幅を指定する幅変数と、
    前記現在のコーディングブロックの高さを指定する高さ変数と、
    動きベクトルの水平変化と、
    動きベクトルの垂直変化と、
    ベーススケーリングされた動きベクトルと、
    を備える、請求項28に記載の方法。
  30. 前記1つまたは複数のアフィン動きベクトルクリッピングパラメータは、
    水平最大変数と、
    水平最小変数と、
    垂直最大変数と、
    垂直最小変数と、
    を備える、請求項29に記載の方法。
  31. 前記水平最小変数は、水平最小ピクチャ値と水平最小動きベクトル値とから選択される最大値によって定義される、請求項30に記載の方法。
  32. 前記水平最小ピクチャ値は、前記関連する水平座標から決定される、請求項31に記載の装置。
  33. 前記水平最小動きベクトル値は、中心動きベクトル値と、ブロックエリアサイズに基づく値のアレイと、前記現在のコーディングブロックの前記幅を指定する前記幅変数とから決定される、請求項32に記載の方法。
  34. 前記中心動きベクトル値は、前記ベーススケーリングされた動きベクトルと、動きベクトルの前記水平変化と、前記幅変数と、前記高さ変数とから決定される、請求項33に記載の方法。
  35. 前記ベーススケーリングされた動きベクトルは、前記現在のコーディングブロックの左上隅に対応し、制御点動きベクトル値から決定される、請求項34に記載の方法。
  36. 前記水平最大変数は、水平最大ピクチャ値と水平最大動きベクトル値とから選択される最小値によって定義される、請求項30に記載の方法。
  37. 前記水平最大ピクチャ値は、前記関連する水平座標と、前記幅変数とから決定される、請求項36に記載の方法。
  38. 前記水平最大動きベクトル値は、中心動きベクトル値と、前記ビデオデータに関連するブロックエリアサイズに基づく値のアレイと、前記現在のコーディングブロックの前記幅を指定する前記幅変数とから決定される、請求項37に記載の方法。
  39. 前記中心動きベクトル値は、前記ベーススケーリングされた動きベクトルと、動きベクトルの前記水平変化と、前記幅変数と、前記高さ変数とから決定される、請求項38に記載の方法。
  40. 前記ベーススケーリングされた動きベクトルは、前記現在のコーディングブロックの隅に対応し、制御点動きベクトル値から決定される、請求項39に記載の方法。
  41. 前記垂直最大変数は、垂直最大ピクチャ値と垂直最大動きベクトル値とから選択される最小値によって定義される、請求項30に記載の方法。
  42. 前記垂直最大ピクチャ値は、前記関連する垂直座標と、前記高さ変数とから決定される、請求項41に記載の方法。
  43. 前記垂直最大動きベクトル値は、中心動きベクトル値と、前記ビデオデータに関連するブロックエリアサイズに基づく値のアレイと、前記現在のコーディングブロックの前記幅を指定する前記高さ変数とから決定される、請求項42に記載の方法。
  44. 前記垂直最小変数は、垂直最小ピクチャ値と垂直最小動きベクトル値とから選択される最大値によって定義される、請求項30に記載の方法。
  45. 前記垂直最小ピクチャ値は、前記関連する垂直座標から決定される、請求項44に記載の方法。
  46. 前記垂直最小動きベクトル値は、中心動きベクトル値と、前記ビデオデータに関連するブロックエリアサイズに基づく値のアレイと、前記現在のコーディングブロックの前記高さを指定する前記高さ変数とから決定される、請求項45に記載の方法。
  47. 前記ビデオデータから複数の現在のコーディングブロックを連続的に取得することと、
    前記複数の現在のコーディングブロックのブロックのためにコーディングブロックごとにアフィン動きベクトルクリッピングパラメータのセットを決定することと、
    前記複数の現在のコーディングブロックのための前記ブロックごとのアフィン動きベクトルクリッピングパラメータの前記セットを使用して、対応する参照ピクチャの部分をフェッチすることと、
    をさらに備える、請求項28に記載の方法。
  48. 前記現在のコーディングブロックに関連する参照ピクチャを識別することと、
    前記1つまたは複数のアフィン動きベクトルクリッピングパラメータによって定義された前記参照ピクチャの部分を記憶することと、
    をさらに備える、請求項28に記載の装置。
  49. 前記参照ピクチャの前記部分は、前記現在のコーディングブロックを使用したアフィン動き処理動作のためにメモリバッファ中に記憶される、請求項48に記載の方法。
  50. 前記クリッピングされたアフィン動きベクトルによって示される参照ピクチャからの参照ピクチャデータを使用して、前記現在のコーディングブロックを処理すること、
    をさらに備える、請求項28に記載の装置。
  51. 前記現在のコーディングブロックの前記サンプルのための前記アフィン動きベクトルは、第1のベーススケーリングされた動きベクトル値と、動きベクトル値の第1の水平変化と、動きベクトル値の第1の垂直変化と、第2のベーススケーリングされた動きベクトル値と、動きベクトル値の第2の水平変化と、動きベクトル値の第2の垂直変化と、前記サンプルの水平座標と、前記サンプルの垂直座標とに従って決定される、請求項1に記載の方法。
  52. 前記制御データは、導出表からの値を備える、請求項28に記載の方法。
  53. 前記現在のコーディングブロックは、ルーマコーディングブロックである、請求項28に記載の方法。
  54. 1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
    ビデオデータから現在のコーディングブロックを取得することと、
    前記現在のコーディングブロックのための制御データを決定することと、
    前記制御データから1つまたは複数のアフィン動きベクトルクリッピングパラメータを決定することと、
    前記現在のコーディングブロックのサンプルを選択することと、
    前記現在のコーディングブロックの前記サンプルのためのアフィン動きベクトルを決定することと、
    クリッピングされたアフィン動きベクトルを生成するために、前記1つまたは複数のアフィン動きベクトルクリッピングパラメータを使用して、前記アフィン動きベクトルをクリッピングすることと、
    を行わせる命令を記憶する、非一時的コンピュータ可読記憶媒体。
JP2022518301A 2019-09-29 2020-09-28 ベクトルクリッピングを用いるアフィンコーディング Pending JP2022548990A (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201962907664P 2019-09-29 2019-09-29
US62/907,664 2019-09-29
US201962910384P 2019-10-03 2019-10-03
US62/910,384 2019-10-03
US17/033,659 2020-09-25
US17/033,659 US11317111B2 (en) 2019-09-29 2020-09-25 Affine coding with vector clipping
PCT/US2020/053147 WO2021062401A1 (en) 2019-09-29 2020-09-28 Affine coding with vector clipping

Publications (2)

Publication Number Publication Date
JP2022548990A true JP2022548990A (ja) 2022-11-22
JPWO2021062401A5 JPWO2021062401A5 (ja) 2023-09-05

Family

ID=75162657

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022518301A Pending JP2022548990A (ja) 2019-09-29 2020-09-28 ベクトルクリッピングを用いるアフィンコーディング

Country Status (7)

Country Link
US (1) US11317111B2 (ja)
EP (1) EP4035395A1 (ja)
JP (1) JP2022548990A (ja)
KR (1) KR20220064970A (ja)
CN (1) CN114402617A (ja)
AU (1) AU2020353234A1 (ja)
WO (1) WO2021062401A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022550032A (ja) * 2019-09-30 2022-11-30 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102463478B1 (ko) * 2018-01-26 2022-11-04 에이치에프아이 이노베이션 인크. 비디오 코딩 시스템을 위한 아핀 인터 예측 방법 및 장치
KR102444294B1 (ko) * 2018-05-10 2022-09-16 삼성전자주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
KR20220065879A (ko) * 2019-09-30 2022-05-20 후아웨이 테크놀러지 컴퍼니 리미티드 Dct 기반 보간 필터의 사용
EP4029250A4 (en) * 2019-09-30 2023-01-04 Huawei Technologies Co., Ltd. INTERPOLATION FILTER FOR INTER PREDICTION DEVICE AND VIDEO CODING METHOD
WO2023028965A1 (en) * 2021-09-02 2023-03-09 Nvidia Corporation Hardware codec accelerators for high-performance video encoding

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114827599A (zh) * 2016-02-03 2022-07-29 Oppo广东移动通信有限公司 运动图像解码装置、编码装置、以及预测图像生成装置
CA3105072A1 (en) * 2018-06-29 2020-01-02 Vid Scale, Inc. Adaptive control point selection for affine motion model based video coding
US11736713B2 (en) * 2018-11-14 2023-08-22 Tencent America LLC Constraint on affine model motion vector
CN113273205A (zh) * 2018-12-21 2021-08-17 北京字节跳动网络技术有限公司 使用更高比特深度精度的运动矢量推导
US10904550B2 (en) * 2019-01-12 2021-01-26 Tencent America LLC Method and apparatus for video coding

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022550032A (ja) * 2019-09-30 2022-11-30 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限
JP7414127B2 (ja) 2019-09-30 2024-01-16 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限

Also Published As

Publication number Publication date
EP4035395A1 (en) 2022-08-03
WO2021062401A1 (en) 2021-04-01
CN114402617A (zh) 2022-04-26
US20210099729A1 (en) 2021-04-01
US11317111B2 (en) 2022-04-26
KR20220064970A (ko) 2022-05-19
AU2020353234A1 (en) 2022-03-17

Similar Documents

Publication Publication Date Title
JP7342115B2 (ja) 履歴ベースの動きベクトル予測子の改善
US11057636B2 (en) Affine motion prediction
TWI761415B (zh) 用於雙向光學流(bio)之運動向量重建
JP6740243B2 (ja) ビデオコーディングにおける動きベクトル導出
CN110741639B (zh) 视频译码中的运动信息传播
KR102310752B1 (ko) 슬라이스 레벨 인트라 블록 카피 및 기타 비디오 코딩 개선
JP6552964B2 (ja) スケーラブルなマルチビュービデオコーディングにおける高度な残差予測
US20170302951A1 (en) Conformance constraint for collocated reference index in video coding
WO2019204297A1 (en) Limitation of the mvp derivation based on decoder-side motion vector derivation
US11582475B2 (en) History-based motion vector prediction
JP2019534622A (ja) フレームレートアップコンバージョンコーディングモードに対する改善
US11317111B2 (en) Affine coding with vector clipping
CN114303374A (zh) 利用可切换滤波器的参考画面重采样
JP2023554269A (ja) 重複ブロック動き補償
CN112823517B (zh) 基于历史的运动矢量预测子的改进

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20230104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230828

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230828