図4は、本開示の実施形態による、通信システム(400)の簡素化されたブロック図を示す。通信システム(400)は、例えば、ネットワーク(450)を介して、互いに通信できる複数の端末装置を含む。例えば、通信システム(400)は、ネットワーク(450)を介して相互接続された、第1の対の端末装置(410)及び(420)を含む。図4の例では、第1の対の端末装置(410)及び(420)は、データの一方向伝送を行う。例えば、端末装置(410)は、ネットワーク(450)を介してもう一方の端末装置(420)に伝送するために、映像データ(例えば、端末装置(410)によって捕捉された映像のストリーム)を符号化してもよい。符号化された映像データは、1つ以上の符号化された映像ビットストリームの形態で伝送することができる。端末装置(420)は、ネットワーク(450)から符号化された映像データを受信し、映像を回復するために符号化された映像データを復号し、回復された映像データに従って映像を表示してもよい。一方向のデータ伝送は、媒体供給用途などにおいて一般的であろう。
別の例では、通信システム(400)は、例えば、ビデオ会議中に生じる場合がある、符号化された映像データの双方向伝送を行う、第2の対の端末装置(430)及び(440)を含む。例では、データの双方向伝送の場合は、端末装置(430)及び(440)の各端末装置は、ネットワーク(450)を介して、端末装置(430)及び(440)のうちの他方の端末装置に伝送するために、映像データ(例えば、端末装置によって捕捉された映像のストリーム)を符号化してもよい。端末装置(430)及び(440)の各端末装置は、端末装置(430)及び(440)のうちの他方の端末装置によって伝送された、符号化された映像データを受信してもよく、かつ映像を回復するために符号化された映像データを復号してもよく、回復された映像データに従って、アクセス可能な表示装置で映像を表示してもよい。
図4の例では、端末装置(410)、(420)、(430)、及び(440)は、サーバ、パソコン、及びスマートフォンとして示されてもよいが、本開示の原理はそのように限定されなくてもよい。本開示の実施形態は、ノートパソコン、タブレットコンピュータ、メディアプレーヤ、及び/又は専用のビデオ会議機器にも適用される。ネットワーク(450)は、符号化された映像データを端末装置(410)、(420)、(430)及び(440)間に伝達する、有線(wired)及び/又は無線通信ネットワークなどを含む任意の数のネットワークを表す。通信ネットワーク(450)は、回線交換チャネル及び/又はパケット交換チャネルでデータを交換してもよい。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、広域ネットワーク、及び/又はインターネットを含む。本考察の目的のために、ネットワーク(450)のアーキテクチャ及びトポロジは、以下で説明されない限り、本開示の運用には無関係な場合がある。
図5は、開示される主題の適用例として、ストリーミング環境における映像符号器及び映像復号器の配置を示す。開示される主題は、例えば、ビデオ会議や、デジタルテレビや、CD、DVD、メモリスティックなどのデジタル媒体への圧縮映像の記憶などを含む、他の映像使用用途に等しく適用することができる。
ストリーミングシステムは捕捉サブシステム(513)を含んでもよく、捕捉サブシステム(513)は、例えば、圧縮されていない映像のストリーム(502)を作成する、デジタルカメラなどの映像ソース(501)を含むことができる。例では、映像のストリーム(502)は、デジタルカメラによって取得されたサンプルを含む。符号化された映像データ(504)(又は符号化された映像ビットストリーム)と比較してデータ量が大きいことを強調するために太線で示されている映像のストリーム(502)は、映像ソース(501)に結合された映像符号器(503)を備える電子機器(520)で処理することができる。以下でより詳細に説明するように、映像符号器(503)は、開示される主題の態様を可能にする、又は実施するために、ハードウェア、ソフトウェア、又はこれらの組合せを含むことができる。映像のストリーム(502)と比較してデータ量が小さいことを強調するために細線で示されている符号化された映像データ(504)(又は符号化された映像ビットストリーム(504)は、後で使用するためにストリーミングサーバ(505)に記憶することができる。図5のクライアントサブシステム(506)及び(508)などの1つ以上のストリーミングクライアントサブシステムは、符号化された映像データ(504)のコピー(507)及び(509)を検索するために、ストリーミングサーバ(505)にアクセスすることができる。クライアントサブシステム(506)は、例えば、電子機器(530)内に、映像復号器(510)を含むことができる。映像復号器(510)は、着信した符号化された映像データのコピー(507)を復号して、表示装置(512)(例えば、表示スクリーン)、又は他の表示装置(図示せず)に表示できる、発信する映像のストリーム(511)を生成する。一部のストリーミングシステムでは、符号化された映像データ(504)、(507)、及び(509)(例えば、映像ビットストリーム)は、いくつかの映像符号化/圧縮標準に従って符号化することができる。このような標準の例は、ITU-T勧告H.265を含む。例では、開発中の映像符号化標準は、汎用映像符号化(Versatile Video Coding、VVC)として非公式に知られている。開示される主題は、VVCに関連して使用され得る。
電子機器(520)及び(530)は、他の構成要素(図示せず)を含んでもよいことに留意されたい。例えば、電子機器(520)は、映像復号器(図示せず)を含むことができ、電子機器(530)は、同様に映像符号器(図示せず)を含むことができる。
図6は、本開示の実施形態による、映像復号器(610)のブロック図を示す。映像復号器(610)は、電子機器(630)に含まれていてもよい。電子機器(630)は、受信機(631)(例えば、受信回路)を備えることができる。映像復号器(610)は、図5の例における映像復号器(510)の代わりに使用することができる。
受信機(631)は、映像復号器(610)によって復号される1つ以上の符号化された映像シーケンスを受信してもよく、同一又は別の実施形態では、1つの符号化された映像シーケンスを同時に受信してもよく、符号化された映像シーケンスそれぞれの復号は、他の符号化された映像シーケンスから独立している。符号化された映像シーケンスは、チャネル(601)から受信されてもよく、チャネル(601)は、符号化された映像データを記憶する記憶装置と連結する、ハードウェア/ソフトウェアであってもよい。受信機(631)は、符号化された音声データ及び/又は補助データストリームなどの他のデータとともに符号化された映像データを受信してもよく、これはそれぞれが使用するエンティティ(図示せず)に転送されてもよい。受信機(631)は、符号化された映像シーケンスを他のデータから分離してもよい。ネットワークのジッタに対抗するために、受信機(631)とエントロピー復号器/構文解析器(620)(以下「構文解析器(620)」とする)との間にバッファメモリ(615)が結合されてもよい。いくつかの用途において、バッファメモリ(615)は、映像復号器(610)の一部である。他の用途では、映像復号器(610)の外部にあってもよい(図示せず)。さらに他の用途では、例えば、ネットワークのジッタに対抗するために、映像復号器(610)の外部にバッファメモリ(図示せず)があってもよく、さらに、例えば、プレイアウトタイミングに対処するために、映像復号器(610)の内部に別のバッファメモリ(615)があってもよい。受信機(631)が、帯域幅及び制御性が充分な記憶装置/転送装置から、又はアイソシンクロナス(isosynchronous)ネットワークからデータを受信しているときは、バッファメモリ(615)は必要でない場合がある、あるいは小さくすることができる。バッファメモリ(615)は、インターネットなどのベストエフォートのパケットネットワークで使用するために必要とされる場合があり、比較的大型で、好適には適応可能なサイズにすることができ、少なくとも部分的に、映像復号器(610)の外部にあるオペレーティングシステム又は類似の要素(図示せず)で実施されてもよい。
映像復号器(610)は、符号化された映像シーケンスからシンボル(621)を再構築するために、構文解析器(620)を備えてもよい。このようなシンボルの分類は、映像復号器(610)の動作を管理するのに使用される情報、及び表示装置(612)(例えば、表示スクリーン)などの表示装置を制御するための潜在的な情報を含み、図6に示されていたように、表示装置は電子機器(630)の一体部品ではないが、電子機器(630)に結合することができる。(複数の)表示装置のための制御情報は、補助強化情報(Supplemental Enhancement Information、SEIメッセージ)、又は映像有用性情報(Video Usability Information、VUI)パラメータ集合フラグメント(図示せず)の形式にされてもよい。構文解析器(620)は、受信した符号化された映像シーケンスを、構文解析/エントロピー復号してもよい。符号化された映像シーケンスの符号は、映像符号化技術又は標準に従っていてもよく、可変長符号化、ハフマン符号化、文脈依存又は非文脈依存の算術符号化などを含む、さまざまな原理に従っていてもよい。構文解析器(620)は、符号化された映像シーケンスから、グループに対応する少なくとも1つのパラメータに基づいて、映像復号器内の、画素のサブグループの少なくとも1つに対する、一群のサブグループパラメータを抽出してもよい。サブグループは、画像のグループ(GOP)、画像、タイル、スライス、マクロブロック、符号化ユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。また、構文解析器(620)は、符号化された映像シーケンスから、変換係数、量子化器パラメータ値、動きベクトルなどの情報を抽出してもよい。
構文解析器(620)は、シンボル(621)を生成するために、バッファメモリ(615)から受信した映像シーケンスにエントロピー復号/構文解析動作を実行してもよい。
シンボル(621)の再構築は、符号化された映像又はその部分の種別(例えば、インター画像及びイントラ画像、インターブロック及びイントラブロック)、並びに他の要素に応じて、複数の異なるユニットを含むことができる。どのユニットがどのように含まれるかについては、構文解析器(620)によって符号化された映像シーケンスから構文解析された、サブグループ制御情報によって制御することができる。構文解析器(620)と、以下の複数のユニットとの間のこのようなサブグループ制御情報の流れは、明確にするために図示されていない。
すでに述べた機能ブロック以外に、映像復号器(610)は、以下で説明するように、概念的にいくつかの機能ユニットに再分割することができる。商業的な制約の下で運用される実際の実施では、このようなユニットの多くは互いに密接に相互作用し、少なくとも部分的に互いに統合することができる。しかしながら、開示する主題を説明する目的のためには、以下の機能ユニットに概念的に再分割するのが適切である。
第1のユニットは、スケーラ/逆変換ユニット(651)である。スケーラ/逆変換ユニット(651)は、量子化変換係数、並びに制御情報を受信し、これには、構文解析器(620)からの(複数の)シンボル(621)として、使用する変換、ブロックサイズ、量子化因子、量子化スケーリング行列などが含まれている。スケーラ/逆変換ユニット(651)は、サンプル値を含むブロックを出力でき、これを集約装置(655)に入力することができる。
場合によっては、スケーラ/逆変換(651)の出力サンプルは、イントラ符号化されたブロックに関係することができ、つまり、以前に再構築された画像からの予測情報を使用していないブロックは、現画像の以前に再構築された部分からの予測情報を使用することができる。このような予測情報は、イントラ画像予測ユニット(652)によって提供することができる。場合によっては、イントラ画像予測ユニット(652)は、現画像バッファ(658)から取り出した、周囲のすでに再構築された情報を使用して、再構築中のブロックと同じサイズ及び形状のブロックを生成する。現画像バッファ(658)は、例えば、部分的に再構築された現画像及び/又は完全に再構築された現画像をバッファリングする。集約装置(655)は、場合により、イントラ予測ユニット(652)が生成した予測情報をサンプル毎に、スケーラ/逆変換ユニット(651)によって提供された出力サンプル情報に追加する。
他の事例では、スケーラ/逆変換ユニット(651)の出力サンプルはインター符号化され、かつ潜在的には動き補償されたブロックに関係することができる。このような事例では、動き補償予測ユニット(653)が、予測に使用するサンプルを取り出すために、参照画像メモリ(657)にアクセスすることができる。ブロックに関連するシンボル(621)に従って、取り出されたサンプルを動き補償した後に、これらのサンプルは、出力サンプル情報を生成するように、集約装置(655)によってスケーラ/逆変換ユニット(651)の出力(この場合は残差サンプル又は残差信号と呼ばれる)に追加することができる。動き補償予測ユニット(653)が予測サンプルを取り出す参照画像メモリ(657)内のアドレスは、動きベクトルによって制御することができ、シンボル(621)の形態で動き補償予測ユニット(653)に使用可能で、例えば、X、Y、及び参照画像成分を有することができる。また動き補償は、サブサンプルの正確な動きベクトルが使用されているときに参照画像メモリ(657)から取り出されたサンプル値の補間、動きベクトル予測機構などを含むことができる。
集約装置(655)の出力サンプルは、ループフィルタユニット(656)のさまざまなループフィルタリング技術にかけることができる。映像圧縮技術は、符号化された映像シーケンス(符号化された映像ビットストリームとも呼ばれる)に含まれるパラメータによって制御され、構文解析器(620)からのシンボル(621)としてループフィルタユニット(656)に対して使用可能になる、ループ内フィルタ技術を含むことができるが、さらに、符号化された画像又は符号化された映像シーケンスの以前の(復号順で)部分の復号中に取得されたメタ情報にも応答し、同様に以前に再構築されてループフィルタリングされたサンプル値にも応答することができる。
ループフィルタユニット(656)の出力は、表示装置(612)に出力でき、かつ以後のインター画像予測に使用するために参照画像メモリ(657)に記憶できる、サンプルストリームであってもよい。
いくつかの符号化画像は、いったん完全に再構築されると、以後の予測用の参照画像として使用することができる。例えば、現画像に対応する、符号化された画像が完全に再構築され、符号化された画像が(例えば、構文解析器(620)によって)参照画像として特定されていると、現画像バッファ(658)が参照画像メモリ(657)の一部になることができ、後続の符号化された画像の再構築を開始する前に、新しい現画像バッファを再配分することができる。
映像復号器(610)は、ITU-T Rec.H.265などの一定の標準における所定の映像圧縮技術に従って、復号動作を実行してもよい。符号化された映像シーケンスが、映像圧縮技術又は標準の構文と、映像圧縮技術又は標準に記録されたプロファイルとの両方を遵守しているという意味において、符号化された映像シーケンスは、使用される映像圧縮技術又は標準によって指定された構文に従っているといえる。具体的には、プロファイルは、映像圧縮技術又は標準で使用可能なすべてのツールから、そのプロファイル下で使用できるツールとして、いくつかのツールだけを選択することができる。遵守のためにさらに必要なことは、符号化された映像シーケンスの複雑性が、映像圧縮技術又は標準の水準によって規定される範囲内にあることであろう。場合によっては、水準によって最大画像サイズ、最大フレームレート、最大再構築サンプルレート(例えば、メガサンプル/秒で測定される)、最大参照画像サイズなどが制限される。水準によって設定される制限は、場合によっては、仮想参照復号器(Hypothetical Reference Decoder、HRD)仕様、及び符号化された映像シーケンスで信号送信されたHRDバッファ管理のメタデータによってさらに制限される可能性がある。
一実施形態では、受信機(631)は、符号化された映像とともに追加(冗長)データを受信してもよい。追加データは、(複数の)符号化された映像シーケンスの一部として含められてもよい。追加データは、映像復号器(610)によって、データを適切に復号するため、かつ/又は元の映像データをより正確に再構築するために使用されてもよい。追加データは、例えば、時間的、空間的、又は信号雑音比(SNR)強化層、冗長スライス、冗長画像、転送エラー修正コードなどの形態であってもよい。
図7は、本開示の実施形態による、映像符号器(703)のブロック図を示す。映像符号器(703)は、電子機器(720)に含まれている。電子機器(720)は、送信機(740)(例えば、送信回路)を備える。映像符号器(703)は、図5の例における映像符号器(503)の代わりに使用することができる。
映像符号器(703)は、映像符号器(703)によって符号化される(複数の)映像を捕捉し得る映像ソース(701)(図7の例では、電子機器(720)の一部ではない)から、映像サンプルを受信してもよい。別の例では、映像ソース(701)は電子機器(720)の一部である。
映像ソース(701)は、映像符号器(703)によって符号化されるソース映像シーケンスを、任意の適切なビット深度(8ビット、10ビット、12ビット~など)、任意の色空間(BT.601 Y CrCB、RGBなど)、及び任意の適切なサンプリング構造(Y CrCb 4:2:0、Y CrCb 4:4:4など)にすることが可能なデジタル映像サンプルストリームの形態で提供し得る。媒体供給システムでは、映像ソース(701)は、以前に準備した映像を記憶している記憶装置であってもよい。ビデオ会議システムでは、映像ソース(701)は、ローカル画像情報を映像シーケンスとして捕捉するカメラであってもよい。映像データは、シーケンスで見たときに動きを伝える複数の個別の画像として提供されてもよい。画像自体は画素の空間的配列として編成されてもよく、各画素は、使用時のサンプリング構造、色空間などに応じて1つ以上のサンプルを含むことができる。当業者であれば、画素とサンプルとの関係を容易に理解できるであろう。以下、サンプルを中心に説明する。
実施形態によれば、映像符号器(703)は、リアルタイムで、又は用途によって必要とされる他の時間制約下で、ソース映像シーケンスの画像を符号化し圧縮して、符号化された映像シーケンス(743)にし得る。適切な符号化速度にすることが、コントローラ(750)の1つの機能である。いくつかの実施形態では、コントローラ(750)は、後述するように他の機能ユニットを制御し、かつ他の機能ユニットに機能的に結合される。明確にするために、結合については図示しない。コントローラ(750)によって設定されたパラメータは、レート制御関連パラメータ(画像スキップ、量子化、レート-歪み最適化技術のラムダ値など)、画像サイズ、画像のグループ(GOP)のレイアウト、最大動きベクトル検索範囲などを含むことができる。コントローラ(750)は、いくつかのシステム設計用に最適化された映像符号器(703)に関連する、他の適切な機能を有するように構成することができる。
いくつかの実施形態では、映像符号器(703)は、符号化ループで動作するように構成される。過度に単純化した説明になるが、例において、符号化ループは、ソース符号器(730)(例えば、符号化される入力画像及び(複数の)参照画像に基づいて、シンボルストリームなどのシンボルの生成に関与する)と、映像符号器(703)に組み込まれた(ローカル)復号器(733)を含むことができる。復号器(733)は、(リモート)復号器が生成するのと同様の方法でサンプルデータを生成するために、シンボルを再構築する(シンボル及び符号化された映像ビットストリーム間の圧縮は、本開示の主題で考慮される映像圧縮技術においていずれも可逆であるため)。再構築サンプルストリーム(サンプルデータ)は、参照画像メモリ(734)に入力される。シンボルストリームの復号が、復号器の位置(ローカル又はリモート)とは無関係に、結果としてビットパーフェクト(bit-exact)になると、参照画像メモリ(734)のコンテンツもまた、ローカル符号器とリモート符号器との間でビットパーフェクトになる。言い換えれば、符号器の予測部は、参照画像サンプルを、復号中に予測を使用しているときに復号器が「みなす」ものとまったく同じサンプル値と「みなす」。参照画像共時性のこの基本原理(及び、例えばチャネルエラーのために共時性を維持できない場合は、結果として生じるドリフト)は、一部の関連技術にも同様に用いられている。
「ローカル」復号器(733)の動作は、映像復号器(610)などの「リモート」復号器と同じであってもよく、これについては、図6に関連してすでに詳細に上述した。しかしながら、一時的に図6も参照すると、シンボルが使用可能であり、かつエントロピー符号器(745)及び構文解析器(620)によって、シンボルを符号化された映像シーケンスに可逆的に符号化/復号できるので、バッファメモリ(615)を含む映像復号器(610)のエントロピー復号部、及び構文解析器(620)は、ローカル復号器(733)で完全に実施されなくてもよい。
現時点で考えられることは、復号器内に存在する、構文解析/エントロピー復号を除く復号器技術はいずれも、対応する符号器内にもほぼ同一の機能的形態で存在することが当然必要になる。このため、開示される主題は復号器の動作に重点を置いている。符号器技術の説明は、包括的に述べられている復号器技術の逆なので、省略することができる。いくつかの領域においてのみ、より詳細な説明が必要とされ以下で説明される。
いくつかの例では、動作中に、ソース符号器(730)は、動き補償された予測符号化を実行してもよく、「参照画像」として指定された映像シーケンスから、1つ以上の以前に符号化された画像に関して入力画像を予測的に符号化する。この方法では、符号化エンジン(732)は、入力画像の画素ブロックと、入力画像に対する(複数の)予測参照として選択され得る(複数の)参照画像の画素ブロックとの差を符号化する。
ローカル映像復号器(733)は、ソース符号器(730)によって生成されたシンボルに基づいて、参照画像として指定され得る画像の符号化された映像データを復号してもよい。符号化エンジン(732)の動作は、好適には非可逆の工程であってもよい。符号化された映像データが、映像復号器(図7には図示せず)で復号されてもよいときは、再構築された映像シーケンスは、通常はいくつかのエラーを伴う、ソース映像シーケンスの複製であってもよい。ローカル映像復号器(733)は、映像復号器によって参照画像に対して実行されてもよく、かつ再構築された参照画像が参照画像キャッシュ(734)に記憶されるようにし得る、復号工程を複製する。この方法では、映像符号器(703)は、遠端の映像復号器(伝送エラーのない)によって取得される、再構築された参照画像と共通のコンテンツを有する、再構築された参照画像のコピーを局所的に記憶してもよい。
予測子(735)は、符号化エンジン(732)用の予測検索を実行してもよい。つまり、予測子(735)は、符号化される新しい画像に対して、参照画像メモリ(734)からサンプルデータ(候補参照画素ブロックとしての)、又は参照画像動きベクトル、ブロック形状などのいくつかのメタデータを検索してもよく、これは新しい画像の適切な予測参照として機能する。予測子(735)は、適切な予測参照を見つけるために、ブロック×画素ブロックを基準として、サンプルで動作してもよい。場合によっては、予測子(735)によって取得された検索結果によって決定されるように、入力画像は、参照画像メモリ(734)に記憶された複数の参照画像から引き出された予測参照を有してもよい。
コントローラ(750)は、例えば、映像データの符号化に使用される、パラメータ及びサブグループパラメータの設定を含む、ソース符号器(730)の符号化動作を管理してもよい。
前述した全機能ユニットの出力は、エントロピー符号器(745)でエントロピー符号化されてもよい。エントロピー符号器(745)は、さまざまな機能ユニットによって生成されると、ハフマン符号化、可変長符号化、算術符号化などの技術でシンボルを可逆圧縮することによって、シンボルを符号化された映像シーケンスに変換する。
送信機(740)は、通信チャネル(760)を介した送信に備えるために、エントロピー符号器(745)によって生成された際に、(複数の)符号化された映像シーケンスをバッファリングしてもよく、これは、符号化された映像データを記憶する記憶装置に対するハードウェア/ソフトウェア連携であってもよい。送信機(740)は、映像符号器(703)の符号化された映像データを、送信される他のデータ、例えば、符号化された音声データ及び/又は補助データストリーム(ソースは図示せず)とマージしてもよい。
コントローラ(750)は、映像符号器(703)の動作を管理してもよい。符号化中に、コントローラ(750)は、符号化された画像のそれぞれにいくつかの符号化画像種別を割り当ててもよく、これは、各画像に適用され得る符号化技術に影響を及ぼす場合がある。例えば、画像は、以下の画像種別のうちの1つに割り当てられることが多い。
イントラ画像(Iピクチャ)は、予測のソースとしてシーケンス内の他の画像を使用せずに符号化及び復号され得るものである。いくつかの映像コーデックは、例えば、即時復号リフレッシュ(Independent Decoder Refresh、「IDR」)ピクチャを含む、異なる種類のイントラ画像を許容する。当業者には、このようなIピクチャの変形、並びにその各用途及び特徴が知られている。
予測画像(Pピクチャ)は、各ブロックのサンプル値を予測するために、最大で1つの動きベクトル及び参照指標を使用して、イントラ予測又はインター予測を用いて符号化及び復号され得るものである。
双方向予測画像(Bピクチャ)は、各ブロックのサンプル値を予測するために、最大で2つの動きベクトル及び参照指標を使用して、イントラ予測又はインター予測を用いて符号化及び復号され得るものである。同様に多重予測画像は、1つのブロックを再構築するために、2つよりも多い参照画像、及び関連するメタデータを使用することができる。
ソース画像は、通常は空間的に複数のサンプルブロック(例えば、それぞれ4×4、8×8、4×8、又は16×16サンプルのブロック)に再分割されて、ブロック毎に符号化されてもよい。ブロックは、ブロックの各画像に適用された符号割り当てによって決定される際に、他の(すでに符号化された)ブロックを参照して予測的に符号化されてもよい。例えば、Iピクチャのブロックは、非予測的に符号化されてもよく、あるいは同じ画像のすでに符号化されたブロックを参照して、予測的に符号化されてもよい(空間予測又はイントラ予測)。Pピクチャの画素ブロックは、1つの以前に符号化された参照画像を参照して、空間予測によって、又は時間予測によって、予測的に符号化されてもよい。Bピクチャのブロックは、1つ又は2つの以前に符号化された参照画像を参照して、空間予測によって、又は時間予測によって、予測的に符号化されてもよい。
映像符号器(703)は、ITU-T Rec.H.265などの所定の映像符号化技術又は標準に従って、符号化動作を実行してもよい。その動作において、映像符号器(703)はさまざまな圧縮動作を実行してもよく、これには入力映像シーケンスで時間的及び空間的冗長性を利用する予測符号化動作が含まれる。したがって符号化された映像データは、使用される映像符号化技術又は標準によって指定された構文に従っていてもよい。
一実施形態では、送信機(740)は、符号化された映像とともに追加データを送信してもよい。ソース符号器(730)は、符号化された映像シーケンスの一部としてこのようなデータを含んでもよい。追加データは、時間/空間/SNR強化層、冗長画像及びスライス、SEIメッセージ、VUIパラメータ集合フラグメントなどの他の形式の冗長データを含んでもよい。
映像は、時間シーケンスにおいて、複数のソース画像(映像)として捕捉されてもよい。イントラ画像予測(イントラ予測と略されることが多い)は、所与の画像内で空間相関を使用し、インター画像予測は、画像間の(時間その他の)相関を使用する。例では、現画像と呼ばれる符号化/復号中の特定の画像が、ブロックに分割される。現画像内のブロックが、映像内の予め符号化されてまだバッファリングされている参照画像の参照ブロックと類似しているときは、現画像のブロックは、動きベクトルと呼ばれるベクトルによって符号化することができる。動きベクトルは、参照画像内の参照ブロックを指し、参照画像を特定する第3の寸法を有することができ、場合によっては、複数の参照画像が使用されている。
いくつかの実施形態では、インター画像予測に双方向予測技術を使用することができる。双方向予測技術によれば2つの参照画像が使用され、映像内の現画像に対していずれも復号順が先になる(ただし表示順ではそれぞれ過去及び未来になってもよい)、第1の参照画像及び第2の参照画像などが使用される。現画像内のブロックは、第1の参照画像内の第1の参照ブロックを指す第1の動きベクトル、及び第2の参照画像内の第2の参照ブロックを指す第2の動きベクトルによって符号化することができる。ブロックは、第1の参照ブロックと第2の参照ブロックとの組合せによって予測することができる。
また、符号化効率を向上させるために、インター画像予測にマージモード技術を使用することができる。
本開示のいくつかの実施形態によれば、インター画像予測及びイントラ画像予測などの予測は、ブロックのユニット内で実行される。例えば、HEVC標準によれば、映像シーケンス内の画像は、圧縮するために符号化ツリーユニット(CTU)に分割され、画像内のCTUは、64×64画素、32×32画素、又は16×16画素などの同じサイズを有する。一般に、CTUは、3つの符号化ツリーブロック(CTB)を含み、これは、1つのルマCTB、及び2つのクロマCTBである。各CTUは、再帰的に4分木分割して、1つ又は複数の符号化ユニット(CU)にすることができる。例えば、64×64画素のCTUは、1つの64×64画素のCU、又は32×32画素の4つのCU、又は16×16画素の16のCUに分割することができる。例では、各CUは、インター予測種別、又はイントラ予測種別など、CUの予測種別を決定するために解析される。CUは、時間及び/又は空間予測可能性に応じて、1つ以上の予測ユニット(PU)に分割される。一般に、各PUは、1つのルマ予測ブロック(PB)と、2つのクロマPBとを含む。一実施形態では、符号化(符号化/復号)における予測動作は、予測ブロックのユニットで実行される。予測ブロックの例としてルマ予測ブロックを使用すると、予測ブロックは、8×8画素、16×16画素、8×16画素、16×8画素などの画素の値(例えば、ルマ値)の行列を含む。
図8は、本開示の別の実施形態による、映像符号器(803)の図を示す。映像符号器(803)は、映像シーケンスの現在の映像内にあるサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックを符号化して、符号化された映像シーケンスの一部である符号化された画像にするように構成される。例では、映像符号器(803)は、図5の例における映像符号器(503)の代わりに使用される。
HEVCの例では、映像符号器(803)は、8×8サンプルの予測ブロックなど、処理ブロックのサンプル値の行列を受信する。映像符号器(803)は、例えばレート-歪み最適化を使用して、処理ブロックが、イントラモード、インターモード、又は双方向予測モードを使用して最良に符号化されるかどうかを判定する。処理ブロックがイントラモードで符号化されるときは、映像符号器(803)は、処理ブロックを符号化して符号化された画像にするためにイントラ予測技術を使用してもよく、処理ブロックがインターモード又は双方向予測モードで符号化されるときは、映像符号器(803)は、処理ブロックを符号化して符号化された画像にするためにインター予測又は双方向予測技術をそれぞれ使用してもよい。いくつかの映像符号化技術では、マージモードが、インター画像予測サブモードであってもよく、ここで動きベクトルは1つ以上の動きベクトル予測子から得られ、予測子の外部にある符号化された動きベクトル成分は利用しない。いくつかの他の映像符号化技術では、対象ブロックに適用できる動きベクトル成分が存在し得る。例では、映像符号器(803)は、処理ブロックのモードを決定するために、モード決定モジュール(図示せず)などの他の要素を含む。
図8の例では、映像符号器(803)は、図8に示すように互いに結合された、インター符号器(830)と、イントラ符号器(822)と、残差計算器(823)と、スイッチ(826)と、残差符号器(824)と、統括コントローラ(821)と、エントロピー符号器(825)とを備える。
インター符号器(830)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、ブロックを参照画像内の1つ以上の参照ブロック(例えば、以前及び以後の画像内のブロック)と比較し、インター予測情報(例えば、インター符号化技術、動きベクトル、マージモード情報による冗長情報の記述)を生成し、任意の適切な技術を使用して、インター予測情報に基づいてインター予測結果(例えば、予測されたブロック)を計算するように構成される。いくつかの例では、参照画像は、符号化された映像情報に基づいて復号された、復号された参照画像である。
イントラ符号器(822)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、場合によってはブロックを、同じ画像内ですでに符号化されているブロックと比較し、変換後の量子化された係数、及び場合によっては、さらにイントラ予測情報(例えば、1つ以上のイントラ符号化技術によるイントラ予測方向情報)を生成するように構成される。例では、イントラ符号器(822)は、同じ画像内のイントラ予測情報及び参照ブロックに基づいて、イントラ予測結果(例えば、予測されたブロック)をさらに計算する。
統括コントローラ(821)は、統括制御データを決定し、統括制御データに基づいて映像符号器(803)の他の要素を制御するように構成される。例では、統括コントローラ(821)は、ブロックのモードを決定し、モードに基づいてスイッチ(826)に制御信号を供給する。例えば、モードがイントラモードのときは、統括コントローラ(821)は、残差計算器(823)が使用するイントラモード結果を選択するようにスイッチ(826)を制御し、かつイントラ予測情報を選択してビットストリーム内にイントラ予測情報を含めるようにエントロピー符号器(825)を制御し、モードがインターモードのときは、統括コントローラ(821)は、残差計算器(823)が使用するインター予測結果を選択するようにスイッチ(826)を制御し、かつインター予測情報を選択してビットストリーム内にインター予測情報を含めるようにエントロピー符号器(825)を制御する。
残差計算器(823)は、受信したブロックと、イントラ符号器(822)又はインター符号器(830)から選択された予測結果との間の差(残差データ)を計算するように構成される。残差符号器(824)は、残差データを符号化して変換係数を生成するために、残差データに基づいて動作するように構成される。例では、残差符号器(824)は、残差データを空間領域から周波数領域に変換して、変換係数を生成するように構成される。変換係数は、その後、量子化変換係数を取得するために量子化処理される。さまざまな実施形態において、映像符号器(803)は残差復号器(828)をさらに備える。残差復号器(828)は、逆変換を実行して、復号された残差データを生成するように構成される。復号された残差データは、イントラ符号器(822)及びインター符号器(830)が適宜使用することができる。例えば、インター符号器(830)は、復号された残差データ及びインター予測情報に基づいて復号されたブロックを生成でき、イントラ符号器(822)は、復号された残差データ及びイントラ予測情報に基づいて復号されたブロックを生成することができる。復号されたブロックは復号された画像を生成するように適宜処理され、復号された画像はメモリ回路(図示せず)にバッファリングして、いくつかの例において参照画像として使用することができる。
エントロピー符号器(825)は、ビットストリームを、符号化されたブロックを含むようフォーマットするように構成される。エントロピー符号器(825)は、HEVC標準などの適切な標準に従って、さまざまな情報を含むように構成される。例えば、エントロピー符号器(825)は、統括制御データ、選択した予測情報(例えば、イントラ予測情報又はインター予測情報)、残差データその他の適切な情報をビットストリーム内に含めるように構成される。開示されている主題によれば、インターモード、又は双方向予測モードのいずれかのマージ下位モードでブロックを符号化するときは、残差情報がないことに留意されたい。
図9は、本開示の別の実施形態による、映像復号器(910)の図を示す。映像復号器(910)は、符号化された映像シーケンスの一部である、符号化された画像を受信して、再構築された画像を生成するために、符号化された画像を復号するように構成される。例では、映像復号器(910)は、図5の例における映像復号器(510)の代わりに使用される。
図9の例では、映像復号器(910)は、図9に示すように互いに結合された、エントロピー復号器(971)と、インター復号器(980)と、残差復号器(973)と、再構築モジュール(974)と、イントラ復号器(972)とを含む。
エントロピー復号器(971)は、符号化された画像から、符号化された画像が作成される構文要素を表す、いくつかのシンボルを再構築するように構成することができる。このようなシンボルは、例えば、ブロックが符号化されるモード(例えば、イントラモード、インターモード、双方向予測モード、マージサブモード又は別のサブモードのインターモード及び双方向予測モード)、イントラ復号器(972)又はインター復号器(980)のそれぞれによる予測に使用されるいくつかのサンプル又はメタデータを特定できる、予測情報(例えば、イントラ予測情報又はインター予測情報)、量子化変換係数などの形式の残差情報を含むことができる。例では、予測モードがインターモード又は双方向予測モードのときは、インター復号器(980)にインター予測情報が提供され、予測種別がイントラ予測種別のときは、イントラ復号器(972)にイントラ予測情報が提供される。残差情報は逆量子化でき、残差復号器(973)に提供される。
インター復号器(980)は、インター予測情報を受信して、インター予測情報に基づいてインター予測結果を生成するように構成される。
イントラ復号器(972)は、イントラ予測情報を受信して、イントラ予測情報に基づいて予測結果を生成するように構成される。
残差復号器(973)は、非量子化変換係数を抽出して、非量子化変換係数を処理して残差を周波数領域から空間領域に変換するために、逆量子化を実行するように構成される。残差復号器(973)は、(量子化器パラメータ(QP)を含めるために)いくつかの制御情報をさらに必要とする場合があり、その情報は、エントロピー復号器(971)によって提供されてもよい(これについては低容量の制御情報のみの場合があるため、データ経路は図示していない)。
再構築モジュール(974)は、再構築ブロックを形成するために、空間領域において、残差復号器(973)の出力としての残差と、(場合により、インター又はイントラ予測モジュールによる出力としての)予測結果とを結合するように構成され、再構築されたブロックは再構築された画像の一部になり、次に再構築された映像の一部になり得る。視覚品質を向上させるために、非ブロック化動作などの他の適切な動作を実行できることに留意されたい。
映像符号器(503)、(703)、及び(803)、並びに映像復号器(510)、(610)、及び(910)は、任意の適切な技術を使用して実施できることに留意されたい。一実施形態では、映像符号器(503)、(703)、及び(803)、並びに映像復号器(510)、(610)、及び(910)は、1つ以上の集積回路を使用して実施することができる。別の実施形態では、映像符号器(503)、(703)、及び(703)、並びに映像復号器(510)、(610)、及び(910)は、ソフトウェア命令を実行する1つ以上のプロセッサを使用して実施することができる。
本開示の態様は、イントラ画像ブロック補償のための符号化/復号技術、特に、柔軟な符号化順でイントラ画像ブロック補償をするために、参照検索範囲を制約するための技術を提供する。
インター予測及びイントラ予測には、ブロックに基づいた補償を使用することができる。インター予測の場合、異なる画像からのブロックに基づく補償は、動き補償として知られている。イントラ予測の場合、ブロックに基づく補償は、同じ画像内の以前に再構築された領域からも行うことができる。同じ画像内の再構築された領域からのブロックに基づく補償は、イントラ画像ブロック補償、現画像参照(CPR)、又はイントラブロックコピー(IBC)と呼ばれる。同じ画像内の現在のブロックと参照ブロックとの間のオフセットを示す変位ベクトルは、ブロックベクトル(又は略してBV)と呼ばれる。任意の値(正又は負、x方向でもy方向でも)をとれる動き補償の動きベクトルとは異なり、ブロックベクトルには、参照ブロックが使用可能ですでに再構築されていることを保証するためのいくつかの制約がある。また、いくつかの例では、並列処理を考慮するために、タイル境界又は波面はしご形境界(wavefront ladder shape boundary)である、いくつかの参照領域が除外される。
ブロックベクトルの符号化は、明示的であっても暗黙的であってもよい。明示モード(又はインター符号化では先進的動きベクトル予測(AMVP)モードと呼ばれる)では、ブロックベクトルとその予測子との間の差が信号送信され、暗黙モードでは、ブロックベクトルは、マージモードの動きベクトルと同様の方法で、予測子(ブロックベクトル予測子と呼ばれる)から回復される。いくつかの実施では、ブロックベクトルの分解能は整数位置に限定され、他のシステムでは、ブロックベクトルは分数位置を指すことができる。
いくつかの例では、ブロックレベルでのイントラブロックコピーの使用は、IBCフラグと呼ばれるブロックレベルフラグを使用して信号送信することができる。一実施形態では、現在のブロックがマージモードで符号化されないときは、IBCフラグが信号送信される。他の例では、ブロックレベルでのイントラブロックコピーの使用は、参照指標の手法によって信号送信される。復号中の現画像は、その後、参照画像として扱われる。例では、このような参照画像は、参照画像のリストの最後の位置に置かれる。この特別参照画像は、他の時間的な参照画像と一緒に、復号済み画像バッファ(DPB)などのバッファで管理される。
イントラブロックコピーには、反転イントラブロックコピー(参照ブロックが、現在のブロックの予測に使用される前に水平又は垂直に反転される)、又はラインに基づくイントラブロックコピー(M×Nの符号化ブロック内部の各補償ユニットがM×1 又は1×Nライン)などのいくつかの変形がある。
図10は、本開示の実施形態による、イントラブロックコピーの例を示す。現画像(1000)は、復号中である。現画像(1000)は、再構築領域(1010)(点状の領域)と、復号される領域(1020)(白色の領域)とを含む。現在のブロック(1030)は、復号器によって再構築中である。現在のブロック(1030)は、再構築領域(1010)にある参照ブロック(1040)から再構築することができる。参照ブロック(1040)と現在のブロック(1030)との間の位置オフセットは、ブロックベクトル(1050)(又はBV(1050))と呼ばれる。
いくつかの例(例えば、VVC)では、イントラブロックコピーモードの検索範囲は、現在のCTU内にあるように制約される。次に、イントラブロックコピーモードの参照サンプルを記憶するためのメモリ要件は、(最大で)サンプルの1CTUサイズになる。例では、(最大の)CTUのサイズは、128×128サンプルである。いくつかの例では、CTUは、それぞれのサイズが64×64サンプルの4つのブロック領域に分割される。したがって、いくつかの例では、総メモリ(例えば、主記憶装置よりもアクセス速度が高速なキャッシュメモリ)は、128×128のサイズのサンプルを記憶でき、総メモリは、現在のブロック内の64×64領域などの再構築サンプルを記憶するための既存の参照サンプルメモリ部分と、64×64のサイズの他の3つの領域のサンプルを記憶するための追加のメモリ部分とを含む。したがって、いくつかの例では、イントラブロックコピーモードの効果的な検索範囲は左CTUのいくつかの部分に拡張され、その一方で、参照画素を記憶するための総メモリ要件は、変更されないまま維持される(例えば、1CTUサイズ、合計で64×64参照サンプルメモリの4倍)。
いくつかの実施形態では、記憶した参照サンプルを更新するために、左CTUから現在のCTUの再構築サンプルまで更新工程が実行される。具体的には、いくつかの例では、更新工程は、64×64のルマサンプルを基準として行われる。一実施形態では、CTUサイズのメモリ内にある4つの64×64ブロック領域のそれぞれに対し、左CTUの領域内にある参照サンプルを使用して、現在のCTUの同じ領域内にあるいずれかのブロックが符号化中又は符号化済みになるまで、CPRモードで現在のCTU内の符号化ブロックを予測することができる。
図11Aから図11Dは、本開示の実施形態による、イントラブロックコピーモードの効果的な検索範囲の例を示す。いくつかの例では、符号器/復号器は、128×128サンプルなどの1つのCTUのサンプルを記憶できるキャッシュメモリを備え、これは参照サンプルメモリと呼んでもよい。いくつかの実施形態では、参照サンプルメモリは、ブロック領域のユニットに基づいて更新される。CTUは複数のブロック領域を含むことができる。ブロック領域を再構築する前に、ブロック領域の再構築サンプルを記憶するために、参照サンプルメモリ内のメモリ空間が割り当てられリセットされる。図11Aから図11Dの例では、予測するブロック領域のサイズは、64×64サンプルである。これらの例は、他の適切なサイズのブロック領域に適合するように変更できることに留意されたい。
図11Aから図11Dはそれぞれ、現在のCTU(1120)及び左CTU(1110)を示す。左CTU(1110)は、4つのブロック領域(1111)~(1114)を含み、各ブロック領域のサンプルサイズは64×64サンプルである。現在のCTU(1120)は、4つのブロック領域(1121)~(1124)を含み、各ブロック領域のサンプルサイズは64×64サンプルである。現在のCTU(1120)は、再構築中の現在のブロック領域(縦縞模様で示す)を含むCTUである。左CTU(1110)は、現在のCTU(1120)のすぐ左隣にある。図11Aから図11Dでは、灰色のブロックはすでに再構築されたブロック領域であり、白いブロックは再構築されるべきブロック領域であることに留意されたい。
図11Aでは、再構築中の現在のブロック領域は、ブロック領域(1121)である。キャッシュメモリは、ブロック領域(1112)、(1113)、及び(1114)内の再構築サンプルを記憶し、かつキャッシュメモリは、現在のブロック領域(1121)の再構築サンプルを記憶するのに使用される。図11Aの例では、現在のブロック領域(1121)の効果的な検索範囲は、再構築サンプルがキャッシュメモリに記憶された、左CTU(1110)内のブロック領域(1112)、(1113)、及び(1114)を含む。一実施形態では、ブロック領域(1111)の再構築サンプルは、キャッシュメモリよりもアクセス速度が遅いメインメモリに記憶される(例えば、ブロック領域(1121)の再構築前にキャッシュメモリからメインメモリにコピーされる)ことに留意されたい。
図11Bでは、再構築中の現在のブロック領域は、ブロック領域(1122)である。キャッシュメモリは、ブロック領域(1113)、(1114)、及び(1121)内の再構築サンプルを記憶し、かつキャッシュメモリは、現在のブロック領域(1122)の再構築サンプルを記憶するのに使用される。図11Bの例では、現在のブロック領域(1122)の効果的な検索範囲は、再構築サンプルがキャッシュメモリに記憶された、左CTU(1110)内のブロック領域(1113)及び(1114)、並びに現在のCTU(1020)内の(1121)を含む。一実施形態では、ブロック領域(1112)の再構築サンプルは、キャッシュメモリよりもアクセス速度が遅いメインメモリに記憶される(例えば、ブロック領域(1122)の再構築前にキャッシュメモリからメインメモリにコピーされる)ことに留意されたい。
図11Cでは、再構築中の現在のブロック領域は、ブロック領域(1123)である。キャッシュメモリは、ブロック領域(1114)、(1121)、及び(1122)内の再構築サンプルを記憶し、かつキャッシュメモリは、現在のブロック領域(1123)の再構築サンプルを記憶するのに使用される。図11Cの例では、現在のブロック領域(1123)の効果的な検索範囲は、再構築サンプルがキャッシュメモリに記憶された、左CTU(1110)内のブロック領域(1114)、並びに現在のCTU(1120)内の(1121)及び(1122)を含む。一実施形態では、ブロック領域(1113)の再構築サンプルは、キャッシュメモリよりもアクセス速度が遅いメインメモリに記憶される(例えば、ブロック領域(1023)の再構築前にキャッシュメモリからメインメモリにコピーされる)ことに留意されたい。
図11Dでは、再構築中の現在のブロック領域は、ブロック領域(1124)である。キャッシュメモリは、ブロック領域(1121)、(1122)、及び(1123)内の再構築サンプルを記憶し、かつキャッシュメモリは、現在のブロック領域(1124)の再構築サンプルを記憶するのに使用される。図11Dの例では、現在のブロック領域(1124)の効果的な検索範囲は、再構築サンプルがキャッシュメモリに記憶された、現在のCTU(1120)内のブロック(1121)、(1122)、及び(1123)を含む。一実施形態では、ブロック領域(1114)の再構築サンプルは、キャッシュメモリよりもアクセス速度が遅いメインメモリに記憶される(例えば、ブロック領域(1124)の再構築前にキャッシュメモリからメインメモリにコピーされる)ことに留意されたい。
いくつかの例では、後のイントラブロックコピー参照用に、以前に符号化されたCUの参照サンプルを記憶する指定のメモリは、参照サンプルメモリと呼ばれる。VVC標準などの例では、参照サンプルの1つのCTUサイズが指定のメモリサイズとみなされる。いくつかの例では、キャッシュメモリは(最大で)1CTUサイズの総メモリ空間を有する。これらの例は、他の適切なCTUサイズに適合するように調節することができる。いくつかの例では、後のイントラブロックコピー参照用に、以前に符号化されたCUの参照サンプルを記憶するように指定されたキャッシュメモリが、参照サンプルメモリと呼ばれることに留意されたい。
本開示の態様によれば、本開示におけるコロケートブロックとは同サイズの一対のブロックのことをいい、コロケートブロックの一方は以前に符号化されたCTU内にあり、コロケートブロックのもう一方は現在のCTU内にあり、対の一方のブロックは、対になっている他方のブロックの照合ブロックと呼ばれる。さらに、メモリバッファサイズが最大サイズ(例えば、128×128)のCTUを記憶するように設計されているときは、以前のCTUとは、例では現在のCTUの左にオフセットされた、CTUの幅1つ分のルマサンプルを有するCTUのことをいう。また、これら2つのコロケートブロックはそれぞれ、それら自身のCTUの左上隅については同じ位置オフセット値を有する。あるいは言い換えれば、コロケートブロックとは、画像の左上隅に関して同じy座標を有する2つのブロックであるが、いくつかの例では、x座標においてはCTU幅に互いに差がある。
図12は、本開示のいくつかの実施形態による、コロケートブロックの例を示す。図12の例では、復号中の現在のCTU及び左CTUが示されている。再構築された領域は灰色で示され、再構築されるべき領域は白で示されている。図12は、復号中のイントラブロックコピーモードにおける、現在のブロックに対する、左CTUの参照ブロックの3つの例を示す。3つの例は、参照ブロック1、参照ブロック2、及び参照ブロック3として図示されている。図12は、参照ブロック1に対するコロケートブロック1、参照ブロック2に対するコロケートブロック2、及び参照ブロック3に対するコロケートブロック3、をさらに示す。図12の例では、参照サンプルメモリサイズはCTUサイズである。現在のCTU及び左CTUの再構築サンプルは、相補的な方法で参照サンプルメモリに記憶される。現在のCTUの再構築サンプルが参照サンプルメモリに書き込まれると、再構築サンプルは、左CTU内のコロケートサンプルの場所に書き込まれる。例では、参照ブロック3の場合、現在のCTU内のコロケートブロック3がまだ再構築されていないために、参照ブロック3は、参照サンプルメモリで見出すことができる。参照サンプルメモリは、左CTUの参照ブロック3のサンプルをまだ記憶しており、参照ブロック3のサンプルを検索するために高速でアクセスでき、参照ブロック3は、例では、イントラブロックコピーモードで現在のブロックを再構築するために使用することができる。
別の例において、参照ブロック1の場合、現在のCTU内のコロケートブロック1は再構築が完了しており、したがって参照サンプルメモリはコロケートブロック1のサンプルを記憶し、参照ブロック1のサンプルは、例えば、参照サンプルメモリに比べて比較的高遅延のオフチップ記憶装置に記憶されている。したがって、例では参照ブロック1は参照サンプルメモリ内には見出せず、例では参照ブロック1は、イントラブロックコピーモードで現在のブロックを再構築するために使用することはできない。
同様に別の例において、参照ブロック2の場合、現在のCTU内のコロケートブロック2がまだ再構築されていない場合であっても、メモリ更新の例ではコロケートブロック2を含む64×64ブロック領域を全体として考えるので、参照ブロック2は、イントラブロックコピーモードで現在のブロックを再構築するのに有効な参照ブロックではない。
一般に、イントラブロックコピーモードでは、以前に復号されたCTU内の参照ブロックの場合、現在のCTU内のコロケートブロックがまだ再構築されていないときは、参照ブロックのサンプルは参照サンプルメモリ内で使用可能であり、参照サンプルメモリは、イントラブロックコピーモードでの再構築の参照として使用する、参照ブロックのサンプルを検索するためにアクセスすることができる。
上述した例では、参照ブロックの左上隅のコロケートサンプルとも呼ばれる、現在のCTU内のコロケートブロックの左上隅のサンプルが、確認されることに留意されたい。現在のCTU内のコロケートサンプルがまだ再構築されていないときは、参照ブロックの残りのサンプルは、すべてイントラブロックコピーにおける参照として使用可能である。
いくつかの実施形態では、有効な参照ブロック領域を決定するために、CTUがブロック領域に分割されてもよい。例えば、128×128のCTUは、4つの64×64ブロック領域に分割される。例では、参照ブロック2の場合、現在のCTU内のコロケートブロック2がまだ再構築されていない場合であっても、コロケートブロック2の全64×64ブロック領域(1201)を全体として考えるならば、参照ブロック2は有効な参照ブロックにならない場合がある。例えば、コロケートブロック2が属する64×64ブロック領域(1201)(現在のCTUの右上の64×64領域)の左上隅(1202)を確認すると、その左上隅(1202)は再構築されるものとみなされるため、参照ブロック2が属する64×64ブロック領域(1203)全体が参照ブロック領域として使用できなくなる。
参照サンプルメモリサイズがCTUサイズよりも大きいときは、イントラブロックコピー用の参照サンプルを記憶するために、左側に1つよりも多いCTUが使用されてもよい。例えば、CTUサイズが64×64で参照メモリサイズが128×128のときは、現在のCTUに加えて3つの左CTUが、イントラブロックコピーの有効な参照領域とみなされてもよい。
上述した例では、参照サンプルメモリのメモリサイズは1つのCTUのサイズであり、したがって以前に復号されたCTUとは、現在のCTUのすぐ左にあるCTUを示すことにも留意されたい。
本開示の態様によれば、参照サンプルメモリのメモリサイズは、1つのCTUのサイズよりも大きくすることができる。
本開示のいくつかの態様によれば、有効な検索範囲については、ビットストリーム適合性のために、ルマブロックベクトルmvLが一定の制約に従う必要がある。例では、現在のCTBは複数のルマサンプルを含むルマCTBであり、ブロックベクトルmvLは、以下のビットストリーム適合性のための制約を満たす。
いくつかの例では、現在のブロックのための参照ブロックが必ず再構築されるように、第1の制約が使用される。参照ブロックの形状が長方形のときは、参照ブロック可用性確認工程を実施して、参照ブロックの左上サンプルと右下サンプルとが再構築されているかどうかを確認することができる。参照ブロックの左上サンプルと右下サンプルとが両方とも再構築されていれば、参照ブロックは再構築されていると判定される。
例えば、参照ブロックの再構築済みの左上サンプルは、使用可能でなければならない。いくつかの例では、ブロック可用性の導出工程を呼び出すことができ、導出工程は、現在のルマ位置及び隣接するルマ位置を入力として受信して、隣接するルマ位置にあるサンプルが再構築されているかどうかを示す出力を生成することができる。例えば、出力がTRUEのときは入力位置のサンプルは再構築されたものであり、出力がFALSEのときは、入力位置のサンプルはまだ再構築されていない。
通常は、現在のルマ位置は(xCb,yCb)に設定され、これは現在のブロックの左上サンプルの位置である。また、mvLはブロックベクトルを表し、mvL[0]はブロックベクトルのx成分を表し、mvL[1]はy成分表す。いくつかの例では、x成分及びy成分は、1/16のインターサンプル精度で記憶され、したがってx成分及びy成分は、画素の分数部分の4ビットを有することができる。次に、インター部分を取得するために、x成分及びy成分は4つ分右へ移動する。現在のルマ位置(xCurr,yCurr)は、現在のブロック(xCb,yCb)の左上サンプルになるように設定され、隣接するルマ位置は、(xCb+(mvL[0]>>4),yCb+(mvL[1]>>4))で表すことができ、これは、参照ブロックの左上サンプルの位置である。例では、参照ブロック可用性の導出工程が呼び出され、出力がTRUEのときは、参照ブロックの左上サンプルの位置が入力として使用され、参照ブロックの左上サンプルが再構築される。
同様に、参照ブロックの再構築済みの右下サンプルが使用可能でなければならない。いくつかの例では、ブロック可用性の導出工程を呼び出すことができ、導出工程に対する入力は、参照ブロックの右下サンプルの位置を含む。例えば、現在のルマ位置は(xCb,yCb)に設定され、現在のブロック及び参照ブロックの幅はcbWidthで表され、現在のブロック及び参照ブロックの高さはcbHeightで表される。次に、参照ブロックの右下サンプルの位置は、(xCb+(mvL[0]>>4)+cbWidth-1,yCb+(mvL[1]>>4)+cbHeight-1)である。右下サンプルの位置は、ブロック可用性の導出工程に対する入力であり、出力がTRUEのときは、参照ブロックの右下サンプルが再構築される。
いくつかの例では、第2の制約は、参照ブロックが現在のブロックの左及び/又は上にあり、現在のブロックと重ならないようにする。第2の制約は、以下の2つの条件の少なくとも1つをさらに含むことができる。1)(mvL[0]>>4)+cbWidthの値が0以下。これは、参照ブロックが現在のブロックの左にあり、かつ現在のブロックと重ならないことを示す。2)(mvL[1]>>4)+cbHeightの値が0以下。これは、参照ブロックが現在のブロックの上方にあり、かつ現在のブロックと重ならないことを示す。
第3の制約は、参照ブロックが適切な検索範囲内にあるようにする。いくつかの例では、3番目の制約は、ブロックベクトルmvLが、
(yCb+(mvL[1]>>4))>>CtbLog2SizeY=yCb>>CtbLog2SizeY (式1)
(yCb+(mvL[1]>>4+cbHeight-1)>>CtbLog2SizeY=yCb>>CtbLog2SizeY (式2)
(xCb+(mvL[0]>>4))>>CtbLog2SizeY>=(xCb>>CtbLog2SizeY)-(1<<((7-CtbLog2SizeY)<<1)))+Min(1,7-CtbLog2SizeY) (式3)
(xCb+(mvL[0]>>4)+cbWidth-1)>>CtbLog2SizeY<=(xCb>>CtbLog2SizeY) (式4)
という条件を満たすことを含むことができ、ここでパラメータCtbLog2SizeYは、log2形式のCTBサイズ(例えば、高さ又は幅)を表す。例えば、CTB高さが128サンプルのときは、CtbLog2SizeYは7である。式1及び式2は、参照ブロックが以前に再構築されたCTBにあるときは、参照ブロックを含むCTBが現在のCTBと同じCTB行にある(すなわち、以前に再構築されたCTBが、現在のCTBと同じ行にある)ことを示す。式3及び式4は、参照ブロックを含むCTBが現在のCTBの左CTB列、又は現在のCTBと同じCTB列のいずれかにあることを示す。式1~式4で説明した条件は、参照ブロックを含むCTBが、現在のCTB、又は現在のCTBの左隣(例えば、以前に再構築されたCTB)のいずれかであることを示す。
第4の制約は、参照ブロックが参照サンプルメモリに記憶されるようにする、言い換えれば、参照ブロックのコロケートブロックが再構築されていないようにする。いくつかの例では、第4の制約は、参照ブロックが現在のCTBの左隣にあるときは、参照ブロックのコロケート領域は再構築されない(すなわち、コロケート領域内のサンプルが再構築されていない)という条件を含むことができる。また、参照ブロックのコロケート領域は、現在のCTB内にある。
例では、上述した条件は、(xCb+(mvL[0]>>4))>>CtbLog2SizeY is equal to(xCb>>CtbLog2SizeY)-1であり、かつCtbLog2SizeYが7であれば、参照ブロック可用性の導出工程が呼び出されることを示すことができる。現在のルマ位置(xCurr,yCurr)に対する入力は、(xCb,yCb)になるように設定され、隣接するルマ位置に対する入力は、(((xCb+(mvL[0]>>4)+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1),((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))である。導出工程の出力がFALSEのときは、コロケート領域は再構築されていない。また、ルマ位置(((xCb+(mvL[0]>>4)+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1),((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))は、(xCb,yCb)にはならないものとする。
本開示のいくつかの態様によれば、いくつかの符号化技術では柔軟な符号化順を使用することができる。いくつかの例では、CTUは、4分木構造、2分木構造、又は3分木構造によって再帰的に分割される。さらに2つ、3つ、又は4つのユニットに分割される分割工程におけるユニットは、分割ユニット(SU)と呼ばれる。通常は、分割ユニットの符号化順は、4分木構造のzスキャン順序、及び画像内のCTUのラスタースキャンにより、左から右、及び上から下になる。しかしながら、通常の左から右への符号化順は、右に傾斜した特徴(right inclined features)よりも左に傾斜した特徴(left inclined features)に対してより有利である。右に傾斜した特徴を有する場合、イントラ予測に限らずインター予測ブロックにおいても、左及び上の近隣ブロックからは同様の動き情報を見出すことができない。
いくつかの例では、分割ユニット符号化順(SUCO)と呼ばれる技術を使用することができる。SUCOは、右参照画素からのイントラ予測、及び右動きベクトル予測子を用いたインター予測が可能になるように、左から右(L2R)及び右から左(R2L)など、符号化順をより柔軟にすることができる。いくつかの例では、SUが垂直に分割された場合は、L2R又はR2L符号化順を示すためにフラグが信号送信される。また、SUが4分木構造によって分割された場合は、上の2つのユニットと下の2つのユニットとにフラグが共有される。SUの符号化順のフラグが信号送信されない場合、そのSUの次の符号化順は、暗黙的に以前のレベルのSUから継承される。
図13は、分割及び符号化順の例を示す。例えば、分割ユニット(1310)は、2分木(BT)構造、3分木(TT)構造、及び4分木(QT)構造に従って分割でき、左から右(L2R)の順、又は右から左(R2L)の順に適切に符号化することができる。
例えば、分割ユニット(1310)は、BT構造に従って、ユニット(1321)と(1322)とに垂直に分割される。ユニット1321及び1322は、L2R順又はR2L順で符号化することができる。分割ユニット(1310)は、BT構造に従って、ユニット(1331)と(1332)とに水平に分割される。ユニット(1331)及び(1332)は、通常は上から下の順で符号化される。
別の例では、分割ユニット(1310)は、TT構造に従って、ユニット(1341)~(1343)に垂直に分割される。ユニット(1341)~(1343)は、L2R順又はR2L順で符号化することができる。分割ユニット(1310)は、ユニット(1351)~(1352)に水平に分割される。ユニット(1351)~(1353)は、通常は上から下の順で符号化される。
別の例では、分割ユニット(1310)は、QT構造に従って、ユニット(1361)~(1364)に分割される。L2R順の場合、ユニット(1361)~(1364)は、(1361)、(1362)、(1363)、そして(1364)の順に符号化される。R2L順の場合、ユニット(1361)~(1364)は、(1362)、(1361)、(1364)、そして(1363)の順に符号化される。
図14は、CTU内のSUCOの例を示す。図14の例では、CTU(1410)は、ツリー構造(1450)に従って分割される。CTU(1410)は、ユニットS1とも呼ばれる。ユニットS1は、QT構造に従ってユニットS21~S24に分割され、R2L順で符号化される。ユニットS21は、BT構造に従って、ユニットS31~S32に水平に分割される。ユニットS31は、TT構造に従ってユニットS41~S43に垂直に分割され、R2L順で符号化される。ユニットS32は、BT構造に従ってユニットS44~S45に垂直に分割されL2R順で符号化される。ユニットS45は、BT構造に従って、ユニットS51~S52に水平に分割される。ユニットS52は、BT構造に従ってユニットS61~S62に垂直に分割されL2R順で符号化される。図14の例では、ユニットがさらに分割されると、ユニットは分割ユニット(SU)と呼ぶことができる。ユニットがそれ以上分割されないときは、ユニットはリーフCUと呼ぶことができる。
図14の例では、SUレベルでの柔軟な符号化順によって、リーフCUの近隣の可用性は、HEVCにおける一般的な左隣及び上隣より多様になる。例えば、左及び右隣のブロックを考えただけでも4つの可用性の事例がある。具体的には、LR_10と呼ばれる第1の事例では、左隣のブロックが使用可で右隣のブロックは使用不可であり、LR_01と呼ばれる第2の事例では、左隣のブロックが使用不可で右隣のブロックは使用可であり、LR_11と呼ばれる第3の事例では、左隣のブロック及び右隣のブロックが両方とも使用可であり、LR_00と呼ばれる第4の事例では、左隣のブロック及び右隣のブロックの両方が使用不可である。上のブロックは、現在のCUがスライスの上の境界にない限り、常に使用可である。左上隅又は右上隅のブロックの可用性は、対応する左隣又は右隣の可用性に依存する。
SUCOが使用されると、符号化順及び隣接画素の可用性はさらに複雑になる。本開示の態様は、イントラブロックコピーの使用に特定の参照サンプルメモリサイズが割り当てられるものとして、SUCO使用時にイントラブロックコピーの検索範囲を指定する技術を提供する。
提案する方法は、個別に、又は任意の順序で組み合わせて使用されてもよい。また、方法(又は実施形態)、符号器、及び復号器はそれぞれ、処理回路(例えば、1つ以上のプロセッサ又は1つ以上の集積回路)によって実施されてもよい。一例では、1つ以上のプロセッサは、非一時的なコンピュータ可読媒体に記憶されているプログラムを実行する。以下、ブロックという用語は、予測ブロック、符号化ブロック、又は符号化ユニットすなわちCUと解釈されてもよい。
以下の記述において、参照サンプルメモリの更新は、64×64ブロック領域に基づいていることに留意されたい。しかしながら、開示されている技術は、このようなサイズに限定されず、参照サンプルメモリ配置の他のパターンも適用することができる。
現在の符号化ブロックに対してSUCOが使用されると、現在のブロックの左隣のブロックの前に、右隣のブロックが符号化され得る。64×64ブロック領域がまだ符号化されていないかどうかを確認するには、その左上隅及び右上隅の両方を確認する必要がある。いくつかの例では、64×64ブロック領域がまだ再構築されていないのは、その左上隅及び右上隅のいずれもがまだ再構築されていないときのみである。
参照ブロックの通常の可用性条件として、参照ブロックは現在の符号化ブロックの外部になければならない。例えば、SUCO使用時は、参照ブロックが現在のブロックの上にある、又は参照ブロックが現在のブロックの左にある、又は参照ブロックが現在のブロックの右にある。
名前を付ける目的で、現在の64×64ブロック領域と比較して左方に1CTUのオフセットを有する64×64ブロック領域は、コロケート64×64領域と呼ばれる。いくつかの実施形態では、参照サンプルメモリサイズが1CTUの大きさのとき、左CTUからきた参照ブロックが有効かどうかを確認するためには、現在のCTU内の対応するコロケート64×64ブロック領域の左上隅(その参照ブロックの左上隅のコロケート位置が属する)がまだ符号化されていないことが確認され、現在のCTU内の同じコロケート64×64ブロック領域の右上隅もまた、まだ符号化されていないことが確認される必要がある。
いくつかの実施形態では、参照ブロックの右上隅が、左CTU内の別の64×64ブロック領域に配置されてもよいと考えると、参照ブロックの左上隅との比較において、現在のCTU内の(参照ブロックの右上隅に対する)コロケート64×64ブロック領域が符号化されていないことを保証するためには、参照ブロックの右上隅に同様の確認を実行する必要がある。これを行うためには、現在のCTU内のコロケート64×64領域の、左上隅及び右上隅の両方を確認する必要があろう。
これとは別に、現在のCTUにおける現在の64×64領域の最初の符号化ブロックが、左CTUにおけるそのコロケート64×64ブロック領域を参照する可能性をなくすためには、左CTU内の参照ブロックが属する64×64ブロック領域の座標を確認する必要がある。現在のブロックの左上の位置が、参照64×64ブロック領域の左上隅とコロケート位置でないことの確認に加えて、現在のブロックの右上の位置も、参照64×64ブロック領域の右上隅とコロケート位置でないものとする。
図15は、イントラ画像ブロック補償に対する参照検索範囲の制約の例を示す。SUCOを使用しない場合は、符号化順は左から右、上から下である。したがって、ブロックの左上の位置が符号化されていないときは、残りのブロックも符号化されていない。SUCOを使用しない場合は、左CTU内の参照ブロックの位置が有効である(参照ブロックのサンプルが参照サンプルメモリに記憶される)ことを確認するために、確認工程で参照ブロックの左上の位置が確認される。例えば、参照ブロックの左上の位置が、CTU幅(例えば、128)だけ現在のCTU内のコロケート点へ右にシフトされ、コロケート点を含むコロケート64×64ブロック領域(参照サンプルメモリの更新に対応)が決定される。次に、コロケート64×64ブロック領域の左上の位置が確認される。コロケート64×64ブロック領域の左上の位置がまだ符号化されていないときは、SUCOを使用しない状況において参照ブロックは有効である。
SUCOを使用する場合は、より多くの確認が行われる。図15の例では、左CTUは、A’、B’、C’及びD’と標識された4つの64×64ブロック領域などの、参照サンプルメモリ用の複数の更新ユニットを含み、現在のCTUは、A、B、C及びDと標識された4つの64×64ブロック領域などの、参照サンプルメモリ用の複数の更新ユニットを含んでいる。例では、現在のCTUの右上の64×64ブロック領域Bが最初に符号化され、したがって参照サンプルメモリは、A’、C’、D’及びBの領域のサンプルを記憶する。現在のブロックは、現在のCTUの左上の64×64ブロック領域Aにおける最初の符号化ブロックである。メモリ更新工程の要件に従って、左上の64×64ブロック領域全体を記憶するためのメモリ空間がリセットされるので、左CTUの左上の64×64ブロック領域A’にある参照サンプルは、使用することができなくなる。
例では、SUCOなしで確認工程を使用し、ブロック領域Aをコロケート64×64ブロック領域と判定するために、参照ブロック1の左上の位置が、例えば128だけ右にシフトされる。次に、図5に(1501)で示す、ブロック領域Aの左上の位置が確認される。例では、領域Aの左上の位置がまだ符号化されていないために、SUCOなしの確認工程のみを使用して、誤った決定(参照ブロック1が有効)がなされている場合がある。
このような問題を克服するために、確認をさらに続けることができる。例えば、図15に符号(1502)で示されている領域Aの右上隅を確認でき、領域Aの右上隅は、参照ブロック1が有効と判定するために、符号化されないことが必要になる。別の例では、参照ブロック1が有効と判定するために、ブロック領域Aの右上隅が、参照ブロックの64×64領域(A’)の右上隅のコロケート位置ではないことが確認される。領域Aの右上隅は、参照ブロックの64×64領域(A’)の右上隅のコロケート位置なので、この判定を下すことはできない。
いくつかの例では、参照ブロックは複数の64×64領域にまたがって配置されてもよく、参照ブロックの右上隅で同様の確認が行われる。例えば、参照ブロック2は、C’とD’とにまたがって配置されている。参照ブロック2の左上隅はブロック領域C’内にあり、参照ブロック2の右上隅はブロック領域D’内にある。参照ブロック2の左上隅は、コロケートブロック領域Cを見出すために使用される。次に、参照ブロックの有効性について、領域Cの左上隅(図15に(1503)で示す)及び右上隅(図15に(1504)で示す)が確認される。領域Cの左上隅(図15に(1503)で示す)及び右上隅(図15に(1504)で示す)がまだ符号化されていなければ、参照ブロック2は有効とすることができる。参照ブロック2の右上隅は、コロケート領域Dを見出すために使用される。次に、参照ブロックの有効性について、領域Dの左上隅(図15に(1505)で示す)及び右上隅(図15に(1506)で示す)が確認される。領域Dの左上隅(1505)及び右上隅(1506)がまだ符号化されていなければ、参照ブロック2は有効とすることができる。
本開示のいくつかの態様によれば、有効な検索範囲に対してSUCOが使用されると、ビットストリーム適合性のために、ルマブロックベクトルmvLが一定の制約に従う必要がある。例では、現在のCTBは複数のルマサンプルを含むルマCTBであり、ブロックベクトルmvLは、SUCO使用時は以下のビットストリーム適合性の制約を満たす。
いくつかの例では、現在のブロックの参照ブロックが再構築されていることを保証するために、第1の制約が使用される。参照ブロックの形状が長方形のときは、参照ブロック可用性確認工程を実施して、参照ブロックの左上サンプルと右下サンプルとが再構築されているかどうかを確認することができる。参照ブロックの左上サンプルと右下サンプルとが両方とも再構築されていれば、参照ブロックは再構築されていると判定される。
例えば、参照ブロックの再構築済みの左上サンプルは、使用可能でなければならない。いくつかの例では、ブロック可用性の導出工程を呼び出すことができ、導出工程は、現在のルマ位置及び隣接するルマ位置を入力として受信して、隣接するルマ位置にあるサンプルが再構築されているかどうかを示す出力を生成することができる。例えば、出力がTRUEのときは入力位置のサンプルは再構築されたものであり、出力がFALSEのときは、入力位置のサンプルはまだ再構築されていない。
通常は、現在のルマ位置(xCurr,yCurr)は(xCb,yCb)に設定され、これは現在のブロックの左上サンプルの位置である。また、mvLはブロックベクトルを表し、mvL[0]はブロックベクトルのx成分を表し、mvL[1]はy成分を表し、x成分及びy成分は、画素単位で、解像度の分数部分の4ビットを有することができる。現在のルマ位置(xCurr,yCurr)は、現在のブロック(xCb,yCb)の左上サンプルになるように設定され、隣接するルマ位置は、(xCb+(mvL[0]>>4),yCb+(mvL[1]>>4))で表すことができ、これは、参照ブロックの左上サンプルの位置である。例では、参照ブロック可用性の導出工程が呼び出され、出力がTRUEのときは、参照ブロックの左上サンプルの位置が入力として使用され、参照ブロックの左上サンプルが再構築される。
同様に、参照ブロックの再構築済みの右下サンプルが使用可能でなければならない。いくつかの例では、ブロック可用性の導出工程を呼び出すことができ、導出工程に対する入力は、参照ブロックの右下サンプルの位置を含む。例えば、現在のルマ位置は(xCb,yCb)に設定され、現在のブロック及び参照ブロックの幅はcbWidthで表され、現在のブロック及び参照ブロックの高さはcbHeightで表される。次に、参照ブロックの右下サンプルの位置は、(xCb+(mvL[0]>>4)+cbWidth-1,yCb+(mvL[1]>>4)+cbHeight-1)である。右下サンプルの位置は、ブロック可用性の導出工程に対する入力であり、出力がTRUEのときは、参照ブロックの右下サンプルが再構築される。
いくつかの例では、第2の制約は、参照ブロックが現在のブロックの左及び/又は上にあり、かつ/あるいは現在のブロックの右にあって、現在のブロックと重ならないようにする。第2の制約は、以下の3つの条件の少なくとも1つをさらに含むことができる。1)(mvL[0]>>4)+cbWidthの値が0以下。これは、参照ブロックが現在のブロックの左にあって現在のブロックと重ならないことを示す。2)(mvL[1]>>4)+cbHeightの値が0以下。これは、参照ブロックが現在のブロックの上にあって現在のブロックと重ならないことを示す。3)(mvL[0]>>4)の値がcbWidth以上。これは、参照ブロックが現在のブロックの右にあって現在のブロックと重ならないことを示す。
第3の制約は、参照ブロックが適切な検索範囲内にあるようにする。いくつかの例では、第3の制約は、ブロックベクトルmvLが(式1)~(式4)の条件を満たすことをさらに含むことができる。式1及び式2は、参照ブロックが以前に再構築されたCTBにあるときは、参照ブロックを含むCTBが現在のCTBと同じCTB行にある(すなわち、以前に再構築されたCTBが、現在のCTBと同じ行にある)ことを示す。式3及び式4は、参照ブロックを含むCTBが現在のCTBの左CTB列、又は現在のCTBと同じCTB列のいずれかにあることを示す。式1~式4で説明した条件は、参照ブロックを含むCTBが、現在のCTB、又は以前に再構築されたCTBなどの、現在のCTBの左隣(「左CTB」)のいずれかであることを示す。
第4の制約は、参照ブロックが参照サンプルメモリに記憶されるようにする、言い換えれば、参照ブロックのコロケートブロックが再構築されていないようにする。いくつかの例では、第4の制約は、参照ブロックが現在のCTBの左隣にあるときは、参照ブロックのコロケート領域は再構築されない(すなわち、コロケート領域内のサンプルが再構築されていない)という条件を含むことができる。また、参照ブロックのコロケート領域は、現在のCTB内にある。
例では、上述した条件は、(xCb+(mvL[0]>>4))>>CtbLog2SizeY is equal to(xCb>>CtbLog2SizeY)-1であり、かつCtbLog2SizeYが7であれば、参照ブロック可用性の導出工程が呼び出されることを示すことができる。現在のルマ位置(xCurr,yCurr)に対する入力は、(xCb,yCb)になるように設定され、隣接するルマ位置に対する入力は、(((xCb+(mvL[0]>>4)+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1),((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))である。導出工程の出力がFALSEのときは、コロケート領域は再構築されていない。また、ルマ位置(((xCb+(mvL[0]>>4)+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1),((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))は、(xCb,yCb)にはならないものとする。
第5の制約は、SUCO使用時に参照ブロックが参照サンプルメモリに記憶されるようにする、言い換えれば、参照ブロックのコロケートブロック領域(例えば、いくつかの例では64×64ブロック領域)が再構築されていないことを保証する。いくつかの例では、第5の制約は、参照ブロックが現在のCTBの左隣にあるときは、参照ブロックのコロケートブロック領域は再構築されない(すなわちコロケートブロック領域内のサンプルが再構築されていない)という条件を含むことができる。また、参照ブロックのコロケートブロック領域は、現在のCTB内にある。
いくつかの実施形態では、SUCOが使用され、(xCb+(mvL[0]>>4))>>CtbLog2SizeYが(xCb>>CtbLog2SizeY)-1になるとき(参照ブロックが現在のCTBの左CTBにあることを意味する)は、以下の条件がTRUEであるものとする。以下の記述はCtbLog2SizeYが7であることに基づいているが、開示されている技術は他の適切なCTBサイズに使用できることに留意されたい。
第5の制約は、参照ブロックの左上隅に対するコロケート64×64ブロック領域の右上隅が、符号化されていないことを保証するための条件を含む。例えば、ブロック可用性のための導出工程が呼び出される。入力は、(xCb,yCb)に設定された現在のルマ位置(xCurr,yCurr)と、参照ブロックの左上隅に対する、コロケート64×64ブロック領域の右上隅(例えば、図15の参照ブロック2の(1504))であり、(((xCb+(mvL[0]>>4)+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1)+CtbSizeY/2-1,((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))で表される、隣接するルマ位置とを含む。導出工程の出力がFALSEのときは、参照ブロックの左上隅に対するコロケート64×64領域の右上隅は符号化されていない。
第5の制約は、参照ブロックの左上隅に対するコロケート64×64ブロック領域の右上隅が、現在のブロックの右上隅でないことを保証するための条件を含む。例えば、ルマ位置(((xCb+(mvL[0]>>4)+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1)+CtbSizeY/2-1,((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))は、参照ブロックの左上隅に対するコロケート64×64領域の右上隅であり、現在のブロックの右上隅である(xCb+cbWidth-1,yCb)にはならないものとする。
第5の制約は、参照ブロックの右上隅に対するコロケート64×64ブロック領域の左上隅が、符号化されていないことを保証するための条件を含む。例では、ブロック可用性のための導出工程が呼び出される。導出工程に対する入力は、(xCb,yCb)になるように設定された現在のルマ位置(xCurr,yCurr)と、参照ブロックの右上隅(例えば、図15の参照ブロック2の(1505))に対して、コロケート64×64領域の左上隅に設定され、(((xCb+(mvL[0]>>4)+cbWidth-1+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1),((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))で表すことができる、隣接するルマ位置とを含む。導出工程の出力がFALSEのときは、参照ブロックの右上隅に対するコロケート64×64領域の左上隅は符号化されていない。
第5の制約は、参照ブロックの右上隅に対するコロケート64×64領域の左上隅が、現在のブロックの右上でないことを保証するための条件を含む。例えば、ルマ位置(((xCb+(mvL[0]>>4)+cbWidth-1+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1),((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))は、(xCb+cbWidth-1,yCb)にはならないものとする。
第5の制約は、参照ブロックの右上隅に対するコロケート64×64ブロック領域の右上隅が、符号化されていないことを保証するための条件を含む。例えば、ブロック可用性のための導出工程が呼び出される。導出工程に対する入力は、(xCb,yCb)になるように設定された現在のルマ位置(xCurr,yCurr)と、参照ブロックの右上隅(例えば、参照ブロック2の(1506))に対して、コロケート64×64ブロック領域の右上隅であり、(((xCb+(mvL[0]>>4)+cbWidth-1+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1)+CtbSizeY/2-1,((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))で表すことができる、隣接するルマ位置とを含む。出力がFALSEのときは、参照ブロックの右上隅に対するコロケート64×64領域の右上隅は符号化されていない。
第5の制約は、参照ブロックの右上隅に対するコロケート64×64領域の右上隅が、現在のブロックの右上でないことを保証するための条件を含む。例えば、ルマ位置(((xCb+(mvL[0]>>4)+cbWidth-1+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1)+CtbSizeY/2-1,((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1))は、(xCb+cbWidth-1,yCb)にはならないものとする。
上記の記載において、ブロックベクトル成分(例えば、mvL[0]及びmvL[1])は、1/16整数サンプル精度の画素の分数部分を表すために4ビットを含み、従ってブロックベクトル成分は右に4だけシフトする。ブロックベクトルが1整数サンプル精度で記憶されているときは、シフト動作は必要ない。また、他のサンプル精度用に、動作の詳細を調節してもよい。
いくつかの実施形態では、SUCOが可能な最大ブロックサイズは、IBCが可能なときは、64×64よりも大きくならないように制約される。
いくつかの実施形態では、現在のCTUサイズは、可能な最大参照メモリバッファサイズ(本開示では、この最大サイズは、128×128ルマサンプルなど、最大限可能なCTUサイズとされる)よりも小さく、したがって参照サンプルメモリは、参照サンプルの複数のCTUサイズを記憶することができる。
図16は、参照サンプルメモリにおける複数のCTUの例を示す。図16の例では、参照サンプルメモリサイズは128×128であり、CTUサイズは64×64である。次に、現在のCTUに加えて、参照サンプルの左の3つのCTUは、追加の条件確認をすることなく、参照サンプルメモリ内で完全に使用可能である。さらに、4番目の左CTUは、上述したものと同様の論理(4番目の左CTUのサンプルを記憶するメモリが、現在のCTUのサンプルによって更新されているかどうかを確認する)を用いて、条件によって使用可能になり得る。
図17は、本開示の実施形態による工程(1700)を概説したフローチャートを示す。工程(1700)はブロックの再構築に使用でき、したがって再構築中のブロックに対する予測ブロックを生成する。さまざまな実施形態において、工程(1700)は、端末装置(410)、(420)、(430)、及び(440)内の処理回路、映像符号器(503)の機能を実行する処理回路、映像復号器(510)の機能を実行する処理回路、映像復号器(610)の機能を実行する処理回路、映像符号器(703)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態では、工程(1700)はソフトウェア命令で実施され、したがって処理回路がソフトウェア命令を実行すると、処理回路は工程(1700)を実行する。工程は、ステップ(S1701)から開始して、ステップ(S1710)に進む。
ステップ(S1710)において、符号化された映像ビットストリームから、現在のブロックの予測情報が復号される。予測情報は、イントラブロックコピーモードを示す。現在のブロックは、CTB内の複数の符号化ブロックのうちの1つであり、現在のCTB内で可能な右から左への符号化順を有する。例えば、現在のCTB内で柔軟な符号化順を可能にするために、SUCOが使用される。
ステップ(S1720)において、ブロックベクトルが決定される。ブロックベクトルは、現在のブロックと同じ画像内の参照ブロックを指す。
ステップ(S1730)において、参照ブロックの最左サンプルの右にあるサンプルが、参照サンプルメモリ内でバッファリングされるという判定に少なくとも基づいて、参照ブロックを参照サンプルメモリ内でバッファリングされるようにする。いくつかの例では、参照ブロックが参照サンプルメモリ内でバッファリングされるようにするために、第5の制約が適用される。いくつかの実施形態では、参照ブロックの右上隅にあるサンプルが、参照サンプルメモリ内でバッファリングされると判定される。一実施形態では、現在のCTB内のコロケート領域が決定される。コロケート領域は、左CTB内で参照ブロックの右上隅にあるサンプルに対する、コロケートサンプルを含む。次に、コロケート領域が符号化されていないことが確認される。例では、現在のCTB内のコロケート領域の左上隅が、符号化されていないことが確認される。さらに、現在のCTB内のコロケート領域の右上隅が、符号化されていないことが確認される。参照ブロックが有効になるように、他の適切な条件が確認されてもよい。
ステップ(S1740)において、参照ブロックの再構築サンプルに基づいて、現在のブロックのサンプルが再構築される。再構築サンプルは、参照サンプルメモリから検索される。その後、工程はステップ(S1799)に進んで終了する。
前述した技術は、コンピュータ可読命令を使用するコンピュータソフトウェアとして実施でき、1つ以上のコンピュータ可読媒体に物理的に記憶される。例えば、図18は、開示される主題のいくつかの実施形態の実施に適したコンピュータシステム(1800)を示す。
コンピュータソフトウェアは、任意の適切な機械コード又はコンピュータ言語を使用して符号化でき、これは、1つ以上のコンピュータ中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)などによって、直接、又は解釈、マイクロコードの実行などを介して実行できる命令を含むコードを作成するために、アセンブリ、コンパイル、リンクなどの機構に従ってもよい。
命令は、パソコン、タブレットコンピュータ、サーバ、スマートフォン、ゲーム機、IoT(internet of things)装置など、さまざまな種類のコンピュータ又はその構成要素で実行することができる。
図18に示すコンピュータシステム(1800)の構成要素は本来例示的であって、本開示の実施形態を実施するコンピュータソフトウェアの使用又は機能の範囲に対して、限定を示唆することは意図されていない。構成要素の構成は、コンピュータシステム(1800)の例示的な実施形態に示されている構成要素のいずれか1つ、又は構成要素の組合せに関して、依存性を有するものとも要件を有するものとも解釈されてはならない。
コンピュータシステム(1800)は、いくつかの人的インターフェース入力装置を備えてもよい。このような人的インターフェース入力装置は、例えば、触覚入力(キーを押す、スワイプする、データグローブを動かすなど)、音声入力(声、手をたたくなど)、視覚入力(身振りなど)、嗅覚入力(図示せず)による、1人以上のユーザによる入力に応答し得る。人的インターフェース装置は、音声(発話、音楽、周囲音など)、画像(走査画像、静止画像カメラで取得される写真画像など)、映像(二次元映像、立体映像を含む三次元映像など)などの人による意識的な入力に必ずしも直接関与しない、いくつかの媒体の捕捉にさらに使用することができる。
入力人的インターフェース装置は、キーボード(1801)、マウス(1802)、トラックパッド(1803)、タッチスクリーン(1810)、データグローブ(図示せず)、ジョイスティック(1805)、マイク(1806)、スキャナ(1807)、カメラ(1808)のうちの1つ以上を含んでもよい(それぞれ1つのみが図示されている)。
コンピュータシステム(1800)は、いくつかの人的インターフェース出力装置を備えてもよい。このような人的インターフェース出力装置は、触覚出力、音声、光、及び臭い/味など、1人以上のユーザの感覚を刺激し得る。このような人的インターフェース出力装置は、触覚出力装置(例えば、タッチスクリーン(1810)、データグローブ(図示せず)、又はジョイスティック(1805)による触覚フィードバック、ただし入力装置として機能しない触覚フィードバック装置もあり得る)、音声出力装置(スピーカ(1809)、ヘッドホン(図示せず))、視覚出力装置(それぞれがタッチスクリーン入力能力を有するか又は有せず、それぞれが触覚フィードバック能力を有するか又は有せず、そのうちのいくつかは二次元映像出力、又は立体出力などの手段によって三次元を上回る出力を出力可能であってもよい、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(1810)など、仮想現実めがね(図示せず)、ホログラフィック表示装置、煙発生装置(smoke tank(図示せず))、並びにプリンタ(図示せず))を含んでもよい。
コンピュータシステム(1800)は、人的にアクセス可能な記憶装置、及びCD/DVDなどの媒体(1821)を含むCD/DVD ROM/RW(1820)、USBメモリ(thumb-drive)(1822)、取り外し可能なハードドライブ又はソリッドステートドライブ(1823)、テープ及びフロッピー(登録商標)ディスクなどのレガシー磁気媒体(図示せず)、セキュリティドングルなどの専門化されたROM/ASIC/PLDに基づく装置(図示せず)を含む光学媒体などの、その関連媒体をさらに含むことができる。
ここで開示されている主題に関して使用される「コンピュータ可読媒体」という用語は、伝送媒体、搬送波その他の一時的な信号は含まないことを当業者にはさらに理解されたい。
コンピュータシステム(1800)は、1つ以上の通信ネットワークに対するインターフェースをさらに備えることができる。ネットワークは、例えば、無線、有線、光であってもよい。ネットワークはさらに、ローカル、広域、メトロポリタン、車載及び産業用、リアルタイム、遅延耐性などであってもよい。ネットワークの例は、イーサネット(登録商標)などのローカルエリアネットワーク、無線LAN、GSM(登録商標)、3G、4G、5G、LTEなどを含む移動体通信ネットワーク、ケーブルテレビ、衛星テレビ、及び地上波テレビを含む有線テレビ又は無線の広域デジタルネットワーク、車載及びCANBusを含む産業用ネットワークなどを含む。いくつかのネットワークは一般に、いくつかの汎用データポート又は周辺バス(1849)(例えば、コンピュータシステム(1800)のUSBポート)に取り付けられる外部ネットワークインターフェースアダプタを必要とし、他のネットワークは一般に、後述するようにシステムバスに取り付けることによって(例えば、イーサネット(登録商標)インターフェースをPCコンピュータシステムに、又は移動体通信ネットワークインターフェースをスマートフォンのコンピュータシステムに)、コンピュータシステム(1800)のコアに統合される。このような任意のネットワークを使用して、コンピュータシステム(1800)は他のエンティティと通信することができる。このような通信は、一方向通信、受信専用通信(例えば、テレビ放送)、一方向送信専用通信(例えば、CANbusからCANbusに送信する装置)、あるいは、例えば、ローカル又は広域デジタルネットワークを使用する、他のコンピュータシステムに対する双方向通信であってもよい。前述したように、いくつかのプロトコル及びプロトコルスタックをこのような各ネットワーク及び各ネットワークインターフェースに使用することができる。
前述した人的インターフェース装置、人的にアクセス可能な記憶装置、及びネットワークインターフェースは、コンピュータシステム(1800)のコア(1840)に取り付けることができる。
コア(1840)は、1つ以上の中央処理ユニット(CPU)(1841)、グラフィック処理ユニット(GPU)(1842)、FPGA(Field Programmable Gate Areas)の形態の専門化されたプログラム可能処理ユニット(1843)、いくつかのタスク用のハードウェアアクセラレータ(1844)などを含むことができる。このような装置は、読出し専用メモリ(ROM)(1845)、ランダムアクセスメモリ(1846)、内部のユーザがアクセスできないハードドライブ、SSDなど(1847)の内部大容量記憶装置とともに、システムバス(1848)を介して接続されてもよい。いくつかのコンピュータシステムでは、システムバス(1848)は、追加のCPU、GPUなどによる拡張が可能なように、1つ以上の物理プラグの形態でアクセスすることができる。周辺装置は、コアのシステムバス(1848)に直接取り付ける、又は周辺バス(1849)を介して取り付けることができる。周辺バスのアーキテクチャは、PCI、USBなどを含む。
CPU(1841)、GPU(1842)、FPGA(1843)、及びアクセラレータ(1844)は、前述したコンピュータコードを作成できるいくつかの命令を、組み合わせて実行することができる。コンピュータコードは、ROM(1845)又はRAM(1846)に記憶させることができる。過渡的なデータもRAM(1846)に記憶でき、これに反し永続的なデータは、例えば、内部大容量記憶装置(1847)に記憶することができる。キャッシュメモリを使用することによって、任意のメモリ装置に素早く記憶し検索することが可能になり、1つ以上のCPU(1841)、GPU(1842)、大容量記憶装置(1847)、ROM(1845)、RAM(1846)などに密接に関連付けることができる。
コンピュータ可読媒体は、さまざまなコンピュータ実施動作を実行するためのコンピュータコードを有することができる。媒体及びコンピュータコードは、本開示の目的のために特別に設計され構築されたものにすることができ、あるいはコンピュータソフトウェアの分野の当業者によく知られ、当業者が使用可能な種類のものであってもよい。
例として、かつ制限する目的ではなく、アーキテクチャ(1800)、具体的にはコア(1840)を有するコンピュータシステムは、1つ以上の有形のコンピュータ可読媒体に具体化されたソフトウェアを実行する、(複数の)プロセッサ(CPU、GPU、FPGA、アクセラレータなど)の結果としての機能性を提供することができる。このようなコンピュータ可読媒体は、先に紹介したようなユーザがアクセス可能な大容量記憶装置、並びにコア内部大容量記憶装置(1847)又はROM(1845)などの、非一時的な性質をもつ、コア(1840)のいくつかの記憶装置に関連する媒体であってもよい。本開示のさまざまな実施形態を実施するソフトウェアは、このような装置に記憶させて、コア(1840)によって実行することができる。コンピュータ可読媒体は、特定の需要に従って、1つ以上のメモリ装置又はチップを含むことができる。ソフトウェアは、コア(1840)及び具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(1846)に記憶されているデータ構造の定義、及びソフトウェアによって定義された工程に従ったこのようなデータ構造の変更を含む、本明細書で説明する特定の工程、又は特定の工程の特定の部分を実行させることができる。これに加えて、又はこれに代えて、コンピュータシステムは、回路(例えば、アクセラレータ1844)に配線された、あるいは回路で具体化された論理の結果としての機能性を提供でき、本明細書で説明する特定の工程、又は特定の工程の特定の部分を実行するために、ソフトウェアの代わりに、又はソフトウェアとともに動作させることができる。ソフトウェアに対する言及は、必要に応じて論理を包含することができ、その逆もまた可能である。コンピュータ可読媒体に対する言及は、必要に応じて実行するソフトウェアを記憶する(集積回路(IC)などの)回路、実行する論理を具体化する回路、又はその両方を包含することができる。本開示は、ハードウェア及びソフトウェアの任意の適切な組合せを包含する。
付録A:頭字語
JEM:共同調査モデル(joint exploration model)
VVC:汎用映像符号化(versatile video coding)
BMS:ベンチマークセット(benchmark set)
MV:動きベクトル(Motion Vector)
HEVC:高効率映像符号化(High Efficiency Video Coding)
SEI:補足拡張情報(Supplementary Enhancement Information)
VUI:映像有用性情報(Video Usability Information)
GOP:画像のグループ(Groups of Pictures)
TU:変換ユニット(Transform Unit)
PU:予測ユニット(Prediction Unit)
CTU:符号化ツリーユニット(Coding Tree Unit)
CTB:符号化ツリーブロック(Coding Tree Block)
PB:予測ブロック(Prediction Block)
HRD:仮想参照復号器(Hypothetical Reference Decoder)
SNR:信号雑音比(Signal Noise Ratio)
CPU:中央処理ユニット(Central Processing Unit)
GPU:グラフィックス処理ユニット(Graphics Processing Unit)
CRT:ブラウン管(Cathode Ray Tube)
LCD:液晶表示装置(Liquid-Crystal Display)
OLED:有機発光ダイオード(Organic Light-Emitting Diode)
CD:コンパクトディスク(Compact Disc)
DVD:デジタル映像ディスク(Digital Video Disc)
ROM:読出し専用メモリ(Read-Only Memory)
RAM:ランダムアクセスメモリ(Random Access Memory)
ASIC:特定用途向け集積回路(Application-Specific Integrated Circuit)
PLD:プログラム可能論理装置(Programmable Logic Device)
LAN:ローカルエリアネットワーク(Local Area Network)
GSM(登録商標):汎欧州デジタル移動電話方式(Global System for Mobile communications)
LTE:ロングタームエボリューション(Long-Term Evolution)
CANBus:コントローラエリアネットワークバス(Controller Area Network Bus)
USB:ユニバーサルシリアルバス(Universal Serial Bus)
PCI:周辺機器内部接続(Peripheral Component Interconnect)
FPGA:Field Programmable Gate Area
SSD:ソリッドステートドライブ(solid-state drive)
IC:集積回路(Integrated Circuit)
CU:符号化ユニット(Coding Unit)
本開示は、いくつかの例示的な実施形態について説明してきたが、変更、置換、及びさまざまな代替的な等価物があり、これらは本開示の範囲内に含まれる。したがって当業者であれば、本明細書に明確に図示又は説明されていなくても、本開示の原理を具体化し、したがってその原理と範囲内に含まれる多くのシステム及び方法を考案できることは理解されよう。