以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施形態は本発明を限定するものではなく、また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成については、同じ符号を付して説明する。
<第1実施形態>
第1実施形態では、ユーザ端末でのインタラクティブな仮想視点映像の再生時に必要なモデルデータの送信方法に関して説明する。ここでは、説明を簡易にするため、送信元であるサーバが単一で、受信先であるクライアントが複数存在するケースを想定する。また、ロケーションをサッカー競技が行われるスタジアム内とし、サーバである画像処理装置がスタジアム内に存在し、観客席においてユーザがクライアントである表示装置(スマートフォン、タブレットなどの端末)を操作し、仮想視点映像を閲覧するものとする。なお、本実施形態において仮想視点映像とは、仮想的に設定された視点からの映像のことを意味する。仮想視点映像に類似の用語として、自由視点映像や任意視点映像等の呼称も存在する。
図1Aは、第1実施形態における、画像処理装置の構成例と画像表示システムの構成例を示すブロック図である。画像処理装置100は、CPU101、メインメモリ102、記憶部103、入力部104、表示部105、外部I/F部106、バス107を備える。CPU101は、演算処理や各種プログラムを実行する。メインメモリ102は、処理に必要なプログラム、データ、作業領域などをCPU101に提供する。記憶部103は、画像処理プログラム、GUI表示に必要な各種データ、などを格納する。記憶部103には、例えばハードディスクやシリコンディスク等の不揮発性メモリが用いられる。入力部104は、キーボードやマウス等の装置であり、サーバ管理者からの操作入力を受け付ける。表示部105はGUIの表示を行う。外部I/F部106は、LAN108を介してカメラ装置群や表示装置群と接続し、映像データや制御信号データ、モデルデータの送受信を行う。バス107は上述の各部を接続し、データ転送を行う。
LAN108は有線および/または無線で構成され、画像処理装置、カメラ装置群、表示装置群、分析装置間でのデータ送受信に利用される。カメラ装置群は、複数のカメラ120で構成される。それぞれのカメラ120はLAN108経由で画像処理装置100と接続されており、画像処理装置100からの制御信号をもとに、撮影の開始と停止、カメラ設定(シャッタースピード、焦点距離、絞値など)の変更、撮影データの転送を行う。表示装置群は、複数のユーザ端末130(スマートフォンやタブレットなど)から構成される。それぞれのユーザ端末130はLAN108経由で画像処理装置100と接続されており、画像処理装置100から仮想視点映像の閲覧に必要なモデルデータを受信する。ユーザ端末130は、受信したモデルデータを用いて、仮想視点映像を生成し、表示する。LAN108の通信帯域は有限であるため、ユーザ端末130が受信可能なモデルデータのサイズはユーザ数に依存する。分析装置140は、カメラ120の映像や被写体に設置した各種センサ情報を用いて、被写体のプレーの種類を分析する。なお、分析装置140はオプションであり、必須な構成要素ではない。なお、システム構成については、上記以外にも、様々な構成要素が存在する。例えば、LAN108の代わりに、インターネットやWANなどを介して、各種デバイスが接続されるようにしても良い。また例えば、画像処理装置100と複数のカメラ120と分析装置140がLAN108を介して接続されることによって画像処理システムを形成し、当該画像処理システムとユーザ端末130がインターネット等によって接続されるようにしても良い。
図1Bは、第1実施形態による、表示装置としてのユーザ端末130の構成を示すブロック図である。ユーザ端末130は、CPU131、メインメモリ132、記憶部133、入力部134、表示部135、外部I/F部136、バス137を備える。CPU131は、演算処理や各種プログラムを実行する。メインメモリ132は、処理に必要なプログラム、データ、作業領域などをCPU131に提供する。記憶部133は、仮想視点映像を生成、表示するためのプログラム、GUI表示に必要な各種データ、などを格納する。記憶部133には、例えばハードディスクやシリコンディスク等の不揮発性メモリが用いられる。入力部134は、キーボード、マウス、タッチパネル等の装置であり、仮想視点映像を観察するユーザからの操作入力を受け付ける。表示部135は、仮想視点映像やGUIの表示を行う。外部I/F部136は、LAN108と接続し、例えば画像処理装置100から送信された、仮想視点映像を再生するためのモデルデータを受信する。バス137は上述の各部を接続し、データ転送を行う。
図2は、複数のカメラ120の配置を示した図である。サッカー競技を行うフィールド201上に複数の被写体202が存在し、複数のカメラ120がフィールド201を取り囲むように配置されている。複数のカメラ120は主に観客席などに配置され、それぞれフィールド201が収まるように焦点距離と撮影方向が設定されている。
図3は、画像処理装置100による送信までの一連の処理過程を示したフローチャートである。S301では、画像処理装置100は、カメラ120の撮影により得られた映像を取得し、映像中の被写体ごとに、データサイズが異なる複数の階層(図5Aにより詳述する)のモデルデータを生成する。S301の処理に関しては、図4にて詳述する。S302では、画像処理装置100は、撮影対象となる競技の指定を受け付ける。ここでは、「サッカー」、「ラグビー」、「フィギュア」などの競技名の指定を受け付ける。S303では、画像処理装置100は、S302で受け付けた競技の種別、分析装置140からのデータを基に、仮想視点映像生成に必要なモデルデータの階層が記述された属性データを生成する。図6A、図6Bの参照により後述するように、属性データは、映像中のコンテンツの属性と要求される階層とを対応付けるデータである。S303の処理に関しては、図7の参照により後述する。S304では、画像処理装置100は、属性データによって要求される階層のモデルデータを被写体ごとに選択して送信用モデルデータを構成し、表示装置であるユーザ端末130からのリクエストに応じて送信する。この送信用モデルデータの構築において、LAN108の通信帯域の使用状態なども考慮される。S304の処理に関しては、図8の参照により後述する。
図4は、インタラクティブな仮想視点映像の生成に必要なモデルデータを複数の階層について生成する処理を示したフローチャートであり、S301の処理の詳細を示している。S401において、画像処理装置100(CPU101)は、スタジアムや観客席などの背景モデルデータを生成する。背景モデルデータは3次元形状を構築するメッシュデータと、色を再現するためのテクスチャデータから構成され、3Dレーザスキャナや、多視点ステレオ法などを用いて生成される。
S402において、CPU101は、カメラ120に対して、撮影時の露光が適切となるようなカメラ設定の変更と、撮影開始の信号を送信する。撮影開始の信号に応じてカメラ120は撮影を開始し、映像データをLAN108経由で画像処理装置100に転送する。画像処理装置100は、カメラ120からの映像データを受信し、メインメモリ102上に展開する。画像処理装置100は、映像データを、各カメラの映像フレームを同一のタイムコードごとにまとめた多視点フレームとして管理する。また、このとき、画像処理装置100は、各カメラの位置・姿勢をStructure from Motion等の方法を用いて算出し、記憶しておく。
S403において、CPU101は、映像データから被写体群の輪郭を抽出し、Visual-hullなどの方法を用いて被写体群の3次元形状・位置を生成する。被写体群の輪郭抽出は、1台のカメラのカメラ映像の全フレームにおいて中間値フィルタを用いることで取得可能である。また、3次元形状は点群データ、もしくはボクセルデータとして出力される。本処理は、全タイムコードの多視点フレームに対して実施され、多視点フレーム単位で全被写体の形状点群データ(高密度点群による形状データ)が生成される。生成された形状点群データは記憶部103に保存される。
S404において、CPU101は、S403で生成した形状点群データに対して、間引きを行い、残った点群をつないで面(三角形ポリゴン)を構成するメッシュ化を行い、被写体を表すメッシュを生成する。メッシュ化には、周知の技術を適用可能であり、例えばBall Pivotingなどの方法を用いることができる。CPU101は、多視点フレーム単位に生成した全ての形状点群データに対してメッシュ化の処理を実行し、得られたデータ(低密度なメッシュデータ)を記憶部103に保存する。S405において、CPU101は、S404で生成したメッシュに対して貼り付けるテクスチャデータ(被写体のテクスチャ)を生成する。被写体のテクスチャの生成には周知の技術を適用可能である。CPU101は、多視点フレーム単位に生成した全てのメッシュデータに対してテクスチャを生成し、得られたデータを記憶部103に保存する。
S406において、CPU101は、映像先頭のタイムコードに該当する多視点フレーム(初期フレーム)から生成されたメッシュとテクスチャを記憶部103から読み出し、メインメモリ102に展開する。S407において、CPU101は、S406で読み込んだメッシュに対してメッシュを姿勢制御するためのボーンを組み込む。ボーンは図5B(b)に示すように、人間の骨のような構造を持ち、関節502と、関節502同士をつなぐ骨組み503とを有し、メッシュ501の内部に格納される。ボーンはあらかじめ用意されており、メッシュに合わせてサイズや初期関節位置を変更することで、種々のメッシュに格納可能である。メッシュ501とボーンは連動して変形するため、関節502の位置を移動することによって、メッシュ501に様々な姿勢・動作(座る、走る、蹴るなど)を再現させることが可能である。また、各々の関節502の位置は骨組み503によって移動が制限されるため、より人間に近い動作が再現できる。
S408において、CPU101は、カメラ映像を用いて全被写体の関節位置を推定する。関節位置の推定には周知の技術を適用することが可能である。例えば、機械学習を用い、映像上の2次元での関節位置(x(n,i,k,t), y(n,i,k,t))を取得する。ここで、0≦x<画像の横幅、0≦y<画像の縦幅、0≦n<カメラ数、0≦i<被写体数、0≦k<関節数、0≦t<フレーム数である。少なくとも2台以上のカメラ映像において2次元関節位置を取得後、S402で求めた各カメラの位置を基に三角測量を用いて3次元での関節位置(X(i,k,t), Y(i,k,t), Z(i,k,t))を取得する。このとき、X、Y、Zは3次元空間における座標値で、0≦i<被写体数、0≦k<関節数、0≦t<フレーム数である。これにより、被写体の各関節の移動軌跡、すなわち、姿勢の変遷が取得される。
S409において、CPU101は、S407で生成したボーンの関節位置を、S408で生成した3次元関節位置と多視点フレーム単位で対応付け、メッシュおよびボーンを姿勢変遷化(アニメーション化)する。これによって、メッシュとテクスチャは映像先頭の多視点フレームのデータのみ用意し、関節位置の軌跡を表す少量のアニメーションデータを付加するのみで良いので、実質的にモデルデータの時間軸方向への圧縮となり、データ量を大幅に削減できる。
S410では、CPU101は、S403〜S409で生成したモデルデータを、図5Aの表5aに示す階層構造として保持する。表5aにおいて、階層は3段階に分かれており、それぞれ、3次元形状とテクスチャから構成される。階層3は、最高階層であり、3次元形状としてS403で生成された点群データを、テクスチャとしてS402で取得されたカメラ映像を含み、データ量が最も大きく、生成される仮想視点映像の画質が最も高い。階層2は、3次元形状としてS404で生成されたメッシュデータを含み、テクスチャとしてS405で生成されたテクスチャデータを含み、データ量および生成される仮想視点映像の画質は共に中程度である。階層1は、本実施形態では、最低階層であり、3次元形状としてS406で取得されたメッシュデータとS409で取得されたアニメーションデータを含み、テクスチャとしてS406で取得されたテクスチャデータを含む。階層1のモデルデータはデータ量が最も軽いが、仮想視点映像の画質は最も低い。階層ごとに再現可能な項目を図5B(a)の表5bにまとめた。階層が下がるにつれて、表現可能な項目が減少するため、データ送信時にはコンテンツ内容に応じて、適切な階層を選択する必要がある。
S411において、分析装置140が存在する場合、CPU101は、分析装置140から取得した分析データである被写体のプレー情報(シュート、パス、クリアなどのプレー内容)と、モデルデータを紐づける。これにより、例えば、シュート時の、所望の階層の3次元形状とテクスチャデータを抽出する処理などが実施可能となる。以上の処理により、階層構造を持つモデルデータの生成が完了する。
図6A、図6Bは、モデルデータの圧縮に必要となる、属性データを説明した図である。本実施形態では、属性データには、競技属性、エリア属性、試合属性の3種類が存在し、圧縮効果の大きさは、試合属性>エリア属性>競技属性の順となる。各属性データには、仮想視点映像生成に要求されるモデルデータの階層(要求階層)が記述されており、競技属性、エリア属性、試合属性の順に、より細かく要求階層が分類されている。
競技属性には、図6A(a)の表6aに示されるようにコンテンツの属性としての競技の種類ごとに要求階層が記述されている。例えば、アメリカンフットボール(アメフト)では、選手がヘルメットを被っており、顔が隠蔽されているため、テクスチャの要求階層は低い。一方で、フィギュアスケートやサッカーでは、選手の顔や表情をはっきり見たいというニーズがあるため、テクスチャへの要求階層が高い。また、3次元形状に関して、アメフトやサッカーでは選手のプレー位置が重要であり、形状の詳細さや動きの滑らかさに対するニーズが低いため、要求階層は低い。一方、フィギュアスケートでは、演技時の動きが重要であるため、3次元形状の要求階層は高くなる。このように、競技ごとに3次元形状とテクスチャ各々で要求階層を決定し、高い方をその競技の要求階層と定義する。
エリア属性は、図6A(c)の表6cに示されるように、それぞれの競技の競技場について、コンテンツの属性としてのエリア(競技場の一部)ごとに要求階層が記述されている。例えば、サッカーでは、図6A(b)に示すように、ゴール前であるエリア0、1は注目されるプレーの発生率が高いため、要求階層が最も高い。コーナーキック等が発生するエリア2が次に要求階層が高く、エリア0、1、2以外の領域の要求階層は低い。なお、図6A(b)ではエリア2が1か所にのみ示されているが、実際はフィールドの4隅にエリア2が設定される。以上を踏まえて、エリアの領域情報とそれに対応する要求階層を図6A(c)の表6cのように記述し、これをサッカーのエリア属性とする。一方、フィギュアスケートのように、被写体がどの領域で注目するプレーを行うのかを絞り込めない競技では、エリア属性を定義しない。
試合属性では、図6Bの表6dに示すように、コンテンツの属性としてエリア、タイムコードが用いられ、エリア、タイムコードごとに要求階層が記述されている。例えば、サッカーの場合、分析装置140からどのようなプレー(シュートなど)がどのタイムコードで発生したかが取得できる。そのため、注目度の高いプレーが発生したタイムコード(期間)において要求階層を高め、それ以外のタイムコードでは要求階層を低下させるなどの処置により、圧縮効率を高めることが可能である。なお、試合属性の生成には分析装置140が必須であるため、分析装置140が接続されていない場合は、試合属性は定義できない。
図7は、属性データを生成する処理を示したフローチャートであり、S303の処理の詳細を示している。S701において、CPU101は、コンテンツにエリア属性が定義されているか否かを判断する。YESの場合はS702に、NOの場合はS704にそれぞれ処理が進む。S702において、CPU101は、コンテンツに試合属性が定義されているか否かを判断する。YESの場合はS703に、NOの場合はS705にそれぞれ処理が進む。試合属性が存在する場合(S701、S702でYES)、S703において、CPU101は、属性データとして試合属性を選択する。エリア属性が存在しない場合(S701でNO)、S704において、CPU101は、属性データとして競技属性を選択する。エリア属性が存在するが試合属性が存在しない場合(S701でYES、S702でNO)、S705において、CPU101は、属性データとしてエリア属性を選択する。S706では、選択された属性を基に、図6A,図6Bに示した表6a、6c、6dのような属性データを生成する。例えば、コンテンツにエリア属性としてエリア0,1,2の範囲を示す座標(例えば、(x0,y0)〜(x1,y1)など)が定義されている場合、CPU101はこれを用いて表6cのような属性データを生成する。また、コンテンツにエリア属性に加えて注目度の高いプレーが発生したタイムコードが含まれている場合、CPU101は、表6dのような属性データを生成する。
図8は、モデルデータを表示装置に送信する処理過程を示したフローチャートであり、S304の詳細を示している。S801において、CPU101は、サーバである画像処理装置100をクライアントである表示装置(ユーザ端末130)からのリクエスト待機状態にする。S802において、仮想視点映像の視聴者であるユーザによるユーザ端末130への所定の操作に応じて、ユーザ端末130(CPU131)は、映像再生用のアプリケーションを起動する。S803において、ユーザ端末130(CPU131)は、ユーザが視聴したいコンテンツを選択する。コンテンツ選択にはアプリケーションが用いられる。映像再生用のアプリケーションの起動後、ユーザ端末130(CPU131)は、図9に示されるようなコンテンツ選択ウィンドウ901を表示部135に表示する。ユーザは所望のアイコン902をタッチすることで、所望のコンテンツを選択することができる。コンテンツが選択されると、ユーザ端末130(CPU131)は、画像処理装置100に対してモデルデータをダウンロードするリクエストを送信する。その際、ユーザ端末130(CPU131)は、ユーザ端末130が備える表示装置(表示部135)のディスプレイ解像度、CPU131やGPUのスペック情報も画像処理装置100に送信する。
なお、ユーザ端末130は、コンテンツ選択ウィンドウ901を表示するために、画像処理装置100から選択対象となるコンテンツのリストを取得しておく。リストに掲載されているコンテンツの各々は、時間的に連続した1まとまりの多視点フレームに対応する。例えば、プレー内容(分析装置140による分析結果)に基づいて、そのプレーが発生した近辺のタイムコードを含む一連の多視点フレームにより1つのコンテンツが生成されてもよい。例えば、ステップS411で説明したように、プレー情報ごとに、紐づけられたモデルデータを1つのコンテンツとしてもよい。或いは、例えば、試合の前半の多視点フレームと後半の多視点フレームで別々のコンテンツが生成されてもよい。なお、各コンテンツには、プレー内容とその発生位置に基づいて自動的に設定された仮想カメラの位置、姿勢(方向)が定義されていてもよい。
画像処理装置100は、S801で、ユーザ端末130から送信対象のコンテンツのリクエストを受け付けると、S804以降の処理により、送信対象とする階層を決定し、決定された階層のモデルデータを送信する。まず、S804では、画像処理装置100のCPU101が通信回線の空き状況を取得する。S805において、CPU101は、ユーザ端末130から受信したスペック情報から、モデルデータのスペック階層を設定する。例えば、CPUやGPUの性能がローエンドであれば、処理負荷の高い階層3や階層2のモデルデータを処理できないので、スペック階層を階層1に設定する。また、ディスプレイ解像度が低い場合は、階層間の差異が認識しにくいので、スペック階層を階層2以下(すなわち階層1または階層2)に設定する。S806では、CPU101は、S805で設定されたたスペック階層が階層1であるか否かを判断する。階層1である場合は、処理はS811に進み、それ以外の場合は、処理はS807に進む。
S807において、CPU101は、S303で生成された属性データを用いて送信用モデルデータを生成する。送信用モデルデータは、図11に示すように、タイムコードごとに生成される。図11(a)はタイムコード0番目における送信用データである。データ構造を記述するヘッダ部と、背景モデルデータ、被写体モデルデータから構成され、被写体ごと(選手ごと)に要求階層に応じた階層のデータを保持する。ただし、全ての被写体が最低階層である階層1のモデルデータを必ず保持するものとする。これは、後述する仮想視点映像生成時に利用するためである。図11(b)はタイムコード1番目の送信用データを示す。背景モデルデータは重複するため、削減されている。また、各被写体のモデルデータの階層も属性データに合わせて変更されている。これらを全タイムコード分つなぎ合わせたものが、送信用モデルデータとなる。このとき、要求階層がスペック階層よりも上位の階層である場合、その要求階層をスペック階層まで引き下げる。このように表示装置(ユーザ端末130の表示部135)の能力に基づいて送信用モデルデータを構成するモデルデータの階層が制限される。
S808では、CPU101は、S804で取得した通信回線の空き状況と、S807で生成した送信用モデルデータのサイズから、送信用モデルデータを送信可能であるかを判断する。通信可能と判断された(YES)場合、処理はS814に進み、通信できないと判断された(NO)場合、処理はS809に進む。S809において、CPU101は、属性データに記述されている要求階層を1段階低下させて送信用モデルデータを生成する。例えば、図6A(c)の表6cのエリア0の要求階層は3から2に、エリア2の要求階層は2から1に低下させる。ただし、要求階層が1である場合は、それ以上低下させない。S810では、CPU101は、S804で取得した通信回線の空き状況とS809で生成した送信用モデルデータのサイズから、送信用モデルデータを送信可能であるかを判断する。送信可能な場合、処理はS814に進み、送信可能でない場合、処理はS811に進む。S811では、CPU101はすべての要求階層を1に設定して送信用モデルデータを生成する。S812では、CPU101は、S804で取得した通信回線の空き状況と、S811で生成した送信用データのサイズから、送信用モデルデータを送信可能であるかを判断する。YESの場合、処理はS814に進み、NOの場合、処理はS813に進む。S813では、CPU101は、通信回線に空き容量が出るまで(他のユーザが通信を完了するまで)待機する。S814では、送信用モデルデータを画像処理装置100から表示装置(ユーザ端末130)に送信する。
S815では、ユーザ端末130(CPU131)がモデルデータを受信する。S816では、CPU131が、受信したモデルデータを用いて仮想視点映像を生成し、表示部135に再生する。ユーザ端末130においてアプリケーションを実行しているCPU131は、画像処理装置100からモデルデータを受信すると、図9(b)に示されるような仮想視点ウィンドウ903に遷移する。仮想視点ウィンドウ903では、選手モデルデータ904、背景モデルデータ905が表示されており、画面へのタッチ操作等に応じて任意のカメラ位置/方向/画角で映像を表示することが可能である。また、タイムコードスライダバー906を用いて、任意のタイムコードの映像に移動することも可能である。以下、図10を参照して、仮想視点映像の生成に関して説明する。
図10は、ユーザ端末130による仮想視点映像生成の処理を説明したフローチャートであり、S816の詳細を示している。S1001では、CPU131は、ユーザのタッチ操作に合わせた仮想カメラの位置、方向、画角を設定する。S1002では、CPU131は、階層1のモデルデータを用いて、設定された仮想カメラの位置、方向、画角における映像生成を行う(映像1)。映像生成は、周知のコンピュータグラフィックスの技術を用いることで実施可能である。
S1003では、CPU131は、送信されたモデルデータに階層2のモデルデータが存在するか否かを判断する。YESの場合、処理はS1004に進み、NOの場合、処理はS1005に進む。S1004において、CPU131は、階層2のモデルデータを用いて、設定された仮想カメラの位置、方向、画角における映像生成を行う(映像2)。S1005において、CPU131は、送信されたモデルデータに階層3のモデルデータが存在するか否かを判断する。YESの場合、処理はS1006に進み、NOの場合、処理はS1007に進む。S1006では、CPU131は、階層3のモデルデータを用いて、設定された仮想カメラの位置、方向、画角における映像生成を行う(映像3)。
S1007では、CPU131は、連続するタイムコード間(前タイムコードと現タイムコード)で選手モデルの階層に差異があるかを判断する。これは、例えば、タイムコード0では選手2の階層が1であるが、タイムコード1では階層が3になるようなケースである。差異がある場合、処理はS1008に進み、差異がない場合、処理はS1009に進む。S1008では、CPU131は、映像1と映像2、3を合成(たとえばアルファブレンディング)して被写体映像を生成する。これは、タイムコード間で階層に差異がある場合、画質が急激に変動することを防ぐためである。一方、S1009では、CPU131は、映像1の被写体領域を高画質の映像2または映像3で置換して被写体映像を生成する。S1010では、CPU131は、背景モデルをレンダリングして背景映像を生成する。S1011では、CPU131は、被写体映像と背景映像を合成し、仮想視点映像を生成する。なお、S1007において、タイムコード0では選手2の階層が2であるが、タイムコード1では階層が1になるようなケース(連続するタイムコードにおいて階層が低下するケース)では、差異がないと判断している。このようなケースでは、被写体の重要度が低下しており、画質が急激に変化しても問題がないためである。なお、上記では階層1の映像から階層2または3の映像に変化した場合に映像の合成を行うようにし、他の場合には合成を行わないようにしたが、これに限られるものではない。例えば、被写体のモデルデータの階層が変化した場合に変化前の階層の被写体映像と変化後の階層の被写体映像を合成するようにしてもよい。
以上説明したように、第1実施形態の画像処理装置によれば、被写体ごとの3次元のモデルデータが複数の階層で生成され、競技や実試合の分析結果などのコンテンツの特性を基に被写体の重要度が決定される。そして、重要度に応じて送信用モデルデータを構成するモデルデータの階層が設定されるので、インタラクティブ操作に対応した仮想視点映像のためのモデルデータを適切に生成し、且つ、効率よく送信することができる。
<第2実施形態>
第2実施形態では、被写体の競技への関与度と注目度、ユーザの嗜好性から属性データを修正する構成に関して説明する。なお、第1実施形態と重複するシステム、処理の説明は省略する。
第1実施形態では、競技の種類、エリア、重要なプレー等の発生イベントを用いて、各被写体のモデルデータの重要性を判断し、使用する階層を決定した。第2実施形態では、さらに被写体である選手の注目度(例えば、有名選手か否か)、ユーザの嗜好性(例えば、好きな選手か否か)、競技への関与度(例えば、ボールとの距離)を用いて要求階層を変更する。図12(a)において、表12aは、注目度、嗜好性、関与度に基づく階層の変更例を示している。ボールと選手との距離である関与度は、CPU101が、映像データを解析して自動的に取得する。注目度、嗜好性は、ユーザ端末130上の所定のユーザインターフェースを介してユーザが設定した内容である。ユーザによる設定は、ユーザ端末130から通信により画像処理装置100へ通知される。表12aの要求階層の欄は、属性データに基づいて決定された各被写体のモデルデータの階層の例である。また、表12aのS1201、S1203の欄に記載された階層は、それぞれ、図12(b)のフローチャートのS1201、S1203において、注目度、嗜好性、関与度に基づいて変更された後の階層を示している。
図12(b)は、図3のS303において属性データを生成した後に、各被写体(選手)について行う階層の変更処理を説明したフローチャートである。S1201において、画像処理装置100のCPU101は、表12a中の注目度と嗜好性に基づいて、各選手の階層を変更する。例えば、注目度、嗜好性がともに低い選手については、要求階層を1つ下げる、注目度と嗜好性がともに高い選手については要求階層を最高階層にするといった、あらかじめ設定されたルールに従って階層が変更される。本例では、選手Nは要求階層が階層1であったが、注目度、嗜好性が高いため、階層を3に引き上げている。一方、選手1は要求階層が階層2であったが、注目度、嗜好性が低いため、階層を1に引き下げている。
S1202では、CPU101は、変動前後で送信用モデルデータのサイズが増加するか否かを判断する。YESの場合はS1203に進み、NOの場合は処理を終了する。S1203では、送信用モデルデータのサイズを下げるため、表12aの関与度(ボールとの距離)に応じて、階層を引き下げる。例えば、選手2はS1201後において階層3であったが、ボールとの距離が離れているため、競技への関与度が低いと判断し、階層2に引き下げる。
以上説明したように、第2実施形態によれば、被写体ごとに生成された複数の階層のモデルデータから使用する階層を選択するにおいて、被写体の注目度、ユーザの嗜好性、競技への関与度というような、個々の被写体に関する属性が考慮される。結果、より適切な送信用モデルデータを生成することができ、インタラクティブ操作に対応した仮想視点映像のためのモデルデータを効率よく送信することができる。なお、上記では、個々の被写体に関する属性として、関与度、注目度、嗜好性を例示したが、これらに限られるものではない。また、S1201では注目度と嗜好性の両方を考慮したが、いずれか一方を考慮する構成であってもよい。
<第3実施形態>
第2実施形態では、個々の被写体に設定される属性に基づいて要求階層を変更する構成を説明した。第3実施形態では、3次元モデルデータをストリーム送信する際に、仮想カメラの位置、姿勢、画角に応じて要求階層を変更し、送信用モデルデータを最適化する構成に関して説明する。なお、第1実施形態、第2実施形態と重複するシステム、処理の説明は省略する。
ストリーム送信では、画像処理装置100からタイムコードMのモデルデータを送信し、表示装置で受信・再生を行う。その後、ユーザ端末130から仮想カメラの位置・姿勢をフィードバックし、それを基に、画像処理装置100はタイムコードM+1のモデルデータを送信する。このような処理を順次繰り返すことにより、全データの受信を待たずに、表示装置でインタラクティブな仮想視点映像再生が可能である。このとき、前タイムコードの仮想カメラ位置・姿勢を考慮することにより、より最適な階層を選択することが可能である。
図13(a)は、あるタイムコードMでの仮想カメラの位置/姿勢/画角を表している。このとき、仮想カメラの画角内および画角内に近い選手は、次のタイムコードにおいても映像に含まれる可能性が高い。一方、画角内から遠く離れた選手は、映像に含まれる可能性が低い。また、仮想カメラとの距離が離れている場合は画質として階層間の差異が発生しにくい。これらの項目をまとめると図13(b)の表13bのようになる。なお、表13bにおいては、属性データに基づいて設定された要求階層が図13(c)の処理(ステップS1301、S1303)により変更される例が示されている。
図13(c)は、ストリーミング中に階層調整を行う処理を説明したフローチャートである。S1301において、CPU101は、各選手がカメラの画角内(〇)か否(×)か、もしくは画角に近い領域に存在するか(△)、という項目と、仮想カメラと選手間の距離とを用いて、要求階層を変更する。例えば、選手Nは要求階層が1であったが、画角内に近く、仮想カメラとの距離が短いため、階層を3に引き上げる。一方、選手2は要求階層が3であったが、仮想カメラとの距離が長いため、階層を2に引き下げる。
S1302では、CPU101は、変更の前後で送信用データのサイズが増加するか否かを判断する。YESの場合、処理はS1303に進み、NOの場合は処理を終了する。S1303では、CPU101は、サイズを下げるため、仮想カメラの移動速度と、仮想カメラと選手間の距離に応じて、階層を引き下げる。なお、仮想カメラの移動速度は前フレームおよびそれ以前のフレームにおける位置姿勢の変化量に基づいて計算される。例えば、仮想カメラの移動速度が高速の場合を考える。このとき、選手2はS1301後において階層2であったが、仮想カメラとの距離が離れているため、映像内をかなり高速に移動することになる。そのため、階層ごとの画質の差異はほとんど発生しないと判断し、階層1に引き下げる。
以上説明したように、第3実施形態によれば、ユーザ端末において指定されている仮想カメラの位置/姿勢/画角を基に被写体の階層が変更されるので、仮想カメラの状態に応じて適切な送信用モデルデータを生成することができる。なお上記の実施形態では、被写体ごとにデータサイズが異なる複数の階層のモデルデータを生成する例を中心に説明した。しかし、複数の被写体のうち、1又は複数の特定の被写体についてのみ複数の階層のモデルデータを生成するようにしても良い。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。