(57)【要約】【課題】広角カメラの映像をシミュレーションに合わせてリアルタイムに出力可能なシミュレータを提供する。【解決手段】動作指示の入力を受け付ける入力部２と、リアルタイムで仮想環境内の車両の位置および向きを算出する車両シミュレーション部３と、車両の位置および向きから車載広角カメラの視点位置および視方向を算出するカメラ状態算出部４と、車載広角カメラからの所定の視野をカバーする複数の中間投影面に対して、車載広角カメラの視点位置および視方向から前想環境を透視投影した複数の中間画像を生成する中間画像描画部と、予め記録された前記車載広角カメラのレンズ特性から生成されるパラメータに基づいて、複数の中間画像を変形合成することで、車載広角カメラの映像を生成する映像描画部とを含む広角カメラ模擬部５を備える運転模擬装置。【選択図】図１
2010129063.tif 000002
【特許請求の範囲】
【請求項１】
仮想環境における車両に対する動作指示の入力を受け付ける入力部と、
前記動作指示の入力に応じてリアルタイムで前記仮想環境内の前記車両の位置および向きを算出する車両シミュレーション部と、
前記車両の位置および向きから前記車載広角カメラの視点位置および視方向を求めるカメラ状態算出部と、
前記車載広角カメラからの所定の視野をカバーする複数の中間投影面に対して、前記カメラ状態算出部で算出された前記車載広角カメラの視点位置および視方向から前記仮想環境を透視投影した複数の中間画像を生成する中間画像描画部と、
予め記録された前記車載広角カメラのレンズ特性に基づいて、中間画像の変形合成に関するパラメータを生成し、前記複数の中間画像を変形合成することで、前記車載広角カメラの映像を生成する映像描画部とを含む広角カメラ模擬部を一つないし複数備える運転模擬装置。
【請求項２】
映像描画部は、前記複数の中間投影面と前記車載広角カメラの撮像面との対応関係を示すデータを前記パラ−メタとして生成し、当該対応関係を示すデータを用いて、前記複数の中間画像のテクスチャを前記撮像面へマッピングすることにより、前記車載広角カメラの映像を生成する、請求項１に記載の運転模擬装置。
【請求項３】
前記中間画像描画部は、前記車載広角カメラの視点を内部に含む立方体の６面のうち少なくとも２つの面を前記複数の中間投影面として、前記車載広角カメラの視点位置および視方向からの前記仮想環境を透視投影して前記複数の中間画像を生成し、
前記生成される車載広角カメラの映像の画面に配置される二次元メッシュの各ノードと、前記複数の中間投影面上の位置とを対応付ける方向ベクトルを、前記車載広角カメラのレンズ特性から得られる前記パラメータに基づいて算出する方向ベクトル付加部をさらに備え、
前記映像描画部は、前記方向ベクトルを用いて、前記複数の中間画像のテクスチャを前記二次元メッシュにマッピングすることにより前記車載広角カメラの映像を生成する、請求項１または２に記載の運転模擬装置。
【請求項４】
前記中間画像描画部は、前記車載広角カメラの視点を内部に含む直方体の６面のうち少なくとも２つの面を前記複数の中間投影面として、前記車載広角カメラの視点位置および視方向からの前記仮想環境を透視投影して前記複数の中間画像を生成し、
前記複数の中間投影面上の位置と、前記車載広角カメラの映像の画面に配置される二次元メッシュの各ノードとを対応付ける方向ベクトルを、前記車載広角カメラのレンズ特性から得られる前記パラメータに基づいて算出する方向ベクトル付加部と、
前記方向ベクトル付加部が算出した方向ベクトルを、前記直方体と前記車載広角カメラの視点との位置関係に基づいて、前記直方体をカメラ視点を中心とする立方体になるように変形したときの変形後の立方体の面上における位置と前記二次元メッシュの各ノードとを対応付けるベクトルに変換する、ベクトル変換部とをさらに備え、
前記映像描画部は、前記方向ベクトルを用いて、前記複数の中間画像のテクスチャを前記二次元メッシュにマッピングすることにより前記車載広角カメラの映像を生成する、請求項１または２に記載の運転模擬装置。
【請求項５】
前記方向ベクトルを用いて複数の中間画像のテクスチャを前記二次元メッシュにマッピングする処理にはキューブマッピング機能を用いる、請求項３また４に記載の運転模擬装置。
【請求項６】
あらかじめ記録された映像変形パターンに従って、画面座標を変換する画面座標変換部をさらに備える、請求項１〜５のいずれか１項に記載の運転模擬装置。
【請求項７】
前記生成される車載広角カメラの映像の画面に配置される二次元メッシュの分割線は、中間投影面の境界線のうち前記生成される車載広角カメラ映像の画面上において直線となるものに重なるように設定されている、請求項３〜５のいずれか１項に記載の運転模擬装置。
【請求項８】
仮想環境における広角カメラの視点位置および視方向を示すデータを入力するカメラ情報入力部と、
前記広角カメラからの所定の視野をカバーする複数の中間投影面に対して、前記カメラ情報入力部で入力された前記広角カメラの視点位置および視方向から前記仮想環境を透視投影した複数の中間画像を生成する中間画像描画部と、
予め記録された前記広角カメラのレンズ特性に基づいて、中間画像の変形合成に関するパラメータを生成し、前記複数の中間画像を変形合成することで、前記広角カメラの映像を生成する映像描画部とを含む広角カメラ映像模擬装置。
【請求項９】
仮想環境における広角カメラの視点位置および視方向を示すデータを入力するカメラ情報入力部と、
前記広角カメラからの所定の視野をカバーする複数の中間投影面に対して、前記カメラ情報入力部で入力された前記広角カメラの視点位置および視方向から前記仮想環境を透視投影した複数の中間画像を生成する中間画像描画部と、
予め記録された前記広角カメラのレンズ特性に基づいて、中間画像の変形合成に関するパラメータを生成し、前記複数の中間画像を変形合成することで、前記広角カメラの映像を生成する映像描画部とを含む画像変形合成装置。
【請求項１０】
仮想環境における車両に対する動作指示の入力を受け付ける入力処理と、
前記動作指示の入力に応じてリアルタイムで前記仮想環境内の前記車両の位置および向きを算出する車両状態算出処理と、
前記車両の位置および向きから前記車載広角カメラの視点位置および視方向を求めるカメラ状態算出処理と、
前記車載広角カメラからの所定の視野をカバーする複数の中間投影面に対して、前記カメラ状態算出処理で算出された前記車載広角カメラの視点位置および視方向から前記仮想環境を透視投影した複数の中間画像を生成する中間画像描画処理と、
予め記録された前記車載広角カメラのレンズ特性に基づいて、中間画像の変形合成に関するパラメータを生成し、前記複数の中間画像を変形合成することで、前記車載広角カメラの映像を生成する映像描画処理とをコンピュータに実行させる、運転模擬プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、広角カメラ画像のシミュレータまたはそれを用いた画像変形合成装置と、それを用いたドライビングシミュレータと、それを実現するためのプログラムと方法に関する。
【背景技術】
【０００２】
従来、ドライビングゲームやドライビングシミュレータにおいて、車両の座標系に固定された視点からの仮想環境の映像を生成する処理が行われてきた。このような映像は、仮想環境中の車両の動作に合わせてリアルタイムに更新されることが求められる。このような映像をコンピュータグラフィックスによりリアルタイムで生成するためには、透視投影による高速な描画が可能なハードウエアを利用することが一般的である。
【０００３】
一方、コンピュータグラフィックスの分野では、そのようなハードウエアを用いて、リアリティの高い映像をリアルタイムで生成するための、テクスチャマッピングを利用したレンダリング方法が開発されている（例えば、特許文献１参照）。
【特許文献１】特開平１０-１０５７３４公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の映像生成方式では、画角が約１３０度以上の広角カメラの映像をリアルタイムで模擬することができなかった。例えば、レイトレーシングなどのカメラレンズを直接シミュレートできるＣＧ映像生成方式では、広角カメラの映像を生成することは可能であるが、処理が重過ぎてリアルタイムでの映像生成ができない。
【０００５】
また、レンダリング支援ハードウエアを用いて高速に映像を生成できるリアルタイムのＣＧ映像生成方式では、映像生成を透視投影によって行うが、透視投影では広い画角の映像が生成できなかった。なぜなら、透視投影は原理的に画角が１８０度未満でないと計算が行えず、かつ画角を１８０度に近づけると映像面積の大半が視野の周辺部に費やされる形となって実用的でないからである（実用になるのは１２０度程度まで）。また、実際のカメラによって撮影される映像はレンズ特性等に応じて歪むため、透視投影法では正しく模擬することができない。特に、魚眼レンズ等の画角が１８０度に近い広角レンズを用いたカメラで撮影される映像は歪みが大きく、透視投影による映像は実際の画像とは大きく異なることになる。
【０００６】
ゆえに、本発明は、広角カメラの映像をシミュレーションに合わせてリアルタイムに出力可能なシミュレータを提供することを目的とする。
【課題を解決するための手段】
【０００７】
仮想環境における車両に対する動作指示の入力を受け付ける入力部と、
前記動作指示の入力に応じてリアルタイムで前記仮想環境内の前記車両の位置および向きを算出する車両シミュレーション部と、
前記車両の位置および向きから前記車載広角カメラの視点位置および視方向を求めるカメラ状態算出部と、
前記車載広角カメラからの所定の視野をカバーする複数の中間投影面に対して、前記カメラ状態算出部で算出された前記車載広角カメラの視点位置および視方向から前記仮想環境を透視投影した複数の中間画像を生成する中間画像描画部と、
予め記録された前記車載広角カメラのレンズ特性に関するパラメータに基づいて、前記複数の中間画像を変形合成することで、前記車載広角カメラの映像を生成する映像描画部とを含む広角カメラ模擬部を一つないし複数備える運転模擬装置。
【０００８】
上記構成においては、動作指示の入力に応じてリアルタイムに算出された車両の位置および向きから、車載広角カメラの視点位置および視方向が算出される。そして、複数の中間投影面に対して、これらの車載広角カメラの視点位置および視方向からの透視投影を行うことにより複数の中間画像が生成される。これら複数の中間投影面は、それらを組み合わることにより所定の視野がカバーされるように設定されている。そして、車載広角カメラのレンズ特性から生成されるパラメータに基づいて、中間画像を変形合成することにより、車載広角カメラの映像を生成することができる。これにより、車載広角カメラの視点位置および視方向から透視投影して複数の中間画像を生成する処理と、複数の中間画像を、レンズ特性から生成されるパラメータに応じた映像に変形合成する処理との２段階で、車載広角カメラの映像が生成されることになる。これらの２段階の処理は、例えば、専用のハードウエアを用いることよりそれぞれ高速に実行することができる処理なので、動作指示の入力に応じてリアルタイムで算出された車両の位置および向きに対応した、リアルタイムな車載広角カメラの映像を生成することが可能になる。その結果、車載広角カメラの映像を車両の動作に合わせてリアルタイムに出力可能な運転模擬装置が実現される。
【０００９】
本発明の実施形態において、映像描画部は、前記複数の中間投影面と前記車載広角カメラの撮像面との対応関係を示すデータを前記パラ−メタとして生成し、当該対応関係を示すデータを用いて、前記複数の中間画像のテクスチャを前記撮像面へマッピングすることにより、前記車載広角カメラの映像を生成する態様であってもよい。
【００１０】
これにより、車載広角カメラのレンズ特性に応じたテクスチャマッピングにより、複数の中間画像から車載広角カメラの映像を生成することができる。
【００１１】
本発明の実施形態において、前記中間画像描画部は、前記車載広角カメラの視点位置および視方向からの透視投影を行って複数の中間画像を生成する処理をハードウエアに実行させ、前記中間画像描画部は、前記車載広角カメラのレンズ特性から得られるパラメータを用いて前記複数の中間画像を変形合成することで、前記車載広角カメラの映像を生成する処理をハードウエアにより実行させる態様であってもよい。
【００１２】
これにより、複数の中間画像を生成する処理と、複数の中間画像から車載広角カメラの映像を生成する処理が、それぞれハードウエアで実行される。そのため、より高速に車載広角カメラの映像を生成することができる。なお、ここで、ハードウエアで実行される処理とは、汎用コンピュータのＣＰＵではなく特定の画像データ処理専用のハードウエアによって実行される処理を指す。このようなハードウエアには、例えば、ＧＰＵ（Graphics Processing Unit）、ＶＰＵ(Visual Processing Unit)、ジオメトリエンジン、その他のＡＳＩＣ(Application Specific Integrated Circuit)等が含まれる。
【００１３】
本発明の実施形態において、前記中間画像描画部は、前記車載広角カメラの視点を内部に含む立方体の６面のうち少なくとも２つの面を前記複数の中間投影面として、前記車載広角カメラの視点位置および視方向からの前記仮想環境を透視投影して前記複数の中間画像を生成し、前記生成される車載広角カメラの映像の画面に配置される二次元メッシュの各ノードと、前記複数の中間投影面上の位置とを対応付ける方向ベクトルを、前記車載広角カメラのレンズ特性から得られるパラメータに基づいて算出する方向ベクトル付加部をさらに備え、前記映像描画部は、前記方向ベクトルを用いて、前記複数の中間画像のテクスチャを前記二次元メッシュにマッピングすることにより前記車載広角カメラの映像を生成する態様であってもよい。
【００１４】
上記構成において、中間画像描画部は、車載広角カメラの視点を含む立方体の面を中間投影面として透視投影を実行する。映像描画部は、方向ベクトル付加部が、車載広角カメラのレンズ特性に関するパラメータに基づいて算出した方向ベクトルを用いて、前記立方体の面に透視投影された複数の中間画像のテクスチャを、車載広角カメラの映像の画面における二次元メッシュにマッピングする。これにより、映像描画部は、キューブマッピング機能を用いて車載広角カメラの映像を生成することができる。その結果、車載広角カメラの映像の画面における二次元メッシュのポリゴン内部に中間投影面の境界が来ないように設定する必要がなくなる。このため、二次元メッシュの設計自由度が増し、画像処理の単純化が可能になる。また、例えば、レンズの特性に関するパラメータが変更される度に二次元メッシュも変更する必要もなくなるので、二次元メッシュ生成処理が簡単になる。
【００１５】
本発明の実施形態において、前記中間画像描画部は、前記車載広角カメラの視点を内部に含む直方体の６面のうち少なくとも２つの面を前記複数の中間投影面として、前記車載広角カメラの視点位置および視方向からの前記仮想環境を透視投影して前記複数の中間画像を生成し、前記複数の中間投影面上の位置と、前記車載広角カメラの映像の画面に配置される二次元メッシュの各ノードとを対応付ける方向ベクトルを、前記車載広角カメラのレンズ特性から得られるパラメータに基づいて算出する方向ベクトル付加部と、前記方向ベクトル付加部が算出した方向ベクトルを、前記直方体と前記車載広角カメラの視点との位置関係に基づいて、前記直方体をカメラ視点を中心とする立方体になるように変形したときの変形後の立方体の面上における位置と前記二次元メッシュの各ノードとを対応付けるベクトルに変換する、ベクトル変換部とをさらに備え、前記映像描画部は、前記方向ベクトルを用いて、前記複数の中間画像のテクスチャを前記二次元メッシュにマッピングすることにより前記車載広角カメラの映像を生成する態様であってもよい。
【００１６】
上記構成により、映像描画部は、キューブマッピング機能を用いて車載広角カメラの映像を生成することができる。さらに、ベクトル変換部が、直方体と視点との位置関係に基づいて、方向ベクトルを変換するので、車載広角カメラの視点と直方体との位置関係を自由に設定することが可能になる。その結果、例えば、キューブマッピング機能を効率よく使えるように、複数の中間投影面に対する車載広角カメラの視点位置を設定することが可能になる。
【００１７】
本発明の実施形態において、前記方向ベクトルを用いて複数の中間画像のテクスチャを前記二次元メッシュにマッピングする処理にはキューブマッピング機能が用いられてもよい。これにより、方向ベクトルを用いて、前記複数の中間画像のテクスチャを前記二次元メッシュにマッピングする処理を効率よく実行することができる。
【００１８】
本発明の実施形態において、運転模擬装置は、あらかじめ記録された映像変形パターンに従って、画面座標を変換する画面座標変換部をさらに備えてもよい。
【００１９】
これにより、例えば、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）内蔵の車載広角カメラのように、撮影信号に処理して映像を変形して表示するカメラの映像をシミュレートすることができる。
【００２０】
本発明の実施形態において、前記生成される車載広角カメラの映像の画面に配置される二次元メッシュの分割線は、中間投影面の境界境界線のうち前記生成される車載広角カメラ映像の画面上において直線となるものに重なるように設定されていてもよい。これにより、複数の中間投影面の境界付近におけるテクスチャの歪みを抑えることができる。
【００２１】
仮想環境における広角カメラの視点位置および視方向を示すデータを入力するカメラ情報入力部と、前記広角カメラからの所定の視野をカバーする複数の中間投影面に対して、前記カメラ情報入力部で入力された前記広角カメラの視点位置および視方向から前記仮想環境を透視投影した複数の中間画像を生成する中間画像描画部と、予め記録された前記広角カメラのレンズ特性に基づいて、中間画像の変形合成に関するパラメータを生成し、前記複数の中間画像を変形合成することで、前記広角カメラの映像を生成する映像描画部とを含む広角カメラ映像模擬装置も本発明の実施形態の一つである。
【００２２】
上記構成においては、複数の中間投影面に対して、入力された広角カメラの視点位置および視方向からの透視投影を行うことにより複数の中間画像が生成される。これら複数の中間投影面は、それらを組み合わることにより所定の視野がカバーされるように設定されている。そして、広角カメラのレンズ特性に関するパラメータに基づいて、中間画像を変形合成することにより、広角カメラの映像を生成することができる。これにより、広角カメラの視点位置および視方向から透視投影して複数の中間画像を生成する処理と、複数の中間画像を、レンズ特性のパラメータに応じた映像に変形合成する処理との２段階で、広角カメラの映像が生成されることになる。これらの２段階の処理は、例えば、ハードウエアによりそれぞれ高速に実行することができる処理なので、広角カメラの映像を高速に生成することが可能になる。例えば、仮想環境において広角カメラの位置または向きが変化した場合に、リアルタイムに広角カメラの映像を更新して出力することが可能になる。
【００２３】
なお、前記広角カメラ映像模擬装置に組み込まれる画像変形合成装置も、本発明の一実施形態である。また、コンピュータを前記運転模擬装置、前記広角カメラ映像模擬装置または画像変形合成装置として機能させるためのプログラムおよびそのようなプログラムを記録した記録媒体も、本発明の実施形態に含まれる。さらに、上記コンピュータによる、運転模擬方法、広角カメラ映像模擬方法および画像変形合成方法も、本発明の実施形態に含まれる。
【発明の効果】
【００２４】
本願明細書の開示によれば、広角カメラの映像をシミュレーションに合わせてリアルタイムに出力可能なシミュレータを提供することができる。
【発明を実施するための最良の形態】
【００２５】
（第１の実施形態）
本実施形態は、コンピュータを用いた画像変形合成装置を組み込んだドライビングシミュレータに関する。このドライビングシミュレータは、例えば、車載カメラを用いた運転視界補助システムの検証に利用することができる。
【００２６】
図１は、第１の実施形態にかかるドライビングシミュレータの構成を示す機能ブロック図である。図１に示すドライビングシミュレータ１は、入力部２、車両シミュレーション部３、カメラ状態算出部４、広角カメラ模擬部５、シーン描画部７、シーンデータ記録部１１、カメラ位置記録部１２、カメラ視野記録部１３を備える。
【００２７】
入力部２は、ハンドルやペダルなどの入力装置に接続され、利用者のハンドル操作やペダル操作を入力する。シーンデータ記録部１１は、仮想環境（仮想空間）を表すデータである。仮想環境を示すデータには、例えば、道路、信号、車、仮想運転者、建物、背景、光源、カメラなどの要素が含まれる。仮想環境のそれぞれの要素は、描画用のモデルデータとテクスチャ画像、シミュレーション計算用の設定データ、仮想環境内での現在の状態データなどを持つ。状態データは、例えば、仮想環境内における物体の位置や速度、エンジンやトランスミッション、サスペンションなどを含む車の状態、仮想運転者の意図や操作の状態、カメラの位置と向きなどを表す。
【００２８】
車両シミュレーション部３は、入力部２からの入力や時間の経過を受けて、物理現象のシミュレーションや仮想運転者の行動のシミュレーションを行い、例えば、一定時間間隔でシーンデータを更新する。更新の結果、例えば、状態データが示す車の位置や向きが更新される。
【００２９】
特に、車両の挙動については車両シミュレーション部３がシミュレーションを実行する。例えば、車両シミュレーション部３は、入力部２からの運転操作の入力や仮想運転者による運転操作に基づいて各車両の位置や向きを更新する。
【００３０】
車両シミュレーション部３による車両の位置および向きの更新に伴って、カメラ状態算出部４は、カメラ位置記録部１２に記録されたカメラ位置情報を用いて、カメラの視点および視方向を更新する。例えば、運転者視点のカメラや、車に追随するカメラ、および車載広角カメラの位置と向き（例えば、視点と視方向）が更新される。
【００３１】
カメラ位置記録部１２のカメラ位置情報は、例えば、車両ごとに各車両を基準とした相対的なカメラの位置や向きを表した情報である。更新されたカメラの位置および向きの情報（例えば、カメラの視点および視方向）は、シーン描画部７、広角カメラ模擬部５に伝えられる。例えば、運転者視点のカメラや、車に追随するカメラの視点および視方向は、シーン描画部７へ、車載広角カメラの視点および視方向は、広角カメラ模擬部５へ伝えられる。
【００３２】
車両や車載広角カメラが複数ある場合は、そのうちの一つが１つの広角カメラ模擬部５に対して描画対象に選ばれる。すなわち、カメラの選択はあらかじめ設定しておいても良いし、実行時の操作（切り替えボタンの入力など）で切り替えても良い。なお、広角カメラ模擬部５は、複数の車両や複数の車載広角カメラのシミュレーションを実行するために、複数備えられてもよい。
【００３３】
シーン描画部７は、更新されたシーンデータとカメラの位置および向き、およびカメラ視野記録部１３に記録されたカメラの視野情報に基づいて仮想環境内の様子を可視化する。視野情報は、視野のどの範囲を切り取って描画するかを表す情報である。視野情報は、カメラの視点位置に対する投影面（または透視面とも称される）の位置と大きさの設定（位置関係の設定）と言い換えることができる。
【００３４】
シーン描画部７は、視野情報により定められた投影面に対し、シーン内のモデルデータを透視投影することによってシーンの描画処理を実行する。これにより、シーン描画部７は、カメラに写るシーンの映像をリアルタイムに生成することができる。生成された映像はディスプレイやプロジェクタなどの映像提示装置８に送られてユーザに提示される。
【００３５】
上記各機能部の働きにより、入力部２での運転操作の入力から、シーンの更新、描画までを高速に（秒間数回〜数十回）繰り返し行うことによって、仮想環境の時間が進み、動く映像（動画）が生成される。
【００３６】
ドライビングシミュレータ１では、さらに広角カメラ模擬部５が設けられている。広角カメラ模擬部５は、カメラ状態算出部４から、車載広角カメラの視点および視方向を示すデータを受け取り、車載広角カメラが撮影する仮想環境の映像を生成して出力する。広角カメラ模擬部５の映像の出力先は検証対象システム６となっている。検証対象システム６は、例えば、カーナビゲーションシステムに組み込まれる運転視界補助システムの検証等を行うためのシステムである。
【００３７】
なお、広角カメラ模擬部５は、シーン描画部７の一部として設けられてもよい。その場合、広角カメラ模擬部５の出力先は、映像提示装置８になる。この場合、例えば、運転者視点のカメラの映像や車に追随するカメラの映像とともに、広角カメラの映像も映像提示装置８に表示される。
【００３８】
広角カメラ模擬部５は、一つの広角カメラ映像を生成するために、一つの視点位置において、複数の中間投影面へ仮想環境の透視投影を実行して中間画像を生成してバッファに記録する。そして、それらの複数の中間画像を、予め記録された広角カメラのレンズの特性を示すパラメータに基づいて、変形合成して映像を生成する。
【００３９】
［ドライビングシミュレータ１の動作例］
図２Ａは、ドライビングシミュレータ１の動作例を示すフローチャートである。ドライビングシミュレータ１は、初めに初期化処理を実行した後（Ｏｐ１）、シーンの更新（Ｏｐ１）およびシーンの描画（Ｏｐ２）を繰り返す。
【００４０】
図２Ｂは、Ｏｐ１の初期化処理における広角カメラ模擬部５による初期化処理の一例を示すフローチャートである。図２Ｂに示す例では、広角カメラ模擬部５は、各種パラメータを初期化し（Ｏｐ１１）、さらに、二次元メッシュを生成する（Ｏｐ１２）。
【００４１】
Ｏｐ１の初期化処理が終わると、例えば、入力部２がユーザから車両の運転操作を受け付けて（Ｏｐ２）、入力された運転操作に基づいて、車両シミュレーション部３において車両の位置および向きが更新されるとともに、カメラ状態算出部４でカメラの視点および視方向も更新される（Ｏｐ３）。
【００４２】
Ｏｐ４のシーン描画では、シーン描画部７および広角カメラ模擬部５が、Ｏｐ２で更新されたカメラの視点および視方向により撮影される画像を生成する。
【００４３】
図２Ｃは、シーン描画（Ｏｐ４）における広角カメラ模擬部５の処理の一例である。図２Ｃに示す例では、広角カメラ模擬部５は、複数の中間投影面への透視投影によって中間画像群を生成するステップ（Ｏｐ３１）と、中間画像群を用いて、例えば、二次元メッシュを描画することで、出力画像を生成するステップ（Ｏｐ３２）の２段階によって映像を生成している。
【００４４】
以上のように、ドライビングシミュレータ１では、広角カメラ模擬部５において、一つの広角カメラ映像を生成するために、一つの視点位置における複数の透視投影を行ってそれらを合成して映像を生成する処理が実行される。これにより、広角カメラ画像のリアルタイム生成が可能になる。なお、広角カメラ模擬部５の詳細は後述する。
【００４５】
［広角カメラ模擬部５の詳細］
図３は、広角カメラ模擬部５の構成を示す機能ブロック図である。広角カメラ模擬部５は、視野を複数の９０度程度の画角に分割してそれぞれについて透視投影による中間画像の生成を行い、それら中間画像をテクスチャマッピングによって一つの二次元メッシュに貼り付けて合成することで、映像生成を行う。二次元メッシュは、平面を、隙間無く、多数のポリゴンに分割したものである。分割線（ポリゴンのエッジ）が交わる点をノードと呼ぶ。１つのノードが１つないし複数のポリゴンの頂点に対応する。
【００４６】
図３に示す例では、広角カメラ模擬部５は、中間画像描画部１５、テクスチャ参照部１６、映像描画部１７、テクスチャ割付部１８、レンズ投影変換部１９、中間画像バッファ２１、中間投影面配置情報記録部２２、直行メッシュ記録部２３、広角レンズ特性記録部２４および二次元メッシュ記録部２５を備える。
【００４７】
中間画像描画部１５は、複数の中間投影面に対して、広角カメラの視点位置および視方向からシーンデータが示す仮想環境を透視投影することにより複数の中間画像を生成する。生成された中間画像は、中間画像バッファ２１に格納される。
【００４８】
中間投影面配置情報記録部２２には、広角カメラの視点位置と複数の中間投影面との位置関係を示すデータが記録されている。中間画像描画部１５は、この広角カメラの視点位置と複数の中間投影面との位置関係を示すデータを参照して、透視投影する中間投影面を決定する。なお、中間投影面配置情報記録部２２のデータは、複数の中間投影面は、広角カメラの視点からの所定の視野をカバーするように設定される。中間投影面配置情報記録部２２のデータは、例えば、シミュレータの初期化処理（上記Ｏｐ１１）において記録される。
【００４９】
図４〜図６は、中間投影面の設定例を示す図である。図４Ａ、図５Ａおよび図６Ａは、視点位置を上から見た図であり、図４Ｂ、図５Ｂおよび図６Ｂは斜視図である。図４Ａ、Ｂに示す例では、視点位置を中心にした立方体の各面が中間投影面に設定されている（立方体型配置）。図５Ａ、Ｂに示す例では、視点位置を含む直方体の各面が中間投影面に設定されている（直方体型配置）。図６Ａ、Ｂに示す例では、４つの側面が台形である６面体の各面が中間投影面に設定されている（台形型配置）。図４Ａ〜６Ａにおいて、Ｌは広角レンズの視野角を示している。図４Ｂ〜６Ｂにおいて、Ｓは広角カメラの視点位置を、視点位置Ｓから延びる矢印は視方向を示している。
【００５０】
テクスチャ割付部１８は、シミュレータ初期化処理（Ｏｐ１）において、中間画像上の位置と出力映像の画面の二次元メッシュとを対応付けるデータを生成し、二次元メッシュ記録部２５に記録する。例えば、テクスチャ割付部１８は、予め直行メッシュ記録部２３に記録された直行メッシュの各ノードに対応する中間投影面のテクスチャＩＤおよび座標を算出する。この場合、二次元メッシュ記録部２５には、直行メッシュの各ノードと、中間投影面のテクスチャＩＤおよび座標が対応付けられて記録される。図７は、広角カメラの映像の出力画面における直行メッシュの例を示す図である。図７に示す例は、出力画面において格子状に作成された二次元メッシュである。
【００５１】
なお、テクスチャ割付部１８は、二次元メッシュのノードと中間投影面のテクスチャＩＤおよび座標とを対応付ける際、レンズ投影変換部１９に二次元メッシュのノードの画面座標を渡す。レンズ投影変換部１９は、広角レンズ特性記録部２４に記録されたレンズの特性データを基に、画面座標を方向ベクトルに変換し、テクスチャ割付部１８に返す。さらにテクスチャ割付部１８は、方向ベクトルと交差する中間投影面（のテクスチャＩＤ）およびその投影面における座標を算出する。
【００５２】
上記例では、レンズ投影変換部１９は、画面座標と方向ベクトルを対応付ける。そして、テクスチャ割付部１８は、方向ベクトルと中間投影面とを対応づける幾何学的な計算を実行し、テクスチャを割り付ける。ここで、レンズ特性データは、例えば、後述する、レンズ映像の歪み特性を示すデータのように、レンズにより結ばれる像と実際の像との関係を示すデータである。
【００５３】
映像描画部１７は、二次元メッシュ記録部２５に記録された直行メッシュにおけるポリゴンのノードのテクスチャＩＤおよび座標を、テクスチャ参照部１６に渡し、そのポリゴンの色情報を受け取る。テクスチャ参照部１６は、入力されたテクスチャＩＤおよび座標が示す中間画像におけるテクスチャのデータを返す機能部である。この処理を、直行メッシュの全てのポリゴンについて実行することによって、出力画像全体の色情報が得られる。これにより、広角カメラの映像が生成される。
【００５４】
［ハードウエア構成］
ドライビングシミュレータ１は、パーソナルコンピュータやワークステーション等の汎用コンピュータに、所定のプログラムをインストールすることで構築することができる。また、コンピュータを、ドライビングシミュレータ１や広角カメラ模擬部５として機能させるプログラムおよびそれを記録した記録媒体も本発明の実施形態に含まれる。
【００５５】
図８は、ドライビングシミュレータ１として機能することができるコンピュータのハードウエア構成の一例を示す図である。図８に示す例では、ＣＰＵ２６、ＧＰＵ２７、外部インタフェース（外部ＩＦ）２９、ＲＯＭ３１、ＲＡＭ３２、ＨＤＤ３３がバスによって接続されている。ＧＰＵ２７は、映像提示装置８およびＶＲＡＭに接続されている。外部ＩＦ２９は、コンピュータの外部とデータ入出力を行うインタフェースである。外部ＩＦ２９には、例えば、マウス、キーボード、外部記録装置等の周辺機器が接続される。
【００５６】
上記の入力部２、車両シミュレーション部３、カメラ状態算出部４、広角カメラ模擬部５およびシーン描画部７の各機能部の機能は、ＣＰＵ２６またはＧＰＵ２７が所定の処理を実行することにより実現される。例えば、広角カメラ模擬部５の中間画像描画部１５および映像描画部１７の処理は、ＣＰＵよりＧＰＵの方が速く実行することができる。なお、ハードウエア構成は、図８に示した例に限られない。
【００５７】
（第２の実施形態）
第２の実施形態は、広角カメラ模擬部の変形例である。本実施形態における広角カメラ模擬部は、キューブマッピング機能を用いて、広角カメラの映像を生成する。
【００５８】
キューブマッピング機能は、複数のテクスチャ画像を用いて行う特殊なテクスチャマッピング機能である。例えば、既存のリアルタイムＣＧ用ソフトウェアライブラリ、およびそれらに対応するレンダリング支援ハードウエアによって標準的に機能が提供されている。
【００５９】
図９は、通常のテクスチャマッピングを説明するための図である。図５に示すように、テクスチャマッピングでは、ポリゴンの頂点〇、△、□にそれぞれ割り当てられたテクスチャ座標（ｕ1、ｖ1）（ｕ1、ｖ1）（ｕ1、ｖ1）に従って、テクスチャ画像におけるテクスチャが参照され、ポリゴンに貼り付けられる。
【００６０】
図１０は、キューブマッピング機能を用いたテクスチャマッピングを説明するための図である。図１０に示すように、キューブマッピングでは、ポリゴンの頂点〇、△、□に割り当てられた方向ベクトルＶ１、Ｖ２、Ｖ３に従ってキューブマップテクスチャが参照され、ポリゴンに貼り付けられる。キューブマップテクスチャは立方体の各面がテクスチャ画像になったもので、６枚のテクスチャ画像から成る。立方体の中心からの方向ベクトルを与えると、方向ベクトルの指す先が立方体のどの面のどの位置であるかが計算され（交点計算）、その面に対応するテクスチャ画像のその位置の画像がポリゴンに貼り付けられる（テクスチャ参照）。方向ベクトルはポリゴン内部についても補間されてキューブマップテクスチャの参照に用いられる。ポリゴンが複数の面にまたがる（各頂点の方向ベクトルが異なる面を指す）場合には、複数のテクスチャ画像によってポリゴンの内部が塗り分けられる。
【００６１】
なお、キューブマッピング機能では、従来立体的なメッシュ（とその法線ベクトル）が使われていた。これに対し、本実施形態では、方向ベクトル計算手段を設けることにより、出力画像の二次元メッシュの各ノードに対して、レンズ特性データから導き出した方向ベクトルを割り当てたものを用いることを可能にしている。
【００６２】
図１１は、第２の実施形態における広角カメラ模擬部５ａの構成を示す機能ブロック図である。図１１において、図３と同じ機能ブロックには同じ番号を付す。図１１に示す広角カメラ模擬部５ａでは、中間投影面配置情報記録部２２には、図４に示した立方体型の中間画像配置を示すデータが格納される。広角カメラ模擬部５ａは、キューブマッピング機能部３６および方向ベクトル付加部３９を備える。
【００６３】
キューブマッピング機能部３６は、ポリゴンの方向ベクトルを受け取って、対応するキューブテクスチャのピクセル色情報を返す。キューブマッピング機能部３６は、方向ベクトルを与えられると、立方体の中心を起点とする方向ベクトルの指す先が立方体のどの面のどの位置であるかを計算する交点計算部３７と、立方体の面上の位置を示す座標を受け付けて、その座標に対応するテクスチャを中間画像バッファ２１から取り出して出力するテクスチャ参照部３８を有する。なお、キャビティ機能部２６における交点計算部３７とテクスチャ参照部３８の機能は、ＧＰＵ等の専用ハードウエアで実現することができる。
【００６４】
立方体中間投影面配置情報３５には、中間投影面の配置を示すデータが格納される。ここでは、一例として、視点を中心とする立方体の６面がそれぞれ中間投影面であることを示すデータが格納されている。交点計算部３７は、このデータを基に方向ベクトルに対応する中間投影面上の位置を計算することができる。
【００６５】
また、広角カメラ模擬部５は、ドライビングシミュレータ１の初期化時に、出力画面における二次元メッシュの生成を行う（図２ＢのＯｐ１２）。二次元メッシュは出力画面を埋め尽くすようにポリゴンを並べたもので、形状は問わない。本実施形態では、一例として、図１２に示すように、画面を格子状に分割し、各格子をさらに半分に分割してできた三角形をポリゴンとする。この二次元メッシュは直行メッシュ記録部２３に記録される。
【００６６】
方向ベクトル付加部３９は、二次元メッシュの各ノードと、視点を中心とする立方体の中間投影面上の位置とを対応付ける方向ベクトルを、広角カメラのレンズ特性に関するパラメータに基づいて算出する。広角カメラのレンズ特性に関するパラメータは、広角レンズ特性記録部２４に予め記録されている。方向ベクトル付加部３９による方向ベクトル算出処理の詳細は後述する。
【００６７】
二次元メッシュのノードごとに算出された方向ベクトルは、各々ノードに対応付けられて二次元メッシュ記録部２５に記録される。映像描画部１７は、二次メッシュのポリゴンのノードに対応する方向ベクトルをキューブマッピング機能部３６に渡して、そのポリゴンのテクスチャを取得する。二次元メッシュの全てのポリゴンについてテクスチャを取得すると出力画像が生成される。
【００６８】
〔方向ベクトル付加〕
ここで、方向ベクトル付加部３９による方向ベクトル算出の具体例を説明する。方向ベクトル付加部３９は、二次元メッシュの各ノード（ポリゴンの頂点）に方向ベクトルを割り当てる。ここで、図１３Ａに示すように、広角レンズ４１に入射光ａおよび入射光ｂが入射したところを考える。入射光ａ、ｂに対応する方向ベクトルａ、ｂは、図１３Ｂに示すように入射光ａ、ｂの逆向きのベクトルで表すことができる。図１３Ｃは、入射光ａおよび入射光ｂが映像画面上に像を結ぶ点ａ、ｂを示している。このように、レンズに対しある方向から入射した光は、映像面上のある点に像を結ぶ。この時、入射光の向きを逆にした方向ベクトルを考えると、映像面Ｍ上のある点の色は対応する方向ベクトルが指す先の色である、と言い換えることができる。
【００６９】
このような映像面上の点と方向ベクトルの対応関係は広角レンズ映像の歪み特性から求めることができる。一例として、映像の歪み特性は、光線の入射角と画像高の関係を示すデータで表すことができる。図１４Ａは、映像面Ｍに垂直な面における入射光、広角レンズ４１および画像高との関係を表す図である。図１４Ａに示すように、入射角はレンズの光軸（中心軸）と入射光のなす角度であり、画像高は入射光が映像面Ｍに到達した位置の画像中心からの距離である。図１４Ｂは、映像面を上から見た場合の入射光とレンズ４１の関係を示す図である。図１４Ｃは、入射角が等しい入射光が映像面において到達し得る位置を点線で表した図である。図１４Ｄは、光の入射角と画像高との関係により表される広角レンズ映像の歪み特性の一例である。
【００７０】
レンズにおいては一般に、同じ入射角の入射光は映像中心から同じ距離の位置に到達するため（図１４Ｃ参照）、光線の入射角と画像高の関係により歪み特性を表すことができる。光軸周りの方角は映像面上でも保たれる（図１４Ｂおよび図１４Ｃ参照）。入射光を映像面上の点に対応付けるこの関係を逆に用いれば、映像面上の点に対応する入射光のベクトルを求めることができ、入射光ベクトルを反転したものが方向ベクトルとなる。この計算をレンズ投影変換部１９が行い、二次元メッシュの各ノードについて映像面上の位置から方向ベクトルを求め、ノードに割り当てる。
【００７１】
映像の歪み特性を表す曲線は、数式で定義しても良いし、入射角と画像高の値ペアを列挙したデータから補間によって算出しても良い。この曲線が原点を通る直線となる場合は特に等距離射影と呼ばれ、理想的な魚眼レンズを表す。
【００７２】
次に、方向ベクトル付加部３９による二次元メッシュに方向ベクトルを割り当てる処理をより詳しく説明する。二次元メッシュを、画面を横にN分割、縦にM分割した直交格子とする場合を例にとる。この場合、生成の結果は、例えば、ノードの画面座標を格納する（Ｎ＋１）x（Ｍ＋１）サイズの二次元配列vertexと、方向ベクトルを格納する（Ｎ＋１）x（Ｍ＋１）サイズの二次元配列directionのデータとして得られる。画面の座標系は、中央が原点、画面横方向（x座標）が-1.0から1.0、縦方向（ｙ座標）も-1.0から1.0となるように定める。この時、1つの格子の幅ｄxおよび高さｄyは以下のようになる。
【００７３】
ｄx＝２．０／Ｎ
ｄy＝２．０／Ｍ
ここで、以下の手順１を実行することで、配列vertexとdirectionの各要素のベクトル値を算出する。
【００７４】
手順１
縦方向の繰り返し（以下を、整数mを0からMまで1ずつ増やしながら繰り返す）
横方向の繰り返し（以下を、整数nを0からNまで1ずつ増やしながら繰り返す）
画面座標vertex［ｎ］［ｍ］＝（ｎｄx−１．０，  ｍｄy−１．０）
方向ベクトルdirection［ｎ］［ｍ］＝レンズ投影変換（vertex［ｎ］［ｍ］）
【００７５】
上記手順１におけるレンズ投影変換（）は、以下の手順により画面座標から方向ベクトルを算出する。画面座標を（ｖx，ｖy）＝vertex［ｎ］［ｍ］、求める方向ベクトルを（ｕx，ｕy，ｕy）＝direction ［ｎ］［ｍ］とし、模擬したい広角カメラのイメージセンサのサイズを横幅ＳＷ、縦幅ＳＨ、イメージセンサ上での座標を（ｓx，ｓy）とする。
【００７６】
この時、まず、イメージセンサ上の座標が以下のように求められる。
【００７７】
ｓx＝ｖxＳＷ／２．０
ｓy＝ｖyＳＨ／２．０
次に、この座標に基づき、入射光の方位角αと画像高hが、例えば、下記式（１）（２）により求められる。
【００７８】
【数１】
2010129063.tif 000003
【００７９】
さらに、映像の歪み特性を用いて、画像高から入射光の入射角θが求められる。歪み特性を等距離射影とする場合、入射角は、例えば、θ＝ｈＣにより計算できる。ここで、Ｃは歪みの度合いを表す定数で、模擬したい特性に合わせてあらかじめ定めておく。
【００８０】
歪み特性を画像高と入射角の値ペアの集合からなる特性データによって定める場合は、次のように線形補間によって入射角を計算できる。図１５は、画像高と入射角の値ペアの集合をプロットしたグラフの一例である。特性データに含まれる画像高と入射角の値ペアを（ｈi，θi）（ｉは0 〜 ペア個数-1、ｈiは昇順に並んでいる）とすると、上記で求まった画像高ｈは、あるｉの元で、ｈi≦ｈ＜ｈi+1という関係になる。この時、ｈに対応する入射角θは、例えば、下記式（３）により求めることができる。
【００８１】
【数２】
2010129063.tif 000004
【００８２】
線形補間の代わりに、二次以上の関数や指数関数、ベジェ曲線などを用いてより精度の高い補間を行っても良い。
【００８３】
入射光の方位角αと入射角θが求まれば、これらから、例えば、下記式（４）〜（６）を用いて、方向ベクトルを求めることができる。
【００８４】
【数３】
2010129063.tif 000005
【００８５】
なお、上記例は、広角レンズ映像の歪み特性をレンズ特性として用いて方向ベクトルを計算する例であるが、レンズ特性を用いた方向ベクトルの計算は、上記例に限定されない。例えば、レンズ特性として、その他のパラメータ（例えば、焦点距離、画角または写角等）を用いても、出力画像中におけるメッシュの各ノードの位置と、中間画像における位置との対応を示すデータを計算することもできる。また、上記例では、出力画像のメッシュが二次元メッシュであるが、出力画像のメッシュは、三次元メッシュであってもよい。
【００８６】
［本実施形態における効果］
従来、テクスチャマッピングを用いる場合、中間画像を貼り付けるための二次元メッシュの辺を、中間投影面の境界線に合わせて配置する必要があった。例えば、図１６Ａに示すように、中心が視点位置の立方体の各面が中間投影面である場合に、中間画像を広角レンズの投影変換した出力画像では、中間画像における境界線の境界は曲線になる。そのため、図１６Ｂに示すように、中間投影面のメッシュＴ１を投影変換した出力画像の二次元メッシュＴ２は、投影面境界Ｋに合わせた曲線の二次元メッシュにする設定する必要があった。なぜなら、通常のテクスチャマッピングを用いる場合、１つのポリゴンを複数のテクスチャ（中間画像）で塗り分けることはできないので、メッシュを構成するポリゴンの内部に中間投影面の境界が来ないようにする必要があるからである。しかし、このような二次元メッシュを生成するためには、三次元の中間投影面について一旦広角レンズによる投影を行って画面上での形状を求める必要がある。従って、レンズの特性を変更するたびに二次元メッシュを作り直すための投影計算を行わなければならず、計算負荷が高い。
【００８７】
そこで、本実施形態の広角カメラ模擬部５ａは、キューブマッピング機能を使い、さらに二次元メッシュの各ノードに、前記キューブマッピング機能におけるキューブマップ画像のピクセルを参照するインデックスとしての方向ベクトルを適切に割り当てる。これにより、二次元メッシュの辺を、中間投影面の境界線に合わせて配置することは必ずしも必要ではなくなる。また、二次元メッシュとして、出力画面上で単純な処理で生成できる形状を用いることができる（例えば、図１２に示す三角形のポリゴン）。
【００８８】
（第３の実施形態）
第３の実施形態は、広角カメラ模擬部の変形例である。図１７は、第３の実施形態における広角カメラ模擬部５ｂの構成を示す機能ブロック図である。図１７において、図１１と同じ機能ブロックには同じ番号を付す。
【００８９】
本実施形態では、各中間投影面は、通常のシーン描画部７で用いられるカメラの投影面と同様に透視投影の視野設定によって定義され、全体として広角カメラの視野全体を覆うように配置される。ここでは、一例として、図５Ａ，Ｂに示した直方体の各面がそれぞれ中間投影面に設定される場合を説明する。これは、非立方体型投影面配置の一例である。広角カメラ視点の位置および視方向を基準とした各中間投影面の配置情報が、予め中間投影面配置情報記録部２２に記録される。
【００９０】
図１８Ａは、前記直方体と広角各カメラの視点位置を上から見た平面図であり、図１８Ｂは、前記直方体の投影面の展開図である。図１９Ａは、上記第２の実施形態の立法体型投影面配置における立方体と広角各カメラの視点位置の平面図、図１９Ｂは、その立方体の投影面の展開図である。本実施形態では、中間投影面の枚数は、立方体型に配置した場合と同じ６枚とし、各投影面の配置情報は、立方体型配置の場合の各投影面と対応付けて記録される。例えば、図１８Ｂにおける上方向、下方向、正面、右方向、左方向の投影面と図１９Ｂの上方向、下方向、正面、右方向、左方向の投影面とがそれぞれ対応付けられて記録される。
【００９１】
広角カメラ模擬部５ｂは、このように、広角カメラの視点を内部の任意の位置に含む直方体の各面を中間投影面とした場合に、キューブマッピング機能を使用して映像を生成するものである。そのため、図１７に示すように、広角カメラ模擬部５ｂは、方向ベクトル変換部４２をさらに備える。
【００９２】
まず、中間画像描画部１５が、広角カメラ視点を含む直方体の各面に配置された中間投影面に対して透視投影を実行し、中間画像バッファ２１に中間画像を格納する。このとき、中間画像バッファ２１は、キューブマップ用のテクスチャメモリである。そのため、格納される中間画像は、Ｎ×Ｎ画素（Ｎは自然数）の画像となる。
【００９３】
一方、方向ベクトル付加部３９は、二次元メッシュの各頂点に対応付ける方向ベクトルを生成する。この二次元メッシュの各頂点に対応付ける方向ベクトルを、方向ベクトル変換部４２が、上記の直方体の中間投影面配置に基づいて変換する。変換の具体例については後述する。その後、映像描画部１７が、キューブマッピング機能部３６を用いて出力画像のレンダリングを行う。これにより、キューブマッピング機能を用いながら、立方体型でない中間投影面配置で映像生成を行ったのと同等の映像を得る。その結果、キューブマッピング機能を利用しつつテクスチャメモリを効率的に利用できるようになる。
【００９４】
〔方向ベクトル変換の具体例〕
立方体型でない中間投影面の配置を実現するために、方向ベクトル変換部４２が方向ベクトルの変換を行う。図２０Ａは、非立方体型投影面配置における前記直方体と広角各カメラの視点位置を上から見た平面図であり、視点位置を起点とする方向ベクトルの一例が示されている。図２０Ｂは、キューブマッピング機能部３６において処理される立法体系投影面配置と方向ベクトルとの位置関係を上から見た平面図である。
【００９５】
図２０Ａおよび図２０Ｂに示す配置の場合、一例として、方向ベクトルを変換する計算は以下のように行われる。まず、実際の（非立方体型の）投影面配置において、方向ベクトルが交わる投影面（投影面Ｘ）と、投影面Ｘ上での投影位置（投影面の幅に対する比率ｍとｎ）を求める。次に、投影面Ｘに対応するキューブマップの投影面（投影面Ｘ’）において、比率ｍとｎを用いて変換後の投影位置を求める。さらに、視点位置から変換後の投影位置へ向かうベクトルを求めれば、これが変換後の方向ベクトルである。なお、方向ベクトルの変換方法は、この例に限られない。
【００９６】
〔広角カメラ映像の生成の具体例〕
シーンの描画時には、広角カメラ模擬部５ｂにおいて、以下の手順で広角カメラ映像が生成される。
【００９７】
まず、シーンの更新によって広角カメラ本体の視点および視方向が更新されると、広角カメラ模擬部５ｂは、中間投影面配置情報に基づいて各中間投影面の位置および向きを算出する。そして、中間画像描画部１５は、各中間投影面に対し透視投影による複数の中間画像の描画を実行し、中間画像バッファ２１に保存する。このとき、中間画像バッファ２１はキューブマップ画像のバッファなので形状が正方形であるのに対し、中間投影面の画角は縦横で同じとは限らないが、正方サイズのピクセル数を持つキューブマッピング用のバッファに格納する。
【００９８】
次に、映像描画部１７が二次元メッシュの描画を行う。すなわち、中間画像バッファ２１をキューブマップ画像としてキューブマッピングを行いながら、二次元メッシュを構成するポリゴンを一つ一つ描画していく。ポリゴンに割り当てられた方向ベクトルに従ってキューブマップ画像が参照されて各ポリゴンに貼り込まれた結果、二次元メッシュ全体が、中間画像群を変形・合成して生成された広角カメラ映像として描画される。二次元メッシュが前述の横Ｎ分割、縦Ｍ分割の直交格子から成る場合、この出力画像描画処理は以下の手順２となる。なお、図２１は、出力画像における横Ｎ分割、縦Ｍ分割の直交格子を示す図である。図２２は、直交格子に含まれるポリゴンの例を示す図である。
【００９９】
手順２
縦方向の繰り返し（以下を、整数mを0からMまで1ずつ増やしながら繰り返す）
横方向の繰り返し（以下を、整数nを0からNまで1ずつ増やしながら繰り返す）
格子の左下半分の三角形ポリゴンを描画
〔頂点１〕座標vertex[n][m]、方向ベクトルdirection[n][m]
〔頂点２〕座標vertex[n+1][m]、方向ベクトルdirection[n+1][m]
〔頂点３〕座標vertex[n][m+1]、方向ベクトルdirection[n][m+1]
格子の右上半分の三角形ポリゴンを描画
〔頂点１〕座標vertex[n+1][m]、方向ベクトルdirection[n+1][m]
〔頂点２〕座標vertex[n+1][m+1]、方向ベクトルdirection[n+1][m+1]
〔頂点３〕座標vertex[n][m+1]、方向ベクトルdirection[n][m+1]
【０１００】
以上、本実施形態によれば、キューブマッピング機能を用いる場合でも、中間投影面が立方体型配置に限定されない。従来、キューブマッピング機能を用いると中間投影面が立方体方配置に限定されていた。広角レンズの視野角は広い場合で１８０度をやや超える程度であるので、立方体型だと上下左右の面が半分強しか使われないことになり、テクスチャメモリの利用効率が悪い。また、中間画像の解像度は正面と側面に均等に割り振られるため、広角レンズで特に引き伸ばされる画像中央付近の解像度が不足しやすい。ここで、本実施形態によれば、広角レンズの視野角が直方体の５つの面を略カバーするように、視点位置を配置してキューブマッピングを実行することができる。そのため、テクスチャメモリの利用効率は良くなる。また、画像中央付近の解像度は低くなることも防がれる。
【０１０１】
（第４の実施形態）
本実施形態は、中間投影面の設定方法に関する。上記第３の実施形態では、方向ベクトル変換の副作用で、主に中間投影面の境界付近において、テクスチャの歪みが若干目立つ場合が起こり得る。本実施形態の中間投影面を用いることで中間投影面の境界付近でテクスチャの歪みを抑えることができる。
【０１０２】
中間投影面を上下左右で同じ形状になるように設定すると、上下左右の中間投影面間の境界は最終映像において中心から斜め４５度方向へ向かう直線となる。そこで、二次元メッシュを正方形格子によって作成し、さらに各格子の分割線が映像の中心から周辺へ向かう方向になるようにする。図２３は、そのような二次元メッシュの一例を示す図である。このように、中間投影面の境界線の一部がメッシュの分割線と揃うので、その分割線上では方向ベクトル変換の副作用による歪みの問題が発生しにくくなる。かつ、処理上のコスト増加はほぼ無い。
【０１０３】
（第５の実施形態）
図２４は、第５の実施形態における広角カメラ模擬部５ｃの構成を示す機能ブロック図である。図２４において、図１７と同じ機能ブロックには同じ番号を付す。図１７に示す広角カメラ模擬部５ａは、画像座標変換部４３および映像変形パターン記録部４４を備える。
【０１０４】
映像変形パターン記録部４４には、例えば、広角カメラ内蔵のＤＳＰによる映像の変形パターンを定義するデータが記録される。画像座標変換部４３は、模擬したい映像変形のパターンに従って画面座標の変換を行う。方向ベクトル付加部３９は、画面座標変換部４３が二次元メッシュのノードの画面座標を変換した後に、レンズ投影変換部１９に方向ベクトルを計算させる。なお、画面座標変換部４３による画面座標の変換は、方向ベクトルの変換と同様に、初期化時のみに行われればよい。映像描画部１７の処理は、上記第３の実施形態と同様としてもよい。以下に、具体例を示す。
【０１０５】
〔ＤＳＰによる映像変形の模擬〕
例えば、広角カメラに内蔵されたＤＳＰによる映像変形処理の模擬を行う場合に、さらに画面座標変換部４３が追加される。ＤＳＰによる映像の変形により、例えば、魚眼レンズ映像の一部分が切り出され歪みが除去される。
【０１０６】
図２５は、カメラ内蔵ＤＳＰによる映像変形の一例を模式的に示す図である。この時、入力映像上のある点は変換後の映像上のある点に一対一で対応付けられる。これを模擬するために、方向ベクトル付加部３９は、例えば、次のような処理を行う。
【０１０７】
図２６は、映像変形時の方向ベクトル付加部３９の動作例を示すフローチャートである。
まず、Ｏｐ５１で読み込んだメッシュのノードについて、画面座標変換部４３により座標が変換される（Ｏｐ５３）。図画面座標変換部４３は、映像変形による画面座標の対応関係を逆に辿って、映像変形後の画面（出力映像）上の座標から、映像変形前の画面上の座標を求める。図２７は画面座標変換部４３による変換の一例を模式的に表す図である。次に、レンズ投影変換部１９が変換後の画面座標から方向ベクトルを求める（Ｏｐ５４）。そして、方向ベクトル変換部４２を用いる場合には、方向ベクトル変換部４２が方向ベクトルを変換する（Ｏｐ５５）。求まった方向ベクトルはメッシュのノードに付加されて二次元メッシュ記録部２５に記録される（Ｏｐ５６）。このようにして方向ベクトルが付加されたメッシュを映像描画部１７が描画すると、模擬された広角カメラ映像にさらに、ＤＳＰによる変形が加わった映像が描画される。
【０１０８】
近年、ＤＳＰを内蔵し、映像歪みの除去やパースの変換などの映像変形処理をカメラ内部で行うような車載カメラが登場してきている。本実施形態によれば、そのような車載カメラもドライビングシミュレータ上で模擬できる。
【０１０９】
（効果等）
運転視界補助システムなどの車載カメラを用いたアプリケーションを開発するためには、計算機上の仮想環境での検証が有効である。上記の第１〜５の実施形態にかかるドライビングシミュレータによれば、この仮想環境での車載広角カメラの車載広角カメラの映像模擬をリアルタイムで実行することができる。その結果、車載カメラアプリケーションを実行する実際の車載機をシミュレータに接続して様々な検証を行うことができる。また、カメラ種別や設置位置、周辺環境、交通状況などに関するさまざまな条件を作り出したり、条件を変えながら実験を繰り返したりするためには、実車を用いた検証だけでは高いコストがかかるが、これらコストを削減できる。さらに、事故に繋がる危険な検証は実車で行うことができないが、本実施形態にかかるドライビングシミュレータによれば可能になる。
【０１１０】
なお、上記本発明にかかる広角カメラ模擬部は、ドライビングシミュレータ以外にも利用することができる。例えば、ドライビングゲームや、計算機システム上にモデリングされた３次元世界の事象を体験あるいは検証するためのシミュレーションシステム等にも、本発明にかかる広角カメラ模擬部の機能を利用することができる。
【０１１１】
以上の第１〜第４の実施形態に関し、さらに以下の付記を開示する。
【０１１２】
（付記１）
仮想環境における車両に対する動作指示の入力を受け付ける入力部と、
前記動作指示の入力に応じてリアルタイムで前記仮想環境内の前記車両の位置および向きを算出する車両シミュレーション部と、
前記車両の位置および向きから前記車載広角カメラの視点位置および視方向を求めるカメラ状態算出部と、
前記車載広角カメラからの所定の視野をカバーする複数の中間投影面に対して、前記カメラ状態算出部で算出された前記車載広角カメラの視点位置および視方向から前記仮想環境を透視投影した複数の中間画像を生成する中間画像描画部と、
予め記録された前記車載広角カメラのレンズ特性に基づいて、中間画像の変形合成に関するパラメータを生成し、前記複数の中間画像を変形合成することで、前記車載広角カメラの映像を生成する映像描画部とを含む広角カメラ模擬部を一つないし複数備える運転模擬装置。
【０１１３】
（付記２）
映像描画部は、前記複数の中間投影面と前記車載広角カメラの撮像面との対応関係を示すデータを前記パラ−メタとして生成し、当該対応関係を示すデータを用いて、前記複数の中間画像のテクスチャを前記撮像面へマッピングすることにより、前記車載広角カメラの映像を生成する、付記１に記載の運転模擬装置。
【０１１４】
（付記３）
前記中間画像描画部は、前記車載広角カメラの視点位置および視方向からの透視投影を行って複数の中間画像を生成する処理をハードウエアに実行させ、
前記中間画像描画部は、前記車載広角カメラのレンズ特性から得られるパラメータを用いて前記複数の中間画像を変形合成することで、前記車載広角カメラの映像を生成する処理をハードウエアにより実行させる、付記１または２に記載の運転模擬装置。
【０１１５】
（付記４）
前記中間画像描画部は、前記車載広角カメラの視点を内部に含む立方体の６面のうち少なくとも２つの面を前記複数の中間投影面として、前記車載広角カメラの視点位置および視方向からの前記仮想環境を透視投影して前記複数の中間画像を生成し、
前記生成される車載広角カメラの映像の画面に配置される二次元メッシュの各ノードと、前記複数の中間投影面上の位置とを対応付ける方向ベクトルを、前記車載広角カメラのレンズ特性から得られる前記パラメータに基づいて算出する方向ベクトル付加部をさらに備え、
前記映像描画部は、前記方向ベクトルを用いて、前記複数の中間画像のテクスチャを前記二次元メッシュにマッピングすることにより前記車載広角カメラの映像を生成する、付記１〜３のいずれか１項に記載の運転模擬装置。
【０１１６】
（付記５）
前記中間画像描画部は、前記車載広角カメラの視点を内部に含む直方体の６面のうち少なくとも２つの面を前記複数の中間投影面として、前記車載広角カメラの視点位置および視方向からの前記仮想環境を透視投影して前記複数の中間画像を生成し、
複数の中間投影面上の位置と、前記車載広角カメラの映像の画面に配置される二次元メッシュの各ノードとを対応付ける方向ベクトルを、前記車載広角カメラのレンズ特性から得られる前記パラメータに基づいて算出する方向ベクトル付加部と、
前記方向ベクトル付加部が算出した方向ベクトルを、前記直方体と前記車載広角カメラの視点との位置関係に基づいて、前記直方体をカメラ視点を中心とする立方体になるように変形したときの変形後の立方体の面上における位置と前記二次元メッシュの各ノードとを対応付けるベクトルに変換する、ベクトル変換部とをさらに備え、
前記映像描画部は、前記方向ベクトルを用いて、前記複数の中間画像のテクスチャを前記二次元メッシュにマッピングすることにより前記車載広角カメラの映像を生成する、付記１〜３のいずれか１項に記載の運転模擬装置。
【０１１７】
（付記６）
前記方向ベクトルを用いて複数の中間画像のテクスチャを前記二次元メッシュにマッピングする処理にはキューブマッピング機能を用いる、付記４また５に記載の運転模擬装置。
【０１１８】
（付記７）
あらかじめ記録された映像変形パターンに従って、画面座標を変換する画面座標変換部をさらに備える、付記１〜６のいずれか１項に記載の運転模擬装置。
【０１１９】
（付記８）
前記生成される車載広角カメラの映像の画面に配置される二次元メッシュの分割線は、中間投影面の境界線のうち前記生成される車載広角カメラ映像の画面上において直線となるものに重なるように設定されている、付記４〜６のいずれか１項に記載の運転模擬装置。
【０１２０】
（付記９）
仮想環境における広角カメラの視点位置および視方向を示すデータを入力するカメラ情報入力部と、
前記広角カメラからの所定の視野をカバーする複数の中間投影面に対して、前記カメラ情報入力部で入力された前記広角カメラの視点位置および視方向から前記仮想環境を透視投影した複数の中間画像を生成する中間画像描画部と、
予め記録された前記広角カメラのレンズ特性に基づいて、中間画像の変形合成に関するパラメータを生成し、前記複数の中間画像を変形合成することで、前記広角カメラの映像を生成する映像描画部とを含む広角カメラ映像模擬装置。
【０１２１】
（付記１０）
仮想環境における広角カメラの視点位置および視方向を示すデータを入力するカメラ情報入力部と、
前記広角カメラからの所定の視野をカバーする複数の中間投影面に対して、前記カメラ情報入力部で入力された前記広角カメラの視点位置および視方向から前記仮想環境を透視投影した複数の中間画像を生成する中間画像描画部と、
予め記録された前記広角カメラのレンズ特性に基づいて、中間画像の変形合成に関するパラメータを生成し、前記複数の中間画像を変形合成することで、前記広角カメラの映像を生成する映像描画部とを含む画像変形合成装置。
【０１２２】
（付記１１）
仮想環境における車両に対する動作指示の入力を受け付ける入力処理と、
前記動作指示の入力に応じてリアルタイムで前記仮想環境内の前記車両の位置および向きを算出する車両状態算出処理と、
前記車両の位置および向きから前記車載広角カメラの視点位置および視方向を求めるカメラ状態算出処理と、
前記車載広角カメラからの所定の視野をカバーする複数の中間投影面に対して、前記カメラ状態算出処理で算出された前記車載広角カメラの視点位置および視方向から前記仮想環境を透視投影した複数の中間画像を生成する中間画像描画処理と、
予め記録された前記車載広角カメラのレンズ特性に基づいて、中間画像の変形合成に関するパラメータを生成し、前記複数の中間画像を変形合成することで、前記車載広角カメラの映像を生成する映像描画処理とをコンピュータに実行させる、運転模擬プログラム。
【０１２３】
（付記１２）
仮想環境における広角カメラの視点位置および視方向を示すデータを入力するカメラ情報入力処理と、
前記広角カメラからの所定の視野をカバーする複数の中間投影面に対して、前記カメラ情報入力処理で入力された前記広角カメラの視点位置および視方向から前記仮想環境を透視投影した複数の中間画像を生成する中間画像描画処理と、
予め記録された前記広角カメラのレンズ特性に基づいて、中間画像の変形合成に関するパラメータを生成し、前記複数の中間画像を変形合成することで、前記広角カメラの映像を生成する映像描画処理とをコンピュータに実行させる広角カメラ映像模擬プログラムまたは画像変形合成プログラム。
【０１２４】
（付記１２）
仮想環境における車両に対する動作指示の入力を受け付ける入力ステップと、
前記動作指示の入力に応じてリアルタイムで前記仮想環境内の前記車両の位置および向きを算出する車両状態算出ステップと、
予め記録された前記車両の車載広角カメラの搭載位置情報を用いて、前記車両の位置および向きから前記車載広角カメラの視点位置および視方向を求めるカメラ状態算出ステップと、
前記車載広角カメラからの所定の視野をカバーする複数の中間投影面に対して、前記カメラ状態算出ステップで算出された前記車載広角カメラの視点位置および視方向から前記仮想環境を透視投影した複数の中間画像を生成する中間画像描画ステップと、
予め記録された前記車載広角カメラのレンズ特性に基づいて、中間画像の変形合成に関するパラメータを生成し、前記複数の中間画像を変形合成することで、前記車載広角カメラの映像を生成する映像描画ステップとを含む、運転模擬方法。
【０１２５】
（付記１３）
仮想環境における広角カメラの視点位置および視方向を示すデータを入力するカメラ情報入力ステップと、
前記広角カメラからの所定の視野をカバーする複数の中間投影面に対して、前記カメラ情報入力ステップで入力された前記広角カメラの視点位置および視方向から前記仮想環境を透視投影した複数の中間画像を生成する中間画像描画ステップと、
予め記録された前記広角カメラのレンズ特性に基づいて、中間画像の変形合成に関するパラメータを生成し、前記複数の中間画像を変形合成することで、前記広角カメラの映像を生成する映像描画ステップとを含む広角カメラ映像模擬方法または画像変形合成方法。
【図面の簡単な説明】
【０１２６】
【図１】第１の実施形態にかかるドライビングシミュレータの構成を示す機能ブロック図
【図２Ａ】ドライビングシミュレータ１の動作例を示すフローチャート
【図２Ｂ】広角カメラ模擬部による初期化処理の一例を示すフローチャート
【図２Ｃ】シーン描画における広角カメラ模擬部の処理の一例
【図３】広角カメラ模擬部の構成を示す機能ブロック図
【図４Ａ】立方体型投影面配置を上から見た図
【図４Ｂ】立方体型投影面配置を示す斜視図
【図５Ａ】直方体型投影面配置を上から見た図
【図５Ｂ】直方体型投影面配置を示す斜視図
【図６Ａ】台形型投影面配置を上から見た図
【図６Ｂ】台形型投影面配置を示す斜視図
【図７】広角カメラの映像の出力画面における直行メッシュの例を示す図
【図８】コンピュータのハードウエア構成の一例を示す図
【図９】テクスチャマッピングを説明するための図
【図１０】キューブマッピング機能を用いたテクスチャマッピングを説明するための図
【図１１】第２の実施形態における広角カメラ模擬部の構成を示す機能ブロック図
【図１２】出力画面の二次元メッシュの例を示す図
【図１３Ａ】広角レンズと入射光の関係を示す図
【図１３Ｂ】入射光に対応する方向ベクトルを示す図
【図１３Ｃ】入射光が映像画面上に結ぶ像の位置を表す図
【図１４Ａ】入射光、広角レンズ４１および画像高との関係を表す図
【図１４Ｂ】映像面を上から見た場合の入射光とレンズの関係を示す図
【図１４Ｃ】入射角が等しい入射光が映像面において到達し得る位置を点線で表した図
【図１４Ｄ】光の入射角と画像高との関係により表される広角レンズ映像の歪み特性の一例を示す図
【図１５】画像高と入射角の値ペアの集合をプロットしたグラフの一例
【図１６Ａ】中間投影面と、それを投影変換した出力画像を示す図
【図１６Ｂ】中間投影面のメッシュと、それを投影変換した出力画像のメッシュを示す図
【図１７】第３の実施形態における広角カメラ模擬部の構成を示す機能ブロック図
【図１８Ａ】直方体と広角各カメラの視点位置を上から見た平面図
【図１８Ｂ】直方体の投影面の展開図
【図１９Ａ】立方体と広角各カメラの視点位置の平面図
【図１９Ｂ】立方体の投影面の展開図
【図２０Ａ】直方体と広角各カメラの視点位置を上から見た平面図
【図２０Ｂ】立法体系投影面配置と方向ベクトルとの位置関係を上から見た平面図
【図２１】出力画像における横Ｎ分割、縦Ｍ分割の直交格子を示す図
【図２２】直交格子に含まれるポリゴンの例を示す図
【図２３】第４の実施形態における二次元メッシュの一例を示す図
【図２４】第５の実施形態における広角カメラ模擬部の構成を示す機能ブロック図
【図２５】カメラ内蔵ＤＳＰによる映像変形の一例を模式的に示す図
【図２６】映像変形時の方向ベクトル付加部の動作例を示すフローチャート
【図２７】画面座標変換部４３による変換の一例を模式的に表す図
【符号の説明】
【０１２７】
１      ドライビングシミュレータ
２      入力部
３      車両シミュレーション部
４      カメラ状態算出部
５、５ａ、５ｂ、５ｃ    広角カメラ模擬部
６      検証対象システム
７      シーン描画部
８      映像提示装置
１１    シーンデータ記録部
１２    カメラ位置記録部
１３    カメラ視野記録部
１５    中間画像描画部
１６    テクスチャ参照部
１７    映像描画部
１８    テクスチャ割付部
１９    レンズ投影変換部
２１    中間画像バッファ
２２    中間投影面配置情報記録部
２３    直行メッシュ記録部
２４    広角レンズ特性記録部
２５    二次元メッシュ記録部
２６    キャビティ機能部
３５    立方体中間投影面配置情報
３６    キューブマッピング機能部
３７    交点計算部
３８    テクスチャ参照部
３９    方向ベクトル付加部
４１    広角レンズ
４１    レンズ
４２    方向ベクトル変換部
４４    映像変形パターン記録部
４３    画像座標変換部
【図１】
2010129063.tif 000006
【図２Ａ】
2010129063.tif 000007
【図２Ｂ】
2010129063.tif 000008
【図２Ｃ】
2010129063.tif 000009
【図３】
2010129063.tif 000010
【図４Ａ】
2010129063.tif 000011
【図４Ｂ】
2010129063.tif 000012
【図５Ａ】
2010129063.tif 000013
【図５Ｂ】
2010129063.tif 000014
【図６Ａ】
2010129063.tif 000015
【図６Ｂ】
2010129063.tif 000016
【図７】
2010129063.tif 000017
【図８】
2010129063.tif 000018
【図９】
2010129063.tif 000019
【図１０】
2010129063.tif 000020
【図１１】
2010129063.tif 000021
【図１２】
2010129063.tif 000022
【図１３Ａ】
2010129063.tif 000023
【図１３Ｂ】
2010129063.tif 000024
【図１３Ｃ】
2010129063.tif 000025
【図１４Ａ】
2010129063.tif 000026
【図１４Ｂ】
2010129063.tif 000027
【図１４Ｃ】
2010129063.tif 000028
【図１４Ｄ】
2010129063.tif 000029
【図１５】
2010129063.tif 000030
【図１６Ａ】
2010129063.tif 000031
【図１６Ｂ】
2010129063.tif 000032
【図１７】
2010129063.tif 000033
【図１８Ａ】
2010129063.tif 000034
【図１８Ｂ】
2010129063.tif 000035
【図１９Ａ】
2010129063.tif 000036
【図１９Ｂ】
2010129063.tif 000037
【図２０Ａ】
2010129063.tif 000038
【図２０Ｂ】
2010129063.tif 000039
【図２１】
2010129063.tif 000040
【図２２】
2010129063.tif 000041
【図２３】
2010129063.tif 000042
【図２４】
2010129063.tif 000043
【図２５】
2010129063.tif 000044
【図２６】
2010129063.tif 000045
【図２７】
2010129063.tif 000046