以下に、本開示の情報処理装置、プログラム及び情報処理システムについて、その実施形態を示す図面に基づいて詳述する。
(実施形態1)
図1は、情報処理システムの構成例を示す模式図である。本実施形態の情報処理システム100は、サーバ10(第1情報処理装置)、登録者端末20(第3情報処理装置)、カメラ30及びユーザ端末40(第2情報処理装置)を含む。サーバ10、登録者端末20及びユーザ端末40は、インターネット、公衆通信回線又はLAN(Local Area Network)等のネットワークNに接続可能であり、ネットワークN経由で情報の送受信を行う。登録者端末20及びカメラ30は例えば無線通信可能であり、無線通信にて情報の送受信を直接行う。なお、カメラ30がネットワークNに接続可能である場合、カメラ30及び登録者端末20はネットワークN経由で情報の送受信を行う構成でもよい。
サーバ10は、サーバコンピュータ又はパーソナルコンピュータ等の情報処理装置であり、複数台設けられてもよいし、大型計算機等の1台の装置内に設けられた複数の仮想マシンによって実現されてもよいし、クラウドサーバを用いて実現されてもよい。登録者端末20は、パーソナルコンピュータ又はタブレット端末等であり、複数台設けられてもよい。カメラ30は、撮影装置の一例である。本実施形態においては、カメラ30を用いて、賃貸住宅及び販売住宅等の不動産物件の部屋、ホテル及び民宿等の宿泊施設の部屋等の閉鎖空間内で撮影を行う。カメラ30は、1回のシャッターで前後左右上下の撮影を行う全天球カメラを使用する。撮影位置は、閉鎖空間内の任意の位置とし、撮影位置の床面からの高さは、例えば1m程度とする。なお、撮影位置の高さは、立った状態の大人の目線の高さ、又は椅子に座った状態の大人の目線の高さ等の任意の高さとしてもよい。カメラ30が撮影を行う位置及び向き(撮影方向の方角)は、カメラ30に内蔵されたセンサ又はカメラ30を外部から監視するセンサにより測定される。カメラ30を特定の位置及び向き(撮影方角)に固定する治具等を利用してもよい。
本実施形態では、例えば不動産物件の管理会社の従業員等(以下では登録者という)が、カメラ30を用いて不動産物件の室内(閉鎖空間内)で撮影を行う。カメラ30によって撮影された撮影画像(パノラマ画像)は、撮影位置及び撮影方角を示す情報と撮影空間の大きさを示す情報と共に登録者端末20を介してサーバ10へ送信され、サーバ10のパノラマ画像DB12b(図3参照)に記録される。なお、カメラ30は撮影によって画像データ(撮影画像データ)を取得するが、以下では画像データを単に画像という場合がある。従って、撮影画像は撮影画像データを意味する場合があり、パノラマ画像はパノラマ画像データを意味する場合がある。撮影画像は、複数の画素を含み、撮影画像データは、各画素の撮影画像中の位置(座標)を示す位置情報と各画素の輝度(画素値)とを対応付けて有する。撮影位置の情報は、例えば略直方体形状の部屋の任意の位置(例えば床の隅又は天井の隅)を基準とした位置を示す情報であり、撮影方角の情報は、例えば北向きを0度、東向きを90度、南向きを180度、西向きを270度とそれぞれし、0度以上360度未満の値で示される情報である。撮影位置及び撮影方角の情報は、例えばカメラ30に内蔵されているセンサにより測定されてもよく、他のセンサ等により測定されてカメラ30又は登録者端末20へ送信されてもよい。なお、所定の高さで撮影を行う場合、撮影位置の高さの情報は必要なく、この場合、撮影位置の情報は、撮影位置を含む水平面上の任意の位置を基準とした位置の情報であればよい。撮影空間の大きさの情報は、例えば略直方体形状の部屋の床面の長辺及び短辺の大きさと高さの大きさとを示す情報であり、例えば登録者が登録者端末20を用いて入力する。なお、略直方体形状の部屋の長辺、短辺及び高さの大きさを測定できるセンサ等により測定されてカメラ30又は登録者端末20へ送信されてもよい。
サーバ10は、パノラマ画像DB12bに登録されたパノラマ画像をネットワークN経由で公開しており、不動産物件の部屋を内見したいユーザは、ユーザ端末40を用いてサーバ10にアクセスし、所望の部屋のパノラマ画像を閲覧できる。ユーザ端末40は、カメラ30での撮影が行われた部屋から離れた場所、例えば不動産会社の店舗又は旅行会社の店舗にいるユーザが装着して使用するHMD(Head Mounted Display)型の情報処理装置である。ユーザ端末40には、各種センサが内蔵されており、装着したユーザの頭部の位置及び向きを検出可能である。ユーザ端末40は、スマートフォン、タブレット端末又はパーソナルコンピュータ等の汎用の情報処理装置と、HMD等の表示装置との組合せでもよい。またユーザ端末40は、スマートフォン等の軽量の携帯型情報処理装置と、携帯型情報処理装置をユーザの目の前に固定する固定部材との組合せでもよい。ユーザ端末40は、検出したユーザの頭部の位置及び向きをサーバ10へ送信する。
サーバ10は、ユーザ端末40から受信したユーザの頭部の位置及び向きと、パノラマ画像DB12bに記録してある撮影画像とに基づいて、カメラ30で撮影された部屋の中の任意の仮想位置(仮想視点位置)から見た仮想画像を生成する。そしてサーバ10は、生成した仮想画像をユーザ端末40へ送信する。このような構成により、HMDを装着したユーザは、撮影対象となった部屋の中を仮想的に歩き回り、任意の向きを向いて、部屋の広さ、家具の配置、窓の外の景色等を感覚的に把握することができる。なお、ユーザは回転可能な椅子に着席した状態で、ジョイスティック等を操作することで仮想視点を移動させてもよい。この場合、転倒及び衝突のおそれなく、部屋の中を仮想的に歩き回り、あるいは飛翔し、任意の向きを向いて、室内空間を把握することができる。
図2は、カメラ30及び登録者端末20の構成例を示すブロック図である。カメラ30は、制御部31、記憶部32、通信部33、シャッターボタン34、撮影部35等を含み、これらはバスを介して相互に接続されている。制御部31は、CPU(Central Processing Unit)、MPU(Micro-Processing Unit)又はGPU(Graphics Processing Unit)等の1又は複数のプロセッサを含む。制御部31は、記憶部32に記憶してある制御プログラムを実行すると共に、バスを介してカメラ30を構成するハードウェア各部の動作を制御する。これにより、制御部31は、カメラ30が行うべき種々の制御処理及び情報処理を実行する。記憶部32は、RAM(Random Access Memory)、フラッシュメモリ、ハードディスク、磁気テープ等を含む。記憶部32は、制御部31が実行する制御プログラム及び制御プログラムの実行に必要な各種のデータ等を予め記憶している。また記憶部32は、制御部31が制御プログラムを実行する際に発生するデータ等を一時的に記憶する。
通信部33は、例えばBluetooth(登録商標)又はWi-Fi等の無線通信を行うためのインタフェースであり、無線通信によって外部装置(例えば登録者端末20)との間で情報の送受信を直接行う。なお、通信部33は、ケーブルを介した有線通信によって外部装置との間で情報の送受信を行うためのインタフェースであってもよい。また通信部33は、無線通信又は有線通信によってネットワークNに接続するためのインタフェースであってもよく、この場合、ネットワークN経由で外部装置との間で情報の送受信を行う。
シャッターボタン34は、静止画を撮影する指示を受け付けるためのボタンである。なお、制御部31は、無線通信によって、又はネットワークNを通じてシャッターボタン34の操作を受け付けてもよい。撮影部35は、撮影を行う光学系及び撮像素子等を有する撮像装置である。制御部31は、シャッターボタン34から受け付けた指示に基づいて撮影部35による撮影を行い、光学系を介して入射した光が撮像素子にて光電変換されて得られたデータに対して各種の画像処理を行い、撮影画像を取得する。カメラ30は、上述した構成のほかに、液晶ディスプレイ等による表示部、ユーザによる各種の操作入力を受け付ける入力部等を有する構成でもよい。
登録者端末20は、制御部21、記憶部22、通信部23、入力部24、表示部25、読み取り部26等を含み、これらはバスを介して相互に接続されている。制御部21は、CPU、MPU又はGPU等の1又は複数のプロセッサを含む。制御部21は、記憶部22に記憶してある制御プログラム22Pを実行すると共に、バスを介して登録者端末20を構成するハードウェア各部の動作を制御する。これにより、制御部21は、登録者端末20が行うべき種々の制御処理及び情報処理を実行する。記憶部22は、RAM、フラッシュメモリ、ハードディスク、SSD(Solid State Drive)等を含む。記憶部22は、制御部21が実行する制御プログラム22P及び制御プログラム22Pの実行に必要な各種のデータ等を予め記憶している。また記憶部22は、制御部21が制御プログラム22Pを実行する際に発生するデータ等を一時的に記憶する。また記憶部22は、ネットワークN経由で公開されているウェブサイトを閲覧するためのウェブブラウザ22aを記憶している。
通信部23は、有線通信又は無線通信によってネットワークNに接続するためのインタフェースであり、ネットワークN経由で外部装置との間で情報の送受信を行う。また通信部23は、無線通信又は有線通信によって外部装置(例えばカメラ30)との間で情報の送受信を直接行うためのインタフェースを有する構成でもよい。入力部24は、マウス及びキーボード等を含み、ユーザによる操作入力を受け付け、操作内容に対応した制御信号を制御部21へ送出する。表示部25は、液晶ディスプレイ又は有機ELディスプレイ等であり、制御部21からの指示に従って各種の情報を表示する。
読み取り部26は、CD(Compact Disc)-ROM、DVD(Digital Versatile Disc)-ROM又はUSB(Universal Serial Bus)メモリを含む可搬型記憶媒体2aに記憶された情報を読み取る。記憶部22に記憶される制御プログラム22P及びデータは、制御部21が読み取り部26を介して可搬型記憶媒体2aから読み取って記憶部22に記憶してもよい。また、記憶部22に記憶される制御プログラム22P及びデータは、制御部21が通信部23を介してネットワークN経由で外部装置からダウンロードして記憶部22に記憶してもよい。更に、制御部21が半導体メモリ2bから制御プログラム22P及びデータを読み出してもよい。
図3は、サーバ10及びユーザ端末40の構成例を示すブロック図である。サーバ10は、制御部11、記憶部12、通信部13、入力部14、表示部15、読み取り部16等を含み、これらはバスを介して相互に接続されている。これらの各部11~16は、登録者端末20の各部21~26と同様の構成を有するので、構成についての詳細な説明は省略する。なお、サーバ10の記憶部12は、制御プログラム12Pのほかに、後述する画像情報DB12a及びパノラマ画像DB12bを記憶する。画像情報DB12a及びパノラマ画像DB12bは、サーバ10に接続された外部の記憶装置に記憶されてもよく、ネットワークNを介してサーバ10が通信可能な外部の記憶装置に記憶されてもよい。
ユーザ端末40は、制御部41、記憶部42、通信部43、表示部44、センサ部45等を含み、これらはバスを介して相互に接続されている。ユーザ端末40の制御部41、記憶部42、通信部43及び表示部44の各部は、登録者端末20の制御部21、記憶部22、通信部23及び表示部25の各部と同様の構成を有するので、これらの構成についての詳細な説明は省略する。センサ部45は、例えば地磁気センサ、傾きセンサ、GPS(Global Positioning System )センサ等の複数のセンサの組合せであり、ユーザ端末40の位置及び向きを検出する。例えばセンサ部45は、GPSセンサによってユーザ端末40の現在位置を検出し、地磁気センサによってユーザ端末40の向きを検出し、傾きセンサによってユーザ端末40の重力方向(即ち、鉛直方向の下向き)に対する傾きを検出する。センサ部45は、ユーザ端末40の位置及び向きを検出することにより、ユーザ端末40を頭部に装着しているユーザの頭部の位置及び向きを検出できる。ユーザ端末40は、上述した構成のほかに、マウス、キーボード、タッチパネル等の入力部を備えていてもよい。
図4は、サーバ10に記憶されるDB12a,12bの構成例を示す模式図であり、図4Aは画像情報DB12aを、図4Bはパノラマ画像DB12bをそれぞれ示す。画像情報DB12aは、パノラマ画像DB12bに記憶されたパノラマ画像に関する情報を記憶する。図4Aに示す画像情報DB12aは、画像ID列、撮影部屋情報列、部屋サイズ列、撮影位置情報列、撮影方向列等を含む。画像ID列は、カメラ30を用いて撮影されてパノラマ画像DB12bに登録されたパノラマ画像に割り当てられた識別情報を記憶する。撮影部屋情報列は、画像IDに対応付けて、パノラマ画像を撮影した部屋に関する情報を記憶し、例えば撮影した部屋の住所、建物名及び部屋番号、ランドマーク名、緯度及び経度等を用いることができる。部屋サイズ列は、画像IDに対応付けて、パノラマ画像を撮影した部屋のサイズを示す情報を記憶し、撮影位置情報列は、パノラマ画像の撮影位置を示す情報を記憶し、撮影方向列は、パノラマ画像の撮影方向の方角を示す情報を記憶する。
図5は、部屋サイズ及び撮影位置情報を示す説明図である。図5に示すように、撮影場所である部屋(撮影空間)を略直方体形状と見なし、例えば床面の一隅を原点0とし、床面の短辺方向をX軸方向とし、床面の長辺方向をZ軸方向とし、床面からの高さ方向をY軸方向とした座標系を用いて、部屋サイズ及び撮影位置を規定する。よって、部屋サイズは、例えばX軸方向の長さXr、Y軸方向の長さYr、Z軸方向の長さZrによって示され、撮影位置は、座標(Xc,Yc,Zc)によって示される。このような情報を用いて部屋サイズ及び撮影位置の情報が画像情報DB12aに登録される。なお、撮影空間のサイズ及び撮影空間に対する撮影位置を特定できる情報であれば、このような座標系を用いる情報に限定されない。
画像情報DB12aに記憶される画像IDは、サーバ10が新たなパノラマ画像を通信部13にて取得した場合に、制御部11によって発行されて記憶される。画像情報DB12aに記憶される画像ID以外の情報は、制御部11が通信部13を介してパノラマ画像と共に取得した場合に、制御部11によって記憶される。画像情報DB12aの記憶内容は図4Aに示す例に限定されず、撮影対象の空間に関する各種の情報が記憶されてもよい。
パノラマ画像DB12bは、カメラ30を用いて撮影されたパノラマ画像を記憶する。図4Bに示すパノラマ画像DB12bは、画像ID列、撮影画像列等を含み、画像IDに対応付けてパノラマ画像を記憶する。なお、撮影画像(パノラマ画像)のデータは、パノラマ画像DB12bに記憶されずに、記憶部12の所定領域又はサーバ10に接続された外部記憶装置に記憶されてもよい。この場合、撮影画像列は、パノラマ画像のデータを読み出すための情報(例えばデータの記憶場所を示すファイル名)を記憶する。パノラマ画像DB12bには、サーバ10が新たなパノラマ画像を通信部13にて取得した場合に、制御部11によって発行された画像IDと、取得したパノラマ画像とが対応付けて記憶される。パノラマ画像DB12bの記憶内容は図4Bに示す例に限定されず、例えば撮影日時、撮影者の情報等が記憶されてもよい。また、画像情報DB12a及びパノラマ画像DB12bを1つのDBで構成してもよい。例えば、画像情報DB12aにパノラマ画像を記憶する構成としてもよい。
図6は、カメラ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が撮影時に行う処理について説明する。図7は、撮影画像の構成を示す説明図である。図7Aは、全天球画像を示す模式図である。図7Bは、図7Aの全天球画像を正距円筒図法により展開した画像を示す模式図である。カメラ30の制御部31は、シャッターボタン34から受け付けた指示に基づいて撮影部35による撮影を行った場合、第1光軸側で撮影した画像と第2光軸側で撮影した画像とを合成することにより、図7Aに示すように撮影位置を撮影中心C点とする全天球画像を生成する。
全天球画像上の各画素の位置を定める座標系について説明する。図6を使用して説明したように、カメラ30は板状部38の長辺方向を上下方向に向けた状態で撮影する。以後の説明では、前後左右方向を含む面を水平面と記載する。全天球画像上の画素の位置は、直交座標系及び極座標系により表現することができる。直交座標系は、図6に示した右方向を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は、図7Bに示すように、全天球画像を方位角φ=0の線に沿って切断して、正距円筒図法により、横軸を方位角φとし縦軸を天頂角θとする平面に展開した長方形の撮影画像(以下では、パノラマ画像という)を生成する。このとき、方位角φ及び天頂角θをそれぞれ0~1の範囲のu値及びv値に正規化し、横軸をu軸とし縦軸をv軸とする長方形のパノラマ画像を生成する。このパノラマ画像を構成する各画素には、全天球画像における各画素の輝度(画素値)が割り当てられる。なお、図7Bに示すように、長方形(平面)のパノラマ画像は、左下を原点(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を用いて撮影対象の空間内で撮影を行い、取得したパノラマ画像を登録者端末20に取り込む。このとき、カメラ30の制御部31は、撮影中心C点の位置情報(撮影位置情報)及び撮影方角と、図7Bに示すようなパノラマ画像とを通信部33から登録者端末20へ送信する。なお、カメラ30の制御部31は、図7Bに示すパノラマ画像の代わりに、図7Aに示すような全天球画像の撮影画像を登録者端末20へ送信してもよく、この場合、登録者端末20が、全天球画像から、図7Bに示すパノラマ画像を生成する処理を行ってもよい。また、全天球画像からパノラマ画像を生成する処理は、パノラマ画像を記憶するサーバ10で行ってもよい。この場合、カメラ30によって撮影された全天球画像が、登録者端末20によってサーバ10へ送信され、サーバ10が、全天球画像からパノラマ画像を生成する処理を行う。なお、カメラ30は、Exif(Exchangeable image file format)形式を使用することにより、撮影位置情報及び撮影方角と撮影画像とを一つのファイルで送信することが可能である。サーバ10の制御部11は、登録者端末20を介してカメラ30から取得した撮影位置情報及び撮影方角とパノラマ画像とを対応付けて記録する。
以下に、本実施形態の情報処理システム100における各装置が行う処理について説明する。図8は、パノラマ画像の登録処理手順の一例を示すフローチャート、図9は登録画面例を示す模式図である。図8では左側に登録者端末20が行う処理を、右側にサーバ10が行う処理をそれぞれ示す。まず登録者は、撮影対象の部屋内部でカメラ30を用いて撮影を行い、パノラマ画像を撮影位置及び撮影方角の情報と共に取得しておく。なお、撮影位置及び撮影方角は予め決定されていてもよく、その場合、カメラ30は登録者(撮影者)又は治具等によって所定の撮影位置及び撮影方角に固定された状態で撮影を行う。カメラ30の制御部31は、シャッターボタン34からの指示に基づいて撮影部35による撮影を行い、図7Aに示すような全天球画像を生成し、更に全天球画像から図7Bに示すような平面のパノラマ画像を生成する。制御部31は、例えば登録者端末20からの要求に応じて、取得したパノラマ画像を登録者端末20へ送信する。なお、撮影位置及び撮影方角の情報がカメラ30に内蔵されたセンサによって測定される場合、制御部31は、測定した撮影位置及び撮影方角の情報もパノラマ画像と共に登録者端末20へ送信する。また、撮影位置及び撮影方角の情報がカメラ30の外部のセンサによって測定される場合、外部のセンサが測定した撮影位置及び撮影方角の情報が、カメラ30経由で又は直接登録者端末20へ送信される。
登録者端末20の制御部21は、カメラ30によって取得したパノラマ画像と、このパノラマ画像の撮影位置及び撮影方角の情報とを取得しておく(S11)。登録者は、パノラマ画像の登録を行う場合、サーバ10が提供するウェブサイトに登録者端末20を用いてアクセスし、ウェブサイトを介してサーバ10にパノラマ画像の登録を要求する。なお、サーバ10はウェブサーバとしての機能を有しており、パノラマ画像の登録指示を受け付けるためのウェブサイトをネットワークN経由で公開している。登録者端末20の制御部21は、サーバ10にアクセスし、パノラマ画像の登録を要求する(S12)。
サーバ10の制御部11は、パノラマ画像の登録を要求された場合、図9に示すような登録画面を登録者端末20へ送信する(S13)。登録者端末20の制御部21は、サーバ10が送信した登録画面を受信し、受信した登録画面を表示部25に表示する(S14)。図9に示す登録画面は、登録対象のパノラマ画像を指定するための入力欄25aと、撮影位置の情報を入力するための入力欄25bと、撮影方向の方角を入力するための入力欄25cと、撮影対象の部屋のサイズを入力するための入力欄25dとを有する。登録画面は、入力欄25aにファイル名が入力されてパノラマ画像が指定された場合、指定されたパノラマ画像が表示され、指定されたパノラマ画像の撮影位置の情報及び撮影方角の情報がそれぞれ入力欄25b,25cに表示される。なお、登録者端末20がカメラ30から受信したパノラマ画像に撮影位置又は撮影方角の情報が付加されていない場合、入力欄25b,25cに撮影位置の情報又は撮影方角の情報は表示されないので、例えば登録者が入力部24を介して入力する。登録者は、予め撮影対象の部屋のサイズを測定しておき、登録画面において、撮影対象の部屋サイズを入力部24から入力欄25dに入力する。登録画面は、画面を介して入力された各情報の登録を指示するための登録ボタンと、登録処理の終了(中止)を指示するためのキャンセルボタンとを有する。
制御部21(受付部)は、登録画面において入力欄25aに対してパノラマ画像の指定を受け付け、入力欄25b,25cに対して撮影位置及び撮影方角の情報の入力を受け付け、入力欄25dに対して部屋サイズの情報の入力を受け付ける(S15)。制御部21は、登録画面中の登録ボタンが操作されたか否かに応じて、登録画面を介して入力された情報の登録指示を受け付けたか否かを判断する(S16)。制御部21は、登録指示を受け付けていないと判断した場合(S16:NO)、ステップS15の処理に戻り、登録画面を介した各情報の受付を継続する。登録指示を受け付けたと判断した場合(S16:YES)、即ち、登録画面中の登録ボタンが操作された場合、制御部21(送信部)は、画面を介して受け付けたパノラマ画像、撮影位置及び撮影方角の情報、部屋サイズの情報を対応付けてサーバ10へ送信する(S17)。
サーバ10の制御部11(取得部)は、登録者端末20が送信したパノラマ画像、撮影位置及び撮影方角の情報、部屋サイズの情報を受信し、受信した各情報を対応付けて登録する(S18)。具体的には、制御部11は、受信したパノラマ画像に画像IDを発行し、画像IDに対応付けて、受信した部屋サイズの情報、撮影位置の情報及び撮影方角の情報を画像情報DB12aに記憶する。また、制御部11は、画像IDに対応付けて、受信したパノラマ画像をパノラマ画像DB12bに記憶する。なお、サーバ10が登録者端末20から撮影場所の部屋の情報(撮影部屋情報)を受信していた場合、部屋の情報も画像情報DB12aに記憶する。上述した処理により、撮影対象の部屋で撮影されたパノラマ画像が、撮影位置及び撮影方角の情報と、部屋のサイズの情報と共にサーバ10に登録される。なお、パノラマ画像は、1つの部屋において異なる複数の撮影位置で撮影してもよいが、それぞれのパノラマ画像について上述した処理を行うことによって、それぞれのパノラマ画像をサーバ10に登録する。
サーバ10に登録されるパノラマ画像は、画像の上下方向が撮影空間の鉛直方向に一致した状態となっている。なお、画像の上下方向が撮影空間の鉛直方向に一致しているパノラマ画像は、天頂補正済みのパノラマ画像という。このようなパノラマ画像は、カメラ30の上下方向が鉛直方向となる状態で撮影を行うことによって取得してもよい。また、撮影時のカメラ30の情報を用いて撮影後のパノラマ画像に補正処理を行うことによって天頂補正済みのパノラマ画像を生成してもよい。例えばカメラ30に設けられた加速度センサを用いて重力加速度を検出することにより、撮影時にカメラ30が重力方向(即ち、鉛直方向の下向き)からどれだけ傾いていたかを検知できる。この情報を用いて撮影後のパノラマ画像における鉛直方向の傾きを補正(天頂補正)することによって、画像の上下方向が鉛直方向に一致するパノラマ画像を得ることができる。なお、天頂補正処理は、カメラ30、登録者端末20又はサーバ10のいずれで実行されてもよい。
次に、サーバ10に登録されたパノラマ画像を、ユーザ端末40を用いて再生(表示)する際に、ユーザ端末40及びサーバ10が行う処理について説明する。図10はパノラマ画像の再生処理手順の一例を示すフローチャート、図11は対応付け処理手順の一例を示すフローチャート、図12~19は再生処理を説明するための模式図である。なお、図11に示す対応付け処理は図10に示す再生処理に含まれる処理である。図10では左側にユーザ端末40が行う処理を、右側にサーバ10が行う処理をそれぞれ示す。サーバ10は、以下の処理を記憶部12に記憶してある制御プログラム12Pに従って制御部11によって実行するが、処理の一部を専用のハードウェア回路で実現する構成でもよい。
ユーザ端末40の制御部41は、センサ部45によって、ユーザ端末40を装着したユーザの頭部の位置及び向きを検出し、位置及び向きを示す情報を取得する(S21)。例えば制御部41は、センサ部45のGPSによってユーザ端末40の現在位置を検出し、センサ部45の地磁気センサによってユーザ端末40の向きを検出する。制御部41は、取得した位置及び向きを示す情報を通信部43にてサーバ10へ送信する(S22)。センサ部45が検出するユーザ端末40(ユーザ)の位置が、撮影空間内における仮想視点の位置となるので、制御部41は、仮想視点の位置情報を通信部43から送信する送信部として機能する。制御部41は、位置及び向きの検出及び送信を、所定時間間隔で行ってもよいし、例えば入力部(図示せず)を介したユーザからの指示に従って行ってもよい。
一方、サーバ10の制御部11は、再生すべきパノラマ画像をパノラマ画像DB12bから選択して読み出す(S23)。再生すべきパノラマ画像は、例えば入力部14又はユーザ端末40を介して指定される。なお、入力部14又はユーザ端末40を介して、再生すべきパノラマ画像を撮影した部屋が指定され、制御部11は、指定された部屋で撮影されたパノラマ画像をパノラマ画像DB12bから読み出してもよい。
サーバ10の制御部11(受付部、受信部)は、ステップS22でユーザ端末40が送信した位置(仮想視点の位置)及び向きを示す情報を通信部13にて受信した場合(受け付けた場合)、受信した位置及び向きを示す情報を記憶部12に逐次記憶する。よって、制御部11は、ユーザ端末40から位置及び向きを示す情報を受信した場合、前回受信した情報と比較して、ユーザの位置が変化したか否かを判断する(S24)。なお、ユーザ端末40から送信されるユーザの位置は、撮影空間内の仮想視点の位置を示しており、仮想視点は、例えばパノラマ画像の再生処理の開始時点では、撮影空間の中央位置等の所定位置とする。従って、サーバ10の制御部11は、最初にユーザの位置を受信した場合、受信したユーザの位置に対応する仮想視点の位置を撮影空間内の所定位置とし、以降に受信するユーザの位置に対応する仮想視点は、ユーザの移動に伴って移動させる(変更する)。ユーザの位置(仮想視点の位置)が変化していないと判断した場合(S24:NO)、制御部11は、ユーザの位置が変化するまで、ユーザ端末40から位置及び向きを示す情報を受信する処理を継続する。
ユーザの位置が変化したと判断した場合(S24:YES)、制御部11はまず、ステップS23で読み出したパノラマ画像に対して方位角方向の補正(方位角補正)を行う(S25)。図12は、撮影対象の部屋を天井側から見た状態を示す模式図であり、図12中の黒丸で示す箇所を撮影位置とし、白丸で示す箇所をユーザの位置(仮想視点の位置)とする。例えば図12中の矢符Aで示す方向が撮影方向であった場合、制御部11は、図12中の矢符Bで示すように仮想視点位置から撮影位置への方向を撮影方向としたパノラマ画像に方位角補正を行う。即ち、制御部11は、矢符Bで示す方向に位置する被写体が画像の中央に写っている状態のパノラマ画像に補正する。具体的には、撮影時の撮影方向(方角)が南西方向であり(カメラ30の第1光軸が南西方向に一致した状態で撮影された場合)、仮想視点位置から撮影位置への方向が北方向であったとする。この場合、制御部11は、パノラマ画像全体を画像の左右幅の3/8(全周2πに対するズレ量3π/4の比率)だけ左方向に平行移動させることにより、北向方向が画像の中央に一致するパノラマ画像に補正できる。なお、このとき、パノラマ画像の右端の3/8の領域には、平行移動によってパノラマ画像の左端から削除した3/8の領域をそのままコピーすればよい。これにより、パノラマ画像DB12bから読み出したパノラマ画像を、仮想視点位置から撮影位置への方向を撮影方向としたパノラマ画像に方位角方向を補正することができる。なお、制御部11は、取得したユーザの位置における高さが、ステップS23で読み出したパノラマ画像の撮影位置の高さに一致しない場合、パノラマ画像に対して天頂角方向の補正を行っておく。これにより、仮想視点の高さと、パノラマ画像の撮影位置の高さとを一致させることができる。
次に制御部11(対応付け部)は、撮影位置で撮影したパノラマ画像中の各画素と、仮想視点から見た状態のパノラマ画像中の各画素とを対応付ける対応付け処理を行う(S26)。本実施形態では、撮影位置で撮影したパノラマ画像(以下では撮影画像という)と、仮想視点から見た状態のパノラマ画像(以下では仮想画像という)とにおいて、撮影画像及び仮想画像に係る全天球と、撮影位置及び仮想視点位置を結ぶ直線とが交差する2点を通る全天球上の複数の線上の画素を対応付ける。なお、このような線をエピポーラ線という。
ここで、エピポーラ線について説明する。図13は撮影空間内の2箇所で撮影したパノラマ画像の例を示す模式図、図14はエピポーラ線の例を示す模式図である。なお、図13Aは第1撮影位置で撮影したパノラマ画像(第1画像)であり、図13Bは第2撮影位置で撮影したパノラマ画像(第2画像)であり、正距円筒図法により長方形に展開されたパノラマ画像である。図13に示す2つのパノラマ画像は、共に画像の上下方向が鉛直方向に一致し、撮影方向(カメラ30の正面方向)が同じであるとする。具体的には撮影方向が第2撮影位置から第1撮影位置を見た方向である画像とする。このようなパノラマ画像間では、撮影方向及び撮影方向の反対方向(カメラ30の背面方向)に対応する画像中の位置(図13,14中の点D1及び点D2,点D3及び点D4)を通る複数の線(曲線)上に、同じ被写体が写っている。また同じ被写体は、2箇所の撮影位置間の視差に応じてパノラマ画像中の異なる位置に写っている。例えば図13Aに示す第1画像において線La2上に写っている被写体La2aは、図13Bに示す第2画像においても線La2上に写っている。図14には、第1撮影位置及び第2撮影位置のそれぞれで撮影したパノラマ画像のイメージを球体で示しており、球体の表面上の曲線La1,Lb1はそれぞれエピポーラ線を示している。ここで、第2撮影位置から第1撮影位置に向かう方向を天頂方向とした極座標系(以下では共通軸極座標系という)を用いる。なお、第2撮影位置から第1撮影位置に向かう方向は、撮影方向(カメラ30の正面方向)であり、図7Aに示した直交座標系のZ軸の負方向(-Z軸方向)である。共通軸極座標系の方位角には、撮影空間のX軸の負方向を基準として、Z軸の負方向から見てZ軸を中心に反時計回りの角度φC を用いる。また共通軸極座標系の天頂角には、Z軸の負方向を基準として、水平面上を撮影位置を中心としてZ軸の正方向に向かう角度θC を用いる。以下では、共通軸極座標系と区別するために、パノラマ画像の各画素の位置を表現するための極座標系をローカル極座標系と呼び、ローカル極座標系の座標を(rL ,θL ,φL )で表す。
エピポーラ線は、それぞれのパノラマ画像が、2つの撮影位置を結ぶ直線(-Z軸)と交差する2点D1及びD2,D3及びD4を通り、パノラマ画像に係る全天球上の線である。またそれぞれのエピポーラ線は、共通軸極座標系において天頂角θC 方向に並ぶ線(画素列)であり、図7Aに示す直交座標系における水平面であるXZ平面(共通軸を含む平面)を基準として、-Z軸を中心に、共通軸極座標系における方位角方向に回転させて設けられた線である。図14に示す共通軸極座標系で表したエピポーラ線を正距円筒図法により展開すると、図13に示すようにパノラマ画像上にエピポーラ線La1,La2…を表すことができる。なお、共通軸極座標系の座標(rC ,θC ,φC )をローカル極座標系の座標(rL ,θL ,φL )に変換する場合、一旦直交座標系の座標に変換した後にローカル極座標系の座標に変換する。なお、ここでの直交座標系を、パノラマ画像の各画素の位置を表現するための直交座標系と区別するためにワールド直交座標系と呼び、ワールド直交座標系の座標を(xW ,yW ,zW )で表す。
図15は、座標系の関係を示す説明図である。図15Aはローカル極座標系及びワールド直交座標系の関係を示し、図15Bはワールド直交座標系及び共通軸極座標系の関係を示す。ワールド直交座標系には、鉛直上方向をYW 軸の正側、水平面をXW 軸及びZW 軸で表す3次元の右手系の直交座標系を用いる。よって、空間内の任意の位置Pは、ワールド直交座標系の座標(xW ,yW ,zW )で表すことができる。図15Aに示すようにローカル極座標系は、鉛直上方向(YW 軸の正側)を基準とした天頂角θL と、鉛直上方向から見てZW 軸の正側を基準として水平面であるXW ZW 平面内の反時計回りの方位角φL と、原点0からの距離rL とによって表される。よって、3次元空間中の任意の位置Pは、ワールド直交座標系の座標(xW ,yW ,zW )とローカル極座標系の座標(rL ,θL ,φL )とで表すことができ、ワールド直交座標系の座標(xW ,yW ,zW )及びローカル極座標系の座標(rL ,θL ,φL )は以下の(5)式及び(6)式によって相互に変換可能である。
なお、ローカル極座標系の座標値(rL ,θL ,φL )で表される全天球画像は、正距円筒図法により、横軸及び縦軸をそれぞれ、方位角φL 及び天頂角θL をそれぞれ0~1の範囲に正規化したu値(u軸)及びv値(v軸)とする平面(長方形)の画像に展開できる。ここで、ローカル極座標系の方位角φL 及び天頂角θL と、u値及びv値とは、以下の(7)式及び(8)式によって相互に変換可能である。
図15Bに示すように共通軸極座標系は、ワールド直交座標系のZW 軸の負方向を基準とした天頂角θC と、ZW 軸の負方向から見てXW 軸の負側を基準としてXW YW 平面内の反時計回りの方位角φC と、原点0からの距離rC とによって表される。よって、3次元空間中の任意の位置Pは、ワールド直交座標系の座標(xW ,yW ,zW )と共通軸極座標系の座標(rC ,θC ,φC )とで表すことができ、ワールド直交座標系の座標(xW ,yW ,zW )及び共通軸極座標系の座標(rC ,θC ,φC )は以下の(9)式及び(10)式によって相互に変換可能である。
本実施形態では、図14中の第1撮影位置を撮影位置とし、第2撮影位置を仮想視点位置として、撮影画像及び仮想画像において、複数のエピポーラ線上の点(画素)の対応付けを行う。なお、以下では、共通軸極座標系における方位角方向に所定角度間隔で設けられた複数のエピポーラ線上にそれぞれ等間隔に配置される複数の点(画素)を対応付ける。例えば、共通軸極座標系における方位角方向に5°間隔で設けられた72本のエピポーラ線上にそれぞれ等間隔に配置された100個の画素を対応付けるが、エピポーラ線の数及び方位角方向の間隔、並びに各エピポーラ線上の画素の数はこれに限らず、任意の数又は任意の間隔とすることができる。以下では、説明の簡略化のため、撮影位置及び仮想視点位置は、同じ高さで、図12に示すようにZ軸方向に並んでいるものとする。
図11に示す対応付け処理において、制御部11はまず、対応付けに用いるエピポーラ線の数Neと、各エピポーラ線上の点(特徴点)の数Npとを所定値に初期設定する(S41)。なお、初期設定すべき所定値は予め記憶部12に記憶してあってもよく、また、入力部14を介して変更可能であってもよい。次に制御部11は、処理中のエピポーラ線を示すエピポーラIDIeを0に設定する(S42)。なお、例えば共通軸極座標系の方位角φC が0ラジアンのエピポーラ線をエピポーラIDIeが0のエピポーラ線とし、方位角φC の増加に伴いエピポーラIDIeを1ずつ増加させていくことにより、方位角φC が0ラジアンのエピポーラ線から順に処理を行う。
制御部11は、エピポーラIDがIeのエピポーラ線(ここではIe=0のエピポーラ線)の長さLを算出する(S43)。なお、エピポーラIDがIeのエピポーラ線の共通軸極座標系の方位角φC は、φC=2π×Ie/Neで表される。図16はエピポーラ線の長さLを示す説明図である。図16Aは撮影空間を天井側から見た状態を示し、図16B,Cは、撮影空間をX軸負方向から見た状態(図16Aにおける下側から見た状態)を示す。なお、図16B,C中の一点鎖線は、手前側(図16Aにおける下側)の壁の天井側の端辺と床面側の端辺とを示している。また、図16B,Cにおける左側の壁を前方壁とし、右側の壁を後方壁とし、手前側及び奥側の壁と天井と床面とをまとめて側壁(4側壁)とする。撮影空間は略直方体形状であると仮定しているので、いずれの方位角φC のエピポーラ線も、前方壁及び後方壁と、4側壁のいずれかとを通る。図16B,Cに示すエピポーラ線は、前方壁と奥側の壁と後方壁とを通っている。図16Bで分かるように、撮影画像及び仮想画像において同一の方位角φC のエピポーラ線は同じ長さとなる。また、撮影位置及び仮想視点位置を結んだ直線が前方壁と交差する点を前方極点Pfとし、後方壁と交差する点を後方極点Prとし、前方壁と奥側の壁との境界においてエピポーラ線が通る点を中間点Qfとし、奥側の壁と後方壁との境界においてエピポーラ線が通る点を中間点Qrとする。図16Bに示すエピポーラ線において、前方壁を通る部分、即ち前方極点Pfと中間点Qfとの間の長さSφC と、後方壁を通る部分、即ち中間点Qrと後方極点Prとの間の長さSφC とは同じである。また、前方壁の縦方向及び横方向の長さが分かっており、前方壁における前方極点Pf及び中間点Qfの位置も分かっているので、前方壁及び後方壁を通る部分の長さSφC は幾何学計算により算出できる。また、図16Bに示すエピポーラ線において、奥側の壁を通る部分、即ち中間点Qfと中間点Qrとの間の長さは、撮影空間のZ軸方向の長さZrに一致する。よって、方位角φC のエピポーラ線の長さは、LφC =2SφC +Zrとなる。
次に制御部11は、エピポーラIDがIeのエピポーラ線(ここではIe=0)上に等間隔にNp個の特徴点を設定し、それぞれの特徴点について、撮影位置及び仮想視点位置のそれぞれから見た場合の共通軸極座標系の天頂角を特定する。具体的には、制御部11は、処理中の特徴点を示す特徴点IDIpを0に設定する(S44)。なお、例えば1つのエピポーラ線において、共通軸極座標系の天頂角θC が0ラジアンの特徴点を特徴点IDIpが0の特徴点とし、天頂角θC の増加に伴い特徴点IDIpを1ずつ増加させていくことにより、天頂角θC が0ラジアンの特徴点から順に処理を行う。例えば制御部11は、図16Cに示すエピポーラ線上において、前方極点Pfから中間点Qf及び中間点Qrを通り後方極点Prに至るまで、所定間隔(等間隔)で特徴点Fを設定し、各特徴点Fについて処理を行う。
制御部11は、特徴点IDがIpの特徴点(ここではIp=0の特徴点)について、前方極点Pfからの長さLpを算出する(S45)。前方極点Pfから特徴点Fまでの長さLpは、Lp=L×Ip/(Np-1)で算出できる。なお、Lは、ステップS43で算出したエピポーラ線の長さであり、Npは、エピポーラ線上に設定される特徴点の個数である。次に制御部11は、算出した長さLpに基づいて、壁上の特徴点Fの位置を表す直交座標系の座標値(xf ,yf ,zf )を算出する(S46)。ここではまず、中間点Qf及び中間点Qrの直交座標系の座標値を算出することにより、前方極点Pf及び後方極点Prの座標値と、中間点Qf及び中間点Qrの座標値とに基づいて、特徴点Fの位置の座標(xf ,yf ,zf )を算出できる。なお、図16Cに示すように、ここでは仮想視点は撮影位置をZ軸方向に移動させた位置とするので、撮影位置Cを直交座標系の座標(xc ,yc ,zc )とした場合に仮想視点Vは直交座標系の座標(xc ,yc ,zv )で表われされる。よって、前方極点Pfは直交座標系の座標(xc ,yc ,0)で表わされ、後方極点Prは直交座標系の座標(xc ,yc ,Zr)で表わされる。
中間点Qfは、前方壁と奥側の側壁との境界線と、前方極点Pfから共通軸極座標系の方位角φC 方向へ向かう半直線との交点であり、直交座標系の座標(xqf,yqf,0)とする。また、中間点Qrは、後方壁と奥側の側壁との境界線と、後方極点Prから共通軸極座標系の方位角φC 方向へ向かう半直線との交点であり、直交座標系の座標(xqr,yqr,Zr)とする。なお、xqf=xqrであり、yqf=yqrである。また、エピポーラ線の長さLは、線分PfQfの長さと、線分QfQrの長さ(Zr)と、線分QrPrの長さとの合計であり、以下の(11)式によって表される。
図17はエピポーラ線を示す模式図であり、図17Aは、撮影位置又は仮想視点から前方壁を見た状態を示し、図17Bは、エピポーラ線を含む平面を天井側から見た状態を示す。なお、図17Bに示す撮影空間は、前方壁を左辺、後方壁を右辺、奥側の側壁を上辺、手前側の側壁を下辺として示している。前方壁はXY平面(Z=0)上の矩形であり、X軸方向の大きさがXr、Y軸方向の大きさがYrである矩形と見なすことができる。図17Aから分かるように、前方極点Pfから共通軸極座標系の方位角φC 方向に伸びる半直線Hは、XY平面内では前方極点PfからX軸負方向を基準として時計回りに角度φC 方向に伸びる半直線となる。前方極点Pfは矩形(前方壁)内部にあるので、前方極点Pfから角度φC 方向に伸びる半直線Hは、矩形の4辺をそれぞれ直線と見なした場合に、4辺のうちの隣接する2辺と交差する。図17Aに示す例では、半直線Hは、矩形(前方壁)の右辺(X=Xr)及び上辺(Y=Yr)と交差し、右辺との交点を点Qfとし、上辺との交点を点Qf´とする。この2つの交点Qf,Qf´のうちで前方極点Pfに近い方の交点がここでの中間点Qfとなるので、交点Qfの直交座標系の座標値(xr,yf,0)を算出し、中間点Qfの直交座標系の座標値とする。なお、中間点Qfの座標値が算出できれば、中間点Qrの直交座標系の座標値は、座標(xr,yf,Zr)と算出できる。
中間点Qf及び中間点Qrの直交座標系の座標値を算出した後、制御部11は、前方極点Pf、中間点Qf,Qr、後方極点Prのそれぞれの座標値に基づいて、特徴点Fの座標値(xf ,yf ,zf )を算出する。図17Bに示す前方極点Pfから後方極点Prまでのエピポーラ線において、等間隔にNp個の特徴点F(F0 ~FNp-1)を設定する。なお、特徴点F0 は前方極点Pfに一致し、特徴点FNp-1は後方極点Prに一致し、前方極点Pfから後方極点Prまでの間をNp-1個に分割し、それぞれの分割点を特徴点Fとする。なお、特徴点IDがIpの特徴点FIpにおいて前方極点Pfからの長さLIpは、LIp=L×Ip/(Np-1)である。よって、制御部11は、LIp<SφC の場合、即ち、特徴点Fが前方極点Pfと中間点Qfとの間にある場合、前方極点Pfから中間点Qfに向かって前方極点Pfから距離がLIpの位置をそれぞれ特徴点Fとする。また制御部11は、SφC ≦LIp<SφC +Zrの場合、即ち、特徴点Fが中間点Qfと中間点Qrとの間にある場合、中間点Qfから中間点Qrに向かって中間点Qfからの距離がLIp-SφC の位置をそれぞれ特徴点Fとする。更に、制御部11は、SφC +Zr≦LIpの場合、即ち、特徴点Fが中間点Qrと後方極点Prとの間にある場合、中間点Qrから後方極点Prに向かって中間点Qrからの距離がLIp-(SφC +Zr)の位置をそれぞれ特徴点Fとする。
制御部11は、特徴点IDがIpの特徴点FIpの直交座標系の座標値を算出した後、撮影位置C及び仮想視点Vのそれぞれから特徴点FIpを見た場合の共通軸極座標系における天頂角θc,θvをそれぞれ算出する(S47)。図18は、共通軸極座標系の天頂角の算出処理の説明図である。ここでは、前方極点Pfからi番目の特徴点Fiについて、撮影位置C及び仮想視点Vでの天頂角θc,θvを算出する。なお、天頂角θcは、撮影位置Cから前方極点PfへのベクトルCPfと、撮影位置Cから特徴点FiへのベクトルCFiとがなす角度であり、0≦θc≦πの範囲をとる。3次元の直交座標系においてベクトルCFiを(vx ,vy ,vz )とすると、天頂角θcの正接tanθcは、以下の(12)式で表される。従って、天頂角θcは、以下の(13)式に基づいて算出できる。
仮想視点Vでの天頂角θvについても同様に算出でき、撮影位置C及び仮想視点Vでの天頂角θc,θvを算出した場合、制御部11は、算出した天頂角θc,θvを対応付けて記憶部12に記憶する(S48)。図19は、天頂角の対応付けテーブルを示す模式図である。制御部11は、例えば記憶部12に図19に示すような対応付けテーブルを生成し、算出した天頂角θc,θvを、エピポーラID及び特徴点IDに対応付けて記憶する。
制御部11は、1つの特徴点Fについて撮影位置C及び仮想視点Vでの天頂角θc,θvを算出して記憶した後、特徴点ID(Ip)に1を加算する(S49)。そして制御部11は、加算後の特徴点ID(Ip)がNpに一致するか否かを判断する(S50)。即ち、制御部11は、エピポーラIDがIeのエピポーラ線について、後方極点Prに一致する特徴点FNp-1における撮影位置C及び仮想視点Vでの天頂角θc,θvを算出したか否かを判断する。制御部11は、加算後の特徴点ID(Ip+1)がNpに一致しないと判断した場合(S50:NO)、ステップS45の処理に戻り、特徴点IDがIp+1の特徴点について、ステップS45~S48の処理を行う。加算後の特徴点ID(Ip+1)がNpに一致したと判断した場合(S50:YES)、即ち、エピポーラIDがIeのエピポーラ線について全ての特徴点における撮影位置C及び仮想視点Vでの天頂角θc,θvの算出が完了した場合、制御部11は、エピポーラID(Ie)に1を加算し(S51)、加算後のエピポーラID(Ie+1)がNeに一致するか否かを判断する(S52)。ここでは、制御部11は、全てのエピポーラ線について上述した処理を終了したか否かを判断する。加算後のエピポーラID(Ie+1)がNeに一致しないと判断した場合(S52:NO)、制御部11は、ステップS43の処理に戻り、エピポーラIDがIe+1のエピポーラ線について、ステップS43~S50の処理を行う。加算後のエピポーラID(Ie+1)がNeに一致したと判断した場合(S52:YES)、即ち、全てのエピポーラ線について上述した処理を終了した場合、制御部11は図10に示す処理に戻る。
制御部11(生成部)は、図11に示す対応付け処理を終了した後、対応付け処理の結果(具体的には対応付けテーブルの記憶内容)に基づいて、撮影位置で撮影したパノラマ画像から、仮想視点での仮想画像を生成する(S27)。対応付けテーブルにおいて、エピポーラIDがIeのエピポーラ線の共通軸極座標系の方位角φC は、φC =2π×Ie/Neで表される。よって、制御部11は、対応付けテーブルの記憶内容に基づいて、パノラマ画像において共通軸極座標系の座標(θC ,φC )の位置の画素の画素値を、仮想画像において共通軸極座標系の座標(θV ,φC )の位置の画素の画素値にコピーすることによって仮想画像を生成できる。なお、制御部11は、対応付けが行われていない画素については、例えばパノラマ画像において、対応付けが行われた4つの画素を頂点とする矩形内に含まれる各画素の画素値を、仮想画像において前記4つの画素にそれぞれ対応付けられている4つの画素を頂点とする矩形内に含まれる各画素の画素値にコピーすればよい。このように、所定数のエピポーラ線のそれぞれにおける所定数の特徴点についてのみパノラマ画像上の画素と仮想画像上の画素との対応付けを行い、他の画素については、対応付けが行われている画素に従った対応付けを行う。これにより、制御部11による演算負荷が軽減でき、仮想画像を高速に生成することができる。なお、制御部11は、上述した処理によってパノラマ画像から仮想画像を生成する構成に限定されず、撮影位置と仮想視点位置との間の射影幾何学的関係に応じた射影変換処理を用いて仮想画像を生成してもよい。
制御部11(送信部)は、仮想画像を生成した場合、生成した仮想画像を通信部13にてユーザ端末40へ送信する(S28)。ユーザ端末40の制御部41(受信部)は、サーバ10が送信した仮想画像を通信部43にて受信し、受信した仮想画像を表示部44に表示する(S29)。ユーザ端末40の制御部41は、ユーザの位置及び向きの検出及び送信を、所定時間間隔又はユーザからの指示に従って行い、サーバ10の制御部11は、ユーザ端末40からユーザの位置及び向きの情報を受信する都度、ステップS24~S28の処理を行う。これにより、実写データに基づいて、撮影空間内の任意の視点から見た画像(仮想画像)を生成する情報処理システム100を提供することができる。上述した処理により、ユーザは、撮影対象の部屋の中を移動しながら、部屋の広さ、家具の配置、窓の外の景色等を感覚的に把握することができる。なお、カメラ30を用いて撮影する空間は、博物館、美術館、テーマパーク、アミューズメント施設、観光地、商業施設等であってもよい。
上述した処理において、ユーザ端末40の制御部41は、ステップS21で取得した位置及び向きが、前回取得した位置及び向きに対して変化したか否かを判断し、変化した場合にのみ、取得した位置及び向きの情報をサーバ10へ送信するようにしてもよい。この場合、サーバ10の制御部11は、ステップS24の処理を行う必要がなく、ユーザ端末40から受信した位置及び向きの情報に基づいて、ステップS25以降の処理を行えばよい。
本実施形態によると、撮影したパノラマ画像に基づいて、視点位置(仮想視点位置)の移動に応じて、仮想視点から見た仮想画像が生成されてユーザ端末40で表示(再生)される。これにより、実際に撮影したパノラマ画像から視点位置を移動した効果のある映像表現(仮想画像)が得られる。よって、ユーザは自身の移動に応じて任意の位置(仮想位置)から見た状態の仮想画像を見ることができ、その際にユーザに与える違和感が抑制された仮想画像を提供できる。
本実施形態では、パノラマ画像の各画素と仮想画像の各画素との対応付けが自動的に行われる。従来、2つの画像中の画素の対応付けは手作業で行われている場合が多く、作業負担が大きいと共に、対応付けるべき画素(特徴点)を選択するために、ある程度の知識を有する人が作業を行う必要があった。しかし、本実施形態では、撮影空間のサイズ及び撮影空間における撮影位置の情報を入力すれば、2つの画像中の画素の対応付けは自動的に行われるので、作業負担が軽減できる。特に、不動産物件を撮影したパノラマ画像を処理対象とする場合、例えば不動産会社の従業員がパノラマ画像をサーバに登録することが多いが、不動産会社の従業員が画像処理に関する知識を有しない場合であっても、パノラマ画像を登録する際に、撮影空間のサイズ及び撮影位置の情報を入力すればよいので、登録作業の負担が増大しない。
本実施形態によると、HMD型のユーザ端末40を使用するので、コンピュータ等の操作に不慣れなユーザであっても容易に様々な視点から室内を見た状態の画像を確認できる情報処理システム100を提供できる。本実施形態によると、市販の全天球カメラ等を用いて撮影したJPEG(Joint Photographic Experts Group)形式等の汎用の形式の画像を使用して、様々な視点から室内を見た状態の画像を提供できる情報処理システム100を提供できる。なお、カメラ30は、全天球カメラに限定しない。たとえば、半球型の範囲を撮影可能なカメラであっても、通常の平面画像撮影用のカメラであってもよい。
(実施形態2)
本実施形態は、撮影空間内の複数の撮影位置で撮影した複数のパノラマ画像を合成して、仮想視点から見た状態の仮想画像を提供する情報処理システム100に関する。本実施形態の情報処理システム100は、実施形態1の情報処理システム100における各装置と同様の装置によって実現できる。実施形態1と共通する部分については説明を省略する。
図20は、実施形態2のパノラマ画像の再生処理手順の一例を示すフローチャートである。図20に示す処理は、図10に示す処理においてステップS25~S27の代わりにステップS61~S69の処理を追加したものである。図10に示す処理と同様のステップについては説明を省略する。なお、本実施形態のサーバ10の制御部11は、ステップS23において、再生すべきパノラマ画像として、同一の撮影空間で撮影された複数のパノラマ画像をパノラマ画像DB12bから読み出す(S23)。ここでは、例えば制御部11は2つのパノラマ画像を読み出す。
そして、制御部11は、ユーザ端末40から受信したユーザの位置が、前回受信した位置から変化したと判断した場合(S24:YES)、読み出したパノラマ画像の一方を抽出し(S61)、抽出したパノラマ画像について、方位角方向の補正(方位角補正)を行い(S62)、対応付け処理を行う(S63)。なお、ステップS62の処理は、図10中のステップS25の処理と同様であり、ステップS63の対応付け処理は、図11に示す処理と同様である。そして制御部11は、ステップS63の対応付け処理の結果を用いて、ステップS61で抽出したパノラマ画像から、仮想視点から見た中間仮想画像を生成する(S64)。なお、ステップS64の処理は、図10中のステップS27の処理と同様である。
次に制御部11は、読み出したパノラマ画像の他方を抽出し(S65)、抽出したパノラマ画像について、方位角方向の補正を行い(S66)、対応付け処理を行い(S67)、ステップS67の対応付け処理の結果を用いて、ステップS65で抽出したパノラマ画像から、仮想視点から見た中間仮想画像を生成する(S68)。なお、ここでも、ステップS66の処理は図10中のステップS25の処理と同様であり、ステップS67の対応付け処理は図11に示す処理と同様であり、ステップS68の処理は図10中のステップS27の処理と同様である。制御部11(合成部)は、上述したように2つのパノラマ画像から生成した2つの中間仮想画像を合成することによって、仮想視点から見た仮想画像を生成する(S69)。ここでは、例えば2つのパノラマ画像の撮影位置(2箇所の撮影位置)のそれぞれと、仮想視点位置との関係に応じた合成割合(合成比率)で、各パノラマ画像を合成する。具体的には、制御部11は、撮影位置のそれぞれと仮想視点位置との距離が短いほど大きい合成割合を特定し、特定した合成割合で2つのパノラマ画像を合成する。そして制御部11は、生成した仮想画像を通信部13にてユーザ端末40へ送信し(S28)、ユーザ端末40の制御部41は、サーバ10から受信した仮想画像を表示部44に表示する(S29)。
本実施形態においても実施形態1と同様の効果が得られる。また、本実施形態では、複数のパノラマ画像を合成して、仮想視点から見た仮想画像を生成するので、より精度の高い仮想画像を提供できる。なお、本実施形態において、3つ以上のパノラマ画像を合成して1つの仮想画像を生成してもよい。
上述した本実施形態は、2つのパノラマ画像のそれぞれについて、仮想画像との対応付けを行って2つの中間仮想画像を生成し、2つの中間仮想画像を合成して1つの仮想画像を生成する構成である。これにより、2つのパノラマ画像の各画素(各特徴点)を、仮想画像の画素(特徴点)を介して対応付けることができる。このほかに、2つのパノラマ画像の各画素を直接対応付けてもよい。この場合、図14中の第1撮影位置を一方のパノラマ画像の撮影位置とし、第2撮影位置を他方のパノラマ画像の撮影位置として、2つのパノラマ画像において複数のエピポーラ線上の画素(特徴点)の対応付けを行えばよい。このように対応付けられた各画素に基づいて、2つのパノラマ画像を合成することにより、仮想視点からの仮想画像を生成できる。また、このような2つのパノラマ画像間における対応付けを対応付けテーブルに記憶することにより、対応付けテーブルの記憶内容に基づいて、2箇所の撮影位置間の視差によって生じる2つのパノラマ画像間のずれを補正することができる。
(実施形態3)
本実施形態は、パソコン、スマートフォン、又は、タブレット等の汎用の情報処理装置をユーザ端末40に使用する情報処理システム100に関する。実施形態1と共通する部分については、説明を省略する。
図21は、実施形態3の画面例を示す模式図である。画面には、表示エリア441、上視線ボタン442、右視線ボタン443、下視線ボタン444、左視線ボタン445、移動ボタン446及びズームボタン447が含まれる。ユーザは、ユーザ端末40の表示部44に設けられたタッチパネルのタッチ操作、又はマウスを用いたクリック操作等により各ボタンを選択できる。
上視線ボタン442の入力を受け付けた場合、制御部41はユーザ端末40の向きが上向きに変化したという入力を受け付けた場合と同様に、表示エリア441に表示される画像の範囲を上向きに変化させる。同様に、右視線ボタン443、下視線ボタン444および左視線ボタン445の選択を受け付けた場合も、制御部41は表示エリア441に表示される画像の範囲をそれぞれの向きに変化させる。
移動ボタン446は、前後左右の領域に分割されている。移動ボタン446のそれぞれの領域の選択を受け付けた場合、制御部41はユーザ端末40の位置がそれぞれの向きに変化したと判定し、仮想視点を移動させる。ズームボタン447の選択を受け付けた場合、制御部41は、表示エリア441に表示する画像の範囲を拡大または縮小する。
以上により、ユーザは画面上のボタンの操作により、たとえば撮影対象の部屋の中を自由に移動しながら、部屋の広さ、家具の配置、窓の外の景色等を感覚的に把握することができる。ユーザ端末40を傾ける操作又はジョイスティック等の操作が、画面上の各ボタンの操作の代わりに用いられてもよい。
上述した各実施形態において、カメラ30は1つであっても複数であってもよい。また、カメラ30を撮影位置に設置しておき、サーバ10からの指示に従ってカメラ30が撮影を行ってもよい。この場合、カメラ30で撮影された画像をリアルタイムでユーザ端末40のユーザに提供することができる。よって、例えば各種の部屋、劇場、動物園、植物園等で撮影した画像によって撮影対象の空間の状態をリアルタイムで確認することができる。
各実施形態で記載されている技術的特徴(構成要件)はお互いに組合せ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。