(57)【要約】【課題】複数の画像において画像中心に写る被写体の撮影位置からの方角を、撮影位置を結ぶ方角に一致させることが可能な情報処理装置等を提供する。【解決手段】情報処理装置は、実空間内の同一高さの異なる撮影位置で撮影した全天球画像を実空間における撮影方向と水平ないずれかの方向を中心として展開した複数のパノラマ画像を取得する。情報処理装置は、複数のパノラマ画像において、撮影方向と水平な画素の各画素位置における類似度を算出し、算出した類似度から、それぞれのパノラマ画像において、撮影位置を結ぶ直線上の極点を特定する。情報処理装置は、取得したパノラマ画像を、特定した極点を中心としたパノラマ画像に補正する。【選択図】図１
2020170400.tif 000002
【特許請求の範囲】
【請求項１】
実空間内の同一高さの異なる撮影位置で撮影した全天球画像を実空間における撮影方向と水平ないずれかの方向を中心として展開した複数のパノラマ画像を取得する画像取得部と、
前記複数のパノラマ画像における前記撮影方向と水平な画素の各画素位置における類似度を算出する算出部と、
前記算出部による類似度から、前記異なる撮影位置を結ぶ直線上の極点を特定する極点特定部と、
前記パノラマ画像を、特定した前記極点を中心としたパノラマ画像に補正する補正部と
を備える情報処理装置。
【請求項２】
前記算出部は、前記撮影方向と水平な画素の並びを所定画素ずつシフトさせて各シフト画像の類似度を算出し、
前記極点特定部は、前記算出部が算出した各シフト画像の類似度の変化から前記極点を特定する
請求項１に記載の情報処理装置。
【請求項３】
前記極点特定部は、前記算出部が算出した各シフト画像の類似度のうちで最大の類似度を特定し、特定した類似度の前記シフト画像に応じて前記極点に特定する
請求項２に記載の情報処理装置。
【請求項４】
前記極点特定部は、前記算出部が算出した各シフト画像の類似度の変化を三角波で近似し、近似した三角波に係る位相に応じて前記極点を特定する
請求項２に記載の情報処理装置。
【請求項５】
前記パノラマ画像のそれぞれから、前記撮影方向と水平な画素の並びを抽出する抽出部を備え、
前記算出部は、前記パノラマ画像のそれぞれから抽出した前記画素の並びの類似度を算出する
請求項１から４までのいずれかひとつに記載の情報処理装置。
【請求項６】
前記画像取得部が取得した複数のパノラマ画像に対して、それぞれの前記撮影位置からの撮影方向が同一の方角となるように画像の向きを補正する向き補正部を備える
請求項１から５までのいずれかひとつに記載の情報処理装置。
【請求項７】
情報処理装置が、
実空間内の同一高さの異なる撮影位置で撮影した全天球画像を実空間における撮影方向と水平ないずれかの方向を中心として展開した複数のパノラマ画像を取得し、
前記複数のパノラマ画像における前記撮影方向と水平な画素の各画素位置における類似度を算出し、
算出した前記類似度から、前記異なる撮影位置を結ぶ直線上の極点を特定し、
前記パノラマ画像を、特定した前記極点を中心としたパノラマ画像に補正する
処理を行う情報処理方法。
【請求項８】
コンピュータに、
実空間内の同一高さの異なる撮影位置で撮影した全天球画像を実空間における撮影方向と水平ないずれかの方向を中心として展開した複数のパノラマ画像を取得し、
前記複数のパノラマ画像における前記撮影方向と水平な画素の各画素位置における類似度を算出し、
算出した前記類似度から、前記異なる撮影位置を結ぶ直線上の極点を特定し、
前記パノラマ画像を、特定した前記極点を中心としたパノラマ画像に補正する
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
１８０度より広い画角のパノラマ画像を取得するカメラを用いて、撮影位置を移動しつつ撮影を行い、得られた複数のパノラマ画像を適宜切り替えることにより、任意の視点から見た状態の画像を提供するシステムが提案されている（特許文献１）。特許文献１に開示されたシステムでは、隣り合う撮影位置で撮影した２つのパノラマ画像を切り替える際に、表示中のパノラマ画像と次に表示されるパノラマ画像との合成比率を徐々に変化させることにより次のパノラマ画像の表示に遷移する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−８４３０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
２つのパノラマ画像を切り替えて表示する場合、２つのパノラマ画像において、それぞれの画像中心に写る被写体の撮影位置からの方角が、２つの撮影位置を結ぶ方角と一致していることが望ましい。撮影位置からの方角が２つの撮影位置を結ぶ方角と異なる被写体がそれぞれ画像中心に写っているパノラマ画像を切り替えて表示する場合、撮影方向が異なるパノラマ画像が切り替えられるので、画像の遷移を滑らかに行うことができない。また、撮影位置からの方角が２つの撮影位置を結ぶ方角と異なる被写体がそれぞれ画像中心に写っているパノラマ画像を合成した場合、合成後のパノラマ画像に横方向（方位角方向）のブレが生じる。２つのパノラマ画像において、画像中心に写る被写体の撮影位置からの方角を２つの撮影位置を結ぶ方角に一致させるために、例えば、それぞれの撮影位置で撮影する際にカメラの撮影方向を、２つの撮影位置を結ぶ方角に一致させることが考えられる。しかし、カメラの撮影方向は撮影者によって調整されるので、撮影方向を正確に一致させることは困難である。また、加速度センサ又は地磁気センサを備えるカメラを用いて撮影時のカメラの撮影方向の方角を検知し、撮影後のパノラマ画像に対して、撮影方向の方角を一致させる補正を行うことが可能である。しかし、撮影後の２つのパノラマ画像において、それぞれの撮影方向の方角が、２つの撮影位置を結ぶ方角に一致するように補正することは困難である。従って、２つのパノラマ画像のそれぞれにおいて画像中心に写る被写体の撮影位置からの方角を、２つの撮影位置を結ぶ方角に一致させることは難しい。
【０００５】
本発明は、このような事情に鑑みてなされたものであり、その目的とするところは、複数の画像において画像中心に写る被写体の撮影位置からの方角を、撮影位置を結ぶ方角に一致させることが可能な情報処理装置等を提供することにある。
【課題を解決するための手段】
【０００６】
本開示の一態様に係る情報処理装置は、実空間内の同一高さの異なる撮影位置で撮影した全天球画像を実空間における撮影方向と水平ないずれかの方向を中心として展開した複数のパノラマ画像を取得する画像取得部と、前記複数のパノラマ画像における前記撮影方向と水平な画素の各画素位置における類似度を算出する算出部と、前記算出部による類似度から、前記異なる撮影位置を結ぶ直線上の極点を特定する極点特定部と、前記パノラマ画像を、特定した前記極点を中心としたパノラマ画像に補正する補正部とを備える。
【発明の効果】
【０００７】
本開示の一態様によれば、カメラの撮影方向を考慮せずに撮影されたパノラマ画像であっても、複数のパノラマ画像において、それぞれの画像中心に写る被写体を、撮影位置を結ぶ方角の被写体とすることができる。それぞれのパノラマ画像の画像中心に写る被写体の撮影位置からの方角を自動的に、撮影位置を結ぶ方角に一致させるので、煩雑な手作業が不要となり、正確に一致させることができる。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置の構成例を示すブロック図である。
【図２】カメラの構成例を示すブロック図である。
【図３】カメラの外観を示す模式図である。
【図４】撮影画像の構成を説明するための模式図である。
【図５】カメラの撮影位置の例を示す模式図である。
【図６】パノラマ画像の例を示す模式図である。
【図７】パノラマ画像の例を示す模式図である。
【図８】情報処理装置による補正処理の手順の一例を示すフローチャートである。
【図９】補正処理に含まれる極点特定処理の手順の一例を示すフローチャートである。
【図１０】情報処理装置による補正処理を説明するための模式図である。
【図１１】情報処理装置による補正処理を説明するための模式図である。
【図１２】情報処理装置による補正処理を説明するための模式図である。
【図１３】情報処理装置による補正処理を説明するための模式図である。
【図１４】情報処理装置による補正処理を説明するための模式図である。
【図１５】情報処理装置による補正処理を説明するための模式図である。
【図１６】情報処理装置による補正処理を説明するための模式図である。
【図１７】情報処理装置による補正処理を説明するための模式図である。
【図１８】情報処理装置による補正処理を説明するための模式図である。
【図１９】実施形態２の極点特定処理の手順の一例を示すフローチャートである。
【図２０】実施形態２の極点特定処理を説明するための模式図である。
【発明を実施するための形態】
【０００９】
以下に、本開示の情報処理装置、情報処理方法及びプログラムについて、その実施形態を示す図面に基づいて具体的に説明する。
【００１０】
（実施形態１）
図１は情報処理装置の構成例を示すブロック図である。情報処理装置１０は、パーソナルコンピュータ、サーバコンピュータ、大型計算機上で動作する仮想マシン等である。情報処理装置１０は、制御部１１、記憶部１２、通信部１３、入力部１４、表示部１５等を含み、これらの各部はバスを介して相互に接続されている。制御部１１は、ＣＰＵ（Central Processing Unit ）、ＭＰＵ（Micro-Processing Unit ）又はＧＰＵ（Graphics Processing Unit）等の１又は複数のプロセッサを含み、本実施形態にかかるプログラムを実行する演算制御装置である。制御部１１は、記憶部１２に記憶してある制御プログラムを実行すると共に、バスを介して情報処理装置１０を構成するハードウェア各部の動作を制御する。これにより、制御部１１は、情報処理装置１０が行うべき種々の制御処理及び情報処理を行う。
【００１１】
記憶部１２は、ＲＡＭ（Random Access Memory）、フラッシュメモリ、ハードディスク、ＳＳＤ（Solid State Drive ）等を含む。記憶部１２は、制御部１１が実行する制御プログラム及び制御プログラムの実行に必要な各種のデータ等を予め記憶している。また記憶部１２は、制御部１１が制御プログラムを実行する際に発生するデータ等を一時的に記憶する。記憶部１２に記憶される制御プログラムには、本開示のプログラムである方位補正プログラムＰが含まれ、記憶部１２に記憶されるデータには、後述するカメラ２０によって撮影されたパノラマ画像を蓄積するパノラマ画像ＤＢ１２ａが含まれる。
【００１２】
記憶部１２に記憶される方位補正プログラムＰ及びパノラマ画像ＤＢ１２ａは、例えば通信部１３を介して外部装置から取得されて記憶部１２に記憶される。情報処理装置１０が可搬型記憶媒体に記憶された情報を読み取る読取部等を備える場合、記憶部１２に記憶される方位補正プログラムＰ及びパノラマ画像ＤＢ１２ａは、可搬型記憶媒体から読み出されて記憶部１２に記憶されてもよい。なお、パノラマ画像ＤＢ１２ａは、情報処理装置１０に接続された外部の記憶装置に記憶されてもよく、ネットワークＮを介して情報処理装置１０と通信可能な記憶装置に記憶されてもよい。
【００１３】
通信部１３は、有線通信又は無線通信によって、インターネット、公衆通信回線又はＬＡＮ（Local Area Network）等のネットワークＮに接続するためのインターフェイスであり、ネットワークＮを介して外部装置との間で情報の送受信を行う。入力部１４は、キーボード及びマウス等を含み、ユーザによる操作入力を受け付け、操作内容に対応した制御信号を制御部１１へ送出する。表示部１５は、液晶ディスプレイ、有機ＥＬ（Electro Luminescence）ディスプレイ等であり、制御部１１からの指示に従って各種の情報を表示する。入力部１４及び表示部１５は一体として構成されたタッチパネルとすることもできる。
【００１４】
以下に、本実施形態の情報処理装置１０によって処理されるパノラマ画像及びパノラマ画像を撮影するカメラ２０について説明する。カメラ２０は、撮影装置の一例である。カメラ２０は、１回のシャッターで前後左右上下の撮影を行う全天球カメラを使用する。図２はカメラ２０の構成例を示すブロック図である。カメラ２０は、制御部２１、記憶部２２、通信部２３、シャッターボタン２４、撮影部２５、センサ２６等を含み、これらの各部はバスを介して相互に接続されている。制御部２１は、ＣＰＵ、ＭＰＵ又はＧＰＵ等の１又は複数のプロセッサを含み、本実施形態にかかるプログラムを実行する演算制御装置である。制御部２１は、記憶部２２に記憶してある制御プログラムを実行すると共に、バスを介してカメラ２０を構成するハードウェア各部の動作を制御する。これにより、制御部２１は、カメラ２０が行うべき種々の制御処理及び情報処理を行う。
【００１５】
記憶部２２は、ＲＡＭ、フラッシュメモリ、ハードディスク、磁気テープ等を含む。記憶部２２は、制御部２１が実行する制御プログラム及び制御プログラムの実行に必要な各種のデータ等を予め記憶している。また記憶部２２は、制御部２１が制御プログラムを実行する際に発生するデータ等を一時的に記憶する。
【００１６】
通信部２３は、有線通信又は無線通信によってネットワークＮに接続するためのインターフェイスであり、ネットワークＮを介して外部装置との間で情報の送受信を行う。シャッターボタン２４は、静止画を撮影する指示を受け付けるボタンである。なお、制御部２１は、ネットワークＮを通じてシャッターボタン２４の操作を受け付けてもよい。撮影部２５は、撮影を行う光学系と撮像素子とを含む。制御部２１は、シャッターボタン２４から受け付けた指示に基づいて撮像素子が取得したデータに対して、各種画像処理を行い、撮影画像を生成する。センサ２６は、例えば加速度センサ、地磁気センサ、ＧＰＳ（Global Positioning System）等を含み、カメラ２０の位置（撮影位置）、カメラ２０の正面方向（撮影方向）の方角（方位）、及び重力方向（即ち、鉛直方向の下向き）を基準としたカメラ２０の傾き等を検出する。
【００１７】
図３はカメラ２０の外観を示す模式図である。本実施形態のカメラ２０は、略長方形板状の板状部２８を有する。以後の説明において、板状部２８の長辺方向を上下方向に向けた状態で説明する。なお、板状部２８の長辺方向を上下方向に向けた状態のカメラ２０において、板状部２８の第１広面２８１側をカメラ２０の前側、第２広面２８２側をカメラ２０の後側、板状部２８の短辺方向をカメラ２０の左右方向とそれぞれ記載する。第１広面２８１の上寄りに、ドーム状の第１レンズ２７１が設けられている。第２広面２８２の上寄りに、ドーム状の第２レンズ２７２が設けられている。第１レンズ２７１及び第２レンズ２７２の内側には、図示しない複数のレンズ及びプリズム等の光学部品が配置されており、１８０度以上の視野角を有する光学系を形成している。以後の説明では、第１レンズ２７１側の光学系の光軸を第１光軸、第２レンズ２７２側の光学系の光軸を第２光軸とそれぞれ記載する。第１光軸と第２光軸とは、同一の直線上に配置されている。また、第１広面２８１にシャッターボタン２４が配置されている。
【００１８】
図４は撮影画像の構成を説明するための模式図である。図４Ａは、全天球画像を示す模式図である。図４Ｂは、図４Ａの全天球画像を正距円筒図法により展開した画像を示す模式図である。カメラ２０の制御部２１は、シャッターボタン２４から受け付けた指示に基づいて撮影部２５による撮影を行った場合、第１光軸側で撮影した画像と第２光軸側で撮影した画像とを合成することにより、図４Ａに示すように撮影位置を撮影中心Ｃ点とする全天球画像を生成する。
【００１９】
全天球画像上の各画素の位置を定める座標系について説明する。図３を用いて説明したように、カメラ２０は板状部２８の長辺方向を上下方向に向けた状態で撮影する。以後の説明では、カメラ２０の前後左右方向を含む面を水平面と記載する。全天球画像上の画素の位置は、直交座標系及びローカル極座標系により表現することができる。直交座標系は、図３に示した右方向をＸ軸の正側、上方向をＹ軸の正側、後ろ方向をＺ軸の正側とする右手系の直交座標系を用いる。ローカル極座標系は、方位角φ及び天頂角θ、並びに撮影中心Ｃ点からの距離ｒによって座標が示される座標系を用いる。ローカル極座標系の方位角は、第２光軸側（Ｚ軸の正側）を基準として、水平面内の反時計回りの角度φを示す。第１光軸（Ｚ軸の負側）は、方位角φがπラジアンの位置に存在する。ここでπは円周率を意味する。第２光軸は、方位角φが０ラジアンかつ２πラジアンの位置に存在する。ローカル極座標系の天頂角は、撮影中心Ｃ点から天頂への上方向（Ｙ軸の正側）を基準として、撮影中心Ｃ点を中心として下に向かう角度θを示す。上方向は、天頂角θが０ラジアンの位置に存在する。下方向（Ｙ軸の負側）は、天頂角θがπラジアンの位置に存在する。全天球画像上の任意の画素ａの位置は、直交座標系で表した座標（ｘa ，ｙa ，ｚa ）と、ローカル極座標系で表した座標（ｒLa，θLa，φLa）とによって表現することができる。なお、座標（ｘ，ｙ，ｚ）及び座標（ｒL ，θL ，φL ）は以下の（１）式及び（２）式によって相互に変換可能である。
【００２０】
【数１】
2020170400.tif 000003
【００２１】
カメラ２０の制御部２１は、全天球画像を方位角φ＝０の線に沿って切断して、正距円筒図法により図４Ｂに示すように横軸を方位角φとし縦軸を天頂角θとする平面に展開した長方形の撮影画像（以下では、パノラマ画像という）を生成する。即ち、全天球画像は、実空間における撮影方向と水平ないずれかの方向（ここでは、カメラ２０の正面方向）を中心として展開されてパノラマ画像が生成される。このパノラマ画像を構成する各画素には、全天球画像における各画素の輝度（画素値）が割り当てられる。なお、図４Ｂに示すように、長方形（平面）のパノラマ画像は、左下を原点（０，０）とし、原点（０，０）は、方位角φが２πラジアンで天頂角θがπラジアンの位置の画素を示す。また、パノラマ画像は、右方向に方位角φが小さくなり、パノラマ画像の右端は方位角φが０ラジアンの位置の画素であり、上方向に天頂角θが小さくなり、パノラマ画像の上端は天頂角θが０ラジアンの位置の画素である。
【００２２】
カメラ２０の制御部２１は、撮影処理を行った場合、センサ２６によって撮影中心Ｃ点（撮影位置）の位置情報、撮影時のカメラ２０の撮影方向の方角及びカメラ２０の傾きを検出する。そして制御部２１は、図４Ｂに示すパノラマ画像に、検出した位置情報、撮影方向の方角及び傾きを含む付加データを付加して通信部２３から情報処理装置１０へ送信する。情報処理装置１０の制御部１１（画像取得部）は、カメラ２０から送信されたパノラマ画像及び付加データを通信部１３にて取得する。なお、カメラ２０の制御部２１は、図４Ａに示す全天球画像の撮影画像を情報処理装置１０へ送信し、情報処理装置１０が、全天球画像から、図４Ｂに示すパノラマ画像を生成する処理を行ってもよい。情報処理装置１０の制御部１１は、カメラ２０から取得した付加データとパノラマ画像とを対応付けてパノラマ画像ＤＢ１２ａに記録する。カメラ２０は、Ｅｘｉｆ（Exchangeable image file format）形式を使用することにより、付加データと撮影画像とを一つのファイルで送信することが可能である。
【００２３】
カメラ２０は撮影によって画像データ（撮影画像データ）を取得するが、以下では画像データを単に画像という場合がある。従って、撮影画像は撮影画像データを意味する場合があり、パノラマ画像はパノラマ画像データを意味する場合がある。撮影画像は、複数の画素を含み、撮影画像データは、各画素の撮影画像中の位置（座標）を示す位置情報と各画素の輝度（画素値）とを対応付けて有する。撮影位置の位置情報は、例えばＧＰＳによって検出される位置の情報であってもよく、撮影空間内の任意の位置を基準とした位置の情報であってもよい。撮影位置、撮影方向の方角及び傾きはそれぞれ、カメラ２０に内蔵されているセンサ２６により測定されてもよく、また、外部の他のセンサ等により測定されてカメラ２０又は情報処理装置１０へ送信されてもよい。
【００２４】
本実施形態では、カメラ２０を用いて、賃貸住宅及び販売住宅等の不動産物件の部屋、ホテル及び民宿等の宿泊施設の部屋等を撮影する。カメラ２０を用いて撮影する空間（実空間）は、博物館、美術館、テーマパーク、アミューズメント施設、観光地、商業施設等であってもよい。以下では、略矩形の部屋を撮影対象の空間として説明する。
【００２５】
図５はカメラ２０の撮影位置の例を示す模式図であり、撮影対象の部屋を天井側から見た状態を示している。図５に示す撮影対象の部屋にはドア、カウンター、植物、ソファー、階段等が設置されている。本実施形態では、例えば図５中の黒丸で示す２箇所で撮影を行い、一方の撮影位置（図５における左側の撮影位置）を第１撮影位置とし、他方の撮影位置（図５における右側の撮影位置）を第２撮影位置とする。撮影位置は図５に示す例に限らず任意の２箇所とすればよく、また３箇所以上としてもよい。また本実施形態では、複数の撮影位置において、床面からの撮影高さは同じとし、例えば１ｍ程度とするが、これに限定しない。立った状態の大人の目線の高さ、又は椅子に座った状態の大人の目線の高さ等の任意の高さから撮影を行ってもよい。カメラ２０が撮影を行う位置及び高さは、カメラ２０に内蔵されたセンサ２６又はカメラ２０を外部から監視するセンサにより測定される。またカメラ２０を特定の位置及び高さに固定する治具等を利用して撮影を行ってもよい。また本実施形態では、複数の撮影位置において、カメラ２０の上下方向を撮影空間における鉛直方向に一致させた状態で撮影を行う。
【００２６】
なお、それぞれの撮影位置において床面からの高さが異なる状態で撮影し、撮影後のパノラマ画像における天頂角方向（上下方向）を補正して、同じ高さから撮影した状態のパノラマ画像を生成してもよい。例えば、撮影後のパノラマ画像において、同一の被写体が、それぞれの画像中の上下方向における同じ位置となるように、パノラマ画像の各画素を上下方向に移動させる補正を行ってもよい。また、カメラ２０のセンサ２６にて撮影時のカメラ２０の傾きを検出し、検出した傾きを用いて撮影後のパノラマ画像における鉛直方向の傾きを補正（天頂補正）することにより、それぞれの撮影位置で撮影したパノラマ画像を、画像の上下方向が撮影空間の鉛直方向に一致する画像に補正してもよい。
【００２７】
図６及び図７は、パノラマ画像の例を示す模式図である。図６Ａに示すパノラマ画像は、図５に示す第１撮影位置において所定の高さにおける水平面上で矢符Ｄ１で示す方向にカメラ２０の前側を向けて（第１光軸を一致させて）撮影された画像の例であり、図６Ｂに示すパノラマ画像は、第２撮影位置において所定の高さにおける水平面上で矢符Ｄ２で示す方向にカメラ２０の前側を向けて撮影された画像の例である。また図７Ａに示すパノラマ画像は、第１撮影位置において所定の高さにおける水平面上で矢符ｔで示す方向（第２撮影位置から第１撮影位置への方向）にカメラ２０の前側を向けて撮影された画像の例であり、図７Ｂに示すパノラマ画像は、第２撮影位置において所定の高さにおける水平面上で矢符ｔにて示す方向にカメラ２０の前側を向けて撮影された画像の例である。以下では、カメラ２０の前側（正面方向）をカメラ２０の撮影方向という。
【００２８】
カメラ２０は、カメラ２０の正面方向の景色が画像中の左右方向の中央部に写り、カメラ２０の後側（背面方向）の景色が画像中の左右端部に写るパノラマ画像を生成する。またカメラ２０は、撮影空間の鉛直方向が画像の上下方向に一致し、撮影位置（撮影高さ）が画像の上下方向の中央に一致するパノラマ画像を生成する。よって、それぞれの撮影位置において同じ撮影方向（図５中の矢符ｔで示す方向）で撮影を行った場合、図７Ａ，Ｂに示すように、撮影位置と同じ高さの被写体は、それぞれのパノラマ画像の上下方向の中央部に写る。また、矢符ｔで示す方向（撮影方向）に存在する被写体ＦＰは、それぞれのパノラマ画像の中央部に写り、矢符ｔで示す方向の反対方向（カメラ２０の背面方向）に存在する被写体は、それぞれのパノラマ画像の左右端部に写る。一方、それぞれの撮影位置において異なる方角を撮影方向（図５中の矢符Ｄ１，Ｄ２で示す方向）として撮影を行った場合、図６Ａ，Ｂに示すように、同じ被写体が画像中の方位角方向（左右方向）の異なる位置に写る。図６Ａ，Ｂに示すように、それぞれの画像中心に写る被写体が、撮影位置を結ぶ方角の被写体でないパノラマ画像を切り替えて表示する場合、画像の遷移を滑らかに行うことができない。また、このようなパノラマ画像を合成して表示する場合、合成後のパノラマ画像に方位角方向のブレが生じ、鮮明なパノラマ画像を提供できない。
【００２９】
そこで、本実施形態の情報処理装置１０は、図６Ａ，Ｂに示す画像のように画像中心に写る被写体のそれぞれの撮影位置からの方角が、撮影位置を結ぶ方角に一致しない被写体であるパノラマ画像に対して補正処理を行い、図７Ａ，Ｂに示す画像のように画像中心に写る被写体が、それぞれの撮影位置からの方角が、撮影位置を結ぶ方角に一致する被写体であるパノラマ画像を生成する。従って、本実施形態の情報処理装置１０によって処理されるパノラマ画像は、それぞれの撮影位置において、撮影位置（カメラ２０）の床面からの高さを一致させ、カメラ２０の上下方向を撮影空間の鉛直方向に一致させた状態で撮影された画像であるが、それぞれの撮影位置でカメラ２０の撮影方向の方角は一致していなくてもよい。即ち、それぞれの撮影位置において、カメラ２０の前後方向及び左右方向は一致していなくてもよい。また、本実施形態の情報処理装置１０は、図６Ａ，Ｂに示すようなパノラマ画像を、図７Ａ，Ｂに示すようなパノラマ画像にそれぞれ補正する際に、図６Ａ，Ｂのパノラマ画像において、第２撮影位置から第１撮影位置への方向（図５中の矢符ｔの方向）に存在する被写体ＦＰが写っている位置を特定する必要がある。この被写体ＦＰの画像中の位置を、以下では極点という。
【００３０】
次に、情報処理装置１０が行う補正処理についてフローチャートに基づいて説明する。図８は、情報処理装置１０による補正処理の手順の一例を示すフローチャート、図９は、補正処理に含まれる極点特定処理の手順の一例を示すフローチャート、図１０〜図１８は、情報処理装置１０による補正処理を説明するための模式図である。以下の処理は、情報処理装置１０の記憶部１２に記憶してある方位補正プログラムＰを含む制御プログラムに従って制御部１１によって実行される。なお、本実施形態では、以下の処理を制御部１１が制御プログラムを実行することにより実現するが、これらの一部を専用のハードウェア回路で実現してもよい。
【００３１】
以下では、図５に示す撮影空間における第１撮影位置で撮影した図６Ａに示すパノラマ画像を第１パノラマ画像といい、第２撮影位置で撮影した図６Ｂに示すパノラマ画像を第２パノラマ画像という。そして、図６Ａ，Ｂに示すように第１撮影位置及び第２撮影位置においてそれぞれ異なる方角を撮影方向として撮影した第１パノラマ画像及び第２パノラマ画像を、第２撮影位置から第１撮影位置に向かう方向に存在する被写体ＦＰが画像の中央に位置するパノラマ画像に補正する処理について説明する。
【００３２】
情報処理装置１０の制御部１１は、補正処理を行うべきパノラマ画像をパノラマ画像ＤＢ１２ａから読み出す（Ｓ１）。補正処理を行うべきパノラマ画像は、入力部１４又は外部装置を介して指定される。処理対象のパノラマ画像は、例えば同じ撮影空間内の異なる撮影位置で撮影されたパノラマ画像であり、図５に示す撮影空間における２箇所の撮影位置で撮影されたパノラマ画像とする。第１パノラマ画像及び第２パノラマ画像は、それぞれの撮影位置において、床面からの高さが同一であり、カメラ２０の上下方向を撮影空間の鉛直方向に一致させた状態で撮影された画像である。即ち、画像の上下方向が撮影空間の鉛直方向に一致し、撮影高さが画像の上下方向の中央に一致する画像である。なお、撮影後のパノラマ画像に対して、例えばパノラマ画像に付加された付加データ（撮影方向の傾き）に基づく天頂補正を行うことにより、同じ高さの撮影位置で、カメラ２０の上下方向を撮影空間の鉛直方向に一致させた状態で撮影した画像を生成してもよい。また、第１パノラマ画像及び第２パノラマ画像は、それぞれの撮影位置でカメラ２０の撮影方向の方角は一致していなくてよい。
【００３３】
制御部１１は、パノラマ画像と共に、それぞれのパノラマ画像に付加された付加データをパノラマ画像ＤＢ１２ａから読み出す。そして、制御部１１（向き補正部）は、読み出した付加データに基づいて、読み出した２つのパノラマ画像に対して、それぞれの撮影位置からの撮影方向が同一の方角（方位）となるように画像の向きを補正する補正処理を行う（Ｓ２）。例えば図１０Ａに矢符Ｄ３で示すように、それぞれの撮影位置からの撮影方向が同一の方角となるように、第１パノラマ画像及び第２パノラマ画像の向きを補正する。例えば付加データに含まれる撮影方向の方角（向首方向）は、北向きを０度、東向きを９０度、南向きを１８０度、西向きを２７０度とそれぞれし、０度以上３６０度未満の値で示されている。よって、制御部１１は、撮影方向の方角を示す値に基づいて、それぞれのパノラマ画像を水平方向（方位角方向）にスクロール（移動）することにより、例えば撮影位置から北方向にある被写体が画像の中央に写るパノラマ画像を生成する。これにより、撮影方向を北向きとして撮影した状態に補正された第１パノラマ画像及び第２パノラマ画像が得られる。なお、第１パノラマ画像及び第２パノラマ画像における撮影方向の方角は、北向きに補正する構成に限らず、同一の方角であればよい。
【００３４】
例えば向首方向がφC 度（ただし０≦φC ＜３６０）であった場合、パノラマ画像の幅（左右方向の長さ）をＷ画素とすると、以下の（３）式によってスクロール量Ｓ（移動させる画素数）が算出される。制御部１１は、図１０Ｂに示すように、読み出した２つのパノラマ画像のそれぞれに対して、各画素をそれぞれ、算出したスクロール量Ｓだけ右方向にスクロールする処理を行う。なお、図１０Ｂの下側に示す画素ｘ0 のように、スクロール量Ｓだけ移動させた場合に画像の右端からはみ出る画素については、はみ出した量だけ画像の左端から移動させた位置ｘ1 に移動させる。パノラマ画像において右方向をｘ軸とした場合、スクロール前のパノラマ画像の各画素のｘ座標値をｘ0 とすると、スクロール後のパノラマ画像の各画素のｘ座標値ｘ1 は、以下の（４）によって算出できる。なお、ｍｏｄは剰余演算子を表し、ＡｍｏｄＢは、ＡをＢで割った余りを示す。よって、制御部１１は、（４）式を用いて、パノラマ画像の各画素ｘ0 の位置（ｘ座標値）から、スクロール後のパノラマ画像の各画素ｘ1 の位置を算出する。制御部１１は、パノラマ画像の各画素ｘ0 の画素値を、算出したスクロール後のパノラマ画像の各画素ｘ1 の位置に移動させることにより、図１１Ａ，Ｂに示すようにそれぞれの撮影位置からの撮影方向が同一の方角となるパノラマ画像を生成する。なお、図１１Ａは、図１０Ａに示すように第１撮影位置から矢符Ｄ３で示す撮影方向に撮影した状態のパノラマ画像であり、図１１Ｂは、第２撮影位置から矢符Ｄ３で示す撮影方向に撮影した状態のパノラマ画像である。
【００３５】
Ｓ＝φC ／３６０×Ｗ        …（３）
ｘ1 ＝（ｘ0 ＋Ｓ）ｍｏｄＷ  …（４）
【００３６】
次に制御部１１は、図１１Ａ，Ｂに示すように撮影位置からの撮影方向が同一の方角となるように補正された第１パノラマ画像及び第２パノラマ画像に基づいて、第１パノラマ画像及び第２パノラマ画像のそれぞれにおける極点の位置を特定する（Ｓ３）。極点は、第１パノラマ画像及び第２パノラマ画像のそれぞれにおいて、第２撮影位置から第１撮影位置への方向（図５中の矢符ｔの方向）に存在する被写体（図５では被写体ＦＰ）が写っている位置である。なお、ここでの第１パノラマ画像及び第２パノラマ画像は、それぞれの撮影位置において床面から同じ高さで撮影したものであるので、極点は、画像の上下方向の中央のいずれかに存在する。即ち、図１１Ａ，Ｂに示す第１パノラマ画像及び第２パノラマ画像において、それぞれの極点は、直線ＣＬ上の異なる位置に存在する。
【００３７】
図９に示す極点特定処理において、制御部１１（抽出部）はまず、ステップＳ２で画像の向きを補正した第１パノラマ画像及び第２パノラマ画像から、画像の上下方向の中央の直線ＣＬ上に並ぶ画素を抽出して画素列を生成する（Ｓ１１）。なお、制御部１１は、直線ＣＬ上に並ぶ画素による画素列を生成してもよく、直線ＣＬの延伸方向に並ぶ画素から所定数の画素毎に画素を間引いた画素列を生成してもよく、また、直線ＣＬの延伸方向に並ぶ複数の画素毎の平均画素値による画素列を生成してもよい。なお、生成する画素列の要素数を減らした場合、以降の処理における演算量を減らすことができる。ここでは、制御部１１は、図１２Ａ，Ｂ中の矩形で示すように、直線ＣＬを中心として画像の上下方向に所定画素数の高さの領域に含まれる画素を抽出し、直線ＣＬの延伸方向に所定数の画素毎の平均画素値を算出し、算出した平均画素値による画素列を生成する。例えばパノラマ画像の高さ（上下方向の長さ）が２６８８画素であり、幅（左右方向の長さ）が５３７６画素である場合、制御部１１は、直線ＣＬを中心として画像の上下方向に１００画素の高さの領域に含まれる画素を抽出し、直線ＣＬの延伸方向に３２画素毎（即ち、１００画素×３２画素毎）の平均画素値を算出し、要素数１６８の画素列を生成する。なお、制御部１１は、パノラマ画像から画素を抽出する領域に対して、ローパスフィルタ処理を行い、パノラマ画像からノイズ及び高周波成分を除去してもよい。この場合、パノラマ画像におけるノイズ及び高周波成分による影響を低減できる。
【００３８】
第１パノラマ画像及び第２パノラマ画像は、撮影高さが同じ撮影位置から撮影した状態の画像であるので、画像の上下方向の中央にはそれぞれ、撮影位置での水平面上に存在する被写体が写っている。従って、第１パノラマ画像から抽出した画素列と、第２パノラマ画像から抽出した画素列とは、同じ被写体（撮影位置での水平面上に存在する被写体）が異なる位置に写っている。よって、情報処理装置１０は、第１パノラマ画像から抽出した画素列と、第２パノラマ画像から抽出した画素列とにおいて、同じ被写体が写っている画素の対応付けを行う。本実施形態の情報処理装置１０は、例えばDynamic Time Warping（ＤＴＷ）の手法を用いて、２つの画素列における同じ被写体の画素の対応付けを行う。具体的には、情報処理装置１０は、２つの画素列において、画素列の各画素を所定画素数ずつシフトさせながら、２つの画素列の類似度を示す適合率を算出し、シフト量ｓ（方位角の位相φと等価）に応じた適合率の変化ρ（ｓ）を算出する。なお、本実施形態では、ＤＴＷにおける処理中に得られるディスタンスマトリクスの最小パスを利用して、２つの画素列の適合率を算出する。これにより、情報処理装置１０は、２つのパノラマ画像における撮影方角と水平に並ぶ画素において、各画素位置における類似度を算出できる。
【００３９】
まず制御部１１は、画素列の各画素をシフトさせるシフト量ｓを０に設定する（Ｓ１２）。そして制御部１１は、第１パノラマ画像から抽出した画素列（以下では第１画素列という）と、第２パノラマ画像から抽出した画素列（以下では第２画素列という）との間のコストマトリクスを作成する（Ｓ１３）。図１３はコストマトリクスの例を示しており、制御部１１は、画素列の要素数Ｎ（例えばＮ＝１６８）に対応して、Ｎ×Ｎの配列を用意する。配列の各要素には、第１画素列の各画素（各要素）の画素値（ここでは、所定数の画素の平均画素値）と、第２画素列の各画素の画素値との差異が格納されることにより、コストマトリクスが作成される。第１画素列の画素ｆ（ｉ）と第２画素列の画素ｒ（ｊ）とはそれぞれＲＧＢの各値を有しており、画素ｆ（ｉ）のＲＧＢ値を（Ｒfi，Ｇfi，Ｂfi）とし、画素ｒ（ｊ）のＲＧＢ値を（Ｒrj，Ｇrj，Ｂrj）とした場合、制御部１１は、２つの画素ｆ（ｉ），ｒ（ｊ）間のコストＣとして、例えば以下の（５）式によってＲＧＢ値のユークリッド距離を算出する。なお、制御部１１は、２つの画素間のコストＣとして、ＲＧＢ値のユークリッド距離の二乗等を算出してもよい。
【００４０】
【数２】
2020170400.tif 000004
【００４１】
ここで、第１パノラマ画像及び第２パノラマ画像は、それぞれの撮影位置からの撮影方向が同じ方角であるので、第１画素列における極点と第２画素列における極点とは、画素列の左側又は右側の同じ側に存在する。よって、制御部１１は、図１３のコストマトリクスにおいてハッチングで示す領域、具体的には左下領域及び右上領域における要素に対応するコストＣのみを算出すればよい。なお、制御部１１は、コストマトリクスの全領域における要素に対応するコストＣを算出してもよい。
【００４２】
次に制御部１１は、図１３においてハッチングで示す左下領域及び右上領域における各要素に対応するコストＣが算出されて格納されたコストマトリクスＣ（ｉ，ｊ）に基づいて、第１画素列と第２画素列との間のディスタンスマトリクスＤ（ｉ，ｊ）を作成する（Ｓ１４）。ディスタンスマトリクスの各要素は、コストマトリクスの左下領域及び右上領域のそれぞれにおいて、各領域の左下の要素を基点Ｄ（０，０）とし、各要素Ｄ（ｉ，ｊ）に到達するまでのコストを累積した値を格納する。なお、基点Ｄ（０，０）から各要素Ｄ（ｉ，ｊ）に到達するパス（経路）は多数存在するが、ディスタンスマトリクスの各要素には、各要素Ｄ（ｉ，ｊ）に到達するための最小コストが格納される。
【００４３】
図１４はディスタンスマトリクスの例を示しており、制御部１１は、コストマトリクスと同様に、画素列の要素数Ｎに対応してＮ×Ｎの配列を用意する。そして制御部１１は、ディスタンスマトリクスの左下領域において左下の要素Ｄ（０，０）に、コストマトリクスの要素Ｃ（０，０）のコストを格納する。次に制御部１１は、図１４Ａ中の上向きの矢符で示すように、左下領域における左端の１列の要素Ｄ（０，１）〜要素Ｄ（０，Ｎ／２−１）のそれぞれに、直下の要素Ｄ（０，ｊ−１）に、自身の要素に対応するコストＣ（０，ｊ）を加算した値を格納する。同様に、制御部１１は、図１４Ａ中の右向きの矢符で示すように、左下領域における下端の１列の要素Ｄ（１，０）〜要素Ｄ（Ｎ／２−１，０）のそれぞれに、左隣の要素Ｄ（ｉ−１，０）に、自身の要素に対応するコストＣ（ｉ，０）を加算した値を格納する。
【００４４】
次に制御部１１は、左下領域における左端及び下端以外の各要素Ｄ（ｉ，ｊ）のそれぞれについて、図１４Ｂ中の上向きの矢符で示すように左側から順に、対応するディスタンスを算出する。ここでは、制御部１１は、各要素Ｄ（ｉ，ｊ）について、この要素の左下の要素のディスタンスＤ（ｉ−１，ｊ−１）、左隣の要素のディスタンスＤ（ｉ−１，ｊ）、直下の要素のディスタンスＤ（ｉ，ｊ−１）のそれぞれに、自身の要素に対応するコストＣ（ｉ，ｊ）を加算し、最小値となる値を各要素のディスタンスＤ（ｉ，ｊ）とする。なお、このとき、制御部１１は、左下の要素のディスタンスＤ（ｉ−１，ｊ−１）に対しては、自身の要素のコストＣ（ｉ，ｊ）に適宜の係数を乗算した上で加算してもよい。具体的には、制御部１１は、以下の（６）式に示す３つの値の内の最小値を、ディスタンスマトリクスの各要素Ｄ（ｉ，ｊ）に格納する。
【００４５】
Ｄ（ｉ−１，ｊ−１）＋ｋ×Ｃ（ｉ，ｊ）  ただし、ｋは適宜の係数
Ｄ（ｉ−１，ｊ）＋Ｃ（ｉ，ｊ）
Ｄ（ｉ，ｊ−１）＋Ｃ（ｉ，ｊ）        …（６）
【００４６】
上述した処理により、ディスタンスマトリクスの左下領域における右上の要素Ｄ（Ｎ／２−１，Ｎ／２−１）には、左下の要素Ｄ（０，０）から要素Ｄ（Ｎ／２−１，Ｎ／２−１）まで移動するための最小のコスト（ディスタンス）が格納される。制御部１１は、ディスタンスマトリクスの右上領域における各要素についても上述した処理と同様の処理を行う。これにより、制御部１１は、図１４においてハッチングで示すディスタンスマトリクスの左下領域及び右上領域における各要素に対応するディスタンスＤを算出する。なお、制御部１１は、コストマトリクスの全領域における要素に対応するコストＣを算出する場合、ディスタンスマトリクスの全領域における要素に対応するディスタンスＤを算出してもよい。
【００４７】
次に制御部１１は、図１４においてハッチングで示す左下領域及び右上領域における各要素に対応するディスタンスＤが算出されたディスタンスマトリクスＤ（ｉ，ｊ）に基づいて、左下領域及び右上領域のそれぞれにおいて、領域内の左下の要素から右上の要素までの経路で、最も低コストとなる経路（最小パス）を特定する（Ｓ１５）。具体的には、制御部１１は、左下領域における左下の要素Ｄ（０，０）から右上の要素Ｄ（Ｎ／２−１，Ｎ／２−１）までの最小パスと、右上領域における左下の要素Ｄ（Ｎ／２，Ｎ／２）から右上の要素Ｄ（Ｎ−１，Ｎ−１）までの最小パスとを特定する。
【００４８】
図１５は最小パスの特定処理を説明するための図であり、ディスタンスマトリクスを示す。制御部１１は、ディスタンスマトリクスの左下領域及び右上領域のそれぞれにおいて、最も右上の要素を最小パス上の要素としてマークを付ける。具体的には、制御部１１は、左下領域においては右上の要素Ｄ（Ｎ／２−１，Ｎ／２−１）にマークを付け、右上領域においては右上の要素Ｄ（Ｎ−１，Ｎ−１）にマークを付ける。次に制御部１１は、マークを付けた要素に対して、左下の要素のディスタンスと、左隣の要素のディスタンスと、直下の要素のディスタンスとのうちの最小値を特定し、最小値の要素を最小パス上の次の要素としてマークを付ける。制御部１１は、このような処理を繰り返すことにより、図１５に示すように、ディスタンスマトリクスの左下領域において要素Ｄ（Ｎ／２−１，Ｎ／２−１）から要素Ｄ（０，０）に至る最小パスを特定できる。なお、制御部１１は、ディスタンスマトリクスの右上領域においても同様の処理を行い、右上領域における最小パスを特定する。最小パスを構成する要素の数は、ディスタンスマトリクスの構成内容に応じて異なるが、最少でＮ／２個、最多でＮ−１個となる。
【００４９】
上述した処理によって特定された最小パスは、結果として、第１画素列の各画素と第２画素列の各画素との対応関係を示す。例えば要素Ｄ（ｉ，ｊ）が最小パス上の要素である場合、ここでの第１画素列及び第２画素列において、第１画素列のｘ座標値ｉの画素と第２画素列のｘ座標値ｊの画素とに、同一の被写体が写っていると推定できることを意味する。
【００５０】
次に制御部１１（算出部）は、特定した最小パスに基づいて、ここでの第１画素列及び第２画素列における適合率を算出する（Ｓ１６）。図１６は、ディスタンスマトリクスの左下領域及び右上領域のそれぞれにおいて特定された最小パスの例を示し、最小パスは、図１６に示すように左下領域及び右上領域内で曲線をなす点列として求められる。ここで、もし、第１画素列及び第２画素列のそれぞれの中央が極点に一致する場合、最小パスを示す点列は必ず、ディスタンスマトリクスの左下及び右上の要素を結ぶ直線（図１６では一点鎖線で示す直線）に対して決まった側に現れる。具体的には、図１６にハッチングで示すように、左下領域においては直線の上側に、右上領域においては直線の下側に点列（最小パス）は現れる。
【００５１】
図１７は、画像の中央が極点である第１パノラマ画像及び第２パノラマ画像と、このようなパノラマ画像に基づいて特定された最小パスとの例を示す。図１７Ａは第１パノラマ画像を示し、図１７Ｂは第２パノラマ画像を示し、図１７Ａ，Ｂにおける破線は、第１画素列における各画素と、第２画素列における各画素との対応をそれぞれ示す。図１７Ａ，Ｂに示すように、画像の中央が極点である第１パノラマ画像及び第２パノラマ画像では、同一の被写体は異なる位置に写っているが、極点よりも左側の被写体は画像の左側に写り、極点よりも右側の被写体は画像の右側に写る。また図１７Ａ，Ｂから分かるように、極点よりも左側の各画素の対応を示す破線の傾きは同じ傾き（右下がり）であり、極点よりも右側の各画素の対応を示す破線の傾きは同じ傾き（右上がり）である。即ち、図１７Ｃに示すように、画像の中央が極点であるパノラマ画像に基づいて特定された最小パスは、左下領域においては一点鎖線で示す直線の上側に、右上領域においては直線の下側にそれぞれ現れる。
【００５２】
そこで、本実施形態では、最小パスに特定された各要素において、正しい領域に存在する要素の割合を適合率として定義する。なお、正しい領域とは、ディスタンスマトリクスの左下領域では直線の上側の領域であり、右上領域では直線の下側の領域である。図１６に示す最小パスでは、ディスタンスマトリクスの左下領域において一点鎖線で示す直線よりも上側の各要素は正しい領域に存在し（図１６ではＯＫで示す）、直線よりも下側の各要素は正しい領域に存在しない（図１６ではＮＧで示す）と判断される。また、図１６に示す最小パスでは、ディスタンスマトリクスの右上領域において一点鎖線で示す直線よりも上側の各要素は正しい領域に存在せず（図１６ではＮＧで示す）、直線よりも下側の各要素は正しい領域に存在する（図１６ではＯＫで示す）と判断される。よって、制御部１１は、最小パスに特定された各要素について、それぞれ正しい領域に存在するか否かを判断し、最小パスに特定された要素数に対して、正しい領域に存在すると判断した要素数の割合を適合率として算出する。具体的には、最小パスに特定された要素数をＭとし、正しい領域に存在すると判断した要素数をＭokとした場合、制御部１１は、以下の（７）式によって適合率ρを算出する。上述した処理により、制御部１１は、シフト量ｓが０の場合の適合率ρ（０）を算出し、算出したρ（０）を記憶部１２に記憶する。なお、制御部１１は、例えば第１画素列及び第２画素列の要素数Ｎの要素を有する一次元配列ρ［ｎ］（０≦ｎ≦Ｎ−１）を記憶部１２に定義し、算出した適合率ρを、シフト量ｓに対応する要素に順次記憶する。
【００５３】
ρ＝ＭOK／Ｍ    …（７）
【００５４】
制御部１１は、シフト量ｓに所定画素数を加算し（Ｓ１７）、第１画素列及び第２画素列をそれぞれ、所定画素数だけ右方向又は左方向にシフト（移動）させ（Ｓ１８）、シフト後の第１画素列及び第２画素列（シフト画像）を生成する。本実施形態では、第１画素列及び第２画素列を１画素ずつシフトさせるので、制御部１１は、シフト量ｓに１を加算し、それぞれの画素列を１画素だけシフトさせるが、シフトさせる画素数は１画素に限定されない。なお、右方向又は左方向にシフトさせた場合、各画素列からはみ出る画素については、はみ出した量だけ画素列の左端又は右端から移動させた位置にシフトさせる。そして制御部１１は、この時点でのシフト量ｓが画素列の要素数Ｎに一致するか否かを判断し（Ｓ１９）、一致しないと判断した場合（Ｓ１９：ＮＯ）、ステップＳ１３の処理に戻り、ステップＳ１８でシフトさせた第１画素列及び第２画素列に基づいて、ステップＳ１３〜Ｓ１６の処理を行う。これにより、制御部１１は、ステップＳ１７で所定画素数を加算したシフト量ｓに対する適合率ρを算出し、算出した適合率ρ（ｓ）を、配列ρ［ｎ］の対応する要素（ｓ番目の要素）に記憶する。
【００５５】
制御部１１は、シフト量ｓが画素列の要素数Ｎに一致するまでステップＳ１３〜Ｓ１８の処理を繰り返すことにより、シフト量ｓに関する関数として適合率ρ（ｓ）が算出される。なお、シフト量ｓはパノラマ画像における方位角φと対応（比例）しているので、適合率ρ（ｓ）と適合率ρ（φ）とは同義として扱える。なお、シフト量ｓ及び方位角φは、φ＝２π×ｓ／Ｎ（Ｎは画素列の要素数）によって相互に変換可能である。
【００５６】
図１８は適合率ρ（φ）の例を示しており、適合率ρ（φ）は０〜１の範囲内の値をとり、図１８では適合率ρ（φ）＝０を黒、適合率ρ（φ）＝１を白として表現している。適合率ρ（φ）は、第１画素列及び第２画素列において方位角φの位置がそれぞれ極点である可能性を示す。図１８では、第１パノラマ画像及び第２パノラマ画像における極点の大凡の位置を実線で示し、極点の反対側に存在する被写体の大凡の位置を破線で示している。図１８から分かるように、適合率ρ（φ）が最大値となる位置は、極点の位置に略一致し、適合率ρ（φ）が最小値となる位置は極点の反対側の位置に略一致している。また図１８では、算出された適合率ρ（φ）は、概ね最大値と最小値との間で単純増加及び単純減少していることが分かる。よって、適合率ρ（φ）が最大値となる方位角φの位置を極点に特定することができる。
【００５７】
制御部１１は、ステップＳ１９でシフト量ｓが画素列の要素数Ｎに一致すると判断した場合（Ｓ１９：ＹＥＳ）、ステップＳ１６でそれぞれのシフト量ｓに対して算出した適合率ρ（ｓ）から最大の適合率を特定する（Ｓ２０）。そして制御部１１（極点特定部）は、最大の適合率ρ（ｓ）が算出されたシフト量ｓに基づいて、シフト量ｓに対応する方位角φを算出し、算出した方位角φの位置を極点に特定する（Ｓ２１）。制御部１１（補正部）は、図８に示す補正処理に戻り、特定した極点の位置を示す方位角φに基づいて、ステップＳ２で画像の向き（撮影方角）を補正した第１パノラマ画像及び第２パノラマ画像の方位角方向をそれぞれ補正する（Ｓ４）。具体的には、制御部１１は、第１パノラマ画像及び第２パノラマ画像のそれぞれにおいて、特定した極点の位置（算出した方位角φの位置）が画像の中央に移動するように、パノラマ画像中の各画素を左右方向に平行移動（スクロール）させる。画像の左端を方位角φ＝０とした場合、画像の中央は方位角φ＝πの位置であるので、特定した極点を画像の中央に移動させるためにパノラマ画像中の各画素を右方向へ移動させるスクロール角度△φは、以下の（８）式によって算出できる。また、パノラマ画像の幅（左右方向の長さ）はＷ画素であるので、画素単位のスクロール量Ｓは、以下の（９）式によって算出できる。
【００５８】
△φ＝π−φ          …（８）
Ｓ＝△φ／２π×Ｗ    …（９）
【００５９】
よって、制御部１１は、ステップＳ２で撮影方向の方角を補正した第１パノラマ画像及び第２パノラマ画像のそれぞれに対して、各画素をそれぞれ、算出したスクロール量Ｓだけ右方向にスクロールすることにより、第１パノラマ画像及び第２パノラマ画像の方位角方向を補正する。パノラマ画像の各画素を右方向にスクロール量Ｓだけスクロールする処理は、図１０Ｂで説明した処理と同様である。これにより、図１１Ａに示す第１パノラマ画像が、図７Ａに示す第１パノラマ画像に補正され、図１１Ｂに示す第２パノラマ画像が、図７Ｂに示す第２パノラマ画像に補正され、同じ被写体が画像中の同じ方位角方向に写っている第１パノラマ画像及び第２パノラマ画像が得られる。
【００６０】
制御部１１は、補正処理後の第１パノラマ画像及び第２パノラマ画像を出力し（Ｓ５）、処理を終了する。なお、制御部１１は、補正処理後の第１パノラマ画像及び第２パノラマ画像を記憶部１２へ出力して記憶部１２に記憶させてもよく、通信部１３を介して所定の外部装置へ送信してもよい。
【００６１】
上述した処理により、本実施形態の情報処理装置１０は、図６Ａ，Ｂに示すようにそれぞれの撮影位置において異なる方角を撮影方向として撮影された状態の第１パノラマ画像及び第２パノラマ画像を、図１１Ａ，Ｂに示すようにそれぞれの撮影位置において同じ方角を撮影方向として撮影された状態の第１パノラマ画像及び第２パノラマ画像に変換した後、図７Ａ，Ｂに示すようにそれぞれの撮影方向において、撮影位置を結ぶ方向を撮影方向として撮影された状態の第１パノラマ画像及び第２パノラマ画像に補正する。これにより、同じ被写体が画像中の同じ方位角方向に写っている第１パノラマ画像及び第２パノラマ画像を生成できる。
【００６２】
本実施形態の情報処理装置１０では、それぞれの撮影位置において異なる方角を撮影方向として撮影を行った場合であっても、撮影後のパノラマ画像を、同じ被写体が画像中の方位角方向（左右方向）の同じ位置に写るパノラマ画像に補正できる。よって、複数のパノラマ画像において、同じ被写体の画像中の方位角方向を一致させることができる。このようなパノラマ画像を用いることにより、複数のパノラマ画像を切り替えて表示する場合に画像の遷移を滑らかに行うことができる。また、このようなパノラマ画像を合成して表示する場合、合成後のパノラマ画像に方位角方向（横方向）のブレが生じず、鮮明なパノラマ画像を提供できる。
【００６３】
（実施形態２）
本実施形態では、極点特定処理において、第１画素列及び第２画素列に基づいて算出した第１画素列及び第２画素列の間の適合率ρ（φ）を三角波で近似し、近似した三角波に基づいて、より適切な極点を特定する情報処理装置１０について説明する。本実施形態の情報処理装置１０は、実施形態１の情報処理装置１０と同様の構成を有するので、構成については説明を省略する。また、本実施形態の情報処理装置１０は、図８に示す補正処理と同様の補正処理を行う。なお、補正処理に含まれる極点特定処理は、図９に示す処理とは一部異なるので、異なる処理についてのみ説明する。
【００６４】
図１９は、実施形態２の極点特定処理の手順の一例を示すフローチャート、図２０は、実施形態２の極点特定処理を説明するための模式図である。なお、図１９は、図９に示す極点特定処理において、ステップＳ２０の代わりにステップＳ３１〜Ｓ４６を追加したものである。図１９では、図９中のステップＳ１１〜Ｓ１８の図示を省略している。
【００６５】
ここで、図１８から分かるように、適合率ρ（φ）は、概ね最大値と最小値との間で単純増加及び単純減少している。なお、理論的には、方位角φの位置が真の極点位置から離れるにつれ、極点位置からの距離（真の極点位置とのずれ量）と適合率の減少とは比例関係にあると仮定できるため、適合率ρ（φ）は三角波になると仮定できる。よって、本実施形態では、適合率ρ（φ）を最小二乗法によって三角波にフィッティングすることにより、より適切な適合率ρ（φ）の最大値を特定し、特定した適合率ρ（φ）によって、より適切な極点の位置を特定する。図２０の上側にはフィッティングする三角波の例を示しており、図２０に示す三角波は、０〜１の範囲の値を有する振幅が０．５の三角波であり、方位角φ＝０で１．０となり、方位角φ＝πで０になるまで減少し、方位角φ＝２πで再度１．０となるまで増加する三角波である。この三角波を位相φ０＝０の三角波とする。本実施形態の情報処理装置１０は、図２０に示す三角波の位相φ０を０〜２πの範囲で変化させながら、それぞれの位相φ０の三角波と適合率ρ（φ）との差異を算出し、差異が最小となる三角波の位相φ０を特定することにより、適合率ρ（φ）を近似した三角波を特定する。
【００６６】
よって、本実施形態の情報処理装置１０において制御部１１は、ステップＳ１９でシフト量ｓが画素列の要素数Ｎに一致すると判断した場合（Ｓ１９：ＹＥＳ）、即ち、シフト量ｓに関する関数である適合率ρ（ｓ）を算出した後、適合率ρ（φ）をフィッティングする三角波を配列Ｔ（φ）として作成する（Ｓ３１）。具体的には、制御部１１は、画素列の要素数Ｎの要素を有する一次元配列Ｔ［ｎ］（０≦ｎ≦Ｎ−１）を例えば記憶部１２に定義し、図２０に示す三角波の各方位角φにおける値を、配列Ｔ［ｎ］の各要素に格納する。なお、制御部１１は、配列Ｔ［ｎ］の各要素に格納する値を、以下の（１０）式によって算出し、それぞれ算出した値を配列Ｔ［ｎ］の各要素に格納する。なお、配列Ｔ［ｎ］のｎ番目（０≦ｎ＜Ｎ−１）の要素に対応する方位角φはφ＝２π×ｎ／Ｎによって算出される。よって、制御部１１は、配列Ｔ［ｎ］の各要素に、図２０に示す三角波の各方位角φ（φ＝２π×ｎ／Ｎ）における値を格納する。
【００６７】
【数３】
2020170400.tif 000005
【００６８】
次に制御部１１は、それぞれの位相φ０の三角波Ｔ（φ０）と適合率ρ（φ）との差異を格納するための配列Ｅ［ｎ］を作成する（Ｓ３２）。なお、三角波の各値及び適合率ρ（φ）の各値はそれぞれ、要素数Ｎの配列に格納されているので、制御部１１は、画素列の要素数Ｎの要素を有する一次元配列Ｅ［ｎ］を作成する。次に制御部１１は、配列Ｅ［ｎ］の各要素の位置（ｎ番目）を示すｎを０に設定する（Ｓ３３）。制御部１１は、配列Ｅ［ｎ］の各要素に格納する値として、それぞれの位相φ０の三角波Ｔ（φ０）の各値と適合率ρ（φ）の各値との差異（誤差）の二乗を累積し、算出した累積誤差ε2 （φ０）を配列Ｅ［ｎ］の各要素に格納する（Ｓ３４）。ここでは、制御部１１は、配列Ｅ［ｎ］の要素Ｅ［０］に格納する値として、位相φ０＝０の三角波Ｔ（０）の各値と適合率ρ（φ）の各値との累積誤差ε2 （０）を算出し、配列Ｅ［ｎ］の要素Ｅ［０］に格納する。なお、制御部１１は、配列Ｅ［ｎ］のｎ番目の要素に格納する値として、位相φ０＝２π×ｎ／Ｎの三角波Ｔ（φ０）の各値と適合率ρ（φ）の各値との累積誤差ε2 （φ０）を、以下の（１１）式によって算出し、配列Ｅ［ｎ］の各要素に格納する。
【００６９】
【数４】
2020170400.tif 000006
【００７０】
制御部１１は、配列Ｅ［ｎ］の各要素の位置（ｎ番目）を示すｎに１を加算し（Ｓ３５）、ステップＳ３１で作成した三角波の配列Ｔ（φ）の各要素を１つずつシフトさせる（Ｓ３６）。なお、配列Ｔ（φ）の各要素をシフトさせた場合に、配列Ｔ（φ）の一端からはみ出した要素は、配列Ｔ（φ）の他端に移動させる。そして、制御部１１は、ここでのｎの値が配列Ｔ［ｎ］及び配列Ｅ［ｎ］の要素数Ｎに一致するか否かを判断し（Ｓ３７）、一致しないと判断した場合（Ｓ３７：ＮＯ）、ステップＳ３４の処理に戻り、位相φ０（φ０＝２π×ｎ／Ｎ）の三角波Ｔ（φ０）の各値と適合率ρ（φ）の各値との累積誤差ε2 （φ０）を算出し、配列Ｅ［ｎ］のｎ番目の要素に格納する。ここでは、ｎ＝１であるので、制御部１１は、配列Ｅ［ｎ］の要素Ｅ［１］に格納する値として、位相φ０＝２π／Ｎの三角波Ｔ（２π／Ｎ）の各値と適合率ρ（φ）の各値との累積誤差ε2 （２π／Ｎ）を算出し、配列Ｅ［ｎ］の要素Ｅ［１］に格納する。
【００７１】
制御部１１は、ｎの値が要素数Ｎに一致するまでステップＳ３４〜Ｓ３７の処理を繰り返し、その結果、それぞれの位相φ０の三角波Ｔ（φ０）の各値と適合率ρ（φ）の各値との累積誤差ε2 （φ０）が、Ｎ個の各要素にそれぞれ格納された配列Ｅ［ｎ］が得られる。ｎの値が要素数Ｎに一致すると判断した場合（Ｓ３７：ＹＥＳ）、制御部１１は、それぞれの累積誤差ε2 （φ０）が格納された配列Ｅ［ｎ］から、最小の累積誤差を特定し（Ｓ３８）、特定した累積誤差に対応するｎをｎ０とする。そして、制御部１１は、特定した累積誤差が算出された三角波Ｔ（φ）の位相φを、φ＝２π×ｎ０／Ｎによって特定し、特定した位相φの位置（方位角方向の位置）を仮の極点（仮極点）に特定する（Ｓ３９）。
【００７２】
上述した処理によって特定された仮極点（位相φ）は、１回目のフィッティング処理の結果であり、この仮極点に基づいて、図８中のステップＳ４で、ステップＳ２で撮影方角を補正した第１パノラマ画像及び第２パノラマ画像の方位角方向を補正する処理を行ってもよい。なお、上述した処理によって三角波の位相φ（極点の位置を示す方位角φ）を推定する場合、異常値による影響が含まれる可能性がある。例えば第１画素列及び第２画素列に基づいて算出した適合率にノイズが含まれる場合がある。そのため、本実施形態では、異常値による影響をできるだけ排除するために、ロバスト推定と呼ばれる手法を用いて三角波の位相φを精査する（２回目のフィッティング処理）。ロバスト推定では、仮極点に特定した位相φの三角波Ｔ（φ）の各値と、適合率ρ（φ）の各値との差異（誤差ｄ）に応じた重みωを、各値毎（三角波の配列Ｔ［ｎ］及び適合率ρ（φ）の配列ρ［ｎ］の要素毎）に算出し、要素毎の重みωを用いて２回目のフィッティング処理を行う。
【００７３】
よって、制御部１１は、特定した仮極点に基づいて、配列の要素毎の重みωを算出する（Ｓ４０）。重みωを算出する場合、制御部１１は、ステップＳ３８で特定した最小の累積誤差が格納された配列Ｅ［ｎ］の要素の位置ｎ０に基づいて、ステップＳ３１で作成した配列Ｔ［ｎ］の各要素をシフトさせて配列Ｔ´［ｎ］を作成する。配列Ｔ´［ｎ］が示す三角波は、１回目のフィッティング処理によって適合率ρ（φ）をフィッティングした三角波を示す。なお、制御部１１は、以下の（１２）式によって、配列Ｔ´［ｎ］を作成する。
【００７４】
Ｔ´［ｎ］＝Ｔ［（ｎ＋ｎ０）ｍｏｄＮ］    …（１２）
【００７５】
そして制御部１１は、配列Ｔ´［ｎ］の各要素の値と適合率ρ（φ）（配列ρ［ｎ］）の各値との誤差ｄを、ｄ＝ρ［ｎ］−Ｔ´［ｎ］によって算出する。そして制御部１１は、配列の要素毎に（要素の位置毎に）、算出した誤差ｄに応じた重みωを、所定の誤差許容値Ωを用いて以下の（１３）式のように設定する。なお、誤差許容値Ωは例えば、全要素における誤差ｄの中央値の１．２５倍とすることができる。制御部１１は、配列の要素毎に算出した重みωを、例えば記憶部１２に定義した一元配列Ｗ［Ｎ］の各要素に格納する。なお、配列Ｗ［Ｎ］の要素数も、各配列と同様にＮ個である。
【００７６】
【数５】
2020170400.tif 000007
【００７７】
要素毎に算出した重みωを格納した配列Ｗ［Ｎ］を生成した後、制御部１１は、ステップＳ３３〜Ｓ３８と同様の処理を行い（Ｓ４１〜Ｓ４６）、２回目のフィッティング処理を行う。具体的には、制御部１１は、配列Ｅ［ｎ］の各要素の位置（ｎ番目）を示すｎを０に設定する（Ｓ４１）。そして制御部１１は、それぞれの位相φ０の三角波Ｔ（φ０）の各値と適合率ρ（φ）の各値との累積誤差ε2 （φ０）を算出し、配列Ｅ［ｎ］の各要素に格納する（Ｓ４２）。ここでは、制御部１１は、配列Ｅ［ｎ］の各要素に格納する値として、それぞれの位相φ０の三角波Ｔ（φ０）の各値と適合率ρ（φ）の各値との差異（誤差）の二乗に、ステップＳ４０で要素毎に特定した重みωを乗じた値の累積を算出する。なお、制御部１１は、配列Ｅ［ｎ］のｎ番目の要素に格納する値として、位相φ０＝２π×ｎ／Ｎの三角波Ｔ（φ０）の各値と適合率ρ（φ）の各値とにおける重みωを加味した累積誤差ε2 （φ０）を、以下の（１４）式によって算出する。
【００７８】
【数６】
2020170400.tif 000008
【００７９】
そして制御部１１は、ｎに１を加算し（Ｓ４３）、三角波の配列Ｔ（φ）の各要素を１つずつシフトさせる（Ｓ４４）。制御部１１は、ここでのｎの値が配列Ｔ［ｎ］及び配列Ｅ［ｎ］の要素数Ｎに一致するか否かを判断し（Ｓ４５）、一致しないと判断した場合（Ｓ４５：ＮＯ）、ステップＳ４２の処理に戻り、位相φ０（φ０＝２π×ｎ／Ｎ）の三角波Ｔ（φ０）の各値と適合率ρ（φ）の各値とにおける重みωを加味した累積誤差ε2 （φ０）を算出し、配列Ｅ［ｎ］のｎ番目の要素に格納する。
【００８０】
制御部１１は、ｎの値が要素数Ｎに一致するまでステップＳ４２〜Ｓ４５の処理を繰り返し、それぞれの位相φ０の三角波Ｔ（φ０）の各値と適合率ρ（φ）の各値とにおける重みωを加味した累積誤差ε2 （φ０）が、Ｎ個の各要素にそれぞれ格納された配列Ｅ［ｎ］を得る。ｎの値が要素数Ｎに一致すると判断した場合（Ｓ４５：ＹＥＳ）、制御部１１は、要素毎の重みωを加味した累積誤差ε2 （φ０）が格納された配列Ｅ［ｎ］から、最小の累積誤差を特定し（Ｓ４６）、特定した累積誤差に対応するｎをｎ０とする。そして、制御部１１は、特定した累積誤差が算出された三角波Ｔ（φ）の位相φを、φ＝２π×ｎ０／Ｎによって特定し、特定した位相φの位置（方位角方向の位置）を真の極点に特定する（Ｓ２１）。その後、制御部１１は、図８に示す補正処理に戻り、特定した極点の位置を示す方位角φに基づいて、第１パノラマ画像及び第２パノラマ画像の方位角方向を補正する（Ｓ４）。
【００８１】
本実施形態においても、実施形態１と同様に、それぞれの撮影位置において異なる方角を撮影方向として撮影を行った場合であっても、同じ被写体が画像中の方位角方向（左右方向）の同じ位置に写っているパノラマ画像が得られる。また本実施形態では、第１画素列及び第２画素列に基づいて算出した第１画素列及び第２画素列の間の適合率ρ（φ）にノイズが含まれ、適合率ρ（φ）の各値の信頼性が高くない場合であっても、より適切な極点を特定することができる。よって、より適切な極点に基づいて第１パノラマ画像及び第２パノラマ画像の方位角方向を補正することにより、同じ被写体が画像中の方位角方向（左右方向）の同じ位置に写るパノラマ画像をより精度よく生成することができる。
【００８２】
本実施形態において、撮影対象の部屋における撮影位置は３箇所以上としてもよい。この場合、それぞれ２箇所の撮影位置間で、撮影したパノラマ画像における方位角方向の補正処理を行えばよい。これにより、撮影対象の部屋の任意の位置で撮影されたパノラマ画像間において、同じ被写体の画像中の方位角方向を一致させることができる。本実施形態において、カメラ２０は、全天球カメラに限定しない。たとえば、半球型の範囲を撮影可能なカメラであってもよい。通常の平面画像撮影用のカメラでもよい。
【００８３】
各実施形態で記載されている技術的特徴（構成要件）はお互いに組合せ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００８４】
１０  情報処理装置
１１  制御部
１２  記憶部
１３  通信部
１４  入力部
１５  表示部
２０  カメラ
２１  制御部
２２  記憶部
２３  通信部
２４  シャッターボタン
２５  撮影部
２６  センサ
１２ａ  パノラマ画像ＤＢ
【図１】
2020170400.tif 000009
【図２】
2020170400.tif 000010
【図３】
2020170400.tif 000011
【図４】
2020170400.tif 000012
【図５】
2020170400.tif 000013
【図６】
2020170400.tif 000014
【図７】
2020170400.tif 000015
【図８】
2020170400.tif 000016
【図９】
2020170400.tif 000017
【図１０】
2020170400.tif 000018
【図１１】
2020170400.tif 000019
【図１２】
2020170400.tif 000020
【図１３】
2020170400.tif 000021
【図１４】
2020170400.tif 000022
【図１５】
2020170400.tif 000023
【図１６】
2020170400.tif 000024
【図１７】
2020170400.tif 000025
【図１８】
2020170400.tif 000026
【図１９】
2020170400.tif 000027
【図２０】
2020170400.tif 000028