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

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

▶ テンセント・アメリカ・エルエルシーの特許一覧

特開2024-96922ビデオをデコードするための方法、装置及びプログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024096922
(43)【公開日】2024-07-17
(54)【発明の名称】ビデオをデコードするための方法、装置及びプログラム
(51)【国際特許分類】
   H04N 19/593 20140101AFI20240709BHJP
【FI】
H04N19/593
【審査請求】有
【請求項の数】1
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024066528
(22)【出願日】2024-04-17
(62)【分割の表示】P 2023002429の分割
【原出願日】2020-01-06
(31)【優先権主張番号】62/792,888
(32)【優先日】2019-01-15
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/533,719
(32)【優先日】2019-08-06
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】シュイ,シアオジョォン
(72)【発明者】
【氏名】リィウ,シャン
(72)【発明者】
【氏名】リ,シアン
(57)【要約】      (修正有)
【課題】ビデオエンコード/デコードのための方法及び装置を提供する。
【解決手段】ビデオエンコード方法は、現在のコーディングツリーユニット(CTU)における現在のブロックの残差を計算するために使用される参照サンプルを得るために、CTUにおける現在のブロックの予測情報を決定するステップを含む。予測情報は、イントラブロックコピーモードを表すものであり、現在のCTUのサイズは、再構成されたサンプルを格納するための参照サンプルメモリの最大サイズより小さい。方法はまた、現在のブロックと同じ画像の参照ブロックを指すブロックベクトルを決定するステップを含む。参照ブロックは、参照サンプルメモリ内にバッファされた、再構成されたサンプルを有する。方法はさらに、参照サンプルメモリから読み出された参照ブロックの再構成されたサンプルに基づいて現在のブロックの少なくとも1つのサンプルを再構成するステップを含む。
【選択図】図13
【特許請求の範囲】
【請求項1】
エンコーダにおいて現在のコーディングツリーユニット(CTU)における現在のブロックの残差を計算するために使用される参照サンプルを得るための、プロセッサによって実行される方法であって、
現在のコーディングツリーユニット(CTU)における現在のブロックの予測情報を決定するステップであって、前記予測情報はイントラブロックコピーモードを表すものであり、前記現在のCTUのサイズは、再構成されたサンプルを格納するための参照サンプルメモリのサイズより小さく、前記参照サンプルメモリのサイズは、許容される最大CTUサイズに等しい、ステップと、
前記現在のブロックと同じ画像の参照ブロックを指すブロックベクトルを決定するステップであって、前記参照ブロックは、前記参照サンプルメモリ内にバッファされた、再構成されたサンプルを有する、ステップと、
前記参照サンプルメモリから読み出される前記参照ブロックの前記再構成されたサンプルに基づいて前記現在のブロックの少なくとも1つのサンプルを再構成するステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
参照による援用
本出願は、2019年8月6日出願の米国特許出願番号第16/533,719号「METHOD AND APPARATUS FOR VIDEO CODING(ビデオコーディングのための方法と装置)」の優先権の利益を主張し、2019年1月15日出願の米国仮出願番号第62/792,888号「SEARCH RANGE ADJUSTMENT WITH VARIABLE CTU SIZE FOR INTRA PICTURE BLOCK COMPENSATION(イントラ画像ブロック補償のための可変CTUサイズを有するサーチ範囲調整)」に優先権の利益を主張する。先願の全ての開示は、その全体を本明細書に参照援用する。
【0002】
技術分野
本開示は、概して、ビデオコーディングに関連する実施形態を記載する。
【背景技術】
【0003】
本明細書で提供される背景説明は、本開示のコンテキストを全般的に提示するためのものである。現在挙げられている発明者の研究は、その研究がこの背景部分に記載されている範囲において、また、出願時に他の点では先行技術として適格でないかもしれない説明の側面において、本開示に対する先行技術として明示的にも黙示的にも認められていない。
【0004】
ビデオコーディングとデコーディングは、動き補正を伴うインター画像予測(inter-picture prediction)を用いて行うことができる。非圧縮ディジタルビデオは、一連の画像を含むことができ、各画像は、例えば、1920×1080の輝度サンプル及び関連する色サンプルの空間寸法を有する。一連の画像は、固定又は可変の画像レート(例えば、60画像/秒又は60Hz)を有することができる。非圧縮ビデオは、大きいビットレートを必要とする。例えば、サンプル当たり8ビットの1080p60 4:2:0ビデオ(60Hzのフレームレートでの1920x1080の輝度サンプル解像度)は、1.5Gビット/秒に近い帯域幅を必要とする。このようなビデオの1時間は、600Gバイトを超えるストレージ領域を必要とする。
【0005】
ビデオコーディング及びデコーディングの1つの目的は、圧縮による入力ビデオ信号の冗長性の低減である。圧縮は、場合によっては、2桁以上前述の帯域幅又はストレージスペースの必要性を低減するのに役立つ。可逆圧縮及び非可逆圧縮の両方、並びにそれらの組み合わせを用いることができる。可逆圧縮とは、元の信号の正確なコピーを圧縮された元の信号から再構成することができる技術をいう。非可逆圧縮を使用する場合、再構成された信号は、元の信号と同一ではないかもしれないが、元の信号と再構成された信号との間の歪みは十分小さく、再構成された信号を意図された用途に役立てられる。ビデオの場合、非可逆圧縮が広く用いられている。許容される歪みの量は、用途に依存し、例えば、特定の消費者ストリーミング用途のユーザは、テレビ配信用途のユーザよりも高い歪みを容認し得る。達成可能な圧縮比は、より高い許容可能/容認可能歪みは、より高い圧縮比をもたらすことができることを反映することができる。
【0006】
ビデオエンコーダ及びデコーダは、例えば、動き補償、変換、量子化、及びエントロピーコーディングを含むいくつかの広範なカテゴリからの技術を利用することができる。
【0007】
ビデオコーデック技術は、イントラコーディングとして知られる技術を含むことができる。イントラコーディングでは、サンプル値は、以前に再構成された参照画像からのサンプル又は他のデータを参照することなく表現される。いくつかのビデオコーデックでは、画像は空間的にサンプルのブロックに分割される。サンプルのすべてのブロックがイントラモードでコーディングされている場合、その画像はイントラ画像とすることができる。イントラ画像と、独立デコーダリフレッシュ画像等のそれらの派生物は、デコーダ状態をリセットするために用いられることができ、したがって、コーディングされたビデオビットストリーム及びビデオセッションにおける第1画像として、又は静止画像として用いられることができる。イントラブロックのサンプルは変換にさらされることができ、変換係数はエントロピーコーディングの前に量子化されることができる。イントラ予測は、変換前ドメインにおけるサンプル値を最小化する技術であり得る。場合によっては、変換後のDC値がより小さく、AC係数がより小さいほど、エントロピーコーディング後にブロックを表すための所与の量子化ステップサイズで必要なビットが少なくなる。
【0008】
例えばMPEG-2世代のコーディング技術から知られるような従来のイントラ符号化は、イントラ予測を使用しない。しかしながら、いくつかのより新しいビデオ圧縮技術は、例えば、空間的に近接するデータのエンコード/デコード中に得られる周囲の、デコード順において先行するサンプルデータ及び/又はメタデータから、データのブロックを試行する技術を含む。このような技術は、以後「イントラ予測」技術と称される。少なくともいくつかの場合では、イントラ予測は再構成中の現在画像からの参照データのみを使用し、参照画像からの参照データは使用しないことに留意されたい。
【0009】
さまざまな形式のイントラ予測があり得る。かかり技術のうちの1つ以上が、所与のビデオコーディング技術において用いられることができる場合、使用中の技術は、イントラ予測モードでコーディングされることができる。特定の場合には、モードは、サブモード及び/又はパラメータを有することができ、それらは、個別にコーディングされることができ、又はモードコード名(mode codeword)に含まれることができる。所与のモード/サブモード/パラメータの組み合わせに用いられるコード名は、イントラ予測を通してコーディング効率ゲイン(coding efficiency gain)に影響を与える可能性があり、同様に、コード名をビットストリームに変換するために使用されるエントロピー符号化技術も同様に影響を与える可能性がある。
【0010】
特定のイントラ予測モードがH.264で導入され、H.265で改良され、共同探索モデル(JEM:joint exploration model)、汎用ビデオコーディング(VVC:versatile video coding)、及びベンチマークセット(BMS:benchmark set)等のより新しいコーディング技術でさらに改良された。予測子ブロックは、既に利用可能なサンプルに属する近接するサンプル値を使用して形成されることができる。隣接するサンプルのサンプル値は、方向にしたがって予測子ブロックにコピーされる。使用中の方向への参照は、ビットストリームでコーディングされることができ、又はそれ自体が予測されることがある。
【0011】
図1を参照すると、右下に示されているのは、(35個のイントラモードの33個の角度モードに対応する、)H.265の33個の可能な予測子方向から知られる9個の予測子方向のサブセットである。矢印が集中する点(101)は、予測されているサンプルを表す。矢印は、サンプルが予測されている方向を示す。例えば、矢印(102)は、サンプル(101)が、1つ以上のサンプルから、水平から45度の角度で右上に向かって予測されることを示す。同様に、矢印(103)は、サンプル(101)が、1つ以上のサンプル(101)から、水平方向から22.5度の角度でサンプル(101)の左下へ予測されることを示す。
【0012】
さらに図1を参照すると、左上には、4×4サンプルの正方形ブロック(104)が示されている(破線の太線で示されている)。正方形ブロック(104)は、16個のサンプルを含み、各サンプルは「S」でラベル付けされ、Y次元におけるその位置(例えば、行インデックス)及びX次元におけるその位置(例えば、列インデックス)を含む。例えば、サンプルS21は、Y次元の(頂部から)2番目のサンプル及びX次元の(左側から)1番目のサンプルである。同様に、サンプルS44は、ブロック(104)内でY及びX次元の両方において4番目のサンプルである。ブロックのサイズが4×4サンプルであるので、S44は右下にある。さらに、同様の番号付けスキームにしたがった参照サンプルを示す。参照サンプルは、R、ブロック(104)に対するそのY位置(例えば、行インデックス)及びX位置(列インデックス)でラベル付けされる。H.264とH.265の両方で、予測サンプルは再構成中のブロックに隣接しているため、
負の値を使用する必要はない。
【0013】
イントラ画像予測は、信号予測方向に応じて、隣接するサンプルから参照サンプル値をコピーすることによって機能する。例えば、コーディングされたビデオビットストリームは、このブロックについて、矢印(102)と一致する予測方向を示す信号を含むと仮定する。すなわち、サンプルは、1つ以上の予測サンプルから右上へ、水平方向から45度の角度で予測される。その場合、サンプルS41、S32、S23、及びS14は、同じ参照サンプルR05から予測される。その後、サンプルS44は、参照サンプルR08から予測される。
【0014】
特定の場合には、特に方向が45度で均等に割り切れない場合には、参照サンプルを計算するために、複数の参照サンプルの値を、例えば内挿によって組み合わせることができる。
【0015】
ビデオコーディング技術の発達に伴って可能性のある方向の数が増加している。H.264(2003年)では、9つの異なる方向を表すことができた。これは、H.265(2013年)で33に増加し、開示時のJEM/VVC/BMSでは、最大65の方向性をサポートできる。最も可能性の高い方向を特定するために実験が行われており、エントロピーコーディングの特定の技術は、少数のビットにおいて、それらの可能性のある方向を表現するために用いられ、より可能性の低い方向に対する特定のペナルティを受け入れる。さらに、方向それ自体は、時々、近接する、すでにデコードされたブロックで使用される近接する方向から予測されることができる。
【0016】
図2は、経時的に増加する予測方向の数を示すために、JEMによる65のイントラ予測方向を示す概略図(201)を示す。
【0017】
方向を表すコーディングされたビデオビットストリームにおけるイントラ予測方向ビットのマッピングは、ビデオコーディング技術からビデオコーディング技術へ異なることができ、例えば、予測方向の単純な直接マッピングから、イントラ予測モード、コード名、最も可能性の高いモードを含む複合適応方式、及び類似の技術にまで及ぶことができる。
しかし、どのような場合でも、ビデオコンテンツにおいて、他の特定の方向よりも統計的に起こりにくい特定の方向が存在し得る。ビデオ圧縮の目標は冗長性の低減であるので、良好に動作するビデオコーディング技術においては、より可能性の低い方向は、より可能性の高い方向よりもより多くのビット数によって表されるであろう。
【発明の概要】
【0018】
本開示の態様は、ビデオエンコード/デコードのための方法及び装置を提供する。いくつかの実施例では、ビデオデコードのための装置は、受信回路及び処理回路を含む。例えば、処理回路は、コーディングされたビデオビットストリームから、現在のコーディングツリーユニット(CTU)における現在のブロックの予測情報をデコードする。予測情報はイントラブロックコピーモードを表すものである。現在のCTUのサイズは、再構成されたサンプルを格納するための参照サンプルメモリの最大サイズより小さい。処理回路は、現在のブロックと同じ画像の参照ブロックを指すブロックベクトルを決定する。参照ブロックは、参照サンプルメモリ内にバッファされた、再構成されたサンプルを有する。その後、処理回路は、参照サンプルメモリから読み出される参照ブロックの再構成されたサンプルに基づいて現在のブロックの少なくとも1つのサンプルを再構成する。
【0019】
いくつかの実施形態では、処理回路は、現在のCTUと同じCTU列内にあり、現在のCTUの左側の第(N-1)番目のCTUから、現在のCTUの左側の隣り合うCTUまでの領域内に位置する参照ブロックを指すブロックベクトルを決定し、参照サンプルメモリの最大サイズは、現在のCTUのサイズのN倍であり、Nは1より大きい正の数である。
【0020】
いくつかの実施形態では、処理回路は、参照ブロックの頂部境界が同じCTU列内にあるかどうかチェックする。さらに、処理回路は、参照ブロックの底部境界が同じCTU列内にあるかどうかチェックする。そして、処理回路は、参照ブロックの左側境界が、左側のN番目のCTUの右側にあるかどうかをチェックし、右側境界が、現在のCTUの左側にあるかどうかをチェックする。
【0021】
いくつかの実施形態では、処理回路は、参照ブロックが少なくとも部分的に、現在のCTUと同じCTU列内にある左側の第N番目のCTU内にあるかどうかチェックし、参照サンプルメモリの最大サイズは、現在のCTUのサイズのN倍であり、Nは1より大きい正の数である。
【0022】
さらに、処理回路は、参照ブロックの左側境界が、左側のN番目のCTU内にあるかどうかチェックする。参照ブロックが少なくとも部分的に左側のN番目のCTUにある場合に、処理回路は、現在のCTU内において、参照ブロックのコロケーションされたブロック(collocated block)が少なくとも部分的に再構成されている(is at least partially reconstructed)かどうか決定する。一実施例において、処理回路は、コロケーションされたブロックの左上コーナーが再構成された(has been reconstructed)かどうかを決定する。処理回路は、現在のCTU内のコロケーションされたブロックが少なくとも部分的に再構成されている場合に、参照ブロックを指すブロックベクトルを無効にする。
【0023】
いくつかの実施形態では、処理回路は、参照ブロックを含む左側の第N番目のCTU内に参照ブロック領域を決定し、現在のCTUにおいて、参照ブロック領域のコロケーションされたブロック領域が少なくとも部分的に再構成されているかどうか決定する。その後、処理回路は、現在のCTU内のコロケーションされたブロック領域が少なくとも部分的に再構成されている場合に、参照ブロックを指すブロックベクトルを無効にする。
【0024】
また、本開示の態様は、ビデオデコーディングのためにコンピュータによって実行されたときに、コンピュータにビデオコーディングのための方法を実行させる命令を格納する非一時的なコンピュータ読取可能媒体記憶を提供する。
【図面の簡単な説明】
【0025】
開示された主題のさらなる特徴、性質、及び種々の利点は、以下の詳細な説明及び添付の図面からより明らかになるであろう。
図1図1は、イントラ予測モードの例示的サブセットの概略図である。
図2図2は、例示的なイントラ予測方向の説明図である。
図3図3は、一実施形態による通信システム(300)の簡略ブロック図を模式的に示す図である。
図4図4は、一実施形態による通信システム(400)の簡略ブロック図を模式的に示す図である。
図5図5は、一実施形態によるデコーダの簡略ブロック図を模式的に示す図である。
図6図6は、一実施形態によるエンコーダの簡略ブロック図を模式的に示す図である。
図7図7は、別の実施形態によるエンコーダのブロック図である。
図8図8は、別の実施形態によるデコーダのブロック図である。
図9図9は、本開示の一実施形態によるイントラブロックコピーの例を示す。
図10A図10Aは、本開示の一実施形態による、イントラブロックコピーモードに対する有効サーチ範囲の例を示す。
図10B図10Bは、本開示の一実施形態による、イントラブロックコピーモードに対する有効サーチ範囲の例を示す。
図10C図10Cは、本開示の一実施形態による、イントラブロックコピーモードに対する有効サーチ範囲の例を示す。
図10D図10Dは、本開示の一実施形態による、イントラブロックコピーモードに対する有効サーチ範囲の例を示す。
図11図11は、本開示のいくつかの実施形態による、コロケーションされたブロックの例を示す。
図12図12は、本開示のいくつかの実施形態による、コロケーションされたブロックの例を示す。
図13図13は、本開示のいくつかの実施形態による、プロセス例を概説するフローチャートを示す。
図14図14は、一実施形態によるコンピュータシステムを模式的に示す図である。
【発明を実施するための形態】
【0026】
図3は、本開示の一実施形態による通信システム(300)の簡略化されたブロック図を示す。通信システム(300)は、例えばネットワーク(350)を介して互いに通信することができる複数の端末デバイスを含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された第1対の端末デバイス(310)及び(320)を含む。図3の例では、第1対の端末デバイス(310)及び(320)は、データの一方向送信を行う。例えば、端末デバイス(310)は、ビデオデータ(例えば、端末デバイス(310)によって捕捉されるビデオ画像のストリーム)をコーディングすることができ、ネットワーク(350)を介して他の端末デバイス(320)に伝送することができる。エンコードされた画像データは、1つ以上のコーディングされたビデオビットストリームの形態で送信されることができる。端末デバイス(320)は、ネットワーク(350)からコーディングされたビデオデータを受信し、コーディングされたビデオデータをデコードして、ビデオ画像を復元し、復元されたビデオデータにしたがってビデオ画像を表示することができる。一方向性データ伝送は、メディア提供アプリケーション等において一般的であり得る。
【0027】
別の例では、通信システム(300)は、第2対の端末デバイス(330)及び(340)を含み、例えばビデオ会議中に、発生し得るコーディングされたビデオデータの双方向伝送を行う。データの双方向伝送のために、例えば、端末デバイス(330)及び(340)の各端末デバイスは、ネットワーク(350)を介して端末デバイス(330)及び(340)の他方の端末デバイスに伝送するために、ビデオデータ(例えば、端末デバイスによって捕捉されるビデオ画像のストリーム)をコーディングし得る。端末デバイス(330)及び(340)の各端末デバイスは、端末デバイス(330)及び(340)の他方の端末デバイスによって送信されたコーディングされたビデオデータを受信し、コーディングされたビデオデータをデコードして、ビデオ画像を復元し、復元されたビデオデータにしたがって、アクセス可能な表示デバイスにビデオ画像を表示し得る。
【0028】
図3の例では、端末デバイス(310)、(320)、(330)及び(340)は、サーバ、パーソナルコンピュータ及びスマートフォンとして示され得るが、本発明の原理はこれらに限定されない。本発明の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤ、及び/又は専用のビデオ会議機器への適用を見出す。ネットワーク(350)は、例えばワイヤライン(有線)及び/又は無線通信ネットワークを含む、端末デバイス(310)、(320)、(330)及び(340)の間でコーディングされたビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(350)は、回線交換及び/又はパケット交換チャネル内のデータを交換することができる。代表的なネットワークには、テレコミュニケーションネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又はインターネットが含まれる。本説明の目的のためには、以下に説明しない限り、ネットワーク(250)のアーキテクチャ及びトポロジーは本発明の動作には重要ではない可能性がある。
【0029】
図4は、開示された主題の適用例として、ストリーミング環境におけるビデオエンコーダ及びビデオデコーダの配置を示す。開示された主題は、例えば、ビデオ会議、デジタルTVや、CD、DVD、メモリースティック等を含むデジタルメディアへの圧縮ビデオの保存等を含む、他のビデオ対応アプリケーションに等しく適用することができる。
【0030】
ストリーミングシステムは、例えば、非圧縮のビデオ画像(402)のストリームを生成するビデオソース(401)、例えばデジタルカメラを含むことができるキャプチャサブシステム(413)を含み得る。一実施形態では、ビデオ画像のストリーム(402)は、デジタルカメラによって撮影されるサンプルを含む。エンコードされたビデオデータ(404)(又はコーディングされたビデオビットストリーム)と比較した場合に、高データ量を強調するために太線として描かれたビデオ画像のストリーム(402)は、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子デバイス(420)によって処理されることができる。ビデオエンコーダ(403)は、ハードウェア、ソフトウェア、又はそれらの組み合わせを含むことができ、以下により詳細に説明されるように、開示された主題の態様を可能にし又は実施する。エンコードされたビデオデータ(404)(又はエンコードされたビデオビットストリーム(404))は、ビデオ画像(402)のストリームと比較した場合に、より低いデータ量を強調するために細線として示され、将来の使用のためにストリーミングサーバ(405)に格納され得る。図4のクライアントサブシステム(406)及び(408)等の1つ以上のストリーミングクライアントサブシステムは、ストリーミングサーバ(405)にアクセスすることができ、エンコードされたビデオデータ(404)のコピー(407)及び(409)を読み出すことができる。クライアントサブシステム(406)は、例えば電子デバイス(430)内のビデオデコーダ(410)を含むことができる。ビデオデコーダ(410)は、エンコードされたビデオデータの入力コピー(407)をデコードし、ディスプレイ(412)(例えばディスプレイスクリーン)又は他のレンダリングデバイス(図示せず)上にレンダリングすることができるビデオ画像の出力ストリーム(411)を生成する。いくつかのストリーミングシステムでは、エンコードされたビデオデータ(404)、(407)及び(409)(例えば、ビデオビットストリーム)は、特定のビデオコーディング/圧縮標準にしたがってコーディングされることができる。これらの標準の例は、ITU-T勧告H.265を含む。例えば、開発中のビデオコーディング規格は、汎用ビデオコーディング(VVC)として非公式に知られている。開示された主題は、VVCのコンテキストで使用され得る。
【0031】
電子デバイス(420)及び(430)は、他の構成要素(図示せず)を含むことができることに留意されたい。例えば、電子デバイス(420)は、ビデオデコーダ(図示せず)を含むことができ、電子デバイス(430)は、ビデオエンコーダ(図示せず)も含むことができる。
【0032】
図5は、本開示の一実施例によるビデオデコーダ(510)のブロック図を示す。ビデオデコーダ(510)は、電子デバイス(530)に含まれることができる。電子デバイス(530)は、受信器(531)(例えば、受信回路)を含むことができる。ビデオデコーダ(510)は、図4の例のビデオデコーダ(410)の代わりに使用されることができる。
【0033】
受信器(531)は、ビデオデコーダ(510)によってデコードされるべき1つ以上のコーディングされたビデオシーケンスを受信することができ、同一又は別の実施形態では、一度に1つのコーディングされたビデオシーケンスを受信することができ、その際、各コーディングされたビデオシーケンスのデコーディングは、他のコーディングされたビデオシーケンスから独立している。コーディングされたビデオシーケンスは、チャネル(501)から受信することができ、このチャネルは、エンコードされたビデオデータを格納するストレージデバイスへのハードウェア/ソフトウェアリンクであり得る。受信器(531)は、エンコードされたビデオデータを、他のデータ、例えばコーディングされたオーディオデータ及び/又は付随的なデータストリームと共に受信することができ、これらのデータは、それぞれのエンティティ(図示せず)を使用して転送され得る。受信器(531)は、コーディングされたビデオシーケンスを他のデータから分離することができる。ネットワークジッタに対抗するために、バッファメモリ(515)が、受信器(531)とエントロピーデコーダ/パーサ(520)(以後「パーサ(520)」)との間に結合され得る。特定の用途では、バッファメモリ(515)はビデオデコーダ(510)の一部である。他の場合には、ビデオデコーダ(510)の外側にあることができる(図示せず)。さらに別の場合には、例えばネットワークジッタに対抗するために、ビデオデコーダ(510)の外側にバッファメモリ(図示せず)が存在することができ、さらに、例えば再生タイミング(playout timing)を処理するために、ビデオデコーダ(510)の内側に別のバッファメモリ(515)が存在することもできる。受信器(531)が、十分な帯域幅及び制御可能性の記憶/転送デバイスから、又は、アイソクロナスネットワーク(isosynchronous network)から、データを受信している場合、バッファメモリ(515)は不要であるか、又は小さくてもよい。インターネット等のベストエフォート型パケットネットワークでの使用のために、バッファメモリ(515)は、必要とされ、比較的大きく、有利には適応サイズであり得、ビデオデコーダ(510)の外側のオペレーティングシステム又は類似の要素(図示せず)に少なくとも部分的に実装され得る。
【0034】
ビデオデコーダ(510)は、コーディングされたビデオシーケンスからシンボル(521)を再構成するためのパーサ(520)を含み得る。これらのシンボルのカテゴリは、図5に示されているように、ビデオデコーダ(510)の動作を管理するために使用される情報、及び、電子デバイス(530)の不可欠な部分ではないが、電子デバイス(530)に結合され得るレンダリングデバイス(512)(例えば、表示スクリーン)等のレンダリングデバイスを制御する潜在的な情報を含む。(複数の)レンダリングデバイスの制御情報は、付加拡張情報(SEIメッセージ)又はビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形態であり得る。パーサ(520)は、受信されるコーディングされたビデオシーケンスをパースし/エントロピーデコードすることができる。コーディングされたビデオシーケンスのコーディングは、ビデオコーディング技術又は標準に従うことができ、可変長コーディング、ハフマンコーディング、コンテキスト感度を伴う又は伴わない算術コーディングなどを含む種々の原理に従うことができる。パーサ(520)は、グループに対応する少なくとも1つのパラメータに基づいて、ビデオデコーダ内のピクセルのサブグループのうちの少なくとも1つに対するサブグループパラメータのセットを、コーディングされたビデオシーケンスから抽出し得る。サブグループは、画像グループ(GOP)、画像、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)等を含み得る。パーサ(520)はまた、変換係数、量子化パラメータ値、動きベクトル等の情報を、コーディングされたビデオシーケンスから抽出し得る。
【0035】
パーサ(520)は、シンボル(521)を生成するように、バッファメモリ(515)から受信したビデオシーケンスに、エントロピーデコード/パース動作を実行し得る。
【0036】
シンボル(521)の再構成は、コーディングされたビデオ画像又はその部分のタイプ(例えば、画像間及び画像内、ブロック間及びブロック内)及び他の要因に応じて、複数の異なるユニットを含むことができる。どのユニットが、どのように含まれているかは、パーサ(520)によってコーディングされたビデオシーケンスからパースされたサブグループ制御情報によって制御されることができる。パーサ(520)と以下の複数ユニットとの間のかかるサブグループ制御情報のフローは、明確さのために図示されていない。
【0037】
すでに述べた機能ブロックの他に、ビデオデコーダ(510)は、概念的に、以下に説明するように、いくつかの機能ユニットに分割されることができる。商業的制約の下で動作する実用的な実装では、これらのユニットの多くは互いに密接に相互作用し、少なくとも部分的に互いに統合されることができる。しかしながら、開示された主題を説明するの目的で、以下の機能単位に概念的に細分化することが適切である。
【0038】
第1ユニットは、スケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、量子化された変換係数、並びに、パーサ(520)から(複数の)シンボル(521)として、使用されるべき変換、ブロックサイズ、量子化係数、量子化スケーリング行列などを含む制御情報を受信する。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力可能なサンプル値を含むブロックを出力することができる。
【0039】
場合によっては、スケーラ/逆変換(551)の出力サンプルは、イントラコーディングされたブロックに関係することができ、すなわち、以前に再構成された画像からの予測情報を使用していないが、現在の画像の以前に再構成された部分からの予測情報を使用することができるブロックに関連付けることができる。かかる予測情報は、イントラ画像予測ユニット(552)によって提供されることができる。場合によっては、イントラ画像予測ユニット(552)は、現在の画像バッファ(558)からフェッチされた周囲の既に再構成された情報を使用して、再構成中のブロックと同じサイズ及び形状のブロックを生成する。現在の画像バッファ(558)は、例えば、部分的に再構成された現在の画像及び/又は完全に再構成された現在の画像をバッファする。アグリゲータ(555)は、場合によっては、サンプル毎に、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に加算する。
【0040】
他の場合には、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコーディングに関係し、潜在的に動き補償ブロックに関係することができる。かかる場合、動き補償予測ユニット(553)は、予測に使用されるサンプルをフェッチするために参照画像メモリ(557)にアクセスすることができる。ブロックに関連するシンボル(521)にしたがって、フェッチされたサンプルを動き補償した後、これらのサンプルは、出力サンプル情報を生成するために、アグリゲータ(555)によって、スケーラ/逆変換ユニット(551)の出力(この場合、残差サンプル又は残差信号と称される)に加算されることができる。動き補償予測ユニット(553)が予測サンプルをフェッチする参照画像メモリ(557)内のアドレスは、動きベクトルによって制御することができ、例えばX、Y、及び参照画像コンポーネントを有することができるシンボル(521)の形態で動き補償予測ユニット(553)に利用可能である。動き補償はまた、サブサンプルの正確な動きベクトルが使用されている場合には、参照画像メモリ(557)からフェッチされるようにサンプル値を補間すること、動きベクトル予測機構、等を含むことができる。
【0041】
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)内の種々のループフィルタリング技術を受けることができる。ビデオ圧縮技術は、インループフィルタ技術(in-loop filter technologies)を含むことができ、コーディングされたビデオシーケンス(コーディングされたビデオビットストリームとも称される)に含まれるパラメータによって制御され、パーサ(520)からシンボル(521)としてループフィルタユニット(556)に利用可能にされるが、コーディングされた画像又はコーディングされたビデオシーケンスと(デコード順において)先行する部分のデコードの間で得られるメタ情報に応答することができると共に、先行して再構成されループフィルタリングされたサンプル値に応答することができる、インループフィルタ技術を含むことができる。
【0042】
ループフィルタユニット(556)の出力は、レンダリングデバイス(512)に出力されることができ、また将来のイントラ画像予測に使用するために参照画像メモリ(557)に記憶されることができるサンプルストリームであることができる。
【0043】
コーディングされた画像は、一旦完全に再構成されると、将来の予測のための参照画像として使用されることができる。例えば、一旦現在の画像に対応するコーディング画像が完全に再構成され、(例えば、パーサ(520)によって)コーディングされた画像が参照画像として識別されると、現在の画像バッファ(4558)は参照画像メモリ(557)の一部となることができ、新たな現在画像バッファは、後続のコーディング画像の再構成を開始する前に再割当てされ得る。
【0044】
ビデオデコーダ(510)は、ITU-T Rec.H.265.等の標準の所定のビデオ圧縮技術にしたがってデコーディング動作を実行し得る。コーディングされたビデオシーケンスは、コーディングされたビデオシーケンスが、ビデオ圧縮技術若しくは標準の構文、及び、ビデオ圧縮技術若しくは標準に文書化されているプロファイルの両方に準拠するという意味で、使用されているビデオ圧縮技術又は標準によって特定された構文に適合し得る。具体的には、プロファイルは、特定のツールを、そのプロファイルの下で使用できる唯一のツールとして、ビデオ圧縮技術又は標準で使用可能なすべてのツールから選択することができる。また、コンプライアンスのために必要なことは、コーディングされたビデオシーケンスの複雑さが、ビデオ圧縮技術又は標準のレベルによって定義される範囲内にあることであり得る。場合によっては、レベルは、最大画像サイズ、最大フレームレート、最大再構成サンプルレート(例えば、毎秒メガサンプルで測定される)、最大参照画像サイズなどを制限する。レベルによって設定された制限は、場合によっては、仮想参照デコーダ(HRD:Hypothetical Reference Decoder)の仕様と、コーディングされたビデオシーケンスでシグナリングされるHRDバッファ管理のメタデータによってさらに制限され得る。
【0045】
一実施形態では、受信器(531)は、エンコードされたビデオと共に追加の(冗長な)データを受信することができる。追加データは、コーディングされた(複数の)ビデオシーケンスの部分として含まれ得る。追加のデータは、データを適切にデコードするため、及び/又は元のビデオデータをより正確に再構成するために、ビデオデコーダ(510)によって使用され得る。追加のデータは、例えば、時間的、空間的、又は信号雑音比(SNR)拡張層、冗長スライス、冗長画像、前方エラー補正コードなどの形態であり得る。
【0046】
図6は、本開示の一実施例によればビデオエンコーダ(603)のブロック図を示す。
ビデオエンコーダ(603)は、電子デバイス(620)に含まれる。電子デバイス(620)は、送信器(640)(例えば送信回路)を含む。図4の例のビデオエンコーダ(403)の代わりに、ビデオエンコーダ(603)を用いることができる。
【0047】
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によってコーディングされる(複数の)ビデオ画像を捕捉することができるビデオソース(601)(図6の例では電子デバイス(620)の一部ではない)からビデオサンプルを受信し得る。別の例では、ビデオソース(601)は、電子デバイス(620)の一部である。
【0048】
ビデオソース(601)は、任意の適切なビット深さ(例えば、8ビット、10ビット、12ビット、...)、任意の色空間(例えば、BT.601 Y CrCB、RGB、...)、及び任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)であることができるデジタルビデオサンプルストリームの形態で、ビデオエンコーダ(603)によってコーディングされるべきソースビデオシーケンスを提供し得る。メディア配信システムにおいて、ビデオソース(601)は、予め準備されたビデオを記憶する記憶デバイスであり得る。ビデオ会議システムでは、ビデオソース(601)は、局所的画像情報をビデオシーケンスとして捕捉するカメラであり得る。ビデオデータは、シーケンスで見たときに動きをもたらす複数の個々の画像として提供され得る。画像自体は、ピクセルの空間アレイとして組織化されることができ、各ピクセルは、使用中のサンプリング構造、色空間等に応じて、1つ以上のサンプルを含むことができる。当業者は、ピクセルとサンプルとの関係を容易に理解することができる。以下の説明は、サンプルに焦点を当てている。
【0049】
一実施形態によれば、ビデオエンコーダ(603)は、ソースビデオシーケンスの画像を、リアルタイムで、又はアプリケーションによって要求される任意の他の時間制約下で、コーディングされたビデオシーケンス(643)にコーディングし、圧縮し得る。適切なコーディングスピードを実現することは、コントローラ(650)の一つの機能である。いくつかの実施形態において、コントローラ(650)は、以下に記載されるように、他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。結合は、明確性のために示されていない。コントローラ(650)によって設定されるパラメータは、レート制御関連パラメータ(画像スキップ、量子化器、レート歪み最適化技術のラムダ値、...)、画像サイズ、画像グループレイアウト、最大動きベクトル探索範囲等を含むことができる。コントローラ(650)は、特定のシステム設計のために最適化されたビデオエンコーダ(603)に関連する他の適切な機能を有するように構成されることができる。
【0050】
いくつかの実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成される。過剰に単純化された説明として、一例において、コーディングループは、(例えば、コーディングされるべき入力画像及び参照画像に基づいて、シンボルストリーム等のシンボルを生成する責任を担う)ソースコーダ(630)と、ビデオエンコーダ(603)に埋め込まれた(ローカル)デコーダ(633)とを含むことができる。デコーダ(633)は、(シンボルとコーディングされたビデオビットストリームとの間の任意の圧縮が、開示された主題において考慮されたビデオ圧縮技術において可逆的であるように)、(リモート)デコーダも作成するのと同様の方法で、シンボルを再構成してサンプルデータを作成する。再構成されたサンプルストリーム(サンプルデータ)は、参照画像メモリ(634)に入力される。シンボルストリームのデコーディングは、デコーダロケーション(ローカル又はリモート)に依存しないビットイクザクトな結果(bit-exact results)をもたらすので、参照画像メモリ(634)中の内容もまた、ローカルエンコーダとリモートエンコーダとの間でビットイクザクトである。換言すれば、エンコーダの予測部分は、デコーダがデコード中に予測を使用するときに「見る」のとまったく同じサンプル値を参照画像サンプルとして「見る」。参照画像同期性のこの基本原理(及び、例えばチャンネルエラーのために、同期性が維持できない場合の結果として生じるドリフト)は、いくつかの関連技術においても同様に使用される。
【0051】
「ローカル」デコーダ(533)の動作は、ビデオデコーダ(410)等の「リモート」デコーダと同じであることができ、これは、図5と関連して詳細に既に上述したとおりである。しかしながら、図5も簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(645)及びパーサ(520)によるコーディングビデオシーケンスへのシンボルのコーディング/デコーディングが可逆的であることができるので、バッファメモリ(515)を含むビデオデコーダ(510)のエントロピーデコーディング部分及びパーサ(520)は、ローカルデコーダ(633)に完全には実装されない場合がある。
【0052】
この点で行うことができる観察は、デコーダ内に存在するパース/エントロピーデコードを除く任意のデコーダ技術もまた、対応するエンコーダ内に実質的に同一の機能的形態で存在する必要があることである。この理由のために、開示された主題はデコーダ動作に焦点を当てる。エンコーダ技術の記述は、総合的に記述されたデコーダ技術の逆であるため、省略することができる。特定の分野においてのみ、より詳細な説明が必要であり、以下に提供される。
【0053】
動作中に、いくつかの例において、ソースコーダ(630)は、「参照画像」として指定されたビデオシーケンスからの1つ以上の、先行してコーディングされた画像を参照して入力画像を予測的にコーディングする、動き補償予測コーディングを実行し得る。このようにして、コーディングエンジン(632)は、入力画像のピクセルブロックと、入力画像に対する(複数の)予測参照として選択され得る(複数の)参照画像のピクセルブロックとの間の差をコーディングする。
【0054】
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって生成されたシンボルに基づいて、参照画像として指定され得る画像のコーディングされたビデオデータをデコードし得る。コーディングエンジン(632)の動作は、有利には、非可逆プロセスであり得る。コーディングされたビデオデータがビデオデコーダ(図6には示されていない)でデコードされ得る場合、再構成されたビデオシーケンスは、典型的には、いくつかのエラーを伴うソースビデオシーケンスの複であり得る。ローカルビデオデコーダ(633)は、参照画像上でビデオデコーダによって実行され、参照画像キャッシュ(634)に記憶されるべき再構成された参照画像を生じさせ得るデコーディング処理を繰り返す。このようにして、ビデオエンコーダ(603)は、遠位端ビデオデコーダによって得られるであろう再構成された参照画像として、共通のコンテンツを有する再構成された参照画像のコピーをローカルに記憶することができる。
【0055】
予測器(635)は、コーディングエンジン(632)について予測サーチを実行し得る。
すなわち、コーディングされるべき新しい画像について、予測器(635)は、新しい画像についての適切な予測参照として役立ち得る、参照画像動きベクトル、ブロック形状等の特定のメタデータ、又は、サンプルデータ(参照ピクセルブロックの候補として)、について参照画像メモリ(634)を検索し得る。予測器(635)は、適切な予測参照を見出すために、サンプルブロック毎に動作し得る。場合によっては、予測器(635)によって得られた検索結果によって決定されるように、入力画像は、参照画像メモリ(634)に記憶された複数の参照画像から引き出された予測参照を有し得る。
【0056】
コントローラ(650)は、例えば、ビデオデータをエンコードするために使用されるパラメータ及びサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理し得る。
【0057】
上述した機能ユニットの全ての出力は、エントロピーコーダ(645)におけるエントロピーコーディングを受け得る。エントロピーコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディング等の技術にしたがって、シンボルを可逆的に圧縮することによって、種々の機能ユニットによって生成されたシンボルをコーディングされたビデオシーケンスに変換する。
【0058】
送信器(640)は、エントロピーコーダ(645)によって作成されたコーディングされたビデオシーケンスをバッファすることができ、エンコードされたビデオデータを格納するであろうストレージデバイスへのハードウェア/ソフトウェアリンクであり得る通信チャネル(660)を経由した送信のために用意する。送信器(640)は、ビデオ・コーダ(603)からのコーディングされたビデオデータを、例えばコーディングされたオーディオデータ及び/又は補助的なデータ・ストリーム(図示せず)等の、送信されるべき他のデータとともにマージし得る。
【0059】
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理し得る。コーディングの間、コントローラ(650)は、各コーディングされた画像に、特定のコーディングされた画像タイプを割り当てることができ、これは、各画像に適用され得るコーディング技術に影響を及ぼし得る。例えば、画像は、しばしば、次の画像タイプの1つとして割り当てられる:
【0060】
イントラ画像(I画像)は、予測ソースとしてシーケンス内の他の画像を使用することなく、コーディングされ、デコードされ得る。いくつかのビデオコーデックは、例えば、独立デコーダリフレッシュ(「IDR」:Independent Decoder Refresh)画像を含む、異なるタイプのイントラ画像を許容する。当業者は、I画像のこれらの変形例、並びにそれらのそれぞれの用途及び特徴を認識している。
【0061】
予測画像(P画像)は、各ブロックのサンプル値を予測するために、最大で1つの運動ベクトルと参照インデックスを用いるインター予測又はイントラ予測を使用して、コーディングされ、デコードされ得るものであり得る。
【0062】
双方向(bi-directionally)予測画像(B画像)は、各ブロックのサンプル値を予測するために、最大で2つの動きベクトルと参照インデックスを用いるインター予測又はイントラ予測を使用して、コーディングされ、デコードされ得るものであり得る。同様に、複数の予測画像は、1つのブロックの再構成のために、2つ以上の参照画像及び関連するメタデータを使用することができる。
【0063】
ソース画像は、通常、空間的に複数のサンプルブロック(例えば、4×4、8×8、4×8、又は16×16の各サンプルのブロック)に分割され、ブロック毎にコーディングされる。ブロックは、ブロックのそれぞれの画像に適用されるコーディング割り当てによって決定された、他の(既にコーディングされた)ブロックを参照して予測的にコーディングされ得る。例えば、I画像のブロックは、非予測的にコーディングされるか、又は、それらは、同じ画像の既にコーディングされたブロック(空間予測又はインター予測)を参照して予測的にコーディングされ得る。P画像の画素ブロックは、先行してコーディングされた一つの参照画像を参照して、空間的予測又は時間的予測を介して予測的にコーディングされ得る。
B画像のブロックは、1つ又は2つの、先行してコーディングされた参照画像を参照して、空間的予測を介して、又は時間的予測を介して予測的にコーディングされ得る。
【0064】
ビデオエンコーダ(603)は、所定のビデオコーディング技術又はITU-T Rec.H.265.等の標準にしたがってコーディング動作を実行し得る。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間的及び空間的冗長性を活用する予測コーディング動作を含む種々の圧縮動作を実行し得る。したがって、コーディングされたビデオデータは、使用されているビデオコーディング技術又は標準によって指定された構文に適合し得る。
【0065】
一実施形態では、送信器(640)は、エンコードされたビデオと共に追加データを送信し得る。ソースコーダ(630)は、コーディングされたビデオシーケンスの一部としてかかるデータを含めることができる。追加のデータは、時間的/空間的/SNR強調レイヤーや、他の形式の冗長データ、例えば冗長画像及びスライス、SEIメッセージ、VUIパラメータセットフラグメント等を含み得る。
【0066】
ビデオは、時間シーケンスにおいて複数のソース画像(ビデオ画像)として捕捉され得る。
イントラ画像予測(しばしば、インター予測と略される)は、所与の画像における空間的相関を使用し、インター画像予測は、画像間の(時間的又は他の)相関を使用する。一例では、現在画像と称されるコーディング/デコーディング中の特定の画像は、ブロックに分割される。現在画像内のブロックが、ビデオ内の、先行してコーディングされ、まだバッファされている参照画像内の参照ブロックに類似する場合、現在の画像内ブロックは、動きベクトルと称されるベクトルによってコーディングされ得る。動きベクトルは、参照画像内の参照ブロックを指し、複数の参照画像が使用されている場合には、参照画像を識別する第3次元を有することができる。
【0067】
いくつかの実施形態において、双方向予測技術(bi-prediction technique)は、画像間予測において使用され得る。双方向予測技術によれば、ビデオ内の現在画像に対してデコード順では両方とも先行する(ただし、表示順では、それぞれ過去及び未来であり得る)第1参照画像及び第2参照画像等の2つの参照画像が使用される。現在画像内のブロックは、第1参照画像内の第1参照ブロックを指す第1動きベクトルと、第2参照画像内の第2参照ブロックを指す第2の動きベクトルとによってコーディングされることができる。ブロックは、第1参照ブロックと第2参照ブロックとの組み合わせによって予測されることができる。
【0068】
さらに、コーディング効率を改善するために、インター画像予測にマージモード技術を使用することができる。
【0069】
本開示のいくつかの実施形態によれば、インター画像予測及びイントラ画像予測等の予測は、ブロックの単位で実行される。例えば、HEVC標準によれば、ビデオ画像シーケンス中の画像は、圧縮のためにコーディングツリーユニット(CTU)に仕切られ、画像中のCTUは、64×64ピクセル、32×32ピクセル、又は16×16ピクセル等の、同じサイズを有する。一般に、CTUは、1つのルマCTB(one luma CTB)と2つのクロマCTB(two chroma CTBs)である3つのコーディングツリーブロック(CTB)を含む。各CTUは、1つ又は複数のコーディング単位(CU)に再帰的に4分木分割することができる。例えば、64×64ピクセルのCTUは、64×64ピクセルの1CU、32×32ピクセルの4CU、又は16×16ピクセルの16CUに分割することができる。例では、各CUは、インター予測タイプ又はイントラ予測タイプ等の、CUの予測タイプを決定するために分析される。CUは時間的及び/又は空間的予測可能性に依存して1つ以上の予測単位(PU)に分割される。一般に、各PUはルマ予測ブロック(PB)と2つのクロマPBを含む。一実施形態では、コーディング(エンコード/デコード)における予測操作は、予測ブロックのユニットにおいて実行される。予測ブロックの一例としてルマ予測ブロックを用いると、予測ブロックは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8ピクセル等、ピクセルに対する値(例えば、ルマ値)の行列を含む。
【0070】
図7は、本開示の別の実施形態によるビデオエンコーダ(703)の図を示す。ビデオエンコーダ(703)は、ビデオ画像シーケンス内の現在ビデオ画像内のサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックをコーディングされたビデオシーケンスの一部であるコーディングされた画像にエンコードするように構成されている。一実施形態では、ビデオエンコーダ(703)は、図4の例のビデオエンコーダ(403)の代わりに使用される。
【0071】
HEVCの例では、ビデオエンコーダ(703)は、8×8サンプルの予測ブロック等の処理ブロックに対するサンプル値のマトリックスを受信する。ビデオエンコーダ(703)は、処理ブロックが、例えばレート歪み最適化を使用して、イントラモード、インターモード、又は双方向予測モードを使用して、最良にコーディングされるかどうかを決定する。処理ブロックがイントラモードでコーディングされる場合、ビデオエンコーダ(703)は、処理ブロックをコーディングされた画像にエンコードするためにイントラ予測技術を使用することができ、処理ブロックがインターモード又は双方向予測モードでコーディングされる場合、ビデオエンコーダ(703)は、処理ブロックをコーディングされた画像にコーディングするために、それぞれ、インター予測技術又は双方向予測技術を使用し得る。特定のビデオコーディング技術では、マージモードは、予測器外部のコーディングされた動きベクトル成分の利益なしに、動きベクトルが1つ以上の動きベクトル予測器から導出される画像間予測サブモードであり得る。特定の他のビデオコーディング技術では、対象ブロックに適用可能な動きベクトル成分が存在し得る。一実施形態では、ビデオエンコーダ(703)は、処理ブロックのモードを決定するためのモード決定モジュール(図示せず)等の他の構成要素を含む。
【0072】
図7の例では、ビデオエンコーダ(703)は、図7に示すように一緒に結合されたエントロピーエンコーダ(725)と、インターエンコーダ(730)と、イントラエンコーダ(722)と、残差計算器(723)と、スイッチ(726)と、残差エンコーダ(724)と、汎用コントローラ(721)と、を含む。
【0073】
インターエンコーダ(730)は、現在ブロック(例えば、処理ブロック)のサンプルを受信し、ブロックを参照画像内の1つ以上の参照ブロックと比較し(例えば、先行する画像内及び後の画像内のブロック)、インター予測情報(例えば、インターエンコーディング技術による冗長情報の記述、動きベクトル、マージモード情報)を生成し、任意の適切な技術を使用して、インター予測情報に基づいてインター予測結果(例えば、予測ブロック)を計算するように構成される。いくつかの例では、参照画像は、エンコードされたビデオ情報に基づいてデコードされた、デコードされた参照画像である。
【0074】
イントラエンコーダ(722)は、現在ブロック(例えば、処理ブロック)のサンプルを受信し、場合によっては、ブロックを、同じ画像内で既にコーディングされたブロックと比較し、変換後に量子化された係数を生成し、場合によっては、イントラ予測情報(例えば、1つ以上のイントラコーディング技術に従ったイントラ予測方向情報)も生成するように構成されている。一例では、イントラエンコーダ(722)はまた、同じ画像内のイントラ予測情報及び参照ブロックに基づいて、イントラ予測結果(例えば、予測ブロック)を計算する。
【0075】
汎用制御デバイス(721)は、汎用制御データを決定し、汎用制御データに基づいてビデオエンコーダ(703)の他の構成要素を制御するように構成される。一実施形態では、汎用コントローラ(721)は、ブロックのモードを決定し、そのモードに基づいてスイッチ(726)に制御信号を供給する。例えば、モードがイントラモードの場合、汎用コントローラ(721)は、スイッチ(726)を制御して、残差計算器(723)が使用するイントラモードの結果を選択し、エントロピーエンコーダ(725)を制御して、イントラ予測情報を選択し、ビットストリームにイントラ予測情報を含め、モードがインターモードの場合、汎用コントローラ(721)は、スイッチ(726)を制御して、残差計算器(723)が使用するインター予測結果を選択し、エントロピーエンコーダ(725)を制御して、インター予測情報を選択し、ビットストリームにインター予測情報を含める。
【0076】
残差計算器(723)は、受信されたブロックと、イントラエンコーダ(722)又はインターエンコーダ(730)から選択された予測結果との差(残差データ)を計算するように構成される。残差エンコーダ(724)は、残差データに基づいて動作し、残差データをエンコードして変換係数を生成するように構成される。一実施例では、残差エンコーダ(724)は、残差データを空間ドメインから周波数ドメインにコンバートし、変換係数を生成するように構成される。その後、変換係数は、量子化処理にかけられ、量子化された変換係数を得る。様々な実施形態では、ビデオエンコーダ(703)は、残差デコーダ(728)も含む。残差デコーダ(728)は、逆変換を実行し、デコードされた残差データを生成するように構成される。デコードされた残差データは、イントラエンコーダ(722)及びインターエンコーダ(730)によって適切に使用されることができる。例えば、インターエンコーダ(730)は、デコードされた残差データ及びインター予測情報に基づいてデコードされたブロックを生成することができ、イントラエンコーダ(722)は、デコードされた残差データ及びイントラ予測情報に基づいてデコードされたブロックを生成することができる。デコードされたブロックは、いくつかの実施例では、デコードされた画像を生成するために適切に処理され、デコードされた画像は、メモリ回路(図示せず)内でバッファされ、参照画像として使用され得る。
【0077】
エントロピーエンコーダ(725)は、エンコードされたブロックを含むようにビットストリームをフォーマットするように構成されている。エントロピーエンコーダ(725)は、HEVC標準等の適切な標準にしたがった種々の情報を含むように構成される。一実施例では、エントロピーエンコーダ(725)は、汎用制御データ、選択された予測情報(例えば、イントラ予測情報又はインター予測情報)、残差情報、及びビットストリーム内の他の適切な情報を含むように構成される。開示された主題にしたがってインターモード又は双方向予測モードのいずれかのマージサブモードにおけるブロックをコーディングする場合、残差情報は存在しないことに留意されたい。
【0078】
図8は、本開示の別の実施形態によるビデオデコーダ(810)の図を示す。ビデオデコーダ(810)は、コーディングされたビデオシーケンスの一部であるコーディングされた画像を受信し、コーディングされた画像をデコードして再構成画像を生成するように構成されている。一実施形態では、ビデオデコーダ(810)は、図3の実施形態のビデオデコーダ(410)の代わりに使用される。
【0079】
図8の実施例では、ビデオデコーダ(810)は、図8に示すように一緒に結合されたイントラデコーダ(872)と、エントロピーデコーダ(871)と、インターデコーダ(880)と、残差デコーダ(873)と、再構成モジュール(874)と、及びを含む。
【0080】
エントロピーデコーダ(871)は、コーディングされた画像から、そのコーディング画像を作成する(of which the coded picture is made up)構文要素を表す特定のシンボルを再構成するように構成することができる。かかるシンボルは、例えば、ブロックがコーディングされるモード(例えば、イントラモード、インターモード、双方向予測モード、マージサブモード又は別のサブモードにおけるインターモード、双方向予測モード等)、予測情報(例えば、イントラ予測情報又はインター予測情報)を含むことができ、それらは、イントラデコーダ(822)又はインターデコーダ(880)によって、それぞれ使用される特定のサンプル又はメタデータ、例えば量子化された変換係数の形態の残差情報等、を識別することができる。一例として、予測モードがインターモード又は双方向予測モードである場合には、インター予測情報がインターデコーダ(880)に提供され、予測タイプがイントラ予測タイプである場合には、イントラ予測情報がイントラデコーダ(872)に提供される。残差情報は、逆量子化を受けることができ、残差デコーダ(873)に提供される。
【0081】
インターデコーダ(880)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成される。
【0082】
イントラデコーダ(872)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成される。
【0083】
残差デコーダ(873)は、逆量子化変換係数(de-quantized transform coefficients)を抽出するために逆量子化を実行し、逆量子化変換係数を処理して残差を周波数領域から空間領域にコンバートするように構成される。残差デコーダ(873)はまた、特定の制御情報(量子化器パラメータ(QP)を含む)を必要とすることがあり、その情報は、エントロピーデコーダ(871)によって提供され得る(データパスは、低ボリューム制御情報のみであるため、図示されていない)。
【0084】
再構成モジュール(874)は、空間領域において、残差デコーダ(873)による出力としての残差と、(場合によってはインター又はイントラ予測モジュールによる出力としての)予測結果とを組み合わせて、再構成ブロックを形成するように構成され、これは、再構成画像の一部であり得、したがって、再構成ビデオの一部であり得る。デブロッキング動作等の他の適切な操作を行って、視覚品質を改善することができることに留意されたい。
【0085】
なお、ビデオエンコーダ(403)、(603)及び(703)と、ビデオデコーダ(410)、(510)、及び(810)とは、任意の適切な技術を用いて実現することができる。一実施形態では、ビデオエンコーダ(403)、(603)及び(703)と、ビデオデコーダ(410)、(510)及び(810)とは、1つ以上の集積回路を使用して実装され得る。別の実施形態では、ビデオエンコーダ(403)、(603)及び(603)と、ビデオデコーダ(410)、(510)、及び(810)とは、ソフトウェア命令を実行する1つ以上のプロセッサを使用して実現することができる。
【0086】
本開示の態様は、イントラ画像ブロック補償のためのエンコーディング/デコーディング技術、特に可変CTUサイズでのサーチ範囲調整のための技術を提供する。
【0087】
ブロックベース補償は、インター予測及びイントラ予測に使用することができる。インター予測のために、ブロックベース補償は、同じ画像内の、先行して再構成されたエリアからも行うことができる。同一画像内の再構成エリアからのブロックベース補償は、イントラ画像ブロック補償、現在画像参照(CPR:current picture referencing)、又はイントラブロックコピー(IBC:intra block copy)と呼ばれる。同一画像内の現在のブロックと参照ブロックとの間のオフセットを示す変位ベクトルをブロックベクトル(略してBV)と称する。動き補償における動きベクトルとは異なり、ブロックベクトルは、任意の値(正又は負、x又はy方向のいずれか)であることが可能であるが、ブロックベクトルは、参照ブロックが利用可能であり、かつ既に再構成されていることを保証するために、いくつかの制約を有する。また、いくつかの例では、並列処理を考慮するために、タイル境界(tile boundary)又は波面はしご形境界(wavefront ladder shape boundary)であるいくつかの参照エリアが除外される。
【0088】
ブロックベクトルのコーディングは、明示的(explicit)又は暗示的(implicit)のいずれかである。明示的モード(又はインターコーディングでの高度な動きベクトル予測(AMVP)モードと称される)では、ブロックベクトルとその予測子との間の差分がシグナリングされ、暗示的モードでは、ブロックベクトルは、マージモードでの動きベクトルと同様に、予測子(ブロックベクトル予測子と称される)から復元される。ブロックベクトルの分解能は、いくつかの実装では、整数の位置に限定されるが、他のシステムではブロックベクトルが分数の位置を指すことが許される。
【0089】
いくつかの実施例では、ブロックレベルでのブロック内コピーの使用は、IBCフラグと称されるブロックレベルフラグを使用してシグナリングすることができる。実施形態において、IBCフラグは、現在のブロックがマージモードでコーディングされていない場合にシグナリングされる。他の例では、ブロックレベルでのイントラブロックコピーの使用は、参照インデックスアプローチによってシグナリングされる。デコード中の現在の画像は、その後参照画像として扱われる。一実施例では、かかる参照画像は参照画像のリストの最後の位置に置かれる。この特別な参照画像は、デコードされた画像バッファ(DPB)等のバッファ内の他の時間的参照画像と共に管理される。
【0090】
また、イントラブロックコピーには、反転イントラブロックコピー(flipped intra block copy)(参照ブロックは、現在のブロックを予測するために使用される前に、水平又は垂直に反転される)や、ラインベースのイントラブロックコピー(line based intra block copy)(MxNコーディングブロック内の各補償ユニットは、Mx1又は1xNラインである)等、いくつかのバリエーションがある。
【0091】
図9は、本開示の一実施形態によるイントラブロックコピーの例を示す。現在画像(900)はデコード中である。現在画像(900)は、再構成されたエリア(910)(ドット付きエリア)及びデコードされるべきエリア(920)(白色領域)を含む。現在ブロック(930)は、デコーダによって再構成中である。現在ブロック(930)は、再構成されたエリア(910)内にある参照ブロック(940)から再構成されることができる。参照ブロック(940)と現在のブロック(930)との間の位置オフセットは、ブロックベクトル(950)(又はBV(950))と称される。
【0092】
いくつかの例(例えば、VVC)では、イントラブロックコピーモードのサーチ範囲は、現在のCTU内にあるように制約される。その際、イントラブロックコピーモード用の参照サンプルを格納するためのメモリ所要量は、1(最大)CTUサンプルサイズ(1 (largest) CTU size of samples)である。一例では、(最大)CTUは128×128サンプルサイズである。CTUは、いくつかの例において、各々が64×64サンプルのサイズを有する4つのブロック領域に分割される。したがって、いくつかの実施形態では、総メモリ(例えば、主ストレージよりも速いアクセススピードを有するキャッシュメモリ)は、128×128のサイズのサンプルを記憶することができ、総メモリは、64×64領域等の、現在のブロックに再構成されたサンプルを格納するための既存の参照サンプルメモリ部分と、他の3つの64×64サイズの領域のサンプルを記憶するための追加メモリ部分と、を含む。このように、いくつかの例において、イントラブロックコピーモードの有効サーチ範囲(effective search range)は、参照画素を格納するための総メモリ所要量が変化しないまま、左側のCTUの一部に拡張される(例えば、1CTUサイズ、合計64×64の基準サンプルメモリの4倍)。
【0093】
いくつかの実施形態では、アップデートプロセスが実行されて、格納された参照サンプルを、左側のCTUから、現在のCTUから再構築されたサンプルにアップデートする。具体的には、いくつかの例では、アップデートプロセスは64×64ルマサンプルベースで実行される。一実施形態では、CTUサイズメモリ内の4つの64×64ブロック領域の各々について、左側のCTUからの領域内の参照サンプルは、現在のCTUの同じ領域内のブロックのいずれかがコーディングされているか又はコーディングされ終わる(being coded or has been coded)まで、CPRモードを有する現在のCTU内のコーディングブロックを予測するために、使用されることができる。
【0094】
図10A~10Dは、本開示の一実施形態による、イントラブロックコピーモードに対する有効サーチ範囲の例を示す。いくつかの実施例では、エンコーダ/デコーダは、128×128サンプル等の1つのCTUのサンプルを格納することができるキャッシュメモリを含む。さらに、図10A~10Dの例では、予測のための現在のブロック領域は、64×64サンプルのサイズを有する。実施例は、他の好適なサイズの現在のブロック領域のために適切に変更することができることに留意されたい。
【0095】
図10A~10Dの各々は、現在のCTU(1020)及び左側のCTU(1010)を示す。左側CTU(1010)は、4つのブロック領域(1011)~(1014)を含み、各ブロック領域は、64×64サンプルのサンプルサイズを有する。現在のCTU(1020)は、4つのブロック領域(1021)~(1024)を含み、各ブロック領域は、64×64サンプルのサンプルサイズを有する。現在のCTU(1020)は、再構成中の現在ブロック領域(ラベル「現在」及び垂直ストライプパターンで示される)を含むCTUである。左側のCTU(1010)は、現在CTU(1020)の左側に直接隣り合っている。図10A~10Dに示されているように、灰色のブロックは既に再構成されたブロック領域であり、白色のブロックは再構成されるブロック領域である。
【0096】
図10Aにおいて、再構成中の現在のブロック領域は、ブロック領域(1021)である。キャッシュメモリは、ブロック領域(1012)、(1013)及び(1014)内の再構成されたサンプルを格納しており、キャッシュメモリは、現在ブロック領域(1021)の再構成されたサンプルを格納するために使用されるであろう。図10Aの例では、現在ブロック領域(1021)のための有効サーチ範囲は、キャッシュメモリに格納された再構成されたサンプルを有する左側のCTU(1010)内のブロック領域(1012)、(1013)及び(1014)を含む。一実施形態では、ブロック領域(1011)の再構成されたサンプルは、キャッシュメモリよりもアクセス速度が遅いメインメモリに格納される(例えば、ブロック領域(1021)の再構成前に、キャッシュメモリからメインメモリにコピーされる)ことに留意されたい。
【0097】
図10Bにおいて、再構成中の現在ブロック領域は、ブロック領域(1022)である。キャッシュメモリは、ブロック領域(1013)、(1014)及び(1021)内の再構成されたサンプルを格納しており、キャッシュメモリは、現在ブロック領域(1022)の再構成されたサンプルを格納するために使用されるであろう。図10Bの例では、現在ブロック領域(1022)のための有効サーチ範囲は、キャッシュメモリに格納された再構成されたサンプルを有する、左側のCTU(1010)内のブロック領域(1013)及び(1014)と現在CTU(1010)内のブロック領域(1021)とを含む。一実施形態では、ブロック領域(1012)の再構成されたサンプルは、キャッシュメモリよりもアクセス速度が遅いメインメモリに格納される(例えば、ブロック領域(1022)の再構成前に、キャッシュメモリからメインメモリにコピーされる)ことに留意されたい。
【0098】
図10Cにおいて、再構成中の現在のブロック領域は、ブロック領域(1023)である。キャッシュメモリは、ブロック領域(1014)、(1021)及び(1022)内の再構成されたサンプルを格納しており、キャッシュメモリは、現在のブロック領域(1023)の再構成されたサンプルを格納するために使用されるであろう。図10Cの例では、現在のブロック領域(1023)のための有効サーチ範囲は、キャッシュメモリに格納された再構成されたサンプルを有する、左側のCTU(1010)内のブロック領域(1014)と現在CTU(1010)内のブロック領域(1021)及び(1022)とを含む。一実施形態では、ブロック領域(1013)の再構成されたサンプルは、キャッシュメモリよりもアクセス速度が遅いメインメモリに格納される(例えば、ブロック領域(1023)の再構成前に、キャッシュメモリからメインメモリにコピーされる)ことに留意されたい。
【0099】
図10Dにおいて、再構成中の現在のブロック領域は、ブロック領域(1024)である。キャッシュメモリは、ブロック領域(1021)、(1022)及び(1023)内の再構成されたサンプルを格納しており、キャッシュメモリは、現在ブロック領域(1024)の再構成されたサンプルを格納するために使用されるであろう。図10Dの例では、現在のブロック領域(1024)のための有効サーチ範囲は、キャッシュメモリに格納された再構成されたサンプルを有する、現在CTU(1020)内のブロック領域(1021)、(1022)及び(1023)を含む。一実施形態では、ブロック領域(1014)の再構成されたサンプルは、キャッシュメモリよりもアクセス速度が遅いメインメモリに格納される(例えば、ブロック領域(1024)の再構成前に、キャッシュメモリからメインメモリにコピーされる)ことに留意されたい。
【0100】
上記の例では、キャッシュメモリは1(最大) CTUサイズの合計メモリ空間を有する。実施例は、他の好適なCTUサイズに適当に調整することができる。キャッシュメモリは、いくつかの実施例では参照サンプルメモリと称されることに留意されたい。
【0101】
提案された方法は、別々に又は任意の順序で組み合わせて用いられることができる。さらに、方法(又は実施形態)、エンコーダ、及びデコーダの各々は、処理回路(例えば、1つ以上のプロセッサ、又は1つ以上の集積回路)によって実装され得る。一実施例では、1つ以上のプロセッサは、非一時的コンピュータ可読媒体に格納されたプログラムを実行する。以下では、ブロックという用語は、予測ブロック、コーディングブロック、又はコーディングユニット、すなわちCUとして解釈され得る。
【0102】
本開示の態様は、CTUサイズが変化する場合、例えば、最大CTUサイズより小さくなるように、サーチ範囲を調整するための技術を提供する。実装において、将来のイントラブロックコピー参照のために先行してコーディングされたCUの参照サンプルを格納する指定されたメモリは、参照サンプルメモリと称され(、いくつかの実施例ではキャッシュメモリと称され)る。本開示では、特定の参照エリア制限の下でイントラブロックコピー性能を改善する方法が提案されている。より具体的には、サーチのための参照サンプルメモリのサイズが制限される。以下の説明では、参照サンプルメモリのサイズは128×128ルマサンプルに(対応するクロマサンプルと共に)固定されている。いくつかの実施例(例えば、VVC標準)では、参照サンプルの1つの最大CTUサイズが指定されたメモリサイズとみなされる。提案した方法は、さらに、例えば、CTUサイズについて64×64ルマサンプル(加えて対応するクロマサンプル)及びメモリサイズについて128×128ルマサンプル(及び対応するクロマサンプル)等の種々のメモリサイズ/CTUサイズの組み合わせに拡張されることができる。
【0103】
開示の一態様によれば、本開示のコロケーションされたブロック(collocated blocks)は、同一サイズ及び同一形状を有する一対のブロックを指し、コロケーションされたブロックの一方は、先行してコーディングされたCTU内にあり、コロケーションされたブロックの他方は、現在のCTU内にあり、一対のうちの一方ブロックは、一対の他方のブロックのコロケーションされたブロックと称される。さらに、メモリバッファサイズが最大サイズのCTU(例えば、128×128)を格納するように設計されている場合には、先行するCTUは、一実施例では、現在のCTUの左側に1つのCTU幅ルマサンプルオフセットを有するCTUを指す。さらに、これらの2つのコロケーションされたブロックは、それぞれ自身のCTUの左上コーナーに対して同じ位置オフセット値を有する。換言すると、コロケーションされたブロックは、画像の左上隅に対して同一のy座標を有するが、いくつかの実施例では、互いにx座標におけるCTU幅の差分を伴う2つのブロックである。
【0104】
図11は、本開示のいくつかの実施形態による、コロケーションされたブロックの例を示す。図11の実施例では、デコーディング中の、現在のCTUと左側のCTUが示されている。再構成された領域は灰色で、再構成されるべき領域は白色で表示される。図11は、デコード中のイントラブロックコピーモードにおける現在ブロックに対する、左側CTUにおける参照ブロックの3つの例を示す。3つの例を参照ブロック1、参照ブロック2、参照ブロック3として示されている。図11はまた、参照ブロック1に対するコロケーションされたブロック1、参照ブロック2に対するコロケーションされたブロック2、及び参照ブロック3に対するコロケーションされたブロック3を示す。図11の例では、参照サンプルメモリサイズはCTUサイズである。現在のCTUと左側CTUの再構成されたサンプルは、相補的な(complementary )方法で参照サンプルメモリに格納される。現在のCTUの再構成されたサンプルが参照サンプルメモリに書き込まれる場合、再構成されたサンプルは左側のCTUのコロケーションされたサンプルの位置に書き込まれる。一例として、参照ブロック3については、コロケーションされたブロック3が現在のCTU内にあるため、まだ再構成されていないので、参照ブロック3は、参照サンプルメモリから見つけることができる。参照サンプルメモリは、依然として左側のCTUからの参照ブロック3のサンプルを格納しており、参照ブロック3のサンプルを読み出す(retrieve)ために高速でアクセスすることができ、参照ブロック3は、一実施例において、現在のブロックをイントラブロックコピーモードで再構成するために用いられることができる。
【0105】
他の実施例では、参照ブロック1については、現在のCTU内のコロケーションされたブロック1の再構成が完成し、したがって、参照サンプルメモリがコロケーションされたブロック1のサンプルを格納する、さらに、参照ブロック1のサンプルは、例えば、参照サンプルメモリと比較して相対的に高い遅延を有するオフチップストレージに格納されている。したがって、一実施例では、参照ブロック1は参照サンプルメモリ内に見つからず、参照ブロック1は、一実施例では、イントラブロックコピーモードにおいて現在のブロックを再構成するために用いられることができない。
【0106】
同様に、他の実施例では、参照ブロック2に対して、コロケーションされたブロック2の一部が再構成されており、したがって、参照サンプルメモリはアップデートされて、コロケーションされたブロック2のサンプルが格納される。したがって、一実施例では、参照ブロック2は、イントラブロックコピーモードで現在のブロックを再構成するために有効な参照ブロックであることはできない。
【0107】
一般に、イントラブロックコピーモードでは、先行してデコードされたCTU内の参照ブロックについては、現在CTU内のコロケーションされたブロックがまだ再構成されていない場合には、参照ブロックのサンプルが参照サンプルメモリ内で利用可能であり、参照サンプルメモリにアクセスして、イントラブロックコピーモードでの再構成のための参照として用いるために、参照ブロックのサンプルを読み出すことができる。
【0108】
上記の実施例では、参照ブロックの左上コーナーのコロケーションされたサンプルとも称される、現在のCTU内のコロケーションされたブロックの左上コーナーのサンプルがチェックされることに留意されたい。現在のCTU内のコロケーションされたサンプルがまだ再構成されていない場合、参照ブロックの残りのサンプルはすべて、イントラブロックコピーの参照として使用可能である。
【0109】
また、上記の実施例では、参照サンプルメモリのメモリサイズは、1つのCTUのサイズであり、先行してデコードされたCTUは、現在のCTUの左側に隣接するCTUを意味することに留意されたい。
【0110】
開示の一態様によれば、参照サンプルメモリのメモリサイズは、1つのCTUのサイズより大きいことがある。
【0111】
図12は、本開示のいくつかの実施形態による、コロケーションされたブロックの例を示す。図12の例では、参照サンプルメモリは、CTUのN倍(Nは2以上の整数)のサイズを有するように構成され、したがって、参照サンプルメモリは、N+1個のCTUからの再構成されたサンプルを格納することができる。例えば、図12に示されるように、現在のCTU(1210)と、最も遠い左側のCTU(1230)と、現在のCTU(1210)と最も遠いCTU(1230)との間にある(複数の)中間の左側CTU(1220)等である。左側のCTUの数はN-1に等しい。現在のCTU(1210)及び最も遠い左側のCTU(1230)の再構成されたサンプルは、相補的な方法で参照サンプルメモリに格納される。現在のCTU(1210)の再構成されたサンプルを参照サンプルメモリに格納するために、現在のCTU(1210)の再構成されたサンプルは、最も遠い左側のCTU(1230)のコロケーションされたサンプルの位置に書き込まれる。再構成されたエリアは灰色で、再構成されるべきエリアは白色で表示されます。いくつかの実施形態において、左側CTUは、左側の隣接するCTUから左側の最も遠いCTUまで番号付けされる。例えば、現在のCTU(1210)に対する左側の隣接するCTUは左側の1番目のCTUであり、最も遠い左側のCTU(1230)は左側のN番目CTUであり、最も遠い左側のCTUの右側のCTUは、左側の(N-1)番目CTUである。
【0112】
図12の実施例では、参照サンプルメモリサイズはCTUのN倍のサイズであり、したがって、(複数の)中間の左側のCTU(1220)のサンプルは全て、現在のCTU(1210)におけるサンプルの再構成中に利用可能であることに留意されたい。しかしながら、最も遠い左側のCTU(1230)のサンプルは、参照サンプルメモリにおいて部分的に利用可能であり、図11の実施例で示されるのと類似の制限下にある。例えば、デコード中のイントラブロックコピーモードにおける現在のブロックのうち、最も遠い左側のCTU(1230)内の参照ブロックの3つの例は、参照ブロック1、参照ブロック2及び参照ブロック3として示されている。図12はまた、参照ブロック1に対するコロケーションされたブロック1、参照ブロック2に対するコロケーションされたブロック2、及び参照ブロック3に対するコロケーションされたブロック3を示す。この場合、一対のコロケーションされたブロック間又はサンプルの間のx座標オフセットは、CTU幅のN倍である。
図12の他の説明は、図11と同様であり、上述したので、明確化のためにここでは省略する。
【0113】
いくつかの実施例において、最も遠い左側のCTU(1230)の再構成されたサンプルの部分と、現在のCTU(1210)の再構成されたサンプルの部分とは、参照サンプルメモリにおいて相補的であることに留意されたい。現在のCTU(1210)のサンプルが再構成されると、現在のCTU(1210)の再構成されたサンプルが、最も遠い左側のCTU(1230)の再構成されたサンプルの位置において、参照サンプルメモリに書き込まれる。最も遠い左側のCTU(1230)の再構成されたサンプルは、現在のCTU(1210)の再構成されたサンプルによって参照サンプルメモリ内で上書きされる。
【0114】
図12の例は、参照サンプルメモリサイズがCTUサイズ以上のシナリオに使用できることに留意されたい。例えば、参照サンプルメモリサイズがCTUサイズの4倍である場合、(複数の)中間の左側のCTU(1220)は3つのCTUを含み、参照サンプルメモリサイズがCTUサイズの16倍である場合、(複数の)中間の左側のCTU(1220)は15個のCTUを含む。例えば、参照サンプルメモリサイズがCTUサイズに等しい場合、中間の左側のCTU(1220)は存在しない。
【0115】
本開示の態様は、現在のCTUサイズが最大CTUサイズより小さく、参照サンプルメモリサイズが1最大CTUサイズに等しい場合に、イントラブロックコピーモードにおけるサーチ範囲を調整するための技術を提供する。参照サンプルメモリは、その後、先行してデコードされた複数のCTUをバッファすることができる。参照ブロックが左側の隣接するCTUからのものである場合、可用性のために追加の条件チェックは必要とされない。この場合、左側の全てのCTUは、イントラブロックコピー参照のために使用可能である。いくつかの実施形態では、現在のCTUサイズが最大CTUサイズに等しい場合、及び現在のCTUサイズが最大CTUサイズよりも小さい場合について、統一された条件チェックが使用される。
【0116】
種々のパラメータが、実施形態の以下の説明で使用される。
【0117】
MaxCtbLog2SizeYは、CTUが正方形の場合に一辺(高さ又は幅)で許容される最大CTUサイズをlog2ドメインで示す。例えば、最大許容CTUが128×128ルマサンプル高さの場合、MaxCtbLog2SizeYは7に等しい。
【0118】
CtbLog2SizeYは、CTUが正方形の場合に一辺(高さ又は幅)でのCTUサイズをlog2ドメインで示す。
【0119】
cbHeightはコーディングブロック(現在のブロックとも称する)の高さ、cbWidthはコーディングブロックの幅を示します。コーディングブロックの左上コーナーの位置は(xCb,yCb)で示され、コーディングブロックの右上コーナーの位置は(xCb+cbWidth-1,yCb)で示され、コーディングブロックの左下コーナーの位置は(xCb,yCb+cbHeight-1)で示される。
【0120】
mvL0はブロックベクトルを示し、mvL0[0]は、1/16pel分解能におけるブロックベクトルmvL0のx成分を示し、mvL0[1]は、1/16pel分解能におけるブロックベクトルmvL0のy成分を示す。したがって、x成分の整数値はmvL0[0]を4ビット右シフトして得られ、y成分の整数値はmvL0[1]を4ビット右シフトして得られる。
【0121】
本開示のいくつかの態様によれば、mvL0が、イントラブロックコピーモードにおける参照ブロックを指す有効なブロックベクトルであるかどうか、及び参照ブロックが参照サンプルメモリに完全に格納されているかどうかを判断するために、ブロックベクトルmvL0は、2段階の制限プロセスを使用して制限されている。したがって、参照サンプルメモリは、メインメモリ(例えば、オフチップメモリ)から参照サンプルを読み出すことなくアクセスされることができる。
【0122】
第1段階では、ブロックベクトルmvL0がチェックされ、ブロックベクトルが、参照サンプルメモリ内の再構成されたサンプルの全部又は一部を有する任意のCTUを含むCTUベースのサーチ範囲を指す潜在的な有効ブロックベクトル内にあるかどうかが判定される。例えば、CTUベースのサーチ範囲は、現在のCTU、最も遠い左側のCTU、及び現在のCTUと最も遠い左側のCTUの間の任意の左側のCTUを含む。一実施形態では、CTUサイズは、最大許容CTUサイズに等しく、CTUベースのサーチ範囲は、現在のCTU及び最も遠い左側のCTU(図11では左側のCTUと称される)を含み、現在のCTUと最も遠い左側のCTUとの間に中間の左側のCTUはない。
【0123】
ブロックベクトルmvL0が潜在的な有効ブロックベクトルである場合、ブロックベクトルmvL0は、さらに第2段階でチェックされ、ブロックベクトルが有効ブロックベクトルであるかどうかが判定される。例えば、第2段階では、ブロックベクトルが中間の左側のCTU内の参照ブロックを指す場合には、ブロックベクトルは有効ブロックベクトルである。第2段階では、ブロックベクトルが最も遠い左側のCTU内の参照ブロックを指す場合、ブロックベクトルmvL0がさらにチェックされ、参照ブロックのコロケーションされたブロックが再構成されたか否かが判定される。
【0124】
第1の実施形態では、CTUサイズは、最大許容CTUサイズに等しく、したがって、参照サンプルメモリに格納された再構成サンプルは、現在のCTU又は最も遠い左側のCTU(図11の左側のCTU)のいずれかによるものである。
【0125】
第1段階では、mvL0はチェックされ、ブロックベクトルが現在のCTU及び最も遠い左側のCTUを含むCTUベースのサーチ範囲を指しているかどうかを判定する。いくつかの例では、同じy値を持つCTUがCTU行を形成し、同じx値を持つCTUがCTU列を形成する。いくつかの実施例では、ブロックベクトルmvL0に対する制限は式(1)~式(4)で表される:
(yCb+(mvL0[1]>>4))>>CtbLog2SizeY=yCb>>CtbLog2SizeY (式1)
(yCb+(mvL0[1]>>4)+cbHeight-1)>>CtbLog2SizeY=yCb>>CtbLog2SizeY (式2)
(xCb+(mvL0[0]>>4))>>CtbLog2SizeY≧(xCb>>CtbLog2SizeY)-1 (式3)
(xCb+(mvL0[0]>>4)+cbWidth-1)>>CtbLog2SizeY≦(xCb>>CtbLog2SizeY) (式4)
【0126】
式(1)が満たされると、参照ブロックの頂部(top)は現在のブロックと同じCTU行にある。式(2)が満たされると、参照ブロックの底部(bottom)は現在のブロックと同じCTU行にある。式(3)が満たされると、参照ブロックの左側は現在のブロックと同じCTU列にあるか、又は、ある例では現在のブロックから直ぐ左側のCTU列にある。式(4)が満たされると、参照ブロックの右側は現在のブロックと同じCTU列にあるか、又は、ある例では現在のブロックから左側のCTU列にある。このように、実施例において式1~式4が満たされる場合には、参照ブロックはCTUベースのサーチ範囲内である。
【0127】
第2段階では、参照ブロックが最も遠い左側のCTU内にある場合、例えば、式(5)が満たされた場合、ブロックベクトルmvL0がチェックされ、参照ブロックのコロケーションされたブロックが再構成されたか否かが判定される。
(xCb+(mvL[0]>>4))>>CtbLog2SizeY=(xCb>>CtbLog2SizeY)-1 (式5)
【0128】
実施例において、
現在ブロックの左上コーナーは(xCb,yCb)にあり、その際、参照ブロックの左上コーナーは(xCb+(mvL[0]>>4),yCb+(mvL0[1]>>4))にあり、コロケーションされたブロックの左上コーナーは(xCb+(mvL[0]>>4)+(1<<CtbLog2SizeY),yCb+(mvL0[1]>>4))にある。例では、コロケーションされたブロックの左上コーナーは、画像の再構成プロセスをトラックするマップをチェックするために使用される。なお、マップ上の位置が「偽(false)」である場合には、一例ではコロケーションされたたブロックが再構成されていないことを示し、したがって参照ブロックは参照サンプルメモリで利用可能であり、イントラブロックコピーモードにおいて現在のブロックを再構成するのに用いることができる。その場合、ブロックベクトルは有効なブロックベクトルであるしかしながら、マップ上の位置が「真(true)」である場合には、一例ではコロケーションされたブロックの少なくとも一部が再構成されていることを示し、したがって、コロケーションされたブロックのサンプルが参照ブロックのサンプルの位置において参照サンプルメモリ内に格納されており、参照ブロックのサンプルは参照サンプルメモリ内において使用可能ではない。したがって、ブロックベクトルmvL0は有効なブロックベクトルではない。
【0129】
第1実施形態では、第2段階は、コロケーションされたブロックに基づいており、第1実施形態のプロセスは、コーディングユニット(CU)ベースのアップデートプロセスと称される。
【0130】
第2実施形態では、第2段階はブロック領域に基づく。例えば、CTUが128×128サンプルを有する場合、CTUは、各々が64×64サンプルを有する4つのブロック領域に分割することができる。同様に、第2実施形態では、CTUサイズは、最大許容CTUサイズに等しく、したがって、参照サンプルメモリに格納される再構成されたサンプルは、現在のCTU又は最も離れた左側のCTU(図11の左側のCTU)のいずれかによるものある。
【0131】
第1段階では、ブロックベクトルmvL0をチェックして、ブロックベクトルmvL0が、式(1)~式(4)を第1実施形態と類似の方法で使用するように、現在のCTU及び最も遠い左側のCTUを含むCTUベースのサーチ範囲を指しているかどうかを判定する。
【0132】
第2段階において、式5が満たされるときに、例えば、参照ブロックが最も遠い左側のCTU内にあるとき、式(5)が満たされた場合は、ブロックベクトルmvL0がチェックされ、参照ブロックに対するコロケーションされたブロック領域(例えば、64×64ブロック領域)が再構成されているか否かが判定される。
【0133】
実施例において、
現在ブロックの左上コーナーは(xCb,yCb)にあり、その際、参照ブロックの左上コーナーは(xCb+(mvL[0]>>4),yCb+(mvL0[1]>>4))にあり、
参照ブロックに対するコロケーションされたブロック領域の左上コーナーは(((xCb+(mvL[0]>>4)+(1<<CtbLog2SizeY))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1),((yCb+(mvL0[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))にある。例では、コロケーションされたブロック領域の左上コーナーは、画像の再構成プロセスをトラックするマップをチェックするために使用される。なお、マップ上の位置が「偽(false)」である場合には、一例ではコロケーションされたたブロック領域が再構成されていないことを示し、したがって参照ブロックは参照サンプルメモリで利用可能であり、イントラブロックコピーモードにおいて現在のブロックを再構成するのに用いることができる。その場合、ブロックベクトルは有効なブロックベクトルである。しかしながら、マップ上の位置が「真(true)」である場合には、コロケーションされたブロック領域が再構成されているか又は部分的に再構成されたことを示し、その場合、ブロックベクトルmvL0ha有効なブロックベクトルではない。
【0134】
第2実施形態では、第2段階は、コロケーションされたブロックに基づいており、第2実施形態のプロセスは、ブロック領域ベースのアップデートプロセスと称される。第2実施形態では、現在のCTU内の64×64ブロック領域(コロケーションされたブロック領域)のいずれかのサンプルが再構成された場合、(現在のサンプルの)コロケーションされたサンプルが属する参照サンプルメモリ内の対応する領域は、イントラブロックコピー参照のために利用可能ではない。
【0135】
本開示の一態様によれば、CTUサイズの変化は、通常、幅及び/又は高さが2倍又は半減するにつれて起こる。例えば、幅及び高さを半分にした場合、1最大CTUサイズの参照サンプルメモリに4CTU分のサンプルを格納することができる。
【0136】
いくつかの実施形態では、Log2ドメインの現在CTUサイズCtbLog2SizeYが用いられる場合、参照サンプルメモリバッファ内に参照サンプルデータを格納することができるCTU数は、MaxCtbLog2SizeYとCtbLog2SizeYとの間の関係に依存して可変である。
【0137】
第3の実施形態では、CTUサイズは、Log2ドメインでCtbLog2SizeYであり、したがって、参照サンプルメモリ内に格納された再構成されたサンプルは、現在のCTU、最も遠い左側のCTU、及び、現在のCTUと最も遠い左側のCTUとの間に位置する(複数の)中間の左側のCTUのうちの、いずれかによるものである。
【0138】
第1段階では、ブロックmvL0はチェックされ、ブロックベクトルmvL0が現在のCTU、最も遠い左側のCTU、及び(複数の)中間の左側のCTUを含むCTUベースのサーチ範囲を指しているかどうかを判定する。いくつかの実施例では、ブロックベクトルmvL0に対する制限は式(6)~式(9)で表される:
(yCb+(mvL0[1]>>4))>>CtbLog2SizeY=yCb>>CtbLog2SizeY 式(6)
(yCb+(mvL0[1]>>4)+cbHeight-1)>>CtbLog2SizeY=yCb>>CtbLog2SizeY 式(7)
(xCb+(mvL0[0]>>4))>>CtbLog2SizeY>=(xCb>>CtbLog2SizeY)-1<<(2*(MaxCtbLog2SizeY-CtbLog2SizeY)) 式(8)
(xCb+(mvL0[0]>>4)+cbWidth-1)>>CtbLog2SizeY<=(xCb>>CtbLog2SizeY) 式(9)
【0139】
式(6)が満たされると、参照ブロックの頂部は現在のブロックと同じCTU行にある。式(7)が満たされると、参照ブロックの底部は現在のブロックと同じCTU行にある。式(8)が満たされると、参照ブロックの左側は、現在のCTU、(複数の)中間の左側のCTU及び最も遠くの左側のCTUのうちの1つと同じCTU列にある。式(9)が満たされると、参照ブロックの右側は、現在のCTU、又は現在CTUの左側のCTU(例えば、(複数の)中間の左側のCTU、最も遠い左側のCTU等)のうちの1つと同じCTU列にある。このように、実施例において式(6)~式(9)が満たされる場合には、参照ブロックはCTUベースのサーチ範囲内である。
【0140】
ブロックベクトルmvL0が潜在的な有効ブロックベクトルである場合、ブロックベクトルmvL0は、さらに第2段階でチェックされ、ブロックベクトルが有効ブロックベクトルであるかどうかが判定される。例えば、第2段階では、ブロックベクトルが中間の左側のCTU内の参照ブロックを指す場合には、例えば、式(10)が満たされない場合は、ブロックベクトルは有効なブロックベクトルである。第2段階では、参照ブロックが最も遠い左側のCTU内にある場合、例えば、式(10)が満たされる場合、ブロックベクトルmvL0がさらにチェックされ、参照ブロックのコロケーションされたブロックが再構成されたか否かが判定される。
(xCb+(mvL[0]>>4))>>CtbLog2SizeY=(xCb>>CtbLog2SizeY)-(1<<(2*(MaxCtbLog2SizeY-CtbLog2SizeY))) 式(10)
【0141】
実施例において、
現在ブロックの左上コーナーは(xCb,yCb)にあり、その際、参照ブロックの左上コーナーは(xCb+(mvL[0]>>4),yCb+(mvL0[1]>>4))にあり、参照ブロックにコロケーションされたブロックの左上コーナーは(xCb+(mvL[0]>>4)+(1<<4^(MaxCtbLog2SizeY-CtbLog2SizeY)),yCb+(mvL0[1]>>4))にある。一例では、コロケーションされたブロックの左上コーナーは、画像の再構成プロセスをトラックするマップをチェックするために使用される。なお、マップ上の位置が「偽(false)」である場合には、一例ではコロケーションされたたブロックが再構成されていないことを示し、したがって参照ブロックは参照サンプルメモリで利用可能であり、イントラブロックコピーモードにおいて現在のブロックを再構成するのに用いることができる。その場合、ブロックベクトルは有効なブロックベクトルである。しかしながら、マップ上の位置が「真(true)」である場合には、一例ではコロケーションされたブロックの少なくとも一部が再構成されていることを示し、したがって、コロケーションされたブロックのサンプルが参照ブロックのサンプルの位置において参照サンプルメモリ内に格納されており、参照ブロックのサンプルは参照サンプルメモリ内において使用可能ではない。したがって、ブロックベクトルmvL0は有効なブロックベクトルではない。
【0142】
第3実施形態では、第2段階は、コロケーションされたブロックに基づいており、第3実施形態のプロセスは、CUベースのアップデートプロセスと称される。
【0143】
第4の実施形態では、第2段階はブロック領域に基づく。例えば、CTUサイズはLog2ドメインでCtbLog2SizeYであり、ブロック領域サイズがLog2ドメインでCtbLog2SizeY-1の場合、CTUは同じサイズの4つのブロック領域に分割することができる。同様に、第4の実施形態では、参照サンプルメモリに格納された再構成されたサンプルは、現在のCTU、最も遠い左側のCTU、及び現在のCTUと最も遠い左側のCTUとの間の中間の左側のCTUによるものである。
【0144】
第1段階では、ブロックベクトルmvL0をチェックして、ブロックベクトルmvL0が、式(6)~式(9)を第3実施形態と類似の方法で使用するように、現在のCTU、最も遠い左側のCTU、及び、現在のCTUと最も遠い左側のCTUとの間の(複数の)中間の左側CTUを含むCTUベースのサーチ範囲を指す潜在的有効ブロックベクトルであるかどうかを判定する。
【0145】
ブロックベクトルmvL0が潜在的な有効ブロックベクトルである場合、ブロックベクトルmvL0は、さらに第2段階でチェックされ、ブロックベクトルが有効ブロックベクトルであるかどうかが判定される。例えば、第2段階では、ブロックベクトルが中間の左側のCTU内の参照ブロックを指す場合には、式(10)が満たされない場合は、ブロックベクトルは有効ブロックベクトルである。第2段階では、参照ブロックが最も遠い左側のCTU内にある場合、例えば、式(10)が満たされると、ブロックベクトルmvL0がチェックされ、参照ブロックに対してコロケーションされたブロックが再構成されているか否かが判定される。
【0146】
実施例において、現在ブロックの左上コーナーは(xCb,yCb)にあり、その際、参照ブロックの左上コーナーは(xCb+(mvL[0]>>4),yCb+(mvL0[1]>>4))にあり、参照ブロックに対するコロケーションされたブロック領域の左上コーナーは(((xCb+(mvL[0]>>4)+(1<<4^(MaxCtbLog2SizeY-CtbLog2SizeY)))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1),((yCb+(mvL0[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))にある。例では、コロケーションされたブロック領域の左上コーナーは、画像の再構成プロセスをトラックするマップをチェックするために使用される。なお、マップ上の位置が「偽(false)」である場合には、一例ではコロケーションされたたブロック領域が再構成されていないことを示し、したがって参照ブロックは参照サンプルメモリで利用可能であり、イントラブロックコピーモードにおいて現在のブロックを再構成するのに用いることができる。その場合、ブロックベクトルは有効なブロックベクトルである。しかしながら、マップ上の位置が「真(true)」である場合には、コロケーションされたブロック領域が再構成されているか又は部分的に再構成されたことを示し、その場合、ブロックベクトルmvL0hは有効なブロックベクトルではない。
【0147】
第4実施形態では、第2段階は、コロケーションされたブロックに基づいており、第4実施形態のプロセスは、ブロック領域ベースのアップデートプロセスと称される。第4の実施形態では、現在のCTU内において(参照ブロックに対して)コロケーションされたブロック領域のいずれかのサンプルが再構成された場合、コロケーションされたブロック領域のサンプルを格納する参照サンプルメモリ内の対応する領域は、イントラブロックコピー参照のために利用可能ではない。
【0148】
本開示のいくつかの態様によれば、最も左側のCTUは意図的にサーチ領域から除外され、その後、ブロックベクトルmvL0は、ワンステップ制限プロセスを用いて制限され、mvL0が、イントラブロックコピーモードにおいて参照ブロックを指す有効ブロックベクトルであるかどうか、及び参照ブロックが参照サンプルメモリに完全に格納されているかどうかを判断する。
【0149】
第5の実施形態では、第3実施形態と同様に、CTUサイズは、Log2ドメインでCtbLog2SizeYであり、したがって、参照サンプルメモリ内に格納された再構成されたサンプルは、現在のCTU、最も遠い左側のCTU、及び、現在のCTUと最も遠い左側のCTUとの間に位置する(複数の)中間の左側のCTUのうちの、いずれかによるものである。第5実施形態では、ブロックmvL0はチェックされ、ブロックベクトルmvL0が現在のCTU、最も遠い左側のCTU、及び(複数の)中間の左側のCTUを含むサーチ範囲を指しているかどうかを判定される。なお、第5実施形態では、左側のCTUが検索範囲から除外されている殊に留意されたい。いくつかの実施例では、ブロックベクトルmvL0に対する制限は式11~式14で表される:
(yCb+(mvL0[1]>>4))>>CtbLog2SizeY=yCb>>CtbLog2SizeY 式(11)
(yCb+(mvL0[1]>>4)+cbHeight-1)>>CtbLog2SizeY=yCb>>CtbLog2SizeY 式(12)
(xCb+(mvL0[0]>>4))>>CtbLog2SizeY>(xCb>>CtbLog2SizeY)-1<<(2*(MaxCtbLog2SizeY-CtbLog2SizeY)) 式(13)
(xCb+(mvL0[0]>>4)+cbWidth-1)>>CtbLog2SizeY>(xCb>>CtbLog2SizeY)-1<<(2*(MaxCtbLog2SizeY-CtbLog2SizeY)) 式(14)
【0150】
式(11)が満たされると、参照ブロックの頂部は現在のブロックと同じCTU行にある。式(12)が満たされると、参照ブロックの底部は現在のブロックと同じCTU行にある。式(13)が満たされると、参照ブロックの左側は、現在のCTU、(複数の)中間の左側のCTUのうちの1つと同じCTU列にある。式(14)が満たされると、参照ブロックの右側は、現在のCTU、(複数の)中間の左側のCTUのうちの1つと同じCTU列にある。
その場合、実施例において、式11~14が満たされる場合、参照ブロックはサーチ範囲内にあり、ブロックベクトルmvL0は有効なブロックベクトルである。
【0151】
図13は、本開示の一実施形態によるプロセス(1300)の概略を示すフローチャートを示す。プロセス(1300)は、イントラモードでコーディングされたブロックの再構成に使用することができ、したがって、再構成中のブロックに対する予測ブロックを生成する。様々な実施形態では、プロセス(1300)は、端末装置(310)、(320)、(330)及び(340)内の処理回路、ビデオエンコーダ(403)の機能を実行する処理回路、ビデオデコーダ(410)の機能を実行する処理回路、ビデオデコーダ(510)の機能を実行する処理回路、ビデオエンコーダ(603)の機能を実行する処理回路等の処理回路によって実行される。いくつかの実施形態では、プロセス(1300)は、ソフトウェア命令で実装され、したがって、処理回路がソフトウェア命令を実行すると、処理回路は、プロセス(1300)を実行する。プロセスは(S1301)から始まり、(S1310)に進む。
【0152】
(S1310)において、現在のCTUにおける現在のブロックの予測情報は、コーディングされたビデオビットストリームからデコードされる。予測情報はイントラブロックコピーモードを表すものである。現在のCTUのサイズは、参照サンプルメモリのストレージ容量に対応する最大サイズよりも小さい。いくつかの実施例では、参照サンプルメモリは、コーディングされたビデオビットストリームから再構成されたサンプルを格納するためのメインメモリよりも速いアクセス速度を有する。例えば、参照サンプルメモリは、デコーダ回路と同じチップ上にあるオンチップメモリであり、主メモリは、デコーダ回路を有するチップの外部にあるオフチップメモリである。参照サンプルメモリは、いくつかの例では、オフチップメモリを使用して実装することができることに留意されたい。
【0153】
(S1320)において、ブロックベクトルが決定される。ブロックベクトルは、現在のブロックと同じ画像内の参照ブロックを指し、参照ブロックは、参照サンプルメモリ内にバッファされたサンプルを再構成した。いくつかの実施形態において、サーチ領域は、現在のCTU、中間の左側のCTU、及び最も遠い左側のCTU等の、参照サンプルメモリ内にバッファされた再構成されたサンプルを有するCTUを含むように定義される。最も遠い左側のCTUは、参照サンプルメモリ内の現在のCTUの再構成されたサンプルで上書きされた少なくとも1つの再構成されたサンプルを有する。
【0154】
(S1330)では、現在ブロックは参照サンプルメモリから読み出される参照ブロックの再構成されたサンプルに基づいて再構成される。例えば、参照サンプルメモリは、参照ブロックの再構成されたサンプルを読み出すためにアクセスされ、その後、参照サンプルメモリから読み出された再構成されたサンプルに基づいて、現在のブロックのサンプルが再構成される。その後、プロセスは(S1399)に進み、終了する。
【0155】
上記の技術は、コンピュータ可読命令を用いたコンピュータソフトウェアとして行うことができて、物理的に一つ以上のコンピュータ可読媒体に格納されることができる。例えば、図14は、開示された主題の特定の実施例を実施するのに適しているコンピュータシステム(1400)を示す。
【0156】
コンピュータソフトウェアは、アセンブリ、コンパイル、リンク、又は類似のメカニズムの対象となり得る任意の適切な機械コード若しくはコンピュータ言語を使用してコーディングされることができ、直接実行されることができるか、又は、1つ以上のコンピュータ中央処理装置(CPU)、グラフィックス処理装置(GPU)等による、実施、マイクロコード実行等を介して実行されることができる命令を含むコードを作成する。
【0157】
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、物品のインターネット等を含む種々のタイプのコンピュータ又はその構成要素上で実行されることができる。
【0158】
コンピュータシステム(1400)のための図18に示されるコンポーネントは、例示的な性質のものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用範囲又は機能性に関する制限を示唆することを意図するものではない。また、コンポーネントの構成は、コンピュータシステム(1400)の例示的な実施形態に示されるコンポーネントのいずれか1つ又は組み合わせに関連する依存性又は要件を有すると解釈されるべきではない
【0159】
コンピュータシステム(1400)は、特定のヒューマンインタフェース入力デバイスを含み得る。このようなヒューマンインタフェース入力デバイスは、例えば、触覚入力(例えば、キーストローク、スイッピング、データグローブの動き)、音声入力(例えば、音声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず)を介して、一人又は複数の人間ユーザによる入力に応答し得る。また、ヒューマンインタフェースデバイスは、オーディオ(例えば、音声、音楽、周囲の音声)、画像(例えば、走査画像、静止画像カメラから得られる写真画像)、ビデオ(例えば、2次元ビデオ、立体画像を含む3次元ビデオ)等の、人間による意識的入力に必ずしも直接関係しない特定の媒体を捕捉するために用いられ得る。
【0160】
入力ヒューマンインタフェースデバイスは、キーボード(1401)、マウス(1402)、トラックパッド(1403)、タッチスクリーン(1410)、データグローブ(図示せず)、ジョイスティック(1405)、マイクロホン(1806)、スキャナ(1407)、カメラ(1408)の1つ以上を含み得る。
【0161】
コンピュータシステム(1400)はまた、特定のヒューマンインタフェース出力デバイスを含み得る。かかるヒューマンインタフェース出力デバイスは、例えば、触覚出力、音、光、及び嗅覚/味覚を通して、1人又は複数の人間ユーザの感覚を刺激し得る。かかるヒューマンインタフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(1410)、データグローブ(図示せず)、又はジョイスティック(1405)による触覚フィードバック)であるとこがあるが、入力デバイスとして働かない触覚フィードバックデバイスであることもできる)、オーディオ出力デバイス(例えば、スピーカー(1409)、ヘッドフォン(図示せず))、視覚出力デバイス(例えば、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(1410)であり、各々が触覚フィードバック能力を有するか又は有さず、そのうちのいくつかは、仮想現実眼鏡(図示せず)、ホログラフィックディスプレイ及びスモークタンク(図示せず)等の立体出力などの手段を介して2次元視出力又は3次元以上の出力を可能にし得るもの)、及び
プリンタ(図示せず)、を含み得る。
【0162】
コンピュータシステム(1400)はまた、人間がアクセス可能な記憶デバイスと、それらのアクセス可能な媒体とを含むことができ、媒体は、例えば、CD/DVD等の媒体(1421)によるCD/DVD ROM/RWを含む光学媒体ドライブ(1420)、USBメモリ(1422)、着脱可能ヘッドドライブ又はソリッドステートドライブ(1423)、テープ、フロッピーディスク(図示せず)等の従来の磁気媒体、セキュリティドングル等の特殊化されたROM/ASIC/PLDベースデバイス等である。
【0163】
当業者はまた、現在開示されている主題に関連して使用される「コンピュータ可読媒体」という用語は、伝送媒体、搬送波、又は他の一時的な信号を包含しないことを理解されたい。
【0164】
コンピュータシステム(1400)はまた、1つ以上の通信ネットワークへのインタフェースを含むことができる。ネットワークは、例えば、無線、有線、光であり得る。ネットワークは、さらに、ローカル、広域、大都市、車両及び工業、リアルタイム、遅延耐性等であり得る。ネットワークの例としては、イーサネット、無線LAN、GSM、3G、4G、5G、LTE等を含むセルラーネットワーク、ケーブルTV、衛星TV、及び地上放送TV、CANBusを含む産業用及び車両用を含む。特定のネットワークは、一般に、特定の汎用データポート又は周辺バス(1449)に接続される外部ネットワークインタフェースアダプタ(例えば、コンピュータシステム(1400)のUSBポート)を必要とし、他のネットワークは、一般に、以下に説明するシステムバスに接続されることにより、コンピュータ・システム(1400)のコアに統合される(、例えば、PCコンピュータシステムへのイーサネットインタフェース又はスマートフォンコンピュータシステムへのセルラーネットワークインタフェースである)。これらのネットワークのいずれかを使用して、コンピュータシステム(1400)は、他のエンティティと通信することができる。かかる通信は、単指向性通信、受信のみ(例えば、放送テレビ)通信、単指向性送信専用(例えば、特定のCANバスデバイスへのCANバス)通信、又は、例えばローカル又は広域デジタルネットワークを使用する他のコンピュータシステムへの、双方向通信であることができる。特定のプロトコル及びプロトコルスタックは、上述のように、それらのネットワーク及びネットワークインタフェースの各々で使用されることができる。
【0165】
前述のヒューマンインタフェースデバイス、人間がアクセス可能な記憶デバイス、及びネットワークインタフェースは、コンピュータシステム(1400)のコア(1440)に接続されることができる。
【0166】
コア(1440)は、1つ以上の中央処理デバイス(CPU)(1441)、グラフィックス処理デバイス(GPU)(1442)、フィールドプログラマブルゲートエリア(FPGA)(1443)の形態の特殊なプログラマブル処理デバイス、特定のタスクのためのハードウェアアクセラレータ(1444)等を含むことができる。これらのデバイスは、読出し専用メモリ(ROM) (1445)、ランダムアクセスメモリ(1446)、内部大容量記憶デバイス、例えば内部非ユーザアクセス可能ハードドライブ、SSD等(1447)と共に、システムバス(1448)を介して接続され得る。いくつかのコンピュータシステムでは、システムバス(1448)は、追加のCPU、GPU等による拡張を可能にするために、1つ又は複数の物理プラグの形態でアクセス可能である。周辺デバイスは、コアのシステムバス(1448)に直接接続するか、又は周辺バス(1449)を介して接続することができる。周辺バスのアーキテクチャは、PCI、USB等を含む。
【0167】
CPU(1441)、GPU(1442)、FPGA(1443)、及びアクセラレータ(1444)は、組み合わされて、上述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(1445)又はRAM(1446)に格納されることができる。移行データは、RAM(1446)に格納されることもできるが、永久データは例えば内部大容量記憶デバイス(1447)に格納されことができる。1つ以上のCPU(1441)、GPU(1442)、大容量記憶デバイス(1447)、ROM(1445)、RAM(1446)等と密接に関連付けることができるキャッシュメモリを使用することによって、メモリデバイスのいずれかへの高速記憶及び検索を可能にすることができる。
【0168】
コンピュータ可読媒体は、各種のコンピュータ実行動作を実行するためにその上のコンピュータコードを有することができる。メディアおよびコンピュータコードは特別に設計されたそれらであることができて、本開示のために作成されることができる、または、それらはよく公知で、コンピュータソフトウェア技術の技術を有するそれらが利用できる種類でありえる。
【0169】
一例として、限定するものではなく、アーキテクチャ(1400)、具体的にはコア(1440)を有するコンピュータシステムは、1つ以上の有形のコンピュータ可読媒体に具現化されたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータ等を含む)の結果として機能性を提供することができる。かかるコンピュータ可読媒体は、コア-内部大容量記憶デバイス(1447)又はROM(1445)等の一時的でない性質のコア(1440)の特定の記憶デバイスと同様に、上述のようにユーザがアクセス可能な大容量記憶デバイスに関連する媒体であってもよい。本開示の様々な実施形態を実装するソフトウェアは、かかるデバイスに記憶され、コア(1440)によって実行され得る。
コンピュータ読取可能媒体は、特定のニーズに応じて、1つ以上のメモリデバイス又はチップを含むことができる。ソフトウェアは、コア(1440)及びその中の具体的にプロセッサ(CPU、GPU、FPGA等を含む)に、RAM(1446)に記憶されたデータ構造を定義し、ソフトウェアによって定義されたプロセスにしたがって、かかるデータ構造を変更することを含む、本明細書に記載された特定のプロセス又は特定の部分を実行させることができる。付加的に又は代替的に、コンピュータシステムは、回路(例えば、アクセラレータ(1444))内に配線された、又は他の方法で具現化されたロジックの結果として、機能性を提供することができ、これは、本明細書に記載される特定のプロセス又は特定のプロセスの特定の部分を実行するために、ソフトウェアの代わりに、又はソフトウェアと共に動作することができる。ソフトウェアへの言及は、論理を含み、また、必要に応じて、その逆も可能である。コンピュータ読取り可能媒体への参照は、実行のためのソフトウェアを記憶する(集積回路(IC)等の)回路、実行のためのロジックを具体化する回路、又は適切な場合にはその両方を含むことができる。本開示は、ハードウェア及びソフトウェアの任意の適切な組み合わせを包含する。
【0170】
付録A:略称
JEM:ジョイント探索モデル
VVC:広用途ビデオコーディング
BMS:ベンチマークセット
MV:動きベクトル
HEVC:高効率ビデオコーディング
SEI:付加強化情報
VUI:ビデオユーザビリティ情報
GOP:画像グループ
TU:変換ユニット
PU:予測ユニット
CTU:コーディング・トリー・ユニット
CTB:コーディング・トリー・ブロック
PB:予測ブロック
HRD:仮想参照デコーダ
SNR:信号雑音比
CPU:中央処理装置
GPU:グラフィックス・プロセッシング・ユニット
CRT:陰極線管
LCD:液晶ディスプレイ
OLED:有機発光ダイオード
CD:コンパクト・ディスク
DVD:デジタル・ビデオ・ディスク
ROM:リード・オンリー・メモリ
RAM:ランダムアクセスメモリ
ASIC:特定用途向け集積回路
PLD:プログラマブル・ロジック・デバイス
LAN:ローカルエリアネットワーク
GSM:グローバス・システム・フォー・モバイルコミュニケーション
LTE:ロング・ターム・エヴォリューション
CANバス:コントローラ・エリア・ネットワーク・バス
USB:ユニバーサル・シリアル・バス
PCI:ペリフェラル・コンポーネント・インターコネクト
FPGA:フィールド・プログラマブル・ゲート・エリア
SSD:ソリッドステートドライブ
IC:集積回路
CU:コーディングユニット
【0171】
本開示はいくつかの例示的な実施形態を説明しているが、本発明の範囲内に入る、変更、置換、及び様々な均等物が存在する。
したがって、当業者は、本明細書に明示的に示されていないか又は記載されていないが、本発明の原理を実施し、したがってその概念及び範囲内にある多数のシステム及び方法を創造することができることが理解されよう。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10A
図10B
図10C
図10D
図11
図12
図13
図14
【外国語明細書】