(57)【要約】【課題】パノラマ画像の天頂補正を精度良く行うことが可能な画像処理装置等を提供する。【解決手段】画像処理装置は、撮影装置の正面方向を撮影中心として展開したパノラマ画像を処理する。画像処理装置は、実空間内の撮影位置で撮影した前記パノラマ画像を取得する。また、画像処理装置は、パノラマ画像中の実空間上の水平面と、パノラマ画像に係る全天球上の撮影中心を通る大円との補正量を、実空間内で鉛直方向に存在する画素値に基づいて特定し、特定した補正量に基づいてパノラマ画像を補正する。【選択図】図１
2020071854.tif 000002
【特許請求の範囲】
【請求項１】
撮影装置の正面方向を撮影中心として展開したパノラマ画像を処理する画像処理装置において、
実空間内の撮影位置で撮影した前記パノラマ画像を取得する画像取得部と、
前記パノラマ画像中の前記実空間上の水平面と、前記パノラマ画像に係る全天球上の前記撮影中心を通る大円との補正量を、前記実空間内で鉛直方向に存在する画素値に基づいて特定する補正量特定部と、
特定した前記補正量に基づいて前記パノラマ画像を補正する補正部と
を備える画像処理装置。
【請求項２】
前記補正量特定部は、前記実空間上の水平面を基準として、前記撮影中心を通る大円が回転する回転軸及び回転角度を特定し、
前記補正部は、特定した前記回転軸及び回転角度に基づいて、前記パノラマ画像中の前記実空間上の水平面が前記大円に一致するように前記パノラマ画像を補正する
請求項１に記載の画像処理装置。
【請求項３】
前記実空間内で鉛直方向に存在する２点に対応する前記パノラマ画像中の２つの特徴点を２組取得する特徴点取得部を備え、
前記補正量特定部は、取得した２組の前記特徴点が共に補正後のパノラマ画像の上下方向に存在するための補正量を特定する
請求項１又は２に記載の画像処理装置。
【請求項４】
前記補正量特定部は、取得した２組の前記特徴点が共に補正後のパノラマ画像の上下方向に存在するために、前記パノラマ画像に係る全天球上の前記撮影中心を通る大円を回転させる回転軸及び回転角度を特定し、
前記補正部は、前記パノラマ画像を、前記パノラマ画像に係る全天球上で、特定した前記回転軸を中心として、特定した回転角度回転させる
請求項３に記載の画像処理装置。
【請求項５】
前記特徴点の各組に対して、前記パノラマ画像中の前記撮影中心を通る左右方向の線上の各位置について、前記撮影位置から各位置の方角を回転軸として前記パノラマ画像を回転させた場合に前記２つの特徴点が前記パノラマ画像の上下方向に存在するための回転角度候補を特定する候補特定部を備え、
前記補正量特定部は、前記候補特定部が前記特徴点の各組に対して特定した、前記パノラマ画像中の左右方向の線上の各位置に応じた回転角度候補に基づいて、前記回転軸及び回転角度を特定する
請求項４に記載の画像処理装置。
【請求項６】
前記パノラマ画像中の略上下方向の線分を特徴線として複数取得する特徴線取得部を備え、
前記補正量特定部は、取得した複数の特徴線が補正後のパノラマ画像の上下方向に存在するための補正量を特定する
請求項１又は２に記載の画像処理装置。
【請求項７】
前記特徴線取得部は、前記パノラマ画像の上下方向中央の直線と交差する前記特徴線を取得する
請求項６に記載の画像処理装置。
【請求項８】
前記補正量特定部は、取得した複数の前記特徴線が補正後のパノラマ画像の上下方向に存在するために、前記パノラマ画像に係る全天球上の前記撮影中心を通る大円を回転させる回転軸及び回転角度を特定し、
前記補正部は、前記パノラマ画像を、前記パノラマ画像に係る全天球上で、特定した前記回転軸を中心として、特定した回転角度回転させる
請求項６又は７に記載の画像処理装置。
【請求項９】
取得した複数の前記特徴線の傾きを正弦波で近似し、近似した正弦波が前記パノラマ画像の上下方向中央の直線と交差する位置に基づいて前記回転軸を特定する回転軸特定部と、
特定した前記回転軸を中心に前記パノラマ画像を回転させた場合に、回転後の前記複数の特徴線の傾きと前記パノラマ画像の上下方向との差異が最小となる回転角度を特定する回転角度特定部とを有し、
前記補正量特定部は、前記回転軸特定部が特定した回転軸及び前記回転角度特定部が特定した回転角度を前記補正量として取得する
請求項８に記載の画像処理装置。
【請求項１０】
撮影装置の正面方向を撮影中心として展開したパノラマ画像を処理する画像処理装置が、
実空間内の撮影位置で撮影した前記パノラマ画像を取得し、
前記パノラマ画像中の前記実空間上の水平面と、前記パノラマ画像に係る全天球上の前記撮影中心を通る大円との補正量を、前記実空間内で鉛直方向に存在する画素値に基づいて特定し、
特定した前記補正量に基づいて前記パノラマ画像を補正する
処理を実行する画像処理方法。
【請求項１１】
コンピュータに、
実空間内の撮影位置で撮影され撮影装置の正面方向を撮影中心として展開されたパノラマ画像を取得し、
前記パノラマ画像中の前記実空間上の水平面と、前記パノラマ画像に係る全天球上の前記撮影中心を通る大円との補正量を、前記実空間内で鉛直方向に存在する画素値に基づいて特定し、
特定した前記補正量に基づいて前記パノラマ画像を補正する
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
１８０度より広い画角のパノラマ画像を取得できるカメラが提案されている（特許文献１）。パノラマ画像を撮影できるカメラは、例えばカメラの正面方向（撮影方向）を撮影中心とし、カメラの正面方向の被写体が画像中央に写るように展開したパノラマ画像を生成する。このようなカメラを用いてパノラマ画像を撮影する場合、カメラの正面方向が水平方向であることが望ましい。カメラの正面方向が水平方向である状態で撮影した場合、カメラの正面方向を含む水平面上の被写体が、画像の上下方向の中央の各位置に写るパノラマ画像を得ることができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−４８８５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一方、カメラの正面方向が水平方向に対して傾いた状態で撮影した場合、本来パノラマ画像の上下方向中央に写るべき水平面上の被写体が上下方向中央に写らず、パノラマ画像に歪みが生じる。そこで、カメラの正面方向が水平方向となるように、例えば三脚や水準器等の治具を用いて撮影を行うことが考えられるが、撮影者による作業負担が大きく、また、正確に方向を調整することは困難である。また、撮影後のパノラマ画像を目視で確認しながら手作業で画像の上下方向の回転角度（チルト）を調整することによって、パノラマ画像の天頂方向の補正を行うことも考えられる。しかし、手作業による調整では作業負担が大きく、目視による確認では正確な補正を行うことは困難である。更に、特許文献１には、加速度センサを備えるカメラを用いて撮影時のカメラの傾きを検知し、撮影後のパノラマ画像に対して、撮影時のカメラの傾きに基づく天頂補正を行うことが開示されている。しかし、加速度センサを備えないカメラを用いて撮影した場合や、カメラの傾きを検知せずに撮影した場合、カメラの傾きに基づく天頂補正を行うことはできない。
【０００５】
本発明は、このような事情に鑑みてなされたものであり、その目的とするところは、パノラマ画像の天頂補正を精度良く行うことが可能な画像処理装置等を提供することにある。
【課題を解決するための手段】
【０００６】
本開示の一態様に係る画像処理装置は、撮影装置の正面方向を撮影中心として展開したパノラマ画像を処理する画像処理装置において、実空間内の撮影位置で撮影した前記パノラマ画像を取得する画像取得部と、前記パノラマ画像中の前記実空間上の水平面と、前記パノラマ画像に係る全天球上の前記撮影中心を通る大円との補正量を、前記実空間内で鉛直方向に存在する画素値に基づいて特定する補正量特定部と、特定した前記補正量に基づいて前記パノラマ画像を補正する補正部とを備える。
【発明の効果】
【０００７】
本開示の一態様によれば、カメラの正面方向（撮影方向）を考慮せずに撮影されたパノラマ画像であっても、パノラマ画像の天頂補正を精度良く行うことができ、実空間内の水平面上の被写体が画像の上下方向中央に写るパノラマ画像を得ることができる。また、パノラマ画像に基づいて自動的に天頂補正が行われるので、煩雑な手作業が不要となり、また、加速度センサを備えたカメラを用いる必要もない。
【図面の簡単な説明】
【０００８】
【図１】画像処理装置の構成例を示すブロック図である。
【図２】カメラの構成例を示すブロック図である。
【図３】カメラの外観を示す模式図である。
【図４】撮影画像の構成を説明するための模式図である。
【図５】カメラの上下方向が撮影空間上の鉛直方向に対して傾いた状態での撮影を説明するための模式図である。
【図６】天頂補正処理を説明するための模式図である。
【図７】画像処理装置の制御部によって実現される機能を示すブロック図である。
【図８】天頂補正処理を説明するための模式図である。
【図９】天頂補正処理を説明するための模式図である。
【図１０】極座標系及びワールド直交座標系の関係を示す模式図である。
【図１１】関数αｘa （ｘI ）を示す図である。
【図１２】画像処理装置による補正処理の手順を示すフローチャートである。
【図１３】関数の算出処理の手順を示すフローチャートである。
【図１４】補正量の特定処理の手順を示すフローチャートである。
【図１５】実施形態２の画像処理装置の制御部によって実現される機能を示すブロック図である。
【図１６】実施形態２の天頂補正処理を説明するための模式図である。
【図１７】実施形態２の天頂補正処理を説明するための模式図である。
【図１８】実施形態２の天頂補正処理を説明するための模式図である。
【図１９】実施形態２の天頂補正処理を説明するための模式図である。
【図２０】実施形態２の天頂補正処理を説明するための模式図である。
【図２１】実施形態２の天頂補正処理を説明するための模式図である。
【図２２】実施形態２の天頂補正処理を説明するための模式図である。
【図２３】実施形態２の天頂補正処理を説明するための模式図である。
【図２４】画像処理装置による補正処理の手順を示すフローチャートである。
【図２５】補正処理に含まれる回転軸の特定処理の手順を示すフローチャートである。
【図２６】補正処理に含まれる回転軸の特定処理の手順を示すフローチャートである。
【図２７】補正処理に含まれる回転量の特定処理の手順を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に、本開示の画像処理装置、画像処理方法及びプログラムについて、その実施形態を示す図面に基づいて具体的に説明する。
【００１０】
（実施形態１）
図１は画像処理装置の構成例を示すブロック図である。画像処理装置１０は、パーソナルコンピュータ、サーバコンピュータ、大型計算機上で動作する仮想マシン等である。画像処理装置１０は、制御部１１、記憶部１２、通信部１３、入力部１４、表示部１５等を含み、これらの各部はバスを介して相互に接続されている。制御部１１は、ＣＰＵ（Central Processing Unit ）、ＭＰＵ（Micro-Processing Unit ）又はＧＰＵ（Graphics Processing Unit）等の１又は複数のプロセッサを含み、本実施形態にかかるプログラムを実行する演算制御装置である。制御部１１は、記憶部１２に記憶してある制御プログラムを実行すると共に、バスを介して画像処理装置１０を構成するハードウェア各部の動作を制御する。これにより、制御部１１は、画像処理装置１０が行うべき種々の制御処理及び情報処理を行う。
【００１１】
記憶部１２は、ＲＡＭ（Random Access Memory）、フラッシュメモリ、ハードディスク、ＳＳＤ（Solid State Drive ）等を含む。記憶部１２は、制御部１１が実行する制御プログラム及び制御プログラムの実行に必要な各種のデータ等を予め記憶している。また記憶部１２は、制御部１１が制御プログラムを実行する際に発生するデータ等を一時的に記憶する。記憶部１２に記憶される制御プログラムには、本開示のプログラムである天頂補正プログラムＰが含まれ、記憶部１２に記憶されるデータには、後述するカメラ２０によって撮影されたパノラマ画像を蓄積するパノラマ画像ＤＢ１２ａが含まれる。
【００１２】
記憶部１２に記憶される天頂補正プログラムＰ及びパノラマ画像ＤＢ１２ａは、例えば通信部１３を介して外部装置から取得されて記憶部１２に記憶される。画像処理装置１０が可搬型記憶媒体に記憶された情報を読み取る読取部等を備える場合、記憶部１２に記憶される天頂補正プログラムＰ及びパノラマ画像ＤＢ１２ａは、可搬型記憶媒体から読み出されて記憶部１２に記憶されてもよい。なお、パノラマ画像ＤＢ１２ａは、画像処理装置１０に接続された外部の記憶装置に記憶されてもよく、ネットワークＮを介して画像処理装置１０と通信可能な記憶装置に記憶されてもよい。
【００１３】
通信部１３は、有線通信又は無線通信によって、インターネット、公衆通信回線又はＬＡＮ（Local Area Network）等のネットワークＮに接続するためのインターフェイスであり、ネットワークＮを介して外部装置との間で情報の送受信を行う。入力部１４は、キーボード及びマウス等を含み、ユーザによる操作入力を受け付け、操作内容に対応した制御信号を制御部１１へ送出する。表示部１５は、液晶ディスプレイ、有機ＥＬ（Electro Luminescence）ディスプレイ等であり、制御部１１からの指示に従って各種の情報を表示する。入力部１４及び表示部１５は一体として構成されたタッチパネルとすることもできる。
【００１４】
以下に、本実施形態の画像処理装置１０によって処理されるパノラマ画像及びパノラマ画像を撮影するカメラ２０について説明する。カメラ２０は、撮影装置の一例である。カメラ２０は、１回のシャッターで前後左右上下の撮影を行う全天球カメラを使用する。図２はカメラ２０の構成例を示すブロック図である。カメラ２０は、制御部２１、記憶部２２、通信部２３、シャッターボタン２４、撮影部２５等を含み、これらの各部はバスを介して相互に接続されている。制御部２１は、ＣＰＵ、ＭＰＵ又はＧＰＵ等の１又は複数のプロセッサを含み、本実施形態にかかるプログラムを実行する演算制御装置である。制御部２１は、記憶部２２に記憶してある制御プログラムを実行すると共に、バスを介してカメラ２０を構成するハードウェア各部の動作を制御する。これにより、制御部２１は、カメラ２０が行うべき種々の制御処理及び情報処理を行う。
【００１５】
記憶部２２は、ＲＡＭ、フラッシュメモリ、ハードディスク、磁気テープ等を含む。記憶部２２は、制御部２１が実行する制御プログラム及び制御プログラムの実行に必要な各種のデータ等を予め記憶している。また記憶部２２は、制御部２１が制御プログラムを実行する際に発生するデータ等を一時的に記憶する。
【００１６】
通信部２３は、有線通信又は無線通信によってネットワークＮに接続するためのインターフェイスであり、ネットワークＮを介して外部装置との間で情報の送受信を行う。シャッターボタン２４は、静止画を撮影する指示を受け付けるボタンである。なお、制御部２１は、ネットワークＮを通じてシャッターボタン２４の操作を受け付けてもよい。撮影部２５は、撮影を行う光学系と撮像素子とを含む。制御部２１は、シャッターボタン２４から受け付けた指示に基づいて撮像素子が取得したデータに対して、各種画像処理を行い、撮影画像を生成する。
【００１７】
図３はカメラ２０の外観を示す模式図である。本実施形態のカメラ２０は、略長方形板状の板状部２８を有する。本実施形態のカメラ２０は、図３に示すように板状部２８の長辺方向を上下方向に向けた状態で撮影するので、以後の説明において、板状部２８の長辺方向をカメラ２０の上下方向と記載する。また、板状部２８の長辺方向を上下方向に向けた状態のカメラ２０において、板状部２８の第１広面２８１側をカメラ２０の前側（正面側）、第２広面２８２側をカメラ２０の後側（背面側）、板状部２８の短辺方向をカメラ２０の左右方向とそれぞれ記載する。本実施形態では、カメラ２０は板状部２８の長辺方向を正確に鉛直方向（重力の方向）に向けた状態で用いる必要はない。よって、カメラ２０の上下方向は鉛直方向である必要はなく、カメラ２０の前後左右方向を含む平面は、鉛直方向に直交する水平面である必要はない。
【００１８】
カメラ２０は、第１広面２８１の上寄りに、ドーム状の第１レンズ２７１が設けられている。第２広面２８２の上寄りに、ドーム状の第２レンズ２７２が設けられている。第１レンズ２７１及び第２レンズ２７２の内側には、図示しない複数のレンズ及びプリズム等の光学部品が配置されており、１８０度以上の視野角を有する光学系を形成している。以後の説明では、第１レンズ２７１側の光学系の光軸を第１光軸、第２レンズ２７２側の光学系の光軸を第２光軸とそれぞれ記載する。第１光軸と第２光軸とは、同一の直線上に配置されている。また、第１広面２８１にシャッターボタン２４が配置されている。
【００１９】
図４は撮影画像の構成を説明するための模式図である。図４Ａは、全天球画像を示す模式図である。図４Ｂは、図４Ａの全天球画像を正距円筒図法により展開した画像を示す模式図である。カメラ２０の制御部２１は、シャッターボタン２４から受け付けた指示に基づいて撮影部２５による撮影を行った場合、第１光軸側で撮影した画像と第２光軸側で撮影した画像とを合成することにより、図４Ａに示すように撮影位置を中心点Ｃとする全天球画像を生成する。
【００２０】
全天球画像上の各画素の位置を定める座標系について説明する。全天球画像上の画素の位置は、直交座標系及び極座標系により表現することができる。直交座標系は、図３に示した右方向をＸ軸の正側、上方向をＹ軸の正側、後ろ方向をＺ軸の正側とする右手系の直交座標系を用いる。極座標系は、方位角φ及び天頂角θ、並びに中心点Ｃからの距離ｒによって座標が示される座標系を用いる。極座標系の方位角は、第２光軸側（Ｚ軸の正側）を基準として、ＸＺ面（カメラ２０の前後左右方向を含む平面）内の反時計回りの角度φを示す。第１光軸（Ｚ軸の負側）は、方位角φがπラジアンの位置に存在する。ここでπは円周率を意味する。第２光軸は、方位角φが０ラジアンかつ２πラジアンの位置に存在する。極座標系の天頂角は、中心点Ｃから天頂への上方向（Ｙ軸の正側）を基準として、中心点Ｃを中心として下に向かう角度θを示す。上方向は、天頂角θが０ラジアンの位置に存在する。下方向（Ｙ軸の負側）は、天頂角θがπラジアンの位置に存在する。全天球画像上の任意の画素ａの位置は、直交座標系で表した座標（ｘa ，ｙa ，ｚa ）と、極座標系で表した座標（ｒLa，θLa，φLa）とによって表現することができる。なお、直交座標系の座標（ｘ，ｙ，ｚ）及び極座標系の座標（ｒL ，θL ，φL ）は以下の（１）式及び（２）式によって相互に変換可能である。
【００２１】
【数１】
2020071854.tif 000003
【００２２】
カメラ２０の制御部２１は、全天球画像を方位角φ＝０の線に沿って切断して、正距円筒図法により図４Ｂに示すように横軸を方位角φとし縦軸を天頂角θとする平面に展開した長方形の撮影画像（以下では、パノラマ画像という）を生成する。このパノラマ画像を構成する各画素には、全天球画像における各画素の輝度が割り当てられる。なお、図４Ｂに示すように、長方形（平面）のパノラマ画像は、左下を原点（０，０）とし、原点（０，０）は、方位角φが２πラジアンで天頂角θがπラジアンの位置の画素を示す。また、パノラマ画像は、右方向に方位角φが小さくなり、パノラマ画像の右端は方位角φが０ラジアンの位置の画素であり、上方向に天頂角θが小さくなり、パノラマ画像の上端は天頂角θが０ラジアンの位置の画素である。このように、カメラ２０は、カメラ２０の正面方向（第１光軸の方向）を撮影中心とし、正面方向に存在する被写体が画像中央に写るように展開したパノラマ画像を生成する。
【００２３】
カメラ２０の制御部２１は、撮影処理を行った場合、中心点Ｃ（撮影位置）の位置情報と、図４Ｂに示すパノラマ画像とを通信部２３から画像処理装置１０へ送信する。画像処理装置１０の制御部（画像取得部）１１は、カメラ２０から送信されたパノラマ画像及び位置情報を通信部１３にて取得する。なお、カメラ２０の制御部２１は、図４Ａに示す全天球画像の撮影画像を画像処理装置１０へ送信し、画像処理装置１０が、全天球画像から、図４Ｂに示すパノラマ画像を生成する処理を行ってもよい。画像処理装置１０の制御部１１は、カメラ２０から取得した中心点Ｃの位置情報とパノラマ画像とを対応付けてパノラマ画像ＤＢ１２ａに記録する。カメラ２０は、Ｅｘｉｆ（Exchangeable image file format）形式を使用することにより、中心点Ｃの位置情報と撮影画像とを一つのファイルで送信することが可能である。
【００２４】
カメラ２０は撮影によって画像データ（撮影画像データ）を取得するが、以下では画像データを単に画像という場合がある。従って、撮影画像は撮影画像データを意味する場合があり、パノラマ画像はパノラマ画像データを意味する場合がある。撮影画像は、複数の画素を含み、撮影画像データは、各画素の撮影画像中の位置（座標）を示す位置情報（画素値）と各画素の輝度とを対応付けて有する。撮影位置の情報は、例えば矩形の部屋の任意の位置を基準とした位置の情報であり、カメラ２０に内蔵されているセンサにより測定されてもよく、他のセンサ等により測定されてカメラ２０又は画像処理装置１０へ送信されてもよい。また、ＧＰＳ（Global Positioning System）を用いて撮影位置の情報を取得してもよい。なお、撮影位置の位置情報は必ずしも必要ではなく、カメラ２０は、取得したパノラマ画像のみを画像処理装置１０へ送信する構成でもよい。
【００２５】
本実施形態では、カメラ２０を用いて、賃貸住宅及び販売住宅等の不動産物件の部屋、ホテル及び民宿等の宿泊施設の部屋等を撮影する。カメラ２０を用いて撮影する空間は、博物館、美術館、テーマパーク、アミューズメント施設、観光地、商業施設等であってもよい。
【００２６】
本実施形態のカメラ２０は、カメラ２０の前側（正面方向側）の景色が画像中の左右方向の中央部に写り、カメラ２０の後側（背面方向側）の景色が画像中の左右端部に写るパノラマ画像を生成する。このようなパノラマ画像では、カメラ２０の上下方向（板状部２８の長辺方向）がパノラマ画像の上下方向となるので、カメラ２０の正面方向（撮影方向）よりも上側の景色が画像中の上下方向の上側に写り、正面方向よりも下側の景色が画像中の上下方向の下側に写る。よって、カメラ２０の上下方向（板状部２８の長辺方向）を撮影空間上（実空間上）の鉛直方向に正確に一致させた状態で撮影を行った場合、撮影空間上の鉛直方向がパノラマ画像の上下方向に一致し、撮影位置と同じ高さにある被写体が画像の上下方向の中央部に写るパノラマ画像が得られる。即ち、図４Ｂに示すように、撮影位置を含む水平面（撮影高さでの水平面）上にある被写体が、パノラマ画像の上下方向の中央（方位角θ＝π／２の各位置）に写る。
【００２７】
図５は、カメラ２０の上下方向が撮影空間上の鉛直方向に対して傾いた状態での撮影を説明するための模式図である。図５Ａは、カメラ２０を右側から見た状態を示し、図５Ｂは、図５Ａの状態で撮影した場合に得られる全天球画像を、図４Ａに示す直交座標系のＸ軸正方向（カメラ２０の右側）から見た状態を示し、図５Ｃは、図５Ｂに示す全天球画像を展開したパノラマ画像を示す。図５Ａ中の破線Ｖは実空間上の鉛直方向（重力の方向）を示し、破線Ｈは実空間上の水平方向（鉛直方向に直交する方向）を示す。図５Ａに示すカメラ２０では、カメラ２０の上下方向（板状部２８の長辺方向）が鉛直方向Ｖに対して傾斜している。この場合、図５Ａに示すように、カメラ２０の第１光軸及び第２光軸が、水平方向Ｈに対して傾斜を有する。従って、図５Ａの状態で撮影した場合、カメラ２０の第１光軸及び第２光軸の方向（カメラ２０の前後方向）と、カメラ２０の左右方向とを含む平面上にある被写体が、図５Ｂに一点鎖線で示すように、天頂角θがπ／２の位置に写る全天球画像が得られる。なお、図５Ｂ中の破線は、図５Ａ中の水平方向Ｈを含む水平面上にある被写体が写る位置を示している。図５Ｂに示すような全天球画像をパノラマ画像に展開した場合、撮影方向（カメラ２０の正面方向）を撮影中心Ｆ０とし、撮影中心Ｆ０の被写体が画像の中央に写るパノラマ画像が得られる。即ち、カメラ２０の前後左右方向を含む平面上にある被写体が、図５Ｃ中に一点鎖線で示すように画像中の上下方向の中央に写り、実空間上の水平方向Ｈを含む水平面上にある被写体が、図５Ｃ中に破線で示すような各位置に写るようなパノラマ画像が得られる。実空間上の水平方向Ｈを含む水平面上にある被写体は、本来画像中の上下方向の中央部に写るべきであるが、図５Ｃに示すパノラマ画像から分かるように、カメラ２０の上下方向が鉛直方向Ｖに対して傾斜した状態で撮影した場合、水平方向Ｈを含む水平面上にある被写体が、画像中の上下方向の中央部に写らないパノラマ画像が得られる。このようなパノラマ画像は、見る人に違和感を与え、見た人は画像の歪みを感じる虞がある。
【００２８】
そこで、本実施形態の画像処理装置１０は、図５Ｃに示すように実空間上の水平面上にある被写体が、画像中の上下方向の中央部に写っていないパノラマ画像に対して補正処理（天頂補正）を行い、画像中の上下方向の中央部に写るパノラマ画像に補正する。図６は天頂補正処理を説明するための模式図であり、図６Ａは天頂補正前のパノラマ画像の例を示し、図６Ｂは天頂補正後のパノラマ画像の例を示す。図６Ａ及び図６Ｂ中の実線Ｌは、実空間上の水平面上にある被写体の画像中の撮影位置を示す。よって、本実施形態の画像処理装置１０は、図６Ａに示すように実空間における水平面上にある被写体が画像中の上下方向の中央部に写っていないパノラマ画像を、図６Ｂに示すように画像中の上下方向の中央部に写っているパノラマ画像に補正する処理を行う。
【００２９】
次に、画像処理装置１０において制御部１１が天頂補正プログラムＰを実行することによって実現される機能について説明する。図７は、画像処理装置１０の制御部１１によって実現される機能を示すブロック図である。画像処理装置１０の制御部１１は、記憶部１２に記憶してある天頂補正プログラムＰを実行した場合、特徴点取得部３１、回転角変化特定部３２、補正量特定部３３、補正部３４の各機能を実現する。なお、本実施形態では、これらの各機能を制御部１１が天頂補正プログラムＰを実行することにより実現するが、これらの一部を専用のハードウェア回路で実現してもよい。
【００３０】
以下、図６Ａに示すようなパノラマ画像を、図６Ｂに示すようなパノラマ画像に補正する天頂補正処理について説明する。図８及び図９は天頂補正処理を説明するための模式図である。
【００３１】
特徴点取得部３１は、パノラマ画像において、実空間上で鉛直方向に存在する２点がそれぞれ写っている位置を特徴点のペアとして取得する。具体的には、特徴点取得部３１は、実空間内で鉛直方向に伸びる鉛直構造物において鉛直方向の境界線上の２点に対応するパノラマ画像中の画素をそれぞれ特徴点として取得する。特徴点取得部３１は、このような特徴点のペアを２組取得する。例えば図８Ａに示すパノラマ画像では、特徴点取得部３１は、柱において鉛直方向に伸びる角を示す線上の天井側の端部及び床側の端部をそれぞれ特徴点Ａ０，Ａ１として取得し、ドアにおいて鉛直方向に伸びる右端を示す線上の天井側の端部及び床側の端部をそれぞれ特徴点Ｂ０，Ｂ１として取得する。特徴点取得部３１は、４つの特徴点Ａ０，Ａ１，Ｂ０，Ｂ１を，例えばユーザ入力によって取得する。この場合、例えば特徴点取得部３１は、画像処理装置１０の表示部１５にパノラマ画像を表示し、特徴点とすべき箇所（画素）を入力部１４にて受け付ける。ユーザは、表示されたパノラマ画像において、鉛直構造物である被写体における鉛直方向に伸びる線を２つ特定し、それぞれの線上の２点をそれぞれ特徴点として入力部１４を介して指定する。特徴点取得部３１は、入力部１４を介して受け付けた４つの特徴点についてパノラマ画像中の座標値を取得する。なお、特徴点取得部３１は、特徴点Ａ０，Ａ１の座標値と、特徴点Ｂ０，Ｂ１の座標値とをそれぞれペアとして取得する。
【００３２】
また特徴点取得部３１は、パノラマ画像中の特徴点の各ペアを画像認識によって自動的に抽出してもよい。実空間内で鉛直方向に伸びる線は、パノラマ画像においても概ね直線状の線である。よって、特徴点取得部３１は、例えばハフ変換（Hough transform）と呼ばれる手法を用いてパノラマ画像中の直線を自動的に検出し、検出した直線上の両端部の画素の座標値をそれぞれ特徴点として取得してもよい。
【００３３】
回転角変化特定部３２及び補正量特定部３３は、特徴点取得部３１が取得した特徴点の各ペアに基づいて、後段の補正部３４によって図６Ａに示すようなパノラマ画像を、図６Ｂに示すようなパノラマ画像に補正するための補正量を特定する。具体的には、図６Ａに示すように実空間における水平面上にある被写体が画像中の上下方向の中央部に写っていないパノラマ画像を、図６Ｂに示すように画像中の上下方向の中央部に写っているパノラマ画像に補正するための補正量を特定する。即ち、補正量とは、撮影時におけるカメラ２０の前後左右方向を含む平面が、実空間上の水平面に対して傾斜する中心軸（回転軸）及び回転角度を含む。なお、カメラ２０の前後左右方向を含む平面は、この平面と実空間上の水平面との交線を回転軸として、実空間上の水平面を基準に回転している。撮影時におけるカメラ２０の前後左右方向を含む平面は、図５Ｂに一点鎖線で示すように、パノラマ画像に係る全天球上の撮影中心Ｆ０を通る大円を含む平面である。以下では、撮影時におけるカメラ２０の前後左右方向を含む平面を撮影時平面という。
【００３４】
図５Ｂから分かるように、撮影時平面は、実空間上の水平方向Ｈを含む水平面に対して、撮影位置（中心点Ｃ）を通る軸（回転軸）を中心として回転している。なお、図５Ｂに示す例では、撮影時平面は、Ｘ軸を回転軸として水平面に対して回転しているが、回転軸は任意の方向の軸である。よって、回転角変化特定部３２及び補正量特定部３３は、実空間上の水平面を基準として撮影時平面が回転する回転軸及び回転角度を補正量として特定する。ここで、図５Ｂから分かるように、回転軸は、撮影時平面上の線分であるだけでなく、実空間上の水平面上の線分でもあるので、回転軸の方向にある被写体は、天頂補正処理の前後のパノラマ画像において共に画像中の上下方向の中央部のいずれかの位置に写ることになる。即ち、図８Ｂに示すパノラマ画像において、画像の上下方向の中央を示す直線ＣＬ上のいずれかの位置に、回転軸の方向にある被写体が写っている。
【００３５】
図８Ｂに示すパノラマ画像において、仮に回転軸の方向にある被写体の位置（以下では回転軸位置という）が画像中の直線ＣＬ上の点ｘa の位置であり、実空間上の水平面を基準とした撮影時平面の回転角度がαｘa であったとする。この場合、補正部３４は、図８Ｂに示すパノラマ画像に対して、回転軸位置ｘa の方角を回転軸として３次元的に回転角度（−αｘa ）だけ回転させる天頂補正処理を行うことにより、図６Ｂに示すパノラマ画像に補正できる。即ち、図６Ｂに示すように、実空間上で鉛直方向に並ぶ２点に対応する２つの特徴点Ａ０，Ａ１及びＢ０，Ｂ１がそれぞれ画像中に上下方向に並ぶパノラマ画像に補正される。よって、回転角変化特定部３２及び補正量特定部３３は、補正部３４による天頂補正処理のために、パノラマ画像中の回転軸位置と、実空間上の水平面を基準とした撮影時平面の回転角度とを特定すればよい。
【００３６】
ここで、図９に示すように、パノラマ画像中の各画素の位置を、画像の左上を原点（０，０）とし、原点から右方向をＸ軸とし下方向をＹ軸とした画像座標系の座標（ｘI ，ｙI ）で表すとする。なお、パノラマ画像の高さ（上下方向の長さ）はＨとし、幅（左右方向の長さ）はＷとする。この場合、直線ＣＬ上の回転軸位置の候補は、画像座標系の座標（ｘI ，Ｈ／２）（０≦ｘI ≦Ｗ−１）で表される。
【００３７】
回転角変化特定部３２はまず、図９に示すようなパノラマ画像において、回転軸位置の候補位置を、画像中の直線ＣＬ上で移動させる。具体的には、回転角変化特定部３２は、回転軸位置の候補位置の座標値として、画像座標系の座標値（０，Ｈ／２）から座標値（Ｗ−１，Ｈ／２）までの直線ＣＬ上で、Ｘ座標値を所定値ずつ増加させた各座標値を取得する。なお、各候補位置の間隔（所定値）は十分微小であればどのような値でもよく、例えば１画素毎としてもよく、この場合、Ｗ個の候補位置の座標値が得られる。回転角変化特定部３２は、上述したような各候補位置について、それぞれの候補位置が回転軸位置であった場合に、補正後のパノラマ画像において特徴点Ａ０，Ａ１及び特徴点Ｂ０，Ｂ１の各ペアが画像中の上下方向に存在するための補正量（回転角度）を特定する。ここで、撮影時においてカメラ２０の上下方向は逆転していないと仮定し、回転角変化特定部３２は、回転角度αｘa の候補角度として、−π／２からπ／２までの範囲内で所定量ずつ増加させた角度を取得する。なお、回転角度αｘa の候補角度の間隔（所定量）は十分微小であればよく、例えばπ／１００ラジアンとしてもよく、この場合、０を含めて１０１個の候補角度が得られる。
【００３８】
回転角変化特定部３２は、上述した回転軸位置の候補位置のそれぞれにおいて、上述した回転角度αｘa の候補角度のそれぞれについて、それぞれの候補角度だけ回転させた場合に、回転後（補正後）のパノラマ画像において特徴点Ａ０，Ａ１が画像中の上下方向に並ぶか否かを判断し、特徴点Ａ０，Ａ１が画像中の上下方向に並ぶ回転角度（回転角度αｘa の候補角度）を特定する。
【００３９】
ここで、回転軸位置の候補位置が図８Ｂに示すパノラマ画像中の点ｘa の位置であり、回転角度の候補角度がαｘa である場合に、回転軸位置ｘa 及び回転角度αｘa に基づく天頂補正（回転）によって、補正前のパノラマ画像中の各画素が移動する補正後のパノラマ画像中の位置の算出処理について説明する。なお、回転軸位置ｘa 及び回転角度αｘa に基づく天頂補正（回転）をパノラマ画像に行う場合、パノラマ画像中の各画素の座標値を画像座標系から、撮影位置を原点としたワールド直交座標系に変換し、ワールド直交座標系において天頂補正（回転）を行う。なお、画像座標系からワールド直交座標系に変換する場合、一旦極座標系に変換した後にワールド直交座標系に変換する。よって、まず、正距円筒図法による矩形のパノラマ画像中の任意の画素の位置を画像座標系の座標（ｘI ，ｙI ）で表した場合、画像座標系の座標（ｘI ，ｙI ）を、以下の（３）式によって極座標系の座標（ｒL ，θL ，φL ）に変換する。なお、極座標系における座標値は、画像座標系における座標値と１対１で対応しているので、以下の（３）式により変換可能であり、極座標系における半径ｒL は便宜上１とする。
【００４０】
【数２】
2020071854.tif 000004
【００４１】
ここで、パノラマ画像中の回転軸位置ｘa についても、画像座標系の座標値から極座標系の座標値に変換されるが、回転軸位置ｘa はパノラマ画像中の直線ＣＬ上に位置するため、回転軸位置ｘa の極座標系における天頂角θは必ずπ／２となる。回転軸位置ｘa の極座標系における方位角をφｘa とすると、回転軸位置ｘa は極座標系の座標（ｒL ，π／２，φｘa ）で表される。次に、パノラマ画像中の画素の極座標系における座標（ｒL ，θL ，φL ）を、以下の（４）式によってワールド直交座標系の座標（ｘW ，ｙW ，ｚW ）に変換する。
【００４２】
【数３】
2020071854.tif 000005
【００４３】
図１０は、極座標系及びワールド直交座標系の関係を示す模式図である。ワールド直交座標系には、実空間上の鉛直上方向をＹW 軸の正側、実空間上の水平面をＸW 軸及びＺW 軸で表す３次元の右手系の直交座標系を用いる。図１０に示すように極座標系は、実空間上の鉛直上方向（ＹW 軸の正側）を基準とした天頂角θL と、鉛直上方向から見てＺW 軸の正側を基準として水平面であるＸW ＺW 平面内の反時計回りの方位角φL と、原点０からの距離ｒL とによって表される。よって、３次元空間中の任意の位置Ｐは、ワールド直交座標系の座標（ｘW ，ｙW ，ｚW ）と極座標系の座標（ｒL ，θL ，φL ）とで表すことができる。なお、ワールド直交座標系の座標（ｘW ，ｙW ，ｚW ）は、以下の（５）式によって極座標系の座標（ｒL ，θL ，φL ）に変換可能である。
【００４４】
【数４】
2020071854.tif 000006
【００４５】
このようにして求められたワールド直交座標系の座標（ｘW ，ｙW ，ｚW ）に基づいて、パノラマ画像に天頂補正（回転）処理を行う。ここで、回転軸位置ｘa に基づく回転軸は、任意の方向の軸であるので、回転軸に基づく回転処理を行う前に、ワールド直交座標系のＹW 軸を中心に時計回りにφｘa 回転させて、回転軸位置ｘa に基づく回転軸を一旦ワールド直交座標系のＺW 軸に一致させる。その後、ワールド直交座標系のＺW 軸を中心に回転角度αｘa 回転させ、回転角度αｘa に基づく天頂補正（回転）を行う。更に、最初のＹW 軸を中心とした回転を戻すために、ワールド直交座標系のＹW 軸を中心に反時計回りにφｘa 回転させる。なお、ワールド直交座標系のＹW 軸を中心とした角度θの回転、及びＺW 軸を中心とした角度θの回転は、３×３の行列を用いて、以下の（６）式のように表される。よって、回転前のワールド直交座標系の座標（ｘW ，ｙW ，ｚW ）から、以下の（７）式により回転後の座標（ｘW ´，ｙW ´，ｚW ´）が得られる。
【００４６】
【数５】
2020071854.tif 000007
【００４７】
このようにして３次元的に回転されたパノラマ画像中の画素を再び、座標変換により極座標系を経由して画像座標系の座標値に戻す。なお、ワールド直交座標系の座標（ｘW ，ｙW ，ｚW ）は、上記の（５）式によって極座標系の座標（ｒL ，θL ，φL ）に変換され、極座標系の座標（ｒL ，θL ，φL ）は、以下の（８）式により画像座標系の座標（ｘI ，ｙI ）に変換される。これにより、回転軸位置ｘa 及び回転角度αｘa に基づく天頂補正（回転）によって、補正前のパノラマ画像中の画素が移動する補正後のパノラマ画像中の位置が算出される。
【００４８】
【数６】
2020071854.tif 000008
【００４９】
上述した演算処理により、回転角変化特定部３２は、特徴点取得部３１が取得した特徴点Ａ０，Ａ１に対して、回転軸位置の候補位置のそれぞれと、回転角度の候補角度のそれぞれとの各組合せに基づく天頂補正（回転）処理を行い、補正後のパノラマ画像における特徴点Ａ０，Ａ１の位置（座標値）を算出する。そして回転角変化特定部３２は、回転軸位置の各候補位置に対して、補正後のパノラマ画像において特徴点Ａ０，Ａ１のＸ座標値が略同じとなる回転角度を特定する。具体的には、回転角変化特定部３２は、回転軸位置のある候補位置に対して、回転角度の候補角度を−π／２から所定量ずつ増加させ、各候補角度に基づく天頂補正後のパノラマ画像における特徴点Ａ０，Ａ１の座標値を算出する。
【００５０】
ここで、例えば図８Ａに示すパノラマ画像では、天井側の特徴点Ａ０は床側の特徴点Ａ１よりも左側に位置している。仮に図８Ｂ中の点ｘa を回転軸位置とし、回転軸位置ｘa に係る回転軸を中心に、図８Ｂ中の矢符で示す方向に回転させる天頂補正を行った場合、回転角度αを徐々に増加させるにつれて、特徴点Ａ０の左右方向の位置は徐々に右方向に移動し、特徴点Ａ１の左右方向の位置は徐々に左方向に移動する。回転角度αがある値αｘa となったとき、特徴点Ａ０，Ａ１の左右方向の位置（Ｘ座標値）は同じとなり、特徴点Ａ０，Ａ１は画像中の上下方向に並ぶ。この状態のパノラマ画像では、鉛直構造物が画像中で上下方向に配置された状態で写っている。引き続き回転角度αを増加させると、特徴点Ａ０，Ａ１の左右方向の位置が逆転し、この状態のパノラマ画像では、鉛直構造物・BR>ェ画像中の上下方向に対して再び傾いた状態となる。従って、画像中の直線ＣＬ上のある位置を回転軸位置とした場合、この回転軸位置に係る回転軸に基づいてパノラマ画像に対して天頂補正を適切に行える回転角度αｘa の値は一意に定まる。
【００５１】
よって、回転角変化特定部３２は、回転軸位置の各候補位置に対して、一意に決まる回転角度を特定する。なお、回転角度の候補角度は所定量ずつ異なる離散値を用いるので、補正後のパノラマ画像において特徴点Ａ０，Ａ１のＸ座標値が完全に一致するような回転角度を得ることは難しい。従って、回転角変化特定部３２は、例えば、補正後のパノラマ画像における特徴点Ａ０，Ａ１の左右関係が逆転したときの回転角度を、このときの候補位置に対する回転角度に特定してもよい。回転角変化特定部３２は、特定した回転軸位置の各候補位置に対する回転角度を、記憶部１２に設けられた１次元配列に格納する。このように特定される回転角度αｘa の値は、補正前のパノラマ画像中の直線ＣＬ上の各位置（回転軸位置）の画像座標系のＸ座標値を変数とした関数αｘa （ｘI ）で表現できる。
【００５２】
図１１は関数αｘa （ｘI ）を示す図である。図１１Ａには、図８Ｂに示すパノラマ画像中の特徴点Ａ０，Ａ１に基づいて特定された、回転軸位置の画像座標系におけるＸ座標値ｘI と、回転角度αｘa との関係を表す関数αｘa （ｘI ）を示す。図１１Ａに示す関数αｘa （ｘI ）は、横軸を回転軸位置の画像座標系におけるＸ座標値ＸI とし、縦軸を回転角度αｘa として、回転軸位置のＸ座標値の変化に応じた回転角度αｘa の変化を示す。図１１Ａは、０〜ＷのＸ座標値と−π／２〜π／２の回転角度とによる２次元空間に、回転角変化特定部３２が特定した回転軸位置ｘI 及び回転角度αｘa の組合せをプロットした図である。これは、特徴点取得部３１が取得した１組の特徴点Ａ０，Ａ１のペアに基づいて、回転角変化特定部３２が、回転軸位置ｘI 及び回転角度αｘa の候補の組合せとして、回転軸位置及び回転角度による２次元の探索範囲内の各候補から、図１１Ａに実線で示す曲線上の各候補に絞り込んだことを示す。即ち、回転角変化特定部３２は、特徴点のペアに基づいて、回転軸位置の各候補位置における回転角度の候補角度を特定する候補特定部として機能する。
【００５３】
回転角変化特定部３２は、特徴点取得部３１が取得した特徴点Ｂ０，Ｂ１のペアについても同様の処理を行い、回転軸位置の各候補位置に対して、一意に決まる回転角度を特定する。よって、回転角変化特定部３２は、補正前のパノラマ画像における各回転軸位置の画像座標系のＸ座標値を変数とし、補正後のパノラマ画像において特徴点Ｂ０，Ｂ１のＸ座標値が略同じとなるための回転角度αｘa の関数αｘa （ｘI ）を取得する。図１１Ｂには、図１１Ａに示した特徴点Ａ０，Ａ１に基づいて特定された関数αｘa （ｘI ）に、特徴点Ｂ０，Ｂ１に基づいて特定された関数αｘa （ｘI ）を破線で追加して示す。図１１Ｂから分かるように、補正後のパノラマ画像において、特徴点Ａ０，Ａ１及びＢ０，Ｂ１が共に画像中の上下方向に存在するための条件を満たすのは、実線で示した特徴点Ａ０，Ａ１に基づく関数αｘa （ｘI ）と、破線で示した特徴点Ｂ０，Ｂ１に基づく関数αｘa （ｘI ）との交点Ｐ１，Ｐ２での回転軸位置及び回転角度の組合せのみである。
【００５４】
よって、補正量特定部３３は、回転角変化特定部３２が特定した２つの関数αｘa （ｘI ）の交点Ｐ１又はＰ２を特定し、交点Ｐ１又はＰ２における回転軸位置及び回転角度の組合せを、補正部３４による天頂補正に用いる補正量として特定する。以下では、特徴点Ａ０，Ａ１に基づく関数αｘa （ｘI ）を第１関数といい、特徴点Ｂ０，Ｂ１に基づく関数αｘa （ｘI ）を第２関数という。補正量特定部３３は、回転軸位置のＸ座標値ｘI として、０からＷ−１までの範囲で所定値ずつ加算し、それぞれのＸ座標値ｘI に対して、第１関数での回転角度αｘa と第２関数での回転角度αｘa とを取得する。なお、回転角変化特定部３２は、関数αｘa （ｘI ）に基づく回転軸位置の各候補位置に対する回転角度を、記憶部１２に設けられた配列に格納しており、補正量特定部３３は、Ｘ座標値ｘI に対する回転角度αｘa を配列から順次読み出す。
【００５５】
そして補正量特定部３３は、それぞれ読み出した回転角度αｘa が略同じであるか否かを判定し、略同じとなる回転軸位置ｘa を特定する。なお、回転軸位置の候補位置（Ｘ座標値ｘI ）は所定量ずつ異なる離散値を用いているので、Ｘ座標値ｘI に対する２つの回転角度αｘa が完全に一致することは難しい。従って、補正量特定部３３は、例えば、それぞれ読み出した回転角度αｘaの大小関係を検知し、大小関係が逆転したときの回転軸位置ｘI を、２つの関数αｘa （ｘI ）の交点Ｐ１，Ｐ２のＸ座標値ｘa に特定してもよい。
【００５６】
ここで、図１１に示すように、２つの関数αｘa （ｘI ）の交点Ｐ１，Ｐ２は２つ存在する。また２つの交点Ｐ１，Ｐ２は必ず、回転軸位置のＸ座標値ｘI はＷ／２だけ離れており、かつ、回転角度αｘa は絶対値が同じで符号が逆の値となる。このような２つの交点Ｐ１，Ｐ２は、３次元空間において撮影位置（中心点Ｃ）を挟んで正対する方角に位置する。つまり、それぞれの交点Ｐ１，Ｐ２（回転軸位置）に基づく回転軸は同一直線を表している。正対した方角を回転軸として反対の方向（正／負の方向）に同じ角度だけ回転させる回転は、結果として同じ回転操作（天頂補正）を行うことになる。例えば、方位角が０ラジアンの方向を回転軸とした回転角度αの回転は、方位角がπラジアンの方向を回転軸とした回転角度−αの回転と等価である。このように２つの交点Ｐ１，Ｐ２は、同じ回転（天頂補正）を行うための補正量を示しているので、補正量特定部３３は一方の交点Ｐ１又はＰ２のみを特定すればよい。
【００５７】
補正部３４は、処理対象のパノラマ画像に対して、補正量特定部３３が特定した補正量（回転軸位置のＸ座標値ｘa 及び回転角度αｘa ）に基づいて、画像の天頂角方向を補正する処理を行う。具体的には、補正部３４は、補正量特定部３３が特定した補正量に基づいて、パノラマ画像において、実空間上の水平面上の各位置が、撮影時平面上の各位置となるように補正する。なお、補正部３４は、補正前のパノラマ画像中の各画素の位置（座標値）から、補正によって各画素が移動する補正後のパノラマ画像中の位置を算出する。そして、補正部３４は、補正前のパノラマ画像中の各画素の輝度を、それぞれ算出した補正後のパノラマ画像における各位置にコピーすることにより、補正後のパノラマ画像を生成する。よって、補正部３４はまず、補正前のパノラマ画像中の各画素が移動する補正後のパノラマ画像中の画素位置を算出する。
【００５８】
具体的には、補正部３４は、パノラマ画像中の各画素の画像座標系における座標（ｘI ，ｙI ）を、上記の（３）式によって極座標系の座標（ｒL ，θL ，φL ）に変換し、更に上記の（４）式によってワールド直交座標系の座標（ｘW ，ｙW ，ｚW ）に変換する。なお、パノラマ画像中の回転軸位置ｘa の極座標系における方位角はφｘa とする。次に補正部３４は、各画素のワールド直交座標系における座標（ｘW ，ｙW ，ｚW ）を、ワールド直交座標系のＹW 軸を中心に時計回りにφｘa 回転させて、回転軸位置ｘa に基づく回転軸をＺW 軸に一致させる。そして補正部３４は、各画素を、ワールド直交座標系のＺW 軸を中心に回転角度αｘa 回転させ、回転角度αｘa に基づく天頂補正（回転）を行う。その後、補正部３４は、最初のＹW 軸を中心とした回転を戻すために、補正後の各画素を、ワールド直交座標系のＹW 軸を中心に反時計回りにφｘa 回転させ、更に、回転後（補正後）の各画素の座標値を、座標変換により極座標系を経由して画像座標系の座標値に戻す。これにより、補正量特定部３３が特定した補正量（回転軸位置ｘa 及び回転角度αｘa ）に基づく天頂補正（回転）によって補正前のパノラマ画像中の各画素が移動する補正後のパノラマ画像中の画素位置が算出される。
【００５９】
補正部３４は、補正前のパノラマ画像中の各画素の輝度を、補正前の画素位置に対応する補正後の画素位置にコピーし、補正後のパノラマ画像を生成する。なお、パノラマ画像はデジタル画像であるため、上述のように算出した補正後の座標値によっては、補正後のパノラマ画像中の画素の位置を特定できない可能性がある。従って、例えばバイリニア法等の補間演算を行うことによって、補正後のパノラマ画像中の各画素の輝度を、演算によって算出された周囲の画素の輝度に基づいて算出してもよい。また、補正後のパノラマ画像中の各画素の位置から、対応する補正前のパノラマ画像中の各画素の位置を算出し、補正前後での各画素の位置（座標値）を対応付けてもよい。この場合、算出した補正前の画素位置の輝度を、補正後の画素位置にコピーすることにより、補正後のパノラマ画像が得られる。上述した補正処理により、図６Ａに示すように歪んだパノラマ画像が、図６Ｂに示すようなパノラマ画像に補正される。図６Ｂに示すパノラマ画像では、図８Ａ中の特徴点Ａ０，Ａ１及びＢ０，Ｂ１が共に上下方向に並んだ状態となる。
【００６０】
次に、画像処理装置１０が行う補正処理をフローチャートに基づいて説明する。図１２は、画像処理装置１０による補正処理の手順を示すフローチャートであり、図１３は、補正処理に含まれる関数の算出処理の手順を示すフローチャートであり、図１４は、補正処理に含まれる補正量の特定処理の手順を示すフローチャートである。以下の処理は、画像処理装置１０の記憶部１２に記憶してある天頂補正プログラムＰを含む制御プログラムに従って制御部１１によって実行される。
【００６１】
画像処理装置１０の制御部１１は、補正処理を行うべきパノラマ画像をパノラマ画像ＤＢ１２ａから読み出す（Ｓ１）。補正処理を行うべきパノラマ画像は、入力部１４又は外部装置を介して指定される。制御部１１は、読み出したパノラマ画像において、実空間上で鉛直方向に存在する２点に対応する、画像中の２つの特徴点を１組の特徴点として取得する（Ｓ２）。なお、制御部１１は、入力部１４を介して特徴点の指定を受け付けてもよいし、予め指定されて記憶部１２に記憶してある特徴点を記憶部１２から読み出してもよい。ここでは、図８Ａ中の特徴点Ａ０，Ａ１を取得したものとする。
【００６２】
制御部１１は、取得した特徴点Ａ０，Ａ１の位置に基づいて、パノラマ画像中の回転軸位置の各候補位置における画像座標系のＸ座標値ｘI と、補正後のパノラマ画像において特徴点Ａ０，Ａ１が上下方向に並ぶための回転角度αｘa との関係を表す関数αｘa （ｘI ）を算出する（Ｓ３）。図１３に示す関数αｘa （ｘI ）の算出処理において、制御部１１は、パノラマ画像中の回転軸位置の候補位置ｘI （画像座標系のＸ座標値ｘI ）を０に設定し（Ｓ１１）、回転角度の候補角度αｘa を−π／２に設定する（Ｓ１２）。制御部１１は、ステップＳ２で取得した特徴点Ａ０，Ａ１に対して、設定した回転軸位置及び回転角度に基づく天頂補正（回転）を行い（Ｓ１３）、補正後のパノラマ画像における特徴点Ａ０，Ａ１の座標値を算出する。
【００６３】
制御部１１は、算出した補正後のパノラマ画像における特徴点Ａ０，Ａ１の座標値に基づいて、特徴点Ａ０，Ａ１の左右方向の位置関係を特定する（Ｓ１４）。制御部１１は、特徴点Ａ０，Ａ１の左右方向の位置（画像座標系におけるＸ座標値）が同じであるか、又は前回特定した位置関係から逆転したか否かを判断する（Ｓ１５）。特徴点Ａ０，Ａ１の左右方向の位置が同じでなく、また、前回特定した位置関係から逆転していないと判断した場合（Ｓ１５：ＮＯ）、制御部１１は、回転角度の候補角度αｘa に所定量を加算し（Ｓ１６）、ステップＳ１３の処理に戻る。よって、制御部１１は、所定量が加算された回転角度に基づく天頂補正を行い（Ｓ１３）、ステップＳ１４，Ｓ１５の処理を繰り返す。特徴点Ａ０，Ａ１の左右方向の位置が同じである、又は前回特定した位置関係から逆転したと判断した場合（Ｓ１５：ＹＥＳ）、制御部１１は、この時点の回転角度の候補角度αｘa を、この時点の回転軸位置ｘIに対応する回転角度αｘa として記憶する（Ｓ１７）。なお、制御部１１は、記憶部１２に設けられた配列に順次記憶する。
【００６４】
制御部１１は、この時点の回転軸位置ｘIがＷ−１以上であるか否かを判断し（Ｓ１８）、Ｗ−１以上でないと判断した場合（Ｓ１８：ＮＯ）、回転軸位置の候補位置ｘIに所定値を加算し（Ｓ１９）、ステップＳ１２の処理に戻る。そして制御部１１は、回転角度の候補角度αｘa を−π／２にリセットし（Ｓ１２）、ステップＳ１３〜Ｓ１８の処理を繰り返す。回転軸位置ｘIがＷ−１以上であると判断した場合（Ｓ１８：ＹＥＳ）、制御部１１は、関数αｘa （ｘI ）の算出処理を終了し、図１２の処理に戻る。これにより、特徴点Ａ０，Ａ１の位置に基づいて、図１１Ａに示すような第１関数αｘa （ｘI ）が得られる。
【００６５】
制御部１１は、ステップＳ１で読み出したパノラマ画像において、特徴点Ａ０，Ａ１とは異なるもう１組の特徴点を取得する（Ｓ４）。ここでも、制御部１１は、入力部１４を介して特徴点の指定を受け付けてもよいし、予め指定されて記憶部１２に記憶してある特徴点を記憶部１２から読み出してもよい。ここでは、図８Ａ中の特徴点Ｂ０，Ｂ１を取得したものとする。制御部１１は、取得した特徴点Ｂ０，Ｂ１の位置に基づいて、ステップＳ３と同様の処理を行い、特徴点Ｂ０，Ｂ１の位置に基づいて、図１１Ｂ中の破線で示すような第２関数αｘa （ｘI ）を算出する（Ｓ５）。
【００６６】
次に制御部１１は、ステップＳ３，Ｓ５で算出した２つの関数αｘa （ｘI ）に基づいて、補正部３４による天頂補正に用いる補正量を特定する（Ｓ６）。図１４に示す補正量の特定処理において、制御部１１は、回転軸位置ｘIを０に設定し（Ｓ２１）、回転軸位置ｘIが０の場合の第１関数による回転角度αｘa を読み出す（Ｓ２２）。なお、制御部１１は、記憶部１２に設けられた第１関数用の配列から回転角度αｘa を読み出す。また制御部１１は同様に、回転軸位置ｘIが０の場合の第２関数による回転角度αｘa を読み出す（Ｓ２３）。制御部１１は、ステップＳ２２，Ｓ２３で読み出した２つの回転角度αｘa の大小関係を特定する（Ｓ２４）。
【００６７】
制御部１１は、２つの回転角度αｘa が同じであるか、又は前回特定した大小関係から逆転したか否かを判断する（Ｓ２５）。２つの回転角度αｘa が同じでなく、また、前回特定した大小関係から逆転していないと判断した場合（Ｓ２５：ＮＯ）、制御部１１は、回転軸位置ｘIに所定値を加算し（Ｓ２６）、ステップＳ２２の処理に戻る。よって、制御部１１は、所定値が加算された回転軸位置ｘIについて、ステップＳ２２〜Ｓ２５の処理を繰り返す。２つの回転角度αｘa が同じである、又は前回特定した大小関係から逆転したと判断した場合（Ｓ２５：ＹＥＳ）、制御部１１は、この時点の回転軸位置ｘI及び回転角度αｘa を補正量として特定する（Ｓ２７）。そして、制御部１１は、補正量の特定処理を終了し、図１２の処理に戻る。
【００６８】
制御部１１は、ステップＳ１で読み出したパノラマ画像に対して、ステップＳ６で特定した補正量に基づく天頂補正を行い（Ｓ７）、補正処理を終了する。これにより、図６Ａに示すように歪んだパノラマ画像が、図６Ｂに示すように、図８Ａ中の特徴点Ａ０，Ａ１及びＢ０，Ｂ１が共に上下方向に並んだ状態となるパノラマ画像に補正される。
【００６９】
本実施形態の画像処理装置１０では、カメラ２０の上下方向が実空間上の鉛直方向に対して傾斜した状態で撮影を行った場合であっても、撮影後のパノラマ画像に対して、実空間上の水平面上にある被写体が画像の上下方向の中央に写るパノラマ画像に補正できる。
【００７０】
本実施形態において、画像処理装置１０が行う天頂補正処理の機能をカメラ２０が有する構成としてもよい。また、本実施形態において、カメラ２０は、全天球カメラに限定しない。たとえば、半球型の範囲を撮影可能なカメラであってもよい。通常の平面画像撮影用のカメラでもよい。
【００７１】
（実施形態２）
本実施形態は、パノラマ画像において実空間上で鉛直方向に存在する２点がそれぞれ写っている位置を特徴点として取得する代わりに、パノラマ画像に基づいて、実空間上で鉛直方向に存在する線分に対応するパノラマ画像中の線分を特徴線として抽出する画像処理装置に関する。実施形態１と共通する構成及び処理については説明を省略する。本実施形態のカメラ２０は、実施形態１のカメラ２０と同様の構成を有しており同様の処理を行う。よって、本実施形態のカメラ２０によって撮影されるパノラマ画像は、実施形態１のカメラ２０によって撮影されるパノラマ画像と同様の画像である。
【００７２】
本実施形態の画像処理装置１０は、図１に示す実施形態１の画像処理装置１０と同様の構成を有する。本実施形態の画像処理装置１０も、図６Ａに示すように実空間における水平面上にある被写体が画像中の上下方向の中央部に写っていないパノラマ画像を、図６Ｂに示すように画像中の上下方向の中央部に写っているパノラマ画像に補正する天頂補正処理を行う構成を有する。
【００７３】
図１５は、実施形態２の画像処理装置１０の制御部１１によって実現される機能を示すブロック図である。本実施形態の画像処理装置１０において、制御部１１は、記憶部１２に記憶してある天頂補正プログラムＰを実行した場合、エッジ抽出部４１、特徴線抽出部４２、回転軸特定部４５、回転量特定部４６、補正部３４の各機能を実現する。補正部３４は、実施形態１の補正部３４と同様の処理を行う。なお、これらの一部を専用のハードウェア回路で実現してもよい。
【００７４】
図１６〜図２３は実施形態２の天頂補正処理を説明するための模式図であり、図１６Ａは天頂補正前のパノラマ画像の例を示し、図１６Ｂは天頂補正後のパノラマ画像の例を示す。即ち、図１６Ａに示す画像は、実空間における水平面上にある被写体が画像の上下方向の中央部に写っていないパノラマ画像であり、図１６Ｂに示す画像は、実空間における水平面上にある被写体が画像の上下方向の中央部に写っているパノラマ画像である。図１６Ａに示す補正前のパノラマ画像の解像度は例えば左右方向５３７６画素×上下方向２６８８画素である。以下では、図１６Ａに示すようなパノラマ画像を、図１６Ｂに示すようなパノラマ画像に補正する天頂補正処理について説明する。
【００７５】
エッジ抽出部４１は、補正前のパノラマ画像（撮影画像、以下では原画像ということもある）から、例えばケニーのエッジ抽出と呼ばれる方法（Canny Edge Detector ）を用いてエッジを抽出する。パノラマ画像は例えばＲＧＢのカラー画像であり、エッジ抽出部４１はまず、パノラマ画像を単色のパノラマ画像にグレースケール化する。具体的には、エッジ抽出部４１は、パノラマ画像中の各画素においてＲＧＢそれぞれの画素値（輝度値）の平均値を算出し、その画素の画素値とすることによってカラーのパノラマ画像を単色のパノラマ画像に変換する。次にエッジ抽出部４１は、単色のパノラマ画像に対して、２次元ガウス分布（正規分布）に従った２次元ガウシアンカーネルを用いて畳み込み積分することにより、勾配画像を作成する。図１７Ａは２次元ガウシアンカーネルの例を示し、本実施形態では１９画素×１９画素のサイズを有し、標準偏差σ＝９画素であるカーネルを用いる。図１７Ｂは、図１７Ａに示すガウシアンカーネルを横方向（左右方向）に微分（差分）したカーネルを示し、図１７Ｃは、図１７Ａに示すガウシアンカーネルを縦方向（上下方向）に微分（差分）したカーネルを示す。本実施形態のエッジ抽出部４１は、単色のパノラマ画像に対して、横方向に微分したガウシアンカーネルを用いて畳み込み積分することによって横方向の勾配画像ｆx （ｘ，ｙ）を作成し、縦方向に微分したガウシアンカーネルを用いて畳み込み積分することによって縦方向の勾配画像ｆy （ｘ，ｙ）を作成する。そしてエッジ抽出部４１は、以下の（９）式により勾配の大きさｇ（ｘ，ｙ）を算出し、以下の（１０）式により勾配方向Ｄ（ｘ，ｙ）を算出する。図１８は勾配の大きさｇ（ｘ，ｙ）を示す画像であり、この画像の各画素の画素値は、単色のパノラマ画像において隣り合う画素の画素値の変化が大きい程、大きい値（図１８では白に近い値）となる。
【００７６】
【数７】
2020071854.tif 000009
【００７７】
次にエッジ抽出部４１は、勾配の大きさを示す画像から勾配の最大値を検出する。具体的には、エッジ抽出部４１は、勾配の大きさを示す各画素の画素値について、勾配の大きさｇ（ｘ，ｙ）が勾配方向Ｄ（ｘ，ｙ）に隣接する画素よりも大きい値（極大値）であれば最大値として抽出する。なお、原画像において隣接する各画素はそれぞれ各画素の上下左右方向にしか隣接しないので、勾配方向Ｄ（ｘ，ｙ）に隣接する画素の画素値は、その周囲の画素の画素値から補間して求めて比較する。図１９Ａは勾配の最大値の検出結果を示す画像を示し、図１９Ｂは図１９Ａに示す画像の一部（中央部）の拡大図である。
【００７８】
図１９Ａに示す画像の各画素の画素値は、勾配の局所的な最大値ではあるが、必ずしも大きな値であるとは限らず、勾配自体が大きな値である真のエッジが適切に抽出されたとは言えない。そこで、エッジ抽出部４１は、図１９Ａに示す勾配の最大値の検出結果から、勾配の大きさに基づいて真のエッジを抽出する。具体的には、エッジ抽出部４１は、２つの閾値ＴH ，ＴL （ＴH ＞ＴL）を用いて、最大値に該当する画素の勾配の大きさｇ（ｘ，ｙ）と閾値ＴH ，ＴL とを比較して各画素を以下の条件で真のエッジであるか否かに分類する。
ｇ（ｘ，ｙ）＞ＴH の場合、エッジに分類し、
ｇ（ｘ，ｙ）＜ＴL の場合、エッジに分類せず、
ｇ（ｘ，ｙ）≧ＴL 且つｇ（ｘ，ｙ）≦ＴH の場合、最大値として検出された画素に隣接している場合にのみエッジに分類する。
【００７９】
エッジ抽出部４１は、エッジに分類した画素値ｇ（ｘ，ｙ）を抽出することによって、不適切なエッジを除去して真のエッジを抽出する。図２０Ａは真のエッジの検出結果を示す画像（エッジ画像）を示し、図２０Ｂは図２０Ａに示す画像の一部（中央部）の拡大図である。閾値ＴH ，ＴL はそれぞれ例えば０．１，０．０５とすることができるが、これらの値に限定されない。エッジ抽出部４１は、上述した処理により、図１６Ａに示すパノラマ画像から、図２０Ａに示すエッジ画像を抽出する。
【００８０】
特徴線抽出部（特徴線取得部）４２は、エッジ抽出部４１が原画像から抽出したエッジ（エッジ画像）に基づいて、原画像に行うべき補正処理における補正量を特定する際に用いる特徴線を複数抽出（取得）する。なお、特徴線は、実空間内で鉛直方向に存在する線分が原画像中に写る線分である。特徴線抽出部４２はセグメント抽出部４３及びスクリーニング部４４を含む。セグメント抽出部４３は、エッジ抽出部４１が抽出したエッジの中から、画像の上下方向の中央を通る中央ラインと交差するエッジを抽出する。なお、セグメント抽出部４３が抽出する、画像の中央ラインと交差するエッジをセグメントという。図２１Ａはセグメントの抽出結果を示す画像（セグメント画像）を示し、図２１Ｂは図２１Ａに示す画像の一部（中央部）の拡大図である。
【００８１】
セグメント抽出部４３は、抽出した各セグメントについて、画像上での直線に当てはめて、例えばハフ変換と呼ばれる手法を用いて、セグメントが示す直線を表すパラメータを推定する。ハフ変換では、直線を画像の原点（例えば左下端）からの距離ρ及び傾きθのパラメータで表現する。セグメント抽出部４３は、各セグメントについて、セグメントに含まれる各画素の位置に基づいて距離ρ及び傾きθの各組合せに対して投票処理を行い、投票結果が最大値となる距離ρ及び傾きθの組合せを、そのセグメントが示す直線のパラメータに推定する。具体的には、セグメント抽出部４３はまず、投票空間の配列として２次元の配列を定義し、配列の各軸を傾きθ及び距離ρに割り当て、配列（θ，ρ）中の各値を全て０に初期化する。なお、例えば傾きθ及び距離ρの分割数Ｓをそれぞれ４０９６とし、傾きθは０〜πの範囲を４０９６等分し、距離ρは０〜Ｌ
2020071854.tif 000010
の範囲を４０９６等分する。ただし、Ｗ及びＨはそれぞれ原画像の左右方向の画素数（幅）及び上下方向の画素数（高さ）である。
【００８２】
セグメントを構成する各画素の座標をＰ＝（ｐX ，ｐY ）とすると、点Ｐを通る直線は様々な傾きθ及び距離ρの組合せで表される。セグメント抽出部４３は、点Ｐに関して、傾きθを微小ずつ変化させながら（例えばπ／Ｓずつ増加させながら）、傾きθが示す角度で直線が点Ｐを通るときの原点からの距離ρを算出し、このときの傾きθ及び距離ρに対する投票空間の座標（θ，ρ）の値に１を加算することにより、このときの傾きθ及び距離ρに投票する。セグメント抽出部４３は、１つのセグメントを構成する全画素について上述した投票処理を行い、全画素の投票が終了した後、投票空間の配列から、投票結果（投票値）が最大となった傾きθ及び距離ρの組合せを、そのセグメント（直線）を表すパラメータ（θ，ρ）に決定（推定）する。なお、傾きθとして、ｉ番目の配列位置は、θ＝（ｉ／Ｓ）・πとなり、点Ｐを通る傾きθの直線の原点からの距離ρは、ρ＝ｐX ・cosθ＋ｐY・sinθとなり、算出した距離ρに対応する配列位置はＳ・（ρ＋Ｌ）／２Ｌとなり、距離ρは原点からの象限によって±Ｌの範囲となる。
【００８３】
次にセグメント抽出部４３は、各セグメントについて、推定（決定）したパラメータ（θ，ρ）により、セグメント内の各画素が有効であるか無効であるかを精査する。セグメント抽出部４３は、セグメント内の各画素の座標に、推定した傾きθを与えて、対応する距離ρをρ＝ｐX ・cosθ＋ｐY・sinθにより算出し、算出した距離ρが、推定した距離ρ（ρ＝Ｓ・（ρ＋Ｌ）／２Ｌ）と一致するか否かを判断し、一致する場合、その画素は有効であると判断し、一致しない場合、その画素はセグメント内の異常値として無効であると判断する。セグメント抽出部４３は、各セグメントについて無効であると判断した画素を削除し、有効であると判断した画素のみを各セグメントを構成する画素とする。
【００８４】
スクリーニング部４４は、セグメント抽出部４３が抽出したセグメントから、以降の処理に有効なセグメントをスクリーニング（抽出）する。具体的には、スクリーニング部４４は、セグメントを対角線の１つとして画像の左右方向及び上下方向にそれぞれ平行な辺で構成される長方形の縦横比が所定範囲内の値でない場合、このセグメントは実空間上で鉛直方向に配置されていない可能性が高いので、このセグメントを除外する。例えば長方形の縦の長さが横の長さの２倍未満であるセグメントが除去される。またスクリーニング部４４は、セグメントに含まれる画素数（有効と判断された画素数）が所定数未満である場合、このセグメントは実空間上で鉛直方向に配置されていない可能性が高いか、又は上述の処理によって推定した傾きに大きな誤差が生じている可能性が高いので、このセグメントを除外する。例えば長方形の縦の長さ（高さ）が画像の高さ（上下方向の長さ）の１／１００未満であるセグメントが除外される。これにより、特徴線抽出部４２は、エッジ画像から、パノラマ画像（原画像）中の略上下方向の線分（セグメント）を特徴線として抽出でき、抽出した線分は、実空間上で鉛直方向に配置されている可能性が高いセグメント（特徴線）と言える。図２２は、図１６Ａに示すパノラマ画像（原画像）に、特徴線抽出部４２が抽出したセグメント（特徴線）を重畳して表示した画像である。図２２に示すように、実空間上で鉛直方向に配置される鉛直構造物において、パノラマ画像の上下方向の中央ラインに交差する特徴線（セグメント）が抽出されていることが分かる。
【００８５】
回転軸特定部４５及び回転量特定部４６（補正量特定部）は、特徴線抽出部４２が抽出した複数の特徴線（以下ではセグメントということもある）に基づいて、後段の補正部３４によって図１６Ａに示すようなパノラマ画像を、図１６Ｂに示すようなパノラマ画像に補正するための補正量を特定する。具体的には、回転軸特定部４５及び回転量特定部４６は、撮影時におけるカメラ２０の前後左右方向を含む平面（撮影時平面）が、実空間上の水平面に対して傾斜する中心軸（回転軸）及び回転角度（回転量）をそれぞれ特定する。即ち、回転軸特定部４５及び回転量特定部４６は、実空間上の水平面を基準として撮影時平面が回転する中心軸及び回転角度を補正量として特定する。
【００８６】
ここで、図２２から分かるように、各セグメントの傾きは、画像（パノラマ画像）の左端から順に、概ね垂直な方向（上下方向に伸びる方向）から徐々に右側への傾きが大きくなり、その後傾きが緩やかになって再度垂直な方向となった後、徐々に左側への傾きが大きくなり、画像の右端近傍では改めて垂直な方向となるという傾向がある。この傾向は、カメラ２０が傾いた状態で撮影が行われた結果得られるものである。これは大雑把にいうと、パノラマ画像の中央ライン上の各位置におけるセグメントの傾きは、パノラマ画像の左右方向の画像幅を１周期とする増減関数で表現でき、傾きが最大となる中央ライン上の位置が回転の中心（回転軸）であり、その傾きが回転量（回転角度）である。
【００８７】
このように各セグメントの傾きは、パノラマ画像の画像幅を周期とした増減関数で推移するので、各セグメントの傾きを正弦波で近似することを考える。ここでの正弦波の周期はパノラマ画像の画像幅に一致するため、正弦波は位相φ及び振幅Ａの２つのパラメータで特定できる。また、各セグメントの傾きは、セグメント抽出部４３によって各セグメントに係る直線を表すパラメータθ（０≦θ≦π）として決定されている。よって、推定する正弦波は、ｙ＝Ａ・sin（ｘ＋φ）と表現でき、回転軸特定部４５は、各セグメントに基づいて、位相φ及び振幅Ａの各組合せに対して投票法を用いて最小二乗法で正弦波を推定する（１回目の推定処理）。なお、θ＝０及びθ＝πは共に鉛直方向を示すので、後の演算のためにθ＞π／２の場合は、θ:＝θ−πとし、−π／２≦θ≦π／２の範囲とする。
【００８８】
具体的には、回転軸特定部４５はまず、投票空間である２次元配列を例えば記憶部１２に定義し、配列の各軸に振幅Ａ及び位相φを割り当て、振幅Ａ及び位相φで表される配列（Ａ，φ）中の各要素を全て０に初期化する。なお、配列の分割数Ｓは例えば、振幅Ａについては０〜π／２の範囲を１０００等分し、位相φについてはパノラマ画像の画像幅０〜Ｗの範囲をＷ等分（１画素単位）する。配列（Ａ，φ）の各要素には、ｙ＝Ａ・sin（ｘ＋φ）に対する、セグメント抽出部４３が推定した各セグメントの傾きθの誤差（差異）の二乗が累積されて記憶される。回転軸特定部４５は、配列（Ａ，φ）の各要素に対するセグメントの誤差を算出する。ここで、セグメントの横位置ｘC は、セグメントがパノラマ画像の中央ラインと交差するＸ座標値であり、各セグメントの横位置ｘC は既知であるから、０〜２πに正規化するために、ｘ＝２π×ｘC ／Ｗとする。また投票空間においてφ方向（φ軸）のｉ番目の位相は２π×ｉ／Ｓ（ただし、Ｓは分割数であり、ここではＷ）で表される。これらより、配列（Ａ，φ）の要素に対応するセグメント位置における正弦波の値は、ｙ＝Ａ・sin（２π×ｘC ／Ｗ−２π×ｉ／Ｓ）となる。ここで算出された正弦波の値ｙと、既にこのセグメントについて推定された傾きθとの差異（誤差）の二乗（ｙ−θ）2 を配列（Ａ，φ）の要素に加算する。
【００８９】
回転軸特定部４５は、配列（Ａ，φ）の全ての要素に対して、全てのセグメントにおける誤差の二乗の累積が完了した後、配列（Ａ，φ）の要素の中から最小値を特定し、最小値の要素に対応する振幅Ａ及び位相φを、各セグメントの傾きを近似した正弦波を表す仮パラメータ（Ａt ，φt ）と推定する。この仮パラメータ（Ａt ，φt ）が１回目の推定結果である。正弦波の仮パラメータの推定（１回目の推定処理）では、例えば道路に書かれた白線や電線等のように実空間上で鉛直方向に配置されていないセグメントの影響を受けている可能性があるため、このような適切でないセグメントの影響をできるだけ排除するために、ロバスト推定と呼ばれる手法を用いて正弦波を表すパラメータを精査する（２回目の推定処理）。ロバスト推定では、各セグメントが正弦波の推定に与える影響を、仮パラメータの推定結果（Ａt ，φt ）との差異に基づいた重みを用いて表現する。例えば、仮パラメータ（Ａt ，φt ）において各セグメントの横位置ｘC における正弦波の関数値ｙ＝Ａt ・sin（２π×ｘC ／Ｗ−φt ）と、推定されたセグメントの傾きθとの差異ｄ＝ｙ−θに対する重みωを、所定の許容値Ωを用いて以下の（１１）式のように設定する。なお、許容値Ωは例えば、全セグメントにおける差異ｄの中央値の１．２５倍とすることができる。
【００９０】
【数８】
2020071854.tif 000011
【００９１】
回転軸特定部４５は、上記の（１１）式を用いて特定された重みωを用いて、２回目の正弦波の推定処理を行う。１回目の推定処理と同様に、回転軸特定部４５は、振幅Ａ及び位相φで表される２次元配列を例えば記憶部１２に定義し、投票空間である配列（Ａ，φ）中の各要素を全て０に初期化する。次に回転軸特定部４５は、配列（Ａ，φ）の各要素に対して、全てのセグメントにおいて、正弦波の関数離ｙ＝Ａ・sin（ｘ＋φ）と、各セグメントについて推定された傾きθとの誤差（差異）の二乗を累積（加算）するが、このとき、上記（１１）式で表される重みωを掛けた後に加算する。これにより、１回目の推定結果である仮パラメータ（Ａt ，φt ）で表される正弦波から許容値Ωよりも大きく離れているセグメントが正弦波の推定に与える影響を除外することができ、より精度の高い正弦波の推定が可能となる。回転軸特定部４５は、配列（Ａ，φ）の全ての要素に対して、全てのセグメントにおける誤差の二乗に重みωを乗じた値の累積が完了した後、配列（Ａ，φ）の要素の中から最小値を特定し、最小値の要素に対応する振幅Ａ及び位相φを、各セグメントの傾きを近似した正弦波を表すパラメータ（Ａ，φ）に特定する。
【００９２】
図２３は、上述の処理によって推定された正弦波の例を示しており、破線は１回目の推定処理によって推定された正弦波を示し、実線は２回目の推定処理によって推定された正弦波を示す。なお、図２３中の一点破線は画像の中央ラインを示し、各点（ドット）は、各セグメントに対して推定された傾きθを示している。図２３に示すように、各ドットはある程度のばらつきを有するが、推定した２つの正弦波は、複数のドットを適切に近似したものであると分かる。道路上に書かれた白線や電線等に基づいて抽出された不適切なセグメント（特徴線）は、対応するドットが、近似した正弦波から大きく外れた値となっていることが分かる。このような不適切なセグメントは、２回目の推定処理（ロバスト推定）において、正弦波の推定に対する影響が除外されているので、２回目の推定結果である・BR>ウ弦波は、有効なセグメントのみを用いて推定されたものとなり、信頼性の高い推定結果が得られる。なお、理論的にはセグメントの傾きの変化は正弦波に従うものではないので、正弦波による近似は必ずしも正しくない。しかし、各セグメントの傾きが画像幅方向に１周期の増減を行うことは事実であり、正弦波によるシンプルな近似を用いて、近似された正弦波の位相から、補正処理に用いる回転軸の位置を特定した場合であっても、十分実用的な回転軸が得られる。
【００９３】
ここで、上述のように算出（推定）した正弦波の位相φは、画像の中央ラインにおいて、正弦波の関数値ｙが０となる位置（セグメントの傾きが０である位置）を示しているので、回転軸は、位相φの位置から中央ライン上でπ／２ずれた位置となる。これは、セグメントの傾きが最大となる中央ライン上の位置が回転軸となるためである。よって、回転軸特定部４５は、上述のように算出（推定）した正弦波の位相φにπ／２を加算する（φ:＝φ＋π／２）ことにより、回転軸の位置（位相φ）を特定する。なお、回転軸特定部４５は、ここまでパノラマ画像の左端をφ＝０とし、右端をφ＝２πとして扱ってきたが、後段の補正部３４が扱う極座標系ではパノラマ画像の左端がφ＝２πとなり、右端がφ＝０となる。よって、回転軸特定部４５は、位相（φ:＝φ＋π／２）を２πから減算し、位相φ（φ:＝３π／２−φ）を算出する。このように算出された位相φが、後段の補正部３４による補正処理に用いられる補正量となる。
【００９４】
回転量特定部４６は、回転軸特定部４５が特定した回転軸（位相φ）を用いて、補正部３４による補正処理に用いる回転量（回転角度）αを特定（推定）する。回転量αの推定においても、投票法を用いて最小二乗法を利用する。回転量特定部４６はまず、回転軸特定部４５が２回目の推定処理で推定した正弦波を基準とした各セグメントの誤差を算出し、算出した誤差に応じて、上記（１１）式に従って各セグメントに対する重みωを設定する。具体的には、２回目の推定処理で推定した正弦波のパラメータ（Ａ，φ）において各セグメントの横位置ｘC における正弦波の関数値ｙ＝Ａ・sin（２π×ｘC ／Ｗ−φ）と、推定されたセグメントの傾きθとの差異ｄ＝ｙ−θに応じて、各セグメントに対する重みωを設定する。
【００９５】
回転量特定部４６による最小二乗法による投票処理は、１次元配列を用いること以外は、回転軸特定部４５が正弦波を推定する際に用いた投票処理と同様である。具体的には、回転量特定部４６は、投票空間として１次元配列を例えば記憶部１２に定義し、配列α中の各要素を全て０に初期化する。なお、配列の要素数Ｓを例えば１０００とし、±３０°（±π／６ラジアン）の範囲の回転量を１０００等分する。なお、配列に用いる±３０°の範囲は、カメラ２０を用いた撮影時に生じる傾きがせいぜい３０°以内であるとの前提に基づいて設定しており、この範囲に限定されず、例えば±４５°の範囲を用いてもよい。
【００９６】
投票空間における配列αにおいて、ｉ番目の回転量αは、α＝（ｉ／１０００）×（π／３）−（π／６）で表される。配列の各要素には、回転軸特定部４５が特定した位相φを中心軸としてそれぞれの回転量αを回転させたときの各セグメントの回転後（補正処理後）のパノラマ画像における傾きの二乗に、先に設定しておいた各セグメントに対する重みωを乗じた値が累積されて記憶される。回転軸特定部４５が特定した位相φを中心軸として適切な回転量だけ回転させた場合、各セグメントは補正処理後のパノラマ画像上で上下方向に配置されるはずであるから、配列の要素の中の最小値に対応する回転量αが、後段の補正部３４による補正処理に用いる回転量に特定できる。
【００９７】
回転量特定部４６は、位相φ及び回転量αに基づく回転後の各セグメントの傾きを、以下のようにして算出する。回転量特定部４６はまず、処理対象のセグメント中の有効画素（セグメント抽出部４３によって有効であると判断された画素）から２つの端点（画素）Ｐtop 及びＰbot を特定する。次に回転量特定部４６は、位相φを回転軸として回転量αだけ回転した回転後（天頂補正後）のパノラマ画像において、端点Ｐtop 及びＰbot が移動した写像先の画素Ｐ´top 及びＰ´bot の位置を算出する。
【００９８】
ここで、位相φ及び回転量αに基づく天頂補正（回転）によって、補正前のパノラマ画像中の端点Ｐtop 及びＰbot が移動する補正後のパノラマ画像中の画素Ｐ´top 及びＰ´bot の位置の算出処理について説明する。位相φ及び回転量αに基づく天頂補正（回転）をパノラマ画像に行う場合、パノラマ画像中の端点Ｐtop 及びＰbot の座標値を画像座標系から、撮影位置を原点としたワールド直交座標系に変換し、ワールド直交座標系において天頂補正を行う。なお、画像座標系からワールド直交座標系に変換する場合、一旦極座標系に変換した後にワールド直交座標系に変換する。よって、回転量特定部４６は、補正前のパノラマ画像中の端点Ｐtop 及びＰbot のそれぞれの画像座標系の座標（ｘI ，ｙI ）を上記の（３）式によって極座標系の座標（ｒL ，θL ，φL ）に変換する。次に回転量特定部４６は、端点Ｐtop 及びＰbot のそれぞれの極座標系の座標（ｒL ，θL ，φL ）を上記の（４）式によってワールド直交座標系の座標（ｘW ，ｙW ，ｚW ）に変換する。そして、回転量特定部４６は、変換されたワールド直交座標系の座標（ｘW ，ｙW ，ｚW ）に基づいて、パノラマ画像に天頂補正（回転）処理を行う。
【００９９】
なお、回転量特定部４６は、ワールド直交座標系のＹW 軸を中心に時計回りにφだけ回転させて、位相φに基づく回転軸を一旦ワールド直交座標系のＺW 軸に一致させた後、ワールド直交座標系のＺW 軸を中心に回転角度αだけ回転させ、位相φ及び回転量αに基づく天頂補正（回転）を行う。そして、回転量特定部４６は、最初のＹW 軸を中心とした回転を戻すために、ワールド直交座標系のＹW 軸を中心に反時計回りにφだけ回転させ、回転後のパノラマ画像中の画素Ｐ´top 及びＰ´bot の座標値を再び、座標変換により極座標系を経由して画像座標系の座標値に戻す。これにより、位相φ及び回転量αに基づく天頂補正（回転）によって、補正前のパノラマ画像中の端点Ｐtop 及びＰbot が移動する補正後のパノラマ画像中の画素Ｐ´top 及びＰ´bot の位置が算出される。なお、上述した位相φ及び回転量αに基づく天頂補正（回転）処理は、実施形態１の回転角変化特定部３２が回転軸位置ｘa 及び回転角度αｘa に基づいて行う天頂補正（回転）と同様である。
【０１００】
回転量特定部４６は、上述したように算出した補正後（回転後）のパノラマ画像中の画素Ｐ´top 及びＰ´bot の座標値に基づいて、線分Ｐ´top Ｐ´bot の傾きを算出する。回転量特定部４６は、このようにして算出した線分Ｐ´top Ｐ´bot の傾きの二乗に、先に設定しておいた各セグメントに対する重みωを乗じた値を、配列αの対応する要素に加算する。回転量特定部４６は、配列αの各要素に対して、全てのセグメントにおける補正後の傾きの二乗に重みωを乗じた値の累積を完了した後、配列の要素の中から最小値を特定し、最小値の要素に対応する回転量αを、後段の補正部３４による補正処理に用いる補正量に特定する。
【０１０１】
補正部３４は、実施形態１の補正部３４と同様の補正処理を行う。具体的には、補正部３４は、処理対象のパノラマ画像に対して、回転軸特定部４５が特定した位相φが示す回転軸と、回転量特定部４６が特定した回転量αとに基づいて、画像の天頂方向を補正する処理を行う。具体的には、補正部３４は、補正前のパノラマ画像中の各画素の位置（座標値）から、補正によって各画素が移動する補正後のパノラマ画像中の位置を算出する。そして、補正部３４は、補正前のパノラマ画像中の各画素の輝度を、それぞれ算出した補正後のパノラマ画像における各位置にコピーし、補正後のパノラマ画像を生成する。
【０１０２】
より具体的には、補正部３４は、補正前のパノラマ画像中の各画素の画像座標系における座標（ｘI ，ｙI ）を上記の（３）式によって極座標系の座標（ｒL ，θL ，φL ）に変換し、更に上記の（４）式によってワールド直交座標系の座標（ｘW ，ｙW ，ｚW ）に変換する。次に補正部３４は、各画素のワールド直交座標系における座標（ｘW ，ｙW ，ｚW ）を、ワールド直交座標系のＹW 軸を中心に時計回りにφ回転させて、位相φに基づく回転軸をＺW 軸に一致させる。そして補正部３４は、各画素を、ワールド直交座標系のＺW 軸を中心に回転角度α回転させ、回転角度αに基づく天頂補正（回転）を行う。その後、補正部３４は、最初のＹW 軸を中心とした回転を戻すために、補正後の各画素を、ワールド直交座標系のＹW 軸を中心に反時計回りにφ回転させ、更に、回転後（補正後）の各画素の座標値を、座標変換により極座標系を経由して画像座標系の座標値に戻す。これにより、回転軸特定部４５及び回転量特定部４６がそれぞれ特定した位相φ及び回転量αに基づく天頂補正（回転）によって補正前のパノラマ画像中の各画素が移動する補正後のパノラマ画像中の画素位置が算出される。
【０１０３】
補正部３４は、補正前のパノラマ画像中の各画素の輝度を、補正前の画素位置に対応する補正後の画素位置にコピーし、補正後のパノラマ画像を生成する。なお、パノラマ画像はデジタル画像であるため、上述のように算出した補正後の座標値によっては、補正後のパノラマ画像中の画素の位置を特定できない可能性がある。従って、例えばバイリニア法等の補間演算を行うことによって、補正後のパノラマ画像中の各画素の輝度を、演算によって算出された周囲の画素の輝度に基づいて算出してもよい。また、補正後のパノラマ画像中の各画素の位置から、対応する補正前のパノラマ画像中の各画素の位置を算出し、補正前後での各画素の位置（座標値）を対応付けてもよい。この場合、算出した補正前の画素位置の輝度を、補正後の画素位置にコピーすることにより、補正後のパノラマ画像が得られる。上述した補正処理により、図１６Ａに示すように歪んだパノラマ画像が、図１６Ｂに示すようなパノラマ画像に補正される。図１６Ｂに示すパノラマ画像では、図２２中の特徴線がそれぞれ上下方向に伸びる状態となる。
【０１０４】
次に、本実施形態の画像処理装置１０が行う補正処理をフローチャートに基づいて説明する。図２４は、画像処理装置１０による補正処理の手順を示すフローチャートであり、図２５及び図２６は、補正処理に含まれる回転軸の特定処理の手順を示すフローチャートであり、図２７は、補正処理に含まれる回転量の特定処理の手順を示すフローチャートである。以下の処理は、画像処理装置１０の記憶部１２に記憶してある天頂補正プログラムＰを含む制御プログラムに従って制御部１１によって実行される。
【０１０５】
画像処理装置１０の制御部１１は、補正処理を行うべきパノラマ画像をパノラマ画像ＤＢ１２ａから読み出す（Ｓ３１）。制御部１１は、読み出したパノラマ画像に基づいて、パノラマ画像中のエッジを抽出する（Ｓ３２）。なお、制御部１１は、各エッジの大きさ（勾配の大きさ）に基づいて、後段の処理に有効な真のエッジのみを抽出しておく。制御部１１は、抽出したエッジの中から、画像の上下方向の中央を通る中央ラインと交差するエッジ（セグメント）を抽出する（Ｓ３３）。なお制御部１１は、各セグメントが示す直線を表すパラメータを、例えばハフ変換を用いて推定する。具体的には、制御部１１は、各セグメントが示す直線の画像の原点からの距離ρ及び傾きθの各組合せに対して、各セグメントに含まれる画素の位置に基づく投票処理を行い、投票結果が最大値となる距離ρ及び傾きθの組合せを、そのセグメントが示す直線のパラメータに決定する。そして制御部１１は、各セグメントに含まれる画素から、決定したパラメータによって表される直線上の画素のみを抽出し、このセグメントの有効画素とする。これにより、直線上に位置する画素のみで構成されるセグメントを抽出できる。
【０１０６】
制御部１１は、抽出したセグメントから、以降の処理に有効なセグメント（特徴線）を抽出する（Ｓ３４）。ここでは、制御部１１は、実空間上で鉛直方向に配置されていない可能性が高いセグメント又は直線のパラメータを推定する際に大きい誤差が生じている可能性があるセグメント等、以降の処理に有効でないセグメントを除外する。以上の処理により、制御部１１は、読み出したパノラマ画像に基づいて、パノラマ画像中で略上下方向に伸びる特徴線（線分）、即ち、実空間上で鉛直方向に存在する可能性の高い特徴線を取得できる。なお、制御部１１は、特徴線を数十本〜百本程度抽出することが好ましい。
【０１０７】
制御部１１は、抽出した特徴線に基づいて、補正後のパノラマ画像において各特徴線が上下方向に並ぶために、実空間上の水平面に一致するように撮影時平面を回転すべき回転軸の位置を特定する（Ｓ３５）。図２５及び図２６に示す回転軸の特定処理において、制御部１１は、各特徴線（セグメント）の傾きを近似する正弦波を表す振幅Ａ及び位相φの２つのパラメータを各軸とした２次元配列を設定し、配列中の各要素を全て０に初期化する（Ｓ４１）。制御部１１は、推定する正弦波における振幅Ａの候補値を０に設定し（Ｓ４２）、位相φの候補値を０に設定する（Ｓ４３）。制御部１１は、ステップＳ３４で抽出した特徴線（セグメント）を１つ取得し（Ｓ４４）、取得した特徴線について、設定した振幅Ａ及び位相φによって表される正弦波に基づく値と、推定された傾きとの誤差を算出する（Ｓ４５）。制御部１１は、算出した誤差の二乗を、配列（Ａ，φ）の要素に加算する（Ｓ４６）。制御部１１は、ステップＳ３４で抽出した全ての特徴線に対してステップＳ４５〜Ｓ４６の処理を終了したか否かを判断する（Ｓ４７）。終了していないと判断した場合（Ｓ４７：ＮＯ）、制御部１１はステップＳ４４の処理に戻り、未処理の特徴線を１つ取得し（Ｓ４４）、取得した特徴線についてステップＳ４５〜Ｓ４６の処理を繰り返す。これにより、配列（Ａ，φ）の１つの要素に対して、位相φ及び振幅Ａに基づく正弦波による各特徴線の関数値と、推定された各特徴線の傾きとの誤差の二乗が累積される。
【０１０８】
制御部１１は、ステップＳ３４で抽出した全ての特徴線に対してステップＳ４５〜Ｓ４６の処理を終了したと判断した場合（Ｓ４７：ＹＥＳ）、この時点の位相φにＷ／Ｓ（Ｓは配列の分割数）を加算し（Ｓ４８）、加算後の位相φがＷ（画像幅）以上であるか否かを判断する（Ｓ４９）。加算後の位相φがＷ未満であると判断した場合（Ｓ４９：ＮＯ）、制御部１１はステップＳ４４の処理に戻る。そして制御部１１は、この時点の位相φ及び振幅Ａに基づいて、ステップＳ３４で抽出した全ての特徴線に対してステップＳ４４〜Ｓ４７の処理を繰り返す。加算後の位相φがＷ以上であると判断した場合（Ｓ４９：ＹＥＳ）、制御部１１は、この時点の振幅Ａにπ／２Ｓ（Ｓは配列の分割数）を加算し（Ｓ５０）、加算後の振幅Ａがπ／２以上であるか否かを判断し（Ｓ５１）、加算後の振幅Ａがπ／２未満であると判断した場合（Ｓ５１：ＮＯ）、ステップＳ４３の処理に戻る。そして制御部１１は、この時点の振幅Ａに基づいて、ステップＳ４３〜Ｓ４９の処理を繰り返す。制御部１１は、位相φの候補値をＷ／Ｓずつ増加させ、振幅Ａの候補値をπ／２Ｓずつ増加させつつ、ステップＳ４４〜Ｓ４７の処理を行うことにより、配列（Ａ，φ）の各要素に対して、位相φの候補値及び振幅Ａの候補値に基づく正弦波による各特徴線の関数値と、推定された各特徴線の傾きとの誤差の二乗を累積する。ステップＳ５０で加算後の振幅Ａがπ／２以上であると判断した場合（Ｓ５１：ＹＥＳ）、制御部１１は、配列（Ａ，φ）の要素の中から最小値を特定し、最小値の要素に対応する振幅Ａ及び位相φを、各特徴線の傾きを近似した正弦波を表す仮パラメータに特定する（Ｓ５２）。
【０１０９】
次に制御部１１は、ステップＳ４１〜Ｓ４４と同様の処理を行い（Ｓ５３〜Ｓ５６）、取得した特徴線（セグメント）について、仮パラメータが示す正弦波に基づく関数値と、推定された傾きとの差異に応じた重みを特定する（Ｓ５７）。制御部１１は、ステップＳ４５と同様の処理を行い（Ｓ５８）、算出した誤差の二乗に、ステップＳ５７で特定した重みを乗じた値を算出し、配列（Ａ，φ）の対応する要素に加算する（Ｓ５９）。制御部１１は、ステップＳ３４で抽出した全ての特徴線に対してステップＳ５７〜Ｓ５９の処理を終了したか否かを判断する（Ｓ６０）。終了していないと判断した場合（Ｓ６０：ＮＯ）、制御部１１はステップＳ５６の処理に戻り、未処理の特徴線を１つ取得し（Ｓ５６）、取得した特徴線についてステップＳ５７〜Ｓ５９の処理を繰り返す。制御部１１は、ステップＳ３４で抽出した全ての特徴線に対してステップＳ５７〜Ｓ５９の処理を終了したと判断した場合（Ｓ６０：ＹＥＳ）、ステップＳ４８〜Ｓ５１と同様の処理を行い（Ｓ６１〜Ｓ６４）、位相φの候補値をＷ／Ｓずつ増加させ、振幅Ａの候補値をπ／２Ｓずつ増加させつつ、ステップＳ５６〜Ｓ６０の処理を行う。これにより、配列（Ａ，φ）の各要素に対して、位相φの候補値及び振幅Ａの候補値に基づく正弦波による各特徴線の関数値と、推定された各特徴線の傾きとの誤差の二乗に、この特徴線に設定された重みを乗じた値を累積する。ステップＳ６３で加算後の振幅Ａがπ／２以上であると判断した場合（Ｓ６４：ＹＥＳ）、制御部１１は、配列（Ａ，φ）の要素の中から最小値を特定し、最小値の要素に対応する振幅Ａ及び位相φを、各特徴線の傾きを近似した正弦波を表すパラメータに特定する。なお、制御部１１は、特定した位相φを、後段の補正処理に用いる補正量に特定する（Ｓ６５）。そして、制御部１１は、回転軸の特定処理を終了し、図２４の処理に戻る。
【０１１０】
制御部１１は、ステップＳ３５で特定した回転軸の位置に基づいて、補正後のパノラマ画像において各特徴線が上下方向に並ぶために撮影時平面を回転すべき回転量を特定する（Ｓ３６）。図２７に示す回転量の特定処理において、制御部１１は、回転量αをパラメータとした１次元配列を設定し、配列α中の各要素を全て０に初期化する（Ｓ７１）。制御部１１は、回転量αの候補値を−π／６に設定する（Ｓ７２）。制御部１１は、ステップＳ３４で抽出した特徴線（セグメント）を１つ取得し（Ｓ７３）、取得した特徴線について、回転軸の特定処理によって特定したパラメータ（振幅Ａ及び位相φ）が示す正弦波に基づく関数値と、推定された傾きとの差異に応じた重みを特定する（Ｓ７４）。
【０１１１】
制御部１１は、取得した特徴線に対して、ステップＳ３５で特定した回転軸φ及び設定した回転量αに基づく天頂補正（回転）を行い（Ｓ７５）、補正後の特徴線における傾きを算出する（Ｓ７６）。制御部１１は、算出した傾きの二乗に、ステップＳ７４で特定した重みを乗じた値を、配列αの対応する要素に加算する（Ｓ７７）。制御部１１は、ステップＳ３４で抽出した全ての特徴線に対してステップＳ７４〜Ｓ７７の処理を終了したか否かを判断する（Ｓ７８）。終了していないと判断した場合（Ｓ７８：ＮＯ）、制御部１１はステップＳ７３の処理に戻り、未処理の特徴線を１つ取得し（Ｓ７３）、取得した特徴線についてステップＳ７４〜Ｓ７７の処理を繰り返す。これにより、配列αの１つの要素に対して、ステップＳ３５で特定した回転軸φ及びここでの回転量αに基づく天頂補正を行った後の各特徴線の傾きの二乗に、各特徴線に設定された重みを乗じた値が累積される。ステップＳ３４で抽出した全ての特徴線に対してステップＳ７４〜Ｓ７７の処理を終了したと判断した場合（Ｓ７８：ＹＥＳ）、制御部１１は、この時点の回転量αにπ／３Ｓ（Ｓは配列の分割数）を加算し（Ｓ７９）、加算後の回転量αがπ／６以上であるか否かを判断する（Ｓ８０）。回転量αがπ／６未満であると判断した場合（Ｓ８０：ＮＯ）、制御部１１は、ステップＳ７３の処理に戻る。そして制御部１１は、この時点の回転量αに基づいて、ステップＳ３４で抽出した全ての特徴線に対してステップＳ７３〜Ｓ７８の処理を繰り返す。制御部１１は、回転量αの候補値をπ／３Ｓずつ増加させつつ、ステップＳ７３〜Ｓ７８の処理を行うことにより、配列αの各要素に対して、ステップＳ３５で特定した回転軸φ及び回転量αの各候補値に基づく天頂補正を行った後のそれぞれの特徴線の傾きの二乗に、それぞれの特徴線に設定された重みを乗じた値を累積できる。ステップＳ７９で加算後の回転量αがπ／６以上であると判断した場合（Ｓ８０：ＹＥＳ）、制御部１１は、配列αの要素の中から最小値を特定し、最小値の要素に対応する回転量αを後段の補正処理に用いる補正量に特定する（Ｓ８１）。そして、制御部１１は、回転量の特定処理を終了し、図２４の処理に戻る。
【０１１２】
制御部１１は、ステップＳ３１で読み出したパノラマ画像に対して、ステップＳ３５で特定した回転軸の位置と、ステップＳ３６で特定した回転量とに基づく天頂補正を行い（Ｓ３７）、補正処理を終了する。これにより、図１６Ａに示すように歪んだパノラマ画像が、図１６Ｂに示すように、図２２中の特徴線がそれぞれ上下方向に並んだ状態となるパノラマ画像に補正される。
【０１１３】
本実施形態においても、カメラ２０の上下方向が実空間上の鉛直方向に対して傾斜した状態で撮影を行った場合であっても、撮影後のパノラマ画像に対して、実空間上の水平面上にある被写体が画像の上下方向の中央に写るパノラマ画像に補正できる。また、本実施形態では、実空間上で鉛直方向に存在する可能性の高い線分に対応するパノラマ画像中の特徴線（セグメント）を自動で抽出できる。そして、抽出された特徴線に基づいて、撮影したパノラマ画像を、実空間上の水平面上にある被写体が画像の上下方向の中央に写るパノラマ画像に補正できる。よって、撮影画像（パノラマ画像）に基づいて、撮影画像を天頂補正するための補正量を求めることができるので、撮影対象に対する天頂補正を自動的に行うことができる。よって、カメラ２０のユーザが、天頂補正に関する知識や技術を有しない場合であっても、精度の高い天頂補正を行うことができる。また、天頂補正の処理対象のパノラマ画像が多数ある場合であっても、自動的に天頂補正が行えるので、撮影画像毎に適切な天頂補正を行うことができる。
【０１１４】
各実施形態で記載されている技術的特徴（構成要件）はお互いに組合せ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１１５】
１０  画像処理装置
１１  制御部
１２  記憶部
１３  通信部
１４  入力部
１５  表示部
２０  カメラ
２１  制御部
２２  記憶部
２３  通信部
２４  シャッターボタン
２５  撮影部
３１  特徴点取得部
３２  回転角変化特定部
３３  補正量特定部
３４  補正部
４２  特徴線抽出部
４５  回転軸特定部
４６  回転量特定部
１２ａ  パノラマ画像ＤＢ
【図１】
2020071854.tif 000012
【図２】
2020071854.tif 000013
【図３】
2020071854.tif 000014
【図４】
2020071854.tif 000015
【図５】
2020071854.tif 000016
【図６】
2020071854.tif 000017
【図７】
2020071854.tif 000018
【図８】
2020071854.tif 000019
【図９】
2020071854.tif 000020
【図１０】
2020071854.tif 000021
【図１１】
2020071854.tif 000022
【図１２】
2020071854.tif 000023
【図１３】
2020071854.tif 000024
【図１４】
2020071854.tif 000025
【図１５】
2020071854.tif 000026
【図１６】
2020071854.tif 000027
【図１７】
2020071854.tif 000028
【図１８】
2020071854.tif 000029
【図１９】
2020071854.tif 000030
【図２０】
2020071854.tif 000031
【図２１】
2020071854.tif 000032
【図２２】
2020071854.tif 000033
【図２３】
2020071854.tif 000034
【図２４】
2020071854.tif 000035
【図２５】
2020071854.tif 000036
【図２６】
2020071854.tif 000037
【図２７】
2020071854.tif 000038