(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-02-19
(54)【発明の名称】ブロックベクトル予測子候補リストの決定
(51)【国際特許分類】
H04N 19/463 20140101AFI20250212BHJP
H04N 19/593 20140101ALI20250212BHJP
【FI】
H04N19/463
H04N19/593
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024541722
(86)(22)【出願日】2023-01-10
(85)【翻訳文提出日】2024-09-09
(86)【国際出願番号】 US2023010476
(87)【国際公開番号】W WO2023133346
(87)【国際公開日】2023-07-13
(32)【優先日】2022-01-10
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】518272407
【氏名又は名称】コムキャスト ケーブル コミュニケーションズ, エルエルシー
(74)【代理人】
【識別番号】110001416
【氏名又は名称】弁理士法人信栄事務所
(72)【発明者】
【氏名】ルイス コル,ダミアン
(72)【発明者】
【氏名】フィリッポフ,アレクセイ コンスタンチノヴィッチ
(72)【発明者】
【氏名】ルフィツキー,ヴァシリー アレクセーヴィッチ
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159RC12
5C159RC38
(57)【要約】
ビデオフレームのブロックを符号化および/または復号化することが、同一のフレーム内または異なるフレーム内の以前に復号化された基準ブロックに基づいてもよい。基準ブロックは、ブロックベクトル(BV)によって示され得る。BVは、ブロックベクトル予測子(BVP)とBVとの間の差として符号化され得る。BVP候補のリストは、ビデオフレームの復号化領域および/またはブロックの寸法に基づき生成および/または拡張され得る。例えば、リスト内のゼロ値の候補BVPが、ビデオフレームの復号化領域および/またはブロックの寸法に基づき生成される他の候補BVPで置換され得る。
【選択図】
図17A
【特許請求の範囲】
【請求項1】
候補BVPのリスト中の候補ブロックベクトル予測子(BVP)の量が閾値未満であるという決定に基づき、コンピューティング装置によって、候補BVPを有する前記候補BVPのリストを更新することであって、前記候補BVPが、現在のブロックのイントラブロックコピー(IBC)基準領域に基づく、更新することと、
前記候補BVPの更新されたリストに基づき、
前記現在のブロックの符号化、または
前記現在のブロックを復号化、の少なくとも一つを実行することと、を含む、方法。
【請求項2】
前記現在のブロックの前記符号化が、
前記候補BVPの更新されたリスト内の第二の候補BVPに基づき、前記現在のブロックを符号化することと、
前記第二の候補BVPに関連付けられる基準ブロックと前記現在のブロックとの間の予測誤差を決定することと、を含む、請求項1に記載の方法。
【請求項3】
前記第二の候補BVPおよび前記予測誤差の表示を送信することをさらに含む、請求項2に記載の方法。
【請求項4】
前記現在のブロックを前記符号化することが、前記現在のブロックのブロックベクトル(BV)と前記第二の候補BVPとの間のブロックベクトル差(BVD)を決定することを含み、前記方法が、前記BVDの表示を送信することをさらに含む、請求項2または3に記載の方法。
【請求項5】
前記候補BVPの更新されたリスト内の第二の候補BVPの表示を受信することをさらに含み、前記現在のブロックの前記復号化が、前記第二の候補BVPに関連付けられる基準ブロックに基づき前記現在のブロックを復号化することを含む、請求項1に記載の方法。
【請求項6】
前記基準ブロックと前記現在のブロックとの間の予測誤差の表示を受信することをさらに含み、前記現在のブロックの前記復号化が、前記予測誤差にさらに基づき前記現在のブロックを復号化することを含む、請求項5に記載の方法。
【請求項7】
前記候補BVPが、前記現在のブロックから前記IBC基準領域の境界までの変位を示す、請求項1~6のいずれか一項に記載の方法。
【請求項8】
前記候補BVPが、前記現在のブロックから前記IBC基準領域内の位置までの変位を示す、請求項1~7のいずれか一項に記載の方法。
【請求項9】
前記候補BVPが、前記現在のブロックから、前記IBC基準領域の二つの境界の間の位置への変位を示す、請求項1~8のいずれか一項に記載の方法。
【請求項10】
前記現在のブロックの幅はcbWidthであり、および
前記現在のブロックの位置から、前記IBC基準領域の垂直縁の水平距離が、前記現在のブロックの前記幅以上であることに基づき、前記候補BVPが、前記現在のブロックの前記位置からの-cbWidthの水平方向の変位およびゼロの垂直方向の変位を示す、請求項1~9のいずれか一項に記載の方法。
【請求項11】
前記現在のブロックの高さがcbHeightであり、
前記現在のブロックの位置から、前記IBC基準領域の水平縁の垂直距離が前記現在のブロックの前記高さ以上であることに基づき、前記候補BVPが、前記現在のブロックの前記位置からのゼロの水平方向の変位および-cbHeightの垂直方向の変位を示す、請求項1~10のいずれか一項に記載の方法。
【請求項12】
前記現在のブロックの幅がcbWidthであり、
前記現在のブロックの高さがcbHeightであり、
前記候補BVPが、
前記現在のブロックの位置からの前記IBC基準領域の垂直縁の水平距離が、前記現在のブロックの前記幅以上であること、および
前記現在のブロックの前記位置からの前記IBC基準領域の水平縁の垂直距離が、前記現在のブロックの前記高さ以上であること、に基づき、前記現在のブロックの前記位置から、-cbWidthおよび-cbHeight、それぞれの水平方向の変位および垂直方向の変位を示す、請求項1~11のいずれか一項に記載の方法。
【請求項13】
コンピューティング装置であって、
一つまたは複数のプロセッサーと、
前記一つまたは複数のプロセッサーによって実行されると、前記コンピューティング装置に請求項1~12のいずれか一項に記載の方法を実行させる命令を格納するメモリーと、を含む、コンピューティング装置。
【請求項14】
システムであって、
請求項1~12のいずれか一項に記載の方法を実行するように構成される第一のコンピューティング装置と、
符号化された現在のブロックを受信するように構成される第二のコンピューティング装置と、を含む、システム。
【請求項15】
実行されると、請求項1~12のいずれか一項に記載の方法をさせる命令を格納する、コンピューター可読媒体。
【発明の詳細な説明】
【背景技術】
【0001】
関連出願の相互参照
本出願は、2022年1月10日に出願された米国仮特許出願第63/297,957号の利益を主張する。上述の出願は、その全体が参照により本明細書に組み込まれる。
【0002】
コンピューティング装置は、記憶、送信、受信、および/または表示のためにビデオを処理する。ビデオを処理することが、例えば、ビデオに関連付けられるデータサイズを減少させるために、符号化および復号化を含む。
【発明の概要】
【0003】
以下の概要は、特定の機能について簡略化された概要を示すものである。概要は広範な概要ではなく、キーとなるまたは重要な要素を特定することを意図したものではない。
【0004】
ビデオは、連続的に表示される一連のフレームを含み得る。予測符号化および復号化は、フレーム内のブロックに関連付けられる情報を使用して、同一のフレーム内の他のブロックを符号化および/または復号化することを伴い得る。例えば、ブロックに関連付けられる情報(例えば、ブロックの輝度および/または彩度コンポーネント)は、同一のフレーム内の基準ブロックに関連付けられる以前に復号化された情報を使用して符号化および/または復号化され得る。基準ブロックは、符号化または復号化される現在のブロックに対する基準ブロックの位置を表すブロックベクトル(BV)の形態で示され得る。BVを直接示すために必要なシグナリングオーバーヘッドを削減するために、候補BVPリスト内のブロックベクトル予測子(BVP)に基づきBVを示すことができる。BVP自体は、一つまたは複数の動作モードでBVとして使用され得る。本明細書に記載されるように、フレームの復号化領域内にある追加の候補BVPが、候補BVPのリストに追加され得る。追加の候補BVPが、例えば、候補BVPのリストが完全でない場合、および/またはゼロ値である候補BVPを置き換えるために追加され得る。追加された候補BVPの利用可能性は、BVおよび/またはブロック情報のより正確な予測を可能にし、それによって、ブロックの符号化、復号化、および/または送信に必要なリソースオーバーヘッドを低減し得る。
【0005】
これらおよびその他の特徴および利点は、以下でより詳細に説明される。
【図面の簡単な説明】
【0006】
一部の特徴は、限定ではなく例として添付図面に示される。図面では、同様の数字が同様の要素を参照している。
【0007】
【
図1】
図1は、例示的なビデオ符号化/復号化システムを示す。
【
図4】
図4は、コーディングツリーブロック(CTB)の例示的な四分木分割を示す。
【
図5】
図5は、
図4のCTBの例示的な四分木分割に対応する例示的な四分木を示す。
【
図6】
図6は、例示的な二分木分割および三分木分割を示す。
【
図7】
図7は、CTBの四分木およびマルチタイプツリー分割の組み合わせの例を示す。
【
図8】
図8は、
図7に示すCTBの四分木とマルチタイプツリー分割の組み合わせに対応する木を示す。
【
図9】
図9は、現在のブロックのイントラ予測のために決定された基準サンプルの例示的なセットを示す。
【
図11】
図11は、現在のブロックおよび対応する基準サンプルを示す。
【
図12】
図12は、現在のブロックの予測のためのイントラ予測モードの適用を示す。
【
図15A】
図15Aは、現在のブロックに対する例示的な空間候補隣接ブロックを示す。
【
図16】
図16は、符号化のためのイントラブロックコピー(IBC)の例を示す。
【
図19】
図19は、候補BVPのリストに含めるための候補BVPを決定するための例示的な方法を示す。
【
図20】
図20は、本明細書に記載の実施例のいずれかに使用され得るコンピューターシステムの例を示す。
【
図21】
図21は、本明細書に記載されるさまざまなデバイスのいずれかを実施するために使用され得るコンピューティング装置の例示的な要素を示す。
【発明を実施するための形態】
【0008】
添付図面および説明は、実施例を提供する。図面および/または記載に示す実施例は非排他的であり、図示および記載される特徴は、他の実施例で実践され得ることが理解されるべきである。ビデオデータストレージおよび/または送信/受信の技術分野で使用され得る、ビデオ符号化および復号化システムの動作のための例が提供される。より具体的には、本明細書に開示される技術は、符号化および/または復号化デバイスおよび/またはシステムで使用されるビデオ圧縮に関連し得る。
【0009】
複数のピクチャー/フレームを含むビデオシーケンスは、記憶および/または送信のためにデジタル形式で表され得る。デジタル形式でビデオシーケンスを表すことは、大量のビットを必要とし得る。ビデオシーケンスと関連付けられ得る大きなデータサイズは、記憶および/または送信のためにかなりのリソースを必要とし得る。ビデオ符号化は、より効率的な記憶および/または送信のために、ビデオシーケンスのサイズを圧縮するために使用され得る。ビデオ復号化を使用して、表示および/または他の形態の消費のために圧縮されたビデオシーケンスを復元することができる。
【0010】
図1は、例示的なビデオ符号化/復号化システムを示す。ビデオ符号化/復号化システム100は、ソース装置102、送信媒体104、および宛先装置106を含み得る。ソース装置102は、より効率的な記憶および/または送信のために、ビデオシーケンス108をビットストリーム110に符号化し得る。ソース装置102は、ビットストリーム110を、送信媒体104を介して宛先装置106に記憶および/または送信/伝送し得る。宛先装置106は、ビットストリーム110を復号化して、ビデオシーケンス108を表示し得る。宛先装置106は、送信媒体104を介してソース装置102からビットストリーム110を受信し得る。ソース装置102および/または宛先装置106は、複数の異なる装置(例えば、デスクトップコンピューター、ラップトップコンピューター、タブレットコンピューター、スマートフォン、ウェアラブルデバイス、テレビ、カメラ、ビデオゲームコンソール、セットトップボックス、ビデオストリーミングデバイスなど)のいずれかであり得る。
【0011】
ソース装置102は、ビデオソース112、エンコーダー114、および/または出力インターフェイス116のうちの一つまたは複数を含んでもよい(例えば、ビデオシーケンス108をビットストリーム110に符号化するため)。ビデオソース112は、自然なシーンおよび/または合成的に生成されたシーンの撮像に基づき、ビデオシーケンス108を提供および/または生成し得る。合成的に生成されたシーンは、コンピューター生成グラフィックおよび/またはスクリーンコンテンツを含むシーンであり得る。ビデオソース112は、ビデオキャプチャデバイス(例えば、ビデオカメラ)、以前にキャプチャされた自然なシーンおよび/または合成的に生成されたシーンを含むビデオアーカイブ、ビデオコンテンツプロバイダーからキャプチャされた自然なシーンおよび/または合成的に生成されたシーンを受信するためのビデオフィードインターフェイス、および/または合成シーンを生成するためのプロセッサー、を含み得る。
【0012】
ビデオシーケンス108などのビデオシーケンスは、一連のピクチャー(フレームとも呼ばれる)を含むことができる。ビデオシーケンスは、ピクチャー間の一定の時間間隔または可変時間間隔を使用して、ビデオシーケンスのピクチャーの連続的な提示に基づき、動きの印象を達成し得る。ピクチャーは、強度値の一つまたは複数のサンプルアレイを含み得る。強度値は、ピクチャー内の一連の規則的に間隔を置いた位置で取得(例えば、測定、決定、提供)され得る。カラーピクチャーは、輝度サンプルアレイおよび二つの発色サンプルアレイを含み得る(例えば、典型的には含む)。輝度サンプルアレイは、ピクチャーの明るさ(例えば、輝度コンポーネント、Y)を表す強度値を含み得る。発色サンプルアレイは、明るさとは別のピクチャー(例えば、彩度コンポーネント、CbおよびCr)の青色および赤色コンポーネントをそれぞれ表す強度値を含み得る。他のカラーピクチャーサンプルアレイは、異なるカラースキーム(例えば、赤、緑、青(RGB)カラースキーム)に基づき可能である。カラーピクチャー内の画素は、カラーピクチャーを表すために使用されるサンプルアレイの所与の場所に対する全ての強度値(例えば、輝度コンポーネント、彩度コンポーネント)を指し/含み/関連付けることができる。モノクロームピクチャーは、単一の輝度サンプルアレイを含み得る。ピクセルは、モノクロームピクチャーにおいて、モノクロームピクチャーを表すために使用される単一の輝度サンプルアレイの所与の位置における強度値(例えば、輝度コンポーネント)を指し/含み/関連付けることができる。
【0013】
エンコーダー114は、ビデオシーケンス108をビットストリーム110に符号化し得る。エンコーダー114は、一つまたは複数の予測技術を適用/使用して(例えば、ビデオシーケンス108を符号化するために)、ビデオシーケンス108の冗長情報を低減し得る。冗長情報は、デコーダーで予測され得、ビデオシーケンスの正確な復号化のためにデコーダーに送信される必要はない情報を含み得る。例えば、エンコーダー114は、空間予測(例えば、イントラフレームまたはイントラ予測)、時間予測(例えば、インターフレーム予測またはインター予測)、インター層予測、および/または他の予測技術を適用して、ビデオシーケンス108の冗長情報を低減し得る。エンコーダー114は、例えば、一つまたは複数の予測技術を適用する前に、ビデオシーケンス108を含むピクチャーをブロックと呼ばれる長方形領域に分割し得る。次に、エンコーダー114は、予測技術のうちの一つまたは複数を使用してブロックを符号化し得る。
【0014】
エンコーダー114は、例えば、時間予測のために、ビデオシーケンス108の別のピクチャー(例えば、基準ピクチャー)で符号化されるブロックに類似したブロックを検索し得る。次いで、検索中に決定されるブロック(例えば、予測ブロック)を使用して、符号化されるブロックを予測し得る。エンコーダー114は、例えば、空間予測のために、ビデオシーケンス108の同じピクチャー内で符号化されるブロックの再構成される隣接サンプルからのデータに基づき、予測ブロックを形成し得る。再構成されるサンプルは、符号化され、その後、復号化されたサンプルであり得る。エンコーダー114は、符号化されるブロックと予測ブロックとの間の差に基づき、予測誤差(例えば、残差)を決定し得る。予測誤差は、ビデオシーケンスの正確な復号化のためにデコーダーに送信/伝達され得る非冗長情報を表し得る。
【0015】
エンコーダー114は、(例えば、離散コサイン変換(DCT)、または任意の他の変換を使用して)予測誤差に変換を適用して、変換係数を生成し得る。エンコーダー114は、予測ブロック(例えば、予測タイプ、動きベクトル、および予測モード)を決定するために使用される変換係数、および他の情報に基づき、ビットストリーム110を形成し得る。エンコーダー114は、ビットストリーム110を形成する前に予測ブロックを決定するために使用される変換係数および/または他の情報の量子化およびエントロピーコーディングのうちの一つまたは複数を実行し得る。定量化および/またはエントロピーコーディングは、ビデオシーケンス108を保存および/または送信するために必要なビットの量をさらに減少させ得る。
【0016】
出力インターフェイス116は、宛先装置106への送信のために、ビットストリーム110を送信媒体104上に書き込む、および/または保存するように構成され得る。出力インターフェイス116は、ビットストリーム110を送信媒体104を介して宛先装置106に送信/伝送、アップロード、および/またはストリームするように構成され得る。出力インターフェイス116は、一つまたは複数の専有の、オープンソースの、および/または規格化された通信プロトコルに従って、ビットストリーム110を送信/伝送、アップロード、および/またはストリーミングするように構成される有線および/または無線送信機を含み得る(例えば、デジタルビデオ放送(DVB)規格、先進テレビジョンシステム委員会(ATSC)規格、統合サービスデジタル放送(ISDB)規格、Data Over Cable Service Interface Specification(DOCSIS)規格、第3世代パートナーシッププロジェクト(3GPP)規格、電気電子学会(IEEE)規格、インターネットプロトコル(IP)規格ワイヤレスアプリケーションプロトコル(WAP)規格、および/またはその他の通信プロトコル)。
【0017】
送信媒体104は、無線、有線、および/またはコンピューター可読媒体を含み得る。例えば、送信媒体104は、一つまたは複数のワイヤ、ケーブル、エアーインターフェイス、光ディスク、フラッシュメモリー、および/または磁気メモリーを含み得る。送信媒体104は、符号化されたビデオデータを格納および/または送信/伝送するように構成される、一つまたは複数のネットワーク(例えば、インターネット)またはファイルサーバーを含んでもよい。
【0018】
宛先装置108は、ビットストリーム110を表示のためにビデオシーケンス108に復号化し得る。宛先装置106は、入力インターフェイス118、デコーダー120、および/またはビデオディスプレイ122のうちの一つまたは複数を含んでもよい。入力インターフェイス118は、ソース装置102によって、送信媒体104上に記憶されたビットストリーム110を読み取るように構成され得る。入力インターフェイス118は、送信媒体104を介してソース装置102からビットストリーム110を受信、ダウンロード、および/またはストリームするように構成され得る。入力インターフェイス118は、一つまたは複数の専有の、オープンソースの、規格化された通信プロトコル、および/または任意の他の通信プロトコル(例えば、本明細書で参照されるような)に従って、ビットストリーム110を受信、ダウンロード、および/またはストリームするように構成される有線および/または無線受信機を含み得る。
【0019】
デコーダー120は、ビデオシーケンス108を符号化されたビットストリーム110から復号化し得る。デコーダー120は、エンコーダー114と同様の様式でビデオシーケンス108のピクチャーに対する予測ブロックを生成し、例えば、ビデオシーケンスをデ符号化するためのブロックに対する予測誤差を決定し得る。デコーダー120は、ビットストリーム110で受信された予測タイプ、予測モード、および/または動きベクトルを使用して/それらに基づき、予測ブロックを生成し得る。デコーダー120は、ビットストリーム110で受信された変換係数を使用して、予測誤差を決定し得る。デコーダー120は、変換係数を使用して、変換基底関数を重み付けすることによって、予測誤差を決定し得る。デコーダー120は、予測ブロックと予測誤差とを組み合わせて、ビデオシーケンス108を復号化し得る。宛先装置での復号化されたビデオシーケンスは、ソース装置102によって送信されるビデオシーケンス108など、送信されるのと同じビデオシーケンスであってもよく、または必ずしもそうでなくてもよい。例えば、デコーダー120は、例えば、エンコーダー114によるビデオシーケンス108の損失圧縮、および/または宛先装置106への送信中に符号化されたビットストリーム110に導入されたエラーのために、ビデオシーケンス108に近似するビデオシーケンスを復号化し得る。
【0020】
ビデオディスプレイ122は、ビデオシーケンス108をユーザーに表示することができる。ビデオディスプレイ122は、陰極速度管(CRT)ディスプレイ、液晶ディスプレイ(LCD)、プラズマディスプレイ、発光ダイオード(LED)ディスプレイ、および/またはビデオシーケンス108を表示するのに適した任意の他の表示装置を含んでもよい。
【0021】
ビデオ符号化/復号化システム100は、単に一例であり、ビデオ符号化/復号化システム100および/またはビデオ符号化/復号化システム100の変更バージョンとは異なるビデオ符号化/復号化システムは、本明細書に記載の方法およびプロセスを実行し得る。例えば、ビデオ符号化/復号化システム100は、他のコンポーネントおよび/または配置を含んでもよい。ビデオソース112は、ソース装置102の外部にあり得る。ビデオ表示装置122は、宛先装置106の外部にあってもよく、または(例えば、ビデオシーケンス108が機械および/または記憶装置による消費を意図している場合)完全に省略され得る。ソース装置102は、ビデオデコーダーをさらに含んでもよく、宛先装置104は、ビデオエンコーダーをさらに含んでもよい。例えば、ソース装置102は、宛先装置106から符号化されたビットストリームをさらに受信して、デバイス間の双方向ビデオ送信をサポートするように構成され得る。
【0022】
エンコーダー114および/またはデコーダー120は、一つまたは複数の専有または業界ビデオコーディング規格に従って動作し得る。例えば、エンコーダー114および/またはデコーダー120は、一つまたは複数の専有の、オープンソースの、および/または規格化されたプロトコル(例えば、国際電気通信連合電気通信規格化部門(ITU-T)H.263、ITU-T H.264、および動画像専門家グループ(MPEG)-4ビジュアル(Advanced Video Coding(AVC)としても知られる)、ITU-T H.265およびMPEG-H Part 2(High Efficiency Video Coding(HEVC)としても知られる)、ITU-T H.265およびMPEG-I Part 3(Versatile Video Coding (VVC)としても知られる)、WebM VP8およびVP9コーデック、および/またはAOMedia Video 1(AV1))、および/またはその他の通信プロトコルに従って動作することができる。
【0023】
図2は、例示的なエンコーダーを示す。
図2に示すエンコーダー200は、本明細書に記載の一つまたは複数のプロセスを実装し得る。エンコーダー200は、より効率的な記憶および/または送信のために、ビデオシーケンス202をビットストリーム204に符号化し得る。エンコーダー200は、
図1に示すようにビデオ符号化/復号化システム100(例えば、エンコーダー114として)、または任意のコンピューティング、通信、もしくは電子デバイス(例えば、デスクトップコンピューター、ラップトップコンピューター、タブレットコンピューター、スマートフォン、ウェアラブルデバイス、テレビ、カメラ、ビデオゲームコンソール、セットトップボックス、ビデオストリーミングデバイスなど)に実装され得る。エンコーダー200は、インター予測ユニット206、イントラ予測ユニット208、コンバイナー210および212、変換および量子化ユニット(TR+Q)ユニット214、逆変換および量子化ユニット(iTR+iQ)216、エントロピーコーディングユニット218、一つまたは複数のフィルター220、および/またはバッファ222のうちの一つまたは複数を含んでもよい。
【0024】
エンコーダー200は、ビデオシーケンス202のピクチャー(例えば、フレーム)をブロックに分割し(例えば、これを含み)、ブロックごとにビデオシーケンス202を符号化し得る。エンコーダー200は、インター予測ユニット206またはイントラ予測ユニット208のいずれかを使用して符号化されるブロック上で予測技術を実行/適用し得る。インター予測ユニット206は、ビデオシーケンス202の別の再構成されるピクチャー(例えば、基準ピクチャー)で符号化されるブロックに類似したブロックを検索することによってインター予測を実行し得る。再構成されるピクチャーは、符号化され、その後復号化されたピクチャーであり得る。次に、検索中に決定されるブロック(例えば、予測ブロック)を使用して、冗長情報を除去するために符号化されるブロックを予測し得る。インター予測ユニット206は、ビデオシーケンス202のピクチャーからピクチャーまでのシーンコンテンツにおける時間的冗長性または類似性を利用して、予測ブロックを決定し得る。例えば、ビデオシーケンス202のピクチャー間のシーンコンテンツは、経時的にスクリーンコンテンツの動きまたはアフィン変換による差異を除いて類似し得る。
【0025】
イントラ予測ユニット208は、ビデオシーケンス202の同じピクチャー内で符号化されるブロックの再構成される隣接サンプルからのデータに基づき予測ブロックを形成することによって、イントラ予測を実行し得る。再構成されるサンプルは、符号化され、次いで復号化されたサンプルを指し得る。イントラ予測ユニット208は、ビデオシーケンス202のピクチャー内のシーンコンテンツにおける空間的冗長性または類似性を利用して、予測ブロックを決定し得る。例えば、ピクチャーの中のシーンコンテンツの領域のテクスチャーは、同じピクチャーの中のシーンコンテンツの領域のすぐ周囲の領域のテクスチャーと類似し得る。
【0026】
コンバイナー210は、符号化されるブロックと予測ブロックとの間の差に基づき、予測誤差(例えば、残差)を決定し得る。予測誤差は、ビデオシーケンスの正確な復号化のためにデコーダーに送信/伝達され得る非冗長情報を表し得る。
【0027】
変換および量子化ユニット214は、予測誤差を変換および量子化し得る。変換および量子化ユニット214は、例えば、DCTを適用して、予測誤差の相関情報を減少させることによって、予測誤差を変換係数に変換し得る。変換および量子化ユニット214は、変換係数のデータを、所定の代表値のセットにマッピングすることによって、係数を量子化し得る。変換および量子化ユニット214は、係数を量子化して、ビットストリーム204内の無関係な情報を低減し得る。無関係な情報は、(例えば、受信装置で)復号化後、ビデオシーケンス202に可視および/または知覚可能な歪みを生成することなく、係数から除去され得る情報であり得る。
【0028】
エントロピーコーディングユニット218は、一つまたは複数のエントロピーコーディング方法を量子化変換係数に適用して、ビットレートをさらに低減し得る。例えば、エントロピーコーディングユニット218は、コンテキスト適応可変長コーディング(CAVLC)、コンテキスト適応バイナリ演算コーディング(CABAC)、および/またはコンテキストベースのバイナリ演算コーディング(SBAC)を適用し得る。エントロピー符号化された係数は、ビットストリーム204を形成するようにパックされ得る。
【0029】
逆変換および量子化ユニット216は、量子化変換係数を逆量子化および逆変換して、再構成される予測誤差を決定し得る。コンバイナー212は、再構成される予測誤差を予測ブロックと組み合わせて、再構成されるブロックを形成し得る。フィルター220は、例えば、非ブロック化フィルターおよび/またはサンプル適応オフセット(SAO)フィルターを使用して、再構成されるブロックをフィルター処理し得る。バッファ222は、再構成されるブロックを、ビデオシーケンス202の同じおよび/または異なるピクチャー内の一つまたは複数の他のブロックの予測のために記憶し得る。
【0030】
エンコーダー200は、エンコーダー制御ユニットをさらに含んでもよい。エンコーダー制御ユニットは、
図2に示すエンコーダー200の一つまたは複数のユニットを制御するように構成し得る。エンコーダー制御ユニットは、ビットストリーム204が、一つまたは複数の専有コーディングプロトコル、業界ビデオコーディング規格、および/または任意の他の通信プロトコルの要件に従って生成され得るように、エンコーダー200の一つまたは複数のユニットを制御し得る。例えば、エンコーダー制御ユニットは、ビットストリーム204が、ITU-T H.263、AVC、HEVC、VVC、VP8、VP9、AV1およびまたは任意の他のビデオコーディング規格/フォーマットの一つまたは複数に準拠して生成されるように、エンコーダー200の一つまたは複数のユニットを制御し得る。
【0031】
エンコーダー制御ユニットは、ビットストリーム204のビットレートを最小化(または低減)すること、および/または再構成されるビデオ品質を最大化(または増加)すること(例えば、専有コーディングプロトコル、業界ビデオコーディング規格、および/または任意の他の通信プロトコルの制約内)を試み得る。例えば、エンコーダー制御ユニットは、再構成されるビデオ品質が特定のレベル/閾値を下回らないように、ビットストリーム204のビットレートを最小化もしくは低減しようと試みてもよく、および/またはビットストリーム204のビットレートが特定のレベル/閾値を超過しないように、再構成されるビデオ品質を最大化もしくは増加しようと試みてもよい。エンコーダー制御ユニットは、ブロックがインター予測ユニット206によってインター予測されるか、またはイントラ予測ユニット208によってイントラ予測されるか、にかかわらず、ビデオシーケンス202のピクチャーをブロックに分割すること、ブロックのインター予測のための動きベクトル、ブロックのイントラ予測のための複数のイントラ予測モードのうちのイントラ予測モード、フィルター220によって実行されるフィルターリング、および/または変換および量子化ユニット214によって適用される一つまたは複数の変換タイプおよび/または量子化パラメーター、のうちの一つまたは複数を決定/制御することができる。エンコーダー制御ユニットは、符号化されるブロックまたはピクチャーに対するレート歪み測定に基づき、上記のうちの一つまたは複数を決定/制御し得る。エンコーダー制御ユニットは、上記のうちの一つまたは複数を決定/制御して、符号化されるブロックまたはピクチャーのレート歪み測定を低減し得る。
【0032】
ブロックを符号化するために使用される予測タイプ(イントラまたはインター予測)、ブロックの予測情報(イントラ予測の場合、イントラ予測モード、動きベクトルなど)、および/または変換および/または量子化パラメーターが、(例えば、ビットレートを低減するために)さらに圧縮されるエントロピーコーディングユニット218に送信され得る。予測タイプ、予測情報、ならびに変換および/または量子化パラメーターは、ビットストリーム204を形成するために、予測誤差でパックされ得る。
【0033】
エンコーダー200は、単に一例であり、エンコーダー200および/またはエンコーダー200の変更バージョンとは異なるエンコーダーは、本明細書に記載の方法およびプロセスを実施し得る。例えば、エンコーダー200は、他のコンポーネントおよび/または配置を有し得る。
図2に示すコンポーネントのうちの一つまたは複数は、エンコーダー200(例えば、エントロピーコーディングユニット218および/またはフィルター220)に任意に含まれてもよい。
【0034】
図3は、例示的なデコーダーを示す。
図3に示すデコーダー300は、本明細書に記載の一つまたは複数のプロセスを実装し得る。デコーダー300は、ビットストリーム302を、表示および/または何らかの他の形態の消費のために復号化されたビデオシーケンスに復号化し得る。デコーダー300は、
図1のビデオ符号化/復号化システム100、および/またはコンピューティング、通信、もしくは電子デバイス(例えば、デスクトップコンピューター、ラップトップコンピューター、タブレットコンピューター、スマートフォン、ウェアラブルデバイス、テレビ、カメラ、ビデオゲームコンソール、セットトップボックス、および/またはビデオストリーミングデバイス)に実装され得る。デコーダー300は、エントロピーデコーディングユニット306、逆変換および量子化(iTR+iQ)ユニット308、コンバイナー310、一つまたは複数のフィルター312、バッファ314、インター予測ユニット316、および/またはイントラ予測ユニット318を含んでもよい。
【0035】
デコーダー300は、デコーダー300の一つまたは複数のユニットを制御するように構成されるデコーダー制御ユニットを含み得る。デコーダー制御ユニットは、ビットストリーム302が、一つまたは複数の専有コーディングプロトコル、業界ビデオコーディング規格、および/または任意の他の通信プロトコルの要件に従って復号化されるように、デコーダー300の一つまたは複数のユニットを制御し得る。例えば、デコーダー制御ユニットは、ビットストリーム302が、ITU-T H.263、AVC、HEVC、VVC、VP8、VP9、AV1およびまたは任意の他のビデオコーディング規格/フォーマットの一つまたは複数に準拠して復号化されるように、デコーダー300の一つまたは複数のユニットを制御し得る。
【0036】
デコーダー制御ユニットは、ブロックがインター予測ユニット316によってインター予測されるか、イントラ予測ユニット318によってイントラ予測されるか、にかかわらず、ブロックのインター予測のための動きベクトル、ブロックのイントラ予測のための複数のイントラ予測モードのうちのイントラ予測モード、フィルター312によって実行されるフィルターリング、および/または逆変換および量子化ユニット308によって適用される一つまたは複数の逆変換タイプおよび/または逆量子化パラメーター、のうちの一つまたは複数を決定/制御することができる。デコーダー制御ユニットによって使用される制御パラメーターのうちの一つまたは複数は、ビットストリーム302にパックされ得る。
【0037】
エントロピーデコーディングユニット306は、ビットストリーム302をエントロピーデコーディングし得る。逆変換および量子化ユニット308は、量子化変換係数を逆量子化および/または逆変換して、復号化予測誤差を決定し得る。コンバイナー310は、復号化された予測誤差を予測ブロックと組み合わせて、復号化されたブロックを形成し得る。予測ブロックは、インター予測ユニット318またはインター予測ユニット316によって生成され得る(例えば、
図2のエンコーダー200に関して上述したように)。フィルター312は、例えば、非ブロック化フィルターおよび/またはサンプル適応オフセット(SAO)フィルターを使用して、復号化されたブロックをフィルターリングし得る。バッファ314は、ビットストリーム302内のビデオシーケンスの同じおよび/または異なるピクチャー内の一つまたは複数の他のブロックの予測のために、復号化されたブロックを記憶し得る。
図3に示すように、復号化されたビデオシーケンス304は、フィルター312から出力され得る。
【0038】
デコーダー300は、単に一例であり、デコーダー300および/またはデコーダー300の変更バージョンとは異なるデコーダーが、本明細書に記載の方法およびプロセスを実施し得る。例えば、デコーダー300は、他のコンポーネントおよび/または配置を有し得る。
図3に示すコンポーネントのうちの一つまたは複数は、任意選択的に、デコーダー300(例えば、エントロピーデコーディングユニット306および/またはフィルター312)に含まれてもよい。
【0039】
図2および
図3には示されていないが、エンコーダー200およびデコーダー300の各々は、インター予測およびイントラ予測ユニットに加えて、イントラブロックコピーユニットをさらに含んでもよい。イントラブロックコピーユニットは、インター予測ユニットと同様に実行/動作し得るが、同じピクチャー内のブロックを予測し得る。例えば、イントラブロックコピーユニットは、スクリーンコンテンツに現れる反復パターンを利用し得る。スクリーンコンテンツは、コンピューター生成テキスト、グラフィック、アニメーションなどを含み得る。
【0040】
ビデオ符号化および/または復号化は、ブロックごとに実施され得る。ピクチャーをブロックに分割するプロセスは、ピクチャーの内容に基づき適応的であり得る。例えば、コーディング効率を改善するために、より高いレベルの均質性を有するピクチャーの領域で、より大きなブロック分割が使用され得る。
【0041】
ピクチャー(例えば、HEVC、または任意の他のコーディング規格/フォーマット)は、コーディングツリーブロック(CTB)と称され得る、重複しない正方形ブロックに分割され得る。CTBは、サンプルアレイのサンプルを含んでもよい。CTBは、2n×2nサンプルのサイズを有してもよく、nは、符号化システムのパラメーターによって指定され得る。例えば、nは、4、5、6、または任意の他の値であり得る。CTBは、任意の他のサイズを有し得る。CTBは、半垂直および半水平サイズのコーディングブロック(CB)に再帰的な四分木分割によってさらに分割され得る。CTBは、四分木の根を形成し得る。再帰的な四分木分割の一部としてさらに分割されないCBは、四分木の葉CBと称されてもよく、そうでなければ、四分木の非葉CBと称され得る。CBは、符号化システムのパラメーターによって指定された最小サイズを有し得る。例えば、CBは、4×4、8×8、16×16、32×32、64×64のサンプルの最小サイズ、または任意の他の最小サイズを有し得る。CBは、インター予測およびイントラ予測を実行するために、一つまたは複数の予測ブロック(PB)にさらに分割され得る。PBは、同じ予測タイプ/モードが適用され得るサンプルの長方形ブロックであり得る。変換のために、CBは、一つまたは複数の変換ブロック(TB)に分割され得る。TBは、適用された変換サイズを決定/示し得る、サンプルの長方形ブロックであり得る。
【0042】
図4は、CTBの四分木分割の例を示す。
図5は、
図4のCTB400の例示的な四分木分割に対応する四分木を示す。
図4および5に示すように、CTB400は、最初に、半垂直および半水平サイズの四つのCBに分割され得る。CTB400の第一のレベル分割の結果として得られるCBのうちの三つは、葉CBであり得る。CTB400の第一のレベル分割の三つの葉CBは、
図4および5でそれぞれ7、8、および9と標識される。CTB400の第一のレベル分割の非葉CBは、半垂直および半水平サイズの四つのサブCBに分割され得る。CTB400の第二のレベル分割の結果的なサブCBのうちの三つは、葉CBであり得る。CTB400の第二のレベル分割の三つの葉CBは、
図4および5でそれぞれ0、5、および6と標識される。CTB400の第二のレベル分割の非葉CBは、半垂直および半水平サイズの四つの葉CBに分割され得る。四つの葉CBは、
図4および
図5においてそれぞれ1、2、3、および4と標識され得る。
【0043】
図4のCTB400は、それぞれ0~9と標識された10の葉CB、および/または任意の他の数葉CBに分割され得る。10の葉CBは、10のCB葉ノード(例えば、
図5)に対応し得る。他の実施例では、CTBは、異なる数の葉CBに分割され得る。CTB400の結果的な四分木分割は、zスキャン(例えば、左から右、上から下)を使用してスキャンされて、CB葉ノードを符号化/復号化するためのシーケンス順序を形成し得る。
図4および
図5の各CB葉ノードの数値ラベル(例えば、インジケーター、インデックス)は、符号化/復号化のためのシーケンス順序に対応し得る。例えば、CB葉ノード0は、最初に符号化/復号化されてもよく、CB葉ノード9は、最後に符号化/復号化され得る。
図4および5には示されていないが、各、CB葉ノードは、一つまたは複数のPBおよび/またはTBを含んでもよい。
【0044】
VVC(または任意の他のコーディング規格/フォーマット)内のピクチャーは、同様の様式(HEVCなど)で分割され得る。ピクチャーは、まず、重複しない正方形CTBに分割され得る。次いで、CTBは、再帰的な四分木分割を使用して、半垂直および半水平サイズのCBに分割され得る。(例えば、VVC中の)四分木葉ノードは、二分木または三分木分割(または任意の他の分割)によって、等しくないサイズのCBにさらに分割され得る。
【0045】
図6は、例示的な二分木分割および三分木分割を示す。二分木分割は、親ブロックを垂直方向602または水平方向604のいずれかで半分に分割し得る。結果として得られる分割は、親ブロックと比較して半分のサイズであり得る。結果として得られる分割は、親ブロックサイズの半分未満および/または半分超のサイズに対応し得る。三分木分割は、垂直方向606または水平方向608のいずれかで、親ブロックを三つの部分に分割し得る。
図6は、中間分割が三分木分割内の他の二つの端分割の二倍の大きさであり得る実施例を示す。他の実施例では、分割は、互いおよび親ブロックに対して他のサイズであり得る。二元木分割および三分木分割は、マルチタイプツリー分割の例である。マルチタイプツリー分割は、親ブロックを他の量のより小さなブロックに分割することを含み得る。(例えば、VVC中の)ブロック分割戦略は、四分木分割への二分木および/または三分木分割の追加のために、四分木+マルチタイプツリー分割と呼んでもよい。
【0046】
図7は、CTBの四分木およびマルチタイプツリー分割の組み合わせの例を示す。
図8は、
図7に示したCTB700の四分木とマルチタイプツリーを組み合わせた分割に対応する木を示す。
図7および
図8の両方において、四分木分割は実線で示され、マルチタイプツリー分割は破線で示される。CTB700は、
図4に記載されるCTB400と同じ四分木分割で示され、CTB700の四分木分割の説明は省略される。CTB700の四分木分割は、単に一例であり、CTBは、CTB700とは異なる様式で四分木分割され得る。CTB700の追加的なマルチタイプツリー分割は、
図4に示される三つの葉CBに対して行われ得る。さらに分割されるものとして
図7に示される
図4の三つの葉CBは、葉CB5、8、および9であり得る。三つの葉CBは、一つまたは複数の二分木および三分木分割を使用してさらに分割され得る。
【0047】
図4の葉CB5は、垂直二分木分割に基づき、二つのCBに分割され得る。結果として得られる二つのCBは、
図7および
図8でそれぞれ5および6と標識された葉CBであり得る。
図4の葉CB8は、垂直三分木分割に基づき、三つのCBに分割され得る。三つの結果として生じるCBのうち二つは、
図7および8でそれぞれ9および14と標識された葉CBであり得る。残りの非葉CBは、水平二分木分割に基づき、最初に二つのCBに分割され得る。二つのCBのうちの一つは、10と標識された葉CBであり得る。二つのCBのうちの他方は、垂直三分木分割に基づき、三つのCBにさらに分割され得る。得られた三つのCBは、
図7および8でそれぞれ11、12、および13と標識された葉CBであり得る。
図4の葉CB9は、水平三分木分割に基づき、三つのCBに分割され得る。三つのCBのうち二つは、
図7および8でそれぞれ15および19と標識された葉CBであり得る。残りの非葉CBは、別の水平三分木分割に基づき、三つのCBに分割され得る。得られた三つのCBは全て、
図7および8でそれぞれ16、17、および18と標識された葉CBであり得る。
【0048】
全体として、CTB700は、それぞれ0~19と標識された20の葉CBに分割され得る。CTB700の結果的な四分木+マルチタイプツリー分割は、zスキャン(左から右、上から下)を使用してスキャンされて、CB葉ノードを符号化/復号化するためのシーケンス順序を形成し得る。
図7および
図8の各CB葉ノードの数値ラベルは、CB葉ノード0が最初に符号化/復号化され、CB葉ノード19が最後に符号化/復号化された状態で、符号化/復号化のシーケンス順序に対応し得る。
図7および
図8には示されていないが、各、CB葉ノードは、一つまたは複数のPBおよび/またはTBを含んでもよいことに留意されたい。
【0049】
コーディング規格/フォーマット(例えば、HEVC、VVC、またはコーディング規格/フォーマットの任意の他のもの)は、(例えば、さまざまなブロック(例えば、CTB、CB、PB、TB)を指定することに加えて)さまざまなユニットを定義し得る。ブロックは、サンプルアレイ内のサンプルの長方形領域を含み得る。ユニットは、ピクチャーならびにブロックのシンタックス要素および予測データを形成する異なるサンプルアレイ(例えば、輝度および彩度サンプルアレイ)からのサンプルの共位置にされたブロックを含み得る。コーディングツリーユニット(CTU)は、異なるサンプルアレイの併置されたCTBを含んでもよく、符号化されたビットストリーム内に完全なエンティティを形成し得る。コーディングユニット(CU)は、CBのサンプルを符号化するために使用される異なるサンプルアレイおよびシンタックス構造の併置されたCBを含んでもよい。予測ユニット(PU)は、PBを予測するために使用される異なるサンプルアレイおよびシンタックス要素の併置されたPBを含み得る。変換ユニット(TU)は、TBを変換するために使用される異なるサンプルアレイおよびシンタックス要素のTBを含んでもよい。
【0050】
ブロックは、CTB、CB、PB、TB、CTU、CU、PU、および/またはTUのいずれかを指し得る(例えば、HEVC、VVC、または任意の他のコーディングフォーマット/規格の文脈において)。ブロックは、任意のビデオコーディングフォーマット/規格/プロトコルの文脈における類似のデータ構造を指すために使用され得る。例えば、ブロックは、AVC規格におけるマクロブロック、VP8コードフォーマットにおけるマクロブロックもしくはサブブロック、VP9コードフォーマットにおけるスーパーブロックもしくはサブブロック、またはAV1コードフォーマットにおけるスーパーブロックもしくはサブブロックを指し得る。
【0051】
符号化されるブロックのサンプル(例えば、現在のブロック)は、現在のブロックの左端の列に隣接する列のサンプル、およびイントラ予測など、現在のブロックの最上行に隣接する行のサンプルから予測され得る。隣接する列および行からのサンプルは、基準サンプルと総称され得る。現在のブロックの各サンプルは、現在のブロック内のサンプルの位置を、基準サンプルに沿った点に対して所与の方向に投影することによって(例えば、イントラ予測モードで)予測され得る。サンプルは、投影が基準サンプル上に直接入らない場合、投影点の二つの最も近い基準サンプル間で補間することによって予測され得る。予測誤差(例えば、残差)は、現在のブロックの予測サンプル値と元のサンプル値との間の差に基づき、現在のブロックに対して決定され得る。
【0052】
サンプルを予測すること、および予測サンプルと元のサンプルとの間の差に基づき予測誤差を決定することが、複数の異なるイントラ予測モード(例えば、非方向性イントラ予測モードを含む)に対して(例えば、エンコーダーで)実施され得る。エンコーダーは、現在のブロックを符号化するために、複数のイントラ予測モードのうちの一つおよびその対応する予測誤差を選択し得る。エンコーダーは、現在のブロックの復号化のために、選択された予測モードおよびその対応する予測誤差の表示をデコーダーに送信し得る。デコーダーが、エンコーダーによって示されるイントラ予測モードを使用して、現在のブロックのサンプルを予測すること、および/または予測サンプルを予測誤差と組み合わせることによって、現在のブロックを復号化し得る。
【0053】
図9は、現在のブロックのイントラ予測のために決定された基準サンプルの例示的なセットを示す。現在のブロック904は、符号化および/または復号化されるブロックに対応し得る。現在のブロック904は、
図7に示すように、分割されたCTB700のブロック3に対応することができる。本明細書に記載されるように、分割されたCTB700のブロックの数値ラベル0~19は、ブロックを符号化/復号化するためのシーケンス順序に対応してもよく、
図9の実施例のように使用され得る。
【0054】
現在のブロック904は、サイズがw×hサンプルであり得る。基準サンプル902は、現在のブロック904の最上行に隣接する行の2wサンプル(または任意の他の数のサンプル)、現在のブロック904の最左端列に隣接する列の2hサンプル(または任意の他の数のサンプル)、および現在のブロック904に対する左上隣接隅サンプルを含み得る。現在のブロック904は、w=h=sであるように、正方形であり得る。他の実施例では、現在のブロックは、w≠hであるように正方形である必要はない。現在のブロック904の隣接ブロックからの利用可能なサンプルは、基準サンプル902のセットを構築するために使用され得る。サンプルは、基準サンプル902のセットを構築するために利用できない場合があり例えば、サンプルが現在のブロックのピクチャーの外側にある場合、サンプルは現在のブロックの異なるスライスの一部であり(例えば、スライスの概念が使用される場合)、および/またはサンプルは、インターコードされたブロックに属し、かつ制約されたイントラ予測が示される。例えば、制約されたイントラ予測が示される場合、イントラ予測は、インター予測ブロックに依存し得ない。
【0055】
基準サンプル902のセットを構築するために利用可能ではないサンプルは、符号化/復号化のためのシーケンス順序に基づき、エンコーダーでまだ符号化および再構成されていない、ならびに/またはデコーダーで復号化されていないブロック内のサンプルを含み得る。基準サンプルのセット内に含めることからのこうしたサンプルの制限は、エンコーダーおよびデコーダーの両方で同一の予測結果を決定することを可能にし得る。隣接ブロック0、1、および2からのサンプルは、これらのブロックがエンコーダーで符号化および再構成され、現在のブロック904の符号化の前にデコーダーで復号化されることを考慮すると、基準サンプル902を構築するために利用可能であり得る。隣接ブロック0、1、および2からのサンプルは、例えば、隣接ブロック0、1、および2からのサンプルの利用可能性を妨げる他の問題(例えば、上述のような)がなければ、基準サンプル902を構築するために利用可能であり得る。隣接ブロック6からの基準サンプル902の部分は、符号化/復号化のためのシーケンス順序のために利用可能でない可能性がある(例えば、ブロック6は、符号化/復号化のためのシーケンス順序に基づき、エンコーダーにおいてまだ符号化および再構成されておらず、かつ/またはデコーダーにおいて復号化されていない可能性があるため)。
【0056】
基準サンプル902からの利用できないサンプルは、利用可能な基準サンプル902のうちの一つまたは複数で充填され得る。例えば、利用できない基準サンプルは、最も近い利用可能な基準サンプルで充填され得る。最も近い利用可能な基準サンプルは、利用できない基準の位置から基準サンプル902を通して時計回り方向に移動することによって決定され得る。基準サンプル902は、例えば、基準サンプルが利用できない場合に、ピクチャーが符号化される動的範囲の中間値で充填され得る。
【0057】
基準サンプル902は、符号化される現在のブロック904のサイズおよび適用されるイントラ予測モードに基づきフィルターリングされ得る。
図9は、ブロックのイントラ予測のための基準サンプルの例示的な決定を示す。基準サンプルは、上述のものとは異なる方法で決定され得る。例えば、複数の基準線は、他の実例(例えば、VVC)で使用され得る。
【0058】
現在のブロック904のサンプルは、基準サンプル902に基づき、例えば、基準サンプルの決定および(任意選択的に)フィルターリングに基づき、イントラ予測され得る。少なくとも一部の(例えば、ほとんどの)エンコーダー/デコーダーが、一つまたは複数のビデオコーディング規格に従って、複数のイントラ予測モードをサポートし得る。例えば、HEVCは、平面モード、直流(DC)モード、および33の角度モードを含む、35のイントラ予測モードをサポートする。VVCは、平面モード、DCモード、および65の角度モードを含む、67のイントラ予測モードをサポートする。平面およびDCモードを使用して、ピクチャーの滑らかで徐々に変化する領域を予測し得る。角度モードは、ピクチャーの領域における方向構造を予測するために使用され得る。任意の量のイントラ予測モードがサポートされ得る。
【0059】
図10Aおよび10Bは、例示的なイントラ予測モードを示す。
図10Aは、HEVCによってサポートされるなどの35のイントラ予測モードを示す。35のイントラ予測モードは、インデックス0~34によって示され/識別され得る。予測モード0は、平面モードに対応し得る。予測モード1は、DCモードに対応し得る。予測モード2~34は、角度モードに対応し得る。予測モード2~18は、主予測源が水平方向にあるため、水平予測モードと呼んでもよい。予測モード19~34は、主予測源が垂直方向にあるため、垂直予測モードと呼んでもよい。
【0060】
図10Bは、VVCによってサポートされるなど、67のイントラ予測モードを示す。67のイントラ予測モードは、インデックス0~66によって示され/識別され得る。予測モード0は、平面モードに対応し得る。予測モード1はDCモードに対応する。予測モード2~66は、角度モードに対応し得る。予測モード2~34は、主予測源が水平方向にあるため、水平予測モードと呼んでもよい。予測モード35~66は、主予測源が垂直方向にあるため、垂直予測モードと呼んでもよい。
図10Bに示されるイントラ予測モードのいくつかは、VVCのブロックが正方形である必要はないため、広角方向によって適応的に置換され得る。
【0061】
図11は、現在のブロックおよび対応する基準サンプルを示す。
図11では、
図9からの現在のブロック904および基準サンプル902は、二次元x、y平面に示され、サンプルはp[x][y]として参照され得る。予測プロセスを簡略化するために、基準サンプル902は、二つの一次元アレイに配置され得る。現在のブロック904の上方の基準サンプル902は、一次元アレイref
1[x]内に配置され得る。
【数1】
【0062】
現在のブロック904の左の基準サンプル902は、一次元アレイref
2[y]に配置され得る。
【数2】
【0063】
予測プロセスは、現在のブロック904内の位置[x][y]における予測サンプルp[x][y](例えば、予測値)の決定を含み得る。平面モードの場合、現在のブロック904内の位置[x][y]にあるサンプルは、二つの補間値の平均を決定/計算することによって予測され得る。二つの補間値のうちの第一のものは、現在のブロック904内の位置[x][y]における水平線形補間に基づいてもよい。二つの補間値のうちの二つ目は、現在のブロック904内の位置[x][y]での垂直線形補間に基づいてもよい。現在のブロック904における予測サンプルp[x][y]は、以下のように決定/計算され得る。
【数3】
ここで、
【数4】
は、現在のブロック904内の位置[x][y]における水平線形補間であってもよく、
【数5】
は、現在のブロック904内の位置[x][y]での垂直線形補間であり得る。sは、現在のブロック904の側面(例えば、側面上のサンプルの数)の長さと等しくてもよい。
【0064】
現在のブロック904内の位置[x][y]のサンプルは、DCモードなど、基準サンプル902の平均によって予測され得る。現在のブロック904における予測サンプルp[x][y]は、以下のように決定/計算され得る。
【数6】
【0065】
現在のブロック904内の位置[x][y]におけるサンプルは、所与の角度モードによって指定された方向に、角度モードなどについて、基準サンプル902を含むサンプルの水平または垂直線上の点に、位置[x][y]を投影することによって予測され得る。位置[x][y]のサンプルは、突出部が基準サンプル上に直接入らない場合、投影点の二つの最も近い基準サンプル間で補間することによって予測され得る。角度モードによって指定された方向は、垂直予測モード(例えば、HEVCのモード19~34およびVVCのモード35~66)のy軸に対して画定される角度φによって与えられてもよい。角度モードによって指定された方向は、水平予測モード(例えば、HEVCのモード2~18およびVVCのモード2~34)のx軸に対して画定される角度φによって与えられてもよい。
【0066】
図12は、現在のブロックの予測のためのイントラ予測モードの適用を示す。
図12は、垂直予測モード906に対する、現在のブロック904内の位置[x][y]での試料の予測を具体的に示す。垂直予測モード906は、垂直軸に対して角度φによって与えられてもよい。垂直投影モードにおける、現在のブロック904内の位置[x][y]は、基準サンプルref
1[x]の水平線上の点(例えば、投影点)に投影され得る。基準サンプル902は、例示を容易にするために
図12に部分的にのみ示される。
図12に見られるように、基準試料の水平線ref
1[x]上の投影点は、基準試料上に正確にない場合がある。現在のブロック904内の予測サンプルp[x][y]は、例えば、投影点が二つの基準サンプル間の小数サンプル位置にある場合、二つの基準サンプル間を線形補間することによって決定/計算され得る。予測サンプルp[x][y]は、以下のように決定され得る。
【数7】
i
iは、位置[x][y]に対する投影点の水平方向の変位の整数部分であり得る。i
iは、垂直予測モード906の角度φの接線の関数として、以下のように決定/計算され得る。
【数8】
i
fは、位置[x][y]に対する投影点の水平方向の変位の小数部であってもよく、下記のように、決定/計算され得る。
【数9】
ここで、[・]は、整数床関数である。
【0067】
現在のブロック904内のサンプルの位置[x][y]は、水平予測モードなど、基準サンプルref
2[y]の垂直線上に投影され得る。水平予測モードに対する予測サンプルp[x][y]は、以下のように決定/計算され得る。
【数10】
i
iは、投影点の位置[x][y]に対する垂直方向の変位の整数部分になる。i
iは、水平予測モードの角度φの正接の関数として次のように決定/計算することができる。
【数11】
i
fは、投影点の位置[x][y]に対する垂直方向の変位の小数部であり得る。i
fは、次のように決定/計算される:
【数12】
ここで、[・]は、整数床である。
【0068】
式(7)および(10)によって与えられる補間関数は、エンコーダーおよび/またはデコーダー(例えば、
図2のエンコーダー200および/または
図3のデコーダー300)によって実装され得る。補間関数は、有限インパルス応答(FIR)フィルターによって実装され得る。例えば、補間関数は、2タップFIRフィルターのセットとして実装され得る。2タップFIRフィルターの係数は、それぞれ(1-i
f)およびi
fによって与えられてもよい。角度イントラ予測における予測サンプルp[x][y]は、いくつかの所定のレベルのサンプル精度(例えば、1/32サンプル精度、または任意の他の指標によって定義される精度)で計算され得る。1/32サンプル精度のために、2タップFIR補間フィルターのセットは、最大32の異なる2タップFIR補間フィルターを含んでもよく、これは、投影変位i
fの小数部の32の可能な値の各々に対して一つである。他の実施例では、異なるレベルのサンプル精度が使用され得る。
【0069】
FIRフィルターは、彩度サンプルおよび/または輝度サンプルを予測するために使用され得る。例えば、2タップ補間FIRフィルターは、彩度サンプルを予測するために使用されてもよく、同じまたは異なる補間技術/フィルターが、輝度サンプルに使用され得る。例えば、4タップFIRフィルターを使用して、輝度サンプルの予測値を決定し得る。四つのタップFIRフィルターの係数はi
fに基づき決定され得る。(例えば、2タップFIRフィルターに類似している)。1/32サンプル精度のために、32の異なる4タップFIRフィルターのセットは、最大32の異なる4タップFIRフィルターを含んでもよく、これは、投影変位i
fの小数部の32の可能な値の各々に対して一つである。他の実施例では、異なるレベルのサンプル精度が使用され得る。4タップFIRフィルターのセットは、ルックアップテーブル(LUT)に記憶され、i
fに基づき参照され得る。垂直予測モードに対する予測サンプルp[x][y]は、4タップFIRフィルターに基づき以下のように決定され得る。
【数13】
ここで、fT[i],i=0、...、3はフィルター係数であり、Idxは整数変位である。水平予測モードについて、予測サンプルp[x][y]は、以下のように4タップFIRフィルターに基づき決定され得る。
【数14】
【0070】
予測される現在のブロック904内のサンプルの位置[x][y]が負のx座標に投影される場合、補足的な基準サンプルを決定/構築し得る。サンプルの位置[x][y]は、例えば、負の垂直予測角度φが使用される場合、負のx座標に投影され得る。補足的な基準サンプルは、負の垂直予測角度φを使用して、基準サンプル902の垂直線内のref2[y]の基準サンプルを基準サンプル902の水平線に投影することによって決定/構築され得る。例えば、予測される現在のブロック904内のサンプルの位置[x][y]が負のy座標に投影される場合、補足的な基準サンプルも同様に決定され得る。サンプルの位置[x][y]は、例えば、負の水平予測角度φが使用される場合、負のy座標に投影され得る。補足的な基準サンプルは、負の水平予測角度φを使用して、基準サンプル902の水平線上のref1[x]の基準サンプルを基準サンプル902の垂直線に投影することによって決定/構築され得る。
【0071】
エンコーダーは、(例えば、本明細書に記載される機能のうちの一つまたは複数を使用して)複数のイントラ予測モードに対して符号化される現在のブロック(例えば、現在のブロック904)のサンプルを決定/予測し得る。例えば、エンコーダーは、HEVCにおける35のイントラ予測モードまたはVVCにおける67のイントラ予測モードの各々に対する現在のブロックのサンプルを予測することができる。エンコーダーは、適用される各イントラ予測モードについて、イントラ予測モードに対して決定された予測サンプルと現在のブロックの元のサンプルとの間の差(例えば、二乗差(SSD)の合計、絶対差(SAD)の合計、または絶対変換された差(SATD)の合計)に基づき、現在のブロックに対する対応する予測誤差を決定し得る。エンコーダーは、判定された予測誤差に基づき、現在のブロックを符号化するイントラ予測モードのうちの一つを決定/選択し得る。例えば、エンコーダーは、現在のブロックに対する最小の予測誤差をもたらすイントラ予測モードを選択し得る。エンコーダーは、イントラ予測モードを選択して、予測誤差を使用して決定されたレート歪み測定値(例えば、ラグランジアンレート歪みコスト)に基づき、現在のブロックを符号化し得る。エンコーダーは、現在のブロックの復号化のために、選択されたイントラ予測モードおよびその対応する予測誤差(例えば、残差)の表示をデコーダーに送信し得る。
【0072】
デコーダーが、イントラ予測モードに対して復号化される現在のブロック(例えば、現在のブロック904)のサンプルを決定/予測し得る。例えば、デコーダーが、ブロックのエンコーダーから予測モード(例えば、角度イントラ予測モード)の表示を受信し得る。デコーダーが、基準サンプルのセットを構築し、同様の様式で(例えば、エンコーダーについて上述したように)ブロックについてエンコーダーによって示される予測モードに基づきイントラ予測を実行し得る。デコーダーが、ブロックを再構成するために、ブロックの残差に、ブロックのサンプルの予測値(例えば、イントラ予測に基づき決定される)を追加する。デコーダーが、ブロックのエンコーダーから角度イントラ予測モードの表示を受信する必要はない。デコーダーが、例えば、他の基準に基づき、イントラ予測モードを決定し得る。本明細書のさまざまな実施例は、HEVCおよびVVCのイントラ予測モードに対応するが、本明細書に記載の方法、デバイス、およびシステムは、(例えば、VP8、VP9、AV1などの他のビデオコーディング規格/フォーマットで使用されるような)他のイントラ予測モードに適用/使用され得る。
【0073】
イントラ予測は、ビデオシーケンスの同じピクチャーの空間的に隣接サンプル間の相関を利用して、ビデオ圧縮を実施し得る。インター予測は、ビデオ圧縮を実施するために使用され得る別のコーディングツールである。インター予測は、ビデオシーケンスの異なるピクチャーのサンプルブロック間の時間ドメインの相関を利用し得る。例えば、物体は、ビデオシーケンスの複数のピクチャーにわたって見ることができる。物体は、複数のピクチャーにわたって(例えば、いくらかの並進運動および/またはアフィン運動によって)移動するか、または静止したままであり得る。符号化される現在のピクチャーのサンプルの現在のブロックは、以前に復号化されたピクチャーのサンプルの対応するブロックを有し得る/関連付けられ得る。対応するサンプルのブロックは、サンプルの現在のブロックを正確に予測し得る。サンプルの対応するブロックは、例えば、両方のブロックで表される物体がブロックのそれぞれのピクチャーにわたって移動することに起因して、サンプルの現在のブロックから変位され得る。以前に復号化されたピクチャーは、基準ピクチャーであり得る。基準ピクチャー内の対応するサンプルのブロックは、動き補償予測のための基準ブロックであり得る。エンコーダーは、ブロックマッチング技術を使用して、物体の変位(または動き)を推定し、および/または基準ピクチャー内の基準ブロックを決定し得る。
【0074】
エンコーダーは、現在のブロックと現在のブロックに対する予測との間の差を決定し得る。エンコーダーは、例えば、現在のブロックに対する予測(例えば、インター予測を使用して)を決定/生成することに基づき/決定/生成した後に、差を決定し得る。差は、予測誤差および/または残差と呼んでもよい。次に、エンコーダーは、ビットストリーム、予測誤差、および/または他の関連する予測情報を記憶および/または送信(例えば、信号)し得る。予測誤差および/または他の関連する予測情報は、復号化または他のフォーマットの消費に使用され得る。デコーダーが、現在のブロックのサンプルを予測することによって(例えば、関連する予測情報を使用することによって)、かつ予測サンプルを予測誤差と組み合わせることによって、現在のブロックを復号化し得る。
【0075】
図13Aは、インター予測の例を示す。インター予測は、符号化される現在のピクチャー1302の現在のブロック1300に対して実施され得る。エンコーダー(例えば、
図2に示すエンコーダー200)は、インター予測を実行して、基準ピクチャー1306内の基準ブロック1304を決定および/または生成し得る。基準ブロック1304は、現在のブロック1300を予測するために使用され得る。基準ピクチャー(例えば、基準ピクチャー1306)は、エンコーダーおよびデコーダーで利用可能な事前復号化ピクチャーであり得る。以前の復号化されたピクチャーの可用性は、現在のブロック1300が符号化または復号化されるときに、以前の復号化されたピクチャーが復号化されたピクチャーバッファ内で利用可能かどうかに依存し得る/基づき得る。エンコーダーは、現在のブロック1300と類似している(または実質的に類似している)基準ブロックに対して一つまたは複数の基準ピクチャーを検索し得る。エンコーダーは、検索プロセス中に試験されたブロックから、最良に一致する基準ブロックを決定し得る。最良に一致する基準ブロックは、基準ブロック1304であり得る。エンコーダーは、基準ブロック1304が、一つまたは複数のコスト基準に基づき、最良に一致する基準ブロックであると決定し得る。一つまたは複数のコスト基準は、レート歪み基準(例えば、ラグランジアンレート歪みコスト)を含み得る。一つまたは複数のコスト基準は、基準ブロック1304の予測サンプルと現在のブロック1300の元のサンプルとの間の差(例えば、SSD、SAD、および/またはSATD)に基づいてもよい。
【0076】
エンコーダーは、基準領域1308内の基準ブロック1304を検索し得る。基準領域1308は、基準ピクチャー1306内の現在のブロック1300の併置位置(またはブロック)1310の周りに位置付けられ得る。併置されたブロック1310は、基準ピクチャー1306において、現在のピクチャー1302の現在のブロック1300と同じ位置を有し得る。基準領域1308は、検索範囲と呼んでもよい。基準領域1308は、基準ピクチャー1306の外側に少なくとも部分的に延在し得る。一定の境界延長部は、例えば、基準領域1308が基準ピクチャー1306の外側に延在する場合に使用され得る。一定の境界延長部は、基準ピクチャー1306の外側に延在する基準領域1308の一部分に隣接する、基準ピクチャー1306の行または列内のサンプルの値が、基準ピクチャー1306の外側のサンプル位置に使用され得るように使用され得る。基準領域1308内の潜在的な位置のサブセット、または全ての潜在的な位置は、基準ブロック1304について検索され得る。エンコーダーは、一つまたは複数の検索実装を利用して、基準ブロック1304を決定および/または生成し得る。例えば、エンコーダーは、現在のブロック1300に対する隣接ブロックの動き情報に基づき、候補検索位置のセットを決定し得る。
【0077】
一つまたは複数の基準ピクチャーは、インター予測中にエンコーダーによって検索されて、最良に一致する基準ブロックを決定および/または生成し得る。エンコーダーによって検索される基準ピクチャーは、一つまたは複数の基準ピクチャーリストに含まれ得る(例えば、追加され得る)。例えば、HEVCおよびVVCにおいて(および/または一つまたは複数の他の通信プロトコルにおいて)、二つの基準ピクチャーリスト(例えば、基準ピクチャーリスト0および基準ピクチャーリスト1)が使用され得る。基準ピクチャーリストは、一つまたは複数のピクチャーを含み得る。基準ブロック1304の基準ピクチャー1306は、基準ピクチャー1306を含む基準ピクチャーリストを指す基準インデックスによって示され得る。
【0078】
図13Bは、例示的な動きベクトルを示す。基準ブロック1304と現在のブロック1300との間の変位は、それぞれのピクチャーにわたる基準ブロック1304と現在のブロック1300との間の動きの推定として解釈され得る。変位は、動きベクトル1312によって表され得る。例えば、動きベクトル1312は、現在のブロック1300の位置に対する水平コンポーネント(MV
x)および垂直コンポーネント(MV
y)によって示され得る。動きベクトル(例えば、動きベクトル1312)は、小数または整数の解像度を有し得る。小数解像度を有する動きベクトルは、基準ピクチャー内の二つのサンプルの間に指し示して、現在のブロック1300の動きのより良い推定を提供し得る。例えば、動きベクトルは、1/2、1/4、1/8、1/16、1/32、または任意の他の分画サンプル解像度を有し得る。整数位置でのサンプル間の補間を使用して、例えば、動きベクトルが、基準ピクチャー内の非整数サンプル値を指す場合、基準ブロックおよびその対応するサンプルを分画位置で生成し得る。補間は、二つ以上のタップを有するフィルターによって実施され得る。
【0079】
エンコーダーは、基準ブロック1304と現在のブロック1300との間の差(例えば、対応するサンプル毎の差)を決定し得る。エンコーダーは、例えば、基準ブロック1304が、現在のブロック1300に対してインター予測を使用して決定および/または生成されたことに基づき/その後に、基準ブロック1304と現在のブロック1300との間の差を決定し得る。差は、予測誤差および/または残差と呼んでもよい。エンコーダーは、ビットストリーム、予測誤差および/または関連する動き情報内に/を介して、(例えば、信号)を記憶および/または送信し得る。予測誤差および/または関連する動き情報は、復号化(例えば、現在のブロック1300を復号化)および/または他の形態の消費に使用され得る。動き情報は、動きベクトル1312および/または基準インジケーター/インデックスを含み得る。基準インジケーターは、基準ピクチャーリスト内の基準ピクチャー1306を示し得る。動き情報は、動きベクトル1312の表示および/または基準インデックスの表示を含み得る。基準インデックスは、基準ピクチャーリスト内の基準ピクチャー1306を示し得る。デコーダーが、基準ブロック1304を決定および/または生成することによって、現在のブロック1300を復号化し得る。デコーダーが、例えば、動き情報に基づき、基準ブロック1304を決定および/または生成し得る。基準ブロック1304は、現在のブロック1300の予測に対応/を形成(例えば、考慮)し得る。デコーダーが、予測を予測誤差と組み合わせることに基づき、現在のブロック1300を復号化し得る。
【0080】
図13Aに示すようにインター予測は、現在のブロック1300の予測のソースとして、一つの基準ピクチャー1306を使用して実施され得る。単一のピクチャーを使用した現在のブロックの予測に基づくインター予測は、単予測と呼んでもよい。
【0081】
図14は、双予測の例を示す。現在のブロック1400に対する予測は、双予測を使用して、二つのピクチャーに基づいてもよい。双予測は、例えば、ビデオシーケンスが高速動作、カメラパニング、ズーム、および/またはシーン変化を含む場合に有用であり得る。双予測は、一つのシーンからフェードアウトを撮像するために有用であってもよく、または一つのシーンから別のシーンへフェードアウトを撮像するために有用であってもよく、二つのピクチャーは、異なるレベルの強度で同時に効果的に表示され得る。
【0082】
単予測および双予測のうちの一方または両方は、インター予測(例えば、エンコーダーおよび/またはデコーダー)を実施するために利用可能/使用され得る。特定のタイプのインター予測(例えば、ユニ予測および/または双予測)を実行することが、現在のブロック1400のスライスタイプに依存し得る。例えば、Pスライスについては、インター予測を実行するために単予測のみが利用可能/使用され得る。Bスライスについては、インター予測を実行するために、単予測または双予測のいずれかを使用し得る。エンコーダーは、例えば、エンコーダーが単予測を使用する場合、基準ピクチャーリスト0から、現在のブロック1400を予測するための基準ブロックを決定および/または生成し得る。エンコーダーは、基準ピクチャーリスト0から現在のブロック1400を予測するための第一の基準ブロックを決定および/または生成し、例えば、エンコーダーが双予測を使用する場合、基準ピクチャーリスト1から現在のブロック1400を予測するための第二の基準ブロックを決定および/または生成し得る。
【0083】
図14は、双予測を使用して実施されるインター予測の例を示す。二つの基準ブロック1402および1404を使用して、現在のブロック1400を予測し得る。基準ブロック1402は、基準ピクチャーリスト0または基準ピクチャーリスト1のうちの一つの基準ピクチャー内にあり得る。基準ブロック1404は、基準ピクチャーリスト0または基準ピクチャーリスト1のうちの別の一つの基準ピクチャー内にあり得る。
図14に示すように、基準ブロック1402は、現在のブロック1400の現在のピクチャーに先行する(例えば、時間的に)第一のピクチャー内にあってもよく、基準ブロック1402は、現在のブロック1400の現在のピクチャーに続く(例えば、時間的に)第二のピクチャー内にあり得る。第一のピクチャーは、ピクチャーオーダーカウント(POC)の観点から、現在のピクチャーに先行し得る。第二のピクチャーは、POCの観点から現在のピクチャーに続き得る。基準ピクチャーは、POCの観点から、現在のピクチャーに先行するか、または現在のピクチャーに続き得る。POCは、ピクチャーが出力される順序(例えば、復号化されたピクチャーバッファから)であり得る/を示し得る。POCは、ピクチャーが一般的に表示されるように意図される順序であり得る/を示し得る。出力されるピクチャーは、必ずしも表示され得ないが、異なる処理および/または消費(例えば、トランスコーディング)を受けてもよい。双予測を使用して/のために決定および/または生成された二つの基準ブロックは、同じ基準ピクチャーに対応し得る(例えば、含まれ得る)。基準ピクチャーは、例えば、二つの基準ブロックが同じ基準ピクチャーに対応する場合、基準ピクチャーリスト0および基準ピクチャーリスト1の両方に含まれ得る。
【0084】
構成可能な重みおよび/またはオフセット値が、一つまたは複数のインター予測基準ブロックに適用され得る。エンコーダーは、ピクチャーパラメーターセット(PPS)内のフラグを使用して、加重予測の使用を可能にし得る。エンコーダーは、現在のブロック1400のスライスセグメントヘッダー内の重み付けおよび/またはオフセットパラメーターを送信/シグナリングし得る。輝度コンポーネントおよび彩度コンポーネントについて、異なる重みおよび/またはオフセットパラメーターがシグナリングされ得る。
【0085】
エンコーダーは、インター予測を使用して、現在のブロック1400の基準ブロック1402および1404を決定および/または生成し得る。エンコーダーは、現在のブロック1400と基準ブロック1402および1404の各々との間の差を決定し得る。差異は、予測誤差または残差と呼んでもよい。エンコーダーは、ビットストリーム内に/を介して、予測誤差およびそれらのそれぞれの関連する動き情報を記憶および/または送信/シグナリングし得る。予測誤差およびそれらのそれぞれの関連する動き情報は、復号化または他の形態の消費に使用され得る。基準ブロック1402に対する動き情報は、動きベクトル1406および基準インジケーター/インデックスを含み得る。基準インジケーターは、基準ピクチャーリスト内の基準ブロック1402の基準ピクチャーを示し得る。基準ブロック1402に対する動き情報は、動きベクトル1406の表示および/または基準インデックスの表示を含み得る。基準インデックスは、基準ピクチャーリスト内の基準ブロック1402の基準ピクチャーを示し得る。
【0086】
基準ブロック1404に対する動き情報は、動きベクトル1408および/または基準インデックス/インジケーターを含み得る。基準インジケーターは、基準ピクチャーリスト内の基準ブロック1408の基準ピクチャーを示し得る。基準ブロック1404に対する動き情報は、動きベクトル1408の表示および/または基準インデックスの表示を含み得る。基準インデックスは、基準ピクチャーリスト内の基準ブロック1404の基準ピクチャーを示し得る。
【0087】
デコーダーが、基準ブロック1402および1404を決定および/または生成することによって、現在のブロック1400を復号化し得る。デコーダーが、例えば、基準ブロック1402および1404に対するそれぞれの動き情報に基づき、基準ブロック1402および1404を決定および/または生成し得る。基準ブロック1402および1404は、現在のブロック1400の予測に対応/を形成(例えば、考慮)し得る。デコーダーが、予測を予測誤差と組み合わせることに基づき、現在のブロックを復号化し得る。
【0088】
動き情報は、例えば、ビットストリーム(例えば、HEVC、VVC、および/または他のビデオコーディング規格/フォーマット/プロトコル)に/を介して格納および/または送信/シグナリングされる前に、予測的に符号化され得る。現在のブロックに対する動き情報は、現在のブロックに隣接する一つまたは複数のブロックの動き情報に基づき予測的に符号化され得る。隣接ブロックの動き情報は、現在のブロックに表される物体の動きが、多くの場合、隣接ブロック内の物体の動きと同じ(または類似している)ため、多くの場合、現在のブロックの動き情報と相関し得る。動き情報予測技術は、高度な動きベクトル予測(AMVP)およびインター予測ブロックマージを含み得る。
【0089】
エンコーダー(例えば、
図2に示すエンコーダー200)は、動きベクトルを符号化し得る。エンコーダーは、符号化される現在のブロックの動きベクトルと動きベクトル予測子(MVP)との間の差として、動きベクトルを(例えば、AMVPを使用して)符号化し得る。エンコーダーは、候補MVPのリストからMVPを決定/選択し得る。候補MVPは、現在のブロックの現在のピクチャーの隣接ブロックの以前に復号化された動きベクトルまたは他の基準ピクチャーの現在のブロックの併置位置またはその近くにあるブロックであってもよく、/に対応し得る。エンコーダーおよび/またはデコーダーが、候補MVPのリストを生成および/または決定し得る。
【0090】
エンコーダーは、候補MVPのリストからMVPを決定/選択し得る。エンコーダーは、ビットストリーム内に/を介して、選択されたMVPおよび動きベクトル差(MVD)の表示を送信/シグナリングし得る。エンコーダーは、インデックス/インジケーターを使用して、ビットストリーム内の選択されたMVPを示し得る。インデックスは、候補MVPのリスト内の選択されたMVPを示し得る。MVDは、現在のブロックの動きベクトルと選択されたMVPとの間の差に基づき決定/計算され得る。例えば、符号化される現在のブロックの位置に対する位置(例えば、水平コンポーネント(MV
x)および垂直コンポーネント(MV
y)によって表される)を示す動きベクトルについて、MVDは、次の二つのコンポーネントによって表され得る:MVD
xおよびMVD
y。MVD
xおよびMVD
yは、次のように決定/計算される:
【数15】
【数16】
MVD
xおよびMVD
yはそれぞれ、MVDの水平および垂直コンポーネントを表し得る。MVP
xおよびMVP
yはそれぞれ、MVPの水平コンポーネントおよび垂直コンポーネントを表し得る。デコーダー(例えば、
図3に示すデコーダー300)は、ビットストリームに示されるMVPにMVDを追加することによって、動きベクトルを復号化し得る。デコーダーが、基準ブロックを決定および/または生成することによって、現在のブロックを復号化し得る。デコーダーが、例えば、復号化された動きベクトルに基づき、基準ブロックを決定および/または生成し得る。基準ブロックは、現在のブロックの予測に対応/を形成(例えば、考慮)し得る。デコーダーが、予測を予測誤差と組み合わせることによって、現在のブロックを復号化し得る。
【0091】
AMVPに対する候補MVPのリスト(例えば、HEVC、VVC、および/または一つまたは複数の他の通信プロトコル)は、二つ以上の候補(例えば、候補AおよびB)を含み得る。候補AおよびBは、符号化される現在のブロックの五つの空間隣接ブロックから決定/導出される最大二つの空間候補MVP、二つの時間的、同一位置のブロックから決定/導出される一つの時間的候補MVP(例えば、二つの空間的候補MVPの両方が利用できない、または同一である場合)、またはゼロ動きベクトル候補MVP(例えば、空間候補MVPまたは時間的候補MVPの一方または両方が利用できない場合)を含み得る。他の量の空間候補MVP、空間隣接ブロック、時間候補MVP、および/または時間的、同一位置のブロックが、候補MVPのリストに使用され得る。
【0092】
図15Aは、現在のブロックに対する空間候補隣接ブロックを示す。例えば、五つ(または任意の他の数)の空間候補隣接ブロックが、符号化される現在のブロック1500に対して位置し得る。五つの空間候補隣接ブロックは、A
0、A
1、B
0、B
1、およびB
2であり得る。
図15Bは、現在のブロックに対する時間的、同一位置のブロックを示す。例えば、二つの(または任意の他の数)時間的、同一位置のブロックは、現在のブロック1500に対して位置し得る。二つの時間的、同一位置のブロックは、C
0およびC
1であり得る。二つの時間的、同一位置のブロックは、現在のブロック1500の現在のピクチャーとは異なり得る一つまたは複数の基準ピクチャー内にあり得る。
【0093】
エンコーダー(例えば、
図2に示すエンコーダー200)は、インター予測ブロックマージ(例えば、マージモード)を使用して、動きベクトルを符号化し得る。エンコーダー(例えば、マージモードを使用する)は、現在のブロックのインター予測のために、隣接ブロック(例えば、隣接ブロックA
0、A
1、B
0、B
1、およびB
2)の一つ)の同じ動き情報を再利用し得る。エンコーダー(例えば、マージモードを使用する)は、現在のブロックのインター予測のために、時間的、同一位置のブロック(例えば、時間的、同一位置のブロックC
0およびC
1のうちの一つ)の同じ動き情報を再利用し得る。MVDは、隣接ブロックまたは時間的、同一位置のブロックのものと同じ動き情報が、(例えば、エンコーダーおよび/またはデコーダーで)現在のブロックに使用され得るため、現在のブロックに対して送信(例えば、示され、シグナリング)される必要はない。MVDが現在のブロックに対して示される必要がないため、現在のブロックの動き情報を送信/シグナリングするためのシグナリングオーバーヘッドは、低減され得る。エンコーダーおよび/またはデコーダー(例えば、エンコーダーおよびデコーダーの両方)は、(例えば、AMVPと類似した様式で)現在のブロックの隣接ブロックまたは時間的、同一位置のブロックから、動き情報の候補リストを生成し得る。エンコーダーは、符号化される現在のブロックの動き情報を予測するために、候補リスト内の一つの隣接ブロックまたは一つの時間的、同一位置のブロックの動き情報を使用する(例えば、継承する)ことを決定し得る。エンコーダーは、ビットストリーム内に/を介して、候補リストから決定された動き情報の表示をシグナリング/送信し得る。例えば、エンコーダーは、インジケーター/インデックスをシグナリング/送信/送信し得る。インデックスは、候補動き情報のリスト内の決定された動き情報を示し得る。エンコーダーは、決定された動き情報を示すために、インデックスをシグナリング/送信し得る。
【0094】
(例えば、HEVC、VVC、または任意の他の符号化フォーマット/規格/プロトコル内)マージモードのための候補動き情報のリストは、(例えば、
図15Aに示すように)五つ(または任意の他の数)の空間隣接ブロックから導出/決定される最大四つ(または任意の他の数)の空間マージ候補、(例えば、
図15Bに示されるように)二つ(または任意の他の数)の時間的、同一位置のブロックから導出される、一つ(または任意の他の数)の時間的マージ候補、および/または双方予測候補およびゼロ動きベクトル候補を含む追加のマージ候補、を含んでもよい。マージモードに使用される空間隣接ブロックおよび時間的、同一位置のブロックは、AMVPに使用される空間隣接ブロックおよび時間的、同一位置のブロックと同じであり得る。
【0095】
インター予測は、本明細書に記載されるもの以外の他の方法およびバリアントで実施され得る。例えば、AMVPおよびマージモード以外の動き情報予測技術を使用し得る。本明細書のさまざまな実施例は、HEVCおよびVVCで使用されるものなどのインター予測モードに対応するが、本明細書に記載の方法、デバイス、およびシステムは、(例えば、VP8、VP9、AV1などの他のビデオコーディング規格/フォーマットに使用されるような)他のインター予測モードに適用/使用され得る。履歴ベースの動きベクトル予測(HMVP)、組み合わせられたイントラ/インター予測モード(CIIP)、および/または動きベクトル差(MMVD)とのマージモード(例えば、VVCに記載されるように)を実施/使用することができ、本開示の範囲内である。
【0096】
ブロックマッチングを使用して(例えば、インター予測において)、符号化される現在のブロックとは異なるピクチャーの基準ブロックを決定し得る。ブロックマッチングを使用して、符号化される現在のブロックのものと同じピクチャーの基準ブロックを決定することもできる。基準ブロックは、現在のブロックと同じピクチャーで、ブロックマッチングを使用して決定されると、多くの場合、現在のブロックを正確に予測しえない(例えば、カメラでキャプチャされたビデオの場合)。スクリーンビデオコンテンツに対する予測精度は、例えば、現在のブロックと同じピクチャーの基準ブロックが符号化に使用される場合、同様に影響を受け得ない。スクリーンコンテンツビデオは、例えば、コンピューター生成テキスト、グラフィック、アニメーションなどを含み得る。スクリーンビデオコンテンツは、同じピクチャー内に反復パターン(例えば、テキストおよびグラフィックの反復パターン)を含み得る(例えば、多くの場合含んでもよい)。基準ブロック(例えば、ブロックマッチングを使用して決定される)を使用することが、符号化される現在のブロックと同じピクチャーにおいて、スクリーンコンテンツビデオに対して効率的な圧縮を提供し得る。
【0097】
予測技術を(例えば、HEVC、VVC、および/または任意の他のコーディング規格/フォーマット/プロトコルにおいて)使用して、(例えば、スクリーンコンテンツビデオの)同じピクチャー内のサンプルのブロック間の相関関係を利用し得る。予測技術は、イントラブロックコピー(IBC)または現在のピクチャー基準(CPR)と呼んでもよい。エンコーダーは、変位ベクトル(例えば、ブロックベクトル(BV))を決定するために、(例えば、インター予測と類似の)ブロックマッチング技術を適用/使用し得る。BVは、現在のブロックの位置から、現在のブロックに最良に一致する基準ブロックの相対位置を示し得る(例えば、イントラブロック補償予測に従って)。例えば、基準ブロックの相対位置は、基準ブロックの左上隅(または任意の他の点/サンプル)の相対位置であり得る。BVは、現在のブロックから、現在のブロックと最良に一致する基準ブロックへの相対的変位を示し得る。エンコーダーは、検索プロセス中に試験されたブロックから(例えば、インター予測に使用されるものと類似した様式で)最良に一致する基準ブロックを決定し得る。エンコーダーは、一つまたは複数のコスト基準に基づき、基準ブロックが最良に一致する基準ブロックであると決定し得る。一つまたは複数のコスト基準は、レート歪み基準(例えば、ラグランジアンレート歪みコスト)を含み得る。一つまたは複数のコスト基準は、例えば、基準ブロックの予測サンプルと現在のブロックの元のサンプルとの間の一つまたは複数の差異(例えば、SSD、SAD、SATD、および/またはハッシュ関数に基づき決定される差異)に基づいてもよい。基準ブロックは、現在のピクチャーのサンプルの以前の復号化されたブロックに対応し/を含み得る。基準ブロックは、ループ内フィルターリング動作(例えば、非ブロック化および/またはSAWフィルターリング)によって処理される前に、現在のピクチャーのサンプルの復号化されたブロックを含み得る。
【0098】
図16は、符号化のためのICBの例を示す。
図16に示す例示的なIBCは、スクリーンコンテンツに対応し得る。それらの境界で始まる矢印を有する長方形の部分/断面は、符号化される現在のブロックであり得る。矢印が指す長方形の部分/断面は、現在のブロックを予測するための基準ブロックであり得る。
【0099】
基準ブロックは、現在のブロックについて、IBCについて決定および/または生成され得る。エンコーダーは、基準ブロックと現在のブロックとの間の差(例えば、対応するサンプル毎の差)を決定し得る。差は、予測誤差または残差と呼んでもよい。エンコーダーは、ビットストリーム内に/を介して、予測誤差および/または関連する予測情報を記憶および/または送信/シグナリングし得る。予測誤差および/または関連する予測情報は、復号化および/または他の形態の消費に使用され得る。予測情報は、BVを含んでもよい。予測情報は、BVの表示を含み得る。デコーダー(例えば、
図3に示すデコーダー300)は、基準ブロックを決定および/または生成することによって、現在のブロックを復号化することができる。デコーダーは、例えば予測情報(例えば、BV)に基づき、現在のブロックを決定および/または生成することができる。基準ブロックは、現在のブロックの予測に対応/を形成(例えば、考慮)し得る。デコーダーが、予測を予測誤差と組み合わせることによって、現在のブロックを復号化し得る。
【0100】
BVは、ビットストリームにおいて/を介して保存および/または送信/シグナリングされる前に、予測的に符号化され得る(例えば、HEVC、VVC、および/または任意の他のコーディング規格/フォーマット/プロトコルにおいて)。現在のブロックに対するBVは、現在のブロックに隣接するBVブロックに基づき予測的に符号化され得る。例えば、エンコーダーは、マージモード(例えば、インター予測について本明細書に記載されるものと同様の様式)、AMVP(例えば、インター予測について本明細書に記載されるもの)、またはAMVPと同様の技術を使用して、BVを予測的に符号化し得る。AMVPと同様の技術は、BV予測および差分符号化(またはIBCに対するAMVP)であり得る。
【0101】
BV予測および符号化を行うエンコーダー(例えば、
図2に示すエンコーダー200)は、符号化される現在のブロックのBVとBV予測子(BVP)との間の差としてBVを符号化し得る。エンコーダーは、候補BVPのリストからBVPを選択/決定し得る。候補BVPが、現在のピクチャー中の現在のブロックに隣接するブロックの以前に復号化されたBVを含んでも/対応し得る。エンコーダーおよび/またはデコーダーが、候補BVPのリストを生成または決定し得る。
【0102】
エンコーダーは、ビットストリーム内に/を介して、選択されたBVPおよびBV差(BVD)の表示を送信/シグナリングし得る。エンコーダーは、インデックス/インジケーターを使用して、ビットストリーム内の選択されたBVPを示し得る。インデックスは、候補BVPのリスト内の選択されたBVPを示し得る。BVDは、現在のブロックのBVと選択されたBVPとの間の差に基づき決定/算出され得る。例えば、符号化される現在のブロックの位置に対する水平コンポーネント(BV
x)および垂直コンポーネント(BV
y)によって表されるBVについては、BVDは、次の二つのコンポーネントによって表され得る:BVD
xおよびBVD
y。BVD
xおよびBVD
yは、次のように決定/計算される:
【数17】
【数18】
BVD
xおよびBVD
yはそれぞれ、BVDの水平コンポーネントおよび垂直コンポーネントを表し得る。BVP
xおよびBVP
yはそれぞれ、BVPの水平および垂直コンポーネントを表し得る。デコーダー(例えば、
図3に示すデコーダー300)は、ビットストリーム内に/を介して示されるBVPにBVDを付加することによって、BVを復号化し得る。デコーダーが、基準ブロックを決定および/または生成することによって、現在のブロックを復号化し得る。デコーダーが、例えば、復号化されたBVに基づき、基準ブロックを決定および/または生成し得る。基準ブロックは、現在のブロックの予測に対応/を形成(例えば、考慮)し得る。デコーダーが、予測を予測誤差と組み合わせることによって、現在のブロックを復号化し得る。
【0103】
隣接ブロックと同じBVが現在のブロックに使用される場合があり(例えば、マージモードの場合)、現在のブロックに対してBVDを個別にシグナリング/送信する必要はない。隣接ブロックの復号化されたBVに対応し得るBVP(候補BVPにおいて)は、それ自体が現在のブロックのBVとして使用され得る。BVDを送信しないことは、シグナリングオーバーヘッドを低減し得る。
【0104】
(例えば、HEVC、VVC、および/または任意の他のコーディング規格/フォーマット/プロトコル内の)候補BVPのリストは、二つ(またはそれ以上)の候補を含んでもよい。候補は、候補AおよびBを含んでもよい。候補AおよびBは、符号化される現在のブロックの五つ(または任意の他の数)の空間隣接ブロックから決定/導出される、最大二つ(または任意の他の数)の空間候補BVP、および/または(例えば、空間隣接候補が利用できない場合)最後の二つ(または任意の他の数)の符号化されたBVのうちの一つまたは複数を含んでもよい。空間隣接候補は、例えば、隣接ブロックがイントラ予測またはインター予測を使用して符号化される場合、利用でき得ない。IBCを使用して符号化される、現在のブロックに対する、空間候補隣接ブロックの位置は、インター予測における動きベクトルの符号化に使用される空間候補隣接ブロックと類似した様式で例示され得る(例えば、
図15Aに示すように)。例えば、IBCの五つの空間候補隣接ブロックは、それぞれA
0、A
1、B
0、B
1、およびB
2と示され得る。
【0105】
図2に示すエンコーダー200などのエンコーダーは、マージモードに従ってBVをコードし得る。エンコーダーは、マージモードを使用して、現在のブロックのIBC予測に、隣接ブロックまたは別のブロックの同じBVを再利用できる。BVDは、隣接ブロック(または別のブロック)のBVが、現在のブロックのBVとして使用されてもよく、および/または候補BVPのリスト中に存在するBVPとして直接示され得るため、シグナリングされる必要はない。BVDをシグナリングしないと、現在のブロックのBVをシグナリングするためのシグナリングオーバーヘッドが削減され得る。
【0106】
エンコーダーおよび/またはデコーダーは、隣接ブロックまたは他のブロックから現在のブロックのBVPの候補リストを生成することができる(例えば、BV予測と差分コーディング、またはIBCのAMVPと同様の方法で)。エンコーダーは、候補リスト内のBVPの一つを、符号化される現在のブロックのBVとして使用することを決定できる。エンコーダーは、候補BVPのリストから決定されたBVPの表示をビットストリームで送信し得る。例えば、エンコーダーは、決定されたBVを示すために、候補BVPのリストを参照する(例えば、リストを指す)インジケーター/インデックスを信号で送信し得る。デコーダーは、マージモードのエンコーダーと同じ方法で候補BVPのリストを生成(例えば、決定または構築)できる。BVは、候補BVPのリスト内のBVPを示すインデックスの形式で、デコーダーへのビットストリームで示され得る。デコーダーは、例えば、決定されたBVを使用して、基準ブロックを決定および/または生成することによって、現在のブロックを復号化することができる。基準ブロックは、現在のブロックの予測に対応し得る。デコーダーは、決定されたBVを使用して予測と予測誤差を組み合わせて、現在のブロックを復号化し得る。
【0107】
マージモード(例えば、HEVC、VC、および/または任意の他のコーディング標準/フォーマット/プロトコル)に対する候補BVPのリストは、最大四つ(または任意の他の量)の空間マージ候補を含んでもよい。空間マージ候補は、マージモードで使用される五個(または任意の他の量)の空間隣接ブロック、またはIBCに対するAMVPおよび/または一つまたは複数の追加の履歴ベースのBVから導出され得る。
【0108】
候補BVPのリスト(例えば、AMVP、マージモード、または任意の他の動作モードに対して、エンコーダーおよび/またはデコーダーによって生成される場合、)は、少なくとも一部の状況では、十分な量の候補BVPを含み得ない。例えば、不十分な量の候補BVPが、一つまたは複数のソース(例えば、隣接ブロックおよび/または履歴ベースのBVのBV情報)に基づき、候補BVPのリストに追加されてもよく、またはそうでなければ利用可能にされ得る。候補BVPが、例えば、隣接ブロックおよび/または他のブロックが、イントラ予測またはインター予測を使用してコード化され得るため、一つまたは複数のソースから利用でき得ない。エンコーダーおよびデコーダーは、候補BVPのリストを、一つまたは複数のゼロ候補BVPでパッドし得る(例えば、候補BVPの数量がリストを充填するのに不十分である場合)。ゼロ候補BVPが、水平コンポーネントおよび垂直コンポーネントの両方がゼロに等しいBVPであり得る。
【0109】
IBCを使用してコード化された現在のブロックについて、BVは、現在のブロックの位置から、IBC基準領域内の基準ブロックの位置までの変位を示すように制約され得る(例えば、
図17A~17C、18A、および18Bを参照してさらに示されるように)。IBC基準領域は、以前に符号化/復号化され、従って、現在のブロックを予測するためにエンコーダー/デコーダーハードウェアに容易に利用可能であった基準ブロックを含み得る。IBC基準領域は、一般に、IBC基準領域内のBVが、現在のブロックの位置から、部分的にも現在のブロックと重複しない基準ブロックの位置への変位を示すように決定され得る。ゼロ候補BVP(例えば、水平および垂直コンポーネントの両方がゼロに等しい)は、現在のブロックから水平および垂直方向の両方におけるゼロ変位を示し、現在のブロックと完全に重複する基準ブロックの位置を指す。現在のブロックと重複する基準ブロックは、少なくとも部分的に以前に符号化または復号化されていない(従って、エンコーダーまたはデコーダーハードウェアには利用できない)ため、ゼロ候補BVPが、ICBを使用してコードまたは復号化される現在のブロックに対するBVの良好な予測を提供しえない。現在のブロックに対するBVの不正確な予測は、BVとBVPの間のBVDをシグナリングする/示すために、より大量のビットを必要とし得る。ゼロ候補BVPが、ゼロ候補BVPが現在のブロックの位置からIBC基準領域内の基準ブロックの位置への変位を示すことができないため、マージモード動作のためにBVとして使用され得ない。
【0110】
本明細書のさまざまな実施例は、一つまたは複数の候補BVPを決定することに関する。一つまたは複数の候補BVPが、候補BVPのリストをパディングするために使用され得る。一つまたは複数の候補BVPを決定することが、現在のブロックのIBC基準領域に基づいてもよい。候補BVP(例えば、パディングに使用される)は、現在のブロックのIBC基準領域内の位置を示し得る。例えば、候補BVPが、現在のブロックからIBC基準領域内の基準ブロックの位置までの変位を示し得る。一つまたは複数の候補BVPが、候補BVPのリストに追加され得る。候補BVPのリストを使用して、現在のブロックに対するBVを示し、決定し、および/または予測し得る。候補BVPのリストに、一つまたは複数の候補BVPを追加(例えば、パディング)することにより、より正確なBV予測(例えば、BV予測および差分コーディングまたはIBC動作のためのAMVP)が可能となり、および/またはマージモードでの一つまたは複数の候補BVP(例えば、BVとして)の使用が可能となり得る。より正確なBV予測は、BVD表示に必要なシグナリングオーバーヘッドを低減し得る。マージモードでの一つまたは複数の候補BVPの使用を可能にすることが、より広範な候補BVPの利用可能性をもたらしてもよく、これは結果として、現在のブロックのより正確な予測をもたらし得る。
【0111】
図17A~17Cは、候補BVP決定の例を示す。エンコーダー(例えば、
図2に示すエンコーダー200)またはデコーダー(例えば、
図3に示すデコーダー300)は、IBCを使用して、CTU1702内の現在のブロック1700を符号化または復号化する。エンコーダーおよびデコーダーは、本明細書で説明されるように、IBCを使用して現在のブロック1700を符号化または復号化できる。IBCを使用するエンコーダーは、現在のブロック1700のものと同じ、現在のピクチャーの基準ブロックを検索し得る。現在のピクチャーの一部のみが、基準ブロックを検索するために利用可能であり得る。例えば、現在のブロック1700のエンコード前に復号化された現在のピクチャーの部分のみが、基準ブロックの検索に使用でき得る(例えば、デコーダーと同じチップ上のローカルメモリーに格納されるため)。基準ブロックを検索するために利用可能な現在のピクチャーの一部は、IBC基準領域であり得る。現在のブロック1700の符号化前に復号化された現在のピクチャーの一部のみを検索することが、符号化および復号化システムが同一の結果を生成し得るが、IBC基準領域を制限し得ることを確実にし得る。
【0112】
ブロックは、特定の順序でスキャンされ得る。ブロックは、zスキャンを使用して、左から右、上から下へと(例えば、HEVC、VVC、および/または他のコーディング規格/フォーマット/プロトコルにおいて)スキャンされて、符号化/復号化のためのシーケンス順序を形成し得る。CTU 1702の左側および上にあるCTU、およびCTU 1704内の現在のブロック1700の左側および上にあるブロックは、現在のブロック1700を予測するための基準ブロックを決定するための例示的なIBC基準領域1706を形成し得る。符号化/復号化のための異なるシーケンス順序および/またはピクチャー分割方法は、他のビデオエンコーダー/デコーダーに使用され得る。異なるシーケンス順序および/またはピクチャー分割方法を使用することが、それに応じて、IBC基準領域1706を変更し得る。
【0113】
IBC基準領域1706は、有効な基準ブロック(例えば、以前に復号化され、同じCTUまたはビデオフレーム内にある基準ブロック)の位置を表し得る。IBC基準領域1706は、有効な基準ブロックとして使用できるブロックの位置を表し得る。IBC基準領域1706の外側の、および/または現在のブロックと重複するブロックは、基準ブロックとして使用され得ない。IBC基準領域1706(例えば、影付きで示されるように)は、現在のブロック1700の符号化/復号化/予測に使用され得る基準ブロックの有効な場所/位置の形態で定義/表され得る。基準ブロックの位置は、基準ブロックの左上隅の場所/位置として定義され得る。左上隅が、IBC基準領域1706の第一の境界(例えば、水平境界)の下にあり、かつ第二の境界(例えば、垂直境界)の右にある基準ブロックは、少なくとも部分的にIBC基準領域1706の外側であってもよく、および/または現在のブロック1700と一致し得る(例えば、部分的または完全に重なり合う)。左上隅が、IBC基準領域1706の第一の境界(例えば、水平境界)より下にあり、第二の境界(例えば、垂直境界)より右側にある基準ブロックは、IBC基準領域1706の外側にあるとみなされ得る。左上隅が、IBC基準領域1706の第一の境界(例えば、水平境界)上(または上方)にあり、および/または第二の境界(例えば、垂直境界)上(または左)にある基準ブロックは、IBC基準領域1706の内側に位置するとみなされ得る。水平境界および垂直境界は、現在のブロック1700に最も近い、IBC基準領域1706の境界であり得る。基準ブロックの位置(例えば、基準ブロックの左上隅)は、BVを使用して、現在のブロック1700を基準として定義できる。
【0114】
一つまたは複数の基準領域制約(例えば、符号化/復号化シーケンス順序に加えて)は、IBC基準領域1706上に配置され得る。例えば、IBC基準領域1706は、スライス境界、タイル境界、波面並列処理(WPP)、および/または現在のブロック1700を予測するための基準サンプルを格納するための限られたメモリー(例えば、エンコーダーで、またはデコーダーで)に基づき制約され得る。タイルは、異なるタイルのCTU間のコーディング依存性が許容されないように、CTUの長方形領域にピクチャーを柔軟に細分するためのピクチャー分割プロセスの一部として使用され得る。WPPは、ピクチャーをCTU行に分割するために、ピクチャー分割プロセスの一部として同様に使用され得る。CTU行への分割は、異なる分割のCTU間の依存性が許可されないようなものであり得る。タイルまたはWPPの使用は、ピクチャー分割の並列処理を可能にし得る。基準サンプルを保存するためのメモリーが限られていること、および/または並列処理アプローチの一つが原因で、CTU 1702の左側および上にある一つまたは複数のCTUがIBC基準領域1706の一部になり得ない。
【0115】
IBC基準領域1706は、IBCに基づき現在のブロック1700を符号化するために決定された任意のBVが、現在のブロック1700の位置から、現在のブロック1700と(部分的にでも)重複しない基準ブロックの位置への変位を示すように制約され得る。基準ブロックが現在のブロック1700と(例えば、完全にまたは部分的に)重複するべきではないという制約は、現在のブロック1700とIBC基準領域1706との間の逆さまのL字形状のギャップをもたらし得る(例えば、
図17A)。L字型のギャップの寸法は、現在のブロックの幅(例えば、cbWidth)と現在のブロックの高さ(例えば、cbHeight)の関数として表現できる。L字型のギャップは、現在のブロック1700の左側で(cbWidth-1)の幅、現在のブロック1700の上側でcbHeight-1の長さを有し得る。
【0116】
エンコーダーは、ブロックマッチング技術を使用/適用して、BVを決定し得る。BVは、現在のブロック1700の位置からIBC基準領域1706内の基準ブロックの位置までの相対的な変位を示し得る。基準ブロックは、(例えば、イントラブロック補償予測に従って)現在のブロック1700と最良に合致するブロックであり得る。IBC基準領域1706は、BVに適用できる制約(例えば、エンコーダーによって選択される)であり得る。BVは、IBC基準領域1706によって制約され、現在のブロック1700の位置からIBC基準領域1706内にある基準ブロックの位置までの変位を示し得る。現在のブロック1700および基準ブロックの両方の位置は、それらのそれぞれの左上サンプルの位置に基づき決定され得る。
【0117】
エンコーダーは、検索プロセス中に試験されるブロック(例えば、IBC基準領域1706内の位置で)の中から、最良に一致する基準ブロックを決定し得る。エンコーダーは、一つまたは複数のコスト基準が、レート歪み基準(例えば、ラグランジアンレート歪みコスト)を含み得るため、基準ブロックが、一つまたは複数のコスト基準に基づき、最良に一致する基準ブロックであり得ると決定し得る。一つまたは複数のコスト基準は、例えば、基準ブロックの予測サンプルと現在のブロック1700の元のサンプルとの間の一つまたは複数の差異(例えば、SSD、SAD、SATD、および/またはハッシュ関数に基づき決定される差異のうちの一つまたは複数)に基づいてもよい。基準ブロックは、ループ内フィルターリング動作(例えば、非ブロック化および/またはSAWフィルターリング)によって処理される前に、現在のピクチャーの復号化された(および/または再構成される)サンプルを含み得る。
【0118】
エンコーダーは、現在のブロック1700と基準ブロックとの間の差(例えば、対応するサンプル毎の差)を決定および/または使用し得る。差は、予測誤差または残差と呼んでもよい。エンコーダーは、ビットストリーム内に/を介して、復号化のための予測誤差および関連する予測情報を記憶および/または送信/シグナリングし得る。
【0119】
エンコーダーおよび/またはデコーダーが、BVを予測的に符号化するための候補BVPのリストを決定し得る。BVは、現在のブロック1700から基準ブロックまでの変位を示し得る。基準ブロックは、IBCに従って現在のブロック1700を予測するために使用できる。エンコーダーおよび/またはデコーダーが、複数のソースに由来する候補BVPから候補BVPのリストを決定/構築し得る。候補BVPが、現在のブロック1700の空間的に隣接ブロック、現在のブロック1700の時間的に共存するブロック、および履歴ベースのBVのIBC情報(例えば、BV)に基づき決定され得る。エンコーダーおよび/またはデコーダーが、IBCまたはマージモードにAMVPに基づき、BVを予測的に符号化するための候補BVPのリストを決定し得る。
【0120】
候補BVPのリスト(例えば、AMVP、マージモード、または任意の他の動作モードに対して、エンコーダーおよび/またはデコーダーによって生成される場合、)は、少なくとも一部の状況では、十分な量の候補BVPを含み得ない。例えば、不十分な量の候補BVPが、一つまたは複数のソースに基づき(例えば、空間的に隣接ブロック、時間的に共存するブロック、および/または履歴ベースのBVのBV情報に基づき)、候補BVPのリストに追加されてもよく、またはそうでなければ利用可能にされ得る。候補BVPが、例えば、隣接ブロックおよび/または他のブロックが、イントラ予測またはインター予測を使用してコード化され得るため、一つまたは複数のソースから利用でき得ない。エンコーダーおよびデコーダーは、候補BVPのリストを一つまたは複数のゼロ候補BVPでパッドし得る。ゼロ候補BVPが、水平および垂直コンポーネント(例えば、BVPxおよびBVPy)の両方がゼロに等しいBVPであり得る。
【0121】
ゼロ候補BVPが、現在のブロック1700の位置から、IBC基準1706内にある基準ブロックの位置への変位を示さないため(例えば、それらを不正確またはアクセス不能にする)、候補BVPとしての使用には理想的ではあり得ない。ゼロ候補BVP(例えば、水平および垂直コンポーネントの両方がゼロに等しい)は、現在のブロック1700からの水平方向および垂直方向の両方におけるゼロ変位を示し、現在のブロック1700と完全に重複する基準ブロックの位置を指す。ゼロ候補BVPが、基準ブロックが現在のブロック1700と完全に重複するため、現在のブロック1700(例えば、IBCを使用してコードされる)に対するBVの良好な予測を提供し得ない。現在のブロックに対するBVの不正確な予測は、IBCモード動作のためのAMVPに対するBVとBVPとの間のBVDをシグナリングする/示すために、より大量のビットを必要とし得る。ゼロ候補BVPが、ゼロ候補BVPが現在のブロックの位置からIBC基準領域内の基準ブロックの位置への変位を示すことができないため、マージモード動作のためにBVとして使用され得ない。
【0122】
エンコーダーおよび/またはデコーダーは、例えば、候補BVPのリスト中の候補BVPの数/量が所与の値(例えば、閾値)未満であることに基づき/それに応答して、一つまたは複数の(例えば、追加の)候補BVPを決定し得る。例えば、エンコーダーおよび/またはデコーダーは、候補BVPのリストが、候補BVPの閾値量/数を含むかどうかを決定し得る。エンコーダーおよび/またはデコーダーは、例えば、候補BVPのリスト中の候補BVPの量/数が、候補BVPの閾値量/数(例えば、2、4、6など)未満であると決定することに基づき/それに応答して、一つまたは複数の追加の候補BVPを決定/生成し得る。エンコーダーおよび/またはデコーダーは、現在のブロック1700のIBC基準領域1706に基づき、一つまたは複数の追加の候補BVPを決定/生成し得る。エンコーダーおよび/またはデコーダーは、一つまたは複数の追加の候補BVPが、現在のブロック1700の位置からIBC基準領域1700内の基準ブロックの位置への変位を示すように、IBC基準領域1706に基づき一つまたは複数の追加の候補BVPを決定/生成し得る。現在のブロック1700および基準ブロックの両方の位置は、それらのそれぞれの左上サンプルの位置に基づき決定され得る。エンコーダーおよび/またはデコーダーは、例えば、候補BVPのリスト中の非ゼロ候補BVPの数/量が所与の値(例えば、閾値)未満であることに基づき/それに応答して、一つまたは複数の候補BVPを決定し得る。
【0123】
エンコーダーおよび/またはデコーダーは、現在のブロック1700からIBC基準領域1706の境界(例えば、境界線)への変位を示す、一つまたは複数の追加の候補BVPのうちの少なくとも一つの候補BVPを生成し得る。エンコーダーおよび/またはデコーダーは、現在のブロック1700からIBC基準領域1706の非境界への変位を示す、一つまたは複数の候補BVPのうちの少なくとも一つの候補BVPを生成し得る。現在のブロック1700の位置は、CTU1702の左上隅のCTU座標系の原点(0、0)に対する(例えば、写真の左上隅のピクチャー座標系の原点(0、0)に対する)、その左上サンプル(cbX、cbY)の位置/座標によって与えられてもよい。正の方向は、水平x軸に沿って右方向になる。xの値が増加すると、サンプル位置は正の水平方向にさらに右に移動し得る。正方向は、垂直y軸に沿って下向きである。サンプル位置は、yの値が増加するにつれて、正の垂直方向にさらに下方に移動し得る。上記のCTU座標系は単に例示的であり、他の実施例では、異なる原点、軸、および/または方向プロトコルが使用され得る。
【0124】
エンコーダーおよび/またはデコーダーは、一つまたは複数の候補BVPのうちの少なくとも一つの候補BVP1708を生成して、-cbWidthおよび0の水平方向の変位および垂直方向の変位(例えば、現在のブロックの位置から)をそれぞれ示し得る。エンコーダーおよび/またはデコーダーは、例えば、IBC基準領域1706の左縁の水平位置(例えば、x座標)がcbX-cbWidth以下であること(例えば、cbXが現在のブロック1700の水平位置であり、cbWidthが現在のブロック1700の幅である)に基づき、少なくとも一つの候補BVP1708を生成し得る。左縁は、例えば、IBC基準領域1706が二つ以上の左縁を含む場合、現在のブロック1700に最も近いIBC基準領域1706の左縁であり得る。IBC基準領域1706の左縁は、現在のブロック1700の左に位置付けられる、IBC基準領域1706の垂直縁であり得る。
図17Aにおいて、IBC基準領域1706の左縁の水平位置は、cbX-cbWidth以下であり得る。候補BVP1708は、生成され、候補BVPのリストに追加され得る。
【0125】
図17Bおよび17Cは、代替的なIBC基準領域1706を示す。
図17Bにおいて、IBC基準領域1706の左縁の水平位置は、cbX-cbWidth以上であり得る。
図17Bにおいて、IBC基準領域1706の左縁の水平位置は、cbX-cbWidthよりも大きい、0であるとみなされ得る。BVP1708は、例えば、IBC基準領域1706の左縁の水平位置がcbX-cbWidthより大きいことに基づき、
図17Bに示す例では、生成され得ない。
図17Cにおいて、IBC基準領域1706の左縁の水平位置は、cbX-cbWidth以下であり得る。BVP1708は、例えば、IBC基準領域1706の左縁の水平位置がcbX-cbWidth以下であることに基づき、
図17Cに示す例では、生成され、候補BVPのリストに追加され得る。
【0126】
エンコーダーおよび/またはデコーダーは、
図17Bに示すように、一つまたは複数の候補BVPのうちの少なくとも一つの候補BVP1710を生成して、0および-cbHeightの現在のブロックの位置から、それぞれ水平方向の変位および垂直方向の変位を示し得る。エンコーダーおよび/またはデコーダーは、例えば、IBC基準領域1706の上縁の垂直位置(例えば、y座標)がcbY-cbHeight以下であること(例えば、cbYが現在のブロック1700の垂直位置であり、cbHeightが現在のブロック1700の高さである)に基づき、少なくとも一つの候補BVP1710を生成し得る。上縁は、例えば、IBC基準領域1706が二つ以上の上縁を含む場合、現在のブロック1700に最も近いIBC基準領域1706の上縁であり得る。IBC基準領域1706の上縁は、現在のブロック1700の上方に位置付けられるIBC基準領域1706の水平縁であり得る。
図17Aにおいて、IBC基準領域1706の上縁の垂直位置は、cbY-cbHeight以下であり得る。候補BVP1710が生成され、候補BVPのリストに追加され得る。
【0127】
図17Bにおいて、IBC基準領域1706の上縁の垂直位置は、cbY-cbHeight以下であり得る。BVP1710は、例えば、IBC基準領域1706の上縁の垂直位置がcbY-cbHeight以下であることに基づき、候補BVPのリストに生成および追加され得る。
図17Cにおいて、IBC基準領域1706の上縁の垂直位置は、cbY-cbHeight以上であり得る。
図17Cにおいて、IBC基準領域1706の上縁の垂直位置は、cbY-cbHeightよりも大きい0であるとみなされ得る。BVP1710は、例えば、IBC基準領域1706の上縁の垂直位置がcbY-cbHeightよりも大きいことに基づき、
図17Cに示す例では、生成され得ない。
【0128】
エンコーダーおよび/またはデコーダーは、一つまたは複数の候補BVPのうちの少なくとも一つの候補BVP1712を生成して、-cbWidthおよび-cbHeightの、それぞれ、現在のブロック1700の位置からの水平変位および垂直方向の変位を示し得る。エンコーダーおよび/またはデコーダーは、例えば、IBC基準領域1706の左縁の水平位置(x座標)がcbX-cbWidth以下であること、およびIBC基準領域1706の上縁の垂直位置(y座標)がcbY-cbHeight以下であることに基づき、現在のブロック1700の位置から、-cbWidthおよび-cbHeightの水平および垂直方向の変位を示すために、少なくとも一つの候補BVP1712を生成し得る。
図17Aにおいて、IBC基準領域1706の左縁の水平位置(x座標)は、cbX-cbWidth以下であってもよく、IBC基準領域1706の上縁の垂直位置(y座標)は、cbY-cbHeight以下であり得る。候補BVP1712が生成されてもよく、候補BVPのリストに追加され得る。
図17Bおよび17Cは、代替的なIBC基準領域1706を示す。
図17Bにおいて、IBC基準領域1706の上縁の垂直位置(y座標)は、cbY-cbHeight以下であり得るが、IBC基準領域1706の左縁の水平位置(x座標)は、より大きなcbX-cbWidthであり得る。
図17Cでは、IBC基準領域1706の左縁の水平位置(x座標)は、cbX-cbWidth以下であり得るが、IBC基準領域1706の上縁の垂直位置(y座標)は、cbY-cbHeight以上であり得る。BVP1712は、
図17Bおよび17Cのどちらかにおいて、二つの条件のうちの少なくとも一つが満たされていないことに基づく。
【0129】
エンコーダーおよび/またはデコーダーは、一つまたは複数の候補BVPのうちの少なくとも一つの候補BVP1714を生成して、-cbXおよび-cbHeightの、それぞれ、現在のブロック1700の位置からの水平方向の変位および垂直方向の変位を示し得る。エンコーダーおよび/またはデコーダーは、例えば、IBC基準領域1706の上縁の少なくとも垂直位置(y座標)がcbY-cbHeight以下であることに基づき、現在のブロック1700の位置から、-cbXおよび-cbHeightの水平方向の変位および垂直方向の変位を示すための少なくとも一つの候補BVP1714を生成し得る。BVP1714は、例えば、IBC基準領域1706の上縁の垂直位置(y座標)がcbY-cbHeight以下であることに基づき、
図17Aの例では、生成され得る。
図17Bおよび17Cは、代替的なIBC基準領域1706を示す。BVP1714は、例えば、IBC基準領域1706の上縁の垂直位置(y座標)がcbY-cbHeight以下であることに基づき、
図17Bの例では、生成され、候補BVPのリストに追加され得る。BVP1714は、例えば、IBC基準領域1706の上縁の垂直位置(y座標)がcbY-cbHeightよりも大きいことに基づき、
図17Cの例では、生成され得ない。
【0130】
エンコーダーおよび/またはデコーダーは、一つまたは複数の候補BVPのうちの少なくとも一つの候補BVP1716を生成して、-cbWidthおよび-cbYそれぞれの現在のブロックの位置からの水平方向の変位および垂直方向の変位を示し得る。エンコーダーおよび/またはデコーダーは、例えば、IBC基準領域1706の左縁の少なくとも水平位置(x座標)がcbX-cbWidth以下であることに基づき、現在のブロックの位置から、-cbWidthおよび-cbYの水平方向の変位および垂直方向の変位を示すために、少なくとも一つの候補BVP1716を生成し得る。BVP1716は、例えば、IBC基準領域1706の左縁の水平位置(x座標)が、cbX-cbWidth以下であることに基づき、
図17Aの例では、生成され得る。
図17Bおよび17Cは、代替的なIBC基準領域1706を示す。BVP1716は、例えば、IBC基準領域1706の左縁の水平位置(x座標)がcbX-cbWidthよりも大きいことに基づき、
図17Bの例では、生成され得ない。BVP1716は、例えば、IBC基準領域1706の左縁の水平位置(x座標)がcbX-cbWidth以下であることに基づき、
図17Cの例では、生成され、候補BVPのリストに追加され得る。
【0131】
BVP候補1708~1716は、例えば、候補BVPのリストが所与の値/閾値(例えば、2、4、6など)と等しくなるまで、候補BVPのリストに(例えば、漸増的に)追加され得る。所与の値は、候補BVPのリストが満杯であることを示し得る。例えば、BVP候補1708~1716は、候補BVPのリストが満杯になるまで、候補BVPのリストに追加するために順次チェックされ得る。BVP候補1708~1716は、候補BVPのリストに追加するために異なる順序でチェックされ得る。BVP候補1708~1716のうちの一つまたは複数は、一つまたは複数の条件(例えば、本明細書に記載される)が真であることに基づき、候補BVPのリストに追加され得る。エンコーダーおよびデコーダーは、候補BVPのリストを使用して、本明細書に記載される現在のブロック1700を符号化するために使用されるBVを(例えば、エンコーダーおよび/またはデコーダーで)示し、予測し、および/または決定し得る。BVP候補1708~1716は、例えば、一つまたは複数のゼロ候補BVPを置換するために、候補BVPのリストに(例えば、漸増的に)追加され得る。
【0132】
図17A~Cは、IBC基準領域1706の境界(例えば、境界線)上にある候補BVPのリストをパッドするための追加の候補BVPのみを示し、他の実施例では、一つまたは複数の追加の候補BVPを使用して、候補BVPのリストをパッドし得る。一つまたは複数の追加の候補BVPが、IBC基準領域1706内(例えば、IBC基準領域1706の境界上にない)であり得る(例えば、位置を示し得る)。追加の候補BVPが、IBC基準領域1706のエッジ間または二つの境界内に分布するように決定され得る。
【0133】
図17A~17Cに示すIBC基準領域1706は単なる例示であり、IBC基準領域はIBC基準領域1706と異なっていてもよい。17A~17Cに関して本明細書で説明される方法、デバイス、およびシステムは、IBC基準領域1706とは異なるIBC基準領域に使用/適用することができる。例えば、IBC基準領域1706は、近似IBC基準領域によって置換され得る。近似IBC基準領域は、真のIBC基準領域(すなわち、IBC基準領域1706)を完全に包含し得る。例えば、近似IBC基準領域は、
図17A~17Cを参照して、議論される方法に使用され得る。近似IBC基準領域は、長方形の形状であってもよく(または任意の他の形状に対応し得る)、IBC基準領域1706を完全にまたは部分的に包含し得る。
【0134】
図17A~17Cに示すように、IBC基準領域1706は、異なるIBC基準領域制約セットに基づき決定されたIBC基準領域に置き換えられてもよい。IBC基準領域1706は、CTU 1702の再構成される部分(現在のブロックが含まれる部分など)および/または一つまたは複数のWPPパーティションおよび/またはタイルパーティションに制限されるだけでなく、限られたメモリーサイズ(IBC基準サンプルメモリーなど)に格納できる復号化されまたは再構成されるサンプルの数/量を含むように制限され得る。IBC基準サンプルメモリーのサイズは、エンコーダーまたはデコーダーを用いてオンチップで実装されることに基づき制限され得る。IBC基準領域は、エンコーダーまたはデコーダーからのより大きなサイズのIBC基準サンプルメモリーオフチップを使用することによって、サイズが増大し得る。オフチップメモリーを使用することが、より高いメモリー帯域幅要件、および(例えば、IBC基準領域1706における)サンプルを、IBC基準サンプルメモリーへ、および/またはそれから書き込みおよび/または読み取る際の遅延の増加を必要とし得る。
【0135】
IBC基準領域(例えば、IBC基準領域1706)は、現在のCTUの再構成される部分、および/または現在のCTUの左側への一つまたは複数の再構成されるCTUに制約され得る。現在のCTUの左への一つまたは複数の再構成されるCTUは、現在のCTUの再構成される部分または符号化される現在のブロックが位置する仮想パイプラインデータユニット(VPDU)のいずれかと併置される、一つまたは複数の再構成されるCTUの最も左のものの、一部分を含み得ない。異なるCTU内のサンプルのブロックは、同じサイズおよび/またはCTUオフセットを有することに基づき、併置され得る。ブロックのCTUオフセットは、ブロックが位置するCTUの左上隅に対するブロックの左上隅のオフセットであり得る。
【0136】
IBC基準領域は、現在のCTUの再構成される部分と併置される、より再構成されるCTUの最も左のものの、部分を含み得ない。例えば、IBC基準領域は、現在のCTUの再構成される部分と併置される、より再構成されるCTUの最も左のものの、部分を含み得ない。なぜなら、IBC基準サンプルメモリーは、円形バッファと同様の様式で実装され得るためである。例えば、IBC基準サンプルメモリーは、一つまたは複数のCTUに対応する再構成される基準サンプルを記憶し得る。現在のCTUの再構成される基準サンプルは、例えば、IBC基準サンプルメモリーが充填される場合、現在のCTUの左から最も遠くに(例えば、ピクチャーまたはフレーム内)位置する、IBC基準サンプルメモリーに保存された、CTUの再構成される基準サンプルを置き換え得る。現在のCTUの左に最も遠い、ピクチャーまたはフレーム内に、位置するIBC基準サンプルメモリーに保存されたCTUのサンプルは、IBC基準サンプルメモリー内の最も古いデータに対応し得る。本明細書に記載されるように、IBC基準サンプルメモリー内のサンプルを更新することが、現在のCTUを処理するときに、左端のCTUからの再構成される基準サンプルの少なくとも一部が、IBC基準サンプルメモリーに記憶されたままであることを可能にし得る。IBC基準サンプルメモリーに保存された左端のCTUの残りの基準サンプルは、現在のCTUの現在のブロックを予測するために使用され得る。
【0137】
CTUは、一度に処理されてもよく、または一度に処理され得ない。例えば、エンコーダーおよび/またはデコーダーの典型的なハードウェア実装では、CTUは一度に処理され得ない。CTUは、パイプライン段階による処理のためにVPDUに分割され得る。VPDUは、4×4のサンプル領域、16×16のサンプル領域、32×32のサンプル領域、64×64のサンプル領域、128×128のサンプル領域、または任意の他のサンプル領域サイズを含み得る。VPDUのサイズは、最大VPDUサイズ(例えば、64×64のサンプル領域)および現在のCTUのサイズ(例えば、幅または高さ)のうちのより小さい一つに基づき決定され得る。符号化されるブロックが位置するVPDUと併置される、一つまたは複数の再構成されるCTUの最も左のものの、部分は、IBC基準領域からさらに除外され得る。IBC基準領域から一つまたは複数の再構成されるCTUの最も左のもののこの部分を除外することが、IBC基準サンプルメモリーの部分(例えば、この部分から再構成される基準サンプルを記憶するために使用される)が、VPDUに対応する現在のCTUの領域内にサンプルのみを格納することを可能にし得る。VPDUに対応する現在のCTUの領域内にサンプルのみを格納することが、エンコーダーおよび/またはデコーダー設計における特定の複雑さを低減および/または回避し得る。
【0138】
IBC基準領域に含まれる現在のCTUの左に対する再構成されるCTUの量/数は、IBC基準サンプルメモリーが記憶し得る再構成される基準サンプルの量/数および/または現在のピクチャーのCTUのサイズに基づき決定され得る。IBC基準領域に含まれる現在のCTUの左側にある再構成されるCTUの数量/数は、IBC基準サンプルメモリーが保存できる再構成される基準サンプルの数量/数を現在のピクチャー内のCTUのサイズで割った値に基づき決定できる。例えば、IBC基準領域用に128x128個の再構成基準サンプルを保存できるIBC基準サンプルメモリーで、CTUサイズが128x128サンプルの場合、IBC基準領域に含まれる現在のCTUの左側にある再構成CTUの数量/数は、(128x128)/(128x128)または1 CTUに等しくなる。別の実施例として、IBC基準領域に対して128×128の再構成される基準サンプルを記憶してもよく、かつCTUサイズが64×64のサンプルであるメモリーについては、IBC基準領域に含まれる現在のCTUの左側に再構成されるCTUの量/数は、(128×128)/(64×64)つまり4CTUと等しくてもよい。
【0139】
図18Aは、例示的なIBC基準領域を示す。IBC基準領域1800は、IBC基準サンプルメモリーサイズおよびCTUサイズに基づき決定され得る。IBC基準サンプルメモリーサイズは、CTUサイズと等しくてもよい。IBC基準サンプルメモリーサイズは、128×128サンプル(または任意の他の数のサンプル)と等しくてもよい。CTUサイズは、128×128サンプル(または任意の他の数のサンプル)と等しくてもよい。IBC基準領域1800に含まれるように、現在のCTU1804の左側への再構成されるCTUの量/数は、(128×128)/(128×128)つまり1CTUと等しくてもよい。IBC基準領域1800は、再構成領域1810の一部分であり得る。IBC基準領域1800内のサンプルは、再構成領域1810内のサンプルのサブセットであり得る。符号化される現在のブロック1802のサンプルは、VPDU1808内のサンプルのサブセットであり得る。
【0140】
図18Aは、現在のCTU1804内の現在のブロック1802を示す。現在のブロック1802は、現在のCTU1804で符号化された第一のブロックであってもよく、IBCモードを使用して符号化され得る。
図17A~17Bを参照して記載されるように、ブロックは、IBC基準領域1800内の最良に一致する基準ブロックを決定することによって、IBCモードを使用して符号化され得る。IBC基準領域1800は、現在のCTU1804の再構成される部分、および現在のブロック1802が位置する現在のCTU1804の再構成される部分またはVPDU1808のいずれかと併置される、再構成されるCTU1806の、一部分を含まない現在のCTU1804の左への単一の再構成されるCTU1806に制約され得る。CTUは、複数のVPDUに分割され得る。例えば、
図18AのCTUは、サイズ64×64のサンプルの4つのVPDUに分割され得る。現在のブロック1802のIBC基準領域1800には、VPDU1808と併置される再構成されたCTU1806の64x64領域を除く、再構成領域1810(ハッチングで表示)が含まれ得る。併置された領域は、
図18AのXでマークされる。IBC基準領域1800は、現在のCTU1802の左側への異なる量/数のCTUを含み得る。現在のCTU1802の左側にある、IBC基準領域1800における、CTUの量は、異なるCTUサイズに対して異なり得る。例えば、64×64のCTUサイズについては、IBC基準領域1800は、IBC基準サンプルメモリーが記憶し得る再構成される基準サンプルの量/数を現在のピクチャーのCTUのサイズで割ることに基づき、現在のCTU1802の左側への4CTUを含んでもよい。図示を容易にするため、
図18Aには、
図17を参照して記述されるように現在のブロックを囲むL字形状領域は示していない。こうしたL字形状領域は、IBC基準領域1800から除外され得る。
【0141】
図18Bは、例示的なIBC基準領域を示す。
図18Bは、現在のCTU1804の後に符号化されたブロックに対するIBC基準領域1818を示す。後に符号化されたブロックは、現在のブロック1812であり得る。現在のブロック1812は、IBCモードを使用してコード化され得る。現在のブロック1812は、IBC基準領域1818内の最良に一致する基準ブロックを決定することによって符号化され得る。現在のブロック1812のIBC基準領域1818は、現在のCTU1804の再構成される部分、および現在のCTU1804の再構成される部分または現在のブロック1812が位置するVPDU1814のいずれかと併置される、再構成されるCTU1806の、一部分を含まない再構成されるCTU1806に制約され得る。現在のCTU1804は、サイズ64x64サンプルの4つのVPDUに分割され得る(例えば、
図18Aを参照して記述されるように)。現在のブロック1812のためのIBC基準領域1818は、現在のCTU1804の再構成される部分および/またはVPDU1814のいずれかと併置されるCTU1806の部分を除く、再構成される領域1816(ハッチングで示される)で構成され得る。
図18Bでは、併置された領域がそれぞれXで示される。図示を容易にするために、
図18Bは、
図17Aに関して説明したような現在のブロックを囲むL字形状領域を示していない。このようなL字形状領域は、IBC基準領域1818から除外され得る。
【0142】
図19は、候補BVPのリストに含めるための候補BVPを決定するための例示的な方法を示す。
図19に示す方法1900は、ビデオ符号化および/または復号化システム内のデバイスによって実行され得る。例えば、デバイスは、エンコーダーおよび/またはデコーダーであり得る(例えば、
図2に示すエンコーダー200および/または
図3に示すデコーダー300)。
【0143】
装置は、候補BVPのリストを決定し得る(例えば、ステップ1902)。候補BVPのリストは、例えば、空間的に隣接ブロック、時間的に共存するブロック、および/または履歴ベースのBVのBV情報に基づき決定され得る。装置は、候補BVPのリスト中の候補BVPの数量/数が、値(例えば、閾値数量/数、事前定義された値)よりも小さいかどうかを決定(例えば、ステップ1904)し得る。
【0144】
装置は、例えば、候補BVPの数量/数が値未満であることに基づき/それに応答して、現在のブロックのIBC基準領域に基づき、候補BVPを決定/生成し得る(例えば、ステップ1906)。候補BVPが、現在のブロックからIBC基準領域の境界への変位を示し得る。候補BVPが、現在のブロックから、(例えば、IBC基準領域内の)IBC基準領域の非境界への変位を示し得る。装置は、候補BVPのリストに候補BVP(例えば、ステップ1908)を追加し得る。装置は、候補BVPのリストに基づき、BV(例えば、ステップ1910)を示し、決定し、および/または予測し得る。例えば、エンコーダーは、候補BVPのリストに基づき、BVを予測するためのBVP(例えば、IBC動作のためのAMVP)を示し得る。エンコーダーは、候補BVPのリスト中にBVPを示すことによって、BV(例えば、マージモード動作)を示し得る。デコーダーは、BVを決定するために、リスト候補BVPを使用し得る。
【0145】
本明細書のさまざまな実施例は、ハードウェア(例えば、アナログおよび/またはデジタル回路を使用して)、ソフトウェア(例えば、一つまたは複数の汎用もしくは専用プロセッサーによる記憶/受信された命令の実行を通して)、および/またはハードウェアとソフトウェアの組み合わせとして実装され得る。本明細書のさまざまな実施例は、コンピューターシステムまたは他の処理システムを含む環境で実装され得る。
【0146】
図20は、本明細書に記載の実施例のいずれかを使用し得るコンピューターシステムの例を示す。例えば、
図20に示す例示的なコンピューターシステム2000は、本明細書に記載の方法のうちの一つまたは複数を実装し得る。例えば、本明細書に記載されるさまざまなデバイスおよび/またはシステム(例えば、
図1、2、および3)は、一つまたは複数のコンピューターシステム2000の形態で実装され得る。さらに、本開示に図示されるフローチャートのステップの各々は、一つまたは複数のコンピューターシステム2000上に実装され得る。
【0147】
コンピューターシステム2000は、プロセッサー2004などの一つまたは複数のプロセッサーを含んでもよい。プロセッサー2004は、特殊用途プロセッサー、汎用プロセッサー、マイクロプロセッサー、および/またはデジタル信号プロセッサーであり得る。プロセッサー2004は、通信インフラ2002(例えば、バスまたはネットワーク)に接続され得る。コンピューターシステム2000はまた、メインメモリー2006(例えば、ランダムアクセスメモリー(RAM))および/または二次メモリー2008を含んでもよい。
【0148】
二次メモリー2008は、ハードディスクドライブ2010および/または取り外し可能なストレージドライブ2012(例えば、磁気テープドライブ、光ディスクドライブ、および/または同種のもの)を含んでもよい。取り外し可能なストレージドライブ2012は、取り外し可能な記憶ユニット2016から読み取られ、および/または取り外し可能な記憶ユニット2016に書き込まれてもよい。取り外し可能な記憶ユニット2016は、磁気テープ、光ディスク、および/またはこれに類するものを含んでもよい。取り外し可能な記憶ユニット2016は、取り外し可能なストレージドライブ2012によって読み取られてもよく、および/または取り外し可能なストレージドライブ2012に書き込まれてもよい。取り外し可能な記憶ユニット2016は、その中にコンピューターソフトウェアおよび/またはデータを格納したコンピューター使用可能ストレージ媒体を含んでもよい。
【0149】
二次メモリー2008は、コンピュータープログラムまたは他の命令をコンピューターシステム2000にロードすることを可能にするための他の類似の手段を含んでもよい。こうした手段は、取り外し可能な記憶ユニット2018および/またはインターフェイス2014を含み得る。こうした手段の例は、プログラムカートリッジおよび/またはカートリッジインターフェイス(ビデオゲーム装置など)、リムーバブルメモリーチップ(消去可能プログラマブル読み出し専用メモリー(EPROM)またはプログラマブル読み出し専用メモリー(PROM)など)、ならびに関連するソケット、サムドライブおよびUSBポート、ならびに/またはソフトウェアおよび/またはデータを取り外し可能な記憶ユニット2018からコンピューターシステム2000に転送することを可能にし得る他の取り外し可能な記憶ユニット2018およびインターフェイス2014を含んでもよい。
【0150】
コンピューターシステム2000はまた、通信インターフェイス2020を含んでもよい。通信インターフェイス2020は、ソフトウェアおよびデータをコンピューターシステム2000と外部装置との間で転送することを可能にし得る。通信インターフェイス2020の例は、モデム、ネットワークインターフェイス(例えば、イーサネットカード)、通信ポートなどを含み得る。通信インターフェイス2020を介して転送されるソフトウェアおよび/またはデータは、電子、電磁、光学、および/または通信インターフェイス2020によって受信され得る他の信号であり得る信号の形態であり得る。信号は、通信経路2022を介して通信インターフェイス2020に提供され得る。通信経路2022は、信号を伝送してもよく、ワイヤもしくはケーブル、光ファイバ、電話線、携帯電話リンク、RFリンク、および/または任意の他の通信チャネルを使用して実装され得る。
【0151】
コンピュータープログラム媒体および/またはコンピューター可読媒体は、取り外し可能な記憶ユニット2016および2018、またはハードディスクドライブ2010に取り付けられたハードディスクなどの有形ストレージ媒体を指すために使用され得る。コンピュータープログラム製品は、コンピューターシステム2000にソフトウェアを提供するための手段であり得る。コンピュータープログラム(コンピューター制御ロジックとも呼ばれ得る)は、メインメモリー2006および/または二次メモリー2008に保存され得る。コンピュータープログラムは、通信インターフェイス2020を介して受信され得る。こうしたコンピュータープログラムは、実行されると、コンピューターシステム2000が、本明細書で論じるように、本開示を実施することを可能にし得る。特に、コンピュータープログラムは、実行されるとき、プロセッサー2004が、本明細書に記載される方法のいずれかなどの本開示のプロセスを実施することを可能にし得る。従って、こうしたコンピュータープログラムは、コンピューターシステム2000のコントローラーを表し得る。
【0152】
図21は、例えば、ソース装置(例えば、102)、エンコーダー(例えば、200)、宛先装置(例えば、106)、デコーダー(例えば、300)、および/または本明細書に記載される任意のコンピューティング装置を含む、本明細書に記載されるさまざまな装置のいずれかを実装するために使用され得るコンピューティング装置の例示的な要素を示す。コンピューティング装置2130は、ランダムアクセスメモリー(RAM)2133、リムーバブル媒体2134(ユニバーサルシリアルバス(USB)ドライブ、コンパクトディスク(CD)もしくはデジタル多用途ディスク(DVD)、もしくはフロッピーディスクドライブなど)、または任意の他の所望の記憶媒体に格納される命令を実行し得る、一つまたは複数のプロセッサー2131を含み得る。命令はまた、接続される(または内部)ハードドライブ2135に記憶され得る。コンピューティング装置2130はまた、プロセッサー2131上で実行されるプロセス、およびコンピューティング装置2130の任意のハードウェアおよび/またはソフトウェア構成要素(例えば、ROM2132、RAM2133、リムーバブル媒体2134、ハードドライブ2135、デバイスコントローラー2137、ネットワークインターフェイス2139、GPS2141、Bluetoothインターフェイス2142、WiFiインターフェイス2143など)へのアクセスを要求する任意のプロセスを監視するための一つまたは複数のコンピュータープログラムの命令を実行し得るセキュリティプロセッサー(図示せず)を含んでもよい。コンピューティング装置2130は、ディスプレイ2136(例えば、スクリーン、表示装置、モニター、テレビなど)などの一つまたは複数の出力装置を含んでもよく、ビデオプロセッサーなどの一つまたは複数の出力デバイスコントローラー2137を含んでもよい。また、リモートコントロール、キーボード、マウス、タッチスクリーン、マイクなど、一つまたは複数のユーザー入力装置2138があり得る。コンピューティング装置2130はまた、有線インターフェイス、無線インターフェイス、または二つの組み合わせであり得る、ネットワークインターフェイス2139などの一つまたは複数のネットワークインターフェイスを含んでもよい。ネットワークインターフェイス2139は、コンピューティング装置2130がネットワーク2140(例えば、RAN、またはその他の任意のネットワーク)と通信するためのインターフェイスを提供し得る。ネットワークインターフェイス2139は、モデム(例えば、ケーブルモデム)を含んでもよく、外部ネットワーク2140は、通信リンク、外部ネットワーク、家庭内ネットワーク、プロバイダーの無線、同軸、ファイバ、またはハイブリッドファイバー/同軸分配システム(例えば、DOCSISネットワーク)、または任意の他の所望のネットワークを含んでもよい。さらに、コンピューティング装置2130は、グローバル位置決め信号を受信および処理し、外部サーバーおよびアンテナから可能な支援を得て、コンピューティング装置2130の地理的位置を決定するように構成され得る、グローバル位置決めシステム(GPS)マイクロプロセッサー2141などの位置検出装置を含んでもよい。
【0153】
図21の例はハードウェア構成であり得るが、示されたコンポーネントはソフトウェアとして実装され得る。所望の場合には、コンピューティング装置2130の構成要素を追加、除去、結合、分割などするように変更を加えてもよい。さらに、構成要素は、基本的なコンピューティング装置および構成要素を使用して実装されてもよく、同じ構成要素(例えば、プロセッサー2131、ROMストレージ2132、ディスプレイ2136など)を使用して、本明細書に記載される他のコンピューティング装置および構成要素のいずれかを実装し得る。例えば、本明細書で説明されるさまざまな構成要素は、
図21に示すように、コンピューター可読媒体に格納されたコンピューター実行可能命令を実行するプロセッサーなどの構成要素を有するコンピューティング装置を使用して実装され得る。本明細書に記載されるエンティティの一部または全ては、ソフトウェアベースであってもよく、共通の物理プラットフォームに共存し得る(例えば、要求エンティティは、依存エンティティとは別のソフトウェアプロセスおよびプログラムであってもよく、それら両方とも共通のコンピューティング装置上でソフトウェアとして実行され得る)。
【0154】
以下、さまざまな特性が、番号付き条項または段落のセットにおいて強調表示される。これらの特徴は、本発明または発明の概念を限定していると解釈されるものではなく、本明細書に記述されるいくつかの特徴の強調として、そのような特徴の特定の順序の重要性または関連性を示唆することなく、単に提供されるものである。
【0155】
条項1.
候補BVPのリスト中の候補ブロックベクトル予測子(BVP)の量が閾値未満であるという決定に基づき、コンピューティング装置によって、候補BVPを有する候補BVPのリストを更新することを含み、候補BVPが、現在のブロックのイントラブロックコピー(IBC)基準領域に基づく、方法。
【0156】
条項2.
候補BVPの更新されたリストに基づき、現在のブロックの符号化、または現在のブロックの復号化のうちの少なくとも一つを実行することをさらに含む、条項1に記載の方法。
【0157】
条項3.
現在のブロックの符号化が、候補BVPの更新されたリスト内の第二の候補BVPに基づき現在のブロックを符号化することと、第二の候補BVPに関連付けられる基準ブロックと現在のブロックとの間の予測誤差を決定することと、を含む、条項1および2のいずれか一項に記載の方法。
【0158】
条項4.
第二の候補BVPおよび予測誤差の表示を送信することをさらに含む、条項1~3のいずれか一項に記載の方法。
【0159】
条項5.
現在のブロックを符号化することが、現在のブロックのブロックベクトル(BV)と第二の候補BVPとの間のブロックベクトル差(BVD)を決定することを含み、方法が、BVDの表示を送信することをさらに含む、条項1~4のいずれか一項に記載の方法。
【0160】
条項6.
候補BVPの更新されたリスト内の第二の候補BVPの表示を受信することをさらに含み、現在のブロックの復号化が、第二の候補BVPに関連付けられる基準ブロックに基づき、現在のブロックを復号化することを含む、条項1~5のいずれか一項に記載の方法。
【0161】
条項7.
基準ブロックと現在のブロックとの間の予測誤差の表示を受信することをさらに含み、現在のブロックの復号化が、予測誤差にさらに基づき現在のブロックを復号化することを含む、条項1~6のいずれか一項に記載の方法。
【0162】
条項8.
候補BVPが、現在のブロックからIBC基準領域の境界までの変位を示す、条項1~7のいずれか一項に記載の方法。
【0163】
条項9.
候補BVPが、現在のブロックからIBC基準領域内の位置までの変位を示す、条項1~8のいずれか一項に記載の方法。
【0164】
条項10.
候補BVPが、現在のブロックからIBC基準領域の二つの境界間にある位置への変位を示す、条項1~9のいずれか一項に記載の方法。
【0165】
条項11.
現在のブロックの幅がcbWidthであり、現在のブロックの位置からの、IBC基準領域の垂直縁の水平距離が現在のブロックの幅以上であることに基づき、候補BVPが、現在のブロックの位置からの-cbWidthの水平方向の変位およびゼロの垂直方向の変位を示す、条項1~10のいずれか一項に記載の方法。
【0166】
条項12.
現在のブロックの高さがcbHeightであり、現在のブロックの位置からの、IBC基準領域の水平縁の垂直距離が現在のブロックの高さ以上であることに基づき、候補BVPが、現在のブロックの位置からのゼロの水平方向の変位および-cbHeightの垂直方向の変位を示す、条項1~11のいずれか一項に記載の方法。
【0167】
条項13.
現在のブロックの幅がcbWidthであり、現在のブロックの高さがcbHeightであり、候補BVPが、現在のブロックの位置からIBC基準領域の垂直縁の水平距離が、現在のブロックの幅以上であること、および現在のブロックの位置からIBC基準領域の水平縁の垂直距離が、現在のブロックの高さ以上であることに基づき、現在のブロックの位置から-cbWidthおよび-cbHeight、それぞれの、水平方向の変位および垂直方向の変位を示す、条項1~12のいずれか一項に記載の方法。
【0168】
条項14.
現在のブロックの幅がcbWidthであり、現在のブロックの高さがcbHeightであり、現在のブロックの水平位置がcbXであり、現在のブロックの垂直位置がcbYであり、および候補BVPが、現在のブロックの位置から、IBC基準領域の垂直縁の水平距離が、現在のブロックの幅未満であること、および現在のブロックの位置から、IBC基準領域の水平縁の垂直距離が、現在のブロックの高さ以上であることに基づき、現在のブロックの位置から-cbXおよび-cbHeight、それぞれの、水平方向の変位および垂直方向の変位を示す、条項1~13のいずれか一項に記載の方法。
【0169】
条項15.
現在のブロックの幅がcbWidthであり、現在のブロックの高さがcbHeightであり、現在のブロックの水平位置がcbXであり、現在のブロックの垂直位置がcbYであり、および候補BVPが、現在のブロックの位置から、IBC基準領域の垂直縁の水平距離が、現在のブロックの幅以上であること、および現在のブロックの位置から、IBC基準領域の水平縁の垂直距離が、現在のブロックの高さ未満であることに基づき、現在のブロックの位置から-cbWidthおよび-cbY、それぞれの、水平方向の変位および垂直方向の変位を示す、条項1~14のいずれか一項に記載の方法。
【0170】
条項16.
垂直縁または水平縁が、現在のブロックの位置から、IBC基準領域の最も近い垂直縁または最も近い水平縁である、条項1~15のいずれか一項に記載の方法。
【0171】
条項17.
一つまたは複数のプロセッサーと、一つまたは複数のプロセッサーによって実行されると、コンピューティング装置に条項1~16のいずれか一項に記載の方法を実行させる命令を記憶するメモリーとを含む、コンピューティング装置。
【0172】
条項18.
条項1~16のいずれか一項に記載の方法を実行するように構成される第一のコンピューティング装置と、符号化された現在のブロックを受信するように構成される第二のコンピューティング装置とを含む、システム。
【0173】
条項19.
実行されると、条項1~16のいずれか一項に記載の方法の性能を生じさせる命令を格納するコンピューター可読媒体。
【0174】
条項20.
候補BVPのリスト中の候補ブロックベクトル予測子(BVP)の量が閾値未満であるという決定に基づき、コンピューティング装置によって、少なくとも一つの候補BVPを有する候補BVPのリストを更新することを含み、少なくとも一つの候補BVPが、現在のブロックのイントラブロックコピー(IBC)基準領域に基づく、方法。
【0175】
条項21.
候補BVPの更新されたリスト内の候補BVPの表示を受信することをさらに含む、条項20に記載の方法。
【0176】
条項22.
候補BVPに基づき現在のブロックを復号化することをさらに含む、条項20および21のいずれか一項に記載の方法。
【0177】
条項23.
少なくとも一つの候補BVPが、現在のブロックからIBC基準領域の境界までの変位を示す第二の候補BVPを含む、条項20~22のいずれか一項に記載の方法。
【0178】
条項24.
少なくとも一つの候補BVPが、現在のブロックからIBC基準領域内の位置までの変位を示す第二の候補BVPを含む、条項20~23のいずれか一項に記載の方法。
【0179】
条項25.
少なくとも一つの候補BVPが、現在のブロックから、IBC基準領域の二つの境界の間の位置への変位を示す第二の候補BVPを含む、条項20~24のいずれか一項に記載の方法。
【0180】
条項26.
候補BVPのリストを更新することが、候補BVPのリスト内の少なくとも一つの第二の候補BVPを、少なくとも一つの候補BVPに置き換えることを含む、条項20~25までのいずれか一項に記載の方法。
【0181】
条項27.
現在のブロックの予測誤差の表示を受信することをさらに含み、現在のブロックを復号化することが、予測誤差にさらに基づき現在のブロックを復号化することを含む、条項20~26のいずれか一項に記載の方法。
【0182】
条項28.
一つまたは複数のプロセッサーと、一つまたは複数のプロセッサーによって実行されると、コンピューティング装置に条項20~27のいずれか一項に記載の方法を実行させる、命令を記憶するメモリーとを含む、コンピューティング装置。
【0183】
条項29.
条項20~27のいずれか一項に記載の方法を実行するように構成される第一のコンピューティング装置と、候補BVPの表示を送信するように構成される第二のコンピューティング装置とを含む、システム。
【0184】
条項30.
実行されると、条項20~27のいずれか一項に記載の方法の性能を生じさせる命令を格納するコンピューター可読媒体。
【0185】
条項31.
候補BVPのリスト中の候補ブロックベクトル予測子(BVP)の量が閾値未満であるという決定に基づき、コンピューティング装置によって、少なくとも一つの候補BVPを有する候補BVPのリストを更新することを含み、少なくとも一つの候補BVPが、現在のブロックのイントラブロックコピー(IBC)基準領域に基づく、方法。
【0186】
条項32.
候補BVPの更新されたリスト内の候補BVPに基づき、現在のブロックを符号化することをさらに含み、符号化することが、候補BVPに関連付けられる基準ブロックと現在のブロックとの間の予測誤差を決定することを含む、条項31に記載の方法。
【0187】
条項33.
候補BVPおよび予測誤差の表示を送信することをさらに含む、条項31および32のいずれか一項に記載の方法。
【0188】
条項34.
少なくとも一つの候補BVPが、現在のブロックからIBC基準領域の境界までの変位を示す第二の候補BVPを含む、条項31~33までのいずれか一項に記載の方法。
【0189】
条項35.
少なくとも一つの候補BVPが、現在のブロックからIBC基準領域内の位置までの変位を示す第二の候補BVPを含む、条項31~34までのいずれか一項に記載の方法。
【0190】
条項36.
少なくとも一つの候補BVPが、現在のブロックから、IBC基準領域の二つの境界の間の位置への変位を示す第二の候補BVPを含む、条項31~35のいずれか一項に記載の方法。
【0191】
条項37.
候補BVPのリストを更新することが、候補BVPのリスト内の少なくとも一つの第二の候補BVPを、少なくとも一つの候補BVPに置き換えることを含む。条項31~36までのいずれか一項に記載の方法。
【0192】
条項38.
一つまたは複数のプロセッサーと、一つまたは複数のプロセッサーによって実行されると、コンピューティング装置に条項31~37のいずれか一項に記載の方法を実行させる命令を記憶するメモリーとを含む、コンピューティング装置。
【0193】
条項39.
条項31~37のいずれか一項に記載の方法を実行するように構成される第一のコンピューティング装置と、候補BVPおよび予測誤差の表示を受信するように構成される第二のコンピューティング装置とを含む、システム。
【0194】
条項40.
実行されると、条項31~37のいずれか一項に記載の方法の性能を生じさせる命令を格納するコンピューター可読媒体。
【0195】
コンピューティング装置は、複数の動作を含む方法を実行し得る。コンピューティング装置は、候補BVPのリスト中の候補ブロックベクトル予測子(BVP)の量が閾値未満であるという決定に基づき、候補BVPを有する候補BVPのリストを更新し得る。候補BVPが、現在のブロックのイントラブロックコピー(IBC)基準領域に基づいてもよい。コンピューティング装置は、候補BVPの更新されたリストに基づき、現在のブロックの符号化、または現在のブロックの復号化のうちの少なくとも一つを実行し得る。コンピューティング装置はまた、一つまたは複数の追加の動作を実行し得る。候補BVPのリストを更新することが、候補BVPのリスト内の第二の候補BVPを候補BVPで置換することを含み得る。現在のブロックを符号化することは、候補BVPの更新されたリスト内の第二の候補BVPに基づき現在のブロックを符号化することと、第二の候補BVPに関連付けられる基準ブロックと現在のブロックとの間の予測誤差を決定することと、を含み得る。コンピューティング装置は、第二の候補BVPおよび予測誤差の表示を送信し得る。現在のブロックを符号化することが、現在のブロックのブロックベクトル(BV)と第二の候補BVPとの間のブロックベクトル差(BVD)を決定することを含み得る。コンピューティング装置は、BVDの表示を送信できる。コンピューティング装置は、候補BVPの更新されたリスト内の第二の候補BVPの表示を受信し得る。現在のブロックの復号化は、第二の候補BVPに関連付けられる基準ブロックに基づき、現在のブロックを復号化することを含み得る。コンピューティング装置は、基準ブロックと現在のブロックとの間の予測誤差の表示を受信し得る。現在のブロックの復号化は、予測誤差にさらに基づき、現在のブロックを復号化することを含み得る。候補BVPが、現在のブロックからIBC基準領域の境界への変位を示し得る。候補BVPが、現在のブロックからIBC基準領域内の位置への変位を示し得る。候補BVPが、現在のブロックから、IBC基準領域の二つの境界の間の位置への変位を示し得る。現在のブロックの幅はcbWidthであり得、現在のブロックの高さがcbHeightであり得る。現在のブロックの位置から、IBC基準領域の垂直縁の水平距離が現在のブロックの幅以上であることに基づき、候補BVPが、現在のブロックの位置からの-cbWidthの水平方向の変位およびゼロの垂直方向の変位を示し得る。現在のブロックの位置から、IBC基準領域の水平縁の垂直距離が現在のブロックの高さ以上であることに基づき、候補BVPが、現在のブロックの位置からのゼロの水平方向の変位および-cbHeightの垂直方向の変位を示し得る。候補BVPが、現在のブロックの位置からIBC基準領域の垂直縁の水平距離が、現在のブロックの幅以上であること、および現在のブロックの位置からIBC基準領域の水平縁の垂直距離が、現在のブロックの高さ以上であることに基づき、現在のブロックの位置から-cbWidthおよび-cbHeight、それぞれの、水平方向の変位および垂直方向の変位を示し得る。現在のブロックの水平位置はcbXであってもよく、現在のブロックの垂直位置はcbYであり得る。候補BVPが、現在のブロックの位置からIBC基準領域の垂直縁の水平距離が現在のブロックの幅未満であること、および現在のブロックの位置から、IBC基準領域の水平縁の垂直距離が、現在のブロックの高さ以上であることに基づき、現在のブロックの位置から-cbXおよび-cbHeight、それぞれの、水平方向の変位および垂直方向の変位を示す。候補BVPが、現在のブロックの位置からIBC基準領域の垂直縁の水平距離が、現在のブロックの幅以上であること、および現在のブロックの位置からIBC基準領域の水平縁の垂直距離が、現在のブロックの高さ未満であることに基づき、現在のブロックの位置から、-cbWidthおよび-cbY、それぞれの、水平方向の変位および垂直方向の変位を示し得る。垂直縁または水平縁は、現在のブロックの位置から、IBC基準領域の最も近い垂直縁または最も近い水平縁であり得る。コンピューティング装置は、一つまたは複数のプロセッサーと、一つまたは複数のプロセッサーによって実行されると、コンピューティング装置に、記載された方法、追加の動作を実行させ、および/または追加の要素を含ませる命令を記憶するメモリーとを含み得る。システムは、説明した方法、追加の操作を実行するように構成される、および/または追加の要素を含むように構成される第一のコンピューティング装置と、符号化された現在のブロックを受信するように構成される第二のコンピューティング装置とを含み得る。コンピューター可読媒体は、実行されると、記載された方法の性能、追加の動作を引き起こす、および/または追加の要素を含む命令を格納し得る。
【0196】
コンピューティング装置は、複数の動作を含む方法を実行し得る。候補BVPのリスト中の候補ブロックベクトル予測子(BVP)の量が閾値未満であるという決定に基づき、コンピューティング装置は、少なくとも一つの候補BVPを有する候補BVPのリストを更新し得る。少なくとも一つの候補BVPが、現在のブロックのイントラブロックコピー(IBC)基準領域に基づいてもよい。コンピューティング装置は、候補BVPの更新されたリスト内の候補BVPの表示を受信し得る。コンピューティング装置は、候補BVPに基づき、現在のブロックを復号化し得る。コンピューティング装置はまた、一つまたは複数の追加の動作を実行し得る。少なくとも一つの候補BVPが、現在のブロックからIBC基準領域の境界への変位を示す第二の候補BVPを含み得る。少なくとも一つの候補BVPが、現在のブロックからIBC基準領域内の位置への変位を示す第二の候補BVPを含み得る。少なくとも一つの候補BVPが、現在のブロックから、IBC基準領域の二つの境界の間の位置への変位を示す第二の候補BVPを含み得る。候補BVPリストの更新は、候補BVPリスト内の少なくとも一つの第二のBVPを少なくとも一つの候補BVPに置き換えることを含み得る。コンピューティング装置は、現在のブロックの予測誤差の表示を受信してもよく、現在のブロックを復号化することが、予測誤差にさらに基づき現在のブロックを復号化することを含む。コンピューティング装置は、一つまたは複数のプロセッサーと、一つまたは複数のプロセッサーによって実行されると、コンピューティング装置に、記載された方法、追加の動作を実行させ、および/または追加の要素を含ませる命令を記憶するメモリーとを含み得る。システムは、説明した方法、追加の操作を実行し、および/または追加の要素を含むように構成される第一のコンピューティング装置と、候補BVPの表示を送信するように構成される第二のコンピューティング装置とを含み得る。コンピューター可読媒体は、実行されると、記載された方法の性能、追加の動作を引き起こす、および/または追加の要素を含む命令を格納し得る。
【0197】
コンピューティング装置は、複数の動作を含む方法を実行し得る。コンピューティング装置は、候補BVPのリスト中の候補ブロックベクトル予測子(BVP)の量が閾値未満であるという決定に基づき、少なくとも一つの候補BVPを有する候補BVPのリストを更新し得る。少なくとも一つの候補BVPが、現在のブロックのイントラブロックコピー(IBC)基準領域に基づいてもよい。コンピューティング装置は、候補BVPの更新されたリスト内の候補BVPに基づき、現在のブロックを符号化し得る。符号化は、候補BVPに関連付けられる基準ブロックと現在のブロックとの間の予測誤差を決定することを含み得る。コンピューティング装置は、候補BVPと予測誤差の表示を送信できる。コンピューティング装置はまた、一つまたは複数の追加の動作を実行し得る。少なくとも一つの候補BVPが、現在のブロックからIBC基準領域の境界への変位を示す第二の候補BVPを含み得る。少なくとも一つの候補BVPが、現在のブロックからIBC基準領域内の位置への変位を示す第二の候補BVPを含み得る。少なくとも一つの候補BVPが、現在のブロックから、IBC基準領域の二つの境界の間の位置への変位を示す第二の候補BVPを含み得る。候補BVPのリストを更新することが、候補BVPのリスト内の少なくとも一つの第二の候補BVPを、少なくとも一つの候補BVPで置換することを含み得る。コンピューティング装置は、一つまたは複数のプロセッサーと、一つまたは複数のプロセッサーによって実行されると、コンピューティング装置に、記載された方法、追加の動作を実行させ、および/または追加の要素を含ませる命令を記憶するメモリーとを含み得る。システムは、説明した方法、追加の操作を実行し、および/または追加の要素を含むように構成される第一のコンピューティング装置と、候補BVPおよび予測誤差の表示を受信するように構成される第二のコンピューティング装置とを含み得る。コンピューター可読媒体は、実行されると、記載された方法の性能、追加の動作を引き起こす、および/または追加の要素を含む命令を格納し得る。
【0198】
本明細書の一つまたは複数の実施例は、フローチャート、フロー図、データフロー図、構造図、および/またはブロック図として描写され得るプロセスとして記述され得る。フローチャートは、動作を逐次的なプロセスとして記述し得るが、一つまたは複数の動作は、並列または同時に実施され得る。示される動作の順序は、再配置され得る。プロセスは、その動作が完了したときに終了し得るが、図には示されていない追加のステップを有し得る。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応し得る。プロセスが機能に対応する場合、その終了は、呼び出し関数または主要関数への関数の戻りに対応し得る。
【0199】
本明細書に記載の動作は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組み合わせによって実装され得る。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードに実装される場合、必要なタスクを実行するためのプログラムコードまたはコードセグメント(例えば、コンピュータープログラム製品)は、コンピューター可読または機械可読媒体に格納され得る。プロセッサーは、必要なタスクを実行し得る。本開示の特徴は、例えば、特定用途向け集積回路(ASIC)およびゲートアレイなどのハードウェアコンポーネントを使用して、ハードウェアに実装され得る。本明細書に記載の機能を実施するためのハードウェア状態マシンの実施も、当業者には明らかであろう。
【0200】
本明細書に記載される一つまたは複数の特徴は、一つまたは複数のコンピューターまたは他のデバイスによって実行される、一つまたは複数のプログラムモジュールなど、コンピューターで使用可能なデータおよび/またはコンピューター実行可能命令に実装され得る。一般に、プログラムモジュールは、コンピューター内のプロセッサーまたはデータ処理装置によって実行されると、特定のタスクを実行する、または特定の抽象データ型を実現するルーチン、プログラム、物体、構成要素、データ構造などを含む。コンピューター実行可能命令が、ハードディスク、光ディスク、リムーバブルストレージ媒体、ソリッドステートメモリー、RAMなどの一つまたは複数のコンピューター可読媒体上に記憶され得る。プログラムモジュールの機能は、所望に応じて組み合わせられてもよく、または分配され得る。機能性は、ファームウェアまたはハードウェア等価物、例えば集積回路、フィールドプログラマブルゲートアレイ(FPGA)などにおいて、全部または一部で実装され得る。特定のデータ構造を使用して、本明細書に記述される一つまたは複数の特徴をより効果的に実装することができ、かかるデータ構造は、本明細書に記述されるコンピューター実行可能命令およびコンピューターで使用可能なデータの範囲内で意図される。コンピューター可読媒体は、ポータブルまたは非ポータブル記憶装置、光学記憶装置、ならびに命令および/またはデータを記憶、収容、または運ぶことができるさまざまな他の媒体を含み得るが、これらに限定されない。コンピューター可読媒体は、データが記憶され得、無線または有線接続を介して伝播するキャリア波および/または一時的電子信号を含まない、非一時的媒体を含み得る。非一時的媒体の例としては、磁気ディスクまたはテープ、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD)などの光学ストレージ媒体、フラッシュメモリー、メモリーまたはメモリーデバイスが挙げられるが、これらに限定されない。コンピューター可読媒体は、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラムステートメントの任意の組み合わせを表し得る、コードおよび/または機械実行可能命令を記憶し得る。コードセグメントは、情報、データ、引数、パラメーター、またはメモリーコンテンツを通過および/または受信することによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメーター、データなどは、メモリー共有、メッセージ通過、トークン通過、ネットワーク送信などを含む任意の適切な手段を介して、通過、転送、または送信され得る。
【0201】
非一時的な有形コンピューター可読媒体は、本明細書に記載の動作を引き起こすように構成される一つまたは複数のプロセッサーによって実行可能な命令を含み得る。製品は、本明細書に記載の動作を可能にすることをデバイス(例えば、エンコーダー、デコーダー、送信機、受信機など)に行わせるプログラム可能ハードウェアを可能にするための命令が符号化された非一時的有形コンピューター可読機械アクセス可能媒体を含み得る。装置、またはシステム内などの一つまたは複数の装置は、一つまたは複数のプロセッサー、メモリー、インターフェイス、および/または同種のものを含み得る。
【0202】
本明細書に記載される通信は、任意の量のメッセージ、情報要素、フィールド、パラメーター、値、表示、情報、ビット、および/または類似のものを使用して、決定、生成、送信、および/または受信され得る。一つまたは複数の実施例は、用語/語句メッセージ、情報要素、フィールド、パラメーター、値、表示、情報、ビット、および/または類似のもののいずれかを使用して本明細書に記述され得るが、当業者は、こうした通信が、他のこうした用語を含む、これらの用語のうちの任意の一つまたは複数を使用して実施され得ることを理解する。例えば、一つまたは複数のパラメーター、フィールド、および/または情報要素(IE)は、一つまたは複数の情報オブジェクト、値、および/または任意の他の情報を含み得る。情報オブジェクトは、一つまたは複数の他の物体を含んでもよい。少なくともいくつかの(または全て)パラメーター、フィールド、IE、および/または同種のものが使用されてもよく、コンテキストに応じて互換性があり得る。意味または定義が与えられる場合、かかる意味または定義が支配する。
【0203】
本明細書に記載される実施例の一つまたは複数の要素は、モジュールとして実装され得る。モジュールは、定義された機能を実行する要素、および/または他の要素への定義されたインターフェイスを有する要素であり得る。モジュールは、ハードウェア、ハードウェアと組み合わせたソフトウェア、ファームウェア、ウエットウェア(例えば、生物学的要素を有するハードウェア)、またはそれらの組み合わせに実装されてもよく、それら全ては、挙動的に等価であり得る。例えば、モジュールは、ハードウェアマシン(C、C++、Fortran、Java、Basic、Matlabなど)もしくはSimulink、Stateflow、GNU Octave、またはLabVIEWMathScriptで実行されるように構成されるコンピューター言語で記述されたソフトウェアルーチンで実装され得る。追加的または代替的に、ディスクリートまたはプログラム可能なアナログ、デジタルおよび/または量子ハードウェアを組み込んだ物理ハードウェアを使用してモジュールを実装することが可能であり得る。プログラム可能ハードウェアの実施例としては、コンピューター、マイクロコントローラー、マイクロプロセッサー、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、および/または複雑なプログラマブル論理デバイス(CPLD)が挙げられる。コンピューター、マイクロコントローラー、および/またはマイクロプロセッサーは、アセンブリー、C、C++などの言語を使用してプログラムされ得る。FPGA、ASIC、CPLDは、多くの場合、プログラマブルデバイスの機能が少ない内部ハードウェアモジュール間の接続を構成し得るVHSICハードウェア記述言語(VHDL)またはVerilogなどのハードウェア記述言語(HDL)を使用してプログラムされる。上述の技術は、機能的モジュールの結果を達成するために組み合わせて使用され得る。
【0204】
本明細書に記述された動作のうちの一つまたは複数は、条件付きであり得る。例えば、コンピューティング装置、通信装置、エンコーダー、デコーダー、ネットワーク、上記の組み合わせ、および/または類似のものなど、特定の基準が満たされる場合、一つまたは複数の動作が実施され得る。例示的な基準は、デバイス設定、トラフィック負荷、初期システムセットアップ、パケットサイズ、トラフィック特性、上記の組み合わせなどの一つまたは複数の条件に基づき得る。一つまたは複数の基準が満たされる場合、さまざまな実施例を使用し得る。本明細書に記載される実施例の任意の部分を任意の順序で、任意の条件に基づき実装することが可能であり得る。
【0205】
実施例は上記に記載されるが、これらの実施例の特徴および/またはステップは、任意の所望の様式で組み合わせ、分割、省略、再構成、改訂、および/または拡張され得る。当業者には、さまざまな変更、改変、および改善が容易に起こるであろう。かかる変更、修正、および改善は、本明細書に明示的に記載されていないが、本明細書の一部となることが意図され、本明細書の記載の趣旨および範囲内であることが意図される。従って、前述の記載は、例示のみを目的としており、限定するものではない。
【手続補正書】
【提出日】2024-09-09
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
候補BVPのリスト中の候補ブロックベクトル予測子(BVP)の量が閾値未満であるという決定に基づき、コンピューティング装置によって、候補BVPを有する前記候補BVPのリストを更新することであって、前記候補BVPが、現在のブロックのイントラブロックコピー(IBC)基準領域に基づく、更新することと、
前記候補BVPの更新されたリストに基づき、
前記現在のブロックの符号化、または
前記現在のブロックを復号化、の少なくとも一つを実行することと、を含む、方法。
【請求項2】
前記現在のブロックの前記符号化が、
前記候補BVPの更新されたリスト内の第二の候補BVPに基づき、前記現在のブロックを符号化することと、
前記第二の候補BVPに関連付けられる基準ブロックと前記現在のブロックとの間の予測誤差を決定することと、を含む、請求項1に記載の方法。
【請求項3】
前記第二の候補BVPおよび前記予測誤差の表示を送信することをさらに含む、請求項2に記載の方法。
【請求項4】
前記現在のブロックを前記符号化することが、前記現在のブロックのブロックベクトル(BV)と前記第二の候補BVPとの間のブロックベクトル差(BVD)を決定することを含み、前記方法が、前記BVDの表示を送信することをさらに含む、請求項
2に記載の方法。
【請求項5】
前記候補BVPの更新されたリスト内の第二の候補BVPの表示を受信することをさらに含み、前記現在のブロックの前記復号化が、前記第二の候補BVPに関連付けられる基準ブロックに基づき前記現在のブロックを復号化することを含む、請求項1に記載の方法。
【請求項6】
前記基準ブロックと前記現在のブロックとの間の予測誤差の表示を受信することをさらに含み、前記現在のブロックの前記復号化が、前記予測誤差にさらに基づき前記現在のブロックを復号化することを含む、請求項5に記載の方法。
【請求項7】
前記候補BVPが、前記現在のブロックから前記IBC基準領域の境界までの変位を示す、請求項
1に記載の方法。
【請求項8】
前記候補BVPが、前記現在のブロックから前記IBC基準領域内の位置までの変位を示す、請求項
1に記載の方法。
【請求項9】
前記候補BVPが、前記現在のブロックから、前記IBC基準領域の二つの境界の間の位置への変位を示す、請求項
1に記載の方法。
【請求項10】
前記現在のブロックの幅はcbWidthであり、および
前記現在のブロックの位置から、前記IBC基準領域の垂直縁の水平距離が、前記現在のブロックの前記幅以上であることに基づき、前記候補BVPが、前記現在のブロックの前記位置からの-cbWidthの水平方向の変位およびゼロの垂直方向の変位を示す、請求項
1に記載の方法。
【請求項11】
前記現在のブロックの高さがcbHeightであり、
前記現在のブロックの位置から、前記IBC基準領域の水平縁の垂直距離が前記現在のブロックの前記高さ以上であることに基づき、前記候補BVPが、前記現在のブロックの前記位置からのゼロの水平方向の変位および-cbHeightの垂直方向の変位を示す、請求項
1に記載の方法。
【請求項12】
前記現在のブロックの幅がcbWidthであり、
前記現在のブロックの高さがcbHeightであり、
前記候補BVPが、
前記現在のブロックの位置からの前記IBC基準領域の垂直縁の水平距離が、前記現在のブロックの前記幅以上であること、および
前記現在のブロックの前記位置からの前記IBC基準領域の水平縁の垂直距離が、前記現在のブロックの前記高さ以上であること、に基づき、前記現在のブロックの前記位置から、-cbWidthおよび-cbHeight、それぞれの水平方向の変位および垂直方向の変位を示す、請求項
1に記載の方法。
【請求項13】
コンピューティング装置であって、
一つまたは複数のプロセッサーと、
前記一つまたは複数のプロセッサーによって実行されると、前記コンピューティング装置に請求項1~12のいずれか一項に記載の方法を実行させる命令を格納するメモリーと、を含む、コンピューティング装置。
【請求項14】
システムであって、
請求項1~12のいずれか一項に記載の方法を実行するように構成される第一のコンピューティング装置と、
符号化された現在のブロックを受信するように構成される第二のコンピューティング装置と、を含む、システム。
【請求項15】
実行されると、請求項1~12のいずれか一項に記載の方法をさせる命令を格納する、コンピューター可読媒体。
【国際調査報告】