以下に、本開示の情報処理装置、情報処理方法及びプログラムについて、その実施形態を示す図面に基づいて具体的に説明する。
図1は情報処理装置の構成例を示すブロック図である。情報処理装置10は、パーソナルコンピュータ、サーバコンピュータ、大型計算機上で動作する仮想マシン等である。情報処理装置10は、制御部11、記憶部12、通信部13、入力部14、表示部15等を含み、これらの各部はバスを介して相互に接続されている。制御部11は、CPU(Central Processing Unit )、MPU(Micro-Processing Unit )又はGPU(Graphics Processing Unit)等の1又は複数のプロセッサを含み、本実施形態にかかるプログラムを実行する演算制御装置である。制御部11は、記憶部12に記憶してある制御プログラムを実行すると共に、バスを介して情報処理装置10を構成するハードウェア各部の動作を制御する。これにより、制御部11は、情報処理装置10が行うべき種々の制御処理及び情報処理を行う。
記憶部12は、RAM(Random Access Memory)、フラッシュメモリ、ハードディスク、SSD(Solid State Drive )等を含む。記憶部12は、制御部11が実行する制御プログラム及び制御プログラムの実行に必要な各種のデータ等を予め記憶している。また記憶部12は、制御部11が制御プログラムを実行する際に発生するデータ等を一時的に記憶する。記憶部12に記憶される制御プログラムには、本開示のプログラムである方位補正プログラムPが含まれ、記憶部12に記憶されるデータには、後述するカメラ20によって撮影されたパノラマ画像を蓄積するパノラマ画像DB12aが含まれる。
記憶部12に記憶される方位補正プログラムP及びパノラマ画像DB12aは、例えば通信部13を介して外部装置から取得されて記憶部12に記憶される。情報処理装置10が可搬型記憶媒体に記憶された情報を読み取る読取部等を備える場合、記憶部12に記憶される方位補正プログラムP及びパノラマ画像DB12aは、可搬型記憶媒体から読み出されて記憶部12に記憶されてもよい。なお、パノラマ画像DB12aは、情報処理装置10に接続された外部の記憶装置に記憶されてもよく、ネットワークNを介して情報処理装置10と通信可能な記憶装置に記憶されてもよい。
通信部13は、有線通信又は無線通信によって、インターネット、公衆通信回線又はLAN(Local Area Network)等のネットワークNに接続するためのインターフェイスであり、ネットワークNを介して外部装置との間で情報の送受信を行う。入力部14は、キーボード及びマウス等を含み、ユーザによる操作入力を受け付け、操作内容に対応した制御信号を制御部11へ送出する。表示部15は、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ等であり、制御部11からの指示に従って各種の情報を表示する。入力部14及び表示部15は一体として構成されたタッチパネルとすることもできる。
以下に、本実施形態の情報処理装置10によって処理されるパノラマ画像及びパノラマ画像を撮影するカメラ20について説明する。カメラ20は、撮影装置の一例である。カメラ20は、1回のシャッターで前後左右上下の撮影を行う全天球カメラを使用する。図2はカメラ20の構成例を示すブロック図である。カメラ20は、制御部21、記憶部22、通信部23、シャッターボタン24、撮影部25等を含み、これらの各部はバスを介して相互に接続されている。制御部21は、CPU、MPU又はGPU等の1又は複数のプロセッサを含み、本実施形態にかかるプログラムを実行する演算制御装置である。制御部21は、記憶部22に記憶してある制御プログラムを実行すると共に、バスを介してカメラ20を構成するハードウェア各部の動作を制御する。これにより、制御部21は、カメラ20が行うべき種々の制御処理及び情報処理を行う。
記憶部22は、RAM、フラッシュメモリ、ハードディスク、磁気テープ等を含む。記憶部22は、制御部21が実行する制御プログラム及び制御プログラムの実行に必要な各種のデータ等を予め記憶している。また記憶部22は、制御部21が制御プログラムを実行する際に発生するデータ等を一時的に記憶する。
通信部23は、有線通信又は無線通信によってネットワークNに接続するためのインターフェイスであり、ネットワークNを介して外部装置との間で情報の送受信を行う。シャッターボタン24は、静止画を撮影する指示を受け付けるボタンである。なお、制御部21は、ネットワークNを通じてシャッターボタン24の操作を受け付けてもよい。撮影部25は、撮影を行う光学系と撮像素子とを含む。制御部21は、シャッターボタン24から受け付けた指示に基づいて撮像素子が取得したデータに対して、各種画像処理を行い、撮影画像を生成する。
図3はカメラ20の外観を示す模式図である。本実施形態のカメラ20は、略長方形板状の板状部28を有する。以後の説明において、板状部28の長辺方向を上下方向に向けた状態で説明する。なお、板状部28の長辺方向を上下方向に向けた状態のカメラ20において、板状部28の第1広面281側をカメラ20の前側、第2広面282側をカメラ20の後側、板状部28の短辺方向をカメラ20の左右方向とそれぞれ記載する。第1広面281の上寄りに、ドーム状の第1レンズ271が設けられている。第2広面282の上寄りに、ドーム状の第2レンズ272が設けられている。第1レンズ271及び第2レンズ272の内側には、図示しない複数のレンズ及びプリズム等の光学部品が配置されており、180度以上の視野角を有する光学系を形成している。以後の説明では、第1レンズ271側の光学系の光軸を第1光軸、第2レンズ272側の光学系の光軸を第2光軸とそれぞれ記載する。第1光軸と第2光軸とは、同一の直線上に配置されている。また、第1広面281にシャッターボタン24が配置されている。
図4は撮影画像の構成を説明するための模式図である。図4Aは、全天球画像を示す模式図である。図4Bは、図4Aの全天球画像を正距円筒図法により展開した画像を示す模式図である。カメラ20の制御部21は、シャッターボタン24から受け付けた指示に基づいて撮影部25による撮影を行った場合、第1光軸側で撮影した画像と第2光軸側で撮影した画像とを合成することにより、図4Aに示すように撮影位置を撮影中心C点とする全天球画像を生成する。
全天球画像上の各画素の位置を定める座標系について説明する。図3を用いて説明したように、カメラ20は板状部28の長辺方向を上下方向に向けた状態で撮影する。以後の説明では、カメラ20の前後左右方向を含む面を水平面と記載する。全天球画像上の画素の位置は、直交座標系及びローカル極座標系により表現することができる。直交座標系は、図3に示した右方向をX軸の正側、上方向をY軸の正側、後ろ方向をZ軸の正側とする右手系の直交座標系を用いる。ローカル極座標系は、方位角φ及び天頂角θ、並びに撮影中心C点からの距離rによって座標が示される座標系を用いる。ローカル極座標系の方位角は、第2光軸側(Z軸の正側)を基準として、水平面内の反時計回りの角度φを示す。第1光軸(Z軸の負側)は、方位角φがπラジアンの位置に存在する。ここでπは円周率を意味する。第2光軸は、方位角φが0ラジアンかつ2πラジアンの位置に存在する。ローカル極座標系の天頂角は、撮影中心C点から天頂への上方向(Y軸の正側)を基準として、撮影中心C点を中心として下に向かう角度θを示す。上方向は、天頂角θが0ラジアンの位置に存在する。下方向(Y軸の負側)は、天頂角θがπラジアンの位置に存在する。全天球画像上の任意の画素aの位置は、直交座標系で表した座標(xa ,ya ,za )と、ローカル極座標系で表した座標(rLa,θLa,φLa)とによって表現することができる。なお、座標(x,y,z)及び座標(rL ,θL ,φL )は以下の(1)式及び(2)式によって相互に変換可能である。
カメラ20の制御部21は、全天球画像を方位角φ=0の線に沿って切断して、正距円筒図法により図4Bに示すように横軸を方位角φとし縦軸を天頂角θとする平面に展開した長方形の撮影画像(以下では、パノラマ画像という)を生成する。このパノラマ画像を構成する各画素には、全天球画像における各画素の輝度(画素値)が割り当てられる。なお、図4Bに示すように、長方形(平面)のパノラマ画像は、左下を原点(0,0)とし、原点(0,0)は、方位角φが2πラジアンで天頂角θがπラジアンの位置の画素を示す。また、パノラマ画像は、右方向に方位角φが小さくなり、パノラマ画像の右端は方位角φが0ラジアンの位置の画素であり、上方向に天頂角θが小さくなり、パノラマ画像の上端は天頂角θが0ラジアンの位置の画素である。
カメラ20の制御部21は、撮影処理を行った場合、撮影中心C点(撮影位置)の位置情報と、図4Bに示すパノラマ画像とを通信部23から情報処理装置10へ送信する。情報処理装置10の制御部(画像取得部)11は、カメラ20から送信されたパノラマ画像及び位置情報を通信部13にて取得する。なお、カメラ20の制御部21は、図4Aに示す全天球画像の撮影画像を情報処理装置10へ送信し、情報処理装置10が、全天球画像から、図4Bに示すパノラマ画像を生成する処理を行ってもよい。情報処理装置10の制御部11は、カメラ20から取得した撮影中心C点の位置情報とパノラマ画像とを対応付けてパノラマ画像DB12aに記録する。カメラ20は、Exif(Exchangeable image file format)形式を使用することにより、撮影中心C点の位置情報と撮影画像とを一つのファイルで送信することが可能である。
カメラ20は撮影によって画像データ(撮影画像データ)を取得するが、以下では画像データを単に画像という場合がある。従って、撮影画像は撮影画像データを意味する場合があり、パノラマ画像はパノラマ画像データを意味する場合がある。撮影画像は、複数の画素を含み、撮影画像データは、各画素の撮影画像中の位置(座標)を示す位置情報と各画素の輝度(画素値)とを対応付けて有する。撮影位置の情報は、例えば矩形の部屋の任意の位置を基準とした位置の情報であり、カメラ20に内蔵されているセンサにより測定されてもよく、他のセンサ等により測定されてカメラ20又は情報処理装置10へ送信されてもよい。
本実施形態では、カメラ20を用いて、賃貸住宅及び販売住宅等の不動産物件の部屋、ホテル及び民宿等の宿泊施設の部屋等を撮影する。カメラ20を用いて撮影する空間は、博物館、美術館、テーマパーク、アミューズメント施設、観光地、商業施設等であってもよい。以下では、矩形の部屋を撮影対象の空間として説明する。
図5はカメラ20の撮影位置の例を示す模式図であり、撮影対象の部屋を天井側から見た状態を示している。図5に示す撮影対象の部屋にはベッド、ソファー、テーブル、椅子、テレビ等が設置されている。本実施形態では、例えば図5中の黒丸で示す2箇所で撮影を行い、窓側の撮影位置を前側撮影位置とし、部屋の入口側の撮影位置を後側撮影位置とする。撮影位置は図5に示す例に限らず任意の2箇所とすればよく、また3箇所以上としてもよい。また本実施形態では、複数の撮影位置において、床面からの撮影高さは同じとし、例えば1m程度とするが、これに限定しない。立った状態の大人の目線の高さ、又は椅子に座った状態の大人の目線の高さ等の任意の高さから撮影を行ってもよい。カメラ20が撮影を行う位置及び高さは、カメラ20に内蔵されたセンサ又はカメラ20を外部から監視するセンサにより測定される。カメラ20を特定の位置及び高さに固定する治具等を利用して撮影を行ってもよい。
なお、それぞれの撮影位置において床面からの高さが異なる状態で撮影した場合、撮影後のパノラマ画像における天頂角方向(上下方向)を補正して、同じ高さから撮影した状態のパノラマ画像を生成してもよい。例えば、撮影後のパノラマ画像において、同一の被写体が、それぞれの画像中の上下方向における同じ位置となるように、パノラマ画像の各画素を上下方向に移動させる補正を行ってもよい。また、例えばカメラ20に設けられた加速度センサを用いて重力加速度を検出することにより、撮影時にカメラ20が重力方向(即ち、鉛直方向の下向き)からどれだけ傾いていたかを検知できる。この情報を用いて撮影後のパノラマ画像における鉛直方向の傾きを補正(天頂補正)することにより、それぞれの撮影位置で撮影したパノラマ画像を、画像の上下方向が撮影空間の鉛直方向に一致する画像に補正してもよい。
図6は、パノラマ画像の例を示す模式図である。図6Aは前側撮影位置で撮影したパノラマ画像の例であり、図6Bは後側撮影位置で撮影したパノラマ画像の例である。撮影を行う場合、撮影位置(カメラ20)の床面からの高さ、カメラ20の上下方向をそれぞれの撮影位置で一致させる。図6A,Bに示すパノラマ画像は、それぞれの撮影位置において、後側撮影位置から前側撮影位置への方向(図5中の矢符tで示す方向)にカメラ20の前側を向けて(第1光軸を一致させて)撮影された画像である。以下では、カメラ20の前側(正面方向)をカメラ20の撮影方向という。カメラ20は、カメラ20の正面方向の景色が画像中の左右方向の中央部に写り、カメラ20の後側(背面方向)の景色が画像中の左右端部に写るパノラマ画像を生成する。またカメラ20は、撮影空間の鉛直方向が画像の上下方向に一致し、撮影位置(撮影高さ)が画像の上下方向の中央に一致するパノラマ画像を生成する。よって、それぞれの撮影位置において同じ撮影方向(図5中の矢符tで示す方向)で撮影を行った場合、図5及び図6A,Bに示すように、撮影位置と同じ高さの被写体は、図6A,B中の実線で示すように、それぞれのパノラマ画像の上下方向の中央部に写る。また、矢符tで示す方向(撮影方向)に存在する被写体FPは、それぞれのパノラマ画像の中央部に写り、矢符tで示す方向の反対方向(カメラ20の背面方向)に存在する被写体RPは、それぞれのパノラマ画像の左右端部に写る。
図7及び図8は、撮影方向が異なる状態での撮影を説明するための模式図である。本実施形態の情報処理装置10によって処理されるパノラマ画像は、それぞれの撮影位置でカメラ20の撮影方向が一致していなくてもよい。即ち、それぞれの撮影位置において、カメラ20の前後方向及び左右方向は一致していなくてもよい。図7には、それぞれの撮影位置での撮影方向を破線矢符で示す。図7に示すように、前側撮影位置において、所定の高さにおける水平面上で矢符SD1で示す方向を撮影方向として撮影を行った場合、図8Aに示すようなパノラマ画像が得られる。また、後側撮影位置において、所定の高さにおける水平面上で矢符SD2で示す方向を撮影方向として撮影を行った場合、図8Bに示すようなパノラマ画像が得られる。図8A,Bのパノラマ画像から分かるように、それぞれの撮影位置において異なる撮影方向で撮影を行った場合、同じ被写体が画像中の方位角方向(左右方向)の異なる位置に写るパノラマ画像が得られる。
図8A,Bに示すように、それぞれの画像中心に写る被写体が、撮影位置を結ぶ方角の被写体でないパノラマ画像を切り替えて表示する場合、画像の遷移を滑らかに行うことができない。また、このようなパノラマ画像を合成して表示する場合、合成後のパノラマ画像に方位角方向のブレが生じ、鮮明なパノラマ画像を提供できない。よって、本実施形態の情報処理装置10は、図8A,Bに示す画像のように画像中心に写る被写体の撮影位置からの方角が、撮影位置を結ぶ方角に一致していないパノラマ画像に対して補正処理を行い、図6A,Bに示す画像のように画像中心に写る被写体の撮影位置からの方角が、撮影位置を結ぶ方角に一致しているパノラマ画像を生成する。なお、本実施形態の情報処理装置10は、図8A,Bに示すようなパノラマ画像を、図6A,Bに示すように、後側撮影位置から前側撮影位置への方向(図5中の矢符tの方向)を撮影方向とし、それぞれの画像中心に写る被写体が、後側撮影位置から前側撮影位置への方向にある被写体であるパノラマ画像にそれぞれ補正する。従って、情報処理装置10は、図8A,Bのパノラマ画像において、後側撮影位置から前側撮影位置への方向に存在する被写体FPが写っている位置を特定する必要があり、この被写体FPの画像中の位置を、以下では極点という。
次に、情報処理装置10において制御部11が方位補正プログラムPを実行することによって実現される機能について説明する。図9は、情報処理装置10の制御部11によって実現される機能を示すブロック図である。情報処理装置10の制御部11は、記憶部12に記憶してある方位補正プログラムPを実行した場合、特徴点取得部31、方位角変化特定部32、極点候補特定部33、極点特定部34、補正部35の各機能を実現する。なお、本実施形態では、これらの各機能を制御部11が方位補正プログラムPを実行することにより実現するが、これらの一部を専用のハードウェア回路で実現してもよい。
以下、図7に示す撮影対象の空間において、2箇所の前側撮影位置及び後側撮影位置においてそれぞれ異なる撮影方向で撮影した2つのパノラマ画像に対して、後側撮影位置から前側撮影位置に向かう方向に存在する被写体FPが画像の中央に位置するパノラマ画像に補正する処理について説明する。なお、以下では、前側撮影位置で撮影した図8Aに示すパノラマ画像を前側パノラマ画像といい、後側撮影位置で撮影した図8Bに示すパノラマ画像を後側パノラマ画像という。
特徴点取得部31は、前側パノラマ画像及び後側パノラマ画像において、同じ被写体が写っている位置を特徴点のペアとして取得する。例えば、図8A,Bに示すパノラマ画像において、部屋の天井に取り付けられている火災報知器の位置を特徴点Fのペアとして取得する。特徴点取得部31は、2つのパノラマ画像間で対応付けるべき特徴点を、例えばユーザ入力によって取得してもよい。この場合、例えば特徴点取得部31は、情報処理装置10の表示部15に2つのパノラマ画像を表示し、特徴点とすべき箇所(画素)を入力部14にて受け付ける。ユーザは、表示された2つのパノラマ画像において同じ被写体の同じ部分を特徴点として入力部14を介して指定する。特徴点取得部31は、入力部14を介して受け付けた2つのパノラマ画像中の特徴点の座標値を取得する。また、特徴点取得部31は、2つのパノラマ画像間で対応付けるべき特徴点を、コンピュータビジョン技術等を用いて自動的に抽出してもよい。この場合、特徴点取得部31は、2つのパノラマ画像間で類似する画素を自動的に抽出し、抽出した画素の座標値を同じ被写体の特徴点として取得する。特徴点取得部31は、例えば2組の特徴点のペアを取得する。
方位角変化特定部32、極点候補特定部33及び極点特定部34は、特徴点取得部31が取得した特徴点のペアに基づいて、前側パノラマ画像及び後側パノラマ画像のそれぞれにおける極点の位置を特定する。即ち、2つのパノラマ画像において、後側撮影位置から前側撮影位置への方向に存在する被写体(図7では被写体FP)が写っている位置(極点)を特定する。なお、パノラマ画像DB12aに記憶されている2つのパノラマ画像は、画像の上下方向が撮影空間の鉛直方向に一致し、撮影高さが画像の上下方向の中央に一致するパノラマ画像である。また、2つのパノラマ画像は、それぞれの撮影位置において床面から同じ高さで撮影したものであるので、極点は、画像の上下方向の中央のいずれかに存在する。即ち、前側パノラマ画像及び後側パノラマ画像において直線CL上のいずれかの位置に極点がある。
ここで、前側パノラマ画像及び後側パノラマ画像において、それぞれの極点は、直線CL上の異なる位置に存在する。また、後側撮影位置から前側撮影位置に向かう方向(図7中の矢符tの方向)を共通軸の正方向とし、共通軸の正方向を天頂方向とした共通軸極座標系を用いた場合、それぞれのパノラマ画像において、対応する特徴点は共通軸極座標系の同じ方位角方向に存在する。よって、方位角変化特定部32、極点候補特定部33及び極点特定部34は、前側パノラマ画像及び後側パノラマ画像において、直線CL上に存在する極点であって、その極点に基づく共通軸極座標系における特徴点の方位角方向が同じとなるような極点を決定する。
図10及び図11は共通軸極座標系の説明図である。図10には、前側パノラマ画像及び後側パノラマ画像のイメージを球体で示している。共通軸極座標系における共通軸は、図4Aに示した直交座標系のZ軸の負方向(−Z軸方向)であり、共通軸極座標系の天頂角には、共通軸の正方向を基準として、撮影位置を中心として共通軸の負方向に向かう角度θC を用いる。天頂角θC は0ラジアン〜πラジアンの範囲の値を有する。また共通軸極座標系の方位角には、図4Aに示す直交座標系のX軸の負方向を基準として、共通軸の正方向から見て共通軸を中心に反時計回りの角度φC を用いる。方位角φC は−πラジアン〜πラジアンの範囲の値を有する。なお、図10に示すように共通軸はそれぞれのパノラマ画像と2箇所P1及びP2,P3及びP4で交差するが、共通軸の正方向側での交差点P1,P3が、それぞれのパノラマ画像における極点となる。
図10及び図11に複数の線種で示した各曲線は、図10に球体で示したパノラマ画像の表面上の曲線であり、それぞれの曲線は、それぞれのパノラマ画像が共通軸と交差する2点P1及びP2,P3及びP4を通る。またそれぞれの曲線は、図4Aに示す直交座標系における水平面であるXZ平面を基準として、共通軸を中心に、共通軸極座標系における方位角方向に回転させたものである。図10に示す共通軸極座標系で表した各曲線は、正距円筒図法により展開することにより、図11A,Bに示すように矩形のパノラマ画像上に表すことができる。図11A,Bに示すパノラマ画像は、図6A,Bと同様に、それぞれの撮影位置において、共通軸の正方向を撮影方向として撮影された画像である。よって、図11A,Bに示すパノラマ画像における極点P1,P3は共に画像の中央位置に存在する。図11A,B中の各曲線は、共通軸極座標系において天頂角θC 方向に並ぶ画素列であり、図11A,Bに示すパノラマ画像では、同じ被写体TPは、上から4番目の二点破線で示した曲線上に存在しているので、同じ被写体TPは共通軸極座標系の同じ方位角を有することが分かる。
従って、本実施形態の情報処理装置10は、前側パノラマ画像及び後側パノラマ画像において、直線CL上に存在する極点であって、この極点を通る共通軸を用いた共通軸極座標系において特徴点の方位角がパノラマ画像間で同じとなるような極点を決定する。
方位角変化特定部32は、前側パノラマ画像及び後側パノラマ画像のそれぞれについて、極点候補の位置を画像中の直線CL上で移動させた場合に、特徴点取得部31が取得した特徴点Fの共通軸極座標系における方位角の変化を特定する。図12は極点候補を説明するための模式図である。図12には前側パノラマ画像を示す。ここで、パノラマ画像中の各画素を、画像の左上を原点(0,0)とし、原点から右方向をX軸とし下方向をY軸とした画像座標系の座標(xI ,yI )で表すとする。なお、パノラマ画像の高さ(上下方向の長さ)はHとし、幅(左右方向の長さ)はWとする。この場合、直線CL上の極点候補は、画像座標系の座標(xI ,H/2)(0≦xI ≦W)で表される。
ここで、仮にパノラマ画像中の直線CL上のx座標値x0 の位置が極点であったとすると、後述する補正部35は、極点(x0 ,H/2)が画像の中央(W/2,H/2)に位置するように左右方向に各画素を平行移動させる。なお、補正部35は、パノラマ画像中の全ての画素を左右方向に平行移動させるので、特徴点Fも同様に移動する。特徴点Fの画像座標系の座標値を(xF ,yF )とした場合、特徴点Fは座標(xF −x0 +W/2,yF )の位置に移動される。平行移動後の特徴点Fのx座標値をxF ´=xF −x0 +W/2で表すと、平行移動後の特徴点Fの画像座標系の座標(xF ´,yF )から、以下の(3)式によって、特徴点Fのローカル極座標系における座標(θL ,φL )が算出できる。なお、ローカル極座標系における座標値は、画像座標系における座標値と1対1で対応しているので、以下の(3)式により変換可能であり、ここではローカル極座標系における半径を便宜上1としている。
よって、方位角変化特定部32は、前側パノラマ画像及び後側パノラマ画像において、直線CL上のそれぞれの極点候補に対して、特徴点Fのローカル極座標系における座標(θL ,φL )を算出する。次に方位角変化特定部32は、特徴点Fのローカル極座標系における座標(θL ,φL )を共通軸極座標系の座標(rC ,θC ,φC )に変換する。なお、ローカル極座標系の座標(rL ,θL ,φL )を共通軸極座標系の座標(rC ,θC ,φC )に変換する場合、一旦直交座標系の座標に変換した後に共通軸極座標系の座標に変換する。ここでの直交座標系を、図4Aに示した直交座標系と区別するためにワールド直交座標系と呼び、ワールド直交座標系の座標を(xW ,yW ,zW )で示す。
図13は、座標系の関係を説明するための模式図である。図13Aはローカル極座標系及びワールド直交座標系の関係を示し、図13Bはワールド直交座標系及び共通軸極座標系の関係を示す。ワールド直交座標系には、鉛直上方向をYW 軸の正側、水平面をXW 軸及びZW 軸で表す3次元の右手系の直交座標系を用いる。よって、空間内の任意の位置Pは、ワールド直交座標系の座標(xW ,yW ,zW )で表すことができる。図13Aに示すようにローカル極座標系は、鉛直上方向(YW 軸の正側)を基準とした天頂角θL と、鉛直上方向から見てZW 軸の正側を基準として水平面であるXW ZW 平面内の反時計回りの方位角φL と、原点0からの距離rL とによって表される。よって、3次元空間中の任意の位置Pは、ワールド直交座標系の座標(xW ,yW ,zW )とローカル極座標系の座標(rL ,θL ,φL )とで表すことができ、以下の(4)式及び(5)式によって相互に変換可能である。
図13Bに示すように共通軸極座標系は、ワールド直交座標系のZW 軸の負方向を基準とした天頂角θC と、ZW 軸の負方向から見てXW 軸の負側を基準としてXW YW 平面内の反時計回りの方位角φC と、原点0からの距離rC とによって表される。よって、3次元空間中の任意の位置Pは、ワールド直交座標系の座標(xW ,yW ,zW )と共通軸極座標系の座標(rC ,θC ,φC )とで表すことができ、以下の(6)式及び(7)式によって相互に変換可能である。
上述した演算処理により、方位角変化特定部32は、それぞれのパノラマ画像において、直線CL上のそれぞれの極点候補に対して、特徴点Fの共通軸極座標系の座標(rC ,θC ,φC )を取得する。図14は極点候補と特徴点Fとの位置関係を示す模式図である。図14Aに示す例では、前側パノラマ画像において直線CL上の点x1 が極点であった場合、極点x1 に基づく共通軸極座標系における特徴点Fの方位角がφC (x1 )で表される。図14Bに示す例では、前側パノラマ画像において直線CL上の点x2 が極点であった場合、極点x2 に基づく共通軸極座標系における特徴点Fの方位角がφC (x2 )で表される。よって、上述した演算処理により得られるφC (特徴点Fの共通軸極座標系における方位角)は、極点候補の画像座標系のx座標値を変数とした関数φC (xI )で表現できる。
図15は関数φC (xI )を示す図である。図15Aには、前側パノラマ画像において、極点候補の画像座標系におけるx座標値xI と特徴点Fの共通軸極座標系における方位角φC との関係を示す関数φC (xI )を示す。図15Aに示す関数φC (xI )は、横軸を画像座標系のX座標軸XI とし、縦軸を共通軸極座標系の方位角φC として、極点候補の画像座標系におけるx座標値の変化に応じた、特徴点Fの共通軸極座標系における方位角φC の変化を示す。図15Aから分かるように、極点候補の画像座標系におけるx座標値の変化に応じた、特徴点Fの共通軸極座標系における方位角φC の変化は、一定の範囲内で増減する曲線として描かれる関数φC (xI )で表される。パノラマ画像では、画像座標系のx座標値が0の画素とWの画素とは撮影位置からの方位が同じであるので、共通軸極座標系における方位角φC も同じ値となる。即ち、関数φC (xI )は、ローカル極座標系における360°の方位角変化に対して、1周期の増減を行う周期関数と言える。
方位角変化特定部32は、後側パノラマ画像についても、直線CL上の極点候補の画像座標系におけるx座標値の変化に応じた、特徴点Fの共通軸極座標系における方位角φC の変化を示す関数φC (xI )を算出する。これにより、方位角変化特定部32は、前側パノラマ画像と後側パノラマ画像とにおいて、特徴点取得部31が取得した特徴点Fについての関数φC (xI )を算出する。図15Bには、図15Aに示した前側パノラマ画像における関数φC (xI )に、後側パノラマ画像における関数φC (xI )を破線で追加して示す。図15Bから分かるように、前側パノラマ画像及び後側パノラマ画像において、同じ被写体である特徴点Fについて算出した関数φC (xI )は、振幅(方位角φC の範囲)及び位相が異なる周期関数となる。
極点候補特定部33は、前側パノラマ画像及び後側パノラマ画像の特徴点Fについて方位角変化特定部32が算出した関数φC (xI )に基づいて、前側パノラマ画像及び後側パノラマ画像における極点候補を特定する。図16は極点候補の特定処理を説明するための模式図である。ここで、仮に前側パノラマ画像において画像座標系のx座標値xA の位置が極点であったとすると、この極点に基づく共通軸極座標系における特徴点Fの方位角はφC (xA )となる。前側パノラマ画像及び後側パノラマ画像において、極点に基づく共通軸極座標系における特徴点Fの方位角は同一であるので、後側パノラマ画像においても、特徴点Fの共通軸極座標系における方位角はφC (xA )となる。図16中に破線の曲線で示す後側パノラマ画像における関数φC (xI )において、共通軸極座標系の方位角がφC (xA )となる画像座標系のx座標値はxB1及びxB2の2つがある。即ち、前側パノラマ画像の極点が画像座標系のx座標値xA の位置とした場合、後側パノラマ画像の極点は、画像座標系のx座標値がxB1又はxB2の位置であることが分かる。ここで、前側パノラマ画像及び後側パノラマ画像における特徴点Fの共通軸極座標系における方位角φC を媒介変数とした場合、前側パノラマ画像及び後側パノラマ画像における極点候補の画像座標系のx座標値xA ,xB の組合せを抽出する(絞り込む)ことができる。
図16に示す例では、前側パノラマ画像における関数φC (xI )の振幅が、後側パノラマ画像における関数φC (xI )の振幅よりも大きくなっている。従って、前側パノラマ画像の一部のx座標値xA については、後側パノラマ画像において、共通軸極座標系において同じ方位角φC となるx座標値xB が存在しないことになる。即ち、前側パノラマ画像のx座標値xA と共通軸極座標系において同じ方位角φC となる後側パノラマ画像のx座標値xB は、振幅が小さい後側パノラマ画像で取り得る方位角φC の範囲で存在し、前側パノラマ画像の共通軸極座標系における方位角φC が、後側パノラマ画像の共通軸極座標系の方位角φC の最大値を超えるか最小値未満である範囲では存在しない。
また、図16に示すように、前側パノラマ画像において、特徴点Fの共通軸極座標系の方位角がφC (xA )となる画像座標系のx座標値はxA だけでなくxA ´もある。関数φC (xI )は周期関数であるので、値域の範囲内の方位角がφC (x)となる画像座標系のx座標値は2つ存在する。従って、前側パノラマ画像及び後側パノラマ画像における特徴点Fの共通軸極座標系における方位角φC を媒介変数として、前側パノラマ画像及び後側パノラマ画像における極点候補の画像座標系のx座標値xA ,xB の組合せを抽出する場合、ある方位角φC について2つのパノラマ画像からそれぞれx座標値xA ,xB が2つずつ抽出されるので、4組の組合せ(x座標値xA ,xB )を抽出できる。
そこで、極点候補特定部33は、前側パノラマ画像及び後側パノラマ画像における特徴点Fの共通軸極座標系における方位角φC を媒介変数として、前側パノラマ画像及び後側パノラマ画像における極点候補の画像座標系におけるx座標値xA ,xB の組合せを特定する。図17は、パノラマ画像における極点候補の組合せを示す模式図である。図17では、横軸を前側パノラマ画像におけるX座標軸XA とし、縦軸を後側パノラマ画像におけるX座標軸XB とする。図17には、前側パノラマ画像の横幅(左右方向の長さ)をWA とし、後側パノラマ画像の横幅をWB としたWA ×WB のサイズの2次元空間に、極点候補特定部33が特定した、前側パノラマ画像及び後側パノラマ画像における極点候補の画像座標系のx座標値xA ,xB の組合せをプロットした図を示す。これは、特徴点取得部31が取得した1つの特徴点Fに基づいて、極点候補特定部33が、前側パノラマ画像及び後側パノラマ画像における極点候補の組合せとして、WA ×WB の2次元空間内の各候補から、図17に実線で示す曲線上の各候補に絞り込んだことを示す。
図17から分かるように、関数φC (xI )の振幅が小さい方の後側パノラマ画像については、画像座標系の全てのx座標値xB が極点候補となる一方で、関数φC (xI )の振幅が大きい方の前側パノラマ画像については、極点候補は画像座標系の一部のx座標値xA に限定される。
特徴点取得部31は、例えば2組の特徴点のペアを取得しており、方位角変化特定部32及び極点候補特定部33は、それぞれの特徴点について上述した演算処理を行う。図18は2つの特徴点の例を示す模式図であり、図19は2つの特徴点に基づく関数φC (xI )を示す図であり、図20は2つの特徴点に基づくパノラマ画像における極点候補の組合せを示す模式図である。図18に示すように、図8に示した特徴点Fと同様の特徴点F1と、他の特徴点F2とを特徴点取得部31が取得したとする。図19において、下側の実線は、図15Bと同様に特徴点F1に基づく前側パノラマ画像における関数φC (xI )を示し、下側の破線は、図15Bと同様に特徴点F1に基づく後側パノラマ画像における関数φC (xI )を示す。また、図19において、上側の実線は、特徴点F2に基づく前側パノラマ画像における関数φC (xI )を示し、上側の破線は、特徴点F2に基づく後側パノラマ画像における関数φC (xI )を示す。
図18及び図19から分かるように、特徴点F1は直線CL(撮影位置の高さに相当)よりも鉛直方向の上側にあるので、特徴点F1の共通軸極座標系における方位角φC (xI )は常に正の値をとる。また、特徴点F2は直線CLよりも鉛直方向の下側にあるので、特徴点F2の共通軸極座標系における方位角φC (xI )は常に負の値をとる。図20は、2つの特徴点F1,F2によって絞り込まれた、前側パノラマ画像及び後側パノラマ画像における極点候補の画像座標系のx座標値xA ,xB の組合せをプロットした図である。なお、図20では、図17に示した特徴点F1に基づく前側パノラマ画像及び後側パノラマ画像における極点候補の画像座標系のx座標値xA ,xB の組合せに、特徴点F2に基づく前側パノラマ画像及び後側パノラマ画像における極点候補の画像座標系のx座標値xA ,xB の組合せを破線の曲線でプロットしている。
ここで、図20において、特徴点F1に基づいて絞り込まれた極点候補の画像座標系のx座標値xA ,xB の組合せと、特徴点F2に基づいて絞り込まれた極点候補の画像座標系のx座標値xA ,xB の組合せとの交点のいずれかが、真の極点の画像座標系のx座標値xA ,xB の組合せとなる。図20では、4つの交点Q1 ,Q2 ,Q1 ´,Q2 ´が存在する。即ち、極点候補特定部33が、前側パノラマ画像及び後側パノラマ画像における極点候補の組合せとして、4つの候補に絞り込んだことを示す。ここで、交点Q1 及びQ1 ´は、前側パノラマ画像における画像座標系のx座標値がWA /2ずれており、後側パノラマ画像における画像座標系のx座標値がWB /2ずれている。また、交点Q2 及びQ2 ´は、前側パノラマ画像における画像座標系のx座標値がWA /2ずれており、後側パノラマ画像における画像座標系のx座標値がWB /2ずれている。これは、交点Q1 が前側パノラマ画像及び後側パノラマ画像における極点のx座標値xA ,xB の組合せであった場合に、交点Q1 ´は極点の反対側(共通軸の負方向)の点のx座標値xA ,xB の組合せであることを意味する。交点Q2 及びQ2 ´についても同様である。
極点特定部34は、極点候補特定部33が絞り込んだ4つの極点候補(交点Q1 ,Q2 ,Q1 ´,Q2 ´)から真の極点を特定する。例えば、前側パノラマ画像及び後側パノラマ画像において、極点の近傍には、共通軸の正方向にある同じ被写体が写っている。従って、極点特定部34は、それぞれの極点候補について、前側パノラマ画像及び後側パノラマ画像における極点候補近傍の色成分を比較し、色成分の差異がより小さい極点候補を真の極点に特定する。また、極点特定部34は、それぞれの極点候補について、前側パノラマ画像及び後側パノラマ画像に対して後述する補正部35による補正処理を行い、補正後の前側パノラマ画像及び後側パノラマ画像を表示部15に表示し、ユーザの目視確認によって真の極点を特定してもよい。この場合、極点特定部34は、それぞれの極点候補について表示部15に表示された補正後の前側パノラマ画像及び後側パノラマ画像に対して、適切な補正が行われた画像の選択を入力部14にて受け付ける。
また、特徴点取得部31が共通軸に対して同じ側(左側又は右側)にある2つの特徴点を取得したか、又は共通軸に対して異なる側にある2つの特徴点を取得したかに応じて、極点特定部34は、極点候補から真の極点を特定してもよい。例えば、特徴点取得部31が共通軸に対して左側(又は右側)にある2つの特徴点を取得していた場合、極点特定部34は、それぞれの極点候補について補正部35による補正処理を行い、補正後の前側パノラマ画像及び後側パノラマ画像において、2つの特徴点が画像の左側(又は右側)にあった場合、このときの極点候補を真の極点に特定する。また、特徴点取得部31は共通軸に対して左側及び右側にそれぞれ1つずつの特徴点を取得していた場合、極点特定部34は、それぞれの極点候補について補正部35による補正処理を行い、補正後の前側パノラマ画像及び後側パノラマ画像において、2つの特徴点がそれぞれ画像の左側及び右側にあった場合、このときの極点候補を真の極点に特定する。更に、特徴点取得部31が3つ目の特徴点のペアを取得し、方位角変化特定部32及び極点候補特定部33が、3つ目の特徴点について上述した演算処理を行うことによって、極点候補特定部33は極点候補を更に絞り込むことができ、極点特定部34は、極点候補特定部33による絞り込みによって真の極点を特定してもよい。
なお、図20に示した4つの極点候補Q1 ,Q2 ,Q1 ´,Q2 ´において、極点候補Q1 及びQ1 ´と、極点候補Q2 及びQ2 ´とは、一方が真の極点のx座標値xA ,xB の組合せであった場合に、他方は極点の反対側(共通軸の負方向)の点のx座標値xA ,xB の組合せとなる。即ち、真の極点を、図5及び図7中に矢符tで示す共通軸の正方向の被写体が写っている画像中の位置とした場合、極点の反対側の点は、共通軸の負方向の被写体が写っている画像中の位置となる。前側パノラマ画像及び後側パノラマ画像における方位角方向を一致させることを目的とする場合、極点は、共通軸の正方向の被写体が写っている画像中の位置であっても、共通軸の負方向の被写体が写っている画像中の位置であっても問題ない。よって、この場合、極点特定部34は、極点候補Q1 及びQ1 ´のいずれを特定してもよく、極点候補Q2 及びQ2 ´のいずれを特定してもよい。従って、この場合、極点特定部34は、極点候補特定部33が特定した、図20に示す4つの極点候補のうちの2つの極点候補Q1 ,Q2 から真の極点を特定すればよい。
なお、極点候補Q1 及びQ1 ´並びに極点候補Q2 及びQ2 ´をそれぞれ区別して真の極点を特定する必要がある場合、極点特定部34は例えば以下の処理を行う。極点特定部34は、それぞれの極点候補について補正部35による補正処理が行われた前側パノラマ画像及び後側パノラマ画像において、いずれかの特徴点の共通軸極座標系における天頂角θC を算出する。そして、極点特定部34は、前側パノラマ画像において算出した天頂角θC が後側パノラマ画像において算出した天頂角θC よりも大きくなる極点候補を、真の極点に特定する。これは、同じ被写体は、同じ共通軸極座標系での方位角方向において、前側パノラマ画像よりも後側パノラマ画像で中央部に写るので、共通軸極座標系における天頂角θC の値が前側パノラマ画像よりも後側パノラマ画像で小さくなるからである。
補正部35は、前側パノラマ画像及び後側パノラマ画像に対して、極点特定部34が前側パノラマ画像及び後側パノラマ画像に対して特定した極点に基づいて、画像の方位角方向を補正する処理を行う。具体的には、補正部35は、前側パノラマ画像において、極点特定部34が特定した極点が画像の中央に移動するように、前側パノラマ画像中の各画素を左右方向に平行移動させる。また、補正部35は、後側パノラマ画像において、極点特定部34が特定した極点が画像の中央に移動するように、後側パノラマ画像中の各画素を左右方向に平行移動させる。なお、例えば画像中の各画素を右方向へ平行移動させた場合、画像の右端からはみ出した画素は、画像の左側に移動させる。また、画像中の各画素を左方向へ平行移動させた場合、画像の左端からはみ出した画素は、画像の右側に移動させる。これにより、図8Aに示す前側パノラマ画像が、図6Aに示す前側パノラマ画像に補正され、図8Bに示す後側パノラマ画像が、図6Bに示す後側パノラマ画像に補正され、補正後の前側パノラマ画像及び後側パノラマ画像において、同じ被写体の画像中の方位角方向を一致させることができる。
次に、情報処理装置10が行う補正処理をフローチャートに基づいて説明する。図21は、情報処理装置10が行う処理の手順を示すフローチャートである。以下の処理は、情報処理装置10の記憶部12に記憶してある方位補正プログラムPを含む制御プログラムに従って制御部11によって実行される。
情報処理装置10の制御部11は、補正処理を行うべきパノラマ画像をパノラマ画像DB12aから読み出す(S1)。補正処理を行うべきパノラマ画像は、入力部14又は外部装置を介して指定される。処理対象のパノラマ画像は、例えば同じ撮影空間内の異なる撮影位置で撮影されたパノラマ画像であり、以下では、図7に示す撮影空間における2箇所の撮影位置で撮影されたパノラマ画像(前側パノラマ画像及び後側パノラマ画像)とする。なお、ここでのパノラマ画像は、画像の上下方向が撮影空間の鉛直方向に一致し、撮影高さが画像の上下方向の中央に一致する画像である。
制御部11は、読み出した2つのパノラマ画像に対して、同じ被写体が写っている位置を1組の特徴点として取得する(S2)。制御部11は、前側パノラマ画像について、画像の上下方向の中央の直線CL上の各位置を極点候補とし、それぞれの極点候補を極点とした場合に、各極点に基づく共通軸極座標系において、取得した特徴点の方位角の変化を示す関数φC (xI )を算出する(S3)。制御部11は、後側パノラマ画像についても、画像の上下方向の中央の直線CL上の各位置を極点候補とし、それぞれの極点候補を極点とした場合に、各極点に基づく共通軸極座標系において、取得した特徴点の方位角の変化を示す関数φC (xI )を算出する(S4)。図18Aに示すような前側パノラマ画像において特徴点F1を取得した場合、制御部11は、図19の下側の実線で示すような関数φC (xI )を算出する。また、図18Bに示すような後側パノラマ画像において特徴点F1を取得した場合、制御部11は、図19の下側の破線で示すような関数φC (xI )を算出する。
制御部11は、前側パノラマ画像について算出した関数φC (xI )と、後側パノラマ画像について算出した関数φC (xI )とに基づいて、前側パノラマ画像及び後側パノラマ画像における極点候補の画像座標系のx座標値の組合せを特定する(S5)。制御部11は、前側パノラマ画像及び後側パノラマ画像において共通である、特徴点Fの共通軸極座標系における方位角φC を媒介変数として、前側パノラマ画像及び後側パノラマ画像における極点候補のx座標値xA ,xB の組合せを特定する。これにより、図20に実線で示した曲線上の各点が、前側パノラマ画像及び後側パノラマ画像における極点候補の組合せ(x座標値xA ,xB )として特定される。
制御部11は、2つのパノラマ画像に対して、もう1組の特徴点を取得する(S6)。制御部11は、もう1組の特徴点についてもステップS3〜S5と同様の処理を行う。具体的には、制御部11は、前側パノラマ画像について、直線CL上の各位置を極点とした場合に、各極点に基づく共通軸極座標系において、新たに取得した特徴点の方位角の変化を示す関数φC (xI )を算出する(S7)。また制御部11は、後側パノラマ画像についても、直線CL上の各位置を極点とした場合に、各極点に基づく共通軸極座標系において、新たに取得した特徴点の方位角の変化を示す関数φC (xI )を算出する(S8)。図18Aに示すような前側パノラマ画像において特徴点F2を取得した場合、制御部11は、図19の上側の実線で示すような関数φC (xI )を算出する。また、図18Bに示すような後側パノラマ画像において特徴点F2を取得した場合、制御部11は、図19の上側の破線で示すような関数φC (xI )を算出する。
制御部11は、特徴点F2に基づいて前側パノラマ画像について算出した関数φC (xI )と、後側パノラマ画像について算出した関数φC (xI )とに基づいて、前側パノラマ画像及び後側パノラマ画像における極点候補の画像座標系のx座標値の組合せを特定する(S9)。これにより、図20に破線で示した曲線上の各点が、前側パノラマ画像及び後側パノラマ画像における極点候補の組合せ(x座標値xA ,xB )として特定される。そして、制御部11は、ステップS2で取得した特徴点F1に基づいてステップS5で特定した極点候補の組合せと、ステップS6で取得した特徴点F2に基づいてステップS9で特定した極点候補の組合せとに基づいて、前側パノラマ画像及び後側パノラマ画像における極点の画像座標系のx座標値の組合せを特定する(S10)。
制御部11は、ステップS10で特定した前側パノラマ画像及び後側パノラマ画像における極点の画像座標系のx座標値の組合せに基づいて、ステップS1で読み出した前側パノラマ画像及び後側パノラマ画像をそれぞれ補正し(S11)、処理を終了する。具体的には、制御部11は、前側パノラマ画像において、特定した極点が画像の中央に移動するように、前側パノラマ画像中の各画素を左右方向に平行移動させる。また制御部11は、後側パノラマ画像において、特定した極点が画像の中央に移動するように、後側パノラマ画像中の各画素を左右方向に平行移動させる。これにより、図8A,Bに示すように撮影方向が異なる状態で撮影された前側パノラマ画像及び後側パノラマ画像が、図6A,Bに示すように、同じ被写体が画像中の同じ方位角方向に写っているパノラマ画像に補正される。
本実施形態の情報処理装置10では、それぞれの撮影位置において異なる撮影方向で撮影を行った場合であっても、撮影後のパノラマ画像を、同じ被写体が画像中の方位角方向(左右方向)の同じ位置に写るパノラマ画像に補正できる。よって、複数のパノラマ画像において、同じ被写体の画像中の方位角方向を一致させることができる。このようなパノラマ画像を用いることにより、複数のパノラマ画像を切り替えて表示する場合に画像の遷移を滑らかに行うことができる。また、このようなパノラマ画像を合成して表示する場合、合成後のパノラマ画像に方位角方向(横方向)のブレが生じず、鮮明なパノラマ画像を提供できる。
本実施形態において、撮影対象の部屋における撮影位置は3箇所以上としてもよい。この場合、それぞれ2箇所の撮影位置間で、撮影したパノラマ画像における方位角方向の補正処理を行えばよい。これにより、撮影対象の部屋の任意の位置で撮影されたパノラマ画像間において、同じ被写体の画像中の方位角方向を一致させることができる。
本実施形態において、カメラ20は、全天球カメラに限定しない。たとえば、半球型の範囲を撮影可能なカメラであってもよい。通常の平面画像撮影用のカメラでもよい。
各実施形態で記載されている技術的特徴(構成要件)はお互いに組合せ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。