以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態は、本発明を限定するものではなく、例えば、以下の実施形態の少なくとも一部又は場合によってはその全部の構成や方法のステップが含まれていない場合であっても、本発明の範囲内に属しうる。
(システム構成)
図1に、本実施形態に係る通信システムの構成例を示す。通信システムは、一例において、クライアント101及びサーバ102を含み、クライアント101とサーバ102は、ネットワーク103を介して接続される。クライアント101は、例えば、DTV(Digital TV)、HMD(HeadMount Display)、マルチビューテレビジョン、スマートフォン、タブレット等の表示機能を有する情報処理装置でありうる。クライアント101は、PC(Personal Computer)等にインストールされたWebブラウザや、その他のアプリケーションを表す概念であってもよく、すなわち、クライアント101は必ずしも装置として実現されなくてもよい。また、クライアント101は、例えば投影装置を有するプロジェクタであってもよく、また、複数の投影装置を含んだマルチプロジェクタであってもよい。サーバ102は、一例において、デジタルカメラ、デジタルビデオカメラ、ネットワークカメラ、プロジェクタ、携帯電話、スマートフォン、PC、及びサーバ装置等であり、映像データの送信元のサーバ装置として機能する情報提供装置である。本実施形態では、一例として、サーバ102が1台のPCであるものとするが、例えばクラウド上で分散して配置された1つ以上の装置によって、サーバ102の機能が分散的に実現されてもよい。ネットワーク103は、例えば、LAN(Local Area Network)やWAN(Wide Area Network)、LTE(Long Term Evolution)等の公衆移動体通信網、又はそれらの組み合わせでありうる。LANは、例えばEthernet(登録商標)等の有線LANや、IEEE802.11規格シリーズ等の無線LANを含んで構成される。WANは、例えばインターネットでありうる。なお、クライアント101とサーバ102は、ネットワーク103を介さずに直接接続されてもよい。例えば、クライアント101とサーバ102は、無線アドホックネットワークを用いて直接通信してもよい。
本実施形態では、サーバ102は、視点位置と視線方向と焦点位置との少なくともいずれかを空間上で自由に設定(移動)して視聴可能な仮想視点映像データを符号化した映像データを他の装置へ提供することができる。クライアント101は、状況に応じて、その映像データを取得して再生する。ここで、本実施形態では、クライアント101の能力や通信状況に応じて、動的に取得するストリームを変更する技術(MPEG-DASHやHTTP Live Streamingなど)が用いられるものとする。なお、MPEG-DASHは、Moving Picture Experts Group-Dynamic Adaptive Streaming over HTTPの頭字語である。これらの技術では、映像データが細かい時間単位のセグメントに分割され、セグメントを取得するためのURL(Uniform Resouce Locator)がプレイリストと呼ばれるファイルに記述される。サーバ102は、このプレイリストファイルを用意してクライアント101に提供し、クライアント101は、このファイルを受信すると、初めにこのプレイリストを取得し、プレイリストに記述されている情報を用いて所望の映像データを取得する。プレイリスト中に複数のバージョンの映像データセグメントに対するURLが記載されることによって、クライアント101は、自身の能力や通信環境に応じて、最適なバージョンの映像データセグメントを取得することができる。この場合、サーバ102は、プレイリストに関するファイルをクライアント101に提供するが、映像データを直接的にクライアント101に提供しなくてもよい。すなわち、クライアント101は、サーバ102から提供された情報に基づいて記述されたURLにアクセスして、外部の装置から映像データセグメントを取得しうる。なお、以下では、MPEG-DASHで規定されているMPD(Media Presentation Description)がプレイリストのファイルとして利用されるものとして説明を行う。なお、MPEG-DASHに代えて、HTTP LivestreamingやSmooth Streamingなどの、プレイリスト記述を使用する他のプロトコルが用いられてもよい。すなわち、少なくとも、クライアント101が映像データに関するプレイリスト等の情報を取得してその情報に基づいて映像データを取得するようなシステムに、以下の議論を適用することができる。
以下では、まず、伝送される仮想視点映像(自由視点映像)データに関する概略的な説明を行い、その後に、装置の構成及び処理の流れの例について説明する。
(伝送される仮想視点映像データの概要)
以下では、本実施形態において伝送される仮想視点映像データについての説明を行う。なお、仮想視点映像の生成自体は従来技術のようにして行われるものとし、以下では、主として、本実施形態において伝送対象となる、仮想視点映像に関するパラメータについて説明を行う。
図2(a)に、仮想視点映像における、ユーザの視線方向の移動範囲の一例を示す。ユーザ111は、Yawを示す軸112、Pitchを示す軸113、Rollを示す軸114を中心に、視線を回転させることができる。なお、以下では、ユーザは3つの軸のそれぞれにおいて自由に視線を変更できるものとして説明するが、例えば、映像データの内容や所定の設定等に応じた範囲の限定など、視線の設定可能範囲に制限がかけられてもよい。例えば、Roll軸を中心とする視線の回転が許容されないような制限や、ユーザの視点の設定可能範囲を半天球とするような制限が用いられうる。また、3つの軸に対する視点の設定可能範囲が、個別に、又は相互に関連して制限されていてもよい。また、視線の設定可能範囲を示す値は、相対座標によって表現されてもよいし、絶対座標によって表現されてもよい。相対座標が用いられる場合、例えば0.0~1.0といった値が視線の設定可能範囲として用いられうる。絶対座標が用いられる場合、0~360、または、-180~180といった値が視線の設定可能範囲として用いられうる。また、視線方向の移動単位は、固定値であってもよいし、可変値であってもよい。また、視線方向の移動可能な値の一覧が提供されてもよい。
続いて、図2(b)に、仮想視点映像における、ユーザの視点位置の移動範囲の一例を示す。ユーザ111は、z軸122の方向、x軸123の方向、及びy軸124の方向のそれぞれに、視点位置を移動させることができる。ここで、範囲120は、仮想視点映像において、ユーザの視点を移動させることができる範囲を示している。なお、以下の説明では、ユーザの視点を3つの軸のそれぞれに沿って自由に移動させることができるものとして説明するが、例えば映像データの内容や所定の設定に応じて、この移動に制限がかけられてもよい。例えば、z軸方向等の所定の方向に視点の移動ができないようにする制限が行われてもよいし、x、y、zのそれぞれの軸に対して移動可能範囲が設定されてもよい。なお、複数の軸に対する移動可能範囲は、例えば、相互に関連して設定されてもよいし、それぞれ個別に設定されてもよい。また、移動可能範囲は、相対座標と絶対座標とのいずれによって表現されてもよい。相対座標が用いられる場合は、例えば0.0~1.0といった値が移動可能範囲として用いられうる。また、絶対座標が用いられる場合は、例えば所定距離を単位とした数値によって、移動可能範囲が規定されうる。なお、移動可能範囲の値は、例えば、仮想視点映像データに基づいて、x、y、z軸それぞれの方向において独立に又は一定の関係を持って設定されてもよいし、所定の値が用いられてもよい。なお、視点位置の移動単位は、固定値であってもよいし、可変値であってもよい。また、視点位置の移動可能な値の一覧が提供されてもよい。
仮想視点映像では、さらに、焦点位置の範囲が指定されうる。図2(c)は、仮想視点映像における、焦点位置の例を示す図である。ユーザ111は、軸130のDepth方向に対して、焦点位置を移動させることができる。なお、仮想視点映像に対する焦点位置の移動は、ユーザによる自由な焦点の移動を許容してもよいし、位置132~134に示されるような位置が、焦点位置を合わせることができる位置として事前に定義されていてもよい。ユーザは、視点位置と視線方向に加えて焦点位置に関する情報の提供を受けることにより、さらに柔軟な仮想視点映像を視聴することができるようになる。このため、焦点位置に関する情報の利用によって、ユーザエクスペリエンスを向上させることができる。
なお、仮想視点映像は、分割された空間領域ごとに符号化されうる。図2(d)に、仮想視点映像の空間200をユーザの移動範囲の3軸に基づいて複数の領域に分割した例を示す。図2(d)の例では、空間200が、3×3×3に分割された例を示している。このような分割が行われる場合、ユーザは、自身が必要とする空間領域の映像データだけを取得し、復号と再生とを行うことができる。例えば、ユーザ111は、現在視聴中の仮想視点映像における視点位置から、自身が属している領域201の映像データのみを取得する。その後、ユーザの視点位置がx軸方向に移動して領域202に入った場合は、ユーザ111は、領域202の映像データを取得する。一方、ユーザの視点位置がz軸方向に移動して領域203に入った場合は、ユーザ111は、領域203の映像データを取得する。これによれば、仮想視点映像の視聴のために要求されるネットワークの通信帯域が増大することを防ぐことと、復号処理の負荷を軽減することとの少なくともいずれかを達成することができる。
なお、仮想視点映像の空間領域の分割は、図2(d)のように3×3×3の直方体で示される空間への分割に限定されるものではない。例えば、1×2×3や、2×3×2のように、移動方向ごとに異なる数の領域分割が行われてもよい。また、図2(d)の例では3軸それぞれで分割を行っているが、例えば、z軸に沿ったxy平面での分割、x軸に沿ったyz平面での分割、y軸に沿ったxz平面での分割等の1平面のみでの分割等、一部の軸においてのみ分割を行ってもよい。また、図2(d)では、移動方向に対する分割を行っているが、視点方向や焦点位置での分割が、代替的に又は追加的に実行されてもよい。
また、ユーザが視聴したいオブジェクトと背景データのみを取得することによって、仮想視点映像の視聴のために要求されるネットワークの通信帯域の増大の防止や、復号処理の軽減をさらに行うおことができる。図2(e)は、このような処理のために、映像データを背景とオブジェクトとを分離し、それぞれについて符号化を行う場合の例を示している。背景データは、背景210と背景に含まれる背景オブジェクト211を含み、仮想視点映像の空間内に含まれる1つ以上のオブジェクト212及び213に関するオブジェクトデータと別個に取り扱われる。クライアント101は、オブジェクトデータと背景データとを別個に取得して仮想視点映像を生成する。また、クライアント101は、背景映像と、表示したいオブジェクト(例えば着目しているオブジェクト)のみを取得して表示することができる。例えば、背景とオブジェクトを分離して符号化する点群符号化のような技術を適用することができる。
なお、仮想視点映像を提供するシステムでは、ユーザの視点位置の移動範囲を制限することによって、仮想視点映像を生成したコンテンツ作成者の意図通りにコンテンツを視聴させること又はその確率を高め、ユーザエクスペリエンスを向上させることができる。図3(a)に、このような移動範囲に制限を付した仮想視点映像(ウィンドウ仮想視点映像。Windowed 6 Degrees of Freedomとも呼ばれる。)の一例を示す。図3(a)において、進入禁止範囲300は、ウィンドウ仮想視点映像において視点位置が進入することを禁止される範囲である。ユーザ111の視点位置は、この進入禁止範囲300へと進入することはできない。オブジェクト301は、仮想視点映像において表示対象となるオブジェクトである。領域302は、ウィンドウによって切り出される部分を示す。このようなウィンドウ仮想視点映像は、例えば、スマートフォンやタブレット等の表示装置303を通じて視聴されうる。表示装置303は、領域302で切り出された仮想視点映像を、表示領域304に表示させることができる。ユーザ111は、視点位置を進入禁止範囲300内に移動させることはできないが、オブジェクト301を、進入禁止範囲300外の自由な方向から視聴することができる。なお、図3(a)の例では、進入禁止範囲300を円柱によって示しているが、これは一例に過ぎず、例えば、直方体や三角柱等の任意の領域指定によって、移動禁止範囲が示されてもよい。なお、ウィンドウ仮想視点映像では、ユーザの視線方向も制限されていてもよい。例えば、図3(a)の例において、ユーザの視線方向が常に円錐の中央部へ向くような制限が行われてもよい。
また、ユーザの視点位置や視線方向は、TimedMetadataを用いて制御されてもよい。TimedMetadataは、例えばクライアント101に対してユーザエクスペリエンス向上に有効なメタデータを提供する、ISOBaseMediaFileFormatで規定されている仕組みである。図3(b)に、サーバ102が、視点位置及び視線方向と時刻との関係を示す情報を、TimedMetadataで提供した場合の一例を示す。例えば、仮想視点映像において、時刻t01において地点314に存在するオブジェクトが、時刻t02では、位置315に移動しているとする。この場合、TimedMetadataによれば、例えば、ユーザが仮想視点映像を推奨視点位置・推奨視線方向で視聴すること可能とさせるようなメタデータが提供される。例えば、時刻t11では視点位置・視線方向310、時刻t12では視点位置・視線方向311、時刻t13では視点位置・視線方向、時刻t14では視点位置・視線方向313が、推奨視点位置・推奨視線方向の情報として提供される。クライアント101は、メタデータに記述のない時刻についてカメラの視点位置及び視線方向を、メタデータに記述された視点位置及び視線方向に基づいて、線形補完やその他の補完方法で求めてもよい。なお、TimedMetadata以外の仕組みによって、推奨視点位置・推奨視線方向が指定されてもよい。また、TimedMetadata等の仕組みによって、視点や視線の移動を禁止するようにすることができる。これにより、時刻ごとにユーザが移動できない範囲等を動的に変更することが可能となる。このように、TimedMetadata等の時刻と視点位置・視線方向との関係を定義するデータにより、ユーザが仮想視点映像において着目すべきオブジェクトを推奨される視点から視聴することができる確率を高めることができる。そして、これにより、ユーザエクスペリエンスを向上させることができる。
なお、TimedMetadataによって、視点位置・視線方向に加えて、またはこれらに代えて、焦点情報が提供されてもよい。TimedMetadataは、例えば、視点位置、視線方向、焦点位置等のパラメータのうちの1つ以上を指定する指定情報として使用されうる。また、複数のTimedMetadataが定義されてもよい。例えば、仮想視点映像データ内に、複数の着目すべきオブジェクト(例えば人物等)が存在する場合は、それぞれの人物ごとにTimedMetadataが定義されうる。
(装置のハードウェア構成)
続いて、クライアント101及びサーバ102のハードウェア構成例について、図4(a)及び図4(b)を用いて説明する。
図4(a)は、クライアント101のハードウェア構成例を示す図である。クライアント101は、例えば、制御部401、記憶部402、表示部403、操作部404、復号部405、通信部406、通信インタフェース407、及びシステムバス408を有する。
制御部401は、例えばシステムバス408を通じて他の構成部を制御することによって、クライアント101における動作を統括的に制御する。制御部401は、例えば、CPU(中央処理装置)、ASIC(特定用途向け集積回路)、FPGA(フィールドプログラマブルゲートアレイ)、DSP(デジタルシグナルプロセッサ)等の1つ以上のプロセッサでありうる。記憶部402は、各種データを記憶し管理する。記憶部402は、例えば、SRAM(Static RAM)、DRAM(Dynamic RAM)等のメモリや、ハードディスクドライブ等の大容量記憶装置でありうる。表示部403は、制御部401の制御下で各種表示を行うように構成された、例えば液晶パネルである。操作部404は、ユーザからの操作を受け付ける、例えばキーやボタン等のユーザインタフェースである。なお、表示部403及び操作部404は、例えばタッチパネルによって、1つの装置として構成されてもよい。復号部405は、映像データの復号処理を行う。なお、復号部405は、専用の回路等によって構成されてもよいが、例えば、制御部401が記憶部402に記憶されたプログラムを実行することによって、取得されたビデオの復号を行う。通信部406は、例えば通信インタフェース407を介して、各種通信処理を実行する。通信部406は、例えば、変復調回路等の通信用回路を含んで構成される。通信インタフェース407は、例えば、Ethernet等による有線通信又は無線LANやBluetooth(登録商標)や公衆無線通信網等による無線通信のためのインタフェースである。例えば、通信インタフェース407が無線通信インタフェースである場合、RFフロントエンドやアンテナを含んで構成され、通信部406が生成した信号を無線信号に変換してアンテナを介して送出する。また通信インタフェース407が有線通信インタフェースである場合、ケーブル接続のためのコネクタや、例えば光電変換ユニット等を含んで構成されうる。通信部406及び通信インタフェース407については、サーバ102等の他装置と通信可能な形態である限りにおいて、どのようなものが用いられてもよい。また、クライアント101は、複数の通信インタフェースを有してもよい。
なお、本実施形態では、表示部403がクライアント101の1つの構成要素として示されているが、例えば、HDMI(登録商標)などで接続された、ディスプレイやテレビ等の外部の表示装置が用いられてもよい。その場合、クライアント101は、例えば表示制御部を有しうる。また、操作部404は、HMDなどのユーザの視点・視線・焦点の操作を検出する装置であってもよいし、外部のジョイスティック、キーボードやマウスなどと接続されユーザ操作の受付を行う操作受付部として機能してもよい。このように、例えば表示部403又は操作部404は、クライアント101の外部機器として提供されてもよく、その場合、クライアント101の表示部403は表示制御部に、操作部404は操作受付部に、それぞれ置き換えられうる。また、クライアント101は、内蔵の表示部403と操作部404に加えて、外部機器による情報表示と操作受付のための表示制御部及び操作受付部を有してもよい。また、上述の他の機能部についても、同様にクライアント101の外部装置として設けられてもよく、その場合、クライアント101は、それらの外部装置と通信可能に接続され、情報の入力及び出力を行う機能部を有しうる。
図4(b)は、サーバ102のハードウェア構成例を示すブロック図である。サーバ102は、例えば、制御部421、記憶部422、表示部423、操作部424、撮像部425、符号化部426、通信部427、通信インタフェース428、及びシステムバス429を有する。
制御部421は、例えばシステムバス429を通じて他の構成部を制御することによって、サーバ102における動作を統括的に制御する。制御部421は、例えば、CPU(中央処理装置)、ASIC(特定用途向け集積回路)、FPGA(フィールドプログラマブルゲートアレイ)、DSP(デジタルシグナルプロセッサ)等の1つ以上のプロセッサでありうる。記憶部422は、各種データを記憶し管理する。記憶部422は、例えば、SRAM(Static RAM)、DRAM(Dynamic RAM)等のメモリや、ハードディスクドライブ等の大容量記憶装置でありうる。表示部423は、制御部421の制御下で各種表示を行うように構成された、例えば液晶パネルである。操作部424は、ユーザからの操作を受け付ける、例えばキーやボタンである。なお、表示部423及び操作部424は、例えばタッチパネルによって、1つの装置として構成されてもよい。撮像部425は、映像の撮像を行う。撮像部425は、例えばレンズやセンサを含んで構成される。なお、サーバ102は、映像の撮像を行わずに、映像データを1つ以上の他の装置から取得してもよい。また、サーバ102は、1つ以上の他の装置から取得したデータに基づいて映像データを生成してもよい。また、サーバ102は、第1の他の装置が1つ以上の第2の他の装置から取得したデータに基づいて生成した映像データを、第1の他の装置から取得してもよい。符号化部426は、映像データの符号化処理を行う。なお、符号化部426は、専用の回路等によって構成されてもよいが、例えば、制御部421が記憶部422に記憶されたプログラムを実行することによって、撮像部425で撮像したビデオを符号化するようにしてもよい。なお、サーバ102は、符号化部426を有さず、他の装置から符号化済みの映像データを取得するように構成されてもよい。また、サーバ102は、映像データを取得せず、映像データの所在のみを把握して、その所在に関する情報をクライアント101へ通知してもよい。通信部427は、通信インタフェース428を介して、各種通信処理を実行する。通信部427は、例えば、変復調回路等の通信用回路を含んで構成される。通信インタフェース428は、有線通信インタフェースまたは無線通信インタフェースであり、例えば通信インタフェース407と同様の構成を有する。サーバ102は、複数の通信インタフェースを有してもよい。
(クライアント101の機能構成)
続いて、クライアント101の機能構成について説明する。図5は、クライアント101の機能構成例を示すブロック図である。クライアント101は、例えば、MPD解析部501、視点制御部502、視線制御部503、焦点制御部504、符号化方式判定部505、復号制御部506、表示制御部507、MPD取得部509、及びAdaptationSet管理部508を有する。また、クライアント101は、通信制御部510、操作制御部511、セグメント取得部512、及びセグメント解析部513を有する。なお、これらの各機能ブロックは、制御部401のCPU(不図示)がメモリ(不図示)に格納されているソフトウェアプログラムを実行することによって実現されうる。なお、これらの機能ブロックの一部または全部がハードウェアによって実現されてもよい。
MPD解析部501は、サーバ102から取得したMPEG-DASHのプレイリストファイルであるMPD(Media Presentation Description)ファイルを解析する。このプレイリストには、特定のタイミングで特定のセグメントにアクセスするためのURL(Uniform Resource Locator)が記述される。また、MPD解析部501は、MPDファイルに記載の仮想視点映像データの取得・再生に使用されるメタデータを解析する。
視点制御部502は、仮想視点映像の空間内での視点移動に関する制御を実行する。視点制御部502は、現在の視点位置と仮想視点映像において視点の移動が可能な範囲を示す情報を保持し、視点位置が仮想視点映像の範囲外や進入禁止範囲に移動しないように制御する。また、視点制御部502は、空間領域が分割されている場合、それぞれの空間において視点を移動することが可能な範囲の情報を保持する。
視線制御部503は、仮想視点映像の空間内での視線方向、および、視線範囲を制御する。視線制御部503は、現在の視線方向と視線範囲及び仮想視点映像における視線範囲の情報を保持し、視線方向や視線範囲が、仮想視点映像の範囲外とならないような制御を実行する。
焦点制御部504は、仮想視点映像の空間内での焦点位置を制御する。焦点制御部504は、現在の焦点位置と仮想視点映像の焦点位置を移動させることが可能な範囲の情報を保持し、焦点位置が仮想視点映像の範囲外に移動しないような制御を実行する。
符号化方式判定部505は、MPDに記述されている映像データがどのような符号化方式で符号化されているかを判定し、それによってクライアント101がその映像データを復号できるかの判定を行う。例えば、符号化方式判定部505は、クライアント101が取得したMPDに含まれるcodecsの値から、そのcodecsに対応するAdaptationSet又はRepresentationに含まれる映像データを復号可能であるかを判定する。
復号制御部506は、復号部405を制御して、仮想視点映像データの復号を行う。また、復号制御部506は、仮想視点映像データに限らず、その他の符号化された映像データを復号しうる。
表示制御部507は、視点制御部502、視線制御部503、および、焦点制御部504の制御と、復号制御部506による復号後の映像データに基づいて、表示部403での仮想視点映像の表示制御を実行する。また、表示制御部507は、仮想視点映像の拡大や縮小を含んだズーム処理を実行しうる。
AdaptationSet管理部508は、MPDに含まれるAdaptationSetと、各AdaptationSetに含まれるメタデータとを管理する。また、AdaptationSet管理部508は、再生中のAdaptationSetを管理する。
MPD取得部509は、通信制御部510を介して、サーバ102から、プレイリストとしてのMPDファイルを取得する。通信制御部510は、通信部406を制御して、他の装置との通信を実行させる。例えば、通信制御部510は、HTTP(Hyper Text Transfer Protocol)やTCP/IP等の各種通信プロトコルによる通信の制御を行う。操作制御部511は、操作部404を制御してユーザからの操作を受け付ける。セグメント取得部512は、通信制御部510を介して、サーバ102からセグメント(映像データ)を取得する。セグメント解析部513は、セグメント取得部512を介して取得したセグメントを解析する。
(クライアント101が実行する処理の流れ)
続いて、クライアント101が実行する処理の流れのいくつかの例について説明する。本実施形態では、MPEG-DASHのMPDファイルに含まれる映像データに関する情報が含められ、クライアント101は、その情報に基づいて映像再生処理を実行する。例えば、クライアント101は、自装置が仮想視点映像の再生に対応しており、かつ、仮想視点映像に関する情報がMPDファイルに含まれている場合には、その情報に基づいて仮想視点映像を再生する。また、クライアント101は、自装置が仮想視点映像の再生に対応しておらず、かつ、仮想視点映像に関する情報がMPDファイルに含まれている場合には、その仮想視点映像を取得しない。これによれば、クライアント101は、再生ができない映像を取得することがなくなる。このとき、MPDファイルに、クライアント101が再生可能な仮想視点映像データではない映像データの情報が含めることにより、クライアント101は、仮想視点映像の再生に対応していない場合であっても、映像の視聴を可能とすることができる。また、MPDファイルに様々な表示制御用の記述を含めることにより、表示させるべき仮想視点映像の詳細な制御を行うことができる。
<処理例1-1>
まず、本処理で用いられるMPDについて図17を用いて説明した後に、図6を用いてクライアント101が実行する処理の流れの例について説明する。
図17は、仮想視点映像データに対応する記述を含むMPD1700を示しており、MPD1700は、一例としてAdaptationSet1701、1706及び1707を含む。AdaptationSet1701は、仮想視点映像データを表すAdaptationSetの例であり、その符号化方式を示す情報としてcodecsを含む。一例において、このcodecsが「6dof_v_codec」である場合、このAdaptationSetが仮想視点映像データに関するものであることが特定される。AdaptationSet1706は、codecsが「avc」を含んだ文字列であり、H.264/AVCで符号化された映像データに対応する。AdaptationSet1707は、codecsが「hvc」を含んだ文字列であり、H.265/HEVCで符号化された映像データに対応する。AdaptationSet1706又は1707に対応する映像データは、映像を生成する生成者が事前に定めた視点、視線、焦点によって生成された映像が符号化されたデータである。なお、本実施形態では、MPDは、AdaptationSet1701を含み、AdaptationSet1706やAdaptationSet1707については必ずしも含まなくてもよい。
SupplementalProperty1702は、AdaptationSet1701に関する補足情報を示す。ここでは、SupplementalProperty1702は、一例として、SchemeIdUriによって、AdaptationSet1701が仮想視点映像データを含むAdaptationSetであることを記述している。SupplementalProperty1702のvalueの値によって、仮想視点映像データのメタデータが記述される。ここで、sourceは、仮想視点映像データの符号化前の映像データを識別するための識別子であり、この値が同じAdaptationSetは、同じ映像データを符号化して生成されたデータであることが特定される。x、y、zと「*_offset」(*はx、y、又は、z)は、仮想視点映像の視点についての範囲を規定する。例えば、x方向における範囲はx~x+x_offsetによって規定される。y方向及びz方向についての範囲も、同様にして規定される。同様に、yaw、roll、pitchとそれらに対応する「*_offset」は、仮想視点映像の視線についての範囲を規定し、depthとdepth_offsetは、仮想視点映像の焦点についての範囲を規定する。なお、SupplementalProperty1702のvalueに記述できるメタデータは、これらに限定されない。また、上述の情報の一部が記述されなくてもよい。例えば、depthとdepth_offsetの値が、valueにおいて規定されなくてもよい。また、視点や視線に関する情報が記述されなくてもよい。例えば、視点、視線、焦点のうちの1つ以上が固定されている場合や、制限が設けられない場合に、このような形式でメタデータを記述することができる。また、例えばvalueの値は、value=“source,x,y,z”のように記述されてもよい。この場合、仮想視点映像の視点位置が移動可能な範囲は、xyzのそれぞれの軸に沿って0~x、0~y、0~zのように定義される。また、valueの値は、value=“source,6dof_idc”と記述されてもよい。6dof_idcは、このAdaptationSet1701が、仮想視点映像に対応するか否かを表す識別子である。例えば、この値が0の場合は、このAdaptationSet1701が仮想視点映像データを含み、この値が1の場合は、このAdaptationSet1701が仮想視点映像データを含まないことを意味しうる。このような識別子が用いられる場合、この識別子は、複数のAdaptationSet1701、1706、及び1707のそれぞれに定義される。この場合、AdaptationSet1701における6dof_idcの値は1にセットされ、AdaptationSet1706及び1707における6dof_idcの値は0にセットされる。例えば、同一のsourceとこのような識別子の組み合わせによって、1つの映像データについての仮想視点映像に関するAdaptationSetと、仮想視点映像に関しないAdaptationSetとを定義することができる。これにより、仮想視点映像形式の符号化に対応していないクライアントであっても、映像を再生することができる機会を増やすことができる。
SupplementalProperty1703は、仮想視点映像データの視点、視線、焦点のそれぞれの単位移動量をベクトルで表している。クライアント101は、schemeIdUriの値によって、SupplementalProperty1703が仮想視点映像の単位移動量のベクトルを表していると判定し、valueの値によって、各軸での単位移動量の大きさを特定することができる。SupplementalProperty1704は、仮想視点映像の初期視点位置、初期視線方向、初期焦点を表している。クライアント101は、schemeIdUriの値によって、SupplementalProperty1704が仮想視点映像の初期視点位置、初期視線方向、初期焦点を表していると判定し、valueの値によって、その設定値を特定することができる。SupplementalProperty1705は、AdaptationSet1701の仮想視点映像が、平面視映像(Monoscopic)か、立体視映像(Stereoscopic)かを表している。クライアント101は、schemeIdUriの値によってSupplementalProperty1705が平面視映像か立体視映像かを示している情報要素であると判定する。そして、クライアント101は、valueの値によって、AdaptationSet1701の仮想視点映像が平面視映像であるか立体視映像であるかを特定する。なお、図17の例では、立体視映像であることを記述するために「stereo」が指定されているが、平面視映像であることを記述するためには「mono」という値が指定されうる。なお、「stereo」や「mono」は値の記述方法の一例であり、例えば0(Monosocpic)や1(Stereoscopic)等のその他の値が用いられてもよい。
また、上述の各値に対して、説明したものと異なる値や文字列が用いられてもよく、説明したものと異なる解釈が定義されてもよい。例えば、視点のx軸における範囲が、「x」と「x_offset」を用いて、x-x_offset~x+x_offsetやx-x_offset~xと特定されるように解釈が規定されてもよい。また、「x0」と「x1」を用いて、x0~x1の範囲が特定されるような規定がなされてもよい。すなわち、本実施形態で言及するような値がMPDのような記述ファイルにおいて規定される限りにおいて、説明したものと異なる値や解釈が用いられうる。また、記述の順序は、図17に示す順序に限られない。例えば、視点位置の範囲が「x,x_offset,y,y_offset,z,z_offset」のような順で記述されているが、「x,y,z,x_offset,y_offset,z_offset」のような順など、他の順序で記述されてもよい。
なお、AdaptationSet1706やAdaptationSet1707にも、SupplementalPropertyが定義されうるが、説明を簡単にするため、ここでの説明については省略する。
図6の処理において、まず、MPD取得部509が、通信制御部510を介して、サーバ102からMPDファイルを取得する(S601)。そして、MPD解析部501は、サーバ102から取得したMPDファイルを解析する(S602)。S602では、例えば、MPD解析部501は、AdaptationSetやRepresentationに含まれるcodecsの値を符号化方式判定部505へと通知し、符号化方式判定部505がこれらの値から符号化方式を判定する。また、MPD解析部501は、AdaptationSetに含まれるSupplementalPropertyの情報を解析して符号化方式を判断してもよい。そして、符号化方式判定部505が、MPDファイル内に記述されているサーバ102により配信される映像データの中に、仮想視点映像データが含まれているか否かを判定する。
図17の例では、例えば、AdaptationSet1701、1706及び1707に含まれるcodecsの値が解析される。この場合、このAdaptationSet1701に含まれるcodecsの値が「6dof_v_codec」であるため、このAdaptationSet1701が仮想視点映像形式で符号化された映像データに関すると判定される。なお、値「6dof_v_codec」は、AdaptationSetが仮想視点映像形式で符号化された映像データに関することを示す値の一例であって、同義の他の値が定義されてもよい。一方、AdaptationSet1706及び1707に含まれるcodecsの値は、仮想視点映像形式ではない形式(すなわち、AVCやHEVC)で符号化されたことを示している。このため、符号化方式判定部505は、これらのAdaptationSetについては仮想視点映像に関するものではないと判定する。なお、図17の例では、例えば、AdaptationSet内のSupplementalPropertyの情報が解析されてもよい。この場合、AdaptationSet1701が仮想視点映像形式で符号化された映像データに関するか否かは、SupplementalProperty1702に含まれるschemeIdUriの値に基づいて判定される。例えば、schemeIdUriの値が「urn:mpeg:dash:6dof」である場合に、対応するAdaptationSetが仮想視点映像形式で符号化された映像データに関すると判定される。すなわち、図17の例では、AdaptationSet1701は、SupplementalProperty1702のschemeIdUriの値に基づいて、仮想視点映像形式で符号化された映像データに関すると判定されうる。なお、値「urn:mpeg:dash:6dof」は、仮想視点映像形式で符号化されていることを示す値の一例であり、同義のschemeIdUriの他の値が定義されてもよい。
MPD解析部501は、MPDに付随するその他のメタデータも解析する。例えば、MPD解析部501は、解像度、ビットレート、フレームレート、仮想視点映像データのメタデータを解析し、AdaptationSet管理部508に保存する。図17の例では、AdaptationSet1701に関するSupplementalProperty1702~1705のvalueの値が、仮想視点映像データに係るメタデータとなる。SupplementalProperty1702は、仮想視点映像データで、視点位置の移動可能範囲、視線方向の移動可能範囲、および、焦点位置の移動可能範囲を表すメタデータである。視点位置の移動可能範囲、視線方向の移動可能範囲、および、焦点位置の移動可能範囲は、それぞれ別個に設定されうる。SupplementalProperty1703は、仮想視点映像データを視聴する際の、視点位置の移動ベクトル値、視線方向の移動ベクトル値、焦点位置のベクトル値を表すメタデータである。SupplementalProperty1704は、仮想視点映像データを視聴する際の推奨される初期視点位置、初期視点方向、初期焦点位置を表すメタデータである。SupplementalProperty1705は、仮想視点映像データが立体視差(stereoscopic)可能な映像データであることを表すメタデータである。MPD解析部501は、AdaptationSet1701に含まれる符号化方式、解像度、ビットレート、フレームレート等のメタデータと、仮想視点映像のメタデータをAdaptationSet管理部508に保存する。MPD解析部501は、さらに、MPDを解析し、仮想視点映像形式以外の形式で符号化された映像データに関する情報をAdaptationSet管理部508に保存する。例えば、AVC、HEVCやその他異種の符号化方式で符号化された映像データに関するAdaptationSet1706及び1707と、そのAdaptationSetに含まれているメタデータとが保存される。
符号化方式判定部505は、AdaptationSet管理部508が管理中のAdaptationSetの中に、クライアント101が復号可能な形式の仮想視点映像データに関するAdaptationSetが含まれているかを判定する(S603)。クライアント101は、自装置が復号可能な形式の仮想視点映像データに関するAdaptationSetが含まれている場合(S603でYES)、取得する仮想視点映像データを決定し、そのメディアデータの取得を開始する(S604)。例えば、クライアント101は、仮想視点映像データに対応したAdaptationSetに含まれるRepresentationに記載されたURLにアクセスして、映像データのセグメントの取得を開始する。また、このとき、AdaptationSet管理部508は、現在再生中のAdaptationSetを管理する。AdaptationSet管理部508は、例えば、初期視点位置、初期視線方向、初期焦点情報等の情報がMPDに含まれている場合、それらの情報を視点制御部502、視線制御部503、焦点制御部504のそれぞれに通知しうる。この場合、視点制御部502、視線制御部503、焦点制御部504は、通知された情報に基づいて、例えば初期視点位置、初期視線方向、初期焦点情報をそれぞれ設定することができる。
メディアデータの取得の開始後、操作制御部511は、視点位置、視線方向、焦点位置のうちの少なくともいずれかを移動させる操作が行われたか否かの監視を開始する(S605)。操作制御部511がこの移動操作を検出しなかった場合(S605でNO)は、クライアント101は、処理をS609に遷移させる。一方、操作制御部511は、この移動操作が行われたことを検出した場合(S605でYES)、移動後の視点位置又は視線方向又は焦点位置が、仮想視点映像の範囲内に含まれるか否かを判定する(S606)。S606の判定は、視点位置又は視線方向又は焦点位置の移動後の値と、AdaptationSet管理部508が管理している仮想視点映像データの範囲を示す情報との比較によって行われる。
操作制御部511は、移動後の視点位置又は視線方向又は焦点位置が仮想視点映像の範囲内に含まれると判定した場合(S606でYES)、表示制御部507を介して表示部403に表示する映像に対して検出された移動操作を反映させる(S607)。例えば、操作制御部511は、視点位置の移動操作が検出されていた場合、視点制御部502を介して、新しい視点位置を反映させた映像データを表示部403に表示させる。また、操作制御部511は、視線方向の移動操作が検出されていた場合、視線制御部503を介して、新しい視線方向を反映させた映像データを表示部403に表示させる。また、操作制御部511は、焦点位置の移動操作が検出されていた場合、焦点制御部504を介して、新しい焦点位置を反映させた映像データを表示部403に表示させる。
一方、操作制御部511は、移動後の視点位置又は視線方向又は焦点位置が仮想視点映像の範囲内に含まれないと判定した場合(S606でNO)、検出された視点位置又は視線方向又は焦点位置の移動に対して制限を課す(S608)。例えば、操作制御部511は、検出された移動操作に従って、仮想視点映像の範囲を規定する境界まで視点位置又は視線方向又は焦点位置を移動させるが、それ以上の移動はさせないような制御を行いうる。また、操作制御部511は、仮想視点映像の範囲を超えた移動操作については無視してもよい。また、操作制御部511は、移動後の視点位置又は視線方向又は焦点位置が複数の軸方向に跨る場合であって、そのうちいずれかの軸において規定された範囲を超える場合、その軸についての移動のみを制限し、他の軸についての制限を行わなくてもよい。操作制御部511がこのような制限を課すことによって、仮想視点映像の視聴可能範囲外の映像がユーザによって視聴されることを防ぐことができる。これにより、想定外の映像データをユーザに提示することがなくなり又は少なくともそのような提示が行われる確率が減少し、ユーザエクスペリエンスの低下を防ぐことができる。さらに、AdaptationSet管理部508が管理している情報に基づいて、復号制御部506が対応していない仮想視点映像の範囲への移動を復号制御部506における復号処理の前に制限することができる。これにより、復号制御部506の予期せぬ動作やエラーの発生を防ぐことや、処理負荷を低減することができる。
S607又はS608の処理の実行後には、処理はS609へ移行する。
S609では、セグメント取得部512が、通信制御部510を介して、サーバ102から、映像データのセグメントを取得する。セグメント取得部512は、AdaptationSet管理部508の管理する情報から、取得すべき映像データに対応するAdaptationSetを判定し、そのAdaptationSetに記述されているURLにアクセスしてセグメントを取得する。復号制御部506は、仮想視点映像データを復号し、操作制御部511が有するユーザの視点位置・視線方向・焦点情報に基づいて、復号した映像データを、表示制御部507を介して表示部403に表示させる(S610)。その後、クライアント101は、仮想視点映像の再生を終了するか否かを判定する(S611)。そして、クライアント101は、仮想視点映像の再生を終了すると判定した場合(S611でYES)は処理を終了し、仮想視点映像の再生を終了しないと判定した場合(S611でNO)は処理をS605に戻す。
S603において、クライアント101は、自装置が復号可能な形式の仮想視点映像データに関するAdaptationSetが含まれていない場合(S603でNO)、処理をS612に遷移させる。S612では、復号制御部506は、AdaptationSet管理部508で管理されているAdaptationSetの中に、仮想視点映像符号化方式以外の復号可能な映像データがあるか否かを判定する。例えば、復号制御部506は、AVCやHEVC等のクライアント101において再生可能な符号化方式の映像データに対応するAdaptationSetが、AdaptationSet管理部508において管理されているかを判定する。クライアント101は、自装置が再生可能な符号化方式の映像データに対応するAdaptationSetが管理されていないと判定した場合(S612でNO)、例えば表示部403にエラーを表示させて(S614)、処理を終了する。エラー表示により、例えば、再生しようとしたMPDには再生可能な符号化方式のデータが含まれていないことがユーザに通知される。
一方、クライアント101は、自装置が再生可能な符号化方式の映像データに対応するAdaptationSetが管理されていると判定した場合(S612でYES)、そのAdaptationSetに対応する映像データを取得する(S613)。例えば、クライアント101は、自装置がHEVCに対応している場合、HEVCで符号化された映像データに対応するAdaptationSet1707に記述されているURLにアクセスして、対応するセグメントを取得する。また、クライアント101は、自装置がHEVCに対応しておらずAVCに対応している場合、AVCで符号化された映像データに対応するAdaptationSet1706に記述されているURLにアクセスして、セグメントを取得する。これによれば、クライアント101は、自装置が仮想視点映像符号化方式に対応していない場合であっても、対応可能な符号化方式で符号化された映像データを取得して再生することにより、ユーザに映像を提供することができる。これにより、映像データが再生されないことによるユーザエクスペリエンスの低下を防ぐことができる。
以上のように、クライアント101は、MPDに従って、自装置が再生可能な映像データ(メディアデータ)を取得する。すなわち、クライアント101は、自装置が仮想視点映像の再生に対応しており、MPDに仮想視点映像データに対応するAdaptationSetが含まれている場合は、その仮想視点映像データを取得して、仮想視点映像の再生を行う。これにより、クライアント101は、仮想視点映像を再生可能な場合に仮想視点映像データを取得することによって、高臨場感の映像をユーザに視聴させることが可能となる。なお、クライアント101は、例えばユーザによる設定を受け付けて、仮想視点映像を再生可能であっても、例えばHEVCで符号化された映像を再生しうる。この場合、クライアント101は、再生すべきと設定された映像データに対応するAdaptationSetがMPDに含まれている場合は、その設定に従って映像データを再生することができる。なお、クライアント101は、再生すべきと設定された映像データに対応するAdaptationSetがMPDに含まれていない場合は、自装置が再生可能な映像データに対応するAdaptationSetに基づいて、その映像データを取得しうる。これにより、何らかの映像が再生されることとなり、ユーザに映像を提示できない事態が発生することを防ぐこともできる。以上のように、クライアント101は、MPDを確認することで、自装置が確実に再生可能な映像データを取得することができる。
<処理例1-2>
図7に、クライアント101が実行する処理の流れの第2の例を示す。本処理例では、図2(d)に関して説明したように、仮想視点映像の空間領域が複数に分割される場合の例について説明する。本処理で用いられるMPDの記述例を図18に示す。以下では、まず、図18のMPDについて説明した後に、図7の処理の流れについて説明する。なお、図7の処理において、処理例1-1と同様の処理を実行するステップには、図6と共通の参照番号を付してその説明を省略する。
図18のMPD1800は、図2(d)に記載のような空間領域を分割した仮想視点映像に関する情報を記述するMPDである。AdaptationSet1801とAdaptationSet1802は、共に仮想視点映像の分割後の部分空間に対応する情報を記述しており、それぞれが相異なる部分空間に対応する。SupplementalProperty1803及び1804は、それぞれ、AdaptationSet1801とAdaptationSet1802が対応する仮想視点映像の分割後の部分空間に関する情報を記述する。ここで、SupplementalProperty1803は、図17のSupplementalProperty1702のvalueの値に所定の値が追加されていることを除き同様であるため、共通する事項については説明を省略する。追加された情報は、「total_*」及び「total_*_offset」であり、これらの情報は、仮想視点映像の全体の範囲を示している。なお、「*」は、視点位置を示すx、y、z、視線方向を示すyaw、roll、pitch、焦点を示すdepthの各値が挿入される。SupplementalProperty1803は、「x」と「x_offset」により1つの部分空間の視点位置のx軸に関する範囲を示し、「total_x」と「total_x_offset」により空間全体の視点位置のx軸に関する範囲を示す。この情報によれば、例えば、total_x~total_x+total_x_offsetが、空間全体のx軸の範囲として特定される。y、z、yaw、roll、pitchについても同様に範囲が規定される。なお、図18の例では、移動方向、視線方向、焦点方向のすべてが記述される例を示しているが、これに限られず、移動方向のみ、移動方向と視線方向、移動方向と焦点方向等の一部の情報やそれらの任意の組み合わせのみが記述されてもよい。
なお、ここでのMPDは、MPD1810のように記述されてもよい。MPD1800では、部分空間と空間全体の範囲を1つのSupplementalProperty1803によって記述していたが、MPD1810では、これらを分離して記述している。すなわち、SupplementalProperty1811が部分空間の範囲を記述し、SupplementalProperty1812が空間全体の範囲を記述している。なお、この場合、SupplementalProperty1811は、図17のSupplementalProperty1702と同様となる。以下では、MPD1800が用いられる場合について説明するが、クライアント101は、MPD1810が用いられても、同様の処理を実行することができる。
図7では、S701において、MPD解析部501が、サーバ102から取得したMPDファイルを解析する。MPD解析部501は、MPDにおいて記述されている、仮想視点映像データ全体の空間領域情報と、個別のAdaptationSetに含まれている仮想視点映像データの領域とを解析する。クライアント101は、部分空間に対応するAdaptationSetの中から1つを選択して、その選択されたAdaptationSetに対応するメディアデータの取得を開始する(S702)。このとき、AdaptationSet管理部508は、現在再生中の映像データに対応するAdaptationSetを管理する。これにより、現在再生中の映像データにおける部分空間が管理される。なお、クライアント101は、最初に取得するAdaptationSetを、例えばMPDに記述された初期視点位置、初期視線方向、初期焦点等を特定する情報に基づいて決定してもよい。初期視点位置、初期視線方向、初期焦点は、例えば図17のSupplementalProperty1704のようにして規定される。
操作制御部511は、視点位置又は視線方向又は焦点位置の移動操作が行われたことを検出した場合(S605でYES)、その移動後の値が、AdaptationSetで規定された現在再生中の部分空間の範囲内に含まれるかを判定する(S703)。この判定では、視点位置、視線方向、焦点位置それぞれの移動後の値と、AdaptationSet管理部508が管理している現在再生中の部分空間に対応するAdaptationSetで規定されている移動可能範囲の値とが比較される。操作制御部511は、移動後の値が現在再生中の部分空間の範囲内に含まれないと判定した場合(S703でNO)、処理をS704へ進める。S704では、操作制御部511が、AdaptationSet管理部508において管理されている他のAdaptationSetで規定される現在再生中の部分空間と異なる他の部分空間の範囲内に、移動後の値が含まれるか否かを判定する。そして、操作制御部511は、他の部分空間の範囲内に移動後の値が含まれると判定した場合(S704でYES)、再生対象のAdaptationSetを、移動後の値を含む部分空間に関するAdaptationSetに切り替える(S705)。また、AdaptationSet管理部508は、再生中として管理するAdaptationSetを変更する。
このように、仮想視点映像が複数の部分空間に分割されている状況において、複数のAdaptationSetを跨って再生を行うことにより、ユーザによる移動操作に応じて適切な仮想視点映像を行うことが可能となる。また、仮想視点映像が空間的に分割されていることにより、映像データのサイズが小さくなり、また、復号処理の処理負荷を低減することができる。
<処理例1-3>
次に、クライアント101が実行する処理の第3の例について、図8を用いて説明する。本処理は、図2(e)に関して説明したように、オブジェクトと背景の映像データとが別個に提供される場合の処理に関する。本処理で用いられるMPDの記述例を図19に示す。以下では、まず、図19のMPDについて説明した後に、図8の処理の流れについて説明する。なお、図8の処理において、処理例1-1と同様の処理を実行するステップには、図6と共通の参照番号を付してその説明を省略する。
図19のMPD1900は、仮想視点映像を生成するのに用いられる背景データとオブジェクトデータとに関する情報を記述するMPDである。AdaptationSet1901は、背景を符号化した映像データに関するAdaptationSetであり、AdaptationSet1902及び1903は、オブジェクトを符号化した映像データに関するAdaptationSetである。EssentialProperty1904は、AdaptationSet1901の背景データに関して、視点、視線、及び焦点についての範囲を示している。背景データは、背景とオブジェクトとを組み合わせて仮想視点映像を生成する場合には必須であるため、EssentialPropertyに含まれている。しかしながら、これに限られず、同様の情報がSupplementalPropertyに記述されてもよい。クライアント101は、EssentialProperty1904のschemeIdUriの値における「background」の文字列から、このAdaptationSet1901が背景データに対応すると判定することができる。また、valueの値によって、背景データに係るメタデータの値を取得することができる。なお、ここでのvalueの値は、図17のSupplementalProperty1702と同様の意義を有する。なお、クライアント101は、codecsの値に「background」の文字列が含まれていることによって、このAdaptationSet1901が背景データに対応すると判定してもよい。
AdaptationSet1902は、必須のオブジェクトに対応するAdaptationSetであり、AdaptationSet1903は、オプションのオブジェクトに対応するAdaptationSetである。AdaptationSet1902及び1903に含まれるassociationTypeと、associationIDには、依存先のAdaptationSetと依存関係の種類とが定義される。例えば、associationTypeの値が「pcbg」に規定されることにより、背景に依存するオブジェクトであるという依存関係が表される。これによれば、AdaptationSet1902及び1903は、associationTypeの値が「pcbg」であることから、背景に依存するオブジェクトであることが示される。なお、「pcbg」は、associationTypeを表す一例であり、別の文字列が用いられてもよい。また、associationIDは、依存先のAdaptationSetのAdaptationSet IDを示す。すなわち、AdaptationSet1902及び1903は、associationIDが「1」であるため、AdaptationSet IDが「1」のAdaptationSet1901に依存することが特定される。
SupplementalProperty1905及び1906は、それぞれ、AdaptationSet1902及び1903に対応するオブジェクトデータに関する情報を記述する。クライアント101は、SupplementalProperty1905及び1906に含まれるschemeIdUriによって、AdaptationSet1902及び1903が、それぞれ、オブジェクトデータに対応すると判定することができる。また、クライアント101は、SupplementalProperty1905及び1906に含まれるvalueの値によって、対応するオブジェクトデータが必須であるか否かを判定しうる。すなわち、クライアント101は、valueの値に「Mandatory」が含まれるAdaptationSet1902については、対応するオブジェクトデータが必須であることを特定することができる。一方、クライアント101は、valueの値に「Optional」が含まれるAdaptationSet1903については、対応するオブジェクトデータがオプションであることを特定することができる。なお、valueの値のうち、x、y、zはオブジェクトの位置を記述する情報であり、yaw、roll、pitchはオブジェクトの回転方向を記述する情報である。
図8では、S801において、MPD解析部501は、サーバ102から取得したMPDファイルを解析する。本処理では、MPD解析部501は、背景データに対応するAdaptationSetと、オブジェクトに対応するAdaptationSetとを解析する。このとき、AdaptationSet管理部508は、背景データに対応するAdaptationSetの視点位置、視線方向、及び、焦点位置の移動可能範囲を保持する。また、AdaptationSet管理部508は、このAdaptationSetが、背景データに関する情報であることも管理する。AdaptationSet管理部508は、さらに、オブジェクトデータに対応するAdaptationSetの必須・オプションのフラグ、表示位置、表示方向などのメタデータを管理する。
符号化方式判定部505は、AdaptationSet管理部508が管理しているAdaptationSetに基づいて、復号可能な形式の仮想視点映像データが存在するか否かを判定する(S802)。符号化方式判定部505は、AdaptationSet管理部508が復号可能な背景データとオブジェクトデータの両方に関するAdaptationSetを管理している場合に、復号可能な形式の仮想視点映像データが存在すると判定する。なお、符号化方式判定部505は、背景データのAdaptationSetが管理されていなくても、オブジェクトデータのAdaptationSetが管理されている場合には、復号可能な形式の仮想視点映像データが存在すると判定してもよい。クライアント101は、復号可能な形式の仮想視点映像データが存在すると判定した場合(S802でYES)、取得するAdaptationSetを特定し、メディアデータ(背景データ及びオブジェクトデータ)の取得を開始する(S803)。なお、クライアント101は、オブジェクトデータについては、必須フラグが設定されているAdaptationSetに対応するオブジェクトデータのみを取得してもよいし、オプションのオブジェクトデータをも取得してもよい。このとき、AdaptationSet管理部508は、クライアント101が選択したAdaptationSetを、すなわち、再生中の背景データ及びオブジェクトデータにそれぞれ対応するAdaptationSetを管理する。
メディアデータの取得が開始されると、操作制御部511は、ユーザの視点位置、視線方向、焦点位置の変更、または、表示(取得)する背景・オブジェクトの変更等に関するユーザ入力があったか否かの監視を継続的に行う(S804)。そして、操作制御部511は、ユーザ入力があったと判定した場合(S804でYES)、そのユーザ入力が、表示する背景又はオブジェクトの変更に関するものであるか否かを判定する(S805)。操作制御部511は、ユーザ入力が背景又はオブジェクトの変更に関すると判定した場合(S805でYES)、再生対象のAdaptationSetを、変更後の背景又はオブジェクトに対応するAdaptationSetに切り替える(S806)。また、AdaptationSet管理部508は、再生中として管理するAdaptationSetを変更する。また、ユーザ入力によって取得を終了する背景またはオブジェクトがある場合、AdaptationSet管理部508は、その背景またはオブジェクトに対応するAdaptationSetを、再生中としての管理対象から外す。また、ユーザ入力によって、新しく取得する背景またはオブジェクトがある場合、AdaptationSet管理部508は、その背景またはオブジェクトに対応するAdaptationSetを再生中として管理対象とする。
なお、本処理では、復号制御部506は、操作制御部511が有するユーザの位置・視線方向・焦点情報に基づいて、背景データおよびオブジェクトデータを復号して、仮想視点映像を生成する。そして、復号制御部506は、その生成した仮想視点映像を、表示制御部507を介して表示部403に表示させる(S807)。
このように、背景データとオブジェクトデータとから仮想視点映像を生成して表示させるシステムにおいて、AdaptationSetの記述を用いて仮想視点映像の生成に使用されるデータを特定することができる。これによって、仮想視点映像の生成が可能なクライアント101は、仮想視点映像を生成するための背景データとオブジェクトデータを取得して適切な仮想視点映像を表示させることができる。
<処理例1-4>
図9に、クライアント101が実行する処理の流れの第4の例を示す。本処理は、図3(a)に関して説明したような、ユーザの移動範囲に制限のあるWindowed6DoFが用いられる場合の処理に関する。本処理で用いられるMPDの記述例を図20に示す。以下では、まず、図20のMPDについて説明した後に、図9の処理の流れについて説明する。なお、図9の処理において、処理例1-1と同様の処理を実行するステップには、図6と共通の参照番号を付してその説明を省略する。
図20のMPD2000は、windowed6DoFに関する情報を記述するMPDである。なお、MPD2000は、視点位置、視線方向、焦点位置の移動制限範囲が静的であり変化しない場合のMPDの例を示している。SupplementalProperty2003は、AdaptationSet2001に含まれる、仮想視点映像において移動が制限される範囲(移動制限範囲)を記述している。クライアント101は、例えば、schemeIdUriの値に「windowed_area」という文字列が含まれているか否かにより、このSupplementalPropertyが移動制限範囲を記述するか否かを判定することができる。すなわち、クライアント101は、schemeIdUriに「windowed_area」という文字列が含まれているSupplementalProperty2003が移動制限範囲を記述していると判定することができる。なお、SupplementalProperty2003のvalueの記述内容は図17のSupplementalProperty1702の記述と同様の意義を有する。すなわち、SupplementalProperty2003のvalueは、例えばx軸のx~x+x_offsetかつy軸のy~y+y_offsetかつz軸のz~z+z_offsetで定まる範囲への視点の移動が制限されることを示す。クライアント101は、ここで指定される範囲内に視点位置、視線方向、焦点位置を移動させることができない。
MPD2010は、視点位置、視線方向、焦点位置の移動制限範囲が動的に変化する場合のMPDの例である。SupplementalProperty2013は、AdaptationSet2011が移動可能な範囲を含むTimedMetadataのAdaptationSetであることを記述する。クライアント101は、schemeIdUriに文字列「limited_6dof」の文字列が含まれているか否かに応じて、AdaptationSet2011が動的に変化する移動制限範囲を含むか否かを判定することができる。また、valueの値によって、移動可能な範囲を記述するTimedMetadataがRepresentation id=4のRepresentation2014であることが規定される。AdaptationSet2012は、移動可能な範囲を含むTimedMetadataを含んだAdaptationSetである。AdaptationSet2012は、Represetation2014におけるcodecsの値により、移動可能な範囲を定義するメタデータを含むと判定することができる。
図9では、S901において、MPD解析部501は、サーバ102から取得したMPDファイルを解析する。MPD解析部501は、仮想視点映像データに対応するAdaptationSetから、仮想視点映像の移動可能範囲と移動制限範囲とを特定する。例えば、MPD解析部501は、AdaptationSetにおいて規定される視点位置、視線方向、焦点位置の移動可能範囲を解析する。また、MPD解析部501は、AdaptationSetにおいて規定される視点位置、視線方向、焦点位置の移動制限範囲を解析する。AdaptationSet管理部508は、解析したメタデータを、AdaptationSetと共に保持して管理する。なお、本処理例では、移動制限範囲が静的な値であるものとするが、これに限られず、動的な移動制限範囲が特定されてもよい。例えば、MPD2010に記載のAdaptationSet2011に関連付けられたTimedMetadataを含むAdaptationSet2012を解析する。クライアント101は、TimedMetadataを含むAdaptationSet2012に記載されているセグメントを解析し、移動制限範囲を取得しうる。
そして、操作制御部511は、移動後の視点位置又は視線方向又は焦点位置が、仮想視点映像の範囲内にあるか否かの判定(S606)に加えて、移動制限範囲に含まれるか否かの判定をも実行する(S902)。例えば、操作制御部511は、移動後の視点位置又は視線方向又は焦点位置が、現在再生中の映像データに関するAdaptationSetで規定された移動制限範囲に含まれるか否かを判定する。そして、操作制御部511は、移動後の視点位置又は視線方向又は焦点位置が、仮想視点映像の範囲外である場合(S606でNO)又は移動制限範囲内である場合(S902でYES)に、移動(ユーザの動作)を制限する(S608)。移動後の視点位置又は視線方向又は焦点位置が移動制限範囲内である場合の具体的な移動の制限方法は、移動後の視点位置又は視線方向又は焦点位置が仮想視点映像の範囲外の場合の移動の制限方法と同様である。
このように、クライアント101は、MPDから、仮想視点映像の移動制限範囲を特定することができ、これに応じた表示制御を行うことができる。これによれば、適切な視点位置、視線方向、及び焦点位置を用いて仮想視点映像を表示させることができ、ユーザエクスペリエンスを向上させることができる。
<処理例1-5>
図10に、クライアント101が実行する処理の流れの第5の例を示す。本処理は、図3(b)に関して説明したような、サーバ102がユーザの視線方向及び移動方向の情報をTimedMetadataで提供した場合の処理に関する。本処理で用いられるMPDの記述例を図21に示す。以下では、まず、図21のMPDについて説明した後に、図10の処理の流れについて説明する。なお、図10の処理において、処理例1-1と同様の処理を実行するステップには、図6と共通の参照番号を付してその説明を省略する。
図21のMPD2100は、仮想視点映像のメタデータを含んだTimedMetadataを含むMPDの一例である。AdaptationSet2101は、仮想視点映像に対応するAdaptationSetであり、AdaptationSet2102は、視点位置、視線方向、焦点位置を定義するTimedMetadataを含むAdaptationSetである。
SupplementalProperty2104は、参照するTimedMetadataのRepresentationを識別する情報を記述する。クライアント101は、例えば、schemeIdUriの値に文字列「dynamic_6dof」が含まれているか否かを判定する。そして、クライアント101は、この判定結果によって、このSupplementalPropertyが、動的に変化する視点位置、視線方向、焦点位置を定義するTimedMetadataトラックを指示しているかを特定することができる。図21の例において、SupplementalProperty2104は、動的に変化する視点位置、視線方向、焦点位置を定義するTimedMetadataトラックを指示していることが特定される。そして、SupplementalProperty2104のvalueの値が「4,5」であるため、Representation idが4と5のRepresentationが参照される。
Representation2105は、TimedMetadataを含むRepresentationである。また、このRepresentation2015のcodecsの値は、6dcc(6 Degrees Cartesian Coordinate)である。これにより、このRepresentation2105に含まれるメディアデータが、仮想視点映像に係るTimedMetadataであることを特定される。なお、TimedMetadataは、視点位置、視線方向、焦点位置を含む。クライアント101は、このTimedMetadataを用いて、視点位置、視線方向、焦点位置を決定しうる。また、クライアント101は、TimedMetadataで規定される視点位置、視線方向、焦点位置のうちのいずれか1つまたは複数を使用してもよい。これにより、クライアント101は、サーバ102のコンテンツ作成者が意図した視点位置、視線方向、焦点位置において、仮想視点映像をユーザに視聴させるような再生制御を行うことが可能となる。なお、図21のMPDにおけるschemeIdUriの値は一例であり、別の識別子が用いられてもよい。また、上述のメタデータと同義のメタデータである限りにおいて、SupplementalPropertyやEssentialProperty等の仕組み以外の方法でMPD内部にメタデータを定義してもよい。
図10では、S1001において、MPD解析部501は、サーバ102から取得したMPDファイルを解析する。ここでは、MPD解析部501は、仮想視点映像に対応するAdaptationSetと、TimedMetadataを含むAdaptationSetとを解析する。また、MPD解析部501は、仮想視点映像に対応するAdaptationSetと、TimedMetadataを含むAdaptationSetとの関連付けの解析も実行する。例えば、MPD解析部501は、仮想視点映像に対応するAdaptationSetに含まれる、視点位置、視線方向、焦点位置の移動可能な範囲を解析する。また、AdaptationSet管理部508は、解析結果を管理する。また、MPD解析部501は、仮想視点映像データに関連付けられるべきTimedMetadataが存在するかを解析する。そして、AdaptationSet管理部508は、そのようなTimedMetadataが存在する場合、仮想視点映像データとそのTimedMetadataとの関係を管理する。さらに、MPD解析部501は、TimedMetadataを含んだAdaptationSet内の、TimedMetadataの符号化情報を解析する。MPD解析部501は、解析した結果をAdaptationSet管理部508に管理させる。
操作制御部511は、メディアデータの取得を開始する(S604)と、TimedMetadataの値を使用するかを判定する(S1002)。操作制御部511は、例えばTimedMetadataに従うか否かを示すユーザ操作に基づいて、TimedMetadataを使用するか否かを判定しうる。なお、操作制御部511は、例えば視点位置に応じて、TimedMetadataを使用するか否かを判定してもよい。この場合、例えば、視点位置が所定範囲に入っている間はTimedMetadataを使用すると決定されうる。また、操作制御部511は、例えばユーザとの契約に応じて、TimedMetadataを使用するか否かを判定してもよい。例えば、ユーザが無料で仮想視点映像を視聴する場合には、TimedMetadataを使用し、ユーザが有料で仮想視点映像を視聴する場合には、TimedMetadataを使用するか否かのユーザの選択を受け付けるようにしてもよい。
操作制御部511がTimedMetadataの値を使用すると判定した場合(S1002でYES)、AdaptationSet管理部508は、取得対象のTimedMetadataを選択する(S1003)。AdaptationSet管理部508は、例えば、ユーザが着目するオブジェクトに基づいて、取得対象のTimedMetadataを決定しうる。ここで、AdaptationSet管理部508は、例えば、その時点における視点位置と視線方向に基づいて着目するオブジェクトを特定してもよいし、例えばオブジェクトの選択等の所定のユーザ操作に基づいて着目するオブジェクトを特定してもよい。そして、セグメント取得部512は、取得対象として特定されたTimedMetadataを取得する(S1004)。操作制御部511は、取得したTimedMetadataに基づき、視点位置、視線方向、焦点位置の1つまたは全てを、TimedMetadataに指定される値に設定する(S1005)。
なお、操作制御部511がTimedMetadataの値を使用しないと判定した場合(S1002でNO)、ユーザ操作に従って視点位置、視線方向、焦点位置の制御を行う(S1006)。例えば、操作制御部511は、図6のS605~S608の処理を実行しうる。
このように、例えば仮想視点映像の作成者が所定の視点位置、視線方向、焦点位置に従って仮想視点映像をユーザに視聴させたい場合に、TimedMetadataを用いてその設定が記述されうる。この結果、クライアント101は、その作成者の意図に従って仮想視点映像を表示させることができる。また、例えば、一部の制限されたユーザに対しては特定の視点位置、視線方向、焦点位置による仮想視点映像を視聴させ、制限の付されていないユーザに対しては、自由な視点位置、視線方向、焦点位置により仮想視点映像を視聴させることが可能となる。また、いずれのユーザに対しても、推奨される視点位置、視線方向、焦点位置により仮想視点映像を視聴させることができる。なお、例えば現在の視点位置、視線方向、焦点位置が所定の条件を満たす場合に、図10の処理を実行するようにしてもよい。すなわち、クライアント101は、現在の視点位置、視線方向、焦点位置が所定の条件を満たしていない場合には、図6~図9のような処理を実行するようにしてもよい。
以上の各処理例のようにして、クライアント101は、映像データを取得する前に、MPDを解析し、自装置で復号できる映像データを取得する。また、映像データが仮想視点映像データである場合、その仮想視点映像をクライアント101において再生する際の視点位置、視線方向、焦点位置を、MPD内の記述によって制限することができる。これによれば、クライアント101が復号できない映像データの復号を試行することや、設定すべきでない視点位置、視線方向、焦点位置を用いることによるエラー等の不都合の発生を防ぐことができる。
(サーバ102の機能構成)
続いて、サーバ102の機能構成について説明する。図11は、サーバ102の機能構成例を示すブロック図である。サーバ102は、例えば、MPD生成部1101、視点移動範囲生成部1102、視線移動範囲生成部1103、焦点移動範囲生成部1104、符号化方式判定部1105、通信制御部1106、及びセグメント管理部1107を有する。
MPD生成部1101は、上述の図17~図21に示すようなMPDを生成する。視点移動範囲生成部1102は、仮想視点映像における視点位置の移動可能範囲の情報を生成する。視点移動範囲生成部1102は、例えば、仮想視点映像データまたは仮想視点映像データのコンテナを解析することにより、視点が移動可能な範囲を取得する。視線移動範囲生成部1103は、仮想視点映像における視線方向の移動可能範囲の情報を生成する。視線移動範囲生成部1103は、仮想視点映像データまたは仮想視点映像データのコンテナを解析することにより、視線が移動可能な範囲を取得する。焦点移動範囲生成部1104は、仮想視点映像における焦点方向の移動可能範囲の情報を生成する。焦点移動範囲生成部1104は、仮想視点映像データまたは仮想視点映像データのコンテナを解析することにより、焦点が移動可能な範囲を取得する。視点移動範囲生成部1102、視線移動範囲生成部1103、焦点移動範囲生成部1104によって生成された情報は、MPD生成部1101によってMPDに記述される。符号化方式判定部1105は、映像データの符号化方式を判定する。符号化方式判定部1105は、符号化データまたは符号化データのコンテナを解析することにより、例えば、そのデータが仮想視点映像形式で符号化されたデータであるかその他の符号化方式で符号化されたデータであるかを特定する。なお、符号化方式判定部1105は、仮想視点映像形式ではない符号化方式で符号化されたデータについて、その符号化方式を詳細に特定しうる。特定した符号化方式の情報は、MPD生成部1101によってMPDに記述される。
通信制御部1106は、通信部427を介して通信を制御する。例えば、通信制御部1106は、HTTP(Hyper Text Transfer Protocol)やTCP/IP等の各種通信プロトコルによる通信の制御を行う。セグメント管理部1107は、仮想視点映像形式で符号化された映像データのセグメント、仮想視点映像形式以外の形式で符号化された映像データのセグメント、および、TimedMetadataのセグメントを管理する。セグメント管理部1107は、セグメントを生成してもよいし、他の装置からセグメントを取得してもよい。
(サーバ102が実行する処理の流れ)
続いて、サーバ102が実行する処理の流れのいくつかの例について説明する。本実施形態では、サーバ102は、映像データに関する情報をMPEG-DASHのMPDファイルに含めてクライアント101へ送信する。以下では、特に、MPDファイルの生成に関する処理について説明する。
<処理例2-1>
本処理例は、処理例1-1に対応する処理の流れの例であり、図17のMPD1700のようなMPDを生成する際の処理に関する。本処理の流れの例を図12に示す。
本処理では、まず、セグメント管理部1107は、配信に使うセグメントを用意する(S1201)。サーバ102は、初期化セグメントとメディアセグメントとを用意する。なお、配信されるセグメントは、サーバ102が符号化したデータをセグメント化したものであってもよいし、サーバ102以外の装置が生成したものであってもよい。また、サーバ102は、必ずしもセグメントを保持する必要はなく、他の装置が保持しているセグメントの所在(例えばURL)の情報を用意してもよい。そして、MPD生成部1101は、MPDの生成を開始する(S1202)。
MPD生成部1101は、仮想視点映像に対応するAdaptationSetを生成する(S1203)。そして、MPD生成部1101は、S1203で生成したAdaptationSetに対して、対応する仮想視点映像データの符号化方式の情報を記述する(S1204)。例えば、MPD生成部1101は、符号化方式判定部1105がセグメントファイルを解析することによって判定した符号化方式や、外部から入力された符号化方式の情報を、AdaptationSetに記述する。符号化方式の情報は、例えば、AdaptationSet内のcodecsに記述される。
MPD生成部1101は、S1203で生成したAdaptationSetに対して、対応する仮想視点映像における視点位置の移動可能範囲の情報を記述する(S1205)。例えば、MPD生成部1101は、視点移動範囲生成部1102がセグメントファイルを解析することによって判定した視点位置の移動可能範囲や、外部から入力された視点位置の移動可能範囲の情報を、AdaptationSetに記述する。
また、MPD生成部1101は、S1203で生成したAdaptationSetに対して、対応する仮想視点映像における視線方向の移動可能範囲の情報を記述する(S1206)。例えば、MPD生成部1101は、視線移動範囲生成部1103がセグメントファイルを解析することによって判定した視線方向の移動可能範囲や、外部から入力された視線方向の移動可能範囲の情報を、AdaptationSetに記述する。
また、MPD生成部1101は、S1203で生成したAdaptationSetに対して、対応する仮想視点映像における焦点位置の移動可能範囲の情報を記述する(S1207)。例えば、MPD生成部1101は、焦点移動範囲生成部1104がセグメントファイルを解析することによって判定した焦点位置の移動可能範囲や、外部から入力された焦点位置の移動可能範囲の情報を、AdaptationSetに記述する。
なお、S1204~S1207の処理は、必ずしも図12に記載の順序で実行されなければならないわけではなく、任意の順序で各処理が実行されうる。また、S1204~S1207のようにして、符号化方式、視点位置の移動可能範囲、視線方向の移動可能範囲、焦点位置の移動可能範囲が特定された後に、それらを含むようなAdaptationSetの生成が行われてもよい。
MPD生成部1101は、仮想視点映像に対応するAdaptationSetの生成を完了した後に、MPDに仮想視点映像符号化方式と異なる方式で符号化された映像データに関するAdaptationSetを含めるか否かを判定する(S1208)。MPD生成部1101は、仮想視点映像以外の映像データに対応するAdaptationSetをMPDに含めると判定した場合(S1208でYES)、その映像データに関するAdaptationSetをMPDに記述する(S1209)。例えば、MPD生成部1101は、AVC、HEVC、又はその他の符号化方式で符号化された映像データに対応するAdaptationSetをMPDに含めてもよい。このように仮想視点映像符号化方式以外の方式で符号化された映像データに関する情報をMPDに含めることによって、仮想視点映像符号化方式に対応していないMPDの受信者が、そのMPDに従ってコンテンツを再生することができる確率が高くなる。
その後、MPD生成部1101は、その他の必要なメタデータをMPDに記述して、MPDの生成を完了する(S1210)。なお、ここで記述されるMPDについては、本実施形態と直接関係しないため、説明を省略する。
以上のようにして生成したMPDが送信されることにより、このMPDを受信した装置は、自装置が復号できる映像データを選択して取得することができる。例えば、MPDを受信した装置は、自装置が仮想視点映像データを復号することができる場合、仮想視点映像データに対応するAdaptationSetに含まれるURLに基づいて、仮想視点映像データを取得することができる。これにより、MPDを受信した装置において、MPDによって復号可能と判定された映像データが取得されるため、取得された映像データの復号に失敗する確率を低減することができる。
<処理例2-2>
本処理例は、処理例1-2に対応する処理の流れの例であり、図18のMPD1800やMPD1810のようなMPDを生成する際の処理に関する。本処理の流れの例を図13に示す。なお、図13の処理において、処理例2-1と同様の処理を実行するステップには、図12と共通の参照番号を付してその説明を省略する。
S1301において、MPD生成部1101は、複数に分割された領域にそれぞれに対応するAdaptationSetを生成する。そして、MPD生成部1101は、S1301で生成したそれぞれのAdaptationSetに対して、仮想視点映像データの符号化方式の情報を記述する(S1302)。S1302の処理は、仮想視点映像における部分空間に対する処理である点でS1204と異なるが、具体的な処理はS1204と同様である。
その後、MPD生成部1101は、仮想視点映像の全体(分割前の仮想視点映像)における、視点位置、視線方向、焦点位置の移動可能範囲の情報をS1301で生成したAdaptationSetのそれぞれに記述する(S1303~S1305)。なお、仮想視点映像の全体についての視点位置、視線方向、焦点位置の移動可能範囲の情報は、MPDに対して1つのみ記述されてもよい。この場合、例えば、仮想視点映像の全体についての視点位置、視線方向、焦点位置の移動可能範囲の情報を記述するAdaptationSetが生成されうる。そして、S1301で生成したAdaptationSetの中に、仮想視点映像の全体についての視点位置、視線方向、焦点位置の情報を記述するAdaptationSetへのポインタが含められうる。なお、視点移動範囲生成部1102、視線移動範囲生成部1103、焦点移動範囲生成部1104は、仮想視点映像の全部分空間に関するセグメントを解析して仮想視点映像の全体についての視点位置、視線方向、焦点位置の移動可能範囲を特定しうる。また、視点移動範囲生成部1102、視線移動範囲生成部1103、焦点移動範囲生成部1104は、仮想視点映像の全体についての視点位置、視線方向、焦点位置の移動可能範囲の情報を外部の装置から取得してもよい。
さらに、MPD生成部1101は、S1301で生成した各AdaptationSetに、対応する仮想視点映像の部分空間についての視点位置、視線方向、焦点位置の移動可能範囲の情報を記述する(S1306~S1308)。なお、視点移動範囲生成部1102、視線移動範囲生成部1103、焦点移動範囲生成部1104は、仮想視点映像の各部分空間に関するセグメントを解析して、その部分空間についての視点位置、視線方向、焦点位置の移動可能範囲を特定しうる。視点移動範囲生成部1102、視線移動範囲生成部1103、焦点移動範囲生成部1104は、各部分空間についての視点位置、視線方向、焦点位置の移動可能範囲を外部の装置から取得してもよい。
なお、S1302~S1308の処理は、必ずしも図13に記載の順序で実行されなければならないわけではなく、任意の順序で各処理が実行されうる。また、S1302~S1308のようにして、符号化方式、視点位置の移動可能範囲、視線方向の移動可能範囲、焦点位置の移動可能範囲が特定された後に、それらを含むようなAdaptationSetの生成が行われてもよい。
このように、仮想視点映像が複数の部分空間に分割されている状況において、複数のAdaptationSetによって各部分空間の情報を記述することにより、MPDを受信した装置に、全空間についての仮想視点映像を一度に取得させる必要がなくなる。これによれば、仮想視点映像が空間的に分割されていることにより、映像データのサイズが小さくなるため、MPDを受信した装置における復号処理の処理負荷を低減することができる。
<処理例2-3>
本処理例は、処理例1-3に対応する処理の流れの例であり、図19のMPD1900のようなMPDを生成する際の処理に関する。本処理の流れの例を図14に示す。なお、図14の処理において、処理例2-1と同様の処理を実行するステップには、図12と共通の参照番号を付してその説明を省略する。
S1401において、MPD生成部1101は、仮想視点映像の背景データに対応するAdaptationSetを生成する。そして、MPD生成部1101は、S1401で生成したAdaptationSetに対して、対応する背景データの符号化方式の情報を記述する(S1402)。S1402の処理は、仮想視点映像における背景データに対する処理である点でS1204と異なるが、具体的な処理はS1204と同様である。
その後、MPD生成部1101は、背景データにおける、視点位置及び視線方向の移動可能範囲の情報をS1401で生成したAdaptationSetに記述する(S1403~S1404)。S1403~S1404の処理は、仮想視点映像における背景データに対する処理である点でS1205~S1206と異なるが、具体的な処理はS1205~S1206と同様である。
そして、MPD生成部1101は、仮想視点映像の各オブジェクトデータにそれぞれ対応するAdaptationSetを生成する(S1405)。そして、MPD生成部1101は、各オブジェクトデータについて、仮想視点映像空間におけるオブジェクトの位置を示す情報を、S1405で生成したAdaptationSetに記述する(S1406)。MPD生成部1101は、オブジェクトの位置を、例えば、セグメントファイルを解析することにより、又は、外部からの入力によって取得しうる。また、MPD生成部1101は、各オブジェクトデータについて、仮想視点映像空間におけるオブジェクトの向きを示す情報を、S1405で生成したAdaptationSetに記述する(S1407)。MPD生成部1101は、オブジェクトの向きを、例えば、セグメントファイルを解析することにより、又は、外部からの入力によって取得しうる。また、MPD生成部1101は、仮想視点映像を生成する際に各オブジェクトが必須であるかオプションであるかをMPDの受信者に判定させるための情報を、各オブジェクトデータに対応するAdaptationSetに記述する(S1408)。さらに、MPD生成部1101は、各オブジェクトデータについて、背景データに対応するAdaptationSetへ依存する関係があることを示す情報を、S1405で生成したAdaptationSetに記述する(S1409)。
なお、S1401~S1409の処理は、必ずしも図14に記載の順序で実行されなければならないわけではなく、任意の順序で各処理が実行されうる。例えば、オブジェクトデータに関するAdaptationSetが、背景データに関するAdaptationSetより先に生成開始されてもよい。なお、オブジェクトデータに関するAdaptationSetには、背景データに関するAdaptationSetが生成され次第、その識別情報が依存関係に関する情報として含められうる。
このように、背景データとオブジェクトデータとから仮想視点映像が生成されるシステムにおいて、仮想視点映像の生成に使用されるデータを特定することを可能とするMPDを生成することができる。これによって、仮想視点映像の生成が可能で、かつ、MPDを受信した装置は、仮想視点映像を生成するための背景データとオブジェクトデータを取得して適切な仮想視点映像を表示させることができる。
<処理例2-4>
本処理例は、処理例1-4に対応する処理の流れの例であり、図20のMPD2000のようなMPDを生成する際の処理に関する。本処理の流れの例を図15に示す。なお、図15の処理において、処理例2-1と同様の処理を実行するステップには、図12と共通の参照番号を付してその説明を省略する。
S1501では、MPD生成部1101は、仮想視点映像における視点位置の移動制限範囲の情報をAdaptationSetに記述する。MPD生成部1101は、視点移動範囲生成部1102がセグメントファイルを解析することによって又は外部からの入力によって取得した視点位置の移動制限範囲の情報をAdaptationSetに記述する。また、MPD生成部1101は、仮想視点映像における視線方向の移動制限範囲の情報をAdaptationSetに記述する(S1502)。MPD生成部1101は、視線移動範囲生成部1103がセグメントファイルを解析することによって又は外部からの入力によって取得した視線方向の移動制限範囲の情報をAdaptationSetに記述する。さらに、MPD生成部1101は、仮想視点映像における焦点位置の移動制限範囲の情報をAdaptationSetに記述する(S1503)。MPD生成部1101は、焦点移動範囲生成部1104がセグメントファイルを解析することによって又は外部からの入力によって取得した視線方向の移動制限範囲の情報をAdaptationSetに記述する。
なお、S1501~S1503の処理は、必ずしも図15に記載の順序で実行されなければならないわけではなく、任意の順序で各処理が実行されうる。
上述のようにして、仮想視点映像の移動制限範囲を特定するMPDが生成されることにより、このMPDを受信した装置が、この記述に応じた仮想視点映像の表示制御を行うことができる。これによれば、適切な視点位置、視線方向、及び焦点位置を用いて仮想視点映像を表示させることができ、ユーザエクスペリエンスを向上させることができる。
<処理例2-5>
本処理例は、処理例1-5に対応する処理の流れの例であり、図21のMPD2100のようなMPDを生成する際の処理に関する。本処理の流れの例を図16に示す。なお、図16の処理において、処理例2-1と同様の処理を実行するステップには、図12と共通の参照番号を付してその説明を省略する。
S1601において、MPD生成部1101は、TimedMetadataを含むAdaptationSetを生成する。TimedMetadataは、S1203で生成されたAdaptationSetと異なるAdaptationSetに格納されてもよい。また、1つのAdaptationSetに、複数のTimedMetadataが含められてもよい。なお、1つのAdaptationSetに、複数のTimedMetadataが含まれる場合、それぞれのTimedMetadataは、相異なるRepresentationに含められる。
そして、MPD生成部1101は、TimedMetadataを含んだAdaptationSetに対して、TimedMetadataの形式を特定させるための値を符号化方式として記述する(S1602)。なお、ここでは、対象のTimedMetadataが仮想視点映像に係るTimedMetadataであることを示す値が記述される。MPD生成部1101は、TimedMetadataを解析することにより又は外部の入力により、この形式を判定しうる。なお、TimedMetadataの符号化方式の値は、Representationにおいて記述されてもよい。
さらに、MPD生成部1101は、TimedMetadataを含むAdaptationSetが依存する先のAdaptationSetを依存先として記述する(S1610)。MPD生成部1101は、TimedMetadataを解析することにより又は外部からの入力により、依存先のAdaptationSetを判定しうる。
このように、サーバ102は、例えば仮想視点映像の作成者が所定の視点位置、視線方向、焦点位置に従って仮想視点映像をユーザに視聴させたい場合に、TimedMetadataを用いてその設定を記述することができる。この結果、このMPDを受信した装置は、その作成者の意図に従って仮想視点映像を表示させることができる。また、例えば、一部の制限されたユーザに対しては特定の視点位置、視線方向、焦点位置による仮想視点映像を視聴させ、制限の付されていないユーザに対しては、自由な視点位置、視線方向、焦点位置により仮想視点映像を視聴させることが可能となる。また、いずれのユーザに対しても、推奨される視点位置、視線方向、焦点位置により仮想視点映像を視聴させることができる。
以上の各処理例のようにして、サーバ102は、映像データとは別に、その映像データに関するMPDを生成して送信する。これにより、このMPDの受信者は、自装置が復号できる映像データを取得し、復号できない映像データについては取得しないことにより、不必要な映像データの取得を行わないようにすることができる。また、MPDの受信者が、仮想視点映像が存在する場合に、それを確実に認識させることで、仮想視点映像の視聴機会を増やすことができる。映像データが仮想視点映像データである場合、その仮想視点映像を視聴する際の視点位置、視線方向、焦点位置を、MPD内の記述によって制限することができる。これによれば、MPDの受信者が復号できない映像データの復号を試行することや、設定すべきでない視点位置、視線方向、焦点位置を用いることによるエラー等の不都合の発生を防ぐことができる。
本実施形態では、仮想視点映像に関する情報を含むMPDに、視点位置、視線方向、焦点位置といったメタデータを含めているが、これらの全てが必須ではなく、例えば視点位置のみがメタデータとしてMPDに含められてもよい。また、視点位置、視線方向、焦点位置の1つ以上に加え、別の設定要素がメタデータとして含められてもよい。このように、任意の1つ以上の設定情報をメタデータとして用いることにより、映像データの柔軟な再生制御を行うことが可能となる。
また、本実施形態では、MPEG-DASHを例に説明をしたが、これに限定されない。例えば、他のプレイリストを有するHTTP Live StreamingやMicrosoft Smooth Streamingなどの規格においても上述の議論を適用することができる。すなわち、プレイリスト等の映像データとは異なるデータに仮想視点映像に係るメタデータを記述することによって、上述の処理と同様の処理を行うことができる。
なお、本実施形態では、プレイリストに仮想視点映像データに関連するメタデータを記述する処理について説明したが、これに限られず、他の方法によって仮想視点映像データに関連するメタデータが提供してもよい。例えば、Javascriptファイル等に仮想視点映像データに関連するメタデータが含められてもよいし、異種のプロトコルを使ってサーバから仮想視点映像データに関連するメタデータが提供されてもよい。これらの方法により、仮想視点映像データの取得に必要となるメタデータが、プレイリストによらずにクライアントに提供されうる。
また、本実施形態では、サーバが仮想視点映像を符号化して配信する例について説明したが、仮想視点映像データのみならず、その他の符号化方式で符号化された映像データも並行して配信されてもよい。例えば、仮想視点映像データに基づいて、視点・視線の移動を制御して生成した映像が、HEVC、AVC、VP8、VP9、又は、その他の符号化方式で符号化された映像データが配信されてもよい。これにより、仮想視点映像の符号化に対応していないクライアントであっても、仮想視点映像に対応する動画を再生することが可能となりうる。
なお、仮想視点映像データの符号化方式は、どのようなものが用いられてもよい。例えば、焦点情報を有する符号化方式であるLightFiedCompressionやPlenoptic Image Compressionが用いられてもよいし、これらと異なる符号化方式が用いられてもよい。例えば、焦点情報を有しない符号化方式が用いられてもよい。また、本実施形態では、符号化処理が行われた仮想視点映像データは、動画コンテナに格納される。動画コンテナは、例えば、ISOBMFF(ISO Base Media File Format)、MPEG2-TS、WebM、又はその他の動画コンテナフォーマットでありうる。また、映像データは、動画コンテナフォーマットに格納される際に、セグメント化によって複数の動画ファイルに分割されうるが、これに限られず、分割されなくてもよい。なお、映像データが分割されない場合、クライアントは、単一の映像データファイルをすべて取得するか、特定の範囲(バイトレンジ)を指定してセグメントを取得する。
以上のように、サーバ102は、MPDファイルに、仮想視点映像データを識別するためのメタデータを記述する。また、クライアント101は、MPDファイルに記載されている仮想視点映像データに係るメタデータを解析し、解析した結果を管理して、その管理内容に基づいて映像の再生を行う。これにより、クライアント101は、自装置が復号できる映像データを取得し、その映像データについての動作の制御を、映像データの解析を行うことなく実行することができる。このため、クライアント101は、処理負荷を軽減しながら、サーバ102から仮想視点映像データを取得することができる。
なお、上述の手法は、クライアントに対して映像データに関するが映像データそのものではない第1のデータを提供し、クライアントがその第1のデータに基づいて映像データを含んだ第2のデータを取得するシステムにおいて適用可能である。すなわち、MPDファイルやその他の任意の形式のファイルが第1のデータとして用いられる場合に、その第1のデータについて上述のような記述手法を用いることができる。なお、映像データに代えて又はこれに追加して、音声データに関しても上述の処理と同様の処理が実行されうる。すなわち、仮想聴点音響等の他のメディアデータにも、上述の手法を適用することができる。
<<その他の実施形態>>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。