(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-05-02
(54)【発明の名称】イマーシブビデオ符号化のための高レベルシンタックス
(51)【国際特許分類】
H04N 19/70 20140101AFI20220422BHJP
H04N 19/597 20140101ALI20220422BHJP
H04N 19/85 20140101ALI20220422BHJP
【FI】
H04N19/70
H04N19/597
H04N19/85
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021548154
(86)(22)【出願日】2020-03-17
(85)【翻訳文提出日】2021-08-17
(86)【国際出願番号】 US2020023122
(87)【国際公開番号】W WO2020190928
(87)【国際公開日】2020-09-24
(32)【優先日】2019-03-19
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ボイス,ジル
(72)【発明者】
【氏名】ドミトリチェンコ,マックス
(72)【発明者】
【氏名】ディヴェカール,アトゥール
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159LA02
5C159MA04
5C159MA05
5C159MA32
5C159MC11
5C159ME01
5C159NN41
5C159PP03
5C159PP13
5C159RC11
5C159SS09
5C159UA02
5C159UA05
(57)【要約】
シーンの多重テクスチャおよび深度ビューを含むイマーシブビデオの符号化に関連する技術が説明される。そうした技術は、符号化の以前に区分ごとの線形マッピングを使用して深度ビューのビット深さを低減すること、区分ごとの線形マッピングを使用して、復号された低ビット深さ深度ビューを高ビット深さへ逆マッピングすること、および、イマーシブビデオに対応するカメラパラメータを効率的に符号化および復号すること、を含む。
【特許請求の範囲】
【請求項1】
イマーシブビデオデータを符号化するための方法であって、
第1ビット深さでの第1深度値を有する第1深度ビューを受信するステップであり、
前記第1ビット深さは、第1最小深度値から第1最大深度値までの値の第1利用可能範囲を含む、
ステップと、
第2深度ビューを生成するために、前記第1深度値を、前記第1ビット深さよりも小さい第2ビット深さでの第2深度値へマッピングするステップであり、
前記第2ビット深さは、第2最小深度値から第2最大深度値までの値の第2利用可能範囲を含み、
前記マッピングのためのラインセグメントを画定するために、第1ラインセグメントエンドポイントおよび第2ラインセグメントエンドポイントを使用し、
前記第1ラインセグメントエンドポイントの水平成分および垂直成分は、前記第1最小深度値および是第2最小深度値を、それぞれに、超える、
ステップと、
第2深度ビュー、並びに、前記第1ラインセグメントエンドポイントおよび前記第2ラインセグメントエンドポイントを、ビットストリームへと符号化するステップと、
を含む、方法。
【請求項2】
前記第2ラインセグメントエンドポイントの水平成分および垂直成分は、それぞれに、前記第1最大深度値および前記第2最大深度値よりも小さい、
請求項1に記載の方法。
【請求項3】
前記第1ラインセグメントエンドポイントおよび前記第2ラインセグメントエンドポイントは、前記マッピングの第1ラインセグメントを画定し、
前記マッピングは、さらに、前記第2ラインセグメントエンドポイントおよび第3ラインセグメントエンドポイントによって画定される第2ラインセグメントを含む、
請求項1または2に記載の方法。
【請求項4】
前記第1ラインセグメントは、第1スロープを有し、かつ、
前記第2ラインセグメントは、前記第1ラインセグメントに対する第1深度値ピクセルカウントが前記第2ラインセグメントに対する第2深度値ピクセルカウントを超えていることに応答して、前記第1スロープよりも小さい第2スロープを有する、
請求項3に記載の方法。
【請求項5】
前記方法は、さらに、
前記マッピングの少なくとも前記第1ラインセグメントおよび前記第2ラインセグメントを決定するステップ、を含み、
前記決定は、
前記第1深度ビューの少なくとも一部を使用して、深度値範囲ごとの深度値ピクセルカウントのヒストグラムを生成するステップと、
前記マッピングおよび逆マッピングに対応する再構成誤差を最小化するために、前記第1ラインセグメントおよび前記第2ラインセグメントを含む前記マッピングについて、複数のラインセグメントを再帰的に生成するステップと、
によって行われる、
請求項3または4に記載の方法。
【請求項6】
前記方法は、さらに、
前記第1深度ビューのエッジ領域を決定するステップを含み、
前記深度値ピクセルカウントのヒストグラムは、前記エッジ領域内のピクセルを使用し、かつ、前記エッジ領域外のピクセルを除外して、生成される、
請求項5に記載の方法。
【請求項7】
イマーシブビデオデータを復号するための方法であって、
第1ビット深さでの第1深度値を有する第1深度ビュー、および、前記第1深度ビューを第2深度ビューにマッピングするための第1ラインセグメントエンドポイントおよび第2ラインセグメントエンドポイント、を決定するためにビットストリームを復号化するステップであり、
前記第1ビット深さは、第1最小値から第1最大値までの値の第1利用可能範囲を含む、
ステップと、
第2深度ビューを生成するために、前記第1ラインセグメントエンドポイントおよび前記第2ラインセグメントエンドポイントを使用して、第1深度値を第2深度値にマッピングするステップであり、
第2深度値は、前記第1ビット深さよりも大きい第2ビット深さであり、
前記第2ビット深さは、第2最小値から第2最大値までの値の第2利用可能範囲を含み、
前記第1ラインセグメントエンドポイントの水平成分および垂直成分は、それぞれに、前記第1最小値および前記第2最小値を超えている、
ステップと、
前記第2深度ビューに基づいて、合成ビューを生成するステップと、
を含む、方法。
【請求項8】
前記第2ラインセグメントエンドポイントの水平成分および垂直成分は、それぞれに、前記第1最大値の深度値および前記第2最大値の深度値より小さい、
請求項7に記載の方法。
【請求項9】
前記第1ラインセグメントエンドポイントおよび前記第2ラインセグメントエンドポイントは、前記マッピングの第1ラインセグメントを画定し、
前記マッピングは、さらに、前記第2ラインセグメントエンドポイントおよび第3ラインセグメントエンドポイントによって画定される第2ラインセグメントを含む、
請求項7または8に記載の方法。
【請求項10】
前記第1ラインセグメントは、第1スロープを有し、かつ、
前記第2ラインセグメントは、前記第1スロープよりも小さい第2スロープを有する、
請求項9に記載の方法。
【請求項11】
前記方法は、さらに、
前記ビットストリームから前記第1深度ビューおよび前記第2深度ビューに対応するテクスチャビューを復号するステップであり、
前記合成ビューは、前記テクスチャビューに基づいて生成される、
ステップ、を含む、
請求項7乃至10いずれか一項に記載の方法。
【請求項12】
イマーシブビデオデータを符号化するための方法であって、
イマーシブビデオ生成またはキャプチャに対応しているカメラアレイに係る複数のカメラそれぞれについてカメラ投影モードを決定するステップと、
前記カメラについてカメラ投影モードフラグを生成するステップであり、
前記カメラ投影モードフラグは、特定の投影モードを有する前記カメラそれぞれに応答する第1値、および、前記特定の投影モード以外の投影モードを有する前記カメラのいずれかに応答する第2値を有している、
ステップと、
前記カメラ投影モードフラグをビットストリームへと符号化するステップと、
を含む、方法。
【請求項13】
前記第1値を有している第1カメラ投影モードフラグに応答して、前記ビットストリームは、さらに、前記特定の投影モードを示す単一カメラ投影モードインジケータを含む、
請求項12に記載の方法。
【請求項14】
前記第2値を有している前記カメラ投影モードフラグに応答して、前記ビットストリームは、さらに、前記カメラそれぞれについて1つである、複数のカメラ投影モードインジケータを含む、
請求項12に記載の方法。
【請求項15】
前記方法は、さらに、
前記カメラそれぞれによって達成可能な最小物理的深さおよび最大物理的深さを決定するステップと、
前記カメラについて物理的深さフラグを生成するステップであり、
前記物理的深さフラグは、前記カメラが、共有された最小物理的深さ、及び/又は、共有された最大物理的深度を有するか否か、を示す、
ステップと、
前記物理的深さフラグを、前記ビットストリームへと符号化するステップと、
を含む、請求項12乃至14いずれか一項に記載の方法。
【請求項16】
前記方法は、さらに、
前記カメラそれぞれについて、ヨー、ピッチ、およびロールのパラメータ、または、クォータニオンパラメータのうち1つを決定するステップと、
前記カメラについて、ヨー、ピッチ、およびロールのフラグ、または、クォータニオンフラグを生成するステップであり、
ヨー、ピッチ、およびロールの前記フラグ、または、前記クォータニオンフラグは、前記カメラが、共有のヨー、ピッチ、およびロールのパラメータ、または、共有のクォータニオンパラメータを有するか否かを示す、
ステップと、
ヨー、ピッチ、およびロールの前記フラグ、または、前記クォータニオンフラグを、前記ビットストリームへと符号化するステップと、
を含む、請求項12乃至15いずれか一項に記載の方法。
【請求項17】
前記方法は、さらに、
前記カメラ間の共有物理的間隔を表す、共有物理的間隔値を決定するステップと、
前記共有物理的間隔値を、前記ビットストリームへと符号化するステップと、
を含む、請求項12乃至16いずれか一項に記載の方法。
【請求項18】
イマーシブビデオデータを復号化するための方法であって、
深度ビュー、テクスチャビュー、および、カメラアレイの複数のカメラに対応するカメラ投影モードフラグを決定するためにビットストリームの復号するステップであり、
前記カメラ投影モードフラグは、前記カメラの全てが特定の投影モードを有することを示す第1値、または、前記カメラのいずれかが前記特定の投影モード以外の投影モードを有することを示す第2値を有している、
ステップと、
前記深度ビュー、前記テクスチャビュー、および、前記カメラ投影モードフラグの深度ビューに基づいて、復号されたビューを生成するステップと、
を含む、方法。
【請求項19】
前記第1値を有する前記カメラ投影モードフラグに応答して、前記ビットストリームは、さらに、前記特定の投影モードを示す単一カメラ投影モードインジケータを含む、
請求項18に記載の方法。
【請求項20】
前記第2値を有する前記カメラ投影モードフラグに応答して、前記ビットストリームは、さらに、前記カメラそれぞれについて1つである、複数のカメラ投影モードインジケータを含む、
請求項18に記載の方法。
【請求項21】
前記ビットストリームは、さらに、前記カメラについて物理的深さフラグを含み、
前記物理的深さフラグは、前記カメラが、共有される最小の物理的深さ、及び/又は、共有される最大の物理的深さ、を有するか否かを示す、
請求項18乃至20いずれか一項に記載の方法。
【請求項22】
前記ビットストリームは、さらに、前記カメラについてヨー、ピッチ、およびロールフラグ、または、クォータニオンフラグを含み、
前記ヨー、ピッチ、およびロールフラグ、または、前記クォータニオンフラグは、前記カメラが共有ヨー、ピッチ、およびロールパラメータ、または、共有クォータニオンパラメータを有するか否かを示す、
請求項18乃至21いずれか一項に記載の方法。
【請求項23】
前記ビットストリームは、さらに、共有物理的間隔値を含み、かつ、
前記方法は、さらに、
前記共有物理的間隔値を使用して、前記カメラ間の物理的間隔を決定するステップ、を含む、
請求項18乃至22いずれか一項に記載の方法。
【請求項24】
メモリと、
請求項1乃至23いずれか一項に記載の方法を実行するための1つ以上のプロセッサと、
を含む、システム。
【請求項25】
複数の命令を含む少なくとも1つのマシンで読取り可能な媒体であって、
コンピューティングデバイスで命令が実行されることに応答して、請求項1乃至23いずれか一項に記載の方法を前記コンピューティングデバイスに実行させる、
マシンで読取り可能な媒体。
【発明の詳細な説明】
【背景技術】
【0001】
圧縮/解凍(compression/decompression)(コーデック(codec))システムにおいては、圧縮効率とビデオ品質が重要な性能基準である。例えば、視覚品質は、多くのビデオアプリケーションにおけるユーザ体験の重要な側面であり、そして、圧縮効率は、ビデオファイルを保管するのに必要なメモリストレージの量、及び/又は、ビデオコンテンツを伝送かつ/あるいはストリームするために必要な帯域幅の量に影響を与える。ビデオエンコーダ(video encoder)は、所与の帯域幅にわたりより多くの情報を送信することができるように、または、所与のメモリ空間等に保管することができるように、ビデオ情報を圧縮する。圧縮された信号またはデータは、次いで、ユーザに表示するために、信号またはデータを復号または解凍するデコーダ(decoder)によって復号される。大部分の実装においては、より大きな圧縮を用いる高い視覚品質が望ましい。
【0002】
開発中のMPEG 3DoF+規格といった、イマーシブ(immersive)ビデオおよび3Dビデオ符号化規格は、シーンのテクスチャと深さ表現の両方を符号化(encode)し、そして、コード化深さ(coded depth)を利用して、ビュー補間(view interpolation)(ビュー合成(view synthesis)としても呼ばれるもの)を通して中間ビュー位置をレンダリングする。従来の(legacy)2Dビデオ符号化規格は、テクスチャと深さを別々に符号化するために使用することができる。最も一般的に使用されるビデオ符号化規格は、8ビットまたは10ビットの入力画像しかサポートできないが、多くの深さ表現は16ビット表現を有する。さらに、高レベルのシンタックス(syntax)が、符号化効率のために必要とされる。これらおよび他の考慮事項に関して、現在の改善が必要とされている。そうした改善は、イマーシブおよび3Dビデオを符号化および復号化したいという要望がより広く普及すると、重要になり得る。
【0003】
この出願は、2019年3月19日に出願され、タイトルが“HIGH LEVEL SYNTAX FOR IMMERSIVE VIDEO CODING”である米国仮特許出願第62/820760号について優先権を主張し、その全体が参照により包含されている。
【図面の簡単な説明】
【0004】
ここにおいて説明されている資料は、例示として示されるものであり、そして、添付の図面に限定されるものではない。説明を簡潔かつ明瞭にするために、図中に示されている要素は、必ずしも縮尺通りに描かれていない。例えば、いくつかの要素の寸法は、明確にするために、他の要素に対して誇張されてよい。さらに、適切であると考えられる場合には、対応する要素または類似の要素を示すために、参照ラベルが図の間で繰り返されている。
【
図1】
図1は、イマーシブビデオデータを符号化(encoding)するための一つの例示的な符号化システムのブロック図である。
【
図2】
図2は、イマーシブビデオデータを復号(decoding)するための一つの例示的な復号化システムのブロック図である。
【
図3】
図3は、より高いビット深さ(bit-depth)の深度値(depth values)とより低いビット深さの深度値との間の、一つの例示的な区分ごとの(piece-wise)線形マッピングを示す。
【
図4】
図4は、区分ごとの線形マッピングを使用して、深度ビューのビット深さを低減するための一つの例示的なプロセスを示す。
【
図5】
図5は、深度ビューにおける深度値のピクセルカウントに基づく、区分ごとの線形マッピングの例示的な生成を示す。
【
図6】
図6は、高ビット深度値(bit-depth value)と低ビット深度値との間で深度ビューをマッピングおよび逆マッピングプするように、区分ごとの線形マッピングを定義するための一つの例示的なプロセスを示す。
【
図7】
図7は、区分ごとの線形マッピングを使用して、深度ビューのビット深さを増加させるための一つの例示的なプロセスを示す。
【
図8】
図8は、一つの例示的なコード化のためのカメラアレイおよび対応するカメラパラメータを示す。
【
図9】
図9は、カメラパラメータを含むイマーシブビデオデータを符号化するための一つの例示的なプロセスを示す。
【
図10】
図10は、カメラパラメータを含むイマーシブビデオデータを復号するための一つの例示的なプロセスを示す。
【
図11】
図11は、イマーシブビデオデータをコード化するための一つの例示的なシステム1100の説明図である。
【
図13】
図13は、本開示の少なくともいくつかの実施例に従って構成された、一つの例示的なデバイスを示す。
【発明を実施するための形態】
【0005】
1つ以上の実施形態または実装が、これから、同封の図面を参照して説明される。特定の構成および配置が説明されるが、これは例示的な目的のためにだけ行われることが理解されるべきである。当業者であれば、本説明の精神および範囲から逸脱することなく、他の構成および配置が使用され得ることを理解するだろう。ここにおいて説明される技術及び/又は配置が、また、ここにおいて説明されるもの以外の様々な他のシステムおよびアプリケーションにも使用され得ることは、当業者とって明らかであろう。
【0006】
以下の説明は、例えば、システムオンチップ(SoC)アーキテクチャといったアーキテクチャにおいて明らかにされ得る種々の実装を示しているが、ここにおいて説明される技術及び/又は構成の実装は、特定のアーキテクチャ及び/又は計算システムに限定されるものではなく、同様の目的のために任意のアーキテクチャ及び/又は計算システムによって実装され得る。例えば、多重集積回路(IC)チップ及び/又はパッケージ、及び/又は、セットトップボックス、スマートフォン、等といった種々のコンピューティングデバイス、及び/又は、コンシューマ電子デバイスを使用する種々のアーキテクチャは、ここにおいて説明される技術及び/又は構成を実装することができる。さらに、以下の説明は、論理実装、システムコンポーネントのタイプおよび相互関係、論理分割/統合選択、等の多くの特定の詳細を記載することができるが、請求される技術的事項(subject matter)は、そうした特定の詳細がなくても実施可能である。他のインスタンスでは、例えば、制御構造および完全なソフトウェア命令シーケンスといったいくつかの資料は、ここにおいて開示される資料を不明瞭にしないように、詳細には示されないことがある。
【0007】
ここにおいて開示される資料は、ハードウェア、ファームウェア、ソフトウェア、または、それらの任意の組み合わせで実装され得る。ここにおいて開示される資料は、また、1つ以上のプロセッサによって読出され、そして、実行され得る、マシンで読取り可能な媒体上に保管された命令として実装されてもよい。マシンで読取り可能な媒体は、マシン(例えば、コンピューティングデバイス)によって読取り可能な形態で情報を保管または送信するための任意の媒体及び/又はメカニズムを含み得る。例えば、マシンで読取り可能な媒体は、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリデバイス、電気、光、音響、または他の形態の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号、等)などを含み得る。
【0008】
明細書中の「1つの実装(“one implementation”)」、「実装“an implementation”」、「例示的な実装“an example implementation”」、等への言及は、説明された実装が特定の特徴、構造、または特性を含み得るが、全ての実施形態が必ずしも特定の特徴、構造、または特性を含み得るとは限らないことを示す。そのうえ、そうしたフレーズ(phrases)は、必ずしも同一の実装を意味するものではない。さらに、特定の特徴、構造、または特性が実施形態に関連して説明される場合、ここにおいて明示的に説明されているか否かにかかわらず、他の実施形態に関連して、そうした特徴、構造、または特性を実行することは当業者の知識内であることが提示されている。
【0009】
用語「実質的に(“substantially”)」、「近い(“close”)」、「概ね(“approximately”)」、および「約(“about”)」は、一般的に、目標値の+/10%内にあることを意味する。例えば、「実質的に等しい」、「ほぼ等しい」、および「概ね等しい」という用語は、それらの使用の明示的なコンテキスト(context)において特に指定しない限り、そのように説明されたものの間には偶発的なばらつきがないことを意味する。当該技術分野において、そうした変動(variation)は、典型的に、所定の目標値の+/-10%以下である。特に指定されない限り、共通のオブジェクトを説明するための、一般的な形容詞「第1(“first”)」、「第2(“second”)」、および「第3(“third”)」、等の使用は、共通のオブジェクトを説明するために、同様なオブジェクトの異なるインスタンスが参照されていることを単に示すだけであり、そして、そのように説明されたオブジェクトが、時間的に、空間的に、順位付けにおいて、または任意の他の方法のいずれかで、所与のシーケンスであることを要することを意味するように意図されてはいない。
【0010】
方法、デバイス、装置、計算プラットフォーム、および製品が、ここにおいて、イマーシブおよび3Dビデオ符号化に関連して説明される。
【0011】
説明されるように、イマーシブビデオおよび3Dビデオ符号化規格は、シーンのテクスチャ表現および深さ表現の両方を符号化(encode)し、そして、コード化深さを利用して、ビューの補間または合成を通して中間ビュー位置をレンダリングすることができる。ここで使用されるように、イマーシブビデオという用語は、シーンの複数のペアのテクスチャおよび深度ビュー(depth view)を含むビデオを意味する。従来の2Dビデオ符号化規格は、テクスチャと深さを別々に符号化するために使用することができ、そして、典型的には、8ビットまたは10ビットの入力画像をサポートする。ここにおいて説明される技術は、HEVC Main 10プロファイルといった、10ビットビデオ符号化規格で深さを符号化する以前に、16ビット表現での深度ビュー(例えば、深さイメージ、フレーム、またはマップ)の区分ごとの(piece-wise)線形マッピングを10ビット表現に適用することによって、イマーシブビデオ符号化の品質を改善する。表現を明確にするためにHEVC Main 10に関して説明したが、任意の適切なコーデック(codec)が適用されてよい。さらに、16ビットから10ビットへの表現のマッピングに関して説明されるが、入力および出力のビット深さは、任意の適切なビット深さであり得る。さらに、ビュー補間で使用される追加のカメラパラメータを効率的に記述するために、高レベルシンタックスが提供される。そうした変更は、HEVCビデオパラメータセット拡張に対して行うことができ、かつ/あるいは、3DoF+規格のサポートを示すために新しいプロファイルを提供することができる。再び、表現を明確にするためにHEVCに関して説明したが、そうした変更及び/又は新しいプロファイルは、任意の適切なコーデックに関して実施され得る。
【0012】
ここにおいて説明される技術は、開発中のMPEG 3DoF+規格のためのビデオ品質および符号化効率を改善する。しかし、テクスチャおよび深度ビューを含み、かつ、符号化され得るものよりも高いビット表現で深さが利用可能な他のイマーシブビデオコーデックスシステムに適用され得る。いくつかの実施形態においては、エンコーダで、深さ方向のビューを符号化する以前に、16ビット表現は、ビットストリームにおいて信号化された区分ごとの線形マッピングを記述しているメタデータを用いた区分ごとの線形マッピングを使用して、10ビット表現にマッピングされる。デコーダでは、10ビット深さ深度ビューを復号(decode)した後で、16ビット表現にマッピングするために逆(inverse)マッピングが実行され、16ビット表現がビュー合成のために使用される。特に、深さの10ビット表現は、深さを完全に表現するには不十分であり、ビュー合成のために深さを使用する場合には、視覚的なアーチファクトを導き得る。さらに、16ビットのビット深さを10ビットとして表現するために、最下位ビットを丸めたり捨てたりすることも、また、アーチファクトを導入する。開示される技術は、ビットストリームで信号化された区分ごとの線形マッピングを記述しているメタデータを用いる、説明された16ビットから10ビットへのマッピングを使用して、そうした問題を軽減または解決する。これは、説明される技術(例えば、開発中の3DoF+規格の一般的な試験条件)を使用して、客観的および主観的なビデオ品質の改善を結果として生じる。
【0013】
さらに、ここにおいて説明される技術は、マルチカメラのイマーシブビデオシステムにおいて、追加のカメラパラメータのメタデータを搬送するための効率的な信号伝達を提供する。いくつかの実施形態においては、3DoF+規格のサポートを示すために、新しいHEVCイマーシブプロファイルが提供されている。いくつかの実施形態においては、HEVCビデオパラメータセット(video parameter set、VPS)の修正が、地図(atlas)の使用を示すために提案されている。例えば、HEVCといったビデオコーデックで符号化される単一の画像が、複数の異なるカメラ位置からのデータを結合する多くの領域を有するように、地図が形成され得る。ルノー・ドーレ、フランク・スウダー、共著の“Outperforming 3DoF+ anchors:first evidence”、M43504、2018年7月において説明されるようにである。特に、説明される技術は、マルチカメラシステムにおいてカメラパラメータを搬送するためのオーバーヘッドを低減し、より多くのカメラ表現をビットストリームで使用することを可能にし、結果として、より高いビデオ品質を生じている。
【0014】
図1は、本開示の少なくともいくつかの実装に従って構成された、イマーシブビデオデータを符号化するための一つの例示的な符号化システム100のブロック図である。
図2は、本開示の少なくともいくつかの実装に従って構成された、イマーシブビデオデータを復号するための一つの例示的な復号化システム200のブロック図である。すなわち、
図1および
図2は、それぞれ、符号化システムおよびクライアントシステム(例えば、復号化システムまたはデコードシステム)のブロック図を示している。
【0015】
図1を参照すると、符号化システム100は、ビデオ圧縮を提供し、そして、符号化システム100は、コンピュータまたはサーバシステムなどのコンピューティングデバイスを介して実装されるビデオ符号化システムの一部であり得る。例えば、符号化システム100は、テクスチャビデオ101および選択ビュー142からの深さビデオ102、テクスチャビデオ103および選択されたビュー142のうち1つからの深さビデオ104、テクスチャビデオ105および選択されたビュー142のうち別の1つからの深さビデオ106(並びに、任意の追加のテクスチャビデオおよび他の選択されたビュー142からの深さビデオ)を含む、様々なビュー(例えば、ビューまたはシーンのビューポイントからそれぞれ)からのテクスチャおよび深さを、例えば、含んでいるビデオを受信する。
符号化システム100は、そうしたテクスチャビデオおよび深さビデオを符号化して、(以下に説明されるように)そうしたテクスチャおよび深さビデオの解凍バージョンを生成するように、デコーダによって復号され得るビットストリーム131を生成し、そして、任意的に、ベースビュー141および選択されたビュー142によって表現されるシーンの合成ビューを生成する。特に、合成されたビューは、必ずしも任意のそうしたビューに対応せず、そして、従って、符号化システム100によって符号化されないシーンのビューを表すことができる。
【0016】
例えば、テクスチャ符号化モジュール111は、テクスチャビデオ101(例えば、テクスチャビュー)を受信し、そうして、テクスチャビデオ101は、ビット深さが8ビットまたは10ビットであってよく、かつ、テクスチャ符号化モジュール111は、規格に準拠したコーデック及びプロファイルを用いてテクスチャビデオ101を符号化して、対応するビットストリームを生成することができる。同様に、テクスチャ符号化モジュール113は、ビット深さが8ビットまたは10ビットのテクスチャビデオ103を受信し、かつ、テクスチャ符号化モジュール113は、規格に準拠したコーデック及びプロファイルを用いてテクスチャビデオ103を符号化して、対応するビットストリームを生成する。そして、テクスチャ符号化モジュール115は、ビット深さが8ビットまたは10ビットのテクスチャビデオ105を受信し、かつ、符号化して、対応するビットストリームを生成する。特に、テクスチャビデオ101、103、105は、テクスチャ符号化モジュール111、113、115によって使用されるビット深さに一致するビット深さを有する。ビット深さ8または10ビットに関して説明されているが、任意の標準ビット深さが使用され得る。
【0017】
しかしながら、深さビデオ102、104、106は、標準符号化モジュールによって使用されないビット深さである。特に、深さ符号化モジュール112、114、116はまた、8または10ビットの標準ビット深さで動作するが、深さビデオ102、104、106は、16ビットといった、より高いビット深さで受信される。示されるように、深さ符号化モジュール112、114、116によって符号化される以前に、各深さビデオ102、104、106は、マッピングモジュール121、123、125によって、より高いビット深さ(例えば、16ビット)から、標準符号化プロファイル(例えば、
図1に示されている10ビットを用いた10ビットまたは8ビット)にも適合するより低いビット深さへ、それぞれに、マッピングされる。そうしたビット深さマッピングは、例えば、16ビットの深度ビューからの10ビットまたは8ビットの深度ビューを提供する。そうしたビット深さマッピングは、以下でさらに説明するように、深さビデオ102、104、106に基づいてマッピングパラメータ選択モジュール110によって選択されるマッピングパラメータ161(例えば、区分ごとの線形マッピング関数を表す線(line)セグメントのエンドポイント)に基づいて区分ごとの線形方法(linear fashion)で適用される。
【0018】
示されるように、深さビデオ122、124、126を含む結果としての深さビデオ(または、深度ビュー)は、深さビデオ102、104、106に基づいてそれぞれ生成され、そうして、深さビデオ122、124、126は、8ビットまたは10ビットの深さビデオまたは深度ビューである。ここにおいて使用されるように、深さビデオ(depth video)および深度ビュー(depth view)という用語は、ピクセル単位の深度値を含む深さフレームである、ビデオフレームを有するビデオを示すために、互換的に使用されている。すなわち、各ピクセルは、深度値を示している。そうした低いビット深さの深さビデオ122、124、126は、次いで、HEVC Main 10といった標準ベースのコーデックおよびプロファイルを用いて深さ符号化モジュール112、114、116によって符号化され、対応するビットストリームを生成する。さらに、ここにおいて使用されるように、テクスチャビュー(texture view)、テクスチャビデオ(texture video)、および同様の用語は、輝度値(luma value)および複数の明度(color value)、3つの明度、または、同様の表現を有するそれらのピクセルを伴うカラービデオを示している。例えば、そうしたテクスチャビデオは、ビデオグラフィックスアレイ(VGA)、高解像度(HD)、フルHD(例えば、1080p)、4K解像度ビデオ、8K解像度といった、任意の適切な解像度における、任意の適切なビデオフレーム、ビデオピクチャ、等を含んでよい。そうしたテクスチャビデオは、YUVといった任意の適当な色空間内にあってよい。符号化の最中に、深さビデオおよびテクスチャビデオは、符号化ユニット、予測ユニット、および変換ユニット、等へと分割され、そして、当技術分野で公知のイントラおよびインター技術を用いて符号化され得る。
【0019】
深さ符号化モジュール112、114、116(例えば、深さビデオの各代表)およびテクスチャ符号化モジュール111、113、115(例えば、テクスチャビデオの各代表)からの結果としてのビットストリームは、マルチプレクサ119によって受信され、マルチプレクサは、ストレージ、伝送、等のために、そして、最終的には、以下でさらに説明するように、デコーダによる使用のために、ビットストリームをビットストリーム131へと多重化(multiplexes)する。ビットストリーム131は、例えば、HEVCといったビデオ圧縮-解凍(コーデック(codec))標準と互換性があり得る。ここではHEVCに関して説明したが、開示される技術は、任意のコーデックに関して実装され得る。AVC(Advanced Video Coding/H.264/MPEG-4 Part10)、VVC(Versatile Video Coding/MPEG-I Part3)、VP8、VP9、Alliance for Open Media(AOMedia)Video1(AV1)、VP8/VP9/AV1ファミリー、等といったものである。符号化システム100は、任意の適切なデバイスを介して実装され得る。例えば、サーバ、パーソナルコンピュータ、ラップトップコンピュータ、タブレット、ファブレット、スマートフォン、デジタルカメラ、ゲーム機、ウェアラブルデバイス、ディスプレイ装置、オールインワンデバイス、ツーインワンデバイス、等といったものである。例えば、ここにおいて使用されるように、システム、デバイス、コンピュータ、またはコンピュータデバイスは、任意のそうしたデバイスまたはプラットフォームを含み得る。
【0020】
説明されるように、
図1の符号化システム100では、テクスチャおよび深さを伴う複数のビューが利用可能であり、テクスチャは8ビットまたは10ビット、そして、深さは16ビットである。符号化システムは、符号化するビューのサブセットを選択する。図示される実施形態においては、HEVCエンコーダが使用されている。選択されたビューに対して、テクスチャは利用可能なビット表現で符号化され、そして、深さは16ビット表現、x、から10ビット表現、y、へ変換される。従来のシステムにおいて、そうした変換は、次の等式に従って実行され得る。y=round(1024*x/65536)。代替的に、丸め(rounding)の代わりに切り捨て(truncation)が採用されてよく、そして、例えば、許容範囲外の値を避けるために、クリッピングも、また、適用され得る。次の等式、y=Clip3(0,1023,int(1024*x÷65536+0.5)といったものである。そうした従来技術は、ビット深さ低減において情報を不利に失う。
【0021】
対照的に、
図1に示されるように、符号化システム100は、深度値のいくつかの範囲が深度値の他の範囲よりも細かい粒度で表現されるように適用される、区分ごとの線形マッピングを使用して、符号化システム100におけるマッピングモジュール121、123、125を介して、深さビデオ102、104、106をより高いビット深さ(例えば、16ビット表現)からより低いビット深さ(例えば、10ビット表現)へ変換する。そうしたビット深さマッピングが、以下でさらに説明される。
【0022】
いくつかの実施形態において、符号化システム100のマッピングパラメータ選択モジュール110は、区分ごとの線形マッピングのためのパラメータを選択する。示されるように、そうしたマッピングパラメータ161は、区分ごとの線形マッピングにおける実装のために、マッピングモジュール121、123、125に対して提供されている。さらに、マッピングパラメータ161(例えば、マッピングパラメータを表すメタデータ)は、信号化され、メタデータ符号化モジュール117を介して符号化され、符号化されたビットストリームと共にマルチプレクサ119を介してビットストリーム131に多重化され、デコーダによって使用される。一つの実施形態において、ビデオビットストリームまたはシステムレイヤ内の補足拡張情報メッセージまたは他の高レベルシンタックス構造を使用して、マッピングメタデータを搬送することができる。いくつかの実施形態において、マッピングパラメータ161(例えば、マッピングメタデータ)は、ラインセグメントのエンドポイントの(x,y)座標のリストを含み、または、表している。ここで、xは深さ16ビットの表現値を表し、そして、yは変換された10ビットの表現値を表している。
【0023】
さらに、カメラアレイパラメータ151、ベースビュー141をキャプチャするために使用され、そして、選択されたビュー142、並びに、シーンの他の任意のビューが、符号化のためにカメラパラメータ符号化モジュール118に対して提供され得る。そして、結果としてのビットストリームは、ビットストリーム131に含めるためにマルチプレクサ119に提供される。カメラアレイパラメータ151は、ビデオキャプチャの最中のカメラを代表するパラメータを含む。例えば、カメラの位置(例えば、x、y、z情報)、空間におけるカメラの方向(例えば、ヨー、ピッチ、およびロール情報、または、クォータニオン(quaternion)情報)、並びに、焦点距離、視野、およびZnearとZfarといったカメラ特性を含んでおり、これらは、カメラからの物理的距離を示し、最低および最高の16ビット値(0および65535)が、不均衡(disparity)深さファイルに対応している、等。カメラパラメータ符号化モジュール118は、ここにおいて以下でさらに説明されるように、そうしたカメラアレイパラメータ151を有利に符号化して、冗長性を低減し、かつ、効率を向上させ得る。
【0024】
これから
図2に移ると、復号化システム200が、例えば、クライアントシステムとして実装されてよい。符号化システム100と同様に、復号化システム200は、例えば、サーバ、パーソナルコンピュータ、ラップトップコンピュータ、タブレット、ファブレット、スマートフォン、デジタルカメラ、ゲーム機、ウェアラブルデバイス、表示装置、オールインワンデバイス、ツーインワンデバイス、等といった、任意の適切なデバイスを介して実装され得る。例えば、ここにおいて使用されるように、システム、デバイス、コンピュータ、またはコンピュータデバイスは、任意のそうしたデバイスまたはプラットフォームを含み得る。復号化システム200は、任意のソースからビットストリーム131を受信し、かつ、復号化システム200は、復号のためにビットストリーム131を逆多重化(demultiplexes)する。
【0025】
示されるように、デマルチプレクサ219から逆多重化された各ビットストリームは、テクスチャ復号化モジュール211、213、215、深さ復号化モジュール212、214、216、メタデータ復号化モジュール217、および、カメラパラメータ復号化モジュール218のうち1つを含む、対応するモジュールに提供される。示されるように、テクスチャ復号化モジュール211は、テクスチャビデオ101に対応するテクスチャビデオ201を生成するために、ビットストリームを受信し、かつ、復号する。テクスチャ復号化モジュール213は、テクスチャビデオ103に対応するテクスチャビデオ203を生成するために、ビットストリームを受信し、かつ、復号する。そして、テクスチャ復号化モジュール215は、テクスチャビデオ105に対応するテクスチャビデオ205を生成するために、ビットストリームを受信し、かつ、復号する。テクスチャビデオ201、203、205は、テクスチャビデオ101、103、105に対応するが、損失の大きい符号化/復号化処理のせいで、完全には複製しないことに留意する。そうした復号は、任意の適切な技術または技法を使用して実行され得る。特に、そうした復号は、ヘッドマウントディスプレイ位置情報(HMD pos. info.)252に基づいて、ヘッドマウントディスプレイ(HMD)251(または、他のディスプレイデバイス)による使用のために、合成ビュー250を生成する際に、ビュー合成モジュール231による使用に適したビット深さ(例えば、8ビットまたは10ビット)でテクスチャビデオ201、203、205を提供する。
【0026】
さらに、メタデータ復号化モジュール217は、適切なビットストリームを受信し、そして、復号化システム200の逆マッピングモジュール221、223、225による使用のためにマッピングパラメータ161を復号する。特に、そうした復号は、マッピングパラメータ161を忠実に再作成する。ラインセグメントのエンドポイントの(x,y)座標のリストまたは類似のデータ構造を含み、そうして、xは深さ16ビットの表現値を表し、かつ、yが変換された10ビットの表現値を表している。例えば、逆マッピングモジュール221、223、225は、マッピングモジュール121、123、125によって実行される処理を逆にして、より低いビット深さビデオからより高いビット深さビデオを生成する。
【0027】
いくつかの実施形態において、ラインセグメントエンドポイントメタデータは、深さマッピングSEIメッセージ、もしくは、他の高レベルシンタックスまたはシステムシグナリングで送信される。いくつかの実施形態においては、2つ以上のラインセグメントエンドポイントセットが信号化される。いくつかの実施形態において、SEIメッセージは、それがキャンセルされるまで、または、新しいパラメータを伴う別のSEIメッセージがそれを置き換えるために送信されるまで、継続する。例示的なSEIシンタックスおよびセマティック(semantics)が、表1および以下の説明において提供される。
【表1】
表1:例示的なSEIシンタックスおよびセマティック
【0028】
いくつかの実施形態において、SEIメッセージパラメータは、キャンセルされるまで符号化順序で存続する。表1において、パラメータは、以下のように実装され得る。
dm_cancel_flagが1に等しいことは、任意の以前の深さマッピングSEIメッセージの持続性がキャンセルされることを示す。
dm_num_mapping_setsは、信号化される区分ごとの線形マッピングセットの数を指定する。
dm_num_segments[i]は、i番目のマッピングセットにおけるラインセグメントの数を指定する。
dm_seg_x[i][j]およびdm_seg_y[i][j]は、i番目のマッピングセットで定義されたj番目の(x,y)ラインセグメントエンドポイントを指定する。
【0029】
以下でさらに説明されるように、i番目のマッピングセット、DecodedValue、を使用する深さコード化画像内の各サンプルについて、変数InverseMappedValueは、以下を使用して決定される。
for(j=0;<jdm_num_segments[i];j++){
if(DecodedValue>=dm_seg_y[i][j]&&DecodedSampleValue<=
dm_seg_y[i][j+1])
InverseMappedValue=Clip3(0,65535,int(dm_seg_x[i][j]+0.5+
((DecodedValue-dm_seg_y[i][j])÷(dm_seg_x[i][j+1])-
dm_seg_x[i][j])
*(dm_seg_y[i][j+1]-dm_seg_y[i][j])))
【0030】
例えば、変数InverseMappedValueを決定するために、i番目のマッピングセット、DecodedValue、を使用して、深さコード化画像内の各サンプルについて、以前のコードまたは疑似コードが使用され得る。これにより、10ビットのビット深度値は、ビュー合成において復号化システムで使用するために、16ビットのビット深度値に対してマッピングされ得る。
【0031】
引き続き
図2を参照すると、深さ復号化モジュール212は、深さビデオ122に対応する、深さビデオ222を生成するためにビットストリームを受信し、かつ、復号化して、そして、深さビデオ222が8または10ビットといったより低いビット深さであるようにする。特に、深さビデオ222は、低いビット深さのせいで、ビュー合成モジュール231による使用には適さないことがある。深さビデオ222およびマッピングパラメータ161は、逆マッピングモジュール221によって受信される。逆マッピングモジュール221は、示されるように、16ビットといった、より高いビット深さで、深さビデオ222を(より低いビット深さで)深さビデオ202に対してマッピングする。深さビデオ222は、損失の大きい符号化/復号化処理のせいで完全な複製(replication)ではないが、深さビデオ202に対応している。特に、逆マッピングモジュール221は、マッピングモジュール121によって実行される区分ごとの線形マッピングに関して、逆の区分ごとの線形マッピング(inverse piece-wise linear mapping)を実行する。示されるように、マッピングパラメータ161は、両方のコンテキストにおいて使用される。そうしたマッピングパラメータ161は、深さマップのいくつかの深さ範囲でより多くの情報を保持する一方で、他の深さ範囲でより多くの情報を失っている。そうした区分ごとの線形マッピングは、事実上、全ての深さの範囲で同じ量の情報を実質的に失う丸め技法または切り捨て技法と対比され得る。
【0032】
同様に、深さ復号化モジュール214は、深さビデオ124に対応する深さビデオ224を生成するために、深さビデオ224がより低いビット深さ(例えば、8または10ビット)であるように、ビットストリームを受信し、かつ、復号する。深さビデオ224およびマッピングパラメータ161は、逆マッピングモジュール223によって受信される。逆マッピングモジュールは、ここにおいて説明される区分ごとの逆線形マッピング(inverse piece-wise linear mapping)技法を使用して、より高いビット深さで深さビデオ224を深さビデオ204に対してマッピングするものである。さらに、他のビューが同様に処理される。例えば、深さ復号化モジュール216は、深さビデオ126に対応する深さビデオ226を生成するためにビットストリームを受信し、かつ、復号して、深さビデオ226がより低いビット深さにあるようにする。深さビデオ226およびマッピングパラメータ161は、区分ごとの逆線形マッピング技法を使用して、より高いビット深さで深さビデオ226を深さビデオ206にマッピングするために、逆マッピングモジュール225によって使用される。
【0033】
さらに、カメラパラメータ復号化モジュール218は、関連するビットストリームを受信し、かつ、ビュー合成モジュール231によって使用されるカメラアレイパラメータ151を復号する。そうした復号は、カメラアレイパラメータ151を忠実に再現する。例えば、ビュー合成モジュール231によって使用され、ビューを生成するために使用されるカメラを代表するパラメータを含んでいる。例えば、カメラアレイパラメータ151は、カメラ位置(例えば、x、y、z情報)、空間におけるカメラの配向(例えば、ヨー、ピッチ、ロール情報またはクォータニオン(quaternion)情報)、および、焦点距離、視野、Znear、Zfar、等のカメラ特性を含み得る。
【0034】
ビュー合成モジュール231は、カメラアレイパラメータ151およびヘッドマウントディスプレイ位置情報252、または、再生シーン内の所望のビューを表す他の情報を受信し、そして、ビュー合成モジュール231は、ビュー250を生成する。ビュー250は、ヘッドマウントディスプレイ251といったディスプレイを介したシーンの提示のための任意の適切なデータ構造を含み得る。ユーザは、ヘッドマウントディスプレイ251を装着し、そして、ユーザは、ヘッドマウントディスプレイ251を空間的に移動させることができる。ヘッドマウントディスプレイ251の位置および配向(orientation)に基づいて、ヘッドマウントディスプレイ位置情報252が、シーン内の所望の仮想ビュー(virtual view)を識別するために生成される。代替的に、仮想ビューが望まれる位置および方向(例えば、仮想ビューカメラまたはビューポート)は、ビュー250を生成するために、別のシステムまたはデバイスによって提供されてよい。ビュー合成モジュール231は、テクスチャビデオ201、203、205、深さビデオ202、204、206、カメラアレイパラメータ151、および、ヘッドマウントディスプレイ位置情報252(または、他の仮想ビューデータ)に基づいて、任意の適切な技術または技法を使用して、ビュー250を生成することができる。ビュー250が、次いで、シーン内のイマーシブビューア体験を提供するために、ユーザに対して表示される。
【0035】
図2に示めされるすクライアントシステムにおいては、圧縮された深さおよびテクスチャビューを含んでいるビットストリームが、復号される(例えば、デマルチプレックスされ、そして、復号される)。ビュー合成は、選択されたビュー位置および配向(例えば、ヘッドマウントディスプレイの動き、または、HMV位置情報によって示される他のビュー選択によって識別される)に基づいて実行され、復号されたテクスチャビデオ、および、復号され、逆ビットマッピングされた深さビデオを使用して、ディスプレイビューポートのビューを生成する。
例えば、復号された深さ10ビットのビューは、区分ごとの逆線形関数を使用して、16ビット表現(または、より高いビットの整数または浮動小数点表現)を再構成するために変換され得る。ビュー合成が、次いで、選択されたビュー位置および配向(例えば、ヘッドマウントディスプレイの動き、または、HMV位置情報によって示される他のビュー選択によって識別される)に基づいて、実行され得る。再構成された深さ16ビット表現データ(または、より高いビットも整数または浮動小数点表現)、並びに、ZnearおよびZfarパラメータを使用している。
いくつかの実施形態において、クライアントシステムは、逆マッピングおよびビュー合成動作を組み合わせることができ、そして、ビュー合成動作のために必要とされる場合にだけ、逆マッピング計算を行うことができる。
【0036】
説明されるように、マッピングモジュール121、123、125は、より高いビット深さの深度値から、より低いビット深さの深度値への区分ごとの線形マッピングを提供し、そして、逆マッピングモジュール221、223、225は、より低いビット深さの深度値から、より高いビット深さの深度値を提供するために、プロセスを逆転させる。これから、区分ごとの線形マッピング、および、区分ごとの逆線形マッピングのアプリケーションについて説明を向ける。一つの実施形態において、ラインセグメントエンドポイントのリストは、符号化システムによって選択され、そして、ビットストリームを介して送信される。いくつかの実施態様においては、N個のラインセグメントを表現するために、N+1個の(x,y)データのペア(pairs)が使用される。
【0037】
図3は、本開示の少なくともいくつかの実装に従って構成された、より高いビット深さの深度値とより低いビット深さの深度値との間の、一つの例示的な区分ごとの線形マッピング300を示す。
図3の例において、区分ごとの線形マッピング300は、(x
0,y
0)、(x
1,y
1)、(x
2,y
2)、および(x
3,y
3)によって表される、3つのラインセグメント307、308、309を利用する。しかしながら、任意の数のラインセグメントが使用され得る。いくつかの実施形態においては、区分ごとの線形関数が使用される。区分ごとの線形関数は、デコーダが逆マッピング関数を実行するために比較的低い複雑性を有し、そして、信号化のために大量のメタデータを必要としないからである。いくつかの実施形態において、区分ごとの線形関数のラインセグメントの数は、デコーダの複雑性およびメタデータ信号のオーバーヘッドを制限するために、既定の数に制限されている。
【0038】
図示される例において、ラインセグメント307は、エンドポイント303(x0,y0)とエンドポイント304(x1,y1)との間のラインセグメントとして画定される。同様に、ラインセグメント308は、エンドポイント304(x1,y1)とエンドポイント305(x2,y2)との間のラインセグメントとして画定され、そして、ラインセグメント309は、エンドポイント305(x2,y2)とエンドポイント306(x3,y3)との間のラインセグメントとして画定されている。ここにおいて使用されるように、エンドポイントという用語は、ラインセグメントの終端を定義するポイントを示している。
【0039】
特に、区分ごとの線形マッピング300は、高ビット深度値(high bit-depth values)302と低ビット深度値(low bit-depth values)301の間でマッピングする。例えば、高ビット深度値302は、16ビット深度値であり、かつ、低ビット深度値301は、ここにおいて説明されるように、8ビットまたは10ビット深度値であり得る。そうした実施例において、深度ビュー(例えば、深さビデオ102、104、106のいずれか)の高ビット深度値302は、16ビットのビット深さ(bit-depth)を有し、そして、従って、0から65535(例えば、=2^16-1)までの利用可能な値の範囲を有する。深度ビューのそうした高ビット深度値302は、次いで、深度ビューの低いビット深度値301(例えば、深さビデオ122、124、126のいずれか)へフォワードマッピングされ、そうして、低ビット深度値301は、例えば、8ビット深さ、または、10ビット深さであり得る。8ビット深さのコンテキストにおいて、低ビット深度値301は、0から255(例えば、=2^8-1)の利用可能な範囲を有している。10ビット深さのコンテキストにおいて、低ビット深度値301は、0から1023(例えば、=2^10-1)の利用可能な範囲を有している。
【0040】
さらに、少なくともエンドポイント304、305は、高ビット深度値302および低ビット深度値301のコンポーネントの最小値と最大値との間にある。例えば、0から65535までの高ビット深度値302の範囲は、区分ごとの線形マッピング300の水平すなわちx成分を画定し、そして、0から255または1023までの低ビット深度値301の範囲は、区分ごとの線形マッピング300の垂直すなわちy成分を画定し得る。エンドポイント303、304、305、306は、(0,0)と、(65535,255)または(65535,1023)との間にあり、包括的で、そうして、エンドポイント303は、(0,0)にあり、そして、エンドポイント306は、(65535,255)または(65535,1023)であり得るが、利用可能な範囲内の他の最終エンドポイントが定義され得る。次いで、エンドポイント304、305といった中間エンドポイントは、そうした最小エンドポイントと最大エンドポイントとの間にある。そうして、両方のエンドポイント304、305の水平すなわちx成分が、より高いビット深さ範囲の最小深度値(例えば、0)を超え、そして、両方のエンドポイント304、305の垂直すなわちy成分が、より低いビット深さ範囲の最小深度値(例えば、0)を超える。同様に、両方のエンドポイント304、305の水平すなわちx成分が、より高いビット深さ範囲の最大深度値(例えば、65535)よりも小さく、両方のエンドポイント304、305の垂直すなわちy成分が、より低いビット深さ範囲の最大深度値(例えば、255または1023)よりも小さい。ここにおいて使用されるように、ポイントの水平成分という用語は、高ビット深度値302に沿った座標に対応し、そして、ポイントの垂直成分という用語は、低ビット深度値301に沿った座標に対応している。
【0041】
図示されるように、エンドポイント303、304はラインセグメント307を画定し、エンドポイント304、305はラインセグメント308を画定し、そして、エンドポイント305、306はラインセグメント309を画定している。そうして、ラインセグメント307、308はエンドポイント304を共有し、そして、ラインセグメント308、309はエンドポイント305を共有している。説明されるように、ラインセグメント307は、ラインセグメント308よりも大きなスロープを有し、ラインセグメント308は、次に、ラインセグメント309よりも大きなスロープを有している。そうしたスロープは、エンドポイント303、304、305、306によって画定され、以下でさらに説明されるように、区分ごとの線形マッピング300を生成するために使用される深度ビュー内の深度値ピクセルカウントに応答して生成され得る。
【0042】
いくつかの実施形態において、順方向マッピング(forward mapping)は、ラインセグメント307、308、309のどれが、高ビット深度値302の特定の高ビット深度値に対応するかを決定することによって実行され、そして、次いで、ラインセグメントのエンドポイントに従って線形マッピングを適用することによって、マッピングされた低ビット深度値を決定する。例えば、高ビット深度値311に関して示されるように、高ビット深度値311がラインセグメント308内にあると判断される。次に、ラインセグメント308に基づく線形マッピングを用いて、高ビット深度値311を低ビット深度値312にマッピングする。すなわち、ラインセグメント308によって画定される線形関数を高ビット深度値311に適用することによって、高ビット深度値311が低ビット深度値312にマッピングされ、結果としての低ビット深度値312を決定する。
【0043】
いくつかの実施形態においては、式(1)に従って、[xi,xi+1]の範囲のxに対して、高ビット深度値(例えば、16ビットx値)が、以下のように、低ビット深度値(例えば、8ビットまたは10ビット値)にマッピングされる。
y=round(yi+(x-xi)/(xi+1-xi))*(yi+1-yi)) (1)
ここで、xは[xi,xi+1]の範囲内にあり(xはビット深さの高い値)、[xi,xi+1]と
[yi,yi+1]の間に線形マッピングが提供される(範囲内にあるラインセグメントを高ビット深度値、x、と画定している)。例えば、高ビット深度値311(x)について、低ビット深度値312(y)は、y=y2+((x-x1)/(x2-x1))*(y2-y1)として画定され得る。
【0044】
逆マッピング(inverse mapping)は、復号化システム200において、同様の技法を用いて実行される。いくつかの実施形態において、逆マッピングは、ラインセグメント307、308、309のどれが低ビット深度値302の特定の低ビット深度値に対応するかを決定することによって実行され、次いで、ラインセグメントのエンドポイントに従って線形マッピング(例えば、逆線形マッピング)を適用することによって、マッピングされた高ビット深度値を決定する。例えば、低ビット深度値312に関して示されるように、低ビット深度値312がラインセグメント308内にあると判断される。次に、ラインセグメント308に基づいた線形マッピングを用いて、ラインセグメント308によって画定された線形関数を低ビット深度値312に当てはめて、結果としての高ビット深度値311を決定することによって、低ビット深度値312が高ビット深度値311にマッピングされる。
【0045】
いくつかの実施形態においては、式(1)の逆数に従って、[yi,yi+1]の範囲内のyに対して、低ビット深度値(例えば、8ビットまたは10ビットy値)を高ビット深度値(例えば、16ビット値)にマッピングする。例えば、低ビット深度値312(y)に対して、高ビット深度値311(x)は、x=x2+((y-y1)/y2-y1))*(x2-x1)として決定され得る。
【0046】
そうしたマッピング及び/又は逆マッピングは、任意の適切な計算技術または技法を用いて実施することができる。いくつかの実施形態において、ルックアップテーブルは、順方向または逆マッピング関数のいずれか又は両方について、マッピングテーブルを使用して特定の入力値(x値)を特定の出力値(y値)にマッピングするために使用され得る。いくつかの実施形態においては、丸め(rounding)の代わりに切り捨て(truncation)が上記の式において使用されてよい。クリッピングも、または、例えば、許容範囲外の値を回避するために、上記の式に適用されてよい。
【0047】
特に、高ビット深度値311から低ビット深度値312へのマッピングの結果として、高ビット深度値311は精度を失うことが予想される。しかしながら、ラインセグメント307、308、309を有する区分ごとの線形マッピング300を適用することによって、精度の損失は、深度値302にわたり有利に変化させることができる。例えば、より大きなスロープを有するラインセグメント307、308、309は、より小さなスロープを有するラインセグメント307、308、309よりも精度を失わない。より小さなスロープラインセグメントと比較して、より大きなスロープラインセグメントはマッピングする相対的により低いビット深度値(またはビン)を有しているせいである。これは、ラインセグメント307、309に関して視覚的に見ることができる。ラインセグメント307は、より大きなスロープを有し、その結果、x0からx1までの範囲の高ビット深度値は、y0からy1までの範囲の対応する低ビット深度値の相対的に高い数を有する。これは、x2からx3までの高ビット深度値(例えば、x1-x0=x3-x2)の等しいサイズをカバーするが、変換するy2からy3までのより小さい低ビット深度値(例えば、y1-y0>y3-y2)を有する、ラインセグメント309と対照的である。従って、ラインセグメント309に関するマッピングは、低いビット深度値から高いビット深度値への逆マッピングに反映されるように、同数の高いビット深度値をより少ない数の低いビット深度値に変換し、精度の損失をより大きくする。そうしたラインセグメントは、深度ビューが、深さの大きいオブジェクトと比較して、深さの小さいオブジェクト及び/又はディテール(例えば、エッジ)が多い場合に有利であり得る。それによって、より詳細が、区分ごとの線形マッピングを採用することによって、深度ビューにおいて保持される。最適なマッピングおよび精度損失のためにラインセグメント307、308、309を画定するエンドポイント303、304、305、306の選択が、以下でさらに説明される。単に説明を明確にするために、x次元における等間隔のエンドポイントが示されていることに留意する。そうしたエンドポイント間隔は、実際には制約として適用されない。
【0048】
例えば、
図3に示す実施形態において、ラインセグメント307のスロープは、ラインセグメント309のスロープより大きい。いくつかの実施形態において、そうしたスロープの差異は、x
2...x
3の範囲内よりもx
0...x
1の範囲内がより多くのサンプル(例えば、ピクセルサンプル)を示しているヒストグラムに応答して(対応する深さ画像(depth image)について)生成されてもよい。すなわち、第2範囲と比較して第1範囲内のより多くのサンプル数に応答して、第1範囲の第1スロープは、第2範囲の第2スロープよりも大きい。
【0049】
図1および
図2を参照すると、
図3に関して説明された技法に従って、マッピングモジュール121、123、125は、深さビデオ102、104、106(より高いビット深さ)を深さビデオ122、124、126(より低いビット深さ)にマッピングし、そして、逆マッピングモジュール221、223、225は、深さビデオ222、224、226(より低いビット深さ)を深さビデオ202、204、206(より高いビット深さ)にマッピングする。例えば、各深度値について、高ビット深度値311および低ビット深度値312に関して説明されたように、マッピングが実行される。
【0050】
図4は、本開示の少なくともいくつかの実施態様に従って構成された、区分ごとの線形マッピングを使用して、深度ビューのビット深さを低減するための一つの例示的なプロセス400を示している。プロセス400は、例えば、符号化システム100によって実行される、例示されるような1つ以上の動作401~406を含んでよい。プロセス400は、動作401で開始し、そこでは、ビット深さの低減が開始される。ビット深さの低減は、例えば、深さビデオ102、104、106(より高いビット深さ)を深さビデオ122、124、126(より低いビット深さ)にマッピングする、マッピングモジュール121、123、125によって実行され得る。
【0051】
処理は、動作402において継続し、そこでは、高い又はより高い(より低いターゲットビット深さと比較して)ビット深さにおける深度ビューが受信される。深度ビューは、その各ピクセルに対して深度値(より高いビット深さ)を有する深さフレームまたは画像といった任意の適切なデータ構造を有し得る。いくつかの実施形態において、深度ビューは、各々16ビットのビット深さを有する深度値を有している。そうしたコンテキストにおいて、各深度値は、説明されるように、0から65535までの範囲であり得る。例えば、動作402において、高ビット深さでの深度値を有する第1深度ビューは、高ビット深さが最小値(例えば、0)から最大値(例えば、65535)までの利用可能な値の大きな範囲を有するように受信され得る。
【0052】
処理は、動作403において継続し、そこでは、より高いビット深さでの深度ビューをより低いビット深さにマッピングするためにラインセグメントエンドポイントが獲得され、そうして、ラインセグメントエンドポイントは、ラインセグメント307、308、309といったマッピングのためのラインセグメントを画定する。そうしたラインセグメントエンドポイントおよびラインセグメントは、
図5および
図6に関して説明したものといった任意の適切な技術または技法を使用して、獲得または生成され得る。いくつかの実施形態において、ラインセグメントは、1つ以上の深度ビュー(例えば、深さフレーム)の少なくとも一部を使用して深度値範囲当たりの深さピクセル値カウントのヒストグラムを生成することにより、および、マッピングおよび逆マッピングに対応する再構成誤差を最小化するために、第1および第2ラインセグメントを含むマッピングのための複数のラインセグメントを再帰的に生成することによって決定される。
【0053】
処理は、動作404において継続し、高い又はより高いビット深さ深度ビューは、低減されたビット深さを有する深度ビューを生成するために、低ビット深さにマッピングされる。より低いビット深さは、8ビットまたは10ビットといった任意のビット深さであってよい。そうしたマッピングは、動作403で獲得されるラインセグメントエンドポイントに従って実行される。例えば、より高いビット深さ深度ビューに対する各ピクセルについて、ピクセルの区分ごとの線形マッピングが属する係る複数のラインセグメントのうちどのラインセグメントが関係するかについて決定がなされ得る(例えば、より高いビット深度値がラインセグメントのビット深度値の範囲内にあるように)。次いで、適切なラインセグメントに従った線形マッピングが、より高いビット深度値をより低いビット深度値にマッピングするために提供される。そうした処理は、8ビット(0から255の範囲)または10ビット(0から1023の範囲)という、より低いビット深さ深度ビュー(例えば、深さビデオ122、124、126のうち1つ)を生成するために、より高いビット深さ深度ビュー(例えば、深さビデオ102、104、106のうち1つ)の全てのピクセルに対して直列に又は並列して繰り返えされ得る。
【0054】
例えば、
図3を参照すると、より高い深度ビューの深度値は、他の深度ビューを生成するために、より低いビット深度値が、より高いビット深さよりも小さいより低いビット深さでの深度値にマッピングされてよい。そうして、より低いビット深さは、最小値(例えば、0)から最大値(例えば、255または1,023)までの利用可能な値の範囲を有しており、
第1ラインセグメントエンドポイントの水平成分(例えば、x
1)及び垂直成分(例えば、y
1)が、より高いビット深さの最小深度値(例えば、0)及びより低いビット深さの最小深度値(例えば、0)を、それぞれに、超えるように、マッピングのためのラインセグメントを画定するために、第1ラインセグメントエンドポイント(例えば、(x
1,y
1))および第2ラインセグメントエンドポイント(例えば、(x
2,y
2))を使用している。さらに、第2ラインセグメントエンドポイントの水平成分(例えば、x
2)および垂直成分(例えば、y
2)は、それぞれに、より高いビット深さの最大深度値(例えば、65535)及びより低いビット深さの最大深度値(例えば、255または1023)よりも小さい。
【0055】
処理は、動作405において継続し、そこでは、より低いビット深さでの深度ビューが、標準コーデック及び/又はプロファイルを実装している標準エンコーダを使用して、符号化のために出力される。いくつかの実施形態において、より低いビット深さ深度ビューは、HEVCメインプロファイルエンコーダを使用して符号化されてよい。示されるように、プロセス400は、動作406で終了し得る。プロセス400は、任意の数の深度ビューに対して直列に又は並列的に実行され得る。そうした深度ビューは、深さフレーム、深さピクチャ、等としても特徴付けされ得る。ここにおいて説明されるように、そうした低減されたビット深さ深度ビューは、低減されたビット深さを処理することができるそうしたコーデックおよびプロファイルのおかげで、標準のコーデックおよびプロファイルを使用して符号化され得る。
【0056】
動作403に関して説明されるように、ラインセグメントエンドポイントは、より高いビット深さからより低いビット深さまでの区分ごとの線形マッピングを画定するために符号化システム100において生成され得る。そうしたラインセグメントエンドポイントは、マッピングにおいて使用され、そして、復号における使用のために復号化システム100に送信される。これから、順方向および逆の区分ごとの線形マッピングに使用するために、ラインセグメントおよびラインセグメントエンドポイントを生成すること説明を向ける。
【0057】
図5は、本開示の少なくともいくつかの実装に従って構成された、深度ビューにおける深度値のピクセルカウントに基づく、例示的な区分ごとの線形マッピング300の生成を示している。
図5に示されるように、高ビット深度値302の範囲(例えば、0から65535まで)は、ヒストグラムビンといった複数のビン505へと分割することができる。12個のビン505に関して図示されているが、任意の数を使用することができる。深度ビューの特定の部分(例えば、深度ビュー102、104、106のうちの1つ以上の部分)について、そのピクセルは、その深度値に基づいてビン505のうち1つに割り当てられている。すなわち、対応する深度値の範囲に基づいて、ビン505それぞれについてピクセルカウントが生成される。そうしたピクセルカウントは、深度値ピクセルカウントを示すヒストグラム501を生成する。そうしたピクセルカウントは、次に、以下でさらに説明されるように、エンドポイントおよび対応するラインセグメントを生成するために使用される。
【0058】
図5に示されるように、ラインセグメント307は、スロープを有しており、そして、スロープは、ラインセグメント308に対応するビン503内のピクセルカウントよりも大きな値を有しているラインセグメント307に対応するビン502内のピクセルカウントに応答するラインセグメント308のスロープよりも大きい。同様に、セグメント3087は、スロープを有しており、そして、スロープは、ラインセグメント308に対応するビン504内のピクセルカウントよりも大きな値を有しているビン503内のピクセルカウントに応答するラインセグメント309のスロープよりも大きい。単に説明を明確にするために、等間隔のx次元のエンドポイントが示されていることに再び留意する。そうしたエンドポイント間隔は、実際に適用される制約ではないが、そうしたエンドポイント間隔が実装されてよい。
【0059】
特に、ラインセグメント307、308、309のスロープ、および、エンドポイント303、304、305、306の座標は、ヒストグラム501または同様のカウンティング技法によって生成されるように、対応するビン502、503、503のピクセルカウントに基づいて生成される。ヒストグラム501を生成するために使用される深度ビュー102、104、106の部分は、任意の適切な部分であってよい。一つの実施形態において、ヒストグラム501は、フレーム毎に生成される。いくつかの実施態様において、ヒストグラム501は、深度ビュー102、104、106のうち1つの画像のグループを使用して生成される。いくつかの実施態様において、ヒストグラム501は、単一フレーム又は複数フレームのエッジ領域だけに基づいて生成される。次に、対応するラインセグメント307、308、309およびエンドポイント303、304、305、306の座標が、マッピングおよび逆マッピングに使用され、座標は、ビットストリーム131で表現され、そして、送信される。
【0060】
図6は、本開示の少なくともいくつかの実装に従って構成された、高ビット深度値と低ビット深度値との間で深度ビューをマッピングおよび逆マッピングプするように、区分ごとの線形マッピングを定義するための一つの例示的なプロセス600を示す。プロセス600は、例えば、符号化システム100によって実行される、図示されるような1つ以上の動作601~606を含み得る。プロセス600は、動作601で開始し、そこでは、区分ごとの線形マッピング生成が開始される。例えば、マッピングパラメータ161を生成するためのマッピングパラメータ選択モジュール110によって、区分ごとの線形マッピングモデル生成が実行され得る。
【0061】
処理は、動作602において継続し、そこでは、マッピングのための深度ビューデータが獲得される。説明されるように、1つ以上の深さ方向102、104、106のうちの一部分は、区分ごとの線形マッピングを生成するために使用される。いくつかの実施態様においては、区分ごとの線形マッピングを決定するために、単一フレームが使用される。いくつかの実施態様においては、予め選択された(preselected)数のフレームが使用される。いくつかの実施形態においては、画像のグループ(例えば、符号化構造において画定されるようなもの)が使用される。いくつかの実施態様においては、単一フレームのエッジ部分、予め選択された数のフレーム、または、画像のグループに係るエッジ部分のみが使用される。さらに、各ビューについてのマッピングパラメータを生成するために、単一の深度ビューが使用され、ビュー間で共有されるマッピングパラメータを生成するために、複数のビューが使用され得る。
【0062】
上述のように、符号化システム100は、HEVC Main 10 Profileといった、10ビットのビデオエンコーダを使用することの制限のせいで、16ビット表現の代わりに10ビット表現の深さが使用されるように、使用される区分ごとの線形マッピングを選択する。HEVC Main Profileといった、8ビットビデオコーデックを使用するために、16ビットデータを8ビットデータに変換するように、同じ技法が使用され得る。さらに、説明される技術は、nがmを超えるように、nビットデータをmビットデータに変換するために使用され得る。16ビットデータを10ビットデータへ丸め、または、切り捨てるときには、深さデータのより粗い表現のせいで、ビュー合成の品質が低減される。符号化および復号化の追加的なステップは、ビデオ品質をさらに低減し得る。ビデオ品質は、オブジェクトのエッジ(つまり、オブジェクトと背景の間で深度値が変化するところ)でより厳しく影響を受ける。いくつかの実施形態において、符号化システム100における選択方法は、深さデータのビット表現の低減に伴うビデオ品質の低減を最小化しようと試みる。いくつかの実施形態においては、入力深度ビューにおける特定の深度値の発生頻度をカウントする、ヒストグラムが形成される。最も頻繁に発生する深度値の範囲は、より高いスロープを有するラインセグメントに割り当てられ、そして、最も少なく発生する深度値の範囲は、より低いスロープを有するラインセグメントに割り当てられる。説明されるように、より高いスロープは、表現のより大きな粒度が保持されることを意味し、そして、同様に、より低いスロープは、表現のより小さな粒度が保持されることを意味する。
【0063】
一つの実施形態において、深度値のヒストグラムは、最初にエッジ検出アルゴリズムを適用することによって、画像内のエッジ領域に対して別々に決定される。ラインセグメントエンドポイントは、オブジェクトエッジで生じる最も頻繁に発生している深度値に対してより高いスロープを与えることを優先するように、エッジ深さヒストグラムに基づいて選択され得る。例えば、深さ画像(depth image)について、エッジ領域が決定され、そして、エッジ領域についてエッジヒストグラムが生成され得る。次いで、第2範囲に対してヒストグラムの第1範囲内により多くのエッジサンプルがあることに応答して、第1範囲の第1スロープは、第2範囲の第2スロープよりも大きい。いくつかの実施形態においては、深度ビューのエッジ領域が決定され、そして、深さピクセル値カウントのヒストグラムが、検出されたエッジ領域内のピクセルを使用して、かつ、エッジ領域外のピクセルを除外して生成される。そうしたヒストグラムは、次に、以下に説明されるように、区分ごとの線形マッピングのラインセグメントを決定するために使用され得る。
【0064】
エンコーダは、任意の数のビューおよび画像のヒストグラムに基づいてラインセグメントを選択することができる。いくつかの実施形態においては、同じランダムアクセス期間内の符号化ビデオシーケンス全体 (例えば、I画像および多数の追加的な非I画像) について深さマッピングパラメータの同じセットを適用することは、マッピングパラメータの異なるセットを使用することによって引き起こされるフレーム間予測(inter-frame prediction)における非効率性の導入を回避するために有利である。この場合には、マッピングパラメータを選択するときに、ランダムアクセス期間内の全てのビューの全ての画像を使用することが有利であろう。一つの実施形態において、(全てのサンプルまたはエッジサンプルを使用する)前述のヒストグラムは、ランダムアクセス期間または画像のグループ内の全てのビューの全ての画像を使用して生成される。
【0065】
処理は、動作603において継続し、そこでは、選択された深度ビューデータを使用して、初期の高深度値範囲にわたるピクセルカウントが決定される。そして、動作604において継続し、そこでは、再構成誤差を最小化するためにラインセグメントが(ラインセグメントエンドポイントによって画定されるように)再帰的に生成される。
【0066】
これから、最適な区分ごとの線形マッピングを再帰的に決定するための技法が説明される。そうした技法は、入力として、より高いビット深さマップ(例えば、16ビット)のヒストグラム(全(full)フレーム、多数のフレーム、または、エッジのみ、のいずれか)、および、マッピング内の所望の数のセグメントを使用する。そうしたヒストグラムおよび入力セグメントの数は、任意の適切な技術または技法を使用して決定され得る。実施形態において、所望の数のセグメントは、特定の既定値に制限されている。以下の技法は、動的プログラミングを使用して、区分ごとの線形マッピング(例えば、区分ごとの線形マッピング300)のセグメント(ラインセグメント307、308、309)のエンドポイント(例えば、エンドポイント303、304、305、306)について最適なx座標およびy座標を決定する。
【0067】
以下の説明においては、(i)区分ごとの線形マッピングの第1セグメントは(0,0)で始まり、(ii)セグメントsが(i,k)で始まる場合、以前のセグメントs-1は(i-1,q)で終わる。ここで、qはkまたはk-1である。そして、(iii)各セグメントのスロープ(出力ビンの数/入力ビンの数)は、1以下(<=1)であるように制限される。
【0068】
E(s,i,k)を、セグメント[0...s]を使用して入力ビン[0...i]が出力ビン[0...k]にマッピングするときの再構成誤差の最小値とする。S(s,i,k)は、s+1セグメントそれぞれのスタートポイントおよびエンドポイントからなる、対応する最適解(optimal solution)を示す。すなわち、Sは、再構成誤差の最小値に対応する区分ごとの線形マッピングである。最後のセグメント(インデックスs)は(i,k)で終了することに留意する。次に、このセグメントについて全ての可能な開始位置(p,q)は、pがi以下かつqがk以下(p<=i and q<=k)であるように考えられ得る。
【0069】
特に、この問題は、誤差E(s,i,k)を伴う最適解S(s,i,k)が特定の(p,q)において開始するセグメントsをもつように、最適な下部構造(substructure)特性を有している。さらに、最適解における以前のセグメントs-1は(m,n)において終了する。それは、(p-1,q)または(p-1,q-1)であり得る。次いで、最適解S(s,i,k)は、S'(s-1,m,n)で示される、(s-1,m,n)に対する最適解で構成されることを要し、セグメントsが後に続く誤差E'(s-1,m,n)を伴う。(S(s,i,k)がS'(s-1,m,n)を含まない場合には、S(s,i,k)におけるセグメント[0.s-1]がS'(s-1,m,n)で置き換えられ得る。これは、S'(s-1,m,n)が(s-1,m,n)に対する全ての解の中で可能な最小の誤差をもっているので、E(s,i,k)よりも低い全体誤差を伴う(s,i,k)に対する新たな解を与える。)
【0070】
セグメントsが、ビン[p.i]をビン[q.k]にマッピングするときの再構成誤差は、e(s,p,q,i,k)で示される。これは、式(2)に示されるように、E(s,i,k)について再帰的な解を与える。
E(s,i,k)
=minimum over all feasible(p,q) of {E(s-1,m,n)+e(s,p,q,i,k)} if s>0
=e(0,0,i,k) if s=0
(2)
ここで、(p,q)は現在セグメントsのスタートポイントであり、(m,n)は以前のセグメントs-1のエンドポイントである。mはp-1に等しく(m=p-1)、そして、nはqまたはq-1である。
【0071】
実行可能な(p,q)は、次のように定義される。セグメントは、平坦(単一の出力ビン)または単調に増加すると仮定されている。以前の各セグメントは少なくとも1つの入力ビンをカバーする必要があるので、インデックスsを有する現在セグメントはs以上(>=s)で開始する必要がある。各セグメントは
1以下のスロープを有する必要がある。そして、各セグメントは少なくとも1つの入力ビンをカバーする必要がある。これらの制約は、式(3)に示されるように定義され得る。
S<=p<=i
0<=q<=k
k-q+1<=i-p+1(スロープ制約)
s<=i(各セグメントは少なくとも1つの入力ビンをカバーする必要がある)
(3)
【0072】
セグメントsがビン[p..i]をビン[q..k]にマッピングするときの誤差関数e(s,p,q,i,k)は次のように定義される。最初に(first)式(4)で与えられる定義を用いて、入力ビンを出力ビンに均一にマッピングする。
Let I=i-p+1 =number of input bins
Let J=k-q+1 =number of output bins
Let f=floor(I/J)
Let r=I-f*J
(4)
【0073】
次いで、最初のr出力ビンには、それぞれf+1の入力ビンが割り当てられる。1番目(first)に対して[0..f]、2番目(second)に対して[f+1,2f+1]、等。残りのJ-r出力ビンには、それぞれf入力ビンが割り当てられる。
【0074】
次に、誤差モデルが以下のように提供される。誤差モデル:各入力ビンスパン(input bin span)を範囲Dにする。入力ビンi内でカウントされたピクセルの真の値は[(i-1)D..iD]にわたり均一に分布していると仮定され得る。次に、K入力ビンを1つの出力ビンにマッピングすると仮定する。次いで、逆マッピングは、これらの入力ビンのKDサイズの範囲の中心の値にピクセルを再構成する。2乗誤差seは、そこで、以下の式(5)によって提供される擬似符号(Pseudo-Code)に示されるように与えられ得る。
【0075】
Kが偶数である場合:tはインターバル(interval)の中心からのビン距離を表す。例えば、K=6、t={2,1,0,0,1,2}である。
se=integral(over 0..D)1/D.(tD+x)^2dx
=t*t*D*D+t*D*D+D*D/3
For K=1:
se=2integral(over 0 to D/2)1/D.x^2dx=D*D/12
Kが奇数であり、1より大きい場合:tはインターバルの中心からのビン距離を表す。例えば、K=7、t={3,2,1,0,1,2,3}である。
For t not equal to 0:
se=integral(over 0..D)1/D.((t-0.5)D+x)^2dx
=(t-0.5)^2*D*D+(t-0.5)*D*D+D*D/3
Total squared error for the output bin=sum_{over t}(histogram value*se(t))
単純化のため、Dは1に設定され得る、D=1
(5)
【0076】
現在セグメントが、そのy座標(出力ビン)が以前のセグメントのエンドポイントのy座標に一致するスタートポイントを有する場合に、問題が生じ得ることに留意する。このことは、以前のセグメントだけが使用される場合よりも多くの入力ビンが同じ出力ビンにマッピングされることを生じさせ、以前のセグメントの再構成誤差に影響する。1つの解決策は、この追加的な再構成誤差を現在セグメントに帰属させることである。別の解決策は、この状況を許容しないことであり、そうして、現在セグメントは新しい出力ビンでのみ開始できる。最適化にはコストがかかる可能性がある。
【0077】
そうした再帰的な技法を使用して、ラインセグメントエンドポイントは、入力ヒストグラムデータおよび多数の選択されたラインセグメントに基づいて生成される。
【0078】
処理は、動作605において継続し、そこでは、生成されたラインセグメントエンドポイントは、マッピングモジュール121、123、125に関して説明された順方向マッピングにおける使用のため、そして、ビットストリーム131への符号化のため、そして、最終的には、逆方向マッピングモジュール221、223、225に関して説明されたように復号化システム200による使用のために、出力される。そして、終了動作606である。説明は、これから、復号処理におけるそうしたラインセグメントエンドポイントの使用に向けられる。
【0079】
図7は、本開示の少なくともいくつかの実装に従って構成された、区分ごとの線形マッピングを使用して、深度ビューのビット深さを増加させるための一つの例示的なプロセス700を示す。プロセス700は、例えば、復号化システム200によって実行される、例示されるような1つ以上の動作701~706を含んでもい。プロセス700は、動作701で開始し、そこでは、ビット深さの増加が開始される。ビット深さの増加は、例えば、深さビデオ222、224、226(より低いビット深さ)を深さビデオ202、204、206(より高いビット深さ)にマッピングする、マッピングモジュール221、223、225によって実行され得る。
【0080】
処理は、動作702において継続し、そこでは、深度ビューが、(より高いターゲットビット深さに対して)低い又はより低いビット深さにおいて受信され、そして、復号される。深度ビューは、その各ピクセルに対して(より低いビット深さでの)深度値を有する深さフレームまたは画像といった、任意の適切なデータ構造を有し得る。いくつかの実施形態において、深度ビューは、それぞれ0から255までの範囲における8ビットのビット深さを伴う深度値を有している。いくつかの実施形態において、深度ビューは、それぞれ0から255までの範囲における10ビットのビット深さを伴う深度値を有している。そうしたコンテキストにおいて、各深度値は、0から1023までの範囲であってよい。例えば、動作702においては、低ビット深さでの深度値を有する第1深度ビューが受信され得る。そうして、低ビット深さは、最小値(例えば、0)から最大値(例えば、255または1023)までの利用可能な値の大きな範囲を有する。
【0081】
処理は、動作703において継続し、そこでは、ラインセグメントエンドポイントが、ラインセグメント307、308、309といったマッピングのためのラインセグメントを規定するように、より低いビット深さでの深度ビューをより高いビット深さにマッピングするために、ラインセグメントエンドポイントが復号される。そうしたラインセグメントエンドポイントおよびラインセグメントは、
図2に関して説明したような任意の適切な技術または技法を用いて復号され得る。例えば、ラインセグメントエンドポイントは、メタデータ復号化モジュール217によって、ビットストリーム131から逆多重化された(demultiplexed)ビットストリームの一部から復号され得る。説明されるように、それによって画定されるラインセグメントエンドポイントおよびラインセグメントは、深度値を増加させるために使用される逆マッピングにおいて、より高いビット深さへのより低いビット深さを最小化することを求めることができる。
【0082】
処理は、動作704において継続し、そこでは、低ビット深さ深度ビューまたはより低いビット深さ深度ビューは、増加されたビット深さを有する深度ビューを生成するために、より高いビット深さ深度ビューにマッピングされる。より高いビット深さは、16ビットといった任意のビット深さであってよい。そうしたマッピングは、動作703で復号されたラインセグメントエンドポイントに従って実行される。例えば、より低いビット深さ深度ビューの各ピクセルに対して、ピクセルを区分ごとに線形マッピングする複数のラインセグメントのうちどのラインセグメントが関係するかについて決定がなされ得る(例えば、より低いビット深度値がラインセグメントのビット深度値の範囲内にあるように)。次いで、関連するラインセグメントに従った線形マッピングが、より低いビット深度値をより高いビット深度値にマッピングするために提供される。そうした処理は、8ビット(0から255mでの範囲)または10ビット(0から1023までの範囲)といった、より高いビット深さ深度ビュー(例えば、深さビデオ202、204、206のうち1つ)を生成するために、より低いビット深さ深度ビュー(例えば、深さビデオ222、224、226のうち1つ)の全てのピクセルについて、直列または並列に繰り返えされ得る。
【0083】
例えば、
図3を参照すると、深度ビューの深度値は、深度ビューを生成するために、より低いビット深さよりも大きい、より高いビット深さにおける深度値にマッピングされてよく、そうして、より高いビット深さは、最小値(例えば、0)から最大値(例えば、65535)までの値の利用可能な範囲を有する。第1ラインセグメントエンドポイント(例えば、(x
1,y
1))および第2ラインセグメントエンドポイント(例えば、(x
2,y
2))を使用して、第1ラインセグメントエンドポイントの水平成分(例えば、x
1)および垂直成分(例えば、y
1)が、より高いビット深さの最小深度値(例えば、0)およびより低いビット深さの最小深度値(例えば、0)を、それぞれに、超えるように、マッピングのためのラインセグメントを定義する。さらに、第2ラインセグメントエンドポイントの水平成分(例えば、x
2)および垂直成分(例えば、y
2)は、より高いビット深さの最大深度値(例えば、65535)およびより低いビット深さの最大深度値(例えば、255または1023)よりも、それぞれに、小さい。
【0084】
処理は、動作705において継続し、そこでは、ここにおいて説明されるように、ビュー合成処理のために、より高いビット深さでの深度ビューが出力される。いくつかの実施形態においては、ビュー250を生成するために、より高いビット深さ深度ビューが使用され得る。それは、また、対応するテクスチャビュー、並びに、他の深さおよびテクスチャビューのペアに基づいて生成される。示されるように、プロセス700は、動作706で終了し得る。プロセス700は、任意の数の深度ビューに対して直列または並列に実行されてよい。そうした深度ビューは、また、深さフレーム、深さピクチャ等、としても特徴付けされ得る。ここにおいて説明されるように、そうしたビット深さの増加したビューは、ビュー合成のコンテキストにおいて、好適であり、かつ、改善された性能を提供することができる。
【0085】
図1および
図2を参照して、これから、カメラパラメータ符号化モジュール118およびカメラパラメータ復号化モジュール218を介した、カメラアレイパラメータ151の符号化および復号化へ、それぞれに、説明が移る。そうした符号化されたカメラアレイパラメータは、カメラ情報SEIメッセージを使用して、符号化システム100と復号化システム200との間で送信され得る。いくつかの実施態様において、カメラパラメータを記述するメタデータ、現在.jsonファイル内にあり、かつ、追加情報であるメタデータを含んでいるもの、は、また、同一または別のSEIメッセージにおいても搬送され得る。いくつかの実施形態においては、深さマッピングパラメータがカメラパラメータよりも頻繁に変化し得るので、これらのパラメータを別個のSEIメッセージに含めることが有利である。一つの実施形態において、3DoFplusのカメラ情報SEIメッセージは、.jsonファイルよりもコンパクトにデータを表現し、データ送信のためのビットレート(bitrate)を節約している。各カメラについて、SEIメッセージは、(x、y、z)位置情報および(ヨー、ピッチ、ロール、または、クォータニオンパラメータに基づく)配向情報を含み得る。一つの実施形態において、yaw_pitch_rollフラグは、(yaw,pitch,roll)情報が送信されるように要求されているか否か、または、それら全てがデフォルト値の0を有するか、を示す。(x,y,z)パラメータについて、典型的には、正規(regular)のカメラ間隔を有する。いくつかの実施形態において、ビットレートの節約は、x、y、およびzそれぞれについて、信号化された位置の粒度を信号化することによって達成され得る。例えば、x、y、およびzでの間隔値が、ビットレートを節約するために、カメラ位置に対して提供され得る。
【0086】
さらに、ここにおいて説明されるビデオは、全方向(omnidirectional)コンテンツまたは通常視点(normal perspective)コンテンツを含み得る。いくつかの実施形態において、カメラ情報SEIメッセージは、どちらが使用されるかを示すフラグを含む。例えば、カメラ情報SEIメッセージは、全方向コンテンツまたは通常視点コンテンツを示すフラグを含み得る。さらに、いくつかの実施態様において、マルチカメラのイマーシブメディアシステムにおける全てのカメラは、同じパラメータを有する。パラメータは、視野、および、Znear(カメラによって達成可能な最小の物理的深さ)、そして、Zfar(カメラによって達成可能な最大の物理的深さ)を含んでいる。いくつかの実施形態においては、これらのパラメータの共通値を示すためのフラグを送信することによって信号化オーバーヘッドが低減され、全てのビューに対して信号化され得る。または、それらのパラメータが各ビューに対して明示的に信号化される場合である。例えば、カメラ情報SEIメッセージは、全てのビュー間で共通のカメラパラメータ、または、異なるカメラパラメータを示すフラグを含み得る。前者の例では、対応するカメラパラメータの単一セットが提供され、そして、後者の例では、カメラパラメータの複数セットが提供される。カメラのセットがカメラパラメータを共有する例では、カメラパラメータのユニークなセットだけが提供され得る。そして、SEIメッセージは、カメラパラメータの冗長なセットが送信されないように、どのビューがカメラパラメータのどのセットに対応するかについてのインジケータを含み得る。
【0087】
図8は、本開示の少なくともいくつかの実装に従って構成された、コード化のための一つの例示的なカメラアレイ810および対応するカメラパラメータ800を示す。例えば、シーンのベースビュー141、選択されたビュー142、および、必要であれば、他のビューを獲得するために、カメラアレイ810が使用され得る。つまり、カメラアレイ810は、イマーシブビデオ生成またはキャプチャのために使用され得る。
図8の例において、カメラアレイ810は、カメラC1-C3が第1列(row)にあり、かつ、カメラC4-C6が第2列にあるように、グリッドパターンにおける6つのカメラC1-C6を含んでいる。しかしながら、カメラアレイ810は、任意の間隔レイアウトで任意の数のカメラを有してよい。一つの実施形態において、カメラアレイ810は、カメラの単一の列を含んでいる。さらに、カメラアレイ810は、カメラC1-C6がx-y平面において全て整列されるように示されている。しかしながら、カメラアレイ810のカメラは、任意の方法で配置されてよい。
【0088】
カメラC1-C6それぞれは、対応するカメラパラメータ811、812、813、814、815、816を、それぞれに、有してい。図示されるように、カメラパラメータ811は、カメラC1の位置、カメラC1の配向(orientation)、および、カメラC1の撮像パラメータ(imaging parameter)を含み得る。示されるように、位置パラメータは、カメラC1の座標(x1、y1、z1)を含む。配向パラメータは、ロール、ピッチ、ヨーの値(r1、p1、yaw1)、または、カメラC1の配向を定義するクォータニオン(quaternion)パラメータを含む。カメラC1に関して示されるように、カメラC1-C6それぞれは、3D空間全体にわたり位置決めされ、かつ、配向されてよく、6-DOF運動835として特徴付けられる位置決め及び配向である。これは、カメラC1-C6それぞれが、並進:前/後(例えば、z方向)、上/下(例えば、y方向)、右/左(例えば、x方向)、および、回転:ヨー(例えば、y軸周りの角度)、ロール(例えば、x軸周りの角度)、ピッチ(例えば、z軸周りの角度)、で移動し得ることを示している。撮像パラメータは、投影モード(PM1)、焦点距離(FL1)、視野(FOV1)、Znear値(ZN1)、および、Zfar値(ZF1)のうちの1つ以上を含む。例えば、投影モードは、カメラんいついて全方向コンテンツ、通常視点コンテンツ、または直交コンテンツのうち1つを示し得る。すなわち、投影モードは、全方向投影モード、通常視点投影モード、または正投影(orthographic projection)モードのうち1つを示し得る。
【0089】
同様に、カメラパラメータ812、813、814、815、816は、カメラC2-C6それぞれについて、同様の位置、配向、および撮像パラメータを、それぞれに、含んでいる。特に、カメラアレイパラメータ151によって表されるように、そうしたカメラパラメータ811、812、813、814、815、816、または、カメラアレイパラメータ151によって表されるようなその一部は、ビットストリーム131へと符号化され、そして、ビュー合成における使用のために復号化システム200によって復号される。ここにおいて説明される技法は、カメラアレイ810のカメラパラメータ812、813、814、815、816の効率的なコード化を提供する。
【0090】
カメラC1に関して示されるように、システム110は、6-DOF運動135として特徴付けられる動きで3D空間全体にわたり移動し得る。これは、システム110が、並進:前/後(例えば、x方向)、上/下(例えば、y方向)、右/左(例えば、z方向)、回転:ヨー(例えば、z軸周りの角度α)、ロール(例えば、y軸周りの角度β)、ピッチ(例えば、x軸周りの角度γ)で、移動し得ることを示す。理解されるように、VRフレームといった3Dコンテンツは、システム110のユーザの推定視線に基づいて(例えば、x軸の前方方向に沿って)生成され得る。
【0091】
図9は、本開示の少なくともいくつかの実装に従って構成された、カメラパラメータを含むイマーシブビデオデータを符号化するための一つの例示的なプロセス900を示す。プロセス900は、例えば、符号化システム100によって実行される、例示されるような1つ以上の動作901-908を含んでよい。プロセス900は、動作901で開始され、そこでは、カメラパラメータ符号化が始められる。カメラパラメータのコード化は、例えば、カメラアレイパラメータ151によって表されるように、カメラアレイ810についてカメラパラメータ800をビットストリーム131へと符号化するための、カメラパラメータ符号化モジュール118によって実行され得る。
【0092】
処理は、動作902において継続し、そこでは、カメラアレイのカメラについて位置、配向、および、撮像パラメータが獲得される。そうした位置、配向、および、撮像パラメータは、任意の適切なデータ構造を有し得る。処理は、動作903において継続し、そこでは、特定のカメラパラメータタイプが符号化のために選択される。例えば、説明されるカメラパラメータそれぞれが、順番に処理され得る。
【0093】
処理は、決定動作904において継続し、そこでは、選択されたカメラパラメータタイプについて、特定のパラメータ値が、カメラパラメータによって表されるカメラそれぞれによって共有されるか否かについて決定が為される。もし、そうでなければ、処理は、動作905において継続し、そこでは、カメラについて共有パラメータ値を示すフラグがオフにセットされ(例えば、0)、そして、カメラそれぞれに対する個々のパラメータが別々にコード化される。
【0094】
パラメータ値がカメラパラメータタイプに対するカメラそれぞれによって共有される場合(例えば、全てのカメラC1-C6は、そのパラメータタイプについて同じパラメータ値を有している)、処理は、動作906において継続され、そこでは、カメラについて共有パラメータ値を示すフラグがオンに設定され(例えば、1)、そして、共有値が符号化される。特に、動作904-906は、カメラそれぞれが共有パラメータ値を有する場合に、低減されたオーバーヘッドを提供する。例えば、カメラそれぞれの焦点距離が同じである場合、共有焦点距離フラグがオンに設定され(例えば、1)、そして、フラグおよび共有焦点距離がコード化され得る。そうした処理は、各カメラについて焦点距離を繰り返さないことによってオーバーヘッドを低減する。しかしながら、カメラが焦点距離を共有しない場合、共有焦点距離フラグはオフに設定され、そして、各カメラの焦点距離がコード化される。そうしたフラグは、多数のカメラに対して設定され、そして、次いで、変更され得ることに留意する。例えば、カメラC1-C4が同じパラメータ値を有し、かつ、C5およびC6が異なる場合、オンのフラグが設定されてよく、カメラC1についてパラメータ値が設定され、かつ、C2-C3は、オフのフラグが設定されるまで、同じパラメータ値を使用してよく、そして、C5およびC6に対するパラメータ値が、次いで、個別に信号化される。例えば、共有パラメータ値フラグは、フラグがオフに切り替わるまで、共有パラメータ値が使用されることを示し得る。
【0095】
そうした共有パラメータ値フラグは、単にパラメータ値フラグとして特徴付けられてよく、それらが対応するパラメータ値に基づいてラベル付けまたは識別されてよい。例えば、共有投影モードフラグ(例えば、投影モードフラグまたは投影モード値フラグ)は、第1値を有する投影モードフラグ(例えば、1)に基づいて、全てのカメラC1-C6が同一の投影モード(例えば、全方向投影モード、通常視点投影モード、または正投影モードのうち1つ)を共有する場合、または、カメラが第2値を有する投影モードフラグ(例えば、0)に基づいて、全てのカメラが同一の投影モードを有しないことを示すことができる。共有視野フラグ(例えば、視野フラグまたは視野共有値フラグ)は、第1値を有する視野フラグ(例えば、1)に基づいて、全てのカメラC1-C6が同一視野を共有する場合、または、第2値を有する投影モードフラグ(例えば、0)に基づいて、全てのカメラが同一視野を有しない場合を示すことができる。同様のやり方で、同じZnearとZfarの値を有するカメラは、共有Znearフラグ(例えば、Znearフラグ、Znear共有値フラグ、または最小物理的深さフラグ)、および、共有Zfarフラグ(例えば、Zfarフラグ、Zfar共有値フラグ、または最大物理的深さフラグ)、または、共有Zdistancesフラグ(例えば、Zdistancesフラグ、Zdistances共有値フラグ、または物理的深さフラグ)だけを使用して、ZnearとZfarの両方が全てのカメラC1-C6に対して同一であることを示すために、一緒に、もしくは、別々に信号化され得る。そうしたフラギングの全ての場合に、もしパラメータ値が全てのカメラによって共有されるならば、単一の共有パラメータ値、単一の共有パラメータ値、等のインジケータは、ビットストリームにおいて符号化される。もしそうでなければ、各カメラのための別々のパラメータ値が信号化され得る。
【0096】
さらに、複数のカメラパラメータ値について、共有パラメータ値フラグが使用されてよい。例えば、単一の共有画像フラグを使用して、カメラ間で共有されるべき投影モード、焦点距離、視野、Znear値、およびZfar値の全てを示すことができる。次いで、そうした単一の共有撮像フラグに、投影モード、焦点距離、視野、Znear値、およびZfar値それぞれについてのパラメータ値が続き、そうした値は、他のカメラについて信号化されない。同様に、単一のヨー、ピッチ、ロールフラグ、またはクォータニオンフラグは、ヨー、ピッチ、およびロールを示すために信号化されてよく、または、クォータニオンパラメータは、カメラC1-C6それぞれについて同じであってよい。いくつかの実施形態において、ヨー、ピッチ、ロール、またはクォータニオンパラメータの値(その後、全てのカメラで共有されるもの)が信号化される。いくつかの実施形態において、第2フラグは、ヨー、ピッチ、およびロール、または、クォータニオンパラメータが、ヨー、ピッチ、およびロールについて、0、0、0といったデフォルト値であることを示すことができる。いくつかの実施形態においては、第2フラグが使用されず、そして、単一のヨー、ピッチ、およびロールフラグ、または、クォータニオンフラグがオン(例えば、1)に設定された場合、デフォルト値はデコーダによって推定される。
【0097】
いくつかの実施形態において、カメラパラメータ値は共有されないが、それらは、単一の値を使用して予測されてよい。例えば、カメラC1-C6が列(row)において等間隔で配置されている場合、列位置フラグが備えられてよい。次いで、列位置フラグに基づいて、カメラについて共有されたz位置およびy位置が信号化され、そして、全てのカメラC1-C6に対して同じ値として使用され得る。さらに、カメラC1のx位置は、全てのカメラについて同じである一定のx位置間隔値(例えば、
図8のx
C)を用いて信号化され得る。これにより、カメラC2-C6のx位置は、カメラC1のx位置および一定のx位置間隔値を使用して生成され得る(例えば、カメラCNのx位置=x
1+(N-1)*x
C)。そして、カメラC2-C6の位置の明示的な信号化は無い。
【0098】
同様に、(
図8に示されるように)カメラC1-C6がグリッドに等間隔で配置されている場合、グリッド位置フラグが備えられてよい。グリッド位置フラグに基づいて、次いで、カメラについて共有されたz位置は、信号化され、そして、全てのカメラC1-C6について同一の値として使用され得る。さらに、カメラC1のx位置およびy位置は、全てのカメラについて同じである一定のx位置間隔値(例えば、
図8のx
C)および一定のy位置間隔値(例えば、
図8のy
C)を用いて信号化され得る。これにより、カメラC2-C6のx位置およびy位置は、カメラC1のxおよびy位置、並びに、一定のx位置間隔値および一定のy位置間隔値を使用して生成され得る(C2は((x
1+x
C),(y
1))、C4は((x
1),(y
1+y
C)、C5は((x
1+x
C),(y
1+y
C))にある)。そして、カメラC2-C6の位置の明示的な信号化は無い。
【0099】
処理は、決定動作907において継続し、そこでは、動作903で選択されたカメラパラメータタイプが処理されるべき最後のカメラパラメータタイプであるか否かの決定が行われる。もしそうであれば、処理は、動作908で終了する。もしそうでなければ、前述のように、最後のカメラパラメータタイプが処理されるまで、処理は、動作903において継続する。表現を明瞭にするために、そうした再帰的処理に関して説明したが、プロセス900は、任意の数のカメラパラメータタイプを並列に復号することができる。
【0100】
上述のように、プロセス900は、カメラ位置((x,y,z))、カメラ配向((r,p,yaw)またはクォータニオン値)、および、カメラ撮像パラメータ(PM,FL,FOV,ZN,ZF)を含む、カメラパラメータの効率的な信号化(signaling)を提供する。そうした圧縮技術は、任意の適切な組み合わせで組み合わせることができる。そうした圧縮されたフラグおよび値は、ビットストリームへと符号化され、そして、続いて、
図10に関して説明されるように復号され、かつ、ビュー合成において使用される。いくつかの実施形態において、そうした符号化は、イマーシブビデオデータ符号化の一部を提供し、そして、イマーシブビデオ生成またはキャプチャに対応するカメラアレイの複数のカメラそれぞれについてカメラ投影モードを決定すること、カメラのカメラ投影モードフラグを生成することであり、カメラ投影モードフラグは、共有投影モードを有する各カメラに応答して第1値(例えば、1)を有し、かつ、共有投影モード以外の投影モードを有するカメラのいずれかに応答して第2値(例えば、0)を有すること、および、カメラ投影モードフラグをビットストリームに符号化することを含む。いくつかの実施形態において、第1値を有する第1カメラ投影モードフラグに応答して、ビットストリームは、共有投影モードを示す単一のカメラ投影モードインジケータをさらに含む。いくつかの実施形態において、第2値を有するカメラ投影モードフラグに応答して、ビットストリームは、複数のカメラ投影モードインジケータをさらに含み、カメラそれぞれについて1つずつである。
【0101】
いくつかの実施形態において、符号化は、各カメラによって達成可能な最小物理的深さおよび最大物理的深さを決定すること、カメラについて物理的深さフラグを生成することであり、物理的深さフラグは、共有される最小物理的深さ及び/又は共有される最大物理的深さをカメラが有するか否かこと、および、物理的深さフラグをビットストリームへと符号化すること、をさらに含む。いくつかの実施形態において、符号化は、カメラそれぞれについてヨー、ピッチ、およびロールパラメータ、または、クォータニオンパラメータのうち1つを決定すること、カメラについてヨー、ピッチ、およびロールフラグ、または、クォータニオンフラグを生成することであり、ヨー、ピッチ、およびロールフラグ、または、クォータニオンパラメータフラグは、カメラが、共有ヨー、ピッチ、およびロールパラメータ、または、共有クォータニオンパラメータを有するか否か示すこと、および、ヨー、ピッチ、およびロールフラグ、または、クォータニオンパラメータフラグをビットストリームへと符号化すること、をさらに含む。いくつかの実施態様において、ヨー、ピッチ、およびロールパラメータ、または、クォータニオンパラメータは、デフォルトのヨー、ピッチ、およびロール、または、デフォルトのクォータニオンパラメータフラグ値を示す。いくつかの実施形態において、符号化は、カメラ間における共有物理的間隔を表す共有物理的間隔値を決定すること、および、共有物理的間隔値をビットストリームへと符号化すること、をさらに含む。
【0102】
図10は、本開示の少なくともいくつかの実装に従って構成された、カメラパラメータを含むイマーシブビデオデータを復号するための一つの例示的なプロセス1000を示す。プロセス1000は、例えば、復号化システム200によって実行される、図示されるような1つ以上の動作1001-1008を含んでよい。プロセス1000は、動作1001で始まり、そこでは、カメラパラメータ復号が開始される。カメラパラメータの復号は、例えば、カメラパラメータ復号化モジュール218によって実行され、ビットストリーム131からのカメラアレイパラメータ151によって表されるように、カメラアレイ810についてカメラパラメータ800を復号することができる。
【0103】
処理は、動作1002において継続し、そこでは、カメラパラメータフラグおよびインジケータを含む受信ビットストリームが受信され、そして、任意の適切な技術または技法を使用して復号される。特に、ビットストリームは、再構成するために復号され得る、
図9に関して説明したような、任意のフラグ、パラメータ、インジケータ、等を含んでよい。処理は、動作1002において継続し、そこでは、第1カメラパラメータタイプが選択される。例えば、説明されたカメラパラメータそれぞれは、順番に処理され得る。
【0104】
処理は、決定動作1004において継続し、そこでは、選択されたカメラパラメータタイプについて、選択されたカメラパラメータタイプに対する特定の、または、共有パラメータ値フラグがオン(例えば、1)に設定されているか否かについて決定が行われる。もしそうでなければ、処理は、動作1005において継続し、そこでは、カメラアレイのカメラそれぞれについてカメラパラメータ値が復号される。例えば、カメラは、特定の、または、共有パラメータ値を共有しないせいで、各カメラに対する値は別々に復号される。
【0105】
選択されたカメラパラメータタイプに対する特定の、または、共有パラメータ値フラグがオン(例えば、1)に設定される場合、処理は、動作1006において継続し、そこでは、特定のパラメータ値または共有されたパラメータ値のインジケータまたは値などが復号され、そして、カメラアレイ内の全てのカメラに対して設定される。すなわち、各カメラは、特定の、または、共有パラメータ値について、同一の値が割り当てられる(または、位置情報のコンテキストにおいて、各カメラの位置は、以下で説明されるように、復号された情報を使用して決定される)。動作1004-1006は、共有されたカメラ情報が一度だけフラグ付けされ、かつ、符号化され得るように、効率的にパックされたカメラ情報の復号を提供する。例えば、カメラ内のカメラそれぞれの焦点距離が同一である場合、共有焦点距離フラグ(または、焦点距離フラグ、等)がオン(例えば、1)であるように復号され得る。そして、共有または特定焦点距離、または、そのインジケータが復号され、かつ、各カメラに対して割り当てられる。しかしながら、共有焦点距離フラグがオフ(例えば、0)であるように復号される場合、各カメラの焦点距離は別々に復号される。符号化と同様に、いくつかの実施形態において、1の共有フラグが設定されてよく、そして、フラグが0に切り替えられ、その後新しいパラメータが送信されるまで、適用されるインジケータが送信されてよい。例えば、各カメラは、カメラについて共有が継続されることを示すために、1のフラグが割り当てられ得る。異なる焦点距離を持つ第1カメラは、次いで、0にフラグ付けされ、そして、新しいパラメータが送信される。そうしたフラグは、数多くのカメラについて設定され、そして、次いで、変更され得ることに留意する。
【0106】
符号化に関して説明されるように、そうした共有パラメータ値フラグは、単にパラメータ値フラグとして特徴付けられてよく、そして、それらが対応するパラメータ値に基づいてラベル付けまたは識別されてよい。例えば、共有投影モードフラグは、全てのカメラが同一の投影モードを共有している場合に示すことができ、共有視野フラグは、全てのカメラが同一の視野を共有している場合に示すことができ、共有Znearフラグ、共有Zfarフラグ、または共有Zdistancesフラグは、それぞれに、カメラが達成可能な最小物理的深さ、カメラが達成可能な最大物理的深さ、またはその両方が、全てのカメラについて同一であることを示すことができる。再び、カメラパラメータ符号化に関して説明されるように、共用パラメータ値フラグが、複数のカメラパラメータ値に対して使用されてよい。例えば、単一の共有撮像フラグは、全ての投影モード、焦点距離、視野、Znear値、およびZfar値の全てが、全てのカメラについて同一であることを示すことができる。そうした共有画像フラグがオン(on)として復号されるとき、投影モード、焦点距離、視野、Znear値、およびZfar値それぞれに対するインジケータまたはパラメータ値が、ビットストリームから復号され、全てのカメラに適用される。
【0107】
同様に、共有ヨー、ピッチ、ロールフラグ、またはクォータニオンフラグが復号されてよく、そして、オンとしてフラグが付されると、ヨー、ピッチ、およびロールの単一セット、またはクォータニオンパラメータが復号されて、全てのカメラに適用される。あるいは、共有ヨー、ピッチ、ロールフラグ、またはオンであるクォータニオンフラグは、そうしたパラメータが全てのカメラで共有されており、パラメータがヨー、ピッチ、ロールについて0、0、0のデフォルト値に設定されることを示すことができる。
【0108】
さらに、いくつかの実施形態において、そうしたフラグ付けおよびパラメータ共有(sharing)は、明示的に符号化されていないデコーダにおける値を決定するために、デコーダによって使用されてよい。例えば、ビットストリームは、カメラがオンに設定されている列位置フラグを決定するために復号されてよい。列位置フラグに基づいて、カメラの共有されたz位置およびy位置が復号され、そして、全てのカメラC1-C6に割り当てられる。さらに、カメラC1のx位置(例えば、
図8のx
1)および一定のx位置間隔値(例えば、x
C)が復号される。カメラC1-C6それぞれについてのx寸法におけるカメラ位置は、次いで、カメラC1がx
1にあり、カメラC2-C6が列内の先のカメラに対してx
Cによってオフセットされた位置にあるようにデコーダによって決定されてよい(例えば、カメラCNx位置=x
1+(N-1)*x
Cであり、かつ、カメラC2-C6の位置の明示的な信号化はない)。いくつかの実施形態において、グリッド位置フラグがオンであることを決定するように、ビットストリームが復号され、提供され得る。グリッド位置フラグに基づいて、カメラの共有z位置が復号され、そして、全てのカメラC1-C6に割り当てられる。カメラC1のx位置およびy位置(それぞれ、x
1およびy
1)並びに、一定のx位置間隔値(例えば、x
C)および一定のy位置間隔値(例えば、y
C)が、復号される。これにより、カメラC2-C6のx位置およびy位置は、カメラC1のx位置およびy位置、並びに、一定のx位置およびy位置間隔値を使用して生成され得る。
【0109】
処理は、決定動作1007において継続し、そこでは、動作1003において選択されたカメラパラメータタイプが処理されるべき最後のカメラパラメータタイプであるか否かについての決定が行われる。もしそうであれば、処理は、動作1008で終了する。もしそうでなければ、前述のように、最後のカメラパラメータタイプが処理されるまで、処理は動作1003において継続する。表現を明確にするために、そうした再帰的処理に関して図示されているが、プロセス1000は、任意の数のカメラパラメータタイプを並列に復号することができる。
【0110】
上述のように、プロセス1000は、カメラ位置((x,y,z))、カメラ配向((r,p,yaw)またはクォータニオン値)、および、カメラ撮像パラメータ(PM,FL,FOV,ZN,ZF)を含むカメラパラメータの復号を提供する。いくつかの実施形態において、そうした復号化は、イマーシブビデオデータ復号化の一部を提供し、そして、深度ビュー、テクスチャビュー、およびカメラアレイの複数のカメラに対応するカメラ投影モードフラグを決定するためにビットストリームを復号することを含み、カメラ投影モードフラグは、全てのカメラが特定の投影モードを有することを示す第1値、または、カメラのいずれかが特定の投影モード以外の投影モードを有することを示す第2値を有し、深度ビュー、テクスチャビュー、およびカメラ投影モードフラグ深度ビューに基づいて復号されたビューを生成する。いくつかの実施形態において、第1値を有する第1カメラ投影モードフラグに応答して、ビットストリームは、さらに、特定の投影モードを示す単一カメラ投影モードインジケータを含む。いくつかの実施形態において、第2値を有するカメラ投影モードフラグに応答して、ビットストリームは、さらに、複数のカメラ投影モードインジケータを含み、カメラそれぞれについて1つである。いくつかの実施形態において、共有カメラ投影モードは、全方向投影モード、通常視点投影モード、または正投影モードのうちの少なくとも1つを含む。
【0111】
いくつかの実施形態において、ビットストリームは、さらに、示すヨー、ピッチ、ロールフラグ、またはカメラのクォータニオンフラグのうちの1つを含み、ヨー、ピッチ、ロールフラグ、またはカメラのクォータニオンフラグは、カメラが共有ヨー、ピッチ、ロールパラメータまたは共有クォータニオンパラメータを有するか否かを示す。いくつかの実施形態において、ビットストリームは、さらに、カメラについて物理的深さフラグを含み、物理的深さフラグは、カメラが共有された最小物理的深さ及び/又は共有された最大物理的深さを有するか否かを示す。いくつかの実施形態において、復号プロセスは、さらに、カメラが共有ヨー、ピッチ、ロールパラメータ、または、共有クォータニオンパラメータを有することを示す、ヨー、ピッチ、ロールフラグ、または、クォータニオンフラグに応答し、カメラそれぞれについてヨー、ピッチ、ロールパラメータ、またはクォータニオンパラメータは、デフォルトのヨー、ピッチ、ロールパラメータ、または、デフォルトのクォータニオンパラメータである。いくつかの実施形態において、ビットストリームは、さらに、共有物理的間隔値を含み、そして、復号処理は、さらに、共有物理的間隔値を使用してカメラ間の物理的間隔を決定することを含む。
【0112】
説明は、これから、3DoF+規格の準拠、および、ここにおいて記載されるテクスチャおよび深さを表現するために作成されたアトラス(atlases)のサポートに移る。
【0113】
HEVCは2バイトNAL(ネットワーク抽象レイヤ(network abstraction layer))ユニットヘッダを使用し、そのシンタックスは、以下にコピーされている。それは、nuh_layer_idに割り当てられた6ビットを含む。
【表2】
表2:NALユニットヘッダの実施例
【0114】
HEVCは、セクション7で基本ビデオパラメータセット(VPS)を定義し、そして、附属書(Annex)FでVPS拡張(VPS extension)を定義している。附属書Fは、独立非ベース層復号化(Independent Non-Base Layer Decoding、INBLD)能力を記述しており、そこでは、独立にコード化された層は、0に等しくないnuh_layer_id値を有し得る。
【0115】
ベースVPSは、vps_max_layers_minus1シンタックス要素を含む。VPS拡張は、シンタックス要素splitting_flag、scalability_mask_flag[i]、dimension_id_len_minus1[j]、dimension_id[i][j]、およびdirect_depency_flag[i][j]を含む。これらのシンタックス要素は、ScalabilityId変数の導出、および層間の依存関係を含む、各層の特性を示すために使用される。
【0116】
ScalabilityId変数は、以下のように、スケーラビリティディメンションまたは層特性にマッピングされ得る。
【表3】
表3:スケーラビリティ次元に対するScalabilityIdマッピング
【0117】
附属書Gは、マルチビューメインプロファイルを定義する。ここで、強化層(enhancement layer)は、ベース層から予測される層間層(inter-layer)である。
【0118】
いくつかの態様においては、テクスチャおよび深さを表すために、2つのアトラスが作成される。これらの2つのアトラスは、同じビットストリーム内の別々の層として符号化されてよく、それぞれが異なる値nuh_layer_idを有する。深さアトラス層(depth atlas layer)は独立しており、そして、テクスチャアトラス層から層間予測を行うことはできない。
【0119】
新たな「イマーシブ(“Immersive”)」HEVCプロファイルがここにおいて提供される。一つの実施形態において、プロファイルは、2つの独立した層(layers)を許容し、それぞれは、INBLD(独立非ベース層復号化)機能を有するメイン10(またはメイン)プロファイルに個々に適合する。別の実施形態においては、追加のプロファイルが、メインおよびメイン10プロファイルで必要とされる4:2:0のクロマフォーマットではなく、特に、深さのモノクロ表現を可能にするために、各独立層についてサポートされる。
【0120】
このプロファイルの作成と定義により、ビットストリームおよびデコーダは、相互運用性(interoperability)を確保するために必要な、3DoF+規格への適合性を示すことができる。
【0121】
いくつかの実施形態においては、スケーラビリティマスクテーブル中の新しいエントリが提供される。AtlasFlagであり、これは、リザーブ値(reserved value)のうち1つを使用することによって、コード化された画像アトラスであることを示すように設定されることを要する。テクスチャアトラス層と深さアトラス層を区別するために、既存のDepthLayerFlagが使用され得る。
【表4】
表4: スケーラビリティ次元に対するScalabilityIdのマッピングの修正
【0122】
イマーシブプロファイルは、テクスチャアトラス層が、0に等しいDepthLayerFlagおよび1に等しいAtlasFlagを有すること、および、ScalabilityId値から導出されるように、アトラス層が1に等しいDepthLayerFlagおよび1に等しいAtlasFlagを有することを必要とする。
【0123】
イマーシブプロファイルは、2つのレイヤについてnuh_layer_idの値に追加の必要条件を課さず、そして、VPSは、ScalabilityIdの適切な値を信号化する方法においてフレキシビリティを提供する。
【0124】
説明は、これから、イマーシブプロファイルについてScalabilityId値を適切に設定するためにVPSを使用する最もビットレート効率の良い方法に移る。いくつかの実施態様においては、0のnuh_layer_idがテクスチャアトラス層について使用され、そして、1のnuh_layer_idが深さアトラス層について使用すされる
【0125】
いくつかの実施形態においては、nuh_layer_idのビットの多層特性への単純なマッピングを示すために、splitting_flagが1に等しく設定される。
【0126】
いくつかの実施形態において、scalability_mask_flag[i]は、使用される層の次元(dimension)が0(DepthLayerFlag)および4(AtlasFlagの場合)であることを示すために、00000010001(各ビットはアレイ値を表す)に等しく設定される。
【0127】
いくつかの実施形態においては、AtlasFlagを表すために必要とされるビットが1ビットだけであることを示すために、dimension_id_len_minus1[1]が0に等しく設定される。
【0128】
いくつかの実施態様においては、深さアトラス層がテクスチャアトラス層に依存しないことを示すために、direct_dependency_flag[1][0]が0に設定される。
【0129】
2つの層について、以下の表5は、関連するシンタックス要素および変数の値を示している。グレーでハイライトされたテーブル値(すなわち、DepthLayerFlag、AtlasFlag、ScalabilityId、および、DepthAtlasに対するdirect_dependency_flag)が必要とされ、一方で、ハイライトされていない値(すなわち、nuh_layer_id)は変動し得る。いくつかの実施形態においては、DepthLayerFlagおよびAtlasFlagの値がイマーシブプロファイルにおいて必要とされ、一方で、nuh_layer_id値は変動し得る。
【表5】
表5:シンタックス要素と変数
【0130】
説明は、これから、記述される技術、エンコーダ、デコーダを実装するためのシステムとデバイスに移る。例えば、ここにおいて説明される任意のエンコーダまたはデコーダは、
図11に示されるシステム、
図12に示されるシステム、及び/又は、
図13に示されるデバイスを介して実施され得る。特に、説明した技術、エンコーダ、およびデコーダは、パーソナルコンピュータ、ラップトップコンピュータ、タブレット、ファブレット、スマートフォン、デジタルカメラ、ゲーム機、ウェアラブルデバイス、ディスプレイデバイス、オールインワンデバイス、ツーインワンデバイスといった、任意の適切なデバイスまたはプラットフォームを介して実施され得る。
【0131】
ここにおいて説明されるシステムの種々のコンポーネントは、ソフトウェア、ファームウェア、及び/又は、ハードウェア、及び/又は、それらの任意の組み合わせにおいて実装され得る。例えば、ここにおいて説明される装置またはシステムの種々のコンポーネントは、少なくとも部分的に、例えば、スマートフォンといった計算システムに見られるような、計算システムオンチップ(System-On-Chip、SoC)のハードウェアによって提供され得る。当業者であれば、ここにおいて説明されるシステムが、対応する図に描かれていない追加のコンポーネントを含み得ることを認識するだろう。例えば、ここにおいて説明されるシステムは、明確化のために図示していない追加のコンポーネントを含んでよい。
【0132】
ここにおいて説明される例示的なプロセスの実施は、図示された順序で示された全ての動作の実施を含み得るが、一方、本開示は、この点に関して限定されず、かつ、種々の例において、ここにおいて説明される例示的なプロセスの実施は、図示された動作、図示されたものとは異なる順序で実施された動作、または、追加の動作のサブセットだけを含み得る。
【0133】
加えて、ここにおいて説明される動作のうち任意の1つ以上は、1つ以上のコンピュータプログラム製品によって提供される命令に応答して行われ得る。そうしたプログラム製品は、例えば、プロセッサによって実行されると、ここにおいて説明される機能を提供することができる命令を提供する信号生成媒体(signal bearing media)を含み得る。コンピュータプログラム製品は、1つ以上のマシンで読取り可能な媒体の任意の形態において提供され得る。従って、例えば、1つ以上のグラフィックス処理ユニットまたはプロセッサコアを含むプロセッサは、1つ以上のマシンで読取り可能な媒体によってプロセッサに伝達されるプログラムコード、及び/又は、命令または命令セットに応答して、ここにおける例示的なプロセスの1つ以上のブロックを引き受けることができる。一般的に、マシンで読取り可能な媒体は、ここにおいて説明される装置及び/又はシステムのいずれかが、装置またはシステムの少なくとも一部、または、ここにおいて説明される任意の他のモジュールまたはコンポーネントを実装するようにできるプログラムコード及び/又は命令セットの形態においてソフトウェアを搬送することができる。
【0134】
ここにおいて説明される任意の実施において使用されるように、「モジュール(“module”)」という用語は、ここにおいて説明される機能を提供するように構成されたソフトウェア論理、ファームウェア論理、ハードウェア論理、及び/又は、回路の任意の組み合わせを指す。ソフトウェアは、ソフトウェアパッケージ、コード、及び/又は、命令セットまたは命令として具体化され得る。そして、「ハードウェア(“hardware”)」は、ここにおいて説明される任意の実施において使用されるように、例えば、単独でまたは任意の組み合わせで、ハードワイヤード回路、プログラマブル回路、状態マシン回路、固定機能回路、実行ユニット回路、及び/又は、プログラマブル回路によって実行される命令を保管するファームウェアを含み得る。モジュールは、集合的または個別的に、例えば、集積回路(IC)、システムオンチップ(SoC)など、より大きなシステムの一部を形成する回路として具体化され得る。
【0135】
図11は、本開示の少なくともいくつかの実装に従って構成された、イマーシブビデオデータを符号化するための例示的システム1100の説明図である。
図11に示されるように、システム1100は、1つ以上の中央処理装置1101、1つ以上のグラフィックス処理ユニット1102、メモリストア1103、ディスプレイ1104、および、送信器1105を含み得る。また、示されるように、グラフィックス処理ユニット1102は、ビット深さマッピングモジュール1111、カメラパラメータ符号化モジュール1112、エンコーダ1121、デコーダ1122、及び/又は、ビュー合成モジュール1123を含み、または、実装し得る。そうしたモジュールは、ここにおいて説明される動作を実行するために実装され得る。システム1100の例において、メモリストア1103は、テクスチャビュー、深度ビュー、イマーシブビデオデータ、区分ごとの線形マッピングパラメータ、ビットストリームデータ、合成ビューデータ、カメラアレイパラメータ、または、ここにおいて説明される任意の他のデータまたはデータ構造を保管し得る。
【0136】
図示されるように、いくつかの例において、ビット深さマッピングモジュール1111、カメラパラメータ符号化モジュール1112、エンコーダ1121、デコーダ1122、及び/又は、ビュー合成モジュール1123は、グラフィックス処理ユニット1102を介して実装される。他の例においては、ビット深さマッピングモジュール1111、カメラパラメータ符号化モジュール1112、エンコーダ1121、デコーダ1122、及び/又は、ビュー合成モジュール1123の1つ以上の部分が、中央処理装置1101またはシステム1100の画像処理装置(図示なし)を介して実装される。さらに他の例においては、ビット深さマッピングモジュール1111、カメラパラメータ符号化モジュール1112、エンコーダ1121、デコーダ1122、及び/又は、ビュー合成モジュール1123の1つ以上の部分が、画像処理パイプライン、グラフィックスパイプラインなどを介して実装される。
【0137】
グラフィックス処理ユニット1102は、ここにおいて説明される動作を提供することができる任意の数およびタイプのグラフィックス処理ユニットを含み得る。そうした動作は、ソフトウェア、ハードウェア、または、それらの組み合わせによって実施され得る。例えば、グラフィックス処理ユニット1102は、メモリストア1103から得られたテクスチャビュー、深度ビュー、ビットストリームデータなどを操作するために専用の回路を含み得る。中央処理装置1101は、システム1100のための制御および他の高レベルの機能を提供し、かつ/あるいは、ここにおいて説明されるような任意の動作を提供することができる任意の数およびタイプの処理装置またはモジュールを含み得る。メモリストア1103は、揮発性メモリ(例えば、スタティック・ランダムアクセスメモリ(SRAM)、ダイナミック・ランダムアクセスメモリ(DRAM)、等)または不揮発性メモリ(例えば、フラッシュメモリ、等)などの任意のタイプのメモリであってよい。非限定的な例において、メモリストア1103は、キャッシュメモリによって実装され得る。一つの実施形態において、ビット深さマッピングモジュール1111、カメラパラメータ符号化モジュール1112、エンコーダ1121、デコーダ1122、及び/又は、ビュー合成モジュール1123の1つ以上の部分は、グラフィックス処理ユニット1102の実行ユニット(execution unit、EU)を介して実行される。EUは、例えば、ワイドアレイのプログラマブル論理機能を提供することができる論理コアまたはコアといった、プログラマブル論理または回路を含み得る。一つの実施形態において、ビット深さマッピングモジュール1111、カメラパラメータ符号化モジュール1112、エンコーダ1121、デコーダ1122、及び/又は、ビュー合成モジュール1123の1つ以上の部分は、固定機能回路(fixed function circuitry)などといった、専用ハードウェアを介して実装される。固定機能回路は、専用論理または専用回路を含んでよく、そして、固定機能エントリポイントのセットを提供して、固定目的または固定機能のために専用論理にマッピングすることができる。いくつかの実施形態において、ビット深さマッピングモジュール1111、カメラパラメータ符号化モジュール1112、エンコーダ1121、デコーダ1122、及び/又は、ビュー合成モジュール1123の1つ以上の部分は、特定用途向け集積回路(ASIC)を介して実装される。ASICは、ここにおいて説明される動作を実行するようにカスタマイズされた集積回路を含み得る。
【0138】
図12は、本開示の少なくとも一部の実施形態に従って構成された、例示的なシステム1200の説明図である。様々な実装において、システム1200は、モバイルデバイスシステムであってよいが、システム1200は、このコンテキストに限定されない。例えば、システム1200は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトラ・ラップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビ、スマートデバイス(例えば、スマートフォン、スマートタブレット、またはスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス、カメラ(例えば、ポイントアンドシュートカメラ、スーパーズームカメラ、デジタル一眼レフ(DSLR)カメラ)、監視カメラ、カメラを含む監視システム、等に組み込むことができる。
【0139】
種々の実施態様において、システム1200は、ディスプレイ1220に接続されたプラットフォーム1202を含む。プラットフォーム1202は、コンテンツサービスデバイス1230またはコンテンツ配信デバイス1240といったコンテンツデバイス、または、画像センサ1219といった他のコンテンツソースからコンテンツを受信することができる。例えば、プラットフォーム1202は、ここにおいて説明されるように、画像センサ1219または任意の他のコンテンツソースから画像データを受信することができる。1つ以上のナビゲーション機能を含むナビゲーションコントローラ1250を使用して、例えば、プラットフォーム1202及び/又はディスプレイ1220と対話(interact)することができる。これらのコンポーネントそれぞれは、以下でより詳細に説明される。
【0140】
種々の実装において、プラットフォーム1202は、チップセット1205、プロセッサ1210、メモリ1212、アンテナ1213、ストレージ1214、グラフィックスサブシステム1215、アプリケーション1216、画像信号プロセッサ1217、及び/又は、無線装置(radio)1218の任意の組み合わせを含み得る。チップセット1205は、プロセッサ1210、メモリ1212、ストレージ1214、グラフィックスサブシステム1215、アプリケーション1216、画像信号プロセッサ1217、及び/又は、無線装置1218の間の相互通信を提供することができる。例えば、チップセット1205は、ストレージ1214との相互通信を提供することができるストレージアダプタ(図示なし)を含み得る。
【0141】
プロセッサ1210は、複合命令セットコンピュータまたは縮小命令セットコンピュータプロセッサ、x86命令セット互換プロセッサ、マルチコア、または、任意の他のマイクロプロセッサまたは中央処理ユニットとして実装され得る。種々の実装において、プロセッサ1210は、デュアルコアプロセッサ、デュアルコアモバイルプロセッサ、等であってよい。
【0142】
メモリ1212は、これらに限定されるわけではないが、ランダムアクセスメモリ(RAM)、ダイナミック・ランダムアクセス・モリ(DRAM)、またはスタティックRAM(SRAM)といった、揮発性メモリデバイスとして実装され得る。
【0143】
ストレージ1214は、これらに限定されるわけではないが、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部ストレージ、取り付けられた(attached)ストレージ、フラッシュメモリ、バッテリバックアップSDRAM(シンクロナスDRAM)、及び/又は、ネットワークアクセス可能ストレージデバイスといった、不揮発性ストレージとして実装され得る。様々な実装において、ストレージ1214は、例えば、複数のハードドライブが含まれる場合に、価値のあるデジタルメディアに対するストレージ性能強化保護(storage performance enhanced protection)を増加する技術を含んでよい。
【0144】
画像信号プロセッサ1217は、画像処理のために使用される特殊化されたデジタル信号プロセッサ、等として実装され得る。いくつかの例において、画像信号プロセッサ1217は、単一命令多重データまたは複数命令多重データアーキテクチャ、等に基づいて実装され得る。いくつかの例において、画像信号プロセッサ1217は、メディアプロセッサとして特徴付けられ得る。ここにおいて説明されるように、画像信号プロセッサ1217は、チップアーキテクチャ上のシステムに基づいて、かつ/あるいは、マルチコアアーキテクチャに基づいて、実装されてよい。
【0145】
グラフィックスサブシステム1215は、表示のための静止画またはビデオといった画像の処理を実行することができる。グラフィックスサブシステム1215は、例えば、グラフィックス処理ユニットまたはビジュアル処理ユニットであってよい。アナログまたはデジタルインターフェイスを使用して、グラフィックスサブシステム1215とディスプレイ1220とを通信可能に接続することができる。例えば、インターフェイスは、High-Definition Multimedia Interface、DisplayPort、無線HDMI(登録商標)、及び/又は、無線HD準拠技術のいずれかであってよい。グラフィックスサブシステム1215は、プロセッサ1210またはチップセット1205へと統合されてよい。いくつか実装形態において、グラフィックスサブシステム1215は、チップセット1205に通信可能に接続されたスタンドアロン装置であってよい。
【0146】
ここにおいて説明されるグラフィックス及び/又はビデオ処理技術は、種々のハードウェアアーキテクチャにおいて実装され得る。例えば、グラフィックス及び/又はビデオ機能は、チップセット内に統合されてよい。代替的に、個別のグラフィックス及び/又はビデオプロセッサが使用され得る。さらに別の実装として、グラフィックス及び/又はビデオ機能は、マルチコアプロセッサを含む汎用プロセッサによって提供され得る。さらなる実施形態において、機能は、民生用電子装置において実装されてよい。
【0147】
無線装置1218は、種々の適切な無線通信技術を使用して信号を送受信することが可能な1つ以上の無線を含み得る。そうした技術は、1つ以上の無線ネットワークにわたる通信を含み得る。無線ネットワークの例は(これらに限定されるわけではないが)、無線ローカルエリアネットワーク(WLAN)、無線パーソナルエリアネットワーク(WPAN)、無線大都市エリアネットワーク(WMAN)、セルラネットワーク、および、衛星ネットワークを含む。そうしたネットワークにわたる通信において、無線装置1218は、任意のバージョンの1つ以上の適用可能な規格に従って動作し得る。
【0148】
様々な実施形態において、ディスプレイ1220は、任意のテレビジョンタイプのモニタまたはディスプレイを含み得る。ディスプレイ1220は、例えば、コンピュータディスプレイスクリーン、タッチスクリーンディスプレイ、ビデオモニタ、テレビジョンのような装置、及び/又は、テレビジョンを含み得る。ディスプレイ1220は、デジタル及び/又はアナログであってよい。様々な実装において、ディスプレイ1220は、ホログラフィ表示であってもよい。また、ディスプレイ1220は、視覚的投影を受容し得る透明表面(transparent surface)であってよい。そうした投影は、様々な形態の情報、画像、及び/又は、オブジェクトを伝達し得る。例えば、そうした投影は、モバイル拡張現実(MAR)アプリケーションのための視覚的オーバレイであってよい。1つ以上のソフトウェアアプリケーション1216の制御下で、プラットフォーム1202は、ディスプレイ1220上にユーザインターフェイス1222を表示し得る。
【0149】
様々な実装において、コンテンツサービスデバイス1230は、国内、国際、及び/又は、独立したサービスによってホストされてよく、従って、例えば、インターネットを介してプラットフォーム1202にアクセス可能であり得る。コンテンツサービスデバイス1230は、プラットフォーム1202及び/又はディスプレイ1220に接続され得る。プラットフォーム1202及び/又はコンテンツサービスデバイス1230は、ネットワーク1260との間で媒体情報(media information)を通信(例えば、送受信)するために、ネットワーク1260に接続され得る。コンテンツ配信デバイス1240は、また、プラットフォーム1202及び/又はディスプレイ1220にも接続され得る。
【0150】
画像センサ1219は、シーンに基づいて画像データを提供し得る任意の適切な画像センサを含んでよい。例えば、画像センサ1219は、半導体電荷結合素子ベースのセンサ、相補型金属酸化物半導体ベースのセンサ、N型金属酸化物半導体ベースのセンサ、等を含み得る。例えば、画像センサ1219は、画像データを生成するためにシーンの情報を検出し得る任意のデバイスを含み得る。
【0151】
様々な実装において、コンテンツサービスデバイス1230は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、インターネット可能なデバイス、または、デジタル情報及び/又はコンテンツを配信することができるアプライアンス、および、コンテンツプロバイダとプラットフォーム1202及び/又はディスプレイ1220との間で、ネットワーク1260を介して、または直接的に、コンテンツを一方向または双方向に通信することができる他の同様なデバイス、を含み得る。コンテンツは、ネットワーク1260を介して、システム1200内のコンポーネントおよびコンテンツプロバイダのいずれか1つとの間及び/又はそれらから、一方向及び/又は双方向に通信され得ることが正しく理解されるだろう。コンテンツの例は、例えば、ビデオ、音楽、医療、およびゲーム情報などを含む、任意の媒体情報を含み得る。
【0152】
コンテンツサービスデバイス、1230は、媒体情報、デジタル情報、及び/又は他のコンテンツを含むケーブルテレビジョン・プログラミングといった、コンテンツを受信することができる。コンテンツプロバイダの例は、任意のケーブルまたは衛星テレビ、もしくは、無線またはインターネットのコンテンツプロバイダを含み得る。提供される実施例は、本開示に従った実施を何らかの形で制限するように意図されたものではない。
【0153】
様々な実装において、プラットフォーム1202は、1つ以上のナビゲーション機能を有するナビゲーションコントローラ1250から制御信号を受信することができる。ナビゲーションコントローラ1250のナビゲーション機能は、例えば、ユーザインターフェイス1222と対話(interact)するために使用され得る。様々な実施形態において、ナビゲーションコントローラ1250は、ユーザが空間(例えば、連続および多次元)データをコンピュータに入力することを可能にするコンピュータハードウェアコンポーネント(特に、ヒューマンインターフェイスデバイス)であり得るポインティングデバイスであってよい。グラフィカルユーザインターフェイス(GUI)、並びに、テレビおよびモニタといった、多くのシステムにより、ユーザは、物理的ジェスチャを用いてコンピュータ又はテレビジョンを制御し、データを提供することができる。
【0154】
ナビゲーションコントローラ1250のナビゲーション機能の動きは、ディスプレイ上に表示されるポインタ、カーソル、フォーカスリング、または他の視覚インジケータの動きによって、ディスプレイ(例えば、ディスプレイ1220)上で複製(replicated)され得る。例えば、ソフトウェアアプリケーション1216の制御下で、ナビゲーションコントローラ1250に置かれているナビゲーション機能は、例えば、ユーザインターフェイス1222上に表示される仮想ナビゲーション機能にマッピングされ得る。様々な実施形態において、ナビゲーションコントローラ1250は、別個のコンポーネントでなくてよいが、プラットフォーム1202及び/又はディスプレイ1220へと統合されてよい。しかしながら、本開示は、ここにおいて示される要素または記述されるコンテキストに限定されない。
【0155】
種々の実装において、ドライバ(図示なし)は、例えば、イネーブルされたときに、初期ブート(boot-up)後、ボタンのタッチで、テレビのようにプラットフォーム1202を、ユーザが即座にターンオンまたはオフできるようにする技術を含み得る。プログラムロジックにより、プラットフォーム1202は、プラットフォームがターン「オフ(“off”)」されている場合でさえも、コンテンツをメディアアダプタ、または、他のコンテンツサービスデバイス1230、もしくは、コンテンツ配信デバイス1240に対してストリーム(stream)することができる。加えて、チップセット1205は、例えば、5.1サラウンドサウンドオーディオ及び/又は高精細度7.1サラウンドサウンドオーディオのハードウェア及び/又はソフトウェアサポートを含み得る。ドライバは、統合グラフィックプラットフォームのためのグラフィックスドライバを含み得る。様々な実施形態において、グラフィックスドライバは、ペリフェラルコンポーネント相互接続(PCI)グラフィックスカードを含み得る。
【0156】
様々な実装においては、システム1200に示されるコンポーネントのうち任意の1つ以上が統合され得る。例えば、プラットフォーム1202およびコンテンツサービスデバイス1230が、統合されてよく、または、プラットフォーム1202およびコンテンツ配信デバイス1240が、統合されてよく、もしくは、プラットフォーム1202、コンテンツサービスデバイス1230、およびコンテンツ配信デバイス1240が、例えば、統合されてよい。様々な実施形態において、プラットフォーム1202およびディスプレイ1220は、統合ユニットであり得る。ディスプレイ1220およびコンテンツサービスデバイス1230が、例えば、統合されてよく、または、ディスプレイ1220およびコンテンツ配信デバイス1240が統合されてよい。これらの実施例は、本開示を限定するものではない。
【0157】
様々な実施形態において、システム1200は、無線システム、有線システム、または、その両方の組み合わせとして実装されてよい。無線システムとして実装される場合、システム1200は、1つ以上のアンテナ、送信器、受信器、トランシーバ、増幅器、フィルタ、制御論理など、といった無線共有媒体(wireless shared media)を介して通信するのに適したコンポーネントおよびインターフェイスを含み得る。無線共有媒体の一つの例は、RFスペクトルなど、といった無線スペクトルの一部を含み得る。有線システムとして実装される場合、システム1200は、入出力アダプタ、入力/出力(I/O)アダプタを対応する有線通信媒体に接続するための物理コネクタ、ネットワークインターフェイスカード(NIC)、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ、等といった有線通信媒体を介して通信するのに適したコンポーネントおよびインターフェイスを含み得る。有線通信媒体の例は、ワイヤ、ケーブル、メタルリード、プリント回路基板(PCB)、バックプレーン、スイッチファブリック(switch fabric)、半導体資料、ツイストペアワイヤ、同軸ケーブル、光ファイバ、等を含み得る。
【0158】
プラットフォーム1202は、情報を通信するための1つ以上の論理的または物理的チャネルを確立することができる。情報は、媒体情報および制御情報を含み得る。媒体情報は、ユーザについて意図されたコンテンツを表す任意のデータを参照し得る。コンテンツの例は、例えば、音声会話、ビデオ会議、ストリーミングビデオ、電子メールメッセージ、ボイスメールメッセージ、英数字記号、グラフィックス、画像、ビデオ、テキスト、等からのデータを含み得る。音声会話からのデータは、例えば、音声情報、無音期間、バックグラウンドノイズ、快適雑音、トーン、等であり得る。制御情報は、自動化システムのためのコマンド、命令、または制御ワードを表す任意のデータを参照し得る。例えば、制御情報は、システムを通して媒体情報をルーティングするために使用されてよく、または、ノードに所定の方法で媒体情報を処理するように指示するために使用され得る。しかしながら、実施形態は、
図12に示され又は説明された要素またはコンテキストに限定されるものではない。
【0159】
上述のように、システム1200は、様々な物理的スタイルまたはフォームファクタにおいて具体化され得る。
図13は、本開示の少なくともいくつかの実施例に従って構成された、一つの例示的なスモールフォームファクタデバイス1300を示す。いくつかの例において、システム1200は、デバイス1300を介して実施されてよい。他の例においては、ここにおいて説明される他のシステム、コンポーネント、またはモジュール、もしくは、その一部が、デバイス1300を介して実装され得る。様々な実施形態において、例えば、デバイス1300は、無線能力を有するモバイルコンピューティングデバイスとして実装され得る。モバイルコンピューティングデバイスは、処理システム、および、例えば、1つ以上のバッテリといった、モバイル電源または電源を有する任意のデバイスを参照し得る。
【0160】
モバイルコンピューティングデバイスの例は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトラ・ラップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント(PDA)、携帯電話、携帯電話/PDAの組み合わせ、スマートデバイス(例えば、スマートフォン、スマートタブレット、またはスマートテレビジョン)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス、カメラ(例えば、ポイント-アンド-シュートカメラ、スーパーズームカメラ、デジタルシングルレンズリフレックス(DSLR)カメラ)、等を含み得る。
【0161】
モバイルコンピューティングデバイスの例は、また、自動車またはロボットによって実施されるように構成されたコンピュータ、または、リスト(wrist)コンピュータ、フィンガーコンピュータ、リングコンピュータ、眼鏡コンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、靴コンピュータ、衣類コンピュータ、および他のウェアラブルコンピュータといった、人によって装着されるコンピュータを含み得る。様々な実施形態において、例えば、モバイルコンピューティングデバイスは、音声通信及び/又はデータ通信と同様に、コンピュータアプリケーションを実行することができるスマートフォンとして実装されてよい。いくつかの実施形態は、一つの例として、スマートフォンとして実装されるモバイルコンピューティングデバイスを用いて説明され得るが、他の実施形態も同様に他の無線モバイルコンピューティングデバイスを用いて実装され得ることが理解されるだろう。本実施形態は、このコンテキストに限定されるものではない。
【0162】
図13に示されるように、デバイス1300は、フロント1301およびバック1302を有するハウジングを含んでよい。デバイス1300は、ディスプレイ1304、入力/出力(I/O)デバイス1306、カラーカメラ1321、カラーカメラ1322、および統合アンテナ1308を含む。いくつかの実施態様において、カラーカメラ1321およびカラーカメラ1322は、ここにおいて説明されるように、平面画像を獲得する。いくつかの実施形態において、デバイス1300は、カラーカメラ1321および1322を含まず、デバイス1300は、他のデバイスから入力画像データ(例えば、ここにおいて説明される任意の入力画像データ)を獲得する。デバイス1300は、また、ナビゲーション機能1312を含んでよい。I/Oデバイス1306は、モバイルコンピューティングデバイスに情報を入力するための任意の適切なI/Oデバイスを含み得る。I/Oデバイス1306の例は、英数字キーボード、数字キーパッド、タッチパッド、入力キー、ボタン、スイッチ、マイクロホン、スピーカ、音声認識装置、およびソフトウェア、等を含み得る。情報は、また、マイクロホン(図示なし)を介してデバイス1300に入力されてよく、または、音声認識装置によってデジタル化されてよい。示されるように、デバイス1300は、デバイス1300のバック1302(または他の場所)の中へ組み込まれたカラーカメラ1321、1322、およびフラッシュ1310を含み得る。他の例において、カラーカメラ1321、1322、およびフラッシュ1310は、デバイス1300のフロント1301の中へ組み込まれてよく、または、カメラのフロントセットおよびバックセットの両方が備えられてよい。カラーカメラ1321、1322およびフラッシュ1310は、例えば、ディスプレイ1304に出力され、かつ/あるいは、アンテナ1308を介してデバイス1300から遠隔通信される画像またはストリーミングビデオに処理され得る、IRテクスチャ補正を伴うカラー画像データを生成するためのカメラモジュールのコンポーネントであってよい。
【0163】
種々の実施形態は、ハードウェア要素、ソフトウェア要素、または、その両方の組み合わせを使用して実装され得る。ハードウェア要素の例は、プロセッサ、マイクロプロセッサ、回路、回路素子(例えば、トランジスタ、抵抗、キャパシタ、インダクタ、など)、集積回路、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(PFGA)、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット、等を含み得る。ソフトウェアの例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション、方法、プロシージャ、ソフトウェアインターフェイス、アプリケーションプログラムインターフェイス(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、バユー、シンボル、または、それらの任意の組み合わせを含み得る。ハードウェア要素及び/又はソフトウェア要素を使用して実施される実施形態を決定することは、所望の計算速度、電力レベル、耐熱性、処理サイクルバジェット、入力データ速度、出力データ速度、メモリリソース、データバス速度、および、他の設計または性能制約といった、任意の数の要因に従って変動し得る。
【0164】
少なくとも1つの実施形態の1つ以上の態様は、プロセッサ内の種々のロジックを表すマシンで読取り可能な媒体上に保管された代表的な命令によって実施され得る。それは、マシンによって読み取られたときに、ここにおいて説明される技術を実行するためのロジックをマシンに作り上げさせる。そうした表示は、IPコアとして知られており、有形のマシンで読取り可能な媒体上に保管され、そして、ロジックまたはプロセッサを実際に製造する製造機械にロードするために様々な顧客または製造施設へ供給される。
【0165】
ここにおいて説明される所定の特徴は、種々の実施形態を参照して説明されてきたが、この説明は、限定的な意味で解釈されるように意図されたものではない。従って、本開示が関係する当業者にとって明らかである、ここにおいて説明された実施形態、並びに、他の実施形態の種々の修正は、本開示の精神および範囲内にあるとみなされる。
【0166】
1つ以上の第1実施形態において、イマーシブビデオデータを符号化するための方法は、第1ビット深さでの第1深度値を有する第1深度ビューを受信するステップであり、前記第1ビット深さは、第1最小深度値から第1最大深度値までの値の第1利用可能範囲を含むステップと、第2深度ビューを生成するために、前記第1深度値を、前記第1ビット深さよりも小さい第2ビット深さでの第2深度値へマッピングするステップであり、前記第2ビット深さは、第2最小深度値から第2最大深度値までの値の第2利用可能範囲を含み、前記マッピングのためのラインセグメントを画定するために、第1ラインセグメントエンドポイントおよび第2ラインセグメントエンドポイントを使用し、前記第1ラインセグメントエンドポイントの水平成分および垂直成分は、前記第1最小深度値および是第2最小深度値を、それぞれに、超える、ステップと、第2深度ビュー、並びに、前記第1ラインセグメントエンドポイントおよび前記第2ラインセグメントエンドポイントを、ビットストリームへと符号化するステップと、を含む。
【0167】
1つ以上の第2実施形態においては、さらに、第1実施形態に対して、前記第2ラインセグメントエンドポイントの水平成分および垂直成分は、それぞれに、前記第1最大深度値および前記第2最大深度値よりも小さい。
【0168】
1つ以上の第3実施形態においては、さらに、第1または第2実施形態に対して、前記第1ラインセグメントエンドポイントおよび前記第2ラインセグメントエンドポイントは、前記マッピングの第1ラインセグメントを画定し、前記マッピングは、さらに、前記第2ラインセグメントエンドポイントおよび第3ラインセグメントエンドポイントによって画定される第2ラインセグメントを含む。
【0169】
1つ以上の第4実施形態においては、さらに、第1から第3実施形態のいずれかに対して、前記第1ラインセグメントは、第1スロープを有し、かつ、 前記第2ラインセグメントは、前記第1ラインセグメントに対する第1深度値ピクセルカウントが前記第2ラインセグメントに対する第2深度値ピクセルカウントを超えていることに応答して、前記第1スロープよりも小さい第2スロープを有する。
【0170】
1つ以上の第5実施形態においては、さらに、第1から第4実施形態のいずれかに対して、前記方法は、さらに、前記マッピングの少なくとも前記第1ラインセグメントおよび前記第2ラインセグメントを決定するステップ、を含み、前記決定は、前記第1深度ビューの少なくとも一部を使用して、深度値範囲ごとの深度値ピクセルカウントのヒストグラムを生成するステップと、前記マッピングおよび逆マッピングに対応する再構成誤差を最小化するために、前記第1ラインセグメントおよび前記第2ラインセグメントを含む前記マッピングについて、複数のラインセグメントを再帰的に生成するステップと、によって行われる。
【0171】
1つ以上の第6実施形態においては、さらに、第1から第5実施形態のいずれかに対して、前記方法は、さらに、前記第1深度ビューのエッジ領域を決定するステップを含み、前記深度値ピクセルカウントのヒストグラムは、前記エッジ領域内のピクセルを使用し、かつ、前記エッジ領域外のピクセルを除外して、生成される。
【0172】
1つ以上の第7実施形態においては、さらに、第1から第6実施形態のいずれかに対して、前記方法は、さらに、第1および第2深度ビューに対応するテクスチャビューをビットストリームへと符号化するステップ、を含む。
【0173】
1つ以上の第8実施形態においては、さらに、第1から第7実施形態のいずれかに対して、前記第1ビット深さは16ビットであり、前記第2ビット深さは8ビットまたは10ビットのうち1つであり、そして、ビットストリームは高効率ビデオ符号化(HEVC)に準拠したビットストリームである。
【0174】
1つ以上の第9実施形態において、イマーシブビデオデータを復号するための方法は、第1ビット深さでの第1深度値を有する第1深度ビュー、および、前記第1深度ビューを第2深度ビューにマッピングするための第1ラインセグメントエンドポイントおよび第2ラインセグメントエンドポイント、を決定するためにビットストリームを復号化するステップであり、前記第1ビット深さは、第1最小値から第1最大値までの値の第1利用可能範囲を含む、ステップと、第2深度ビューを生成するために、前記第1ラインセグメントエンドポイントおよび前記第2ラインセグメントエンドポイントを使用して、第1深度値を第2深度値にマッピングするステップであり、第2深度値は、前記第1ビット深さよりも大きい第2ビット深さであり、前記第2ビット深さは、第2最小値から第2最大値までの値の第2利用可能範囲を含み、前記第1ラインセグメントエンドポイントの水平成分および垂直成分は、それぞれに、前記第1最小値および前記第2最小値を超えている、ステップと、前記第2深度ビューに基づいて、合成ビューを生成するステップと、を含む。
【0175】
1つ以上の第10実施形態においては、さらに、第9実施形態に対して、前記第2ラインセグメントエンドポイントの水平成分および垂直成分は、それぞれに、前記第1最大値の深度値および前記第2最大値の深度値より小さい。
【0176】
1つ以上の第11実施形態においては、さらに、第9または第10実施形態に対して、前記第1ラインセグメントエンドポイントおよび前記第2ラインセグメントエンドポイントは、前記マッピングの第1ラインセグメントを画定し、前記マッピングは、さらに、前記第2ラインセグメントエンドポイントおよび第3ラインセグメントエンドポイントによって画定される第2ラインセグメントを含む。
【0177】
1つ以上の第12実施形態においては、さらに、第9から第11実施形態のいずれかに対して、前記第1ラインセグメントは、第1スロープを有し、かつ、
前記第2ラインセグメントは、前記第1スロープよりも小さい第2スロープを有する。
【0178】
1つ以上の第13実施形態においては、さらに、第9から第12実施形態のいずれかに対して、前記方法は、さらに、前記ビットストリームから前記第1深度ビューおよび前記第2深度ビューに対応するテクスチャビューを復号するステップであり、前記合成ビューは、前記テクスチャビューに基づいて生成される、ステップを含む。
【0179】
1つ以上の第14実施形態においては、さらに、第9から第13実施形態のいずれかに対して、前記第1ビット深さは8ビットまたは10ビットのうち1つであり、前記第2ビット深さは16ビットであり、そして、前記ビットストリームは、高効率ビデオ符号化(HEVC)準拠ビットストリームである。
【0180】
1つ以上の第15実施形態において、イマーシブビデオデータを符号化するための方法は、イマーシブビデオ生成またはキャプチャに対応しているカメラアレイに係る複数のカメラそれぞれについてカメラ投影モードを決定するステップと、前記カメラについてカメラ投影モードフラグを生成するステップであり、前記カメラ投影モードフラグは、特定の投影モードを有する前記カメラそれぞれに応答する第1値、および、前記特定の投影モード以外の投影モードを有する前記カメラのいずれかに応答する第2値を有している、ステップと、前記カメラ投影モードフラグをビットストリームへと符号化するステップと、を含む。
【0181】
1つ以上の第16実施形態においては、さらに、第15実施形態に対して、前記第1値を有している第1カメラ投影モードフラグに応答して、前記ビットストリームは、さらに、前記特定の投影モードを示す単一カメラ投影モードインジケータを含む。
【0182】
1つ以上の第17実施形態においては、さらに、第15または第16実施形態に対して、前記第2値を有している前記カメラ投影モードフラグに応答して、前記ビットストリームは、さらに、前記カメラそれぞれについて1つである、複数のカメラ投影モードインジケータを含む。
【0183】
1つ以上の第18実施形態においては、さらに、第15から第17実施形態のいずれかに対して前記、カメラ投影モードは、全方向投影モード、通常視点投影モード、または正投影モードのうち少なくとも1つを含む。
【0184】
1つ以上の第19実施形態においては、さらに、第15から第18実施形態のいずれかに対して、前記方法は、さらに、前記カメラそれぞれによって達成可能な最小物理的深さおよび最大物理的深さを決定するステップと、前記カメラについて物理的深さフラグを生成するステップであり、前記物理的深さフラグは、前記カメラが、共有された最小物理的深さ、及び/又は、共有された最大物理的深度を有するか否か、を示す、ステップと、前記物理的深さフラグを、前記ビットストリームへと符号化するステップと、を含む。
【0185】
1つ以上の第20実施形態においては、さらに、第15から第19実施形態のいずれかに対して、前記方法は、さらに、前記カメラそれぞれについて、ヨー、ピッチ、およびロールのパラメータ、または、クォータニオンパラメータのうち1つを決定するステップと、前記カメラについて、ヨー、ピッチ、およびロールのフラグ、または、クォータニオンフラグを生成するステップであり、ヨー、ピッチ、およびロールの前記フラグ、または、前記クォータニオンフラグは、前記カメラが、共有のヨー、ピッチ、およびロールのパラメータ、または、共有のクォータニオンパラメータを有するか否かを示す、ステップと、ヨー、ピッチ、およびロールの前記フラグ、または、前記クォータニオンフラグを、前記ビットストリームへと符号化するステップと、を含む。
【0186】
1つ以上の第21実施形態においては、さらに、第15から第20実施形態のいずれかに対して、前記ヨー、ピッチ、およびロールパラメータ、または、前記クォータニオンパラメータは、デフォルトのヨー、ピッチ、およびロール、または、デフォルトのクォータニオンパラメータフラグ値を示す。
【0187】
1つ以上の第22実施形態においては、さらに、第15から第21実施形態のいずれかに対して、前記方法は、さらに、前記カメラ間の共有物理的間隔を表す、共有物理的間隔値を決定するステップと、前記共有物理的間隔値を、前記ビットストリームへと符号化するステップと、を含む。
【0188】
1つ以上の第23実施形態において、イマーシブビデオデータを復号化するための方法は、深さビュー、テクスチャビュー、および、カメラアレイの複数のカメラに対応するカメラ投影モードフラグを決定するためにビットストリームの復号するステップであり、前記カメラ投影モードフラグは、前記カメラの全てが特定の投影モードを有することを示す第1値、または、前記カメラのいずれかが前記特定の投影モード以外の投影モードを有することを示す第2値を有している、ステップと、前記深さビュー、前記テクスチャビュー、および、前記カメラ投影モードフラグの深さビューに基づいて、復号されたビューを生成するステップと、を含む。
【0189】
1つ以上の第24実施形態においては、さらに、第23実施形態に対して、前記第1値を有する前記カメラ投影モードフラグに応答して、前記ビットストリームは、さらに、前記特定の投影モードを示す単一カメラ投影モードインジケータを含む。
【0190】
1つ以上の第25実施形態においては、さらに、第23または第24実施形態に対して、前記第2値を有する前記カメラ投影モードフラグに応答して、前記ビットストリームは、さらに、前記カメラそれぞれについて1つである、複数のカメラ投影モードインジケータを含む。
【0191】
1つ以上の第26実施形態においては、さらに、第23から第25実施形態のいずれかに対して、前記共有カメラ投影モードは、全方向投影モード、通常視点投影モード、または正投影モードのうち少なくとも1つを含む。
【0192】
1つ以上の第27実施形態においては、さらに、第23から第26実施形態のいずれかに対して、前記ビットストリームは、さらに、前記カメラについて物理的深さフラグを含み、前記物理的深さフラグは、前記カメラが、共有される最小の物理的深さ、及び/又は、共有される最大の物理的深さ、を有するか否かを示す。
【0193】
1つ以上の第28実施形態においては、さらに、第23から第27実施形態のいずれかに対して、前記ビットストリームは、さらに、前記カメラについてヨー、ピッチ、およびロールフラグ、または、クォータニオンフラグを含み、前記ヨー、ピッチ、およびロールフラグ、または、前記クォータニオンフラグは、前記カメラが共有ヨー、ピッチ、およびロールパラメータ、または、共有クォータニオンパラメータを有するか否かを示す。
【0194】
1つ以上の第29実施形態においては、さらに、第23から第28実施形態のいずれかに対して、本方法は、さらに、前記カメラが、共有ヨー、ピッチ、ロールパラメータ、または、共有クォータニオンパラメータを有することを示す、ヨー、ピッチ、およびロールフラグ、クォータニオンフラグに応答して、前記カメラそれぞれについて、ヨー、ピッチ、およびロールパラメータ、または、クォータニオンパラメータを、デフォルトのヨー、ピッチ、およびロールパラメータ、または、デフォルトのクォータニオンパラメータに設定するステップ、を含む。
【0195】
1つ以上の第30実施形態においては、さらに、第23から第28実施形態のいずれかに対して、前記ビットストリームは、さらに、共有物理的間隔値を含み、かつ、前記方法は、さらに、前記共有物理的間隔値を使用して、前記カメラ間の物理的間隔を決定するステップ、を含む。
【0196】
1つ以上の第31実施形態において、デバイスまたはシステムは、メモリと、上記の実施形態のうちいずれか1つに従った方法を実行するための1つ以上のプロセッサと、を含む。
【0197】
1つ以上の第32実施形態において、複数の命令を含む少なくとも1つのマシンで読取り可能な媒体は、コンピューティングデバイスで命令が実行されることに応答して、上記の実施形態のうちいずれか1つに従った方法を前記コンピューティングデバイスに実行させる。
【0198】
1つ以上の第33実施形態において、装置は、上記の実施形態のうちいずれか1つに従った方法を実施するための手段を含む。
【0199】
これらの実施形態は、上記の実施形態に限定されるものではなく、添付の範囲から逸脱することなく、修正および変更によって実施することができることが認識されるだろう。例えば、上記の実施形態は、特徴の特定の組み合わせを含んでよい。しかしながら、上記の実施形態は、この点に関して限定されるものではなく、かつ、様々な実施形態において、上記の実施形態は、そうした特徴のサブセットのみを引き受けること、そうした特徴の異なる順序を引き受けること、そうした特徴の異なる組み合わせを引き受けること、及び/又は、明示的に列挙された特徴以外の追加の特徴を引き受けること、を含み得る。実施形態の範囲は、従って、添付の請求項を参照して決定され、そうした請求項が権利を有する均等物の全ての範囲を伴うものである。
【国際調査報告】