(57)【特許請求の範囲】
【請求項１】
共通の被写領域を有する複数のカメラでそれぞれ撮影されたカメラ画像を受け付ける画像受付部と、
前記画像受付部によって受け付けた各カメラ画像のうち、該各カメラ画像内の所定の水平線より下にある画像は、平面の底面を有する無限遠半球の底面に投影し、前記水平線より上にある画像は、前記無限遠半球の半球面に投影する投影部と、
前記投影部によって前記無限遠半球に投影された画像に基づいて、パノラマ画像を生成するパノラマ画像生成部と
を備えることを特徴とする画像生成装置。
【請求項２】
前記パノラマ画像生成部は、前記複数のカメラを搭載した車両の状況に応じて、所定のカメラで撮影されたカメラ画像が前記パノラマ画像の中心に位置するように、前記パノラマ画像を生成することを特徴とする請求項１に記載の画像生成装置。
【請求項３】
共通の被写領域を有する複数のカメラでそれぞれ撮影されるカメラ画像に含まれる画素のうち、該各カメラ画像内の所定の水平線より下にある画素の位置情報は、平面の底面を有する無限遠半球の底面に投影し、前記水平線より上にある画素の位置情報は、前記無限遠半球の半球面に投影する投影部と、
前記投影部によって前記無限遠半球に投影された結果に基づいて、前記複数のカメラ画像から生成されるパノラマ画像に含まれる各画素の位置情報と前記カメラ画像に含まれる各画素の位置情報との対応関係を示す合成テーブルを生成する合成テーブル生成部と
を備えることを特徴とする合成テーブル生成装置。
【請求項４】
コンピュータに、
共通の被写領域を有する複数のカメラでそれぞれ撮影されたカメラ画像を受け付ける画像受付手順と、
前記画像受付手順によって受け付けた各カメラ画像のうち、該各カメラ画像内の所定の水平線より下にある画像は、平面の底面を有する無限遠半球の底面に投影し、前記水平線より上にある画像は、前記無限遠半球の半球面に投影する投影手順と、
前記投影手順によって前記無限遠半球に投影された画像に基づいて、パノラマ画像を生成するパノラマ画像生成手順と
を実行させることを特徴とする画像生成プログラム。
【請求項５】
前記パノラマ画像生成手順は、前記複数のカメラを搭載した車両の状況に応じて、所定のカメラで撮影されたカメラ画像が前記パノラマ画像の中心に位置するように、前記パノラマ画像を生成することを特徴とする請求項４に記載の画像生成プログラム。
【請求項６】
コンピュータに、
共通の被写領域を有する複数のカメラでそれぞれ撮影されるカメラ画像に含まれる画素のうち、該各カメラ画像内の所定の水平線より下にある画素の位置情報は、平面の底面を有する無限遠半球の底面に投影し、前記水平線より上にある画素の位置情報は、前記無限遠半球の半球面に投影する投影手順と、
前記投影手順によって前記無限遠半球に投影された結果に基づいて、前記複数のカメラ画像から生成されるパノラマ画像に含まれる各画素の位置情報と前記カメラ画像に含まれる各画素の位置情報との対応関係を示す合成テーブルを生成する合成テーブル生成手順と
を実行させることを特徴とする合成テーブル生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像生成装置、画像生成プログラム、合成テーブル生成装置および合成テーブル生成プログラムに関する。
【背景技術】
【０００２】
従来、複数のカメラで撮影された画像からパノラマ画像を生成する画像生成装置がある。例えば、画像生成装置は、撮影範囲が全方位をカバーするように複数のカメラが設けられた３６０度カメラから周囲の画像を取得する。画像生成装置は、取得した複数のカメラ画像を、３６０度カメラを中心とした仮想的な球面スクリーンに投影する。各々のカメラ画像が球面スクリーン上で重なり合う部分については、画像生成装置は、重なり部分の画素値をブレンドし、球面画像を生成する。そして、画像生成装置は、球面スクリーンに投影された球面画像を、球の中心からの透視法投影、球の中心を中心軸が通る円筒投影または中心を一致させた極座標投影により平面画像に変換し、３６０度のパノラマ画像を生成する。【０００３】
また、パノラマ画像の生成における視差の影響を軽減する技術がある。視差とは、複数のカメラの設置位置の違いによって、撮影対象が見える角度が異なることである。この技術は、「カメラから撮影対象までの距離がカメラ間の距離に比べて十分に大きい場合には、カメラ間の距離を無視できること」を利用して、視差の影響を軽減する。例えば、カメラから撮影対象までの距離が十分に離れている場合には、カメラ画像を投影する仮想的な球面スクリーンの半径を無限大に設定することで、視差の影響を軽減したパノラマ画像を生成する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−０５６２９５号公報
【特許文献２】特開２００８−７７６２８号公報
【特許文献３】特開２００６−０５４６６２号公報
【特許文献４】特開２０００−２７８６０２号公報
【非特許文献】
【０００５】
【非特許文献１】S.  Ikeda、他２名、「Generating  a  Panorama  Movie  Using  an  Omnidirectional  Multi-camera  System」、Institute  of  Electronics,  Intormation  and  Communication  Engineers、２００２年
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上述した従来の画像生成装置では、各々のカメラ画像に視差がない場合には、各々のカメラ画像の重なり部分が一致したパノラマ画像が生成される。このため、従来の画像生成装置は、視差を無視できるほど近接してカメラを設置するか、視差を無視できるほど遠方の撮影対象に限って撮影する必要があった。【０００７】
ここで、設置位置が異なる複数のカメラで撮影されたカメラ画像からパノラマ画像を生成し、利用者に提供すれば有用であろう。例えば、車両の前後左右に搭載された車載カメラからカメラ画像を取得し、取得したカメラ画像からパノラマ画像を生成して運転者に提供できれば、レーンチェンジ時やバック時などに有用であると考えられる。しかしながら、従来の画像生成装置は、視差のある複数のカメラ画像からパノラマ画像を生成すると、各々のカメラ画像の重なり部分を球面スクリーンに二重に投影する結果、利用者にとって違和感のあるパノラマ画像を生成してしまうという問題があった。【０００８】
図２９および図３０を用いて、従来の画像生成装置が違和感のあるパノラマ画像を生成してしまう理由について説明する。図２９および図３０は、従来技術における問題点を説明するための図である。図２９は、車両１０を側面方向から見た状態を示し、図３０は、車両１０を上面方向から見た状態を示す。図２９および図３０に示す例では、車両１０は、画像生成装置を搭載する。車両１０は、前方にカメラ２０を搭載し、後方にカメラ２１を搭載し、左側にカメラ２２を搭載し、右側にカメラ２３を搭載する。車両１０に搭載された画像生成装置は、各カメラ２０〜２３で車両周囲のカメラ画像を撮影し、撮影したカメラ画像を仮想的な球面スクリーン５０に投影する。なお、球面スクリーン５０は、車両１０を中心として設定される。【０００９】
図２９に示す例では、撮影対象３０が遠方にある場合を説明する。画像生成装置は、遠方にある電波塔を撮影対象３０として撮影したカメラ画像をカメラ２１およびカメラ２２から取得する。画像生成装置は、カメラ２１で撮影した撮影対象３０の位置「Ｐ」の画像を球面スクリーン５０の位置「Ｐ１」に投影する。一方、画像生成装置は、カメラ２２で撮影した撮影対象３０の位置「Ｐ」の画像を球面スクリーン５０の位置「Ｐ２」に投影する。つまり、画像生成装置は、撮影対象３０の位置「Ｐ」の画像を位置「Ｐ１」および位置「Ｐ２」に二重に投影する。そして、画像生成装置は、二重に投影された球面画像を平面画像に変換する結果、運転者にとって違和感のあるパノラマ画像を生成してしまう。【００１０】
図３０に示す例では、撮影対象３０が近傍にある場合を説明する。画像生成装置は、路面上にある白線を撮影対象３０として撮影したカメラ画像をカメラ２０およびカメラ２３から取得する。画像生成装置は、カメラ２０で撮影した撮影対象３０の位置「Ｐ」の画像を球面スクリーン５０の位置「Ｐ１」に投影する。一方、画像生成装置は、カメラ２３で撮影した撮影対象３０の位置「Ｐ」の画像を球面スクリーン５０の位置「Ｐ２」に投影する。つまり、画像生成装置は、撮影対象３０の位置「Ｐ」の画像を位置「Ｐ１」および位置「Ｐ２」に二重に投影する。そして、画像生成装置は、二重に投影された球面画像を平面画像に変換する結果、運転者にとって違和感のあるパノラマ画像を生成してしまう。【００１１】
また、従来の画像生成装置は、視差の影響を軽減する技術を用いても、視差のあるカメラ画像から違和感のあるパノラマ画像を生成してしまう。なぜなら、カメラの近傍にある撮影対象については、カメラ間の距離を無視できないからである。例えば、図３０において撮影対象の位置「Ｐ」の画像を投影した球面スクリーン５０の半径を無限大に設定しても、投影面上の位置「Ｐ１」と位置「Ｐ２」との間隔は収束せず、違和感のあるパノラマ画像を生成してしまう。【００１２】
開示の技術は、上記に鑑みてなされたものであって、利用者にとって違和感の少ないパノラマ画像を生成可能である画像生成装置、画像生成プログラム、合成テーブル生成装置および合成テーブル生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本願の開示する技術は、一つの態様において、共通の被写領域を有する複数のカメラでそれぞれ撮影されたカメラ画像を受け付ける画像受付部と、前記画像受付部によって受け付けた各カメラ画像のうち、該各カメラ画像内の所定の水平線より下にある画像は、平面の底面を有する無限遠半球の底面に投影し、前記水平線より上にある画像は、前記無限遠半球の半球面に投影する投影部と、前記投影部によって前記無限遠半球に投影された画像に基づいて、パノラマ画像を生成するパノラマ画像生成部とを有する。
【発明の効果】
【００１４】
本願の開示する技術の一つの態様によれば、利用者にとって違和感の少ないパノラマ画像を生成可能であるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施例１に係る画像生成装置の構成を示すブロック図である。
【図２】図２は、画像生成装置の原理を説明するための図である。
【図３】図３は、カメラのパラメータを説明するための図である。
【図４】図４は、カメラのパラメータを説明するための図である。
【図５】図５は、カメラのパラメータを説明するための図である。
【図６】図６は、カメラ画像と入射光ベクトル「Ｖｉ」との関係を示す図である。
【図７】図７は、カメラ画像と入射光ベクトル「Ｖｉ」との関係を示す図である。
【図８】図８は、パノラマ画像と入射光ベクトル「Ｖｐ（Ｑ）」との関係を示す図である。
【図９】図９は、パノラマ画像と入射光ベクトル「Ｖｐ（Ｑ）」との関係を示す図である。
【図１０】図１０は、パノラマ画像と入射光ベクトル「Ｖｐ（Ｑ）」との関係を示す図である。
【図１１】図１１は、入射光ベクトル「Ｖｐ（Ｑ）」と立体スクリーンとの関係を示す図である。
【図１２】図１２は、入射光ベクトル「Ｖｐ（Ｑ）」と立体スクリーンとの関係を示す図である。
【図１３】図１３は、立体スクリーンとカメラ画像との関係を示す図である。
【図１４】図１４は、実施例２に係る車両周辺監視装置および合成テーブル生成装置の構成を示すブロック図である。
【図１５】図１５は、実施例２に係る合成テーブルにより記憶されたデータの一例を示す図である。
【図１６】図１６は、実施例２に係るカメラ画像の一例を示す図である。
【図１７】図１７は、実施例２に係るカメラ画像の一例を示す図である。
【図１８】図１８は、実施例２に係るカメラ画像の一例を示す図である。
【図１９】図１９は、実施例２に係るカメラ画像の一例を示す図である。
【図２０】図２０は、実施例２に係る車両周辺監視装置により表示されるパノラマ画像の一例を示す図である。
【図２１】図２１は、実施例２に係る合成テーブル生成装置の処理手順を示すフローチャートである。
【図２２】図２２は、実施例２に係る合成テーブル生成装置の処理手順を示すフローチャートである。
【図２３】図２３は、実施例２に係る車両周辺監視装置の処理手順を示すフローチャートである。
【図２４】図２４は、実施例３に係る車両周辺監視装置の構成を示すブロック図である。
【図２５】図２５は、実施例３に係る車両周辺監視装置の処理手順を示すフローチャートである。
【図２６】図２６は、実施例３に係る車両周辺監視装置の処理手順を示すフローチャートである。
【図２７】図２７は、実施例２に係るパノラマ画像の生成処理の一例を説明するための図である。
【図２８】図２８は、実施例２に係る画像生成装置を構成するコンピュータのハードウェア構成を示す図である。
【図２９】図２９は、従来技術における問題点を説明するための図である。
【図３０】図３０は、従来技術における問題点を説明するための図である。
【発明を実施するための形態】
【００１６】
以下に、図面を参照しつつ、本願の開示する画像生成装置、画像生成プログラム、合成テーブル生成装置および合成テーブル生成プログラムの一実施形態について詳細に説明する。なお、本願の開示する画像生成装置、画像生成プログラム、合成テーブル生成装置および合成テーブル生成プログラムの一実施形態として以下に説明する実施例により、本願の開示する技術が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１７】
図１は、実施例１に係る画像生成装置の構成を示すブロック図である。図１に示すように、実施例１に係る画像生成装置１は、画像受付部２と、投影部３と、パノラマ画像生成部４とを有する。【００１８】
画像受付部２は、共通の被写領域を有する複数のカメラでそれぞれ撮影されたカメラ画像を受け付ける。投影部３は、画像受付部２によって受け付けた各カメラ画像のうち、各カメラ画像内の所定の水平線より下にある画像は、平面の底面を有する無限遠半球の底面に投影し、各カメラ画像内の所定の水平線より上にある画像は、無限遠半球の半球面に投影する。パノラマ画像生成部４は、投影部３によって無限遠半球に投影された画像に基づいて、パノラマ画像を生成する。【００１９】
図２を用いて、画像生成装置１の原理について説明する。図２は、画像生成装置の原理を説明するための図である。図２に示す例では、画像生成装置１は、車両１０に搭載されるものとする。図２には、車両１０を左側面から見た状態を示す。車両１０は、前方にカメラ２０を搭載し、後方にカメラ２１を搭載し、左側にカメラ２２を搭載する。なお、車両１０は、左側と同様に右側にもカメラ２３を搭載する。車両１０に搭載された画像生成装置１は、各カメラ２０〜２３で車両周囲の画像を撮影し、撮影した画像を仮想的な立体スクリーン４０に投影する。以降、各カメラ２０〜２３により撮影された画像をカメラ画像と表現する場合がある。立体スクリーン４０は、車両１０の中心直下に位置する路面上の点を原点「Ｏ」とし、半径「Ｒ」を無限大とするとともに、路面と同じ高さの平面に底面を有する無限遠半球の形状の投影面である。【００２０】
画像生成装置１が、カメラ画像のうち水平線より上にある画像を無限遠半球の半球面に投影する理由は、無限遠半球の半球面に投影することで遠方の撮影対象３０について視差の影響を軽減できるからである。図２に示す例では、画像生成装置１は、カメラ２１およびカメラ２２で遠方の撮影対象３０の位置「Ｐ１」を撮影し、撮影した位置「Ｐ１」を無限遠半球の半球面に投影する。この場合、カメラ２０〜２３から撮影対象３０までの距離がカメラ２０〜２３間の距離に比べて十分に離れているので、カメラ間の距離を無視できる。つまり、画像生成装置１は、カメラ２１で撮影した撮影対象３０の位置「Ｐ１」についても、カメラ２２で撮影した撮影対象３０の位置「Ｐ１」についても、無限遠半球の半球面の位置「Ｃ１」に投影する。また、カメラ画像のうち水平線より上にある画像については、空や建築物など遠方の撮影対象が含まれる場合が多い。このため、画像生成装置１は、カメラ画像のうち水平線より上にある画像を無限遠半球の半球面に投影することで、確率的に視差の影響を軽減する。【００２１】
また、画像生成装置１が、カメラ画像のうち水平線より下にある画像を無限遠半球の底面に投影する理由は、無限遠半球の底面に投影することで路面上の撮影対象３０について視差の影響を軽減できるからである。図２に示す例では、画像生成装置１は、カメラ２０およびカメラ２２で路面上の位置「Ｐ２」を撮影し、撮影した位置「Ｐ２」を無限遠半球の底面に投影する。この場合、車両１０の路面と無限遠半球の底面は一致しているので、位置「Ｐ２」は、無限遠半球の底面に投影されても同じ位置「Ｐ２」である。つまり、画像生成装置１は、カメラ２０で撮影した路面上の位置「Ｐ２」を投影しても、カメラ２２で撮影した路面上の位置「Ｐ２」を投影しても、同じ位置「Ｐ２」である。また、カメラ画像のうち水平線より下にある画像については、路面や路面上に存在する物体が含まれる場合が多い。このため、画像生成装置１は、カメラ画像のうち水平線より下にある画像を無限遠半球の底面に投影することで、確率的に視差の影響を軽減する。【００２２】
このように、実施例１に係る画像生成装置１は、複数のカメラ画像それぞれを、水平線より上にある画像は無限遠半球の半球面に投影し、水平線より下にある画像は無限遠半球の底面に投影する。そして、画像生成装置１は、投影された画像からパノラマ画像を生成する。このようなことから、画像生成装置１によれば、利用者にとって違和感の少ないパノラマ画像を生成可能である。
【実施例２】
【００２３】
実施例２に係る車両周辺監視装置および合成テーブル生成装置の一例について説明する。実施例２では、車両周辺監視装置が合成テーブル生成装置により生成された合成テーブルを用いてパノラマ画像を生成する場合を説明する。なお、車両周辺監視装置は、実施例１の画像生成装置の一例である。以下では、まず、車両周辺監視装置および合成テーブル生成装置が用いる数式の導出について説明し、次に、車両周辺監視装置および合成テーブル生成装置の構成、処理および効果について説明する。【００２４】
［実施例２に係る数式の導出］
まず、カメラのパラメータについて説明する。図３〜図５は、カメラのパラメータを説明するための図である。図３は、カメラ２０〜２３のカメラ座標系と光軸６０との関係を示す。図３に示すように、カメラ座標系は、カメラ２０〜２３の光学中心に原点「Ｏ」を置き、光軸６０の反対方向をＺｃ軸とし、原点「Ｏ」を通る水平方向をＸｃ軸とし、原点「Ｏ」を通る垂直方向をＹｃ軸とする座標系である。【００２５】
図４は、車両１０を上面方向から見た状態を示し、図５は、車両１０を側面方向から見た状態を示す。図４および図５に示すように、車両座標系は、車両１０の中心直下の路面上に原点「Ｏ」を置き、車両１０の進行方向をＹｗ軸とし、Ｙｗ軸と直行する水平方向をＸｗ軸とし、Ｙｗ軸と直行する垂直方向をＺｗ軸とする座標系である。なお、車両座標系は、ワールド座標系に対応する。【００２６】
車両１０は、前方にカメラ２０を搭載し、後方にカメラ２１を搭載し、左側にカメラ２２を搭載し、右側にカメラ２３を搭載する。車両１０に搭載されるカメラ２０〜２３のパラメータには、車両座標系における各カメラの３次元座標を示す位置パラメータ（ｘｗ、ｙｗ、ｚｗ）が含まれる。また、カメラ２０〜２３のパラメータには、車両座標系に対する各カメラのカメラ座標系の傾きを示す角度パラメータ（θ、ψ、φ）が含まれる。パン角θは、光軸６０がＹｗ軸を基点としてＸｗＹｗ平面上で回転する角度を示す。パン角θの方向については、Ｚｗ軸回りの右ネジ方向を正の方向とする。例えば、図４では、カメラ２０の光軸６０とＹｗ軸とが成す角度をθＦとする。俯角ψは、光軸６０が水平方向を基点として垂直方向に傾く角度を示す。俯角ψの方向については、下方向を正の方向とする。例えば、図５では、カメラ２０の光軸６０が水平方向から下方に傾く角度をψＦとする。回転角φは、各カメラのＹｃ軸の光軸６０を軸とする回転角度を示す。回転角φの方向は光軸６０回りに左ネジの方向（Ｚｃ軸回りに右ネジの方向）を正の方向とする。【００２７】
次に、カメラ画像と入射光ベクトル「Ｖｉ」との関係について説明する。図６および図７は、カメラ画像と入射光ベクトル「Ｖｉ」との関係を示す図である。図６は、カメラ２０〜２３のいずれかにより撮影されたカメラ画像７０を模式的に示す。図６に示すように、カメラ画像座標系は、カメラ画像７０の中心に原点「Ｏ」を置き、原点「Ｏ」を通る水平方向をＸＰ軸とし、原点「Ｏ」を通る垂直方向をＹＰ軸とする座標系である。カメラ画像座標系において、カメラ画像７０に含まれる撮影対象３０の位置「Ｐ」は、座標（ｐｘ、ｐｙ）を有する。この座標（ｐｘ、ｐｙ）が、「Ｐ」の画素位置を示す。つまり、画素位置「Ｐ」は、カメラにより撮影されたカメラ画像ごとに決定される。【００２８】
図７は、カメラ座標系における入射光ベクトル「Ｖｉ」を模式的に示す。入射光ベクトル「Ｖｉ」は、撮影対象３０の位置「Ｐ」とカメラ２０〜２３の光学中心とを結んだ線分の単位方向ベクトルである。入射光ベクトルＶｉの方向については、位置「Ｐ」から光学中心へ向かう方向を正の方向とする。カメラ画像座標系における位置「Ｐ」の座標と入射光ベクトル「Ｖｉ」との間には、写像を「Ｔ」とすると、下記の式（１）が成立する。写像「Ｔ」は、カメラのパラメータとレンズの歪みから、各カメラごとに与えられる値である。【００２９】
【数１】
0005454674.tif 000002
【００３０】
次に、パノラマ画像８０と球面スクリーン９０との関係について説明する。ここで、球面スクリーン９０は、車両座標系における車両の中心に球の中心「Ｓ」を置き、半径を「１」とした仮想的な球である。実施例２では、後述の立体スクリーン４０に投影された投影画像を極座標投影により平面画像に変換する場合を説明する。図８〜図１０は、パノラマ画像と入射光ベクトル「Ｖｐ（Ｑ）」との関係を示す図である。図８は、車両周辺監視装置により生成されるパノラマ画像８０を模式的に示す。図８に示すように、パノラマ画像座標系は、パノラマ画像８０の中心に原点「Ｏ」を置き、原点「Ｏ」を通る水平方向をＸＱ軸とし、原点「Ｏ」を通る垂直方向をＹＱ軸とする座標系である。パノラマ画像８０は、ＸＱ軸方向に「Ｗｐ」の画素数を有し、ＹＱ軸方向に「Ｈｐ」の画素数を有する。パノラマ画像座標系において、パノラマ画像８０に含まれる撮影対象３０の位置「Ｑ」は、座標（ｑｘ、ｑｙ）を有する。この座標（ｑｘ、ｑｙ）が、「Ｑ」の画素位置を示す。なお、パノラマ画像８０に含まれる位置「Ｑ」は、カメラ画像７０に含まれる位置「Ｐ」に相当する位置である。なお、実施例２では、極座標投影により平面画像に変換する場合を説明するが、本実施例はこれに限定されるものではなく、例えば、透視法投影や円筒投影によって平面画像に変換しても良い。【００３１】
図９は、極座標投影で用いられる球面スクリーン９０を模式的に示す。球面スクリーン９０の緯度方向はパノラマ画像８０のＹＱ軸方向に対応し、球面スクリーン９０の経度方向はパノラマ画像８０のＸＱ軸方向に対応する。球面スクリーン９０の水平画角「Ａｏｈ」度および垂直画角「Ａｏｖ」度に含まれる領域が、図８に示したパノラマ画像８０の「Ｗｐ×Ｈｐ」の画素数をカバーする。このとき、パノラマ画像８０の１画素当たりの角度分解能は、「Ａｏｈ／Ｗｐ」度および「Ａｏｖ／Ｈｐ」度となる。入射光ベクトル「Ｖｐ（Ｑ）」は、撮影対象３０の位置「Ｑ」と球面スクリーン９０の中心「Ｓ」とを結んだ線分の単位方向ベクトルである。入射光ベクトル「Ｖｐ（Ｑ）」の方向については、位置「Ｑ」から中心「Ｓ」へ向かう方向を正の方向とする。なお、球面スクリーン９０の中心「Ｓ」は、車両の中心に限定されるものではなく、任意の位置に設定しても良い。例えば、球面スクリーン９０の中心「Ｓ」は、運転者が車両に乗車した際の目線の位置に設定しても良い。【００３２】
図１０は、入射光ベクトル「Ｖｐ（Ｑ）」を算出する式の導出過程を示す。図１０は、車両座標系に図９と同じ球面スクリーン９０を示す。図１０では、球面スクリーン９０の中心「Ｓ」からＸｗ軸と平行な直線を「Ｘ」とし、中心「Ｓ」からＹｗ軸と平行な直線を「Ｙ」とし、中心「Ｓ」からＺｗ軸と平行な直線を「Ｚ」とする。入射光ベクトル「Ｖｐ（Ｑ）」は、直線「Ｙ」から中心「Ｓ」へ向かう単位ベクトル（０、−１、０）を、垂直方向に「β」度回転させ、水平方向に「α」度回転させた方向ベクトルである。つまり、単位ベクトル（０、−１、０）を垂直方向に「β」度回転させた方向ベクトルは、下記の式（２）で算出される。そして、式（２）により算出された方向ベクトルを水平方向に「α」度回転させた方向ベクトルは、下記の式（３）で算出される。【００３３】
【数２】
0005454674.tif 000003
【００３４】
【数３】
0005454674.tif 000004
【００３５】
したがって、入射光ベクトル「Ｖｐ（Ｑ）」は、下記の式（４）で表される。なお、式（４）の角度「α」および「β」は、パノラマ画像の１画素当たりの角度分解能を用いると、パノラマ画像座標系のパラメータで表すことができる。つまり、角度「α」は下記の式（５）で表され、角度「β」は下記の式（６）で表される。【００３６】
【数４】
0005454674.tif 000005
【００３７】
【数５】
0005454674.tif 000006
【００３８】
【数６】
0005454674.tif 000007
【００３９】
次に、入射光ベクトル「Ｖｐ（Ｑ）」と立体スクリーン４０との関係について説明する。図１１および図１２は、入射光ベクトル「Ｖｐ（Ｑ）」と立体スクリーンとの関係を示す図である。立体スクリーン４０は、車両座標系における原点「Ｏ」を底面の中心とし、半径「Ｒ」を無限大とした無限遠半球である。式（４）により求められる入射光ベクトル「Ｖｐ（Ｑ）」を逆方向に伸ばした直線と、立体スクリーン４０との交点を位置「Ｃ」とする。【００４０】
図１１は、位置「Ｃ」を算出する式の導出過程を説明するための図を示す。図１１は、車両座標系における立体スクリーン４０を示す。一般的に、位置「Ｓ＝（Ｓｘ、Ｓｙ、Ｓｚ）」を通る傾き「Ｖ＝（Ｖｘ、Ｖｙ、Ｖｚ）」の直線の方程式は、定数「ｋ」を用いると、下記の式（７）で示される。また、式（７）の各成分ごとの直線の方程式は、下記の式（８）〜（１０）で示される。【００４１】
【数７】
0005454674.tif 000008
【００４２】
【数８】
0005454674.tif 000009
【００４３】
【数９】
0005454674.tif 000010
【００４４】
【数１０】
0005454674.tif 000011
【００４５】
位置「Ｃ」が立体スクリーン４０の半球面上に存在する場合には、下記の式（１１）に示す球面の方程式と、式（８）〜（１０）との連立方程式から、下記の式（１２）が算出される。【００４６】
【数１１】
0005454674.tif 000012
【００４７】
【数１２】
0005454674.tif 000013
【００４８】
続いて、下記の式（１３）〜（１５）を用いて置き換えると、式（１２）は、下記の式（１６）に変形される。【００４９】
【数１３】
0005454674.tif 000014
【００５０】
【数１４】
0005454674.tif 000015
【００５１】
【数１５】
0005454674.tif 000016
【００５２】
【数１６】
0005454674.tif 000017
【００５３】
そして、式（１６）に二次方程式の解の公式を用いると、定数「ｋ」は、下記の式（１７）で表される。位置「Ｃ」は方向ベクトル「Ｖ」の方向に存在するので、定数「ｋ」は、下記の式（１８）で表される。【００５４】
【数１７】
0005454674.tif 000018
【００５５】
【数１８】
0005454674.tif 000019
【００５６】
また、位置「Ｃ」が立体スクリーン４０の底面上に存在する場合には、式（１０）において「ｚ＝０」であるので、定数「ｋ」は、下記の式（１９）で表される。【００５７】
【数１９】
0005454674.tif 000020
【００５８】
図１２は、球面スクリーン９０と立体スクリーン４０とを側面方向から見た状態を示す。図１２を車両座標系に当てはめると、車両１０の中心直下に位置する路面上の点が原点「Ｏ」であり、原点「Ｏ」を通る水平方向の直線は「Ｚｗ＝０平面」である。中心「Ｓ」は、座標（０、０、ｓｚ）を有する。入射光ベクトル「Ｖｐ（Ｑ）＝（Ｖｐｘ、Ｖｐｙ、Ｖｐｚ）」のｚ成分が正「Ｖｐｚ＞０」の場合には、位置「Ｃ」は、立体スクリーン４０の底面に存在する。また、ｚ成分が負の「Ｖｐｚ≦０」の場合には、位置「Ｃ」は、立体スクリーン４０の半球面に存在する。【００５９】
図１１において算出された式（８）〜（１０）に、中心「Ｓ＝（０、０、ｓｚ）」と入射光ベクトル「Ｖｐ（Ｑ）＝（Ｖｐｘ、Ｖｐｙ、Ｖｐｚ）」とを代入すると、位置「Ｃ＝（Ｃｘ、Ｃｙ、Ｃｚ）」は、下記の式（２０）で表される。なお、式（４）により求められる入射光ベクトル「Ｖｐ（Ｑ）」は、図１１に示した単位方向ベクトル「Ｖ」を逆向きにしたベクトルであるので、各成分の符号を変えて代入する。また、式（２０）の定数「ｋ」は、図１１において算出された式（１３）〜（１５）および式（１９）に、中心「Ｓ＝（０、０、ｓｚ）」と入射光ベクトル「Ｖｐ（Ｑ）＝（Ｖｐｘ、Ｖｐｙ、Ｖｐｚ）」とを代入することで表される。つまり、式（２０）の定数「ｋ」は、「Ｖｐｚ＞０」の場合には、式（１９）より導かれる下記の式（２１）で表され、「Ｖｐｚ≦０」の場合には、式（１８）より導かれる下記の式（２２）で表される。式（２２）の定数「ａ」は、式（１３）より導かれる下記の式（２３）で表される。式（２２）の定数「ｂ」は、式（１４）より導かれる下記の式（２４）で表される。式（２２）の定数「ｃ」は、式（１５）より導かれる下記の式（２５）で表される。【００６０】
【数２０】
0005454674.tif 000021
【００６１】
【数２１】
0005454674.tif 000022
【００６２】
【数２２】
0005454674.tif 000023
【００６３】
【数２３】
0005454674.tif 000024
【００６４】
【数２４】
0005454674.tif 000025
【００６５】
【数２５】
0005454674.tif 000026
【００６６】
次に、立体スクリーンとカメラ画像との関係について説明する。図１３は、立体スクリーンとカメラ画像との関係を示す図である。図１３は、立体スクリーン４０と車両１０とを側面方向から見た状態を示す。図１３では、式（２０）により求められる車両座標系における位置「Ｃ＝（Ｃｘ、Ｃｙ、Ｃｚ）」を、カメラ座標系における位置「Ｃ＊＝（Ｃ＊ｘ、Ｃ＊ｙ、Ｃ＊ｚ）」に変換する。位置「Ｃ＊」は、位置「Ｃ」をカメラの位置パラメータ（ｘｗ、ｙｗ、ｚｗ）の分だけ平行移動させ、位置「Ｃ」をカメラの角度パラメータ（θ、ψ、φ）の分だけ回転させた位置に相当する。すなわち、位置「Ｃ＊」は、下記の式（２６）で表される。なお、式（２６）の「ｍ１１」〜「ｍ３３」は、下記の式（２７）〜（３５）で表される。【００６７】
【数２６】
0005454674.tif 000027
【００６８】
【数２７】
0005454674.tif 000028
【００６９】
【数２８】
0005454674.tif 000029
【００７０】
【数２９】
0005454674.tif 000030
【００７１】
【数３０】
0005454674.tif 000031
【００７２】
【数３１】
0005454674.tif 000032
【００７３】
【数３２】
0005454674.tif 000033
【００７４】
【数３３】
0005454674.tif 000034
【００７５】
【数３４】
0005454674.tif 000035
【００７６】
【数３５】
0005454674.tif 000036
【００７７】
続いて、式（２６）により求められる位置「Ｃ＊」から、カメラ座標系における入射光ベクトル「Ｖｉ」を算出する。入射光ベクトル「Ｖｉ」は、関数「Ｕｎｉｔ（  ）」を用いて、下記の式（３６）で表される。なお、関数「Ｕｎｉｔ（  ）」は、任意のベクトルを単位ベクトルに変換する関数である。また、入射光ベクトル「Ｖｉ」は、位置「Ｃ＊」のベクトルとは逆向きであるので、符号を変えて表される。【００７８】
【数３６】
0005454674.tif 000037
【００７９】
式（３６）により求められる入射光ベクトル「Ｖｉ」は、上記の式（１）を用いることで、カメラ画像座標系における位置「Ｐ」に変換される。すなわち、合成テーブル生成装置１００は、上述の式（１）〜（３６）を用いることで、複数のカメラ画像７０から生成されるパノラマ画像８０の画素位置「Ｑ」と、カメラ画像７０の画素位置「Ｐ」との対応関係を算出する。【００８０】
［実施例２の構成］
次に、車両周辺監視装置２００および合成テーブル生成装置１００の構成について説明する。図１４は、実施例２に係る車両周辺監視装置および合成テーブル生成装置の構成を示すブロック図である。図１４に示すように、実施例２に係る合成テーブル生成装置１００は、パラメータ記憶部１１０と、投影部１２０と、合成テーブル生成部１３０とを有する。また、実施例２に係る車両周辺監視装置２００は、フレームバッファ２１０と、パノラマ画像生成部２２０と、画像表示部２３０とを有する。また、合成テーブル生成装置１００および車両周辺監視装置２００は、車両１０に搭載される。また、車両周辺監視装置２００は、カメラ２０〜２３と合成テーブル生成装置１００とにそれぞれ接続される。なお、実施例２では、合成テーブル生成装置１００および車両周辺監視装置２００が車両１０に搭載される場合を説明するが、本実施例はこれに限定されるものではない。例えば、合成テーブル生成装置１００を車両１０の外部に設置して、合成テーブル生成装置１００で生成される合成テーブルを車両周辺監視装置２００に送るようにしても良い。【００８１】
パラメータ記憶部１１０は、カメラ２０〜２３のパラメータ１１０ａを記憶する。例えば、パラメータ１１０ａは、位置パラメータ（ｘｗ、ｙｗ、ｚｗ）および角度パラメータ（θ、ψ、φ）を含む。また、例えば、パラメータ１１０ａは、カメラ２０〜２３を車両１０に設置した者によって入力される。また、例えば、パラメータ１１０ａは、車両１０に設置されたカメラ２０〜２３で撮影されたカメラ画像７０を用いて補正される。【００８２】
投影部１２０は、共通の被写領域を有する複数のカメラでそれぞれ撮影されるカメラ画像に含まれる画素の位置情報を次のように投影する。すなわち、投影部１２０は、各カメラ画像内の水平線より下にある画素の位置情報は、無限遠半球の底面に投影し、各カメラ画像内の水平線より上にある画素の位置情報は、無限遠半球の半球面に投影する。例えば、投影部１２０は、カメラ２０〜２３のパラメータと上述の式（１）〜（３６）とを用いることで、複数のカメラ画像７０から生成されるパノラマ画像８０の画素位置「Ｑ」に対応するカメラ画像７０の画素位置「Ｐ」を算出する。そして、投影部１２０は、算出した画素位置「Ｐ」がカメラ画像内の座標である場合に、画素位置「Ｐ」を画素位置「Ｑ」に対応する画素位置として抽出する。【００８３】
例えば、投影部１２０は、上述の式（４）を用いて、パノラマ画像８０の画素位置「Ｑ＝（ｑｘ、ｑｙ）」に対応する入射光ベクトル「Ｖｐ（Ｑ）」を算出する。なお、式（４）の角度「α」および「β」は、式（５）〜（６）で算出される。【００８４】
続いて、投影部１２０は、算出した入射光ベクトル「Ｖｐ（Ｑ）」および位置「Ｓ＝（０、０、ｓｚ）」を上述の式（２０）に代入し、車両座標系における位置「Ｃ＝（Ｃｘ、Ｃｙ、Ｃｚ）」を算出する。なお、式（２０）の定数「ｋ」は、「Ｖｐｚ＞０」の場合には、式（２１）で算出され、「Ｖｐｚ≦０」の場合には、式（２２）で算出される。また、式（２２）の定数「ａ」〜「ｃ」は、式（２３）〜（２５）で算出される。また、「ｓｚ」には、例えば、運転者の目線の高さとして「１．５ｍ」を用いる。また、半径「Ｒ」には、例えば、カメラ間の距離に比べて十分に大きい値として「１０ｋｍ」を用いる。「ｓｚ」および「Ｒ」については、これらの値に限るものではなく、合成テーブル生成装置１００を利用する者が任意の値に設定して良い。【００８５】
ここで、半径「Ｒ」を無限大ではなく「１０ｋｍ」に設定した理由は、この設定によって違和感の無いパノラマ画像を生成できるからである。例えば、半径「Ｒ」を「１０ｋｍ」に設定すると、カメラ間の距離が「２ｍ」である場合には、投影の中心「Ｓ」から「１１４ｍ」以上離れた撮影対象については、視差の影響が１度以内に収まる。また、同様に、投影の中心「Ｓ」から「５７ｍ」以上離れた撮影対象については、視差の影響が２度以内に収まる。また、同様に、投影の中心「Ｓ」から「２２ｍ」以上離れた撮影対象については、視差の影響が５度以内に収まる。【００８６】
続いて、投影部１２０は、算出した位置「Ｃ＝（Ｃｘ、Ｃｙ、Ｃｚ）」およびカメラ２０〜２３のパラメータを上述の式（２６）に代入し、車両座標系における位置「Ｃ」をカメラ座標系における位置「Ｃ＊＝（Ｃ＊ｘ、Ｃ＊ｙ、Ｃ＊ｚ）」に変換する。なお、式（２６）の「ｍ１１」〜「ｍ３３」は、式（２７）〜（３５）で算出される。【００８７】
続いて、投影部１２０は、変換した位置「Ｃ＊＝（Ｃ＊ｘ、Ｃ＊ｙ、Ｃ＊ｚ）」を上述の式（３６）に代入し、入射光ベクトル「Ｖｉ」を算出する。投影部１２０は、算出した入射光ベクトル「Ｖｉ」を上述の式（１）に代入し、画素位置「Ｐ＝（ｐｘ、ｐｙ）」を算出する。【００８８】
続いて、投影部１２０は、算出した画素位置「Ｐ」がカメラ画像７０の座標に含まれるか否かを判定する。例えば、「４００×４００ピクセル」のカメラ画像７０を用いる場合には、投影部１２０は、算出した画素位置「Ｐ＝（ｐｘ、ｐｙ）」が座標「（−２００〜＋２００、−２００〜＋２００）」に含まれるか否かを判定する。投影部１２０は、算出した画素位置「Ｐ」がカメラ画像７０の座標に含まれると判定すると、画素位置「Ｐ」の有効フラグをオンに設定する。ここで、有効フラグは、パノラマ画像８０の画素位置「Ｑ」に対応する画素位置「Ｐ」が、カメラ２０〜２３で撮影されるカメラ画像７０の座標に含まれるか否かを示すフラグである。そして、投影部１２０は、有効フラグをオンに設定された画素位置「Ｐ」を画素位置「Ｑ」に対応する画素位置として抽出する。【００８９】
合成テーブル生成部１３０は、投影部１２０によって無限遠半球に投影された結果に基づいて、パノラマ画像８０に含まれる各画素の位置情報とカメラ画像７０に含まれる各画素の位置情報との対応関係を示す合成テーブル１３０ａを生成する。例えば、合成テーブル生成部１３０は、パノラマ画像８０の画素位置「Ｑ」と、有効フラグがオンに設定された画素位置「Ｐ」とを対応付けて、合成テーブル１３０ａを生成する。そして、合成テーブル生成部１３０は、生成した合成テーブル１３０ａをパノラマ画像生成部２２０に送る。【００９０】
合成テーブル生成部１３０により生成される合成テーブル１３０ａは、パノラマ画像８０の画素位置「Ｑ」とカメラ画像７０の画素位置「Ｐ」との対応関係を記憶する。図１５は、実施例２に係る合成テーブルにより記憶されたデータの一例を示す図である。図１５に示すように、合成テーブル１３０ａは、「ｑｘ」と「ｑｙ」との組み合わせに対応付けて、カメラ画像７０を撮影するカメラ２０〜２３ごとに「有効フラグ」と「ｐｘ」と「ｐｙ」との組み合わせを記憶する。ここで、「ｑｘ」と「ｑｙ」との組み合わせは、パノラマ画像上の画素位置「Ｑ」を示す。また、「ｐｘ」と「ｐｙ」との組み合わせは、各カメラで撮影したカメラ画像上の画素位置「Ｐ」を示す。また、「有効フラグ」は、画素位置「Ｑ」と画素位置「Ｐ」との対応付けが有効であることを示す。例えば、合成テーブル１３０ａは、ｑｘ「１５６」とｑｙ「６３」との組み合わせに対応付けて、カメラ２０について、有効フラグ「１」とｐｘ「７８」とｐｙ「４５６」との組み合わせを記憶する。つまり、合成テーブル１３０ａは、パノラマ画像８０の画素位置「Ｑ＝（１５６、６３）」に、カメラ２０で撮影されるカメラ画像７０の画素位置「Ｐ＝（７８、４５６）」が対応することを記憶する。【００９１】
また、合成テーブル１３０ａは、ｑｘ「１５６」とｑｙ「６３」との組み合わせに対応付けて、カメラ２１について、有効フラグ「１」とｐｘ「７９」とｐｙ「３１２」との組み合わせを記憶する。つまり、合成テーブル１３０ａは、パノラマ画像８０の画素位置「Ｑ＝（１５６、６３）」に、カメラ２１で撮影されるカメラ画像７０の画素位置「Ｐ＝（７９、３１２）」が対応することを記憶する。また、合成テーブル１３０ａは、ｑｘ「１５６」とｑｙ「６３」との組み合わせに対応付けて、カメラ２２について、有効フラグ「０」とｐｘ「ｎｕｌｌ」とｐｙ「ｎｕｌｌ」との組み合わせを記憶する。つまり、合成テーブル１３０ａは、パノラマ画像８０の画素位置「Ｑ＝（１５６、６３）」に、カメラ２２で撮影されるカメラ画像７０の画素位置が対応しないことを記憶する。また、合成テーブル１３０ａは、ｑｘ「１５６」とｑｙ「６３」との組み合わせに対応付けて、カメラ２３について、有効フラグ「０」とｐｘ「ｎｕｌｌ」とｐｙ「ｎｕｌｌ」との組み合わせを記憶する。つまり、合成テーブル１３０ａは、パノラマ画像８０の画素位置「Ｑ＝（１５６、６３）」に、カメラ２３で撮影されるカメラ画像７０の画素位置が対応しないことを記憶する。なお、有効フラグ「１」は、有効フラグがオンに設定されたことを示し、画素位置「Ｑ」に対応する画素位置「Ｐ」がカメラ画像７０の座標に含まれること示す。また、「ｎｕｌｌ」は、該当箇所にデータを含まないことを示す。つまり、有効フラグ「０」とｐｘ「ｎｕｌｌ」とｐｙ「ｎｕｌｌ」との組み合わせは、画素位置「Ｑ」に対応する画素位置「Ｐ」がカメラ画像７０の座標に含まれないこと示す。また、合成テーブル１３０ａは、パノラマ画像８０の他の画素位置についても同様に、「ｑｘ」と「ｑｙ」との組み合わせに対応付けて、カメラ画像７０を撮影するカメラ２０〜２３ごとに「有効フラグ」と「ｐｘ」と「ｐｙ」との組み合わせを記憶する。【００９２】
図１４の説明に戻る。カメラ２０〜２３は、周辺環境を撮影してカメラ画像７０のデータを生成する。図１６〜１９は、実施例２に係るカメラ画像の一例を示す図である。図１６〜１９は、カメラ２０〜２３で撮影されたカメラ画像の一例をそれぞれ示す。そして、カメラ２０〜２３は、生成したカメラ画像のデータをフレームバッファ２１０に送る。なお、実施例２では、図４および図５で示したように、４台のカメラが車両１０に設置された場合を説明するが、本実施例はこれに限定されるものではなく、共通の被写領域を有する複数のカメラが車両１０に設置されれば良い。例えば、車両１０の後方に、より多くのカメラを設置しても良い。【００９３】
フレームバッファ２１０は、カメラ２０〜２３から受け付けたカメラ画像７０のデータを格納する。フレームバッファ２１０は、カメラ２０〜２３ごとにカメラ画像７０のデータを格納する。【００９４】
パノラマ画像生成部２２０は、複数のカメラ画像７０からパノラマ画像８０を生成する。例えば、パノラマ画像生成部２２０は、フレームバッファ２１０からカメラ画像７０のデータを取得する。パノラマ画像生成部２２０は、合成テーブル生成部１３０から受け付けた合成テーブル１３０ａを参照し、パノラマ画像８０の画素位置「Ｑ」ごとに、有効フラグがオンに設定された画素位置「Ｐ」の画素値をカメラ画像７０のデータから抽出する。画素値とは、例えば、ＲＧＢ（Red、Green、Blue）値である。各々のカメラ画像７０が重なり合う部分の画素位置「Ｑ」については、パノラマ画像生成部２２０は、抽出した画素位置「Ｐ」の画素値をブレンドする。ブレンドとしては、例えば、各画素値の平均値を算出しても、画素位置に基づく加重を付けた平均値を算出しても良い。【００９５】
続いて、パノラマ画像生成部２２０は、ブレンドした画素値を画素位置「Ｑ」に記録することで、パノラマ画像８０を生成する。例えば、「１２００×４００ピクセル」の画像に対応するメモリを有する場合には、パノラマ画像生成部２２０は、画素位置「Ｑ」に該当する画素位置のメモリ上にブレンドした画素値を記録することで、パノラマ画像８０を生成する。そして、パノラマ画像生成部２２０は、生成したパノラマ画像８０を画像表示部２３０に送る。【００９６】
画像表示部２３０は、パノラマ画像生成部２２０から受け付けたパノラマ画像８０を表示する。図２０は、実施例２に係る車両周辺監視装置により表示されるパノラマ画像の一例を示す図である。図２０に示すように、画像表示部２３０は、例えば、水平画角「Ａｏｈ」が−１８０〜＋１８０度、垂直画角「Ａｏｖ」が−３０〜＋３０度のパノラマ画像を表示する。【００９７】
［実施例２による処理手順］
図２１を用いて、合成テーブル生成装置１００の処理手順について説明する。図２１は、実施例２に係る合成テーブル生成装置の処理手順を示すフローチャートである。合成テーブル生成装置１００の処理は、車両周辺監視装置２００の処理に先立って行われる。例えば、合成テーブル生成装置１００の処理は、合成テーブル生成装置１００がカメラのパラメータを受け付けた時点で開始される。また、例えば、合成テーブル生成装置１００の処理は、合成テーブル生成装置１００を利用する者が指定した時点で開始される。【００９８】
図２１に示すように、投影部１２０は、座標「ｑｙ」に「Ｈｐ／２」を設定する（ステップＳ１０１）。座標「ｑｙ＝Ｈｐ／２」は、図８に示したパノラマ画像座標系の上端の座標を示す。投影部１２０は、座標「ｑｘ」に「−Ｗｐ／２」を設定する（ステップＳ１０２）。座標「ｑｘ＝−Ｗｐ／２」は、図８に示したパノラマ画像座標系の左端の座標を示す。【００９９】
投影部１２０は、式（４）を用いて、設定された画素位置「Ｑ＝（ｑｘ、ｑｙ）」に対応する入射光ベクトル「Ｖｐ（Ｑ）」を算出する（ステップＳ１０３）。続いて、投影部１２０は、式（２０）を用いて、算出した入射光ベクトル「Ｖｐ（Ｑ）」から位置「Ｃ＝（Ｃｘ、Ｃｙ、Ｃｚ）」を算出する（ステップＳ１０４）。そして、投影部１２０は、カメラｎ（ｎは２０、２１、２２または２３）のパラメータを用いた画素位置「Ｐ＝（ｐｘ、ｐｙ）」の抽出処理を行う（ステップＳ１０５〜ステップＳ１０８）。【０１００】
ここで、図２２を用いて、カメラｎ（ｎは２０、２１、２２または２３）のパラメータを用いた画素位置「Ｐ＝（ｐｘ、ｐｙ）」の抽出処理について説明する。図２２は、実施例２に係る合成テーブル生成装置の処理手順を示すフローチャートである。図２２に示すように、投影部１２０は、式（２６）およびカメラｎ（ｎは２０、２１、２２または２３）のパラメータを用いて、車両座標系における位置「Ｃ」をカメラ座標系における位置「Ｃ＊＝（Ｃ＊ｘ、Ｃ＊ｙ、Ｃ＊ｚ）」に変換する（ステップＳ２０１）。【０１０１】
続いて、投影部１２０は、式（３６）を用いて、カメラ座標系に変換した位置「Ｃ＊＝（Ｃ＊ｘ、Ｃ＊ｙ、Ｃ＊ｚ）」から入射光ベクトル「Ｖｉ」を算出する（ステップＳ２０２）。そして、投影部１２０は、式（１）を用いて、算出した入射光ベクトル「Ｖｉ」から画素位置「Ｐ＝（ｐｘ、ｐｙ）」を算出する（ステップＳ２０３）。【０１０２】
続いて、投影部１２０は、画素位置「Ｐ＝（ｐｘ、ｐｙ）」がカメラ画像７０の座標に含まれるか否かを判定する（ステップＳ２０４）。画素位置「Ｐ」がカメラ画像７０の座標に含まれると判定した場合には（ステップＳ２０４肯定）、投影部１２０は、画素位置「Ｐ」の有効フラグをオンに設定する（ステップＳ２０５）。そして、投影部１２０は、有効フラグをオンに設定された画素位置「Ｐ」を画素位置「Ｑ」に対応する画素位置として抽出する（ステップＳ２０６）。一方、画素位置「Ｐ」がカメラ画像７０の座標に含まれないと判定した場合には（ステップＳ２０４否定）、投影部１２０は、画素位置「Ｐ」の有効フラグをオフに設定する（ステップＳ２０７）。【０１０３】
図２１の説明に戻る。合成テーブル生成部１３０は、合成テーブル１３０ａを生成する（ステップＳ１０９）。例えば、合成テーブル生成部１３０は、パノラマ画像８０の画素位置「Ｑ」に対応付けて、有効フラグと画素位置「Ｐ」とを合成テーブル１３０ａに記録する。【０１０４】
続いて、合成テーブル生成部１３０は、座標「ｑｘ」が「Ｗｐ／２」より小さい値であるか否かを判定する（ステップＳ１１０）。座標「ｑｘ」が「Ｗｐ／２」より小さい値であると判定した場合には（ステップＳ１１０肯定）、合成テーブル生成部１３０は、座標「ｑｘ」に「ｑｘ＋１」を設定し、ステップＳ１０３の処理に戻る（ステップＳ１１１）。つまり、合成テーブル生成部１３０は、パノラマ画像座標系における座標「ｑｘ」の１画素分右側の座標を次の処理対象として設定し、ステップＳ１０３からの処理を実行する。【０１０５】
一方、座標「ｑｘ」が「Ｗｐ／２」より小さい値でないと判定した場合には（ステップＳ１１０否定）、合成テーブル生成部１３０は、座標「ｑｙ」が「−Ｈｐ／２」より大きい値であるか否かを判定する（ステップＳ１１２）。座標「ｑｙ」が「−Ｈｐ／２」より大きい値であると判定した場合には（ステップＳ１１２肯定）、合成テーブル生成部１３０は、座標「ｑｙ」に「ｑｙ−１」を設定し、ステップＳ１０２の処理に戻る（ステップＳ１１３）。つまり、合成テーブル生成部１３０は、パノラマ画像座標系における座標「ｑｙ」の１画素分下側の座標を次の処理対象として設定し、ステップＳ１０２からの処理を実行する。【０１０６】
一方、座標「ｑｙ」が「−Ｈｐ／２」より大きい値でないと判定した場合には（ステップＳ１１１否定）、合成テーブル生成部１３０は、処理を終了する。なお、上記のステップＳ１０２〜ステップＳ１１３の処理は、パノラマ画像８０の全ての画素位置「Ｑ」に対して処理が行われるまで繰り返し行われる。【０１０７】
なお、上記の処理手順は、上記の順番に限定されるものではなく、処理内容を矛盾させない範囲で適宜変更されても良い。例えば、カメラｎ（ｎは２０、２１、２２または２３）のパラメータを用いた画素位置「Ｐ」の抽出処理であるステップＳ１０５〜ステップＳ１０８の処理は、任意の順番で実行されても良い。また、例えば、ステップＳ１０５〜ステップＳ１０８の処理は、並列で実行されても良い。【０１０８】
また、上記の処理手順は、パノラマ画像座標系の左上の座標から順に処理を実行されると説明したが、本実施例はこれに限定されるものではない。例えば、上記の処理手順は、パノラマ画像座標系のいずれの座標から実行されても良い。また、例えば、上記の処理手順は、パノラマ画像座標系を４つの領域に分けた上で、４つの領域で同時に実行されても良い。【０１０９】
次に、図２３を用いて、車両周辺監視装置２００の処理手順について説明する。図２３は、実施例２に係る車両周辺監視装置の処理手順を示すフローチャートである。車両周辺監視装置２００の処理は、合成テーブル１３０ａがあれば、任意のタイミングで開始されて良い。例えば、車両周辺監視装置２００の処理は、車両１０およびカメラの起動に伴って開始される。また、例えば、車両周辺監視装置２００を利用する者が指定した時点で開始される。【０１１０】
図２３に示すように、パノラマ画像生成部２２０は、座標「ｑｙ」に「Ｈｐ／２」を設定する（ステップＳ３０１）。パノラマ画像生成部２２０は、座標「ｑｘ」に「−Ｗｐ／２」を設定する（ステップＳ３０２）。【０１１１】
パノラマ画像生成部２２０は、設定された画素位置「Ｑ＝（ｑｘ、ｑｘ）」に対応する画素位置「Ｐ」の画素値をカメラ画像７０のデータから抽出する（ステップＳ３０３）。例えば、パノラマ画像生成部２２０は、合成テーブル１３０ａを参照し、有効フラグがオンに設定された画素位置「Ｐ」の画素値をカメラ画像７０のデータから抽出する。続いて、パノラマ画像生成部２２０は、抽出した画素値を画素位置「Ｑ」に記録する（ステップＳ３０４）。このとき、各々のカメラ画像７０が重なり合う部分の画素位置「Ｑ」については、パノラマ画像生成部２２０は、抽出した画素位置「Ｐ」の画素値をブレンドした上で、画素位置「Ｑ」に記録する。【０１１２】
続いて、パノラマ画像生成部２２０は、座標「ｑｘ」が「Ｗｐ／２」より小さい値であるか否かを判定する（ステップＳ３０５）。座標「ｑｘ」が「Ｗｐ／２」より小さい値であると判定した場合には（ステップＳ３０５肯定）、パノラマ画像生成部２２０は、座標「ｑｘ」に「ｑｘ＋１」を設定し（ステップＳ３０６）、ステップＳ３０３の処理に戻る。つまり、パノラマ画像生成部２２０は、パノラマ画像座標系における座標「ｑｘ」の１画素分右側の座標を次の処理対象として設定し、ステップＳ１０３からの処理を実行する。【０１１３】
一方、座標「ｑｘ」が「Ｗｐ／２」より小さい値でないと判定した場合には（ステップＳ３０５否定）、パノラマ画像生成部２２０は、座標「ｑｙ」が「−Ｈｐ／２」より大きい値であるか否かを判定する（ステップＳ３０７）。座標「ｑｙ」が「−Ｈｐ／２」より大きい値であると判定した場合には（ステップＳ３０７肯定）、パノラマ画像生成部２２０は、座標「ｑｙ」に「ｑｙ−１」を設定し（ステップＳ３０８）、ステップＳ３０２の処理に戻る。つまり、パノラマ画像生成部２２０は、パノラマ画像座標系における座標「ｑｙ」の１画素分下側の座標を次の処理対象として設定し、ステップＳ１０２からの処理を実行する。【０１１４】
一方、座標「ｑｙ」が「−Ｈｐ／２」より大きい値でないと判定した場合には（ステップＳ３０７否定）、パノラマ画像生成部２２０は、処理を終了する。なお、上記のステップＳ３０２〜ステップＳ３０８の処理は、パノラマ画像８０の全ての画素位置「Ｑ」に対して処理が行われるまで繰り返し行われる。パノラマ画像生成部２２０は、上記の処理により１枚のパノラマ画像８０を生成し、生成したパノラマ画像８０を画像表示部２３０に送る。そして、画像表示部２３０は、パノラマ画像生成部２２０からパノラマ画像８０を受け付けるごとに、パノラマ画像８０を更新して表示する。【０１１５】
［実施例２による効果］
上述してきたように、合成テーブル生成装置１００は、カメラ２０〜２３のパラメータを用いて、パノラマ画像８０の画素位置「Ｑ」とカメラ画像７０の画素位置「Ｐ」との対応関係を示す合成テーブル１３０ａを生成する。車両周辺監視装置２００は、合成テーブル生成装置１００により生成された合成テーブル１３０ａを参照し、パノラマ画像の画素位置「Ｑ」に対応する画素位置「Ｐ」の画素値を抽出することで、パノラマ画像を生成する。このようなことから、実施例２によれば、利用者にとって違和感の少ないパノラマ画像を生成可能である。【０１１６】
また、合成テーブル生成装置１００は、「Ｖｐｚ＞０」の場合には、位置「Ｃ＝（Ｃｘ、Ｃｙ、Ｃｚ）」を立体スクリーン４０の半球面上の点として算出し、画素位置「Ｑ」と画素位置「Ｐ」とを対応付ける。つまり、合成テーブル生成装置１００は、中心「Ｓ」を通る水平線より上にある画素位置については、立体スクリーン４０の半球面に投影する。水平線より上にある画像には遠方の撮影対象が含まれる場合が多いので、実施例２によれば、カメラ画像のうち水平線より上にある画像について、確率的に視差の影響を軽減したパノラマ画像を生成可能である。【０１１７】
また、合成テーブル生成装置１００は、「Ｖｐｚ≦０」の場合には、位置「Ｃ＝（Ｃｘ、Ｃｙ、Ｃｚ）」を立体スクリーン４０の底面上の点として算出し、画素位置「Ｑ」と画素位置「Ｐ」とを対応付ける。つまり、合成テーブル生成装置１００は、中心「Ｓ」を通る水平線より下にある画素位置については、立体スクリーン４０の底面に投影する。水平線より下にある画像には路面上に存在する物体が含まれる場合が多いので、実施例２によれば、カメラ画像のうち水平線より下にある画像について、確率的に視差の影響を軽減したパノラマ画像を生成可能である。【０１１８】
また、合成テーブル生成装置１００は、パノラマ画像８０の画素位置「Ｑ」とカメラ画像７０の画素位置「Ｐ」との対応関係を示す合成テーブル１３０ａを、パノラマ画像の生成に先立って生成する。そして、車両周辺監視装置２００は、合成テーブル生成装置１００により生成された合成テーブル１３０ａを用いて、パノラマ画像を生成する。このため、実施例２によれば、パノラマ画像を少ない処理で生成可能である。【０１１９】
また、車両周辺監視装置２００は、合成テーブル生成装置１００により生成された合成テーブル１３０ａを用いることで、少ない処理でパノラマ画像を生成する。このため、実施例２によれば、カメラ２０〜２３で撮影された動画から、パノラマ画像を動画で生成可能である。【０１２０】
なお、カメラ２０〜２３は、ＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor  Image  Sensor）カメラやＣＣＤ（Charge  Coupled  Device  Image  Sensor）カメラなどが該当する。カメラ２０〜２３が生成するカメラ画像のデータは、静止画であっても、動画であっても良い。【０１２１】
また、パラメータ記憶部１１０およびフレームバッファ２１０は、例えば、ＲＡＭ（Random  Access  Memory）やＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子、ハードディスクや光ディスクなどが該当する。【０１２２】
また、投影部１２０、合成テーブル生成部１３０、パノラマ画像生成部２２０は、集積回路や電子回路により実現される。集積回路としては、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）などを適用できる。また、電子回路としては、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）などを適用できる。なお、画像表示部２３０は、例えば、モニタや液晶ディスプレイなどが該当する。
【実施例３】
【０１２３】
実施例３に係る車両周辺監視装置の一例について説明する。実施例３では、車両周辺監視装置が合成テーブルを用いることなくパノラマ画像を生成する場合を説明する。なお、車両周辺監視装置は、実施例１の画像生成装置の一例である。実施例３に係る車両周辺監視装置が用いる数式は、実施例２に係る数式と同じであるので、説明は省略する。【０１２４】
［実施例３の構成］
実施例３に係る車両周辺監視装置の構成について説明する。図２４は、実施例３に係る車両周辺監視装置の構成を示すブロック図である。図２４に示すように、実施例３に係る車両周辺監視装置３００は、パラメータ記憶部３１０と、フレームバッファ３２０と、投影部３３０と、パノラマ画像生成部３４０と、画像表示部３５０とを有する。また、車両周辺監視装置３００は、車両１０に搭載される。また、車両周辺監視装置３００は、カメラ３０１〜３０４に接続される。なお、図２４に示すカメラ３０１〜３０４、パラメータ記憶部３１０、フレームバッファ３２０および画像表示部３５０は、図１４に示したカメラ２０〜２３、パラメータ記憶部１１０、フレームバッファ２１０および画像表示部２３０にそれぞれ対応し、同様の処理を行うので説明は省略する。【０１２５】
投影部３３０は、フレームバッファ３２０によって受け付けた各カメラ画像のうち、各カメラ画像内の水平線より下にある画像は、無限遠半球の底面に投影し、各カメラ画像内の水平線より上にある画像は、無限遠半球の半球面に投影する。例えば、投影部３３０は、カメラ３０１〜３０４のパラメータと上述の式（１）〜（３６）とを用いることで、複数のカメラ画像７０から生成されるパノラマ画像８０の画素位置「Ｑ」に対応するカメラ画像７０の画素位置「Ｐ」を算出する。そして、投影部３３０は、算出した画素位置「Ｐ」がカメラ画像内の座標である場合に、画素位置「Ｐ」の画素値を画素位置「Ｑ」に対応する画素値として抽出する。【０１２６】
例えば、投影部３３０は、上述の式（４）を用いて、パノラマ画像８０の画素位置「Ｑ＝（ｑｘ、ｑｙ）」に対応する入射光ベクトル「Ｖｐ（Ｑ）」を算出する。なお、式（４）の角度「α」および「β」は、式（５）〜（６）で算出される。【０１２７】
続いて、投影部３３０は、算出した入射光ベクトル「Ｖｐ（Ｑ）」および位置「Ｓ＝（０、０、ｓｚ）」を上述の式（２０）に代入し、車両座標系における位置「Ｃ＝（Ｃｘ、Ｃｙ、Ｃｚ）」を算出する。なお、式（２０）の定数「ｋ」は、「Ｖｐｚ＞０」の場合には、式（２１）で算出され、「Ｖｐｚ≦０」の場合には、式（２２）で算出される。また、式（２２）の定数「ａ」〜「ｃ」は、式（２３）〜（２５）で算出される。また、「ｓｚ」には、例えば、運転者の目線の高さとして「１．５ｍ」を用いる。また、半径「Ｒ」には、例えば、カメラ間の距離に比べて十分に大きい値として「１０ｋｍ」を用いる。「ｓｚ」および「Ｒ」については、これらの値に限るものではなく、合成テーブル生成装置１００を利用する者が任意の値に設定して良い。【０１２８】
続いて、投影部３３０は、算出した位置「Ｃ＝（Ｃｘ、Ｃｙ、Ｃｚ）」およびカメラ３０１〜３０４のパラメータを上述の式（２６）に代入し、車両座標系における位置「Ｃ」をカメラ座標系における位置「Ｃ＊＝（Ｃ＊ｘ、Ｃ＊ｙ、Ｃ＊ｚ）」に変換する。なお、式（２６）の「ｍ１１」〜「ｍ３３」は、式（２７）〜（３５）で算出される。【０１２９】
続いて、投影部３３０は、変換した位置「Ｃ＊＝（Ｃ＊ｘ、Ｃ＊ｙ、Ｃ＊ｚ）」を上述の式（３６）に代入し、入射光ベクトル「Ｖｉ」を算出する。投影部１２０は、算出した入射光ベクトル「Ｖｉ」を上述の式（１）に代入し、画素位置「Ｐ＝（ｐｘ、ｐｙ）」を算出する。【０１３０】
続いて、投影部３３０は、算出した画素位置「Ｐ」がカメラ画像７０の座標に含まれるか否かを判定する。投影部３３０は、算出した画素位置「Ｐ」がカメラ画像７０の座標に含まれると判定すると、画素位置「Ｐ」の画素値を抽出する。【０１３１】
パノラマ画像生成部３４０は、投影部３３０によって無限遠半球に投影された画像に基づいて、パノラマ画像８０を生成する。例えば、パノラマ画像生成部３４０は、投影部３３０により抽出された画素位置「Ｐ」の画素値を、対応する画素位置「Ｑ」に記録する。ここで、各々のカメラ画像７０が重なり合う部分の画素位置「Ｑ」については、パノラマ画像生成部３４０は、抽出した画素位置「Ｐ」の画素値をブレンドする。パノラマ画像生成部３４０は、抽出した画素値を画素位置「Ｑ」に記録することで、パノラマ画像８０を生成する。例えば、「１２００×４００ピクセル」の画像に対応するメモリを有する場合には、パノラマ画像生成部２２０は、画素位置「Ｑ」に該当する画素位置のメモリ上にブレンドした画素値を記録することで、パノラマ画像８０を生成する。そして、パノラマ画像生成部３４０は、生成したパノラマ画像８０を画像表示部３５０に送る。【０１３２】
［実施例３による処理手順］
図２５を用いて、車両周辺監視装置３００の処理手順について説明する。図２５は、実施例３に係る車両周辺監視装置の処理手順を示すフローチャートである。車両周辺監視装置３００の処理は、任意のタイミングで開始されて良い。例えば、車両周辺監視装置２００の処理は、車両１０およびカメラの起動に伴って開始される。また、例えば、車両周辺監視装置２００を利用する者が指定した時点で開始される。【０１３３】
図２５に示すように、投影部３３０は、座標「ｑｙ」に「Ｈｐ／２」を設定する（ステップＳ４０１）。投影部３３０は、座標「ｑｘ」に「−Ｗｐ／２」を設定する（ステップＳ４０２）。【０１３４】
投影部３３０は、式（４）を用いて、設定された画素位置「Ｑ＝（ｑｘ、ｑｙ）」に対応する入射光ベクトル「Ｖｐ（Ｑ）」を算出する（ステップＳ４０３）。続いて、投影部３３０は、式（２０）を用いて、算出した入射光ベクトル「Ｖｐ（Ｑ）」から位置「Ｃ＝（Ｃｘ、Ｃｙ、Ｃｚ）」を算出する（ステップＳ４０４）。そして、投影部３３０は、カメラｎ（ｎは３０１、３０２、３０３または３０４）で撮影された各カメラ画像からの画素位置「Ｐ＝（ｐｘ、ｐｙ）」の画素値の抽出処理を行う（ステップＳ４０５〜ステップＳ４０８）。【０１３５】
ここで、図２６を用いて、カメラｎ（ｎは３０１、３０２、３０３または３０４）で撮影された各カメラ画像からの画素位置「Ｐ＝（ｐｘ、ｐｙ）」の画素値の抽出処理について説明する。図２６は、実施例３に係る車両周辺監視装置の処理手順を示すフローチャートである。投影部３３０は、式（２６）およびカメラｎ（ｎは３０１、３０２、３０３または３０４）のパラメータを用いて、車両座標系における位置「Ｃ」をカメラ座標系における位置「Ｃ＊＝（Ｃ＊ｘ、Ｃ＊ｙ、Ｃ＊ｚ）」に変換する（ステップＳ５０１）。【０１３６】
続いて、投影部３３０は、式（３６）を用いて、カメラ座標系に変換した位置「Ｃ＊＝（Ｃ＊ｘ、Ｃ＊ｙ、Ｃ＊ｚ）」から入射光ベクトル「Ｖｉ」を算出する（ステップＳ５０２）。そして、投影部３３０は、式（１）を用いて、算出した入射光ベクトル「Ｖｉ」から画素位置「Ｐ＝（ｐｘ、ｐｙ）」を算出する（ステップＳ５０３）。【０１３７】
続いて、投影部３３０は、画素位置「Ｐ＝（ｐｘ、ｐｙ）」がカメラ画像７０の座標に含まれるか否かを判定する（ステップＳ５０４）。画素位置「Ｐ」がカメラ画像７０の座標に含まれると判定した場合には（ステップＳ５０４肯定）、投影部３３０は、画素位置「Ｐ」の画素値を画素位置「Ｑ」に対応する画素値として抽出する（ステップＳ５０５）。一方、画素位置「Ｐ」がカメラ画像７０の座標に含まれないと判定した場合には（ステップＳ５０４否定）、投影部３３０は、処理を終了する。【０１３８】
図２５の説明に戻る。パノラマ画像生成部３４０は、抽出した画素値を画素位置「Ｑ」に記録する（ステップＳ４０９）。このとき、各々のカメラ画像７０が重なり合う部分の画素位置「Ｑ」については、パノラマ画像生成部３４０は、抽出した画素位置「Ｐ」の画素値をブレンドした上で、画素位置「Ｑ」に記録する。【０１３９】
続いて、パノラマ画像生成部３４０は、座標「ｑｘ」が「Ｗｐ／２」より小さい値であるか否かを判定する（ステップＳ４１０）。座標「ｑｘ」が「Ｗｐ／２」より小さい値であると判定した場合には（ステップＳ４１０肯定）、パノラマ画像生成部３４０は、座標「ｑｘ」に「ｑｘ＋１」を設定し（ステップＳ４１１）、ステップＳ４０３の処理に戻る。つまり、パノラマ画像生成部３４０は、パノラマ画像座標系における座標「ｑｘ」の１画素分右側の座標を次の処理対象として設定し、ステップＳ４０３からの処理を実行する。【０１４０】
一方、座標「ｑｘ」が「Ｗｐ／２」より小さい値でないと判定した場合には（ステップＳ４１０否定）、パノラマ画像生成部３４０は、座標「ｑｙ」が「−Ｈｐ／２」より大きい値であるか否かを判定する（ステップＳ４１２）。座標「ｑｙ」が「−Ｈｐ／２」より大きい値であると判定した場合には（ステップＳ４１２肯定）、パノラマ画像生成部３４０は、座標「ｑｙ」に「ｑｙ−１」を設定し（ステップＳ４１３）、ステップＳ４０２の処理に戻る。つまり、パノラマ画像生成部３４０は、パノラマ画像座標系における座標「ｑｙ」の１画素分下側の座標を次の処理対象として設定し、ステップＳ４０２からの処理を実行する。【０１４１】
一方、座標「ｑｙ」が「−Ｈｐ／２」より大きい値でないと判定した場合には（ステップＳ４１２否定）、パノラマ画像生成部３４０は、処理を終了する。なお、上記のステップＳ４０２〜ステップＳ４１３の処理は、パノラマ画像８０の全ての画素位置「Ｑ」に対して処理が行われるまで繰り返し行われる。パノラマ画像生成部３４０は、上記の処理により１枚のパノラマ画像８０を生成し、生成したパノラマ画像８０を画像表示部３５０に送る。そして、画像表示部３５０は、パノラマ画像生成部３４０からパノラマ画像８０を受け付けるごとに、パノラマ画像８０を更新して表示する。【０１４２】
なお、上記の処理手順は、上記の順番に限定されるものではなく、処理内容を矛盾させない範囲で適宜変更されても良い。例えば、カメラｎ（ｎは２０、２１、２２または２３）で撮影された各カメラ画像からの画素位置「Ｐ」の画素値の抽出処理であるステップＳ４０５〜ステップＳ４０８の処理は、任意の順番で実行されても良い。また、例えば、ステップＳ４０５〜ステップＳ４０８の処理は、並列で実行されても良い。【０１４３】
また、上記の処理手順は、パノラマ画像座標系の左上の座標から順に処理を実行されると説明したが、本実施例はこれに限定されるものではない。例えば、上記の処理手順は、パノラマ画像座標系のいずれの座標から実行されても良い。また、例えば、上記の処理手順は、パノラマ画像座標系を４つの領域に分けた上で、４つの領域で同時に実行されても良い。【０１４４】
［実施例３による効果］
上述してきたように、車両周辺監視装置３００は、カメラ３０１〜３０４のパラメータを用いて、パノラマ画像８０の画素位置「Ｑ」に対応する画素位置「Ｐ」の画素値を抽出する。そして、車両周辺監視装置３００は、抽出した画素位置「Ｐ」の画素値からパノラマ画像を生成する。このようなことから、実施例３によれば、合成テーブルを生成することなく、利用者にとって違和感の少ないパノラマ画像を生成可能である。
【実施例４】
【０１４５】
さて、これまでに本発明の実施例について説明したが、本発明は上記した実施例以外にも、その他の実施例にて実施されても良い。そこで、以下では、その他の実施例について説明する。【０１４６】
［画像生成装置の適用］
上記した実施例では、画像生成装置が車両に搭載される場合を説明したが、本実施例はこれに限定されるものではない。例えば、画像生成装置は、船舶、監視装置、ロボットなどに搭載しても良い。この結果、本願の開示する画像生成装置は、画像生成装置を搭載した装置において、違和感の少ないパノラマ画像を生成可能である。【０１４７】
［投影部における処理］
上記した実施例では、画像生成装置が車両座標系の原点「Ｏ」の真上に投影の中心「Ｓ」を設置する場合、すなわち中心「Ｓ＝（０、０、ｓｚ）」である場合を説明したが、本実施例はこれに限定されるものではない。例えば、画像生成装置は、中心「Ｓ」を任意の座標「Ｓ＝（Ｓｘ、Ｓｙ、Ｓｚ）」に設置しても良い。このとき、式（２０）の定数「ｋ」は、「Ｖｐｚ＞０」の場合には、式（１９）で表され、「Ｖｐｚ≦０」の場合には、式（１８）で表される。なお、式（１８）の定数「ａ」〜「ｃ」は、式（１３）〜（１５）で表される。この結果、本願の開示する画像生成装置は、中心「Ｓ」を利用者の目線に合わせた違和感の少ないパノラマ画像を生成可能である。【０１４８】
また、上記した実施例では、合成テーブル生成装置１００は、中心「Ｓ」を通る水平線より上にある画素位置を立体スクリーン４０の半球面に投影し、中心「Ｓ」を通る水平線より下にある画素位置を立体スクリーン４０の底面に投影すると説明した（図１２参照）。しかしながら、本実施例はこれに限定されるものではない。例えば、合成テーブル生成装置１００は、「Ｖｐｚ≦Ｎ」の場合には、画素位置を立体スクリーン４０の半球面に投影し、「Ｖｐｚ＞Ｎ」の場合には、画素位置を立体スクリーン４０の底面に投影しても良い（Ｎは任意の数、式（２０）〜（２２）参照）。すなわち、合成テーブル生成装置１００を利用する者は、「Ｎ」に任意の数を設定することで、水平線を任意の位置に設定しても良い。この結果、本願の開示する画像生成装置は、利用者により設定された水平線を用いてパノラマ画像を生成可能である。【０１４９】
また、上記した実施例では、合成テーブル生成装置１００は、パノラマ画像の全ての画素位置「Ｑ」についてカメラ画像の画素位置「Ｐ」を対応付けると説明したが、本実施例はこれに限定されるものではない。例えば、合成テーブル生成装置１００は、画素位置「Ｑ」と画素位置「Ｐ」との対応関係を疎に定義した合成テーブル１３０ａを生成し、パノラマ画像を生成する際に未定義の画素位置「Ｑ」を線形補間で求めても良い。この結果、合成テーブル生成装置１００は、データ量を軽減した合成テーブル１３０ａを生成可能である。【０１５０】
［パノラマ画像生成部における処理］
パノラマ画像生成部２２０は、複数のカメラを搭載した車両１０の状況に応じて、所定のカメラで撮影されたカメラ画像がパノラマ画像の中心に位置するように、パノラマ画像を生成するようにしても良い。【０１５１】
図２７を用いて、車両の状況に応じてパノラマ画像を生成する処理の一例を説明する。図２７は、実施例２に係るパノラマ画像の生成処理の一例を説明するための図である。例えば、パノラマ画像生成部２２０は、生成用のメモリと表示用のメモリとを有する。パノラマ画像生成部２２０は、図２７に示すように、生成用のメモリ上に画素値を記録することで、生成用のパノラマ画像８１を生成する。生成用のパノラマ画像８１のうち、領域４００は、前方のカメラ２０で撮影されたカメラ画像の画素値が記録された領域である。また、領域４０１は、後方のカメラ２１で撮影されたカメラ画像の画素値が記録された領域である。また、領域４０２は、左側のカメラ２２で撮影されたカメラ画像の画素値が記録された領域である。また、領域４０３は、右側のカメラ２３で撮影されたカメラ画像の画素値が記録された領域である。つまり、パノラマ画像生成部２２０は、前方のカメラ２０で撮影されたカメラ画像７０がパノラマ画像８１の中心に位置するように、生成用のパノラマ画像８１を生成する。【０１５２】
続いて、パノラマ画像生成部２２０は、車両１０の状況を示す情報を受け付けて、パノラマ画像８１の画素値を表示用のメモリ上に再記録することで、表示用のパノラマ画像８２を生成する。例えば、パノラマ画像生成部２２０は、車両１０の操作レバーがドライブレンジからリバースレンジにシフトチェンジされた旨の情報を車両１０から受け付けると、パノラマ画像の中央位置を領域４０１に変更する旨を決定する。パノラマ画像生成部２２０は、領域４０１の中央から水平画角１８０度の位置、つまり図２７に示す点線の位置でパノラマ画像８１を分割する。そして、ノラマ画像生成部２２０は、領域４０１が中央に位置するように、分割したパノラマ画像を融合することで、表示用のパノラマ画像８２を生成する。このようにして生成されたパノラマ画像８２が、画像表示部２３０に表示される。つまり、操作レバーがドライブレンジからリバースレンジにシフトチェンジされた場合には、後方のカメラ２１で撮影されたカメラ画像が中心に位置するパノラマ画像８２が、画像表示部２３０に表示される。この結果、パノラマ画像生成部２２０は、車両の状況に応じて違和感の少ないパノラマ画像を生成可能である。【０１５３】
なお、図２７の例では、パノラマ画像生成部２２０が生成用のメモリと表示用のメモリと用いてパノラマ画像８２を生成する場合を説明したが、本実施例はこれに限定されるものではない。例えば、パノラマ画像生成部２２０が表示用のメモリのみを有する場合には、パノラマ画像生成部２２０は、以下のように処理する。すなわち、パノラマ画像生成部２２０は、表示用のメモリ上に画素値を記録する際に、車両１０の状況に応じた領域がパノラマ画像８２の中央に位置するように、画素値を記録する位置を変更した上で、表示用のメモリ上に画素値を記録する。なお、車両１０の状況は、操作レバーの状況のみならず、ハンドルの状況、ペダルの状況、周辺の物体の状況なども含む。【０１５４】
［システム構成］
また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。図１４に示す例では、合成テーブル生成装置１００で生成された合成テーブル１３０ａを車両周辺監視装置２００に送る処理を、利用者が可搬メモリを用いて手動的に行っても良い。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。図１５に示す例では、合成テーブル１３０ａは、カメラ２０〜２３ごとに、画素位置に基づく加重を示す「ブレンド率」をさらに記憶しても良い。【０１５５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図１４に示す例では、画像表示部２３０を車両周辺監視装置２００の外部装置として接続しても良い。【０１５６】
［コンピュータ］
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図２８を用いて、上記の実施例２と同様の機能を有する画像生成プログラムを実行するコンピュータの一例について説明する。図２８は、実施例２に係る画像生成プログラムを実行するコンピュータの一例について説明する図である。なお、上記の実施例３と同様の機能を有する画像生成プログラムを実行するコンピュータについては、図２８と同様であるので、説明を省略する。【０１５７】
図２８に示すように、実施例２におけるコンピュータ３０００は、入力装置３００１、モニタ３００２、カメラ３００３、ＣＰＵ３０１０、ＲＯＭ３０１１、ＨＤＤ（Hard  Disk  Drive）３０１２、ＲＡＭ（Random  Access  Memory）３０１３を有する。また、コンピュータ３０００は、入力装置３００１〜ＲＡＭ３０１３がバス３００９などで接続して構成される。【０１５８】
ＲＯＭ３０１１は、上述の実施例２で示した投影部１２０と、合成テーブル生成部１３０と、パノラマ画像生成部２２０と同様の機能を発揮する制御プログラムを記憶する。つまり、図２８に示すように、ＲＯＭ３０１１は、投影プログラム３０１１ａと、合成テーブル生成プログラム３０１１ｂと、パノラマ画像生成プログラム３０１１ｃとを予め記憶する。なお、これらのプログラム３０１１ａ〜３０１１ｃについては、図１４に示した合成テーブル生成装置１００および車両周辺監視装置２００の各構成要素と同様、適宜統合又は分離しても良い。【０１５９】
そして、ＣＰＵ３０１０が、これらのプログラム３０１１ａ〜３０１１ｃをＲＯＭ３０１１から読み出して実行する。この結果、図２８に示すように、各プロセス３０１０ａ〜３０１０ｃについては、投影プロセス３０１０ａと、合成テーブル生成プロセス３０１０ｂと、パノラマ画像生成プロセス３０１０ｃとして機能する。なお、各プロセス３０１０ａ〜３０１０ｃは、図１４に示した、投影部１２０と、合成テーブル生成部１３０と、パノラマ画像生成部２２０とにそれぞれ対応する。また、ＣＰＵ３０１０上で仮想的に実現される各処理部は、常に全ての処理部がＣＰＵ３０１０上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。【０１６０】
ＨＤＤ３０１２には、パラメータテーブル３０１２ａが設けられている。なお、パラメータテーブル３０１２ａは、図１４に示したパラメータ記憶部１１０に対応する。【０１６１】
そして、ＣＰＵ３０１０は、パラメータテーブル３０１２ａを読み出してＲＡＭ３０１３に格納する。そして、ＣＰＵ３０１０は、ＲＡＭ３０１３に格納されたパラメータデータ３０１３ａを用いて、画像生成プログラムを実行する。なお、ＲＡＭ３０１３に格納されるデータは、常に全てのデータがＲＡＭ３０１３に格納される必要はなく、処理に必要なデータのみがＲＡＭ３０１３に格納されれば良い。【０１６２】
［その他］
なお、本実施例で説明した画像生成プログラムは、インターネットなどのネットワークを介して配布することができる。また、画像生成プログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【０１６３】
１          画像生成装置
２          画像受付部
３          投影部
４          パノラマ画像生成部
１０          車両
２０〜２３    カメラ
３０          撮影対象
４０          立体スクリーン
５０          球面スクリーン
６０          光軸
７０          カメラ画像
８０〜８２    パノラマ画像
９０          球面スクリーン
１００          合成テーブル生成装置
１１０          パラメータ記憶部
１１０ａ        パラメータ
１２０          投影部
１３０          合成テーブル生成部
１３０ａ        合成テーブル
２００          車両周辺監視装置
２１０          フレームバッファ
２２０          パノラマ画像生成部
２３０          画像表示部
３００          車両周辺監視装置
３０１〜３０４  カメラ
３１０          パラメータ記憶部
３２０          フレームバッファ
３３０          投影部
３４０          パノラマ画像生成部
３５０          画像表示部
４００〜４０３  領域
３０００          コンピュータ
３００１          入力装置
３００２          モニタ
３００３          カメラ
３００９          バス
３０１０          ＣＰＵ
３０１０ａ        投影プロセス
３０１０ｂ        合成テーブル生成プロセス
３０１０ｃ        パノラマ画像生成プロセス
３０１１          ＲＯＭ
３０１１ａ        投影プログラム
３０１１ｂ        合成テーブル生成プログラム
３０１１ｃ        パノラマ画像生成プログラム
３０１２          ＨＤＤ
３０１２ａ        パラメータテーブル
３０１３          ＲＡＭ
３０１３ａ        パラメータデータ
【図１】
0005454674.tif 000038
【図２】
0005454674.tif 000039
【図３】
0005454674.tif 000040
【図４】
0005454674.tif 000041
【図５】
0005454674.tif 000042
【図６】
0005454674.tif 000043
【図７】
0005454674.tif 000044
【図８】
0005454674.tif 000045
【図９】
0005454674.tif 000046
【図１０】
0005454674.tif 000047
【図１１】
0005454674.tif 000048
【図１２】
0005454674.tif 000049
【図１３】
0005454674.tif 000050
【図１４】
0005454674.tif 000051
【図１５】
0005454674.tif 000052
【図１６】
0005454674.tif 000053
【図１７】
0005454674.tif 000054
【図１８】
0005454674.tif 000055
【図１９】
0005454674.tif 000056
【図２０】
0005454674.tif 000057
【図２１】
0005454674.tif 000058
【図２２】
0005454674.tif 000059
【図２３】
0005454674.tif 000060
【図２４】
0005454674.tif 000061
【図２５】
0005454674.tif 000062
【図２６】
0005454674.tif 000063
【図２７】
0005454674.tif 000064
【図２８】
0005454674.tif 000065
【図２９】
0005454674.tif 000066
【図３０】
0005454674.tif 000067