(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-09
(45)【発行日】2024-02-20
(54)【発明の名称】制御装置、制御方法、及びプログラム
(51)【国際特許分類】
G06F 3/04845 20220101AFI20240213BHJP
G06T 19/00 20110101ALI20240213BHJP
G06F 3/04883 20220101ALI20240213BHJP
【FI】
G06F3/04845
G06T19/00 A
G06F3/04883
(21)【出願番号】P 2022027204
(22)【出願日】2022-02-24
(62)【分割の表示】P 2019223941の分割
【原出願日】2017-09-19
【審査請求日】2022-03-17
【前置審査】
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100223941
【氏名又は名称】高橋 佳子
(74)【代理人】
【識別番号】100159695
【氏名又は名称】中辻 七朗
(74)【代理人】
【識別番号】100172476
【氏名又は名称】冨田 一史
(74)【代理人】
【識別番号】100126974
【氏名又は名称】大朋 靖尚
(72)【発明者】
【氏名】加藤 祐二
【審査官】酒井 優一
(56)【参考文献】
【文献】国際公開第2014/147668(WO,A1)
【文献】特開2016-025633(JP,A)
【文献】特開2014-069629(JP,A)
【文献】特開2015-186148(JP,A)
【文献】特開2015-187797(JP,A)
【文献】米国特許出願公開第2017/0104982(US,A1)
【文献】柏熊 淳也, 外3名,マルチタッチ操作を用いた自由視点映像閲覧法の検討,第16回日本バーチャルリアリティ学会大会 論文集,2011年09月20日,p.674-677
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/04845
G06T 19/00
G06F 3/04883
(57)【特許請求の範囲】
【請求項1】
複数の撮影装置により所定の撮影対象領域を異なる方向から撮影することで得られる画像データを用いて生成される仮想視点画像に係る仮想視点の位置及び仮想視点からの視線方向を制御する制御装置であって、
前記仮想視点画像を表示する表示面に対して指をスライドするスライド操作が行われた場合に、前記表示面に対するスライド操作を行う指のスライド開始位置に基づいて仮想空間における基準点を決定し、前記スライド操作に基づいて前記基準点に対し前記仮想視点の位置を回転移動させるように、前記仮想視点の位置及び前記仮想視点からの視線方向に関するパラメータを決定する決定手段と、
前記決定手段により決定されたパラメータに従って、前記仮想視点を制御する制御手段と、を有することを特徴とする制御装置。
【請求項2】
前記決定手段は、前記仮想視点からの視線方向が前記基準点を向いたまま前記仮想視点の位置を移動させるように、前記パラメータを決定することを特徴とする請求項1に記載の制御装置。
【請求項3】
前記表示面に対する特定のユーザ操作を検出する検出手段を有し、
前記制御手段は、前記検出手段により前記特定のユーザ操作が検出されたことに応じて、前記仮想視点の位置及び前記仮想視点からの視線方向が予め定められた位置及び方向になるように前記仮想視点を制御することを特徴とする請求項1
又は2に記載の制御装置。
【請求項4】
前記表示面に対する前記特定のユーザ操作は、前記表示面上の所定位置に対するタッチ操作であることを特徴とする請求項
3に記載の制御装置。
【請求項5】
前記表示面に表示されている仮想視点画像の再生が一時停止状態になっている間に前記表示面に対する所定のタッチ操作が検出された場合、前記制御手段は、前記表示面に表示されている仮想視点画像の再生状態を前記一時停止状態から再生状態に変更することを特徴とする請求項1乃至
4の何れか1項に記載の制御装置。
【請求項6】
複数の撮影装置により所定の撮影対象領域を異なる方向から撮影することで得られる画像データを用いて生成される仮想視点画像に係る仮想視点の位置及び仮想視点からの視線方向を制御する制御方法であって、
前記仮想視点画像を表示する表示面に対して指をスライドするスライド操作が行われた場合に、前記表示面に対するスライド操作を行う指のスライド開始位置に基づいて仮想空間における基準点を決定し、前記スライド操作に基づいて前記基準点に対し前記仮想視点の位置を回転移動させるように、前記仮想視点の位置及び前記仮想視点からの視線方向に関するパラメータを決定する決定工程と、
前記決定工程により決定されたパラメータに従って、前記仮想視点を制御する制御工程と、を有することを特徴とする制御方法。
【請求項7】
コンピュータを請求項1乃至
5の何れか1項に記載の制御装置の各手段として動作させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は仮想視点の制御方法に関する。
【背景技術】
【0002】
視点の異なる複数のカメラで撮影して得られる複数の撮影映像から任意の視点の映像を生成する仮想視点映像生成技術が知られている。仮想視点映像の生成方法(レンダリング方法)として、予め定められた仮想視点の移動経路に基づいて仮想視点映像を生成しておく方法や、視聴者等により指定された仮想視点の位置及び姿勢等に従って仮想視点映像を生成する方法が知られている。
【0003】
仮想視点映像の生成技術によれば、インタラクティブ性の高い映像の視聴を行うことが可能である。一方で、タッチパネルを主要なインタフェイスとするタブレットやスマートフォンなどの機器では、望み通りに視点を操作することが困難である。特許文献1には、複数の視点座標データと、複数の回転起点データのうちから、それぞれ1つずつをユーザに選択させ、その後、視点の回転角度と移動量を入力して視点を設定することが記載されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1の方法は、仮想視点の設定のための操作手順が多い。本発明は、仮想視点の設定をより簡易に行えるようにすることを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明に係る制御装置は、以下の構成を有する。すなわち、複数の撮影装置により所定の撮影対象領域を異なる方向から撮影することで得られる画像データを用いて生成される仮想視点画像に係る仮想視点の位置及び仮想視点からの視線方向を制御する制御装置であって、前記仮想視点画像を表示する表示面に対して指をスライドするスライド操作が行われた場合に、前記表示面に対するスライド操作を行う指のスライド開始位置に基づいて仮想空間における基準点を決定し、前記スライド操作に基づいて前記基準点に対し前記仮想視点の位置を回転移動させるように、前記仮想視点の位置及び前記仮想視点からの視線方向に関するパラメータを決定する決定手段と、前記決定手段により決定されたパラメータに従って、前記仮想視点を制御する制御手段と、を有する。
【発明の効果】
【0007】
本発明によれば、仮想視点の設定をより簡易に行うことができるようになる。
【図面の簡単な説明】
【0008】
【
図1】制御装置100のハードウェア構成を示すブロック図。
【
図2】制御装置100の機能構成を示すブロック図。
【
図3】実施形態1の1本指のスライド操作における仮想視点制御の例を示す図。
【
図4】実施形態1の3本指のスライド操作における仮想視点制御の例を示す図。
【
図5】実施形態1の2本指のスライド操作における仮想視点制御の例を示す図。
【
図6】実施形態1の2本指のピンチアウト操作における仮想視点制御の例を示す図。
【
図7】実施形態1の制御装置100における処理の流れを示すフローチャート。
【
図8】ユーザ操作に応じた仮想視点制御の流れを示すフローチャート。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施形態は本発明を限定するものではなく、また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成については、同じ符号を付して説明する。
【0010】
<実施形態1>
実施形態1は、ユーザが表示スクリーン(タッチパネル)を操作することにより、仮想視点の位置及び向き等を制御し、それに応じた仮想視点映像を生成する例について説明する。なお、本実施形態では、「仮想カメラの位置を変更する」と「仮想視点の位置を変更する」は同様の意味として用いる。また、「仮想カメラの姿勢を変更する」と「仮想視点の向きを変更する」は同様の意味として用いる。
【0011】
また、本実施形態において仮想視点映像とは、フィールド(撮影対象領域)を異なる方向から撮影する複数のカメラにより得られた複数の撮影映像に基づいて生成される映像であり、仮想視点(仮想カメラ)の位置及び姿勢等に従って生成される映像である。また、本実施形態の仮想視点映像は、各画像フレームが所定の動画圧縮の方式により圧縮された映像データであっても良いし、各画像フレームが所定の静止画圧縮の方式により圧縮された映像データであっても良いし、非圧縮の映像データであっても良い。
【0012】
本実施形態における制御装置100のシステム構成例について、
図1を用いて説明する。同図において、CPU101は、RAM102をワークメモリとして、ROM103及び/又はハードディスクドライブ(HDD)105に格納されたプログラムを実行し、システムバス112を介して後述する各構成を制御する。これにより、後述する様々な処理が実行される。HDDインタフェイス(I/F)104は、制御装置100と、HDD105や光ディスクドライブなどの二次記憶装置とを接続する、例えばシリアルATA(SATA)等のインタフェイスである。CPU101は、HDDインタフェイス(I/F)104を介した、HDD105からのデータ読み出し、およびHDD105へのデータ書き込みが可能である。さらにCPU101は、HDD105に格納されたデータをRAM102に展開する。また、CPU101は、プログラムの実行により得られたRAM102上の各種データをHDD105に保存することが可能である。入力インタフェイス(I/F)106は、1又は複数の座標を入力するためのタッチパネル、キーボード、マウス、デジタルカメラ、スキャナなどの入力デバイス107と制御装置100とを接続する。入力インタフェイス(I/F)106は、例えばUSBやIEEE1394等のシリアルバスインタフェイスである。CPU101は、入力I/F106を介して入力デバイス107からデータを読み込むことが可能である。出力インタフェイス(I/F)108は、ディスプレイなどの出力デバイス109と制御装置100とを接続する、例えばDVIやHDMI(登録商標)等の映像出力インタフェイスである。CPU101は、出力I/F108を介して出力デバイス109に仮想視点映像に係るデータを送ることで、仮想視点映像の表示を実行させることができる。ネットワークインタフェイス(I/F)110は、制御装置100と外部サーバ111とを接続する、例えばLANカードなどのネットワークカードである。CPU101は、ネットワークI/F110を介して外部サーバ111からデータを読み込むことが可能である。
【0013】
なお、本実施形態では、入力デバイス107が制御装置100のタッチパネルである場合の例を中心に説明する。つまり、制御装置100はスマートフォンやタブレット端末などであっても良く、この場合は、入力デバイス107(タッチパネル)や出力デバイス109(表示スクリーン)は、制御装置100と一体である。また、
図1にて示した構成のすべてが必須の構成とは限らない。例えば、HDD105に記憶された仮想視点映像を再生する場合、外部サーバ111は不要である。逆に、外部サーバ111から取得した仮想視点映像を生成する場合、HDD105は不要である。また、制御装置100が複数のCPU101を有してもよい。また、CPU101とは異なる専用の1又は複数のハードウェアやGPU(Graphics Processing Unit)を有し、CPU101による処理の少なくとも一部をGPUや専用のハードウェアが行うようにしてもよい。専用のハードウェアの例としては、ASIC(特定用途向け集積回路)、FPGA(フィールドプログラマブルゲートアレイ)、およびDSP(デジタルシグナルプロセッサ)などがある。
【0014】
本実施形態では、タッチパネルに対するユーザ操作によってユーザの意図に沿った仮想カメラの制御を行う方法について述べる。本実施形態におけるユーザ操作には、タップ操作、指1本~3本のスライド操作、ピンチイン・ピンチアウト操作が少なくとも含まれるものとする。
【0015】
指1本のユーザ操作は初心者でも行いやすい反面、複雑な情報を入力することが難しく、指3本のユーザ操作は細かい操作が難しい。よって、指1本と指3本のユーザ操作(スライド操作)には単純な仮想カメラの制御処理を割り当てる。そして、指2本の操作に複雑な仮想カメラの制御処理を割り当てる。
【0016】
図3から
図6を用いて具体的なユーザ操作と仮想カメラの動作の関係について説明する。
図3は、1本指のスライド操作によって、仮想カメラの位置及び姿勢が変化する様子を示している。ユーザ操作前の画像301に対して指1本で左方向にスライド操作を行うと、仮想カメラの位置及び姿勢が変更され、画像302が表示される。このとき、仮想カメラの位置及び姿勢は俯瞰画像303の中心に描画された3次元空間上の点304を中心として仮想視点305から右側に回り込んだ仮想視点306へ変化する。すなわち、ユーザ操作により同時に指定される表示スクリーン上(表示面上)の座標の数が第1の数(1つ)である場合、視点制御部204は、その座標の移動に応じて、仮想カメラを所定の注目座標を中心に旋回させる。別の言い方をすると、ユーザ操作により同時に指定される表示面上の座標の数が第1の数(1つ)である場合、視点制御部204は、その座標の移動に応じて、仮想カメラが所定の注目座標を注目したまま移動するように制御する。
【0017】
図3に示すように、1本指のスライド操作が検出された場合は、仮想カメラの移動範囲を円307上に限定し、移動方向を水平方向に制限する。これにより、例えば、タッチ操作に不慣れなユーザや、タッチの軌道がぶれやすい利用シーンにおいても、ユーザの意図に近い仮想カメラの移動が行える。したがって、簡易にブレのないバレットタイムのような仮想視点映像を生成することができる。
【0018】
図4は、3本指のスライド操作によって、仮想カメラの位置が変化する様子を示している。ユーザ操作前の画像401に対して指3本で右方向にスライド操作を行うと、仮想カメラの位置が変更され、画像402が表示される。このとき、仮想カメラの位置は俯瞰画像403において示される通り仮想視点404から仮想視点405へ移動する。すなわち、ユーザ操作により同時に指定される表示スクリーン上の座標の数が第3の数(3つ)である場合、視点制御部204は、その座標の変化に応じて、仮想カメラが3次元空間内において並行移動するように、仮想カメラの位置を制御する。
【0019】
なお、「3つの座標が同時に指定される」とは、3本の指が同時に表示スクリーンにタッチした場合に限らない。例えば、2本の指が表示スクリーンにタッチしている状態を保持しつつ、3本目の指が表示スクリーンにタッチした場合、3本の指が同時に表示スクリーンにタッチしている状態として判定される。このように、指ごとに表示スクリーンにタッチ開始するタイミングが異なっていたとしても、複数の座標が同時に指定されることがありうる。
【0020】
また、本実施形態の視点制御部204は、表示スクリーン上での指の移動量と、ユーザ操作に応じて特定される3次元点406の仮想視点映像における描画位置の移動量が等しくなるように仮想カメラを移動する。このように、指の移動量と3次元点406の移動量とを一致させることで、ユーザは、より直感的に仮想カメラの制御を行うことができる。ただし、指の移動量と、仮想視点映像における3次元点406の描画位置の移動量とが異なるように制御しても良い。また、3本指によるユーザ操作においては、指の移動量は、3本指のそれぞれの移動量の平均値を用いるようにしても良いし、中央値を用いるようにしても良いし、代表値を用いるようにしても良いし、その他の値を用いるようにしても良い。また、本実施形態においては、3本指のスライド操作が行われた場合は、仮想カメラの位置を変更するが、仮想カメラの姿勢は変更しない。つまり、ユーザ操作により同時に指定される表示スクリーン上の座標の数が第3の数(3つ)である場合、視点制御部204は、その座標の変化に応じて、仮想視点の位置を変更し、仮想視点の向きは変更しない。
【0021】
図5は、2本指のスライド操作によって、仮想カメラの位置及び向きが変化する様子を示している。ユーザ操作前の画像501に対して指2本で左下方向にスライド操作を行うと、仮想カメラの位置及び姿勢が変更され、画像502が表示される。このとき、仮想カメラの位置及び姿勢は俯瞰画像503において示される通り、ユーザの指の位置に基づいて決定された3次元上の点504を中心として仮想視点505から仮想視点506へと変化する。仮想カメラの移動範囲は球面507に限定する。つまり、1本指のスライド操作を行った場合は、仮想カメラの高さ方向の位置を変更せず、水平方向の位置を変更したのに対し、2本指のスライド操作を行った場合は、仮想カメラの高さ方向と水平方向の両方の位置を変更する。すなわち、ユーザ操作により同時に指定される表示スクリーン上の座標の数が第2の数(2つ)である場合、視点制御部204は、その座標の移動に応じて、仮想カメラの位置を第1方向及び第2方向に変更する。このように、本実施形態の制御装置100は、1本指でスライド操作が行われた場合よりも、2本指でスライド操作が行われた場合のほうが、より複雑な仮想カメラの制御を実行する。2本指のスライド操作を行うことにより、任意のオブジェクトを任意の方向から見た仮想視点映像を生成できる。
【0022】
図6は、2本指のピンチアウト操作によって、仮想カメラの位置が変化する様子を示している。ユーザ操作前の画像601に対してピンチアウト操作を行うと、仮想カメラの位置が変更され、画像602が表示される。このとき、仮想カメラの位置は俯瞰画像603において示される通り、仮想視点604から仮想視点605へ移動する。なお、2本指のピンチイン操作が行われた場合は、仮想視点605から仮想視点604の方向へ移動する。すなわち、ユーザ操作により同時に指定される表示スクリーン上の座標の数が第2の数(2つ)である場合、視点制御部204は、その座標の変化に応じて、仮想カメラの視線方向に応じた方向に仮想カメラを移動させる。
【0023】
ピンチイン操作及びピンチアウト操作により、仮想カメラの位置は点線606で示すように前後に移動する。指を広げた分だけ被写体(例えば選手等のオブジェクト)が大きく表示され、指を狭めた分だけ被写体が小さく表示でき、直感的な操作が可能となる。このように、2本指のユーザ操作に応じて仮想カメラの前後移動と回転が行われるようにすることで、自由度の高い仮想カメラの制御を実現できる。なお、ピンチイン操作とピンチアウト操作に応じて仮想カメラの位置を変更する代わりに、仮想カメラのズーム値に関するパラメータを変更するようにしても良い。
【0024】
また、本実施形態では、第1の数が「1」、第2の数が「2」、第3の数が「3」である場合の例を中心に説明するが、これに限らない。例えば、第1の数が「3」、第2の数が「2」、第3の数が「1」であっても良いし、第1の数が「1」、第2の数が「2」、第3の数が「4」であっても良い。
【0025】
本実施形態の制御装置100が行う処理の流れについて、
図2と
図7とを参照して説明する。
図2は、本実施形態における制御装置100の機能構成を示すブロック図である。CPU101は、ROM103及び/又はHDD104に格納されたプログラムを読み出してRAM102をワークエリアとして実行することで、
図2に示す制御装置100内部の各機能ブロックの役割を果たす。なお、
図2の操作部201及び表示部206は、
図1の入力デバイス107及び出力デバイス109にそれぞれ対応する。また、CPU101が制御装置100内部の全ての機能ブロックの役割を果たす必要はなく、各機能ブロックに対応する専用の処理回路を設けるようにしてもよい。
【0026】
図7は本実施形態の制御装置100で行われる処理の流れを示すフローチャートである。
図7を用いて説明する各処理は、制御装置100が備えるCPU101が、ROM103及び/又はHDD104に格納されたプログラムを読み出してRAM102をワークエリアとして実行することで実現される。
【0027】
S701では、取得データ制御部202が、操作部201に対するタップ操作を検出するまで待機する。タップ操作は、短時間指で表示スクリーンをタッチする操作である。タップ操作の判定に利用される接触時間の閾値は任意の値を設定可能である。タップ操作が検出された場合、表示部206における現在の仮想視点映像の再生状態が一時停止状態であれば再生状態に変更する。一方、タップ操作が検出されたときに仮想視点映像の再生状態であれば、取得データ制御部202は、仮想視点映像の一時停止状態に変更する。このように、取得データ制御部202は、表示スクリーンに対するタップ操作に応じて、仮想視点映像の再生状態を変更するので、ユーザは直観的な操作で再生状態を切り替えることができる。ただし、S701は必須の処理ではない。
【0028】
S702では、視点制御部204が、操作部201に対するユーザ操作の検出結果に基づいて、仮想カメラの位置及び姿勢に関するカメラパラメータを描画部205へ出力する。S702の詳細は
図8を用いて後述する。
【0029】
S703では、データ取得部203が、HDD105又は外部サーバ111からレンダリングに必要なデータ(ポリゴンデータやテクスチャデータ)を取得し、描画部205に出力する。データ取得部203は、仮想視点映像を動画として再生している状態であれば、次の画像フレームのレンダリングに必要なデータを取得する。一方、仮想視点映像の再生が一時停止状態であれば、すでに現在再生中の画像フレームのレンダリングに必要なデータを取得する。なお、一時停止状態の場合は、改めてデータを取得しなくても良い。
【0030】
S704では、描画部205が、データ取得部203から取得したデータと視点制御部204から取得したカメラパラメータとを基に仮想視点映像を生成し、当該生成された仮想視点映像を表示部206に出力する。表示部206は描画部205から取得した仮想視点映像を表示する。レンダリングに関しては既存の技術を使用できるためここでは詳しく説明を行わない。カメラパラメータとは、仮想カメラの外部パラメータと内部パラメータに分類できる。仮想カメラの外部パラメータとは、仮想カメラの位置及び姿勢を表すパラメータである。また、仮想カメラの内部パラメータとは、仮想カメラの光学的な特性を表すパラメータである。外部パラメータと内部パラメータについてより具体的に説明する。仮想カメラの位置を表すベクトルをt,回転を表す行列をRとすると、仮想カメラの外部パラメータは以下のように表すことができる。
【0031】
【0032】
ここで、座標系は左手座標系として記載し、仮想視点において右を+x方向、上を+y方向、前を+z方向とする。
【0033】
また、仮想視点映像の主点位置を(cx,cy)、仮想カメラの焦点距離をfとすると、仮想カメラの内部パラメータKは以下のように表すことができる。
【0034】
【0035】
なお、カメラパラメータの表現方法は行列以外の表現であってもかまわない。例えば、仮想カメラの位置を3次元座標で表し、仮想カメラの姿勢をyaw、roll、及びpitchの値の羅列によって表すようにしてもよい。また、外部パラメータと内部パラメータは上述のものに限るわけではない。例えば、仮想カメラのズーム値を表す情報が仮想カメラの内部パラメータとして取得されるようにしてもよい。このように、仮想視点映像の生成のために用いられる仮想カメラのパラメータには種々のバリエーションが存在する。以上が本実施形態の制御装置100で行われる処理の流れである。
【0036】
<ユーザ操作に応じた仮想カメラの制御>
図7のS702の処理の詳細を、
図8を参照して説明する。S702においては、視点制御部204は、操作部201に対するユーザ操作の検出結果を取得し、仮想視点映像の描画に用いられる仮想カメラのカメラパラメータを描画部205に出力する。
【0037】
S801では、視点制御部204は、操作部201に対するユーザ操作の検出結果を取得する。ユーザ操作の検出結果には、表示スクリーン上におけるタッチされた点の数n、タッチされた点の2次元スクリーン座標x--i(i=1~n)、及びタッチされた点の代表点の2次元スクリーン座標x’が含まれるものとする。また、ユーザ操作の検出結果には、前の画像フレームにおける代表点からの移動量を表す2次元ベクトルd=(dx,dy)、及び、上記代表点に基づいて特定される3次元点の位置を表す3次元ベクトルTが含まれるものとする。ただし、必ずしも上記すべての情報を検出結果として取得しなければならないわけではない。例えば、1本指の操作が行われた場合、2次元スクリーン座標xiと代表点の2次元スクリーン座標x’は同じであるため何れか一方は省略可能である。
【0038】
2次元スクリーンの座標系は左上を原点とし、右を+x、下を+yとする。代表点はタッチされた複数の点の2次元スクリーン座標xiの重心に位置する座標とする。しかしながら、代表点は重心に限らず、2次元スクリーン座標xiの平均に位置する座標であっても良いし、複数の2次元スクリーン座標xiのうちの1点がランダムに選択されるようにしても良いし、最も長い時間タッチされた点が選択されるようにしても良い。
【0039】
また、3次元点は、仮想カメラの位置に応じた3次元座標を始点として仮想カメラの撮影方向へ仮想的に光線を飛ばし(レイキャスト)、被写体と衝突した点とする。この3次元点は、仮想カメラの操作において回転基点や移動の基準点として利用される。また、この3次元点は、タッチの数が前の画像フレームから変化した場合のみ決定し、変化していない場合は前の画像フレームの処理において決定済みの3次元ベクトルTをそのまま利用する。なお、本実施形態では3次元点は3次元ベクトルTにより表される例を説明するが、必ずしもベクトルの形式で示さなくても良い。
【0040】
S802では、視点制御部204は、操作部201に対するユーザ操作に応じて視点リセットを行うか否かを判定する。本実施形態では、表示スクリーン上の特定の領域(例えば視点リセットボタンが表示されている領域)がタップされた場合に、視点リセットを行うと判定される。
【0041】
S803では、視点制御部204が、仮想カメラの位置及び姿勢等をリセットする。すなわち視点制御部204は、表示スクリーン上の所定位置に対してユーザ操作が検出されたことに応じて、仮想視点の位置及び向きを予め定められた位置及び向きに変更する。そして、視点制御部204は、リセット時の仮想カメラのカメラパラメータを描画部205に出力する。本実施形態においてリセット時の仮想カメラの位置は[0 0 0]であり、仮想カメラの姿勢は単位行列であるものとする。しかしながら、リセット時の視点情報は上述のものに限るわけではない。例えば、予めユーザが設定した値を利用してもよいし、画像データに埋め込まれた推奨の視点情報を読出して利用しても良い。
【0042】
S804では、視点制御部204が、タッチされた点数nに基づいて、仮想カメラの制御方法を決定する。タッチされた指の本数に合わせて仮想カメラの制御方法を異ならせることで、より多彩な制御が実現できるようになる。タッチ点数が0点の場合、S805に進み、現在の仮想カメラの位置及び姿勢を描画部205へ出力する。
【0043】
タッチ点数が1点の場合(つまり1本指の操作が検出された場合)、S806に進み、視点制御部204は、上述の3次元点を回転中心として仮想カメラを回転させる。3次元点は、仮想カメラの位置に応じた3次元座標(例えば仮想カメラの中心座標)を始点として仮想カメラの撮影方向へ仮想的に光線を飛ばし(レイキャスト)、被写体と衝突した点とする。別の言い方をすると、3次元点とは、タッチ時に表示される仮想視点映像の中心位置に対応する3次元空間上の座標である。ただし、3次元点はこの例に限るものではない。S806~S808の詳細は後述する。
【0044】
タッチ点数が2点の場合(つまり2本指の操作が検出された場合)、S809に進み、視点制御部204は、ユーザによるスライド操作に応じて、仮想カメラの高さ方向と水平方向の両方の位置を変更する制御を行う。また、S811においては、視点制御部204は、ピンチイン操作及び/又はピンチアウト操作に応じて仮想カメラの位置を前後方向に移動させる制御を行う。S809~S812の詳細は後述する。
【0045】
タッチ点数が3点の場合(つまり3本指の操作が検出された場合)、S813に進み、視点制御部204は、仮想カメラをスライド操作に応じて並行移動させる制御を行う。S813及びS814の詳細は後述する。
【0046】
S806では、視点制御部204が仮想カメラを回転する際の回転中心となる3次元点の座標を決定する。視点制御部204は、1本指のタッチの検出に応じて、例えば、仮想カメラの中心を視点として仮想的に3次元空間へ光線を飛ばし、被写体と衝突した点を3次元点とする。3次元点は3次元ベクトルAとして表され、回転中心として利用される。なお、1度3次元点を決定した後は、タッチ状態が継続している間は再決定しなくて良い。
【0047】
S807では、視点制御部204が代表点の移動量dを取得し、仮想カメラの移動量を決定する。なお1本指のユーザ操作の場合は、仮想カメラの移動方向は、3次元点を中心とする回転方向のみである。また、1本指のユーザ操作の場合、仮想カメラは垂直方向には移動せず、水平方向のみ移動する。このようにすることで、スライド操作における手ぶれの影響を受けにくく、仮想カメラの移動をスムーズに行うことができる。なお、本実施形態の視点制御部204は、代表点の移動量dxにスケール係数sを乗算することで仮想カメラの移動量(水平方向の回転量θ)を決定する。表示スクリーンの解像度を幅w画素とし、表示スクリーンの端から端までスライド操作した時の回転量を360度とすると移動量dxから回転量θ[degree]を決定するためのスケールsは以下の式で表せる。
【0048】
【0049】
このスケール係数を用いて仮想カメラの回転量は以下の式で表せる。
【0050】
【0051】
なお本実施形態では指1本のユーザ操作に基づく仮想カメラの移動方向は水平方向のみとする例を中心に説明するが、垂直方向のみの移動として良い。また、ユーザ操作の内容に応じて、水平方向のみの移動にするか、垂直方向のみの移動にするかが決定されるようにしても良い。具体的には、タッチが検出されてから所定数の画像フレームのスライド操作の方向に応じて移動方向を決定してもよい。例えば、所定数の画像フレームにおけるスライド操作によるx方向とy方向の移動量を比較し、x方向の移動量が大きければ水平方向のみの移動とし、y方向の移動量が大きければ垂直方向のみの移動としても良い。また、スケール係数sの決定方法は上述のものに限らない。例えばユーザが任意の値を指定するようにしても良いし、複数の選択肢の中からユーザが任意に選択できるようにしても良い。
【0052】
S808では、視点制御部204がユーザのスライド操作に応じた仮想カメラの位置及び姿勢の決定を行い、その結果を描画部205に出力する。仮想カメラの位置Rn-1及び姿勢tn-1を、座標Aを中心に水平方向にθだけ回転した場合の仮想カメラの位置Rn及び姿勢tnは以下の式で表すことができる。
【0053】
【0054】
ただし、R(θ、φ)は水平方向にθ、垂直方向にφだけ回転する回転行列である。また、回転させた現在の仮想カメラの位置及び姿勢を求める式はこれに限らない。
【0055】
S809では、視点制御部204が代表点の移動量dを取得し、仮想カメラの移動量を決定する。なお2本指のユーザ操作の場合は、自由度の高い制御を実現するため、S807とは異なり、3次元点を中心として、水平方向と垂直方向の両方向に仮想カメラの回転させることができる。水平方向の回転量θとスケールsはS807と同様にして求める。垂直方向の回転量φは、以下の式で表すことができる。
φ=s×dy
S810では、視点制御部204がユーザのスライド操作に応じた仮想カメラの位置及び姿勢の決定を行い、その結果を描画部205に出力する。仮想カメラの位置Rn-1及び姿勢tn-1を、3次元点Tを中心に水平方向にθだけ回転し、垂直方向にφだけ回転した場合の仮想カメラの位置Rn、姿勢t’nは以下の式で表すことができる。
【0056】
【0057】
ただし、3次元点Tを中心に回転させた場合の仮想カメラの位置及び姿勢を求める式はこれに限らない。例えば、所定の係数等を用いることで、指の移動量に対する仮想カメラの移動量を大きくすることも可能であるし、逆に、指の移動量に対する仮想カメラの移動量を小さくすることも可能である。
【0058】
S811では、視点制御部204がユーザのピンチイン操作、及びピンチアウト操作に応じた仮想カメラの前後方向の移動量の決定を行う。現在の画像フレームが表示されているときの2本指の距離をdnとし、直前の画像フレームが表示されているときの2本指の距離をdn-1とすると、その変化量ΔdはΔd=dn-dn-1である。その変化量に比例して仮想カメラを前後に移動する。移動の敏感度をmとすると、仮想カメラの移動量ΔzはΔz=m×Δdで表すことができる。つまり、ピンチイン操作、及びピンチアウト操作による単位時間当たりの指の移動量に応じて、仮想カメラの移動量が決定される。なお、移動量を決定する方法は上述の方法に限らない。例えば、仮想カメラから3次元点Tまでの距離に基づいて表示スクリーン上での指の移動量に合うように3次元空間上での移動量が決定されるようにしても良い。
【0059】
S812では、視点制御部204がユーザのピンチイン操作、及びピンチアウト操作に応じた仮想カメラの位置の決定を行い、その結果を描画部205に出力する。前後方向にΔzだけ移動した仮想カメラの位置は以下の式で表される。
【0060】
【0061】
S813では、視点制御部204がユーザのスライド操作に応じた仮想カメラの上下左右方向の移動量の決定を行う。本実施形態では、表示スクリーン上における指の移動量と等しい距離だけ3次元点が表示スクリーン上で移動するように移動量が決定される。つまり、あるオブジェクト(例えばサッカー選手)の表示位置に3本指でタッチして、その3本指を表示スクリーン上でスライド移動させると、そのオブジェクトの表示位置と3本指の位置関係が変化しないように、仮想カメラの位置が変化する。移動量Δx,Δyは、仮想カメラからタッチした3次元点までの距離をrとすると以下の式で表すことができる。
【0062】
【0063】
S814では、視点制御部204がユーザのスライド操作に応じた仮想カメラの位置及び姿勢の決定を行い、その結果を描画部205に出力する。左右方向にΔx、上下方向にΔyだけ移動した場合の仮想カメラの位置及び姿勢は以下の式で表される。
【0064】
【0065】
なお、指の本数と処理の内容の対応関係は、上述に示した例に限らない。例えば、指1本のスライド操作と指3本のスライド操作による仮想カメラの位置及び姿勢の制御は入れ替えることも可能である。つまり、指1本のスライド操作に基づいて仮想カメラを上下左右に平行移動させ、指3本のスライド操作に基づいて3次元点を中心とする仮想カメラの回転移動を実行するようにしても良い。また、指の本数と制御方法の関係を、ユーザが任意に設定できるようにしても良い。このようにすれば、ユーザのスキルや、仮想視点映像の表示環境等によりマッチした操作機能を提供できるようになる。また、本実施形態では、タッチ点数が0点の場合の処理(S805)、1点の場合の処理(S806~S808)、2点の場合の処理(S809~S812)、3点の場合の処理(S813、S814)をすべて行う倍の例を中心に説明した。しかしこの例に限らない。例えば、タッチ点数が2点の場合の処理(S809~S812)と、3点の場合の処理(S813、S814)のみを実行するようにしても良いし、タッチ点数が1点の場合の処理(S806~S808)のみを実行するようにしても良い。また、事前のユーザ設定に応じて、どの処理を有効にするかが切り替わるようにしても良い。
【0066】
以上説明した通り、本実施形態の制御装置100は、仮想視点映像を表示するための表示面(表示スクリーン)に対するユーザ操作に応じて、仮想視点の位置及び向きのうち少なくとも何れか一方を制御する。このような構成によれば、ユーザは、従来よりも簡易に仮想視点に関する制御を行うことができるようになる。また、本実施形態の制御装置100は、表示面から検出された指の本数(ユーザ操作により同時に指定される座標の数)に応じて、ユーザ操作に応じた仮想視点の制御方法を切り替える。このような構成を採用することにより、ユーザは、その意図に応じた仮想視点の制御を、より直観的な操作で行うことができるようになる。言い換えれば、本実施形態の制御装置100によれば、よりユーザの意図に沿った仮想視点映像を生成することができるようになるという効果がある。
【0067】
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【0068】
100 制御装置
201 操作部
202 取得データ制御部
203 データ取得部
204 視点制御部
205 描画部
206 表示部