【文献】
David Flynn,High Efficiency Video Coding (HEVC) Range Extensions text specification: Draft 5,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 15th Meeting: Geneva, CH JCTVC-O1005_v4,2013年11月 1日,p.1,94
【文献】
村上 篤道 ほか2名,高効率映像符号化技術 HEVC/H.265とその応用 ,株式会社オーム社,2013年 2月25日,第1版 第1刷,p.117-118
(58)【調査した分野】(Int.Cl.,DB名)
前記ビットストリーム内の値が、前記現在のブロックがスキップモードブロックであると示し、前記ビットストリームは前記現在のブロックのためのBV差分を欠き、前記ビットストリームは前記現在のブロックのための残差データを欠く、請求項5又は6に記載のコンピューティング装置。
前記ビットストリームは前記現在のブロックのためのBV差分を含み、前記BV差分は、前記の選択されたBV予測子候補と前記現在のブロックのためのBV値とにおける差を示す、請求項5又は6に記載のコンピューティング装置。
【発明を実施するための形態】
【0019】
本詳細な説明は、イントラブロックコピー(“BC”)予測を用いたブロックのエンコーディング又はデコーディングの間のブロックベクトル(“BV”)値の予測の分野におけるイノベーションを提示する。例えば、イノベーションのいくつかは、非ゼロ値を有するデフォルトBV予測子の使用に関する。別のイノベーションが、現在のブロックのための複数のBV予測子候補のうち選択された1つの使用に関する。さらに別のイノベーションが、現在のイントラBC予測されたブロックが予測されたBV値を使用するスキップモードの使用に関する。多くの状況において、本イノベーションは、BV値の符号化効率を向上させ、このことはビットレートを下げ、かつ/あるいは品質を向上させることが可能であり、あるいはその他の方法で、イントラBC予測されたブロックの符号化効率を向上させる。
【0020】
本明細書に説明される動作は、所々で、ビデオエンコーダ又はデコーダにより実行されるものとして説明されるが、多くの場合において、上記動作は、別のタイプのメディア処理ツール(例えば、画像エンコーダ又はデコーダ)により実行されることが可能である。
【0021】
本明細書に説明されるイノベーションのいくつかは、HEVC標準に固有のシンタックス要素及び動作を参照して例示される。例えば、HEVC標準のドラフトバージョンJCTVC‐O1005、“High Efficiency Video Coding(HEVC) Range Extensions Text Specification:Draft 5”、JCTVC‐O1005_v3、2013年11月に対して、参照が行われる。本明細書に説明されるイノベーションは、さらに、他の標準又はフォーマットのために実施されることが可能である。
【0022】
より一般的に、本明細書に説明される例に対する様々な代替物があり得る。例えば、本明細書に説明される方法のいくつかは、特定の方法動作を分割し、繰り返し、又は省略することなどにより、説明される方法動作の順序付けを変更することによって変えられることが可能である。開示されるテクノロジーの様々な態様が、組み合わせにおいて又は別個に使用されることができる。種々の実施形態が、説明されるイノベーションの1つ以上を使用する。本明細書に説明されるイノベーションのいくつかは、背景技術において記された問題のうち1つ以上に対処する。典型的に、所与の手法/ツールは、すべての上記の問題を解決するものではない。
【0023】
I.例示的なコンピューティングシステム
図1は、説明されるイノベーションのいくつかが実施され得る適切なコンピューティングシステム(100)の一般化された一例を例示する。イノベーションは、多様な汎用目的又は特別目的コンピューティングシステムにおいて実施され得るので、コンピューティングシステム(100)は、使用法又は機能性の範囲に関していかなる限定も示唆するものではない。
【0024】
図1を参照すると、コンピューティングシステム(100)は、1つ以上の処理ユニット(110、115)、及びメモリ(120、125)を含む。処理ユニット(110、115)は、コンピュータ実行可能命令を実行する。処理ユニットは、汎用目的中央処理ユニット(“CPU”)、特定用途向け集積回路(“ASIC”)におけるプロセッサ、又は任意の他のタイプのプロセッサであり得る。マルチプロセシングシステムにおいて、複数の処理ユニットが、コンピュータ実行可能命令を実行して処理パワーを増大させる。例えば、
図1は、中央処理ユニット(110)と、グラフィクス処理ユニット又はコプロセシングユニット(115)とを示す。有形メモリ(120、125)は、処理ユニットによりアクセス可能な揮発性メモリ(例えば、レジスタ、キャッシュ、RAM)、不揮発性メモリ(例えば、ROM、EEPROM、フラッシュメモリ等)、又は上記2つの何らかの組み合わせであり得る。メモリ(120、125)は、ブロックベクトル予測のための1つ以上のイノベーションを実施するソフトウェア(180)を、処理ユニットによる実行に適したコンピュータ実行可能命令の形式において記憶する。
【0025】
コンピューティングシステムは、さらなる特徴を有し得る。例えば、コンピューティングシステム(100)は、記憶装置(140)、1つ以上の入力装置(150)、1つ以上の出力装置(160)、及び1つ以上の通信接続(170)を含む。相互接続メカニズム(図示されていない)、例えば、バス、コントローラ、又はネットワークなどが、コンピューティングシステム(100)のコンポーネントを相互接続する。典型的に、オペレーティングシステムソフトウェア(図示されていない)が、コンピューティングシステム(100)において実行される他のソフトウェアのための動作環境を提供し、コンピューティングシステム(100)のコンポーネントのアクティビティを調整する。
【0026】
有形記憶装置(140)は、取外し可能又は取外し不能であることが可能であり、磁気ディスク、磁気テープ若しくはカセット、CD‐ROM、DVD、又は、情報を記憶することに使用されることが可能でありコンピューティングシステム(100)内でアクセスされることが可能である任意の他の媒体を含む。記憶装置(140)は、ブロックベクトル予測のための1つ以上のイノベーションを実施するソフトウェア(180)の命令を記憶する。
【0027】
入力装置(150)は、キーボード、マウス、ペン、若しくはトラックボールなどのタッチ入力装置、音声入力装置、スキャニング装置、又は、コンピューティングシステム(100)に対する入力を提供する別の装置であり得る。ビデオについて、入力装置(150)は、カメラ、ビデオカード、TVチューナカード、若しくは、アナログ若しくはデジタル形式においてビデオ入力を受け入れる同様の装置、又は、コンピューティングシステム(100)へのビデオ入力を読み出すCD‐ROM若しくはCD‐RWであり得る。出力装置(160)は、ディスプレイ、プリンタ、スピーカー、CDライタ、又は、コンピューティングシステム(100)からの出力を提供する別の装置であり得る。
【0028】
通信接続(170)は、通信媒体を通じて別のコンピューティングエンティティに対する通信を可能にする。通信媒体は、コンピュータ実行可能命令、オーディオ若しくはビデオの入力若しくは出力、又は他のデータなどの情報を、変調されたデータ信号において運ぶ。変調されたデータ信号は、その特性のうち1つ以上を、信号の中に情報をエンコードする仕方において設定させ又は変更させた信号である。限定ではなく例として、通信媒体は、電気、光、RF、又は他の搬送波を使用することができる。
【0029】
イノベーションは、コンピュータ可読媒体の一般的文脈において説明されることができる。コンピュータ可読媒体は、コンピューティング環境内でアクセスされることが可能な任意の利用可能な有形媒体である。限定ではなく例として、コンピューティングシステム(100)において、コンピュータ可読媒体は、メモリ(120、125)、記憶装置(140)、及び上記のうち任意のものの組み合わせを含む。
【0030】
イノベーションは、コンピューティングシステムにおいてターゲットの実プロセッサ又は仮想プロセッサ上で実行される、プログラムモジュールに含まれるものなどのコンピュータ実行可能命令の一般的文脈において説明されることができる。一般に、プログラムモジュールは、特定のタスクを実行し又は特定の抽象データタイプを実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造等を含む。プログラムモジュールの機能性は、様々な実施形態において所望されるとおりにプログラムモジュール間で組み合わせられ又は分割されてもよい。プログラムモジュールのコンピュータ実行可能命令は、局所的な又は分散されたコンピューティングシステム内で実行されることが可能である。
【0031】
用語「システム」及び「装置」は、本明細書において、交換可能に使用される。文脈が別段明確に示さない限り、いずれの用語も、コンピューティングシステム又はコンピューティング装置のタイプに対するいかなる限定も暗示しない。一般に、コンピューティングシステム又はコンピューティング装置は、局所的であるか又は分散されることが可能であり、本明細書に説明される機能性を実施するソフトウェアを有する特別目的ハードウェア及び/又は汎用目的ハードウェアの任意の組み合わせを含むことができる。
【0032】
開示される方法は、さらに、開示される方法のうち任意のものを実行するように構成された専用のコンピューティングハードウェアを用いて実施されてもよい。例えば、開示される方法は、開示される方法のうち任意のものを実施するように特別に設計され又は構成された集積回路(例えば、ASIC(ASICデジタルシグナルプロセッサ(“DSP”)、グラフィクス処理ユニット(“GPU”)、又は、プログラマブルロジック装置(“PLD”)、例えば、フィールドプログラマブルゲートアレイ(“FPGA”)など)によって実施されることが可能である。
【0033】
提示のために、本詳細な説明は、「決定する」及び「使用する」などの用語を用いて、コンピューティングシステムにおけるコンピュータ動作を説明する。上記用語は、コンピュータによって実行される動作の高レベル抽象化であり、人間によって実行される行為と混同されるべきではない。上記用語に対応する実際のコンピュータ動作は、実装に依存して変動する。
【0034】
II.例示的なネットワーク環境
図2a及び
図2bは、ビデオエンコーダ(220)及びビデオデコーダ(270)を含む例示的なネットワーク環境(201、202)を示す。エンコーダ(220)及びデコーダ(270)は、ネットワーク(250)を通じて適切な通信プロトコルを用いて接続される。ネットワーク(250)は、インターネット又は別のコンピュータネットワークを含み得る。
【0035】
図2aに示されるネットワーク環境(201)において、各リアルタイム通信(“RTC”)ツール(210)が、双方向通信のためにエンコーダ(220)とデコーダ(270)との双方を含む。所与のエンコーダ(220)が、HEVC標準(H.265としても知られる)、SMPTE421M標準、ISO‐IEC14496‐10標準(H.264又はAVCとしても知られる)、別の標準、又は独自フォーマットの、バリエーション又はエクステンションに準拠した出力を生成することができ、対応するデコーダ(270)は、エンコーダ(220)からのエンコードされたデータを受け入れることができる。双方向通信は、ビデオ会議、ビデオ電話呼び出し、又は、他の2つのパーティ若しくはマルチパートの通信シナリオの一部であり得る。
図2aにおけるネットワーク環境(201)は2つのリアルタイム通信ツール(210)を含むが、ネットワーク環境(201)は、代わって、マルチパーティ通信に参加する3つ又はそれ以上のリアルタイム通信ツール(210)を含んでもよい。
【0036】
リアルタイム通信ツール(210)は、エンコーダ(220)によるエンコーディングを管理する。
図3は、リアルタイム通信ツール(210)に含まれることが可能な一例示的なエンコーダシステム(300)を示す。別法として、リアルタイム通信ツール(210)は別のエンコーダシステムを使用する。リアルタイム通信ツール(210)は、さらに、デコーダ(270)によるデコーディングを管理する。
図4は、一例示的なデコーダシステム(400)を示し、デコーダシステム(400)は、リアルタイム通信ツール(210)に含まれ得る。別法として、リアルタイム通信ツール(210)は別のデコーダシステムを使用する。
【0037】
図2bに示されるネットワーク環境(202)において、エンコーディングツール(212)が、複数の再生ツール(214)に対する配信のためにビデオをエンコードするエンコーダ(220)を含み、上記再生ツール(214)は、デコーダ(270)を含む。ビデオ監視システム、ウェブカメラモニタリングシステム、リモートデスクトップ会議プレゼンテーション、又は他のシナリオに対して、単方向通信が提供されることが可能であり、これにおいて、ビデオはエンコードされて、ある場所から1つ以上の他の場所に送られる。
図2bにおけるネットワーク環境(202)は2つの再生ツール(214)を含むが、ネットワーク環境(202)は、より多くの又はより少ない再生ツール(214)を含むことが可能である。一般に、再生ツール(214)はエンコーディングツール(212)と通信して、再生ツール(214)が受信すべきビデオのストリームを決定する。再生ツール(214)は、ストリームを受信し、受信されたエンコードデータを適切な期間の間バッファし(buffers)、デコーディング及び再生を始める。
【0038】
図3は、エンコーディングツール(212)に含まれることが可能な一例示的なエンコーダシステム(300)を示す。別法として、エンコーディングツール(212)は別のエンコーダシステムを使用する。エンコーディングツール(212)は、1つ以上の再生ツール(214)との接続を管理するサーバ側コントローラロジックをさらに含み得る。
図4は、一例示的なデコーダシステム(400)を示し、デコーダシステム400は、再生ツール(214)に含まれ得る。別法として、再生ツール(214)は別のデコーダシステムを使用する。再生ツール(214)は、エンコーディングツール(212)との接続を管理するクライアント側コントローラロジックをさらに含み得る。
【0039】
III.例示的なエンコーダシステム
図3は、一例示的なエンコーダシステム(300)のブロック図であり、エンコーダシステム(300)と関連して、いくつかの説明される実施形態が実施され得る。エンコーダシステム(300)は、複数のエンコーディングモードのうち任意のもの、例えば、リアルタイム通信のための低レイテンシエンコーディングモード、トランスコーディングモード、及びファイル又はストリームから再生のためのメディアを生成するより高いレイテンシのエンコーディングモードなどにおいて動作することができる汎用目的エンコーディングツールであることが可能であり、あるいは、エンコーダシステム(300)は、上記のエンコーディングモードの1つに適合された特別目的エンコーディングツールであってもよい。エンコーダシステム(300)は、オペレーティングシステムモジュールとして、アプリケーションライブラリの一部として、あるいはスタンドアロンアプリケーションとして実装されることが可能である。全体的に見て、エンコーダシステム(300)は、ビデオソース(310)からソースビデオフレーム(311)のシーケンスを受信し、エンコードされたデータをチャネル(390)に対する出力として生成する。チャネルに対して出力される、エンコードされたデータは、本明細書において説明されるBV予測におけるイノベーションを用いてエンコードされたコンテンツを含み得る。
【0040】
ビデオソース(310)は、カメラ、チューナカード、記憶媒体、又は他のデジタルビデオソースであり得る。ビデオソース(310)は、例えば30フレーム毎秒のフレームレートにおいて、ビデオフレームのシーケンスを生成する。本明細書において使用されるとき、用語「フレーム」は、ソースの、符号化され又は再構成された画像データを一般に参照する。プログレッシブスキャンビデオについて、フレームは、プログレッシブスキャンビデオフレームである。インターレースされたビデオについて、例示的な実施形態において、インターレースされたビデオフレームは、エンコーディングの前にインターレース解除される。別法として、2つの相補的なインターレースされたビデオフィールドが、単一のビデオフレームとして一緒にエンコードされ、あるいは2つの別個にエンコードされるフィールドとしてエンコードされる。プログレッシブスキャンビデオフレーム又はインターレーススキャンビデオフレームを示すことの他に、用語「フレーム」又は「ピクチャ」は、単一の非ペアのビデオフィールド、相補的なペアのビデオフィールド、所与の時間におけるビデオオブジェクトを表すビデオオブジェクトプレーン、又はより大きい画像における関心のある領域を示し得る。ビデオオブジェクトプレーン又は領域は、あるシーンの複数のオブジェクト又は領域を含むより大きい画像のうちの一部であり得る。
【0041】
到着するソースフレーム(311)はソースフレーム一時メモリ記憶エリア(320)に記憶され、ソースフレーム一時メモリ記憶エリア(320)は複数のフレームバッファ記憶エリア(321、322、・・・、32n)を含む。フレームバッファ(321、322等)は、ソースフレーム記憶エリア(320)の中の1つのソースフレームを保持する。ソースフレーム(311)のうち1つ以上がフレームバッファ(321、322等)に記憶された後、フレーム選択器(330)が、ソースフレーム記憶エリア(320)から個々のソースフレームを選択する。エンコーダ(340)に対する入力のためにフレーム選択器(330)によってフレームが選択される順序は、ビデオソース(310)によってフレームが生成される順序とは異なってもよい。例えば、いくつかのフレームのエンコーディングが順序において遅らせられて、いくつかの後のフレームが最初にエンコードされることを可能にし、ゆえに時間的に後方の予測を容易にすることができる。エンコーダ(340)の前に、エンコーダシステム(300)はプリプロセッサ(図示されていない)を含んでもよく、プリプロセッサは、エンコーディングの前に選択されたフレーム(331)の前処理(例えば、フィルタリング)を実行する。前処理には、一次(例えば、ルマ)及び二次(例えば、赤に向かう及び青に向かうクロマ差分)成分への色空間コンバージョン、及び、エンコーディングのためのリサンプリング処理(例えば、クロマ成分の空間解像度を低減させるため)を含むことができる。典型的に、エンコーディングの前、ビデオはYUVなどの色空間にコンバートされており、これにおいて、ルマ(Y)成分のサンプル値は明るさ又は輝度値を表し、クロマ(U、V)成分のサンプル値は色差値を表す。クロマサンプル値は、より低いクロマサンプリングレートへ(例えば、YUV4:2:0フォーマットのために)サブサンプリングされ(sub-sampled)てもよく、あるいは、クロマサンプル値は、ルマサンプル値と同じ(例えば、YUV4:4:4フォーマットのための)解像度を有してもよい。あるいは、ビデオは別のフォーマット(例えば、RGB4:4:4フォーマット)においてエンコードされてもよい。
【0042】
エンコーダ(340)は、選択されたフレーム(331)をエンコードして、符号化されたフレーム(341)を生成し、さらに、メモリ管理制御動作(“MMCO”)信号(342)又は参照ピクチャセット(“RPS”)情報を生成する。現在のフレームが、エンコードされている最初のフレームでない場合、そのエンコーディング処理を実行するとき、エンコーダ(340)は、デコード済みフレーム一時メモリ記憶エリア(360)に記憶されている1つ以上の事前にエンコードされた/デコードされたフレーム(369)を使用することができる。こうした記憶されているデコードされたフレーム(369)が、現在のソースフレーム(331)のコンテンツのフレーム間(inter-frame)予測のための参照フレームとして使用される。MMCO/RPS情報(342)は、デコーダに対して、どの再構成されたフレームが参照フレームとして使用されることが可能であり、したがってフレーム記憶エリアに記憶されるべきであるかを示す。
【0043】
一般に、エンコーダ(340)は、エンコーディングタスク、例えば、タイルへの区分化、イントラ予測推定及び予測、動き推定及び補償、周波数変換、量子化、並びにエントロピー符号化などを実行する、複数のエンコーディングモジュールを含む。エンコーダ(340)により実行される正確な動作は、圧縮フォーマットに依存して変動し得る。出力されるエンコードされたデータのフォーマットは、HEVCフォーマット(H.265)、Windows Media Videoフォーマット、VC‐1フォーマット、MPEGxフォーマット(例えば、MPEG‐1、MPEG‐2、又はMPEG‐4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、又は別のフォーマットの、バリエーション又はエクステンションであり得る。
【0044】
エンコーダ(340)は、フレームを、同じサイズ又は異なるサイズの複数のタイルに区分することができる。例えば、エンコーダ(340)は、フレームをタイル行及びタイル列に沿って分割する。該タイル行及びタイル列は、フレーム境界を用いて、フレーム内のタイルの水平及び垂直の境界を定義し、各タイルは、長方形の領域である。タイルは、並列処理のオプションを提供するためにしばしば使用される。フレームは、さらに、1つ以上のスライスとして編成されてもよく、スライスは、フレーム全体又はフレームのうちの領域であり得る。スライスは、フレームの中の他のスライスから独立してデコードされることが可能であり、このことは誤り耐性を向上させる。スライス又はタイルのコンテンツは、エンコーディング及びデコーディングの目的で、ブロック又は、サンプルの他のセットにさらに区分される。
【0045】
HEVC標準に従うシンタックスのために、エンコーダは、フレーム(又は、スライス若しくはタイル)のコンテンツを、符号化ツリーユニット(coding tree unit)に分割する。符号化ツリーユニット(“CTU”)は、ルマ符号化ツリーブロック(“CTB”)として編成されたルマサンプル値と、2つのクロマCTBとして編成された、対応するクロマサンプル値とを含む。CTU(及び、そのCTB)のサイズはエンコーダによって選択され、例えば、64×64、32×32、又は16×16サンプル値であり得る。CTUは1つ以上の符号化ユニットを含む。符号化ユニット(“CU”)は、ルマ符号化ブロック(“CB”)と、2つの対応するクロマCBとを有する。例えば、64×64ルマCTB及び2つの64×64クロマCTBを有するCTU(YUV4:4:4フォーマット)が4つのCUに分割されることが可能であり、これにおいて、各CUは32×32ルマCB及び2つの32×32クロマCBを含み、各CUは可能性として、より小さいCUにさらに分割される。あるいは、別の例として、64×64ルマCTB及び2つの32×32クロマCTBを有するCTU(YUV4:2:0フォーマット)が4つのCUに分割されることが可能であり、これにおいて、各CUは32×32ルマCB及び2つの16×16クロマCBを含み、各CUは可能性として、より小さいCUにさらに分割される。CUの最小許容可能サイズ(例えば、8×8、16×16)が、ビットストリームの中で信号伝達される(signaled)ことができる。
【0046】
一般に、CUはインター又はイントラなどの予測モードを有する。CUは、予測情報(例えば、予測モード詳細、変位値等)及び/又は予測処理を信号伝達する目的で、1つ以上の予測ユニットを含む。予測ユニット(“PU”)は、ルマ予測ブロック(“PB”)と2つのクロマPBとを有する。イントラ予測されるCUについて、PUは、CUが最小サイズ(例えば、8×8)を有さない限り、CUと同じサイズを有する。上記の場合、CUのシンタックス要素により示されるとおり、CUが4つのより小さいPUに分割されてもよく(例えば、最小CUサイズが8×8である場合、各々4×4)、あるいは、PUが最小CUサイズを有してもよい。CUは、残差符号化/デコーディングの目的で1つ以上の変換ユニットをさらに有し、変換ユニット(“TU”)は、変換ブロック(“TB”)と2つのクロマTBとを有する。イントラ予測されるCUにおけるPUは、単一のTU(サイズにおいてPUに等しい)又は複数のTUを包含し得る。本明細書において使用されるとき、用語「ブロック」は、文脈に依存して、CB、PB、TB、又はサンプル値の他のセットを示すことがある。エンコーダは、ビデオを如何にしてCTU、CU、PU、TU等に区分するかを決める。
【0047】
図3に戻ると、エンコーダは、ソースフレーム(331)のイントラ符号化されたブロックを、予測の観点において、フレーム(331)の中の他の事前に再構成されたサンプル値から表現する。イントラBC予測について、ピクチャ内推定器が、他の事前に再構成されたサンプル値に関して、ブロックの変位を推定する。フレーム内(intra-frame)予測参照領域は、ブロックのBC予測値を作り出すために使用されるフレームの中のサンプルの領域である。フレーム内予測領域は、ブロックベクトル(“BV”)値(BV推定において決定される)で示されることができる。ブロックのイントラ空間予測について、ピクチャ内推定器は、近隣の再構成されたサンプル値の、ブロックへの補外を推定する。ピクチャ内推定器は、予測情報(例えば、イントラBC予測のためのBV値、又はイントラ空間予測のための予測モード(方向)など)を出力することができ、これがエントロピー符号化される。フレーム内予測予測器が予測情報を適用して、イントラ予測値を決定する。
【0048】
エンコーダ(340)は、ソースフレームのフレーム間符号化された予測されたブロックを、予測の観点において、参照フレームから表現する。動き推定器が、1つ以上の参照フレーム(369)に関して、ブロックの動きを推定する。複数の参照フレームが使用されるとき、この複数の参照フレームは、異なる時間方向又は同じ時間方向からであり得る。動き補償された予測参照領域は、現在のフレームのサンプル値のブロックについての動き補償された予測値を作り出すために使用される参照フレームの中のサンプル領域である。動き推定器は動きベクトル(“MV”)情報などの動き情報を出力し、これがエントロピー符号化される。動き補償器がMVを参照フレーム(369)に適用して、フレーム間予測のための動き補償された予測値を決定する。
【0049】
エンコーダは、ブロックの予測値(イントラ又はインター)と対応する元の値とにおける差を(もしあれば)決定することができる。これら予測残差値は、周波数変換、量子化、及びエントロピーエンコーディングを用いて、さらにエンコードされる。例えば、エンコーダ(340)は、ピクチャ、タイル、スライス、及び/又はビデオの他の部分のための量子化パラメータ(“QP”)の値を設定し、これに従って、変換係数を量子化する。エンコーダ(340)のエントロピー符号器が、量子化された変換係数値と、特定の付帯情報(例えば、MV情報、BV予測子のインデックス値、BV差分、QP値、モード判断、パラメータ選択)とを圧縮する。典型的に、エントロピー符号化手法には、指数ゴロム(Exponential-Golomb)符号化、ゴロム・ライス符号化、算術符号化、差分符号化、ハフマン符号化、ランレングス符号化、可変長対可変長(“V2V”;variable-length-to-variable-length)符号化、可変長対固定長(“V2F”;variable-length-to-fixed-length)符号化、レンペル・ジブ(“LZ”)符号化、辞書符号化、確率間隔区分エントロピー符号化(“PIPE”;probability interval partitioning entropy coding)、及び上記の組み合わせが含まれる。エントロピー符号器は、異なる種類の情報に対して異なる符号化手法を使用することができ、複数の手法を組み合わせにおいて適用することができ(例えば、ゴロム・ライス符号化の後に算術符号化を適用することによって)、特定の符号化手法内の複数の符号テーブルの中から選ぶことができる。
【0050】
適応的デブロッキングフィルタが、エンコーダ(340)の中の動き補償ループ内に含まれて、デコードされたフレームの中のブロック境界行及び/又は列にわたる不連続性を滑らかにする。別法として、又はさらに、他のフィルタリング(例えば、デリンギング(de-ringing)フィルタリング、適応ループフィルタリング(“ALF”)、又はサンプル適応オフセット(“SAO”)フィルタリングなど;図示されていない)がインループフィルタリング動作として適用されてもよい。
【0051】
符号化されたフレーム(341)及びMMCO/RPS情報(342)(又は、MMCO/RPS情報(342)と同等の情報、なぜならば、フレームの依存性及び順序付け構造がエンコーダ(340)においてすでに知られているため)は、デコーディング処理エミュレータ(350)によって処理される。デコーディング処理エミュレータ(350)は、デコーダの機能性のうちいくつか、例えば、参照フレームを再構成するデコーディングタスクを実施する。MMCO/RPS情報(342)に準拠する仕方において、デコーディング処理エミュレータ(350)は、所与の符号化されたフレーム(341)が、エンコードされるべき後のフレームのフレーム間予測における参照フレームとしての使用のために再構成され及び記憶される必要があるかどうかを決定する。符号化されたフレーム(341)が記憶される必要がある場合、デコーディング処理エミュレータ(350)は、符号化されたフレーム(341)を受信して対応するデコードされたフレーム(351)を生成するデコーダによって指揮されるであろうデコーディング処理を、モデル化する。そのようにすることにおいて、エンコーダ(340)が、デコードされたフレームの記憶領域(360)に記憶されているデコードされたフレーム(369)を使用しているとき、デコーディング処理エミュレータ(350)は、デコーディング処理の一部として、記憶領域(360)から、デコードされたフレーム(369)をさらに使用する。
【0052】
デコード済みフレーム一時メモリ記憶エリア(360)は、複数のフレームバッファ記憶エリア(361、362、・・・、36n)を含む。MMCO/RPS情報(342)に準拠する仕方において、デコーディング処理エミュレータ(350)は、記憶エリア(360)のコンテンツを管理して、エンコーダ(340)によって参照フレームとしての使用にもはや必要とされないフレームを有する任意のフレームバッファ(361、362等)を識別する。デコーディング処理をモデル化した後、デコーディング処理エミュレータ(350)は、上記の仕方において識別されたフレームバッファ(361、362等)に、新たにデコードされたフレーム(351)を記憶する。
【0053】
符号化されたフレーム(341)及びMMCO/RPS情報(342)は、一時符号化済みデータエリア(370)にバッファされる。符号化済みデータエリア(370)に集められる符号化されたデータは、要素的な符号化されたビデオビットストリームのシンタックスの一部として、1つ以上のピクチャについてのエンコードされたデータを含む。符号化済みデータエリア(370)に集められる符号化されたデータは、符号化されたビデオデータに関するメディアメタデータを(例えば、1つ以上のサプリメンタルエンハンスメント情報(“SEI”;supplemental enhancement information)メッセージ又はビデオユーザビリティ情報(“VUI”;video usability information)メッセージの中の1つ以上のパラメータとして)さらに含み得る。
【0054】
一時符号化済みデータエリア(370)からの集められたデータ(371)は、チャネルエンコーダ(380)によって処理される。チャネルエンコーダ(380)は、集められたデータを送信又は記憶のためにメディアストリームとして(例えば、ITU‐T H.222.0 | ISO/IEC13818‐1などのメディアプログラムストリーム若しくはトランスポートストリームフォーマット、又はIETF RFC3550などのインターネットリアルタイムトランスポートプロトコルフォーマットに従って)パケット化し、かつ/あるいは多重化することができる。上記の場合、チャネルエンコーダ(380)は、シンタックス要素をメディア送信ストリームのシンタックスの一部として追加することができる。あるいは、チャネルエンコーダ(380)は、集められたデータを記憶のためにファイルとして(例えば、ISO/IEC14496‐12などのメディアコンテナフォーマットに従って)編成することができ、この場合、チャネルエンコーダ(380)は、シンタックス要素をメディア記憶ファイルのシンタックスの一部として追加することができる。あるいは、より一般的に、チャネルエンコーダ(380)は、1つ以上のメディアシステム多重化プロトコル又はトランスポートプロトコルを実装することができ、この場合、チャネルエンコーダ(380)は、シンタックス要素をプロトコルのシンタックスの一部として追加することができる。チャネルエンコーダ(380)は、チャネルに対する出力を提供し、該チャネルは、記憶装置、通信接続、又は出力のための別のチャネルを表す。チャネルエンコーダ(380)又はチャネル(390)は、例えば、前方誤り訂正(“FEC”)エンコーディング及びアナログ信号変調のために、他の要素(図示されていない)をさらに含んでもよい。
【0055】
IV.例示的なデコーダシステム
図4は、一例示的なデコーダシステム(400)のブロック図であり、デコーダシステム400と関連して、いくつかの説明される実施形態が実施され得る。デコーダシステム(400)は、複数のデコーディングモードのうち任意のもの、例えば、リアルタイム通信のための低レイテンシデコーディングモード、及びファイル又はストリームからのメディア再生のためのより高いレイテンシのデコーディングモードなどにおいて動作することができる汎用目的デコーディングツールであることが可能であり、あるいは、デコーダシステム(400)は、上記のデコーディングモードの1つに適合された特別目的デコーディングツールであってもよい。デコーダシステム(400)は、オペレーティングシステムモジュールとして、アプリケーションライブラリの一部として、あるいはスタンドアロンアプリケーションとして実装されることが可能である。全体的に見て、デコーダシステム(400)は、符号化されたデータをチャネル(410)から受信し、再構成されたフレームを出力として出力あて先(490)のために生成する。符号化されたデータは、本明細書において説明されるBV予測におけるイノベーションを用いてエンコードされたコンテンツを含み得る。
【0056】
デコーダシステム(400)はチャネル(410)を含み、チャネル410は、記憶装置、通信接続、又は入力としての符号化されたデータのための別のチャネルを表し得る。チャネル(410)は、チャネル符号化されている符号化されたデータを生成する。チャネルデコーダ(420)は、符号化されたデータを処理することができる。例えば、チャネルデコーダ(420)は、(例えば、ITU‐T H.222.0 | ISO/IEC13818‐1などのメディアプログラムストリーム若しくはトランスポートストリームフォーマット、又はIETF RFC3550などのインターネットリアルタイムトランスポートプロトコルフォーマットに従って)メディアストリームとして送信又は記憶のために集められたデータをパケット化解除し(de-packetizes)、かつ/あるいは多重分離する(demultiplexes)。上記の場合、チャネルデコーダ(420)は、メディア送信ストリームのシンタックスの一部として追加されたシンタックス要素をパースする(parse)ことができる。あるいは、チャネルデコーダ(420)は、(例えば、ISO/IEC14496‐12などのメディアコンテナフォーマットに従って)ファイルとして記憶のために集められている符号化されたビデオデータを分離し、この場合、チャネルデコーダ(420)は、メディア記憶ファイルのシンタックスの一部として追加されたシンタックス要素をパースすることができる。あるいは、より一般的に、チャネルデコーダ(420)は、1つ以上のメディアシステム多重分離プロトコル又はトランスポートプロトコルを実装することができ、この場合、チャネルデコーダ(420)は、プロトコルのシンタックスの一部として追加されたシンタックス要素をパースすることができる。チャネル(410)又はチャネルデコーダ(420)は、例えば、FECデコーディング及びアナログ信号復調のために、他の要素(図示されていない)をさらに含んでもよい。
【0057】
チャネルデコーダ(420)から出力される符号化されたデータ(421)は、十分な量のこうしたデータが受信されるまで、一時符号化済みデータエリア(430)に記憶される。符号化されたデータ(421)は、符号化されたフレーム(431)及びMMCO/RPS情報(432)を含む。符号化済みデータエリア(430)の中の符号化されたデータ(421)は、要素的な符号化されたビデオビットストリームのシンタックスの一部として、1つ以上のピクチャのための符号化されたデータを含む。符号化済みデータエリア(430)の中の符号化されたデータは、エンコードされたビデオデータに関するメディアメタデータを(例えば、1つ以上のSEIメッセージ又はVUIメッセージの中の1つ以上のパラメータとして)さらに含み得る。
【0058】
一般に、符号化済みデータエリア(430)は、符号化されたデータ(421)を、こうした符号化されたデータ(421)がデコーダ(450)によって使用されるまで、一時的に記憶する。このポイントにおいて、符号化されたフレーム(431)及びMMCO/RPS情報(432)のための符号化されたデータ(421)は、符号化済みデータエリア(430)からデコーダ(450)に転送される。デコーディングが継続するとき、新しい符号化されたデータが、符号化済みデータエリア(430)に対して追加され、符号化済みデータエリア(430)に残っている最も古い符号化されたデータが、デコーダ(450)に転送される。
【0059】
デコーダ(450)は、符号化されたフレーム(431)をデコードして、対応するデコードされたフレーム(451)を生成する。必要に応じて、デコーダ(450)は、そのデコーディング処理を実行するとき、1つ以上の事前にデコードされたフレーム(469)を参照フレームとしてフレーム間予測に使用してもよい。デコーダ(450)は、こうした事前にデコードされたフレーム(469)を、デコード済みフレーム一時メモリ記憶エリア(460)から読み出す。一般に、デコーダ(450)は、デコーディングタスク、例えば、エントロピーデコーディング、フレーム内予測、動き補償されたフレーム間予測、逆量子化、逆周波数変換、及びタイルをマージすることなどを実行する、複数のデコーディングモジュールを含む。デコーダ(450)により実行される正確な動作は、圧縮フォーマットに依存して変動し得る。
【0060】
例えば、デコーダ(450)は、圧縮されたフレーム又はフレームのシーケンスのエンコードされたデータを受信し、デコードされたフレーム(451)を含む出力を生成する。デコーダ(450)において、バッファが、圧縮されたフレームのエンコードされたデータを受信し、適切な時間に、受信したエンコードされたデータをエントロピーデコーダに対して利用可能にする。エントロピーデコーダは、エントロピー符号化された量子化されたデータとエントロピー符号化された付帯情報とを、典型的にはエンコーダにおいて実行されたエントロピーエンコーディングの逆のことを適用することによって、エントロピーデコードする。動き補償器が、動き情報を1つ以上の参照フレームに適用して、再構成されるフレームの任意のインター符号化されたブロックについて、動き補償された予測値を形成する。フレーム内予測モジュールが、現在のブロックのサンプル値を、近隣の事前に再構成されたサンプル値から空間的に予測し、あるいは、イントラBC予測について、現在のブロックのサンプル値を、フレームの中のフレーム内予測領域の事前に再構成されたサンプル値を用いて予測することができる。フレーム内予測領域は、BV値を用いて示されることができる。デコーダ(450)は、予測残差値をさらに再構成する。逆量子化器が、エントロピーデコードされたデータを逆量子化する。例えば、デコーダ(450)は、ビットストリームの中のシンタックス要素に基づいて、ピクチャ、タイル、スライス、及び/又はビデオの他の部分についてのQPの値を設定し、これに従って、変換係数を逆量子化する。逆周波数変換器が、量子化された周波数ドメインデータを空間ドメインデータにコンバートする。フレーム間予測されたブロックについて、デコーダ(450)は、再構成された予測残差値を、動き補償された予測値と組み合わせる。デコーダ(450)は、同様に、予測残差値を、イントラ予測からの予測値と組み合わせてもよい。適応的デブロッキングフィルタがビデオデコーダ(450)の中の動き補償ループ内に含まれて、デコードされたフレーム(451)の中のブロック境界行及び/又は列にわたる不連続性を滑らかにする。別法として、又はさらに、他のフィルタリング(例えば、デリンギング(de-ringing)フィルタリング、ALF、又はSAOフィルタリングなど;図示されていない)がインループフィルタリング動作として適用されてもよい。
【0061】
デコード済みフレーム一時メモリ記憶エリア(460)は、複数のフレームバッファ記憶エリア(461、462、・・・、46n)を含む。デコードされたフレームの記憶エリア(460)は、デコード済みピクチャバッファの一例である。デコーダ(450)は、MMCO/RPS情報(432)を使用して、デコードされたフレーム(451)をデコーダ(450)が記憶することができるフレームバッファ(461、462等)を識別する。デコーダ(450)は、上記フレームバッファの中にデコードされたフレーム(451)を記憶する。
【0062】
出力シーケンサ(480)は、出力順序において生成される次のフレームがデコード済みフレーム記憶エリア(460)の中でいつ利用可能であるかを識別する。出力順序において生成される次のフレーム(481)が、デコード済みフレーム記憶エリア(460)において利用可能であるとき、該フレームは出力シーケンサ(480)によって読み出され、出力あて先(490)(例えば、ディスプレイ)に対して出力される。一般に、出力シーケンサ(480)によってデコード済みフレーム記憶エリア(460)からフレームが出力される順序は、デコーダ(450)によってフレームがデコードされる順序とは異なってもよい。
【0063】
V.例示的なビデオエンコーダ
図5a及び
図5bは、一般化されたビデオエンコーダ(500)のブロック図であり、ビデオエンコーダ(500)と関連して、いくつかの説明される実施形態が実施され得る。エンコーダ(500)は、入力ビデオ信号(505)として現在のピクチャを含むビデオピクチャのシーケンスを受信し、出力として符号化されたビデオビットストリーム(595)におけるエンコードされたデータを生成する。
【0064】
エンコーダ(500)はブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、異なる段階において、例えば、予測、周波数変換、及び/又はエントロピーエンコーディング段階において、さらに細分されてもよい。例えば、ピクチャが、64×64ブロック、32×32ブロック、又は16×16ブロックに分けられることが可能であり、次に上記ブロックが、符号化及びデコーディングのためにサンプル値のより小さいブロックに分けられることが可能である。HEVC標準のエンコーディングの実施において、エンコーダは、ピクチャをCTU(CTB)、CU(CB)、PU(PB)、及びTU(TB)に区分する。
【0065】
エンコーダ(500)は、ピクチャ内(intra-picture)符号化及び/又はピクチャ間(inter-picture)符号化を用いて、ピクチャを圧縮する。エンコーダ(500)のコンポーネントの多くは、ピクチャ内符号化及びピクチャ間符号化の双方に使用される。上記コンポーネントによって実行される正確な動作は、圧縮される情報のタイプに依存して変動し得る。
【0066】
タイル化モジュール(tiling module)(510)が、場合により、ピクチャを、同じサイズ又は異なるサイズの複数のタイルに区分する。例えば、タイル化モジュール(510)は、ピクチャをタイル行及びタイル列に沿って分割する。該タイル行及びタイル列は、ピクチャ境界を用いて、ピクチャ内のタイルの水平及び垂直の境界を定義し、各タイルは、長方形の領域である。
【0067】
一般エンコーディング制御(520)が、入力ビデオ信号(505)のピクチャと、エンコーダ(500)の様々なモジュールからのフィードバック(図示されていない)とを受信する。全体的に見て、一般エンコーディング制御(520)は、制御信号(図示されていない)を他のモジュール(例えば、タイル化モジュール(510)、変換器/スケーラ(scaler)/量子化器(530)、スケーラ/逆変換器(535)、ピクチャ内推定器(540)、動き推定器(550)、及びイントラ/インタースイッチなど)に提供して、エンコーディングの間の符号化パラメータを設定し及び変更する。具体的に、一般エンコーディング制御(520)は、エンコーディングの間にBV予測の態様(例えば、予測されたBV値を有するスキップモード、BV予測のためのマージモード)を使用するかどうかと如何にして使用するかとを決めることができる。一般エンコーディング制御(520)はさらに、エンコーディング、例えば、レート歪み分析を実行する間、中間結果を評価することができる。一般エンコーディング制御(520)は、エンコーディングの間に行われた判断を示す一般制御データ(522)を生成し、したがって、対応するデコーダが、一貫性のある判断を行うことができる。一般制御データ(522)は、ヘッダフォーマッタ(formatter)/エントロピー符号器(590)に提供される。
【0068】
現在のピクチャがピクチャ間予測を用いて予測される場合、動き推定器(550)が、1つ以上の参照ピクチャに関して、入力ビデオ信号(505)の現在のピクチャのサンプル値のブロックの動きを推定する。デコード済みピクチャバッファ(570)が、1つ以上の再構成された事前に符号化されたピクチャを、参照ピクチャとしての使用のためにバッファする。複数の参照ピクチャが使用されるとき、この複数の参照ピクチャは、異なる時間方向又は同じ時間方向からであり得る。動き推定器(550)は、付帯情報として、動きデータ(552)、例えば、MVデータ、マージモードインデックス値、及び参照ピクチャ選択データなどを生成する。動きデータ(552)は、ヘッダフォーマッタ/エントロピー符号器(590)と動き補償器(555)とに対して提供される。
【0069】
動き補償器(555)は、MVを、デコード済みピクチャバッファ(570)からの再構成された参照ピクチャに適用する。動き補償器(555)は、現在のピクチャの動き補償された予測を生成する。
【0070】
エンコーダ(500)内の別個の経路において、ピクチャ内推定器(540)が、入力ビデオ信号(505)の現在のピクチャのサンプル値のブロックについて、ピクチャ内予測を如何にして実行するかを決定する。現在のピクチャは、ピクチャ内符号化を用いて、全体的に又は部分的に符号化されることが可能である。現在のピクチャの再構成(538)の値を用いて、イントラ空間予測について、ピクチャ内推定器(540)は、現在のピクチャの現在のブロックのサンプル値を、現在のピクチャについての近隣の事前に再構成されたサンプル値から如何にして空間的に予測するかを決定する。あるいは、BV値を用いるイントラBC予測について、ピクチャ内推定器(540)は、現在のピクチャ内の異なる候補領域に対する、現在のブロックのサンプル値の変位を推定する。
【0071】
ピクチャ内推定器(540)は、付帯情報として、イントラ予測データ(542)、例えば、イントラ予測が空間予測又はイントラBC予測を使用するか(例えば、イントラブロックごとのフラグ値)、予測モード方向(イントラ空間予測のための)、及びBV値(イントラBC予測のための)を示す情報などを生成する。イントラ予測データ(542)は、ヘッダフォーマッタ/エントロピー符号器(590)とピクチャ内予測器(545)とに対して提供される。
【0072】
イントラ予測データ(542)に従い、ピクチャ内予測器(545)は、現在のピクチャの現在のブロックのサンプル値を、現在のピクチャについての近隣の事前に再構成されたサンプル値から空間的に予測する。あるいは、イントラBC予測について、ピクチャ内予測器(545)は、現在のブロックのサンプル値を、フレーム内予測領域の事前に再構成されたサンプル値を用いて予測し、該フレーム内予測領域は、現在のブロックのBV値によって示される。いくつかの場合において(例えば、スキップモードブロック又はマージモードブロックのために)、BV値は、BV予測子(予測されたBV値)とすることができる。ピクチャのクロマデータが、ルマデータと同じ解像度を有するとき(例えば、フォーマットが、YUV4:4:4フォーマット又はRGB4:4:4フォーマットであるとき)、クロマブロックに適用されるBV値は、ルマブロックに適用されるBV値と同じであり得る。一方、ピクチャのクロマデータが、ルマデータに対して低減された解像度を有するとき(例えば、フォーマットが、YUV4:2:0フォーマットであるとき)、クロマブロックに適用されるBV値は、下方にスケール変更され(scaled)、可能性として丸められて、クロマ解像度における差に関して調整される(例えば、BV値の垂直及び水平の成分を2で除算することと、これらを整数値へと切り捨て又は丸めることとによって)。
【0073】
イントラ/インタースイッチは、所与のブロックのための予測(558)としての使用のために、動き補償された予測又はピクチャ内予測の値を選択する。予測(558)のブロックと入力ビデオ信号(505)の元の現在のピクチャの対応する部分とにおける差が(もしあれば)、非スキップモードブロックについて、残差(518)の値を提供する。現在のピクチャの再構成の間、非スキップモードブロックについて、再構成された残差値は予測(558)と組み合わせられて、ビデオ信号(505)からの元のコンテンツの再構成(538)が生成される。しかしながら、不可逆圧縮において、いくつかの情報は、ビデオ信号(505)から依然として失われる。
【0074】
変換器/スケーラ/量子化器(530)において、周波数変換器は、空間ドメインビデオ情報を周波数ドメイン(すなわち、スペクトルの、変換)データにコンバートする。ブロックベースのビデオ符号化について、周波数変換器は、離散コサイン変換(“DCT”)、その整数近似、又は別のタイプの前方ブロック変換(例えば、離散サイン変換又はその整数近似)を、予測残差データのブロック(又は、予測(558)がヌルである場合はサンプル値データ)に対して適用し、周波数変換係数のブロックを生成する。エンコーダ(500)はさらに、こうした変換ステップがスキップされることを示すことが可能であり得る。スケーラ/量子化器は、変換係数をスケール変更し、量子化する。例えば、量子化器は、デッドゾーンスケーラ量子化を、周波数ドメインデータに対して、フレーム単位基準、タイル単位基準、スライス単位基準、ブロック単位基準、周波数固有基準、又は他の基準で変動する量子化ステップサイズを用いて適用する。量子化された変換係数データ(532)は、ヘッダフォーマッタ/エントロピー符号器(590)に提供される。
【0075】
スケーラ/逆変換器(535)において、スケーラ/逆量子化器は、量子化された変換係数に対して逆スケール変更及び逆量子化を実行する。逆周波数変換器が逆周波数変換を実行し、再構成された予測残差値又はサンプル値のブロックを生成する。非スキップモードブロックについて、エンコーダ(500)は、再構成された残差値を予測(558)の値(例えば、動き補償された予測値、ピクチャ内予測値)と組み合わせて、再構成(538)を形成する。スキップモードブロックについて、エンコーダ(500)は、予測(558)の値を再構成(538)として使用する。
【0076】
ピクチャ内予測について、再構成(538)の値は、ピクチャ内推定器(540)及びピクチャ内予測器(545)にフィードバックされることができる。さらに、再構成(538)の値は、後のピクチャの動き補償された予測に使用されてもよい。再構成(538)の値は、さらにフィルタされてもよい。フィルタリング制御(560)が、ビデオ信号(505)の所与のピクチャについて、再構成(538)の値に対してデブロックフィルタリング及びSAOフィルタリングを如何にして実行するかを決定する。フィルタリング制御(560)はフィルタ制御データ(562)を生成し、これがヘッダフォーマッタ/エントロピー符号器(590)とマージ器/フィルタ(565)とに対して提供される。
【0077】
マージ器/フィルタ(565)において、エンコーダ(500)は、異なるタイルからのコンテンツをピクチャの再構成されたバージョンにマージする。エンコーダ(500)は、デブロックフィルタリング及びSAOフィルタリングをフィルタ制御データ(562)に従って選択的に実行して、フレームの中の境界をわたる不連続性を適応的に滑らかにする。別法として、又はさらに、他のフィルタリング(例えば、デリンギングフィルタリング又はALFなど;図示されていない)が適用されてもよい。タイル境界は、エンコーダ(500)の設定に依存して、選択的にフィルタされ、あるいはまったくフィルタされないことが可能であり、エンコーダ(500)は、符号化されたビットストリーム内でシンタックスを提供して、上記のフィルタリングが適用されたか否かを示してもよい。デコード済みピクチャバッファ(570)は、再構成された現在のピクチャを、後の動き補償された予測における使用のためにバッファする。
【0078】
ヘッダフォーマッタ/エントロピー符号器(590)は、一般制御データ(522)、量子化された変換係数データ(532)、イントラ予測データ(542)、動きデータ(522)、及びフィルタ制御データ(562)をフォーマットし、かつ/あるいはエントロピー符号化する。イントラ予測データ(542)について、ヘッダフォーマッタ/エントロピー符号器(590)は、例えば、コンテキスト適応バイナリ算術符号化を用いて、BV予測子インデックス値(イントラBC予測のための)を選択し、エントロピー符号化する。非スキップモード、非マージモードブロックについて、ヘッダフォーマッタ/エントロピー符号器(590)は、(BV値のBV予測子に相対した)BV値のBV差分を決定し、それから、例えば、コンテキスト適応バイナリ算術符号化を用いて、BV差分をエントロピー符号化する。スキップモードブロック又はマージモードブロックについて、BV差分は省略される。
【0079】
ヘッダフォーマッタ/エントロピー符号器(590)は、符号化されたビデオビットストリーム(595)におけるエンコードされたデータを提供する。符号化されたビデオビットストリーム(595)のフォーマットは、HEVCフォーマット、Windows Media Videoフォーマット、VC‐1フォーマット、MPEG‐xフォーマット(例えば、MPEG‐1、MPEG‐2、又はMPEG‐4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、又は別のフォーマットの、バリエーション又はエクステンションであり得る。
【0080】
所望される実装及び圧縮のタイプに依存して、エンコーダのモジュールは、追加され、省略され、複数のモジュールに分割され、他のモジュールと組み合わせられ、かつ/あるいは同様のモジュールと置換されることができる。別の実施形態において、異なるモジュール及び/又はモジュールの他の構成を有するエンコーダが、所望される手法のうち1つ以上を実行する。エンコーダの具体的な実施形態は、典型的に、エンコーダ(500)のバリエーション又は補足されたバージョンを使用する。エンコーダ(500)内のモジュール間に示される関係はエンコーダにおける情報の一般的フローを示し、他の関係は簡潔さのために示されていない。
【0081】
VI.例示的なビデオデコーダ
図6は、一般化されたデコーダ(600)のブロック図であり、デコーダ(600)と関連して、いくつかの説明される実施形態が実施され得る。デコーダ(600)は、符号化されたビットストリーム(605)におけるエンコードされたデータを受信し、再構成されたビデオ(695)のピクチャを含む出力を生成する。符号化されたビデオビットストリーム(605)のフォーマットは、HEVCフォーマット、Windows Media Videoフォーマット、VC‐1フォーマット、MPEG‐xフォーマット(例えば、MPEG‐1、MPEG‐2、又はMPEG‐4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、又は別のフォーマットの、バリエーション又はエクステンションであり得る。
【0082】
デコーダ(600)はブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、異なる段階においてさらに細分されてもよい。例えば、ピクチャが、64×64ブロック、32×32ブロック、又は16×16ブロックに分けられることが可能であり、次に上記ブロックが、サンプル値のより小さいブロックに分けられることが可能である。HEVC標準のデコーディングの実施において、ピクチャは、CTU(CTB)、CU(CB)、PU(PB)、及びTU(TB)に区分される。
【0083】
デコーダ(600)は、ピクチャ内デコーディング及び/又はピクチャ間デコーディングを用いて、ピクチャを伸張する。デコーダ(600)のコンポーネントの多くは、ピクチャ内デコーディング及びピクチャ間デコーディングの双方に使用される。上記コンポーネントによって実行される正確な動作は、伸張される情報のタイプに依存して変動し得る。
【0084】
バッファが、符号化されたビデオビットストリーム(605)におけるエンコードされたデータを受信し、受信したエンコードされたデータをパーサ/エントロピーデコーダ(610)に対して利用可能にする。パーサ/エントロピーデコーダ(610)は、典型的にはエンコーダ(500)において実行されたエントロピー符号化の逆のことを適用することによって(例えば、コンテキスト適応バイナリ算術デコーディング)、エントロピー符号化されたデータをエントロピーデコードする。パース及びエントロピーデコードの結果として、パーサ/エントロピーデコーダ(610)は、一般制御データ(622)、量子化された変換係数データ(632)、イントラ予測データ(642)、動きデータ(652)、及びフィルタ制御データ(662)を生成する。イントラ予測データ(642)について、パーサ/エントロピーデコーダ(610)は、(イントラBC予測のための)BV予測子インデックス値を、例えば、コンテキスト適応バイナリ算術デコーディングを用いて、エントロピーデコードする。非スキップモード、非マージモードブロックについて、パーサ/エントロピーデコーダ(610)は、(例えば、コンテキスト適応バイナリ算術デコーディングを用いて)BV値のBV差分をさらにエントロピーデコードし、それから、BV差分を対応するBV予測子と組み合わせて、BV値を再構成する。スキップモードブロック又はマージモードブロックについて、BV差分はビットストリームから省略され、BV値は単にBV予測子である(例えば、BV予測子インデックス値で示される)。
【0085】
一般デコーディング制御(620)は一般制御データ(622)を受信し、制御信号(図示されていない)を他のモジュール(例えば、スケーラ/逆変換器(635)、ピクチャ内予測器(645)、動き補償器(655)、及びイントラ/インタースイッチ)に対して提供して、デコーディングの間のデコーディングパラメータを設定し及び変更する。
【0086】
現在のピクチャがピクチャ間予測を用いて予測される場合、動き補償器(655)は、動きデータ(652)、例えば、MVデータ、参照ピクチャ選択データ、マージモードインデックス値などを受信する。動き補償器(655)は、MVを、デコード済みピクチャバッファ(670)からの再構成された参照ピクチャに適用する。動き補償器(655)は、現在のピクチャのインター符号化されたブロックについての動き補償された予測を生成する。デコード済みピクチャバッファ(670)は、1つ以上の事前に再構成されたピクチャを参照ピクチャとしての使用のために記憶する。
【0087】
デコーダ(600)内の別の経路において、フレーム内予測予測器(645)が、イントラ予測データ(642)、例えば、イントラ予測が空間予測又はイントラBC予測を使用するか(例えば、イントラブロックごとのフラグ値)、予測モード方向(イントラ空間予測のための)、及びBV値(イントラBC予測のための)を示す情報などを受信する。イントラ空間予測について、現在のピクチャの再構成(638)の値を用いて、予測モードデータに従って、ピクチャ内予測器(645)は、現在のピクチャの現在のブロックのサンプル値を、現在のピクチャについての近隣の事前に再構成されたサンプル値から空間的に予測する。あるいは、BV値を用いるイントラBC予測について、ピクチャ内予測器(645)は、現在のブロックのサンプル値を、フレーム内予測領域の事前に再構成されたサンプル値を用いて予測し、該フレーム内予測領域は、現在のブロックのBV値によって示される。
【0088】
イントラ/インタースイッチは、所与のブロックのための予測(658)としての使用のために、動き補償された予測又はピクチャ内予測の値を選択する。例えば、HEVCシンタックスが守られるとき、イントラ/インタースイッチは、イントラ予測されたCU及びインター予測されたCUを含み得るピクチャのCUのためにエンコードされたシンタックス要素に基づいて制御されることができる。非スキップモードブロックについて、デコーダ(600)は、予測(658)を再構成された残差値と組み合わせて、ビデオ信号からのコンテンツの再構成(638)を生成する。スキップモードブロックについて、デコーダ(600)は、予測(658)の値を再構成(638)として使用する。
【0089】
非スキップモードブロックについて、残差を再構成するために、スケーラ/逆変換器(635)は、量子化された変換係数データ(632)を受信し、処理する。スケーラ/逆変換器(635)において、スケーラ/逆量子化器は、量子化された変換係数に対して逆スケール変更及び逆量子化を実行する。逆周波数変換器が逆周波数変換を実行し、再構成された予測残差値又はサンプル値のブロックを生成する。例えば、逆周波数変換器は逆ブロック変換を周波数変換係数に適用し、サンプル値データ又は予測残差データを生成する。逆周波数変換は、逆DCT、その整数近似、又は別のタイプの逆周波数変換(例えば、逆離散サイン変換又はその整数近似)であり得る。
【0090】
ピクチャ内予測について、再構成(638)の値は、ピクチャ内予測器(645)に対してフィードバックされることができる。ピクチャ間予測について、再構成(638)の値はさらにフィルタされることができる。マージ器/フィルタ(665)において、デコーダ(600)は、異なるタイルからのコンテンツをピクチャの再構成されたバージョンにマージする。デコーダ(600)は、デブロックフィルタリング及びSAOフィルタリングを、フィルタ制御データ(662)及びフィルタ適応の規則に従って選択的に実行して、フレームの中の境界をわたる不連続性を適応的に滑らかにする。別法として、又はさらに、他のフィルタリング(例えば、デリンギングフィルタリング又はALFなど;図示されていない)が適用されてもよい。タイル境界は、デコーダ(600)の設定又はエンコードされたビットストリームデータ内のシンタックス指標に依存して、選択的にフィルタされ、あるいはまったくフィルタされないことが可能である。デコード済みピクチャバッファ(670)は、再構成された現在のピクチャを、後の動き補償された予測における使用のためにバッファする。
【0091】
デコーダ(600)は、後処理(post-processing)フィルタをさらに含んでもよい。後処理フィルタ(608)は、デリンギングフィルタリング、適応ウィナー(Wiener)フィルタリング、フィルム粒子再現(film-grain reproduction)フィルタリング、SAOフィルタリング、又は別の種類のフィルタリングを含み得る。
【0092】
所望される実装及び伸張のタイプに依存して、デコーダのモジュールは、追加され、省略され、複数のモジュールに分割され、他のモジュールと組み合わせられ、かつ/あるいは同様のモジュールと置換されることができる。別の実施形態において、異なるモジュール及び/又はモジュールの他の構成を有するデコーダが、所望される手法のうち1つ以上を実行する。デコーダの具体的な実施形態は、典型的に、デコーダ(600)のバリエーション又は補足されたバージョンを使用する。デコーダ(600)内のモジュール間に示される関係はデコーダにおける情報の一般的フローを示し、他の関係は簡潔さのために示されていない。
【0093】
VII.ブロックベクトル予測におけるイノベーション
本セクションは、ブロックベクトル(“BV”)予測の様々な特徴を提示する。特徴のうちいくつかは、デフォルトBV予測子の使用に関し、特徴のうち別のものは、BV予測子のマージモード又はイントラブロックコピー(“BC”)予測のスキップモードに関する。こうした特徴が、レート歪み性能の観点においてより効率的であるイントラBC予測を容易にすることができる。
【0094】
具体的に、説明されるイノベーションは、特定の「人工的に」作成されたビデオコンテンツ、例えば、スクリーンキャプチャコンテンツなどをエンコードするとき、レート歪み性能を向上させることができる。スクリーンキャプチャコンテンツは、繰り返される構造(例えば、グラフィクス、テキスト文字)を典型的に含み、このことは、イントラBC予測に関して性能を向上させる機会を提供する。スクリーンキャプチャコンテンツは、大抵、高いクロマサンプリング解像度を有するフォーマット(例えば、YUV4:4:4又はRGB4:4:4)においてエンコードされるが、さらに、より低いクロマサンプリング解像度(例えば、YUV4:2:0)を有するフォーマットにおいてエンコードされることもある。スクリーンキャプチャコンテンツのエンコーディング/デコーディングの一般的シナリオには、リモートデスクトップ会議、及び、自然のビデオ又は他の「ミックスされたコンテンツ」のビデオに対するグラフィカルなオーバーレイのエンコーディング/デコーディングが含まれる。
【0095】
A.イントラBC予測モード、BV値、及びBV予測 ‐ 導入
イントラBC予測について、ピクチャの現在のブロックのサンプル値は、同じピクチャの中のサンプル値を用いて予測される。BVは、予測に使用されるサンプル値を含むピクチャの領域に対する、現在のブロックからの変位を示す。予測に使用されるサンプル値は、事前に再構成されたサンプル値である。BV値は、ビットストリームの中で信号伝達されることが可能であり、デコーダは、このBV値を使用して、予測に使用するためのピクチャの領域を決定することができ、これもまた、デコーダにおいて再構成される。イントラBC予測は、ピクチャ内予測(intra-picture prediction)の一形式であり、ピクチャのブロックのためのイントラBC予測は、同じピクチャの中のサンプル値以外のいかなるサンプル値も使用しない。
【0096】
図7aは、現在のフレーム(710)の現在のブロック(760)についてのイントラBC予測を例示する。現在のブロックは、符号化ユニット(“CU”)の符号化ブロック(“CB”)、予測ユニット(“PU”)の予測ブロック(“PB”)、変換ユニット(“TU”)の変換ブロック(“TB”)、又は他のブロックであり得る。現在のブロックのサイズは、64×64、32×32、16×16、8×8、又は何らかの他のサイズであり得る。より一般的に、現在のブロックのサイズはm×nであり、これにおいて、m及びnの各々は自然数であり、m及びnは互いに等しくてもよく、あるいは異なる値を有してもよい。別法として、現在のブロックは、何らかの他の形状(例えば、非長方形の形状を有する符号化されたビデオオブジェクトのエリア)を有してもよい。
【0097】
BV(761)は、現在のブロック(760)からの、予測に使用されるサンプル値を含むピクチャの領域(762)に対する変位(又は、オフセット)を示す。BV(761)によって示されるフレーム内予測領域(762)は、現在のブロック(760)のための「マッチングブロック」と称されることがある。マッチングブロックは、現在のブロック(760)と同一であってもよく、あるいは、現在のブロック(760)の近似であってもよい。現在のブロックの左上位置が現在のフレームにおける位置(x
0,y
0)にあると仮定し、フレーム内予測領域の左上位置が現在のフレームにおける位置(x
1,y
1)にあると仮定する。BVは、変位(x
1−x
0,y
1−y
0)を示す。例えば、現在のブロックの左上位置が位置(256,128)にあり、フレーム内予測領域の左上位置が位置(176,104)にある場合、BV値は(−80,−24)である。上記の例において、負の水平の変位は現在のブロックの左に対する位置を示し、負の垂直の変位は現在のブロックの上の位置を示す。
【0098】
イントラBC予測は、BC動作を用いて冗長性(例えば、フレームの内側の繰り返されるパターンなど)を活用することによって符号化効率を向上させることができる。現在のブロックのサンプル値は、現在のブロックのサンプル値を直接エンコードすることに代わって、BV値を用いて表現される。現在のブロックのサンプル値が、BV値で示されるフレーム内予測領域のサンプル値に正確にマッチしないとしても、その差は無視可能である(知覚的に目立たない)可能性がある。あるいは、差が有意である(significant)場合、該差は、現在のブロックの元のサンプル値より効率的に圧縮されることが可能な残差値としてエンコードされることができる。
【0099】
集合的に、イントラBC予測を用いてエンコードされるブロックのBV値は、相当数のビットを消費する可能性がある。BV値は、ビットレートを低減させるようにエントロピーエンコードされることができる。BV値のためのビットレートをさらに低減させるために、エンコーダは、BV値の予測を使用することができる。BV値は、冗長性をしばしば見せる。所与のブロックのためのBV値は、ピクチャの中の前のブロックのBV値としばしば類似し、あるいは同じでありさえする。BV予測について、所与のブロックのためのBV値は、BV予測子を用いて予測される。それから、所与のブロックのためのBV値とBV予測子とにおける差(又は、BV差分)がエントロピー符号化される。典型的には、BV差分は、BV値の水平及び垂直の成分とBV予測子とについて計算される。BV予測がうまく働くとき、BV差分は、効率的なエントロピー符号化をサポートする確率分布を有する。HEVC標準(JCTVC−O1005)の現在のドラフトバージョンにおいて、BV予測子は、現在のCTU内の最後の符号化されたCUのBV値(すなわち、現在のCTU内の前のイントラBC予測されたブロックのBV値)である。
【0100】
図7bは、フレームの中の現在のブロック(760)のBV(761)と、フレーム(710)の中の前のブロック(750)のBV(751)を示す。前のブロック(750)のBV(751)は、現在のブロック(760)のBV(761)のためのBV予測子として使用される。例えば、BV値が(−80,−24)であり、BV予測子が(−80,−32)である場合、(0,8)のBV差分がエントロピー符号化される。
【0101】
デコーダは、BV値のためのエントロピー符号化されたBV差分を受信し、エントロピーデコードする。デコーダは、さらに、BV値のためのBV予測子を決定する。デコーダによって決定されるBV予測子は、エンコーダによって決定されるBV予測子と同じである。デコーダは、BV予測子とデコードされたBV差分とを組み合わせて、BV値を再構成する。
【0102】
HEVC標準(JCTVC−O1005_v3)の現在のドラフトバージョンにおいて、実際のBV値に基づくBV予測子は、いくつかの状況において利用可能でない。例えば、前の実際のBV値は、所与のCTUにおける最初のイントラBC予測されたブロックに対して利用可能でない。前の実際のBV値がBV予測子に利用可能でないとき(
図7cに示されるとおり)、(0,0)のデフォルト値がBV予測子として使用される。実質上、このことは、CTUにおける前のイントラBC予測されたブロックについて利用可能であるBV値がないときに、BV予測がスキップされることを意味する。
【0103】
B.非ゼロ成分を有するデフォルトBV予測子
本明細書に説明されるイノベーションの一態様に従い、前の実際のBV値が、現在のブロックのBV値のためのBV予測子としての使用に利用可能でないとき、エンコーダ及びデコーダは、非ゼロ成分を有するデフォルトBV予測子を使用する。ゼロ値デフォルトBV予測子と比べて、非ゼロ成分を有するデフォルトBV予測子は、現在のブロックのBV値により近くなる傾向があり、このことは、BV差分についてのより効率的なエントロピー符号化を結果としてもたらす。さらに、非ゼロ値を有するデフォルトBV予測子は、BV予測のためのスキップモード又はマージモードに使用可能なオプションを提供することができる。
【0104】
1.例示的なデフォルトBV予測子
図7dに示されるとおり、現在のブロック(760)のBV値(761)について、デフォルトBV予測子(763)は、非ゼロ水平成分を有することができる。例えば、デフォルトBV予測子は水平ベクトル(BVx,0)である。水平BV成分BVxの値は、固定された非ゼロ値とすることができる。あるいは、BVxの値は、現在のブロックの幅であってもよく、これは、現在のブロックと参照領域とにおけるオーバーラップを回避する水平BV成分BVxの最小値である。
【0105】
例えば、現在のブロックが幅W及び高さHを有するCUのCBであるとき、デフォルトBV予測子の水平BV成分BVxの値は、CUの幅Wに等しい負のオフセットであってもよい。すなわち、デフォルトBV予測子は(−W,0)とすることができる。デフォルトBV予測子(BVx,0)は、(前のブロックの実際のBV値に基づく)通常のBV予測子(BVx,0)が利用不能であるときいつでも、使用されることが可能である。あるいは、デフォルトBV予測子(BVx,0)は、現在のブロックのBV値に依存して条件付きで使用されてもよい。例えば、現在のブロックのBV値の垂直BV成分が−Hより小さい場合、デフォルトBV予測子は(−W,0)である。そうでない場合(現在のブロックのBV値の垂直BV成分が−Hより小さくない)、デフォルトBV予測子は(0,0)である。上記条件は、現在のブロックのBV値が有意な垂直BV成分を有するとき、(−W,0)のデフォルトBV予測子が適用されないことを確保する。別法として、非ゼロデフォルトBV予測子(BVx,0)は、別の条件に従って条件付きで適用される。
【0106】
−Wの負のオフセットを有することに代わって、デフォルトBV予測子は、別の負のオフセットを有してもよい。例えば、デフォルトBV予測子は(−2*W,0)とすることができる。
【0107】
別法として、デフォルトBV予測子は、垂直ベクトル(0,BVy)である。垂直BV成分BVyの値は固定された非ゼロ値であってもよく、あるいは、BVyの値は現在のブロックの高さであってもよく、これは現在のブロックと参照領域とにおけるオーバーラップを回避するBVyの最小値である。例えば、現在のブロックが幅W及び高さHを有するCUのCBであるとき、デフォルトBV予測子は(0,−H)とすることができる。デフォルトBV予測子(0,BVy)は、通常のBV予測子が利用不能であるときいつでも、使用されることが可能であり、あるいは、デフォルトBV予測子(0,BVy)は、現在のブロックのBV値に依存して条件付きで使用されてもよい。
【0108】
別法として、デフォルトBV予測子は、非ゼロ水平成分及び非ゼロ垂直成分を有してもよい。
【0109】
2.デフォルトBV予測子を用いた例示的なエンコーディング
図8は、エンコーディングの間に非ゼロ成分を有するデフォルトBV予測子を使用する一般化された手法(800)を示す。画像エンコーダ又はビデオエンコーダ、例えば、
図3又は
図5a〜
図5bを参照して説明されるものなどが、手法(800)を実行することができる。
【0110】
エンコーダは、ピクチャの現在のブロックのためのデフォルトBV予測子を決定する(830)。例えば、HEVC実装において、現在のブロックは、符号化ツリーユニットの符号化ユニットの一部である。デフォルトBV予測子は、非ゼロ値を有するBV予測子成分を含む。例えば、非ゼロ値を有するBV予測子成分は、水平BV成分である。実装に依存して、非ゼロ水平BV成分は、固定値(現在のブロックのサイズから独立した)、現在のブロックの幅に等しい値、又は何らかの他の非ゼロ値を有することができる。あるいは、非ゼロ値を有するBV予測子成分は、垂直BV成分である。実装に依存して、非ゼロ垂直BV成分は、固定値(現在のブロックのサイズから独立した)、現在のブロックの高さに等しい値、又は何らかの他の非ゼロ値を有することができる。あるいは、デフォルトBV予測子は、非ゼロ水平BV成分及び非ゼロ垂直BV成分を含むことができる。デフォルトBV予測子は、セクションCに説明されるとおりのスキップモードのため、又はセクションDに説明されるとおりのマージモードのために組み立てられた(assembled)複数のBV予測子候補のセットの一部とすることができる。
【0111】
エンコーダは、デフォルトBV予測子を用いて現在のブロックをエンコードする(850)。例えば、エンコーダは、(a)現在のブロックのためのBV値を用いてイントラBC予測を実行し、(b)現在のブロックのためのBV値とデフォルトBV予測子とを用いてBV差分を決定し、(c)BV差分をエンコードする。別法として、エンコーダは、デフォルトBV予測子を用いてイントラBC予測を単に実行する。
【0112】
図9は、エンコーディングの間に非ゼロ成分を有するデフォルトBV予測子を使用する、より詳細化された例示的な手法(900)を示す。画像エンコーダ又はビデオエンコーダ、例えば、
図3又は
図5a〜
図5bを参照して説明されるものなどが、手法(900)を実行することができる。
【0113】
始め、エンコーダは、ピクチャの現在のブロックのためのBV値を識別する(910)。エンコーダは、任意の形式のBV推定を使用して、現在のブロックのためのBV値を識別することができる。HEVC実装において、現在のブロックは、符号化ツリーユニットの符号化ユニットの一部である。
【0114】
エンコーダは、実際のBV値がBV予測子としての使用に利用可能であるかどうかをチェックする(920)。例えば、エンコーダは、ピクチャの前のブロックのための実際のBV値が利用可能であるかどうかをチェックする。HEVC実装において、前のブロックのための実際のBV値は、(1)前のブロックと現在のブロックとが同じCTUの一部であり、(2)前のブロックの予測モードがイントラBC予測モードである場合、利用可能である。前のブロックのための実際のBV値は、例えば、所与のCTUの最初のイントラBC予測されたブロックについて、利用可能でない。
【0115】
実際のBVが、BV予測子としての使用に利用可能である場合、エンコーダは、BV予測子として実際のBVを使用する(940)。一方、いずれの前のブロックのための実際のBVも、BV予測子としての使用に利用可能でない場合、エンコーダは、現在のブロックのためのデフォルトBV予測子を決定する(930)。デフォルトBV予測子は、非ゼロ値を有するBV予測子成分を含む。例えば、デフォルトBV予測子は、
図8の動作(830)に関して上記で説明されたとおり、決定される。
【0116】
エンコーダは、現在のブロックのためのBV値とBV予測子とにおけるBV差分を決定する(950)。エンコーダは、BV差分をエントロピー符号化する(960)。
【0117】
3.デフォルトBV予測子を用いた例示的なデコーディング
図10は、デコーディングの間に非ゼロ成分を有するデフォルトBV予測子を使用する一般化された手法(1000)を示す。画像デコーダ又はビデオデコーダ、例えば、
図4又は
図6を参照して説明されるものなどが、手法(1000)を実行することができる。
【0118】
デコーダは、ピクチャの現在のブロックのためのデフォルトBV予測子を決定する(1030)。例えば、HEVC実装において、現在のブロックは、符号化ツリーユニットの符号化ユニットの一部である。デフォルトBV予測子は、非ゼロ値を有するBV予測子成分を含む。例えば、非ゼロ値を有するBV予測子成分は、水平BV成分である。実装に依存して、非ゼロ水平BV成分は、固定値(現在のブロックのサイズから独立した)、現在のブロックの幅に等しい値、又は何らかの他の非ゼロ値を有することができる。あるいは、非ゼロ値を有するBV予測子成分は、垂直BV成分である。実装に依存して、非ゼロ垂直BV成分は、固定値(現在のブロックのサイズから独立した)、現在のブロックの高さに等しい値、又は何らかの他の非ゼロ値を有することができる。あるいは、デフォルトBV予測子は、非ゼロ水平BV成分及び非ゼロ垂直BV成分を含むことができる。デフォルトBV予測子は、セクションCに説明されるとおりのスキップモードのため、又はセクションDに説明されるとおりのマージモードのために組み立てられた複数のBV予測子候補のセットの一部とすることができる。
【0119】
デコーダは、デフォルトBV予測子を用いて現在のブロックをデコードする(1050)。例えば、デコーダは、(a)現在のブロックのためのBV差分をデコードし、(b)デコードされたBV差分をデフォルトBV予測子と組み合わせて現在のブロックのためのBV値を再構成し、(c)現在のブロックのためのBV値を用いてイントラBC予測を実行する。別法として、デコーダは、デフォルトBV予測子を用いてイントラBC予測を単に実行する。
【0120】
図11は、デコーディングの間に非ゼロ成分を有するデフォルトBV予測子を使用する、より詳細化された例示的な手法(1100)を示す。画像デコーダ又はビデオデコーダ、例えば、
図4又は
図6を参照して説明されるものなどが、手法(1100)を実行することができる。
【0121】
デコーダは、実際のBVが、ピクチャの現在のブロックのBV値のためのBV予測子としての使用に利用可能であるかどうかをチェックする(1120)。例えば、デコーダは、ピクチャの前のブロックのための実際のBV値が利用可能であるかどうかをチェックする。HEVC実装において、前のブロックの実際のBV値は、(1)前のブロックと現在のブロックとが同じCTUの一部であり、(2)前のブロックの予測モードがイントラBC予測モードである場合、利用可能である。前のブロックのための実際のBV値は、例えば、所与のCTUの最初のイントラBC予測されたブロックについて、利用可能でない。
【0122】
実際のBVが、BV予測子としての使用に利用可能である場合、デコーダは、BV予測子として実際のBVを使用する(1140)。一方、いかなる前のブロックのための実際のBVもBV予測子としての使用に利用可能でない場合、デコーダは、現在のブロックのためのデフォルトBV予測子を決定する(1130)。デフォルトBV予測子は、非ゼロ値を有するBV予測子成分を含む。例えば、デフォルトBV予測子は、
図10の動作(1030)に関連して上記で説明されたとおり、決定される。
【0123】
デコーダはさらに、現在のブロックのためのBV差分をエントロピーデコードする(1150)。それから、デコーダは、BV差分をBV予測子と組み合わせて(1160)、現在のブロックのためのBV値を再構成する。
【0124】
4.代替物及びバリエーション
上記で説明されたデフォルトBV予測子の例において、デフォルトBV予測子の値は、現在のブロックの場所に依存して制約されない。別法として、デフォルトBV予測子の値は、現在のブロックの場所に依存して制約されてもよい。例えば、現在のブロックがピクチャの端部にあり、したがってデフォルトBV予測子がピクチャの外側の場所を指し示すことになる場合、デフォルトBV予測子はピクチャ内の場所を指し示すように制約され、あるいは、(0,0)BV予測子が使用される。あるいは、別の例として、BV値がCTUの何らかのセット(例えば、現在のCTU及び前のCTU)の中の場所を参照するように制約されるHEVC実装について、デフォルトBV予測子は、CTUの上記セット内の場所を参照するように制約される。あるいは、別の例として、ピクチャが複数のタイル又は複数のスライスを含むHEVC実装について、BV値(及び、デフォルトBV予測子)は、現在のタイル(及び/又は現在のスライス)を用いてある場所を参照するように制約されてもよい。
【0125】
上記で説明されたデフォルトBV予測子の例において、デフォルトBV予測子の値は、現在のブロックの場所に依存して切り替わらない。別法として、デフォルトBV予測子の値は、現在のブロックの場所に依存して切り替わることができる。例えば、現在のブロックが、ピクチャ(又は、使用される場合、タイル、若しくはスライス)の左端を除くどこかにある場合、デフォルトBV予測子は、水平BV予測子(BVx,0)である。現在のブロックがピクチャ(又は、使用される場合、タイル、若しくはスライス)の左端にあり、あるいは、デフォルト水平BV予測子がその他の方法でピクチャ(又は、使用される場合、タイル、若しくはスライス)の外側の場所を参照することになる場合、デフォルトBV予測子は、垂直BV予測子(0,BVy)である。そして、現在のブロックがピクチャ(又は、使用される場合、タイル、若しくはスライス)の左上角にあり、あるいは、デフォルト水平BV予測子及び垂直BV予測子がその他の方法でピクチャ(又は、使用される場合、タイル、若しくはスライス)の外側の場所を参照することになる場合、デフォルトBV予測子は、(0,0)BV予測子である。
【0126】
C.イントラBV予測のスキップモード
本明細書に説明されるイノベーションの別の態様に従い、エンコーダ及びデコーダは、特定のイントラBC予測されたブロックについて、スキップモードを使用する。スキップモードにおいて、イントラBC予測されたブロックは、予測されたBV値を使用し、ビットストリームの中に残差データを有さない。いくつかのシナリオにおいて、イントラBC予測されたブロックに対するスキップモードの使用は、レート歪み効率をかなり向上させることができる。
【0127】
一般に、エンコーダは、現在のイントラBC予測されたブロックについて、スキップモードをいつ使用すべきかを決める。エンコーダは、イントラBC予測された領域が現在のブロックとどれほど近くマッチするかに基づいて、残差値の知覚的な重要さに基づいて、残差値のエンコーディングに利用可能なビットレートに基づいて、及び/又は他のファクタに基づいて、スキップモードを使用することを決めることができる。エンコーダは、エンコーディング速度が制約である特定のエンコーディングモード、例えば、リアルタイムエンコーディングにおいて、イントラBC予測されたブロックのスキップモードをより好むことができる。
【0128】
図12は、イントラBC予測されたブロックに対するスキップモードを含むエンコーディングの一般化された手法(1200)を示す。画像エンコーダ又はビデオエンコーダ、例えば、
図3又は
図5a〜
図5bを参照して説明されるものなどが、手法(1200)を実行することができる。
【0129】
ピクチャの現在のブロックについて、現在のブロックが、スキップモードにおいてエンコードされた、イントラBC予測されたブロックである場合、エンコーダは、BV予測を使用して(1210)現在のブロックのためのBV値を決定する。現在のブロックのためのBV値は、ピクチャ内の領域に対する変位を示す。BV予測は、マージモード予測、最後に符号化されたイントラBC予測されたブロックのBV値を用いた予測、近隣のイントラBC予測されたブロックのBV値の成分観点での中央値を用いた予測、又は何らかの他の形式のBV予測を含むことができる。現在のブロックは、例えば、CTUのCUの一部である。
【0130】
エンコーダは、BV値(ここでは、予測されたBV値)と共にイントラBC予測を用いて現在のブロックをエンコードする(1220)。エンコーダは、ビットストリーム内に、現在のブロックがスキップモードにおいてエンコードされているとの指標を出力する。ブロックがスキップモードにおいてエンコードされるので、ビットストリームは、現在のブロックのためのBV差分及び残差データを欠く。しかしながら、ビットストリームは、現在のブロックのためのBV値として使用するための、複数のBV予測子候補のセットからの、BV予測子候補の選択を示すインデックス値を含むことができる。例えば、複数のBV予測子候補のセットが2つのBV予測子候補を有するとき、インデックス値はフラグ値である。あるいは、複数のBV予測子候補のセットが3つ以上のBV予測子候補を有するとき、インデックス値は整数値である。インデックス値は、例えば算術符号化を用いて、エントロピー符号化されることができる。
【0131】
図13は、イントラBC予測されたブロックに対するスキップモードを含むデコーディングの一般化された手法(1300)を示す。画像デコーダ又はビデオデコーダ、例えば、
図4又は
図6を参照して説明されるものなどが、手法(1300)を実行することができる。
【0132】
ピクチャの現在のブロックについて、現在のブロックが、スキップモードにおいてエンコードされた、イントラBC予測されたブロックである場合、デコーダは、ビットストリームから、現在のブロックがスキップモードにおいてエンコードされているとの指標を受信する。ブロックがスキップモードにおいてエンコードされているので、ビットストリームは、現在のブロックのためのBV差分及び残差データを欠く。しかしながら、上記で説明されたとおり、ビットストリームは、現在のブロックのBV値として使用するための、複数のBV予測子候補のセットからの、BV予測子候補の選択を示すインデックス値を含むことができる。現在のブロックは、例えば、CTUのCUの一部である。
【0133】
デコーダは、BV予測を使用して(1320)現在のブロックのためのBV値を決定する。BV予測は、エンコーダにおいて実行されるBV予測を一般に反映する。BV予測は、マージモード予測、最後に符号化されたイントラBC予測されたブロックのBV値を用いた予測、近隣のイントラBC予測されたブロックのBV値の成分観点での中央値を用いた予測、又は何らかの他の形式のBV予測を含むことができる。デコーダは、BV値(ここでは、予測されたBV値)と共にイントラBC予測を用いて現在のブロックをデコードする(1330)。
【0134】
D.BV予測のマージモード
本明細書に説明されるイノベーションの別の態様に従い、エンコーダ及びデコーダは、BV予測について、マージモードを使用する。マージモードは、BV予測の品質をかなり向上させることができ、このことが今度は、ビットストリーム内でBV差分によって消費されるビットの量を低減させる。
【0135】
マージモードについて、ブロックのためのBV予測子を決定するとき、エンコーダは、BV予測子候補のセットを組み立て、ブロックのBV予測子として使用するための、BV予測子候補うち1つを選択し、選択されたBV予測子候補を示すインデックス値をビットストリーム内で信号伝達する。デコーダは、BV予測子候補のセットを組み立て、信号伝達されたインデックス値に基づいて、ブロックのBV予測子として使用するための、BV予測子候補のうち1つを選択する。インデックス値はビットストリーム内のビットを消費するが、マージモードはBV予測をかなり向上させ、ゆえにBV差分によって消費されるビットを低減させて、ビットレートにおける全体的な低減を結果としてもたらすことが可能である。
【0136】
例示的な実装において、BV予測に対するマージモードは、イントラBC予測されたブロックに対するスキップモードとの組み合わせにおいて使用される。別法として、BV予測に対するマージモードは、スキップモードがイントラBC予測されたブロックに対して有効にされない場合でさえ、使用されることが可能である。
【0137】
1.例示的なBV予測子候補及びインデックス値
マージモードにおいてブロックのためのBV予測子を決定するとき、エンコーダ又はデコーダは、BV予測子候補のセットを組み立てる。BV予測子候補のセットの組成は実装に依存し、しかし、エンコーダ側とデコーダ側とにおいて同じである。
【0138】
1つのアプローチにおいて、BV予測子候補は、ピクチャ内の事前に符号化されたブロックの実際のBV値の中から組み立てられる。一般に、エンコーダ及びデコーダは、ピクチャ内の前のブロックの、最大x個の実際のBV値を決定する。前のブロックは、ピクチャ内の事前に符号化されたイントラBC予測されたブロックである。具体的に、これらは、デコーディング順序において現在のブロックより早い、x個の最も近いイントラBC予測されたブロックである。xの値は実装に依存し、例えば、2、3、4、5、又は何らかの他の数とすることができる。より多くのBV予測子候補を使用することは、インデックス値のためのビットレートを増加させるが、BV予測の品質を向上させる傾向があり、このことが今度は、BV差分によって消費されるビットを低減させる。
【0139】
前のイントラBC予測されたブロックは、現在のブロックの近隣である必要はない。実際のBV値を有する、xより少ない前のブロックが利用可能である場合、BV予測子のセットは、xより少ないBV予測子候補を含むことができる。
【0140】
図14は、上記アプローチの一例を示す。
図14において、3つの前のイントラBC予測されたブロック(1430、1440、1450)の3つのBV値(1431、1441、1451)が、現在のフレーム(1410)の現在のブロック(1460)のBV予測子に対するマージモードのためのBV予測子候補を提供する。前のブロック(1430、1440、1450)は
図14の例において連続的であるが、前のブロックは連続的である必要はない(すなわち、BV予測子候補を提供する、前のイントラBC予測されたブロックは、ピクチャの中の他のイントラBC予測されていないブロックによって分離されることが可能である)。
【0141】
BV予測子候補のセットは、1つ以上のデフォルトBV予測子をさらに含むことができる。
図14の例において、BV予測子候補のセットは、水平変位を有するデフォルトBV予測子(BVx,0)と垂直変位を有するデフォルトBV予測子(0,BVy)とを含む。具体的に、水平変位及び垂直変位を有するデフォルトBV予測子は、純粋な水平又は垂直方向に一般に続く、テキストコンテンツに有用である傾向がある。
【0142】
マージモードインデックス値は、それぞれのBV予測子候補に関連付けられる。典型的に、より小さいインデックス値は、選択される可能性がより大きいBV予測子候補に関連付けられ、より大きいインデックス値は、選択される可能性がより小さいBV予測子候補に関連付けられ、このことは、エントロピー符号化の後、インデックス値のビットレートを低減させる傾向がある。
図14において、インデックス値idx0...idx4は、予期される選択の見込みに従って、BV値(1451、1441、1431)及びデフォルトBV予測子を有するBV予測子候補に割り当てられる。
【0143】
例えば、いくつかの実施において、事前に符号化されたブロックについての2つの実際のBV値が、BV予測子候補BV
cand0及びBV
cand1として記憶される。新しいBV値が使用された後、より古いBV予測子候補BV
cand1が、より新しいBV予測子候補BV
cand0で置換され、より新しいBV予測子候補BV
cand0は、ちょうど使用されたBV値で置換される。エンコーダ側において、現在のブロックについて、エンコーダは、BV予測子として使用するための、BV
cand0及びBV
cand1のうち1つを選択する。マージモードインデックス値として、エンコーダは、BV
cand0及びBV
cand1のうちいずれの1つがエンコーダにより使用されており、デコーダにより使用されるべきであるかを示すフラグ値を信号伝達する。デコーダ側において、デコーダはフラグ値を受信し、パースし、フラグ値に基づいて、ブロックのBV予測子として使用するための、BV
cand0及びBV
cand1のうち1つを選択する。上記アプローチにおいて、エンコーダ及びデコーダは各々、2つのBV予測子候補BV
cand0及びBV
cand1を記憶し、更新する。
【0144】
別の例として、いくつかの他の実施において、事前に符号化されたブロックの1つの実際のBV値が、第1のBV予測子候補BV
cand0として記憶され、デフォルトBV予測子が、第2のBV予測子候補BV
cand1として記憶される。例えば、デフォルトBV予測子は(BVx,0)であり、ここで、BVxは、現在のブロックの幅Wに等しい負のオフセットであるか、あるいは何らかの他の非ゼロ値を有することが可能である。新しいBV値が使用された後、第1のBV予測子候補BV
cand0は、ちょうど使用されたBV値で置換され、しかし、第2のBV予測子候補BV
cand1は、変更されない。エンコーダ側において、現在のブロックについて、エンコーダは、BV予測子として使用するための、BV
cand0及びBV
cand1のうち1つを選択する。エンコーダは、BV
cand0及びBV
cand1のうちいずれの1つがエンコーダにより使用されており、デコーダにより使用されるべきであるかを示すフラグ値を信号伝達する。デコーダは、フラグ値を受信し、パースし、フラグ値に基づいて、ブロックのBV予測子として使用するための、BV
cand0及びBV
cand1のうち1つを選択する。上記アプローチにおいて、エンコーダ及びデコーダは各々、2つのBV予測子候補BV
cand0及びBV
cand1を記憶し、第1のBV予測子候補BV
cand0は、エンコーディング又はデコーディングの間に更新される。
【0145】
別のアプローチにおいて、BV予測子候補は、ピクチャ内の現在のブロックの近くにある事前に符号化されたブロックの実際のBV値の中から組み立てられる。エンコーダ及びデコーダは、近隣ブロックの、最大でx個の実際のBV値を決定する。近隣のブロックは、現在のブロックの左、現在のブロックの上、現在のブロックの右上などに対するピクチャ内の事前に符号化されたイントラBC予測されたブロックである。xの値は実装に依存し、例えば、2、3、4、5、又は何らかの他の数とすることができる。実際のBV値を有する、xより少ない近隣ブロックが利用可能である場合、BV予測子候補のセットは、xより少ないBV予測子候補を含むことができる。
【0146】
図15は、上記アプローチの一例を示す。
図15において、3つの近隣のイントラBC予測されたブロック(1530、1540、1550)の3つのBV値(1531、1541、1551)が、現在のフレーム(1510)の現在のブロック(1560)のBV予測子に対するマージモードのためのBV予測子候補を提供する。近隣のブロックのうち1つが利用可能でない場合(例えば、イントラBC予測されたブロックでない、あるいは、ピクチャ、タイル、又はスライスの外側である)、いくつかの場合において、別の近隣のブロックが追加されることが可能である(例えば、現在のブロックの左上に対するブロック)。
図15に示されるとおり、BV予測子候補のセットは、1つ以上のデフォルトBV予測子を含むことができる(例えば、水平変位を有するデフォルトBV予測子(BVx,0)、及び垂直変位を有するデフォルトBV予測子(0,BVy)など)。
図15において、インデックス値idx0....idx4は、予期される選択の見込みに従って、BV値(1541、1531、1551)及びデフォルトBV予測子を有するBV予測子候補に割り当てられる。
【0147】
BV予測子候補間における冗長値の扱いは、実装に依存する。いくつかの実装において、マージモードのためのBV予測子候補のセットは、冗長値を含むことができる。すなわち、冗長なBV予測子が、除去又は置換されない。別の実装において、マージモードのためのBV予測子のセットを組み立てるとき、エンコーダ及びデコーダは、冗長なBV予測子値をセットに追加しない。このアプローチは、BV予測子候補のより小さいセットを結果としてもたらすことが可能であり、符号化されたインデックス値のビットレートを低減させることができる。さらに別の実装において、マージモードのためのBV予測子候補のセットを組み立てるとき、エンコーダ及びデコーダは、すでにセット内にあるBV予測子候補に対して冗長であることになるBV予測子候補を、異なるBV予測子候補(例えば、別の事前に符号化されたイントラBC予測されたブロックからの、別の近隣のイントラBC予測されたブロックからの、別のデフォルトBC予測子オプションからの)で置換する。例えば、第3の前のイントラBC予測されたブロックのBV値が、第1の前のイントラBC予測されたブロック又は第2の前のイントラBC予測されたブロックのBV値と同じである場合、エンコーダ/デコーダは、代わって、第4の前のイントラBC予測されたブロックのBV値をBV予測子候補のセットに追加する。このBV値が冗長であることになる場合、エンコーダ/デコーダは、代わって、第5、第6等の前のイントラBC予測されたブロックのBV値を追加する。あるいは、エンコーダ/デコーダは、別のデフォルトBV予測子を追加する。
【0148】
2.選択されたBV予測子を用いた例示的なエンコーディング
図16aは、BV予測に対するマージモードを含むエンコーディングの一般化された手法(1600)を示す。画像エンコーダ又はビデオエンコーダ、例えば、
図3又は
図5a〜
図5bを参照して説明されるものなどが、手法(1600)を実行することができる。
【0149】
始め、エンコーダは、ピクチャの現在のイントラBC予測されたブロックのための複数のBC予測子候補のセットを決定する(1610)。現在のブロックは、例えば、CTUのCUの一部である。エンコーダは、
図14及び
図15を参照して説明されたアプローチのうち1つを用いて、又は別のアプローチを用いて、BV予測子候補のセットを決定することができる。一般に、BV予測子候補は、それぞれ、前のブロックについての最大x個の実際のBV値を含むことができ、ここで、xは実装に依存する(例えば、xは、2、3、4、5、又は何らかの他の数である)。x個の前のブロックは、現在のブロックの周りの近隣(neighborhood)における場所(例えば、
図15を参照)及び/又は現在のブロックと比較したデコーディング順序(例えば、
図14を参照)に少なくとも部分的に基づいて識別されることができる。BV予測子候補は、1つ以上のデフォルトBV予測子(例えば、各々が、非ゼロ値を有するBV予測子成分を有する)をさらに含むことができる。
【0150】
エンコーダは、現在のイントラBC予測されたブロックに使用するための、複数のBV予測子候補のうち1つを選択する(1620)。例えば、現在のブロックが、選択されたBV予測子候補と共にイントラBC予測を用いてエンコードされることになるとき、エンコーダは、参照されるイントラ予測領域が何らかのメトリック(例えば、絶対差の和、平均二乗誤差)によって現在のブロックに最も近くマッチするためのBV予測子候補を選択する。あるいは、現在のブロックが、イントラBC予測に使用されることになるBV値(BV推定を通して識別される)を有するとき、エンコーダは、現在のブロックのためのBV値に最も近くマッチするBV予測子候補を選択する。上記選択は、最小のBV差分を結果としてもたらし、このことは、エントロピー符号化の効率を向上させる傾向がある。
【0151】
エンコーダは、選択されたBV予測子候補を用いて、現在のイントラBC予測されたブロックをエンコードする(1630)。
図16bは、例示的な実装における現在のブロックのエンコーディング(1630)の詳細を示す。エンコーダは、現在のブロックがスキップモードにおいてエンコードされているかどうかをチェックする(1632)。そうである場合、エンコーダは、選択されたBV予測子と共にイントラBC予測を用い、しかしいかなる残差データも用いずに、現在のブロックをエンコードする(1633)。そうでない場合(スキップモードでない)、エンコーダは、現在のブロックがマージモードにおいてエンコードされているかどうかをチェックする(1634)。そうである場合、エンコーダは、選択されたBV予測子と共にイントラBC予測を用いて現在のブロックをエンコードする(1635)。マージモードにおいて、エンコーダは、現在のブロックのための残差データを場合によりエンコードする。そうでない場合(マージモードでない)、エンコーダは、現在のブロックのためのBV値と共にイントラBC予測を用いて現在のブロックをエンコードし(1637)、場合により、現在のブロックのための残差データをエンコードする。
【0152】
エンコーダは、選択されたBV予測子候補を示すインデックス値をビットストリーム内に出力する(1640)。BV予測子候補のセットが2つのBV予測子候補を含むとき、インデックス値はフラグとすることができる。あるいは、3つ以上のBV予測子候補が存在するとき、インデックス値は整数値とすることができる。インデックス値はエントロピー符号化され、あるいは固定長値として信号伝達されることが可能である。イントラBC予測モードシンタックス要素が、現在のブロックがイントラBC予測モードを用いてエンコードされていることを示す場合、インデックス値は、別個のシンタックス要素としてビットストリーム内で(条件付きで)信号伝達されることが可能である。あるいは、インデックス値は、別のシンタックス要素(例えば、現在のブロックがイントラBC予測モードを用いてエンコードされているかどうかを示すシンタックス要素)と共同でビットストリーム内で信号伝達されることが可能である。
【0153】
エンコーダは、現在のブロックのための任意のエンコードされたデータをさらに出力する。ビットストリーム内の値が、現在のブロックがスキップモードにおいてエンコードされているかどうかを示すことができる。現在のブロックがスキップモードブロックである場合、ビットストリームは、現在のブロックのためのBV差分を欠き、現在のブロックのための残差データを欠く。現在のブロックがマージモードブロックである場合、ビットストリームは、現在のブロックのためのBV差分を欠き、しかし、現在のブロックのための残差データを含み得る。そうでない場合(現在のブロックが非スキップモードの、非マージモードのブロックである)、ビットストリームは、現在のブロックのためのBV差分(選択されたBV予測子候補と現在のブロックのためのBV値とにおける差を示す)を含み、さらに、現在のブロックのための残差データを含み得る。
【0154】
エンコーダがデータ構造を使用して、前のイントラBC予測されたブロックに使用された実際のBV値を追跡するとき、エンコーダは、現在のブロックのためのBV値を用いて上記データ構造を更新することができる。
【0155】
3.選択されたBV予測子を用いた例示的なデコーディング
図17aは、BV予測子に対するマージモードを含むデコーディングの一般化された手法(1700)を示す。画像デコーダ又はビデオデコーダ、例えば、
図4又は
図6を参照して説明されるものなどが、手法(1700)を実行することができる。
【0156】
始め、デコーダは、ビットストリームから、ピクチャの現在のブロックのためのインデックス値を受信する(1710)。現在のブロックは、例えば、CTUのCUの一部である。インデックス値は、複数のBV予測子候補のセットの中から、選択されたBV予測子候補を示す。BV予測子候補セットが2つのBV予測子候補を含むとき、インデックス値はフラグとすることができる。あるいは、3つ以上のBV予測子候補が存在するとき、インデックス値は整数値とすることができる。インデックス値は、エントロピー符号化されることが可能であり、この場合にはデコーダはインデックス値をエントロピーデコードし、あるいは、固定長値として信号伝達されることが可能である。イントラBC予測モードシンタックス要素が、現在のブロックがイントラBC予測モードを用いてエンコードされたことを示す場合、インデックス値は、別個のシンタックス要素としてビットストリーム内で(条件付きで)信号伝達されることが可能である。あるいは、インデックス値は、別のシンタックス要素(例えば、現在のブロックがイントラBC予測モードを用いてエンコードされているかどうかを示すシンタックス要素)と共同でビットストリーム内で信号伝達されることが可能である。
【0157】
デコーダは、現在のブロックのための任意のエンコードされたデータをさらに受信する。デコーダは、デコーディングの適切な段階において、エンコードされたデータをエントロピーデコードする。ビットストリームの中の値が、現在のブロックがスキップモードにおいてエンコードされたかどうかを示すことができる。現在のブロックがスキップモードブロックである場合、ビットストリームは、現在のブロックのためのBV差分を欠き、現在のブロックのための残差データを欠く。現在のブロックがマージモードブロックである場合、ビットストリームは、現在のブロックのためのBV差分を欠き、しかし、現在のブロックのための残差データを含み得る。そうでない場合(現在のブロックが非スキップモードの、非マージモードのブロックである)、ビットストリームは、現在のブロックのためのBV差分を含み、さらに、現在のブロックのための残差データを含み得る。
【0158】
デコーダは、現在のブロックのための複数のBV予測子候補のセットを決定する(1720)。デコーダは、
図14及び
図15を参照して説明されたアプローチのうち1つを用いて、又は別のアプローチを用いて、BV予測子候補のセットを決定することができる。一般に、BV予測子候補は、前のブロックについての最大x個の実際のBV値を含むことができ、ここで、xは実装に依存する(例えば、xは、2、3、4、5、又は何らかの他の数である)。x個の前のブロックは、現在のブロックの周りの近隣における場所(例えば、
図15を参照)及び/又は現在のブロックと比較したデコーディング順序(例えば、
図14を参照)に少なくとも部分的に基づいて識別されることができる。BV予測子候補は、1つ以上のデフォルトBV予測子(例えば、各々が、非ゼロ値を有するBV予測子成分を有する)をさらに含むことができる。
【0159】
インデックス値に基づいて、デコーダは、現在のブロックに使用するための、複数のBV予測子候補のうち1つを選択する(1730)。デコーダは、選択されたBV予測子候補を用いて、現在のブロックをデコードする(1740)。
図17bは、例示的な実装における現在のブロックのデコーディング(1740)の詳細を示す。デコーダは、現在のブロックがスキップモードにおいてエンコードされたかどうかをチェックする(1742)。そうである場合、デコーダは、選択されたBV予測子と共にイントラBC予測を用い、しかしいかなる残差データも用いずに、現在のブロックをデコードする(1743)。そうでない場合(スキップモードでない)、デコーダは、現在のブロックがマージモードにおいてエンコードされたかどうかをチェックする(1744)。そうである場合、デコーダは、選択されたBV予測子と共にイントラBC予測を用いて現在のブロックをデコードする(1745)。マージモードにおいて、デコーダは、現在のブロックのための残差データを(存在する場合に)デコードする。そうでない場合(マージモードでない)、デコーダは、現在のブロックのためのBV値(選択されたBV予測子に相対したBV差分を用いてデコードされた)と共にイントラBC予測を用いて現在のブロックをデコードし(1747)、さらに、現在のブロックのための残差データを(存在する場合に)デコードする。
【0160】
デコーダがデータ構造を使用して、前のイントラBC予測されたブロックに使用された実際のBV値を追跡するとき、デコーダは、現在のブロックのためのBV値を用いて上記データ構造を更新することができる。
【0161】
4.マージモードの例示的な実装
HEVC実装において、CUのシンタックス及びセマンティクスは、BV予測に対するマージモード及び/又はイントラBC予測されたブロックに対するスキップモードのためのシンタックス要素を信号伝達するように、モディファイされることが可能である。
【0162】
JCTVC−O1005_v3におけるドラフトHEVC仕様において、cu_skip_flag[x0][y0]は現在のCUがスキップされるかどうかを示し、しかし、このフラグは、現在のスライスが“P”スライス(predictive slice)又は“B”スライス(bi-predictive slice)である場合のみ信号伝達される。アレイインデックスx0、y0は、ピクチャの左上ルマサンプルに相対した、考慮されているCBの左上ルマサンプルの場所(x0,y0)を規定する。cu_skip_flag[x0][y0]が1である場合、現在のCUはスキップされ、CUのcu_skip_flag[x0][y0]の後、マージ候補インデックスmerge_idx[x0][y0]を除き、さらなるシンタックス要素はパースされない。cu_skip_flag[x0][y0]が0である場合、CUはスキップされない。cu_skip_flag[x0][y0]が存在しないとき、これは0であるように推論される。
【0163】
1つのあり得るモディフィケーションに従い、cu_skip_flag[x0][y0]が、現在のスライスが“I”スライス(intra slice)である場合にさらに信号伝達される。イントラBC予測が(シーケンスパラメータセットの中のフラグintra_block_copy_enabled_flagに従って)有効にされるとき、cu_skip_flag[x0][y0]の値が1である場合、現在のCUはスキップされ、CUのcu_skip_flag[x0][y0]の後、BV予測子インデックス値idxを除き、さらなるシンタックス要素はパースされない。具体的に、現在のスキップされるCUについて、BV差が信号伝達されない。一方、cu_skip_flag[x0][y0]の値が0である場合、現在のCUはスキップされない。
【0164】
JCTVC−O1005_v3におけるドラフトHEVC仕様において、intra_bc_flag[x0][y0]は、現在のCUがイントラBC予測モードにおいて符号化されるかどうかを示す。アレイインデックスx0、y0は、ピクチャの左上ルマサンプルに相対した、考慮されているCBの左上ルマサンプルの場所(x0,y0)を規定する。intra_bc_flag[x0][y0]が1である場合、現在のCUはイントラBC予測モードにおいて符号化される。intra_bc_flag[x0][y0]が0である場合、現在のCUはイントラ空間予測を用いて符号化される。存在しないとき、intra_bc_flagの値は0であるように推論される。
【0165】
intra_bc_flag[x0][y0]に対する1つのあり得るモディフィケーションに従い、intra_bc_flag[x0][y0]が1であるとき、現在のCUのためのシンタックスが、BV予測子候補の選択を示すBV予測子インデックス値idxを含む。インデックス値idxは、2つのBV予測子候補間における選択を示すフラグ値であることが可能であり、あるいは、3つ以上のBV予測子候補間における選択を示す整数値であることが可能である。インデックス値は、例えば算術符号化を用いて、エントロピー符号化されることができる。
【0166】
あるいは、intra_bc_flag[x0][y0]の別のあり得るモディフィケーションに従い、シンタックス要素は、2値フラグに代わって整数値である。intra_bc_flag[x0][y0]が0である場合、現在のCUは、JCTVC−O1005_v3にあるとおり、イントラ空間予測を用いて符号化される。一方、intra_bc_flag[x0][y0]が0より大きい場合、現在のCUはイントラBC予測モードにおいて符号化され、intra_bc_flag[x0][y0]はさらに、BV予測子インデックス値idxを示す。例えば、intra_bc_flag[x0][y0]が1である場合、idxは1であり、intra_bc_flag[x0][y0]が2である場合、idxは2である、などである。換言すると、BV予測子インデックス値idxは、単一のシンタックス要素において空間又はBC予測のための2成分値(binary value)を用いて共同で符号化される。
【0167】
intra_bc_flag[x0][y0]をモディファイすることとインデックス値idxを信号伝達することとのいずれの方法についても、変数BvIntraPredictor[idx][compIdx]が、現在のCUのイントラBC予測に使用されることになるBV予測子候補を規定する。例えば、
図14の例において、BvIntraPredictor[0][compIdx]、BvIntraPredictor[1][compIdx]、及びBvIntraPredictor[2][compIdx]が、最も最近の前のイントラBC予測されたブロックのうち最大で3つのBV値を記憶する。あるいは、
図15の例において、BvIntraPredictor[0][compIdx]、BvIntraPredictor[1][compIdx]、及びBvIntraPredictor[2][compIdx]が、最大で3つの近隣のイントラBC予測されたブロックのBV値を記憶する。BvIntraPredictor[3][compIdx]及びBvIntraPredictor[4][compIdx]が、それぞれ、水平方向及び垂直方向におけるデフォルトBV予測子を記憶する。水平BV成分は、compIdx=0を割り当てられ、垂直BV成分は、compIdx=1を割り当てられる。
【0168】
スキップモードブロック又はマージモードブロックについて、ブロックに対してBV差分は信号伝達されない。ブロックのBV値は、選択されたBV予測子候補である。
【0169】
非スキップモードの、非マージモードのブロックについて、BV差分はビットストリーム内で信号伝達される。変数BvdIntra[x0][y0][compIdx]が、BV差分を規定する。アレイインデックスx0、y0は、ピクチャの左上ルマサンプルに相対した、考慮されているPBの左上ルマサンプルの場所(x0,y0)を規定する。水平BV差分成分は、compIdx=0を割り当てられ、垂直BV差分成分は、compIdx=1を割り当てられる。ブロックのBV値は、compIdx=0..1について、BvIntra[x0][y0][compIdx]=BvdIntra[x0][y0][compIdx]+BvIntraPredictor[idx][compIdx]である。
【0170】
それから、変数BvIntraPredictor[idx][compIdx]は、現在のCUのためのBV値を含むように更新されることが可能である。
【0171】
5.代替物及びバリエーション
現在のブロックが、BV推定を通して識別されたBV値を有するとき、エンコーダは、任意の形式のBV推定を使用して、現在のブロックのためのBV値を識別することができる。現在のブロックのためのBV推定の間、エンコーダは、現在のブロックに利用可能な1つ以上のBV予測子候補を評価することによって開始することができる。BV予測子候補と共にBV推定を開始することは、適切なBV値を迅速に識別するのに役立ち、他のBV値の評価を回避することができる。エンコーダは、必要に応じて、他のBV値を評価する。エンコーダは、データ構造を使用して、BV予測子候補を追跡することができる。BV値が、ブロックの異なるサイズに対して(例えば、32×32CU、16×16CU、8×8CU、又はより小さいTU若しくはCUに対して)適用されることができるとき、データ構造は、ブロックの異なるサイズに対して、異なるBV予測子候補を含むことができる(例えば、32×32CUのための1つ以上のBV予測子候補、16×16CUのための1つ以上のBV予測子候補、など)。現在のブロックについて、エンコーダは、現在のブロックのレベル(サイズ)のためのデータ構造に記憶されたBV予測子候補を最初評価し、それから、必要とされる場合、他のBV値の評価を進める。
【0172】
開示された発明の原理が適用され得る多くのとり得る実施形態の観点から、例示された実施形態は本発明の好適な例に過ぎず、本発明の範囲を限定するものと解されるべきでないことが認識されるべきである。むしろ、本発明の範囲は、別記の請求項によって定義される。したがって、これら請求項の範囲及び主旨内に入るすべてを本発明として主張する。
上記の実施形態につき以下の付記を残しておく。
[付記1]
ビデオエンコーダ又は画像エンコーダを有するコンピューティング装置において、
ピクチャの現在のブロックのためのデフォルトブロックベクトル(“BV”)予測子を決定するステップであって、上記デフォルトBV予測子は、非ゼロ値を有するBV予測子成分を含む、ステップと、
上記デフォルトBV予測子を用いて上記現在のブロックをエンコードするステップと、
を含む方法。
[付記2]
上記デフォルトBV予測子を用いて上記現在のブロックをエンコードするステップは、
上記現在のブロックのためのBV値を用いてイントラブロックコピー(“BC”)予測を実行することと、
上記現在のブロックのための上記BV値と上記現在のブロックのための上記デフォルトBV予測子とを用いて上記現在のブロックのためのBV差分を決定することと、
上記現在のブロックのための上記BV差分をエンコードすることと、
を含む、付記1に記載の方法。
[付記3]
上記デフォルトBV予測子を用いて上記現在のブロックをエンコードするステップは、上記デフォルトBV予測子を用いてイントラBC予測を実行することを含む、付記1に記載の方法。
[付記4]
ビデオデコーダ又は画像デコーダを有するコンピューティング装置において、
ピクチャの現在のブロックのためのデフォルトブロックベクトル(“BV”)予測子を決定するステップであって、上記デフォルトBV予測子は、非ゼロ値を有するBV予測子成分を含む、ステップと、
上記デフォルトBV予測子を用いて上記現在のブロックをデコードするステップと、
を含む方法。
[付記5]
上記デフォルトBV予測子を用いて上記現在のブロックをデコードするステップは、
上記現在のブロックのためのBV差分をデコードすることと、
上記現在のブロックのための上記のデコードされたBV差分を、上記現在のブロックのための上記デフォルトBV予測子と組み合わせて、上記現在のブロックのためのBV値を再構成することと、
上記現在のブロックのための上記BV値を用いて、イントラブロックコピー(“BC”)予測を実行することと、
を含む、付記4に記載の方法。
[付記6]
上記デフォルトBV予測子を用いて上記現在のブロックをデコードするステップは、上記デフォルトBV予測子を用いてイントラBC予測を実行することを含む、付記4に記載の方法。
[付記7]
上記デフォルトBV予測子は、組み立てられた複数のBV予測子候補のセットの一部である、付記1乃至6のうちいずれか1項に記載の方法。
[付記8]
上記ピクチャの前のブロックのための実際のBV値が利用可能であるかをチェックするステップであって、上記現在のブロックのための上記デフォルトBV予測子は、上記ピクチャのいずれの前のブロックのための実際のBV値も利用可能でない場合のみ使用される、ステップ、
をさらに含む付記1乃至6のうちいずれか1項に記載の方法。
[付記9]
上記前のブロックのための上記実際のBV値は、(1)上記前のブロックと上記現在のブロックとが所与の符号化ツリーユニットの一部であり、(2)上記前のブロックの予測モードがイントラBC予測モードである、場合に利用可能である、付記8に記載の方法。
[付記10]
上記現在のブロックは符号化ユニットの一部である、付記1乃至9のうちいずれか1項に記載の方法。
[付記11]
上記非ゼロ値を有する上記BV予測子成分は、水平BV成分である、付記1乃至10のうちいずれか1項に記載の方法。
[付記12]
上記非ゼロ値を有する上記BV予測子成分は、垂直BV成分である、付記1乃至10のうちいずれか1項に記載の方法。
[付記13]
上記非ゼロ値は、上記現在のブロックの高さ又は幅である、付記1乃至10のうちいずれか1項に記載の方法。
[付記14]
上記非ゼロは、上記現在のブロックのサイズから独立した固定値である、付記1乃至10のうちいずれか1項に記載の方法。
[付記15]
ビデオエンコーダ又は画像エンコーダを有するコンピューティング装置において、
ブロックベクトル(“BV”)予測を使用して、ピクチャの現在のブロックのためのBV値を決定するステップであって、上記現在のブロックのための上記BV値は、上記ピクチャ内の領域に対する変位を示す、ステップと、
上記BV値と共にイントラブロックコピー予測を用いて上記現在のブロックをエンコードするステップと、
上記現在のブロックがスキップモードにおいてエンコードされている指標をビットストリーム内に出力するステップであって、上記ビットストリームは、上記現在のブロックのためのBV差分及び残差データを欠く、ステップと、
を含む方法。
[付記16]
ビデオデコーダ又は画像デコーダを有するコンピューティング装置において、
ビットストリームから、ピクチャの現在のブロックがスキップモードにおいてエンコードされている指標を受信するステップであって、上記ビットストリームは、上記現在のブロックのためのブロックベクトル(“BV”)差分及び残差データを欠く、ステップと、
BV予測を使用して、上記現在のブロックのためのBV値を決定するステップであって、上記現在のブロックのための上記BV値は、上記ピクチャ内の領域に対する変位を示す、ステップと、
上記BV値と共にイントラブロックコピー予測を用いて上記現在のブロックをデコードするステップと、
を含む方法。
[付記17]
上記ビットストリームは、上記現在のブロックの上記BV値として使用するための、複数のBV予測子候補のセットからの、BV予測子候補の選択を示すインデックス値を含む、付記15又は16に記載の方法。
[付記18]
上記インデックス値はフラグ値であり、上記複数のBV予測子候補のセットは2つのBV予測子候補を有する、付記17に記載の方法。
[付記19]
上記インデックス値は整数値であり、上記複数のBV予測子候補のセットは3つ以上のBV予測子候補を有する、付記17に記載の方法。
[付記20]
上記複数のBV予測子候補は1つ以上のデフォルトBV予測子を含み、上記1つ以上のデフォルトBV予測子の各々は、非ゼロ値を有するBV予測子成分を含む、付記19に記載の方法。
[付記21]
ビデオエンコーダ又は画像エンコーダを有するコンピューティング装置において、
ピクチャの現在のブロックのための、複数のブロックベクトル(“BV”)予測子候補のセットを決定するステップと、
上記現在のブロックに使用するための、上記複数のBV予測子候補のうち1つを選択するステップと、
上記の選択されたBV予測子候補を用いて上記現在のブロックをエンコードするステップと、
上記の選択されたBV予測子候補を示すインデックス値をビットストリーム内に出力するステップと、
を含む方法。
[付記22]
ビデオデコーダ又は画像デコーダを有するコンピューティング装置において、
ビットストリームから、インデックス値を受信するステップと、
ピクチャの現在のブロックのための、複数のブロックベクトル(“BV”)予測子候補のセットを決定するステップと、
上記インデックス値に基づいて、上記現在のブロックに使用するための、上記複数のBV予測子候補うち1つを選択するステップと、
上記の選択されたBV予測子候補を用いて上記現在のブロックをデコードするステップと、
を含む方法。
[付記23]
上記現在のブロックはマージモードブロックであり、上記ビットストリームは上記現在のブロックのためのBV差分を欠く、付記21又は22に記載の方法。
[付記24]
上記ビットストリームは上記現在のブロックのための残差データを欠く、付記23に記載の方法。
[付記25]
上記ビットストリームは上記現在のブロックのための残差データを含む、付記23に記載の方法。
[付記26]
上記ビットストリーム内の値が、上記現在のブロックがスキップモードブロックであると示し、上記ビットストリームは上記現在のブロックのためのBV差分を欠き、上記ビットストリームは上記現在のブロックのための残差データを欠く、付記21又は22に記載の方法。
[付記27]
上記ビットストリームは上記現在のブロックのためのBV差分を含み、上記BV差分は、上記の選択されたBV予測子候補と上記現在のブロックのためのBV値とにおける差を示す、付記21又は22に記載の方法。
[付記28]
上記インデックス値はフラグ値であり、上記複数のBV予測子候補のセットは2つのBV予測子候補を有する、付記21乃至27のうちいずれか1項に記載の方法。
[付記29]
上記インデックス値は整数値であり、上記複数のBV予測子候補のセットは、3つ以上のBV予測子候補を有する、付記21乃至27のうちいずれか1項に記載の方法。
[付記30]
上記複数のBV予測子候補は、前のブロックの、最大xの実際のBV値を含む、付記21乃至29のうちいずれか1項に記載の方法。
[付記31]
xは少なくとも2である、付記30に記載の方法。
[付記32]
上記前のブロックは、上記現在のブロックの周りの近隣における場所に少なくとも部分的に基づいて識別される、付記30に記載の方法。
[付記33]
上記前のブロックは、上記現在のブロックと比較したデコーディング順序に少なくとも部分的に基づいて識別される、付記30に記載の方法。
[付記34]
上記複数のBV予測子候補は1つ以上のデフォルトBV予測子を含み、上記1つ以上のデフォルトBV予測子の各々は、非ゼロ値を有するBV予測子成分を含む、付記21乃至33のうちいずれか1項に記載の方法。
[付記35]
上記インデックス値は、上記現在のブロックがイントラブロックコピー予測モードを用いてエンコードされているかを示すシンタックス要素の一部としてビットストリーム内で信号伝達される、付記21乃至34のうちいずれか1項に記載の方法。
[付記36]
イントラブロックコピー予測モードシンタックス要素が、上記現在のブロックがイントラブロックコピー予測モードを用いてエンコードされていると示す場合、上記インデックス値は、上記ビットストリーム内で条件付きで信号伝達される、付記21乃至34のうちいずれか1項に記載の方法。
[付記37]
前のブロックの実際のBV値を追跡することに使用されるデータ構造を更新するステップ、
をさらに含む付記21乃至36のうちいずれか1項に記載の方法。
[付記38]
付記1乃至37のうちいずれか1項に記載の方法を実行するように適合させたコンピューティング装置。
[付記39]
コンピュータ実行可能命令を記憶した1つ以上のコンピュータ可読媒体であって、上記コンピュータ実行可能命令によりプログラムされたコンピューティング装置に付記1乃至37のうちいずれか1項に記載の方法を実行させる、1つ以上のコンピュータ可読媒体。