(58)【調査した分野】(Int.Cl.,DB名)
前記左画像または前記右画像の、前記ユーザによって選択されていない部分を劣化させるステップが、前記左画像または前記右画像の、前記ユーザによって選択されていない前記部分を不鮮明にするステップを備える、請求項2に記載の方法。
視差マップを決定するステップが、前記左画像の中のブロックと前記右画像の中の対応するブロックとの間の距離を決定するステップを備え、第1のブロックおよび第2のブロックがしきい値内で同一である場合、前記第1のブロックが前記第2のブロックに対応する、請求項4に記載の方法。
向上させるステップが、前記向上領域を鮮明にするステップ、前記向上領域を前記左画像または前記右画像の異なる部分に移動させるステップ、または前記向上領域のカラーを調整するステップのうちの少なくとも1つを備える、請求項1に記載の方法。
前記左画像または前記右画像の、前記ユーザによって選択されていない部分を劣化させるための手段が、前記左画像または前記右画像の、前記ユーザによって選択されていない前記部分を不鮮明にするための手段を備える、請求項11に記載の装置。
視差マップを決定するための手段が、前記左画像の中のブロックと前記右画像の中の対応するブロックとの間の距離を決定するための手段を備え、第1のブロックおよび第2のブロックがしきい値内で同一である場合、前記第1のブロックが前記第2のブロックに対応する、請求項13に記載の装置。
向上させるための手段が、前記向上領域を鮮明にするための手段、前記向上領域を前記左画像または前記右画像の異なる部分に移動させるための手段、または前記向上領域のカラーを調整するための手段のうちの少なくとも1つを備える、請求項10に記載の装置。
深度マップを取り出すための前記手段および深度マップを決定するための前記手段がエンコーダを備え、識別するための前記手段、向上領域を決定するための前記手段、および向上させるための前記手段がプロセッサを備える、請求項10に記載の装置。
実行されたとき、装置に、前記左画像の中のブロックと前記右画像の中の対応するブロックとの間の距離を決定させるコードをさらに備え、第1のブロックおよび第2のブロックがしきい値内で同一である場合、前記第1のブロックが前記第2のブロックに対応する、請求項19に記載の媒体。
前記コーダが、前記左画像の中のブロックと前記右画像の中の対応するブロックとの間の距離を決定するようにさらに構成され、第1のブロックおよび第2のブロックがしきい値内で同一である場合、前記第1のブロックが前記第2のブロックに対応する、請求項25に記載のデバイス。
前記プロセッサが、前記向上領域を鮮明にすること、前記向上領域を前記左画像または前記右画像の異なる部分に移動させること、または前記向上領域のカラーを調整することのうちの少なくとも1つを行うようにさらに構成される、請求項22に記載のデバイス。
【発明を実施するための形態】
【0011】
上述されたように、倍率の高いレンズおよび/または他の構成要素を有するフル機能搭載のカメラまたはビデオカメラは、高価であり得る。取り込まれた視覚媒体(たとえば、画像、ビデオなど)を処理および向上させて、倍率の高いレンズおよび/または他の構成要素によって生み出される効果を模倣するために、ポータブルデバイスなどのデバイスにおいて利用可能なアプリケーションが使用され得る。たとえば、カラーを調整し、コントラストを向上させ、エッジを鮮明にし、幾何学的形状を変化させ、および/または類似のことをするために、アプリケーションがエンドユーザによって使用され得る。しかしながら、アプリケーションの多くはプロセッサ集約的であり、および/または向上機能の一部または全部を実装するための追加のハードウェアを必要とする。一例として、向上させるべき媒体の部分を処理または決定することは、プロセッサ集約的であり得る。加えて、向上させるべき媒体の部分および/または向上させるべきでない媒体の部分を決定するために、深度マップエンジンなどの特別なハードウェアが必要であり得る。アプリケーションがバッテリー消費および/またはデバイスのサイズを増大させる場合があるので、そのようなアプリケーションのプロセッサ集約的な性質、および/または追加のハードウェアを含む必要性が、ポータブルデバイスにおいて特に問題となり得る。
【0012】
したがって、本明細書で説明するシステムおよび方法は、アプリケーションが向上機能を実行することを可能にするために、デバイスにおける既存のハードウェアを使用する。加えて、本明細書で説明するシステムおよび方法は、デバイスがアイドル状態であるか、充電中であるか、または別の状況でバッテリー消費が課題でない状態にある間、プロセッサ集約的である動作などのいくつかの動作をデバイスが実行することを可能にする。このようにして、本明細書で説明するシステムおよび方法は、バッテリー消費を最小限に抑え、デバイスのサイズを維持しまたは低減すらさせながら、デバイスが様々な向上機能を提供することを可能にする。
【0013】
本明細書で説明する技法は任意のタイプおよび任意の数の画像または画像のシーケンス(たとえば、ビデオ)に適用され得るが、本明細書で開示する技法は、ステレオ画像および/またはステレオビデオに関して説明される。ステレオ画像(すなわち、画像のステレオペア)は、一般に、共通のシーンの第1の画像および第2の画像を含む。第1および第2の画像は、本開示全体にわたって、左画像および右画像、左ビューおよび右ビュー、または左(L)フレームおよび右(R)フレームと呼ばれることもある。ステレオペアの第1および第2の画像は、3Dオブジェクトを有するシーンを作り出すために、同時に、または矢継ぎ早に表示され得る。ステレオ画像またはステレオビデオは、2つのカメラを使用して取り込まれ得、左フレームおよび右フレームのストリームとして送信される。時々、一般的でないが、ステレオ画像またはステレオビデオは、Lフレームとして送信され、そのフレームに関する深度マップ(D)が随伴する。しかしながら、本明細書で説明するような他の場合には、ステレオ画像またはステレオビデオは、フレームに関する深度マップなしに送信される。しかしながら、深度マップは、LフレームおよびRフレームを使用して計算され得る。2つのビュー(LおよびR)が与えられた深度マップを計算することは、通常、複雑で計算量を多く必要とするプロセスである。リアルタイムの実装形態は、通常、視差(たとえば、深度マップを決定するために使用され得る)を計算するためにハードウェアモジュールを独占的に必要とする。しばしば、最良の視差計算アルゴリズムは、それらがリアルタイムで実施され得ないか、またはかなり大きい処理リソースを有するデバイスでしかリアルタイムで実施され得ないように複雑である。したがって、深度マップを計算することは、一般に、白紙の状態から行われる場合、余分な設計および実装の労力を要する。しかしながら、本明細書で説明するように、深度を計算するために既存のシステムが再利用され、その労力のむだを防ぐことができる。ビデオの深度マップが利用可能であるとき、深度認識向上がステレオ画像またはステレオビデオに適用され得る。
【0014】
本開示で使用されるような「視差」という用語は、概して、ある画像の中の画素の、他の画像の中の対応する画素に対する水平偏位(たとえば、2つの画像の間の空間的な向きの差分)を表現する。対応する画素とは、本開示で使用されるとき、概して、左画像および右画像が2D画像または3D画像を描画するために同期されているときの、3Dオブジェクトの中の同じ点に関連した画素(左画像の中の画素および右画像の中の画素)を指す。
【0015】
画像のステレオペアに関する複数の視差値が、視差マップと呼ばれるデータ構造に記憶され得る。画像のステレオペアに関連した視差マップは、第2の画像の中の対応する画素を見つけるために、第1の画像の中の任意の所与の(x,y)座標におけるdとしての値が、第2の画像の中の座標(x,y)における画素に適用される必要があるx座標での移動に対応するような、第1の画像の中の画素座標(x,y)を視差値(d)にマッピングする2次元(2D)関数、d(x,y)を表す。たとえば、特定の例として、視差マップが、第1の画像の中の座標(250,150)における画素に関して6としてのd値を記憶し得る。この例では、6としてのd値が与えられると、第1の画像の中のクロマ値およびルミナンス値などの画素(250,150)を表現するデータは、第2の画像の中の画素(256,150)において出現する。
【0016】
2D画像の中で利用可能な初歩の情報は、各画素のカラー値である。したがって、対応する画素を識別するための1つの技法は、第1の画像(参照画像とも呼ばれる)の中のすべての画素のカラー値の、第2の画像(ターゲット画像とも呼ばれる)の画素の中での最良の整合を探すことであり、ここで、ターゲット画像とは、画像のステレオペアの中の随伴画像を指す。ターゲット画像は左画像または右画像のうちの一方であり得、参照画像は左画像または右画像のうちの他方であり得る。修正されるステレオペアが検討されているとき、ターゲット画像の中での探索空間は、参照画像の中と同じエピポーラ線の中の画素に限定され得る。しかしながら、この技法は、オブジェクトの中の同じ点に関連する画素のカラー値が同じであることを想定し、そのことは、常に適切な想定であるとは限らない。たとえば、オブジェクト表面は、一般に、すべての方向で光を一様に反射せず、ステレオセットを取得するために使用される2画像取込みセンサーは、相異なる比色較正を有し得る。さらに、線に沿ったいくつかの画素の中に同じカラー値が見出されることがあり、何らかの潜在的な整合をもたらし得る。さらに、特定の画素または画素のグループがターゲット画像の中で隠蔽されることがあり、それらが参照画像のオブジェクトの後方にあり、したがって、3D画像の中で目に見えないことを意味する。したがって、対応する画素が識別されない画素に関して、視差値が利用可能でない場合がある。そのような値が場合によっては利用可能でないとき、視差値を決定するために補間または類似の技法が使用され得る。
【0017】
一実施形態では、深度マップが、視差マップに基づいて形成され得る。たとえば、視差マップは、視差値が0からセット数(たとえば、255)までわたるように変倍され得る。変倍された視差マップは、本明細書で深度マップと呼ばれる。概して、深度マップの中の変倍された値は、グレースケール(たとえば、セット数が255である場合、8ビットのグレースケール)に相当する。したがって、以下に説明および例示されるように、深度マップは、グレースケール画像を通して図式的に表され得る。
【0018】
ほとんどのポータブルデバイスは、データを効率よく他のデバイスへ送信するために、エンコーダおよび/またはデコーダを含む。特に、エンコーダおよび/またはデコーダは、視覚媒体が媒体全体にわたってより迅速に送信され得るように、視覚媒体を圧縮および/または復元するために使用され得る。本明細書で説明するように、既存のエンコーダおよび/またはデコーダが、追加の機能を実行するために活用され得る。たとえば、エンコーダおよび/またはデコーダは、深度マップをリアルタイムで生成し、画像または画像のシーケンスの中の深度情報を決定するために使用され得る。そのような深度情報は、関係する画像の部分(たとえば、組み合わされるとオブジェクトを備える画素)、および関係しない画像の部分(たとえば、異なるオブジェクトの一部である隣接する画素)を識別する際に有用であり得る。エンドユーザは画像の部分を選択することができ、深度情報に基づいて、選択された部分に関係する画像の部分がデバイスのプロセッサによって向上され得、および/または選択された部分に関係しない画像の部分がプロセッサによって劣化され得る。本明細書で開示するようなシステムおよび方法が、
図1〜
図14に関してより詳細に説明される。
【0019】
図1は、ソースデバイスがステレオ画像を向上させる例示的なシステムを示すブロック図である。
図1に示すように、システム100は、画像ソース116、エンコーダ120、プロセッサ122、および画像ディスプレイ123を有するソースデバイス112を含み得る。ソースデバイス112は、ワイヤレスハンドセット、いわゆるセルラーもしくは衛星無線電話、またはピクチャおよび/もしくはビデオ情報を通信チャネル上で通信することができる任意のワイヤレスデバイスなどのワイヤレス通信デバイスを備えてよく、その場合、通信チャネルはワイヤレス通信チャネルを備え得る。
【0020】
画像ソース116は、第1のビュー150および第2のビュー152を含む画像のステレオペアを、エンコーダ120およびプロセッサ122に提供する。画像ソース116は、第1のビュー150および第2のビュー152をエンコーダ120およびプロセッサ122に、同時に、または異なる時間において提供することができる。たとえば、第1のビュー150および第2のビュー152は、第1のビュー150および第2のビュー152が画像ソース116に記憶された直後に、または記憶された後速やかに、エンコーダ120に提供され得る。第1のビュー150および第2のビュー152は、次いで、エンドユーザが第1のビュー150および/または第2のビュー152を向上させたいと望むことを示すとき、プロセッサ122に提供され得る。
【0021】
画像ソース116は、画像センサーアレイ(たとえば、デジタル静止画像カメラまたはデジタルビデオカメラ)、1つもしくは複数の記憶された画像を備えるコンピュータ可読記憶媒体、デジタル画像を外部ソースから受信するためのインターフェース、ビデオゲームもしくは他の対話式マルチメディアソースを実行することなどによってデジタル画像を生成する処理ユニット、または画像データの他のソースを備えてよい。画像ソース116は、一般に、取り込まれる画像、事前に取り込まれた画像、および/またはコンピュータ生成の画像のうちの任意の1つまたは複数のソースに相当し得る。いくつかの例では、画像ソース116は、セルラー(すなわち、モバイル)電話のカメラに相当し得る。概して、本開示での画像への参照は、静止画像とビデオデータのフレームの両方を含む。したがって、本開示の態様は、デジタル静止画像と、取り込まれるデジタルビデオデータまたはコンピュータ生成のデジタルビデオデータのフレームの両方に適用され得る。
【0022】
たとえば、画像ソース116は、異なる眺めにおけるシーンの2つのビューを取り込み得る。様々な例では、画像ソース116は、標準的な2次元カメラ、シーンの立体視ビューを提供する2つのカメラシステム、シーンの複数のビューを取り込むカメラアレイ、深度情報に加えて1つのビューを取り込むカメラ、またはシーンの立体視ビューを一緒に提供する第1のデバイス上の第1のカメラおよび第2のデバイス上の第2のカメラを備えてよい。
【0023】
エンコーダ120は、第1のビュー150および第2のビュー152を使用して深度マップ154を生成する。エンコーダ120は、深度マップ154をプロセッサ122に転送する。プロセッサ122は、第1のビュー150、第2のビュー152、および深度マップ154を使用して、第1のビュー150の向上されたバージョンである向上された第1のビュー156を生成し、および/または第2のビュー152の向上されたバージョンである向上された第2のビュー158を生成する。プロセッサ122は、向上された第1のビュー156および/または向上された第2のビュー158を、画像ディスプレイ123へ送信する。
【0024】
向上された第1のビュー156および/または向上された第2のビュー158に基づいて、画像ディスプレイ123は、向上された2次元画像または3次元画像を描画することができる。たとえば、画像ディスプレイ123は、向上された第1のビュー156および向上された第2のビュー158を同期させて、単一の2次元画像を形成および表示することができる。別の例として、画像ディスプレイ123は、向上された第1のビュー156および向上された第2のビュー158の2次元のバージョンを、(たとえば、3次元の効果を作り出すために)同時または交互に表示することができる。別の例として、画像ディスプレイ123は、向上された第1のビュー156および向上された第2のビュー158を同期させて、単一の3次元画像を形成および表示することができる。
【0025】
一般に、人間視覚システム(HVS)は、オブジェクトへの集束角に基づいて深度を知覚する。見ている人の目が見ている人から比較的遠いオブジェクトよりも大きい角度でオブジェクト上に集束することに起因して、見ている人に比較的近いオブジェクトは見ている人により近いものとして知覚される。ピクチャやビデオなどのマルチメディアにおいて3次元をシミュレートするために、画像ディスプレイ123は、2つの画像、すなわち見ている人の目の各々に対して1つの画像(左および右)を、見ている人に表示することができる。画像内の同じ空間的ロケーションに位置するオブジェクトは、概して、画像が表示されているスクリーンと同じ深度にあるものとして知覚される。
【0026】
深度の錯覚を作り出すために、オブジェクトは、画像の各々の中の水平軸に沿ったわずかに異なる位置において示され得る。2つの画像の中のオブジェクトのロケーションの間の差分が、視差と呼ばれる。一般に、スクリーンに比べて見ている人により近くにオブジェクトを出現させるために負の視差値が使用され得、その一方で、スクリーンに比べてユーザからより遠くにオブジェクトを出現させるために正の視差値が使用され得る。正または負の視差を有する画素は、いくつかの例では、より高いまたはより低い解像度で表示されて、シャープネスまたは不鮮明さを増大または減少させ、さらに焦点から正または負の深度としての効果を作り出し得る。
【0027】
画像ディスプレイ123は、立体視ディスプレイまたは裸眼立体視ディスプレイを備えてよい。一般に、立体視ディスプレイは、1つの画像を一方の目に、また第2の画像を他方の目に導くゴーグルや眼鏡などのヘッドマウントユニットを、見ている人が装着しながら、2つの画像を表示することによって3次元をシミュレートする。いくつかの例では、各画像は同時に表示される(たとえば、偏光眼鏡またはカラーフィルタリング眼鏡を使用する)。いくつかの例では、適切な画像を対応する目だけに見せるように、画像は高速で互い違いにされ、眼鏡またはゴーグルはディスプレイと同期して高速で互い違いにシャッタリングする。裸眼立体視ディスプレイは眼鏡を使用しないが、代わりに、見ている人の対応する目に適切な画像を導き得る。たとえば、裸眼立体視ディスプレイは、見ている人の目がどこに位置するのかを決定するためのカメラ、および見ている人の目に画像を導くための機械的および/または電子的な手段が装備され得る。
【0028】
図2は、向上されたステレオ画像をソースデバイスが宛先デバイスへ送信する例示的なシステムを示すブロック図である。
図2に示すように、システム200は、画像ソース116、エンコーダ120、プロセッサ122、出力インターフェース224を有するソースデバイス112を含み得、画像ディスプレイ232、デコーダ230、および入力インターフェース228を有する宛先デバイス214をさらに含み得る。
図2の例では、宛先デバイス214は、符号化画像データ262をソースデバイス112から受信する。ソースデバイス112および/または宛先デバイス214は、ワイヤレスハンドセット、いわゆるセルラーもしくは衛星無線電話、またはピクチャおよび/もしくはビデオ情報を通信チャネル上で通信することができる任意のワイヤレスデバイスなどのワイヤレス通信デバイスを備えてよく、その場合、通信チャネルはワイヤレス通信チャネルを備え得る。宛先デバイス214は、3次元(3D)ディスプレイデバイスまたは3D描画デバイスと呼ばれることがある。
【0029】
図1に関して上記で説明したように、画像ソース116は、第1のビュー150および第2のビュー152を含む画像のステレオペアを、エンコーダ120およびプロセッサ122に提供する。画像ソース116は、第1のビュー150および第2のビュー152をエンコーダ120およびプロセッサ122に、同時に、または異なる時間において提供することができる。たとえば、第1のビュー150および第2のビュー152は、第1のビュー150および第2のビュー152が画像ソース116に記憶された直後に、または記憶された後速やかに、エンコーダ120に提供され得る。第1のビュー150および第2のビュー152は、次いで、エンドユーザが第1のビュー150および/または第2のビュー152を向上させたいと望むことを示すとき、プロセッサ122に提供され得る。
【0030】
エンコーダ120は、第1のビュー150および第2のビュー152を使用して深度マップ154を生成する。エンコーダ120は、深度マップ154をプロセッサ122に転送する。プロセッサ122は、第1のビュー150、第2のビュー152、および深度マップ154を使用して、第1のビュー150の向上されたバージョンである向上された第1のビュー156を生成し、および/または第2のビュー152の向上されたバージョンである向上された第2のビュー158を生成する。プロセッサ122は、向上された第1のビュー156および/または向上された第2のビュー158を、エンコーダ120へ送信する。
【0031】
エンコーダ120は、向上された第1のビュー156に関するおよび/または向上された第2のビュー158に関する符号化画像データを含む、符号化画像データ262を形成する。いくつかの例では、エンコーダ120は、符号化画像データ262をソースデバイス112から宛先デバイス214へ送信するのに必要とされるビット数を低減するために、様々な可逆または不可逆コーディング技法を適用し得る。エンコーダ120は、符号化画像データ262を出力インターフェース224に伝える。
【0032】
向上された第1のビュー156および/または向上された第2のビュー158がデジタル静止画像であるとき、エンコーダ120は、向上された第1のビュー156および/または向上された第2のビュー158を、たとえば、ジョイントフォトグラフィックエキスパートグループ(JPEG)画像として符号化するように構成され得る。向上された第1のビュー156および/または向上された第2のビュー158がビデオデータのフレームであるとき、エンコーダ120は、向上された第1のビュー156および/または向上された第2のビュー158を、たとえば、モーションピクチャエキスパートグループ(MPEG)、MPEG-2、国際電気通信連合(ITU)H.261、ISO/IEC MPEG-1ビジュアル、ITU-T H.262もしくはISO/IEC MPEG-2ビジュアル、ITU H.263、そのSVC拡張およびマルチビュービデオコーディング(MVC)拡張を含むISO/IEC MPEG-4ビジュアルおよびITU-T H.264(ISO/IEC MPEG-4アドバンストビデオコーディング(AVC)とも呼ばれる)、ITU-T H.265、または他のビデオ符号化規格などのビデオコーディング規格に従って符号化するように構成され得る。ITU-T H.264/MPEG-4(AVC)規格は、たとえば、ISO/IECムービングピクチャエキスパートグループ(MPEG)とともにITU-Tビデオコーディングエキスパートグループ(VCEG)によって、共同ビデオ部会(JVT)と呼ばれる集合的パートナーシップの製作物として考案された。いくつかの態様では、本開示で説明する技法は、概してH.264規格に適合するデバイスに適用され得る。H.264規格は、本明細書でH.264規格もしくはH.264仕様、またはH.264/AVC規格もしくは仕様と呼ばれることがある、ITU-T検討グループによる2005年3月の日付のついたITU-T勧告H.264、Advanced Video Coding for generic audiovisual servicesに記載されている。共同ビデオ部会(JVT)は、H.264/MPEG-4 AVCへの拡張に取り組み続けている。MVCのドラフトは、「Advanced video coding for generic audiovisual services」、ITU-T勧告H.264、2010年3月に記載されている。加えて、高効率ビデオコーディング(HEVC)は、現在、ITU-Tビデオコーディングエキスパートグループ(VCEG)およびISO/IECモーションピクチャエキスパートグループ(MPEG)のビデオコーディング共同研究部会(JCT-VC)によって開発中である。「HEVCワーキングドラフト7」と呼ばれるHEVC規格のドラフトは、文書HCTVC-I1003、Brossら、「High Efficiency Video Coding (HEVC) Text Specification Draft 7」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第9回会合、ジュネーブ、スイス、2012年4月27日〜2012年5月7日の中にある。この文書は、その全体が参照により本明細書に組み込まれる。
【0033】
いくつかの実施形態では、図示しないが、エンコーダ120は、深度マップ154を符号化するように構成され、深度マップ154は、次いで、ビットストリームの中で符号化画像データ262の一部として送信される。このプロセスは、取り込まれた1つのビューに対して1つの深度マップを、またはいくつかの送信されるビューに対して複数の深度マップを生成することができる。エンコーダ120は、1つまたは複数のビューおよび深度マップを受信し得、複数のビューをジョイントコーディングすることができるH.264/AVC、MVCのようなビデオコーディング規格、または深度およびテクスチャをジョイントコーディングすることができるスケーラブルビデオコーディング(SVC)を用いて、それらをコーディングし得る。
【0034】
向上された第1のビュー156および/または向上された第2のビュー158がビデオデータのフレームに相当するとき、エンコーダ120は、向上された第1のビュー156および/または向上された第2のビュー158をイントラ予測モードまたはインター予測モードで符号化し得る。一例として、ITU-T H.264規格は、ルーマ成分に対して16×16、8×8、または4×4、およびクロマ成分に対して8×8などの様々なブロックサイズでのイントラ予測、ならびにルーマ成分に対して16×16、16×8、8×16、8×8、8×4、4×8および4×4、およびクロマ成分に対して対応する変倍されたサイズなどの、様々なブロックサイズでのインター予測をサポートする。本開示では、「N×N」および「NバイN」は、垂直寸法および水平寸法の観点からブロックの画素寸法を指すために互換的に使用され得る(たとえば、16×16画素または16バイ16画素)。概して、16×16ブロックは垂直方向に16個の画素、および水平方向に16個の画素を有する。同様に、N×Nブロックは、概して、垂直方向にN個の画素、および水平方向にN個の画素を有し、ここで、Nは、16よりも大きくてよい正の整数値を表す。ブロックの中の画素は、行および列をなして配置され得る。ブロックはまた、N×Mであってよく、ここで、NおよびMは必ずしも等しくない整数である。
【0035】
16バイ16よりも小さいブロックサイズは、16バイ16マクロブロックのパーティションと呼ばれることがある。同様に、N×Nブロックに対して、N×Nよりも小さいブロックサイズは、N×Nブロックのパーティションと呼ばれることがある。ビデオブロックは、画素領域における画素データのブロック、または(たとえば、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、またはコード化ビデオブロックと予測ビデオブロックとの間の画素差分を表す残差ビデオブロックデータへの概念的に類似の変換などの、変換の適用の後の)変換領域における変換係数のブロックを備え得る。場合によっては、ビデオブロックは、変換領域における量子化変換係数のブロックを備え得る。
【0036】
より小さいビデオブロックは、より良い解像度をもたらすことができ、高いレベルのディテールを含むビデオフレームのロケーションに対して使用され得る。一般に、サブブロックと呼ばれることがあるマクロブロックおよび様々なパーティションは、ビデオブロックであるものと見なされ得る。加えて、スライスが、マクロブロックおよび/またはサブブロックなどの複数のビデオブロックであるものと見なされ得る。各スライスは、ビデオフレームの独立に復号可能なユニットであり得る。あるいは、フレーム自体が復号可能なユニットであってよく、またはフレームの他の部分が復号可能なユニットとして規定されてもよい。「コード化ユニット」または「コーディングユニット」という用語は、全体的なフレーム、フレームのスライス、シーケンスもしくはスーパーフレームとも呼ばれるピクチャグループ(GOP)、または適用可能なコーディング技法に従って規定される独立に復号可能な別のユニットなどの、ビデオフレームの任意の独立に復号可能なユニットを指すことがある。
【0037】
一般に、マクロブロックおよび様々なサブブロックまたはパーティションは、すべてビデオブロックであるものと見なされ得る。加えて、スライスが、マクロブロックおよび/またはサブブロックもしくはパーティションなどの一連のビデオブロックであるものと見なされ得る。一般に、マクロブロックは、画素の16バイ16エリアを規定するクロミナンス値およびルミナンス値のセットを指し得る。ルミナンスブロックは、16バイ16セットとしての値を備え得るが、8バイ8ブロック、4バイ4ブロック、8バイ4ブロック、4バイ8ブロック、または他のサイズなどの、より小さいビデオブロックにさらに区分されてよい。2つの異なるクロミナンスブロックが、マクロブロックに対するカラーを規定し得、画素の16バイ16エリアに関連付けられたカラー値の8バイ8でサブサンプリングされたブロックをそれぞれ備え得る。マクロブロックは、マクロブロックに適用されたコーディングモードおよび/またはコーディング技法を規定するためのシンタックス情報を含み得る。マクロブロックまたは他のビデオブロックは、スライス、フレーム、または他の独立したユニットなどの復号可能なユニットにグループ化され得る。各スライスは、ビデオフレームの独立に復号可能なユニットであり得る。あるいは、フレーム自体が復号可能なユニットであってよく、またはフレームの他の部分が復号可能なユニットとして規定されてもよい。
【0038】
出力インターフェース224は、符号化画像データ262を宛先デバイス214へ送信する。入力インターフェース228は、符号化画像データ262を出力インターフェース224から受信する。本開示の態様は、必ずしもワイヤレスの適用例または設定に限定されない。たとえば、本開示の態様は、無線テレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、インターネットビデオ送信、記憶媒体へ符号化される符号化デジタルビデオ、または他のシナリオに適用され得る。したがって、通信チャネルは、符号化されたビデオおよび/またはピクチャデータの送信に適当な、ワイヤレスまたは有線の媒体の任意の組合せを備え得る。
【0039】
出力インターフェース224は、符号化画像データ262を含むビットストリームを、宛先デバイス214の入力インターフェース228へ送り得る。たとえば、出力インターフェース224は、トランスポートレベルカプセル化技法(たとえば、MPEG-2システム技法)を使用して、符号化画像データ262をビットストリームの中にカプセル化し得る。出力インターフェース224は、たとえば、ネットワークインターフェース、ワイヤレスネットワークインターフェース、無線周波数送信機、送信機/受信機(トランシーバ)、または他の送信ユニットを備え得る。他の例では、ソースデバイス112は、符号化画像データ262を含むビットストリームを、たとえば、コンパクトディスクなどの光学記憶媒体、デジタルビデオディスク、ブルーレイディスク、フラッシュメモリ、磁気媒体、または他の記憶媒体などの物理媒体に記憶するように構成され得る。そのような例では、記憶媒体は、宛先デバイス214のロケーションへ物理的にトランスポートされ得、データを取り出すための適切なインターフェースユニットによって読み取られ得る。いくつかの例では、符号化画像データ262を含むビットストリームは、出力インターフェース224によって送信される前に、変調器/復調器(モデム)によって変調され得る。
【0040】
画像ソース116は、複数のビュー(すなわち、向上された第1のビュー156および向上された第2のビュー158)を形成し得るが、ソースデバイス112は、向上された第1のビュー156または向上された第2のビュー158のみを送信してよい。たとえば、画像ソース116は、異なる角度から見られるべきシーンの4ペアのビューを生成するように意図された8つのカメラアレイを備えてよい。ソースデバイス112は、各ペアの1つの画像のみを宛先デバイス214へ送信してよい。いくつかの実施形態では、ソースデバイス112は、単一の画像と一緒に、深度マップ154などの追加情報を送信し得る。したがって、この例では、8つのビューを送信するのではなく、ソースデバイス112は、符号化画像データ262を含むビットストリームという形で、4つのビューを、および/または4つのビューの各々に関する深度/視差情報(たとえば、深度マップ154)を加えて送信し得る。いくつかの例では、プロセッサ122は、画像に関する視差情報(たとえば、深度マップ154)を、ユーザから、または別の外部デバイスから受信し得る。
【0041】
符号化画像データ262を有するビットストリームを受信しデータをカプセル化解除した後、いくつかの例では、入力インターフェース228が、符号化画像データ262をデコーダ230に(または、いくつかの例では、ビットストリームを復調するモデムに)提供し得る。
【0042】
デコーダ230は、符号化画像データ262を入力インターフェース228から受信する。デコーダ230は、符号化画像データ262を復号して、向上された第1のビュー156および/または向上された第2のビュー158を抽出する。向上された第1のビュー156および/または向上された第2のビュー158に基づいて、画像ディスプレイ123と同じかまたは類似である画像ディスプレイ232が、2次元または3次元の画像を描画することができる。
図2に示さないが、向上された第1のビュー156および/または向上された第2のビュー158は、ソースデバイス112または宛先デバイス214のいずれかにおいて、さらなる処理を受けてよい。
【0043】
図3は、本開示で説明する態様による技法を実施し得るエンコーダの一例を示すブロック図である。エンコーダ120は、本開示の技法のうちのいずれかまたはすべてを実行するように構成され得る。たとえば、モード選択ユニット340(たとえば、動き推定ユニット342)は、エンコーダ120によって受信された画像のシーケンス(たとえば、左画像と後続の右画像)に基づいて、深度マップを決定するように構成され得る。しかしながら、本開示の態様はそのように限定されない。いくつかの例では、本開示で説明する技法は、エンコーダ120の様々な構成要素の間で共有され得る。いくつかの例では、それに加えてまたはその代わりに、プロセッサ(図示せず)が本開示で説明する技法のうちのいずれかまたはすべてを実行するように構成され得る。
【0044】
エンコーダ120は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは空間予測に依拠して、所与のビデオフレーム内またはピクチャ内のビデオにおける空間的冗長性を低減または除去する。インターコーディングは時間予測に依拠して、互いに隣接するフレーム内またはビデオシーケンスのピクチャ内のビデオにおける時間的冗長性を低減または除去する。イントラモード(Iモード)は、いくつかの空間ベースのコーディングモードのいずれかを指すことがある。単方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースのコーディングモードのいずれかを指すことがある。エンコーダ120はまた、本明細書で説明するインターコーディング技法を使用して、視差マップおよび/または深度マップを生成し得る。
【0045】
図3に示すように、エンコーダ120は、符号化されるべき画像内またはビデオフレーム内の現在の画像ブロックを受信する。
図3の例では、エンコーダ120は、モード選択ユニット340、参照フレームメモリ364、加算器350、変換処理ユニット352、量子化ユニット354、およびエントロピー符号化ユニット356を含む。モード選択ユニット340は、動き推定ユニット342、動き補償ユニット344、イントラ予測ユニット346、およびパーティションユニット348を含む。ビデオブロック再構成のために、エンコーダ120はまた、逆量子化ユニット358、逆変換ユニット360、および加算器362を含む。ブロック境界をフィルタ処理して、再構成されたビデオからのブロッキネスアーティファクトを除去するために、デブロッキングフィルタ(
図3に示さず)も含まれ得る。所望される場合、デブロッキングフィルタは、通常、加算器362の出力をフィルタ処理することになる。デブロッキングフィルタに加えて追加のフィルタ(ループ内フィルタまたはポストループフィルタ)も使用されてよい。そのようなフィルタは簡潔のために図示されないが、所望される場合、加算器350の出力を(ループ内フィルタとして)フィルタ処理し得る。
【0046】
符号化プロセスの間、エンコーダ120は、コーディングされるべき画像、ビデオフレーム、またはスライスを受信する。画像、フレーム、またはスライスは、複数のブロックに分割され得る。動き推定ユニット342および動き補償ユニット344が、受信されたブロックのインター予測コーディングを、1つまたは複数の参照フレームの中の1つまたは複数のブロックに対して実行して、時間予測を提供する。あるいは、イントラ予測ユニット346が、受信されたブロックのイントラ予測コーディングを、コーディングされるべきブロックと同じフレームまたはスライスの中の1つまたは複数の隣接ブロックに対して実行して、空間予測を提供してもよい。エンコーダ120は、複数のコーディングパス(たとえば、ビデオデータの各ブロック用に適切なコーディングモードを選択すること)を実行し得る。
【0047】
その上、パーティションユニット348は、前のコーディングパスにおける前の区分方式の評価に基づいて、画像またはビデオデータのブロックをサブブロックに区分し得る。たとえば、パーティションユニット348は、最初に、画像、フレーム、またはスライスを最大のコーディングユニット(LCU)に区分し得、レートひずみ分析に基づいてLCUの各々をサブコーディングユニット(CU)に区分し得る(たとえば、レートひずみ最適化)。モード選択ユニット340(たとえば、パーティションユニット348)は、LCUのサブCUへの区分を示す4分木データ構造をさらに生成し得る。4分木のリーフCUは、1つまたは複数のPUおよび1つまたは複数のTUを含み得る。
【0048】
モード選択ユニット340は、コーディングモード(たとえば、イントラまたはインター)のうちの1つを誤差結果に基づいて選択し得、得られたイントラコード化ブロックまたはインターコード化ブロックを、加算器350に提供して残差ブロックデータを生成し得、また加算器362に提供して参照フレームとして使用するための符号化ブロックを再構成し得る。モード選択ユニット340はまた、動きベクトル、イントラモードインジケータ、パーティション情報、および他のそのようなシンタックス情報などのシンタックス要素を、エントロピー符号化ユニット356に提供する。
【0049】
動き推定ユニット342および動き補償ユニット344は高集積化され得るが、概念的な目的のために別個に示される。動き推定ユニット342によって実行される動き推定すなわち動き情報の予測は、ビデオブロックに関する動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム(または、他のコード化ユニット)内でコーディングされている現在のブロックに対する参照フレーム(または、他のコード化ユニット)内の予測ブロックに比べた、現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、コーディングされるべきブロックに画素差分の観点から密に整合すると見出されるブロックであり、絶対差分和(SAD)、2乗差分和(SSD)、または他の差分メトリクスによって決定され得る。いくつかの例では、エンコーダ120は、参照フレームメモリ364に記憶された参照ピクチャのサブ整数画素位置に対する値を算出し得る。たとえば、エンコーダ120は、参照ピクチャの1/4画素位置、1/8画素位置、または他の分数画素位置の値を補間し得る。したがって、動き推定ユニット342は、全画素位置および分数画素位置に対する動き探索を実行し得、分数画素の精度で動きベクトルを出力し得る。
【0050】
動き推定ユニット342は、PUの位置を参照ピクチャの予測ブロックの位置に対して比較することによって、インターコード化スライスの中のビデオブロックのPUに関する動きベクトルを算出する。参照ピクチャは、第1の参照ピクチャリスト(たとえば、リスト0)、第2の参照ピクチャリスト(たとえば、リスト1)、または第3の参照ピクチャリスト(たとえば、リストC)の中から選択され得、それらの各々は、参照フレームメモリ364に記憶されている1つまたは複数の参照ピクチャを識別する。参照ピクチャは、空間的および/または時間的にPUに隣接するブロックの動き情報に基づいて選択され得る。選択された参照ピクチャは、参照インデックスによって識別され得る。動き推定ユニット342は、算出された動きベクトルおよび/または参照インデックスを、エントロピー符号化ユニット356および/または動き補償ユニット344へ送る。
【0051】
加えて、動き推定ユニット342は、シーケンス(たとえば、左画像および右画像)の中で受信された2つの画像を比較し、受信された画像の中の各部分(たとえば、各画素、画素の各グループなど)に関する視差値を、本明細書で説明するような方式で決定することによって、視差マップを生成する。たとえば、視差値は、2つの画像の間の動きを分析することによって決定され得る。動き推定ユニット342は、視差マップをアップスケールして深度マップを生成することができる。
【0052】
動き補償ユニット344によって実行される動き補償は、動き推定ユニット342によって決定される動きベクトルに基づいて、予測ブロックをフェッチまたは生成することを伴い得る。現在のビデオブロックのPUに関する動きベクトルを受信すると、動き補償ユニット344は、参照ピクチャリストのうちの1つの中で動きベクトルが指し示す予測ブロックの位置を特定し得る。加算器350は、コーディングされている現在のビデオブロックの画素値から予測ブロックの画素値を減算することによって残差ビデオブロックを形成し、以下に説明するような画素差分値を形成する。いくつかの実施形態では、動き推定ユニット342は、ルーマ成分に対して動き推定を実行することができ、動き補償ユニット344は、ルーマ成分に基づいて算出される動きベクトルをクロマ成分とルーマ成分の両方のために使用することができる。モード選択ユニット340は、ビデオスライスのビデオブロックを復号する際にデコーダ230によって使用するための、ビデオブロックおよびビデオスライスに関連したシンタックス要素を生成し得る。
【0053】
イントラ予測ユニット346は、いくつかの実施形態では、動き推定ユニット342および動き補償ユニット344によって実行されるインター予測への代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット346は、現在のブロックを符号化するために使用するべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット346は、様々なイントラ予測モードを使用して(たとえば、別個の符号化パスの間に)、現在のブロックを符号化し得、イントラ予測ユニット346(または、いくつかの例では、モード選択ユニット340)は、テストされたモードの中から使用するべき適切なイントラ予測モードを選択し得る。
【0054】
たとえば、イントラ予測ユニット346は、テストされる様々なイントラ予測モードに対するレートひずみ分析を使用してレートひずみ値を算出し得、テストされるモードの中からレートひずみ特性が最良のイントラ予測モードを選択し得る。レートひずみ分析は、一般に、符号化ブロックと、符号化ブロックを生成するために符号化された、符号化されていない元のブロックとの間のひずみ(または、誤差)の量、ならびに符号化ブロックを生成するために使用されたビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット346は、どのイントラ予測モードがブロックに対して最良のレートひずみ値を示すのかを決定するために、様々な符号化ブロックに関するひずみおよびレートから比を算出し得る。
【0055】
ブロックのためのイントラ予測モードを選択した後、イントラ予測ユニット346は、ブロックのために選択されたイントラ予測モードを示す情報を、エントロピー符号化ユニット356に提供し得る。エントロピー符号化ユニット356は、選択されたイントラ予測モードを示す情報を符号化し得る。エンコーダ120は、複数のイントラ予測モードインデックステーブルおよび複数の修正イントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)を含み得る送信されるビットストリーム構成データの中に、コンテキストの各々に対して使用するための様々なブロックに関する符号化コンテキストの定義、最も考えられるイントラ予測モードの表示、イントラ予測モードインデックステーブル、および修正イントラ予測モードインデックステーブルを含め得る。
【0056】
上述されたように、エンコーダ120は、モード選択ユニット340によって提供される予測データをコーディングされている元のビデオブロックから減算することによって、残差ビデオブロックを形成する。加算器350は、この減算動作を実行する1つまたは複数の構成要素を表す。変換処理ユニット352は、DCTまたは概念的に類似の変換(たとえば、ウェーブレット変換、整数変換、サブバンド変換など)などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換は、画素値領域からの残差情報を周波数領域などの変換領域に変換し得る。変換処理ユニット352は、得られた変換係数を量子化ユニット354へ送り得る。量子化ユニット354は、変換係数を量子化してビットレートをさらに低減する。量子化プロセスは、係数の一部または全部に関連したビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット354は、次いで、量子化変換係数を含む行列のスキャンを実行し得る。あるいは、エントロピー符号化ユニット356がスキャンを実行してよい。
【0057】
量子化の後、エントロピー符号化ユニット356が、量子化変換係数をエントロピーコーディングする。たとえば、エントロピー符号化ユニット356は、CAVLC、CABAC、SBAC、PIPEコーディング、または別のエントロピーコーディング技法を実行し得る。コンテキストベースのエントロピーコーディングの場合には、コンテキストは隣接ブロックに基づき得る。エントロピー符号化ユニット356によるエントロピーコーディングの後、符号化ビットストリームが、別のデバイス(たとえば、デコーダ230)へ送信され得、または後で送信もしくは取出しができるように保管され得る。
【0058】
逆量子化ユニット358および逆変換ユニット360は、それぞれ、逆量子化および逆変換を適用して、画素領域における残差ブロックを再構成する(たとえば、後で参照ブロックとして使用できるように)。動き補償ユニット344は、参照フレームメモリ364の中に記憶されているフレームのうちの1つの予測ブロックに残差ブロックを加算することによって、参照ブロックを算出し得る。動き補償ユニット344はまた、再構成された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定の際に使用するためのサブ整数画素値を算出し得る。加算器362は、動き補償ユニット344によって生成された動き補償された予測ブロックに、再構成された残差ブロックを加算して、参照フレームメモリ364の中に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレームの中のブロックをインターコーディングするための参照ブロックとして、動き推定ユニット342および動き補償ユニット344によって使用され得る。
【0059】
図4は、本開示で説明する態様による技法を実施し得るデコーダの一例を示すブロック図である。デコーダ230は、本開示の技法のうちのいずれかまたはすべてを実行するように構成され得る。たとえば、動き補償ユニット472は、視差マップおよび/または深度マップを生成するように構成され得る。しかしながら、本開示の態様はそのように限定されない。いくつかの例では、本開示で説明する技法は、デコーダ230の様々な構成要素の間で共有され得る。いくつかの例では、それに加えてまたはその代わりに、プロセッサ(図示せず)が本開示で説明する技法のうちのいずれかまたはすべてを実行するように構成され得る。
【0060】
図4の例では、デコーダ230は、エントロピー復号ユニット470、動き補償ユニット472、イントラ予測ユニット474、逆量子化ユニット476、逆変換ユニット478、参照フレームメモリ482、および加算器480を含む。デコーダ230は、いくつかの例では、エンコーダ120(
図3)に関して説明した符号化パスと概して相反の復号パスを実行し得る。動き補償ユニット472は、エントロピー復号ユニット470から受信される動きベクトルに基づいて予測データを生成し得、イントラ予測ユニット474は、エントロピー復号ユニット470から受信されるイントラ予測モードインジケータに基づいて予測データを生成し得る。
【0061】
復号プロセスの間、デコーダ230は、符号化された画像またはビデオスライスのブロックおよび関連したシンタックス要素を表す符号化画像ビットストリームを、エンコーダ120から受信する。デコーダ230のエントロピー復号ユニット470は、ビットストリームをエントロピー復号して、量子化係数、動きベクトル、もしくはイントラ予測モードインジケータ、および/または他のシンタックス要素を生成する。エントロピー復号ユニット470は、動きベクトルおよび他のシンタックス要素を動き補償ユニット472に転送する。デコーダ230は、画像、ビデオスライスレベル、および/またはブロックレベルにおけるシンタックス要素を受信し得る。
【0062】
画像またはビデオスライスがイントラコード化(I)スライスとしてコーディングされるとき、イントラ予測ユニット474は、シグナリングされたイントラ予測モードおよび現在のフレームまたはピクチャの前に復号されたブロックからのデータに基づいて、現在の画像またはビデオスライスのブロックに関する予測データを生成し得る。画像またはフレームがインターコード化(たとえば、B、P、またはGPB)スライスとしてコーディングされるとき、動き補償ユニット472は、エントロピー復号ユニット470から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックに関する予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つの中の参照ピクチャのうちの1つから生成され得る。デコーダ230(たとえば、動き補償ユニット472)は、参照フレームメモリ482に記憶されている参照ピクチャに基づくデフォルトの構成技法を使用して、参照フレームリスト、すなわち、リスト0、リスト1、および/またはリストCを構成し得る。動き補償ユニット472は、動きベクトルおよび他のシンタックス要素を構文解析することによって、現在のビデオスライスのビデオブロックに関する予測情報を決定し、予測情報を使用して、復号されている現在のビデオブロックに関する予測ブロックを生成する。たとえば、動き補償ユニット472は、受信されたシンタックス要素のうちのいくつかを使用して、ビデオスライスのブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)、スライスに関する参照ピクチャリストのうちの1つまたは複数に関する構成情報、画像もしくはスライスの各インターコード化ブロックに関する動きベクトル、画像もしくはスライスの各インターコード化ブロックに関するインター予測条件、および/または現在の画像もしくはビデオスライスの中のブロックを復号するための他の情報を決定する。
【0063】
加えて、動き補償ユニット472は、シーケンス(たとえば、左画像および右画像)の中で受信された2つの画像を比較し、受信された画像の中の各部分(たとえば、各画素、画素の各グループなど)に関する視差値を、本明細書で説明するような方式で決定することによって、視差マップを生成する。たとえば、視差値は、2つの画像の間の動きを分析することによって決定され得る。動き補償ユニット472は、視差マップをアップスケールして深度マップを生成することができる。
【0064】
動き補償ユニット472はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット472は、ビデオブロックの符号化の間にエンコーダ120によって使用されるような補間フィルタを使用して、参照ブロックのサブ整数画素に対して補間された値を算出し得る。この場合、動き補償ユニット472は、エンコーダ120によって使用された補間フィルタを、受信されたシンタックス要素から決定し得、その補間フィルタを使用して予測ブロックを生成し得る。
【0065】
逆量子化ユニット476は、ビットストリームの中で提供されエントロピー復号ユニット470によって復号された量子化変換係数を逆量子化(たとえば、de quantize)する。逆量子化プロセスは、量子化の程度と、同じく適用されるべき逆量子化の程度とを決定するために、ビデオスライスの中の各ビデオブロックに対してエンコーダ120によって算出される量子化パラメータQP
Yを使用することを含み得る。
【0066】
逆変換ユニット478は、逆変換(たとえば、逆DCT)、逆整数変換、または概念的に類似の逆変換プロセスを変換係数に適用して、画素領域における残差ブロックを生成する。
【0067】
場合によっては、逆変換ユニット478は、2次元(2D)逆変換(水平方向と垂直方向の両方での)を係数に適用し得る。本開示の技法によれば、逆変換ユニット478は、代わりに、TUの各々の中の残差データに、水平1D逆変換、垂直1D逆変換を適用してよく、または変換を適用しなくてもよい。適切なタイプの逆変換を変換係数に適用するために、エンコーダ120において残差データに適用された変換のタイプが、デコーダ230にシグナリングされ得る。
【0068】
動き補償ユニット472が動きベクトルおよび他のシンタックス要素に基づいて現在のブロックに関する予測ブロックを生成した後、デコーダ230は、逆変換ユニット478からの残差ブロックを動き補償ユニット472によって生成される対応する予測ブロックと加算することによって、復号ビデオブロックを形成する。加算器480は、この加算動作を実行する1つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために、デブロッキングフィルタも適用されて復号ブロックをフィルタ処理してよい。他のループフィルタ(コーディングループの中の、またはコーディングループの後の)も、画素遷移を平滑化し、または別のやり方でビデオ品質を改善するために使用されてよい。所与のフレームまたはピクチャの中の復号ビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ482に記憶される。参照フレームメモリ482はまた、後で
図1のイメージデバイス123または
図2の画像ディスプレイ232などのディスプレイデバイス上で提示できるように、復号ビデオを記憶する。
【0069】
深度マップの計算
本明細書で開示する技法は、エンコーダ120などのエンコーダに関して説明される。しかしながら、これは限定されることを意味しない。類似の結果を達成するために、同じ技法がデコーダ230などのデコーダによって使用され得る。
【0070】
エンコーダ120などのエンコーダは、未加工のビデオフレームを標準的な圧縮フォーマットに変換する。圧縮プロセスは、インターコード化フレームに対して画素関連/ブロック関連の動きを計算する、動き検出アルゴリズムによって補助される。上記で説明したように、インターコード化フレームは、2つのタイプ、すなわち、PフレームおよびBフレームであり得る。Pフレームは、前のイントラコード化フレーム(Iフレーム)を参照する順方向の動き値を含む。Bフレームは、前および次のイントラコード化フレームを参照する双方向の動き値を含む。イントラコード化フレームは、空間的に符号化される。イントラコード化フレームは、ストリームの中のいかなる動き値またはいかなる他のフレームにも関連しない。インターコード化フレームの中の動き値は、2つのビデオフレームの間の視差すなわち差分である。一実施形態では、普通の2Dビデオストリーム(たとえば、単一のカメラを使用して取り込まれる画像)が、3Dビデオストリーム(たとえば、2つのカメラを使用して取り込まれる画像)の交互配置された左(L)ビューおよび右(R)ビューを含むビデオストリームと置き換えられる場合、動き値は、LフレームおよびRフレームの各ペアの間の視差(たとえば、LフレームとRフレームとの間の空間的な向きの差分)を表す。
【0071】
エンコーダは、交互配置されたステレオビデオの互い違いのフレームを、IフレームおよびPフレームとして符号化するように構成され得る。
図5は、フレームのシーケンシングを示す。
図5に示すように、シーケンスは、4つのフレーム、すなわち、L
1 502、R
1 504、L
2 506、およびR
2 508を含む。簡単のために、4つのフレームのみが示されるが、本明細書で説明する技法は任意の数のフレームに適用される。一実施形態では、L
1 502がエンコーダ120によって受信される最初のフレームであり、R
2 508がエンコーダ120によって受信される最後のフレームである。Lフレーム(たとえば、L
1 502およびL
2 506)は、Iフレームとして符号化され、Rフレーム(たとえば、R
1 504およびR
2 508)は、Pフレームとして符号化される。したがって、エンコーダ120によって受信されるようなフレームのシーケンスは、IフレームとPフレームとの間で互い違いになる。このことは、視差値が算出され得ることを確実にする助けとなる。
【0072】
図6は、深度計算フローを示す。
図6に示すように、エンコーダ120は、フレームのシーケンスL
1 502、R
1 504、L
2 506、およびR
2 508をデータ608として受信する。一実施形態では、エンコーダ120は、Pフレームが主としてインターコード化マクロブロック(MB)を有するように、高ビットレート設定に設定される。一例として、最小MBサイズは8×8であり得る。インターコード化マクロブロックが、対応する後方のLフレームを参照する動きベクトル情報を含むので、Rフレームの中にできるだけ多くのインターコード化マクロブロックを有することが望ましくあり得る。
【0073】
エンコーダ120は、動きベクトル情報をMBからデータ610として抽出することができ(ボックス602によって表される)、インターコーディングおよびイントラコーディングされたブロックが、ダウンサンプリングされた深度マップ620の中に図式的に表され得る。図示されないが、ダウンサンプリングされた深度マップ620の中の黒いブロックは、イントラコード化ブロックを表し得る。LフレームとRフレームとの間に整合が見出され得ない場合、イントラコード化ブロックは、閉塞領域または暴露領域において共通であり得る。
【0074】
一実施形態では、X方向でのMB動きは、2つのステレオフレーム(深度マップに変換され得る)の間のブロック関連の視差を近似的に表すことができる。MBサイズが小さければ小さいほど、深度マップの解像度は高くなる。MBフレームは、さらに、メディアンフィルタリング(たとえば、5×5メディアンフィルタ)などの改善によって、イントラコード化パッチと雑音の多い深度値とが取り除かれ得る(ボックス604によって表される)。一例では、最小MBサイズが8×8画素であるので、MB動き画像は、元の入力フレームと比較して8倍にダウンサンプリングされる。向上アルゴリズムを適用するために、画像は8倍(または、別の類似の値)にアップサンプルされなければならないことがある。
【0075】
アップスケーリングはボックス606によって表される。一実施形態では、エンコーダ120は、深度マップ620の画素を反復することによって深度マップ620をアップスケールする。エンコーダ120は、フィルタカーネルのサイズ、フィルタ処理されている画素のカーネルの中心からの空間的距離(たとえば、s
d)、ならびに/またはフィルタ処理されている画素において計算される視差の勾配およびフィルタ処理されている画素において計算される画像のカラー成分の勾配(たとえば、i
d)を使用することによって、各画素向けの深度フィルタを決定し得る。深度フィルタは、2つのガウシアン成分、すなわち、空間的成分(たとえば、-e
-(sd*sd)/λs)、ならびに画像のカラーおよび深度値の勾配成分(たとえば、e
-(id*id)/λc)の積であり得、ここで、λ
sおよびλ
cが対応するガウシアンカーネルの分布係数を決定し得る。エンコーダ120は、前にフィルタ処理された深度マップに複数回のフィルタ処理の繰返しを実行して、深度マップを改善し得る。別の実施形態では、エンコーダ120は、センサー入力を使用して深度マップ620をアップスケールする。たとえば、エンコーダ120は、単純な双線形アップスケールを使用して初期推定値を作り出し得る。エンコーダ120は、初期推定での深度遷移を識別し、遷移において補外を使用して深度値を埋め、埋められた深度値を平滑化し得る(たとえば、深度遷移における深度値の差分を低減する)。アップスケーリングの結果は、より少数の黒いブロックを含むとともにダウンサンプリングされた深度マップ620のアップサンプリングされたバージョンである深度マップ624によって、図式的に表され得る。
【0076】
ボックス606によって表されエンコーダ120によって実行されるアップスケーリングは、いくつかの利点を有し得る。たとえば、ステレオ画像からの深度マップ計算は、計算量を多く必要とするプロセスであり得る。本明細書で説明するプロセスを使用すると、エンコーダ120がより小さい画像を処理し、または疎な(たとえば、ダウンサンプリングされた)深度マップを生成する場合、エンコーダ120は、計算リソース使用量を低減し処理速度を増大させることができる。加えて、不正確である場合、アップスケールされた深度マップは、深度マップのセグメント化および最終の向上品質に影響を及ぼし得る。したがって、本明細書で説明するプロセスを使用すると、エンコーダ120は、一般的なアップスケーリングプロセスを使用するエンコーダと比較して、深度マップのセグメント化および/または最終の向上品質を改善することができる。
【0077】
一実施形態では、エンコーダ120によって生成される深度マップは、一般的なアップスケーリングプロセスを使用して生成される深度マップよりも、向上品質が高い。グランドトゥルース深度マップ(たとえば、理想的な深度マップ)は、エンコーダ120によって生成される深度マップよりも向上品質が高くなり得るが、エンコーダ120は、グランドトゥルース深度マップを生成するときに使用されることになるものよりも少数のサンプル(たとえば、1/256のサンプル数)を使用してよい。
【0078】
深度マップを使用する画像向上の実行
一実施形態では、深度マップ624などの深度マップは、ステレオ画像またはステレオビデオを向上させるために使用され得る。たとえば、深度マップ624は、シーンの中のエッジ向上(たとえば、シーンの中のオブジェクトを鮮明にすること)を実証するために使用され得る。別の例として、深度マップ624は、シーンの中のコントラストを調整し、シーンの中のカラーを変更し、シーンの中の幾何学的形状を変更し、および/または類似のことをするために使用され得る。エッジ向上は、シーンの中のオブジェクトの深度に基づいて強度を変化させ得る。一実施形態では、カーソルを使用してピクチャの中のオブジェクトを選択するという発想である。アルゴリズムは、深度マップに基づいてオブジェクトまたは領域を画像の残部から分離して取り出し、深度に基づいて異なる程度の向上または異なるフィルタを適用する。
【0079】
図7は、画像を向上させるためのフローを示す。
図7に示すように、画像702が、プロセッサ122によって、向上された画像708に向上される。画像702の一部分が点710において選択される。プロセッサ122は、選択に応答して、またはもっと前の時間における深度マップ704の生成に応答して、深度マップ704をエンコーダ120から取り出すことができる。一例として、点710における画像702の深度値はDである。Dを中心として±Δとしてのしきい値が、プロセッサ122によって設定され得る。しきい値±Δは、あるいは、最大深度範囲に基づいてプロセッサ122によって計算されてもよい。
【0080】
サイズN×Nのブラシストローク(または、類似の形状)を使用すると、プロセッサ122は、点710から始めてD±Δ(たとえば、Dプラスまたはマイナスしきい値)としての深度を有する画像702の連続部分を識別することによって、点710を取り囲む領域Rを拡大することができる。一実施形態では、領域Rは任意の形態または形状をなしてよい。
【0081】
いくつかの実施形態では、プロセッサ122は、D±Δとしての深度以外の深度を有する画像702の一部分に到達すると、領域Rをある方向に拡大するのをやめる。他の実施形態では、プロセッサ122は、領域Rが事前設定された境界条件に達すると、領域Rをある方向に拡大するのをやめる。さらに他の実施形態では、プロセッサ122は、領域Rの境界が点710からいくらかの距離に到達すると、領域Rをある方向に拡大するのをやめる。
【0082】
プロセッサ122は、次いで、プロセッサ122が領域Rを拡大するのをやめると、領域R内の画像702の部分を向上させることができる。たとえば、領域R内の部分は、高域フィルタを使用することによって向上され得る。領域Rの外側の画像の部分は、深度Dと画像702のそれぞれの部分の深度との間の差分に比例するガウシアンブラー(gaussian blur)を使用することによって平滑化(または、不鮮明に)されてよい。別の例として、領域R内の部分は、領域R内の画素のカラーを修正することによって向上されてよい。別の例として、領域R内の部分は、切り取られてよく、および/または画像702の別の部分に移動されてよい。
図7に示すように、深度マップ706の白い部分は、点710が選択されているときの領域Rの形状およびサイズを表す。同様に、画像708の中の領域712は、点710が選択されているときの領域Rの形状およびサイズを概略的に表す。領域714は、点710が選択されているときの領域Rの外側の画像708のエリアを概略的に表す。
【0083】
図8は、画像を向上させるための別のフローを示す。
図8に示すように、画像702の相異なる近接しない部分が、(しきい値内の)同じ深度値を有し得る。たとえば、深度マップ802の白い部分はすべて、しきい値内の同じ深度値を有する。しかしながら、深度マップ802の中の白い部分の間にギャップがあるので、白い部分のすべてがプロセッサ122によって向上されるとは限らない。
図7に関して上記で説明したように、点710が画像702の中で選択される。したがって、画像702のいくつかの部分は、しきい値内の同じ深度値を含むが、点710に近接するとともに点710における深度のしきい値内の深度値を有する画素を含む画像702の部分だけが向上される(たとえば、エッジが深度マップ802の中に到達する点まで、点710を取り囲む画像702の部分が向上される)。深度マップ706は、そのような基準を満たす画像702の部分を示す。したがって、画像708の領域712は向上され、画像708の他の部分は、そのままにされるか、または劣化されるかのいずれかである。
【0084】
例示的なユースケース
図9は、例示的な元の画像902を示す。
図10Aは、
図9における元の画像902に基づいて、エンコーダ120によって計算され得る深度マップ1002を示す。
図10Bは、改善およびアップスケール(たとえば、0〜255スケールまで)された後の深度マップ1002を示す。
【0085】
図11〜
図13は、本明細書で説明するような変倍された深度マップ1002を使用して向上される様々な画像を示す。
図11に示すように、点1104が選択され、点1104に近接するとともに深度値をしきい値内で共有する画素が向上される。点1106および画像902の他の部分は劣化される。
【0086】
図12に示すように、点1106が選択され、点1106に近接するとともに深度値をしきい値内で共有する画素が向上される。点1104および画像902の他の部分は劣化される。
【0087】
図13に示すように、点1308が選択され、点1308に近接するとともに深度値をしきい値内で共有する画素が向上される。点1104および1106ならびに画像902の他の部分は劣化される。
【0088】
図14は、画像を向上させるための例示的な方法1400を示す。方法1400は、ポータブル電子デバイスの1つまたは複数の構成要素によって実行され得る。たとえば、方法1400は、たとえば、エンコーダ120(たとえば、動き推定ユニット342)、デコーダ230(たとえば、動き補償ユニット472)および/またはプロセッサ122によって実行され得る。いくつかの実施形態では、他の構成要素が、本明細書で説明するステップのうちの1つまたは複数を実施するために使用され得る。
【0089】
ブロック1402において、メモリユニットに記憶されている左画像および右画像が取り出される。一実施形態では、左画像および右画像は、それぞれ同じシーンを表現する。ブロック1404において、左画像と右画像との間の空間的な向きの差分に基づく深度マップが決定される。
【0090】
ブロック1406において、左画像または右画像の、ユーザによって選択されている部分が識別される。ブロック1408において、ユーザによって選択されている部分を取り囲む向上領域が、決定された深度マップに基づいて決定される。ブロック1410において、向上領域が向上される。
【0091】
例に応じて、本明細書で説明される技法のいずれかのいくつかの行為またはイベントは異なる順序で実行されてもよく、一緒に追加され、統合され、または省略されてもよい(たとえば、説明される行為またはイベントのすべてが技法の実施のために必要とは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、順次的にではなく、たとえばマルチスレッド処理、割り込み処理、またはマルチプロセッサを通じて同時に実行され得る。
【0092】
1つまたは複数の例では、説明される機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶され、またはコンピュータ可読媒体を介して送信されてよく、かつハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に相当するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的な有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に相当し得る。データ記憶媒体は、本開示で説明した技法を実装するための命令、コード、および/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であってよい。コンピュータプログラム製品はコンピュータ可読媒体を含んでよい。
【0093】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形式の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。また、任意の接続が、適切にコンピュータ可読媒体と呼ばれる。たとえば、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイディスクを含み、ディスク(disk)は通常、磁気的にデータを再生し、ディスク(disc)はレーザーで光学的にデータを再生する。上記のものの組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【0094】
命令は、1つもしくは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の集積論理回路もしくは個別論理回路のような、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または本明細書で説明される技法の実装に適した任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本明細書で説明される機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/もしくはソフトウェアモジュール内に備えられてよく、または複合コーデックに組み込まれてよい。また、技法は、1つまたは複数の回路または論理要素で完全に実装されてよい。
【0095】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。様々なコンポーネント、モジュール、またはユニットが、開示される技法を実行するように構成されるデバイスの機能的態様を強調するために、本開示において説明されるが、必ずしも異なるハードウェアユニットによる実現を必要としない。そうではなくて、上で説明されたように、様々なユニットは、コーデックハードウェアユニットの中で組み合わされてよく、または適切なソフトウェアおよび/もしくはファームウェアとともに、前述のような1つもしくは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合によって提供されてよい。様々な例が説明された。これらおよび他の例は以下の特許請求の範囲内に入る。