(実施形態1)
図1は、情報処理システム40の構成例を示す模式図である。情報処理システム40は、第1情報処理装置10、第2情報処理装置20及びカメラ30を含む。本実施形態においては、カメラ30を用いて、賃貸住宅及び販売住宅等の不動産物件の部屋、ホテル及び民宿等の宿泊施設の部屋等を撮影する。カメラ30は、撮影装置の一例である。カメラ30は、1回のシャッターで前後左右上下の撮影を行う全天球カメラを使用する。撮影位置は、例えば矩形の部屋の四隅付近であるが、これに限定しない。3箇所以下又は5箇所以上の任意の場所から撮影を行ってもよい。また撮影位置の床面からの高さは、例えば1m程度であるが、これに限定しない。立った状態の大人の目線の高さ、又は椅子に座った状態の大人の目線の高さ等の任意の高さから撮影を行ってもよい。カメラ30が撮影を行う位置及び向きは、カメラ30に内蔵されたセンサ又はカメラ30を外部から監視するセンサにより測定される。カメラ30を特定の位置及び向きに固定する治具等を利用してもよい。
カメラ30によって撮影された撮影画像(パノラマ画像)は、撮影位置を示す情報と共に第1情報処理装置10へ送信され、第1情報処理装置10のパノラマ画像DB12aに記録される。なお、カメラ30は撮影によって画像データ(撮影画像データ)を取得するが、以下では画像データを単に画像という場合がある。従って、撮影画像は撮影画像データを意味する場合があり、パノラマ画像はパノラマ画像データを意味する場合がある。撮影画像は、複数の画素を含み、撮影画像データは、各画素の撮影画像中の位置(座標)を示す位置情報と各画素の輝度(画素値)とを対応付けて有する。撮影位置の情報は、例えば4箇所の撮影位置を結んで形成される矩形の中央を基準とした位置の情報であり、例えばカメラ30に内蔵されているセンサにより測定されてもよく、他のセンサ等により測定されて、カメラ30又は第1情報処理装置10へ送信されてもよい。
第2情報処理装置20は、カメラ30での撮影が行われた部屋から離れた場所、例えば不動産会社の店舗又は旅行会社の店舗にいるユーザが装着したHMD(Head Mounted Display)型の情報処理装置である。第2情報処理装置20には、各種センサが内蔵されており、ユーザの頭部の位置及び向きを検出可能である。第2情報処理装置20は、スマートフォン、タブレット又はパソコン等の汎用の情報処理装置と、HMD等の表示装置との組合せでもよい。第2情報処理装置20は、スマートフォン等の軽量の携帯型情報処理装置と、携帯型情報処理装置をユーザの目の前に固定する固定部材との組合せでもよい。
第2情報処理装置20によって検出されたユーザの頭部の位置及び向きと、パノラマ画像DB12aに記録された撮影画像とに基づいて、第1情報処理装置10は、カメラ30で撮影された部屋の中の仮想視点から見た仮想画像を生成する。そして第1情報処理装置10は、生成した仮想画像を第2情報処理装置20へ送信する。このような構成により、HMDを装着したユーザは、撮影対象となった部屋の中を歩き回り、任意の向きを向いて、部屋の広さ、家具の配置、窓の外の景色等を感覚的に把握することができる。なお、ユーザは回転可能な椅子に着席した状態で、ジョイスティック等を操作することで仮想視点を移動させてもよい。転倒及び衝突のおそれなく、部屋の中を歩き回り、あるいは飛翔し、任意の向きを向いて、室内空間を把握することができる。
図2は、撮影時の情報処理システム40の構成を示す模式図である。撮影時の情報処理システム40は、インターネット、公衆通信回線又はLAN(Local Area Network)等のネットワークNを介して接続された第1情報処理装置10及びカメラ30を備える。
第1情報処理装置10は、制御部11、記憶部12、通信部13、入力部14、表示部15及びバスを備える。本実施形態の第1情報処理装置10は汎用のパーソナルコンピュータ、サーバマシン等の情報処理装置である。また、本実施形態の第1情報処理装置10は、大型計算機上で動作する仮想マシンでもよい。制御部11は、CPU(Central Processing Unit)又はMPU(Micro-Processing Unit)等のプロセッサを含み、本実施形態にかかるプログラムを実行する演算制御装置である。制御部11は、記憶部12に記憶してある制御プログラムを実行すると共に、バスを介して第1情報処理装置10を構成するハードウェア各部の動作を制御する。これにより、制御部11は、第1情報処理装置10が行う種々の制御処理及び情報処理を行う。
記憶部12は、RAM(Random Access Memory)、フラッシュメモリ、ハードディスク、SSD(Solid State Drive)等を含む。記憶部12は、制御部11が実行する制御プログラム及び制御プログラムの実行に必要な各種のデータ等を予め記憶している。また記憶部12は、制御部11が制御プログラムを実行する際に発生するデータ等を一時的に記憶する。記憶部12に記憶される制御プログラムには、本開示のプログラムである仮想画像生成プログラムPが含まれ、記憶部12に記憶されるデータには、カメラ30によって撮影したパノラマ画像を蓄積するパノラマ画像DB12aが含まれる。なお、パノラマ画像DB12aは、第1情報処理装置10に接続された外部の大容量記憶装置等に保存されていてもよく、ネットワークNを介して第1情報処理装置10に接続された別の記憶装置に記憶されてもよい。
通信部13は、ネットワークNとの通信を行うインターフェイスである。入力部14は、キーボード及びマウス等である。表示部15は、例えば液晶表示パネル等である。
第1情報処理装置10は、通信部13を介して外部装置から仮想画像生成プログラムPを取得して記憶部12に記憶してもよい。また、第1情報処理装置10が可搬型記憶媒体に記憶された情報を読み取る読取部等を備える場合、可搬型記憶媒体から仮想画像生成プログラムPを読み出して記憶部12に記憶してもよい。
カメラ30は、制御部31、記憶部32、通信部33、シャッターボタン34、撮影部35及びバスを備える。制御部31は、CPU又はMPU等のプロセッサを含み、本実施形態にかかるプログラムを実行する演算制御装置である。制御部31は、記憶部32に記憶してある制御プログラムを実行すると共に、バスを介してカメラ30を構成するハードウェア各部の動作を制御する。これにより、制御部31は、カメラ30が行う種々の制御処理及び情報処理を行う。記憶部32は、RAM、フラッシュメモリ、ハードディスク、磁気テープ等を含む。記憶部32は、制御部31が実行する制御プログラム及び制御プログラムの実行に必要な各種のデータ等を予め記憶している。また記憶部32は、制御部31が制御プログラムを実行する際に発生するデータ等を一時的に記憶する。
通信部33は、ネットワークNとの通信を行うインターフェイスである。シャッターボタン34は、静止画を撮影する指示を受け付けるボタンである。なお、制御部31は、ネットワークNを通じてシャッターボタン34の操作を受け付けてもよい。撮影部35は、撮影を行う光学系と撮像素子とを含む。制御部31は、シャッターボタン34から受け付けた指示に基づいて撮像素子が取得したデータに対して、各種画像処理を行い、撮影画像を生成する。
図3は、表示時の情報処理システム40の構成を示す模式図である。表示時の情報処理システム40は、ネットワークNを介して接続された第1情報処理装置10及び第2情報処理装置20を備える。第1情報処理装置10は、図2を使用して説明した撮影時の情報処理装置10の構成の記憶部12に、仮想スクリーンテーブル12b、対応テーブル12c及び仮想ビューDB12dが追加された構成を有する。仮想スクリーンテーブル12b、対応テーブル12c及び仮想ビューDB12dは、制御部11が仮想画像生成プログラムPの実行中に生成されるデータであるが、撮影時においても記憶部12に記憶されていてもよい。撮影時と表示時とで、異なるハードウェアを第1情報処理装置10に使用してもよい。
前述のとおり、第2情報処理装置20は、HMD型の情報処理装置である。第2情報処理装置20は、制御部21、記憶部22、通信部23、表示部24、センサ部25及びバスを備える。制御部21は、CPU又はMPU等のプロセッサを含み、本実施形態にかかるプログラムを実行する演算制御装置である。制御部21は、記憶部22に記憶してある制御プログラムを実行すると共に、バスを介して第2情報処理装置20を構成するハードウェア各部の動作を制御する。これにより、制御部21は、第2情報処理装置20が行う種々の制御処理及び情報処理を行う。記憶部22は、RAM、フラッシュメモリ、ハードディスク、SSD、磁気テープ等を含む。記憶部22は、制御部21が実行する制御プログラム及び制御プログラムの実行に必要な各種のデータ等を予め記憶している。また記憶部22は、制御部21が制御プログラムを実行する際に発生するデータ等を一時的に記憶する。
通信部23は、ネットワークNとの通信を行うインターフェイスである。表示部24は、例えば液晶表示パネル等である。センサ部25は、例えば地磁気センサ、傾きセンサ、GPS等の複数のセンサの組合せであり、第2情報処理装置20の位置及び向きを検出する。センサ部25は、第2情報処理装置20の位置及び向きを検出することにより、第2情報処理装置20を頭部に装着しているユーザの頭部の位置及び向きを検出できる。第2情報処理装置20は、マウス、キーボード、タッチパネル等の入力部を備えていてもよい。
図4は、カメラ30の外観を示す模式図である。本実施形態のカメラ30は、略長方形板状の板状部38を有する。以後の説明においては、板状部38の長辺方向を上下方向、板状部38の短辺方向を左右方向、板状部38の第1広面381側を前側、第2広面382側を後側にそれぞれ向けた状態で説明する。
第1広面381の上寄りに、ドーム状の第1レンズ371が設けられている。第2広面382の上寄りに、ドーム状の第2レンズ372が設けられている。第1レンズ371及び第2レンズ372の内側には、図示しない複数のレンズ及びプリズム等の光学部品が配置されており、180度以上の視野角を有する光学系を形成している。以後の説明では、第1レンズ371側の光学系の光軸を第1光軸、第2レンズ372側の光学系の光軸を第2光軸と記載する。第1光軸と、第2光軸とは、同一の直線上に配置されている。第1広面381に、シャッターボタン34が配置されている。
上述した構成のカメラ30が撮影時に行う処理について説明する。図5は、撮影画像の構成を説明する説明図である。図5Aは、全天球画像を示す模式図である。図5Bは、図5Aの全天球画像を正距円筒図法により展開した画像を示す模式図である。カメラ30の制御部31は、シャッターボタン34から受け付けた指示に基づいて撮影部35による撮影を行った場合、第1光軸側で撮影した画像と第2光軸側で撮影した画像とを合成することにより、図5Aに示すように撮影位置を撮影中心C点とする全天球画像を生成する。なお、例えば部屋の四隅で撮影を行う場合、4箇所において、カメラ30の上下方向及び左右方向を一致させた状態で撮影を行う。これにより、4箇所で撮影された4つの全天球画像において共通の座標系を用いることができる。
全天球画像上の各画素の位置を定める座標系について説明する。図4を使用して説明したように、カメラ30は板状部38の長辺方向を上下方向に向けた状態で撮影する。以後の説明では、前後左右方向を含む面を水平面と記載する。全天球画像上の画素の位置は、直交座標系及び極座標系により表現することができる。直交座標系は、図4に示した右方向をX軸の正側、上方向をY軸の正側、後ろ方向をZ軸の正側とする右手系の直交座標系を用いる。極座標系は、方位角φ及び天頂角θ、並びに撮影中心C点からの距離rによって座標が示される座標系を用いる。方位角は、第2光軸側(Z軸の正側)を基準として、水平面内の反時計周りの角度φを示す。第1光軸(Z軸の負側)は、方位角φがπラジアンの位置に存在する。ここでπは円周率を意味する。第2光軸は、方位角φが0ラジアンかつ2πラジアンの位置に存在する。天頂角は、撮影中心C点から天頂への上方向(Y軸の正側)を基準として、撮影中心C点を中心として下に向かう角度θを示す。上方向は、天頂角θが0ラジアンの位置に存在する。下方向(Y軸の負側)は、天頂角θがπラジアンの位置に存在する。全天球画像上の任意の画素aの位置は、直交座標系で表した座標(xa ,ya ,za )と、極座標系で表した座標(r,θa ,φa )とによって表現することができる。なお、座標(x,y,z)及び座標(r,θ,φ)は以下の(1)式及び(2)式によって相互に変換可能である。
カメラ30の制御部31は、図5Bに示すように、全天球画像を方位角φ=0の線に沿って切断して、正距円筒図法により、横軸を方位角φとし縦軸を天頂角θとする平面に展開した長方形の撮影画像(以下では、パノラマ画像という)を生成する。このとき、方位角φ及び天頂角θをそれぞれ0〜1の範囲のu値及びv値に正規化し、横軸をu軸とし縦軸をv軸とする長方形のパノラマ画像を生成する。このパノラマ画像を構成する各画素には、全天球画像における各画素の輝度(画素値)が割り当てられる。なお、図5Bに示すように、長方形(平面)のパノラマ画像は、左下を原点(0,0)とし、原点(0,0)は、方位角φが2πラジアン(u=0.0)で天頂角θがπラジアン(v=0.0)の位置の画素を示す。また、パノラマ画像は、u軸方向に方位角φが小さくなり、パノラマ画像の右端は方位角φが0ラジアン(u=1.0)の位置の画素であり、v軸方向に天頂角θが小さくなり、パノラマ画像の上端は天頂角θが0ラジアン(v=1.0)の位置の画素である。方位角φ及び天頂角θと、u値及びv値とは、以下の(3)式及び(4)式によって相互に変換可能である。
カメラ30の制御部31は、撮影中心C(撮影位置)の位置情報と、図5Bに示すパノラマ画像とを通信部33から情報処理装置10へ送信する。なお、カメラ30の制御部31は、図5Aに示す全天球画像の撮影画像を情報処理装置10へ送信し、情報処理装置10が、全天球画像から、図5Bに示すパノラマ画像を生成する処理を行ってもよい。情報処理装置10の制御部11は、カメラ30から取得した撮影中心Cの位置情報と、パノラマ画像とを対応付けてパノラマ画像DB12aに記録する。なお、カメラ30は、Exif(Exchangeable image file format)形式を使用することにより、撮影中心Cの位置情報と撮影画像とを一つのファイルで送信することが可能である。
次に、第1情報処理装置10において制御部11が仮想画像生成プログラムPを実行することによって実現される機能について説明する。図6は、第1情報処理装置10の制御部11によって実現される機能を示すブロック図である。第1情報処理装置10の制御部11は、記憶部12に記憶してある仮想画像生成プログラムPを実行した場合、球面画像生成部51、仮想スクリーン設定部52、仮想画像生成部53の各機能を実現する。なお、本実施形態では、これらの各機能を制御部11が仮想画像生成プログラムPを実行することにより実現するが、これらの一部を専用のハードウェア回路で実現してもよい。
球面画像生成部51は、パノラマ画像DB12aに記録されたパノラマ画像のそれぞれから、撮影位置を撮影中心Cとする球面画像を生成する。これにより、図5Aに示すような球面画像が生成される。球面画像の半径は、撮影中心Cから撮影画像中の被写体までの代表的な距離、又はユーザが着目し易い被写体までの距離に設定することが好ましい。被写体までの距離が球面画像の半径に一致していれば、仮想視点が移動した場合に生じる運動視差を正しく再現できる。しかしながら、球面画像の半径はこれに限定しない。球面画像の半径について、ユーザによる入力を受け付けてもよい。
仮想スクリーン設定部52は、第2情報処理装置20から取得したユーザの頭部の位置及び向きに基づいて、仮想視点及び仮想スクリーンを設定する。なお、ユーザの頭部の位置及び向きは、ユーザの頭部に装着された第2情報処理装置20のセンサ部25によって所定のタイミングで検出され、検出結果が逐次第1情報処理装置10へ送信される。仮想視点の位置は、ユーザの頭部の中心であり、例えば第1情報処理装置10の動作開始時は撮影対象の空間内の中央位置としてもよい。よって、仮想スクリーン設定部52は、動作開始時は撮影対象の部屋の中央位置を仮想視点に設定し、以降はユーザの移動に伴って仮想視点を移動させる(変更する)。なお、仮想視点の位置は、例えば4箇所の撮影位置を結んで形成される矩形の中央を基準とした位置の情報で示される。仮想スクリーンは、仮想視点から、ユーザの頭部の向きが示す視線方向に所定距離隔てた位置に設けられる仮想の画像表示領域である。仮想スクリーンは、視線方向に直交し、所定の画角を有する矩形平面であり、複数の仮想画素が二次元的に配置されている。一例として、仮想視点から1mの距離を隔てた位置に画角が90°の仮想スクリーンを設定してもよい。
仮想スクリーン設定部52は、まず、仮想視点を原点とし、視線方向を天頂角θ及び方位角φが共に0ラジアンの方向とした状態(即ち、原点から一旦Z軸の正側を向き、その後真上(Y軸の正側)を見上げた状態)での基本スクリーンを設定する。なお、基本スクリーンは、仮想視点からの距離をdとし、画角をfovとした場合、以下の(5)に示す直交座標系の座標によって示される四隅の仮想画素によって設定される。
次に、仮想スクリーン設定部52は、仮想視点の位置及び視線方向に基づいて、基本スクリーンに対して回転処理及び平行移動処理をこの順序で行う。ここで、仮想視点の座標を(Vx ,Vy ,Vz )で表し、視線方向を示すベクトルを(Vθ ,Vφ )で表す。回転の方向は回転軸の正側から見て反時計回りを正方向とすると、視線方向を示すベクトルが(Vθ ,Vφ )である場合、X軸を中心にVθ 回転させ、Y軸を中心にVφ回転させる処理を行う。また、仮想視点の座標が(Vx ,Vy ,Vz )である場合、原点から仮想視点(Vx ,Vy ,Vz )までの平行移動処理を行う。この2つの変換は同次座標を用いた行列で表現でき、合成変換で表すことができる。従って、仮想スクリーン設定部52は、上記(5)に示す基本スクリーンの四隅の仮想画素の座標(x,y,z)のそれぞれに対して、以下の(6)式に基づく変換処理を行うことにより、基本スクリーンに回転処理及び平行移動処理を行うことができる。これにより、仮想スクリーンの四隅の仮想画素の座標が算出され、算出された四隅の仮想画素の座標によって、ユーザの頭部の位置及び向き(仮想視点及び視線方向)に基づく仮想スクリーンを設定できる。
ここで、仮想スクリーン設定部52は、基本スクリーンを縦横に分割した例えば30×30区画のセルに分割し、セル毎に上述の処理を行う。例えば、上述のように設定した基本スクリーンの四隅の仮想画素を含み、基本スクリーンを分割した各セルの頂点となる仮想画素(これらをまとめて格子点という)に対して、上記の(6)式に基づく変換処理を行う。これにより、仮想スクリーンにおける各格子点の座標が設定され、各格子点の座標によって仮想スクリーンが設定される。なお、基本スクリーンにおける各格子点の座標は、上記の(5)に示す基本スクリーンの四隅の仮想画素の座標に基づき、X軸、Y軸及びZ軸方向にセルの数で分割した各値とすることができる。
仮想スクリーン設定部52は、設定した仮想スクリーンに関する情報を仮想スクリーンテーブル12bに記憶する。図7は、仮想スクリーンテーブル12bの構成を示す模式図である。仮想スクリーンテーブル12bには、仮想スクリーンのセル毎に、セルIDと、各セルの四隅の仮想画素である格子点の格子点ID及び座標と、各格子点である仮想画素の仮想画素IDとが対応付けて記憶される。セルIDは各セルに固有に付与された識別情報であり、格子点IDは各格子点に固有に付与された識別情報であり、仮想画素IDは各仮想画素に固有に付与された識別情報である。仮想スクリーン設定部52は、基本スクリーンからセルを分割する都度、分割したセルに対するセルID、セルの格子点に対する格子点ID、格子点である仮想画素に対する仮想画素IDを割り当てて仮想スクリーンテーブル12bに記憶する。また、仮想スクリーン設定部52は、分割したセルの格子点の座標値に対して上記の(6)式に基づく変換処理を行う都度、算出した座標値を格子点IDに対応付けて仮想スクリーンテーブル12bに記憶する。仮想スクリーン設定部52は、基本スクリーンの全てのセルについて上述した処理を行うことにより、仮想スクリーンの全てのセルの情報が仮想スクリーンテーブル12bに記憶され、仮想スクリーンが設定される。
仮想画像生成部53は、球面画像生成部51がパノラマ画像から生成した球面画像と、仮想スクリーン設定部52が設定した仮想スクリーンとに基づいて、第2情報処理装置20を装着したユーザに提供する仮想画像を生成する。仮想画像生成部53は、仮想ビュー生成部54、合成割合特定部55、合成部56を有する。仮想ビュー生成部54は、仮想スクリーンにおける各仮想画素と球面画像における各画素との対応付けを行い、仮想スクリーンの各仮想画素に、それぞれ対応付けられた球面画像の画素の輝度(画素値)を割り当てることにより仮想ビューを生成する。なお、各仮想画素に割り当てられる画素値は、撮影画像(パノラマ画像)が白黒画像である場合、例えば0から255までの256段階の数値が割り当てられる。また、撮影画像がカラー画像である場合、赤色、緑色、青色のそれぞれについて例えば0から255までの数値が割り当てられる。
仮想ビュー生成部(対応付け部)54は、まず、仮想スクリーンにおける各格子点と球面画像における各画素との対応付けを行う。具体的には、仮想ビュー生成部54は、仮想スクリーンの各格子点に対して、仮想視点から各格子点に向かう直線が球面画像と交差する交点における球面画像上の画素を対応付ける。よって、仮想ビュー生成部54は、仮想スクリーンの各格子点について、仮想視点から格子点に向かう直線と球面画像との交点における画素(以下では交点画素という)の座標値を算出する。ここでは、計算を簡便にするために、仮想視点(Vx,Vy,Vz)を一時的に、球面画像の撮影中心C(Cx,Cy,Cz)が原点に移動するように、点(Vx−Cx,Vy−Cy,Vz−Cz)へ平行移動させる。即ち、球面画像の撮影中心Cを原点として扱うことで、仮想視点と球面画像との相対的な関係だけを扱うことができる。仮想視点から仮想スクリーンのある格子点(x,y,z)に向かう方向ベクトルを(dx,dy,dz)で表すと、仮想視点から格子点(x,y,z)に向かう直線上の点(X,Y,Z)の座標値X,Y,Zは、媒介変数tを用いて以下の(7)式で表される。また、原点を中心とする半径Rの球面上の点(X,Y,Z)は、以下の(8)式で表される。
X=Vx+t・dx
Y=Vy+t・dy
Z=Vz+t・dz …(7)
X2 +Y2 +Z2 =R2 …(8)
上記(7)式で表した直線上の点(X,Y,Z)の座標値を、上記(8)式で表した球面の方程式に代入すると、以下の(9)式となる。ここで、以下の(10)式に示すようなa,b,cに置き換えて媒介変数tを求めると、媒介変数tは、a,b,cを用いて以下の(11)式のように表される。ここで、仮想視点は球面の内部にあるので、媒介変数tの解は(11)式に示すように2つ存在する。直線の方向ベクトルは、仮想視点から格子点(x,y,z)に向かう方向であるので、仮想視点から視線方向に位置する交点画素の座標を算出するための媒介変数tの解は(12)式に示すものとなる。
仮想ビュー生成部54は、上述のように媒介変数tを求め、求めた媒介変数tを上述の(7)式に代入することにより、仮想視点から格子点(x,y,z)に向かう直線が球面画像と交差する交点画素の座標値X,Y,Zを求める。また、仮想ビュー生成部54は、求めた交点画素の座標(X,Y,Z)を極座標系の座標(θ,φ)に変換することにより、球面画像の中心から見た交点画素の天頂角θ及び方位角φを求めることができる。更に、仮想ビュー生成部54は、交点画素の極座標系の座標(θ,φ)を上記の(4)式によって座標(u,v)に変換する。仮想ビュー生成部54は、このように算出した球面画像(パノラマ画像)における交点画素(u,v)を、仮想スクリーンの格子点(x,y,z)に対応付け、対応テーブル12cに記憶する。
図8は、対応テーブル12cの構成を示す模式図である。対応テーブル12cには、球面画像(パノラマ画像)の画像ID(パノラマ画像ID)と、仮想スクリーンの各格子点の格子点ID及び座標と、各格子点に対応付けられたパノラマ画像の交点画素の座標(対応画素座標)とが対応付けて記憶される。パノラマ画像IDはパノラマ画像に固有に付与された識別情報であり、例えばパノラマ画像と共にパノラマ画像DB12aに記憶されている。格子点ID及び格子点の座標は、仮想スクリーンテーブル12bに記憶されている格子点ID及び座標と同じである。対応画素座標は、上述した処理により仮想スクリーンの各格子点に対応付けられた各パノラマ画像における交点画素の座標(u,v)である。なお、対応テーブル12cには仮想スクリーンの各格子点とパノラマ画像の交点画素との対応関係が記憶されていればよいので、各格子点の座標は記憶されていなくてもよい。
仮想ビュー生成部54は、仮想スクリーンテーブル12bから1つの格子点の格子点ID及び座標を読み出す都度、読み出した格子点ID及び座標を対応テーブル12cに記憶する。そして、仮想ビュー生成部54は、読み出した格子点の座標値に対して上述した処理を行い、この格子点に対応付けられる各パノラマ画像における交点画素の座標値を算出し、算出した座標値が示す交点画素の座標(u,v)を格子点IDに対応付けて対応テーブル12cに記憶する。仮想ビュー生成部54は、仮想スクリーンテーブル12bに記憶された全ての格子点に対して上述した処理を行うことにより、仮想スクリーンの全ての格子点と、各パノラマ画像の各画素(交点画素)との対応付けを行う。
仮想スクリーンの全ての格子点に対してパノラマ画像の交点画素の対応付けを行った後、仮想ビュー生成部54は、例えばコンピュータグラフィックスによるレンダリング機能(テクスチャマッピング)を利用し、仮想スクリーンの各仮想画素に輝度(画素値)を割り当てて仮想ビューを生成する。具体的には、仮想ビュー生成部54は、仮想スクリーンテーブル12b及び対応テーブル12cに基づいて、仮想スクリーンの各仮想画素に対して、パノラマ画像の各画素の画素値(輝度)を割り当てる。図9は、仮想ビューDB12dの構成を示す模式図であり、図10及び図11は、レンダリング処理を説明するための模式図である。仮想ビューDB12dには、パノラマ画像のパノラマ画像IDと、仮想スクリーンの各仮想画素の仮想画素IDと、各仮想画素に割り当てられた輝度(画素値)とが対応付けて記憶される。
仮想ビュー生成部54は、例えば仮想スクリーンテーブル12bから1つのセルにおける4つの格子点IDと、各格子点IDに対応する4つの仮想画素IDとを読み出す。次に仮想ビュー生成部54は、読み出した4つの格子点IDのそれぞれに対応付けられたパノラマ画像の画素(交点画素)の座標を対応テーブル12cから読み出す。そして仮想ビュー生成部54は、読み出したパノラマ画像の画素の座標(u,v)に対応する画素値(輝度)を、パノラマ画像DB12aに記憶してあるパノラマ画像から抽出する。仮想ビュー生成部54は、仮想スクリーンテーブル12bから読み出した4つの仮想画素IDと、パノラマ画像から抽出した輝度とをそれぞれ対応付けて仮想ビューDB12dに記憶する。図10に示す例では、仮想スクリーンにおける1つのセルの格子点である仮想画素C1〜C4の輝度に、パノラマ画像の画素P1〜P4の輝度がそれぞれ割り当てられる。
次に、仮想ビュー生成部54は、仮想スクリーンテーブル12bから読み出した格子点IDの格子点によるセル内の他の仮想画素について、パノラマ画像の各画素の輝度を割り当てる。ここでは、仮想ビュー生成部54は、まず、セル内の各仮想画素に対応するパノラマ画像の各画素の座標値を、対応テーブル12cから読み出した4つの交点画素の座標(u,v)に基づいて算出する。仮想ビュー生成部54は、4つの交点画素の座標のu値及びv値に対して、例えばバイリニア法等の補間演算を行うことによって、セル内の各仮想画素に対応するパノラマ画像の各画素の座標(u,v)を算出する。そして、仮想ビュー生成部54は、算出した各画素の座標(u,v)に対応する画素値(輝度)をパノラマ画像から抽出し、抽出した各画素値(輝度)と、セル内の各仮想画素に付与された仮想画素IDとをそれぞれ対応付けて仮想ビューDB12dに記憶する。これにより、図10に示す仮想スクリーンにおけるセル内の各仮想画素の輝度に、パノラマ画像の画素P1〜P4で囲まれた領域内の各画素の輝度がそれぞれ割り当てられる。
仮想ビュー生成部54は、仮想スクリーンテーブル12bに記憶された全てのセルに対して上述した処理を行うことにより、仮想スクリーンの全ての仮想画素に対して、パノラマ画像の各画素の輝度を割り当てることができる。これにより、1つのパノラマ画像から、第2情報処理装置20を装着したユーザの頭部の位置及び向きに応じた仮想ビューが生成される。なお、図10ではセルに対応するパノラマ画像の領域を長方形で示しているが、セルに対応するパノラマ画像の領域は、必ずしも長方形に限定されず、4頂点で囲まれる閉領域となる。
ここで、図11Aに示す交点画素P1〜P4で囲まれた領域のように、仮想スクリーンのセルに対応するパノラマ画像の領域が、u=1.0(u=1.0はu=0.0と一致)をまたぐ場合、図11Bに示すように各交点画素のu値(0.95,0.05)に基づいて、領域内の各画素のu値を正確に算出(補間)できないという問題が生じる。よって、仮想ビュー生成部54は、仮想スクリーンの各格子点(各仮想画素)に、パノラマ画像の各交点画素を割り当てた際に、隣り合う2つの交点画素のu値が規定値(例えば0.5)以上離れているか否かを判断し、離れていると判断した場合、この交点画素で囲まれる領域は、u=1.0をまたぐ領域である可能性が高いと判断できる。また、u=1.0をまたぐ領域である可能性が高いと判断した場合、仮想ビュー生成部54は、4つの交点画素のu値のうちで小さい方のu値に1.0を加算する。これにより、図11Bに示す例では、交点画素P2,P3のu値が1.05となるので、交点画素P1〜P4のu値に基づく補間演算により、この領域内の各画素の座標(u値)を算出できる。
本実施形態では、仮想ビュー生成部54は、仮想スクリーンの各格子点についてのみ、対応するパノラマ画像の交点画素の座標を上述の演算によって算出し、仮想スクリーンの他の仮想画素に対応するパノラマ画像の画素の座標ついては補間演算によって算出する。これにより、仮想ビュー生成部54における演算負荷が軽減され、パノラマ画像描画を高速に行うことが可能となる。なお、仮想ビュー生成部54は、例えばOpenGLやDirectX等のグラフィックライブラリー(グラフィックAPI)を用いてテクスチャマッピング処理を行うことにより、仮想スクリーンの各仮想画素にパノラマ画像の各画素の画素値を割り当てるレンダリング処理を行ってもよい。この場合、例えば対応テーブル12cの記憶情報のように、仮想スクリーンの各格子点と、パノラマ画像の各交点画素との対応を指定することにより、グラフィックライブラリーが仮想スクリーンの各仮想画素に対応するパノラマ画像の各画素の座標値を算出する補間演算、各仮想画素に対するパノラマ画像の各画素の画素値の割当(コピー)等を高速に行うことができる。
ここで、仮想画像生成部53は、室内における複数箇所(例えば4箇所)で撮影して得られたパノラマ画像のそれぞれから、仮想ビュー生成部(中間画像生成部)54による上述した処理によって複数(例えば4つ)の仮想ビューを生成する。仮想画像生成部53は、生成した複数の仮想ビューを合成し、ユーザが指定した仮想視点及び視線方向(ユーザの頭部の位置及び向き)に応じた仮想画像を生成する。このとき、仮想画像生成部53は、撮影対象の室内において、複数の撮影位置と仮想視点の位置との関係に応じて、各仮想ビューの合成割合(合成率)を異ならせる。合成割合特定部(割合特定部)55は、各仮想ビューの合成割合を特定し、合成部56は、各仮想ビューを、それぞれ特定された合成割合で合成して仮想画像を生成する。
合成割合特定部55は、仮想視点の位置とそれぞれの撮影位置との位置関係に応じて、各仮想ビューに対する合成割合(合成強度)を特定する。合成割合特定部55は、例えば、仮想視点からそれぞれの撮影位置までの距離が短いほど、それぞれの撮影位置で撮影したパノラマ画像から生成された仮想ビューに対する合成割合を高く設定する。例えば、合成割合特定部55は、仮想視点と撮影位置との距離をdとした場合の合成強度Sを、S=1/dで表される関数に基づいて特定する。なお、合成強度Sが距離dの増加に伴い単調減少する関数であれば、どのような関数を用いてもよい。
合成部56は、それぞれの撮影位置で撮影したパノラマ画像から仮想ビュー生成部54が生成した仮想ビューのそれぞれを、合成割合特定部55が特定した合成割合で合成し、仮想画像を生成する。
合成割合特定部55は、仮想視点がいずれかの撮影位置から所定距離未満の位置である場合に、この撮影位置で撮影したパノラマ画像から仮想ビュー生成部54が生成した仮想ビューに対する合成割合が100%となるように各仮想ビューの合成割合を設定してもよい。この場合、合成部56は、仮想ビューDB12dから読み出した、仮想視点から最も近い撮影位置で撮影されたパノラマ画像から生成された仮想ビューをそのまま仮想画像として出力する。
また、合成割合特定部55は、仮想視点から仮想ビューにおける各セルの各格子点に向かうベクトルと、撮影位置からパノラマ画像(球面画像)の各交点画素に向かうベクトルとの成す角度が小さいほど、それぞれの仮想ビューに対する合成割合を高く設定してもよい。例えば、合成割合特定部55は、仮想視点から仮想ビューにおける格子点に向かう単位方向ベクトルをEとし、撮影位置からパノラマ画像(球面画像)の交点画素に向かう単位方向ベクトルをQとした場合の合成強度Sを、S=E・Qで表される関数に基づいて特定する。なお、合成強度Sが2つのベクトルの内積値の増加に伴い単調増加する関数であれば、どのような関数を用いてもよい。この場合、格子点毎の内積算出処理が可能であり、合成割合特定部55は、格子点毎に各仮想ビューに対する合成割合を特定してもよい。またこの場合、合成割合特定部55は、セル内の各仮想画素毎に仮想ビューに対する合成割合を、セルの4頂点(格子点)の合成割合から補間演算により求めてもよい。このような構成とする場合、合成部56は、仮想画素毎に、仮想ビューのそれぞれを、合成割合特定部55が補間演算により特定した合成割合に基づいて合成して仮想画像を生成する。
合成割合特定部55は、上述したように仮想視点と撮影位置との距離に応じた合成強度、又は2つのベクトルの内積値に応じた合成強度を単独で用いるだけでなく、これらを合成した合成関数を用いて各仮想ビューに対する合成割合を特定してもよい。例えば、仮想視点と撮影位置との距離と2つのベクトルの内積値との積、又は仮想視点と撮影位置との距離及び2つのベクトルの内積値にそれぞれ重み付けを行った後の和等による関数を用いてもよい。
合成部56は、例えば仮想ビューのそれぞれについて、各画素値に対して、仮想ビューに特定された合成割合を乗算し、乗算後の各仮想ビューの各画素値を加算することにより、仮想画像を生成する。このほかに、合成部56は、各仮想ビューをアルファブレンディングによって重ねることにより仮想画像を生成してもよい。例えば、3つの第1〜第3仮想ビューをそれぞれ合成割合25%,25%,50%で合成する場合、合成部56は、初期化されたスクリーンに対して第1仮想ビューを合成割合100%で合成した後、第2仮想ビューを合成割合50%で合成する。この結果、スクリーン上には第1仮想ビュー及び第2仮想ビューがそれぞれ合成割合50%で合成された中間画像が生成される。その後、中間画像に対して第3仮想ビューを合成割合50%で合成することにより、第1仮想ビュー及び第2仮想ビューがそれぞれ合成割合25%で合成され、第3仮想ビューが合成割合50%で合成された仮想画像が生成される。なお、合成割合特定部55が仮想ビューの格子点毎に合成割合を特定した場合、合成部56は、仮想画素毎に補間された合成割合を用いて上述した処理を行えばよい。
上述した各機能により、第1情報処理装置10は、カメラ30で撮影されたパノラマ画像と、第2情報処理装置20によって検出されたユーザの頭部の位置及び向きとに基づいて、ユーザに提供する仮想画像を生成できる。第1情報処理装置10は、上述したように生成した仮想画像を第2情報処理装置20へ送信し、第2情報処理装置20が表示部24に表示させることにより、第2情報処理装置20を装着したユーザに、ユーザの頭部の位置及び向きに応じた仮想画像を提供できる。これにより、第1情報処理装置10は、カメラ30で撮影した部屋を、部屋の中の任意の視点から任意の方向を見た状態の仮想画像をユーザに提供できる。
次に、カメラ30を用いて室内を撮影した際にカメラ30及び第1情報処理装置10が行う処理をフローチャートに基づいて説明する。図12は、撮影時にカメラ30及び第1情報処理装置10が行う処理の手順を示すフローチャートである。以下の処理は、カメラ30の記憶部32に記憶してある制御プログラムに従って制御部31によって実行され、第1情報処理装置10の記憶部12に記憶してある制御プログラムに従って制御部11によって実行される。なお、撮影を行う場合、カメラ30はユーザ又はロボット等により所定の位置及び向きに配置されるものとする。
カメラ30の制御部31は、シャッターボタン34からの指示に基づいて撮影部35による撮影を行う(S1)。制御部31は、撮影により、図5Aに示すような全天球画像を生成し(S2)、全天球画像から図5Bに示すような平面のパノラマ画像を生成する(S3)。制御部31は、生成したパノラマ画像を第1情報処理装置10に送信する(S4)。なお、制御部31は、撮影位置を示す情報を取得し、パノラマ画像と共に送信する。第1情報処理装置10の制御部(画像取得部)11は、カメラ30からパノラマ画像を受信する(S5)。なお、制御部11は、パノラマ画像と共に撮影位置の情報も受信し、受信した撮影位置の情報とパノラマ画像とを対応付けてパノラマ画像DB12aに記録する(S6)。カメラ30は、室内の複数の撮影位置でユーザ又はロボット等により所定の向きに配置された状態で、上述したステップS1〜S4の処理を行い、第1情報処理装置10は、カメラ30から送信されてきたパノラマ画像をパノラマ画像DB12aに記録する。
次に、第2情報処理装置20を用いてパノラマ画像を再生(表示)する際に第1情報処理装置10及び第2情報処理装置20が行う処理をフローチャートに基づいて説明する。図13及び図14は、表示時に第1情報処理装置10及び第2情報処理装置20が行う処理の手順を示すフローチャートである。以下の処理は、第1情報処理装置10の記憶部12に記憶してある仮想画像生成プログラムPを含む制御プログラムに従って制御部11によって実行され、第2情報処理装置20の記憶部22に記憶してある制御プログラムに従って制御部21によって実行される。
第2情報処理装置20の制御部21は、センサ部25によってユーザの頭部の位置及び向きを検出し、位置及び向きを示す情報を取得する(S11)。例えば制御部21は、センサ部25のGPSによって第2情報処理装置20の現在位置を検出し、センサ部25の磁気センサによって第2情報処理装置20の向きを検出する。制御部21は、取得した位置及び向きを示す情報を通信部23にて第1情報処理装置10へ送信する(S12)。制御部21は、位置及び向きの検出及び送信を、所定時間間隔で行ってもよいし、例えば入力部(図示せず)を介したユーザからの指示に従って行ってもよい。
一方、第1情報処理装置10の制御部11は、再生すべきパノラマ画像をパノラマ画像DB12aから選択して読み出す(S21)。再生すべきパノラマ画像は、入力部14又は第2情報処理装置20を介して指定される。なお、入力部14又は第2情報処理装置20を介して、再生すべきパノラマ画像を撮影した部屋が指定され、制御部11は、指定された部屋で撮影されたパノラマ画像(ここでは4つのパノラマ画像)をパノラマ画像DB12aから読み出してもよい。制御部11(球面画像生成部51)は、読み出したパノラマ画像のそれぞれに基づいて、撮影位置を撮影中心Cとする球面画像を生成する(S22)。
制御部(視点受付部)11は、ステップS12で第2情報処理装置20が送信した位置及び向きを示す情報を通信部13にて受信する(S23)。なお、制御部11は、受信した位置及び向きを示す情報を記憶部12に逐次記憶しており、前回受信した情報と比較して、位置又は向きが変化したか否かを判断する(S24)。位置及び向きのいずれも変化していないと判断した場合(S24:NO)、制御部11は、ステップS23の処理に戻り、第2情報処理装置20から位置及び向きを示す情報を受信する都度、位置又は向きが変化したか否かを判断する。
位置又は向きが変化したと判断した場合(S24:YES)、制御部11(仮想スクリーン設定部52)は、受信した位置及び向きに基づいて仮想視点を設定し、設定した仮想視点に応じた仮想スクリーンを設定(特定)する(S25)。例えば、制御部11は、ユーザの頭部の位置に基づいて前回設定した仮想視点を移動させ、移動後の仮想視点から、ユーザの頭部の向きが示す視線方向に所定距離隔てて、視線方向に直交し、所定の画角を有する矩形平面である仮想スクリーンを設定する。なお、制御部11は、上述したように、まず基本スクリーンを設定し、基本スクリーンに対して回転処理及び平行移動処理を行うことにより仮想スクリーンを設定する。
次に制御部11(仮想ビュー生成部54)は複数の仮想ビュー(中間仮想画像)を生成する(S26)。ここでは、制御部11は、ステップS22で生成した球面画像のそれぞれについて、ステップS25で設定した仮想スクリーンに基づいて仮想ビューを生成する。また制御部11(合成割合特定部55)は、ステップS26で生成した4つの仮想ビューのそれぞれに対して合成割合を特定する(S27)。そして制御部11(合成部56)は、ステップS26で生成した4つの仮想ビューを、ステップS27で特定した合成割合に基づいて合成し、仮想画像を生成する(S28)。制御部11は、生成した仮想画像を通信部13にて第2情報処理装置20へ送信する(S29)。
第2情報処理装置20の制御部21は、第1情報処理装置10が送信した仮想画像を通信部23にて受信し(S13)、受信した仮想画像を表示部24に表示させる(S14)。第2情報処理装置20の制御部21は、ユーザの頭部の位置及び向きの検出及び送信を、所定時間間隔又はユーザからの指示に従って行い、第1情報処理装置10の制御部11は、第2情報処理装置20から位置及び向きの情報を受信する都度、ステップS24〜S29の処理を行う。これにより、実写データに基づいて、任意の視点から見た画像を生成する情報処理システム40を提供することができる。
上述した処理により、ユーザは、撮影された部屋の中を自由に移動しながら、部屋の広さ、家具の配置、窓の外の景色等を感覚的に把握することができる。なお、カメラ30を用いて撮影する空間は、博物館、美術館、テーマパーク、アミューズメント施設、観光地、商業施設等であってもよい。
上述した処理において、第2情報処理装置20の制御部21は、ステップS11で取得した位置及び向きが、前回取得した位置及び向きに対して変化したか否かを判断し、変化した場合にのみ、取得した位置及び向きの情報を第1情報処理装置10へ送信するようにしてもよい。この場合、第1情報処理装置10の制御部11は、ステップS24の処理を行う必要がなく、第2情報処理装置20から受信した位置及び向きの情報に基づいて、ステップS25以降の処理を行えばよい。
本実施形態によると、撮影した各パノラマ画像から、視点位置の移動に応じて生成された仮想スクリーンに投影される球面画像を算出して各仮想ビューが生成される。これにより、単体の各パノラマ画像から視点位置を移動した効果のある映像表現が得られる。更に、本実施形態によると、複数箇所で撮影したパノラマ画像(仮想ビュー)から生成された仮想画像が提供される。また、複数の仮想ビューから仮想画像を生成する場合、例えば仮想視点と各撮影位置との距離に応じた合成割合で複数の仮想ビューが合成される。これにより、表示されるパノラマ画像(仮想ビュー)が切り替えられる際に、仮想視点と撮影位置との距離に応じた重み付け(合成割合)を各仮想ビューに付与できるので、画像の遷移を滑らかに行うことができ、画像の切り替えの際にユーザに与える違和感を抑制できる。また、仮想視点から各仮想ビューの格子点(仮想画素)に向かうベクトルと、各撮影位置から各パノラマ画像の交点画素(画素)に向かうベクトルとの成す角度に応じた合成割合で複数の仮想ビューが合成されてもよい。これにより、表示されるパノラマ画像(仮想ビュー)が切り替えられる際に、仮想視点から仮想ビューの各格子点に向かう方向と、撮影位置からパノラマ画像の各画素に向かう方向との成す角度に応じた重み付け(合成割合)を各仮想ビューに付与できるので、画像の切り替えの際にユーザに与える違和感を抑制できる。
なお、本実施形態において、仮想視点がいずれかの撮影位置の近傍(例えば所定距離未満の位置)である場合に、この撮影位置で撮影したパノラマ画像から生成された仮想ビューに対する合成割合が100%となるように各仮想ビューに対する合成割合を設定してもよい。この場合、仮想視点の近傍の撮影位置で撮影したパノラマ画像から生成された仮想ビューが仮想画像として提供される。
本実施形態によると、HMD型の第2情報処理装置20を使用するので、コンピュータ等の操作に不慣れなユーザであっても容易に様々な視点から室内を見た状態の画像を確認できる情報処理システム40を提供できる。本実施形態によると、市販の全天球カメラ等を用いて撮影したJPEG(Joint Photographic Experts Group)形式等の汎用の形式の画像を使用して、様々な視点から室内を見た状態の画像を提供できる情報処理システム40を提供できる。
本実施形態において、例えば、右目を仮想視点に設定して作成した仮想画像を右目側に表示し、左目を仮想視点に設定して作成した仮想画像を左目側に表示することにより、立体感のある画像を提供する情報処理システム40を提供できる。
カメラ30は、全天球カメラに限定しない。たとえば、半球型の範囲を撮影可能なカメラであってもよい。通常の平面画像撮影用のカメラでもよい。
(実施形態2)
本実施形態は、カメラ30による撮影対象が広い空間であり、広い空間において任意の視点から見た状態の画像を提供する情報処理システム40に関する。実施形態1と共通する部分については、説明を省略する。本実施形態では、カメラ30を用いて撮影する空間は、例えば、劇場、コンサートホール、宴会場等の広い室内、公園、庭園等の屋外空間等とすることができる。
図15は、カメラ30の撮影位置の例を示す模式図であり、撮影空間を鉛直上方向の位置から見た状態を示す。カメラ30による撮影位置は、地面等の基準面から所定の高さの面内において、格子状となる位置とする。図15に示す例では、黒丸で示すように横方向に3箇所、縦方向に3箇所の合計9箇所を撮影位置としているが、10箇所以上の任意の場所を撮影位置としてもよい。また、撮影位置の高さは、例えば1m程度、立った状態の大人の目線の高さ、又は椅子に座った状態の大人の目線の高さ等としてもよい。
図15に示すように格子状の位置を撮影位置とすることにより、近傍の4箇所の撮影位置で囲まれる領域においては、上述した実施形態1と同様の処理によって、任意の視点から任意の方向を見た場合の仮想画像を生成できる。例えば撮影位置P11,P12,P21,P22で囲まれる領域R1内に仮想視点がある場合、第1情報処理装置10は、撮影位置P11,P12,P21,P22のそれぞれで撮影したパノラマ画像から生成された仮想ビューに基づいて仮想画像を生成する。また、撮影位置P21,P22,P31,P32で囲まれる領域R2内に仮想視点がある場合、第1情報処理装置10は、撮影位置P21,P22,P31,P32のそれぞれで撮影したパノラマ画像から生成された仮想ビューに基づいて仮想画像を生成する。
ここで、図15中の矢符で示すように、仮想視点が領域R1から領域R2へ移動した場合、仮想画像を生成する際に用いる仮想ビューが、撮影位置P11,P12,P21,P22で撮影されたパノラマ画像から、撮影位置P21,P22,P31,P32で撮影されたパノラマ画像に切り替えられる。この切り替えによって、生成された仮想画像に不連続な遷移が生じる可能性がある。よって、本実施形態の第1情報処理装置10は、仮想視点が領域間の境界線上を通過する際には、仮想視点の近傍の2箇所の撮影位置で撮影したパノラマ画像から生成された仮想ビューのみを用いて仮想画像を生成する。例えば、図15に示すように仮想視点が領域R1,R2の境界を通過する場合、第1情報処理装置10は、撮影位置P21,P22で撮影されたパノラマ画像から生成された仮想ビューのみを用いて仮想画像を生成する。
上述の構成を実現するために、本実施形態の合成割合特定部55は、仮想視点が各領域間の境界線上にある場合には、仮想視点の近傍の2箇所の撮影位置以外で撮影したパノラマ画像(仮想ビュー)に対する合成割合が0%となるように各仮想ビューの合成割合を特定する。例えば、領域R1が一辺の長さがDの正方形であるとし、撮影位置P11,P12,P21,P22の座標をそれぞれ(0,0),(0,D),(D,0),(D,D)とした場合、仮想視点(x,y)に対して撮影位置P11,P12,P21,P22で撮影したパノラマ画像(仮想ビュー)に対する合成割合S11,S12,S21,S22は、以下の(13)式で表される。
S11=(D−x)×(D−y)
S12=(D−x)×y
S21=x×(D−y)
S22=x×y …(13)
合成割合特定部55は、上記(13)式に基づいて各仮想ビューに対する合成割合を設定する。これにより、図15に示す例において、例えば仮想視点が領域R1内を右方向に移動している場合には、撮影位置P11,P12で撮影したパノラマ画像(仮想ビュー)に対する合成割合が徐々に小さい値となる。そして、仮想視点が領域R1,R2の境界線上にある場合には、撮影位置P11,P12で撮影したパノラマ画像(仮想ビュー)に対する合成割合が0%となり、撮影位置P21,P22で撮影したパノラマ画像のみを用いた仮想画像が生成される。更に、仮想視点が領域R2内に進入し、更に右方向に移動している場合には、撮影位置P31,32で撮影したパノラマ画像(仮想ビュー)に対する合成割合が徐々に大きい値となる。
本実施形態によると、広い空間においても任意の視点から見た状態の画像を提供できる。また、近傍の4箇所の撮影位置で囲まれる各領域間を仮想視点が移動する場合に、仮想画像の生成に用いるパノラマ画像(仮想ビュー)を徐々に切り替えることにより、表示される仮想画像において、仮想画像の生成に用いるパノラマ画像が切り替えられる際にユーザに与える違和感を抑制できる。
(実施形態3)
本実施形態は、実施形態2の変形例である情報処理システム40に関する。本実施形態は、第1情報処理装置10において、仮想画像生成部53の合成割合特定部55が各仮想ビューに対して合成割合を特定する処理が実施形態2と異なる。実施形態2では、例えば図15に示す例において仮想視点が領域R1から領域R2へ移動する場合に、領域R1,R2の境界線上に仮想視点があるときは、撮影位置P21,P22で撮影されたパノラマ画像から生成された仮想ビューに基づいて仮想画像が生成される。本実施形態は、領域R1,R2の境界線を含む所定領域(境界部分)内に仮想視点があれば、撮影位置P21,P22で撮影されたパノラマ画像から生成された仮想ビューに基づいて仮想画像が生成される構成とする。
図16は、実施形態3の第1情報処理装置10による処理を説明するための模式図であり、カメラ30の撮影位置を鉛直上方向の位置から見た状態を示す。カメラ30による撮影位置及び高さは実施形態2と同様である。本実施形態の第1情報処理装置10において、例えば合成割合特定部55は、仮想視点がいずれかのパノラマ画像の撮影位置から所定距離未満の位置である場合、この撮影位置で撮影したパノラマ画像から生成された仮想ビューに対する合成割合を100%に特定する。即ち、図16に示す例では、例えば撮影位置P21(又はP22)から所定距離未満である領域R21(又はR22)に仮想視点がある場合、撮影位置P21(又はP22)で撮影したパノラマ画像から生成された仮想ビューが仮想画像とされる。この処理は実施形態2と同じである。
本実施形態の仮想画像生成部53は、仮想視点がいずれの撮影位置からも所定距離以上離れている場合、近傍の4箇所の撮影位置で囲まれる各領域間の境界を含む所定領域(境界領域)内に仮想視点があるか否かを判断する。図16に示す例では、例えば領域R1,R2の境界を含む境界領域R23内に仮想視点があるか否かを判断する。仮想視点がいずれかの境界領域内にある場合、仮想画像生成部53は、この境界領域の近傍の2箇所の撮影位置で撮影したパノラマ画像から生成された仮想ビューに基づいて仮想画像を生成する。即ち、図16に示す例では、仮想視点が境界領域R23内にある場合、撮影位置P21,P22で撮影したパノラマ画像から生成された仮想ビューに基づいて仮想画像を生成する。なお、このとき、合成割合特定部55は、仮想視点と撮影位置P21,P22のそれぞれとの距離に応じた合成割合を、撮影位置P21,P22で撮影したパノラマ画像(仮想ビュー)のそれぞれに設定する。また、合成割合特定部55は、仮想視点から仮想ビューにおける各セルの各格子点に向かうベクトルと、撮影位置からパノラマ画像(球面画像)の各交点画素に向かうベクトルとの成す角度に応じて、それぞれの仮想ビューに対する合成割合を設定してもよい。
仮想視点がいずれの境界領域内にもない場合、仮想画像生成部53は、実施形態2と同様に、仮想視点の近傍の4箇所の撮影位置で撮影したパノラマ画像から生成された仮想ビューに基づいて仮想画像を生成する。
本実施形態の情報処理システム40では、カメラ30を用いて空間を撮影した際にカメラ30及び第1情報処理装置10が行う処理は、図12に示した処理と同じである。
次に、本実施形態において、第2情報処理装置20を用いてパノラマ画像を再生(表示)する際に第1情報処理装置10及び第2情報処理装置20が行う処理をフローチャートに基づいて説明する。図17は、表示時に第1情報処理装置10及び第2情報処理装置20が行う処理の手順を示すフローチャートである。なお、図17に示す処理は、図13,14に示した処理において、ステップS25及びS26の処理の間にステップS41〜S44の処理を追加したものである。図17では、図13及び図14に示した処理においてステップS26以降の処理のみを示し、また、第2情報処理装置20による処理の図示を省略する。実施形態1で説明した処理と同一の処理については説明を省略する。
本実施形態の第1情報処理装置10において、制御部11は、ステップS21〜S25の処理を行った後、仮想視点がいずれかの境界領域内にあるか否かを判断する(S41)。境界領域とは、例えば近傍の4箇所の撮影位置で囲まれた各領域間の境界を含む所定領域であり、各撮影位置の情報から予め設定されている。仮想視点がいずれの境界領域内にもないと判断した場合(S41:NO)、制御部11はステップS26以降の処理を行う。
仮想視点がいずれかの境界領域内にあると判断した場合(S41:YES)、制御部11は2つの仮想ビューを生成する(S42)。ここでは、制御部11は、ステップS22で生成した球面画像のうち、仮想視点がある境界領域の近傍の2箇所の撮影位置で撮影したパノラマ画像から生成された球面画像について、ステップS25で設定した仮想スクリーンに基づいて仮想ビューを生成する。また制御部11は、生成した2つの仮想ビューのそれぞれに対して合成割合を特定し(S43)、ステップS42で生成した2つの仮想ビューを、ステップS43で特定した合成割合に基づいて合成して仮想画像を生成する(S44)。そして制御部11はステップS29の処理を行う。
本実施形態では、図13中のステップS21、S22の処理は必ずしも予め行っておく必要はない。例えばステップS41で仮想視点がいずれかの境界領域内の位置であると判断した場合に、この境界領域の近傍の2箇所の撮影位置で撮影したパノラマ画像をパノラマ画像DB12aから読み出して球面画像を生成してもよい。更に、ステップS41で仮想視点がいずれの境界領域内にもないと判断した場合に、仮想視点の近傍の4箇所の撮影位置で撮影したパノラマ画像をパノラマ画像DB12aから読み出して球面画像を生成してもよい。
本実施形態では、図16中の矢符で示すように仮想視点が領域R1から領域R2へ移動した場合、仮想視点が境界領域R23に進入する前は、撮影位置P11,P12,P21,P22で撮影したパノラマ画像から生成された仮想ビューに基づいて仮想画像が生成される。そして、仮想視点が境界領域R23に進入した場合、撮影位置P21,P22で撮影したパノラマ画像から生成された仮想ビューに基づいて仮想画像が生成される。更に、仮想視点が境界領域R23から出た場合、撮影位置P21,P22,P31,P32で撮影したパノラマ画像から生成された仮想ビューに基づいて仮想画像が生成される。よって、仮想視点が領域間を移動した場合であっても、仮想画像を生成する際に用いる仮想ビューの切り替えを段階的に行うことにより、表示される仮想画像において画像の切り替えの際にユーザに与える違和感を抑制できる。また、本実施形態においても、実写データに基づいて、広い空間内の任意の視点から見た画像を生成する情報処理システム40を提供することができる。よって、ユーザは、広い空間においても自由に移動しながら散歩、鑑賞等を体感することができる。
(実施形態4)
本実施形態は、パソコン、スマートフォン、又は、タブレット等の汎用の情報処理装置を第2情報処理装置20に使用する情報処理システム40に関する。実施形態1と共通する部分については、説明を省略する。
図18は、実施形態4の画面例を示す模式図である。画面には、表示エリア241、上視線ボタン242、右視線ボタン243、下視線ボタン244、左視線ボタン245、移動ボタン246及びズームボタン247が含まれる。ユーザは、表示部24に設けられたタッチパネルのタッチ操作、又はマウスを用いたクリック操作等により各ボタンを選択できる。
上視線ボタン242の入力を受け付けた場合、制御部21は第2情報処理装置20の向きが上向きであるという入力を受け付けた場合と同様に、表示エリア241に表示される画像の範囲を上向きに変化させる。同様に、右視線ボタン243、下視線ボタン244および左視線ボタン245の選択を受け付けた場合も、制御部21は表示エリア241に表示される画像の範囲をそれぞれの向きに変化させる。
移動ボタン246は、前後左右の領域に分割されている。移動ボタン246のそれぞれの領域の選択を受け付けた場合、制御部21は第2情報処理装置20の位置がそれぞれの向きに変化したと判定し、仮想視点を移動させる。ズームボタン247の選択を受け付けた場合、制御部21は、表示エリア241に表示する画像の範囲を拡大または縮小する。
以上により、ユーザは画面上のボタンの操作により、たとえば撮影対象の部屋の中を自由に移動しながら、部屋の広さ、家具の配置、窓の外の景色等を感覚的に把握することができる。第2情報処理装置20を傾ける操作又はジョイスティック等の操作が、画面上の各ボタンの操作の代わりに用いられてもよい。
上述した実施形態において、カメラ30は1つであっても複数であってもよい。複数のカメラ30を用いる場合、各カメラ30をそれぞれの撮影位置に設置した状態で同時に撮影を行ってもよい。また、複数のカメラ30をそれぞれの撮影位置に設置しておき、第1情報処理装置10からの指示に従って各カメラ30が撮影を行ってもよい。この場合、カメラ30で撮影された画像をリアルタイムで第2情報処理装置20のユーザに提供することができる。よって、例えば各種の部屋、劇場、動物園、植物園等で撮影した画像によって撮影対象の空間の状態をリアルタイムで確認することができる。
各実施形態で記載されている技術的特徴(構成要件)はお互いに組合せ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。