[0001]本出願は、その内容全体が参照により本明細書に組み込まれる、2013年3月19日に出願された米国仮特許出願第61/803,429号の利益を主張する。
[0002]本開示は、ビデオ符号化およびビデオ復号(video encoding and video decoding)に関する。
[0003]デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、ビデオ遠隔会議デバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、デジタルビデオ情報をより効率的に送信、受信および記憶するための、MPEG−2、MPEG−4、ITU−T H.263、ITU−T H.264/MPEG−4、Part 10、アドバンストビデオコーディング(AVC)によって定義された規格、高効率ビデオコーディング(High Efficiency Video Codin)(HEVC)規格、およびそのような規格の拡張に記載されているビデオ圧縮技法など、ビデオ圧縮技法を実装する。
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的予測(spatial prediction)および/または時間的予測(temporal prediction)を含む。ブロックベースのビデオコーディングの場合、ビデオフレームまたはスライスはブロックに区分され(partitioned)得る。各ブロックはさらに区分され得る。イントラコード化(intra−coded)(I)フレームまたはスライス中のブロックは、同じフレームまたはスライス中の隣接ブロック中の参照サンプル(reference samples)に対する空間的予測を使用して符号化される。インターコード化(inter−coded)(PまたはB)フレームまたはスライス中のブロックは、同じフレームまたはスライス中の隣接ブロック中の参照サンプルに対する空間的予測、あるいは他の参照フレーム(reference samples)中の参照サンプルに対する時間的予測を使用し得る。空間的予測または時間的予測によって、コーディングされるべきブロックについての予測ブロックが生じる。残差データ(residual data)は、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。
[0005]インターコード化ブロック(inter−coded block)は、予測ブロックを形成する参照サンプルのブロックをポイントする動きベクトル、およびコード化ブロックと予測ブロックとの間の差分を示す残差データに従って符号化される。イントラコード化ブロックは、イントラコーディングモード(an intra−coding mode)と残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて残差変換係数(residual transform coefficients)をもたらすことができ、その残差変換係数が、次いで量子化され得る。最初は2次元アレイに構成される量子化変換係数(quantized transform coefficients)は、エントロピーコーディングのための変換係数の1次元ベクトルを生成するために、特定の順序で走査され得る。
[0006]本開示は、3次元(3D)アドバンストビデオコーディング(3D−advanced video coding)(AVC)コーデックを用いた2つ以上のビューのコーディングを含む、アドバンストコーデックに基づくマルチビュービデオコーディングおよび3Dビデオコーディングに関連する。より詳細には、技法は、スキップおよびダイレクトモード用の視差ベクトル導出(disparity vector derivation)に関連する。本明細書に記載するように、ビデオデコーダが、視差ベクトル(a disparity vector)を判断するために隣接ブロックベースの視差ベクトル(a neighboring−block based disparity vector)(NBDV)導出プロセスを実施し、または視差ベクトルを判断するためにNBDV洗練(a NBDV refinement)(NBDV−R)プロセスを実施することができる。現在のブロックがスキップモードまたはダイレクトモードにおいてコーディングされるとき、ビデオデコーダは、複数の視差動きベクトル(disparity motion vectors)に対する中央値フィルタリングプロセス(a median filtering process)を使わずに、視差ベクトルを、現在のブロックについての視差ベクトルとして使う。さらに、ビデオデコーダは、現在のブロックについてのピクセル値を判断する。
[0007]一例では、本開示は、ビデオデータを復号する方法について記載し、この方法は、視差ベクトルを判断するためにNBDV導出プロセスを実施するか、または視差ベクトルを判断するためにNBDV−Rプロセスを実施することと、複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、視差ベクトルを、ビデオデータの現在のブロックについての視差ベクトルとして使うことと、ここにおいて、現在のブロックは、スキップモードまたはダイレクトモードのいずれかにおいてコーディングされる、および、現在のブロックについてのピクセル値を判断することとを備える。
[0008]別の例では、本開示は、ビデオデータを符号化する方法について記載し、この方法は、視差ベクトルを判断するためにNBDV導出プロセスを実施するか、または視差ベクトルを判断するためにNBDV−Rプロセスを実施することと、複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、視差ベクトルを、ビデオデータの現在のブロックについての視差ベクトルとして使うことと、ここにおいて、現在のブロックは、スキップモードまたはダイレクトモードのいずれかにおいてコーディングされる、および、現在のブロックを含む現在のスライスについてのシンタックス要素をエントロピー符号化することとを備える。
[0009]別の例では、本開示は、復号ビデオブロック(decoded video blocks)を記憶するメモリと、視差ベクトルを判断するためにNBDV導出プロセスを実施するか、または視差ベクトルを判断するためにNBDV−Rプロセスを実施し、複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、視差ベクトルを、ビデオデータの現在のブロックについての視差ベクトルとして使う、ここにおいて、現在のブロックは、スキップモードまたはダイレクトモードのいずれかにおいてコーディングされる、ように構成された1つまたは複数のプロセッサとを備えるデバイスについて記載する。
[0010]別の例では、本開示は、視差ベクトルを判断するためにNBDV導出プロセスを実施するか、または視差ベクトルを判断するためにNBDV−Rプロセスを実施するための手段と、複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、視差ベクトルを、ビデオデータの現在のブロックについての視差ベクトルとして使うための手段と、ここにおいて、現在のブロックは、スキップモードまたはダイレクトモードのいずれかにおいてコーディングされる、を備えるデバイスについて記載する。
[0011]別の例では、本開示は、実行されると、ビデオコーディングデバイスに、視差ベクトルを判断するためにNBDV導出プロセスを実施させるか、または視差ベクトルを判断するためにNBDV−Rプロセスを実施させ、複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、視差ベクトルを、ビデオデータの現在のブロックについての視差ベクトルとして使わせる、ここにおいて、現在のブロックは、スキップモードまたはダイレクトモードのいずれかにおいてコーディングされる、命令を記憶した非一時的コンピュータ可読データ記憶媒体について記載する。
[0012]本開示の1つまたは複数の例の詳細が、添付の図面および下記の説明に記載される。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
[0013]本開示で説明する技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図。
[0014]例示的なマルチビュービデオコーディングの時間的予測およびビュー間予測の構造(multi−view video coding temporal and inter−view prediction structure)を示す概念図。
[0015]現在のマクロブロックに対する空間的ネイバー(spatial neighbors)の例を示す概念図。
[0016]後方ワーピング(backward warping)に基づくブロックベースのビュー合成予測(block−based view synthesis prediction)の例を示す概念図。
[0017]3D−HEVCにおける、現在の予測ユニットに対する空間的動きベクトルネイバー(spatial motion vector neighbors)の例を示す概念図。
[0018]ブロックベースのビュー合成予測のための、参照ビューからの深度ブロック導出(depth block derivation)を示す概念図。
[0019]本開示で説明する技法を実装し得る例示的なビデオエンコーダを示すブロック図。
[0020]本開示で説明する技法を実装し得る例示的なビデオデコーダを示すブロック図。
[0021]本開示の1つまたは複数の技法による、ビデオエンコーダの例示的な動作を示すフローチャート。
[0022]本開示の1つまたは複数の技法による、ビデオデコーダの例示的な動作を示すフローチャート。
詳細な説明
[0023]H.264/AVCはビデオコーディング規格である。H.264/AVCにおいて、ビデオエンコーダは、スキップモードまたはダイレクトモード(すなわち、スキップ/ダイレクトモード)を使って、特定のピクチャの少なくともいくつかのビデオブロックを符号化することができる。ビデオエンコーダが、スキップモードを使ってビデオブロックを符号化するとき、ビデオエンコーダは、ビデオブロックについての動き情報も残差データもシグナリングしない。ビデオエンコーダが、ダイレクトモードを使ってビデオブロックを符号化するとき、ビデオエンコーダは、ビデオブロックについての動き情報はシグナリングしないが、ビデオブロックについての残差データはシグナリングし得る。
[0024]3D−AVCは、3次元(3D)ビデオコーディングのための、H.264/AVC規格に対する拡張である。3D−AVCにおいて、ピクチャは複数のビューに関連付けられ得る。各ビューのピクチャは、異なるカメラ位置からの同じシーンに対応し得る。同じ時間インスタンス中にあるが、異なるビュー中にあるピクチャの間には、かなりの冗長性があり得る。たとえば、現在のピクチャ中のブロックの動きベクトルは、ビュー間参照ピクチャ(an inter−view reference picture)(すなわち、現在のピクチャと同じ時間インスタンス中にあるが、異なるビュー中にある、あらかじめコーディングされたピクチャ)中の対応するブロックの動きベクトルと同様であり得る。
[0025]3D−AVCにおいて、ビデオコーダは、現在のピクチャ中の現在のブロックについての視差ベクトルを判断することができ、次いで、現在のブロックについての視差ベクトルを、ビュー間参照ピクチャ中の対応するブロックを判断するのに使うことができる。3D−AVCのいくつかのバージョンでは、ビデオコーダは、現在のブロックについての視差ベクトルを判断するのに、隣接ブロックベースの視差ベクトル(NBDV)導出プロセスを使う。ビデオコーダがNBDV導出プロセスを実施するとき、ビデオコーダは、特定の隣接ブロックが視差動きベクトルを有するかどうか判断すればよい。隣接ブロックのうちの1つが視差動きベクトルを有する場合、ビデオコーダは、隣接ブロックの視差動きベクトルを、現在のブロックについての視差ベクトルにコンバートしてよい。
[0026]ただし、現在のブロックが、スキップモードまたはダイレクトモードを使って符号化され、隣接ブロックのうちの1つが視差動きベクトルを有する場合、ビデオコーダは、追加視差動きベクトルを求めて追加隣接ブロックを探索する。隣接ブロックのうちの2つ以上が視差動きベクトルを有する場合、ビデオコーダは、視差動きベクトルに中央値関数(a median function)(たとえば、中央値フィルタリングプロセス)を適用する。ビデオコーダは、得られた視差動きベクトルを、現在のブロックについての視差ベクトルとして使うことができる。
[0027]3D−AVCのいくつかのバージョンでは、ビデオコーダは、スキップモードまたはダイレクトモードを使って符号化されているのではないブロックについての視差ベクトルを洗練する(refine)のに、対応する深度ブロックを使うこともでき、ブロックベースのビュー合成予測(block−based view synthesis prediction)(BVSP)を使うこともできる。ただし、現在のブロックがスキップモードまたはダイレクトモードを使って符号化されている場合、ビデオコーダは、現在のブロックについての視差ベクトルを洗練するのに、対応する深度ブロックもBVSPも使わない。NBDV導出プロセスを使って判断された視差ベクトルの洗練は、本明細書では、NBDV洗練プロセス(an NBDV refinement process)またはNBDV−Rプロセスと呼ばれ得る。
[0028]視差ベクトルを判断するための上述したプロセスには、いくつかの問題があり得る。たとえば、上述したプロセスは、ブロックが符号化される際のモードによっては、同じブロックについて、矛盾する視差ベクトルを生じる場合がある。別の例では、上述したプロセスは、空間的隣接ブロック(spatial neighboring blocks)の不必要な検査につながり得る。別の例では、複数の視差動きベクトルの中央値関数を算出すると、限界コーディング効率利益(marginal coding efficiency benefits)のみがもたらされ得るが、複雑さも増し得る。
[0029]本開示の技法は、これらおよび/または他の問題に対処することができる。一例では、ビデオコーダは、視差ベクトルを判断するためにNBDV導出プロセスを実施してもよく、視差ベクトルを判断するためにNBDV−Rプロセスを実施してもよい。さらに、ビデオコーダは、複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、判断された視差ベクトルを、ビデオデータの現在のブロックについての視差ベクトルとして使うことができ、ここにおいて現在のブロックは、スキップモードまたはダイレクトモードのいずれかでコーディングされている。そのような技法を実装すると、ビデオエンコーダおよび/またはビデオデコーダの複雑さを低下させることができる。
[0030]図1は、本開示で説明する1つまたは複数の例による、例示的なビデオ符号化システムおよび復号システム10を示すブロック図である。図1に示されているように、ビデオ符号化および復号システム10は、ソースデバイス12と宛先デバイス14とを含む。ソースデバイス12は符号化ビデオデータ(encoded video data)を生成する。したがって、ソースデバイス12はビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス14はソースデバイス12によって生成された符号化ビデオデータを復号することができる。したがって、宛先デバイス14はビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。本明細書で使用する「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指すことがある。したがって、ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
[0031]ソースデバイス12および宛先デバイス14は、マルチビューコーディング(multi−view coding)(MVC)を実装するように構成される。MVCにおいて、ソースデバイス12および宛先デバイス14は各々、異なるビューのピクチャをコーディングする。異なるビューのピクチャが一緒に見られるとき、ビューアは、ディスプレイの2Dエリアに制約される画像の代わりに、3Dのボリュームを包含する画像を知覚する。
[0032]図1に示すように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを生成するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、いわゆる「スマート」フォン、いわゆる「スマート」パッドなどのワイヤレスハンドセット、またはワイヤレス通信用に装備される他のそのようなワイヤレスデバイスを含む、広範なデバイスのうちのいずれかを備える。ソースデバイス12および宛先デバイス14のさらなる例には、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム内のデバイス、ワイヤレスブロードキャストシステム内のデバイス、携帯情報端末(PDA)、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー無線電話、衛星無線電話、ビデオ遠隔会議デバイス、およびビデオストリーミングデバイスなどが含まれるが、それらに限定されない。
[0033]宛先デバイス14は、リンク16を介して、復号されるべき符号化ビデオデータを受信し得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備えることができる。一例では、リンク16は、ソースデバイス12が、符号化ビデオデータをリアルタイムで宛先デバイス14に直接送信することを可能にするための通信媒体を備える。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークのような、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス12から宛先デバイス14への通信を支援するために有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
[0034]いくつかの例では、出力インターフェース22は、記憶デバイス34に符号化データを出力する。同様に、入力インターフェース28は、記憶デバイス34にある符号化データにアクセスする。記憶デバイス34の例は、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体のような、種々の分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含む。さらなる一例では、記憶デバイス34は、ソースデバイス12によって生成された符号化ビデオを記憶するファイルサーバまたは別の中間記憶デバイスを備える。これらの例では、宛先デバイス14は、たとえばストリーミングまたはダウンロードを介して、記憶デバイス34にある、記憶されたビデオデータにアクセスする。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバには、(たとえば、ウェブサイトをサービスするための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、ローカルディスクドライブ、またはファイルを提供するための他のデバイスもしくはシステムがある。宛先デバイス14は、インターネット接続を含む、任意の標準的なデータ接続を介して符号化ビデオデータにアクセスすることができる。標準的なデータ接続は、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適である、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。記憶デバイス34からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0035]本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、無線を通じたテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、(たとえばインターネットを介した)ストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の用途など、種々のマルチメディア用途のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成される。
[0036]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含む。ビデオソース18は、(たとえばビデオカメラなどの)ビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステム、そのようなソースの組合せ、あるいはビデオデータの任意の他のソースのうちの1つまたは複数を含む。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンである。ただし、本開示で説明する技法は、概してビデオコーディングに適用可能であり、ワイヤレスおよび/またはワイヤード適用例に適用され得る。
[0037]ビデオエンコーダ20は、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオを符号化する。ソースデバイス12の出力インターフェース22は、符号化ビデオデータを宛先デバイス14に送信するように構成される。符号化ビデオデータは、さらに(または代替的に)、復号および/または再生のための宛先デバイス14または他のデバイスによる後のアクセスのために記憶デバイス34上に記憶され得る。
[0038]図1の例では、宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。いくつかの場合、入力インターフェース28は、受信機および/またはモデムを含む。宛先デバイス14の入力インターフェース28は、リンク16を通じて、または記憶デバイス34から、符号化ビデオデータを受信する。リンク16を介して通信され、または記憶デバイス34上で与えられた符号化ビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30など、ビデオデコーダが使用するためのビデオエンコーダ20によって生成される様々なシンタックス要素を含む。そのようなシンタックス要素は、通信媒体上で送信されるか、記憶媒体上に記憶されるか、またはファイルサーバ上に記憶される、符号化ビデオデータに含まれ得る。
[0039]ディスプレイデバイス32は、宛先デバイス14と一体化され得るかまたはその外部にあり得る。いくつかの例では、宛先デバイス14は、一体型ディスプレイデバイスを含み、また、外部ディスプレイデバイスとインターフェースするように構成される。他の例では、宛先デバイス14はディスプレイデバイスである。概して、ディスプレイデバイス32は、復号ビデオデータ(decoded video data)をユーザに対して表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備える。
[0040]図1には示されていないが、いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、それぞれオーディオエンコーダおよびデコーダと統合され、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含む。適用可能な場合、いくつかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠する。
[0041]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せのような、様々な好適なエンコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、本開示の技法を実施するために、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶することができ、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行することができる。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれてよく、そのいずれもが、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合されてよい。本開示で説明する技法によって、ビデオエンコーダ20はビデオデータを符号化するように構成され、ビデオデコーダ30はビデオデータを復号するように構成される。
[0042]ビデオエンコーダ20およびビデオデコーダ30は、様々なビデオコーディング規格に従って動作し得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、ITU−T H.263、ISO/IEC MPEG−4 Visual、ならびにそのスケーラブルビデオコーディング(Scalable Video Coding)(SVC)拡張と、マルチビュービデオコーディング(MVC)拡張と、マルチビュープラスデプス(multi−view plus depth)(MVC+D)とを含む(ISO/IEC MPEG−4 AVCとしても知られている)ITU−T H.264などのビデオコーディング規格に従って動作し得る。H.264/AVCは、「Advanced video coding for generic audiovisual services」、ITU−T勧告H.264、2011年6月(以下では、「H.264/AVC規格」)に記載されている。MVCのジョイントドラフトは、「Advanced video coding for generic audiovisual services」、ITU−T勧告H.264、2010年3月に記載されている。
[0043]現在、VCEGおよびMPEGの3Dビデオコーディングについての共同研究部会(a Joint Collaboration Team on 3D Video Coding)(JCT−3V)が、H.264/AVCに基づく3Dビデオ(3DV)規格、すなわち、3D−AVCを開発中である。3D−AVCは、MVCによってサポートされるビュー間予測(inter−view prediction)に加え、新規のコーディングツールを含み、サポートする。3D−AVC用のソフトウェア(すなわち、3D−ATM)は、http://mpeg3dv.research.nokia.com/svn/mpeg3dv/tags/3DV−ATMv6.2/からダウンロードすることができる。Hannukselaら、「3D−AVC draft text 5」、ITU−T SG16WP3およびISO/IEC JTC1/SC29/WG11の3Dビデオコーディング拡張開発についての共同研究部会、第3回会合、ジュネーブ、スイス、2013年1月17〜23日、文書JCT3V−C1002、以下では、「JCT3V−C1002」は、3D−AVCの草案文面である。2014年2月28日時点で、JCT3V−C1002は、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/3_Geneva/wg11/JCT3V−C1002−v3.zipから入手可能である。
[0044]他の例では、ビデオエンコーダ20およびビデオデコーダ30は、ITU−Tビデオコーディングエキスパートグループ(VCEG)とISO/IECモーションピクチャエキスパーツグループ(MPEG)とのビデオコーディングについての共同研究部会(JCT−VC)によって開発された高効率ビデオコーディング(HEVC)規格、およびその拡張に従って動作し得る。現時点で、VCEGおよびMPEGの3Dビデオコーディングについての共同研究部会(JCT−3C)は、HEVCに基づく3DV規格を開発中であり、規格化作業の一部は、HEVC(MV−HEVC)に基づくマルチビュービデオコーデックの規格化を含み、および、別の部分は、HEVC(3D−HEVC)に基づく3Dビデオコーディングの規格化を含む。
[0045]説明の目的で、ビデオエンコーダ20およびビデオデコーダ30は、H.264/AVC規格、および3D−AVC規格など、その拡張のコンテキストで記述される。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。たとえば、本開示に記載する技法は、マルチビューコーディング(すなわち、2つ以上のビューのコーディング)のためのビデオエンコーダ/デコーダ(コーデック)によって実装され得る。ビデオ圧縮規格の他の例としては、MPEG−2およびITU−T H.263があり、3D−HEVCがある。On2 VP6/VP7/VP8と呼ばれるものなど、専有コーディング技法(Proprietary coding techniques)もまた、本明細書で説明する技法のうちの1つまたは複数を実装し得る。
[0046]ビデオエンコーダ20は、ビットストリームを生成および出力することができる。H.264/AVC規格で定義されているように、ビットストリームは、1つまたは複数のコード化ビデオシーケンスを形成する、コード化ピクチャ(coded pictures)および関連するデータの表現を形成するビットのシーケンスを備え得る。コード化ピクチャは、ピクチャのコード化表現である。H.264/AVCにおいて、ビデオシーケンスは、一般にビューにある一連のビデオピクチャを含む。ピクチャのグループ(group of pictures)(GOP)は、概して、一連の1つまたは複数のビデオピクチャを備える。GOPは、GOP中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、GOPの1つまたは複数のピクチャのヘッダ中、または他の場所に含み得る。各コード化ピクチャは、それぞれのピクチャのための符号化モードを記述するピクチャシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために、個々のビデオピクチャ内のビデオブロックに対して動作する。
[0047]H.264/AVCでは、ビデオブロックは、H.264/AVC規格で定義されているように、マクロブロック、マクロブロックの区分(a partition)、または場合により区分のサブブロックに対応する場合がある。ビデオブロックは、固定サイズまたは可変サイズを有してよく、指定されたコーディング規格に従ってサイズが異なり得る。いくつかの事例において、本開示は、ビデオブロックを単に「ブロック」と呼ぶ場合がある。各ビデオピクチャは複数のスライス(すなわち、「ビデオスライス」)を含み得る。各スライスは複数のブロックを含み得る。
[0048]H.264/AVCは、ビデオブロック用のイントラ予測(intra prediction)とインター予測(inter prediction)とをサポートする。ビデオコーダが、ビデオブロックをコーディングするのにイントラ予測またはインター予測を使うとき、ビデオコーダは、ビデオブロックについての予測ブロック(a predictive block)を生成することができる。予測ブロックは、ピクセル値(すなわち、サンプル)からなるブロックを備える。ビデオブロックがイントラモード符号化される(すなわち、イントラ予測される)とき、ビデオエンコーダは、そのビデオブロックと同じピクチャ中の他のブロックのピクセル値に基づいて、ビデオブロックについての予測ブロックを生成し得る。本開示の少なくともいくつかの例では、「に基づいて」という句は、「に少なくとも部分的に基づいて」と解釈され得る。さらに、ビデオブロックがイントラ予測されるとき、ビデオコーダは、ビデオブロック向けのイントラ予測モードを記述するデータを生成することができる。
[0049]ビデオブロックがインターモード符号化される(すなわち、インター予測される)とき、ビデオコーダは、そのビデオブロックを含むピクチャ以外の1つまたは複数のピクチャ中のブロックのピクセル値に基づいて、ビデオブロックについての予測ブロックを生成することができる。さらに、ビデオブロックがインター予測されるとき、ビデオコーダは、ビデオブロックについての1つまたは複数の動きベクトルを判断することができる。たとえば、ビデオブロックは、ビデオブロックについての動きベクトルを定義する情報を含み得る。ビデオブロックについての動きベクトルは、そのビデオブロックと同じビュー中の参照ピクチャ中の場所を指すこともでき、別のビュー中の参照ピクチャ中の場所を指すこともできる。いくつかの例では、ブロックについての動きベクトルを定義するデータは、動きベクトルの水平成分と、動きベクトルの垂直成分と、動きベクトルの解像度(a resolution)(たとえば、1/4ピクセル精度(pixel precision)または1/8ピクセル精度)とを記述する。加えて、ビデオブロックがインター予測されるとき、ビデオブロックは、動きベクトルがポイントする参照ピクチャを識別するデータなどの参照インデックス情報、および/または動きベクトルが適用される参照ピクチャリスト(たとえば、RefPicList0もしくはRefPicList1)を含む場合がある。
[0050]H.264/AVCは、ルーマ成分(luma components)に対しては16×16、8×8、または4×4の、およびクロマ成分(chroma components)に対しては8×8の、ブロックサイズ向けのイントラ予測をサポートする。H.264/AVCは、ルーマ成分に対しては16×16、16×8、8×16、8×8、8×4、4×8および4×4など、様々なブロックサイズ、およびクロマ成分に対しては、対応するスケーリングされたサイズ、におけるインター予測をサポートする。本開示では、「N×(x)N」と「N×(by)N」は、垂直寸法および水平寸法に関するブロックのピクセル寸法(pixel dimensions)(たとえば、16×(x)16ピクセルまたは16×(by)16ピクセル)を指すために互換的に使用され得る。一般に、16×16ブロックは、垂直方向に16個のピクセルを有し(y=16)、水平方向に16個のピクセルを有する(x=16)。同様に、N×Nブロックは、概して、垂直方向にN個のピクセルを有し、水平方向にN個のピクセルを有し、ここでNは非負整数値を表す。ブロック中のピクセルは行および列で配列され得る。さらに、ブロックは、必ずしも、水平方向において垂直方向と同じ数のピクセルを有する必要はない。たとえば、ブロックはN×Mピクセルを備えてよく、この場合に、Mは必ずしもNに等しいとは限らない。
[0051]インターマクロブロック(inter macroblock)(MB)とは、インター予測を使ってコーディングされたマクロブロックである。H.264/AVCにおいて、各インターMBは、4つの異なる方式に区分され得る。
・1つの16×16MB区分(One 16x16 MB partition)、
・2つの16×8MB区分、
・2つの8×16MB区分、および
・4つの8×8MB区分。
[0052]1つのMB中の異なるMB区分は、方向(すなわち、RefPicList0またはRefPicList1)ごとに異なる参照インデックス値(reference index values)を有し得る。概して、参照インデックス値は、参照ピクチャリスト中の参照ピクチャを指す。したがって、ビデオコーダは、異なる参照ピクチャに基づいて、1つのインターMBの異なるMB区分についての予測ブロックを生成することができる。MBが4つの8×8MB区分に区分されないとき、そのMBはMB区分全体について各方向に1つの動きベクトルしか有し得ない。
[0053]MBが、4つの8×8MB区分に区分されるとき、各8×8MB区分はサブブロックにさらに区分され得る。8×8のMB区分をサブブロックに区分する4つの異なる方法がある。
・1つの8×8サブブロック、
・2つの8×4サブブロック、
・2つの4×8サブブロック、および
・4つの4×4サブブロック。
[0054]各サブブロックは、各方向に異なる動きベクトルを有し得る。Bスライスとは、ビデオブロックが双方向インター予測を使って符号化されることをその中で許可されるスライスである。双方向インター予測を使って符号化されたビデオブロックは、2つの異なる参照ピクチャリスト中の参照ピクチャを指す2つの動きベクトルを有する。言い換えると、Bスライス中の各サブブロックは、RefPicList0動きベクトルとRefPicList1動きベクトルとを有し得る。「サブブロック区分(sub−block partition)」とは、8×8MB区分がどのようにサブブロックに区分されるかを指すのに使われる用語である。言い換えると、8×8MB区分は、サブブロック区分と名付けられたサブブロックに区分される。
[0055]H.264/AVCにおいて、ピクチャのマクロブロックのイントラ予測またはインター予測コーディングに続いて、ビデオエンコーダ20は、マクロブロックについての残差データを算出することができる。残差データは、符号化されていないピクチャのピクセルと、マクロブロックについての対応する予測値との間のピクセル差分に対応し得る。変換係数を生成するための任意の変換の適用に続いて、ビデオエンコーダ20は、変換係数の量子化を実施し得る。量子化は、一般に、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。量子化プロセスは、係数の一部または全部に関連付けられたビット深度(bit depth)を低減させることができる。たとえば、ビデオエンコーダ20は、量子化中にnビット値をmビット値に切り捨て(round down)てよく、ここで、nはmよりも大きい。
[0056]いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトル(a serialized vector)を生成するために、量子化された変換係数(quantized transform coefficients)を走査するためにあらかじめ定義された走査順序を利用する。他の例では、ビデオエンコーダ20は適応走査(an adaptive scan)を実施する。いくつかの例では、ビデオエンコーダ20が、量子化された変換係数を走査して1次元ベクトルを形成した後に、ビデオエンコーダ20は、コンテキスト適応可変長コーディング(context adaptive variable length coding)(CAVLC)、コンテキスト適応バイナリ算術コーディング(context adaptive binary arithmetic coding)(CABAC)、シンタックスベースコンテキスト適応バイナリ算術コーディング(syntax−based context−adaptive binary arithmetic coding)(SBAC)、確率インターバル区分エントロピー(Probability Interval Partitioning Entropy)(PIPE)コーディング、または別のエントロピー符号化方法に従って、1次元ベクトルをエントロピー符号化する。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30が使用するための、符号化ビデオデータに関連付けられたシンタックス要素をエントロピー符号化することができる。ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素と、他のシンタックス要素とをビットストリーム中に含み得る。
[0057]ビデオデコーダ30は、ビデオエンコーダ20の技法の逆を実装し得る。たとえば、ビデオデコーダ30は、符号化ビデオビットストリームを復号することができ、逆量子化および逆変換によって残差ブロックを判断することができる。ビデオデコーダ30は、ピクチャ内のブロックについてのピクセル値を判断するために、残差ブロックを、あらかじめ復号されたピクチャのブロックと合計すればよい。
[0058]ビデオエンコーダ20およびビデオデコーダ30は、本開示で説明する技法を実装するように構成され得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、本開示に記載する技法を使用して視差ベクトルを導出するように構成され得る。「ビデオコーダ」という用語は、ビデオエンコーダ20またはビデオデコーダ30を指すことができ、「コーディング」という用語は、符号化または復号を指すことができる。いくつかの例では、ビデオデコーダ30は、本開示で説明する技法を実装するように構成され得るが、ビデオエンコーダ20はそうではなくてよく、または逆も成り立つ。
[0059]上記で指摘したように、MVCは、H.264/AVCの拡張である。MVCでは、異なる視点からの同じシーンの複数のビューがあり得る。マルチビューコーディングのコンテキストでは、「アクセスユニット」という用語は、同じ時間インスタンスに対応するピクチャのセットを指し得る。したがって、ビデオデータは、時間とともに生じる一連のアクセスユニットとして概念化され得る。
[0060]マルチビューコーディングでは、ビットストリームは複数のレイヤを有し得る。これらのレイヤの各々は、異なるビューに対応し得る。マルチビューコーディングでは、ビデオデコーダ(たとえば、ビデオデコーダ30)が、あるビュー中のピクチャを他のビュー中のピクチャと無関係に復号することができる場合、そのビューは「ベースビュー」と呼ばれることがある。ビューは、そのビュー中のピクチャの復号が1つまたは複数の他のビュー中のピクチャの復号に依存する場合、「非ベースビュー(non−base view)」または「依存ビュー(dependent view)」と呼ばれ得る。
[0061]MVCは、ビュー間予測ならびに時間的インター予測をサポートする。ビュー間予測において、ビデオコーダは、ビュー間参照ピクチャのサンプルに基づいて、現在のビデオブロックについての予測ブロックを判断する。ビュー間参照ピクチャは、ビデオコーダが現在コーディングしているピクチャ(すなわち、現在のピクチャ)と同じ時間インスタンス中にあるが、現在のピクチャとは異なるビュー中にある参照ピクチャである。したがって、MVCにおいて、ビュー間予測は、ビューの間の相関を取り除くために、同じアクセスユニット内の(すなわち、同じ時間インスタンスをもつ)異なるビュー中でキャプチャされたピクチャの間で実施される。時間的インター予測において、ビデオコーダは、時間的参照ピクチャのサンプルに基づいて、現在のビデオブロックについての予測ブロックを判断する。時間的参照ピクチャは、ビデオコーダが現在コーディングしているブロック(すなわち、現在のピクチャ)と同じビュー中にあるが、現在のピクチャとは異なる時間インスタンス中にある参照ピクチャである。
[0062]マルチビュービデオコーディングのコンテキストでは、2種類の動きベクトルが存在する。1つの種類の動きベクトルは、時間的参照ピクチャをポイントする通常の(すなわち、時間的)動きベクトルであり、対応する時間的インター予測は動き補償予測(motion−compensated prediction)(MCP)である。もう1つの種類の動きベクトルは、異なるビュー中のピクチャ(すなわち、ビュー間参照ピクチャ)をポイントする視差動きベクトル(a disparity motion vector)であり、対応するインター予測は視差補償予測(disparity−compensated prediction)(DCP)である。ビュー間予測を用いてコーディングされたピクチャが、他の非ベースビューのビュー間予測用の参照ピクチャリスト中に追加され得る。ビュー間予測参照ピクチャは、任意のインター予測参照ピクチャと同じように、参照ピクチャリストの任意の位置に置かれ得る。
[0063]図2は、例示的なマルチビュービデオコーディングの時間的予測およびビュー間予測の構造を示す概念図である。言い換えると、マルチビュービデオコーディングに対する典型的なMVC予測(各ビュー内のピクチャ間予測(inter−picture prediction)とビュー間予測の両方を含む)構造を、図2に示す。図2の例では、予測は矢印によって示され、矢印の終点のオブジェクト(pointed−to object)は、予測の基準のために矢印の始点のオブジェクト(pointed−from object)を使用する。
[0064]図2の例では、各正方形がビューコンポーネントに対応する。図2の例では、アクセスユニットがT0〜T11と標示され、ビューがS0〜S7と標示される。「I」と標示される正方形は、イントラ予測されたビューコンポーネントである。「P」と標示される正方形は、単方向にインター予測されたビューコンポーネントである。「B」および「b」と標示される正方形は、双方向にインター予測されたビューコンポーネントである。「b」と標示される正方形は、「B」と標示される正方形を参照ピクチャとして使用し得る。第1の正方形から第2の正方形を指す矢印は、第1の正方形が、インター予測において、第2の正方形のための参照ピクチャとして利用可能であることを示す。図2の垂直矢印で示すように、同じアクセスユニットの異なるビュー中のビューコンポーネントは、参照ピクチャとして利用可能であり得る。アクセスユニットの1つのビューコンポーネントを同じアクセスユニットの別のビューコンポーネントのための参照ピクチャとして使用することは、ビュー間予測と呼ばれることがある。
[0065]マルチビューおよび3Dビデオコーディングのコンテキストでは、「ビューコンポーネント」は、単一のアクセスユニット中のビューのコード化表現であり得る。ビューがコード化テクスチャ(texture)表現とコード化深度表現の両方を含むとき、ビューコンポーネントは、テクスチャビューコンポーネント(a texture view component)および深度ビューコンポーネント(a depth view component)から構成される。ビューコンポーネントは、テクスチャビューコンポーネントと深度ビューコンポーネントとを備え得る。したがって、各テクスチャビューコンポーネントは対応する深度ビューコンポーネントを有し得る。概して、テクスチャビューコンポーネントはビデオコンテンツ(たとえば、ピクセル値のルーマ成分およびクロマ成分)を含み、深度ビューコンポーネントはテクスチャビューコンポーネント内のピクセルの相対深度を示し得る。各ビューのための複数のビデオピクチャはテクスチャビューコンポーネントと呼ばれることがある。本開示では、「ビュー」は、同じビュー識別子に関連付けられたビューコンポーネントのシーケンスを指すことがある。
[0066]より具体的には、テクスチャビューコンポーネント(すなわち、テクスチャピクチャ)は、単一のアクセスユニット中のビューのテクスチャのコード化表現であり得る。テクスチャビューコンポーネントは、表示される実際の画像コンテンツを含む。たとえば、テクスチャビューコンポーネントは、ルーマ(Y)成分と、クロマ(CbおよびCr)成分とを含み得る。テクスチャビューは、ビュー順序インデックスの同一の値と関連付けられるテクスチャビューコンポーネントのシーケンスであり得る。ビューのビュー順序インデックスは、他のビューに対するそのビューのカメラ位置を示し得る。
[0067]本開示の技法は、テクスチャデータと深度データとをコーディングすることによって3Dビデオデータをコーディングすることに関する。概して、「テクスチャ(texture)」という用語は、画像のルミナンス(すなわち、輝度または「ルーマ」)値と画像のクロミナンス(すなわち、色または「クロマ」)値とを説明するために使用される。いくつかの例では、テクスチャ画像は、1セットのルミナンスデータと、青色相(blue hues)(Cb)および赤色相(Cr)のための2セットのクロミナンスデータとを含み得る。4:2:2または4:2:0などの特定のクロマサンプリングフォーマットでは、クロマデータは、ルーマデータに関してダウンサンプリングされる。すなわち、クロミナンスピクセルの空間解像度は、対応するルミナンスピクセルの空間解像度よりも低く、たとえば、ルミナンス解像度の1/2または1/4であり得る。
[0068]深度ビューコンポーネント(すなわち、深度ピクチャ)は、単一のアクセスユニット中のビューの深度のコード化表現であり得る。深度ビューは、ビュー順序インデックスの同一の値と関連付けられる深度ビューコンポーネントのシーケンスであり得る。深度ビューコンポーネントは、それの対応するテクスチャビューコンポーネント内のピクセルの相対深度を示すことができる。一例として、深度ビューコンポーネントは、ルーマ値のみを含むグレースケール画像である。言い換えれば、深度ビューコンポーネントは、任意の画像コンテンツを伝達するのではなく、テクスチャビューコンポーネント中のピクセルの相対深度の測定値を提供し得る。
[0069]いくつかの例において、深度ビューコンポーネント中の純白のピクセルは、対応するテクスチャビューコンポーネント中の、それの対応する1つまたは複数のピクセルがビューアの視点から見てより近いことを示し、深度ビューコンポーネント中の純黒のピクセルは、対応するテクスチャビューコンポーネント中のそれの対応する1つまたは複数のピクセルがビューアの視点から見てより遠いことを示す。黒と白との間にあるグレーの様々な色合い(shades)は、様々な深度レベルを示す。たとえば、深度ビューコンポーネント中の濃いグレーのピクセルは、テクスチャビューコンポーネント中の、それの対応する1つのピクセルまたは複数のピクセルが、深度ビューコンポーネント中の薄いグレーのピクセルよりも遠いことを示し得る。ピクセルの深度を識別するためにグレースケールのみが必要とされるので、深度ビューコンポーネントの色値がいかなる目的も果たし(serve)得ないことから、深度ビューコンポーネントはクロマ成分を含む必要がない。深度を識別するためにルーマ値(たとえば、強度値(intensity values))のみを使用する深度ビューコンポーネントは、例示のために提供され、限定するものと見なされるべきではない。他の例では、テクスチャビューコンポーネント中のピクセルの相対深度を示すために他の技法が利用され得る。
[0070]深度データは、概して、対応するテクスチャデータの深度値を記述する。たとえば、深度画像は、各々が対応するテクスチャデータの深度を表す深度ピクセルのセットを含み得る。ビデオコーダは、対応するテクスチャデータの水平視差を判断するために深度データを使い得る。したがって、テクスチャデータと深度データとを受信するデバイスは、一方のビュー(たとえば、左眼ビュー)のための第1のテクスチャ画像を表示することができ、深度値に基づいて判断された水平視差値だけ第1の画像のピクセル値をオフセットすることによって、他方のビュー(たとえば、右眼ビュー)のための第2のテクスチャ画像を生成するように第1のテクスチャ画像を変更するために深度データを使用することができる。概して、水平視差(または単に「視差」)は、第2のビュー中の対応するピクセルに対する第1のビュー中のピクセルの水平空間オフセットについて記述するものであり、ここで2つのピクセルは2つのビュー中で表される同じオブジェクトの同じ部分に対応する。
[0071]さらに他の例では、画像プレーン(image plane)に対して垂直であるz次元におけるピクセルについて深度データが定義され得、その結果として、画像について定義されたゼロ視差プレーン(a zero disparity plane)に対する、所与のピクセルに関連する深度が定義される。そのような深度は、所与のピクセルを表示するための水平視差を作成するために使用されてよく、その結果として、所与のピクセルは、ゼロ視差プレーンに対する所与のピクセルのz次元深度値に応じて、左眼と右眼とで異なるように表示される。ゼロ視差プレーンはビデオシーケンスの異なる部分に対して変化し得、ゼロ視差プレーンに対する深度の量も変化し得る。ゼロ視差プレーン上に配置されたピクセルは左眼および右眼に対して同様に定義され得る。ゼロ視差プレーンの前に配置されたピクセルは、そのピクセルが画像プレーンに対して垂直であるz方向の画像から出てくるように見える知覚を作成するように、(たとえば、水平視差を用いて)左眼および右眼に対して異なるロケーションで表示され得る。ゼロ視差プレーンの後に配置されたピクセルは、深度のわずかな知覚を提示するために、わずかなぼかし(a slight blur)とともに表示され得るか、または(たとえば、ゼロ視差プレーンの前に配置されたピクセルの水平視差とは反対の水平視差を用いて)左眼および右眼に対して異なるロケーションで表示され得る。他の多くの技法も、画像の深度データを伝達または定義するために使用され得る。
[0072]深度ビューコンポーネント内のピクセルごとに、1つまたは複数の対応するピクセルがテクスチャビューコンポーネント内に存在する可能性がある。たとえば、深度ビューコンポーネントの空間解像度とテクスチャビューコンポーネントの空間解像度が同じである場合、深度ビューコンポーネント中の各ピクセルはテクスチャビューコンポーネント中の1つのピクセルに対応する。深度ビューコンポーネントの空間解像度がテクスチャビューコンポーネントの空間解像度よりも小さい場合、深度ビューコンポーネント中の各ピクセルは、テクスチャビューコンポーネント中の複数のピクセルに対応する。深度ビューコンポーネント中のピクセルの値は、テクスチャビュー中の対応する1つまたは複数のピクセルの相対深度を示し得る。
[0073]いくつかの例では、ビデオエンコーダ20は、ビューの各々についてのテクスチャビューコンポーネントと、対応する深度ビューコンポーネントと、のビデオデータをシグナリングする。ビデオデコーダ30は、テクスチャビューコンポーネントと深度ビューコンポーネントとの両方のビデオデータを利用して、表示のためにビューのビデオコンテンツを復号することができる。ディスプレイ(たとえば、ディスプレイデバイス32)は次いで、3Dビデオを生じるためにマルチビュービデオを表示する。
[0074]3D−AVCは、ベースビューのテクスチャ部がH.264/AVCデコーダ用に十分に復号可能であるように、H.264/AVCと互換性がある。3D−AVCにおける拡張型ビューコンポーネントに対して、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、深度ビューコンポーネントを、対応するテクスチャビューコンポーネントに先立ってコーディングする(たとえば、符号化または復号する)ことができる。さらに、ビデオコーダは、深度ビューコンポーネントからの情報に基づいてテクスチャビューコンポーネントをコーディングすることができる。したがって、3D−AVCは、深度優先コーディング(a depth−first coding)として知られるコーディング順序を使い得る。対照的に、ビデオコーダは、テクスチャ優先コーディング順序(texture−first coding order)で、各テクスチャビューコンポーネントを、それぞれの深度ビューコンポーネントの前にコーディングすることができる。
[0075]一例では、3D−AVCにおけるテクスチャおよび深度ビューコンポーネントのコーディング順序は、次のように例示され得る。この例では、T0およびD0は、それぞれ、ベースビューのテクスチャおよび深度ビューコンポーネントを指す。さらに、この例では、TiおよびDiは、それぞれ、第iの依存ビューのテクスチャおよび深度ビューコンポーネントを指す。この例では、ビデオコーダは以下の3つのビューを使う。
・T0、D0、D1、D2、T1、T2:ベースビュー(T0およびD0)は、テクスチャ優先コーディング順序を用いてコーディングされ、依存ビューは、深度優先コーディング順序を用いてコーディングされる。ハイブリッドコーディング順序が現在、3D−AVCの共通テスト条件において使われている。
・T0、D0、T1、D1、T2、D2:ビューコンポーネントはすべて、テクスチャ優先コーディング順序を用いてコーディングされる。
[0076]ビュー間予測がTiについて可能にされている場合、参照テクスチャビューは、ビュー間参照ピクチャを含むビューとして定義され、対応する深度ビューは、参照テクスチャビューのものと同じビュー順序インデックスを有する参照深度ビューとして定義される。
[0077]3D−AVCにおいて、ビデオコーダは、通常のインター予測モード向けの深度ベースの動きベクトル予測(depth−based motion vector prediction)(D−MVP)を実施することができる。動きベクトル予測は、ビデオブロックについての動きベクトルの予測を備え得る。本開示において、「通常の(normal)」インター予測モードという用語は、スキップモードまたはダイレクトモード以外のインター予測モードを指し得る。D−MVPは、現在のビューの関連付けられた深度マップデータ(depth map data)を使う動きベクトル予測方法を指す。現在のビューについての関連付けられた深度マップデータは、3D−AVCにおいて使われる深度優先コーディング順序により、3D−AVCにおいて利用可能である。ビデオコーダは、依存ビュー中のテクスチャビューコンポーネントを用いてD−MVPを適用することができる。
[0078]3D−AVCにおいて、動きベクトル予測は隣接ブロックを使う。隣接ブロックは、現在のブロックの左ブロックと、上ブロックと、右上ブロックと、左上ブロックとを、この順序で含む。ビデオコーダは、左上ブロック中の動きベクトルのみを、他の3つの隣接ブロック(すなわち、左ブロック、上ブロック、および右上ブロック)のうちの1つが動きベクトルを含まず、したがって利用不可能であると見なされるときのみ、使うことができる。
[0079]隣接ブロックからの動きベクトルは、動きベクトルが、予測されるべき現在の動きベクトルとは異なるタイプを有する場合、利用不可能と見なされる。たとえば、隣接ブロックからの動きベクトルは、隣接ブロックからの動きベクトルが視差動きベクトルであり、予測されるべき動きベクトルが時間的動きベクトルである場合、利用不可能であると見なされ、または逆も同様である。動きベクトルのタイプは、対応する参照インデックスに依存する。つまり、参照インデックスがビュー間参照ピクチャに対応する場合、動きベクトルは視差動きベクトルであるとともにタイプは「視差」であり、参照インデックスが時間的参照ピクチャ(すなわち、現在のピクチャと同じビュー中の参照ピクチャ)に対応する場合、動きベクトルは時間的動きベクトルであるとともにタイプは「時間」である。
[0080]3D−AVCにおいて、隣接ブロックのうちの3つが利用可能である場合、ビデオコーダは、3つの隣接ブロック中の動きベクトルを、現在のブロックの動きベクトル予測に利用することができる。時間的インター予測において、3つの隣接ブロックの動きベクトルがすべて、同じタイプを有し、すべてが同じ参照インデックスを有する場合、ビデオコーダは、H.264/AVCのセクション8.4.1.3.1に記載されているように、中央値フィルタ(median filter)を直接使うことができる。H.264/AVCのセクション8.4.1.3.1を、以下に再現する。
8.4.1.3.1 中央値ルーマ動きベクトル予測のための導出プロセス
このプロセスへの入力は以下の通りである:
−隣接区分mbAddrN\mbPartIdxN\subMbPartIdxN(Nは、A、B、またはCで置き換えられる)、
−隣接区分(neighbouring partitions)の動きベクトルmvLXN(Nは、A、B、またはCで置き換えられる)、
−隣接区分の参照インデックスrefIdxLXN(Nは、A、B、またはCで置き換えられる)、
−現在の区分(current partition)の参照インデックスrefIdxLX。
このプロセスの出力は、動きベクトル予測mvpLXである。
変数mvpLXは、以下の順序付きステップによって指定されるように導出される:
1.両方の区分mbAddrB\mbPartIdxB\subMbPartIdxBおよびmbAddrC\mbPartIdxC\subMbPartIdxCが利用可能でなく、mbAddrA\mbPartIdxA\subMbPartIdxAが利用可能であるとき、
mvLXB = mvLXA (8−207)
mvLXC = mvLXA (8−208)
refIdxLXB = refIdxLXA (8−209)
refIdxLXC = refIdxLXA (8−210)
2.参照インデックスrefIdxLXA、refIdxLXB、またはrefIdxLXCに依存して、以下が適用される:
−参照インデックスrefIdxLXA、refIdxLXB、またはrefIdxLXCのうちのただ1つが、現在の区分の参照インデックスrefIdxLXに等しい場合、以下が適用される。refIdxLXNを、refIdxLXに等しい参照インデックスとし、動きベクトルmvLXNは、動きベクトル予測mvpLXに割り当てられる:
mvpLX = mvLXN (8−211)
−それ以外の場合、動きベクトル予測の各成分mvpLXは、動きベクトルの対応するベクトル成分mvLXA、mvLXB、およびmvLXCの中央値(median)によって与えられる:
mvpLX[ 0 ] = Median( mvLXA[ 0 ], mvLXB[ 0 ], mvLXC[ 0 ] ) (8−212)
mvpLX[ 1 ] = Median( mvLXA[ 1 ], mvLXB[ 1 ], mvLXC[ 1 ] ) (8−213)
[0081]それ以外の場合(3つの隣接ブロックの動きベクトルが、異なるタイプに属し、異なる参照インデックスを有する場合)、ビデオコーダは、動きベクトルをさらに導出すればよい。動きベクトルは、動きベクトル予測子を判断するために使われ得る。現在の参照ピクチャがビュー間参照ピクチャであるとき、ビデオコーダは、隣接ブロック位置にある、動きベクトルタイプと、それらの参照インデックスとを検査する。動きベクトルがすべて、同じタイプと同じ参照インデックスとを有する場合、ビデオコーダは中央値フィルタを適用する。3未満の隣接ブロックが利用可能である場合、ビデオコーダは、3つの隣接ブロックが利用可能になるように(すなわち、ビデオコーダが、利用可能な視差動きベクトルを有する3つの隣接ブロックを識別するように)利用不可能なブロックについての動きベクトルをさらに導出する。
[0082]たとえば、空間的隣接ブロックが、利用可能な時間的動きベクトルを含まない場合、ビデオコーダは、現在のブロックについての時間的動きベクトルを予測すればよい。ビデオコーダは、3D−AVCにおけるブロックベースのビュー合成予測に関連した本開示の部分で説明したように導出された視差ベクトルによって、参照ビューピクチャ中の現在のブロックの参照ブロックを識別することができる。参照ブロックの中心位置を含むブロックの動きベクトルが時間的動きベクトルである場合、ビデオコーダは、現在の空間的隣接ブロック用の参照ブロックの中心位置を含むブロックの動きベクトルを導出する。時間的動きベクトルが利用不可能であると見なされる(たとえば、参照ブロックがイントラブロックであるか、または時間的動きベクトルが、現在の参照ピクチャと整列された、参照ビュー中の参照ピクチャをポイントしない)場合、ビデオコーダは、導出された動きベクトルをゼロに設定する。
[0083]空間的隣接ブロックが、利用可能な視差動きベクトルを含まず、現在のブロックについて視差動きベクトルが予測されるべきである場合、ビデオコーダは、3D−AVCにおけるブロックベースのビュー合成予測に関連した本開示の部分で説明したように、現在のブロック用に導出された視差ベクトルを、視差動きベクトルにコンバートすればよい。
[0084]3D−AVCにおいて、D−MVP方法は、H.264/AVCにおける従来の中央値関数ベースの動きベクトル予測に組み込まれる。したがって、空間的隣接ブロック中の動きベクトルが利用可能である(または元々利用可能でないが、上記で言及した方法で利用可能にされる)とき、ビデオコーダは、依然として3つの動きベクトルに中央値関数を適用することができる。ただし、3つの動きベクトルはすべて、同じタイプに属すべきである。
[0085]多くの事例において、ビデオコーダが現在コーディングしているブロック(すなわち、現在のブロック)の動きベクトルは、ビュー間参照ピクチャ中の対応するブロックの動きベクトルと同様である。したがって、いくつかの例では、ビデオコーダは、対応するブロックの動きベクトルを、現在のブロックの動きベクトルの予測子として使うことができる。「ビュー間動き予測(inter−view motion prediction)」という用語は、ビデオコーダが現在コーディングしているブロックの動き情報の予測子としての、ビュー間参照ピクチャ中の対応するブロックの動き情報(たとえば、動きベクトル)の使用を指し得る。
[0086]同様に、ビデオコーダが現在コーディングしているブロックの残差データは、ビュー間参照ピクチャ中の対応するブロックの残差データと同様であり得る。したがって、いくつかの例では、ビデオコーダは、対応するブロックの残差データを、現在のブロックの残差データの予測子(a predictor)として使うことができる。「ビュー間残差予測(inter−view residual prediction)」という用語は、ビデオコーダが現在コーディングしているブロックの残差データの予測子としての、ビュー間参照ピクチャ中の対応するブロックの残差データの使用を指し得る。
[0087]3D−AVCにおいて、ビデオコーダは、スキップおよびダイレクトモードを使ってコーディングされたブロックについてのビュー間動き予測を実施することができる。MBやMB区分などのビデオブロックがスキップモードでコーディングされるとき、ビデオブロックについてはどの動きデータも残差データもシグナリングされない。たとえば、H.264/AVCにおいて、スキップされるMBとは、MBが「スキップされる」として復号されるべきであるという指示以外のどのデータもコーディングされないMBである。ビデオブロックがダイレクトモードを使ってコーディングされるとき、ビデオブロックについてはどの動きベクトルもコーディングされない。たとえば、H.264/AVCにおいて、ダイレクト予測は、どの動きベクトルもそれについて復号されないブロック(すなわち、サンプルのM×Nアレイ)についてのインター予測である。ビデオブロックがダイレクトモードを使ってコーディングされるとき、残差データがビデオブロックについてシグナリングされ得る。言い換えると、ビデオブロックがダイレクトモードを使ってコーディングされるとき、ビデオエンコーダは、ビットストリーム中に、ビデオデコーダがブロックについての残差データをそこから判断し得るためのデータ(たとえば、シンタックス要素)を含み得るが、ビデオデコーダがブロックについての動き情報をそこから判断し得るためのデータ(たとえば、シンタックス要素)は含まない。同様に、ビデオブロックがダイレクトモードを使ってコーディングされるとき、ビデオデコーダは、ビットストリームから、ビデオデコーダがブロックについての残差データをそこから判断し得るためのデータ(たとえば、シンタックス要素)を取得することができるが、ビットストリームから、ビデオデコーダがブロックについての動き情報をそこから判断するためのデータは取得しない。
[0088]H.264/AVC規格のセクション7.3.5および7.4.5に記載されているように、マクロブロック用のmacroblock_layerシンタックス構造は、マクロブロックについてのマクロブロックタイプを指定するmb_typeシンタックス要素を含み得る。mb_typeシンタックス要素のセマンティクスは、マクロブロックを含むスライスのスライスタイプに依存する。スライスがPスライスである場合、マクロブロックタイプはP_Skipタイプを含む。マクロブロックのマクロブロックタイプがP_Skipである場合、ビットストリーム中のマクロブロックについて、さらなるデータは存在しない。スライスがBスライスである場合、マクロブロックタイプは、B_Skipモードと、B_Direct_16×16モード(すなわち、B−16×16ダイレクトモード)とを含む。マクロブロックのマクロブロックタイプがB_Skipである場合、ビットストリーム中のマクロブロックについて、さらなるデータは存在しない。マクロブロックのマクロブロックタイプがB_Direct_16×16である場合、ビットストリーム中のマクロブロックについては、動きベクトル差分も参照インデックスも存在しない。さらに、マクロブロックのマクロブロックタイプがB_Direct_16×16であるとき、関数MbPartWidth(B_Direct_16×16)およびMbPartHeight(B_Direct_16×16)が、ダイレクトモード予測のためのH.264/AVC仕様のサブクローズ8.4.1における動きベクトルおよび参照フレームインデックスのための導出プロセスにおいて使われる。
[0089]さらに、macroblock_layerシンタックス構造は、1つまたは複数のsub_mb_predシンタックス構造を含み得る。sub_mb_predシンタックス構造は、サブマクロブロックタイプを指定する4つのsub_mb_typeシンタックス要素を含み得る。サブマクロブロックタイプは、B_Direct_8×8モード(すなわち、B−8×8ダイレクトモード)を含む。サブマクロブロックのサブマクロブロックタイプがB_Direct_8×8であるとき、ビットストリーム中のサブマクロブロックについては、動きベクトル差分も参照インデックスも存在しない。関数SubMbPartWidth(B_Direct_8×8)およびSubMbPartHeight(B_Direct_8×8)は、ダイレクトモード予測のためのH.264/AVC規格のサブクローズ8.4.1における、動きベクトルおよび参照フレームインデックス用の導出プロセスにおいて使われる。
[0090]特に、3D−AVCにおいて、ビデオコーダは、P_skip、B_skip、B_Direct_16×16、およびB_8×8_Directモードにおいてビュー間動き予測を実施することができる。これらのモードにおいて、ビデオコーダは、隣接ブロックから、または現在のMBに関連付けられた対応する深度ブロックからの導出視差ベクトルから、のいずれかで参照ブロックを識別するのに、視差ベクトルを使うことができる。深度マップによる視差ベクトル導出については、本開示において他の箇所で詳述する。
[0091]図3は、現在のマクロブロックに対する空間的ネイバーの例を示す概念図である。ビデオコーダは、3つの空間的隣接ブロックを、それの利用可能性(すなわち、空間的隣接ブロックが視差動きベクトルを有するかどうか)について検査する。3つの空間的隣接ブロックは、左の4×4ブロック(A)、上の4×4ブロック(B)、右上の4×4ブロック(C)と定義される。いくつかの例では、Cが利用不可能であるとき、Cは、左上の4×4ブロック(D)で置き換えられ、これらのブロックを図3に示す。ただ1つの空間的隣接ブロックが利用可能である(すなわち、空間的隣接ブロックが視差動きベクトルを含む)場合、この視差動きベクトルが視差ベクトルになる。そうでない場合、(すなわち、空間的隣接ブロックのうちのどれも視差動きベクトルを含まないか、または空間的隣接ブロックのうちの少なくとも2つが視差動きベクトルを含む)、ビデオコーダは、現在のMBに関連付けられた深度ブロックから導出された視差ベクトルを、視差動きベクトルを含まないブロックについての視差動きベクトルとして使う。3D−AVCにおけるブロックベースのビュー合成については、本開示において他の箇所で詳述する。その後、ビデオコーダは、視差ベクトルを得るために中央値フィルタを適用する。
[0092]ビデオコーダは、参照ビューピクチャ中の参照ブロックを判断するのに、上記プロセスから判断された視差ベクトルを使うことができる。参照ブロック内で、動きベクトル(すなわちビュー間動きベクトル)は、利用可能な場合、現在のブロックの動きベクトルに等しく設定され、現在のブロックの参照インデックスはそれに応じて導出される。
[0093]ビュー間動きベクトルが利用可能でない(すなわち、視差ベクトルによってポイントされるベースビュー中の参照ブロックがイントラコーディングされている)場合、ビデオコーダは、従来の中央値ベースの動きベクトル予測方式を使う。この場合、ビデオコーダは最初に、参照インデックスを導出し、ビデオコーダは、現在のMBについての動きベクトル予測を導出するために、通常のインターモードのための3D−AVCにおける深度ベースの動きベクトル予測(D−MVP)に関連した本開示の部分で記載したD−MVP方式を使う。
[0094]3D−AVCにおいて、ビデオコーダは、深度マップにより視差ベクトル導出を実施することができる。つまり、ビデオコーダが視差ベクトルをどのように導出するかは、各低レベルコーディングツールで変わり得るが、一般に、ビデオコーダは、深度優先コーディング順序により、テクスチャビューコンポーネントコーディングのために依存ビューの深度データを利用する。3D−AVCにおけるループ内ブロックベースビュー合成ビュー間予測(in−loop block−based view synthesis inter−view prediction)(BVSP)および深度ベースの動きベクトル予測(D−MVP)は、主に、依存フレーム中の深度マップの深度値からコンバートされた視差ベクトルを使う低レベルコーディングツールである。3D−AVCにおいて、ビデオコーダは、実際の深度マップ値から、特定のビューに対する視差へのコンバージョンプロセスの結果を、カメラパラメータとともにルックアップテーブル中に記憶する。
[0095]3D−AVCの少なくともいくつかのバージョンにおいて、ビデオコーダは、対応する深度ブロックの4つのコーナーからの最大深度を使って視差ベクトル導出を実施することができる。たとえば、深度値を導出するために、ビデオコーダは最初に、深度ビューコンポーネントの参照深度ブロックを識別する。参照深度ブロックは、コロケートされる/現在のMB/区分/サブブロックに対応する。ビデオコーダは、識別された参照深度ブロックの4つのコーナーにアクセスする。コーナーサンプルは、左上、右上、左下および右下の深度サンプルに対応する。ビデオコーダは次いで、4つのコーナー深度サンプルの最大をとることによって、深度値を算出する。最終的に、ビデオコーダは、算出された深度値を使って、ルックアップテーブルから視差ベクトルの水平成分を推論することができ、視差ベクトルの垂直成分は0に設定される。
[0096]この方法において、MBが区分またはサブブロックに分けられると、アクセスされる深度サンプルの数が増す。たとえば、16×16MBが4つの8×8区分に区分されると、アクセスされるべき深度サンプルの数は16になる。16×16MBが16個の4×4区分に区分されると、アクセスされるべき深度サンプルの数は64になる。
[0097]3D−AVCのいくつかのバージョンでは、ビデオコーダは、隣接ブロックベースの視差ベクトル導出(a neighboring block based disparity vector derivation)(NBDV)導出プロセスを使って視差ベクトルを導出することができる。ビデオコーダがNBDV導出プロセスを使う少なくともいくつかの例では、ビデオコーダはテクスチャ優先コーディングを実施し得る。たとえば、ビデオコーダは、3D−AVCにおいて、ビューコンポーネントのテクスチャ成分を最初にコーディングすることができる。コーディングの一部として、ビデオコーダは、ビューコンポーネントの深度成分をコーディングすることなく、テクスチャ成分中のブロックについての視差ベクトルを判断することができる。
[0098]本開示の他の例において説明するように、ビデオコーダは、視差ベクトルを、2つのビューの間の視差の推定量として使うことができる。隣接ブロックは、ビデオコーディングにおいてほぼ同じ動き/視差情報を共有するので、ビデオコーダは、現在のブロックに隣接するブロック(すなわち、隣接ブロック)中の動きベクトル情報を、現在のブロックの動きベクトル情報の優れた予測子として使うことができる。この考えに従って、ビデオコーダは、異なるビューにおける視差ベクトルを推定するために隣接する視差情報を使用するNBDV導出処理を実施することができる。
[0099]いくつかの空間的および時間的隣接ブロックが、3D−AVCのためのNBDV導出プロセスに関して定義される。言い換えると、隣接ブロックの2つのセットが使用される。一方のセットは空間的隣接ブロックからのものであり、他方のセットは時間的隣接ブロック(temporal neighboring blocks)からのものである。ビデオコーダは、空間的および時間的隣接ブロック(すなわち、候補ブロック)の各々を、現在のブロックと候補ブロックとの間の相関の優先度で決定された、あらかじめ定義された順序で検査すればよい。ビデオコーダが候補ブロック中の視差動きベクトル(すなわち、ビュー間参照ピクチャをポイントする動きベクトル)を見つけると、ビデオコーダは、視差動きベクトルを視差ベクトルにコンバートする。
[0100]各々の内容が参照によって本明細書に組み込まれている、2013年2月26日に出願した米国仮出願第61/769,716号(以下では、「‘716号出願」)、2013年2月27日に出願した第61/770,263号(以下では、「‘263号出願」)、2013年3月4日に出願した第61/772,321号(以下では、「‘321号出願」)、2013年3月19日に出願した第61/803,384号(以下では、「‘384号出願」)、および2013年4月24日に出願した第61/815,656号(以下では、「‘656号出願」)に記載されているように、ビデオコーダは、現在のMBについての視差ベクトルを導出するのに、MBレベルのNBDV導出プロセスを使うことができ、視差ベクトルを動きベクトル予測にさらに使うことができる。ビデオコーダが視差動きベクトルを識別すると(すなわち、ビデオコーダが、ビュー間参照ピクチャを使う、時間的または空間的隣接ブロックのうちの1つを識別すると)、視差動きベクトルは、現在のMBについての視差ベクトルとして戻される。
[0101]参照によりその内容全体が本明細書に組み込まれている、2013年2月27日に出願した米国仮出願第61/770,268号(以下では、「‘268号出願」)において、ビデオコーダは、対応する深度ブロックにアクセスすることによって、NBDV導出プロセスから導出された視差ベクトルをさらに洗練することができる。たとえば、ビデオコーダは、(視差ベクトルによって識別された)参照ビューの深度ブロックの4つのコーナーの深度値にアクセスし、深度ブロックの4つのコーナーの深度値の中から最大深度値を選び、最大深度値を視差ベクトルにコンバートすることができる。
[0102]‘268号出願では、BVSPが、特定のやり方で各4×4または8×8ブロック用に使用され、対応する深度ブロックは、視差動きベクトルを生じるのに使われる。たとえば、各MB区分に対して、BVSPモード(すなわち、合成参照成分から予測される)を用いてMB区分がコーディングされる場合、1つの洗練された視差ベクトルが、現在のMB区分の各サブ領域について導出される。サブ領域のサイズは、K×K(Kは8であり得る)で示すことができ、現在のピクチャに対する現在のMB区分内の1つのサブ領域の左上位置は(x,y)で示すことができ、現在のMBについての、NBDV導出プロセスからの導出された視差ベクトルまたはNBDV導出プロセスを実施した後の更新された視差ベクトルは(DV[0],DV[1])で示すことができ、ここにおいてDV[0]およびDV[1]は、視差ベクトルの水平および垂直成分を示す。参照深度ビュー中の4つのコーナーピクセルから、1つの深度値(D)が選択される:
D = max (D0, D1, D2, D3)
上式で、関数max(・)は、Di(iは0〜3である)の最大値を戻し、Diは、次に配置されている第iのピクセル値を示す:
i=0: ((x + (DV[0] >> P)) >> reduced_resolution_flag, (y + (DV[1] >> P)) >> reduced_resolution_flag )
i=1: ((x + (DV[0] >> P) + K−1) >> reduced_resolution_flag, (y + (DV[1] >> P)) >> reduced_resolution_flag )
i=2: ((x + (DV[0] >> P)) >> reduced_resolution_flag, (y + (DV[1] >> P) + K−1) >> reduced_resolution_flag )
i=1: ((x + (DV[0] >> P) + K−1) >> reduced_resolution_flag, (y + (DV[1] >> P) + K−1) >> reduced_resolution_flag )
[0103]上の式において、1に等しいreduced_resolution_flagは、ビューコンポーネントペアの深度ビューコンポーネントが、同じビューコンポーネントペアのテクスチャビューコンポーネントのルーマ成分よりも低い空間的解像度を有し、深度ビューコンポーネントの幅および高さが両方とも、テクスチャビューコンポーネントすべての幅および高さの半分であることを指定する。0に等しいreduced_resolution_flagは、深度ビューコンポーネントとテクスチャビューコンポーネントの両方が存在するとき、それらは同じ空間的解像度を有することを指定する。Pは、視差ベクトルが1/4ピクセル精度であるときは2に、1/2ピクセル精度に対しては1に、および整数ピクセル精度に対しては0に等しい、視差ベクトルの精度を示す。
[0104]代替として、max(D0,D3)が、深度値を選択するのに使われ得る。別の代替法では、参照深度ビュー中のコロケートされたMB内の他のピクセルが使われ得る。洗練された視差ベクトルの水平成分は次いで、現在のMB領域内のサブ領域についての選択された深度値からコンバートされ得る。洗練された視差ベクトルの垂直成分は、常に0に設定される。別の代替法では、洗練された視差ベクトルの垂直成分は、NBDVからの導出された視差ベクトルの垂直成分に設定され得る。いくつかの例において、Kは4、2または1に等しくなり得る。
[0105]‘268号出願にさらに記載されているように、視差ベクトル導出プロセスと同様、ビデオコーダは、(洗練された視差ベクトルによって識別された)深度ブロックの4つのコーナーを使うことができ、ビデオコーダは、視差動きベクトルにコンバートされるべき最大深度値を選ぶことができる。たとえば、‘268号出願に記載されているように、サブ領域のサイズは、K×K(Kは8であり得る)で示すことができ、現在のピクチャに対する現在のMB区分内の1つのサブ領域の左上位置は(x,y)で示すことができ、現在のMBについての深度情報を使用しないNBDVからの導出された視差ベクトルは、(DV[0],DV[1])で示すことができ、ここでDV[0]およびDV[1]は、視差ベクトルの水平および垂直成分を示す。参照深度ビュー中の4つのコーナーピクセルから、1つの深度値(D)が選択される:
D = max (D0, D1, D2, D3)
上式で、関数max(・)は、Di(iは0〜3である)の最大値を戻し、Diは、次に配置されている第iのピクセル値を示す:
i=0: ((x + (DV[0] >> P)) >> reduced_resolution_flag, (y + (DV[1] >> P)) >> reduced_resolution_flag )
i=1: ((x + (DV[0] >> P) + K−1) >> reduced_resolution_flag, (y + (DV[1] >> P)) >> reduced_resolution_flag )
i=2: ((x + (DV[0] >> P)) >> reduced_resolution_flag, (y + (DV[1] >> P) + K−1) >> reduced_resolution_flag )
i=1: ((x + (DV[0] >> P) + K−1) >> reduced_resolution_flag, (y + (DV[1] >> P) + K−1) >> reduced_resolution_flag )
[0106]ここで、1に等しいreduced_resolution_flagは、ビューコンポーネントペアの深度ビューコンポーネントが、同じビューコンポーネントペアのテクスチャビューコンポーネントのルーマ成分よりも低い空間的解像度を有し、深度ビューコンポーネントの幅および高さが両方とも、テクスチャビューコンポーネントすべての幅および高さの半分であることを指定する。0に等しいreduced_resolution_flagは、深度ビューコンポーネントとテクスチャビューコンポーネントの両方が存在するとき、それらは同じ空間的解像度を有することを指定する。Pは、視差ベクトルが1/4ピクセル精度であるときは2に、1/2ピクセル精度に対しては1に、および整数ピクセル精度に対しては0に等しい、視差ベクトルの精度を示す。代替例では、max(D0,D3)が、深度値を選択するのに使われ得る。別の例では、参照深度ビュー中のコロケートされたMB内の他のピクセルが使われ得る。更新された視差ベクトルの水平成分は次いで、現在のMB領域内のサブ領域についての選択された深度値からコンバートされ得る。この例では、更新された視差ベクトルの垂直成分は常に0に設定され得る。別の例では、更新された視差ベクトルの垂直成分は、NBDVからの導出された視差ベクトルの垂直成分に設定され得る。代替的に、Kは8、4または2に等しくなり得る。更新された視差ベクトルは、現在のMB内のすべての区分について使われ得る。
[0107]簡単のために、‘716号出願、「263号出願、および‘321号出願における視差ベクトル導出プロセスは、NBDV導出プロセスと示され得る。‘268号出願に記載されているような、洗練を用いる視差ベクトル導出プロセスは、NBDV−Rと示され得る。したがって、ビデオコーダがNBDV−Rプロセスを実施するとき、および空間的隣接ブロックまたは時間的隣接ブロックがビュー間参照ピクチャを使うとき、ビデオコーダは、空間的隣接ブロックまたは時間的隣接ブロックの視差動きベクトルを視差ベクトルとして戻せばよい。さらに、ビデオコーダがNBDV−Rプロセスを実施するとき、ビデオコーダは、対応する深度ブロックにアクセスすることによって、視差ベクトルを洗練することができる。たとえば、空間的隣接ブロックまたは時間的隣接ブロックがビュー間参照ピクチャをインター予測に使うとき、ビデオコーダは、空間的隣接ブロックまたは時間的隣接ブロックの視差動きベクトルを、現在のブロックについての視差ベクトルとして戻せばよい。さらに、ビデオコーダがNBDV−Rプロセスを実施するとき、ビデオコーダは、対応する深度ブロックにアクセスすることによって、現在のブロックについての視差ベクトルを洗練することができる。
[0108]Suら、「3DV−CE1.a:Block−based View Synthesis Prediction for 3DV−ATM」、ITU−T SG16WP3およびISO/IEC JTC1/SC29/WG11の3Dビデオコーディング拡張開発についての共同研究部会、第1回会合、ストックホルム、スウェーデン、2012年7月16〜20日、文書JCT3V−A0107、以下では「JCT3V−A0107」において、ブロックベースのビュー合成予測(BVSP)が提案された。JCT3V−A0107は、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/1_Stockholm/wg11/JCT3V−A0107−v1.zipから入手可能である。
[0109]BVSPでは、(T0,D0,D1,T1)というコーディング順序が使用され得る。テクスチャ成分T0はベースビュー中にあり、T1は、ビュー合成ピクチャ(VSP)を用いてコーディングされた依存ビュー中にある。深度マップ成分D0およびD1は、T0およびT1に関連付けられたそれぞれの深度マップである。
[0110]図4は、後方ワーピングに基づくブロックベースのビュー合成予測の例を示す概念図である。図4に示すように、依存ビューT1において、現在コーディング中のブロックCbのサンプル値が、ベースビューT0のサンプル値からなる参照エリアR(Cb)から予測される。コード化サンプルと参照サンプルとの間の置換ベクトル(displacement vector)40が、現在コーディング中のテクスチャサンプルに関連付けられた深度マップ値からのT1とT0との間の導出された視差ベクトルとして示されている。いくつかの例では、深度値から視差ベクトルへのコンバージョンのプロセスは、以下の式を用いて実施される:
[0111]上の式(1)および(2)において、Cbは、現在コーディング中のブロックであり、jおよびiは、Cb内のローカル空間座標であり、d(Cb(j,i))は、ビュー1の深度マップ画像中の深度マップ値であり、Zはオブジェクトの実際の深度値であり、Dは、特定のビュー0に対する導出された視差ベクトルの水平成分である。パラメータf、b、ZnearおよびZfarは、カメラセットアップを指定するパラメータである。具体的には、使われる焦点長さ(f)、ビュー1とビュー0との間のカメラ分離(b)、および深度範囲(Znear、Zfar)は、深度マップコンバージョンのパラメータを表す。この例では、導出視差ベクトルの垂直成分は、常に0に等しく設定される。3D−AVCのいくつかの実装形態(たとえば、3DV−ATM実装形態)では、式(1)および(2)はすでに、すべての深度マップ値(0〜255)についてあらかじめ計算され、ルックアップテーブルとして記憶されている。
[0112]BVSPに関しては、いくつかの実装上の問題がある。たとえば、1つの実装上の問題は、BVSPブロックの指示に関する。この例では、MBレベルの1つのフラグが、現在のMBが従来のスキップ/ダイレクトモードを用いてコーディングされているかどうか、または現在のMBがスキップ/ダイレクトモードを用いてコーディングされているが、合成参照成分から予測されるかどうか、をシグナリングするのに使われる。さらに、この例では、各MB区分(16×16〜8×8)に対して、各参照ピクチャリスト中の参照インデックスが、参照ピクチャをシグナリングするのに使われる。区分がBVSPモードを使ってコーディングされているとき、BVSPコード化ブロックについての動きベクトルがないので、動きベクトル差分はシグナリングされない。フラグまたは参照インデックスのいずれかが合成参照成分を指すとき、ビデオコーダは、BVSPについて記述する以下の段落に記載されるように、1つの区分の予測を呼び起こせばよい。
[0113]BVSPに関連した別の例示的な実装上の問題は、予測導出プロセスに関する。この例では、サイズがN×M(NまたはMは8または16とする)で示される各MB区分について、MB区分がBVSPモードを用いてコーディングされている場合、ビデオコーダは、MB区分を、K×K(Kは、4×4、2×2または1×1であり得る)に等しいサイズをもついくつかのサブ領域にさらに区分する。各サブ領域に対して、ビデオコーダは、別個の導出される視差ベクトルを導出することができ、ビュー間参照ピクチャ中の導出視差ベクトルによって配置された1つのブロック、たとえば、図4のR(cb)から、各サブ領域を予測することができる。いくつかの共通テスト条件では、Kは4であると定義される。この例では、導出された視差ベクトルは、BVSPコード化ブロック用に記憶されないが、それは、そのようなベクトルを使うコーディングツールがないからである。
[0114]BVSPに関連した別の例示的な実装上の問題は、視差ベクトル導出プロセスに関する。この例では、深度優先コーディング順序が適用されるとき、ビデオコーダが、図4に示すように、対応する非ベース深度ビュー中の対応する深度ブロックからの深度値をコンバートすることによって、視差ベクトルを導出する。ビデオコーダは、最初に、コロケートされた/K×Kサブ領域に対応する、深度ブロックからの4つのコーナー深度サンプルにアクセスすることによって、次いで、4つのアクセスされた深度サンプルの最大値をとることによって、単一の深度値を算出する。ビデオコーダは後で、算出された深度値を、式(1)および(2)を使って視差ベクトルにコンバートする。ビデオコーダがテクスチャ優先コーディング順序を適用するとき、BVSPモードはディセーブルにされ、というのは、非ベーステクスチャビューを復号するとき、対応する非ベース深度ビューは利用不可能だからである。
[0115]Bangら、「3D−CE2.a results on simplification on the disparity vector derivation」、ITU−T SG16WP3およびISO/IEC JTC1/SC29/WG11の3Dビデオコーディング拡張開発についての共同研究部会、第3回会合、ジュネーブ、スイス、2013年1月17〜23日、文書JCT3V−C0122、以下では「JCT3V−C0122」において、簡略化された視差ベクトル導出方法が提案されている。JCT3V−C0122において提案されている方法では、現在のMBが、スキップでもダイレクトでもないインター予測モードを用いてコーディングされるとき、現在のMBをもつMB区分/サブブロックはすべて、現在のMBの関連深度ブロックの右下深度サンプルから算出される導出された視差ベクトルを共有する。ただし、現在のMBがスキップまたはダイレクトモードを用いてコーディングされるとき、ビデオコーダは、異なる視差ベクトル導出プロセス(すなわち、参照深度ブロックの4つのコーナーサンプルにアクセスする)を使うことができる。さらに、BVSPモードにおいて、ビデオコーダは依然として、MB区分の各K×Kサブ領域の参照深度ブロックの4つのコーナーサンプルにアクセスすることを要求される。
[0116]Chenら、「3D−CE2.a related:MB−level depth−to−DV conversion in ATM」、ITU−T SG16WP3およびISO/IEC JTC1/SC29/WG11の3Dビデオコーディング拡張開発における共同研究部会、第3回会合、ジュネーブ、スイス、2013年1月17〜23日、文書JCT3V−C0134、以下では「JCT3V−C0134」は、インターモードを用いてコーディングされるとき、同じMB内のすべての区分ブロックが、コロケートされる/現在のMBに対応する、同じ参照深度ブロックにある4つのコーナーサンプルの最大深度値から導出される単一の視差ベクトルを共有することを提案している。ただし、BVSPモードのために、ビデオコーダは依然として、MB区分の各K×Kサブ領域の参照深度ブロックの4つのコーナーサンプルにアクセスすることを要求される。
[0117]H.264/AVCにおけるマクロブロックの概念は、HEVCには存在しない。そうではなく、マクロブロックは、一般的な4分木方式に基づく極めて柔軟な階層構造によって置き換えられる。この方式の中で、4タイプのブロック、すなわちコーディングツリーユニット(CTU)、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)が定義される。CTUは「ツリーブロック」または「最大コーディングユニット」(LCU)とも呼ばれることもある。CTUの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャ(monochrome pictures)では、CTUは、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックは、サンプルのN×Nのブロックであり得る。
[0118]HEVCにおいて、CUは領域分割の基本ユニットである。CUの概念はマクロブロックの概念に類似するが、CUは最大サイズに制限されず、コンテンツ適応性を向上させるために4つの等しいサイズのCUへの再帰的分割(recursive splitting)を可能にする。PUはインター/イントラ予測の基本ユニットである。いくつかの例では、PUは、不規則な画像パターンを効果的にコーディングするために、単一のPUの中に複数の任意の形状の区分を含み得る。TUは変換の基本ユニットである。CUのTUは、CUのPUとは独立に定義され得る。しかしながら、TUのサイズは、TUが属するCUに限定される。CU、PU、およびTUへのブロック構造の分離は、各々がそれの役割に従って最適化されることを可能にでき、このことはコーディング効率の改善をもたらし得る。
[0119]HEVCでは、ビデオエンコーダ20は、マージモードを使用してPUの動き情報をシグナリングし得る。PUの動き情報は、PUの動きベクトルと、PUの参照インデックスとを含み得る。ビデオエンコーダ20がHEVCにおけるマージモードを使用して現在のPUの動き情報をシグナリングするとき、ビデオエンコーダ20は、マージ候補リストを生成し得る。マージ候補リストは、現在のPUに空間的または時間的に隣接するPUの動き情報を示すマージ候補のセットを含む。さらに、マージモードでは、ビデオエンコーダ20は、マージ候補リストからマージ候補を選択することができ、選択されたマージ候補によって示される動き情報を、現在のPUの動き情報として使うことができる。ビデオエンコーダ20は、選択されたマージ候補のマージ候補リスト中の位置をシグナリングし得る。ビデオデコーダ30は、ビットストリームから、候補リストの中へのインデックス(すなわち、候補リストインデックス)を取得することができる。さらに、ビデオデコーダ30は、同じマージ候補リストを生成することができ、選択されたマージ候補の位置の指示に基づいて、選択されたマージ候補を判断することができる。ビデオデコーダ30は、次いで、選択されたマージ候補の動き情報を、現在のPUのための予測ブロックを生成するのに使い得る。
[0120]HEVCの3Dビデオコーディング拡張(すなわち、3D−HEVC)が現在、開発中である。Techら、「3D−HEVC Test Model Description draft2」、JCT3V−B1005、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11 3Dビデオコーディング拡張開発共同研究部会、第2回会合、上海、中国、2012年10月、以下では「JCT3V−B1005」は、3D−HEVCの参照ソフトウェア記述、ならびに作業草案を提供している。
[0121]3D−AVCのように、3D−HEVCも、視差ベクトルの概念を使う。さらに、3D−AVCのいくつかのバージョンのように、3D−HEVCを実装するビデオコーダが、視差ベクトルを導出するためのNBDV導出プロセスを実施することができる。3D−HEVCは最初に、Zhangら、「3D−CE5.h:Disparity vector generation results」、ITU−T SG16WP3およびISO/IEC JTC1/SC29/WG11の3Dビデオコーディング拡張開発についての共同研究部会、第1回会合:ストックホルム、スウェーデン、2012年7月16〜20日、文書番号第JCT3V−A0097号(以下では「JCT3V−A0097」)において提案されたNBDV導出プロセスを採用した。暗黙的視差ベクトル(Implicit disparity vectors)が、簡略化NBDVとともに、Sungら、「3D−CE5.h:Simplification of disparity vector derivation for HEVC−based 3D video coding」、ITU−T SG16WP3およびISO/IEC JTC1/SC29/WG11の3Dビデオコーディング拡張開発についての共同研究部会、第1回会合:ストックホルム、スウェーデン、2012年7月16〜20日、文書番号第JCTVC−A0126号(以下では、「JCTVC−A0126」)に含められた。さらに、3D−HEVCにおけるNBDV導出プロセスは、復号されたピクチャバッファに記憶される暗黙的視差ベクトルを削除することによってさらに簡略化されているとともに、Kangら、「3D−CE5.h related:Improvements for disparity vector derivation」、ITU−T SG16WP3およびISO/IEC JTC1/SC29/WG11の3Dビデオコーディング拡張開発についての共同研究部会、第2回会合:上海、中国、2012年10月13〜19日、文書番号第JCT3V−B0047号(以下では、「JCT3V−B0047」)に記載されているように、ランダムアクセスポイント(RAP)ピクチャ選択による改良されたコーディング利益も提供する。
[0122]3D−AVCのNBDV導出プロセスのように、ビデオコーダが、3D−HEVCにおけるNBDV導出プロセスを実施するとき、空間的隣接ブロックと時間的隣接ブロックとを検査すればよい。3D−HEVCのいくつかのバージョンでは、ビデオコーダが、5つの空間的隣接ブロック、NBDV導出プロセスを使う。図5は、3D−HEVCにおける、現在のPU50に対する空間的動きベクトルネイバーの例を示す概念図である。空間的隣接ブロックは、図5に示すように、A0、A1、B0、B1またはB2によって示される、現在のPU50の左下、左、右上、上および左上のブロックである。3D−HEVCにおけるNBDV導出プロセスにおいて使われる5つの空間的隣接ブロックは、HEVCにおける動きベクトル予測のためのマージモードにおいて使われるものと同じである。したがって、3D−HEVCでは、ビデオコーダが、NBDV導出プロセス中に空間的隣接ブロックに関する情報を取り出すための追加メモリアクセスを実施することは必要なくてよい。
[0123]ビデオコーダが、3D−HEVCにおけるNBDV導出プロセス中に時間的隣接ブロックを検査するとき、ビデオコーダは最初に、候補ピクチャリストを生成するための構築プロセスを実施すればよい。候補ピクチャリストは、1つまたは複数の候補ピクチャを含み得る。候補ピクチャリストを生成するとき、ビデオコーダは、現在のビュー(すなわち、現在のピクチャを含むビュー)からの最大で2つの参照ピクチャを候補ピクチャとして扱うことができる。たとえば、候補ピクチャリストを生成するとき、ビデオコーダは最初に、いわゆる「コロケートされた参照ピクチャ」を候補ピクチャリストに挿入すればよい。ビデオコーダは、コロケートされた参照ピクチャを、スライスヘッダ中のシンタックス要素(たとえば、collocated_from_l0_flagシンタックス要素およびcollocated_ref_idxシンタックス要素)の値に基づいて識別することができる。ビデオコーダは次いで、追加候補ピクチャを、参照インデックスの昇順で候補ピクチャリストに挿入すればよい。両方の参照ピクチャリスト(たとえば、RefPicList0およびRefPicList1)における同じ参照インデックスをもつ参照ピクチャが利用可能であるとき、コロケートされたピクチャと同じ参照ピクチャリスト中の参照ピクチャが、他の参照ピクチャに先行する。候補ピクチャリスト中の各候補ピクチャに対して、ビデオコーダは、時間的隣接ブロックを導出するための3つの候補領域を判断することができる。
[0124]ビュー間動き予測を用いてブロックがコーディングされるとき、異なるビュー中の対応するブロックを選択するために視差ベクトルが導出される必要がある。「暗黙的視差ベクトル」(すなわち、「IDV」または「導出された視差ベクトル」)という用語は、ブロックについて導出された視差ベクトルを指し得るが、ブロックのビュー間動き予測には使われない。したがって、ブロックが、時間的動き予測を用いてコーディングされる(すなわち、現在のピクチャとは異なる時間インスタンス中の参照ピクチャ中の場所を指す動きベクトルを使ってコーディングされる)としても、後続ブロックをコーディングする目的のために、導出された視差ベクトルは破棄されない。
[0125]3D−HEVCのためのNBDV導出プロセスのいくつかの設計(たとえば、3D−HTM6.0)において、ビデオコーダは、時間的隣接ブロック中の視差動きベクトルと、空間的隣接ブロック中の視差動きベクトルと、次いで、IDVとを順番に検査する。ビデオコーダが視差動きベクトルまたはIDVを見つけると、ビデオコーダは、NBDV導出プロセスを終了してよい。
[0126]さらに、3D−HEVCのいくつかのバージョンでは、ビデオコーダがNBDV導出プロセスから視差ベクトルを導出すると、ビデオコーダは、参照ビューの深度マップから深度データを取り出すことによって、視差ベクトルをさらに洗練することができる。いくつかの例では、洗練プロセスは2つのステップを含み得る。第1のステップにおいて、ビデオコーダは、ベースビューなど、あらかじめコーディングされた参照深度ビュー中の導出された視差ベクトルによって、対応する深度ブロックを配置すればよい。対応する深度ブロックのサイズは、現在のPUのものと同じである。第2のステップにおいて、ビデオコーダは、対応する深度ブロックの4つのコーナーピクセルの中から、1つの深度値を選択すればよく、選択された深度値を、視差ベクトルの水平成分にコンバートすればよい。ビデオコーダは、視差ベクトルの垂直成分を0に設定すればよい。
[0127]3D−HEVCのいくつかのバージョンでは、ビデオコーダは、洗練された視差ベクトルをビュー間動き予測に使い、ビデオコーダは、洗練されていない視差ベクトルをビュー間残差予測に使う。さらに、ビデオコーダは、洗練された視差ベクトルが後方VSPモードを用いてコーディングされている場合、洗練された視差ベクトルを、1つのPUの動きベクトルとして記憶すればよい。
[0128]Tianら、「CE1.h:Backward View Synthesis Prediction using Neighboring Blocks」、ITU−T SG16WP3およびISO/IECJCT1/SC29/WG11の3Dビデオコーディング拡張開発についての共同研究部会、第3回会合、ジュネーブ、スイス、2013年1月16〜23日、(以下では「JCT3V−C0152」)は、後方ワーピングVSP手法について記載している。第3回JCT−3V会合中、JCT3V−C0152において提案された後方ワーピングVSP手法(a backward−warping VSP approach)が、3D−HEVCに採り入れられた。JCT3V−C0152の後方ワーピングVSPの基本的考え方は、3D−AVCにおけるブロックベースのVSPと同じである。これらの2つの技法の両方が、動きベクトル差分を送信するのを避けるために、後方ワーピングとブロックベースのVSPとを使い、より精密な動きベクトルを使う。実装の詳細は、異なるプラットフォームによって異なる。以下の段落では、「BVSP」という用語は、3D−HEVCにおける後方ワーピングVSP手法を指すのにも使われる。
[0129]3D−HEVCのいくつかのバージョンでは、テクスチャ優先コーディングが、共通テスト条件において適用される。したがって、対応する非ベース深度ビューは、非ベーステクスチャビューを復号するとき、利用不可能である。したがって、ビデオコーダは、深度情報を推定すればよく、推定された深度情報を、BVSPを実施するのに使えばよい。3D−HEVCにおけるブロックについての深度情報を推定するために、ビデオコーダは最初に、隣接ブロックから視差ベクトルを導出し、次いで、導出された視差ベクトルを、参照ビューから深度ブロックを取得するのに使うべきであると提案されている。
[0130]上述したように、3D−HEVCのいくつかのバージョン(たとえば、HTM5.1テストモデル)が、NBDV導出プロセスを含む。(dvx,dvy)は、NBDV導出プロセスから識別された視差ベクトルを示すものとし、現在のブロック位置を(blockx,blocky)とする。いくつかの提案において、ビデオコーダは、参照ビューの深度画像中の(blockx+dvx,blocky+dvy)にある深度ブロックをフェッチする。そのような提案において、フェッチされた深度ブロックは、現在のPUの同じサイズを有する。ビデオコーダは、フェッチされた深度ブロックを、現在のPU向けの後方ワーピングを実施するのに使う。
[0131]図6は、BVSP予測を実施するための、参照ビューからの深度ブロック導出を示す概念図である。図6の例では、ビデオコーダは、現在のテクスチャピクチャ60をコーディング中である。現在のテクスチャピクチャ60は、合成参照テクスチャピクチャ62に依存するので、現在のテクスチャピクチャ60は、「依存テクスチャピクチャ(dependent texture picture)」と標示される。言い換えると、ビデオコーダは、現在のテクスチャピクチャ60を復号するために、参照テクスチャピクチャ62を合成する必要があり得る。参照テクスチャピクチャ62および現在のテクスチャピクチャ60は、同じアクセスユニット中にあるが、異なるビュー中にある。
[0132]参照テクスチャピクチャ62を合成するために、ビデオコーダは、現在のテクスチャピクチャ60のブロック(すなわち、ビデオユニット)を処理すればよい。図6の例では、ビデオコーダは、現在のブロック64を処理中である。ビデオコーダが現在のブロック64を処理するとき、ビデオコーダは、現在のブロック64についての視差ベクトルを導出するためのNBDVプロセスを実施すればよい。たとえば、図6の例において、ビデオコーダは、現在のブロック64に隣接するブロック68の視差ベクトル66を識別する。視差ベクトル66の識別は、図6のステップ1として示されている。さらに、図6の例において、ビデオコーダは、視差ベクトル66に基づいて、現在のブロック64の視差ベクトル69を判断する。たとえば、視差ベクトル69は、視差ベクトル66のコピーであってよい。視差ベクトル66のコピーは、図6のステップ2として示されている。
[0133]ビデオコーダは、現在のブロック64の視差ベクトル69に基づいて、参照深度ピクチャ72中の参照ブロック70を識別することができる。参照深度ピクチャ72、現在のテクスチャピクチャ60、および参照テクスチャピクチャ62は各々、同じアクセスユニット中にあってよい。参照深度ピクチャ72および参照テクスチャピクチャ62は同じビュー中にあってよい。ビデオコーダは、現在のブロック64のテクスチャサンプル値および参照ブロック70の深度サンプル値に基づいて、参照テクスチャピクチャ62のテクスチャサンプル値を判断することができる。テクスチャサンプル値を判断するプロセスは、後方ワーピングと呼ばれ得る。3D−HEVCテストモデル3のセクションH.8.5.2.2.7は、後方ワーピングのプロセスについて記載している。後方ワーピングは、図6のステップ3として示されている。このように、図6は、参照ビューにある深度ブロックがどのように配置され、次いで、BVSP予測に使われるかについての3つのステップを示している。
[0134]3D−HEVCでは、BVSPがシーケンス中でイネーブルにされている場合、ビュー間動き予測のためのNBDV導出プロセスは変更され、違いを太字斜体で示す:
−時間的隣接ブロックの各々について、時間的隣接ブロックが視差動きベクトルを使う場合、視差動きベクトルは視差ベクトルとして戻され、視差ベクトルは、本開示において他の箇所で記載する例示的な方法のうちの1つまたは複数を用いてさらに洗練される。
−空間的隣接ブロックの各々について、以下のことが適用される:
○参照ピクチャリスト0または参照ピクチャリスト1の各々について、以下のことが適用される:
・空間的隣接ブロックが視差動きベクトルを使う場合、視差動きベクトルは視差ベクトルとして戻され、視差ベクトルは、本開示において他の箇所で記載する1つまたは複数の例示的な方法を用いてさらに洗練される。
・そうではなく、空間的隣接ブロックがBVSPモードを使う場合、関連動きベクトルは視差ベクトルとして戻される。視差ベクトルは、本開示において他の箇所で記載する1つまたは複数の例示的な方法に記載されているのと同様にしてさらに洗練される。ただし、最大深度値は、4つのコーナーピクセルではなく、対応する深度ブロックのすべてのピクセルから選択される。
−空間的隣接ブロックの各々について、空間的隣接ブロックがIDVを使う場合、IDVは視差ベクトルとして戻され、視差ベクトルは、本開示において他の箇所で記載する1つまたは複数の例示的な方法において記載する方法を用いてさらに洗練される。
[0135]3D−HEVCでは、導入されたBVSPモードは、特別なインターコード化(すなわち、インター予測)モードとして扱われ、ビデオコーダは、各PU向けのBVSPモードの使用を指すためのフラグを維持するべきである。ただし、ビットストリーム中でフラグをシグナリングするのではなく、ビデオコーダは、マージ候補リストに新たなマージ候補(すなわち、BVSPマージ候補)を追加してよく、フラグは、復号されたマージ候補インデックスがBVSPマージ候補に対応するかどうかに依存する。いくつかの提案において、BVSPマージ候補は次のように定義される:
・各参照ピクチャリストについての参照ピクチャインデックス:−1
・各参照ピクチャリストについての動きベクトル:洗練された視差ベクトル
[0136]BVSPマージ候補の挿入位置は、空間的隣接ブロックに依存し得る。たとえば、5つの空間的隣接ブロック(A0、A1、B0、B1またはB2)のうちのいずれかがBVSPモードを用いてコーディングされる(すなわち、隣接ブロックの維持されるフラグが1に等しい)場合、ビデオコーダは、BVSPマージ候補を、対応する空間的マージ候補として扱えばよく、BVSPマージ候補をマージ候補リストに挿入してよい。ビデオコーダは、BVSPマージ候補をマージ候補リストに一度挿入するだけでよい。そうでない(すなわち、5つの空間的隣接ブロックのうちのどれも、BVSPモードを用いてコーディングされるのではない)場合、ビデオコーダは、時間的マージ候補のすぐ前にBVSPマージ候補をマージ候補リストに挿入すればよい。複合双予測マージ候補導出プロセス(a combined bi−predictive merging candidate derivation process)中、ビデオコーダは、BVSPマージ候補を含めるのを避けるために、追加条件を検査すればよい。
[0137]さらに、3D−HEVCの少なくともいくつかのバージョンでは、ビデオコーダは予測導出プロセスを実施することができる。たとえば、(N×Mで示されるBVSPコード化PUのサイズをもつ)各BVSPコード化PUについて、ビデオコーダは、BVSPコード化PUを、K×K(Kは4または2であり得る)に等しいサイズをもついくつかのサブ領域にさらに区分することができる。各サブ領域について、ビデオコーダは、別個の視差動きベクトルを導出することができ、ビデオコーダは、ビュー間参照ピクチャ中の導出された視差動きベクトルによって配置された1つのブロックから各サブ領域を予測することができる。言い換えると、ビデオコーダは、BVSPコード化PU用の動き補償ユニットのサイズをK×Kに設定すればよい。いくつかの共通テスト条件では、Kは4に設定される。
[0138]BVSPモードを用いてコーディングされた1つのPU内の各サブ領域(すなわち、4×4ブロック)について、ビデオコーダは最初に、対応する4×4深度ブロックを、上記で言及した洗練された視差ベクトルをもつ参照深度ビュー中に配置すればよい。第2に、ビデオコーダは、対応する深度ブロック中の16個の深度ピクセルの最大値を選択すればよい。第3に、ビデオコーダは、最大値を、視差動きベクトルの水平成分にコンバートすればよい。ビデオコーダは、視差動きベクトルの垂直成分を0に設定すればよい。
[0139]3D−HEVCでは、テクスチャ優先コーディング順序が適用されるとき、各PUについて、参照深度ビュー中の深度値を考慮して/せずに、NBDVから視差ベクトルが導出され得る。視差ベクトルが取得された後、ビデオコーダは、PUがBVSPモードを用いてコーディングされる場合、1つのPUの各4×4サブ領域についての視差ベクトルをさらに洗練してよい。いくつかの例では、洗練プロセスは2つのステップを含む。第1のステップにおいて、ビデオコーダは、導出された視差ベクトルによって配置された参照深度ビュー中の4×4深度ブロックから1つの最大深度値を選択すればよい。第2のステップにおいて、ビデオコーダは、洗練された視差ベクトルの垂直成分を0であるように保ったまま、深度値を、洗練された視差ベクトルの水平成分にコンバートすればよい。ビデオコーダが、1つのPUの1つの4×4サブ領域についての視差ベクトルを洗練した後、ビデオコーダは、洗練された視差ベクトルを、動き補償のために参照テクスチャビュー中にブロックを配置するのに使うことができる。
[0140]いくつかのケースでは、米国仮出願第61/769,716号、第61/770,263号、第61/772,321号、および第61/770,268号に記載されているNBDV導出プロセスは、3D−AVCのスキップ/ダイレクトモードに適用されるとき、可能性としてはいくつかの問題を呈し得る。たとえば、スキップ/ダイレクトモードを用いてコーディングされたブロックは、洗練を用いても、深度、および空間的隣接ブロックにアクセスしなくても、NBDV結果の関数である視差ベクトル(すなわち、NBDV導出プロセスから生じる視差ベクトル)を使う。言い換えると、NBDVは最初に、視差動きベクトルを導出するために呼び起こされ、この視差動きベクトルは、空間的ネイバー中で利用可能である視差動きベクトルと一緒に、参照ビューにアクセスするための最終視差ベクトルを得るためにさらに検討される。したがって、矛盾する視差ベクトルが、最終的に異なるモードに対して使われ得る。別の例では、NBDVプロセスそれ自体と、スキップ/ダイレクトモードでのプロセスの両方が、空間的隣接ブロックを視差動きベクトルについて検査する必要がある。このことは、複数回の、空間的隣接ブロックの不必要な検査につながり得る。別の例では、スキップ/ダイレクトモードを使うブロックについての最終視差ベクトルは、複数の視差(動き)ベクトルの中央値フィルタリングプロセスに基づいて算出されるが、これは、限界コーディング利益をもたらし得るが、複雑さがある程度増し得る。
[0141]本開示に記載する技法によると、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、提案された技法を実装するように構成されてよく、それにより、NBDV、ならびに/あるいは3D−AVCにおけるスキップおよびダイレクトモードによって要求されるプロセス、を簡略化することができる。言い換えると、上記で言及した起こり得る問題に対処するために、NBDV導出プロセス、ならびに/あるいは3D−AVCにおけるスキップおよびダイレクトモードによって要求されるプロセス、を簡略化するために本方法が提案される。
[0142]たとえば、ビデオコーダがNBDV導出プロセスを実施するとき、ビデオコーダは、時間的隣接ブロックを最初に検査するのではなく、空間的隣接ブロックを最初に検査すればよい。さらに、スキップおよびダイレクトモードにおいて、NBDVの結果としての視差ベクトルが、空間的隣接ブロックをさらに検査することなく、現在のブロック用に直接使われる。この場合、ビデオコーダは中央値フィルタリングを使わない。したがって、この例では、NBDV導出プロセスを実施することの一部として、ビデオコーダは、視差動きベクトルについての1つまたは複数の空間的隣接ブロックを検査すればよく、次いで、視差動きベクトルについての1つまたは複数の時間的隣接ブロックを検査すればよい。空間的または時間的隣接ブロックのうちの1つがビュー間参照ピクチャを使うとき、ビデオコーダは、空間的または時間的隣接ブロックの視差動きベクトルを戻せばよい。
[0143]さらに、いくつかの例では、深度マップにアクセスすることが不許可であるとき、ビデオコーダは、スキップ/ダイレクトモード用の視差ベクトルを、常にNBDV結果に等しく設定すればよい。深度マップにアクセスすることが許可されるとき、ビデオコーダは、スキップ/ダイレクトモード用の視差ベクトルを、以下の例のうちの1つとして設定すればよい。第1の例において、ビデオコーダは、視差ベクトルを、NBDV−Rプロセスの視差ベクトルに常に設定する。したがって、この例では、深度マップにアクセスすることが許可されるとき、ビデオコーダは、現在のブロックについての視差ベクトルを、NBDV−R導出プロセスによって判断された視差ベクトルに設定すればよい。深度マップにアクセスすることが許可されないとき、ビデオコーダは、現在のブロックについての視差ベクトルを、NBDVプロセスによって判断された視差ベクトルに設定すればよい。
[0144]深度マップにアクセスすることが許可される第2の例では、NBDV導出プロセスの視差ベクトルが空間的隣接ブロックからのものである場合、ビデオコーダは、視差ベクトルを、NBDVプロセスの視差ベクトルに設定する。そうでない場合、この第2の例において、ビデオコーダは、視差ベクトルを、NBDV−Rプロセスの視差ベクトルに設定する。したがって、この例では、深度マップにアクセスすることが許可されないとき、ビデオコーダは、現在のブロックについての視差ベクトルを、NBDV導出プロセスによって判断された視差ベクトルに設定すればよい。さらに、この例では、深度マップにアクセスすることが許可され、NBDV導出プロセスによって判断された視差ベクトルが空間的隣接ブロックからのものであるとき、ビデオコーダは、現在のブロックについての視差ベクトルを、NBDV導出プロセスによって判断された視差ベクトルに設定すればよい。深度マップにアクセスすることが許可され、NBDVプロセスによって判断された視差ベクトルが空間的隣接ブロックからのものでないとき、ビデオコーダは、現在のブロックについての視差ベクトルを、NBDV―R導出プロセスによって判断された視差ベクトルに設定すればよい。
[0145]深度マップにアクセスすることが許可される第3の例において、ビデオコーダは、視差ベクトルをNBDVプロセスの視差ベクトルに常に設定する。したがって、この例では、深度マップにアクセスすることが許可されないとき、ビデオコーダは、現在のブロックについての視差ベクトルを、NBDV導出プロセスによって判断された視差ベクトルに設定すればよい。深度マップにアクセスすることが許可されるとき、ビデオコーダは、現在のブロックについての視差ベクトルを、NBDV導出プロセスによって判断された視差ベクトルに設定すればよい。
[0146]本開示の一例では、「268号出願に記載されているNBDV導出プロセスは、必ずしも変更されるとは限らない。ただし、スキップ/ダイレクトモードでコーディングされるビデオブロックについて、NBDV導出プロセスの視差ベクトルが時間的隣接ブロックの視差動きベクトルからのものであるときのみ、空間的隣接ブロックが一定の順序で検査される。言い換えると、この例では、ビデオコーダが検査している空間的隣接ブロックが、利用可能な視差動きベクトルを含む場合、ビデオコーダは、利用可能な視差動きベクトルを、現在のブロックの視差ベクトルに設定する。そうでない(すなわち、それらすべてについて視差動きベクトルが見つからない)場合、ビデオコーダは、NBDVまたはNBDV−R結果を現在のブロック用に使う。この場合、ビデオコーダは中央値フィルタリングを使わない。
[0147]たとえば、空間的隣接ブロックの検査順序は、A、B、CおよびD(NBDVでのように、および図3に示すように、A、B、C、およびD)と定義される。ビデオコーダが視差動きベクトルを識別すると、ビデオコーダは視差動きベクトルを選択する。別の例では、2つ以上の空間的隣接ブロックが視差動きベクトルを含むとき、ビデオコーダは、利用可能な空間的隣接ブロックから、数学関数を用いて視差動きベクトルを導出することができ、導出された視差動きベクトルを、現在のブロックについての視差ベクトルとして使うことができる。
[0148]このようにして、NBDV導出プロセスによって判断された視差ベクトルが時間的隣接ブロックの視差動きベクトルからのものであるとき、ビデオコーダは、空間的隣接ブロックを特定の順序で検査すればよい。空間的隣接ブロックのうちの1つを検査するとき、空間的隣接ブロックが、利用可能な視差動きベクトルを含む場合、ビデオコーダは、利用可能な視差動きベクトルを、現在のブロックについての視差ベクトルに設定すればよい。さらに、空間的隣接ブロックのうちのどれも視差動きベクトルを含まない場合、ビデオコーダは、NBDV導出プロセスによって判断された視差ベクトルまたはNBDV−Rプロセスによって判断された視差ベクトルを、現在のブロックについての視差ベクトルとして使えばよい。いくつかの事例において、特定の順序は、左の空間的隣接ブロック(A)、上の空間的隣接ブロック(B)、右上の空間的隣接ブロック(C)、および左上の空間的隣接ブロック(D)である。別の例では、空間的隣接ブロックのうちの2つ以上が視差動きベクトルを含むとき、ビデオコーダは、空間的隣接ブロックの視差動きベクトルから、数学関数を用いて視差動きベクトルを導出することができ、導出された視差動きベクトルを、現在のブロックについての視差ベクトルとして使うことができる。
[0149]さらに、本開示のいくつかの例では、現在のブロックがスキップ/ダイレクトモードを用いてコーディングされるとき、空間的ブロックをさらに検査して中央値フィルタリングを潜在的に使用するのではなく、ビデオコーダは、NBDVまたはNBDV−Rから導出された視差ベクトルを、現在のブロック用に直接使う。この場合、ビデオコーダは中央値フィルタリングを使わない。
[0150]したがって、本開示の1つまたは複数の例示的技法によると、ビデオエンコーダ20は、視差ベクトルを判断するためにNBDV導出プロセスを実施しても、視差ベクトルを判断するためにNBDV−Rプロセスを実施してもよい。そのような例において、ビデオエンコーダ20は、複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、視差ベクトルを、ビデオデータの現在のブロックについての視差ベクトルとして使うことができ、ここで現在のブロックは、スキップモードまたはダイレクトモードのいずれかでコーディングされている。利用可能な視差動きベクトルをもつ、潜在的に他の隣接ブロックがあるとしても、ビデオコーダは、中央値フィルタリングプロセスを使わない。さらに、ビデオエンコーダ20は、現在のブロックを含む現在のスライスについての少なくともいくつかのシンタックス要素をエントロピー符号化することができる。
[0151]同様に、本開示の1つまたは複数の例示的技法によると、ビデオデコーダ30は、視差ベクトルを判断するためにNBDV導出プロセスを実施しても、視差ベクトルを判断するためにNBDV−Rプロセスを実施してもよい。そのような例において、ビデオデコーダ30は、複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、視差ベクトルを、ビデオデータの現在のブロックについての視差ベクトルとして使うことができ、ここで現在のブロックは、スキップモードまたはダイレクトモードのいずれかでコーディングされている。さらに、ビデオデコーダ30は、現在のブロックについてのピクセル値を判断することができる。
[0152]図7は、本開示で説明する技法を実装することができるビデオエンコーダの一例を示すブロック図である。図7の例において、ビデオエンコーダ20は、スライス内のビデオブロックのイントラコーディングとインターコーディングとを実施することができる。たとえば、ビデオエンコーダ20は、インター予測符号化またはイントラ予測符号化を実施することができる。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間的冗長性を低減または除去するために、空間的予測に依存する。インターコーディングは、ビデオシーケンスの隣接するフレームもしくはピクチャ内の時間的冗長性または異なるビュー中のピクチャの間の冗長性を低減または除去するために、時間的予測またはビュー間予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのいずれかを指し得る。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指し得る。
[0153]図7の例では、ビデオエンコーダ20は、区分ユニット140と、予測処理ユニット142と、参照ピクチャメモリ164と、加算器150と、変換処理ユニット152と、量子化処理ユニット154と、エントロピー符号化ユニット156とを含む。予測処理ユニット142は、動き推定ユニット144と、動き補償ユニット146と、イントラ予測ユニット148とを含む。ビデオブロック再構築のために、ビデオエンコーダ20はまた、逆量子化処理ユニット158と、逆変換処理ユニット160と、加算器162とを含む。ビデオエンコーダ20は、再構築されたビデオからブロッキネスアーティファクト(blockiness artifacts)を除去するためにブロック境界をフィルタリングするデブロッキングフィルタ(a deblocking filter)(図7に図示せず)も含み得る。所望される場合、デブロッキングフィルタは、一般に、加算器162の出力をフィルタリングすることになる。デブロッキングフィルタに加えて追加のループフィルタ(ループ内またはループ後)も使用され得る。参照ピクチャメモリ164は、復号ピクチャバッファ(a decoding picture buffer)(DPB)の一例である。
[0154]図7に示されるように、ビデオエンコーダ20はビデオデータを受信し、区分ユニット140はデータをビデオブロックに区分する。この区分は、スライス、タイル、または他のより大きいユニットへの区分、ならびにビデオブロック区分(たとえば、マクロブロック区分および区分のサブブロック)も含み得る。ビデオエンコーダ20は、概して、符号化されるべきスライス内のビデオブロックを符号化する構成要素を示している。スライスは、複数のビデオブロックに(および、場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測処理ユニット142は、誤差結果(たとえばコーディングレートおよびひずみのレベル)に基づいて現在のビデオブロックについて、複数のイントラコーディングモードのうちの1つ、または複数のインターコーディングモードのうちの1つなど、複数の可能なコーディングモードのうちの1つを選択することができる。予測処理ユニット142は、得られたイントラコード化ブロックまたはインターコード化ブロックを、残差ブロックデータを生成するために加算器150に与え、参照ピクチャとして使用するための符号化ブロックを再構築するために加算器162に与え得る。
[0155]予測処理ユニット142内に見られるイントラ予測処理ユニット148は、空間圧縮を行うために、コーディングされるべき現在のブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して現在のビデオブロックのイントラ予測コーディングを実施し得る。予測処理ユニット142内の動き推定ユニット144および動き補償ユニット146は、時間圧縮を行うために、1つまたは複数の参照ピクチャ中の1つまたは複数の予測ブロックに対して現在のビデオブロックのインター予測コーディングを実施する。
[0156]動き推定ユニット144は、ビデオシーケンスの所定のパターンに従ってスライスのためのインター予測モードを判断するように構成され得る。所定のパターンは、シーケンス中のスライスをPスライスまたはBスライスとして指定し得る。動き推定ユニット144と動き補償ユニット146とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定ユニット144によって実施される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する現在ビデオフレームまたはピクチャ内のビデオブロックの変位(displacement)を示し得る。
[0157]予測ブロックは、絶対値差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって判断され得るピクセル差分に関して、コーディングされるべきビデオブロックにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ164に記憶された参照ピクチャのサブ整数ピクセル位置(sub−integer pixel positions)の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置(fractional pixel positions)の値を補間し得る。したがって、動き推定ユニット144は、フルピクセル位置(full pixel positions)と分数ピクセル位置とに対する動き探索を実施し、分数ピクセル精度で動きベクトルを出力し得る。
[0158]動き推定ユニット144は、ビデオブロックの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライスにおけるビデオブロックについての動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(RefPicList0)または第2の参照ピクチャリスト(RefPicList1)から選択され得、それらの参照ピクチャリストの各々は、参照ピクチャメモリ164に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット144は、計算された動きベクトルをエントロピー符号化ユニット156および動き補償ユニット146に送る。
[0159]動き補償ユニット146によって実施される動き補償は、動き推定によって判断された動きベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によってはサブピクセル精度への補間を実施することを伴い得る。現在ビデオブロックの動きベクトルを受信すると、動き補償ユニット146は、動きベクトルが参照ピクチャリストのうちの1つにおいて指す予測ブロックの位置を特定し得る。加算器150は、予測ブロック中のサンプルと、現在のビデオブロック中の対応するピクセル値との間の差分をピクセル値がその中で指す残差ブロックを形成し得る。いくつかの例において、加算器150は、予測ブロックのピクセル値を、コーディングされている現在のビデオブロックの対応するピクセル値から減算し、ピクセル差分値を形成することによって残差ビデオブロックを形成する。ピクセル差分値は、ブロックの残差データを形成し、ルーマおよびクロマの両方の差分成分を含み得る。加算器150は、この減算演算を実施する1つまたは複数の構成要素を表し得る。動き補償ユニット146はまた、スライスのビデオブロックを復号する際にビデオデコーダ30により使用するための、ビデオブロックおよびスライスと関連付けられたシンタックス要素を生成することができる。
[0160]イントラ予測ユニット148は、上述されたように、動き推定ユニット144および動き補償ユニット146によって実施されるインター予測の代替として、現在ブロックをイントラ予測することができる。特に、イントラ予測ユニット148は、現在のブロックを符号化するために使用すべきイントラ予測モードを判断し得る。いくつかの例では、イントラ予測ユニット148は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在ブロックを符号化し得、イントラ予測ユニット148(または、いくつかの例では、モード選択ユニット)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。たとえば、イントラ予測ユニット148は、様々なテストされたイントラ予測モードのためのレートひずみ分析(a rate−distortion analysis)を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択することができる。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を判断する。イントラ予測ユニット148は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを判断するために、様々な符号化ブロックのひずみおよびレートから比率を計算し得る。
[0161]いずれの場合も、ブロックのイントラ予測モードを選択した後に、イントラ予測ユニット148は、ブロックについての選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット156に提供し得る。エントロピー符号化ユニット156は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、送信されるビットストリームに、(コードワードマッピングテーブルとも呼ばれる)複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブルと、様々なブロック用の符号化コンテキストの定義と、コンテキストの各々に対して使用する、最確イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示とを含む場合がある、構成データを含めることができる。
[0162]本開示のいくつかの技法にしたがって、予測処理ユニット142は、視差ベクトルを判断するためにNBDV導出プロセスを実施するか、または視差ベクトルを判断するためにNBDV−Rプロセスを実施する。さらに、予測処理ユニット142は、複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、視差ベクトルを、ビデオデータの現在のブロックについての視差ベクトルとして使うことができ、ここで現在のブロックは、スキップモードまたはダイレクトモードのいずれかでコーディングされている。たとえば、予測処理ユニット142は、現在のブロックに関してビュー間動き予測および/またはビュー間残差予測を実施するのに、現在のブロックについての視差ベクトルを使うことができる。
[0163]予測処理ユニット142が、インター予測またはイントラ予測のいずれかを介して、現在のビデオブロックのための予測ブロックを生成した後に、ビデオエンコーダ20は、残差ビデオブロックを形成する。いくつかの例において、加算器150は、現在のビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。変換処理ユニット152は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を使用して、残差ブロックを残差変換係数に変換し得る。変換処理ユニット152は、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換し得る。
[0164]変換処理ユニット152は、得られた変換係数を量子化処理ユニット154に送り得る。量子化処理ユニット154は、ビットレートをさらに低減するために変換係数を量子化し得る。量子化プロセスは、係数の一部または全部に関連付けられたビット深度を低減させることができる。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット154は、次いで、量子化変換係数(quantized transform coefficients)を含む行列の走査を実施し得る。代替として、エントロピー符号化ユニット156が走査を実施し得る。
[0165]量子化の後、エントロピー符号化ユニット156は、量子化変換係数をエントロピー符号化することができる。言い換えると、エントロピー符号化ユニット156は、量子化変換係数に対応するシンタックス要素をエントロピー符号化することができる。異なる例において、エントロピー符号化ユニット156は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率インターバル区分エントロピー(PIPE)コーディング、または別のエントロピー符号化方法もしくは技法を実施し得る。エントロピー符号化ユニット156によるエントロピー符号化の後、符号化ビットストリームは、ビデオデコーダ30に送信されるか、またはビデオデコーダ30が後で送信するかもしくは取り出すためにアーカイブされ得る。エントロピー符号化ユニット156はまた、現在コーディングされているスライスについての動きベクトルと他のシンタックス要素とをエントロピー符号化することができる。たとえば、エントロピー符号化ユニット156は、動きベクトルに対応するシンタックス要素をエントロピー符号化することができる。
[0166]CABACを実施するために、エントロピー符号化ユニット156は、送信されるべきシンボルに、コンテキストモデル内のコンテキストを割り当て得る。たとえば、コンテキストは、シンボルの隣接値が非ゼロであるかどうかに関係し得る。CAVLCを実施するために、エントロピー符号化ユニット156は、送信されるべきシンボルの可変長コードを選択し得る。可変長コーディング(VLC)におけるコードワードは、比較的短いコードがより確かなシンボルに対応し、より長いコードが確かさの劣るシンボルに対応するように構成することができる。このようにして、VLCを使用すると、たとえば、送信されるべき各シンボルのために等長コードワード(equal−length codewords)を使用するよりも、ビット節約を実現し得る。確率判断は、シンボルに割り当てられるコンテキストに基づき得る。
[0167]逆量子化処理ユニット158および逆変換処理ユニット160は、それぞれ逆量子化および逆変換を適用して、参照ピクチャの参照ブロックとして後で使用するために、ピクセル領域において残差ブロックを再構築する。動き補償ユニット146は、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つの予測ブロックに残差ブロックを加算することによって参照ブロックを計算し得る。動き補償ユニット146はまた、再構築された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器162は、参照ピクチャメモリ164に記憶するための参照ブロックを生成するために、再構築された残差ブロックを、動き補償ユニット146によって生成された動き補償予測ブロック(motion compensated prediction block)に加算する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、動き推定ユニット144と動き補償ユニット146とによって参照ブロックとして使用され得る。このように、参照ピクチャメモリ164は、ビデオデータを記憶するメモリである。
[0168]このようにして、ビデオエンコーダ20は、本開示で説明する1つまたは複数の例示的な技法を実装するように構成されたビデオエンコーダの一例である。たとえば、予測処理ユニット142は、例示的技法を実装するように構成され得る。いくつかの例では、予測処理ユニット142以外のユニットが、上記で説明した例を実装することができる。いくつかの例では、予測処理ユニット142は、ビデオエンコーダ20の1つまたは複数の他のユニットとともに、上記で説明した例を実装することができる。いくつかの他の例では、ビデオエンコーダ20のプロセッサまたはユニット(図7には図示せず)は、単独で、またはビデオエンコーダ20の他のユニットとともに、上記で説明した例を実装することができる。
[0169]図8は、本開示で説明する技法を実装し得るビデオデコーダ30の一例を示すブロック図である。図8の例において、ビデオデコーダ30は、インター予測復号またはイントラ予測復号を実施することができる。図8の例では、ビデオデコーダ30は、エントロピー復号ユニット170と、予測処理ユニット171と、逆量子化処理ユニット176と、逆変換処理ユニット178と、加算器180と、参照ピクチャメモリ182とを含む。予測処理ユニット171は、動き補償ユニット172と、イントラ予測ユニット174とを含む。いくつかの例において、ビデオデコーダ30は、図7からのビデオエンコーダ20に関して説明された符号化パスとは概して逆の復号パスを実施する。参照ピクチャメモリ182は、復号化ピクチャバッファ(a decoded picture buffer)(DPB)の一例である。
[0170]復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化スライスのビデオブロックと、関連付けられたシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット170は、量子化された係数と、動きベクトルと、他のシンタックス要素とを取得するために、ビットストリームの特定のシンタックス要素をエントロピー復号することができる。エントロピー復号ユニット170は、予測処理ユニット171に動きベクトルと他のシンタックス要素とを転送し得る。ビデオデコーダ30は、スライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
[0171]スライスがイントラコード化(I)スライスとしてコーディングされるとき、予測処理ユニット171のイントラ予測ユニット174は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、スライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化(すなわち、B、またはP)スライスとしてコーディングされるとき、予測処理ユニット171の動き補償ユニット172は、エントロピー復号ユニット170から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のスライスのビデオブロックのための予測ブロックを生成する。動き補償ユニット172は、参照ピクチャリストの1つの中の参照ピクチャのうち1つから予測ブロックを生じることができる。ビデオデコーダ30は、参照ピクチャメモリ182に記憶された参照ピクチャに基づいて、デフォルト構成技法を使用して参照ピクチャリスト(RefPicList0およびRefPicList1)を構成し得る。
[0172]動き補償ユニット172は、動きベクトルと他のシンタックス要素とを処理することによって現在のスライスのビデオブロックについての予測情報を判断することができ、予測情報を使用して、現在復号されている現在のビデオブロックのための予測ブロックを生成することができる。たとえば、動き補償ユニット172は、受信されたシンタックス要素のうちのいくつかを使用して、スライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、BスライスまたはPスライス)と、スライスの参照ピクチャリストのうちの1つまたは複数についての構成情報と、スライスの各インター符号化ビデオブロックについての動きベクトルと、スライスの各インターコード化ビデオブロックについてのインター予測ステータスと、スライス中のビデオブロックを復号するための他の情報とを判断する。
[0173]動き補償ユニット172はまた、補間フィルタに基づいて補間を実施することができる。動き補償ユニット172は、参照ブロックのサブ整数ピクセルのための補間された値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用し得る。この場合、動き補償ユニット172は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを判断し、その補間フィルタを使用して予測ブロックを生成し得る。
[0174]本開示のいくつかの例によると、予測処理ユニット171は、視差ベクトルを判断するためにNBDV導出プロセスを実施し、または視差ベクトルを判断するためにNBDV−Rプロセスを実施する。さらに、予測処理ユニット171は、複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、視差ベクトルを、ビデオデータの現在のブロックについての視差ベクトルとして使うことができ、ここで現在のブロックは、スキップモードまたはダイレクトモードのいずれかでコーディングされている。たとえば、予測処理ユニット171は、現在のブロックに関してビュー間動き予測および/またはビュー間残差予測を実施するのに、現在のブロックについての視差ベクトルを使うことができる。
[0175]逆量子化処理ユニット176は、ビットストリームから取得されたシンタックス要素によって与えられ、エントロピー復号ユニット170によって復号された、量子化変換係数を逆量子化(すなわち、量子化解除(de−quantize))する。逆量子化プロセスは、量子化の程度を判断し、同様に、適用されるべき逆量子化の程度を決定するための、スライス中のビデオブロックごとにビデオエンコーダ20によって計算される量子化パラメータの使用を含み得る。逆変換処理ユニット178は、ピクセル領域において残差ブロックを生成するために、逆変換(たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセス)を変換係数に適用する。
[0176]動き補償ユニット172が、動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオブロックについての予測ブロックを生成した後、加算器180は、復号化ビデオブロック(a decoded video block)を形成することができる。いくつかの例において、加算器180は、逆変換処理ユニット178から得た残差ブロックに、動き補償ユニット172によって生成された対応する予測ブロックを加算することによって、復号化ビデオブロックを形成し得る。加算器180は、この加算演算を実施する1つまたは複数の構成要素を代表する。所望される場合、ブロッキネスアーティファクトを除去するために、復号化ブロックをフィルタリングするためのデブロッキングフィルタも適用され得る。ビデオデコーダ30は、ピクセル遷移を平滑化するために、または場合によってはビデオ品質を改善するために、(コーディングループ内またはコーディングループ後のいずれかの)他のループフィルタも使うことができる。参照ピクチャメモリ182は次いで、所与のピクチャ中の復号化ビデオブロックを、後続の動き補償のために記憶する。参照ピクチャメモリ182はまた、図1のディスプレイデバイス32などのディスプレイデバイス上に後で提示するために、復号化ビデオを記憶することができる。このように、参照ピクチャメモリ182は、ビデオデータを記憶するメモリである。
[0177]このように、ビデオデコーダ30は、本開示で説明する1つまたは複数の技法を実装するように構成されたビデオデコーダの一例である。たとえば、予測処理ユニット171は、例示的技法を実装するように構成され得る。いくつかの例では、予測処理ユニット171以外のユニットが、上記で説明した例を実装することができる。いくつかの例では、予測処理ユニット171は、ビデオデコーダ30の1つまたは複数の他のユニットとともに、上記で説明した例を実装することができる。さらに他の例では、ビデオデコーダ30のプロセッサまたはユニット(図8には図示せず)は、単独で、またはビデオデコーダ30の他のユニットとともに、上記で説明した例を実装することができる。
[0178]図9Aは、本開示の1つまたは複数の技法による、ビデオエンコーダ20の例示的な動作を示すフローチャートである。図9Aの例において、ビデオエンコーダ20は、視差ベクトルを判断するためにNBDV導出プロセスを実施するか、または視差ベクトルを判断するためにNBDV−Rプロセスを実施する(250)。ビデオエンコーダ20は、複数の視差動きベクトルに対する中央値フィルタリングプロセスを使わずに、視差ベクトルを、ビデオデータの現在のブロックについての視差ベクトルとして使う(たとえば、設定する)ことができる(252)。図9Aの例において、現在のブロックは、スキップモードまたはダイレクトモードのいずれかにおいてコーディングされる(たとえば、ビデオエンコーダ20は、現在のブロックを、スキップモードまたはダイレクトモードのいずれかにおいて符号化する)。さらに、ビデオエンコーダ20(たとえば、ビデオエンコーダ20のエントロピー符号化ユニット156)は、現在のブロックを含む現在のスライスについての少なくともいくつかのシンタックス要素をエントロピー符号化することができる(254)。
[0179]図9Bは、本開示の1つまたは複数の技法による、ビデオデコーダ30の例示的な動作を示すフローチャートである。図9Bの例において、ビデオデコーダ30は、視差ベクトルを判断するためにNBDV導出プロセスを実施するか、または視差ベクトルを判断するためにNBDV−Rプロセスを実施する(280)。ビデオデコーダ30は、複数の視差動きベクトルに対する中央値フィルタリングプロセスを使わずに、視差ベクトルを、ビデオデータの現在のブロックについての視差ベクトルとして使う(たとえば、設定する)ことができる(282)。図9Bの例において、現在のブロックは、スキップモードまたはダイレクトモードのいずれかにおいてコーディングされる。さらに、ビデオデコーダ30(たとえば、ビデオデコーダ30の加算器180)は、現在のブロックについてのピクセル値を判断することができる(284)。
[0180]以下の段落は、本開示の1つまたは複数の技法による追加実施例を挙げる。
[0181]実施例1.本明細書で開示した実施形態のうちのいずれかによる、ビデオデータを符号化する方法。
[0182]実施例2.本明細書で開示した実施形態のうちのいずれかによる、ビデオデータを復号する方法。
[0183]実施例3.実行されると、実施例1〜2の方法のいずれかを実施する命令を記憶したコンピュータ可読媒体。
[0184]実施例4.3D−AVCのためのビデオデータをコーディングする方法であって、隣接ブロックベースの視差ベクトル導出(NBDV)のために、時間的隣接ブロックではなく、1つまたは複数の空間的隣接ブロックを最初に検査することによって、現在のブロックについての視差ベクトルを判断することを備える方法。
[0185]実施例6.スキップモードおよびダイレクトモードの一方または両方において、空間的隣接ブロックをさらに検査せずに、現在のブロックについての視差ベクトルを、NBDVの結果として直接使うことをさらに備える、実施例5の方法。
[0186]実施例7.視差ベクトルを直接使うことは、中央値フィルタリングを使わないことを備える、実施例6の方法。
[0187]実施例8.深度マップにアクセスすることが不許可であるとき、スキップ/ダイレクトモード用の視差ベクトルを、NBDV結果に等しく設定することをさらに備える、実施例5の方法。
[0188]実施例9.
深度マップにアクセスすることが許可されるとき、スキップ/ダイレクトモード用の視差ベクトルを、NBDV−Rプロセスの視差ベクトル:、NBDVプロセスの視差ベクトルは、空間的隣接ブロックからのものである場合、NBDVプロセスの視差ベクトルに設定され、そうでない場合、NBDV−Rプロセスの視差ベクトルに設定される:、およびNBDVプロセスの視差ベクトル:、のうちの少なくとも1つに設定することをさらに備える、実施例5の方法。
[0189]実施例10.3D−AVCのためのビデオデータをコーディングする方法であって、スキップ/ダイレクトモード中に、NBDVプロセスの視差ベクトルが、現在のブロックの時間的隣接ブロックの視差動きベクトルからのものであるときのみ、空間的隣接ブロックを一定の順序で検査することを備える方法。
[0190]実施例11.検査される空間的隣接ブロックが、利用可能な視差動きベクトルを含む場合、利用可能な視差動きベクトルを現在のブロックの視差ベクトルに設定し、空間的隣接ブロックから視差動きベクトルが見つからない場合、現在のブロック向けのNBDVまたはNBDV−Rの結果を使うことをさらに備える、実施例10の方法。
[0191]実施例12.視差動きベクトルを含む2つ以上の空間的隣接ブロックがある場合、視差動きベクトル/視差ベクトルを、現在のブロック用に利用可能なものから、および使われるものから、数学的関数を用いて導出することをさらに備える、実施例10の方法。
[0192]実施例13.3D−AVCのためのビデオデータをコーディングする方法であって、現在のブロックが、スキップ/ダイレクトモードを使ってコーディングされるとき、空間的ブロックをさらに検査するのではなく、NBDVまたはNBDV−Rからの視差ベクトルを直接使うことを備える方法。
[0193]実施例14.実施例5〜13のいずれかの組合せまたは置換による方法。
[0194]実施例15.方法はビデオデコーダによって実施される、実施例5〜13のいずれかの組合せまたは置換による方法。
[0195]実施例16.方法はビデオエンコーダによって実施される、実施例5〜13のいずれかの組合せまたは置換による方法。
[0196]実施例17.実施例5〜14のいずれかの組合せまたは置換による方法を実装するように構成されたビデオコーダを備えるビデオコーディングデバイス。
[0197]実施例18.ビデオコーダはビデオデコーダを備える、実施例17のビデオコーディングデバイス。
[0198]実施例19.ビデオコーダはビデオエンコーダを備える、実施例17のビデオコーディングデバイス。
[0199]実施例20.ビデオコーディングデバイスは、集積回路、マイクロプロセッサ、およびビデオコーダを含むワイヤレス通信デバイスのうちの少なくとも1つを備える、実施例17〜19のいずれかのビデオコーディングデバイス。
[0200]実施例21.実施例5〜14のいずれかの方法を実装するための手段を備える装置。
[0201]実施例22.ビデオデータをコーディングするためのデバイスのプロセッサによって実行されると、デバイスに、実施例5〜14のいずれかの方法を実施させる命令を記憶したコンピュータ可読記憶媒体。
[0202]実施例23.ビデオコーディングのための装置であって、隣接ブロックベースの視差ベクトル導出(NBDV)のために、時間的隣接ブロックではなく、空間的隣接ブロックを最初に検査することによって、現在のブロックについての視差ベクトルを判断するための手段を備える装置。
[0203]実施例24.ビデオコーディングのための装置であって、NBDVプロセスの視差ベクトルが現在のブロックの時間的隣接ブロックの視差動きベクトルからのものであるときのみ、スキップ/ダイレクトモード中に空間的隣接ブロックを一定の順序で検査するための手段を備える装置。
[0204]実施例25.ビデオコーディングのための装置であって、現在のブロックがスキップ/ダイレクトを用いてコーディングされるとき、空間的ブロックをさらに検査し、中央値フィルタリングを潜在的に使用するのではなく、NBDVまたはNBDV−Rからの視差ベクトルを直接使うための手段を備える装置。
[0205]実施例26.命令を記憶するメモリと、命令が実行されると、実施例1〜13のいずれかの組合せまたは置換による方法を実施するように構成される1つまたは複数のプロセッサとを備える装置。
[0206]実施例27.装置はビデオデコーダを備える、実施例26の装置。
[0207]実施例28.装置はビデオエンコーダを備える、実施例26の装置。
[0208]実施形態によっては、本明細書で説明された方法のうちいずれかの、いくつかの動作またはイベントは、異なる順序で実施されてよく、追加され、統合され、または完全に除外されてよい(たとえば、すべての説明した動作またはイベントが、本方法の実施のために必要であるとは限らない)ことを認識されたい。さらに、いくつかの実施形態では、作用またはイベントは、連続してではなくむしろ、同時に、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して実施することができる。
[0209]本明細書に開示する方法、システムおよび装置と関連して説明する様々な例示的論理ブロック、モジュール、回路、およびアルゴリズムのステップは、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、または両方の組合せとして実装できることを、当業者は認識するであろう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップは、それらの機能性の点から上記で一般的に説明された。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明された機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
[0210]さらに、本明細書で開示した実施形態は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはその他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタロジック、個別ハードウェア構成要素などの電子デバイスまたは回路、あるいは本明細書で説明した機能を実施するように設計されたそれらの任意の組合せを用いて実装または実施され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成としても実装され得る。
[0211]本明細書に開示の実施形態に関連して説明した方法またはアルゴリズムのステップは、直接にハードウェアの形態、プロセッサによって実行されるソフトウェアモジュールの形態、またはこの2つの組合せの形態で実施され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROM(登録商標)メモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、または当技術分野で知られている任意の他の形態の記憶媒体内に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、かつ記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体は、プロセッサと一体であり得る。プロセッサおよび記憶媒体はASIC中に存在し得る。ASICはユーザ端末内に常駐し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末内の個別構成要素として存在することができる。
[0212]様々な例について説明がされてきた。これらおよび他の例は、以下の特許請求の範囲内である。
[0212]様々な例について説明がされてきた。これらおよび他の例は、以下の特許請求の範囲内である。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1] ビデオデータを復号する方法であって、
視差ベクトルを判断するために隣接ブロックベースの視差ベクトル(NBDV)導出プロセスを実施するか、または前記視差ベクトルを判断するためにNBDV洗練(NBDV−R)プロセスを実施することと、
複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、前記視差ベクトルを、前記ビデオデータの現在のブロックについての視差ベクトルとして使うことと、ここにおいて、前記現在のブロックは、スキップモードまたはダイレクトモードのいずれかにおいてコーディングされる、
前記現在のブロックについてのピクセル値を判断することとを備える方法。
[C2] 深度マップにアクセスすることが許可されているとき、前記現在のブロックについての前記視差ベクトルを、NBDV−R導出プロセスによって判断された前記視差ベクトルに設定することと、
前記深度マップにアクセスすることが許可されていないとき、前記現在のブロックについての前記視差ベクトルを、NBDVプロセスによって判断された前記視差ベクトルに設定することとをさらに備える、C1に記載の方法。
[C3] 前記現在のブロックはマクロブロックであり、
前記NBDV導出プロセスを実施することは、視差動きベクトルについての1つまたは複数の空間的隣接ブロックを検査し、次いで、視差動きベクトルについての1つまたは複数の時間的隣接ブロックを検査することを備え、ここにおいて、前記空間的または時間的隣接ブロックのうちの1つがビュー間参照ピクチャを使うとき、前記空間的または時間的隣接ブロックの視差動きベクトルを、前記現在のブロックについての前記視差ベクトルとして戻す、C1に記載の方法。
[C4] 前記NBDV−Rプロセスを実施することは、
空間的隣接ブロックまたは時間的隣接ブロックがビュー間参照ピクチャを使うとき、前記空間的隣接ブロックまたは前記時間的隣接ブロックの視差動きベクトルを、前記現在のブロックについての前記視差ベクトルとして戻すことと、
対応する深度ブロックにアクセスすることによって、前記現在のブロックについての前記視差ベクトルを洗練することとを備える、C1に記載の方法。
[C5] 深度マップにアクセスすることが許可されていないとき、前記現在のブロックについての前記視差ベクトルを、前記NBDV導出プロセスによって判断された前記視差ベクトルに設定することと、
前記深度マップにアクセスすることが許可され、前記NBDV導出プロセスによって判断された前記視差ベクトルが空間的隣接ブロックからのものであるとき、前記現在のブロックについての前記視差ベクトルを、前記NBDV導出プロセスによって判断された前記視差ベクトルに設定することと、
前記深度マップにアクセスすることが許可され、前記NBDV導出プロセスによって判断された前記視差ベクトルが空間的隣接ブロックからのものでないとき、前記現在のブロックについての前記視差ベクトルを、前記NBDV−Rプロセスによって判断された前記視差ベクトルに設定することとをさらに備える、C1に記載の方法。
[C6] 深度マップにアクセスすることが許可されているとき、前記現在のブロックについての前記視差ベクトルを、前記NBDV導出プロセスによって判断された前記視差ベクトルに設定することと、
前記深度マップにアクセスすることが許可されていないとき、前記現在のブロックについての前記視差ベクトルを、前記NBDV導出プロセスによって判断された前記視差ベクトルに設定することとをさらに備える、C1に記載の方法。
[C7] 前記NBDV導出プロセスによって判断された前記視差ベクトルが時間的隣接ブロックの視差動きベクトルからのものであるとき、空間的隣接ブロックを特定の順序で検査することをさらに備え、
ここにおいて、前記空間的隣接ブロックのうちの1つを検査するとき、前記空間的隣接ブロックが、利用可能な視差動きベクトルを含む場合、前記利用可能な視差動きベクトルを、前記現在のブロックについての前記視差ベクトルに設定する、
ここにおいて、空間的隣接ブロックのうちのどれも視差動きベクトルを含まないとき、前記NBDV導出プロセスによって判断された前記視差ベクトルまたは前記NBDV−Rプロセスによって判断された前記視差ベクトルを、前記現在のブロックについての前記視差ベクトルとして使う、C1に記載の方法。
[C8] 前記特定の順序は、左の空間的隣接ブロック、上の空間的隣接ブロック、右上の空間的隣接ブロック、および左上の空間的隣接ブロックである、C7に記載の方法。
[C9] 前記空間的隣接ブロックのうちの2つ以上が視差動きベクトルを含むとき、前記空間的隣接ブロックの視差動きベクトルから、数学関数を用いて視差動きベクトルを導出することと、
前記導出された視差動きベクトルを、前記現在のブロックについての前記視差ベクトルとして使うこととをさらに備える、C7に記載の方法。
[C10] ビデオデータを符号化する方法であって、
視差ベクトルを判断するために隣接ブロックベースの視差ベクトル(NBDV)導出プロセスを実施するか、または前記視差ベクトルを判断するためにNBDV洗練(NBDV−R)プロセスを実施することと、
複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、前記視差ベクトルを、前記ビデオデータの現在のブロックについての視差ベクトルとして使うことと、ここにおいて、前記現在のブロックは、スキップモードまたはダイレクトモードのいずれかにおいてコーディングされる、
前記現在のブロックを含む現在のスライスについてのシンタックス要素をエントロピー符号化することとを備える方法。
[C11] 深度マップにアクセスすることが許可されているとき、前記現在のブロックについての前記視差ベクトルを、NBDV−R導出プロセスによって判断された前記視差ベクトルに設定することと、
前記深度マップにアクセスすることが許可されていないとき、前記現在のブロックについての前記視差ベクトルを、NBDVプロセスによって判断された前記視差ベクトルに設定することとをさらに備える、C10に記載の方法。
[C12] 前記現在のブロックはマクロブロックであり、
前記NBDV導出プロセスを実施することは、視差動きベクトルについての1つまたは複数の空間的隣接ブロックを検査し、次いで、視差動きベクトルについての1つまたは複数の時間的隣接ブロックを検査することを備え、ここにおいて、前記空間的または時間的隣接ブロックのうちの1つがビュー間参照ピクチャを使うとき、前記空間的または時間的隣接ブロックの視差動きベクトルを、前記現在のブロックについての前記視差ベクトルとして戻す、C10に記載の方法。
[C13] 前記NBDV−Rプロセスを実施することは、
空間的隣接ブロックまたは1つの複数の時間的隣接ブロックがビュー間参照ピクチャを使うとき、前記空間的隣接ブロックまたは前記時間的隣接ブロックの視差動きベクトルを、前記現在のブロックについての前記視差ベクトルとして戻すことと、
対応する深度ブロックにアクセスすることによって、前記現在のブロックについての前記視差ベクトルを洗練することとを備える、C10に記載の方法。
[C14] 深度マップにアクセスすることが許可されていないとき、前記現在のブロックについての前記視差ベクトルを、前記NBDV導出プロセスによって判断された前記視差ベクトルに設定することと、
前記深度マップにアクセスすることが許可され、前記NBDV導出プロセスによって判断された前記視差ベクトルが空間的隣接ブロックからのものであるとき、前記現在のブロックについての前記視差ベクトルを、前記NBDV導出プロセスによって判断された前記視差ベクトルに設定することと、
前記深度マップにアクセスすることが許可され、前記NBDV導出プロセスによって判断された前記視差ベクトルが空間的隣接ブロックからのものでないとき、前記現在のブロックについての前記視差ベクトルを、前記NBDV−Rプロセスによって判断された前記視差ベクトルに設定することとをさらに備える、C10に記載の方法。
[C15] 深度マップにアクセスすることが許可されているとき、前記現在のブロックについての前記視差ベクトルを、前記NBDV導出プロセスによって判断された前記視差ベクトルに設定することと、
前記深度マップにアクセスすることが許可されていないとき、前記現在のブロックについての前記視差ベクトルを、NBDVプロセスによって判断された前記視差ベクトルに設定することとをさらに備える、C10に記載の方法。
[C16] 前記NBDV導出プロセスによって判断された前記視差ベクトルが時間的隣接ブロックの視差動きベクトルからのものであるとき、空間的隣接ブロックを特定の順序で検査することをさらに備え、
ここにおいて、前記空間的隣接ブロックのうちの1つを検査するとき、前記空間的隣接ブロックが、利用可能な視差動きベクトルを含む場合、前記利用可能な視差動きベクトルを、前記現在のブロックについての前記視差ベクトルに設定する、
ここにおいて、空間的隣接ブロックのうちのどれも視差動きベクトルを含まないとき、前記NBDV導出プロセスによって判断された前記視差ベクトルまたは前記NBDV−Rプロセスによって判断された前記視差ベクトルを、前記現在のブロックについての前記視差ベクトルとして使う、C10に記載の方法。
[C17] 前記特定の順序は、左の空間的隣接ブロック、上の空間的隣接ブロック、右上の空間的隣接ブロック、および左上の空間的隣接ブロックである、C16に記載の方法。
[C18] 前記空間的隣接ブロックのうちの2つ以上が視差動きベクトルを含むとき、前記空間的隣接ブロックの視差動きベクトルから、数学関数を用いて視差動きベクトルを導出することと、
前記導出された視差動きベクトルを、前記現在のブロックについての前記視差ベクトルとして使うこととをさらに備える、C16に記載の方法。
[C19] 復号ビデオブロックを記憶するメモリと、
1つまたは複数のプロセッサとを備えるデバイスであって、前記1つまたは複数のプロセッサは、
視差ベクトルを判断するために隣接ブロックベースの視差ベクトル(NBDV)導出プロセスを実施するか、または前記視差ベクトルを判断するためにNBDV洗練(NBDV−R)プロセスを実施し、
複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、前記視差ベクトルを、ビデオデータの現在のブロックについての視差ベクトルとして使う、ここにおいて、前記現在のブロックは、スキップモードまたはダイレクトモードのいずれかにおいてコーディングされる、ように構成される、デバイス。
[C20] 前記1つまたは複数のプロセッサは、
深度マップにアクセスすることが許可されているとき、前記現在のブロックについての前記視差ベクトルを、NBDV−R導出プロセスによって判断された前記視差ベクトルに設定し、
前記深度マップにアクセスすることが許可されていないとき、前記現在のブロックについての前記視差ベクトルを、NBDVプロセスによって判断された前記視差ベクトルに設定するようにさらに構成される、C19に記載のデバイス。
[C21] 前記現在のブロックはマクロブロックであり、
前記NBDV導出プロセスを実施することの一部として、前記1つまたは複数のプロセッサは、視差動きベクトルについての1つまたは複数の空間的隣接ブロックを検査し、次いで、視差動きベクトルについての1つまたは複数の時間的隣接ブロックを検査する、ここにおいて、前記空間的または時間的隣接ブロックのうちの1つがビュー間参照ピクチャを使うとき、前記現在のブロックについての前記空間的または時間的隣接ブロックの視差動きベクトルを戻す、C19に記載のデバイス。
[C22] 前記NBDV−Rプロセスを実施することの一部として、前記1つまたは複数のプロセッサは、
空間的隣接ブロックまたは時間的隣接ブロックがビュー間参照ピクチャを使うとき、前記空間的隣接ブロックまたは前記時間的隣接ブロックの視差動きベクトルを、前記現在のブロックについての前記視差ベクトルとして戻し、
対応する深度ブロックにアクセスすることによって、前記現在のブロックについての前記視差ベクトルを洗練する、C19に記載のデバイス。
[C23] 前記1つまたは複数のプロセッサは、
深度マップにアクセスすることが許可されていないとき、前記現在のブロックについての前記視差ベクトルを、前記NBDV導出プロセスによって判断された前記視差ベクトルに設定し、
前記深度マップにアクセスすることが許可され、前記NBDV導出プロセスによって判断された前記視差ベクトルが空間的隣接ブロックからのものであるとき、前記現在のブロックについての前記視差ベクトルを、前記NBDV導出プロセスによって判断された前記視差ベクトルに設定し、
前記深度マップにアクセスすることが許可され、前記NBDV導出プロセスによって判断された前記視差ベクトルが空間的隣接ブロックからのものでないとき、前記現在のブロックについての前記視差ベクトルを、前記NBDV−Rプロセスによって判断された前記視差ベクトルに設定するように構成される、C19に記載のデバイス。
[C24] 前記1つまたは複数のプロセッサは、
深度マップにアクセスすることが許可されているとき、前記現在のブロックについての前記視差ベクトルを、前記NBDV導出プロセスによって判断された前記視差ベクトルに設定し、
前記深度マップにアクセスすることが許可されていないとき、前記現在のブロックについての前記視差ベクトルを、NBDVプロセスによって判断された前記視差ベクトルに設定するようにさらに構成される、C19に記載のデバイス。
[C25] 前記1つまたは複数のプロセッサは、
前記NBDV導出プロセスによって判断された前記視差ベクトルが時間的隣接ブロックの視差動きベクトルからのものであるとき、空間的隣接ブロックを特定の順序で検査するように構成され、
ここにおいて、前記空間的隣接ブロックのうちの1つを検査するとき、前記空間的隣接ブロックが、利用可能な視差動きベクトルを含む場合、前記利用可能な視差動きベクトルを、前記現在のブロックについての前記視差ベクトルに設定する、
ここにおいて、空間的隣接ブロックのうちのどれも視差動きベクトルを含まないとき、前記NBDV導出プロセスによって判断された前記視差ベクトルまたは前記NBDV−Rプロセスによって判断された前記視差ベクトルを、前記現在のブロックについての前記視差ベクトルとして使う、C19に記載のデバイス。
[C26] 前記特定の順序は、左の空間的隣接ブロック、上の空間的隣接ブロック、右上の空間的隣接ブロック、および左上の空間的隣接ブロックである、C25に記載のデバイス。
[C27] 前記1つまたは複数のプロセッサは、
前記空間的隣接ブロックのうちの2つ以上が視差動きベクトルを含むとき、前記空間的隣接ブロックの視差動きベクトルから、数学関数を用いて視差動きベクトルを導出し、
前記導出された視差動きベクトルを、前記現在のブロックについての前記視差ベクトルとして使うように構成される、C25に記載のデバイス。
[C28] 視差ベクトルを判断するために隣接ブロックベースの視差ベクトル(NBDV)導出プロセスを実施するか、または前記視差ベクトルを判断するためにNBDV洗練(NBDV−R)プロセスを実施するための手段と、
複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、前記視差ベクトルを、ビデオデータの現在のブロックについての視差ベクトルとして使うための手段と、ここにおいて、前記現在のブロックは、スキップモードまたはダイレクトモードのいずれかにおいてコーディングされる、を備えるデバイス。