(実施形態1)
図1は、情報処理システム40の構成例を示す模式図である。情報処理システム40は、第1情報処理装置10、第2情報処理装置20及びカメラ30を含む。本実施形態においては、カメラ30を用いて、賃貸住宅及び販売住宅等の不動産物件の部屋、ホテル及び民宿等の宿泊施設の部屋等を撮影する。カメラ30は、撮影装置の一例である。カメラ30は、1回のシャッターで前後左右上下の撮影を行う全天球カメラを使用する。撮影位置は、例えば矩形の部屋の2箇所とするが、これに限定しない。3箇所以上の任意の場所から撮影を行ってもよい。また撮影位置の床面からの高さは、例えば1m程度であるが、これに限定しない。立った状態の大人の目線の高さ、又は椅子に座った状態の大人の目線の高さ等の任意の高さから撮影を行ってもよい。カメラ30が撮影を行う位置及び向きは、カメラ30に内蔵されたセンサ又はカメラ30を外部から監視するセンサにより測定される。カメラ30を特定の位置及び向きに固定する治具等を利用してもよい。
カメラ30によって撮影された撮影画像(パノラマ画像)は、撮影位置を示す情報と共に第1情報処理装置10へ送信され、第1情報処理装置10のパノラマ画像DB12aに記録される。なお、カメラ30は撮影によって画像データ(撮影画像データ)を取得するが、以下では画像データを単に画像という場合がある。従って、撮影画像は撮影画像データを意味する場合があり、パノラマ画像はパノラマ画像データを意味する場合がある。撮影画像は、複数の画素を含み、撮影画像データは、各画素の撮影画像中の位置(座標)を示す位置情報と各画素の輝度(画素値)とを対応付けて有する。撮影位置の情報は、例えば矩形の部屋の任意の位置を基準とした位置の情報であり、例えばカメラ30に内蔵されているセンサにより測定されてもよく、他のセンサ等により測定されてカメラ30又は第1情報処理装置10へ送信されてもよい。なお、撮影位置の情報は必ずしも必要ではなく、2箇所の撮影位置を結んだ線分の方向(方位)が分かる情報を取得できればよい。
第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に記憶される制御プログラムには、本開示のプログラムである仮想画像生成プログラムPGが含まれ、記憶部12に記憶されるデータには、カメラ30によって撮影したパノラマ画像を蓄積するパノラマ画像DB12aが含まれる。なお、パノラマ画像DB12aは、第1情報処理装置10に接続された外部の大容量記憶装置等に保存されていてもよく、ネットワークNを介して第1情報処理装置10に接続された別の記憶装置に記憶されてもよい。
通信部13は、ネットワークNとの通信を行うインターフェイスである。入力部14は、キーボード及びマウス等である。表示部15は、例えば液晶表示パネル等である。
第1情報処理装置10は、通信部13を介して外部装置から仮想画像生成プログラムPGを取得して記憶部12に記憶してもよい。また、第1情報処理装置10が可搬型記憶媒体に記憶された情報を読み取る読取部等を備える場合、可搬型記憶媒体から仮想画像生成プログラムPGを読み出して記憶部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を使用して説明した撮影時の第1情報処理装置10の構成の記憶部12に、特徴点対応テーブル12b、方位角対応テーブル12c、仮想スクリーンテーブル12d〜12f、画素対応テーブル12g及び仮想ビューDB12hが追加された構成を有する。特徴点対応テーブル12b、方位角対応テーブル12c、仮想スクリーンテーブル12d〜12f、画素対応テーブル12g及び仮想ビューDB12hは、制御部11が仮想画像生成プログラムPGの実行中に生成されるデータであるが、撮影時においても記憶部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点とする全天球画像を生成する。なお、撮影対象の部屋の複数箇所で撮影を行う際、各撮影位置において、カメラ30の上下方向及び左右方向を一致させた状態で撮影を行う。これにより、それぞれの撮影位置で撮影された複数の全天球画像において共通の座標系を用いることができる。
全天球画像上の各画素の位置を定める座標系について説明する。図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から第1情報処理装置10へ送信する。なお、カメラ30の制御部31は、図5Aに示す全天球画像の撮影画像を第1情報処理装置10へ送信し、第1情報処理装置10が、全天球画像から、図5Bに示すパノラマ画像を生成する処理を行ってもよい。第1情報処理装置10の制御部11は、カメラ30から取得した撮影中心C点の位置情報とパノラマ画像とを対応付けてパノラマ画像DB12aに記録する。なお、カメラ30は、Exif(Exchangeable image file format)形式を使用することにより、撮影中心C点の位置情報と撮影画像とを一つのファイルで送信することが可能である。
図6は、カメラ30の撮影位置の例を示す模式図であり、図7は、パノラマ画像の例を示す模式図である。図6は、撮影対象の部屋を天井側から見た状態を示しており、図6に示す撮影対象の部屋にはベッド、ソファー、テーブル、椅子、テレビ等が設置されている。本実施形態では、例えば図6中の黒丸で示す2箇所で撮影を行い、窓側の撮影位置を前側撮影位置とし、部屋の入口側の撮影位置を後側撮影位置とする。撮影位置は図6に示す例に限らず任意の2箇所とすればよく、また3箇所以上としてもよい。図7Aは前側撮影位置で撮影したパノラマ画像の例であり、図7Bは後側撮影位置で撮影したパノラマ画像の例である。撮影を行う場合、撮影位置(カメラ30)の床面からの高さ、カメラ30の上下方向及び左右方向を、それぞれの撮影位置で一致させる。また本実施形態では、後側撮影位置から前側撮影位置への方向(図6中に矢符tで示す方向)にカメラ30の前側を向けて(第1光軸を一致させて)それぞれの撮影位置で撮影を行う。これにより、それぞれの撮影位置で、画像の上下方向が鉛直方向に一致し、左右端がZ軸の正方向(カメラ30の後側)に一致し、左右方向の中央がZ軸の負方向(カメラ30の前側)に一致するパノラマ画像を取得することができる。なお、本実施形態では、撮影対象の空間内における仮想視点の位置を、後側撮影位置を原点とし、後側撮影位置から前側撮影位置に向かう方向と、水平面内でこの方向に直交する方向とによる座標系の座標で示す。具体的には、図6に示すように、後側撮影位置から前側撮影位置に向かう方向をt軸とし、t軸に直交する方向をs軸とし、ST座標系の座標(s,t)によって仮想視点の位置を表す。また本実施形態では、仮想視点の位置をt軸上の位置とし、座標(0,t)によって表す。また、前側撮影位置と後側撮影位置との間の距離にかかわらず、後側撮影位置をST座標系の座標(0,0)で示し、前側撮影位置をST座標系の座標(0,1)で示す。
本実施形態では、撮影時の情報を用いて撮影後のパノラマ画像を補正することにより、それぞれの撮影位置で撮影したパノラマ画像の状態を一致させてもよい。例えばカメラ30に設けられた加速度センサを用いて重力加速度を検出することにより、撮影時にカメラ30が重力方向(即ち、鉛直方向の下向き)からどれだけ傾いていたかを検知できる。この情報を用いて撮影後のパノラマ画像における鉛直方向の傾きを補正(天頂補正)することにより、画像の上下方向が鉛直方向に一致するパノラマ画像を得ることができる。また地磁気センサ(電子コンパス)を用いて地磁気に対するカメラ30の傾きを取得し、取得した傾きを用いて撮影後のパノラマ画像における方位角方向の傾きを補正(方位角補正)することができる。これにより、例えば北向きが画像の中央に一致するようにそれぞれのパノラマ画像を補正することができる。例えばカメラ30の第1光軸が北東方向に一致した状態で撮影が行われた場合、カメラ30の真北方向に位置する被写体は撮影後のパノラマ画像の中心よりもπ/4ラジアンだけ左側に移動した位置に存在する。この場合、撮影後のパノラマ画像全体を画像の左右幅の1/8(全周2πに対するズレ量π/4の比率)だけ右方向に平行移動させることにより、北向きが画像の中央に一致するパノラマ画像に補正できる。なお、このとき、パノラマ画像の左端の1/8の領域には、平行移動によってパノラマ画像の右端から削除した1/8の領域をそのままコピーすればよい。更に本実施形態では、それぞれのパノラマ画像を、北向きが画像の中央に一致するように補正した後、更に後側撮影位置から前側撮影位置を見た方向が画像の中央に一致するような方位角補正を行う。
次に、第1情報処理装置10において制御部11が仮想画像生成プログラムPGを実行することによって実現される機能について説明する。図8は、第1情報処理装置10の制御部11によって実現される機能を示すブロック図である。第1情報処理装置10の制御部11は、記憶部12に記憶してある仮想画像生成プログラムPGを実行した場合、特徴点対応付け部51、仮想スクリーン設定部52、仮想スクリーン補正部53、仮想画像生成部55の各機能を実現する。なお、本実施形態では、これらの各機能を制御部11が仮想画像生成プログラムPGを実行することにより実現するが、これらの一部を専用のハードウェア回路で実現してもよい。
特徴点対応付け部51は、撮影対象の空間内の2箇所(前側撮影位置及び後側撮影位置)で撮影した2つのパノラマ画像において、同じ被写体が撮影された方位角方向の位置を対応付ける。ここで、パノラマ画像DB12aに記憶されている2つのパノラマ画像は共に、画像の上下方向が鉛直方向に一致し、左右端がカメラ30の後側(図6中のt軸の負方向)に一致し、左右方向の中央がカメラ30の前側(図6中のt軸の正方向)に一致するパノラマ画像である。また一般的に、カメラ30は、撮影高さが画像の上下方向の中央となるようなパノラマ画像を生成する。なお、このようなパノラマ画像は、それぞれの撮影位置でカメラ30を所定状態に配置して撮影することによって取得してもよく、撮影後に所定の補正処理を行うことによって取得してもよい。
よって、このような2つのパノラマ画像間では、画像の上下方向の中央部には同じ被写体が写っており、同じ被写体は、2箇所の撮影位置間の視差によってパノラマ画像中の異なる位置に写っている。また、画像の左右方向の中央部及び左右端部には同じ被写体の同じ部分が写っている。更に、一方のパノラマ画像において左側に写っている被写体は他方のパノラマ画像でも左側に写っており、一方のパノラマ画像において右側に写っている被写体は他方のパノラマ画像でも右側に写っている。
従って、特徴点対応付け部51は、2つのパノラマ画像において、上下方向の中央部に写っている被写体の特徴点(画素)について対応付けを行う。即ち、特徴点対応付け部(対応付け部)51は、2つのパノラマ画像において撮影時の撮影高さに対応する位置に方位角方向に並ぶ画素を特徴点として対応付ける。例えば、特徴点対応付け部51は、図7A,Bに示すように、2つのパノラマ画像において、上下方向の中央にL軸で示す左右方向に配置する画素のうちで同じ被写体の同じ部分の画素を特徴点L1〜L4としてそれぞれ対応付ける。図7A,Bに示す2つのパノラマ画像では、特徴点L1,L2は左側のカーテンの左端及び右端であり、特徴点L3,L4は右側のカーテンの左端及び右端である。特徴点対応付け部51は、2つのパノラマ画像中の特徴点を、図7A,Bに示したL軸におけるL座標値で示し、対応付けた特徴点のL座標値をそれぞれ特徴点対応テーブル12bに記憶する。なお、特徴点を示すL座標値は、L軸においてパノラマ画像の左端を0とし、左端からの画素数を示す。
図9は、特徴点対応テーブル12bの構成例を示す模式図である。特徴点対応テーブル12bには、特徴点対応付け部51が対応付けた特徴点のペア毎に、ペア情報と、2つのパノラマ画像における特徴点のL座標値とが対応付けて記憶される。ペア情報は各ペアに固有に付与された識別情報である。2つのパノラマ画像は、撮影対象の空間内の2箇所(前側撮影位置及び後側撮影位置)で撮影したパノラマ画像であり、以下ではそれぞれを前側画像及び後側画像ということがある。特徴点対応付け部51は、2つのパノラマ画像間で対応付けるべき特徴点を、例えばユーザ入力によって受け付けてもよい。この場合、例えば特徴点対応付け部51は、第1情報処理装置10の表示部15に2つのパノラマ画像を表示し、特徴点とすべき箇所(画素)を入力部14にて受け付ける。ユーザは、表示された2つのパノラマ画像において同じ被写体の同じ部分を特徴点として入力部14を介して指定する。特徴点対応付け部51は、入力部14を介して受け付けた2つのパノラマ画像中の特徴点のL座標値をそれぞれ特定し、特定した2つのL座標値を特徴点対応テーブル12bに記憶する。
また、特徴点対応付け部51は、2つのパノラマ画像間で対応付けるべき特徴点を、2つのパノラマ画像におけるL軸上の各画素の画素値の変動に対して、Dynamic Time Warping等の手法を用いて自動的に抽出してもよい。この場合、特徴点対応付け部51は、2つのパノラマ画像間で類似する画素を自動的に抽出し、抽出した画素を特徴点としてそれぞれ抽出した画素のL座標値を特徴点対応テーブル12bに記憶する。
図9に示す特徴点対応テーブル12bでは、パノラマ画像の左側で21個のペアが対応付けられており、右側で17個のペアが対応付けられているが、対応付けられる特徴点のペア数はこれに限らない。また、図9に示す特徴点対応テーブル12bでは、パノラマ画像の左側のペアはL座標値が昇順となるように記憶されており、右側のペアはL座標値が降順となるように記憶されているが、記憶される順序はこれに限らない。
次に、特徴点対応付け部51は、図9に示すような特徴点対応テーブル12bに基づいて、それぞれ対応付けた特徴点における方位角の対応付けを行う。具体的には、特徴点対応付け部51は、特徴点対応テーブル12bに記憶したそれぞれの特徴点のL座標値を、図6に示したST座標系の方位角に変換する。カメラ30で撮影したパノラマ画像の解像度(画素数)は予め分かっているので、特徴点対応付け部51は、それぞれの特徴点のL座標値を方位角に変換できる。また、パノラマ画像における各画素のST座標系の方位角は、撮影位置を通り図6に示したs軸に平行な方向を0ラジアンとして、水平面内で撮影位置を中心に、パノラマ画像の右側では反時計回りの角度βで、パノラマ画像の左側では時計回りの角度βでそれぞれ示す。よって、t軸の負方向(カメラ30の後方向)は方位角βが−π/2ラジアンの位置に存在し、t軸の正方向(カメラ30の前方向)は方位角βがπ/2ラジアンの位置に存在する。また前側画像における各画素の方位角はβF で示し、後側画像における各画素の方位角はβR で示す。特徴点対応付け部51は、2つのパノラマ画像の特徴点のL座標値を方位角βF 、βR に変換した後、それぞれ変換した方位角βF 、βR の正接tanβF 、tanβR を更に算出し、それぞれ算出した方位角の正接を対応付けて方位角対応テーブル12cに記憶する。
図10は、特徴点対応付け部51による方位角の対応付けを示す模式図である。図10Aは、方位角対応テーブル12cの構成例を示す模式図であり、図10Bは、2つのパノラマ画像において対応付けられた特徴点の方位角の正接の関係を示す図である。方位角対応テーブル12cには、特徴点対応付け部51が算出した各特徴点の方位角の正接が、対応付けられたペア毎に記憶されている。なお、図10Aには、図9に示す特徴点対応テーブル12bに記憶されたパノラマ画像左側の特徴点のペアについて、それぞれの特徴点の方位角の正接が記憶してある方位角対応テーブル12cを示す。特徴点対応付け部51は、特徴点対応テーブル12bに記憶されたパノラマ画像右側の特徴点のペアについても同様の構成を有する方位角対応テーブル12cを生成する。
図10Bに示す図では、横軸が後側画像における各画素の方位角の正接(tanβR )を示し、縦軸がt軸(図6中のt軸であり、カメラ30の前方向)を示す。図10Bに示す図において、t=1の破線は、前側画像における各画素の方位角の正接(tanβF )を示しており、対応付けられた前側画像における特徴点の方位角の正接と後側画像における特徴点の方位角の正接とが実線で結ばれている。
本実施形態では、特徴点対応付け部51は、図9に示す特徴点対応テーブル12bを生成し、特徴点対応テーブル12bに基づいて、図10Aに示す方位角対応テーブル12cを生成するが、この構成に限らない。例えば、特徴点対応付け部51は、図9に示すように2つのパノラマ画像間で対応付けられた特徴点のL座標値を特徴点対応テーブル12bに記憶する代わりに、特徴点の方位角を特徴点対応テーブル12bに記憶してもよい。また、特徴点対応付け部51は、特徴点対応テーブル12bを生成せずに、方位角対応テーブル12cのみを生成する構成でもよい。
仮想スクリーン設定部52は、第2情報処理装置20から取得したユーザの頭部の位置及び向きに基づいて、仮想視点及び仮想スクリーンを設定する。なお、ユーザの頭部の位置及び向きは、ユーザの頭部に装着された第2情報処理装置20のセンサ部25によって所定のタイミングで検出され、検出結果が逐次第1情報処理装置10へ送信される。仮想視点の位置は、ユーザの頭部の中心であり、例えば第1情報処理装置10の動作開始時は撮影対象の部屋(空間)において前側撮影位置又は後側撮影位置、或いは前側撮影位置と後側撮影位置との間の中央位置等の所定位置としてもよい。よって、仮想スクリーン設定部52は、動作開始時は撮影対象の部屋における所定位置を仮想視点に設定し、以降はユーザの移動に伴って仮想視点を移動させる(変更する)。なお、本実施形態では、仮想視点の位置は、図6に示したt軸上の位置とし、ST座標系の座標(0,t)によって示される。仮想スクリーンは、仮想視点から、ユーザの頭部の向きが示す視線方向に所定距離隔てた位置に設けられる仮想の画像表示領域である。仮想スクリーンは、視線方向に直交し、所定の画角を有する矩形平面であり、複数の仮想画素が二次元的に配置されている。一例として、仮想視点から1mの距離を隔てた位置に画角が90°の仮想スクリーンを設定してもよい。
仮想スクリーン設定部52は、まず、仮想視点を原点とし、視線方向を天頂角θ及び方位角φが共に0ラジアンの方向とした状態(即ち、原点から一旦Z軸の正側を向き、その後真上(Y軸の正側)を見上げた状態)での基本スクリーンを設定する。なお、基本スクリーンは、仮想視点からの距離をdとし、画角をfovとした場合、以下の(5)に示す直交座標系の座標によって示される四隅の仮想画素によって設定される。
次に、仮想スクリーン設定部52は、視線方向に基づいて基本スクリーンに対して回転処理を行う。ここで、仮想視点Vの座標を(Vx ,Vy ,Vz )で表し、視線方向を示すベクトルを(Vθ,Vφ)で表す。回転の方向は回転軸の正側から見て反時計回りを正方向とすると、視線方向を示すベクトルが(Vθ,Vφ)である場合、X軸を中心にVθ回転させ、その後、Y軸を中心にVφ回転させる処理を行う。この2つの回転処理はそれぞれ3×3の行列で表現でき、全体を合成変換で表すことができる。従って、仮想スクリーン設定部52は、上記(5)に示す基本スクリーンの四隅の仮想画素の座標(x,y,z)のそれぞれに対して、以下の(6)式に基づく変換処理を行うことにより、基本スクリーンに回転処理を行うことができる。これにより、仮想スクリーンの四隅の仮想画素の座標が算出され、算出された四隅の仮想画素の座標によって、逐次変更されるユーザの頭位の位置及び向き(仮想視点V及び視線方向)に基づく仮想スクリーンを設定できる。
ここで、仮想スクリーン設定部52は、基本スクリーンを縦横に分割した例えば30×30区画のセルに分割し、セル毎に上述の処理を行う。例えば、上述のように設定した基本スクリーンの四隅の仮想画素を含み、基本スクリーンを分割した各セルの頂点となる仮想画素(これらをまとめて格子点という)に対して、上記の(6)式に基づく変換処理を行う。これにより、仮想スクリーンにおける各格子点の座標が設定され、各格子点の座標によって仮想スクリーンが設定される。なお、基本スクリーンにおける各格子点の座標は、上記の(5)に示す基本スクリーンの四隅の仮想画素の座標に基づき、X軸、Y軸及びZ軸方向にセルの数で分割した各値とすることができる。
仮想スクリーン設定部52は、仮想スクリーンにおける各格子点の直交座標系の座標値(x,y,z)を算出した後、極座標系の座標値に変換し、仮想視点Vから仮想スクリーンを見た際の各格子点の天頂角θV 及び方位角φV を算出する。なお、仮想スクリーン設定部52は、上記の(2)式によって直交座標系の座標値を極座標系の座標値に変換する。仮想スクリーン設定部52は、設定した仮想スクリーンに関する情報を仮想スクリーンテーブル12dに記憶する。
図11は、仮想スクリーンテーブル12dの構成例を示す模式図である。仮想スクリーンテーブル12dには、仮想スクリーンのセル毎に、セルIDと、各セルの四隅の仮想画素である格子点の格子点ID及び座標と、各格子点である仮想画素の仮想画素IDとが対応付けて記憶される。セルIDは各セルに固有に付与された識別情報であり、格子点IDは各格子点に固有に付与された識別情報であり、仮想画素IDは各仮想画素に固有に付与された識別情報である。仮想スクリーン設定部52は、基本スクリーンからセルを分割する都度、分割したセルに対するセルID、セルの格子点に対する格子点ID、格子点である仮想画素に対する仮想画素IDを割り当てて仮想スクリーンテーブル12dに記憶する。また、仮想スクリーン設定部52は、基本スクリーンを分割した各セルの格子点の座標値に対して上記の(6)式に基づく変換処理及び極座標系への変換処理を行う都度、算出した極座標系の座標値θV ,φV を格子点IDに対応付けて仮想スクリーンテーブル12dに記憶する。仮想スクリーン設定部52は、基本スクリーンの全てのセルについて上述した処理を行うことにより、仮想スクリーンの全てのセルの情報が仮想スクリーンテーブル12dに記憶され、仮想スクリーンが設定される。
仮想スクリーン補正部53は、仮想スクリーン設定部52によって設定された仮想スクリーンに対して、特徴点対応付け部51によって生成された方位角対応テーブル12cに基づく補正処理を行い、前側画像用仮想スクリーン及び後側画像用仮想スクリーンを生成する。具体的には、仮想スクリーン補正部53は、仮想スクリーンテーブル12dに記憶された各格子点の座標の方位角φV を、方位角対応テーブル12cに基づいてそれぞれ補正し、前側画像用仮想スクリーンテーブル12eと後側画像用仮想スクリーンテーブル12fとを生成する。前側画像用仮想スクリーンテーブル12e及び後側画像用仮想スクリーンテーブル12fは、仮想スクリーンテーブル12d中の各格子点の座標の方位角φV の値が異なるほかは仮想スクリーンテーブル12dと同様の構成を有する。
仮想スクリーン補正部53はまず、仮想スクリーンテーブル12dに記憶された各格子点の方位角φV を、以下の(7),(8)式を用いて、図6に示したST座標系における方位角βV に変換する。なお、仮想スクリーン補正部53は、パノラマ画像の右半分に対応する格子点については(7)式を用い、パノラマ画像の左半分に対応する格子点については(8)式を用いる。また、仮想スクリーン補正部53は、パノラマ画像の左右方向の中央に対応する格子点についてはβV =π/2とし、パノラマ画像の左右方向の左端又は右端に対応する格子点についてはβV =−π/2とする。
次に仮想スクリーン補正部53は、ST座標系の空間において、上述したように変換した仮想スクリーンの各格子点の方位角βV に対応する前側画像における画素の方位角βF と後側画像における画素の方位角βR とを求める。ここで、仮想スクリーンにおける方位角βVとパノラマ画像(前側画像及び後側画像)における方位角βF ,βRとの関係について説明する。図12は、仮想スクリーンにおける方位角βVとパノラマ画像における方位角βF ,βRとの関係を示す模式図である。ここでは、仮想視点VをST座標系の空間において後側撮影位置(0,0)と前側撮影位置(0,1)との間の任意の位置(0,tV )とする。図12に示すように、ST空間において被写体Pの位置は前側撮影位置(0,1)から見た方位角βF と後側撮影位置(0,0)から見た方位角βRとにより一意に定まり、仮想視点Vから被写体Pを見た方位角βVは、仮想視点Vのt座標値tV と被写体Pの位置とで一意に定まる。即ち、仮想視点Vから被写体Pを見た方位角βVは、前側撮影位置から被写体Pを見た方位角βF と後側撮影位置から被写体Pを見た方位角βRと仮想視点Vのt座標値tV とにより一意に定まる。従って、3つの方位角βV,βF ,βRは以下の(9)式で表される関係を有する。なお、図12では被写体Pがカメラ30の右側(t軸よりも右側)に位置する状態を示すが、被写体がカメラ30の左側(t軸よりも左側)に位置する場合でも同様の関係を有する。
tanβV =tV tanβF +(1−tV )tanβR …(9)
従って、仮想スクリーン補正部53は、上記の(9)式及び方位角対応テーブル12cに基づいて、仮想スクリーンの各格子点の方位角βV に対応する前側画像における画素の方位角βF と後側画像における画素の方位角βR とを求める。図13は、仮想スクリーン補正部53による処理を説明するための模式図である。図13は、図10Bに示した前側画像及び後側画像における特徴点の対応付けを示しており、例えば前側画像における特徴点(tanβFi)と後側画像における特徴点(tanβRi)とがペアCiとして対応付けられており、前側画像における特徴点(tanβFi+1)と後側画像における特徴点(tanβRi+1)とがペアCi+1として対応付けられている。
仮想スクリーン補正部53は、仮想スクリーンテーブル12dから1つの格子点の方位角βVを読み出し、仮想スクリーン設定部52が設定した仮想視点Vの位置(ここでは、t座標値tV )を取得する。仮想スクリーン補正部53は、仮想スクリーンにおける処理対象の格子点Gの方位角の正接tanβV に対応する前側画像の画素の方位角の正接tanβFV及び後側画像の画素の方位角の正接tanβRVを算出する。まず、仮想スクリーン補正部53は、方位角対応テーブル12cに記憶してある特徴点の各ペアと、仮想視点Vのt座標値と、上記の(9)式とに基づいて、特徴点の各ペアにおいてt座標値tV に対応する方位角の正接を算出する。算出した方位角の正接が、格子点Gの方位角の正接tanβV に一致した場合、仮想スクリーン補正部53は、算出に用いたペア(前側画像の特徴点の方位角の正接tanβF及び後側画像の特徴点の方位角の正接tanβR)を、格子点Gの方位角の正接tanβV に対応する前側画像の画素の方位角の正接tanβFV及び後側画像の画素の方位角の正接tanβRVに特定する。
図13Aには、ペアCi において算出したt座標値tV に対応する方位角の正接が、格子点Gの方位角の正接tanβV に一致した場合の例を示す。この場合、格子点Gの方位角の正接tanβV に対応する前側画像の画素の方位角の正接tanβFV及び後側画像の画素の方位角の正接tanβRVは、ペアCi におけるtanβFi及びtanβRiに特定される。よって、仮想スクリーン補正部53は、特定した前側画像における方位角の正接tanβFi(tanβFV)から方位角βFi(βFV)を算出し、前側画像用仮想スクリーンテーブル12eに記憶する。また、仮想スクリーン補正部53は、特定した後側画像における方位角の正接tanβRi(tanβRV)から方位角βRi(βRV)を算出し、後側画像用仮想スクリーンテーブル12fに記憶する。このとき、仮想スクリーン補正部53は、格子点Gの方位角βFi又は方位角βRi以外は仮想スクリーンテーブル12dと同じ情報をそれぞれ記憶する。
図14は、前側画像用仮想スクリーンテーブル12eの構成例を示す模式図である。前側画像用仮想スクリーンテーブル12eは仮想スクリーンテーブル12dと同様の構成を有し、セル毎に、セルIDと、各セルの四隅の仮想画素である格子点の格子点ID及び座標と、各格子点である仮想画素の仮想画素IDとが対応付けて記憶される。後側画像用仮想スクリーンテーブル12fは、前側画像用仮想スクリーンテーブル12eと同様の構成を有する。なお、前側画像用仮想スクリーンテーブル12e及び後側画像用仮想スクリーンテーブル12fは、図14に示す構成のほかに、例えば、格子点毎に格子点ID及び格子点座標と、仮想画素IDとが対応付けて記憶される構成でもよい。
図13Bは、特徴点の各ペアにおいて算出したt座標値tV に対応する方位角の正接が、格子点Gの方位角の正接tanβV に一致しない場合の例を示す。この場合、仮想スクリーン補正部53は、各ペアにおいて算出した方位角の正接が、格子点Gの方位角の正接tanβV の前後の値となるペアを特定する。図13に示す例では、ペアCi において算出した方位角の正接(Gi)と、ペアCi+1 において算出した方位角の正接(Gi+1)とが、格子点Gの方位角の正接tanβV の前後の値となる。図13Bに示すような横軸をtanβR とし縦軸をt軸とした二次元空間において、格子点G(tanβV ,tV )は、直線t=0及びt=1と、2つのペアCi 及びCi+1 の対応を示す線分とに囲まれた台形領域内に存在する。また、直線t=tV において線分GiGi+1は格子点Gで内分され、仮想スクリーン補正部53は、ペアCi において算出した方位角の正接(Gi)と、ペアCi+1 において算出した方位角の正接(Gi+1)と、格子点Gの方位角の正接tanβV とに基づいて、内分比(ε:1−ε)を算出する。そして、仮想スクリーン補正部53は、ペアCi の前側画像におけるtanβFiとペアCi+1 の前側画像におけるtanβFi+1と内分比(ε:1−ε)とに基づいて、格子点Gの方位角の正接tanβV に対応する前側画像における方位角の正接tanβFVを算出する。具体的には、仮想スクリーン補正部53は、図13Bに示す二次元空間において、線分tanβFi tanβFi+1をε:1−εで内分する点tanβFVを算出する。同様に、仮想スクリーン補正部53は、ペアCi の後側画像におけるtanβRiとペアCi+1 の後側画像におけるtanβRi+1と内分比(ε:1−ε)とに基づいて、格子点Gの方位角の正接tanβV に対応する後側画像における方位角の正接tanβRVを算出する。
そして、仮想スクリーン補正部53は、算出した前側画像における方位角の正接tanβFVから方位角βFVを算出し、前側画像用仮想スクリーンテーブル12eに記憶する。また、仮想スクリーン補正部53は、特定した後側画像における方位角の正接tanβRVから方位角βRVを算出し、後側画像用仮想スクリーンテーブル12fに記憶する。このときも仮想スクリーン補正部53は、格子点Gの方位角βFV又は方位角βRV以外は仮想スクリーンテーブル12dと同じ情報をそれぞれ記憶する。
仮想スクリーン補正部53は、仮想スクリーンテーブル12dに記憶してある全ての格子点の方位角βVに対して上述した処理を行うことにより、仮想スクリーン設定部52が設定した仮想スクリーンを補正して、前側画像用仮想スクリーン及び後側画像用仮想スクリーンを生成する。具体的には、仮想スクリーン補正部53は、前側画像用仮想スクリーンテーブル12eと後側画像用仮想スクリーンテーブル12fとを生成する。
仮想画像生成部55は、パノラマ画像DB12aに記録されたパノラマ画像(前側パノラマ画像及び後側パノラマ画像)と、仮想スクリーン設定部52及び仮想スクリーン補正部53によって生成された前側画像用仮想スクリーン及び後側画像用仮想スクリーンとに基づいて、第2情報処理装置20を装着したユーザに提供する仮想画像を生成する。仮想画像生成部55は、仮想ビュー生成部56、合成割合特定部57、合成部58を有する。仮想ビュー生成部56は、前側画像用仮想スクリーンと前側パノラマ画像とに基づいて、前側画像の仮想ビュー(中間仮想画像)を生成する。また仮想ビュー生成部56は、後側画像用仮想スクリーンと後側パノラマ画像とに基づいて、後側画像の仮想ビュー(中間仮想画像)を生成する。具体的には、仮想ビュー生成部56は、仮想スクリーンにおける各仮想画素とパノラマ画像における各画素との対応付けを行い、仮想スクリーンの各仮想画素に、それぞれ対応付けられたパノラマ画像の画素の輝度(画素値)を割り当てることにより仮想ビューを生成する。各仮想画素に割り当てられる画素値は、撮影画像(パノラマ画像)が白黒画像である場合、例えば0から255までの256階調の数値が割り当てられる。また、撮影画像がカラー画像である場合、赤色、緑色、青色のそれぞれについて例えば0から255までの数値が割り当てられる。
仮想ビュー生成部56は、まず、前側画像用仮想スクリーンテーブル12eから1つの格子点の座標値を読み出し、ST座標系における方位角βF を以下の(10),(11)式を用いて極座標系の方位角φF に変換する。なお、仮想ビュー生成部56は、前側画像用仮想スクリーンの右半分に含まれる格子点については(10)式を用い、前側画像用仮想スクリーンの左半分に含まれる格子点については(11)式を用いる。仮想ビュー生成部56は、前側画像用仮想スクリーンテーブル12eから読み出した格子点の天頂角θと、変換した方位角φF とによる極座標系の座標(θ,φF)を上記の(4)式によって座標(u,v)に変換する。仮想ビュー生成部56は、前側パノラマ画像において、得られた座標(u,v)の画素を、前側画像用仮想スクリーンの格子点(θ,βF )に対応付け、画素対応テーブル12gに記憶する。
図15は、画素対応テーブル12gの構成例を示す模式図である。画素対応テーブル12gには、パノラマ画像の画像ID(パノラマ画像ID)と、前側画像用仮想スクリーンの各格子点の格子点IDと、各格子点に対応付けられた前側パノラマ画像の画素の座標(対応画素座標)とが対応付けて記憶される。パノラマ画像IDはパノラマ画像に固有に付与された識別情報であり、例えばパノラマ画像と共にパノラマ画像DB12aに記憶されている。格子点IDは前側画像用仮想スクリーンテーブル12eに記憶されている格子点IDと同じである。対応画素座標は、上述した処理により前側画像用仮想スクリーンの各格子点に対応付けられた前側パノラマ画像における画素の座標(u,v)である。
仮想ビュー生成部56は、前側画像用仮想スクリーンテーブル12eから1つの格子点の格子点ID及び座標を読み出す都度、読み出した格子点IDを画素対応テーブル12gに記憶する。そして、仮想ビュー生成部56は、読み出した格子点の座標値に対して上述した処理を行い、この格子点に対応付けた前側パノラマ画像の画素の座標(u,v)を格子点IDに対応付けて画素対応テーブル12gに記憶する。仮想ビュー生成部56は、前側画像用仮想スクリーンテーブル12eに記憶された全ての格子点に対して上述した処理を行うことにより、前側画像用仮想スクリーンの全ての格子点と、前側パノラマ画像の画素との対応付けを行う。仮想ビュー生成部56は、後側画像用仮想スクリーンテーブル12fについても同様の処理を行い、後側画像用仮想スクリーンの全ての格子点と、後側パノラマ画像の画素との対応付けを行う。なお、後側パノラマ画像についても、パノラマ画像ID、後側画像用仮想スクリーンの各格子点の格子点ID、各格子点に対応付けられた後側パノラマ画像の画素の座標値が対応付けて画素対応テーブル12gに記憶される。
前側画像用仮想スクリーンの全ての格子点に対して前側パノラマ画像の画素の対応付けを行った後、仮想ビュー生成部56は、例えばコンピュータグラフィックスによるレンダリング機能(テクスチャマッピング)を利用し、前側画像用仮想スクリーンの各仮想画素に輝度(画素値)を割り当てて前側画像の仮想ビューを生成する。また、後側画像用仮想スクリーンの全ての格子点に対して後側パノラマ画像の画素の対応付けを行った後、仮想ビュー生成部56は、後側画像用仮想スクリーンの各仮想画素に輝度(画素値)を割り当てて後側画像の仮想ビューを生成する。具体的には、仮想ビュー生成部56は、前側画像用仮想スクリーンテーブル12e及び画素対応テーブル12gに基づいて、前側画像用仮想スクリーンの各仮想画素に対して、前側パノラマ画像の各画素の画素値(輝度)を割り当てる。また、仮想ビュー生成部56は、後側画像用仮想スクリーンテーブル12f及び画素対応テーブル12gに基づいて、後側画像用仮想スクリーンの各仮想画素に対して、後側パノラマ画像の各画素の画素値(輝度)を割り当てる。
図16は、仮想ビューDB12hの構成例を示す模式図であり、図17及び図18は、レンダリング処理を説明するための模式図である。仮想ビューDB12hには、パノラマ画像のパノラマ画像IDと、仮想スクリーンの各仮想画素の仮想画素IDと、各仮想画素に割り当てられた輝度(画素値)とが対応付けて記憶される。仮想ビュー生成部56は、例えば前側画像用仮想スクリーンテーブル12eから1つのセルにおける4つの格子点IDと、各格子点IDに対応する4つの仮想画素IDとを読み出す。次に仮想ビュー生成部56は、読み出した4つの格子点IDのそれぞれに対応付けられた前側パノラマ画像の画素の座標(対応画素座標)を画素対応テーブル12gから読み出す。そして仮想ビュー生成部56は、読み出した前側パノラマ画像の画素の座標(u,v)に対応する画素値(輝度)を、パノラマ画像DB12aに記憶してある前側パノラマ画像から取得する。仮想ビュー生成部56は、前側画像用仮想スクリーンテーブル12eから読み出した4つの仮想画素IDと、前側パノラマ画像から取得した輝度とをそれぞれ対応付けて仮想ビューDB12hに記憶する。図17に示す例では、仮想スクリーンにおける1つのセルの格子点である仮想画素C1〜C4の輝度に、パノラマ画像の画素P1〜P4の輝度がそれぞれ割り当てられる。
次に、仮想ビュー生成部56は、前側画像用仮想スクリーンテーブル12eから読み出した格子点IDの格子点によるセル内の他の仮想画素について、前側パノラマ画像の各画素の輝度を割り当てる。ここでは、仮想ビュー生成部56は、まず、セル内の各仮想画素に対応する前側パノラマ画像の各画素の座標値を、画素対応テーブル12gから読み出した4つの対応画素座標(u,v)に基づいて算出する。仮想ビュー生成部56は、4つの対応画素座標のu値及びv値に対して、例えばバイリニア法等の補間演算を行うことによって、セル内の各仮想画素に対応する前側パノラマ画像の各画素の座標(u,v)を算出する。そして、仮想ビュー生成部56は、算出した各画素の座標(u,v)に対応する画素値(輝度)を前側パノラマ画像から取得し、取得した各画素値(輝度)と、セル内の各仮想画素に付与された仮想画素IDとをそれぞれ対応付けて仮想ビューDB12hに記憶する。これにより、図17に示す仮想スクリーンにおけるセル内の各仮想画素の輝度に、前側パノラマ画像の画素P1〜P4で囲まれた領域内の各画素の輝度がそれぞれ割り当てられる。
仮想ビュー生成部56は、前側画像用仮想スクリーンテーブル12eに記憶された全てのセルに対して上述した処理を行うことにより、前側画像用仮想スクリーンの全ての仮想画素に対して、前側パノラマ画像の各画素の輝度を割り当てることができる。これにより、1つの前側パノラマ画像から、第2情報処理装置20を装着したユーザの頭部の位置及び向きに応じた仮想ビューが生成される。なお、図17ではセルに対応するパノラマ画像(前側パノラマ画像)の領域を長方形で示しているが、セルに対応するパノラマ画像の領域は、必ずしも長方形に限定されず、4頂点で囲まれる閉領域となる。
ここで、図18Aに示す画素P1〜P4で囲まれた領域のように、仮想スクリーンのセルに対応するパノラマ画像の領域が、u=1.0(u=1.0はu=0.0と一致)をまたぐ場合、図18Bに示すように各画素のu値(0.95,0.05)に基づいて、領域内の各画素のu値を正確に算出(補間)できないという問題が生じる。よって、仮想ビュー生成部56は、仮想スクリーンの各格子点(各仮想画素)に、パノラマ画像の各画素を割り当てた際に、隣り合う2つの画素のu値が規定値(例えば0.5)以上離れているか否かを判断し、離れていると判断した場合、この画素で囲まれる領域は、u=1.0をまたぐ領域である可能性が高いと判断できる。また、u=1.0をまたぐ領域である可能性が高いと判断した場合、仮想ビュー生成部56は、4つの画素のu値のうちで小さい方のu値に1.0を加算する。これにより、図18Bに示す例では、画素P2,P3のu値が1.05となるので、画素P1〜P4のu値に基づく補間演算により、この領域内の各画素の座標(u値)を算出できる。
仮想ビュー生成部56は、後側画像用仮想スクリーンテーブル12fについても同様の処理を行い、後側画像用仮想スクリーンの全ての仮想画素に対して、後側パノラマ画像の各画素の輝度を割り当てる。よって、後側パノラマ画像についても仮想ビューが生成され、パノラマ画像ID、後側画像用仮想スクリーンの各仮想画素の仮想画素ID、各仮想画素に割り当てられた輝度が対応付けて仮想ビューDB12hに記憶される。
本実施形態では、仮想ビュー生成部56は、仮想スクリーンの各格子点についてのみ、対応するパノラマ画像の画素の座標を上述の演算によって算出し、仮想スクリーンの他の仮想画素に対応するパノラマ画像の画素の座標ついては補間演算によって算出する。これにより、仮想ビュー生成部56における演算負荷が軽減され、パノラマ画像描画を高速に行うことが可能となる。なお、仮想ビュー生成部56は、例えばOpenGLやDirectX等のグラフィックライブラリー(グラフィックAPI)を用いてテクスチャマッピング処理を行うことにより、仮想スクリーンの各仮想画素にパノラマ画像の各画素の画素値を割り当てるレンダリング処理を行ってもよい。この場合、例えば画素対応テーブル12gの記憶情報のように、仮想スクリーンの各格子点と、パノラマ画像の各画素との対応を指定することにより、グラフィックライブラリーが仮想スクリーンの各仮想画素に対応するパノラマ画像の各画素の座標値を算出する補間演算、各仮想画素に対するパノラマ画像の各画素の画素値の割当(コピー)等を高速に行うことができる。
本実施形態の仮想画像生成部55は、室内における2箇所(前側撮影位置及び後側撮影位置)で撮影して得られたパノラマ画像のそれぞれから、仮想ビュー生成部(中間画像生成部)56による上述した処理によって2つの仮想ビューを生成する。仮想画像生成部55は、生成した2つの仮想ビューを合成し、ユーザが指定した仮想視点及び視線方向(ユーザの頭部の位置及び向き)に応じた仮想画像を生成する。このとき、仮想画像生成部55は、撮影対象の室内において、2箇所の撮影位置と仮想視点の位置との関係に応じて、各仮想ビューの合成割合(合成率)を異ならせる。合成割合特定部(割合特定部)57は、各仮想ビューの合成割合を特定し、合成部58は、各仮想ビューを、それぞれ特定された合成割合で合成して仮想画像を生成する。
合成割合特定部57は、仮想視点の位置とそれぞれの撮影位置との位置関係に応じて、各仮想ビューに対する合成割合(合成強度)を特定する。合成割合特定部57は、例えば、仮想視点からそれぞれの撮影位置までの距離が短いほど、それぞれの撮影位置で撮影したパノラマ画像から生成された仮想ビューに対する合成割合を高く設定する。例えば、合成割合特定部57は、仮想視点と撮影位置との距離をdとした場合の合成強度Sを、S=1/dで表される関数に基づいて特定する。なお、合成強度Sが距離dの増加に伴い単調減少する関数であれば、どのような関数を用いてもよい。
また例えば、仮想視点をST座標系の空間において後側撮影位置(0,0)と前側撮影位置(0,1)との間の任意の位置(0,t)とする。合成割合特定部57は、t値の増加に伴って前側画像の仮想ビューに対する合成割合αF が単調増加し、後側画像の仮想ビューに対する合成割合αR が単調減少し、αF +αR =1を満たすように、それぞれの仮想ビューに対する合成割合を以下の(12)式を用いて特定してもよい。
また、合成割合特定部57は、仮想視点がいずれかの撮影位置から所定距離未満の位置である場合に、この撮影位置で撮影したパノラマ画像から仮想ビュー生成部56が生成した仮想ビューに対する合成割合が1(100%)となるように各仮想ビューの合成割合を設定してもよい。この場合、合成部58は、仮想ビューDB12hから読み出した、仮想視点から最も近い撮影位置で撮影されたパノラマ画像から生成された仮想ビューをそのまま仮想画像として出力する。
合成部58は、それぞれの撮影位置で撮影したパノラマ画像から仮想ビュー生成部56が生成した仮想ビューのそれぞれを、合成割合特定部57が特定した合成割合で合成し、仮想画像を生成する。合成部58は、例えば仮想ビューのそれぞれについて、各画素値に対して、仮想ビュー毎に特定された合成割合を乗算し、乗算後の各仮想ビューの各画素値を加算することにより、仮想画像を生成する。このほかに、合成部58は、各仮想ビューをアルファブレンディングによって重ねることにより仮想画像を生成してもよい。例えば、2つの第1〜第2仮想ビューをそれぞれ合成割合50%,50%で合成する場合、合成部58は、初期化されたスクリーンに対して第1仮想ビューを合成割合100%で合成した後、第2仮想ビューを合成割合50%で合成する。この結果、スクリーン上には第1仮想ビュー及び第2仮想ビューがそれぞれ合成割合50%で合成された仮想画像が生成される。
上述した各機能により、第1情報処理装置10は、カメラ30で撮影されたパノラマ画像と、第2情報処理装置20によって検出されたユーザの頭部の位置及び向きとに基づいて、ユーザに提供する仮想画像を生成できる。第1情報処理装置10は、上述したように生成した仮想画像を第2情報処理装置20へ送信し、第2情報処理装置20が表示部24に表示させることにより、第2情報処理装置20を装着したユーザに、ユーザの頭部の位置及び向きに応じた仮想画像を提供できる。これにより、第1情報処理装置10は、カメラ30で撮影した部屋を、部屋の中の任意の視点から任意の方向を見た状態の仮想画像をユーザに提供できる。
次に、カメラ30を用いて室内を撮影した際にカメラ30及び第1情報処理装置10が行う処理をフローチャートに基づいて説明する。図19は、撮影時にカメラ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は、室内の2箇所の撮影位置でユーザ又はロボット等により所定の向きに配置された状態で、上述したステップS1〜S4の処理を行い、第1情報処理装置10は、カメラ30から送信されてきた2つのパノラマ画像をパノラマ画像DB12aに記録する。
次に、カメラ30で撮影した2つのパノラマ画像(前側パノラマ画像及び後側パノラマ画像)の特徴点を対応付ける際に第1情報処理装置10が行う処理をフローチャートに基づいて説明する。図20は、第1情報処理装置10による特徴点の対応付け処理の手順を示すフローチャートである。なお、2つのパノラマ画像における特徴点を対応付ける処理は、第2情報処理装置20を用いてパノラマ画像を再生(表示)する際に行ってもよいし、パノラマ画像を取得した時点で行ってもよい。
第1情報処理装置10の制御部11は、同一の部屋で撮影されたパノラマ画像(ここでは2つのパノラマ画像)をパノラマ画像DB12aから読み出す(S11)。ここで、2つのパノラマ画像は、それぞれの撮影位置で、カメラ30の上下方向を鉛直方向に一致させ、カメラ30の前側を後側撮影位置から前側撮影位置への方向に一致させた状態で撮影されている。よって、2つのパノラマ画像では、画像の上下方向が鉛直方向に一致し、画像の左右端がカメラ30の後側に一致し、画像の左右方向の中央がカメラ30の前側に一致している。
制御部11は、2つのパノラマ画像において、上下方向の中央に並ぶ画素に対して対応付けるべき特徴点を取得する(S12)。制御部11は、2つのパノラマ画像のそれぞれにおける特徴点を入力部14にて取得してもよいし、2つのパノラマ画像において上下方向の中央に並ぶ画素の画素値の変動に対して、Dynamic Time Warping等の手法を用いて自動的に取得してもよい。制御部11は、2つのパノラマ画像に対してそれぞれ取得した特徴点を対応付けて特徴点対応テーブル12bに記憶する(S13)。ここでの特徴点は、図7A,Bに示したL軸におけるL座標値で示されており、制御部11は、特徴点対応テーブル12bに記憶された2つのパノラマ画像における特徴点のL座標値をそれぞれST座標系の方位角に変換する。また制御部11は、それぞれ変換した方位角の正接を算出し、それぞれ算出した方位角の正接(方位角情報)を対応付けて方位角対応テーブル12cに記憶する(S14)。制御部11は、特徴点対応テーブル12bに記憶された全ての特徴点をそれぞれ方位角情報に変換することにより、図10Aに示すような方位角対応テーブル12cを生成し、処理を終了する。
次に、第2情報処理装置20を用いてパノラマ画像を再生(表示)する際に第1情報処理装置10及び第2情報処理装置20が行う処理をフローチャートに基づいて説明する。図21及び図22は、表示時に第1情報処理装置10及び第2情報処理装置20が行う処理の手順を示すフローチャートである。以下の処理は、第1情報処理装置10の記憶部12に記憶してある仮想画像生成プログラムPGを含む制御プログラムに従って制御部11によって実行され、第2情報処理装置20の記憶部22に記憶してある制御プログラムに従って制御部21によって実行される。ここでは、図10Aに示すような方位角対応テーブル12cは予め生成されているものとする。
第2情報処理装置20の制御部21は、センサ部25によってユーザの頭部の位置及び向きを検出し、位置及び向きを示す情報を取得する(S21)。例えば制御部21は、センサ部25のGPSによって第2情報処理装置20の現在位置を検出し、センサ部25の磁気センサによって第2情報処理装置20の向きを検出する。制御部21は、取得した位置及び向きを示す情報を通信部23にて第1情報処理装置10へ送信する(S22)。制御部21は、位置及び向きの検出及び送信を、所定時間間隔で行ってもよいし、例えば入力部(図示せず)を介したユーザからの指示に従って行ってもよい。
一方、第1情報処理装置10の制御部11は、再生すべきパノラマ画像をパノラマ画像DB12aから選択して読み出す(S31)。再生すべきパノラマ画像は、入力部14又は第2情報処理装置20を介して指定される。なお、入力部14又は第2情報処理装置20を介して、再生すべきパノラマ画像を撮影した部屋が指定され、制御部11は、指定された部屋で撮影されたパノラマ画像(ここでは2つのパノラマ画像)をパノラマ画像DB12aから読み出してもよい。
制御部(受付部)11は、ステップS22で第2情報処理装置20が送信した位置及び向きを示す情報を通信部13にて受信する(S33)。なお、制御部11は、受信した位置及び向きを示す情報を記憶部12に逐次記憶しており、前回受信した情報と比較して、位置又は向きが変化したか否かを判断する(S34)。位置及び向きのいずれも変化していないと判断した場合(S34:NO)、制御部11は、ステップS33の処理に戻り、第2情報処理装置20から位置及び向きを示す情報を受信する都度、位置又は向きが変化したか否かを判断する。
位置又は向きが変化したと判断した場合(S34:YES)、制御部11は、受信した位置及び向きに基づいて仮想視点を設定し、設定した仮想視点に応じた仮想スクリーンを設定(特定)する(S35)。例えば、制御部11は、ユーザの頭部の位置に基づいて前回設定した仮想視点を移動させ、移動後の仮想視点から、ユーザの頭部の向きが示す視線方向に所定距離隔てて、視線方向に直交し、所定の画角を有する矩形平面である仮想スクリーンを設定する。なお、制御部11は、上述したように、まず基本スクリーンを設定し、基本スクリーンに対して2回の回転処理を行うことにより仮想スクリーンを設定する。
制御部11は、設定した仮想スクリーンに対して補正処理を行う(S36)。図23は、第1情報処理装置10による仮想スクリーンの補正処理の手順を示すフローチャートである。制御部11は、設定された仮想スクリーンの1つの格子点の方位角φV を仮想スクリーンテーブル12dから読み出す(S51)。制御部11は、読み出した方位角φV を上記の(7)式又は(8)式を用いて、図6に示したST座標系における方位角βV に変換する(S52)。
制御部11は、ステップS35で設定した仮想視点のt座標値tV を取得する(S53)。制御部11は、取得したt座標値tV と、方位角対応テーブル12cに記憶してある方位角情報の各ペアと、上記の(9)式とに基づいて、各ペアにおいてt座標値tV に対応する方位角の正接tanβを算出する(S54)。制御部11は、各ペアにおいて算出したtanβのいずれかが、ステップS52で変換した方位角βV の正接に一致するか否かを判断する(S55)。一致すると判断した場合(S55:YES)、制御部11は、算出に用いたペアにおける前側画像の特徴点の方位角の正接tanβF 及び後側画像の特徴点の方位角の正接tanβR からそれぞれ方位角βF 及びβR を算出する(S56)。制御部11は、算出した方位角βF を前側画像用仮想スクリーンテーブル12eに記憶し(S57)、算出した方位角βR を後側画像用仮想スクリーンテーブル12fに記憶する(S58)。なお、算出した方位角βF 及びβR 以外の情報は仮想スクリーンテーブル12dと同じ情報をそれぞれ記憶する。
制御部11は、仮想スクリーンテーブル12dに記憶してある全ての格子点に対して上述した処理を終了したか否かを判断する(S59)。全ての格子点に対する処理を終了していないと判断した場合(S59:NO)、制御部11はステップS51の処理に戻り、未処理の格子点の方位角φV を仮想スクリーンテーブル12dから読み出し、上述した処理を繰り返す。
一方、各ペアにおいて算出したtanβの全てが、ステップS52で変換した方位角βV の正接に一致しないと判断した場合(S55:NO)、制御部11は、各ペアにおいて算出したtanβのうちで、ステップS52で変換した方位角βV の正接tanβV の前後の値となる方位角情報のペアを取得する(S60)。制御部11は、取得した方位角情報のペアに基づいて、ステップS52で変換した方位角βV の正接tanβV に対応する前側画像における方位角の正接tanβFV及び後側画像における方位角の正接tanβRVを算出する(S61)。具体的には、制御部11は、図13Bに示した二次元空間において、線分GiGi+1における格子点Gの内分比を算出し、算出した内分比と、前側画像におけるtanβFi及びtanβFi+1とに基づいて、前側画像における方位角の正接tanβFVを算出する。また、制御部11は、算出した内分比と、後側画像におけるtanβRi及びtanβRi+1とに基づいて、後側画像における方位角の正接tanβRVを算出する。
そして、制御部11は、算出した前側画像における方位角の正接tanβFV及び後側画像における方位角の正接tanβRVからそれぞれ方位角βFV及びβRVを算出する(S56)。制御部11は、算出した方位角βFVを前側画像用仮想スクリーンテーブル12eに記憶し(S57)、算出した方位角βRVを後側画像用仮想スクリーンテーブル12fに記憶する(S58)。仮想スクリーンテーブル12dに記憶してある全ての格子点に対して上述した処理を終了したと判断した場合(S59:YES)、制御部11は、仮想スクリーンの補正処理を終了し、図21及び図22の処理に戻る。
制御部11は、前側画像用仮想スクリーンテーブル12e及びステップS31でパノラマ画像DB12aから読み出した前側パノラマ画像に基づいて、前側画像の仮想ビューを生成する(S37)。具体的には、制御部11は、前側画像用仮想スクリーンの各仮想画素に、前側パノラマ画像の画素の画素値をそれぞれ対応付けることにより、前側画像の仮想ビューを生成する。同様に、制御部11は、後側画像用仮想スクリーンテーブル12f及びステップS31でパノラマ画像DB12aから読み出した後側パノラマ画像に基づいて、後側画像の仮想ビューを生成する(S38)。また制御部11は、ステップS37,S38でそれぞれ生成した2つの仮想ビューに対して合成割合を特定する(S39)。そして制御部11は、ステップS37,S38で生成した2つの仮想ビューを、ステップS39で特定した合成割合に基づいて合成して仮想画像を生成する(S40)。制御部11は、生成した仮想画像を通信部13にて第2情報処理装置20へ送信する(S41)。
第2情報処理装置20の制御部21は、第1情報処理装置10が送信した仮想画像を通信部23にて受信し(S23)、受信した仮想画像を表示部24に表示させる(S24)。第2情報処理装置20の制御部21は、ユーザの頭部の位置及び向きの検出及び送信を、所定時間間隔又はユーザからの指示に従って行い、第1情報処理装置10の制御部11は、第2情報処理装置20から位置及び向きの情報を受信する都度、ステップS34〜S41の処理を行う。これにより、実写データに基づいて、任意の視点から見た画像を生成する情報処理システム40を提供することができる。
上述した処理により、ユーザは、撮影された部屋の中を移動しながら、部屋の広さ、家具の配置、窓の外の景色等を感覚的に把握することができる。なお、カメラ30を用いて撮影する空間は、博物館、美術館、テーマパーク、アミューズメント施設、観光地、商業施設等であってもよい。
上述した処理において、第2情報処理装置20の制御部21は、ステップS21で取得した位置及び向きが、前回取得した位置及び向きに対して変化したか否かを判断し、変化した場合にのみ、取得した位置及び向きの情報を第1情報処理装置10へ送信するようにしてもよい。この場合、第1情報処理装置10の制御部11は、ステップS34の処理を行う必要がなく、第2情報処理装置20から受信した位置及び向きの情報に基づいて、ステップS35以降の処理を行えばよい。
本実施形態によると、撮影した各パノラマ画像から、視点位置の移動に応じて生成された仮想スクリーンに投影される各仮想ビューが生成される。これにより、単体の各パノラマ画像から視点位置を移動した効果のある映像表現が得られる。また本実施形態によると、複数箇所で撮影したパノラマ画像(仮想ビュー)から生成された仮想画像が提供される。複数の仮想ビューから仮想画像を生成する場合、例えば仮想視点と各撮影位置との距離に応じた合成割合で複数の仮想ビューが合成される。これにより、表示されるパノラマ画像(仮想ビュー)が切り替えられる際に、仮想視点と撮影位置との距離に応じた重み付け(合成割合)を各仮想ビューに付与できるので、画像の遷移を滑らかに行うことができ、画像の切り替えの際にユーザに与える違和感を抑制できる。また、各仮想ビューを生成する際に、2つの仮想ビューにおいて横方向(方位角方向)の歪みを解消するように、仮想スクリーンの各格子点における方位角を補正する。よって、2つの仮想ビュー間において方位角方向が一致するので、2つの仮想ビューを合成した場合に生じる横方向(方位角方向)のズレを抑制できる。
本実施形態において、撮影対象の部屋における撮影位置は3箇所以上としてもよい。この場合、それぞれ2箇所の撮影位置間で、撮影したパノラマ画像における特徴点の対応付けを行い、本実施形態における処理を行えばよい。これにより、撮影対象の部屋の任意の位置に応じた2つのパノラマ画像を用いて、任意の視点から任意の方向を見た状態の仮想画像をユーザに提供できる。
本実施形態によると、HMD型の第2情報処理装置20を使用するので、コンピュータ等の操作に不慣れなユーザであっても容易に様々な視点から室内を見た状態の画像を確認できる情報処理システム40を提供できる。本実施形態によると、市販の全天球カメラ等を用いて撮影したJPEG(Joint Photographic Experts Group)形式等の汎用の形式の画像を使用して、様々な視点から室内を見た状態の画像を提供できる情報処理システム40を提供できる。
本実施形態において、例えば、右目を仮想視点に設定して作成した仮想画像を右目側に表示し、左目を仮想視点に設定して作成した仮想画像を左目側に表示することにより、立体感のある画像を提供する情報処理システム40を提供できる。
カメラ30は、全天球カメラに限定しない。たとえば、半球型の範囲を撮影可能なカメラであってもよい。通常の平面画像撮影用のカメラでもよい。
(実施形態2)
本実施形態は、仮想視点が静止している場合に1つの仮想ビューから生成された仮想画像を提供する情報処理システム40に関する。実施形態1と共通する部分については説明を省略する。
本実施形態では、仮想視点が移動している場合、上述した実施形態1と同様の処理が行われ、2箇所の撮影位置で撮影したパノラマ画像からそれぞれ生成された2つの仮想ビューが適切な合成割合にて合成され、仮想視点から任意の方向を見た場合の仮想画像が生成される。一方、仮想視点が静止している場合、仮想視点の近傍の撮影位置で撮影したパノラマ画像から生成された仮想ビューのみを用いて仮想画像が生成される。また、移動中の仮想視点が静止した場合、又は静止中の仮想視点が移動した場合に、2つの仮想ビューを合成して仮想画像を生成する処理と、1つの仮想ビューを用いて仮想画像を生成する処理とが切り替えられるが、このとき、2つの処理は所定時間をかけて切り替えられる。
具体的には、本実施形態の合成割合特定部57は、仮想視点が移動を停止した場合、この時点での各仮想ビューに対する合成割合から、仮想視点の近傍の撮影位置で撮影したパノラマ画像(仮想ビュー)に対する合成割合を徐々に大きくなるように変更し、所定時間の経過後に1(100%)に設定する。このとき、合成割合特定部57は、他方のパノラマ画像(仮想ビュー)に対する合成割合を徐々に小さくなるように変更し、所定時間の経過後に0(0%)に設定する。また、合成割合特定部57は、静止中の仮想視点が移動を開始した場合、仮想視点の近傍の撮影位置で撮影したパノラマ画像に対する合成割合を徐々に小さくなるように変更し、所定時間の経過後に、2つの撮影位置と仮想視点との位置関係に基づく合成割合に設定する。このとき、合成割合特定部57は、他方のパノラマ画像に対する合成割合を徐々に大きくなるように変更し、所定時間の経過後に、2つの撮影位置と仮想視点との位置関係に基づく合成割合に設定する。
図24は、仮想ビューに対する合成割合の変化を示す図表である。図24Aは仮想視点が移動を停止した場合における各仮想ビューの合成割合を示し、図24Bは仮想視点が移動を開始した場合における各仮想ビューの合成割合を示す。図24Aにおいて、横軸は、移動中の仮想視点が停止してからの経過時間ETを示し、縦軸は、それぞれの仮想ビューに対する合成割合αR ,αF を示す。図24Bにおいて、横軸は、停止中の仮想視点が移動を開始してからの経過時間ETを示し、縦軸は、それぞれの仮想ビューに対する合成割合αR ,αF を示す。図24A,Bに示す例では、仮想視点の近傍の撮影位置を後側撮影位置とする。本実施形態では、図24Aに示すように、移動中の仮想視点が後側撮影位置の近傍で静止した場合、後側画像の仮想ビューに対する合成割合は、この時点での合成割合αR から単調増加し、所定時間etの経過後に1となる。このとき、前側画像の仮想ビューに対する合成割合は、この時点での合成割合αF から単調減少し、所定時間etの経過後に0となる。所定時間etは例えば数秒程度としてもよい。また本実施形態では、図24Bに示すように、後側撮影位置の近傍で静止中の仮想視点が移動を開始した場合、後側画像の仮想ビューに対する合成割合は、この時点での合成割合1から単調減少し、所定時間etの経過後にαR となる。このとき、前側画像の仮想ビューに対する合成割合は、この時点での合成割合0から単調増加し、所定時間etの経過後にαF となる。
本実施形態では、例えば、図21及び図22中のステップS39の処理において、第1情報処理装置10の制御部(判断部)11は、ステップS33で受信した位置を示す情報に基づいて、仮想視点の位置が移動中(変化中)であるか否かを判断する。位置が移動中であると判断した場合、制御部11は、実施形態1におけるステップS39と同じ処理を行い、例えば仮想視点の位置とそれぞれの撮影位置との位置関係に応じて2つの仮想ビューに対する合成割合を特定する。一方、位置が移動中でないと判断した場合、制御部11は、仮想視点が移動を開始したのか、移動を停止したのかを判断する。そして、制御部11(合成割合特定部57)は、仮想視点が移動を開始したのか、移動を停止したのかに応じて、上述したように2つの仮想ビューに対する合成割合を特定し、その後、ステップS40以降の処理を行う。
上述した処理により、本実施形態では、仮想視点の移動中は、前側画像の仮想ビュー及び後側画像の仮想ビューを合成した仮想画像が生成され、実施形態1と同様の効果が得られる。また、仮想視点の静止中は、仮想視点の近傍の撮影位置で撮影したパノラマ画像から生成された仮想ビューのみを用いた仮想画像が生成される。この場合、仮想ビューを合成しないので、仮想ビューを合成した場合に生じる画像のブレが生じず、ブレのない画像を提供できる。また、仮想視点の移動停止時又は移動開始時では、2つの仮想ビューを合成して仮想画像を生成する処理と、1つの仮想ビューを用いて仮想画像を生成する処理とを所定時間をかけて切り替える。よって、2つの処理が切り替えられることに伴って表示される仮想画像が切り替えられる際にユーザに与える違和感を抑制できる。
(実施形態3)
本実施形態は、2つのパノラマ画像において、被写体の特徴点(画素)の対応付けを、撮影位置の高さに対応する画像中の位置以外の位置においても行う情報処理システム40に関する。実施形態1と共通する部分については説明を省略する。
本実施形態の第1情報処理装置10においても、制御部11は仮想画像生成プログラムPGを実行することによって、図8に示す各機能を実現する。なお、本実施形態の第1情報処理装置10では、特徴点対応付け部51、仮想スクリーン設定部52及び仮想スクリーン補正部53が行う処理が実施形態1とは異なるので、異なる処理についてのみ説明する。
本実施形態の特徴点対応付け部51は、撮影対象の空間内の2箇所(前側撮影位置及び後側撮影位置)で撮影した2つのパノラマ画像において、前側撮影位置及び後側撮影位置を結ぶ直線とそれぞれのパノラマ画像とが交差する2点を通る複数の線上で、同じ被写体が撮影された方位角方向の位置を対応付ける。図25は、パノラマ画像の例を示す模式図であり、図25Aは前側撮影位置で撮影したパノラマ画像(前側画像)の例であり、図25Bは後側撮影位置で撮影したパノラマ画像(後側画像)の例である。なお、図25は正距円筒図法により長方形に展開されたパノラマ画像を示す。図25に示す2つのパノラマ画像は、画像の上下方向が鉛直方向に一致し、左右端がカメラ30の後側(撮影方向の反対方向)に一致し、左右方向の中央がカメラ30の前側(撮影方向)に一致している。このようなパノラマ画像間では、画像の上下方向の中央部だけでなく、画像における撮影方向及び撮影方向の反対方向に対応する位置で上下方向(高さ方向)の中央位置(図25中の点D1,D2,D3,D4)を通る複数の線(曲線)上に、同じ被写体が写っている。また同じ被写体は、2箇所の撮影位置間の視差によってパノラマ画像中の異なる位置に写っている。例えば図25Aに示す前側画像において線La1上に写っている被写体は、図25Bに示す後側画像においても線La1上に写っている。このような線を以下ではエピポーラ線という。
図26は、エピポーラ線の説明図である。図26には、前側撮影位置及び後側撮影位置のそれぞれで撮影したパノラマ画像のイメージを球体で示しており、球体の表面上の曲線La1,La2,Lb1,Lb2はそれぞれエピポーラ線を示している。ここで、後側撮影位置から前側撮影位置に向かう方向を天頂方向とした極座標系(以下では共通軸極座標系という)を用いる。なお、後側撮影位置から前側撮影位置に向かう方向は、撮影方向(カメラ30の前側)であり、図5Aに示した直交座標系のZ軸の負方向(−Z軸方向)である。なお、共通軸極座標系の方位角には、撮影空間のX軸の負方向を基準として、Z軸の負方向から見てZ軸を中心に反時計回りの角度φC を用いる。また共通軸極座標系の天頂角には、Z軸の負方向を基準として、撮影位置を中心としてZ軸の正方向に向かう角度θC を用いる。以下では、共通軸極座標系と区別するために、パノラマ画像の各画素の位置を表現するための極座標系をローカル極座標系と呼び、ローカル極座標系の座標を(rL ,θL ,φL )で示す。
エピポーラ線は、それぞれのパノラマ画像が、2つの撮影位置を結ぶ直線(−Z軸)と交差する2点D1及びD2,D3及びD4を通る。具体的には、前側画像におけるエピポーラ線は、空間内の各撮影位置を結ぶ直線(−Z軸)と、前側撮影位置で撮影した全天球画像(前側画像)とが交差する2点D1,D2を通り、前側画像に係る全天球上の線である。また、後側画像におけるエピポーラ線は、−Z軸と、後側撮影位置で撮影した全天球画像(後側画像)とが交差する2点D3,D4を通り、後側画像に係る全天球上の線である。またそれぞれのエピポーラ線は、共通軸極座標系において天頂角θC 方向に並ぶ線(画素列)であり、図5Aに示す直交座標系における水平面であるXZ平面を基準として、−Z軸を中心に、共通軸極座標系における方位角方向に例えば15°間隔毎に回転させて設けられている。なお、エピポーラ線の数及び方位角方向の間隔はこれに限らず、任意の数又は任意の間隔とすることができる。図26に示す共通軸極座標系で表したエピポーラ線を正距円筒図法により展開することにより、図25に示すようにパノラマ画像上にエピポーラ線La1,La2…を表すことができる。なお、共通軸極座標系の座標(rC ,θC ,φC )をローカル極座標系の座標(rL ,θL ,φL )に変換する場合、一旦直交座標系の座標に変換した後にローカル極座標系の座標に変換する。なお、ここでの直交座標系を、パノラマ画像の各画素の位置を表現するための直交座標系と区別するためにワールド直交座標系と呼び、ワールド直交座標系の座標を(xW ,yW ,zW )で示す。
図27は、座標系の関係を説明するための模式図である。図27Aはローカル極座標系及びワールド直交座標系の関係を示し、図27Bはワールド直交座標系及び共通軸極座標系の関係を示す。ワールド直交座標系には、鉛直上方向をYW 軸の正側、水平面をXW 軸及びZW 軸で表す3次元の右手系の直交座標系を用いる。よって、空間内の任意の位置Pは、ワールド直交座標系の座標(xW ,yW ,zW )で表すことができる。図27Aに示すようにローカル極座標系は、鉛直上方向(YW 軸の正側)を基準とした天頂角θL と、鉛直上方向から見てZW 軸の正側を基準として水平面であるXW ZW 平面内の反時計回りの方位角φL と、原点0からの距離rL とによって表される。よって、3次元空間中の任意の位置Pは、ワールド直交座標系の座標(xW ,yW ,zW )とローカル極座標系の座標(rL ,θL ,φL )とで表すことができ、ワールド直交座標系の座標(xW ,yW ,zW )及びローカル極座標系の座標(rL ,θL ,φL )は以下の(13)式及び(14)式によって相互に変換可能である。
なお、ローカル極座標系の座標値(rL ,θL ,φL )で表される全天球画像は、正距円筒図法により、横軸及び縦軸をそれぞれ、方位角φL 及び天頂角θL をそれぞれ0〜1の範囲に正規化したu値(u軸)及びv値(v軸)とする平面(長方形)の画像に展開できる。ここで、ローカル極座標系の方位角φL 及び天頂角θL と、u値及びv値とは、以下の(15)式及び(16)式によって相互に変換可能である。
図27Bに示すように共通軸極座標系は、ワールド直交座標系のZW 軸の負方向を基準とした天頂角θC と、ZW 軸の負方向から見てXW 軸の負側を基準としてXW YW 平面内の反時計回りの方位角φC と、原点0からの距離rC とによって表される。よって、3次元空間中の任意の位置Pは、ワールド直交座標系の座標(xW ,yW ,zW )と共通軸極座標系の座標(rC ,θC ,φC )とで表すことができ、ワールド直交座標系の座標(xW ,yW ,zW )及び共通軸極座標系の座標(rC ,θC ,φC )は以下の(17)式及び(18)式によって相互に変換可能である。
本実施形態の特徴点対応付け部(対応付け部)51は、2つのパノラマ画像において、それぞれのエピポーラ線について、エピポーラ線上に写っている被写体の特徴点(画素)の対応付けを行う。例えば、特徴点対応付け部51は、図25A,Bに示すように、2つのパノラマ画像において、エピポーラ線La4上に配置する画素のうちで同じ被写体の同じ部分の画素を特徴点La4a〜La4dとしてそれぞれ対応付ける。まず、特徴点対応付け部51は、エピポーラ線毎に、対応付けるべきそれぞれの特徴点について、前側画像における座標値(uF ,vF )と後側画像における座標値(uR ,vR )とを特定する。特徴点対応付け部51は、特定した座標値(uF ,vF )及び(uR ,vR )をそれぞれ、上記の(15)式を用いてローカル極座標系の座標値(θLF,φLF)及び座標値(θLR,φLR)に変換する。次に特徴点対応付け部51は、ローカル極座標系の座標値(θLF,φLF)及び座標値(θLR,φLR)をそれぞれ、上記の(13)式を用いてワールド直交座標系の座標値(xWF,yWF,zWF)及び座標値(xWR,yWR,zWR)に変換する。なお、ローカル極座標系における距離rL は適宜の距離とすればよい。更に特徴点対応付け部51は、ワールド直交座標系の座標値(xWF,yWF,zWF)及び座標値(xWR,yWR,zWR)をそれぞれ、上記の(18)式を用いて共通軸極座標系の座標値(θCF,φCF)及び座標値(θCR,φCR)に変換する。ここで、対応付けられる特徴点は、同じエピポーラ線上の画素であるので、共通軸極座標系の方位角φC が同じである。即ち、前側画像における特徴点の共通軸極座標系の方位角φCFと後側画像における特徴点の共通軸極座標系の方位角φCRとは同じである。よって、特徴点対応付け部51は、それぞれのエピポーラ線(共通軸極座標系の方位角φC )毎に、それぞれの特徴点について、前側画像における天頂角θCFと後側画像における天頂角θCRとを対応付ける。特徴点対応付け部51は、それぞれのエピポーラ線について、特徴点毎に天頂角θCF及びθCRのペアを対応付けて記憶する。
また、特徴点対応付け部51は、共通軸極座標系の天頂角θCF及びθCRではなく、図6に示したST座標系の方位角βF 、βR (又は方位角βF 、βR の正接tanβF 、tanβR )にて対応付けを行ってもよい。なお、図6に示したST座標系を以下ではエピポーラ面座標系と呼び、ワールド直交座標系のZW 軸の負方向をt軸とし、t軸に直交する方向をs軸とし、座標(sE ,tE )によってエピポーラ面座標系の任意の位置を表すことができる。この場合、特徴点対応付け部51は、上述したように対応付けた特徴点について、前側画像における共通軸極座標系の天頂角θCF及び後側画像における共通軸極座標系の天頂角θCRをそれぞれ、以下の(19)式を用いてエピポーラ面座標系の方位角βF 、βR に変換する。
β=θC −π/2 …(19)
この場合、特徴点対応付け部51は、図9に示す特徴点対応テーブル12bは生成せずに、共通軸極座標系の方位角φC 毎に、前側画像におけるエピポーラ面座標系の方位角βF の正接tanβF と後側画像におけるエピポーラ面座標系の方位角βR の正接tanβR とを対応付けて記憶した図10Aに示すような方位角対応テーブル12cを生成する。なお、本実施形態の特徴点対応付け部51は、共通軸極座標系における方位角φC が−π/2<φC ≦π/2の範囲にあるエピポーラ線のそれぞれについて、共通軸極座標系における天頂角θC が0≦θC ≦πの範囲にある特徴点について対応付けを行う。
特徴点対応付け部51は、2つのパノラマ画像間で対応付けるべき特徴点を、例えばユーザ入力によって受け付けてもよい。この場合、例えば特徴点対応付け部51は、第1情報処理装置10の表示部15に、エピポーラ線をそれぞれ付加した2つのパノラマ画像を表示し、特徴点とすべき箇所(画素)を入力部14にて受け付ける。なお、特徴点対応付け部51は、図26に示したそれぞれのエピポーラ線について、エピポーラ線上の各画素の共通軸極座標系の座標値(θC ,φC )を、上記の(17)式を用いてワールド直交座標系の座標値(xW ,yW ,zW )に変換し、更に上記の(14)式を用いてローカル極座標系の座標値(θL ,φL )に変換する。更に特徴点対応付け部51は、ローカル極座標系の方位角φL 及び天頂角θL を上記の(16)式を用いてu値及びv値に変換する。これにより、特徴点対応付け部51は、図25に示すように、表示部15に表示した2つのパノラマ画像にエピポーラ線を重畳させることができる。
ユーザは、表示された2つのパノラマ画像においてそれぞれのエピポーラ線について、同じ被写体の同じ部分を特徴点として入力部14を介して指定する。特徴点対応付け部51は、入力部14を介して2つのパノラマ画像中の特徴点を受け付け、それぞれの特徴点について、前側画像における座標値(uF ,vF )と後側画像における座標値(uR ,vR )とを取得する。そして特徴点対応付け部51は、前側画像における座標値(uF ,vF )及び後側画像における座標値(uR ,vR )に対して、上述した変換処理を行うことにより、共通軸極座標系の座標値(θCF,φCF)及び座標値(θCR,φCR)を取得する。更に特徴点対応付け部51は、共通軸極座標系の天頂角θCF,θCRをエピポーラ面座標系の方位角βF ,βR に変換し、共通軸極座標系の方位角φCF,φCR(φCF=φCR)について、方位角βF 、βR の正接tanβF 、tanβRを対応付けて方位角対応テーブル12cに記憶する。
また、特徴点対応付け部51は、2つのパノラマ画像間で対応付けるべき特徴点を、2つのパノラマ画像におけるそれぞれのエピポーラ線上の各画素の画素値の変動に対して、Dynamic Time Warping等の手法を用いて自動的に抽出してもよい。この場合、特徴点対応付け部51は、例えば図25に示すようなパノラマ画像においてそれぞれのエピポーラ線上の画素を抽出し、前側画像及び後側画像における1次元の画素列(画素値の列)をそれぞれ生成する。例えば特徴点対応付け部51は、それぞれのエピポーラ線(共通軸極座標系の方位角φC )に対して、天頂角θC を0から所定値(微小角度)ずつ増加させながら、上述した変換処理によってパノラマ画像上のu値及びv値に変換し、得られた座標(u,v)の画素の画素値を逐次抽出することによって、前側画像及び後側画像における1次元の画素列を生成する。そして、特徴点対応付け部51は、このように生成された前側画像及び後側画像における画素列から、Dynamic Time Warping等の手法により、類似する画素値の画素を自動的に抽出する。特徴点対応付け部51は、抽出した画素を特徴点として受け付ける。そして特徴点対応付け部51は、ユーザ入力される場合と同様に、受け付けた特徴点について、前側画像における座標値(uF ,vF )と後側画像における座標値(uR ,vR )とを共通軸極座標系の座標値(θCF,φCF)及び座標値(θCR,φCR)に変換する。更に特徴点対応付け部51は、共通軸極座標系の天頂角θCF,θCRをエピポーラ面座標系の方位角βF ,βR に変換し、共通軸極座標系の方位角φCF,φCR(φCF=φCR)について、エピポーラ面座標系の方位角βF 、βR の正接tanβF 、tanβRを対応付けて方位角対応テーブル12cに記憶する。
よって、本実施形態では、それぞれのエピポーラ線(共通軸極座標系の方位角φC )毎に、前側画像における方位角情報(エピポーラ面座標系の方位角βF の正接tanβF )及び後側画像における方位角情報(エピポーラ面座標系の方位角βR の正接tanβR)が対応付けて記憶される方位角対応テーブル12cが生成される。
本実施形態の仮想スクリーン設定部52は、実施形態1と同様に、第2情報処理装置20から取得したユーザの頭部の位置及び向きに基づいて、ローカル極座標系において仮想視点Vから仮想スクリーンを見た際の各格子点の天頂角θVL及び方位角φVLを算出する。よって、各格子点の位置はローカル極座標系の座標値(θVL,φVL)で表される。そして、本実施形態の仮想スクリーン設定部52は、各格子点のローカル極座標系の座標値(θVL,φVL)を、上述した変換処理によって共通軸極座標系の座標値(θVC,φVC)に変換する。更に仮想スクリーン設定部52は、各格子点の共通軸極座標系の天頂角θVCを上記の(19)式によってエピポーラ面座標系の方位角βV に変換する。よって、本実施形態の仮想スクリーン設定部52は、設定した仮想スクリーンの各格子点の座標値として座標(βV ,φVC)を仮想スクリーンテーブル12dに記憶する。
図28は、実施形態3の仮想スクリーンテーブル12dの構成例を示す模式図である。本実施形態の仮想スクリーンテーブル12dは、図11に示した実施形態1の仮想スクリーンテーブル12dと同様の構成を有するが、各格子点の座標値として、エピポーラ面座標系の方位角βV 及び共通軸極座標系の方位角φVCで表される座標(βV ,φVC)が仮想スクリーンテーブル12dに記憶される。なお、以下では座標値βV を格子点における天頂角といい、座標値φVCを格子点における方位角という。
本実施形態の仮想スクリーン補正部53は、図28に示した仮想スクリーンテーブル12dが示す仮想スクリーンに対して、特徴点対応付け部51が生成した方位角対応テーブル12cに基づく補正処理を行い、前側画像用仮想スクリーン及び後側画像用仮想スクリーンを生成する。具体的には、仮想スクリーン補正部53は、仮想スクリーンテーブル12dに記憶された各格子点の座標(βV ,φVC)の各値を、方位角対応テーブル12cに基づいてそれぞれ補正し、前側画像用仮想スクリーンテーブル12eと後側画像用仮想スクリーンテーブル12fとを生成する。よって、前側画像用仮想スクリーンテーブル12e及び後側画像用仮想スクリーンテーブル12fは、仮想スクリーンテーブル12d中の各格子点の座標値が異なるほかは仮想スクリーンテーブル12dと同様の構成を有する。
本実施形態の仮想スクリーン補正部53はまず、仮想スクリーンテーブル12dに記憶された各格子点の座標(βV ,φVC)について、座標値φVCに一致する方位角(即ち、方位角φVC)のエピポーラ線に対する方位角対応テーブル12cがあるか否かを判断する。方位角φVCのエピポーラ線に対する方位角対応テーブル12cがある場合、仮想スクリーン補正部53は、実施形態1と同様の処理により、方位角対応テーブル12cを用いて、格子点の天頂角βV に対応する前側画像における画素の天頂角βF と後側画像における画素の天頂角βR とを求める。
一方、方位角φVCのエピポーラ線に対する方位角対応テーブル12cがない場合、仮想スクリーン補正部53は、方位角φVCの前後の方位角φJ ,φJ+1 (φJ <φVC<φJ+1 )の2つのエピポーラ線に対する方位角対応テーブル12cを用いて、格子点の天頂角βV に対応する前側画像における画素の天頂角βF と後側画像における画素の天頂角βR とを求める。ここではまず、仮想スクリーン補正部53は、実施形態1と同様の処理により、方位角φJ のエピポーラ線に対する方位角対応テーブル12cを用いて、格子点の天頂角βV に対応する前側画像における画素の天頂角βFJと後側画像における画素の天頂角βRJとを求める。また、仮想スクリーン補正部53は、方位角φJ+1 のエピポーラ線に対する方位角対応テーブル12cを用いて、格子点の天頂角βV に対応する前側画像における画素の天頂角βFJ+1と後側画像における画素の天頂角βRJ+1とを求める。そして仮想スクリーン補正部53は、算出した天頂角βFJ,βFJ+1及び天頂角βRJ,βRJ+1をそれぞれ、方位角φVCが方位角φJ ,φJ+1 を分割する内分比に応じた重み付けを行って合成することにより、格子点の天頂角βV に対応する前側画像及び後側画像における画素の天頂角βF ,βR を求める。具体的には、仮想スクリーン補正部53は、以下の(20)式を用いて、天頂角βFJ,βFJ+1及び内分比τから、格子点の天頂角βV に対応する前側画像における画素の天頂角βF を算出し、天頂角βRJ,βRJ+1及び内分比τから、格子点の天頂角βV に対応する後側画像における画素の天頂角βR を算出する。
上述した処理により、仮想スクリーン補正部53は、仮想スクリーン設定部52が設定した仮想スクリーンにおいて、各格子点の天頂角を前側画像における天頂角βF に補正した前側画像用仮想スクリーンと、後側画像における天頂角βR に補正した後側画像用仮想スクリーンとを生成する。なお、仮想スクリーン設定部52が設定した仮想スクリーンを前側画像用及び後側画像用に補正する処理は、上述した処理に限定されない。
本実施形態の仮想画像生成部55は、実施形態1と同様の処理により、パノラマ画像DB12aに記録された前側画像及び後側画像と、前側画像用仮想スクリーン及び後側画像用仮想スクリーンとに基づいて、第2情報処理装置20を装着したユーザに提供する仮想画像を生成する。なお、本実施形態の仮想ビュー生成部56は、前側画像用仮想スクリーンテーブル12eから各格子点の座標値(βF ,φVC)を読み出し、天頂角βF にπ/2を加算して共通軸極座標系の天頂角θFCに変換する。そして、仮想ビュー生成部56は、変換した天頂角θFCと、前側画像用仮想スクリーンテーブル12eから読み出した格子点の方位角φVCとによる共通軸極座標系の座標(θFC,φVC)を、上述した変換処理によってワールド直交座標系及びローカル極座標系を経て、前側画像(パノラマ画像)上の座標(u,v)に変換する。そして仮想ビュー生成部56は、前側画像において得られた座標(u,v)の画素を、前側画像用仮想スクリーンの格子点(βF ,φVC)に対応付け、画素対応テーブル12gに記憶する。仮想ビュー生成部56は、後側画像用仮想スクリーンテーブル12fについても同様の処理を行い、後側画像用仮想スクリーンの各格子点に、前側画像における画素を対応付け、画素対応テーブル12gに記憶する。これにより、本実施形態の仮想ビュー生成部56は、図15に示す画素対応テーブル12gを生成する。
本実施形態の仮想ビュー生成部56は、実施形態1と同様の処理を行い、前側画像用仮想スクリーンの各仮想画素に輝度(画素値)を割り当てて前側画像の仮想ビューを生成する。また、仮想ビュー生成部56は、後側画像用仮想スクリーンの各仮想画素に輝度(画素値)を割り当てて後側画像の仮想ビューを生成する。これにより、本実施形態の仮想ビュー生成部56は、図16に示す仮想ビューDB12hを生成する。
本実施形態では、図20に示す特徴点の対応付け処理において、第1情報処理装置10の制御部11は、ステップS13の処理を行わない。具体的には、制御部11は、2つのパノラマ画像において対応付けるべき特徴点を取得した場合(S12)、取得した各特徴点について、前側画像における座標値(uF ,vF )と後側画像における座標値(uR ,vR )とを取得する。そして制御部11は、前側画像における座標値(uF ,vF )及び後側画像における座標値(uR ,vR )に対して、座標系の変換処理を行い、共通軸極座標系の座標値(θCF,φCF)及び座標値(θCR,φCR)に変換する。更に制御部11は、共通軸極座標系の天頂角θCF,θCRをエピポーラ面座標系の方位角βF ,βR に変換し、共通軸極座標系の方位角φCF,φCR(φCF=φCR)について、方位角βF 、βR の正接tanβF 、tanβRを対応付けて方位角対応テーブル12cに記憶する(S14)。これにより、本実施形態では、エピポーラ線(共通軸極座標系の方位角φC )毎に、前側画像における方位角情報(エピポーラ面座標系の方位角βF の正接tanβF )及び後側画像における方位角情報(エピポーラ面座標系の方位角βR の正接tanβR)が対応付けられる。
また本実施形態では、図21中のステップS35の処理において、第1情報処理装置10の制御部11は、設定した仮想スクリーン各格子点のローカル極座標系の座標値(θVL,φVL)を共通軸極座標系の座標値(θVC,φVC)に変換する。また制御部11は、各格子点の共通軸極座標系の天頂角θVCをエピポーラ面座標系の方位角βV に変換する。そして制御部11は、各格子点の座標値として座標(βV ,φVC)を仮想スクリーンテーブル12dに記憶することにより、仮想スクリーンを設定する。
以下に、本実施形態における仮想スクリーンの補正処理について説明する。図29は、実施形態3の第1情報処理装置10による仮想スクリーンの補正処理の手順を示すフローチャートである。図29に示す処理は、図23中のステップS51〜S52の代わりにステップS71〜S76を追加したものである。図29では、ステップS58〜S59の図示を省略する。本実施形態の第1情報処理装置10の制御部11は、設定された仮想スクリーンの1つの格子点の座標(βV ,φVC)を仮想スクリーンテーブル12dから読み出す(S71)。制御部11は、読み出した格子点の方位角φVCのエピポーラ線に対する方位角対応テーブル12cがあるか否かを判断する(S72)。方位角対応テーブル12cがあると判断した場合(S72:YES)、制御部11は、実施形態1と同様にステップS53以降の処理を行う。
なお、本実施形態では、ステップS55で、制御部11は、ステップS54で各ペアにおいて算出したtanβのいずれかが、ステップS71で読み出した格子点の天頂角βV の正接(天頂角情報)に一致するか否かを判断する。またステップS57で、制御部11は、算出した方位角βF を、格子点の天頂角βV に対応する前側画像における画素の天頂角βF として前側画像用仮想スクリーンテーブル12eに記憶する。同様にステップS58で、制御部11は、算出した方位角βR を、格子点の天頂角βV に対応する後側画像における画素の天頂角βR として後側画像用仮想スクリーンテーブル12fに記憶する。
一方、格子点の方位角φVCのエピポーラ線に対する方位角対応テーブル12cがないと判断した場合(S72:NO)、制御部11は方位角φVCの前後の方位角φJ ,φJ+1の2つのエピポーラ線に対する方位角対応テーブル12cを取得する(S73)。そして制御部11は、一方の方位角対応テーブル12c(例えば方位角φJのエピポーラ線に対する方位角対応テーブル12c)に基づいて、格子点の天頂角βV に対応する前側画像における画素の天頂角βFJと後側画像における画素の天頂角βRJとを算出する(S74)。また制御部11は、他方の方位角対応テーブル12c(例えば方位角φJ+1 のエピポーラ線に対する方位角対応テーブル12c)に基づいて、格子点の天頂角βV に対応する前側画像における画素の天頂角βFJ+1と後側画像における画素の天頂角βRJ+1とを算出する(S75)。
そして制御部11は、算出した天頂角βFJ,βFJ+1を、方位角φJ ,φJ+1 に対する方位角φVCの内分比に応じた重み付けを行って合成することにより、格子点の天頂角βV に対応する前側画像における画素の天頂角βF を算出する。また制御部11は、算出した天頂角βRJ,βRJ+1を、方位角φJ ,φJ+1 に対する方位角φVCの内分比に応じた重み付けを行って合成することにより、格子点の天頂角βV に対応する後側画像における画素の天頂角βR を算出する(S76)。そして制御部11は、算出した天頂角βF を前側画像用仮想スクリーンテーブル12eに記憶し(S57)、算出した天頂角βR を後側画像用仮想スクリーンテーブル12fに記憶する(S58)。
上述した処理により、本実施形態では、仮想画像を生成するための仮想ビューを生成する際に、2つの仮想ビュー(パノラマ画像)において、水平方向だけでなく鉛直方向の歪みも考慮して歪みを抑制するように、仮想スクリーンの各格子点における被写体位置(共通軸極座標における天頂角)を補正する。よって、2つの仮想ビュー間において水平方向及び鉛直方向の全箇所にわたって被写体位置を合せることができるので、2つの仮想ビューを合成した場合に生じる縦方向のズレをより抑制できる。これにより、2つの仮想ビューを合成した仮想画像であってもユーザに与える違和感が抑制された仮想画像を提供できる。
本実施形態の構成は、上述した実施形態2にも適用可能であり、実施形態2に適用した場合であっても同様の効果が得られる。
(実施形態4)
本実施形態は、パソコン、スマートフォン、又は、タブレット等の汎用の情報処理装置を第2情報処理装置20に使用する情報処理システム40に関する。実施形態1と共通する部分については、説明を省略する。
図30は、実施形態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のユーザに提供することができる。よって、例えば各種の部屋、劇場、動物園、植物園等で撮影した画像によって撮影対象の空間の状態をリアルタイムで確認することができる。
各実施形態で記載されている技術的特徴(構成要件)はお互いに組合せ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。